public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH v2 0/2] CryptoPkg/OpensslLib: Add native instruction support for X64
@ 2020-08-04  0:24 Zurcher, Christopher J
  2020-08-04  0:24 ` [PATCH v2 1/2] " Zurcher, Christopher J
  2020-08-04  0:24 ` [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files " Zurcher, Christopher J
  0 siblings, 2 replies; 42+ messages in thread
From: Zurcher, Christopher J @ 2020-08-04  0:24 UTC (permalink / raw)
  To: devel; +Cc: Jiewen Yao, Jian J Wang, Xiaoyu Lu, Ard Biesheuvel

V2 Changes:
  Limit scope of assembly config to SHA and AES functions.
  Removed IA32 native support (reduced config was causing build failure and
    can be added in a later patch).
  Removed XMM instructions from assembly generation.
  Added automatic copyright header porting for generated assembly files.

This patch adds support for building the native instruction algorithms for
the X64 architecture in OpensslLib. The process_files.pl script was modified
to parse the .asm file targets from the OpenSSL build config data struct, and
generate the necessary assembly files for the EDK2 build environment.

For the X64 variant, OpenSSL includes calls to a Windows error handling API,
and that function has been stubbed out in ApiHooks.c.

For all variants, a constructor is added to call the required CPUID function
within OpenSSL to facilitate processor capability checks in the native
algorithms.

Additional native architecture variants should be simple to add by following
the changes made for this architecture.

The OpenSSL assembly files are traditionally generated at build time using a
perl script. To avoid that burden on EDK2 users, these end-result assembly
files are generated during the configuration steps performed by the package
maintainer (through process_files.pl). The perl generator scripts inside
OpenSSL do not parse file comments as they are only meant to create
intermediate build files, so process_files.pl contains additional hooks to
preserve the copyright headers as well as clean up tabs and line endings to
comply with EDK2 coding standards. The resulting file headers align with
the generated .h files which are already included in the EDK2 repository.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>

Christopher J Zurcher (2):
  CryptoPkg/OpensslLib: Add native instruction support for X64
  CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64

 CryptoPkg/Library/OpensslLib/OpensslLib.inf                          |    2 +-
 CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf                    |    2 +-
 CryptoPkg/Library/OpensslLib/OpensslLibX64.inf                       |  656 +++
 CryptoPkg/Library/Include/openssl/opensslconf.h                      |    3 -
 CryptoPkg/Library/OpensslLib/ApiHooks.c                              |   18 +
 CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c                 |   34 +
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm     |  732 +++
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm   | 1916 ++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-x86_64.nasm |   78 +
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm        | 5103 ++++++++++++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm        | 1173 +++++
 CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm      | 1569 ++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm      | 3137 ++++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm         | 2884 +++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm    | 3461 +++++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm       | 3313 +++++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm       | 1938 ++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm             |  491 ++
 CryptoPkg/Library/OpensslLib/process_files.pl                        |  223 +-
 CryptoPkg/Library/OpensslLib/uefi-asm.conf                           |   15 +
 20 files changed, 26698 insertions(+), 50 deletions(-)
 create mode 100644 CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
 create mode 100644 CryptoPkg/Library/OpensslLib/ApiHooks.c
 create mode 100644 CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
 create mode 100644 CryptoPkg/Library/OpensslLib/uefi-asm.conf

-- 
2.28.0.windows.1


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

* [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
  2020-08-04  0:24 [PATCH v2 0/2] CryptoPkg/OpensslLib: Add native instruction support for X64 Zurcher, Christopher J
@ 2020-08-04  0:24 ` Zurcher, Christopher J
  2020-08-11 11:46   ` [edk2-devel] " Guomin Jiang
  2020-08-13 15:03   ` Yao, Jiewen
  2020-08-04  0:24 ` [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files " Zurcher, Christopher J
  1 sibling, 2 replies; 42+ messages in thread
From: Zurcher, Christopher J @ 2020-08-04  0:24 UTC (permalink / raw)
  To: devel; +Cc: Jiewen Yao, Jian J Wang, Xiaoyu Lu, Ard Biesheuvel

BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507

Adding OpensslLibX64.inf and modifying process_files.pl to process this
file and generate the necessary assembly files.
ApiHooks.c contains a stub function for a Windows API call.
uefi-asm.conf contains the limited assembly configurations for OpenSSL.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Christopher J Zurcher <christopher.j.zurcher@intel.com>
---
 CryptoPkg/Library/OpensslLib/OpensslLib.inf          |   2 +-
 CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf    |   2 +-
 CryptoPkg/Library/OpensslLib/OpensslLibX64.inf       | 656 ++++++++++++++++++++
 CryptoPkg/Library/Include/openssl/opensslconf.h      |   3 -
 CryptoPkg/Library/OpensslLib/ApiHooks.c              |  18 +
 CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c |  34 +
 CryptoPkg/Library/OpensslLib/process_files.pl        | 223 +++++--
 CryptoPkg/Library/OpensslLib/uefi-asm.conf           |  15 +
 8 files changed, 903 insertions(+), 50 deletions(-)

diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
index dbbe5386a1..bd62d86936 100644
--- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
+++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
@@ -16,7 +16,7 @@
   VERSION_STRING                 = 1.0
   LIBRARY_CLASS                  = OpensslLib
   DEFINE OPENSSL_PATH            = openssl
-  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
+  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DOPENSSL_NO_ASM
 
 #
 #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
index 616ccd9f62..2b7324a990 100644
--- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
+++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
@@ -16,7 +16,7 @@
   VERSION_STRING                 = 1.0
   LIBRARY_CLASS                  = OpensslLib
   DEFINE OPENSSL_PATH            = openssl
-  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
+  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DOPENSSL_NO_ASM
 
 #
 #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
new file mode 100644
index 0000000000..825eea0254
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
@@ -0,0 +1,656 @@
+## @file
+#  This module provides OpenSSL Library implementation.
+#
+#  Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved.<BR>
+#  (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+#  SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+[Defines]
+  INF_VERSION                    = 0x00010005
+  BASE_NAME                      = OpensslLibX64
+  MODULE_UNI_FILE                = OpensslLib.uni
+  FILE_GUID                      = 18125E50-0117-4DD0-BE54-4784AD995FEF
+  MODULE_TYPE                    = BASE
+  VERSION_STRING                 = 1.0
+  LIBRARY_CLASS                  = OpensslLib
+  DEFINE OPENSSL_PATH            = openssl
+  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
+  DEFINE OPENSSL_FLAGS_CONFIG    = -DOPENSSL_CPUID_OBJ -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM
+  CONSTRUCTOR                    = OpensslLibConstructor
+
+#
+#  VALID_ARCHITECTURES           = X64
+#
+
+[Sources]
+  OpensslLibConstructor.c
+  $(OPENSSL_PATH)/e_os.h
+  $(OPENSSL_PATH)/ms/uplink.h
+# Autogenerated files list starts here
+  X64/crypto/aes/aesni-mb-x86_64.nasm
+  X64/crypto/aes/aesni-sha1-x86_64.nasm
+  X64/crypto/aes/aesni-sha256-x86_64.nasm
+  X64/crypto/aes/aesni-x86_64.nasm
+  X64/crypto/aes/vpaes-x86_64.nasm
+  X64/crypto/modes/ghash-x86_64.nasm
+  X64/crypto/sha/sha1-mb-x86_64.nasm
+  X64/crypto/sha/sha1-x86_64.nasm
+  X64/crypto/sha/sha256-mb-x86_64.nasm
+  X64/crypto/sha/sha256-x86_64.nasm
+  X64/crypto/sha/sha512-x86_64.nasm
+  X64/crypto/x86_64cpuid.nasm
+  $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
+  $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
+  $(OPENSSL_PATH)/crypto/aes/aes_core.c
+  $(OPENSSL_PATH)/crypto/aes/aes_ige.c
+  $(OPENSSL_PATH)/crypto/aes/aes_misc.c
+  $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
+  $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
+  $(OPENSSL_PATH)/crypto/aria/aria.c
+  $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
+  $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c
+  $(OPENSSL_PATH)/crypto/asn1/a_digest.c
+  $(OPENSSL_PATH)/crypto/asn1/a_dup.c
+  $(OPENSSL_PATH)/crypto/asn1/a_gentm.c
+  $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c
+  $(OPENSSL_PATH)/crypto/asn1/a_int.c
+  $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c
+  $(OPENSSL_PATH)/crypto/asn1/a_object.c
+  $(OPENSSL_PATH)/crypto/asn1/a_octet.c
+  $(OPENSSL_PATH)/crypto/asn1/a_print.c
+  $(OPENSSL_PATH)/crypto/asn1/a_sign.c
+  $(OPENSSL_PATH)/crypto/asn1/a_strex.c
+  $(OPENSSL_PATH)/crypto/asn1/a_strnid.c
+  $(OPENSSL_PATH)/crypto/asn1/a_time.c
+  $(OPENSSL_PATH)/crypto/asn1/a_type.c
+  $(OPENSSL_PATH)/crypto/asn1/a_utctm.c
+  $(OPENSSL_PATH)/crypto/asn1/a_utf8.c
+  $(OPENSSL_PATH)/crypto/asn1/a_verify.c
+  $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c
+  $(OPENSSL_PATH)/crypto/asn1/asn1_err.c
+  $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c
+  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c
+  $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c
+  $(OPENSSL_PATH)/crypto/asn1/asn1_par.c
+  $(OPENSSL_PATH)/crypto/asn1/asn_mime.c
+  $(OPENSSL_PATH)/crypto/asn1/asn_moid.c
+  $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c
+  $(OPENSSL_PATH)/crypto/asn1/asn_pack.c
+  $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c
+  $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c
+  $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c
+  $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c
+  $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c
+  $(OPENSSL_PATH)/crypto/asn1/f_int.c
+  $(OPENSSL_PATH)/crypto/asn1/f_string.c
+  $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c
+  $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c
+  $(OPENSSL_PATH)/crypto/asn1/n_pkey.c
+  $(OPENSSL_PATH)/crypto/asn1/nsseq.c
+  $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c
+  $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c
+  $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c
+  $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c
+  $(OPENSSL_PATH)/crypto/asn1/t_bitst.c
+  $(OPENSSL_PATH)/crypto/asn1/t_pkey.c
+  $(OPENSSL_PATH)/crypto/asn1/t_spki.c
+  $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c
+  $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c
+  $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c
+  $(OPENSSL_PATH)/crypto/asn1/tasn_new.c
+  $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c
+  $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c
+  $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c
+  $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c
+  $(OPENSSL_PATH)/crypto/asn1/x_algor.c
+  $(OPENSSL_PATH)/crypto/asn1/x_bignum.c
+  $(OPENSSL_PATH)/crypto/asn1/x_info.c
+  $(OPENSSL_PATH)/crypto/asn1/x_int64.c
+  $(OPENSSL_PATH)/crypto/asn1/x_long.c
+  $(OPENSSL_PATH)/crypto/asn1/x_pkey.c
+  $(OPENSSL_PATH)/crypto/asn1/x_sig.c
+  $(OPENSSL_PATH)/crypto/asn1/x_spki.c
+  $(OPENSSL_PATH)/crypto/asn1/x_val.c
+  $(OPENSSL_PATH)/crypto/async/arch/async_null.c
+  $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
+  $(OPENSSL_PATH)/crypto/async/arch/async_win.c
+  $(OPENSSL_PATH)/crypto/async/async.c
+  $(OPENSSL_PATH)/crypto/async/async_err.c
+  $(OPENSSL_PATH)/crypto/async/async_wait.c
+  $(OPENSSL_PATH)/crypto/bio/b_addr.c
+  $(OPENSSL_PATH)/crypto/bio/b_dump.c
+  $(OPENSSL_PATH)/crypto/bio/b_sock.c
+  $(OPENSSL_PATH)/crypto/bio/b_sock2.c
+  $(OPENSSL_PATH)/crypto/bio/bf_buff.c
+  $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c
+  $(OPENSSL_PATH)/crypto/bio/bf_nbio.c
+  $(OPENSSL_PATH)/crypto/bio/bf_null.c
+  $(OPENSSL_PATH)/crypto/bio/bio_cb.c
+  $(OPENSSL_PATH)/crypto/bio/bio_err.c
+  $(OPENSSL_PATH)/crypto/bio/bio_lib.c
+  $(OPENSSL_PATH)/crypto/bio/bio_meth.c
+  $(OPENSSL_PATH)/crypto/bio/bss_acpt.c
+  $(OPENSSL_PATH)/crypto/bio/bss_bio.c
+  $(OPENSSL_PATH)/crypto/bio/bss_conn.c
+  $(OPENSSL_PATH)/crypto/bio/bss_dgram.c
+  $(OPENSSL_PATH)/crypto/bio/bss_fd.c
+  $(OPENSSL_PATH)/crypto/bio/bss_file.c
+  $(OPENSSL_PATH)/crypto/bio/bss_log.c
+  $(OPENSSL_PATH)/crypto/bio/bss_mem.c
+  $(OPENSSL_PATH)/crypto/bio/bss_null.c
+  $(OPENSSL_PATH)/crypto/bio/bss_sock.c
+  $(OPENSSL_PATH)/crypto/bn/bn_add.c
+  $(OPENSSL_PATH)/crypto/bn/bn_asm.c
+  $(OPENSSL_PATH)/crypto/bn/bn_blind.c
+  $(OPENSSL_PATH)/crypto/bn/bn_const.c
+  $(OPENSSL_PATH)/crypto/bn/bn_ctx.c
+  $(OPENSSL_PATH)/crypto/bn/bn_depr.c
+  $(OPENSSL_PATH)/crypto/bn/bn_dh.c
+  $(OPENSSL_PATH)/crypto/bn/bn_div.c
+  $(OPENSSL_PATH)/crypto/bn/bn_err.c
+  $(OPENSSL_PATH)/crypto/bn/bn_exp.c
+  $(OPENSSL_PATH)/crypto/bn/bn_exp2.c
+  $(OPENSSL_PATH)/crypto/bn/bn_gcd.c
+  $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c
+  $(OPENSSL_PATH)/crypto/bn/bn_intern.c
+  $(OPENSSL_PATH)/crypto/bn/bn_kron.c
+  $(OPENSSL_PATH)/crypto/bn/bn_lib.c
+  $(OPENSSL_PATH)/crypto/bn/bn_mod.c
+  $(OPENSSL_PATH)/crypto/bn/bn_mont.c
+  $(OPENSSL_PATH)/crypto/bn/bn_mpi.c
+  $(OPENSSL_PATH)/crypto/bn/bn_mul.c
+  $(OPENSSL_PATH)/crypto/bn/bn_nist.c
+  $(OPENSSL_PATH)/crypto/bn/bn_prime.c
+  $(OPENSSL_PATH)/crypto/bn/bn_print.c
+  $(OPENSSL_PATH)/crypto/bn/bn_rand.c
+  $(OPENSSL_PATH)/crypto/bn/bn_recp.c
+  $(OPENSSL_PATH)/crypto/bn/bn_shift.c
+  $(OPENSSL_PATH)/crypto/bn/bn_sqr.c
+  $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c
+  $(OPENSSL_PATH)/crypto/bn/bn_srp.c
+  $(OPENSSL_PATH)/crypto/bn/bn_word.c
+  $(OPENSSL_PATH)/crypto/bn/bn_x931p.c
+  $(OPENSSL_PATH)/crypto/buffer/buf_err.c
+  $(OPENSSL_PATH)/crypto/buffer/buffer.c
+  $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c
+  $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c
+  $(OPENSSL_PATH)/crypto/cmac/cmac.c
+  $(OPENSSL_PATH)/crypto/comp/c_zlib.c
+  $(OPENSSL_PATH)/crypto/comp/comp_err.c
+  $(OPENSSL_PATH)/crypto/comp/comp_lib.c
+  $(OPENSSL_PATH)/crypto/conf/conf_api.c
+  $(OPENSSL_PATH)/crypto/conf/conf_def.c
+  $(OPENSSL_PATH)/crypto/conf/conf_err.c
+  $(OPENSSL_PATH)/crypto/conf/conf_lib.c
+  $(OPENSSL_PATH)/crypto/conf/conf_mall.c
+  $(OPENSSL_PATH)/crypto/conf/conf_mod.c
+  $(OPENSSL_PATH)/crypto/conf/conf_sap.c
+  $(OPENSSL_PATH)/crypto/conf/conf_ssl.c
+  $(OPENSSL_PATH)/crypto/cpt_err.c
+  $(OPENSSL_PATH)/crypto/cryptlib.c
+  $(OPENSSL_PATH)/crypto/ctype.c
+  $(OPENSSL_PATH)/crypto/cversion.c
+  $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
+  $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
+  $(OPENSSL_PATH)/crypto/dh/dh_check.c
+  $(OPENSSL_PATH)/crypto/dh/dh_depr.c
+  $(OPENSSL_PATH)/crypto/dh/dh_err.c
+  $(OPENSSL_PATH)/crypto/dh/dh_gen.c
+  $(OPENSSL_PATH)/crypto/dh/dh_kdf.c
+  $(OPENSSL_PATH)/crypto/dh/dh_key.c
+  $(OPENSSL_PATH)/crypto/dh/dh_lib.c
+  $(OPENSSL_PATH)/crypto/dh/dh_meth.c
+  $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c
+  $(OPENSSL_PATH)/crypto/dh/dh_prn.c
+  $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
+  $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
+  $(OPENSSL_PATH)/crypto/dso/dso_dl.c
+  $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
+  $(OPENSSL_PATH)/crypto/dso/dso_err.c
+  $(OPENSSL_PATH)/crypto/dso/dso_lib.c
+  $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
+  $(OPENSSL_PATH)/crypto/dso/dso_vms.c
+  $(OPENSSL_PATH)/crypto/dso/dso_win32.c
+  $(OPENSSL_PATH)/crypto/ebcdic.c
+  $(OPENSSL_PATH)/crypto/err/err.c
+  $(OPENSSL_PATH)/crypto/err/err_prn.c
+  $(OPENSSL_PATH)/crypto/evp/bio_b64.c
+  $(OPENSSL_PATH)/crypto/evp/bio_enc.c
+  $(OPENSSL_PATH)/crypto/evp/bio_md.c
+  $(OPENSSL_PATH)/crypto/evp/bio_ok.c
+  $(OPENSSL_PATH)/crypto/evp/c_allc.c
+  $(OPENSSL_PATH)/crypto/evp/c_alld.c
+  $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c
+  $(OPENSSL_PATH)/crypto/evp/digest.c
+  $(OPENSSL_PATH)/crypto/evp/e_aes.c
+  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c
+  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c
+  $(OPENSSL_PATH)/crypto/evp/e_aria.c
+  $(OPENSSL_PATH)/crypto/evp/e_bf.c
+  $(OPENSSL_PATH)/crypto/evp/e_camellia.c
+  $(OPENSSL_PATH)/crypto/evp/e_cast.c
+  $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c
+  $(OPENSSL_PATH)/crypto/evp/e_des.c
+  $(OPENSSL_PATH)/crypto/evp/e_des3.c
+  $(OPENSSL_PATH)/crypto/evp/e_idea.c
+  $(OPENSSL_PATH)/crypto/evp/e_null.c
+  $(OPENSSL_PATH)/crypto/evp/e_old.c
+  $(OPENSSL_PATH)/crypto/evp/e_rc2.c
+  $(OPENSSL_PATH)/crypto/evp/e_rc4.c
+  $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c
+  $(OPENSSL_PATH)/crypto/evp/e_rc5.c
+  $(OPENSSL_PATH)/crypto/evp/e_seed.c
+  $(OPENSSL_PATH)/crypto/evp/e_sm4.c
+  $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c
+  $(OPENSSL_PATH)/crypto/evp/encode.c
+  $(OPENSSL_PATH)/crypto/evp/evp_cnf.c
+  $(OPENSSL_PATH)/crypto/evp/evp_enc.c
+  $(OPENSSL_PATH)/crypto/evp/evp_err.c
+  $(OPENSSL_PATH)/crypto/evp/evp_key.c
+  $(OPENSSL_PATH)/crypto/evp/evp_lib.c
+  $(OPENSSL_PATH)/crypto/evp/evp_pbe.c
+  $(OPENSSL_PATH)/crypto/evp/evp_pkey.c
+  $(OPENSSL_PATH)/crypto/evp/m_md2.c
+  $(OPENSSL_PATH)/crypto/evp/m_md4.c
+  $(OPENSSL_PATH)/crypto/evp/m_md5.c
+  $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c
+  $(OPENSSL_PATH)/crypto/evp/m_mdc2.c
+  $(OPENSSL_PATH)/crypto/evp/m_null.c
+  $(OPENSSL_PATH)/crypto/evp/m_ripemd.c
+  $(OPENSSL_PATH)/crypto/evp/m_sha1.c
+  $(OPENSSL_PATH)/crypto/evp/m_sha3.c
+  $(OPENSSL_PATH)/crypto/evp/m_sigver.c
+  $(OPENSSL_PATH)/crypto/evp/m_wp.c
+  $(OPENSSL_PATH)/crypto/evp/names.c
+  $(OPENSSL_PATH)/crypto/evp/p5_crpt.c
+  $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c
+  $(OPENSSL_PATH)/crypto/evp/p_dec.c
+  $(OPENSSL_PATH)/crypto/evp/p_enc.c
+  $(OPENSSL_PATH)/crypto/evp/p_lib.c
+  $(OPENSSL_PATH)/crypto/evp/p_open.c
+  $(OPENSSL_PATH)/crypto/evp/p_seal.c
+  $(OPENSSL_PATH)/crypto/evp/p_sign.c
+  $(OPENSSL_PATH)/crypto/evp/p_verify.c
+  $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c
+  $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
+  $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
+  $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
+  $(OPENSSL_PATH)/crypto/ex_data.c
+  $(OPENSSL_PATH)/crypto/getenv.c
+  $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
+  $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c
+  $(OPENSSL_PATH)/crypto/hmac/hmac.c
+  $(OPENSSL_PATH)/crypto/init.c
+  $(OPENSSL_PATH)/crypto/kdf/hkdf.c
+  $(OPENSSL_PATH)/crypto/kdf/kdf_err.c
+  $(OPENSSL_PATH)/crypto/kdf/scrypt.c
+  $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c
+  $(OPENSSL_PATH)/crypto/lhash/lh_stats.c
+  $(OPENSSL_PATH)/crypto/lhash/lhash.c
+  $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
+  $(OPENSSL_PATH)/crypto/md5/md5_one.c
+  $(OPENSSL_PATH)/crypto/mem.c
+  $(OPENSSL_PATH)/crypto/mem_dbg.c
+  $(OPENSSL_PATH)/crypto/mem_sec.c
+  $(OPENSSL_PATH)/crypto/modes/cbc128.c
+  $(OPENSSL_PATH)/crypto/modes/ccm128.c
+  $(OPENSSL_PATH)/crypto/modes/cfb128.c
+  $(OPENSSL_PATH)/crypto/modes/ctr128.c
+  $(OPENSSL_PATH)/crypto/modes/cts128.c
+  $(OPENSSL_PATH)/crypto/modes/gcm128.c
+  $(OPENSSL_PATH)/crypto/modes/ocb128.c
+  $(OPENSSL_PATH)/crypto/modes/ofb128.c
+  $(OPENSSL_PATH)/crypto/modes/wrap128.c
+  $(OPENSSL_PATH)/crypto/modes/xts128.c
+  $(OPENSSL_PATH)/crypto/o_dir.c
+  $(OPENSSL_PATH)/crypto/o_fips.c
+  $(OPENSSL_PATH)/crypto/o_fopen.c
+  $(OPENSSL_PATH)/crypto/o_init.c
+  $(OPENSSL_PATH)/crypto/o_str.c
+  $(OPENSSL_PATH)/crypto/o_time.c
+  $(OPENSSL_PATH)/crypto/objects/o_names.c
+  $(OPENSSL_PATH)/crypto/objects/obj_dat.c
+  $(OPENSSL_PATH)/crypto/objects/obj_err.c
+  $(OPENSSL_PATH)/crypto/objects/obj_lib.c
+  $(OPENSSL_PATH)/crypto/objects/obj_xref.c
+  $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c
+  $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c
+  $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c
+  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c
+  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c
+  $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c
+  $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c
+  $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c
+  $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c
+  $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c
+  $(OPENSSL_PATH)/crypto/pem/pem_all.c
+  $(OPENSSL_PATH)/crypto/pem/pem_err.c
+  $(OPENSSL_PATH)/crypto/pem/pem_info.c
+  $(OPENSSL_PATH)/crypto/pem/pem_lib.c
+  $(OPENSSL_PATH)/crypto/pem/pem_oth.c
+  $(OPENSSL_PATH)/crypto/pem/pem_pk8.c
+  $(OPENSSL_PATH)/crypto/pem/pem_pkey.c
+  $(OPENSSL_PATH)/crypto/pem/pem_sign.c
+  $(OPENSSL_PATH)/crypto/pem/pem_x509.c
+  $(OPENSSL_PATH)/crypto/pem/pem_xaux.c
+  $(OPENSSL_PATH)/crypto/pem/pvkfmt.c
+  $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c
+  $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c
+  $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c
+  $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c
+  $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c
+  $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c
+  $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c
+  $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c
+  $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c
+  $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c
+  $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c
+  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c
+  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c
+  $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c
+  $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c
+  $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c
+  $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c
+  $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c
+  $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c
+  $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c
+  $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c
+  $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c
+  $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c
+  $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c
+  $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c
+  $(OPENSSL_PATH)/crypto/rand/drbg_lib.c
+  $(OPENSSL_PATH)/crypto/rand/rand_egd.c
+  $(OPENSSL_PATH)/crypto/rand/rand_err.c
+  $(OPENSSL_PATH)/crypto/rand/rand_lib.c
+  $(OPENSSL_PATH)/crypto/rand/rand_unix.c
+  $(OPENSSL_PATH)/crypto/rand/rand_vms.c
+  $(OPENSSL_PATH)/crypto/rand/rand_win.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_err.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_none.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
+  $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
+  $(OPENSSL_PATH)/crypto/sha/keccak1600.c
+  $(OPENSSL_PATH)/crypto/sha/sha1_one.c
+  $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
+  $(OPENSSL_PATH)/crypto/sha/sha256.c
+  $(OPENSSL_PATH)/crypto/sha/sha512.c
+  $(OPENSSL_PATH)/crypto/siphash/siphash.c
+  $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
+  $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
+  $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
+  $(OPENSSL_PATH)/crypto/sm3/sm3.c
+  $(OPENSSL_PATH)/crypto/sm4/sm4.c
+  $(OPENSSL_PATH)/crypto/stack/stack.c
+  $(OPENSSL_PATH)/crypto/threads_none.c
+  $(OPENSSL_PATH)/crypto/threads_pthread.c
+  $(OPENSSL_PATH)/crypto/threads_win.c
+  $(OPENSSL_PATH)/crypto/txt_db/txt_db.c
+  $(OPENSSL_PATH)/crypto/ui/ui_err.c
+  $(OPENSSL_PATH)/crypto/ui/ui_lib.c
+  $(OPENSSL_PATH)/crypto/ui/ui_null.c
+  $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
+  $(OPENSSL_PATH)/crypto/ui/ui_util.c
+  $(OPENSSL_PATH)/crypto/uid.c
+  $(OPENSSL_PATH)/crypto/x509/by_dir.c
+  $(OPENSSL_PATH)/crypto/x509/by_file.c
+  $(OPENSSL_PATH)/crypto/x509/t_crl.c
+  $(OPENSSL_PATH)/crypto/x509/t_req.c
+  $(OPENSSL_PATH)/crypto/x509/t_x509.c
+  $(OPENSSL_PATH)/crypto/x509/x509_att.c
+  $(OPENSSL_PATH)/crypto/x509/x509_cmp.c
+  $(OPENSSL_PATH)/crypto/x509/x509_d2.c
+  $(OPENSSL_PATH)/crypto/x509/x509_def.c
+  $(OPENSSL_PATH)/crypto/x509/x509_err.c
+  $(OPENSSL_PATH)/crypto/x509/x509_ext.c
+  $(OPENSSL_PATH)/crypto/x509/x509_lu.c
+  $(OPENSSL_PATH)/crypto/x509/x509_meth.c
+  $(OPENSSL_PATH)/crypto/x509/x509_obj.c
+  $(OPENSSL_PATH)/crypto/x509/x509_r2x.c
+  $(OPENSSL_PATH)/crypto/x509/x509_req.c
+  $(OPENSSL_PATH)/crypto/x509/x509_set.c
+  $(OPENSSL_PATH)/crypto/x509/x509_trs.c
+  $(OPENSSL_PATH)/crypto/x509/x509_txt.c
+  $(OPENSSL_PATH)/crypto/x509/x509_v3.c
+  $(OPENSSL_PATH)/crypto/x509/x509_vfy.c
+  $(OPENSSL_PATH)/crypto/x509/x509_vpm.c
+  $(OPENSSL_PATH)/crypto/x509/x509cset.c
+  $(OPENSSL_PATH)/crypto/x509/x509name.c
+  $(OPENSSL_PATH)/crypto/x509/x509rset.c
+  $(OPENSSL_PATH)/crypto/x509/x509spki.c
+  $(OPENSSL_PATH)/crypto/x509/x509type.c
+  $(OPENSSL_PATH)/crypto/x509/x_all.c
+  $(OPENSSL_PATH)/crypto/x509/x_attrib.c
+  $(OPENSSL_PATH)/crypto/x509/x_crl.c
+  $(OPENSSL_PATH)/crypto/x509/x_exten.c
+  $(OPENSSL_PATH)/crypto/x509/x_name.c
+  $(OPENSSL_PATH)/crypto/x509/x_pubkey.c
+  $(OPENSSL_PATH)/crypto/x509/x_req.c
+  $(OPENSSL_PATH)/crypto/x509/x_x509.c
+  $(OPENSSL_PATH)/crypto/x509/x_x509a.c
+  $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c
+  $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c
+  $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c
+  $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c
+  $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c
+  $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_info.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_int.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c
+  $(OPENSSL_PATH)/crypto/x509v3/v3err.c
+  $(OPENSSL_PATH)/crypto/arm_arch.h
+  $(OPENSSL_PATH)/crypto/mips_arch.h
+  $(OPENSSL_PATH)/crypto/ppc_arch.h
+  $(OPENSSL_PATH)/crypto/s390x_arch.h
+  $(OPENSSL_PATH)/crypto/sparc_arch.h
+  $(OPENSSL_PATH)/crypto/vms_rms.h
+  $(OPENSSL_PATH)/crypto/aes/aes_local.h
+  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
+  $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
+  $(OPENSSL_PATH)/crypto/asn1/charmap.h
+  $(OPENSSL_PATH)/crypto/asn1/standard_methods.h
+  $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
+  $(OPENSSL_PATH)/crypto/async/async_local.h
+  $(OPENSSL_PATH)/crypto/async/arch/async_null.h
+  $(OPENSSL_PATH)/crypto/async/arch/async_posix.h
+  $(OPENSSL_PATH)/crypto/async/arch/async_win.h
+  $(OPENSSL_PATH)/crypto/bio/bio_local.h
+  $(OPENSSL_PATH)/crypto/bn/bn_local.h
+  $(OPENSSL_PATH)/crypto/bn/bn_prime.h
+  $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h
+  $(OPENSSL_PATH)/crypto/comp/comp_local.h
+  $(OPENSSL_PATH)/crypto/conf/conf_def.h
+  $(OPENSSL_PATH)/crypto/conf/conf_local.h
+  $(OPENSSL_PATH)/crypto/dh/dh_local.h
+  $(OPENSSL_PATH)/crypto/dso/dso_local.h
+  $(OPENSSL_PATH)/crypto/evp/evp_local.h
+  $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
+  $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
+  $(OPENSSL_PATH)/crypto/md5/md5_local.h
+  $(OPENSSL_PATH)/crypto/modes/modes_local.h
+  $(OPENSSL_PATH)/crypto/objects/obj_dat.h
+  $(OPENSSL_PATH)/crypto/objects/obj_local.h
+  $(OPENSSL_PATH)/crypto/objects/obj_xref.h
+  $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h
+  $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h
+  $(OPENSSL_PATH)/crypto/rand/rand_local.h
+  $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
+  $(OPENSSL_PATH)/crypto/sha/sha_local.h
+  $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
+  $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
+  $(OPENSSL_PATH)/crypto/store/store_local.h
+  $(OPENSSL_PATH)/crypto/ui/ui_local.h
+  $(OPENSSL_PATH)/crypto/x509/x509_local.h
+  $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h
+  $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h
+  $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h
+  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h
+  $(OPENSSL_PATH)/ssl/bio_ssl.c
+  $(OPENSSL_PATH)/ssl/d1_lib.c
+  $(OPENSSL_PATH)/ssl/d1_msg.c
+  $(OPENSSL_PATH)/ssl/d1_srtp.c
+  $(OPENSSL_PATH)/ssl/methods.c
+  $(OPENSSL_PATH)/ssl/packet.c
+  $(OPENSSL_PATH)/ssl/pqueue.c
+  $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c
+  $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c
+  $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c
+  $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c
+  $(OPENSSL_PATH)/ssl/record/ssl3_record.c
+  $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c
+  $(OPENSSL_PATH)/ssl/s3_cbc.c
+  $(OPENSSL_PATH)/ssl/s3_enc.c
+  $(OPENSSL_PATH)/ssl/s3_lib.c
+  $(OPENSSL_PATH)/ssl/s3_msg.c
+  $(OPENSSL_PATH)/ssl/ssl_asn1.c
+  $(OPENSSL_PATH)/ssl/ssl_cert.c
+  $(OPENSSL_PATH)/ssl/ssl_ciph.c
+  $(OPENSSL_PATH)/ssl/ssl_conf.c
+  $(OPENSSL_PATH)/ssl/ssl_err.c
+  $(OPENSSL_PATH)/ssl/ssl_init.c
+  $(OPENSSL_PATH)/ssl/ssl_lib.c
+  $(OPENSSL_PATH)/ssl/ssl_mcnf.c
+  $(OPENSSL_PATH)/ssl/ssl_rsa.c
+  $(OPENSSL_PATH)/ssl/ssl_sess.c
+  $(OPENSSL_PATH)/ssl/ssl_stat.c
+  $(OPENSSL_PATH)/ssl/ssl_txt.c
+  $(OPENSSL_PATH)/ssl/ssl_utst.c
+  $(OPENSSL_PATH)/ssl/statem/extensions.c
+  $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c
+  $(OPENSSL_PATH)/ssl/statem/extensions_cust.c
+  $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c
+  $(OPENSSL_PATH)/ssl/statem/statem.c
+  $(OPENSSL_PATH)/ssl/statem/statem_clnt.c
+  $(OPENSSL_PATH)/ssl/statem/statem_dtls.c
+  $(OPENSSL_PATH)/ssl/statem/statem_lib.c
+  $(OPENSSL_PATH)/ssl/statem/statem_srvr.c
+  $(OPENSSL_PATH)/ssl/t1_enc.c
+  $(OPENSSL_PATH)/ssl/t1_lib.c
+  $(OPENSSL_PATH)/ssl/t1_trce.c
+  $(OPENSSL_PATH)/ssl/tls13_enc.c
+  $(OPENSSL_PATH)/ssl/tls_srp.c
+  $(OPENSSL_PATH)/ssl/packet_local.h
+  $(OPENSSL_PATH)/ssl/ssl_cert_table.h
+  $(OPENSSL_PATH)/ssl/ssl_local.h
+  $(OPENSSL_PATH)/ssl/record/record.h
+  $(OPENSSL_PATH)/ssl/record/record_local.h
+  $(OPENSSL_PATH)/ssl/statem/statem.h
+  $(OPENSSL_PATH)/ssl/statem/statem_local.h
+# Autogenerated files list ends here
+  buildinf.h
+  rand_pool_noise.h
+  ossl_store.c
+  rand_pool.c
+
+[Sources.X64]
+  rand_pool_noise_tsc.c
+  ApiHooks.c
+
+[Packages]
+  MdePkg/MdePkg.dec
+  CryptoPkg/CryptoPkg.dec
+
+[LibraryClasses]
+  BaseLib
+  DebugLib
+  TimerLib
+  PrintLib
+
+[BuildOptions]
+  #
+  # Disables the following Visual Studio compiler warnings brought by openssl source,
+  # so we do not break the build with /WX option:
+  #   C4090: 'function' : different 'const' qualifiers
+  #   C4132: 'object' : const object should be initialized (tls13_enc.c)
+  #   C4210: nonstandard extension used: function given file scope
+  #   C4244: conversion from type1 to type2, possible loss of data
+  #   C4245: conversion from type1 to type2, signed/unsigned mismatch
+  #   C4267: conversion from size_t to type, possible loss of data
+  #   C4306: 'identifier' : conversion from 'type1' to 'type2' of greater size
+  #   C4310: cast truncates constant value
+  #   C4389: 'operator' : signed/unsigned mismatch (xxxx)
+  #   C4700: uninitialized local variable 'name' used. (conf_sap.c(71))
+  #   C4702: unreachable code
+  #   C4706: assignment within conditional expression
+  #   C4819: The file contains a character that cannot be represented in the current code page
+  #
+  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132 /wd4210 /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700 /wd4389 /wd4702 /wd4706 /wd4819
+
+  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
+
+  #
+  # Suppress the following build warnings in openssl so we don't break the build with -Werror
+  #   -Werror=maybe-uninitialized: there exist some other paths for which the variable is not initialized.
+  #   -Werror=format: Check calls to printf and scanf, etc., to make sure that the arguments supplied have
+  #                   types appropriate to the format string specified.
+  #   -Werror=unused-but-set-variable: Warn whenever a local variable is assigned to, but otherwise unused (aside from its declaration).
+  #
+  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=format -Wno-format -Wno-error=unused-but-set-variable -DNO_MSABI_VA_FUNCS
+
+  # suppress the following warnings in openssl so we don't break the build with warnings-as-errors:
+  # 1295: Deprecated declaration <entity> - give arg types
+  #  550: <entity> was set but never used
+  # 1293: assignment in condition
+  #  111: statement is unreachable (invariably "break;" after "return X;" in case statement)
+  #   68: integer conversion resulted in a change of sign ("if (Status == -1)")
+  #  177: <entity> was declared but never referenced
+  #  223: function <entity> declared implicitly
+  #  144: a value of type <type> cannot be used to initialize an entity of type <type>
+  #  513: a value of type <type> cannot be assigned to an entity of type <type>
+  #  188: enumerated type mixed with another type (i.e. passing an integer as an enum without a cast)
+  # 1296: Extended constant initialiser used
+  #  128: loop is not reachable - may be emitted inappropriately if code follows a conditional return
+  #       from the function that evaluates to true at compile time
+  #  546: transfer of control bypasses initialization - may be emitted inappropriately if the uninitialized
+  #       variable is never referenced after the jump
+  #    1: ignore "#1-D: last line of file ends without a newline"
+  # 3017: <entity> may be used before being set (NOTE: This was fixed in OpenSSL 1.1 HEAD with
+  #       commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and can be dropped then.)
+  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-error=uninitialized
diff --git a/CryptoPkg/Library/Include/openssl/opensslconf.h b/CryptoPkg/Library/Include/openssl/opensslconf.h
index 3a2544ea5c..e8f73c4d10 100644
--- a/CryptoPkg/Library/Include/openssl/opensslconf.h
+++ b/CryptoPkg/Library/Include/openssl/opensslconf.h
@@ -112,9 +112,6 @@ extern "C" {
 #ifndef OPENSSL_NO_ASAN
 # define OPENSSL_NO_ASAN
 #endif
-#ifndef OPENSSL_NO_ASM
-# define OPENSSL_NO_ASM
-#endif
 #ifndef OPENSSL_NO_ASYNC
 # define OPENSSL_NO_ASYNC
 #endif
diff --git a/CryptoPkg/Library/OpensslLib/ApiHooks.c b/CryptoPkg/Library/OpensslLib/ApiHooks.c
new file mode 100644
index 0000000000..58cff16838
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/ApiHooks.c
@@ -0,0 +1,18 @@
+/** @file
+  OpenSSL Library API hooks.
+
+Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <Uefi.h>
+
+VOID *
+__imp_RtlVirtualUnwind (
+  VOID *    Args
+  )
+{
+  return NULL;
+}
+
diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
new file mode 100644
index 0000000000..ef20d2b84e
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
@@ -0,0 +1,34 @@
+/** @file
+  Constructor to initialize CPUID data for OpenSSL assembly operations.
+
+Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <Uefi.h>
+
+extern void OPENSSL_cpuid_setup (void);
+
+/**
+  Constructor routine for OpensslLib.
+
+  The constructor calls an internal OpenSSL function which fetches a local copy
+  of the hardware capability flags, used to enable native crypto instructions.
+
+  @param  None
+
+  @retval EFI_SUCCESS         The construction succeeded.
+
+**/
+EFI_STATUS
+EFIAPI
+OpensslLibConstructor (
+  VOID
+  )
+{
+  OPENSSL_cpuid_setup ();
+
+  return EFI_SUCCESS;
+}
+
diff --git a/CryptoPkg/Library/OpensslLib/process_files.pl b/CryptoPkg/Library/OpensslLib/process_files.pl
index 57ce195394..472f59bc8e 100755
--- a/CryptoPkg/Library/OpensslLib/process_files.pl
+++ b/CryptoPkg/Library/OpensslLib/process_files.pl
@@ -9,9 +9,63 @@
 # do not need to do this, since the results are stored in the EDK2
 # git repository for them.
 #
+# Due to the script wrapping required to process the OpenSSL
+# configuration data, each native architecture must be processed
+# individually by the maintainer (in addition to the standard version):
+#   ./process_files.pl
+#   ./process_files.pl X64
+#   ./process_files.pl [Arch]
+
 use strict;
 use Cwd;
 use File::Copy;
+use File::Basename;
+use File::Path qw(make_path remove_tree);
+use Text::Tabs;
+
+#
+# OpenSSL perlasm generator script does not transfer the copyright header
+#
+sub copy_license_header
+{
+    my @args = split / /, shift;    #Separate args by spaces
+    my $source = $args[1];          #Source file is second (after "perl")
+    my $target = pop @args;         #Target file is always last
+    chop ($target);                 #Remove newline char
+
+    my $temp_file_name = "license.tmp";
+    open (my $source_file, "<" . $source) || die $source;
+    open (my $target_file, "<" . $target) || die $target;
+    open (my $temp_file, ">" . $temp_file_name) || die $temp_file_name;
+
+    #Add "generated file" warning
+    $source =~ s/^..//;             #Remove leading "./"
+    print ($temp_file "; WARNING: do not edit!\r\n");
+    print ($temp_file "; Generated from $source\r\n");
+    print ($temp_file ";\r\n");
+
+    #Copy source file header to temp file
+    while (my $line = <$source_file>) {
+        next if ($line =~ /#!/);    #Ignore shebang line
+        $line =~ s/#/;/;            #Fix comment character for assembly
+        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace, fixup line endings
+        print ($temp_file $line);
+        last if ($line =~ /http/);  #Last line of copyright header contains a web link
+    }
+    print ($temp_file "\r\n");
+    #Retrieve generated assembly contents
+    while (my $line = <$target_file>) {
+        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace, fixup line endings
+        print ($temp_file expand ($line));  #expand() replaces tabs with spaces
+    }
+
+    close ($source_file);
+    close ($target_file);
+    close ($temp_file);
+
+    move ($temp_file_name, $target) ||
+        die "Cannot replace \"" . $target . "\"!";
+}
 
 #
 # Find the openssl directory name for use lib. We have to do this
@@ -21,10 +75,41 @@ use File::Copy;
 #
 my $inf_file;
 my $OPENSSL_PATH;
+my $uefi_config;
+my $extension;
+my $arch;
 my @inf;
 
 BEGIN {
     $inf_file = "OpensslLib.inf";
+    $uefi_config = "UEFI";
+    $arch = shift;
+
+    if (defined $arch) {
+        if (uc ($arch) eq "X64") {
+            $arch = "X64";
+            $inf_file = "OpensslLibX64.inf";
+            $uefi_config = "UEFI-x86_64";
+            $extension = "nasm";
+        } else {
+            die "Unsupported architecture \"" . $arch . "\"!";
+        }
+        if ($extension eq "nasm") {
+            if (`nasm -v 2>&1`) {
+                #Presence of nasm executable will trigger inclusion of AVX instructions
+                die "\nCannot run assembly generators with NASM in path!\n\n";
+            }
+        }
+
+        # Prepare assembly folder
+        if (-d $arch) {
+            remove_tree ($arch, {safe => 1}) ||
+                die "Cannot clean assembly folder \"" . $arch . "\"!";
+        } else {
+            mkdir $arch ||
+                die "Cannot create assembly folder \"" . $arch . "\"!";
+        }
+    }
 
     # Read the contents of the inf file
     open( FD, "<" . $inf_file ) ||
@@ -47,9 +132,9 @@ BEGIN {
             # Configure UEFI
             system(
                 "./Configure",
-                "UEFI",
+                "--config=../uefi-asm.conf",
+                "$uefi_config",
                 "no-afalgeng",
-                "no-asm",
                 "no-async",
                 "no-autoerrinit",
                 "no-autoload-config",
@@ -129,23 +214,53 @@ BEGIN {
 # Retrieve file lists from OpenSSL configdata
 #
 use configdata qw/%unified_info/;
+use configdata qw/%config/;
+use configdata qw/%target/;
+
+#
+# Collect build flags from configdata
+#
+my $flags = "";
+foreach my $f (@{$config{lib_defines}}) {
+    $flags .= " -D$f";
+}
 
 my @cryptofilelist = ();
 my @sslfilelist = ();
+my @asmfilelist = ();
+my @asmbuild = ();
 foreach my $product ((@{$unified_info{libraries}},
                       @{$unified_info{engines}})) {
     foreach my $o (@{$unified_info{sources}->{$product}}) {
         foreach my $s (@{$unified_info{sources}->{$o}}) {
-            next if ($unified_info{generate}->{$s});
-            next if $s =~ "crypto/bio/b_print.c";
-
             # No need to add unused files in UEFI.
             # So it can reduce porting time, compile time, library size.
+            next if $s =~ "crypto/bio/b_print.c";
             next if $s =~ "crypto/rand/randfile.c";
             next if $s =~ "crypto/store/";
             next if $s =~ "crypto/err/err_all.c";
             next if $s =~ "crypto/aes/aes_ecb.c";
 
+            if ($unified_info{generate}->{$s}) {
+                if (defined $arch) {
+                    my $buildstring = "perl";
+                    foreach my $arg (@{$unified_info{generate}->{$s}}) {
+                        if ($arg =~ ".pl") {
+                            $buildstring .= " ./openssl/$arg";
+                        } elsif ($arg =~ "PERLASM_SCHEME") {
+                            $buildstring .= " $target{perlasm_scheme}";
+                        } elsif ($arg =~ "LIB_CFLAGS") {
+                            $buildstring .= "$flags";
+                        }
+                    }
+                    ($s, my $path, undef) = fileparse($s, qr/\.[^.]*/);
+                    $buildstring .= " ./$arch/$path$s.$extension";
+                    make_path ("./$arch/$path");
+                    push @asmbuild, "$buildstring\n";
+                    push @asmfilelist, "  $arch/$path$s.$extension\r\n";
+                }
+                next;
+            }
             if ($product =~ "libssl") {
                 push @sslfilelist, '  $(OPENSSL_PATH)/' . $s . "\r\n";
                 next;
@@ -183,15 +298,31 @@ foreach (@headers){
 }
 
 
+#
+# Generate assembly files
+#
+if (@asmbuild) {
+    print "\n--> Generating assembly files ... ";
+    foreach my $buildstring (@asmbuild) {
+        system ("$buildstring");
+        copy_license_header ($buildstring);
+    }
+    print "Done!";
+}
+
 #
 # Update OpensslLib.inf with autogenerated file list
 #
 my @new_inf = ();
 my $subbing = 0;
-print "\n--> Updating OpensslLib.inf ... ";
+print "\n--> Updating $inf_file ... ";
 foreach (@inf) {
+    if ($_ =~ "DEFINE OPENSSL_FLAGS_CONFIG") {
+        push @new_inf, "  DEFINE OPENSSL_FLAGS_CONFIG    =" . $flags . "\r\n";
+        next;
+    }
     if ( $_ =~ "# Autogenerated files list starts here" ) {
-        push @new_inf, $_, @cryptofilelist, @sslfilelist;
+        push @new_inf, $_, @asmfilelist, @cryptofilelist, @sslfilelist;
         $subbing = 1;
         next;
     }
@@ -216,49 +347,51 @@ rename( $new_inf_file, $inf_file ) ||
     die "rename $inf_file";
 print "Done!";
 
-#
-# Update OpensslLibCrypto.inf with auto-generated file list (no libssl)
-#
-$inf_file = "OpensslLibCrypto.inf";
-
-# Read the contents of the inf file
-@inf = ();
-@new_inf = ();
-open( FD, "<" . $inf_file ) ||
-    die "Cannot open \"" . $inf_file . "\"!";
-@inf = (<FD>);
-close(FD) ||
-    die "Cannot close \"" . $inf_file . "\"!";
+if (!defined $arch) {
+    #
+    # Update OpensslLibCrypto.inf with auto-generated file list (no libssl)
+    #
+    $inf_file = "OpensslLibCrypto.inf";
 
-$subbing = 0;
-print "\n--> Updating OpensslLibCrypto.inf ... ";
-foreach (@inf) {
-    if ( $_ =~ "# Autogenerated files list starts here" ) {
-        push @new_inf, $_, @cryptofilelist;
-        $subbing = 1;
-        next;
-    }
-    if ( $_ =~ "# Autogenerated files list ends here" ) {
-        push @new_inf, $_;
-        $subbing = 0;
-        next;
+    # Read the contents of the inf file
+    @inf = ();
+    @new_inf = ();
+    open( FD, "<" . $inf_file ) ||
+        die "Cannot open \"" . $inf_file . "\"!";
+    @inf = (<FD>);
+    close(FD) ||
+        die "Cannot close \"" . $inf_file . "\"!";
+
+    $subbing = 0;
+    print "\n--> Updating OpensslLibCrypto.inf ... ";
+    foreach (@inf) {
+        if ( $_ =~ "# Autogenerated files list starts here" ) {
+            push @new_inf, $_, @cryptofilelist;
+            $subbing = 1;
+            next;
+        }
+        if ( $_ =~ "# Autogenerated files list ends here" ) {
+            push @new_inf, $_;
+            $subbing = 0;
+            next;
+        }
+
+        push @new_inf, $_
+            unless ($subbing);
     }
 
-    push @new_inf, $_
-        unless ($subbing);
+    $new_inf_file = $inf_file . ".new";
+    open( FD, ">" . $new_inf_file ) ||
+        die $new_inf_file;
+    print( FD @new_inf ) ||
+        die $new_inf_file;
+    close(FD) ||
+        die $new_inf_file;
+    rename( $new_inf_file, $inf_file ) ||
+        die "rename $inf_file";
+    print "Done!";
 }
 
-$new_inf_file = $inf_file . ".new";
-open( FD, ">" . $new_inf_file ) ||
-    die $new_inf_file;
-print( FD @new_inf ) ||
-    die $new_inf_file;
-close(FD) ||
-    die $new_inf_file;
-rename( $new_inf_file, $inf_file ) ||
-    die "rename $inf_file";
-print "Done!";
-
 #
 # Copy opensslconf.h and dso_conf.h generated from OpenSSL Configuration
 #
diff --git a/CryptoPkg/Library/OpensslLib/uefi-asm.conf b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
new file mode 100644
index 0000000000..55eedbf3ba
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
@@ -0,0 +1,15 @@
+## -*- mode: perl; -*-
+## UEFI assembly openssl configuration targets.
+
+my %targets = (
+#### UEFI
+    "UEFI-x86_64" => {
+        perlasm_scheme  => "nasm",
+        # inherit_from    => [ "UEFI",  asm("x86_64_asm") ],
+        inherit_from    => [ "UEFI" ],
+        cpuid_asm_src   => "x86_64cpuid.s",
+        aes_asm_src     => "aes_core.c aes_cbc.c vpaes-x86_64.s aesni-x86_64.s aesni-sha1-x86_64.s aesni-sha256-x86_64.s aesni-mb-x86_64.s",
+        sha1_asm_src    => "sha1-x86_64.s sha256-x86_64.s sha512-x86_64.s sha1-mb-x86_64.s sha256-mb-x86_64.s",
+        modes_asm_src   => "ghash-x86_64.s",
+    },
+);
-- 
2.28.0.windows.1


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

* [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
  2020-08-04  0:24 [PATCH v2 0/2] CryptoPkg/OpensslLib: Add native instruction support for X64 Zurcher, Christopher J
  2020-08-04  0:24 ` [PATCH v2 1/2] " Zurcher, Christopher J
@ 2020-08-04  0:24 ` Zurcher, Christopher J
  2020-08-13 15:24   ` Yao, Jiewen
  1 sibling, 1 reply; 42+ messages in thread
From: Zurcher, Christopher J @ 2020-08-04  0:24 UTC (permalink / raw)
  To: devel; +Cc: Jiewen Yao, Jian J Wang, Xiaoyu Lu, Ard Biesheuvel

BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507

Adding the auto-generated assembly files for the X64 architecture.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Christopher J Zurcher <christopher.j.zurcher@intel.com>
---
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm     |  732 +++
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm   | 1916 ++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-x86_64.nasm |   78 +
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm        | 5103 ++++++++++++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm        | 1173 +++++
 CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm      | 1569 ++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm      | 3137 ++++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm         | 2884 +++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm    | 3461 +++++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm       | 3313 +++++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm       | 1938 ++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm             |  491 ++
 12 files changed, 25795 insertions(+)

diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm
new file mode 100644
index 0000000000..1a3ed1dd35
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm
@@ -0,0 +1,732 @@
+; WARNING: do not edit!
+; Generated from openssl/crypto/aes/asm/aesni-mb-x86_64.pl
+;
+; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
+;
+; Licensed under the OpenSSL license (the "License").  You may not use
+; this file except in compliance with the License.  You can obtain a copy
+; in the file LICENSE in the source distribution or at
+; https://www.openssl.org/source/license.html
+
+default rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section .text code align=64
+
+
+EXTERN  OPENSSL_ia32cap_P
+
+global  aesni_multi_cbc_encrypt
+
+ALIGN   32
+aesni_multi_cbc_encrypt:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_aesni_multi_cbc_encrypt:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+
+
+
+        mov     rax,rsp
+
+        push    rbx
+
+        push    rbp
+
+        push    r12
+
+        push    r13
+
+        push    r14
+
+        push    r15
+
+        lea     rsp,[((-168))+rsp]
+        movaps  XMMWORD[rsp],xmm6
+        movaps  XMMWORD[16+rsp],xmm7
+        movaps  XMMWORD[32+rsp],xmm8
+        movaps  XMMWORD[48+rsp],xmm9
+        movaps  XMMWORD[64+rsp],xmm10
+        movaps  XMMWORD[80+rsp],xmm11
+        movaps  XMMWORD[96+rsp],xmm12
+        movaps  XMMWORD[(-104)+rax],xmm13
+        movaps  XMMWORD[(-88)+rax],xmm14
+        movaps  XMMWORD[(-72)+rax],xmm15
+
+
+
+
+
+
+        sub     rsp,48
+        and     rsp,-64
+        mov     QWORD[16+rsp],rax
+
+
+$L$enc4x_body:
+        movdqu  xmm12,XMMWORD[rsi]
+        lea     rsi,[120+rsi]
+        lea     rdi,[80+rdi]
+
+$L$enc4x_loop_grande:
+        mov     DWORD[24+rsp],edx
+        xor     edx,edx
+        mov     ecx,DWORD[((-64))+rdi]
+        mov     r8,QWORD[((-80))+rdi]
+        cmp     ecx,edx
+        mov     r12,QWORD[((-72))+rdi]
+        cmovg   edx,ecx
+        test    ecx,ecx
+        movdqu  xmm2,XMMWORD[((-56))+rdi]
+        mov     DWORD[32+rsp],ecx
+        cmovle  r8,rsp
+        mov     ecx,DWORD[((-24))+rdi]
+        mov     r9,QWORD[((-40))+rdi]
+        cmp     ecx,edx
+        mov     r13,QWORD[((-32))+rdi]
+        cmovg   edx,ecx
+        test    ecx,ecx
+        movdqu  xmm3,XMMWORD[((-16))+rdi]
+        mov     DWORD[36+rsp],ecx
+        cmovle  r9,rsp
+        mov     ecx,DWORD[16+rdi]
+        mov     r10,QWORD[rdi]
+        cmp     ecx,edx
+        mov     r14,QWORD[8+rdi]
+        cmovg   edx,ecx
+        test    ecx,ecx
+        movdqu  xmm4,XMMWORD[24+rdi]
+        mov     DWORD[40+rsp],ecx
+        cmovle  r10,rsp
+        mov     ecx,DWORD[56+rdi]
+        mov     r11,QWORD[40+rdi]
+        cmp     ecx,edx
+        mov     r15,QWORD[48+rdi]
+        cmovg   edx,ecx
+        test    ecx,ecx
+        movdqu  xmm5,XMMWORD[64+rdi]
+        mov     DWORD[44+rsp],ecx
+        cmovle  r11,rsp
+        test    edx,edx
+        jz      NEAR $L$enc4x_done
+
+        movups  xmm1,XMMWORD[((16-120))+rsi]
+        pxor    xmm2,xmm12
+        movups  xmm0,XMMWORD[((32-120))+rsi]
+        pxor    xmm3,xmm12
+        mov     eax,DWORD[((240-120))+rsi]
+        pxor    xmm4,xmm12
+        movdqu  xmm6,XMMWORD[r8]
+        pxor    xmm5,xmm12
+        movdqu  xmm7,XMMWORD[r9]
+        pxor    xmm2,xmm6
+        movdqu  xmm8,XMMWORD[r10]
+        pxor    xmm3,xmm7
+        movdqu  xmm9,XMMWORD[r11]
+        pxor    xmm4,xmm8
+        pxor    xmm5,xmm9
+        movdqa  xmm10,XMMWORD[32+rsp]
+        xor     rbx,rbx
+        jmp     NEAR $L$oop_enc4x
+
+ALIGN   32
+$L$oop_enc4x:
+        add     rbx,16
+        lea     rbp,[16+rsp]
+        mov     ecx,1
+        sub     rbp,rbx
+
+DB      102,15,56,220,209
+        prefetcht0      [31+rbx*1+r8]
+        prefetcht0      [31+rbx*1+r9]
+DB      102,15,56,220,217
+        prefetcht0      [31+rbx*1+r10]
+        prefetcht0      [31+rbx*1+r10]
+DB      102,15,56,220,225
+DB      102,15,56,220,233
+        movups  xmm1,XMMWORD[((48-120))+rsi]
+        cmp     ecx,DWORD[32+rsp]
+DB      102,15,56,220,208
+DB      102,15,56,220,216
+DB      102,15,56,220,224
+        cmovge  r8,rbp
+        cmovg   r12,rbp
+DB      102,15,56,220,232
+        movups  xmm0,XMMWORD[((-56))+rsi]
+        cmp     ecx,DWORD[36+rsp]
+DB      102,15,56,220,209
+DB      102,15,56,220,217
+DB      102,15,56,220,225
+        cmovge  r9,rbp
+        cmovg   r13,rbp
+DB      102,15,56,220,233
+        movups  xmm1,XMMWORD[((-40))+rsi]
+        cmp     ecx,DWORD[40+rsp]
+DB      102,15,56,220,208
+DB      102,15,56,220,216
+DB      102,15,56,220,224
+        cmovge  r10,rbp
+        cmovg   r14,rbp
+DB      102,15,56,220,232
+        movups  xmm0,XMMWORD[((-24))+rsi]
+        cmp     ecx,DWORD[44+rsp]
+DB      102,15,56,220,209
+DB      102,15,56,220,217
+DB      102,15,56,220,225
+        cmovge  r11,rbp
+        cmovg   r15,rbp
+DB      102,15,56,220,233
+        movups  xmm1,XMMWORD[((-8))+rsi]
+        movdqa  xmm11,xmm10
+DB      102,15,56,220,208
+        prefetcht0      [15+rbx*1+r12]
+        prefetcht0      [15+rbx*1+r13]
+DB      102,15,56,220,216
+        prefetcht0      [15+rbx*1+r14]
+        prefetcht0      [15+rbx*1+r15]
+DB      102,15,56,220,224
+DB      102,15,56,220,232
+        movups  xmm0,XMMWORD[((128-120))+rsi]
+        pxor    xmm12,xmm12
+
+DB      102,15,56,220,209
+        pcmpgtd xmm11,xmm12
+        movdqu  xmm12,XMMWORD[((-120))+rsi]
+DB      102,15,56,220,217
+        paddd   xmm10,xmm11
+        movdqa  XMMWORD[32+rsp],xmm10
+DB      102,15,56,220,225
+DB      102,15,56,220,233
+        movups  xmm1,XMMWORD[((144-120))+rsi]
+
+        cmp     eax,11
+
+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[((160-120))+rsi]
+
+        jb      NEAR $L$enc4x_tail
+
+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[((176-120))+rsi]
+
+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[((192-120))+rsi]
+
+        je      NEAR $L$enc4x_tail
+
+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[((208-120))+rsi]
+
+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[((224-120))+rsi]
+        jmp     NEAR $L$enc4x_tail
+
+ALIGN   32
+$L$enc4x_tail:
+DB      102,15,56,220,209
+DB      102,15,56,220,217
+DB      102,15,56,220,225
+DB      102,15,56,220,233
+        movdqu  xmm6,XMMWORD[rbx*1+r8]
+        movdqu  xmm1,XMMWORD[((16-120))+rsi]
+
+DB      102,15,56,221,208
+        movdqu  xmm7,XMMWORD[rbx*1+r9]
+        pxor    xmm6,xmm12
+DB      102,15,56,221,216
+        movdqu  xmm8,XMMWORD[rbx*1+r10]
+        pxor    xmm7,xmm12
+DB      102,15,56,221,224
+        movdqu  xmm9,XMMWORD[rbx*1+r11]
+        pxor    xmm8,xmm12
+DB      102,15,56,221,232
+        movdqu  xmm0,XMMWORD[((32-120))+rsi]
+        pxor    xmm9,xmm12
+
+        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
+        pxor    xmm2,xmm6
+        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
+        pxor    xmm3,xmm7
+        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
+        pxor    xmm4,xmm8
+        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
+        pxor    xmm5,xmm9
+
+        dec     edx
+        jnz     NEAR $L$oop_enc4x
+
+        mov     rax,QWORD[16+rsp]
+
+        mov     edx,DWORD[24+rsp]
+
+
+
+
+
+
+
+
+
+
+        lea     rdi,[160+rdi]
+        dec     edx
+        jnz     NEAR $L$enc4x_loop_grande
+
+$L$enc4x_done:
+        movaps  xmm6,XMMWORD[((-216))+rax]
+        movaps  xmm7,XMMWORD[((-200))+rax]
+        movaps  xmm8,XMMWORD[((-184))+rax]
+        movaps  xmm9,XMMWORD[((-168))+rax]
+        movaps  xmm10,XMMWORD[((-152))+rax]
+        movaps  xmm11,XMMWORD[((-136))+rax]
+        movaps  xmm12,XMMWORD[((-120))+rax]
+
+
+
+        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$enc4x_epilogue:
+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
+        mov     rsi,QWORD[16+rsp]
+        DB      0F3h,0C3h               ;repret
+
+$L$SEH_end_aesni_multi_cbc_encrypt:
+
+global  aesni_multi_cbc_decrypt
+
+ALIGN   32
+aesni_multi_cbc_decrypt:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_aesni_multi_cbc_decrypt:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+
+
+
+        mov     rax,rsp
+
+        push    rbx
+
+        push    rbp
+
+        push    r12
+
+        push    r13
+
+        push    r14
+
+        push    r15
+
+        lea     rsp,[((-168))+rsp]
+        movaps  XMMWORD[rsp],xmm6
+        movaps  XMMWORD[16+rsp],xmm7
+        movaps  XMMWORD[32+rsp],xmm8
+        movaps  XMMWORD[48+rsp],xmm9
+        movaps  XMMWORD[64+rsp],xmm10
+        movaps  XMMWORD[80+rsp],xmm11
+        movaps  XMMWORD[96+rsp],xmm12
+        movaps  XMMWORD[(-104)+rax],xmm13
+        movaps  XMMWORD[(-88)+rax],xmm14
+        movaps  XMMWORD[(-72)+rax],xmm15
+
+
+
+
+
+
+        sub     rsp,48
+        and     rsp,-64
+        mov     QWORD[16+rsp],rax
+
+
+$L$dec4x_body:
+        movdqu  xmm12,XMMWORD[rsi]
+        lea     rsi,[120+rsi]
+        lea     rdi,[80+rdi]
+
+$L$dec4x_loop_grande:
+        mov     DWORD[24+rsp],edx
+        xor     edx,edx
+        mov     ecx,DWORD[((-64))+rdi]
+        mov     r8,QWORD[((-80))+rdi]
+        cmp     ecx,edx
+        mov     r12,QWORD[((-72))+rdi]
+        cmovg   edx,ecx
+        test    ecx,ecx
+        movdqu  xmm6,XMMWORD[((-56))+rdi]
+        mov     DWORD[32+rsp],ecx
+        cmovle  r8,rsp
+        mov     ecx,DWORD[((-24))+rdi]
+        mov     r9,QWORD[((-40))+rdi]
+        cmp     ecx,edx
+        mov     r13,QWORD[((-32))+rdi]
+        cmovg   edx,ecx
+        test    ecx,ecx
+        movdqu  xmm7,XMMWORD[((-16))+rdi]
+        mov     DWORD[36+rsp],ecx
+        cmovle  r9,rsp
+        mov     ecx,DWORD[16+rdi]
+        mov     r10,QWORD[rdi]
+        cmp     ecx,edx
+        mov     r14,QWORD[8+rdi]
+        cmovg   edx,ecx
+        test    ecx,ecx
+        movdqu  xmm8,XMMWORD[24+rdi]
+        mov     DWORD[40+rsp],ecx
+        cmovle  r10,rsp
+        mov     ecx,DWORD[56+rdi]
+        mov     r11,QWORD[40+rdi]
+        cmp     ecx,edx
+        mov     r15,QWORD[48+rdi]
+        cmovg   edx,ecx
+        test    ecx,ecx
+        movdqu  xmm9,XMMWORD[64+rdi]
+        mov     DWORD[44+rsp],ecx
+        cmovle  r11,rsp
+        test    edx,edx
+        jz      NEAR $L$dec4x_done
+
+        movups  xmm1,XMMWORD[((16-120))+rsi]
+        movups  xmm0,XMMWORD[((32-120))+rsi]
+        mov     eax,DWORD[((240-120))+rsi]
+        movdqu  xmm2,XMMWORD[r8]
+        movdqu  xmm3,XMMWORD[r9]
+        pxor    xmm2,xmm12
+        movdqu  xmm4,XMMWORD[r10]
+        pxor    xmm3,xmm12
+        movdqu  xmm5,XMMWORD[r11]
+        pxor    xmm4,xmm12
+        pxor    xmm5,xmm12
+        movdqa  xmm10,XMMWORD[32+rsp]
+        xor     rbx,rbx
+        jmp     NEAR $L$oop_dec4x
+
+ALIGN   32
+$L$oop_dec4x:
+        add     rbx,16
+        lea     rbp,[16+rsp]
+        mov     ecx,1
+        sub     rbp,rbx
+
+DB      102,15,56,222,209
+        prefetcht0      [31+rbx*1+r8]
+        prefetcht0      [31+rbx*1+r9]
+DB      102,15,56,222,217
+        prefetcht0      [31+rbx*1+r10]
+        prefetcht0      [31+rbx*1+r11]
+DB      102,15,56,222,225
+DB      102,15,56,222,233
+        movups  xmm1,XMMWORD[((48-120))+rsi]
+        cmp     ecx,DWORD[32+rsp]
+DB      102,15,56,222,208
+DB      102,15,56,222,216
+DB      102,15,56,222,224
+        cmovge  r8,rbp
+        cmovg   r12,rbp
+DB      102,15,56,222,232
+        movups  xmm0,XMMWORD[((-56))+rsi]
+        cmp     ecx,DWORD[36+rsp]
+DB      102,15,56,222,209
+DB      102,15,56,222,217
+DB      102,15,56,222,225
+        cmovge  r9,rbp
+        cmovg   r13,rbp
+DB      102,15,56,222,233
+        movups  xmm1,XMMWORD[((-40))+rsi]
+        cmp     ecx,DWORD[40+rsp]
+DB      102,15,56,222,208
+DB      102,15,56,222,216
+DB      102,15,56,222,224
+        cmovge  r10,rbp
+        cmovg   r14,rbp
+DB      102,15,56,222,232
+        movups  xmm0,XMMWORD[((-24))+rsi]
+        cmp     ecx,DWORD[44+rsp]
+DB      102,15,56,222,209
+DB      102,15,56,222,217
+DB      102,15,56,222,225
+        cmovge  r11,rbp
+        cmovg   r15,rbp
+DB      102,15,56,222,233
+        movups  xmm1,XMMWORD[((-8))+rsi]
+        movdqa  xmm11,xmm10
+DB      102,15,56,222,208
+        prefetcht0      [15+rbx*1+r12]
+        prefetcht0      [15+rbx*1+r13]
+DB      102,15,56,222,216
+        prefetcht0      [15+rbx*1+r14]
+        prefetcht0      [15+rbx*1+r15]
+DB      102,15,56,222,224
+DB      102,15,56,222,232
+        movups  xmm0,XMMWORD[((128-120))+rsi]
+        pxor    xmm12,xmm12
+
+DB      102,15,56,222,209
+        pcmpgtd xmm11,xmm12
+        movdqu  xmm12,XMMWORD[((-120))+rsi]
+DB      102,15,56,222,217
+        paddd   xmm10,xmm11
+        movdqa  XMMWORD[32+rsp],xmm10
+DB      102,15,56,222,225
+DB      102,15,56,222,233
+        movups  xmm1,XMMWORD[((144-120))+rsi]
+
+        cmp     eax,11
+
+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[((160-120))+rsi]
+
+        jb      NEAR $L$dec4x_tail
+
+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[((176-120))+rsi]
+
+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[((192-120))+rsi]
+
+        je      NEAR $L$dec4x_tail
+
+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[((208-120))+rsi]
+
+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[((224-120))+rsi]
+        jmp     NEAR $L$dec4x_tail
+
+ALIGN   32
+$L$dec4x_tail:
+DB      102,15,56,222,209
+DB      102,15,56,222,217
+DB      102,15,56,222,225
+        pxor    xmm6,xmm0
+        pxor    xmm7,xmm0
+DB      102,15,56,222,233
+        movdqu  xmm1,XMMWORD[((16-120))+rsi]
+        pxor    xmm8,xmm0
+        pxor    xmm9,xmm0
+        movdqu  xmm0,XMMWORD[((32-120))+rsi]
+
+DB      102,15,56,223,214
+DB      102,15,56,223,223
+        movdqu  xmm6,XMMWORD[((-16))+rbx*1+r8]
+        movdqu  xmm7,XMMWORD[((-16))+rbx*1+r9]
+DB      102,65,15,56,223,224
+DB      102,65,15,56,223,233
+        movdqu  xmm8,XMMWORD[((-16))+rbx*1+r10]
+        movdqu  xmm9,XMMWORD[((-16))+rbx*1+r11]
+
+        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
+        movdqu  xmm2,XMMWORD[rbx*1+r8]
+        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
+        movdqu  xmm3,XMMWORD[rbx*1+r9]
+        pxor    xmm2,xmm12
+        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
+        movdqu  xmm4,XMMWORD[rbx*1+r10]
+        pxor    xmm3,xmm12
+        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
+        movdqu  xmm5,XMMWORD[rbx*1+r11]
+        pxor    xmm4,xmm12
+        pxor    xmm5,xmm12
+
+        dec     edx
+        jnz     NEAR $L$oop_dec4x
+
+        mov     rax,QWORD[16+rsp]
+
+        mov     edx,DWORD[24+rsp]
+
+        lea     rdi,[160+rdi]
+        dec     edx
+        jnz     NEAR $L$dec4x_loop_grande
+
+$L$dec4x_done:
+        movaps  xmm6,XMMWORD[((-216))+rax]
+        movaps  xmm7,XMMWORD[((-200))+rax]
+        movaps  xmm8,XMMWORD[((-184))+rax]
+        movaps  xmm9,XMMWORD[((-168))+rax]
+        movaps  xmm10,XMMWORD[((-152))+rax]
+        movaps  xmm11,XMMWORD[((-136))+rax]
+        movaps  xmm12,XMMWORD[((-120))+rax]
+
+
+
+        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$dec4x_epilogue:
+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
+        mov     rsi,QWORD[16+rsp]
+        DB      0F3h,0C3h               ;repret
+
+$L$SEH_end_aesni_multi_cbc_decrypt:
+EXTERN  __imp_RtlVirtualUnwind
+
+ALIGN   16
+se_handler:
+        push    rsi
+        push    rdi
+        push    rbx
+        push    rbp
+        push    r12
+        push    r13
+        push    r14
+        push    r15
+        pushfq
+        sub     rsp,64
+
+        mov     rax,QWORD[120+r8]
+        mov     rbx,QWORD[248+r8]
+
+        mov     rsi,QWORD[8+r9]
+        mov     r11,QWORD[56+r9]
+
+        mov     r10d,DWORD[r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jb      NEAR $L$in_prologue
+
+        mov     rax,QWORD[152+r8]
+
+        mov     r10d,DWORD[4+r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jae     NEAR $L$in_prologue
+
+        mov     rax,QWORD[16+rax]
+
+        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     rsi,[((-56-160))+rax]
+        lea     rdi,[512+r8]
+        mov     ecx,20
+        DD      0xa548f3fc
+
+$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[40+r9]
+        mov     rsi,r8
+        mov     ecx,154
+        DD      0xa548f3fc
+
+        mov     rsi,r9
+        xor     rcx,rcx
+        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
+        popfq
+        pop     r15
+        pop     r14
+        pop     r13
+        pop     r12
+        pop     rbp
+        pop     rbx
+        pop     rdi
+        pop     rsi
+        DB      0F3h,0C3h               ;repret
+
+
+section .pdata rdata align=4
+ALIGN   4
+        DD      $L$SEH_begin_aesni_multi_cbc_encrypt wrt ..imagebase
+        DD      $L$SEH_end_aesni_multi_cbc_encrypt wrt ..imagebase
+        DD      $L$SEH_info_aesni_multi_cbc_encrypt wrt ..imagebase
+        DD      $L$SEH_begin_aesni_multi_cbc_decrypt wrt ..imagebase
+        DD      $L$SEH_end_aesni_multi_cbc_decrypt wrt ..imagebase
+        DD      $L$SEH_info_aesni_multi_cbc_decrypt wrt ..imagebase
+section .xdata rdata align=8
+ALIGN   8
+$L$SEH_info_aesni_multi_cbc_encrypt:
+DB      9,0,0,0
+        DD      se_handler wrt ..imagebase
+        DD      $L$enc4x_body wrt ..imagebase,$L$enc4x_epilogue wrt ..imagebase
+$L$SEH_info_aesni_multi_cbc_decrypt:
+DB      9,0,0,0
+        DD      se_handler wrt ..imagebase
+        DD      $L$dec4x_body wrt ..imagebase,$L$dec4x_epilogue wrt ..imagebase
diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm
new file mode 100644
index 0000000000..f4fd9ca50d
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm
@@ -0,0 +1,1916 @@
+; WARNING: do not edit!
+; Generated from openssl/crypto/aes/asm/aesni-sha1-x86_64.pl
+;
+; Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved.
+;
+; Licensed under the OpenSSL license (the "License").  You may not use
+; this file except in compliance with the License.  You can obtain a copy
+; in the file LICENSE in the source distribution or at
+; https://www.openssl.org/source/license.html
+
+default rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section .text code align=64
+
+EXTERN  OPENSSL_ia32cap_P
+
+global  aesni_cbc_sha1_enc
+
+ALIGN   32
+aesni_cbc_sha1_enc:
+
+
+        mov     r10d,DWORD[((OPENSSL_ia32cap_P+0))]
+        mov     r11,QWORD[((OPENSSL_ia32cap_P+4))]
+        bt      r11,61
+        jc      NEAR aesni_cbc_sha1_enc_shaext
+        jmp     NEAR aesni_cbc_sha1_enc_ssse3
+        DB      0F3h,0C3h               ;repret
+
+
+
+ALIGN   32
+aesni_cbc_sha1_enc_ssse3:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_aesni_cbc_sha1_enc_ssse3:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+        mov     rcx,r9
+        mov     r8,QWORD[40+rsp]
+        mov     r9,QWORD[48+rsp]
+
+
+
+        mov     r10,QWORD[56+rsp]
+
+
+        push    rbx
+
+        push    rbp
+
+        push    r12
+
+        push    r13
+
+        push    r14
+
+        push    r15
+
+        lea     rsp,[((-264))+rsp]
+
+
+
+        movaps  XMMWORD[(96+0)+rsp],xmm6
+        movaps  XMMWORD[(96+16)+rsp],xmm7
+        movaps  XMMWORD[(96+32)+rsp],xmm8
+        movaps  XMMWORD[(96+48)+rsp],xmm9
+        movaps  XMMWORD[(96+64)+rsp],xmm10
+        movaps  XMMWORD[(96+80)+rsp],xmm11
+        movaps  XMMWORD[(96+96)+rsp],xmm12
+        movaps  XMMWORD[(96+112)+rsp],xmm13
+        movaps  XMMWORD[(96+128)+rsp],xmm14
+        movaps  XMMWORD[(96+144)+rsp],xmm15
+$L$prologue_ssse3:
+        mov     r12,rdi
+        mov     r13,rsi
+        mov     r14,rdx
+        lea     r15,[112+rcx]
+        movdqu  xmm2,XMMWORD[r8]
+        mov     QWORD[88+rsp],r8
+        shl     r14,6
+        sub     r13,r12
+        mov     r8d,DWORD[((240-112))+r15]
+        add     r14,r10
+
+        lea     r11,[K_XX_XX]
+        mov     eax,DWORD[r9]
+        mov     ebx,DWORD[4+r9]
+        mov     ecx,DWORD[8+r9]
+        mov     edx,DWORD[12+r9]
+        mov     esi,ebx
+        mov     ebp,DWORD[16+r9]
+        mov     edi,ecx
+        xor     edi,edx
+        and     esi,edi
+
+        movdqa  xmm3,XMMWORD[64+r11]
+        movdqa  xmm13,XMMWORD[r11]
+        movdqu  xmm4,XMMWORD[r10]
+        movdqu  xmm5,XMMWORD[16+r10]
+        movdqu  xmm6,XMMWORD[32+r10]
+        movdqu  xmm7,XMMWORD[48+r10]
+DB      102,15,56,0,227
+DB      102,15,56,0,235
+DB      102,15,56,0,243
+        add     r10,64
+        paddd   xmm4,xmm13
+DB      102,15,56,0,251
+        paddd   xmm5,xmm13
+        paddd   xmm6,xmm13
+        movdqa  XMMWORD[rsp],xmm4
+        psubd   xmm4,xmm13
+        movdqa  XMMWORD[16+rsp],xmm5
+        psubd   xmm5,xmm13
+        movdqa  XMMWORD[32+rsp],xmm6
+        psubd   xmm6,xmm13
+        movups  xmm15,XMMWORD[((-112))+r15]
+        movups  xmm0,XMMWORD[((16-112))+r15]
+        jmp     NEAR $L$oop_ssse3
+ALIGN   32
+$L$oop_ssse3:
+        ror     ebx,2
+        movups  xmm14,XMMWORD[r12]
+        xorps   xmm14,xmm15
+        xorps   xmm2,xmm14
+        movups  xmm1,XMMWORD[((-80))+r15]
+DB      102,15,56,220,208
+        pshufd  xmm8,xmm4,238
+        xor     esi,edx
+        movdqa  xmm12,xmm7
+        paddd   xmm13,xmm7
+        mov     edi,eax
+        add     ebp,DWORD[rsp]
+        punpcklqdq      xmm8,xmm5
+        xor     ebx,ecx
+        rol     eax,5
+        add     ebp,esi
+        psrldq  xmm12,4
+        and     edi,ebx
+        xor     ebx,ecx
+        pxor    xmm8,xmm4
+        add     ebp,eax
+        ror     eax,7
+        pxor    xmm12,xmm6
+        xor     edi,ecx
+        mov     esi,ebp
+        add     edx,DWORD[4+rsp]
+        pxor    xmm8,xmm12
+        xor     eax,ebx
+        rol     ebp,5
+        movdqa  XMMWORD[48+rsp],xmm13
+        add     edx,edi
+        movups  xmm0,XMMWORD[((-64))+r15]
+DB      102,15,56,220,209
+        and     esi,eax
+        movdqa  xmm3,xmm8
+        xor     eax,ebx
+        add     edx,ebp
+        ror     ebp,7
+        movdqa  xmm12,xmm8
+        xor     esi,ebx
+        pslldq  xmm3,12
+        paddd   xmm8,xmm8
+        mov     edi,edx
+        add     ecx,DWORD[8+rsp]
+        psrld   xmm12,31
+        xor     ebp,eax
+        rol     edx,5
+        add     ecx,esi
+        movdqa  xmm13,xmm3
+        and     edi,ebp
+        xor     ebp,eax
+        psrld   xmm3,30
+        add     ecx,edx
+        ror     edx,7
+        por     xmm8,xmm12
+        xor     edi,eax
+        mov     esi,ecx
+        add     ebx,DWORD[12+rsp]
+        movups  xmm1,XMMWORD[((-48))+r15]
+DB      102,15,56,220,208
+        pslld   xmm13,2
+        pxor    xmm8,xmm3
+        xor     edx,ebp
+        movdqa  xmm3,XMMWORD[r11]
+        rol     ecx,5
+        add     ebx,edi
+        and     esi,edx
+        pxor    xmm8,xmm13
+        xor     edx,ebp
+        add     ebx,ecx
+        ror     ecx,7
+        pshufd  xmm9,xmm5,238
+        xor     esi,ebp
+        movdqa  xmm13,xmm8
+        paddd   xmm3,xmm8
+        mov     edi,ebx
+        add     eax,DWORD[16+rsp]
+        punpcklqdq      xmm9,xmm6
+        xor     ecx,edx
+        rol     ebx,5
+        add     eax,esi
+        psrldq  xmm13,4
+        and     edi,ecx
+        xor     ecx,edx
+        pxor    xmm9,xmm5
+        add     eax,ebx
+        ror     ebx,7
+        movups  xmm0,XMMWORD[((-32))+r15]
+DB      102,15,56,220,209
+        pxor    xmm13,xmm7
+        xor     edi,edx
+        mov     esi,eax
+        add     ebp,DWORD[20+rsp]
+        pxor    xmm9,xmm13
+        xor     ebx,ecx
+        rol     eax,5
+        movdqa  XMMWORD[rsp],xmm3
+        add     ebp,edi
+        and     esi,ebx
+        movdqa  xmm12,xmm9
+        xor     ebx,ecx
+        add     ebp,eax
+        ror     eax,7
+        movdqa  xmm13,xmm9
+        xor     esi,ecx
+        pslldq  xmm12,12
+        paddd   xmm9,xmm9
+        mov     edi,ebp
+        add     edx,DWORD[24+rsp]
+        psrld   xmm13,31
+        xor     eax,ebx
+        rol     ebp,5
+        add     edx,esi
+        movups  xmm1,XMMWORD[((-16))+r15]
+DB      102,15,56,220,208
+        movdqa  xmm3,xmm12
+        and     edi,eax
+        xor     eax,ebx
+        psrld   xmm12,30
+        add     edx,ebp
+        ror     ebp,7
+        por     xmm9,xmm13
+        xor     edi,ebx
+        mov     esi,edx
+        add     ecx,DWORD[28+rsp]
+        pslld   xmm3,2
+        pxor    xmm9,xmm12
+        xor     ebp,eax
+        movdqa  xmm12,XMMWORD[16+r11]
+        rol     edx,5
+        add     ecx,edi
+        and     esi,ebp
+        pxor    xmm9,xmm3
+        xor     ebp,eax
+        add     ecx,edx
+        ror     edx,7
+        pshufd  xmm10,xmm6,238
+        xor     esi,eax
+        movdqa  xmm3,xmm9
+        paddd   xmm12,xmm9
+        mov     edi,ecx
+        add     ebx,DWORD[32+rsp]
+        movups  xmm0,XMMWORD[r15]
+DB      102,15,56,220,209
+        punpcklqdq      xmm10,xmm7
+        xor     edx,ebp
+        rol     ecx,5
+        add     ebx,esi
+        psrldq  xmm3,4
+        and     edi,edx
+        xor     edx,ebp
+        pxor    xmm10,xmm6
+        add     ebx,ecx
+        ror     ecx,7
+        pxor    xmm3,xmm8
+        xor     edi,ebp
+        mov     esi,ebx
+        add     eax,DWORD[36+rsp]
+        pxor    xmm10,xmm3
+        xor     ecx,edx
+        rol     ebx,5
+        movdqa  XMMWORD[16+rsp],xmm12
+        add     eax,edi
+        and     esi,ecx
+        movdqa  xmm13,xmm10
+        xor     ecx,edx
+        add     eax,ebx
+        ror     ebx,7
+        movups  xmm1,XMMWORD[16+r15]
+DB      102,15,56,220,208
+        movdqa  xmm3,xmm10
+        xor     esi,edx
+        pslldq  xmm13,12
+        paddd   xmm10,xmm10
+        mov     edi,eax
+        add     ebp,DWORD[40+rsp]
+        psrld   xmm3,31
+        xor     ebx,ecx
+        rol     eax,5
+        add     ebp,esi
+        movdqa  xmm12,xmm13
+        and     edi,ebx
+        xor     ebx,ecx
+        psrld   xmm13,30
+        add     ebp,eax
+        ror     eax,7
+        por     xmm10,xmm3
+        xor     edi,ecx
+        mov     esi,ebp
+        add     edx,DWORD[44+rsp]
+        pslld   xmm12,2
+        pxor    xmm10,xmm13
+        xor     eax,ebx
+        movdqa  xmm13,XMMWORD[16+r11]
+        rol     ebp,5
+        add     edx,edi
+        movups  xmm0,XMMWORD[32+r15]
+DB      102,15,56,220,209
+        and     esi,eax
+        pxor    xmm10,xmm12
+        xor     eax,ebx
+        add     edx,ebp
+        ror     ebp,7
+        pshufd  xmm11,xmm7,238
+        xor     esi,ebx
+        movdqa  xmm12,xmm10
+        paddd   xmm13,xmm10
+        mov     edi,edx
+        add     ecx,DWORD[48+rsp]
+        punpcklqdq      xmm11,xmm8
+        xor     ebp,eax
+        rol     edx,5
+        add     ecx,esi
+        psrldq  xmm12,4
+        and     edi,ebp
+        xor     ebp,eax
+        pxor    xmm11,xmm7
+        add     ecx,edx
+        ror     edx,7
+        pxor    xmm12,xmm9
+        xor     edi,eax
+        mov     esi,ecx
+        add     ebx,DWORD[52+rsp]
+        movups  xmm1,XMMWORD[48+r15]
+DB      102,15,56,220,208
+        pxor    xmm11,xmm12
+        xor     edx,ebp
+        rol     ecx,5
+        movdqa  XMMWORD[32+rsp],xmm13
+        add     ebx,edi
+        and     esi,edx
+        movdqa  xmm3,xmm11
+        xor     edx,ebp
+        add     ebx,ecx
+        ror     ecx,7
+        movdqa  xmm12,xmm11
+        xor     esi,ebp
+        pslldq  xmm3,12
+        paddd   xmm11,xmm11
+        mov     edi,ebx
+        add     eax,DWORD[56+rsp]
+        psrld   xmm12,31
+        xor     ecx,edx
+        rol     ebx,5
+        add     eax,esi
+        movdqa  xmm13,xmm3
+        and     edi,ecx
+        xor     ecx,edx
+        psrld   xmm3,30
+        add     eax,ebx
+        ror     ebx,7
+        cmp     r8d,11
+        jb      NEAR $L$aesenclast1
+        movups  xmm0,XMMWORD[64+r15]
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[80+r15]
+DB      102,15,56,220,208
+        je      NEAR $L$aesenclast1
+        movups  xmm0,XMMWORD[96+r15]
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[112+r15]
+DB      102,15,56,220,208
+$L$aesenclast1:
+DB      102,15,56,221,209
+        movups  xmm0,XMMWORD[((16-112))+r15]
+        por     xmm11,xmm12
+        xor     edi,edx
+        mov     esi,eax
+        add     ebp,DWORD[60+rsp]
+        pslld   xmm13,2
+        pxor    xmm11,xmm3
+        xor     ebx,ecx
+        movdqa  xmm3,XMMWORD[16+r11]
+        rol     eax,5
+        add     ebp,edi
+        and     esi,ebx
+        pxor    xmm11,xmm13
+        pshufd  xmm13,xmm10,238
+        xor     ebx,ecx
+        add     ebp,eax
+        ror     eax,7
+        pxor    xmm4,xmm8
+        xor     esi,ecx
+        mov     edi,ebp
+        add     edx,DWORD[rsp]
+        punpcklqdq      xmm13,xmm11
+        xor     eax,ebx
+        rol     ebp,5
+        pxor    xmm4,xmm5
+        add     edx,esi
+        movups  xmm14,XMMWORD[16+r12]
+        xorps   xmm14,xmm15
+        movups  XMMWORD[r13*1+r12],xmm2
+        xorps   xmm2,xmm14
+        movups  xmm1,XMMWORD[((-80))+r15]
+DB      102,15,56,220,208
+        and     edi,eax
+        movdqa  xmm12,xmm3
+        xor     eax,ebx
+        paddd   xmm3,xmm11
+        add     edx,ebp
+        pxor    xmm4,xmm13
+        ror     ebp,7
+        xor     edi,ebx
+        mov     esi,edx
+        add     ecx,DWORD[4+rsp]
+        movdqa  xmm13,xmm4
+        xor     ebp,eax
+        rol     edx,5
+        movdqa  XMMWORD[48+rsp],xmm3
+        add     ecx,edi
+        and     esi,ebp
+        xor     ebp,eax
+        pslld   xmm4,2
+        add     ecx,edx
+        ror     edx,7
+        psrld   xmm13,30
+        xor     esi,eax
+        mov     edi,ecx
+        add     ebx,DWORD[8+rsp]
+        movups  xmm0,XMMWORD[((-64))+r15]
+DB      102,15,56,220,209
+        por     xmm4,xmm13
+        xor     edx,ebp
+        rol     ecx,5
+        pshufd  xmm3,xmm11,238
+        add     ebx,esi
+        and     edi,edx
+        xor     edx,ebp
+        add     ebx,ecx
+        add     eax,DWORD[12+rsp]
+        xor     edi,ebp
+        mov     esi,ebx
+        rol     ebx,5
+        add     eax,edi
+        xor     esi,edx
+        ror     ecx,7
+        add     eax,ebx
+        pxor    xmm5,xmm9
+        add     ebp,DWORD[16+rsp]
+        movups  xmm1,XMMWORD[((-48))+r15]
+DB      102,15,56,220,208
+        xor     esi,ecx
+        punpcklqdq      xmm3,xmm4
+        mov     edi,eax
+        rol     eax,5
+        pxor    xmm5,xmm6
+        add     ebp,esi
+        xor     edi,ecx
+        movdqa  xmm13,xmm12
+        ror     ebx,7
+        paddd   xmm12,xmm4
+        add     ebp,eax
+        pxor    xmm5,xmm3
+        add     edx,DWORD[20+rsp]
+        xor     edi,ebx
+        mov     esi,ebp
+        rol     ebp,5
+        movdqa  xmm3,xmm5
+        add     edx,edi
+        xor     esi,ebx
+        movdqa  XMMWORD[rsp],xmm12
+        ror     eax,7
+        add     edx,ebp
+        add     ecx,DWORD[24+rsp]
+        pslld   xmm5,2
+        xor     esi,eax
+        mov     edi,edx
+        psrld   xmm3,30
+        rol     edx,5
+        add     ecx,esi
+        movups  xmm0,XMMWORD[((-32))+r15]
+DB      102,15,56,220,209
+        xor     edi,eax
+        ror     ebp,7
+        por     xmm5,xmm3
+        add     ecx,edx
+        add     ebx,DWORD[28+rsp]
+        pshufd  xmm12,xmm4,238
+        xor     edi,ebp
+        mov     esi,ecx
+        rol     ecx,5
+        add     ebx,edi
+        xor     esi,ebp
+        ror     edx,7
+        add     ebx,ecx
+        pxor    xmm6,xmm10
+        add     eax,DWORD[32+rsp]
+        xor     esi,edx
+        punpcklqdq      xmm12,xmm5
+        mov     edi,ebx
+        rol     ebx,5
+        pxor    xmm6,xmm7
+        add     eax,esi
+        xor     edi,edx
+        movdqa  xmm3,XMMWORD[32+r11]
+        ror     ecx,7
+        paddd   xmm13,xmm5
+        add     eax,ebx
+        pxor    xmm6,xmm12
+        add     ebp,DWORD[36+rsp]
+        movups  xmm1,XMMWORD[((-16))+r15]
+DB      102,15,56,220,208
+        xor     edi,ecx
+        mov     esi,eax
+        rol     eax,5
+        movdqa  xmm12,xmm6
+        add     ebp,edi
+        xor     esi,ecx
+        movdqa  XMMWORD[16+rsp],xmm13
+        ror     ebx,7
+        add     ebp,eax
+        add     edx,DWORD[40+rsp]
+        pslld   xmm6,2
+        xor     esi,ebx
+        mov     edi,ebp
+        psrld   xmm12,30
+        rol     ebp,5
+        add     edx,esi
+        xor     edi,ebx
+        ror     eax,7
+        por     xmm6,xmm12
+        add     edx,ebp
+        add     ecx,DWORD[44+rsp]
+        pshufd  xmm13,xmm5,238
+        xor     edi,eax
+        mov     esi,edx
+        rol     edx,5
+        add     ecx,edi
+        movups  xmm0,XMMWORD[r15]
+DB      102,15,56,220,209
+        xor     esi,eax
+        ror     ebp,7
+        add     ecx,edx
+        pxor    xmm7,xmm11
+        add     ebx,DWORD[48+rsp]
+        xor     esi,ebp
+        punpcklqdq      xmm13,xmm6
+        mov     edi,ecx
+        rol     ecx,5
+        pxor    xmm7,xmm8
+        add     ebx,esi
+        xor     edi,ebp
+        movdqa  xmm12,xmm3
+        ror     edx,7
+        paddd   xmm3,xmm6
+        add     ebx,ecx
+        pxor    xmm7,xmm13
+        add     eax,DWORD[52+rsp]
+        xor     edi,edx
+        mov     esi,ebx
+        rol     ebx,5
+        movdqa  xmm13,xmm7
+        add     eax,edi
+        xor     esi,edx
+        movdqa  XMMWORD[32+rsp],xmm3
+        ror     ecx,7
+        add     eax,ebx
+        add     ebp,DWORD[56+rsp]
+        movups  xmm1,XMMWORD[16+r15]
+DB      102,15,56,220,208
+        pslld   xmm7,2
+        xor     esi,ecx
+        mov     edi,eax
+        psrld   xmm13,30
+        rol     eax,5
+        add     ebp,esi
+        xor     edi,ecx
+        ror     ebx,7
+        por     xmm7,xmm13
+        add     ebp,eax
+        add     edx,DWORD[60+rsp]
+        pshufd  xmm3,xmm6,238
+        xor     edi,ebx
+        mov     esi,ebp
+        rol     ebp,5
+        add     edx,edi
+        xor     esi,ebx
+        ror     eax,7
+        add     edx,ebp
+        pxor    xmm8,xmm4
+        add     ecx,DWORD[rsp]
+        xor     esi,eax
+        punpcklqdq      xmm3,xmm7
+        mov     edi,edx
+        rol     edx,5
+        pxor    xmm8,xmm9
+        add     ecx,esi
+        movups  xmm0,XMMWORD[32+r15]
+DB      102,15,56,220,209
+        xor     edi,eax
+        movdqa  xmm13,xmm12
+        ror     ebp,7
+        paddd   xmm12,xmm7
+        add     ecx,edx
+        pxor    xmm8,xmm3
+        add     ebx,DWORD[4+rsp]
+        xor     edi,ebp
+        mov     esi,ecx
+        rol     ecx,5
+        movdqa  xmm3,xmm8
+        add     ebx,edi
+        xor     esi,ebp
+        movdqa  XMMWORD[48+rsp],xmm12
+        ror     edx,7
+        add     ebx,ecx
+        add     eax,DWORD[8+rsp]
+        pslld   xmm8,2
+        xor     esi,edx
+        mov     edi,ebx
+        psrld   xmm3,30
+        rol     ebx,5
+        add     eax,esi
+        xor     edi,edx
+        ror     ecx,7
+        por     xmm8,xmm3
+        add     eax,ebx
+        add     ebp,DWORD[12+rsp]
+        movups  xmm1,XMMWORD[48+r15]
+DB      102,15,56,220,208
+        pshufd  xmm12,xmm7,238
+        xor     edi,ecx
+        mov     esi,eax
+        rol     eax,5
+        add     ebp,edi
+        xor     esi,ecx
+        ror     ebx,7
+        add     ebp,eax
+        pxor    xmm9,xmm5
+        add     edx,DWORD[16+rsp]
+        xor     esi,ebx
+        punpcklqdq      xmm12,xmm8
+        mov     edi,ebp
+        rol     ebp,5
+        pxor    xmm9,xmm10
+        add     edx,esi
+        xor     edi,ebx
+        movdqa  xmm3,xmm13
+        ror     eax,7
+        paddd   xmm13,xmm8
+        add     edx,ebp
+        pxor    xmm9,xmm12
+        add     ecx,DWORD[20+rsp]
+        xor     edi,eax
+        mov     esi,edx
+        rol     edx,5
+        movdqa  xmm12,xmm9
+        add     ecx,edi
+        cmp     r8d,11
+        jb      NEAR $L$aesenclast2
+        movups  xmm0,XMMWORD[64+r15]
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[80+r15]
+DB      102,15,56,220,208
+        je      NEAR $L$aesenclast2
+        movups  xmm0,XMMWORD[96+r15]
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[112+r15]
+DB      102,15,56,220,208
+$L$aesenclast2:
+DB      102,15,56,221,209
+        movups  xmm0,XMMWORD[((16-112))+r15]
+        xor     esi,eax
+        movdqa  XMMWORD[rsp],xmm13
+        ror     ebp,7
+        add     ecx,edx
+        add     ebx,DWORD[24+rsp]
+        pslld   xmm9,2
+        xor     esi,ebp
+        mov     edi,ecx
+        psrld   xmm12,30
+        rol     ecx,5
+        add     ebx,esi
+        xor     edi,ebp
+        ror     edx,7
+        por     xmm9,xmm12
+        add     ebx,ecx
+        add     eax,DWORD[28+rsp]
+        pshufd  xmm13,xmm8,238
+        ror     ecx,7
+        mov     esi,ebx
+        xor     edi,edx
+        rol     ebx,5
+        add     eax,edi
+        xor     esi,ecx
+        xor     ecx,edx
+        add     eax,ebx
+        pxor    xmm10,xmm6
+        add     ebp,DWORD[32+rsp]
+        movups  xmm14,XMMWORD[32+r12]
+        xorps   xmm14,xmm15
+        movups  XMMWORD[16+r12*1+r13],xmm2
+        xorps   xmm2,xmm14
+        movups  xmm1,XMMWORD[((-80))+r15]
+DB      102,15,56,220,208
+        and     esi,ecx
+        xor     ecx,edx
+        ror     ebx,7
+        punpcklqdq      xmm13,xmm9
+        mov     edi,eax
+        xor     esi,ecx
+        pxor    xmm10,xmm11
+        rol     eax,5
+        add     ebp,esi
+        movdqa  xmm12,xmm3
+        xor     edi,ebx
+        paddd   xmm3,xmm9
+        xor     ebx,ecx
+        pxor    xmm10,xmm13
+        add     ebp,eax
+        add     edx,DWORD[36+rsp]
+        and     edi,ebx
+        xor     ebx,ecx
+        ror     eax,7
+        movdqa  xmm13,xmm10
+        mov     esi,ebp
+        xor     edi,ebx
+        movdqa  XMMWORD[16+rsp],xmm3
+        rol     ebp,5
+        add     edx,edi
+        movups  xmm0,XMMWORD[((-64))+r15]
+DB      102,15,56,220,209
+        xor     esi,eax
+        pslld   xmm10,2
+        xor     eax,ebx
+        add     edx,ebp
+        psrld   xmm13,30
+        add     ecx,DWORD[40+rsp]
+        and     esi,eax
+        xor     eax,ebx
+        por     xmm10,xmm13
+        ror     ebp,7
+        mov     edi,edx
+        xor     esi,eax
+        rol     edx,5
+        pshufd  xmm3,xmm9,238
+        add     ecx,esi
+        xor     edi,ebp
+        xor     ebp,eax
+        add     ecx,edx
+        add     ebx,DWORD[44+rsp]
+        and     edi,ebp
+        xor     ebp,eax
+        ror     edx,7
+        movups  xmm1,XMMWORD[((-48))+r15]
+DB      102,15,56,220,208
+        mov     esi,ecx
+        xor     edi,ebp
+        rol     ecx,5
+        add     ebx,edi
+        xor     esi,edx
+        xor     edx,ebp
+        add     ebx,ecx
+        pxor    xmm11,xmm7
+        add     eax,DWORD[48+rsp]
+        and     esi,edx
+        xor     edx,ebp
+        ror     ecx,7
+        punpcklqdq      xmm3,xmm10
+        mov     edi,ebx
+        xor     esi,edx
+        pxor    xmm11,xmm4
+        rol     ebx,5
+        add     eax,esi
+        movdqa  xmm13,XMMWORD[48+r11]
+        xor     edi,ecx
+        paddd   xmm12,xmm10
+        xor     ecx,edx
+        pxor    xmm11,xmm3
+        add     eax,ebx
+        add     ebp,DWORD[52+rsp]
+        movups  xmm0,XMMWORD[((-32))+r15]
+DB      102,15,56,220,209
+        and     edi,ecx
+        xor     ecx,edx
+        ror     ebx,7
+        movdqa  xmm3,xmm11
+        mov     esi,eax
+        xor     edi,ecx
+        movdqa  XMMWORD[32+rsp],xmm12
+        rol     eax,5
+        add     ebp,edi
+        xor     esi,ebx
+        pslld   xmm11,2
+        xor     ebx,ecx
+        add     ebp,eax
+        psrld   xmm3,30
+        add     edx,DWORD[56+rsp]
+        and     esi,ebx
+        xor     ebx,ecx
+        por     xmm11,xmm3
+        ror     eax,7
+        mov     edi,ebp
+        xor     esi,ebx
+        rol     ebp,5
+        pshufd  xmm12,xmm10,238
+        add     edx,esi
+        movups  xmm1,XMMWORD[((-16))+r15]
+DB      102,15,56,220,208
+        xor     edi,eax
+        xor     eax,ebx
+        add     edx,ebp
+        add     ecx,DWORD[60+rsp]
+        and     edi,eax
+        xor     eax,ebx
+        ror     ebp,7
+        mov     esi,edx
+        xor     edi,eax
+        rol     edx,5
+        add     ecx,edi
+        xor     esi,ebp
+        xor     ebp,eax
+        add     ecx,edx
+        pxor    xmm4,xmm8
+        add     ebx,DWORD[rsp]
+        and     esi,ebp
+        xor     ebp,eax
+        ror     edx,7
+        movups  xmm0,XMMWORD[r15]
+DB      102,15,56,220,209
+        punpcklqdq      xmm12,xmm11
+        mov     edi,ecx
+        xor     esi,ebp
+        pxor    xmm4,xmm5
+        rol     ecx,5
+        add     ebx,esi
+        movdqa  xmm3,xmm13
+        xor     edi,edx
+        paddd   xmm13,xmm11
+        xor     edx,ebp
+        pxor    xmm4,xmm12
+        add     ebx,ecx
+        add     eax,DWORD[4+rsp]
+        and     edi,edx
+        xor     edx,ebp
+        ror     ecx,7
+        movdqa  xmm12,xmm4
+        mov     esi,ebx
+        xor     edi,edx
+        movdqa  XMMWORD[48+rsp],xmm13
+        rol     ebx,5
+        add     eax,edi
+        xor     esi,ecx
+        pslld   xmm4,2
+        xor     ecx,edx
+        add     eax,ebx
+        psrld   xmm12,30
+        add     ebp,DWORD[8+rsp]
+        movups  xmm1,XMMWORD[16+r15]
+DB      102,15,56,220,208
+        and     esi,ecx
+        xor     ecx,edx
+        por     xmm4,xmm12
+        ror     ebx,7
+        mov     edi,eax
+        xor     esi,ecx
+        rol     eax,5
+        pshufd  xmm13,xmm11,238
+        add     ebp,esi
+        xor     edi,ebx
+        xor     ebx,ecx
+        add     ebp,eax
+        add     edx,DWORD[12+rsp]
+        and     edi,ebx
+        xor     ebx,ecx
+        ror     eax,7
+        mov     esi,ebp
+        xor     edi,ebx
+        rol     ebp,5
+        add     edx,edi
+        movups  xmm0,XMMWORD[32+r15]
+DB      102,15,56,220,209
+        xor     esi,eax
+        xor     eax,ebx
+        add     edx,ebp
+        pxor    xmm5,xmm9
+        add     ecx,DWORD[16+rsp]
+        and     esi,eax
+        xor     eax,ebx
+        ror     ebp,7
+        punpcklqdq      xmm13,xmm4
+        mov     edi,edx
+        xor     esi,eax
+        pxor    xmm5,xmm6
+        rol     edx,5
+        add     ecx,esi
+        movdqa  xmm12,xmm3
+        xor     edi,ebp
+        paddd   xmm3,xmm4
+        xor     ebp,eax
+        pxor    xmm5,xmm13
+        add     ecx,edx
+        add     ebx,DWORD[20+rsp]
+        and     edi,ebp
+        xor     ebp,eax
+        ror     edx,7
+        movups  xmm1,XMMWORD[48+r15]
+DB      102,15,56,220,208
+        movdqa  xmm13,xmm5
+        mov     esi,ecx
+        xor     edi,ebp
+        movdqa  XMMWORD[rsp],xmm3
+        rol     ecx,5
+        add     ebx,edi
+        xor     esi,edx
+        pslld   xmm5,2
+        xor     edx,ebp
+        add     ebx,ecx
+        psrld   xmm13,30
+        add     eax,DWORD[24+rsp]
+        and     esi,edx
+        xor     edx,ebp
+        por     xmm5,xmm13
+        ror     ecx,7
+        mov     edi,ebx
+        xor     esi,edx
+        rol     ebx,5
+        pshufd  xmm3,xmm4,238
+        add     eax,esi
+        xor     edi,ecx
+        xor     ecx,edx
+        add     eax,ebx
+        add     ebp,DWORD[28+rsp]
+        cmp     r8d,11
+        jb      NEAR $L$aesenclast3
+        movups  xmm0,XMMWORD[64+r15]
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[80+r15]
+DB      102,15,56,220,208
+        je      NEAR $L$aesenclast3
+        movups  xmm0,XMMWORD[96+r15]
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[112+r15]
+DB      102,15,56,220,208
+$L$aesenclast3:
+DB      102,15,56,221,209
+        movups  xmm0,XMMWORD[((16-112))+r15]
+        and     edi,ecx
+        xor     ecx,edx
+        ror     ebx,7
+        mov     esi,eax
+        xor     edi,ecx
+        rol     eax,5
+        add     ebp,edi
+        xor     esi,ebx
+        xor     ebx,ecx
+        add     ebp,eax
+        pxor    xmm6,xmm10
+        add     edx,DWORD[32+rsp]
+        and     esi,ebx
+        xor     ebx,ecx
+        ror     eax,7
+        punpcklqdq      xmm3,xmm5
+        mov     edi,ebp
+        xor     esi,ebx
+        pxor    xmm6,xmm7
+        rol     ebp,5
+        add     edx,esi
+        movups  xmm14,XMMWORD[48+r12]
+        xorps   xmm14,xmm15
+        movups  XMMWORD[32+r12*1+r13],xmm2
+        xorps   xmm2,xmm14
+        movups  xmm1,XMMWORD[((-80))+r15]
+DB      102,15,56,220,208
+        movdqa  xmm13,xmm12
+        xor     edi,eax
+        paddd   xmm12,xmm5
+        xor     eax,ebx
+        pxor    xmm6,xmm3
+        add     edx,ebp
+        add     ecx,DWORD[36+rsp]
+        and     edi,eax
+        xor     eax,ebx
+        ror     ebp,7
+        movdqa  xmm3,xmm6
+        mov     esi,edx
+        xor     edi,eax
+        movdqa  XMMWORD[16+rsp],xmm12
+        rol     edx,5
+        add     ecx,edi
+        xor     esi,ebp
+        pslld   xmm6,2
+        xor     ebp,eax
+        add     ecx,edx
+        psrld   xmm3,30
+        add     ebx,DWORD[40+rsp]
+        and     esi,ebp
+        xor     ebp,eax
+        por     xmm6,xmm3
+        ror     edx,7
+        movups  xmm0,XMMWORD[((-64))+r15]
+DB      102,15,56,220,209
+        mov     edi,ecx
+        xor     esi,ebp
+        rol     ecx,5
+        pshufd  xmm12,xmm5,238
+        add     ebx,esi
+        xor     edi,edx
+        xor     edx,ebp
+        add     ebx,ecx
+        add     eax,DWORD[44+rsp]
+        and     edi,edx
+        xor     edx,ebp
+        ror     ecx,7
+        mov     esi,ebx
+        xor     edi,edx
+        rol     ebx,5
+        add     eax,edi
+        xor     esi,edx
+        add     eax,ebx
+        pxor    xmm7,xmm11
+        add     ebp,DWORD[48+rsp]
+        movups  xmm1,XMMWORD[((-48))+r15]
+DB      102,15,56,220,208
+        xor     esi,ecx
+        punpcklqdq      xmm12,xmm6
+        mov     edi,eax
+        rol     eax,5
+        pxor    xmm7,xmm8
+        add     ebp,esi
+        xor     edi,ecx
+        movdqa  xmm3,xmm13
+        ror     ebx,7
+        paddd   xmm13,xmm6
+        add     ebp,eax
+        pxor    xmm7,xmm12
+        add     edx,DWORD[52+rsp]
+        xor     edi,ebx
+        mov     esi,ebp
+        rol     ebp,5
+        movdqa  xmm12,xmm7
+        add     edx,edi
+        xor     esi,ebx
+        movdqa  XMMWORD[32+rsp],xmm13
+        ror     eax,7
+        add     edx,ebp
+        add     ecx,DWORD[56+rsp]
+        pslld   xmm7,2
+        xor     esi,eax
+        mov     edi,edx
+        psrld   xmm12,30
+        rol     edx,5
+        add     ecx,esi
+        movups  xmm0,XMMWORD[((-32))+r15]
+DB      102,15,56,220,209
+        xor     edi,eax
+        ror     ebp,7
+        por     xmm7,xmm12
+        add     ecx,edx
+        add     ebx,DWORD[60+rsp]
+        xor     edi,ebp
+        mov     esi,ecx
+        rol     ecx,5
+        add     ebx,edi
+        xor     esi,ebp
+        ror     edx,7
+        add     ebx,ecx
+        add     eax,DWORD[rsp]
+        xor     esi,edx
+        mov     edi,ebx
+        rol     ebx,5
+        paddd   xmm3,xmm7
+        add     eax,esi
+        xor     edi,edx
+        movdqa  XMMWORD[48+rsp],xmm3
+        ror     ecx,7
+        add     eax,ebx
+        add     ebp,DWORD[4+rsp]
+        movups  xmm1,XMMWORD[((-16))+r15]
+DB      102,15,56,220,208
+        xor     edi,ecx
+        mov     esi,eax
+        rol     eax,5
+        add     ebp,edi
+        xor     esi,ecx
+        ror     ebx,7
+        add     ebp,eax
+        add     edx,DWORD[8+rsp]
+        xor     esi,ebx
+        mov     edi,ebp
+        rol     ebp,5
+        add     edx,esi
+        xor     edi,ebx
+        ror     eax,7
+        add     edx,ebp
+        add     ecx,DWORD[12+rsp]
+        xor     edi,eax
+        mov     esi,edx
+        rol     edx,5
+        add     ecx,edi
+        movups  xmm0,XMMWORD[r15]
+DB      102,15,56,220,209
+        xor     esi,eax
+        ror     ebp,7
+        add     ecx,edx
+        cmp     r10,r14
+        je      NEAR $L$done_ssse3
+        movdqa  xmm3,XMMWORD[64+r11]
+        movdqa  xmm13,XMMWORD[r11]
+        movdqu  xmm4,XMMWORD[r10]
+        movdqu  xmm5,XMMWORD[16+r10]
+        movdqu  xmm6,XMMWORD[32+r10]
+        movdqu  xmm7,XMMWORD[48+r10]
+DB      102,15,56,0,227
+        add     r10,64
+        add     ebx,DWORD[16+rsp]
+        xor     esi,ebp
+        mov     edi,ecx
+DB      102,15,56,0,235
+        rol     ecx,5
+        add     ebx,esi
+        xor     edi,ebp
+        ror     edx,7
+        paddd   xmm4,xmm13
+        add     ebx,ecx
+        add     eax,DWORD[20+rsp]
+        xor     edi,edx
+        mov     esi,ebx
+        movdqa  XMMWORD[rsp],xmm4
+        rol     ebx,5
+        add     eax,edi
+        xor     esi,edx
+        ror     ecx,7
+        psubd   xmm4,xmm13
+        add     eax,ebx
+        add     ebp,DWORD[24+rsp]
+        movups  xmm1,XMMWORD[16+r15]
+DB      102,15,56,220,208
+        xor     esi,ecx
+        mov     edi,eax
+        rol     eax,5
+        add     ebp,esi
+        xor     edi,ecx
+        ror     ebx,7
+        add     ebp,eax
+        add     edx,DWORD[28+rsp]
+        xor     edi,ebx
+        mov     esi,ebp
+        rol     ebp,5
+        add     edx,edi
+        xor     esi,ebx
+        ror     eax,7
+        add     edx,ebp
+        add     ecx,DWORD[32+rsp]
+        xor     esi,eax
+        mov     edi,edx
+DB      102,15,56,0,243
+        rol     edx,5
+        add     ecx,esi
+        movups  xmm0,XMMWORD[32+r15]
+DB      102,15,56,220,209
+        xor     edi,eax
+        ror     ebp,7
+        paddd   xmm5,xmm13
+        add     ecx,edx
+        add     ebx,DWORD[36+rsp]
+        xor     edi,ebp
+        mov     esi,ecx
+        movdqa  XMMWORD[16+rsp],xmm5
+        rol     ecx,5
+        add     ebx,edi
+        xor     esi,ebp
+        ror     edx,7
+        psubd   xmm5,xmm13
+        add     ebx,ecx
+        add     eax,DWORD[40+rsp]
+        xor     esi,edx
+        mov     edi,ebx
+        rol     ebx,5
+        add     eax,esi
+        xor     edi,edx
+        ror     ecx,7
+        add     eax,ebx
+        add     ebp,DWORD[44+rsp]
+        movups  xmm1,XMMWORD[48+r15]
+DB      102,15,56,220,208
+        xor     edi,ecx
+        mov     esi,eax
+        rol     eax,5
+        add     ebp,edi
+        xor     esi,ecx
+        ror     ebx,7
+        add     ebp,eax
+        add     edx,DWORD[48+rsp]
+        xor     esi,ebx
+        mov     edi,ebp
+DB      102,15,56,0,251
+        rol     ebp,5
+        add     edx,esi
+        xor     edi,ebx
+        ror     eax,7
+        paddd   xmm6,xmm13
+        add     edx,ebp
+        add     ecx,DWORD[52+rsp]
+        xor     edi,eax
+        mov     esi,edx
+        movdqa  XMMWORD[32+rsp],xmm6
+        rol     edx,5
+        add     ecx,edi
+        cmp     r8d,11
+        jb      NEAR $L$aesenclast4
+        movups  xmm0,XMMWORD[64+r15]
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[80+r15]
+DB      102,15,56,220,208
+        je      NEAR $L$aesenclast4
+        movups  xmm0,XMMWORD[96+r15]
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[112+r15]
+DB      102,15,56,220,208
+$L$aesenclast4:
+DB      102,15,56,221,209
+        movups  xmm0,XMMWORD[((16-112))+r15]
+        xor     esi,eax
+        ror     ebp,7
+        psubd   xmm6,xmm13
+        add     ecx,edx
+        add     ebx,DWORD[56+rsp]
+        xor     esi,ebp
+        mov     edi,ecx
+        rol     ecx,5
+        add     ebx,esi
+        xor     edi,ebp
+        ror     edx,7
+        add     ebx,ecx
+        add     eax,DWORD[60+rsp]
+        xor     edi,edx
+        mov     esi,ebx
+        rol     ebx,5
+        add     eax,edi
+        ror     ecx,7
+        add     eax,ebx
+        movups  XMMWORD[48+r12*1+r13],xmm2
+        lea     r12,[64+r12]
+
+        add     eax,DWORD[r9]
+        add     esi,DWORD[4+r9]
+        add     ecx,DWORD[8+r9]
+        add     edx,DWORD[12+r9]
+        mov     DWORD[r9],eax
+        add     ebp,DWORD[16+r9]
+        mov     DWORD[4+r9],esi
+        mov     ebx,esi
+        mov     DWORD[8+r9],ecx
+        mov     edi,ecx
+        mov     DWORD[12+r9],edx
+        xor     edi,edx
+        mov     DWORD[16+r9],ebp
+        and     esi,edi
+        jmp     NEAR $L$oop_ssse3
+
+$L$done_ssse3:
+        add     ebx,DWORD[16+rsp]
+        xor     esi,ebp
+        mov     edi,ecx
+        rol     ecx,5
+        add     ebx,esi
+        xor     edi,ebp
+        ror     edx,7
+        add     ebx,ecx
+        add     eax,DWORD[20+rsp]
+        xor     edi,edx
+        mov     esi,ebx
+        rol     ebx,5
+        add     eax,edi
+        xor     esi,edx
+        ror     ecx,7
+        add     eax,ebx
+        add     ebp,DWORD[24+rsp]
+        movups  xmm1,XMMWORD[16+r15]
+DB      102,15,56,220,208
+        xor     esi,ecx
+        mov     edi,eax
+        rol     eax,5
+        add     ebp,esi
+        xor     edi,ecx
+        ror     ebx,7
+        add     ebp,eax
+        add     edx,DWORD[28+rsp]
+        xor     edi,ebx
+        mov     esi,ebp
+        rol     ebp,5
+        add     edx,edi
+        xor     esi,ebx
+        ror     eax,7
+        add     edx,ebp
+        add     ecx,DWORD[32+rsp]
+        xor     esi,eax
+        mov     edi,edx
+        rol     edx,5
+        add     ecx,esi
+        movups  xmm0,XMMWORD[32+r15]
+DB      102,15,56,220,209
+        xor     edi,eax
+        ror     ebp,7
+        add     ecx,edx
+        add     ebx,DWORD[36+rsp]
+        xor     edi,ebp
+        mov     esi,ecx
+        rol     ecx,5
+        add     ebx,edi
+        xor     esi,ebp
+        ror     edx,7
+        add     ebx,ecx
+        add     eax,DWORD[40+rsp]
+        xor     esi,edx
+        mov     edi,ebx
+        rol     ebx,5
+        add     eax,esi
+        xor     edi,edx
+        ror     ecx,7
+        add     eax,ebx
+        add     ebp,DWORD[44+rsp]
+        movups  xmm1,XMMWORD[48+r15]
+DB      102,15,56,220,208
+        xor     edi,ecx
+        mov     esi,eax
+        rol     eax,5
+        add     ebp,edi
+        xor     esi,ecx
+        ror     ebx,7
+        add     ebp,eax
+        add     edx,DWORD[48+rsp]
+        xor     esi,ebx
+        mov     edi,ebp
+        rol     ebp,5
+        add     edx,esi
+        xor     edi,ebx
+        ror     eax,7
+        add     edx,ebp
+        add     ecx,DWORD[52+rsp]
+        xor     edi,eax
+        mov     esi,edx
+        rol     edx,5
+        add     ecx,edi
+        cmp     r8d,11
+        jb      NEAR $L$aesenclast5
+        movups  xmm0,XMMWORD[64+r15]
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[80+r15]
+DB      102,15,56,220,208
+        je      NEAR $L$aesenclast5
+        movups  xmm0,XMMWORD[96+r15]
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[112+r15]
+DB      102,15,56,220,208
+$L$aesenclast5:
+DB      102,15,56,221,209
+        movups  xmm0,XMMWORD[((16-112))+r15]
+        xor     esi,eax
+        ror     ebp,7
+        add     ecx,edx
+        add     ebx,DWORD[56+rsp]
+        xor     esi,ebp
+        mov     edi,ecx
+        rol     ecx,5
+        add     ebx,esi
+        xor     edi,ebp
+        ror     edx,7
+        add     ebx,ecx
+        add     eax,DWORD[60+rsp]
+        xor     edi,edx
+        mov     esi,ebx
+        rol     ebx,5
+        add     eax,edi
+        ror     ecx,7
+        add     eax,ebx
+        movups  XMMWORD[48+r12*1+r13],xmm2
+        mov     r8,QWORD[88+rsp]
+
+        add     eax,DWORD[r9]
+        add     esi,DWORD[4+r9]
+        add     ecx,DWORD[8+r9]
+        mov     DWORD[r9],eax
+        add     edx,DWORD[12+r9]
+        mov     DWORD[4+r9],esi
+        add     ebp,DWORD[16+r9]
+        mov     DWORD[8+r9],ecx
+        mov     DWORD[12+r9],edx
+        mov     DWORD[16+r9],ebp
+        movups  XMMWORD[r8],xmm2
+        movaps  xmm6,XMMWORD[((96+0))+rsp]
+        movaps  xmm7,XMMWORD[((96+16))+rsp]
+        movaps  xmm8,XMMWORD[((96+32))+rsp]
+        movaps  xmm9,XMMWORD[((96+48))+rsp]
+        movaps  xmm10,XMMWORD[((96+64))+rsp]
+        movaps  xmm11,XMMWORD[((96+80))+rsp]
+        movaps  xmm12,XMMWORD[((96+96))+rsp]
+        movaps  xmm13,XMMWORD[((96+112))+rsp]
+        movaps  xmm14,XMMWORD[((96+128))+rsp]
+        movaps  xmm15,XMMWORD[((96+144))+rsp]
+        lea     rsi,[264+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_aesni_cbc_sha1_enc_ssse3:
+ALIGN   64
+K_XX_XX:
+        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
+        DD      0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
+        DD      0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
+        DD      0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
+        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
+DB      0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
+
+DB      65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115
+DB      116,105,116,99,104,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
+
+ALIGN   32
+aesni_cbc_sha1_enc_shaext:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_aesni_cbc_sha1_enc_shaext:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+        mov     rcx,r9
+        mov     r8,QWORD[40+rsp]
+        mov     r9,QWORD[48+rsp]
+
+
+
+        mov     r10,QWORD[56+rsp]
+        lea     rsp,[((-168))+rsp]
+        movaps  XMMWORD[(-8-160)+rax],xmm6
+        movaps  XMMWORD[(-8-144)+rax],xmm7
+        movaps  XMMWORD[(-8-128)+rax],xmm8
+        movaps  XMMWORD[(-8-112)+rax],xmm9
+        movaps  XMMWORD[(-8-96)+rax],xmm10
+        movaps  XMMWORD[(-8-80)+rax],xmm11
+        movaps  XMMWORD[(-8-64)+rax],xmm12
+        movaps  XMMWORD[(-8-48)+rax],xmm13
+        movaps  XMMWORD[(-8-32)+rax],xmm14
+        movaps  XMMWORD[(-8-16)+rax],xmm15
+$L$prologue_shaext:
+        movdqu  xmm8,XMMWORD[r9]
+        movd    xmm9,DWORD[16+r9]
+        movdqa  xmm7,XMMWORD[((K_XX_XX+80))]
+
+        mov     r11d,DWORD[240+rcx]
+        sub     rsi,rdi
+        movups  xmm15,XMMWORD[rcx]
+        movups  xmm2,XMMWORD[r8]
+        movups  xmm0,XMMWORD[16+rcx]
+        lea     rcx,[112+rcx]
+
+        pshufd  xmm8,xmm8,27
+        pshufd  xmm9,xmm9,27
+        jmp     NEAR $L$oop_shaext
+
+ALIGN   16
+$L$oop_shaext:
+        movups  xmm14,XMMWORD[rdi]
+        xorps   xmm14,xmm15
+        xorps   xmm2,xmm14
+        movups  xmm1,XMMWORD[((-80))+rcx]
+DB      102,15,56,220,208
+        movdqu  xmm3,XMMWORD[r10]
+        movdqa  xmm12,xmm9
+DB      102,15,56,0,223
+        movdqu  xmm4,XMMWORD[16+r10]
+        movdqa  xmm11,xmm8
+        movups  xmm0,XMMWORD[((-64))+rcx]
+DB      102,15,56,220,209
+DB      102,15,56,0,231
+
+        paddd   xmm9,xmm3
+        movdqu  xmm5,XMMWORD[32+r10]
+        lea     r10,[64+r10]
+        pxor    xmm3,xmm12
+        movups  xmm1,XMMWORD[((-48))+rcx]
+DB      102,15,56,220,208
+        pxor    xmm3,xmm12
+        movdqa  xmm10,xmm8
+DB      102,15,56,0,239
+DB      69,15,58,204,193,0
+DB      68,15,56,200,212
+        movups  xmm0,XMMWORD[((-32))+rcx]
+DB      102,15,56,220,209
+DB      15,56,201,220
+        movdqu  xmm6,XMMWORD[((-16))+r10]
+        movdqa  xmm9,xmm8
+DB      102,15,56,0,247
+        movups  xmm1,XMMWORD[((-16))+rcx]
+DB      102,15,56,220,208
+DB      69,15,58,204,194,0
+DB      68,15,56,200,205
+        pxor    xmm3,xmm5
+DB      15,56,201,229
+        movups  xmm0,XMMWORD[rcx]
+DB      102,15,56,220,209
+        movdqa  xmm10,xmm8
+DB      69,15,58,204,193,0
+DB      68,15,56,200,214
+        movups  xmm1,XMMWORD[16+rcx]
+DB      102,15,56,220,208
+DB      15,56,202,222
+        pxor    xmm4,xmm6
+DB      15,56,201,238
+        movups  xmm0,XMMWORD[32+rcx]
+DB      102,15,56,220,209
+        movdqa  xmm9,xmm8
+DB      69,15,58,204,194,0
+DB      68,15,56,200,203
+        movups  xmm1,XMMWORD[48+rcx]
+DB      102,15,56,220,208
+DB      15,56,202,227
+        pxor    xmm5,xmm3
+DB      15,56,201,243
+        cmp     r11d,11
+        jb      NEAR $L$aesenclast6
+        movups  xmm0,XMMWORD[64+rcx]
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[80+rcx]
+DB      102,15,56,220,208
+        je      NEAR $L$aesenclast6
+        movups  xmm0,XMMWORD[96+rcx]
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[112+rcx]
+DB      102,15,56,220,208
+$L$aesenclast6:
+DB      102,15,56,221,209
+        movups  xmm0,XMMWORD[((16-112))+rcx]
+        movdqa  xmm10,xmm8
+DB      69,15,58,204,193,0
+DB      68,15,56,200,212
+        movups  xmm14,XMMWORD[16+rdi]
+        xorps   xmm14,xmm15
+        movups  XMMWORD[rdi*1+rsi],xmm2
+        xorps   xmm2,xmm14
+        movups  xmm1,XMMWORD[((-80))+rcx]
+DB      102,15,56,220,208
+DB      15,56,202,236
+        pxor    xmm6,xmm4
+DB      15,56,201,220
+        movups  xmm0,XMMWORD[((-64))+rcx]
+DB      102,15,56,220,209
+        movdqa  xmm9,xmm8
+DB      69,15,58,204,194,1
+DB      68,15,56,200,205
+        movups  xmm1,XMMWORD[((-48))+rcx]
+DB      102,15,56,220,208
+DB      15,56,202,245
+        pxor    xmm3,xmm5
+DB      15,56,201,229
+        movups  xmm0,XMMWORD[((-32))+rcx]
+DB      102,15,56,220,209
+        movdqa  xmm10,xmm8
+DB      69,15,58,204,193,1
+DB      68,15,56,200,214
+        movups  xmm1,XMMWORD[((-16))+rcx]
+DB      102,15,56,220,208
+DB      15,56,202,222
+        pxor    xmm4,xmm6
+DB      15,56,201,238
+        movups  xmm0,XMMWORD[rcx]
+DB      102,15,56,220,209
+        movdqa  xmm9,xmm8
+DB      69,15,58,204,194,1
+DB      68,15,56,200,203
+        movups  xmm1,XMMWORD[16+rcx]
+DB      102,15,56,220,208
+DB      15,56,202,227
+        pxor    xmm5,xmm3
+DB      15,56,201,243
+        movups  xmm0,XMMWORD[32+rcx]
+DB      102,15,56,220,209
+        movdqa  xmm10,xmm8
+DB      69,15,58,204,193,1
+DB      68,15,56,200,212
+        movups  xmm1,XMMWORD[48+rcx]
+DB      102,15,56,220,208
+DB      15,56,202,236
+        pxor    xmm6,xmm4
+DB      15,56,201,220
+        cmp     r11d,11
+        jb      NEAR $L$aesenclast7
+        movups  xmm0,XMMWORD[64+rcx]
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[80+rcx]
+DB      102,15,56,220,208
+        je      NEAR $L$aesenclast7
+        movups  xmm0,XMMWORD[96+rcx]
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[112+rcx]
+DB      102,15,56,220,208
+$L$aesenclast7:
+DB      102,15,56,221,209
+        movups  xmm0,XMMWORD[((16-112))+rcx]
+        movdqa  xmm9,xmm8
+DB      69,15,58,204,194,1
+DB      68,15,56,200,205
+        movups  xmm14,XMMWORD[32+rdi]
+        xorps   xmm14,xmm15
+        movups  XMMWORD[16+rdi*1+rsi],xmm2
+        xorps   xmm2,xmm14
+        movups  xmm1,XMMWORD[((-80))+rcx]
+DB      102,15,56,220,208
+DB      15,56,202,245
+        pxor    xmm3,xmm5
+DB      15,56,201,229
+        movups  xmm0,XMMWORD[((-64))+rcx]
+DB      102,15,56,220,209
+        movdqa  xmm10,xmm8
+DB      69,15,58,204,193,2
+DB      68,15,56,200,214
+        movups  xmm1,XMMWORD[((-48))+rcx]
+DB      102,15,56,220,208
+DB      15,56,202,222
+        pxor    xmm4,xmm6
+DB      15,56,201,238
+        movups  xmm0,XMMWORD[((-32))+rcx]
+DB      102,15,56,220,209
+        movdqa  xmm9,xmm8
+DB      69,15,58,204,194,2
+DB      68,15,56,200,203
+        movups  xmm1,XMMWORD[((-16))+rcx]
+DB      102,15,56,220,208
+DB      15,56,202,227
+        pxor    xmm5,xmm3
+DB      15,56,201,243
+        movups  xmm0,XMMWORD[rcx]
+DB      102,15,56,220,209
+        movdqa  xmm10,xmm8
+DB      69,15,58,204,193,2
+DB      68,15,56,200,212
+        movups  xmm1,XMMWORD[16+rcx]
+DB      102,15,56,220,208
+DB      15,56,202,236
+        pxor    xmm6,xmm4
+DB      15,56,201,220
+        movups  xmm0,XMMWORD[32+rcx]
+DB      102,15,56,220,209
+        movdqa  xmm9,xmm8
+DB      69,15,58,204,194,2
+DB      68,15,56,200,205
+        movups  xmm1,XMMWORD[48+rcx]
+DB      102,15,56,220,208
+DB      15,56,202,245
+        pxor    xmm3,xmm5
+DB      15,56,201,229
+        cmp     r11d,11
+        jb      NEAR $L$aesenclast8
+        movups  xmm0,XMMWORD[64+rcx]
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[80+rcx]
+DB      102,15,56,220,208
+        je      NEAR $L$aesenclast8
+        movups  xmm0,XMMWORD[96+rcx]
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[112+rcx]
+DB      102,15,56,220,208
+$L$aesenclast8:
+DB      102,15,56,221,209
+        movups  xmm0,XMMWORD[((16-112))+rcx]
+        movdqa  xmm10,xmm8
+DB      69,15,58,204,193,2
+DB      68,15,56,200,214
+        movups  xmm14,XMMWORD[48+rdi]
+        xorps   xmm14,xmm15
+        movups  XMMWORD[32+rdi*1+rsi],xmm2
+        xorps   xmm2,xmm14
+        movups  xmm1,XMMWORD[((-80))+rcx]
+DB      102,15,56,220,208
+DB      15,56,202,222
+        pxor    xmm4,xmm6
+DB      15,56,201,238
+        movups  xmm0,XMMWORD[((-64))+rcx]
+DB      102,15,56,220,209
+        movdqa  xmm9,xmm8
+DB      69,15,58,204,194,3
+DB      68,15,56,200,203
+        movups  xmm1,XMMWORD[((-48))+rcx]
+DB      102,15,56,220,208
+DB      15,56,202,227
+        pxor    xmm5,xmm3
+DB      15,56,201,243
+        movups  xmm0,XMMWORD[((-32))+rcx]
+DB      102,15,56,220,209
+        movdqa  xmm10,xmm8
+DB      69,15,58,204,193,3
+DB      68,15,56,200,212
+DB      15,56,202,236
+        pxor    xmm6,xmm4
+        movups  xmm1,XMMWORD[((-16))+rcx]
+DB      102,15,56,220,208
+        movdqa  xmm9,xmm8
+DB      69,15,58,204,194,3
+DB      68,15,56,200,205
+DB      15,56,202,245
+        movups  xmm0,XMMWORD[rcx]
+DB      102,15,56,220,209
+        movdqa  xmm5,xmm12
+        movdqa  xmm10,xmm8
+DB      69,15,58,204,193,3
+DB      68,15,56,200,214
+        movups  xmm1,XMMWORD[16+rcx]
+DB      102,15,56,220,208
+        movdqa  xmm9,xmm8
+DB      69,15,58,204,194,3
+DB      68,15,56,200,205
+        movups  xmm0,XMMWORD[32+rcx]
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[48+rcx]
+DB      102,15,56,220,208
+        cmp     r11d,11
+        jb      NEAR $L$aesenclast9
+        movups  xmm0,XMMWORD[64+rcx]
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[80+rcx]
+DB      102,15,56,220,208
+        je      NEAR $L$aesenclast9
+        movups  xmm0,XMMWORD[96+rcx]
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[112+rcx]
+DB      102,15,56,220,208
+$L$aesenclast9:
+DB      102,15,56,221,209
+        movups  xmm0,XMMWORD[((16-112))+rcx]
+        dec     rdx
+
+        paddd   xmm8,xmm11
+        movups  XMMWORD[48+rdi*1+rsi],xmm2
+        lea     rdi,[64+rdi]
+        jnz     NEAR $L$oop_shaext
+
+        pshufd  xmm8,xmm8,27
+        pshufd  xmm9,xmm9,27
+        movups  XMMWORD[r8],xmm2
+        movdqu  XMMWORD[r9],xmm8
+        movd    DWORD[16+r9],xmm9
+        movaps  xmm6,XMMWORD[((-8-160))+rax]
+        movaps  xmm7,XMMWORD[((-8-144))+rax]
+        movaps  xmm8,XMMWORD[((-8-128))+rax]
+        movaps  xmm9,XMMWORD[((-8-112))+rax]
+        movaps  xmm10,XMMWORD[((-8-96))+rax]
+        movaps  xmm11,XMMWORD[((-8-80))+rax]
+        movaps  xmm12,XMMWORD[((-8-64))+rax]
+        movaps  xmm13,XMMWORD[((-8-48))+rax]
+        movaps  xmm14,XMMWORD[((-8-32))+rax]
+        movaps  xmm15,XMMWORD[((-8-16))+rax]
+        mov     rsp,rax
+$L$epilogue_shaext:
+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
+        mov     rsi,QWORD[16+rsp]
+        DB      0F3h,0C3h               ;repret
+
+$L$SEH_end_aesni_cbc_sha1_enc_shaext:
+EXTERN  __imp_RtlVirtualUnwind
+
+ALIGN   16
+ssse3_handler:
+        push    rsi
+        push    rdi
+        push    rbx
+        push    rbp
+        push    r12
+        push    r13
+        push    r14
+        push    r15
+        pushfq
+        sub     rsp,64
+
+        mov     rax,QWORD[120+r8]
+        mov     rbx,QWORD[248+r8]
+
+        mov     rsi,QWORD[8+r9]
+        mov     r11,QWORD[56+r9]
+
+        mov     r10d,DWORD[r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jb      NEAR $L$common_seh_tail
+
+        mov     rax,QWORD[152+r8]
+
+        mov     r10d,DWORD[4+r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jae     NEAR $L$common_seh_tail
+        lea     r10,[aesni_cbc_sha1_enc_shaext]
+        cmp     rbx,r10
+        jb      NEAR $L$seh_no_shaext
+
+        lea     rsi,[rax]
+        lea     rdi,[512+r8]
+        mov     ecx,20
+        DD      0xa548f3fc
+        lea     rax,[168+rax]
+        jmp     NEAR $L$common_seh_tail
+$L$seh_no_shaext:
+        lea     rsi,[96+rax]
+        lea     rdi,[512+r8]
+        mov     ecx,20
+        DD      0xa548f3fc
+        lea     rax,[264+rax]
+
+        mov     r15,QWORD[rax]
+        mov     r14,QWORD[8+rax]
+        mov     r13,QWORD[16+rax]
+        mov     r12,QWORD[24+rax]
+        mov     rbp,QWORD[32+rax]
+        mov     rbx,QWORD[40+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$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[40+r9]
+        mov     rsi,r8
+        mov     ecx,154
+        DD      0xa548f3fc
+
+        mov     rsi,r9
+        xor     rcx,rcx
+        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
+        popfq
+        pop     r15
+        pop     r14
+        pop     r13
+        pop     r12
+        pop     rbp
+        pop     rbx
+        pop     rdi
+        pop     rsi
+        DB      0F3h,0C3h               ;repret
+
+
+section .pdata rdata align=4
+ALIGN   4
+        DD      $L$SEH_begin_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
+        DD      $L$SEH_end_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
+        DD      $L$SEH_info_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
+        DD      $L$SEH_begin_aesni_cbc_sha1_enc_shaext wrt ..imagebase
+        DD      $L$SEH_end_aesni_cbc_sha1_enc_shaext wrt ..imagebase
+        DD      $L$SEH_info_aesni_cbc_sha1_enc_shaext wrt ..imagebase
+section .xdata rdata align=8
+ALIGN   8
+$L$SEH_info_aesni_cbc_sha1_enc_ssse3:
+DB      9,0,0,0
+        DD      ssse3_handler wrt ..imagebase
+        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase
+$L$SEH_info_aesni_cbc_sha1_enc_shaext:
+DB      9,0,0,0
+        DD      ssse3_handler wrt ..imagebase
+        DD      $L$prologue_shaext wrt ..imagebase,$L$epilogue_shaext wrt ..imagebase
diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-x86_64.nasm
new file mode 100644
index 0000000000..f5c250b904
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-x86_64.nasm
@@ -0,0 +1,78 @@
+; WARNING: do not edit!
+; Generated from openssl/crypto/aes/asm/aesni-sha256-x86_64.pl
+;
+; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
+;
+; Licensed under the OpenSSL license (the "License").  You may not use
+; this file except in compliance with the License.  You can obtain a copy
+; in the file LICENSE in the source distribution or at
+; https://www.openssl.org/source/license.html
+
+default rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section .text code align=64
+
+
+EXTERN  OPENSSL_ia32cap_P
+global  aesni_cbc_sha256_enc
+
+ALIGN   16
+aesni_cbc_sha256_enc:
+
+        xor     eax,eax
+        cmp     rcx,0
+        je      NEAR $L$probe
+        ud2
+$L$probe:
+        DB      0F3h,0C3h               ;repret
+
+
+
+ALIGN   64
+
+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      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
+        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
+        DD      0,0,0,0,0,0,0,0,-1,-1,-1,-1
+        DD      0,0,0,0,0,0,0,0
+DB      65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54
+DB      32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95
+DB      54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98
+DB      121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108
+DB      46,111,114,103,62,0
+ALIGN   64
diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
new file mode 100644
index 0000000000..57ee23ea8c
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
@@ -0,0 +1,5103 @@
+; WARNING: do not edit!
+; Generated from openssl/crypto/aes/asm/aesni-x86_64.pl
+;
+; Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved.
+;
+; Licensed under the OpenSSL license (the "License").  You may not use
+; this file except in compliance with the License.  You can obtain a copy
+; in the file LICENSE in the source distribution or at
+; https://www.openssl.org/source/license.html
+
+default rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section .text code align=64
+
+EXTERN  OPENSSL_ia32cap_P
+global  aesni_encrypt
+
+ALIGN   16
+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:
+DB      102,15,56,220,209
+        dec     eax
+        movups  xmm1,XMMWORD[r8]
+        lea     r8,[16+r8]
+        jnz     NEAR $L$oop_enc1_1
+DB      102,15,56,221,209
+        pxor    xmm0,xmm0
+        pxor    xmm1,xmm1
+        movups  XMMWORD[rdx],xmm2
+        pxor    xmm2,xmm2
+        DB      0F3h,0C3h               ;repret
+
+
+
+global  aesni_decrypt
+
+ALIGN   16
+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:
+DB      102,15,56,222,209
+        dec     eax
+        movups  xmm1,XMMWORD[r8]
+        lea     r8,[16+r8]
+        jnz     NEAR $L$oop_dec1_2
+DB      102,15,56,223,209
+        pxor    xmm0,xmm0
+        pxor    xmm1,xmm1
+        movups  XMMWORD[rdx],xmm2
+        pxor    xmm2,xmm2
+        DB      0F3h,0C3h               ;repret
+
+
+
+ALIGN   16
+_aesni_encrypt2:
+
+        movups  xmm0,XMMWORD[rcx]
+        shl     eax,4
+        movups  xmm1,XMMWORD[16+rcx]
+        xorps   xmm2,xmm0
+        xorps   xmm3,xmm0
+        movups  xmm0,XMMWORD[32+rcx]
+        lea     rcx,[32+rax*1+rcx]
+        neg     rax
+        add     rax,16
+
+$L$enc_loop2:
+DB      102,15,56,220,209
+DB      102,15,56,220,217
+        movups  xmm1,XMMWORD[rax*1+rcx]
+        add     rax,32
+DB      102,15,56,220,208
+DB      102,15,56,220,216
+        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
+
+
+
+ALIGN   16
+_aesni_decrypt2:
+
+        movups  xmm0,XMMWORD[rcx]
+        shl     eax,4
+        movups  xmm1,XMMWORD[16+rcx]
+        xorps   xmm2,xmm0
+        xorps   xmm3,xmm0
+        movups  xmm0,XMMWORD[32+rcx]
+        lea     rcx,[32+rax*1+rcx]
+        neg     rax
+        add     rax,16
+
+$L$dec_loop2:
+DB      102,15,56,222,209
+DB      102,15,56,222,217
+        movups  xmm1,XMMWORD[rax*1+rcx]
+        add     rax,32
+DB      102,15,56,222,208
+DB      102,15,56,222,216
+        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
+
+
+
+ALIGN   16
+_aesni_encrypt3:
+
+        movups  xmm0,XMMWORD[rcx]
+        shl     eax,4
+        movups  xmm1,XMMWORD[16+rcx]
+        xorps   xmm2,xmm0
+        xorps   xmm3,xmm0
+        xorps   xmm4,xmm0
+        movups  xmm0,XMMWORD[32+rcx]
+        lea     rcx,[32+rax*1+rcx]
+        neg     rax
+        add     rax,16
+
+$L$enc_loop3:
+DB      102,15,56,220,209
+DB      102,15,56,220,217
+DB      102,15,56,220,225
+        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[((-16))+rax*1+rcx]
+        jnz     NEAR $L$enc_loop3
+
+DB      102,15,56,220,209
+DB      102,15,56,220,217
+DB      102,15,56,220,225
+DB      102,15,56,221,208
+DB      102,15,56,221,216
+DB      102,15,56,221,224
+        DB      0F3h,0C3h               ;repret
+
+
+
+ALIGN   16
+_aesni_decrypt3:
+
+        movups  xmm0,XMMWORD[rcx]
+        shl     eax,4
+        movups  xmm1,XMMWORD[16+rcx]
+        xorps   xmm2,xmm0
+        xorps   xmm3,xmm0
+        xorps   xmm4,xmm0
+        movups  xmm0,XMMWORD[32+rcx]
+        lea     rcx,[32+rax*1+rcx]
+        neg     rax
+        add     rax,16
+
+$L$dec_loop3:
+DB      102,15,56,222,209
+DB      102,15,56,222,217
+DB      102,15,56,222,225
+        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[((-16))+rax*1+rcx]
+        jnz     NEAR $L$dec_loop3
+
+DB      102,15,56,222,209
+DB      102,15,56,222,217
+DB      102,15,56,222,225
+DB      102,15,56,223,208
+DB      102,15,56,223,216
+DB      102,15,56,223,224
+        DB      0F3h,0C3h               ;repret
+
+
+
+ALIGN   16
+_aesni_encrypt4:
+
+        movups  xmm0,XMMWORD[rcx]
+        shl     eax,4
+        movups  xmm1,XMMWORD[16+rcx]
+        xorps   xmm2,xmm0
+        xorps   xmm3,xmm0
+        xorps   xmm4,xmm0
+        xorps   xmm5,xmm0
+        movups  xmm0,XMMWORD[32+rcx]
+        lea     rcx,[32+rax*1+rcx]
+        neg     rax
+DB      0x0f,0x1f,0x00
+        add     rax,16
+
+$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[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[((-16))+rax*1+rcx]
+        jnz     NEAR $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
+DB      102,15,56,221,208
+DB      102,15,56,221,216
+DB      102,15,56,221,224
+DB      102,15,56,221,232
+        DB      0F3h,0C3h               ;repret
+
+
+
+ALIGN   16
+_aesni_decrypt4:
+
+        movups  xmm0,XMMWORD[rcx]
+        shl     eax,4
+        movups  xmm1,XMMWORD[16+rcx]
+        xorps   xmm2,xmm0
+        xorps   xmm3,xmm0
+        xorps   xmm4,xmm0
+        xorps   xmm5,xmm0
+        movups  xmm0,XMMWORD[32+rcx]
+        lea     rcx,[32+rax*1+rcx]
+        neg     rax
+DB      0x0f,0x1f,0x00
+        add     rax,16
+
+$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[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[((-16))+rax*1+rcx]
+        jnz     NEAR $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
+DB      102,15,56,223,208
+DB      102,15,56,223,216
+DB      102,15,56,223,224
+DB      102,15,56,223,232
+        DB      0F3h,0C3h               ;repret
+
+
+
+ALIGN   16
+_aesni_encrypt6:
+
+        movups  xmm0,XMMWORD[rcx]
+        shl     eax,4
+        movups  xmm1,XMMWORD[16+rcx]
+        xorps   xmm2,xmm0
+        pxor    xmm3,xmm0
+        pxor    xmm4,xmm0
+DB      102,15,56,220,209
+        lea     rcx,[32+rax*1+rcx]
+        neg     rax
+DB      102,15,56,220,217
+        pxor    xmm5,xmm0
+        pxor    xmm6,xmm0
+DB      102,15,56,220,225
+        pxor    xmm7,xmm0
+        movups  xmm0,XMMWORD[rax*1+rcx]
+        add     rax,16
+        jmp     NEAR $L$enc_loop6_enter
+ALIGN   16
+$L$enc_loop6:
+DB      102,15,56,220,209
+DB      102,15,56,220,217
+DB      102,15,56,220,225
+$L$enc_loop6_enter:
+DB      102,15,56,220,233
+DB      102,15,56,220,241
+DB      102,15,56,220,249
+        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
+DB      102,15,56,220,240
+DB      102,15,56,220,248
+        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
+        jnz     NEAR $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
+DB      102,15,56,221,208
+DB      102,15,56,221,216
+DB      102,15,56,221,224
+DB      102,15,56,221,232
+DB      102,15,56,221,240
+DB      102,15,56,221,248
+        DB      0F3h,0C3h               ;repret
+
+
+
+ALIGN   16
+_aesni_decrypt6:
+
+        movups  xmm0,XMMWORD[rcx]
+        shl     eax,4
+        movups  xmm1,XMMWORD[16+rcx]
+        xorps   xmm2,xmm0
+        pxor    xmm3,xmm0
+        pxor    xmm4,xmm0
+DB      102,15,56,222,209
+        lea     rcx,[32+rax*1+rcx]
+        neg     rax
+DB      102,15,56,222,217
+        pxor    xmm5,xmm0
+        pxor    xmm6,xmm0
+DB      102,15,56,222,225
+        pxor    xmm7,xmm0
+        movups  xmm0,XMMWORD[rax*1+rcx]
+        add     rax,16
+        jmp     NEAR $L$dec_loop6_enter
+ALIGN   16
+$L$dec_loop6:
+DB      102,15,56,222,209
+DB      102,15,56,222,217
+DB      102,15,56,222,225
+$L$dec_loop6_enter:
+DB      102,15,56,222,233
+DB      102,15,56,222,241
+DB      102,15,56,222,249
+        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
+DB      102,15,56,222,240
+DB      102,15,56,222,248
+        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
+        jnz     NEAR $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
+DB      102,15,56,223,208
+DB      102,15,56,223,216
+DB      102,15,56,223,224
+DB      102,15,56,223,232
+DB      102,15,56,223,240
+DB      102,15,56,223,248
+        DB      0F3h,0C3h               ;repret
+
+
+
+ALIGN   16
+_aesni_encrypt8:
+
+        movups  xmm0,XMMWORD[rcx]
+        shl     eax,4
+        movups  xmm1,XMMWORD[16+rcx]
+        xorps   xmm2,xmm0
+        xorps   xmm3,xmm0
+        pxor    xmm4,xmm0
+        pxor    xmm5,xmm0
+        pxor    xmm6,xmm0
+        lea     rcx,[32+rax*1+rcx]
+        neg     rax
+DB      102,15,56,220,209
+        pxor    xmm7,xmm0
+        pxor    xmm8,xmm0
+DB      102,15,56,220,217
+        pxor    xmm9,xmm0
+        movups  xmm0,XMMWORD[rax*1+rcx]
+        add     rax,16
+        jmp     NEAR $L$enc_loop8_inner
+ALIGN   16
+$L$enc_loop8:
+DB      102,15,56,220,209
+DB      102,15,56,220,217
+$L$enc_loop8_inner:
+DB      102,15,56,220,225
+DB      102,15,56,220,233
+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
+$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
+DB      102,15,56,220,224
+DB      102,15,56,220,232
+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[((-16))+rax*1+rcx]
+        jnz     NEAR $L$enc_loop8
+
+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
+DB      102,68,15,56,220,193
+DB      102,68,15,56,220,201
+DB      102,15,56,221,208
+DB      102,15,56,221,216
+DB      102,15,56,221,224
+DB      102,15,56,221,232
+DB      102,15,56,221,240
+DB      102,15,56,221,248
+DB      102,68,15,56,221,192
+DB      102,68,15,56,221,200
+        DB      0F3h,0C3h               ;repret
+
+
+
+ALIGN   16
+_aesni_decrypt8:
+
+        movups  xmm0,XMMWORD[rcx]
+        shl     eax,4
+        movups  xmm1,XMMWORD[16+rcx]
+        xorps   xmm2,xmm0
+        xorps   xmm3,xmm0
+        pxor    xmm4,xmm0
+        pxor    xmm5,xmm0
+        pxor    xmm6,xmm0
+        lea     rcx,[32+rax*1+rcx]
+        neg     rax
+DB      102,15,56,222,209
+        pxor    xmm7,xmm0
+        pxor    xmm8,xmm0
+DB      102,15,56,222,217
+        pxor    xmm9,xmm0
+        movups  xmm0,XMMWORD[rax*1+rcx]
+        add     rax,16
+        jmp     NEAR $L$dec_loop8_inner
+ALIGN   16
+$L$dec_loop8:
+DB      102,15,56,222,209
+DB      102,15,56,222,217
+$L$dec_loop8_inner:
+DB      102,15,56,222,225
+DB      102,15,56,222,233
+DB      102,15,56,222,241
+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[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
+DB      102,15,56,222,240
+DB      102,15,56,222,248
+DB      102,68,15,56,222,192
+DB      102,68,15,56,222,200
+        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
+        jnz     NEAR $L$dec_loop8
+
+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
+DB      102,68,15,56,222,193
+DB      102,68,15,56,222,201
+DB      102,15,56,223,208
+DB      102,15,56,223,216
+DB      102,15,56,223,224
+DB      102,15,56,223,232
+DB      102,15,56,223,240
+DB      102,15,56,223,248
+DB      102,68,15,56,223,192
+DB      102,68,15,56,223,200
+        DB      0F3h,0C3h               ;repret
+
+
+global  aesni_ecb_encrypt
+
+ALIGN   16
+aesni_ecb_encrypt:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_aesni_ecb_encrypt:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+        mov     rcx,r9
+        mov     r8,QWORD[40+rsp]
+
+
+
+        lea     rsp,[((-88))+rsp]
+        movaps  XMMWORD[rsp],xmm6
+        movaps  XMMWORD[16+rsp],xmm7
+        movaps  XMMWORD[32+rsp],xmm8
+        movaps  XMMWORD[48+rsp],xmm9
+$L$ecb_enc_body:
+        and     rdx,-16
+        jz      NEAR $L$ecb_ret
+
+        mov     eax,DWORD[240+rcx]
+        movups  xmm0,XMMWORD[rcx]
+        mov     r11,rcx
+        mov     r10d,eax
+        test    r8d,r8d
+        jz      NEAR $L$ecb_decrypt
+
+        cmp     rdx,0x80
+        jb      NEAR $L$ecb_enc_tail
+
+        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[rsi],xmm2
+        mov     rcx,r11
+        movdqu  xmm2,XMMWORD[rdi]
+        mov     eax,r10d
+        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,0x80
+        jnc     NEAR $L$ecb_enc_loop8
+
+        movups  XMMWORD[rsi],xmm2
+        mov     rcx,r11
+        movups  XMMWORD[16+rsi],xmm3
+        mov     eax,r10d
+        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[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]
+        xorps   xmm9,xmm9
+        call    _aesni_encrypt8
+        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[rcx]
+        movups  xmm1,XMMWORD[16+rcx]
+        lea     rcx,[32+rcx]
+        xorps   xmm2,xmm0
+$L$oop_enc1_3:
+DB      102,15,56,220,209
+        dec     eax
+        movups  xmm1,XMMWORD[rcx]
+        lea     rcx,[16+rcx]
+        jnz     NEAR $L$oop_enc1_3
+DB      102,15,56,221,209
+        movups  XMMWORD[rsi],xmm2
+        jmp     NEAR $L$ecb_ret
+ALIGN   16
+$L$ecb_enc_two:
+        call    _aesni_encrypt2
+        movups  XMMWORD[rsi],xmm2
+        movups  XMMWORD[16+rsi],xmm3
+        jmp     NEAR $L$ecb_ret
+ALIGN   16
+$L$ecb_enc_three:
+        call    _aesni_encrypt3
+        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:
+        call    _aesni_encrypt4
+        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:
+        xorps   xmm7,xmm7
+        call    _aesni_encrypt6
+        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:
+        call    _aesni_encrypt6
+        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,0x80
+        jb      NEAR $L$ecb_dec_tail
+
+        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[rsi],xmm2
+        mov     rcx,r11
+        movdqu  xmm2,XMMWORD[rdi]
+        mov     eax,r10d
+        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[r11]
+        sub     rdx,0x80
+        jnc     NEAR $L$ecb_dec_loop8
+
+        movups  XMMWORD[rsi],xmm2
+        pxor    xmm2,xmm2
+        mov     rcx,r11
+        movups  XMMWORD[16+rsi],xmm3
+        pxor    xmm3,xmm3
+        mov     eax,r10d
+        movups  XMMWORD[32+rsi],xmm4
+        pxor    xmm4,xmm4
+        movups  XMMWORD[48+rsi],xmm5
+        pxor    xmm5,xmm5
+        movups  XMMWORD[64+rsi],xmm6
+        pxor    xmm6,xmm6
+        movups  XMMWORD[80+rsi],xmm7
+        pxor    xmm7,xmm7
+        movups  XMMWORD[96+rsi],xmm8
+        pxor    xmm8,xmm8
+        movups  XMMWORD[112+rsi],xmm9
+        pxor    xmm9,xmm9
+        lea     rsi,[128+rsi]
+        add     rdx,0x80
+        jz      NEAR $L$ecb_ret
+
+$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]
+        xorps   xmm9,xmm9
+        call    _aesni_decrypt8
+        movups  XMMWORD[rsi],xmm2
+        pxor    xmm2,xmm2
+        movups  XMMWORD[16+rsi],xmm3
+        pxor    xmm3,xmm3
+        movups  XMMWORD[32+rsi],xmm4
+        pxor    xmm4,xmm4
+        movups  XMMWORD[48+rsi],xmm5
+        pxor    xmm5,xmm5
+        movups  XMMWORD[64+rsi],xmm6
+        pxor    xmm6,xmm6
+        movups  XMMWORD[80+rsi],xmm7
+        pxor    xmm7,xmm7
+        movups  XMMWORD[96+rsi],xmm8
+        pxor    xmm8,xmm8
+        pxor    xmm9,xmm9
+        jmp     NEAR $L$ecb_ret
+ALIGN   16
+$L$ecb_dec_one:
+        movups  xmm0,XMMWORD[rcx]
+        movups  xmm1,XMMWORD[16+rcx]
+        lea     rcx,[32+rcx]
+        xorps   xmm2,xmm0
+$L$oop_dec1_4:
+DB      102,15,56,222,209
+        dec     eax
+        movups  xmm1,XMMWORD[rcx]
+        lea     rcx,[16+rcx]
+        jnz     NEAR $L$oop_dec1_4
+DB      102,15,56,223,209
+        movups  XMMWORD[rsi],xmm2
+        pxor    xmm2,xmm2
+        jmp     NEAR $L$ecb_ret
+ALIGN   16
+$L$ecb_dec_two:
+        call    _aesni_decrypt2
+        movups  XMMWORD[rsi],xmm2
+        pxor    xmm2,xmm2
+        movups  XMMWORD[16+rsi],xmm3
+        pxor    xmm3,xmm3
+        jmp     NEAR $L$ecb_ret
+ALIGN   16
+$L$ecb_dec_three:
+        call    _aesni_decrypt3
+        movups  XMMWORD[rsi],xmm2
+        pxor    xmm2,xmm2
+        movups  XMMWORD[16+rsi],xmm3
+        pxor    xmm3,xmm3
+        movups  XMMWORD[32+rsi],xmm4
+        pxor    xmm4,xmm4
+        jmp     NEAR $L$ecb_ret
+ALIGN   16
+$L$ecb_dec_four:
+        call    _aesni_decrypt4
+        movups  XMMWORD[rsi],xmm2
+        pxor    xmm2,xmm2
+        movups  XMMWORD[16+rsi],xmm3
+        pxor    xmm3,xmm3
+        movups  XMMWORD[32+rsi],xmm4
+        pxor    xmm4,xmm4
+        movups  XMMWORD[48+rsi],xmm5
+        pxor    xmm5,xmm5
+        jmp     NEAR $L$ecb_ret
+ALIGN   16
+$L$ecb_dec_five:
+        xorps   xmm7,xmm7
+        call    _aesni_decrypt6
+        movups  XMMWORD[rsi],xmm2
+        pxor    xmm2,xmm2
+        movups  XMMWORD[16+rsi],xmm3
+        pxor    xmm3,xmm3
+        movups  XMMWORD[32+rsi],xmm4
+        pxor    xmm4,xmm4
+        movups  XMMWORD[48+rsi],xmm5
+        pxor    xmm5,xmm5
+        movups  XMMWORD[64+rsi],xmm6
+        pxor    xmm6,xmm6
+        pxor    xmm7,xmm7
+        jmp     NEAR $L$ecb_ret
+ALIGN   16
+$L$ecb_dec_six:
+        call    _aesni_decrypt6
+        movups  XMMWORD[rsi],xmm2
+        pxor    xmm2,xmm2
+        movups  XMMWORD[16+rsi],xmm3
+        pxor    xmm3,xmm3
+        movups  XMMWORD[32+rsi],xmm4
+        pxor    xmm4,xmm4
+        movups  XMMWORD[48+rsi],xmm5
+        pxor    xmm5,xmm5
+        movups  XMMWORD[64+rsi],xmm6
+        pxor    xmm6,xmm6
+        movups  XMMWORD[80+rsi],xmm7
+        pxor    xmm7,xmm7
+
+$L$ecb_ret:
+        xorps   xmm0,xmm0
+        pxor    xmm1,xmm1
+        movaps  xmm6,XMMWORD[rsp]
+        movaps  XMMWORD[rsp],xmm0
+        movaps  xmm7,XMMWORD[16+rsp]
+        movaps  XMMWORD[16+rsp],xmm0
+        movaps  xmm8,XMMWORD[32+rsp]
+        movaps  XMMWORD[32+rsp],xmm0
+        movaps  xmm9,XMMWORD[48+rsp]
+        movaps  XMMWORD[48+rsp],xmm0
+        lea     rsp,[88+rsp]
+$L$ecb_enc_ret:
+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
+        mov     rsi,QWORD[16+rsp]
+        DB      0F3h,0C3h               ;repret
+
+$L$SEH_end_aesni_ecb_encrypt:
+global  aesni_ccm64_encrypt_blocks
+
+ALIGN   16
+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:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+        mov     rcx,r9
+        mov     r8,QWORD[40+rsp]
+        mov     r9,QWORD[48+rsp]
+
+
+
+        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,[rcx]
+        movdqu  xmm3,XMMWORD[r9]
+        movdqa  xmm2,xmm6
+        lea     rcx,[32+rax*1+rcx]
+DB      102,15,56,0,247
+        sub     r10,rax
+        jmp     NEAR $L$ccm64_enc_outer
+ALIGN   16
+$L$ccm64_enc_outer:
+        movups  xmm0,XMMWORD[r11]
+        mov     rax,r10
+        movups  xmm8,XMMWORD[rdi]
+
+        xorps   xmm2,xmm0
+        movups  xmm1,XMMWORD[16+r11]
+        xorps   xmm0,xmm8
+        xorps   xmm3,xmm0
+        movups  xmm0,XMMWORD[32+r11]
+
+$L$ccm64_enc2_loop:
+DB      102,15,56,220,209
+DB      102,15,56,220,217
+        movups  xmm1,XMMWORD[rax*1+rcx]
+        add     rax,32
+DB      102,15,56,220,208
+DB      102,15,56,220,216
+        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
+        dec     rdx
+DB      102,15,56,221,208
+DB      102,15,56,221,216
+
+        lea     rdi,[16+rdi]
+        xorps   xmm8,xmm2
+        movdqa  xmm2,xmm6
+        movups  XMMWORD[rsi],xmm8
+DB      102,15,56,0,215
+        lea     rsi,[16+rsi]
+        jnz     NEAR $L$ccm64_enc_outer
+
+        pxor    xmm0,xmm0
+        pxor    xmm1,xmm1
+        pxor    xmm2,xmm2
+        movups  XMMWORD[r9],xmm3
+        pxor    xmm3,xmm3
+        pxor    xmm8,xmm8
+        pxor    xmm6,xmm6
+        movaps  xmm6,XMMWORD[rsp]
+        movaps  XMMWORD[rsp],xmm0
+        movaps  xmm7,XMMWORD[16+rsp]
+        movaps  XMMWORD[16+rsp],xmm0
+        movaps  xmm8,XMMWORD[32+rsp]
+        movaps  XMMWORD[32+rsp],xmm0
+        movaps  xmm9,XMMWORD[48+rsp]
+        movaps  XMMWORD[48+rsp],xmm0
+        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:
+global  aesni_ccm64_decrypt_blocks
+
+ALIGN   16
+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:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+        mov     rcx,r9
+        mov     r8,QWORD[40+rsp]
+        mov     r9,QWORD[48+rsp]
+
+
+
+        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[rcx]
+        movups  xmm1,XMMWORD[16+rcx]
+        lea     rcx,[32+rcx]
+        xorps   xmm2,xmm0
+$L$oop_enc1_5:
+DB      102,15,56,220,209
+        dec     eax
+        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[rdi]
+        paddq   xmm6,xmm9
+        lea     rdi,[16+rdi]
+        sub     rax,r10
+        lea     rcx,[32+r10*1+r11]
+        mov     r10,rax
+        jmp     NEAR $L$ccm64_dec_outer
+ALIGN   16
+$L$ccm64_dec_outer:
+        xorps   xmm8,xmm2
+        movdqa  xmm2,xmm6
+        movups  XMMWORD[rsi],xmm8
+        lea     rsi,[16+rsi]
+DB      102,15,56,0,215
+
+        sub     rdx,1
+        jz      NEAR $L$ccm64_dec_break
+
+        movups  xmm0,XMMWORD[r11]
+        mov     rax,r10
+        movups  xmm1,XMMWORD[16+r11]
+        xorps   xmm8,xmm0
+        xorps   xmm2,xmm0
+        xorps   xmm3,xmm8
+        movups  xmm0,XMMWORD[32+r11]
+        jmp     NEAR $L$ccm64_dec2_loop
+ALIGN   16
+$L$ccm64_dec2_loop:
+DB      102,15,56,220,209
+DB      102,15,56,220,217
+        movups  xmm1,XMMWORD[rax*1+rcx]
+        add     rax,32
+DB      102,15,56,220,208
+DB      102,15,56,220,216
+        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,[16+rdi]
+        jmp     NEAR $L$ccm64_dec_outer
+
+ALIGN   16
+$L$ccm64_dec_break:
+
+        mov     eax,DWORD[240+r11]
+        movups  xmm0,XMMWORD[r11]
+        movups  xmm1,XMMWORD[16+r11]
+        xorps   xmm8,xmm0
+        lea     r11,[32+r11]
+        xorps   xmm3,xmm8
+$L$oop_enc1_6:
+DB      102,15,56,220,217
+        dec     eax
+        movups  xmm1,XMMWORD[r11]
+        lea     r11,[16+r11]
+        jnz     NEAR $L$oop_enc1_6
+DB      102,15,56,221,217
+        pxor    xmm0,xmm0
+        pxor    xmm1,xmm1
+        pxor    xmm2,xmm2
+        movups  XMMWORD[r9],xmm3
+        pxor    xmm3,xmm3
+        pxor    xmm8,xmm8
+        pxor    xmm6,xmm6
+        movaps  xmm6,XMMWORD[rsp]
+        movaps  XMMWORD[rsp],xmm0
+        movaps  xmm7,XMMWORD[16+rsp]
+        movaps  XMMWORD[16+rsp],xmm0
+        movaps  xmm8,XMMWORD[32+rsp]
+        movaps  XMMWORD[32+rsp],xmm0
+        movaps  xmm9,XMMWORD[48+rsp]
+        movaps  XMMWORD[48+rsp],xmm0
+        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:
+global  aesni_ctr32_encrypt_blocks
+
+ALIGN   16
+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:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+        mov     rcx,r9
+        mov     r8,QWORD[40+rsp]
+
+
+
+        cmp     rdx,1
+        jne     NEAR $L$ctr32_bulk
+
+
+
+        movups  xmm2,XMMWORD[r8]
+        movups  xmm3,XMMWORD[rdi]
+        mov     edx,DWORD[240+rcx]
+        movups  xmm0,XMMWORD[rcx]
+        movups  xmm1,XMMWORD[16+rcx]
+        lea     rcx,[32+rcx]
+        xorps   xmm2,xmm0
+$L$oop_enc1_7:
+DB      102,15,56,220,209
+        dec     edx
+        movups  xmm1,XMMWORD[rcx]
+        lea     rcx,[16+rcx]
+        jnz     NEAR $L$oop_enc1_7
+DB      102,15,56,221,209
+        pxor    xmm0,xmm0
+        pxor    xmm1,xmm1
+        xorps   xmm2,xmm3
+        pxor    xmm3,xmm3
+        movups  XMMWORD[rsi],xmm2
+        xorps   xmm2,xmm2
+        jmp     NEAR $L$ctr32_epilogue
+
+ALIGN   16
+$L$ctr32_bulk:
+        lea     r11,[rsp]
+
+        push    rbp
+
+        sub     rsp,288
+        and     rsp,-16
+        movaps  XMMWORD[(-168)+r11],xmm6
+        movaps  XMMWORD[(-152)+r11],xmm7
+        movaps  XMMWORD[(-136)+r11],xmm8
+        movaps  XMMWORD[(-120)+r11],xmm9
+        movaps  XMMWORD[(-104)+r11],xmm10
+        movaps  XMMWORD[(-88)+r11],xmm11
+        movaps  XMMWORD[(-72)+r11],xmm12
+        movaps  XMMWORD[(-56)+r11],xmm13
+        movaps  XMMWORD[(-40)+r11],xmm14
+        movaps  XMMWORD[(-24)+r11],xmm15
+$L$ctr32_body:
+
+
+
+
+        movdqu  xmm2,XMMWORD[r8]
+        movdqu  xmm0,XMMWORD[rcx]
+        mov     r8d,DWORD[12+r8]
+        pxor    xmm2,xmm0
+        mov     ebp,DWORD[12+rcx]
+        movdqa  XMMWORD[rsp],xmm2
+        bswap   r8d
+        movdqa  xmm3,xmm2
+        movdqa  xmm4,xmm2
+        movdqa  xmm5,xmm2
+        movdqa  XMMWORD[64+rsp],xmm2
+        movdqa  XMMWORD[80+rsp],xmm2
+        movdqa  XMMWORD[96+rsp],xmm2
+        mov     r10,rdx
+        movdqa  XMMWORD[112+rsp],xmm2
+
+        lea     rax,[1+r8]
+        lea     rdx,[2+r8]
+        bswap   eax
+        bswap   edx
+        xor     eax,ebp
+        xor     edx,ebp
+DB      102,15,58,34,216,3
+        lea     rax,[3+r8]
+        movdqa  XMMWORD[16+rsp],xmm3
+DB      102,15,58,34,226,3
+        bswap   eax
+        mov     rdx,r10
+        lea     r10,[4+r8]
+        movdqa  XMMWORD[32+rsp],xmm4
+        xor     eax,ebp
+        bswap   r10d
+DB      102,15,58,34,232,3
+        xor     r10d,ebp
+        movdqa  XMMWORD[48+rsp],xmm5
+        lea     r9,[5+r8]
+        mov     DWORD[((64+12))+rsp],r10d
+        bswap   r9d
+        lea     r10,[6+r8]
+        mov     eax,DWORD[240+rcx]
+        xor     r9d,ebp
+        bswap   r10d
+        mov     DWORD[((80+12))+rsp],r9d
+        xor     r10d,ebp
+        lea     r9,[7+r8]
+        mov     DWORD[((96+12))+rsp],r10d
+        bswap   r9d
+        mov     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
+        xor     r9d,ebp
+        and     r10d,71303168
+        mov     DWORD[((112+12))+rsp],r9d
+
+        movups  xmm1,XMMWORD[16+rcx]
+
+        movdqa  xmm6,XMMWORD[64+rsp]
+        movdqa  xmm7,XMMWORD[80+rsp]
+
+        cmp     rdx,8
+        jb      NEAR $L$ctr32_tail
+
+        sub     rdx,6
+        cmp     r10d,4194304
+        je      NEAR $L$ctr32_6x
+
+        lea     rcx,[128+rcx]
+        sub     rdx,2
+        jmp     NEAR $L$ctr32_loop8
+
+ALIGN   16
+$L$ctr32_6x:
+        shl     eax,4
+        mov     r10d,48
+        bswap   ebp
+        lea     rcx,[32+rax*1+rcx]
+        sub     r10,rax
+        jmp     NEAR $L$ctr32_loop6
+
+ALIGN   16
+$L$ctr32_loop6:
+        add     r8d,6
+        movups  xmm0,XMMWORD[((-48))+r10*1+rcx]
+DB      102,15,56,220,209
+        mov     eax,r8d
+        xor     eax,ebp
+DB      102,15,56,220,217
+DB      0x0f,0x38,0xf1,0x44,0x24,12
+        lea     eax,[1+r8]
+DB      102,15,56,220,225
+        xor     eax,ebp
+DB      0x0f,0x38,0xf1,0x44,0x24,28
+DB      102,15,56,220,233
+        lea     eax,[2+r8]
+        xor     eax,ebp
+DB      102,15,56,220,241
+DB      0x0f,0x38,0xf1,0x44,0x24,44
+        lea     eax,[3+r8]
+DB      102,15,56,220,249
+        movups  xmm1,XMMWORD[((-32))+r10*1+rcx]
+        xor     eax,ebp
+
+DB      102,15,56,220,208
+DB      0x0f,0x38,0xf1,0x44,0x24,60
+        lea     eax,[4+r8]
+DB      102,15,56,220,216
+        xor     eax,ebp
+DB      0x0f,0x38,0xf1,0x44,0x24,76
+DB      102,15,56,220,224
+        lea     eax,[5+r8]
+        xor     eax,ebp
+DB      102,15,56,220,232
+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[((-16))+r10*1+rcx]
+
+        call    $L$enc_loop6
+
+        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[rsp]
+        pxor    xmm9,xmm3
+        movaps  xmm3,XMMWORD[16+rsp]
+        pxor    xmm10,xmm4
+        movaps  xmm4,XMMWORD[32+rsp]
+        pxor    xmm11,xmm5
+        movaps  xmm5,XMMWORD[48+rsp]
+        pxor    xmm12,xmm6
+        movaps  xmm6,XMMWORD[64+rsp]
+        pxor    xmm13,xmm7
+        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     NEAR $L$ctr32_loop6
+
+        add     rdx,6
+        jz      NEAR $L$ctr32_done
+
+        lea     eax,[((-48))+r10]
+        lea     rcx,[((-80))+r10*1+rcx]
+        neg     eax
+        shr     eax,4
+        jmp     NEAR $L$ctr32_tail
+
+ALIGN   32
+$L$ctr32_loop8:
+        add     r8d,8
+        movdqa  xmm8,XMMWORD[96+rsp]
+DB      102,15,56,220,209
+        mov     r9d,r8d
+        movdqa  xmm9,XMMWORD[112+rsp]
+DB      102,15,56,220,217
+        bswap   r9d
+        movups  xmm0,XMMWORD[((32-128))+rcx]
+DB      102,15,56,220,225
+        xor     r9d,ebp
+        nop
+DB      102,15,56,220,233
+        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[((48-128))+rcx]
+        bswap   r9d
+DB      102,15,56,220,208
+DB      102,15,56,220,216
+        xor     r9d,ebp
+DB      0x66,0x90
+DB      102,15,56,220,224
+DB      102,15,56,220,232
+        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[((64-128))+rcx]
+        bswap   r9d
+DB      102,15,56,220,209
+DB      102,15,56,220,217
+        xor     r9d,ebp
+DB      0x66,0x90
+DB      102,15,56,220,225
+DB      102,15,56,220,233
+        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[((80-128))+rcx]
+        bswap   r9d
+DB      102,15,56,220,208
+DB      102,15,56,220,216
+        xor     r9d,ebp
+DB      0x66,0x90
+DB      102,15,56,220,224
+DB      102,15,56,220,232
+        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[((96-128))+rcx]
+        bswap   r9d
+DB      102,15,56,220,209
+DB      102,15,56,220,217
+        xor     r9d,ebp
+DB      0x66,0x90
+DB      102,15,56,220,225
+DB      102,15,56,220,233
+        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[((112-128))+rcx]
+        bswap   r9d
+DB      102,15,56,220,208
+DB      102,15,56,220,216
+        xor     r9d,ebp
+DB      0x66,0x90
+DB      102,15,56,220,224
+DB      102,15,56,220,232
+        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[((128-128))+rcx]
+        bswap   r9d
+DB      102,15,56,220,209
+DB      102,15,56,220,217
+        xor     r9d,ebp
+DB      0x66,0x90
+DB      102,15,56,220,225
+DB      102,15,56,220,233
+        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[((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,ebp
+        movdqu  xmm10,XMMWORD[rdi]
+DB      102,15,56,220,232
+        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[((160-128))+rcx]
+
+        jb      NEAR $L$ctr32_enc_done
+
+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
+DB      102,68,15,56,220,193
+DB      102,68,15,56,220,201
+        movups  xmm1,XMMWORD[((176-128))+rcx]
+
+DB      102,15,56,220,208
+DB      102,15,56,220,216
+DB      102,15,56,220,224
+DB      102,15,56,220,232
+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[((192-128))+rcx]
+        je      NEAR $L$ctr32_enc_done
+
+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
+DB      102,68,15,56,220,193
+DB      102,68,15,56,220,201
+        movups  xmm1,XMMWORD[((208-128))+rcx]
+
+DB      102,15,56,220,208
+DB      102,15,56,220,216
+DB      102,15,56,220,224
+DB      102,15,56,220,232
+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[((224-128))+rcx]
+        jmp     NEAR $L$ctr32_enc_done
+
+ALIGN   16
+$L$ctr32_enc_done:
+        movdqu  xmm11,XMMWORD[16+rdi]
+        pxor    xmm10,xmm0
+        movdqu  xmm12,XMMWORD[32+rdi]
+        pxor    xmm11,xmm0
+        movdqu  xmm13,XMMWORD[48+rdi]
+        pxor    xmm12,xmm0
+        movdqu  xmm14,XMMWORD[64+rdi]
+        pxor    xmm13,xmm0
+        movdqu  xmm15,XMMWORD[80+rdi]
+        pxor    xmm14,xmm0
+        pxor    xmm15,xmm0
+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
+DB      102,68,15,56,220,193
+DB      102,68,15,56,220,201
+        movdqu  xmm1,XMMWORD[96+rdi]
+        lea     rdi,[128+rdi]
+
+DB      102,65,15,56,221,210
+        pxor    xmm1,xmm0
+        movdqu  xmm10,XMMWORD[((112-128))+rdi]
+DB      102,65,15,56,221,219
+        pxor    xmm10,xmm0
+        movdqa  xmm11,XMMWORD[rsp]
+DB      102,65,15,56,221,228
+DB      102,65,15,56,221,237
+        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[48+rsp]
+        movdqa  xmm15,XMMWORD[64+rsp]
+DB      102,68,15,56,221,193
+        movdqa  xmm0,XMMWORD[80+rsp]
+        movups  xmm1,XMMWORD[((16-128))+rcx]
+DB      102,69,15,56,221,202
+
+        movups  XMMWORD[rsi],xmm2
+        movdqa  xmm2,xmm11
+        movups  XMMWORD[16+rsi],xmm3
+        movdqa  xmm3,xmm12
+        movups  XMMWORD[32+rsi],xmm4
+        movdqa  xmm4,xmm13
+        movups  XMMWORD[48+rsi],xmm5
+        movdqa  xmm5,xmm14
+        movups  XMMWORD[64+rsi],xmm6
+        movdqa  xmm6,xmm15
+        movups  XMMWORD[80+rsi],xmm7
+        movdqa  xmm7,xmm0
+        movups  XMMWORD[96+rsi],xmm8
+        movups  XMMWORD[112+rsi],xmm9
+        lea     rsi,[128+rsi]
+
+        sub     rdx,8
+        jnc     NEAR $L$ctr32_loop8
+
+        add     rdx,8
+        jz      NEAR $L$ctr32_done
+        lea     rcx,[((-128))+rcx]
+
+$L$ctr32_tail:
+
+
+        lea     rcx,[16+rcx]
+        cmp     rdx,4
+        jb      NEAR $L$ctr32_loop3
+        je      NEAR $L$ctr32_loop4
+
+
+        shl     eax,4
+        movdqa  xmm8,XMMWORD[96+rsp]
+        pxor    xmm9,xmm9
+
+        movups  xmm0,XMMWORD[16+rcx]
+DB      102,15,56,220,209
+DB      102,15,56,220,217
+        lea     rcx,[((32-16))+rax*1+rcx]
+        neg     rax
+DB      102,15,56,220,225
+        add     rax,16
+        movups  xmm10,XMMWORD[rdi]
+DB      102,15,56,220,233
+DB      102,15,56,220,241
+        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[48+rdi]
+        pxor    xmm2,xmm10
+        movdqu  xmm10,XMMWORD[64+rdi]
+        pxor    xmm3,xmm11
+        movdqu  XMMWORD[rsi],xmm2
+        pxor    xmm4,xmm12
+        movdqu  XMMWORD[16+rsi],xmm3
+        pxor    xmm5,xmm13
+        movdqu  XMMWORD[32+rsi],xmm4
+        pxor    xmm6,xmm10
+        movdqu  XMMWORD[48+rsi],xmm5
+        movdqu  XMMWORD[64+rsi],xmm6
+        cmp     rdx,6
+        jb      NEAR $L$ctr32_done
+
+        movups  xmm11,XMMWORD[80+rdi]
+        xorps   xmm7,xmm11
+        movups  XMMWORD[80+rsi],xmm7
+        je      NEAR $L$ctr32_done
+
+        movups  xmm12,XMMWORD[96+rdi]
+        xorps   xmm8,xmm12
+        movups  XMMWORD[96+rsi],xmm8
+        jmp     NEAR $L$ctr32_done
+
+ALIGN   32
+$L$ctr32_loop4:
+DB      102,15,56,220,209
+        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[rcx]
+        jnz     NEAR $L$ctr32_loop4
+DB      102,15,56,221,209
+DB      102,15,56,221,217
+        movups  xmm10,XMMWORD[rdi]
+        movups  xmm11,XMMWORD[16+rdi]
+DB      102,15,56,221,225
+DB      102,15,56,221,233
+        movups  xmm12,XMMWORD[32+rdi]
+        movups  xmm13,XMMWORD[48+rdi]
+
+        xorps   xmm2,xmm10
+        movups  XMMWORD[rsi],xmm2
+        xorps   xmm3,xmm11
+        movups  XMMWORD[16+rsi],xmm3
+        pxor    xmm4,xmm12
+        movdqu  XMMWORD[32+rsi],xmm4
+        pxor    xmm5,xmm13
+        movdqu  XMMWORD[48+rsi],xmm5
+        jmp     NEAR $L$ctr32_done
+
+ALIGN   32
+$L$ctr32_loop3:
+DB      102,15,56,220,209
+        lea     rcx,[16+rcx]
+        dec     eax
+DB      102,15,56,220,217
+DB      102,15,56,220,225
+        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[rdi]
+        xorps   xmm2,xmm10
+        movups  XMMWORD[rsi],xmm2
+        cmp     rdx,2
+        jb      NEAR $L$ctr32_done
+
+        movups  xmm11,XMMWORD[16+rdi]
+        xorps   xmm3,xmm11
+        movups  XMMWORD[16+rsi],xmm3
+        je      NEAR $L$ctr32_done
+
+        movups  xmm12,XMMWORD[32+rdi]
+        xorps   xmm4,xmm12
+        movups  XMMWORD[32+rsi],xmm4
+
+$L$ctr32_done:
+        xorps   xmm0,xmm0
+        xor     ebp,ebp
+        pxor    xmm1,xmm1
+        pxor    xmm2,xmm2
+        pxor    xmm3,xmm3
+        pxor    xmm4,xmm4
+        pxor    xmm5,xmm5
+        movaps  xmm6,XMMWORD[((-168))+r11]
+        movaps  XMMWORD[(-168)+r11],xmm0
+        movaps  xmm7,XMMWORD[((-152))+r11]
+        movaps  XMMWORD[(-152)+r11],xmm0
+        movaps  xmm8,XMMWORD[((-136))+r11]
+        movaps  XMMWORD[(-136)+r11],xmm0
+        movaps  xmm9,XMMWORD[((-120))+r11]
+        movaps  XMMWORD[(-120)+r11],xmm0
+        movaps  xmm10,XMMWORD[((-104))+r11]
+        movaps  XMMWORD[(-104)+r11],xmm0
+        movaps  xmm11,XMMWORD[((-88))+r11]
+        movaps  XMMWORD[(-88)+r11],xmm0
+        movaps  xmm12,XMMWORD[((-72))+r11]
+        movaps  XMMWORD[(-72)+r11],xmm0
+        movaps  xmm13,XMMWORD[((-56))+r11]
+        movaps  XMMWORD[(-56)+r11],xmm0
+        movaps  xmm14,XMMWORD[((-40))+r11]
+        movaps  XMMWORD[(-40)+r11],xmm0
+        movaps  xmm15,XMMWORD[((-24))+r11]
+        movaps  XMMWORD[(-24)+r11],xmm0
+        movaps  XMMWORD[rsp],xmm0
+        movaps  XMMWORD[16+rsp],xmm0
+        movaps  XMMWORD[32+rsp],xmm0
+        movaps  XMMWORD[48+rsp],xmm0
+        movaps  XMMWORD[64+rsp],xmm0
+        movaps  XMMWORD[80+rsp],xmm0
+        movaps  XMMWORD[96+rsp],xmm0
+        movaps  XMMWORD[112+rsp],xmm0
+        mov     rbp,QWORD[((-8))+r11]
+
+        lea     rsp,[r11]
+
+$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:
+global  aesni_xts_encrypt
+
+ALIGN   16
+aesni_xts_encrypt:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_aesni_xts_encrypt:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+        mov     rcx,r9
+        mov     r8,QWORD[40+rsp]
+        mov     r9,QWORD[48+rsp]
+
+
+
+        lea     r11,[rsp]
+
+        push    rbp
+
+        sub     rsp,272
+        and     rsp,-16
+        movaps  XMMWORD[(-168)+r11],xmm6
+        movaps  XMMWORD[(-152)+r11],xmm7
+        movaps  XMMWORD[(-136)+r11],xmm8
+        movaps  XMMWORD[(-120)+r11],xmm9
+        movaps  XMMWORD[(-104)+r11],xmm10
+        movaps  XMMWORD[(-88)+r11],xmm11
+        movaps  XMMWORD[(-72)+r11],xmm12
+        movaps  XMMWORD[(-56)+r11],xmm13
+        movaps  XMMWORD[(-40)+r11],xmm14
+        movaps  XMMWORD[(-24)+r11],xmm15
+$L$xts_enc_body:
+        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:
+DB      102,15,56,220,209
+        dec     eax
+        movups  xmm1,XMMWORD[r8]
+        lea     r8,[16+r8]
+        jnz     NEAR $L$oop_enc1_8
+DB      102,15,56,221,209
+        movups  xmm0,XMMWORD[rcx]
+        mov     rbp,rcx
+        mov     eax,r10d
+        shl     r10d,4
+        mov     r9,rdx
+        and     rdx,-16
+
+        movups  xmm1,XMMWORD[16+r10*1+rcx]
+
+        movdqa  xmm8,XMMWORD[$L$xts_magic]
+        movdqa  xmm15,xmm2
+        pshufd  xmm9,xmm2,0x5f
+        pxor    xmm1,xmm0
+        movdqa  xmm14,xmm9
+        paddd   xmm9,xmm9
+        movdqa  xmm10,xmm15
+        psrad   xmm14,31
+        paddq   xmm15,xmm15
+        pand    xmm14,xmm8
+        pxor    xmm10,xmm0
+        pxor    xmm15,xmm14
+        movdqa  xmm14,xmm9
+        paddd   xmm9,xmm9
+        movdqa  xmm11,xmm15
+        psrad   xmm14,31
+        paddq   xmm15,xmm15
+        pand    xmm14,xmm8
+        pxor    xmm11,xmm0
+        pxor    xmm15,xmm14
+        movdqa  xmm14,xmm9
+        paddd   xmm9,xmm9
+        movdqa  xmm12,xmm15
+        psrad   xmm14,31
+        paddq   xmm15,xmm15
+        pand    xmm14,xmm8
+        pxor    xmm12,xmm0
+        pxor    xmm15,xmm14
+        movdqa  xmm14,xmm9
+        paddd   xmm9,xmm9
+        movdqa  xmm13,xmm15
+        psrad   xmm14,31
+        paddq   xmm15,xmm15
+        pand    xmm14,xmm8
+        pxor    xmm13,xmm0
+        pxor    xmm15,xmm14
+        movdqa  xmm14,xmm15
+        psrad   xmm9,31
+        paddq   xmm15,xmm15
+        pand    xmm9,xmm8
+        pxor    xmm14,xmm0
+        pxor    xmm15,xmm9
+        movaps  XMMWORD[96+rsp],xmm1
+
+        sub     rdx,16*6
+        jc      NEAR $L$xts_enc_short
+
+        mov     eax,16+96
+        lea     rcx,[32+r10*1+rbp]
+        sub     rax,r10
+        movups  xmm1,XMMWORD[16+rbp]
+        mov     r10,rax
+        lea     r8,[$L$xts_magic]
+        jmp     NEAR $L$xts_enc_grandloop
+
+ALIGN   32
+$L$xts_enc_grandloop:
+        movdqu  xmm2,XMMWORD[rdi]
+        movdqa  xmm8,xmm0
+        movdqu  xmm3,XMMWORD[16+rdi]
+        pxor    xmm2,xmm10
+        movdqu  xmm4,XMMWORD[32+rdi]
+        pxor    xmm3,xmm11
+DB      102,15,56,220,209
+        movdqu  xmm5,XMMWORD[48+rdi]
+        pxor    xmm4,xmm12
+DB      102,15,56,220,217
+        movdqu  xmm6,XMMWORD[64+rdi]
+        pxor    xmm5,xmm13
+DB      102,15,56,220,225
+        movdqu  xmm7,XMMWORD[80+rdi]
+        pxor    xmm8,xmm15
+        movdqa  xmm9,XMMWORD[96+rsp]
+        pxor    xmm6,xmm14
+DB      102,15,56,220,233
+        movups  xmm0,XMMWORD[32+rbp]
+        lea     rdi,[96+rdi]
+        pxor    xmm7,xmm8
+
+        pxor    xmm10,xmm9
+DB      102,15,56,220,241
+        pxor    xmm11,xmm9
+        movdqa  XMMWORD[rsp],xmm10
+DB      102,15,56,220,249
+        movups  xmm1,XMMWORD[48+rbp]
+        pxor    xmm12,xmm9
+
+DB      102,15,56,220,208
+        pxor    xmm13,xmm9
+        movdqa  XMMWORD[16+rsp],xmm11
+DB      102,15,56,220,216
+        pxor    xmm14,xmm9
+        movdqa  XMMWORD[32+rsp],xmm12
+DB      102,15,56,220,224
+DB      102,15,56,220,232
+        pxor    xmm8,xmm9
+        movdqa  XMMWORD[64+rsp],xmm14
+DB      102,15,56,220,240
+DB      102,15,56,220,248
+        movups  xmm0,XMMWORD[64+rbp]
+        movdqa  XMMWORD[80+rsp],xmm8
+        pshufd  xmm9,xmm15,0x5f
+        jmp     NEAR $L$xts_enc_loop6
+ALIGN   32
+$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[((-64))+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
+DB      102,15,56,220,240
+DB      102,15,56,220,248
+        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
+        jnz     NEAR $L$xts_enc_loop6
+
+        movdqa  xmm8,XMMWORD[r8]
+        movdqa  xmm14,xmm9
+        paddd   xmm9,xmm9
+DB      102,15,56,220,209
+        paddq   xmm15,xmm15
+        psrad   xmm14,31
+DB      102,15,56,220,217
+        pand    xmm14,xmm8
+        movups  xmm10,XMMWORD[rbp]
+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[((-64))+rcx]
+
+        movdqa  xmm14,xmm9
+DB      102,15,56,220,208
+        paddd   xmm9,xmm9
+        pxor    xmm10,xmm15
+DB      102,15,56,220,216
+        psrad   xmm14,31
+        paddq   xmm15,xmm15
+DB      102,15,56,220,224
+DB      102,15,56,220,232
+        pand    xmm14,xmm8
+        movaps  xmm12,xmm11
+DB      102,15,56,220,240
+        pxor    xmm15,xmm14
+        movdqa  xmm14,xmm9
+DB      102,15,56,220,248
+        movups  xmm0,XMMWORD[((-48))+rcx]
+
+        paddd   xmm9,xmm9
+DB      102,15,56,220,209
+        pxor    xmm11,xmm15
+        psrad   xmm14,31
+DB      102,15,56,220,217
+        paddq   xmm15,xmm15
+        pand    xmm14,xmm8
+DB      102,15,56,220,225
+DB      102,15,56,220,233
+        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[((-32))+rcx]
+
+        paddd   xmm9,xmm9
+DB      102,15,56,220,208
+        pxor    xmm12,xmm15
+        psrad   xmm14,31
+DB      102,15,56,220,216
+        paddq   xmm15,xmm15
+        pand    xmm14,xmm8
+DB      102,15,56,220,224
+DB      102,15,56,220,232
+DB      102,15,56,220,240
+        pxor    xmm15,xmm14
+        movaps  xmm14,xmm13
+DB      102,15,56,220,248
+
+        movdqa  xmm0,xmm9
+        paddd   xmm9,xmm9
+DB      102,15,56,220,209
+        pxor    xmm13,xmm15
+        psrad   xmm0,31
+DB      102,15,56,220,217
+        paddq   xmm15,xmm15
+        pand    xmm0,xmm8
+DB      102,15,56,220,225
+DB      102,15,56,220,233
+        pxor    xmm15,xmm0
+        movups  xmm0,XMMWORD[rbp]
+DB      102,15,56,220,241
+DB      102,15,56,220,249
+        movups  xmm1,XMMWORD[16+rbp]
+
+        pxor    xmm14,xmm15
+DB      102,15,56,221,84,36,0
+        psrad   xmm9,31
+        paddq   xmm15,xmm15
+DB      102,15,56,221,92,36,16
+DB      102,15,56,221,100,36,32
+        pand    xmm9,xmm8
+        mov     rax,r10
+DB      102,15,56,221,108,36,48
+DB      102,15,56,221,116,36,64
+DB      102,15,56,221,124,36,80
+        pxor    xmm15,xmm9
+
+        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     NEAR $L$xts_enc_grandloop
+
+        mov     eax,16+96
+        sub     eax,r10d
+        mov     rcx,rbp
+        shr     eax,4
+
+$L$xts_enc_short:
+
+        mov     r10d,eax
+        pxor    xmm10,xmm0
+        add     rdx,16*6
+        jz      NEAR $L$xts_enc_done
+
+        pxor    xmm11,xmm0
+        cmp     rdx,0x20
+        jb      NEAR $L$xts_enc_one
+        pxor    xmm12,xmm0
+        je      NEAR $L$xts_enc_two
+
+        pxor    xmm13,xmm0
+        cmp     rdx,0x40
+        jb      NEAR $L$xts_enc_three
+        pxor    xmm14,xmm0
+        je      NEAR $L$xts_enc_four
+
+        movdqu  xmm2,XMMWORD[rdi]
+        movdqu  xmm3,XMMWORD[16+rdi]
+        movdqu  xmm4,XMMWORD[32+rdi]
+        pxor    xmm2,xmm10
+        movdqu  xmm5,XMMWORD[48+rdi]
+        pxor    xmm3,xmm11
+        movdqu  xmm6,XMMWORD[64+rdi]
+        lea     rdi,[80+rdi]
+        pxor    xmm4,xmm12
+        pxor    xmm5,xmm13
+        pxor    xmm6,xmm14
+        pxor    xmm7,xmm7
+
+        call    _aesni_encrypt6
+
+        xorps   xmm2,xmm10
+        movdqa  xmm10,xmm15
+        xorps   xmm3,xmm11
+        xorps   xmm4,xmm12
+        movdqu  XMMWORD[rsi],xmm2
+        xorps   xmm5,xmm13
+        movdqu  XMMWORD[16+rsi],xmm3
+        xorps   xmm6,xmm14
+        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[rdi]
+        lea     rdi,[16+rdi]
+        xorps   xmm2,xmm10
+        movups  xmm0,XMMWORD[rcx]
+        movups  xmm1,XMMWORD[16+rcx]
+        lea     rcx,[32+rcx]
+        xorps   xmm2,xmm0
+$L$oop_enc1_9:
+DB      102,15,56,220,209
+        dec     eax
+        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[rsi],xmm2
+        lea     rsi,[16+rsi]
+        jmp     NEAR $L$xts_enc_done
+
+ALIGN   16
+$L$xts_enc_two:
+        movups  xmm2,XMMWORD[rdi]
+        movups  xmm3,XMMWORD[16+rdi]
+        lea     rdi,[32+rdi]
+        xorps   xmm2,xmm10
+        xorps   xmm3,xmm11
+
+        call    _aesni_encrypt2
+
+        xorps   xmm2,xmm10
+        movdqa  xmm10,xmm12
+        xorps   xmm3,xmm11
+        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[rdi]
+        movups  xmm3,XMMWORD[16+rdi]
+        movups  xmm4,XMMWORD[32+rdi]
+        lea     rdi,[48+rdi]
+        xorps   xmm2,xmm10
+        xorps   xmm3,xmm11
+        xorps   xmm4,xmm12
+
+        call    _aesni_encrypt3
+
+        xorps   xmm2,xmm10
+        movdqa  xmm10,xmm13
+        xorps   xmm3,xmm11
+        xorps   xmm4,xmm12
+        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[rdi]
+        movups  xmm3,XMMWORD[16+rdi]
+        movups  xmm4,XMMWORD[32+rdi]
+        xorps   xmm2,xmm10
+        movups  xmm5,XMMWORD[48+rdi]
+        lea     rdi,[64+rdi]
+        xorps   xmm3,xmm11
+        xorps   xmm4,xmm12
+        xorps   xmm5,xmm13
+
+        call    _aesni_encrypt4
+
+        pxor    xmm2,xmm10
+        movdqa  xmm10,xmm14
+        pxor    xmm3,xmm11
+        pxor    xmm4,xmm12
+        movdqu  XMMWORD[rsi],xmm2
+        pxor    xmm5,xmm13
+        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:
+        and     r9,15
+        jz      NEAR $L$xts_enc_ret
+        mov     rdx,r9
+
+$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     NEAR $L$xts_enc_steal
+
+        sub     rsi,r9
+        mov     rcx,rbp
+        mov     eax,r10d
+
+        movups  xmm2,XMMWORD[((-16))+rsi]
+        xorps   xmm2,xmm10
+        movups  xmm0,XMMWORD[rcx]
+        movups  xmm1,XMMWORD[16+rcx]
+        lea     rcx,[32+rcx]
+        xorps   xmm2,xmm0
+$L$oop_enc1_10:
+DB      102,15,56,220,209
+        dec     eax
+        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[(-16)+rsi],xmm2
+
+$L$xts_enc_ret:
+        xorps   xmm0,xmm0
+        pxor    xmm1,xmm1
+        pxor    xmm2,xmm2
+        pxor    xmm3,xmm3
+        pxor    xmm4,xmm4
+        pxor    xmm5,xmm5
+        movaps  xmm6,XMMWORD[((-168))+r11]
+        movaps  XMMWORD[(-168)+r11],xmm0
+        movaps  xmm7,XMMWORD[((-152))+r11]
+        movaps  XMMWORD[(-152)+r11],xmm0
+        movaps  xmm8,XMMWORD[((-136))+r11]
+        movaps  XMMWORD[(-136)+r11],xmm0
+        movaps  xmm9,XMMWORD[((-120))+r11]
+        movaps  XMMWORD[(-120)+r11],xmm0
+        movaps  xmm10,XMMWORD[((-104))+r11]
+        movaps  XMMWORD[(-104)+r11],xmm0
+        movaps  xmm11,XMMWORD[((-88))+r11]
+        movaps  XMMWORD[(-88)+r11],xmm0
+        movaps  xmm12,XMMWORD[((-72))+r11]
+        movaps  XMMWORD[(-72)+r11],xmm0
+        movaps  xmm13,XMMWORD[((-56))+r11]
+        movaps  XMMWORD[(-56)+r11],xmm0
+        movaps  xmm14,XMMWORD[((-40))+r11]
+        movaps  XMMWORD[(-40)+r11],xmm0
+        movaps  xmm15,XMMWORD[((-24))+r11]
+        movaps  XMMWORD[(-24)+r11],xmm0
+        movaps  XMMWORD[rsp],xmm0
+        movaps  XMMWORD[16+rsp],xmm0
+        movaps  XMMWORD[32+rsp],xmm0
+        movaps  XMMWORD[48+rsp],xmm0
+        movaps  XMMWORD[64+rsp],xmm0
+        movaps  XMMWORD[80+rsp],xmm0
+        movaps  XMMWORD[96+rsp],xmm0
+        mov     rbp,QWORD[((-8))+r11]
+
+        lea     rsp,[r11]
+
+$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:
+global  aesni_xts_decrypt
+
+ALIGN   16
+aesni_xts_decrypt:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_aesni_xts_decrypt:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+        mov     rcx,r9
+        mov     r8,QWORD[40+rsp]
+        mov     r9,QWORD[48+rsp]
+
+
+
+        lea     r11,[rsp]
+
+        push    rbp
+
+        sub     rsp,272
+        and     rsp,-16
+        movaps  XMMWORD[(-168)+r11],xmm6
+        movaps  XMMWORD[(-152)+r11],xmm7
+        movaps  XMMWORD[(-136)+r11],xmm8
+        movaps  XMMWORD[(-120)+r11],xmm9
+        movaps  XMMWORD[(-104)+r11],xmm10
+        movaps  XMMWORD[(-88)+r11],xmm11
+        movaps  XMMWORD[(-72)+r11],xmm12
+        movaps  XMMWORD[(-56)+r11],xmm13
+        movaps  XMMWORD[(-40)+r11],xmm14
+        movaps  XMMWORD[(-24)+r11],xmm15
+$L$xts_dec_body:
+        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:
+DB      102,15,56,220,209
+        dec     eax
+        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
+        setnz   al
+        shl     rax,4
+        sub     rdx,rax
+
+        movups  xmm0,XMMWORD[rcx]
+        mov     rbp,rcx
+        mov     eax,r10d
+        shl     r10d,4
+        mov     r9,rdx
+        and     rdx,-16
+
+        movups  xmm1,XMMWORD[16+r10*1+rcx]
+
+        movdqa  xmm8,XMMWORD[$L$xts_magic]
+        movdqa  xmm15,xmm2
+        pshufd  xmm9,xmm2,0x5f
+        pxor    xmm1,xmm0
+        movdqa  xmm14,xmm9
+        paddd   xmm9,xmm9
+        movdqa  xmm10,xmm15
+        psrad   xmm14,31
+        paddq   xmm15,xmm15
+        pand    xmm14,xmm8
+        pxor    xmm10,xmm0
+        pxor    xmm15,xmm14
+        movdqa  xmm14,xmm9
+        paddd   xmm9,xmm9
+        movdqa  xmm11,xmm15
+        psrad   xmm14,31
+        paddq   xmm15,xmm15
+        pand    xmm14,xmm8
+        pxor    xmm11,xmm0
+        pxor    xmm15,xmm14
+        movdqa  xmm14,xmm9
+        paddd   xmm9,xmm9
+        movdqa  xmm12,xmm15
+        psrad   xmm14,31
+        paddq   xmm15,xmm15
+        pand    xmm14,xmm8
+        pxor    xmm12,xmm0
+        pxor    xmm15,xmm14
+        movdqa  xmm14,xmm9
+        paddd   xmm9,xmm9
+        movdqa  xmm13,xmm15
+        psrad   xmm14,31
+        paddq   xmm15,xmm15
+        pand    xmm14,xmm8
+        pxor    xmm13,xmm0
+        pxor    xmm15,xmm14
+        movdqa  xmm14,xmm15
+        psrad   xmm9,31
+        paddq   xmm15,xmm15
+        pand    xmm9,xmm8
+        pxor    xmm14,xmm0
+        pxor    xmm15,xmm9
+        movaps  XMMWORD[96+rsp],xmm1
+
+        sub     rdx,16*6
+        jc      NEAR $L$xts_dec_short
+
+        mov     eax,16+96
+        lea     rcx,[32+r10*1+rbp]
+        sub     rax,r10
+        movups  xmm1,XMMWORD[16+rbp]
+        mov     r10,rax
+        lea     r8,[$L$xts_magic]
+        jmp     NEAR $L$xts_dec_grandloop
+
+ALIGN   32
+$L$xts_dec_grandloop:
+        movdqu  xmm2,XMMWORD[rdi]
+        movdqa  xmm8,xmm0
+        movdqu  xmm3,XMMWORD[16+rdi]
+        pxor    xmm2,xmm10
+        movdqu  xmm4,XMMWORD[32+rdi]
+        pxor    xmm3,xmm11
+DB      102,15,56,222,209
+        movdqu  xmm5,XMMWORD[48+rdi]
+        pxor    xmm4,xmm12
+DB      102,15,56,222,217
+        movdqu  xmm6,XMMWORD[64+rdi]
+        pxor    xmm5,xmm13
+DB      102,15,56,222,225
+        movdqu  xmm7,XMMWORD[80+rdi]
+        pxor    xmm8,xmm15
+        movdqa  xmm9,XMMWORD[96+rsp]
+        pxor    xmm6,xmm14
+DB      102,15,56,222,233
+        movups  xmm0,XMMWORD[32+rbp]
+        lea     rdi,[96+rdi]
+        pxor    xmm7,xmm8
+
+        pxor    xmm10,xmm9
+DB      102,15,56,222,241
+        pxor    xmm11,xmm9
+        movdqa  XMMWORD[rsp],xmm10
+DB      102,15,56,222,249
+        movups  xmm1,XMMWORD[48+rbp]
+        pxor    xmm12,xmm9
+
+DB      102,15,56,222,208
+        pxor    xmm13,xmm9
+        movdqa  XMMWORD[16+rsp],xmm11
+DB      102,15,56,222,216
+        pxor    xmm14,xmm9
+        movdqa  XMMWORD[32+rsp],xmm12
+DB      102,15,56,222,224
+DB      102,15,56,222,232
+        pxor    xmm8,xmm9
+        movdqa  XMMWORD[64+rsp],xmm14
+DB      102,15,56,222,240
+DB      102,15,56,222,248
+        movups  xmm0,XMMWORD[64+rbp]
+        movdqa  XMMWORD[80+rsp],xmm8
+        pshufd  xmm9,xmm15,0x5f
+        jmp     NEAR $L$xts_dec_loop6
+ALIGN   32
+$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[((-64))+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
+DB      102,15,56,222,240
+DB      102,15,56,222,248
+        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
+        jnz     NEAR $L$xts_dec_loop6
+
+        movdqa  xmm8,XMMWORD[r8]
+        movdqa  xmm14,xmm9
+        paddd   xmm9,xmm9
+DB      102,15,56,222,209
+        paddq   xmm15,xmm15
+        psrad   xmm14,31
+DB      102,15,56,222,217
+        pand    xmm14,xmm8
+        movups  xmm10,XMMWORD[rbp]
+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[((-64))+rcx]
+
+        movdqa  xmm14,xmm9
+DB      102,15,56,222,208
+        paddd   xmm9,xmm9
+        pxor    xmm10,xmm15
+DB      102,15,56,222,216
+        psrad   xmm14,31
+        paddq   xmm15,xmm15
+DB      102,15,56,222,224
+DB      102,15,56,222,232
+        pand    xmm14,xmm8
+        movaps  xmm12,xmm11
+DB      102,15,56,222,240
+        pxor    xmm15,xmm14
+        movdqa  xmm14,xmm9
+DB      102,15,56,222,248
+        movups  xmm0,XMMWORD[((-48))+rcx]
+
+        paddd   xmm9,xmm9
+DB      102,15,56,222,209
+        pxor    xmm11,xmm15
+        psrad   xmm14,31
+DB      102,15,56,222,217
+        paddq   xmm15,xmm15
+        pand    xmm14,xmm8
+DB      102,15,56,222,225
+DB      102,15,56,222,233
+        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[((-32))+rcx]
+
+        paddd   xmm9,xmm9
+DB      102,15,56,222,208
+        pxor    xmm12,xmm15
+        psrad   xmm14,31
+DB      102,15,56,222,216
+        paddq   xmm15,xmm15
+        pand    xmm14,xmm8
+DB      102,15,56,222,224
+DB      102,15,56,222,232
+DB      102,15,56,222,240
+        pxor    xmm15,xmm14
+        movaps  xmm14,xmm13
+DB      102,15,56,222,248
+
+        movdqa  xmm0,xmm9
+        paddd   xmm9,xmm9
+DB      102,15,56,222,209
+        pxor    xmm13,xmm15
+        psrad   xmm0,31
+DB      102,15,56,222,217
+        paddq   xmm15,xmm15
+        pand    xmm0,xmm8
+DB      102,15,56,222,225
+DB      102,15,56,222,233
+        pxor    xmm15,xmm0
+        movups  xmm0,XMMWORD[rbp]
+DB      102,15,56,222,241
+DB      102,15,56,222,249
+        movups  xmm1,XMMWORD[16+rbp]
+
+        pxor    xmm14,xmm15
+DB      102,15,56,223,84,36,0
+        psrad   xmm9,31
+        paddq   xmm15,xmm15
+DB      102,15,56,223,92,36,16
+DB      102,15,56,223,100,36,32
+        pand    xmm9,xmm8
+        mov     rax,r10
+DB      102,15,56,223,108,36,48
+DB      102,15,56,223,116,36,64
+DB      102,15,56,223,124,36,80
+        pxor    xmm15,xmm9
+
+        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     NEAR $L$xts_dec_grandloop
+
+        mov     eax,16+96
+        sub     eax,r10d
+        mov     rcx,rbp
+        shr     eax,4
+
+$L$xts_dec_short:
+
+        mov     r10d,eax
+        pxor    xmm10,xmm0
+        pxor    xmm11,xmm0
+        add     rdx,16*6
+        jz      NEAR $L$xts_dec_done
+
+        pxor    xmm12,xmm0
+        cmp     rdx,0x20
+        jb      NEAR $L$xts_dec_one
+        pxor    xmm13,xmm0
+        je      NEAR $L$xts_dec_two
+
+        pxor    xmm14,xmm0
+        cmp     rdx,0x40
+        jb      NEAR $L$xts_dec_three
+        je      NEAR $L$xts_dec_four
+
+        movdqu  xmm2,XMMWORD[rdi]
+        movdqu  xmm3,XMMWORD[16+rdi]
+        movdqu  xmm4,XMMWORD[32+rdi]
+        pxor    xmm2,xmm10
+        movdqu  xmm5,XMMWORD[48+rdi]
+        pxor    xmm3,xmm11
+        movdqu  xmm6,XMMWORD[64+rdi]
+        lea     rdi,[80+rdi]
+        pxor    xmm4,xmm12
+        pxor    xmm5,xmm13
+        pxor    xmm6,xmm14
+
+        call    _aesni_decrypt6
+
+        xorps   xmm2,xmm10
+        xorps   xmm3,xmm11
+        xorps   xmm4,xmm12
+        movdqu  XMMWORD[rsi],xmm2
+        xorps   xmm5,xmm13
+        movdqu  XMMWORD[16+rsi],xmm3
+        xorps   xmm6,xmm14
+        movdqu  XMMWORD[32+rsi],xmm4
+        pxor    xmm14,xmm14
+        movdqu  XMMWORD[48+rsi],xmm5
+        pcmpgtd xmm14,xmm15
+        movdqu  XMMWORD[64+rsi],xmm6
+        lea     rsi,[80+rsi]
+        pshufd  xmm11,xmm14,0x13
+        and     r9,15
+        jz      NEAR $L$xts_dec_ret
+
+        movdqa  xmm10,xmm15
+        paddq   xmm15,xmm15
+        pand    xmm11,xmm8
+        pxor    xmm11,xmm15
+        jmp     NEAR $L$xts_dec_done2
+
+ALIGN   16
+$L$xts_dec_one:
+        movups  xmm2,XMMWORD[rdi]
+        lea     rdi,[16+rdi]
+        xorps   xmm2,xmm10
+        movups  xmm0,XMMWORD[rcx]
+        movups  xmm1,XMMWORD[16+rcx]
+        lea     rcx,[32+rcx]
+        xorps   xmm2,xmm0
+$L$oop_dec1_12:
+DB      102,15,56,222,209
+        dec     eax
+        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[rsi],xmm2
+        movdqa  xmm11,xmm12
+        lea     rsi,[16+rsi]
+        jmp     NEAR $L$xts_dec_done
+
+ALIGN   16
+$L$xts_dec_two:
+        movups  xmm2,XMMWORD[rdi]
+        movups  xmm3,XMMWORD[16+rdi]
+        lea     rdi,[32+rdi]
+        xorps   xmm2,xmm10
+        xorps   xmm3,xmm11
+
+        call    _aesni_decrypt2
+
+        xorps   xmm2,xmm10
+        movdqa  xmm10,xmm12
+        xorps   xmm3,xmm11
+        movdqa  xmm11,xmm13
+        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[rdi]
+        movups  xmm3,XMMWORD[16+rdi]
+        movups  xmm4,XMMWORD[32+rdi]
+        lea     rdi,[48+rdi]
+        xorps   xmm2,xmm10
+        xorps   xmm3,xmm11
+        xorps   xmm4,xmm12
+
+        call    _aesni_decrypt3
+
+        xorps   xmm2,xmm10
+        movdqa  xmm10,xmm13
+        xorps   xmm3,xmm11
+        movdqa  xmm11,xmm14
+        xorps   xmm4,xmm12
+        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[rdi]
+        movups  xmm3,XMMWORD[16+rdi]
+        movups  xmm4,XMMWORD[32+rdi]
+        xorps   xmm2,xmm10
+        movups  xmm5,XMMWORD[48+rdi]
+        lea     rdi,[64+rdi]
+        xorps   xmm3,xmm11
+        xorps   xmm4,xmm12
+        xorps   xmm5,xmm13
+
+        call    _aesni_decrypt4
+
+        pxor    xmm2,xmm10
+        movdqa  xmm10,xmm14
+        pxor    xmm3,xmm11
+        movdqa  xmm11,xmm15
+        pxor    xmm4,xmm12
+        movdqu  XMMWORD[rsi],xmm2
+        pxor    xmm5,xmm13
+        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:
+        and     r9,15
+        jz      NEAR $L$xts_dec_ret
+$L$xts_dec_done2:
+        mov     rdx,r9
+        mov     rcx,rbp
+        mov     eax,r10d
+
+        movups  xmm2,XMMWORD[rdi]
+        xorps   xmm2,xmm11
+        movups  xmm0,XMMWORD[rcx]
+        movups  xmm1,XMMWORD[16+rcx]
+        lea     rcx,[32+rcx]
+        xorps   xmm2,xmm0
+$L$oop_dec1_13:
+DB      102,15,56,222,209
+        dec     eax
+        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[rsi],xmm2
+
+$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     NEAR $L$xts_dec_steal
+
+        sub     rsi,r9
+        mov     rcx,rbp
+        mov     eax,r10d
+
+        movups  xmm2,XMMWORD[rsi]
+        xorps   xmm2,xmm10
+        movups  xmm0,XMMWORD[rcx]
+        movups  xmm1,XMMWORD[16+rcx]
+        lea     rcx,[32+rcx]
+        xorps   xmm2,xmm0
+$L$oop_dec1_14:
+DB      102,15,56,222,209
+        dec     eax
+        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[rsi],xmm2
+
+$L$xts_dec_ret:
+        xorps   xmm0,xmm0
+        pxor    xmm1,xmm1
+        pxor    xmm2,xmm2
+        pxor    xmm3,xmm3
+        pxor    xmm4,xmm4
+        pxor    xmm5,xmm5
+        movaps  xmm6,XMMWORD[((-168))+r11]
+        movaps  XMMWORD[(-168)+r11],xmm0
+        movaps  xmm7,XMMWORD[((-152))+r11]
+        movaps  XMMWORD[(-152)+r11],xmm0
+        movaps  xmm8,XMMWORD[((-136))+r11]
+        movaps  XMMWORD[(-136)+r11],xmm0
+        movaps  xmm9,XMMWORD[((-120))+r11]
+        movaps  XMMWORD[(-120)+r11],xmm0
+        movaps  xmm10,XMMWORD[((-104))+r11]
+        movaps  XMMWORD[(-104)+r11],xmm0
+        movaps  xmm11,XMMWORD[((-88))+r11]
+        movaps  XMMWORD[(-88)+r11],xmm0
+        movaps  xmm12,XMMWORD[((-72))+r11]
+        movaps  XMMWORD[(-72)+r11],xmm0
+        movaps  xmm13,XMMWORD[((-56))+r11]
+        movaps  XMMWORD[(-56)+r11],xmm0
+        movaps  xmm14,XMMWORD[((-40))+r11]
+        movaps  XMMWORD[(-40)+r11],xmm0
+        movaps  xmm15,XMMWORD[((-24))+r11]
+        movaps  XMMWORD[(-24)+r11],xmm0
+        movaps  XMMWORD[rsp],xmm0
+        movaps  XMMWORD[16+rsp],xmm0
+        movaps  XMMWORD[32+rsp],xmm0
+        movaps  XMMWORD[48+rsp],xmm0
+        movaps  XMMWORD[64+rsp],xmm0
+        movaps  XMMWORD[80+rsp],xmm0
+        movaps  XMMWORD[96+rsp],xmm0
+        mov     rbp,QWORD[((-8))+r11]
+
+        lea     rsp,[r11]
+
+$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:
+global  aesni_ocb_encrypt
+
+ALIGN   32
+aesni_ocb_encrypt:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_aesni_ocb_encrypt:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+        mov     rcx,r9
+        mov     r8,QWORD[40+rsp]
+        mov     r9,QWORD[48+rsp]
+
+
+
+        lea     rax,[rsp]
+        push    rbx
+
+        push    rbp
+
+        push    r12
+
+        push    r13
+
+        push    r14
+
+        lea     rsp,[((-160))+rsp]
+        movaps  XMMWORD[rsp],xmm6
+        movaps  XMMWORD[16+rsp],xmm7
+        movaps  XMMWORD[32+rsp],xmm8
+        movaps  XMMWORD[48+rsp],xmm9
+        movaps  XMMWORD[64+rsp],xmm10
+        movaps  XMMWORD[80+rsp],xmm11
+        movaps  XMMWORD[96+rsp],xmm12
+        movaps  XMMWORD[112+rsp],xmm13
+        movaps  XMMWORD[128+rsp],xmm14
+        movaps  XMMWORD[144+rsp],xmm15
+$L$ocb_enc_body:
+        mov     rbx,QWORD[56+rax]
+        mov     rbp,QWORD[((56+8))+rax]
+
+        mov     r10d,DWORD[240+rcx]
+        mov     r11,rcx
+        shl     r10d,4
+        movups  xmm9,XMMWORD[rcx]
+        movups  xmm1,XMMWORD[16+r10*1+rcx]
+
+        movdqu  xmm15,XMMWORD[r9]
+        pxor    xmm9,xmm1
+        pxor    xmm15,xmm1
+
+        mov     eax,16+32
+        lea     rcx,[32+r10*1+r11]
+        movups  xmm1,XMMWORD[16+r11]
+        sub     rax,r10
+        mov     r10,rax
+
+        movdqu  xmm10,XMMWORD[rbx]
+        movdqu  xmm8,XMMWORD[rbp]
+
+        test    r8,1
+        jnz     NEAR $L$ocb_enc_odd
+
+        bsf     r12,r8
+        add     r8,1
+        shl     r12,4
+        movdqu  xmm7,XMMWORD[r12*1+rbx]
+        movdqu  xmm2,XMMWORD[rdi]
+        lea     rdi,[16+rdi]
+
+        call    __ocb_encrypt1
+
+        movdqa  xmm15,xmm7
+        movups  XMMWORD[rsi],xmm2
+        lea     rsi,[16+rsi]
+        sub     rdx,1
+        jz      NEAR $L$ocb_enc_done
+
+$L$ocb_enc_odd:
+        lea     r12,[1+r8]
+        lea     r13,[3+r8]
+        lea     r14,[5+r8]
+        lea     r8,[6+r8]
+        bsf     r12,r12
+        bsf     r13,r13
+        bsf     r14,r14
+        shl     r12,4
+        shl     r13,4
+        shl     r14,4
+
+        sub     rdx,6
+        jc      NEAR $L$ocb_enc_short
+        jmp     NEAR $L$ocb_enc_grandloop
+
+ALIGN   32
+$L$ocb_enc_grandloop:
+        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]
+        lea     rdi,[96+rdi]
+
+        call    __ocb_encrypt6
+
+        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
+        lea     rsi,[96+rsi]
+        sub     rdx,6
+        jnc     NEAR $L$ocb_enc_grandloop
+
+$L$ocb_enc_short:
+        add     rdx,6
+        jz      NEAR $L$ocb_enc_done
+
+        movdqu  xmm2,XMMWORD[rdi]
+        cmp     rdx,2
+        jb      NEAR $L$ocb_enc_one
+        movdqu  xmm3,XMMWORD[16+rdi]
+        je      NEAR $L$ocb_enc_two
+
+        movdqu  xmm4,XMMWORD[32+rdi]
+        cmp     rdx,4
+        jb      NEAR $L$ocb_enc_three
+        movdqu  xmm5,XMMWORD[48+rdi]
+        je      NEAR $L$ocb_enc_four
+
+        movdqu  xmm6,XMMWORD[64+rdi]
+        pxor    xmm7,xmm7
+
+        call    __ocb_encrypt6
+
+        movdqa  xmm15,xmm14
+        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$ocb_enc_done
+
+ALIGN   16
+$L$ocb_enc_one:
+        movdqa  xmm7,xmm10
+
+        call    __ocb_encrypt1
+
+        movdqa  xmm15,xmm7
+        movups  XMMWORD[rsi],xmm2
+        jmp     NEAR $L$ocb_enc_done
+
+ALIGN   16
+$L$ocb_enc_two:
+        pxor    xmm4,xmm4
+        pxor    xmm5,xmm5
+
+        call    __ocb_encrypt4
+
+        movdqa  xmm15,xmm11
+        movups  XMMWORD[rsi],xmm2
+        movups  XMMWORD[16+rsi],xmm3
+
+        jmp     NEAR $L$ocb_enc_done
+
+ALIGN   16
+$L$ocb_enc_three:
+        pxor    xmm5,xmm5
+
+        call    __ocb_encrypt4
+
+        movdqa  xmm15,xmm12
+        movups  XMMWORD[rsi],xmm2
+        movups  XMMWORD[16+rsi],xmm3
+        movups  XMMWORD[32+rsi],xmm4
+
+        jmp     NEAR $L$ocb_enc_done
+
+ALIGN   16
+$L$ocb_enc_four:
+        call    __ocb_encrypt4
+
+        movdqa  xmm15,xmm13
+        movups  XMMWORD[rsi],xmm2
+        movups  XMMWORD[16+rsi],xmm3
+        movups  XMMWORD[32+rsi],xmm4
+        movups  XMMWORD[48+rsi],xmm5
+
+$L$ocb_enc_done:
+        pxor    xmm15,xmm0
+        movdqu  XMMWORD[rbp],xmm8
+        movdqu  XMMWORD[r9],xmm15
+
+        xorps   xmm0,xmm0
+        pxor    xmm1,xmm1
+        pxor    xmm2,xmm2
+        pxor    xmm3,xmm3
+        pxor    xmm4,xmm4
+        pxor    xmm5,xmm5
+        movaps  xmm6,XMMWORD[rsp]
+        movaps  XMMWORD[rsp],xmm0
+        movaps  xmm7,XMMWORD[16+rsp]
+        movaps  XMMWORD[16+rsp],xmm0
+        movaps  xmm8,XMMWORD[32+rsp]
+        movaps  XMMWORD[32+rsp],xmm0
+        movaps  xmm9,XMMWORD[48+rsp]
+        movaps  XMMWORD[48+rsp],xmm0
+        movaps  xmm10,XMMWORD[64+rsp]
+        movaps  XMMWORD[64+rsp],xmm0
+        movaps  xmm11,XMMWORD[80+rsp]
+        movaps  XMMWORD[80+rsp],xmm0
+        movaps  xmm12,XMMWORD[96+rsp]
+        movaps  XMMWORD[96+rsp],xmm0
+        movaps  xmm13,XMMWORD[112+rsp]
+        movaps  XMMWORD[112+rsp],xmm0
+        movaps  xmm14,XMMWORD[128+rsp]
+        movaps  XMMWORD[128+rsp],xmm0
+        movaps  xmm15,XMMWORD[144+rsp]
+        movaps  XMMWORD[144+rsp],xmm0
+        lea     rax,[((160+40))+rsp]
+$L$ocb_enc_pop:
+        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$ocb_enc_epilogue:
+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
+        mov     rsi,QWORD[16+rsp]
+        DB      0F3h,0C3h               ;repret
+
+$L$SEH_end_aesni_ocb_encrypt:
+
+
+ALIGN   32
+__ocb_encrypt6:
+
+        pxor    xmm15,xmm9
+        movdqu  xmm11,XMMWORD[r12*1+rbx]
+        movdqa  xmm12,xmm10
+        movdqu  xmm13,XMMWORD[r13*1+rbx]
+        movdqa  xmm14,xmm10
+        pxor    xmm10,xmm15
+        movdqu  xmm15,XMMWORD[r14*1+rbx]
+        pxor    xmm11,xmm10
+        pxor    xmm8,xmm2
+        pxor    xmm2,xmm10
+        pxor    xmm12,xmm11
+        pxor    xmm8,xmm3
+        pxor    xmm3,xmm11
+        pxor    xmm13,xmm12
+        pxor    xmm8,xmm4
+        pxor    xmm4,xmm12
+        pxor    xmm14,xmm13
+        pxor    xmm8,xmm5
+        pxor    xmm5,xmm13
+        pxor    xmm15,xmm14
+        pxor    xmm8,xmm6
+        pxor    xmm6,xmm14
+        pxor    xmm8,xmm7
+        pxor    xmm7,xmm15
+        movups  xmm0,XMMWORD[32+r11]
+
+        lea     r12,[1+r8]
+        lea     r13,[3+r8]
+        lea     r14,[5+r8]
+        add     r8,6
+        pxor    xmm10,xmm9
+        bsf     r12,r12
+        bsf     r13,r13
+        bsf     r14,r14
+
+DB      102,15,56,220,209
+DB      102,15,56,220,217
+DB      102,15,56,220,225
+DB      102,15,56,220,233
+        pxor    xmm11,xmm9
+        pxor    xmm12,xmm9
+DB      102,15,56,220,241
+        pxor    xmm13,xmm9
+        pxor    xmm14,xmm9
+DB      102,15,56,220,249
+        movups  xmm1,XMMWORD[48+r11]
+        pxor    xmm15,xmm9
+
+DB      102,15,56,220,208
+DB      102,15,56,220,216
+DB      102,15,56,220,224
+DB      102,15,56,220,232
+DB      102,15,56,220,240
+DB      102,15,56,220,248
+        movups  xmm0,XMMWORD[64+r11]
+        shl     r12,4
+        shl     r13,4
+        jmp     NEAR $L$ocb_enc_loop6
+
+ALIGN   32
+$L$ocb_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[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
+DB      102,15,56,220,240
+DB      102,15,56,220,248
+        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
+        jnz     NEAR $L$ocb_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[16+r11]
+        shl     r14,4
+
+DB      102,65,15,56,221,210
+        movdqu  xmm10,XMMWORD[rbx]
+        mov     rax,r10
+DB      102,65,15,56,221,219
+DB      102,65,15,56,221,228
+DB      102,65,15,56,221,237
+DB      102,65,15,56,221,246
+DB      102,65,15,56,221,255
+        DB      0F3h,0C3h               ;repret
+
+
+
+
+ALIGN   32
+__ocb_encrypt4:
+
+        pxor    xmm15,xmm9
+        movdqu  xmm11,XMMWORD[r12*1+rbx]
+        movdqa  xmm12,xmm10
+        movdqu  xmm13,XMMWORD[r13*1+rbx]
+        pxor    xmm10,xmm15
+        pxor    xmm11,xmm10
+        pxor    xmm8,xmm2
+        pxor    xmm2,xmm10
+        pxor    xmm12,xmm11
+        pxor    xmm8,xmm3
+        pxor    xmm3,xmm11
+        pxor    xmm13,xmm12
+        pxor    xmm8,xmm4
+        pxor    xmm4,xmm12
+        pxor    xmm8,xmm5
+        pxor    xmm5,xmm13
+        movups  xmm0,XMMWORD[32+r11]
+
+        pxor    xmm10,xmm9
+        pxor    xmm11,xmm9
+        pxor    xmm12,xmm9
+        pxor    xmm13,xmm9
+
+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[48+r11]
+
+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[64+r11]
+        jmp     NEAR $L$ocb_enc_loop4
+
+ALIGN   32
+$L$ocb_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[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[((-16))+rax*1+rcx]
+        jnz     NEAR $L$ocb_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[16+r11]
+        mov     rax,r10
+
+DB      102,65,15,56,221,210
+DB      102,65,15,56,221,219
+DB      102,65,15,56,221,228
+DB      102,65,15,56,221,237
+        DB      0F3h,0C3h               ;repret
+
+
+
+
+ALIGN   32
+__ocb_encrypt1:
+
+        pxor    xmm7,xmm15
+        pxor    xmm7,xmm9
+        pxor    xmm8,xmm2
+        pxor    xmm2,xmm7
+        movups  xmm0,XMMWORD[32+r11]
+
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[48+r11]
+        pxor    xmm7,xmm9
+
+DB      102,15,56,220,208
+        movups  xmm0,XMMWORD[64+r11]
+        jmp     NEAR $L$ocb_enc_loop1
+
+ALIGN   32
+$L$ocb_enc_loop1:
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[rax*1+rcx]
+        add     rax,32
+
+DB      102,15,56,220,208
+        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
+        jnz     NEAR $L$ocb_enc_loop1
+
+DB      102,15,56,220,209
+        movups  xmm1,XMMWORD[16+r11]
+        mov     rax,r10
+
+DB      102,15,56,221,215
+        DB      0F3h,0C3h               ;repret
+
+
+
+global  aesni_ocb_decrypt
+
+ALIGN   32
+aesni_ocb_decrypt:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_aesni_ocb_decrypt:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+        mov     rcx,r9
+        mov     r8,QWORD[40+rsp]
+        mov     r9,QWORD[48+rsp]
+
+
+
+        lea     rax,[rsp]
+        push    rbx
+
+        push    rbp
+
+        push    r12
+
+        push    r13
+
+        push    r14
+
+        lea     rsp,[((-160))+rsp]
+        movaps  XMMWORD[rsp],xmm6
+        movaps  XMMWORD[16+rsp],xmm7
+        movaps  XMMWORD[32+rsp],xmm8
+        movaps  XMMWORD[48+rsp],xmm9
+        movaps  XMMWORD[64+rsp],xmm10
+        movaps  XMMWORD[80+rsp],xmm11
+        movaps  XMMWORD[96+rsp],xmm12
+        movaps  XMMWORD[112+rsp],xmm13
+        movaps  XMMWORD[128+rsp],xmm14
+        movaps  XMMWORD[144+rsp],xmm15
+$L$ocb_dec_body:
+        mov     rbx,QWORD[56+rax]
+        mov     rbp,QWORD[((56+8))+rax]
+
+        mov     r10d,DWORD[240+rcx]
+        mov     r11,rcx
+        shl     r10d,4
+        movups  xmm9,XMMWORD[rcx]
+        movups  xmm1,XMMWORD[16+r10*1+rcx]
+
+        movdqu  xmm15,XMMWORD[r9]
+        pxor    xmm9,xmm1
+        pxor    xmm15,xmm1
+
+        mov     eax,16+32
+        lea     rcx,[32+r10*1+r11]
+        movups  xmm1,XMMWORD[16+r11]
+        sub     rax,r10
+        mov     r10,rax
+
+        movdqu  xmm10,XMMWORD[rbx]
+        movdqu  xmm8,XMMWORD[rbp]
+
+        test    r8,1
+        jnz     NEAR $L$ocb_dec_odd
+
+        bsf     r12,r8
+        add     r8,1
+        shl     r12,4
+        movdqu  xmm7,XMMWORD[r12*1+rbx]
+        movdqu  xmm2,XMMWORD[rdi]
+        lea     rdi,[16+rdi]
+
+        call    __ocb_decrypt1
+
+        movdqa  xmm15,xmm7
+        movups  XMMWORD[rsi],xmm2
+        xorps   xmm8,xmm2
+        lea     rsi,[16+rsi]
+        sub     rdx,1
+        jz      NEAR $L$ocb_dec_done
+
+$L$ocb_dec_odd:
+        lea     r12,[1+r8]
+        lea     r13,[3+r8]
+        lea     r14,[5+r8]
+        lea     r8,[6+r8]
+        bsf     r12,r12
+        bsf     r13,r13
+        bsf     r14,r14
+        shl     r12,4
+        shl     r13,4
+        shl     r14,4
+
+        sub     rdx,6
+        jc      NEAR $L$ocb_dec_short
+        jmp     NEAR $L$ocb_dec_grandloop
+
+ALIGN   32
+$L$ocb_dec_grandloop:
+        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]
+        lea     rdi,[96+rdi]
+
+        call    __ocb_decrypt6
+
+        movups  XMMWORD[rsi],xmm2
+        pxor    xmm8,xmm2
+        movups  XMMWORD[16+rsi],xmm3
+        pxor    xmm8,xmm3
+        movups  XMMWORD[32+rsi],xmm4
+        pxor    xmm8,xmm4
+        movups  XMMWORD[48+rsi],xmm5
+        pxor    xmm8,xmm5
+        movups  XMMWORD[64+rsi],xmm6
+        pxor    xmm8,xmm6
+        movups  XMMWORD[80+rsi],xmm7
+        pxor    xmm8,xmm7
+        lea     rsi,[96+rsi]
+        sub     rdx,6
+        jnc     NEAR $L$ocb_dec_grandloop
+
+$L$ocb_dec_short:
+        add     rdx,6
+        jz      NEAR $L$ocb_dec_done
+
+        movdqu  xmm2,XMMWORD[rdi]
+        cmp     rdx,2
+        jb      NEAR $L$ocb_dec_one
+        movdqu  xmm3,XMMWORD[16+rdi]
+        je      NEAR $L$ocb_dec_two
+
+        movdqu  xmm4,XMMWORD[32+rdi]
+        cmp     rdx,4
+        jb      NEAR $L$ocb_dec_three
+        movdqu  xmm5,XMMWORD[48+rdi]
+        je      NEAR $L$ocb_dec_four
+
+        movdqu  xmm6,XMMWORD[64+rdi]
+        pxor    xmm7,xmm7
+
+        call    __ocb_decrypt6
+
+        movdqa  xmm15,xmm14
+        movups  XMMWORD[rsi],xmm2
+        pxor    xmm8,xmm2
+        movups  XMMWORD[16+rsi],xmm3
+        pxor    xmm8,xmm3
+        movups  XMMWORD[32+rsi],xmm4
+        pxor    xmm8,xmm4
+        movups  XMMWORD[48+rsi],xmm5
+        pxor    xmm8,xmm5
+        movups  XMMWORD[64+rsi],xmm6
+        pxor    xmm8,xmm6
+
+        jmp     NEAR $L$ocb_dec_done
+
+ALIGN   16
+$L$ocb_dec_one:
+        movdqa  xmm7,xmm10
+
+        call    __ocb_decrypt1
+
+        movdqa  xmm15,xmm7
+        movups  XMMWORD[rsi],xmm2
+        xorps   xmm8,xmm2
+        jmp     NEAR $L$ocb_dec_done
+
+ALIGN   16
+$L$ocb_dec_two:
+        pxor    xmm4,xmm4
+        pxor    xmm5,xmm5
+
+        call    __ocb_decrypt4
+
+        movdqa  xmm15,xmm11
+        movups  XMMWORD[rsi],xmm2
+        xorps   xmm8,xmm2
+        movups  XMMWORD[16+rsi],xmm3
+        xorps   xmm8,xmm3
+
+        jmp     NEAR $L$ocb_dec_done
+
+ALIGN   16
+$L$ocb_dec_three:
+        pxor    xmm5,xmm5
+
+        call    __ocb_decrypt4
+
+        movdqa  xmm15,xmm12
+        movups  XMMWORD[rsi],xmm2
+        xorps   xmm8,xmm2
+        movups  XMMWORD[16+rsi],xmm3
+        xorps   xmm8,xmm3
+        movups  XMMWORD[32+rsi],xmm4
+        xorps   xmm8,xmm4
+
+        jmp     NEAR $L$ocb_dec_done
+
+ALIGN   16
+$L$ocb_dec_four:
+        call    __ocb_decrypt4
+
+        movdqa  xmm15,xmm13
+        movups  XMMWORD[rsi],xmm2
+        pxor    xmm8,xmm2
+        movups  XMMWORD[16+rsi],xmm3
+        pxor    xmm8,xmm3
+        movups  XMMWORD[32+rsi],xmm4
+        pxor    xmm8,xmm4
+        movups  XMMWORD[48+rsi],xmm5
+        pxor    xmm8,xmm5
+
+$L$ocb_dec_done:
+        pxor    xmm15,xmm0
+        movdqu  XMMWORD[rbp],xmm8
+        movdqu  XMMWORD[r9],xmm15
+
+        xorps   xmm0,xmm0
+        pxor    xmm1,xmm1
+        pxor    xmm2,xmm2
+        pxor    xmm3,xmm3
+        pxor    xmm4,xmm4
+        pxor    xmm5,xmm5
+        movaps  xmm6,XMMWORD[rsp]
+        movaps  XMMWORD[rsp],xmm0
+        movaps  xmm7,XMMWORD[16+rsp]
+        movaps  XMMWORD[16+rsp],xmm0
+        movaps  xmm8,XMMWORD[32+rsp]
+        movaps  XMMWORD[32+rsp],xmm0
+        movaps  xmm9,XMMWORD[48+rsp]
+        movaps  XMMWORD[48+rsp],xmm0
+        movaps  xmm10,XMMWORD[64+rsp]
+        movaps  XMMWORD[64+rsp],xmm0
+        movaps  xmm11,XMMWORD[80+rsp]
+        movaps  XMMWORD[80+rsp],xmm0
+        movaps  xmm12,XMMWORD[96+rsp]
+        movaps  XMMWORD[96+rsp],xmm0
+        movaps  xmm13,XMMWORD[112+rsp]
+        movaps  XMMWORD[112+rsp],xmm0
+        movaps  xmm14,XMMWORD[128+rsp]
+        movaps  XMMWORD[128+rsp],xmm0
+        movaps  xmm15,XMMWORD[144+rsp]
+        movaps  XMMWORD[144+rsp],xmm0
+        lea     rax,[((160+40))+rsp]
+$L$ocb_dec_pop:
+        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$ocb_dec_epilogue:
+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
+        mov     rsi,QWORD[16+rsp]
+        DB      0F3h,0C3h               ;repret
+
+$L$SEH_end_aesni_ocb_decrypt:
+
+
+ALIGN   32
+__ocb_decrypt6:
+
+        pxor    xmm15,xmm9
+        movdqu  xmm11,XMMWORD[r12*1+rbx]
+        movdqa  xmm12,xmm10
+        movdqu  xmm13,XMMWORD[r13*1+rbx]
+        movdqa  xmm14,xmm10
+        pxor    xmm10,xmm15
+        movdqu  xmm15,XMMWORD[r14*1+rbx]
+        pxor    xmm11,xmm10
+        pxor    xmm2,xmm10
+        pxor    xmm12,xmm11
+        pxor    xmm3,xmm11
+        pxor    xmm13,xmm12
+        pxor    xmm4,xmm12
+        pxor    xmm14,xmm13
+        pxor    xmm5,xmm13
+        pxor    xmm15,xmm14
+        pxor    xmm6,xmm14
+        pxor    xmm7,xmm15
+        movups  xmm0,XMMWORD[32+r11]
+
+        lea     r12,[1+r8]
+        lea     r13,[3+r8]
+        lea     r14,[5+r8]
+        add     r8,6
+        pxor    xmm10,xmm9
+        bsf     r12,r12
+        bsf     r13,r13
+        bsf     r14,r14
+
+DB      102,15,56,222,209
+DB      102,15,56,222,217
+DB      102,15,56,222,225
+DB      102,15,56,222,233
+        pxor    xmm11,xmm9
+        pxor    xmm12,xmm9
+DB      102,15,56,222,241
+        pxor    xmm13,xmm9
+        pxor    xmm14,xmm9
+DB      102,15,56,222,249
+        movups  xmm1,XMMWORD[48+r11]
+        pxor    xmm15,xmm9
+
+DB      102,15,56,222,208
+DB      102,15,56,222,216
+DB      102,15,56,222,224
+DB      102,15,56,222,232
+DB      102,15,56,222,240
+DB      102,15,56,222,248
+        movups  xmm0,XMMWORD[64+r11]
+        shl     r12,4
+        shl     r13,4
+        jmp     NEAR $L$ocb_dec_loop6
+
+ALIGN   32
+$L$ocb_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[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
+DB      102,15,56,222,240
+DB      102,15,56,222,248
+        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
+        jnz     NEAR $L$ocb_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[16+r11]
+        shl     r14,4
+
+DB      102,65,15,56,223,210
+        movdqu  xmm10,XMMWORD[rbx]
+        mov     rax,r10
+DB      102,65,15,56,223,219
+DB      102,65,15,56,223,228
+DB      102,65,15,56,223,237
+DB      102,65,15,56,223,246
+DB      102,65,15,56,223,255
+        DB      0F3h,0C3h               ;repret
+
+
+
+
+ALIGN   32
+__ocb_decrypt4:
+
+        pxor    xmm15,xmm9
+        movdqu  xmm11,XMMWORD[r12*1+rbx]
+        movdqa  xmm12,xmm10
+        movdqu  xmm13,XMMWORD[r13*1+rbx]
+        pxor    xmm10,xmm15
+        pxor    xmm11,xmm10
+        pxor    xmm2,xmm10
+        pxor    xmm12,xmm11
+        pxor    xmm3,xmm11
+        pxor    xmm13,xmm12
+        pxor    xmm4,xmm12
+        pxor    xmm5,xmm13
+        movups  xmm0,XMMWORD[32+r11]
+
+        pxor    xmm10,xmm9
+        pxor    xmm11,xmm9
+        pxor    xmm12,xmm9
+        pxor    xmm13,xmm9
+
+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[48+r11]
+
+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[64+r11]
+        jmp     NEAR $L$ocb_dec_loop4
+
+ALIGN   32
+$L$ocb_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[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[((-16))+rax*1+rcx]
+        jnz     NEAR $L$ocb_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[16+r11]
+        mov     rax,r10
+
+DB      102,65,15,56,223,210
+DB      102,65,15,56,223,219
+DB      102,65,15,56,223,228
+DB      102,65,15,56,223,237
+        DB      0F3h,0C3h               ;repret
+
+
+
+
+ALIGN   32
+__ocb_decrypt1:
+
+        pxor    xmm7,xmm15
+        pxor    xmm7,xmm9
+        pxor    xmm2,xmm7
+        movups  xmm0,XMMWORD[32+r11]
+
+DB      102,15,56,222,209
+        movups  xmm1,XMMWORD[48+r11]
+        pxor    xmm7,xmm9
+
+DB      102,15,56,222,208
+        movups  xmm0,XMMWORD[64+r11]
+        jmp     NEAR $L$ocb_dec_loop1
+
+ALIGN   32
+$L$ocb_dec_loop1:
+DB      102,15,56,222,209
+        movups  xmm1,XMMWORD[rax*1+rcx]
+        add     rax,32
+
+DB      102,15,56,222,208
+        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
+        jnz     NEAR $L$ocb_dec_loop1
+
+DB      102,15,56,222,209
+        movups  xmm1,XMMWORD[16+r11]
+        mov     rax,r10
+
+DB      102,15,56,223,215
+        DB      0F3h,0C3h               ;repret
+
+
+global  aesni_cbc_encrypt
+
+ALIGN   16
+aesni_cbc_encrypt:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_aesni_cbc_encrypt:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+        mov     rcx,r9
+        mov     r8,QWORD[40+rsp]
+        mov     r9,QWORD[48+rsp]
+
+
+
+        test    rdx,rdx
+        jz      NEAR $L$cbc_ret
+
+        mov     r10d,DWORD[240+rcx]
+        mov     r11,rcx
+        test    r9d,r9d
+        jz      NEAR $L$cbc_decrypt
+
+        movups  xmm2,XMMWORD[r8]
+        mov     eax,r10d
+        cmp     rdx,16
+        jb      NEAR $L$cbc_enc_tail
+        sub     rdx,16
+        jmp     NEAR $L$cbc_enc_loop
+ALIGN   16
+$L$cbc_enc_loop:
+        movups  xmm3,XMMWORD[rdi]
+        lea     rdi,[16+rdi]
+
+        movups  xmm0,XMMWORD[rcx]
+        movups  xmm1,XMMWORD[16+rcx]
+        xorps   xmm3,xmm0
+        lea     rcx,[32+rcx]
+        xorps   xmm2,xmm3
+$L$oop_enc1_15:
+DB      102,15,56,220,209
+        dec     eax
+        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[rsi],xmm2
+        lea     rsi,[16+rsi]
+        sub     rdx,16
+        jnc     NEAR $L$cbc_enc_loop
+        add     rdx,16
+        jnz     NEAR $L$cbc_enc_tail
+        pxor    xmm0,xmm0
+        pxor    xmm1,xmm1
+        movups  XMMWORD[r8],xmm2
+        pxor    xmm2,xmm2
+        pxor    xmm3,xmm3
+        jmp     NEAR $L$cbc_ret
+
+$L$cbc_enc_tail:
+        mov     rcx,rdx
+        xchg    rsi,rdi
+        DD      0x9066A4F3
+        mov     ecx,16
+        sub     rcx,rdx
+        xor     eax,eax
+        DD      0x9066AAF3
+        lea     rdi,[((-16))+rdi]
+        mov     eax,r10d
+        mov     rsi,rdi
+        mov     rcx,r11
+        xor     rdx,rdx
+        jmp     NEAR $L$cbc_enc_loop
+
+ALIGN   16
+$L$cbc_decrypt:
+        cmp     rdx,16
+        jne     NEAR $L$cbc_decrypt_bulk
+
+
+
+        movdqu  xmm2,XMMWORD[rdi]
+        movdqu  xmm3,XMMWORD[r8]
+        movdqa  xmm4,xmm2
+        movups  xmm0,XMMWORD[rcx]
+        movups  xmm1,XMMWORD[16+rcx]
+        lea     rcx,[32+rcx]
+        xorps   xmm2,xmm0
+$L$oop_dec1_16:
+DB      102,15,56,222,209
+        dec     r10d
+        movups  xmm1,XMMWORD[rcx]
+        lea     rcx,[16+rcx]
+        jnz     NEAR $L$oop_dec1_16
+DB      102,15,56,223,209
+        pxor    xmm0,xmm0
+        pxor    xmm1,xmm1
+        movdqu  XMMWORD[r8],xmm4
+        xorps   xmm2,xmm3
+        pxor    xmm3,xmm3
+        movups  XMMWORD[rsi],xmm2
+        pxor    xmm2,xmm2
+        jmp     NEAR $L$cbc_ret
+ALIGN   16
+$L$cbc_decrypt_bulk:
+        lea     r11,[rsp]
+
+        push    rbp
+
+        sub     rsp,176
+        and     rsp,-16
+        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:
+        mov     rbp,rcx
+        movups  xmm10,XMMWORD[r8]
+        mov     eax,r10d
+        cmp     rdx,0x50
+        jbe     NEAR $L$cbc_dec_tail
+
+        movups  xmm0,XMMWORD[rcx]
+        movdqu  xmm2,XMMWORD[rdi]
+        movdqu  xmm3,XMMWORD[16+rdi]
+        movdqa  xmm11,xmm2
+        movdqu  xmm4,XMMWORD[32+rdi]
+        movdqa  xmm12,xmm3
+        movdqu  xmm5,XMMWORD[48+rdi]
+        movdqa  xmm13,xmm4
+        movdqu  xmm6,XMMWORD[64+rdi]
+        movdqa  xmm14,xmm5
+        movdqu  xmm7,XMMWORD[80+rdi]
+        movdqa  xmm15,xmm6
+        mov     r9d,DWORD[((OPENSSL_ia32cap_P+4))]
+        cmp     rdx,0x70
+        jbe     NEAR $L$cbc_dec_six_or_seven
+
+        and     r9d,71303168
+        sub     rdx,0x50
+        cmp     r9d,4194304
+        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[rsi],xmm9
+        lea     rsi,[16+rsi]
+$L$cbc_dec_loop8_enter:
+        movdqu  xmm8,XMMWORD[96+rdi]
+        pxor    xmm2,xmm0
+        movdqu  xmm9,XMMWORD[112+rdi]
+        pxor    xmm3,xmm0
+        movups  xmm1,XMMWORD[((16-112))+rcx]
+        pxor    xmm4,xmm0
+        mov     rbp,-1
+        cmp     rdx,0x70
+        pxor    xmm5,xmm0
+        pxor    xmm6,xmm0
+        pxor    xmm7,xmm0
+        pxor    xmm8,xmm0
+
+DB      102,15,56,222,209
+        pxor    xmm9,xmm0
+        movups  xmm0,XMMWORD[((32-112))+rcx]
+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
+DB      102,68,15,56,222,193
+        adc     rbp,0
+        and     rbp,128
+DB      102,68,15,56,222,201
+        add     rbp,rdi
+        movups  xmm1,XMMWORD[((48-112))+rcx]
+DB      102,15,56,222,208
+DB      102,15,56,222,216
+DB      102,15,56,222,224
+DB      102,15,56,222,232
+DB      102,15,56,222,240
+DB      102,15,56,222,248
+DB      102,68,15,56,222,192
+DB      102,68,15,56,222,200
+        movups  xmm0,XMMWORD[((64-112))+rcx]
+        nop
+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
+DB      102,68,15,56,222,193
+DB      102,68,15,56,222,201
+        movups  xmm1,XMMWORD[((80-112))+rcx]
+        nop
+DB      102,15,56,222,208
+DB      102,15,56,222,216
+DB      102,15,56,222,224
+DB      102,15,56,222,232
+DB      102,15,56,222,240
+DB      102,15,56,222,248
+DB      102,68,15,56,222,192
+DB      102,68,15,56,222,200
+        movups  xmm0,XMMWORD[((96-112))+rcx]
+        nop
+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
+DB      102,68,15,56,222,193
+DB      102,68,15,56,222,201
+        movups  xmm1,XMMWORD[((112-112))+rcx]
+        nop
+DB      102,15,56,222,208
+DB      102,15,56,222,216
+DB      102,15,56,222,224
+DB      102,15,56,222,232
+DB      102,15,56,222,240
+DB      102,15,56,222,248
+DB      102,68,15,56,222,192
+DB      102,68,15,56,222,200
+        movups  xmm0,XMMWORD[((128-112))+rcx]
+        nop
+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
+DB      102,68,15,56,222,193
+DB      102,68,15,56,222,201
+        movups  xmm1,XMMWORD[((144-112))+rcx]
+        cmp     eax,11
+DB      102,15,56,222,208
+DB      102,15,56,222,216
+DB      102,15,56,222,224
+DB      102,15,56,222,232
+DB      102,15,56,222,240
+DB      102,15,56,222,248
+DB      102,68,15,56,222,192
+DB      102,68,15,56,222,200
+        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
+DB      102,15,56,222,233
+DB      102,15,56,222,241
+DB      102,15,56,222,249
+DB      102,68,15,56,222,193
+DB      102,68,15,56,222,201
+        movups  xmm1,XMMWORD[((176-112))+rcx]
+        nop
+DB      102,15,56,222,208
+DB      102,15,56,222,216
+DB      102,15,56,222,224
+DB      102,15,56,222,232
+DB      102,15,56,222,240
+DB      102,15,56,222,248
+DB      102,68,15,56,222,192
+DB      102,68,15,56,222,200
+        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
+DB      102,15,56,222,233
+DB      102,15,56,222,241
+DB      102,15,56,222,249
+DB      102,68,15,56,222,193
+DB      102,68,15,56,222,201
+        movups  xmm1,XMMWORD[((208-112))+rcx]
+        nop
+DB      102,15,56,222,208
+DB      102,15,56,222,216
+DB      102,15,56,222,224
+DB      102,15,56,222,232
+DB      102,15,56,222,240
+DB      102,15,56,222,248
+DB      102,68,15,56,222,192
+DB      102,68,15,56,222,200
+        movups  xmm0,XMMWORD[((224-112))+rcx]
+        jmp     NEAR $L$cbc_dec_done
+ALIGN   16
+$L$cbc_dec_done:
+DB      102,15,56,222,209
+DB      102,15,56,222,217
+        pxor    xmm10,xmm0
+        pxor    xmm11,xmm0
+DB      102,15,56,222,225
+DB      102,15,56,222,233
+        pxor    xmm12,xmm0
+        pxor    xmm13,xmm0
+DB      102,15,56,222,241
+DB      102,15,56,222,249
+        pxor    xmm14,xmm0
+        pxor    xmm15,xmm0
+DB      102,68,15,56,222,193
+DB      102,68,15,56,222,201
+        movdqu  xmm1,XMMWORD[80+rdi]
+
+DB      102,65,15,56,223,210
+        movdqu  xmm10,XMMWORD[96+rdi]
+        pxor    xmm1,xmm0
+DB      102,65,15,56,223,219
+        pxor    xmm10,xmm0
+        movdqu  xmm0,XMMWORD[112+rdi]
+DB      102,65,15,56,223,228
+        lea     rdi,[128+rdi]
+        movdqu  xmm11,XMMWORD[rbp]
+DB      102,65,15,56,223,237
+DB      102,65,15,56,223,246
+        movdqu  xmm12,XMMWORD[16+rbp]
+        movdqu  xmm13,XMMWORD[32+rbp]
+DB      102,65,15,56,223,255
+DB      102,68,15,56,223,193
+        movdqu  xmm14,XMMWORD[48+rbp]
+        movdqu  xmm15,XMMWORD[64+rbp]
+DB      102,69,15,56,223,202
+        movdqa  xmm10,xmm0
+        movdqu  xmm1,XMMWORD[80+rbp]
+        movups  xmm0,XMMWORD[((-112))+rcx]
+
+        movups  XMMWORD[rsi],xmm2
+        movdqa  xmm2,xmm11
+        movups  XMMWORD[16+rsi],xmm3
+        movdqa  xmm3,xmm12
+        movups  XMMWORD[32+rsi],xmm4
+        movdqa  xmm4,xmm13
+        movups  XMMWORD[48+rsi],xmm5
+        movdqa  xmm5,xmm14
+        movups  XMMWORD[64+rsi],xmm6
+        movdqa  xmm6,xmm15
+        movups  XMMWORD[80+rsi],xmm7
+        movdqa  xmm7,xmm1
+        movups  XMMWORD[96+rsi],xmm8
+        lea     rsi,[112+rsi]
+
+        sub     rdx,0x80
+        ja      NEAR $L$cbc_dec_loop8
+
+        movaps  xmm2,xmm9
+        lea     rcx,[((-112))+rcx]
+        add     rdx,0x70
+        jle     NEAR $L$cbc_dec_clear_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,0x60
+        ja      NEAR $L$cbc_dec_seven
+
+        movaps  xmm8,xmm7
+        call    _aesni_decrypt6
+        pxor    xmm2,xmm10
+        movaps  xmm10,xmm8
+        pxor    xmm3,xmm11
+        movdqu  XMMWORD[rsi],xmm2
+        pxor    xmm4,xmm12
+        movdqu  XMMWORD[16+rsi],xmm3
+        pxor    xmm3,xmm3
+        pxor    xmm5,xmm13
+        movdqu  XMMWORD[32+rsi],xmm4
+        pxor    xmm4,xmm4
+        pxor    xmm6,xmm14
+        movdqu  XMMWORD[48+rsi],xmm5
+        pxor    xmm5,xmm5
+        pxor    xmm7,xmm15
+        movdqu  XMMWORD[64+rsi],xmm6
+        pxor    xmm6,xmm6
+        lea     rsi,[80+rsi]
+        movdqa  xmm2,xmm7
+        pxor    xmm7,xmm7
+        jmp     NEAR $L$cbc_dec_tail_collected
+
+ALIGN   16
+$L$cbc_dec_seven:
+        movups  xmm8,XMMWORD[96+rdi]
+        xorps   xmm9,xmm9
+        call    _aesni_decrypt8
+        movups  xmm9,XMMWORD[80+rdi]
+        pxor    xmm2,xmm10
+        movups  xmm10,XMMWORD[96+rdi]
+        pxor    xmm3,xmm11
+        movdqu  XMMWORD[rsi],xmm2
+        pxor    xmm4,xmm12
+        movdqu  XMMWORD[16+rsi],xmm3
+        pxor    xmm3,xmm3
+        pxor    xmm5,xmm13
+        movdqu  XMMWORD[32+rsi],xmm4
+        pxor    xmm4,xmm4
+        pxor    xmm6,xmm14
+        movdqu  XMMWORD[48+rsi],xmm5
+        pxor    xmm5,xmm5
+        pxor    xmm7,xmm15
+        movdqu  XMMWORD[64+rsi],xmm6
+        pxor    xmm6,xmm6
+        pxor    xmm8,xmm9
+        movdqu  XMMWORD[80+rsi],xmm7
+        pxor    xmm7,xmm7
+        lea     rsi,[96+rsi]
+        movdqa  xmm2,xmm8
+        pxor    xmm8,xmm8
+        pxor    xmm9,xmm9
+        jmp     NEAR $L$cbc_dec_tail_collected
+
+ALIGN   16
+$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[32+rdi]
+        movdqa  xmm12,xmm3
+        movdqu  xmm5,XMMWORD[48+rdi]
+        movdqa  xmm13,xmm4
+        movdqu  xmm6,XMMWORD[64+rdi]
+        movdqa  xmm14,xmm5
+        movdqu  xmm7,XMMWORD[80+rdi]
+        movdqa  xmm15,xmm6
+$L$cbc_dec_loop6_enter:
+        lea     rdi,[96+rdi]
+        movdqa  xmm8,xmm7
+
+        call    _aesni_decrypt6
+
+        pxor    xmm2,xmm10
+        movdqa  xmm10,xmm8
+        pxor    xmm3,xmm11
+        movdqu  XMMWORD[rsi],xmm2
+        pxor    xmm4,xmm12
+        movdqu  XMMWORD[16+rsi],xmm3
+        pxor    xmm5,xmm13
+        movdqu  XMMWORD[32+rsi],xmm4
+        pxor    xmm6,xmm14
+        mov     rcx,rbp
+        movdqu  XMMWORD[48+rsi],xmm5
+        pxor    xmm7,xmm15
+        mov     eax,r10d
+        movdqu  XMMWORD[64+rsi],xmm6
+        lea     rsi,[80+rsi]
+        sub     rdx,0x60
+        ja      NEAR $L$cbc_dec_loop6
+
+        movdqa  xmm2,xmm7
+        add     rdx,0x50
+        jle     NEAR $L$cbc_dec_clear_tail_collected
+        movups  XMMWORD[rsi],xmm7
+        lea     rsi,[16+rsi]
+
+$L$cbc_dec_tail:
+        movups  xmm2,XMMWORD[rdi]
+        sub     rdx,0x10
+        jbe     NEAR $L$cbc_dec_one
+
+        movups  xmm3,XMMWORD[16+rdi]
+        movaps  xmm11,xmm2
+        sub     rdx,0x10
+        jbe     NEAR $L$cbc_dec_two
+
+        movups  xmm4,XMMWORD[32+rdi]
+        movaps  xmm12,xmm3
+        sub     rdx,0x10
+        jbe     NEAR $L$cbc_dec_three
+
+        movups  xmm5,XMMWORD[48+rdi]
+        movaps  xmm13,xmm4
+        sub     rdx,0x10
+        jbe     NEAR $L$cbc_dec_four
+
+        movups  xmm6,XMMWORD[64+rdi]
+        movaps  xmm14,xmm5
+        movaps  xmm15,xmm6
+        xorps   xmm7,xmm7
+        call    _aesni_decrypt6
+        pxor    xmm2,xmm10
+        movaps  xmm10,xmm15
+        pxor    xmm3,xmm11
+        movdqu  XMMWORD[rsi],xmm2
+        pxor    xmm4,xmm12
+        movdqu  XMMWORD[16+rsi],xmm3
+        pxor    xmm3,xmm3
+        pxor    xmm5,xmm13
+        movdqu  XMMWORD[32+rsi],xmm4
+        pxor    xmm4,xmm4
+        pxor    xmm6,xmm14
+        movdqu  XMMWORD[48+rsi],xmm5
+        pxor    xmm5,xmm5
+        lea     rsi,[64+rsi]
+        movdqa  xmm2,xmm6
+        pxor    xmm6,xmm6
+        pxor    xmm7,xmm7
+        sub     rdx,0x10
+        jmp     NEAR $L$cbc_dec_tail_collected
+
+ALIGN   16
+$L$cbc_dec_one:
+        movaps  xmm11,xmm2
+        movups  xmm0,XMMWORD[rcx]
+        movups  xmm1,XMMWORD[16+rcx]
+        lea     rcx,[32+rcx]
+        xorps   xmm2,xmm0
+$L$oop_dec1_17:
+DB      102,15,56,222,209
+        dec     eax
+        movups  xmm1,XMMWORD[rcx]
+        lea     rcx,[16+rcx]
+        jnz     NEAR $L$oop_dec1_17
+DB      102,15,56,223,209
+        xorps   xmm2,xmm10
+        movaps  xmm10,xmm11
+        jmp     NEAR $L$cbc_dec_tail_collected
+ALIGN   16
+$L$cbc_dec_two:
+        movaps  xmm12,xmm3
+        call    _aesni_decrypt2
+        pxor    xmm2,xmm10
+        movaps  xmm10,xmm12
+        pxor    xmm3,xmm11
+        movdqu  XMMWORD[rsi],xmm2
+        movdqa  xmm2,xmm3
+        pxor    xmm3,xmm3
+        lea     rsi,[16+rsi]
+        jmp     NEAR $L$cbc_dec_tail_collected
+ALIGN   16
+$L$cbc_dec_three:
+        movaps  xmm13,xmm4
+        call    _aesni_decrypt3
+        pxor    xmm2,xmm10
+        movaps  xmm10,xmm13
+        pxor    xmm3,xmm11
+        movdqu  XMMWORD[rsi],xmm2
+        pxor    xmm4,xmm12
+        movdqu  XMMWORD[16+rsi],xmm3
+        pxor    xmm3,xmm3
+        movdqa  xmm2,xmm4
+        pxor    xmm4,xmm4
+        lea     rsi,[32+rsi]
+        jmp     NEAR $L$cbc_dec_tail_collected
+ALIGN   16
+$L$cbc_dec_four:
+        movaps  xmm14,xmm5
+        call    _aesni_decrypt4
+        pxor    xmm2,xmm10
+        movaps  xmm10,xmm14
+        pxor    xmm3,xmm11
+        movdqu  XMMWORD[rsi],xmm2
+        pxor    xmm4,xmm12
+        movdqu  XMMWORD[16+rsi],xmm3
+        pxor    xmm3,xmm3
+        pxor    xmm5,xmm13
+        movdqu  XMMWORD[32+rsi],xmm4
+        pxor    xmm4,xmm4
+        movdqa  xmm2,xmm5
+        pxor    xmm5,xmm5
+        lea     rsi,[48+rsi]
+        jmp     NEAR $L$cbc_dec_tail_collected
+
+ALIGN   16
+$L$cbc_dec_clear_tail_collected:
+        pxor    xmm3,xmm3
+        pxor    xmm4,xmm4
+        pxor    xmm5,xmm5
+$L$cbc_dec_tail_collected:
+        movups  XMMWORD[r8],xmm10
+        and     rdx,15
+        jnz     NEAR $L$cbc_dec_tail_partial
+        movups  XMMWORD[rsi],xmm2
+        pxor    xmm2,xmm2
+        jmp     NEAR $L$cbc_dec_ret
+ALIGN   16
+$L$cbc_dec_tail_partial:
+        movaps  XMMWORD[rsp],xmm2
+        pxor    xmm2,xmm2
+        mov     rcx,16
+        mov     rdi,rsi
+        sub     rcx,rdx
+        lea     rsi,[rsp]
+        DD      0x9066A4F3
+        movdqa  XMMWORD[rsp],xmm2
+
+$L$cbc_dec_ret:
+        xorps   xmm0,xmm0
+        pxor    xmm1,xmm1
+        movaps  xmm6,XMMWORD[16+rsp]
+        movaps  XMMWORD[16+rsp],xmm0
+        movaps  xmm7,XMMWORD[32+rsp]
+        movaps  XMMWORD[32+rsp],xmm0
+        movaps  xmm8,XMMWORD[48+rsp]
+        movaps  XMMWORD[48+rsp],xmm0
+        movaps  xmm9,XMMWORD[64+rsp]
+        movaps  XMMWORD[64+rsp],xmm0
+        movaps  xmm10,XMMWORD[80+rsp]
+        movaps  XMMWORD[80+rsp],xmm0
+        movaps  xmm11,XMMWORD[96+rsp]
+        movaps  XMMWORD[96+rsp],xmm0
+        movaps  xmm12,XMMWORD[112+rsp]
+        movaps  XMMWORD[112+rsp],xmm0
+        movaps  xmm13,XMMWORD[128+rsp]
+        movaps  XMMWORD[128+rsp],xmm0
+        movaps  xmm14,XMMWORD[144+rsp]
+        movaps  XMMWORD[144+rsp],xmm0
+        movaps  xmm15,XMMWORD[160+rsp]
+        movaps  XMMWORD[160+rsp],xmm0
+        mov     rbp,QWORD[((-8))+r11]
+
+        lea     rsp,[r11]
+
+$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:
+global  aesni_set_decrypt_key
+
+ALIGN   16
+aesni_set_decrypt_key:
+
+DB      0x48,0x83,0xEC,0x08
+
+        call    __aesni_set_encrypt_key
+        shl     edx,4
+        test    eax,eax
+        jnz     NEAR $L$dec_key_ret
+        lea     rcx,[16+rdx*1+r8]
+
+        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[r8]
+        movups  xmm1,XMMWORD[rcx]
+DB      102,15,56,219,192
+DB      102,15,56,219,201
+        lea     r8,[16+r8]
+        lea     rcx,[((-16))+rcx]
+        movups  XMMWORD[16+rcx],xmm0
+        movups  XMMWORD[(-16)+r8],xmm1
+        cmp     rcx,r8
+        ja      NEAR $L$dec_key_inverse
+
+        movups  xmm0,XMMWORD[r8]
+DB      102,15,56,219,192
+        pxor    xmm1,xmm1
+        movups  XMMWORD[rcx],xmm0
+        pxor    xmm0,xmm0
+$L$dec_key_ret:
+        add     rsp,8
+
+        DB      0F3h,0C3h               ;repret
+
+$L$SEH_end_set_decrypt_key:
+
+global  aesni_set_encrypt_key
+
+ALIGN   16
+aesni_set_encrypt_key:
+__aesni_set_encrypt_key:
+
+DB      0x48,0x83,0xEC,0x08
+
+        mov     rax,-1
+        test    rcx,rcx
+        jz      NEAR $L$enc_key_ret
+        test    r8,r8
+        jz      NEAR $L$enc_key_ret
+
+        mov     r10d,268437504
+        movups  xmm0,XMMWORD[rcx]
+        xorps   xmm4,xmm4
+        and     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
+        lea     rax,[16+r8]
+        cmp     edx,256
+        je      NEAR $L$14rounds
+        cmp     edx,192
+        je      NEAR $L$12rounds
+        cmp     edx,128
+        jne     NEAR $L$bad_keybits
+
+$L$10rounds:
+        mov     edx,9
+        cmp     r10d,268435456
+        je      NEAR $L$10rounds_alt
+
+        movups  XMMWORD[r8],xmm0
+DB      102,15,58,223,200,1
+        call    $L$key_expansion_128_cold
+DB      102,15,58,223,200,2
+        call    $L$key_expansion_128
+DB      102,15,58,223,200,4
+        call    $L$key_expansion_128
+DB      102,15,58,223,200,8
+        call    $L$key_expansion_128
+DB      102,15,58,223,200,16
+        call    $L$key_expansion_128
+DB      102,15,58,223,200,32
+        call    $L$key_expansion_128
+DB      102,15,58,223,200,64
+        call    $L$key_expansion_128
+DB      102,15,58,223,200,128
+        call    $L$key_expansion_128
+DB      102,15,58,223,200,27
+        call    $L$key_expansion_128
+DB      102,15,58,223,200,54
+        call    $L$key_expansion_128
+        movups  XMMWORD[rax],xmm0
+        mov     DWORD[80+rax],edx
+        xor     eax,eax
+        jmp     NEAR $L$enc_key_ret
+
+ALIGN   16
+$L$10rounds_alt:
+        movdqa  xmm5,XMMWORD[$L$key_rotate]
+        mov     r10d,8
+        movdqa  xmm4,XMMWORD[$L$key_rcon1]
+        movdqa  xmm2,xmm0
+        movdqu  XMMWORD[r8],xmm0
+        jmp     NEAR $L$oop_key128
+
+ALIGN   16
+$L$oop_key128:
+DB      102,15,56,0,197
+DB      102,15,56,221,196
+        pslld   xmm4,1
+        lea     rax,[16+rax]
+
+        movdqa  xmm3,xmm2
+        pslldq  xmm2,4
+        pxor    xmm3,xmm2
+        pslldq  xmm2,4
+        pxor    xmm3,xmm2
+        pslldq  xmm2,4
+        pxor    xmm2,xmm3
+
+        pxor    xmm0,xmm2
+        movdqu  XMMWORD[(-16)+rax],xmm0
+        movdqa  xmm2,xmm0
+
+        dec     r10d
+        jnz     NEAR $L$oop_key128
+
+        movdqa  xmm4,XMMWORD[$L$key_rcon1b]
+
+DB      102,15,56,0,197
+DB      102,15,56,221,196
+        pslld   xmm4,1
+
+        movdqa  xmm3,xmm2
+        pslldq  xmm2,4
+        pxor    xmm3,xmm2
+        pslldq  xmm2,4
+        pxor    xmm3,xmm2
+        pslldq  xmm2,4
+        pxor    xmm2,xmm3
+
+        pxor    xmm0,xmm2
+        movdqu  XMMWORD[rax],xmm0
+
+        movdqa  xmm2,xmm0
+DB      102,15,56,0,197
+DB      102,15,56,221,196
+
+        movdqa  xmm3,xmm2
+        pslldq  xmm2,4
+        pxor    xmm3,xmm2
+        pslldq  xmm2,4
+        pxor    xmm3,xmm2
+        pslldq  xmm2,4
+        pxor    xmm2,xmm3
+
+        pxor    xmm0,xmm2
+        movdqu  XMMWORD[16+rax],xmm0
+
+        mov     DWORD[96+rax],edx
+        xor     eax,eax
+        jmp     NEAR $L$enc_key_ret
+
+ALIGN   16
+$L$12rounds:
+        movq    xmm2,QWORD[16+rcx]
+        mov     edx,11
+        cmp     r10d,268435456
+        je      NEAR $L$12rounds_alt
+
+        movups  XMMWORD[r8],xmm0
+DB      102,15,58,223,202,1
+        call    $L$key_expansion_192a_cold
+DB      102,15,58,223,202,2
+        call    $L$key_expansion_192b
+DB      102,15,58,223,202,4
+        call    $L$key_expansion_192a
+DB      102,15,58,223,202,8
+        call    $L$key_expansion_192b
+DB      102,15,58,223,202,16
+        call    $L$key_expansion_192a
+DB      102,15,58,223,202,32
+        call    $L$key_expansion_192b
+DB      102,15,58,223,202,64
+        call    $L$key_expansion_192a
+DB      102,15,58,223,202,128
+        call    $L$key_expansion_192b
+        movups  XMMWORD[rax],xmm0
+        mov     DWORD[48+rax],edx
+        xor     rax,rax
+        jmp     NEAR $L$enc_key_ret
+
+ALIGN   16
+$L$12rounds_alt:
+        movdqa  xmm5,XMMWORD[$L$key_rotate192]
+        movdqa  xmm4,XMMWORD[$L$key_rcon1]
+        mov     r10d,8
+        movdqu  XMMWORD[r8],xmm0
+        jmp     NEAR $L$oop_key192
+
+ALIGN   16
+$L$oop_key192:
+        movq    QWORD[rax],xmm2
+        movdqa  xmm1,xmm2
+DB      102,15,56,0,213
+DB      102,15,56,221,212
+        pslld   xmm4,1
+        lea     rax,[24+rax]
+
+        movdqa  xmm3,xmm0
+        pslldq  xmm0,4
+        pxor    xmm3,xmm0
+        pslldq  xmm0,4
+        pxor    xmm3,xmm0
+        pslldq  xmm0,4
+        pxor    xmm0,xmm3
+
+        pshufd  xmm3,xmm0,0xff
+        pxor    xmm3,xmm1
+        pslldq  xmm1,4
+        pxor    xmm3,xmm1
+
+        pxor    xmm0,xmm2
+        pxor    xmm2,xmm3
+        movdqu  XMMWORD[(-16)+rax],xmm0
+
+        dec     r10d
+        jnz     NEAR $L$oop_key192
+
+        mov     DWORD[32+rax],edx
+        xor     eax,eax
+        jmp     NEAR $L$enc_key_ret
+
+ALIGN   16
+$L$14rounds:
+        movups  xmm2,XMMWORD[16+rcx]
+        mov     edx,13
+        lea     rax,[16+rax]
+        cmp     r10d,268435456
+        je      NEAR $L$14rounds_alt
+
+        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
+        call    $L$key_expansion_256b
+DB      102,15,58,223,202,2
+        call    $L$key_expansion_256a
+DB      102,15,58,223,200,2
+        call    $L$key_expansion_256b
+DB      102,15,58,223,202,4
+        call    $L$key_expansion_256a
+DB      102,15,58,223,200,4
+        call    $L$key_expansion_256b
+DB      102,15,58,223,202,8
+        call    $L$key_expansion_256a
+DB      102,15,58,223,200,8
+        call    $L$key_expansion_256b
+DB      102,15,58,223,202,16
+        call    $L$key_expansion_256a
+DB      102,15,58,223,200,16
+        call    $L$key_expansion_256b
+DB      102,15,58,223,202,32
+        call    $L$key_expansion_256a
+DB      102,15,58,223,200,32
+        call    $L$key_expansion_256b
+DB      102,15,58,223,202,64
+        call    $L$key_expansion_256a
+        movups  XMMWORD[rax],xmm0
+        mov     DWORD[16+rax],edx
+        xor     rax,rax
+        jmp     NEAR $L$enc_key_ret
+
+ALIGN   16
+$L$14rounds_alt:
+        movdqa  xmm5,XMMWORD[$L$key_rotate]
+        movdqa  xmm4,XMMWORD[$L$key_rcon1]
+        mov     r10d,7
+        movdqu  XMMWORD[r8],xmm0
+        movdqa  xmm1,xmm2
+        movdqu  XMMWORD[16+r8],xmm2
+        jmp     NEAR $L$oop_key256
+
+ALIGN   16
+$L$oop_key256:
+DB      102,15,56,0,213
+DB      102,15,56,221,212
+
+        movdqa  xmm3,xmm0
+        pslldq  xmm0,4
+        pxor    xmm3,xmm0
+        pslldq  xmm0,4
+        pxor    xmm3,xmm0
+        pslldq  xmm0,4
+        pxor    xmm0,xmm3
+        pslld   xmm4,1
+
+        pxor    xmm0,xmm2
+        movdqu  XMMWORD[rax],xmm0
+
+        dec     r10d
+        jz      NEAR $L$done_key256
+
+        pshufd  xmm2,xmm0,0xff
+        pxor    xmm3,xmm3
+DB      102,15,56,221,211
+
+        movdqa  xmm3,xmm1
+        pslldq  xmm1,4
+        pxor    xmm3,xmm1
+        pslldq  xmm1,4
+        pxor    xmm3,xmm1
+        pslldq  xmm1,4
+        pxor    xmm1,xmm3
+
+        pxor    xmm2,xmm1
+        movdqu  XMMWORD[16+rax],xmm2
+        lea     rax,[32+rax]
+        movdqa  xmm1,xmm2
+
+        jmp     NEAR $L$oop_key256
+
+$L$done_key256:
+        mov     DWORD[16+rax],edx
+        xor     eax,eax
+        jmp     NEAR $L$enc_key_ret
+
+ALIGN   16
+$L$bad_keybits:
+        mov     rax,-2
+$L$enc_key_ret:
+        pxor    xmm0,xmm0
+        pxor    xmm1,xmm1
+        pxor    xmm2,xmm2
+        pxor    xmm3,xmm3
+        pxor    xmm4,xmm4
+        pxor    xmm5,xmm5
+        add     rsp,8
+
+        DB      0F3h,0C3h               ;repret
+$L$SEH_end_set_encrypt_key:
+
+ALIGN   16
+$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
+        xorps   xmm0,xmm4
+        shufps  xmm1,xmm1,255
+        xorps   xmm0,xmm1
+        DB      0F3h,0C3h               ;repret
+
+ALIGN   16
+$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:
+        shufps  xmm4,xmm0,16
+        movdqa  xmm3,xmm2
+        xorps   xmm0,xmm4
+        shufps  xmm4,xmm0,140
+        pslldq  xmm3,4
+        xorps   xmm0,xmm4
+        pshufd  xmm1,xmm1,85
+        pxor    xmm2,xmm3
+        pxor    xmm0,xmm1
+        pshufd  xmm3,xmm0,255
+        pxor    xmm2,xmm3
+        DB      0F3h,0C3h               ;repret
+
+ALIGN   16
+$L$key_expansion_192b:
+        movaps  xmm3,xmm0
+        shufps  xmm5,xmm0,68
+        movups  XMMWORD[rax],xmm5
+        shufps  xmm3,xmm2,78
+        movups  XMMWORD[16+rax],xmm3
+        lea     rax,[32+rax]
+        jmp     NEAR $L$key_expansion_192b_warm
+
+ALIGN   16
+$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
+        xorps   xmm0,xmm4
+        shufps  xmm1,xmm1,255
+        xorps   xmm0,xmm1
+        DB      0F3h,0C3h               ;repret
+
+ALIGN   16
+$L$key_expansion_256b:
+        movups  XMMWORD[rax],xmm0
+        lea     rax,[16+rax]
+
+        shufps  xmm4,xmm2,16
+        xorps   xmm2,xmm4
+        shufps  xmm4,xmm2,140
+        xorps   xmm2,xmm4
+        shufps  xmm1,xmm1,170
+        xorps   xmm2,xmm1
+        DB      0F3h,0C3h               ;repret
+
+
+
+ALIGN   64
+$L$bswap_mask:
+DB      15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
+$L$increment32:
+        DD      6,6,6,0
+$L$increment64:
+        DD      1,0,0,0
+$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
+$L$key_rotate:
+        DD      0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
+$L$key_rotate192:
+        DD      0x04070605,0x04070605,0x04070605,0x04070605
+$L$key_rcon1:
+        DD      1,1,1,1
+$L$key_rcon1b:
+        DD      0x1b,0x1b,0x1b,0x1b
+
+DB      65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
+DB      83,45,78,73,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   64
+EXTERN  __imp_RtlVirtualUnwind
+
+ALIGN   16
+ecb_ccm64_se_handler:
+        push    rsi
+        push    rdi
+        push    rbx
+        push    rbp
+        push    r12
+        push    r13
+        push    r14
+        push    r15
+        pushfq
+        sub     rsp,64
+
+        mov     rax,QWORD[120+r8]
+        mov     rbx,QWORD[248+r8]
+
+        mov     rsi,QWORD[8+r9]
+        mov     r11,QWORD[56+r9]
+
+        mov     r10d,DWORD[r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jb      NEAR $L$common_seh_tail
+
+        mov     rax,QWORD[152+r8]
+
+        mov     r10d,DWORD[4+r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jae     NEAR $L$common_seh_tail
+
+        lea     rsi,[rax]
+        lea     rdi,[512+r8]
+        mov     ecx,8
+        DD      0xa548f3fc
+        lea     rax,[88+rax]
+
+        jmp     NEAR $L$common_seh_tail
+
+
+
+ALIGN   16
+ctr_xts_se_handler:
+        push    rsi
+        push    rdi
+        push    rbx
+        push    rbp
+        push    r12
+        push    r13
+        push    r14
+        push    r15
+        pushfq
+        sub     rsp,64
+
+        mov     rax,QWORD[120+r8]
+        mov     rbx,QWORD[248+r8]
+
+        mov     rsi,QWORD[8+r9]
+        mov     r11,QWORD[56+r9]
+
+        mov     r10d,DWORD[r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jb      NEAR $L$common_seh_tail
+
+        mov     rax,QWORD[152+r8]
+
+        mov     r10d,DWORD[4+r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jae     NEAR $L$common_seh_tail
+
+        mov     rax,QWORD[208+r8]
+
+        lea     rsi,[((-168))+rax]
+        lea     rdi,[512+r8]
+        mov     ecx,20
+        DD      0xa548f3fc
+
+        mov     rbp,QWORD[((-8))+rax]
+        mov     QWORD[160+r8],rbp
+        jmp     NEAR $L$common_seh_tail
+
+
+
+ALIGN   16
+ocb_se_handler:
+        push    rsi
+        push    rdi
+        push    rbx
+        push    rbp
+        push    r12
+        push    r13
+        push    r14
+        push    r15
+        pushfq
+        sub     rsp,64
+
+        mov     rax,QWORD[120+r8]
+        mov     rbx,QWORD[248+r8]
+
+        mov     rsi,QWORD[8+r9]
+        mov     r11,QWORD[56+r9]
+
+        mov     r10d,DWORD[r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jb      NEAR $L$common_seh_tail
+
+        mov     r10d,DWORD[4+r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jae     NEAR $L$common_seh_tail
+
+        mov     r10d,DWORD[8+r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jae     NEAR $L$ocb_no_xmm
+
+        mov     rax,QWORD[152+r8]
+
+        lea     rsi,[rax]
+        lea     rdi,[512+r8]
+        mov     ecx,20
+        DD      0xa548f3fc
+        lea     rax,[((160+40))+rax]
+
+$L$ocb_no_xmm:
+        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     NEAR $L$common_seh_tail
+
+
+ALIGN   16
+cbc_se_handler:
+        push    rsi
+        push    rdi
+        push    rbx
+        push    rbp
+        push    r12
+        push    r13
+        push    r14
+        push    r15
+        pushfq
+        sub     rsp,64
+
+        mov     rax,QWORD[152+r8]
+        mov     rbx,QWORD[248+r8]
+
+        lea     r10,[$L$cbc_decrypt_bulk]
+        cmp     rbx,r10
+        jb      NEAR $L$common_seh_tail
+
+        mov     rax,QWORD[120+r8]
+
+        lea     r10,[$L$cbc_decrypt_body]
+        cmp     rbx,r10
+        jb      NEAR $L$common_seh_tail
+
+        mov     rax,QWORD[152+r8]
+
+        lea     r10,[$L$cbc_ret]
+        cmp     rbx,r10
+        jae     NEAR $L$common_seh_tail
+
+        lea     rsi,[16+rax]
+        lea     rdi,[512+r8]
+        mov     ecx,20
+        DD      0xa548f3fc
+
+        mov     rax,QWORD[208+r8]
+
+        mov     rbp,QWORD[((-8))+rax]
+        mov     QWORD[160+r8],rbp
+
+$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[40+r9]
+        mov     rsi,r8
+        mov     ecx,154
+        DD      0xa548f3fc
+
+        mov     rsi,r9
+        xor     rcx,rcx
+        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
+        popfq
+        pop     r15
+        pop     r14
+        pop     r13
+        pop     r12
+        pop     rbp
+        pop     rbx
+        pop     rdi
+        pop     rsi
+        DB      0F3h,0C3h               ;repret
+
+
+section .pdata rdata align=4
+ALIGN   4
+        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      $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      $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      $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      $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      $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_ocb_encrypt wrt ..imagebase
+        DD      $L$SEH_end_aesni_ocb_encrypt wrt ..imagebase
+        DD      $L$SEH_info_ocb_enc wrt ..imagebase
+
+        DD      $L$SEH_begin_aesni_ocb_decrypt wrt ..imagebase
+        DD      $L$SEH_end_aesni_ocb_decrypt wrt ..imagebase
+        DD      $L$SEH_info_ocb_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      aesni_set_decrypt_key wrt ..imagebase
+        DD      $L$SEH_end_set_decrypt_key wrt ..imagebase
+        DD      $L$SEH_info_key wrt ..imagebase
+
+        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:
+DB      9,0,0,0
+        DD      ecb_ccm64_se_handler wrt ..imagebase
+        DD      $L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret wrt ..imagebase
+$L$SEH_info_ccm64_enc:
+DB      9,0,0,0
+        DD      ecb_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      ecb_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      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      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      ctr_xts_se_handler wrt ..imagebase
+        DD      $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue wrt ..imagebase
+$L$SEH_info_ocb_enc:
+DB      9,0,0,0
+        DD      ocb_se_handler wrt ..imagebase
+        DD      $L$ocb_enc_body wrt ..imagebase,$L$ocb_enc_epilogue wrt ..imagebase
+        DD      $L$ocb_enc_pop wrt ..imagebase
+        DD      0
+$L$SEH_info_ocb_dec:
+DB      9,0,0,0
+        DD      ocb_se_handler wrt ..imagebase
+        DD      $L$ocb_dec_body wrt ..imagebase,$L$ocb_dec_epilogue wrt ..imagebase
+        DD      $L$ocb_dec_pop wrt ..imagebase
+        DD      0
+$L$SEH_info_cbc:
+DB      9,0,0,0
+        DD      cbc_se_handler wrt ..imagebase
+$L$SEH_info_key:
+DB      0x01,0x04,0x01,0x00
+DB      0x04,0x02,0x00,0x00
diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
new file mode 100644
index 0000000000..1c911fa294
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
@@ -0,0 +1,1173 @@
+; WARNING: do not edit!
+; Generated from openssl/crypto/aes/asm/vpaes-x86_64.pl
+;
+; Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved.
+;
+; Licensed under the OpenSSL license (the "License").  You may not use
+; this file except in compliance with the License.  You can obtain a copy
+; in the file LICENSE in the source distribution or at
+; https://www.openssl.org/source/license.html
+
+default rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section .text code align=64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ALIGN   16
+_vpaes_encrypt_core:
+
+        mov     r9,rdx
+        mov     r11,16
+        mov     eax,DWORD[240+rdx]
+        movdqa  xmm1,xmm9
+        movdqa  xmm2,XMMWORD[$L$k_ipt]
+        pandn   xmm1,xmm0
+        movdqu  xmm5,XMMWORD[r9]
+        psrld   xmm1,4
+        pand    xmm0,xmm9
+DB      102,15,56,0,208
+        movdqa  xmm0,XMMWORD[(($L$k_ipt+16))]
+DB      102,15,56,0,193
+        pxor    xmm2,xmm5
+        add     r9,16
+        pxor    xmm0,xmm2
+        lea     r10,[$L$k_mc_backward]
+        jmp     NEAR $L$enc_entry
+
+ALIGN   16
+$L$enc_loop:
+
+        movdqa  xmm4,xmm13
+        movdqa  xmm0,xmm12
+DB      102,15,56,0,226
+DB      102,15,56,0,195
+        pxor    xmm4,xmm5
+        movdqa  xmm5,xmm15
+        pxor    xmm0,xmm4
+        movdqa  xmm1,XMMWORD[((-64))+r10*1+r11]
+DB      102,15,56,0,234
+        movdqa  xmm4,XMMWORD[r10*1+r11]
+        movdqa  xmm2,xmm14
+DB      102,15,56,0,211
+        movdqa  xmm3,xmm0
+        pxor    xmm2,xmm5
+DB      102,15,56,0,193
+        add     r9,16
+        pxor    xmm0,xmm2
+DB      102,15,56,0,220
+        add     r11,16
+        pxor    xmm3,xmm0
+DB      102,15,56,0,193
+        and     r11,0x30
+        sub     rax,1
+        pxor    xmm0,xmm3
+
+$L$enc_entry:
+
+        movdqa  xmm1,xmm9
+        movdqa  xmm5,xmm11
+        pandn   xmm1,xmm0
+        psrld   xmm1,4
+        pand    xmm0,xmm9
+DB      102,15,56,0,232
+        movdqa  xmm3,xmm10
+        pxor    xmm0,xmm1
+DB      102,15,56,0,217
+        movdqa  xmm4,xmm10
+        pxor    xmm3,xmm5
+DB      102,15,56,0,224
+        movdqa  xmm2,xmm10
+        pxor    xmm4,xmm5
+DB      102,15,56,0,211
+        movdqa  xmm3,xmm10
+        pxor    xmm2,xmm0
+DB      102,15,56,0,220
+        movdqu  xmm5,XMMWORD[r9]
+        pxor    xmm3,xmm1
+        jnz     NEAR $L$enc_loop
+
+
+        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[64+r10*1+r11]
+        pxor    xmm0,xmm4
+DB      102,15,56,0,193
+        DB      0F3h,0C3h               ;repret
+
+
+
+
+
+
+
+
+
+ALIGN   16
+_vpaes_decrypt_core:
+
+        mov     r9,rdx
+        mov     eax,DWORD[240+rdx]
+        movdqa  xmm1,xmm9
+        movdqa  xmm2,XMMWORD[$L$k_dipt]
+        pandn   xmm1,xmm0
+        mov     r11,rax
+        psrld   xmm1,4
+        movdqu  xmm5,XMMWORD[r9]
+        shl     r11,4
+        pand    xmm0,xmm9
+DB      102,15,56,0,208
+        movdqa  xmm0,XMMWORD[(($L$k_dipt+16))]
+        xor     r11,0x30
+        lea     r10,[$L$k_dsbd]
+DB      102,15,56,0,193
+        and     r11,0x30
+        pxor    xmm2,xmm5
+        movdqa  xmm5,XMMWORD[(($L$k_mc_forward+48))]
+        pxor    xmm0,xmm2
+        add     r9,16
+        add     r11,r10
+        jmp     NEAR $L$dec_entry
+
+ALIGN   16
+$L$dec_loop:
+
+
+
+        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[r10]
+        pxor    xmm0,xmm1
+        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[32+r10]
+        pxor    xmm0,xmm1
+        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[64+r10]
+        pxor    xmm0,xmm1
+        movdqa  xmm1,XMMWORD[80+r10]
+
+DB      102,15,56,0,226
+DB      102,15,56,0,197
+DB      102,15,56,0,203
+        pxor    xmm0,xmm4
+        add     r9,16
+DB      102,15,58,15,237,12
+        pxor    xmm0,xmm1
+        sub     rax,1
+
+$L$dec_entry:
+
+        movdqa  xmm1,xmm9
+        pandn   xmm1,xmm0
+        movdqa  xmm2,xmm11
+        psrld   xmm1,4
+        pand    xmm0,xmm9
+DB      102,15,56,0,208
+        movdqa  xmm3,xmm10
+        pxor    xmm0,xmm1
+DB      102,15,56,0,217
+        movdqa  xmm4,xmm10
+        pxor    xmm3,xmm2
+DB      102,15,56,0,224
+        pxor    xmm4,xmm2
+        movdqa  xmm2,xmm10
+DB      102,15,56,0,211
+        movdqa  xmm3,xmm10
+        pxor    xmm2,xmm0
+DB      102,15,56,0,220
+        movdqu  xmm0,XMMWORD[r9]
+        pxor    xmm3,xmm1
+        jnz     NEAR $L$dec_loop
+
+
+        movdqa  xmm4,XMMWORD[96+r10]
+DB      102,15,56,0,226
+        pxor    xmm4,xmm0
+        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
+
+
+
+
+
+
+
+
+
+ALIGN   16
+_vpaes_schedule_core:
+
+
+
+
+
+
+        call    _vpaes_preheat
+        movdqa  xmm8,XMMWORD[$L$k_rcon]
+        movdqu  xmm0,XMMWORD[rdi]
+
+
+        movdqa  xmm3,xmm0
+        lea     r11,[$L$k_ipt]
+        call    _vpaes_schedule_transform
+        movdqa  xmm7,xmm0
+
+        lea     r10,[$L$k_sr]
+        test    rcx,rcx
+        jnz     NEAR $L$schedule_am_decrypting
+
+
+        movdqu  XMMWORD[rdx],xmm0
+        jmp     NEAR $L$schedule_go
+
+$L$schedule_am_decrypting:
+
+        movdqa  xmm1,XMMWORD[r10*1+r8]
+DB      102,15,56,0,217
+        movdqu  XMMWORD[rdx],xmm3
+        xor     r8,0x30
+
+$L$schedule_go:
+        cmp     esi,192
+        ja      NEAR $L$schedule_256
+        je      NEAR $L$schedule_192
+
+
+
+
+
+
+
+
+
+
+$L$schedule_128:
+        mov     esi,10
+
+$L$oop_schedule_128:
+        call    _vpaes_schedule_round
+        dec     rsi
+        jz      NEAR $L$schedule_mangle_last
+        call    _vpaes_schedule_mangle
+        jmp     NEAR $L$oop_schedule_128
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ALIGN   16
+$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:
+        call    _vpaes_schedule_round
+DB      102,15,58,15,198,8
+        call    _vpaes_schedule_mangle
+        call    _vpaes_schedule_192_smear
+        call    _vpaes_schedule_mangle
+        call    _vpaes_schedule_round
+        dec     rsi
+        jz      NEAR $L$schedule_mangle_last
+        call    _vpaes_schedule_mangle
+        call    _vpaes_schedule_192_smear
+        jmp     NEAR $L$oop_schedule_192
+
+
+
+
+
+
+
+
+
+
+
+ALIGN   16
+$L$schedule_256:
+        movdqu  xmm0,XMMWORD[16+rdi]
+        call    _vpaes_schedule_transform
+        mov     esi,7
+
+$L$oop_schedule_256:
+        call    _vpaes_schedule_mangle
+        movdqa  xmm6,xmm0
+
+
+        call    _vpaes_schedule_round
+        dec     rsi
+        jz      NEAR $L$schedule_mangle_last
+        call    _vpaes_schedule_mangle
+
+
+        pshufd  xmm0,xmm0,0xFF
+        movdqa  xmm5,xmm7
+        movdqa  xmm7,xmm6
+        call    _vpaes_schedule_low_round
+        movdqa  xmm7,xmm5
+
+        jmp     NEAR $L$oop_schedule_256
+
+
+
+
+
+
+
+
+
+
+
+
+ALIGN   16
+$L$schedule_mangle_last:
+
+        lea     r11,[$L$k_deskew]
+        test    rcx,rcx
+        jnz     NEAR $L$schedule_mangle_last_dec
+
+
+        movdqa  xmm1,XMMWORD[r10*1+r8]
+DB      102,15,56,0,193
+        lea     r11,[$L$k_opt]
+        add     rdx,32
+
+$L$schedule_mangle_last_dec:
+        add     rdx,-16
+        pxor    xmm0,XMMWORD[$L$k_s63]
+        call    _vpaes_schedule_transform
+        movdqu  XMMWORD[rdx],xmm0
+
+
+        pxor    xmm0,xmm0
+        pxor    xmm1,xmm1
+        pxor    xmm2,xmm2
+        pxor    xmm3,xmm3
+        pxor    xmm4,xmm4
+        pxor    xmm5,xmm5
+        pxor    xmm6,xmm6
+        pxor    xmm7,xmm7
+        DB      0F3h,0C3h               ;repret
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ALIGN   16
+_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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ALIGN   16
+_vpaes_schedule_round:
+
+
+        pxor    xmm1,xmm1
+DB      102,65,15,58,15,200,15
+DB      102,69,15,58,15,192,15
+        pxor    xmm7,xmm1
+
+
+        pshufd  xmm0,xmm0,0xFF
+DB      102,15,58,15,192,1
+
+
+
+
+_vpaes_schedule_low_round:
+
+        movdqa  xmm1,xmm7
+        pslldq  xmm7,4
+        pxor    xmm7,xmm1
+        movdqa  xmm1,xmm7
+        pslldq  xmm7,8
+        pxor    xmm7,xmm1
+        pxor    xmm7,XMMWORD[$L$k_s63]
+
+
+        movdqa  xmm1,xmm9
+        pandn   xmm1,xmm0
+        psrld   xmm1,4
+        pand    xmm0,xmm9
+        movdqa  xmm2,xmm11
+DB      102,15,56,0,208
+        pxor    xmm0,xmm1
+        movdqa  xmm3,xmm10
+DB      102,15,56,0,217
+        pxor    xmm3,xmm2
+        movdqa  xmm4,xmm10
+DB      102,15,56,0,224
+        pxor    xmm4,xmm2
+        movdqa  xmm2,xmm10
+DB      102,15,56,0,211
+        pxor    xmm2,xmm0
+        movdqa  xmm3,xmm10
+DB      102,15,56,0,220
+        pxor    xmm3,xmm1
+        movdqa  xmm4,xmm13
+DB      102,15,56,0,226
+        movdqa  xmm0,xmm12
+DB      102,15,56,0,195
+        pxor    xmm0,xmm4
+
+
+        pxor    xmm0,xmm7
+        movdqa  xmm7,xmm0
+        DB      0F3h,0C3h               ;repret
+
+
+
+
+
+
+
+
+
+
+
+
+
+ALIGN   16
+_vpaes_schedule_transform:
+
+        movdqa  xmm1,xmm9
+        pandn   xmm1,xmm0
+        psrld   xmm1,4
+        pand    xmm0,xmm9
+        movdqa  xmm2,XMMWORD[r11]
+DB      102,15,56,0,208
+        movdqa  xmm0,XMMWORD[16+r11]
+DB      102,15,56,0,193
+        pxor    xmm0,xmm2
+        DB      0F3h,0C3h               ;repret
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ALIGN   16
+_vpaes_schedule_mangle:
+
+        movdqa  xmm4,xmm0
+        movdqa  xmm5,XMMWORD[$L$k_mc_forward]
+        test    rcx,rcx
+        jnz     NEAR $L$schedule_mangle_dec
+
+
+        add     rdx,16
+        pxor    xmm4,XMMWORD[$L$k_s63]
+DB      102,15,56,0,229
+        movdqa  xmm3,xmm4
+DB      102,15,56,0,229
+        pxor    xmm3,xmm4
+DB      102,15,56,0,229
+        pxor    xmm3,xmm4
+
+        jmp     NEAR $L$schedule_mangle_both
+ALIGN   16
+$L$schedule_mangle_dec:
+
+        lea     r11,[$L$k_dksd]
+        movdqa  xmm1,xmm9
+        pandn   xmm1,xmm4
+        psrld   xmm1,4
+        pand    xmm4,xmm9
+
+        movdqa  xmm2,XMMWORD[r11]
+DB      102,15,56,0,212
+        movdqa  xmm3,XMMWORD[16+r11]
+DB      102,15,56,0,217
+        pxor    xmm3,xmm2
+DB      102,15,56,0,221
+
+        movdqa  xmm2,XMMWORD[32+r11]
+DB      102,15,56,0,212
+        pxor    xmm2,xmm3
+        movdqa  xmm3,XMMWORD[48+r11]
+DB      102,15,56,0,217
+        pxor    xmm3,xmm2
+DB      102,15,56,0,221
+
+        movdqa  xmm2,XMMWORD[64+r11]
+DB      102,15,56,0,212
+        pxor    xmm2,xmm3
+        movdqa  xmm3,XMMWORD[80+r11]
+DB      102,15,56,0,217
+        pxor    xmm3,xmm2
+DB      102,15,56,0,221
+
+        movdqa  xmm2,XMMWORD[96+r11]
+DB      102,15,56,0,212
+        pxor    xmm2,xmm3
+        movdqa  xmm3,XMMWORD[112+r11]
+DB      102,15,56,0,217
+        pxor    xmm3,xmm2
+
+        add     rdx,-16
+
+$L$schedule_mangle_both:
+        movdqa  xmm1,XMMWORD[r10*1+r8]
+DB      102,15,56,0,217
+        add     r8,-16
+        and     r8,0x30
+        movdqu  XMMWORD[rdx],xmm3
+        DB      0F3h,0C3h               ;repret
+
+
+
+
+
+
+global  vpaes_set_encrypt_key
+
+ALIGN   16
+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:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+
+
+
+        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[240+rdx],eax
+
+        mov     ecx,0
+        mov     r8d,0x30
+        call    _vpaes_schedule_core
+        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[8+rsp]        ;WIN64 epilogue
+        mov     rsi,QWORD[16+rsp]
+        DB      0F3h,0C3h               ;repret
+
+$L$SEH_end_vpaes_set_encrypt_key:
+
+global  vpaes_set_decrypt_key
+
+ALIGN   16
+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:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+
+
+
+        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[240+rdx],eax
+        shl     eax,4
+        lea     rdx,[16+rax*1+rdx]
+
+        mov     ecx,1
+        mov     r8d,esi
+        shr     r8d,1
+        and     r8d,32
+        xor     r8d,32
+        call    _vpaes_schedule_core
+        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[8+rsp]        ;WIN64 epilogue
+        mov     rsi,QWORD[16+rsp]
+        DB      0F3h,0C3h               ;repret
+
+$L$SEH_end_vpaes_set_decrypt_key:
+
+global  vpaes_encrypt
+
+ALIGN   16
+vpaes_encrypt:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_vpaes_encrypt:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+
+
+
+        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[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:
+
+global  vpaes_decrypt
+
+ALIGN   16
+vpaes_decrypt:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_vpaes_decrypt:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+
+
+
+        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[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:
+global  vpaes_cbc_encrypt
+
+ALIGN   16
+vpaes_cbc_encrypt:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_vpaes_cbc_encrypt:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+        mov     rcx,r9
+        mov     r8,QWORD[40+rsp]
+        mov     r9,QWORD[48+rsp]
+
+
+
+        xchg    rdx,rcx
+        sub     rcx,16
+        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      NEAR $L$cbc_dec_loop
+        jmp     NEAR $L$cbc_enc_loop
+ALIGN   16
+$L$cbc_enc_loop:
+        movdqu  xmm0,XMMWORD[rdi]
+        pxor    xmm0,xmm6
+        call    _vpaes_encrypt_core
+        movdqa  xmm6,xmm0
+        movdqu  XMMWORD[rdi*1+rsi],xmm0
+        lea     rdi,[16+rdi]
+        sub     rcx,16
+        jnc     NEAR $L$cbc_enc_loop
+        jmp     NEAR $L$cbc_done
+ALIGN   16
+$L$cbc_dec_loop:
+        movdqu  xmm0,XMMWORD[rdi]
+        movdqa  xmm7,xmm0
+        call    _vpaes_decrypt_core
+        pxor    xmm0,xmm6
+        movdqa  xmm6,xmm7
+        movdqu  XMMWORD[rdi*1+rsi],xmm0
+        lea     rdi,[16+rdi]
+        sub     rcx,16
+        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:
+
+
+
+
+
+
+
+ALIGN   16
+_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
+
+
+
+
+
+
+
+
+ALIGN   64
+_vpaes_consts:
+$L$k_inv:
+        DQ      0x0E05060F0D080180,0x040703090A0B0C02
+        DQ      0x01040A060F0B0780,0x030D0E0C02050809
+
+$L$k_s0F:
+        DQ      0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F
+
+$L$k_ipt:
+        DQ      0xC2B2E8985A2A7000,0xCABAE09052227808
+        DQ      0x4C01307D317C4D00,0xCD80B1FCB0FDCC81
+
+$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      0x0407060500030201,0x0C0F0E0D080B0A09
+        DQ      0x080B0A0904070605,0x000302010C0F0E0D
+        DQ      0x0C0F0E0D080B0A09,0x0407060500030201
+        DQ      0x000302010C0F0E0D,0x080B0A0904070605
+
+$L$k_mc_backward:
+        DQ      0x0605040702010003,0x0E0D0C0F0A09080B
+        DQ      0x020100030E0D0C0F,0x0A09080B06050407
+        DQ      0x0E0D0C0F0A09080B,0x0605040702010003
+        DQ      0x0A09080B06050407,0x020100030E0D0C0F
+
+$L$k_sr:
+        DQ      0x0706050403020100,0x0F0E0D0C0B0A0908
+        DQ      0x030E09040F0A0500,0x0B06010C07020D08
+        DQ      0x0F060D040B020900,0x070E050C030A0108
+        DQ      0x0B0E0104070A0D00,0x0306090C0F020508
+
+$L$k_rcon:
+        DQ      0x1F8391B9AF9DEEB6,0x702A98084D7C7D81
+
+$L$k_s63:
+        DQ      0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B
+
+$L$k_opt:
+        DQ      0xFF9F4929D6B66000,0xF7974121DEBE6808
+        DQ      0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0
+
+$L$k_deskew:
+        DQ      0x07E4A34047A4E300,0x1DFEB95A5DBEF91A
+        DQ      0x5F36B5DC83EA6900,0x2841C2ABF49D1E77
+
+
+
+
+
+$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      0x0F505B040B545F00,0x154A411E114E451A
+        DQ      0x86E383E660056500,0x12771772F491F194
+
+$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
+DB      109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32
+DB      85,110,105,118,101,114,115,105,116,121,41,0
+ALIGN   64
+
+EXTERN  __imp_RtlVirtualUnwind
+
+ALIGN   16
+se_handler:
+        push    rsi
+        push    rdi
+        push    rbx
+        push    rbp
+        push    r12
+        push    r13
+        push    r14
+        push    r15
+        pushfq
+        sub     rsp,64
+
+        mov     rax,QWORD[120+r8]
+        mov     rbx,QWORD[248+r8]
+
+        mov     rsi,QWORD[8+r9]
+        mov     r11,QWORD[56+r9]
+
+        mov     r10d,DWORD[r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jb      NEAR $L$in_prologue
+
+        mov     rax,QWORD[152+r8]
+
+        mov     r10d,DWORD[4+r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jae     NEAR $L$in_prologue
+
+        lea     rsi,[16+rax]
+        lea     rdi,[512+r8]
+        mov     ecx,20
+        DD      0xa548f3fc
+        lea     rax,[184+rax]
+
+$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[40+r9]
+        mov     rsi,r8
+        mov     ecx,154
+        DD      0xa548f3fc
+
+        mov     rsi,r9
+        xor     rcx,rcx
+        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
+        popfq
+        pop     r15
+        pop     r14
+        pop     r13
+        pop     r12
+        pop     rbp
+        pop     rbx
+        pop     rdi
+        pop     rsi
+        DB      0F3h,0C3h               ;repret
+
+
+section .pdata rdata align=4
+ALIGN   4
+        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      $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      $L$SEH_begin_vpaes_encrypt wrt ..imagebase
+        DD      $L$SEH_end_vpaes_encrypt wrt ..imagebase
+        DD      $L$SEH_info_vpaes_encrypt wrt ..imagebase
+
+        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      $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
+
+section .xdata rdata align=8
+ALIGN   8
+$L$SEH_info_vpaes_set_encrypt_key:
+DB      9,0,0,0
+        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      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      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      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      se_handler wrt ..imagebase
+        DD      $L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt ..imagebase
diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm
new file mode 100644
index 0000000000..60f283d5fb
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm
@@ -0,0 +1,1569 @@
+; WARNING: do not edit!
+; Generated from openssl/crypto/modes/asm/ghash-x86_64.pl
+;
+; Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved.
+;
+; Licensed under the OpenSSL license (the "License").  You may not use
+; this file except in compliance with the License.  You can obtain a copy
+; in the file LICENSE in the source distribution or at
+; https://www.openssl.org/source/license.html
+
+default rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section .text code align=64
+
+EXTERN  OPENSSL_ia32cap_P
+
+global  gcm_gmult_4bit
+
+ALIGN   16
+gcm_gmult_4bit:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_gcm_gmult_4bit:
+        mov     rdi,rcx
+        mov     rsi,rdx
+
+
+
+        push    rbx
+
+        push    rbp
+
+        push    r12
+
+        push    r13
+
+        push    r14
+
+        push    r15
+
+        sub     rsp,280
+
+$L$gmult_prologue:
+
+        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[8+rax*1+rsi]
+        mov     r9,QWORD[rax*1+rsi]
+        and     bl,0xf0
+        mov     rdx,r8
+        jmp     NEAR $L$oop1
+
+ALIGN   16
+$L$oop1:
+        shr     r8,4
+        and     rdx,0xf
+        mov     r10,r9
+        mov     al,BYTE[rcx*1+rdi]
+        shr     r9,4
+        xor     r8,QWORD[8+rbx*1+rsi]
+        shl     r10,60
+        xor     r9,QWORD[rbx*1+rsi]
+        mov     bl,al
+        xor     r9,QWORD[rdx*8+r11]
+        mov     rdx,r8
+        shl     al,4
+        xor     r8,r10
+        dec     rcx
+        js      NEAR $L$break1
+
+        shr     r8,4
+        and     rdx,0xf
+        mov     r10,r9
+        shr     r9,4
+        xor     r8,QWORD[8+rax*1+rsi]
+        shl     r10,60
+        xor     r9,QWORD[rax*1+rsi]
+        and     bl,0xf0
+        xor     r9,QWORD[rdx*8+r11]
+        mov     rdx,r8
+        xor     r8,r10
+        jmp     NEAR $L$oop1
+
+ALIGN   16
+$L$break1:
+        shr     r8,4
+        and     rdx,0xf
+        mov     r10,r9
+        shr     r9,4
+        xor     r8,QWORD[8+rax*1+rsi]
+        shl     r10,60
+        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,0xf
+        mov     r10,r9
+        shr     r9,4
+        xor     r8,QWORD[8+rbx*1+rsi]
+        shl     r10,60
+        xor     r9,QWORD[rbx*1+rsi]
+        xor     r8,r10
+        xor     r9,QWORD[rdx*8+r11]
+
+        bswap   r8
+        bswap   r9
+        mov     QWORD[8+rdi],r8
+        mov     QWORD[rdi],r9
+
+        lea     rsi,[((280+48))+rsp]
+
+        mov     rbx,QWORD[((-8))+rsi]
+
+        lea     rsp,[rsi]
+
+$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:
+global  gcm_ghash_4bit
+
+ALIGN   16
+gcm_ghash_4bit:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_gcm_ghash_4bit:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+        mov     rcx,r9
+
+
+
+        push    rbx
+
+        push    rbp
+
+        push    r12
+
+        push    r13
+
+        push    r14
+
+        push    r15
+
+        sub     rsp,280
+
+$L$ghash_prologue:
+        mov     r14,rdx
+        mov     r15,rcx
+        sub     rsi,-128
+        lea     rbp,[((16+128))+rsp]
+        xor     edx,edx
+        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[((16+0-128))+rsi]
+        shl     dl,4
+        mov     rbx,QWORD[((16+8-128))+rsi]
+        shl     r10,60
+        mov     BYTE[rsp],dl
+        or      rax,r10
+        mov     dl,bl
+        shr     rbx,4
+        mov     r10,r9
+        shr     r9,4
+        mov     QWORD[rbp],r8
+        mov     r8,QWORD[((32+0-128))+rsi]
+        shl     dl,4
+        mov     QWORD[((0-128))+rbp],rax
+        mov     rax,QWORD[((32+8-128))+rsi]
+        shl     r10,60
+        mov     BYTE[1+rsp],dl
+        or      rbx,r10
+        mov     dl,al
+        shr     rax,4
+        mov     r10,r8
+        shr     r8,4
+        mov     QWORD[8+rbp],r9
+        mov     r9,QWORD[((48+0-128))+rsi]
+        shl     dl,4
+        mov     QWORD[((8-128))+rbp],rbx
+        mov     rbx,QWORD[((48+8-128))+rsi]
+        shl     r10,60
+        mov     BYTE[2+rsp],dl
+        or      rax,r10
+        mov     dl,bl
+        shr     rbx,4
+        mov     r10,r9
+        shr     r9,4
+        mov     QWORD[16+rbp],r8
+        mov     r8,QWORD[((64+0-128))+rsi]
+        shl     dl,4
+        mov     QWORD[((16-128))+rbp],rax
+        mov     rax,QWORD[((64+8-128))+rsi]
+        shl     r10,60
+        mov     BYTE[3+rsp],dl
+        or      rbx,r10
+        mov     dl,al
+        shr     rax,4
+        mov     r10,r8
+        shr     r8,4
+        mov     QWORD[24+rbp],r9
+        mov     r9,QWORD[((80+0-128))+rsi]
+        shl     dl,4
+        mov     QWORD[((24-128))+rbp],rbx
+        mov     rbx,QWORD[((80+8-128))+rsi]
+        shl     r10,60
+        mov     BYTE[4+rsp],dl
+        or      rax,r10
+        mov     dl,bl
+        shr     rbx,4
+        mov     r10,r9
+        shr     r9,4
+        mov     QWORD[32+rbp],r8
+        mov     r8,QWORD[((96+0-128))+rsi]
+        shl     dl,4
+        mov     QWORD[((32-128))+rbp],rax
+        mov     rax,QWORD[((96+8-128))+rsi]
+        shl     r10,60
+        mov     BYTE[5+rsp],dl
+        or      rbx,r10
+        mov     dl,al
+        shr     rax,4
+        mov     r10,r8
+        shr     r8,4
+        mov     QWORD[40+rbp],r9
+        mov     r9,QWORD[((112+0-128))+rsi]
+        shl     dl,4
+        mov     QWORD[((40-128))+rbp],rbx
+        mov     rbx,QWORD[((112+8-128))+rsi]
+        shl     r10,60
+        mov     BYTE[6+rsp],dl
+        or      rax,r10
+        mov     dl,bl
+        shr     rbx,4
+        mov     r10,r9
+        shr     r9,4
+        mov     QWORD[48+rbp],r8
+        mov     r8,QWORD[((128+0-128))+rsi]
+        shl     dl,4
+        mov     QWORD[((48-128))+rbp],rax
+        mov     rax,QWORD[((128+8-128))+rsi]
+        shl     r10,60
+        mov     BYTE[7+rsp],dl
+        or      rbx,r10
+        mov     dl,al
+        shr     rax,4
+        mov     r10,r8
+        shr     r8,4
+        mov     QWORD[56+rbp],r9
+        mov     r9,QWORD[((144+0-128))+rsi]
+        shl     dl,4
+        mov     QWORD[((56-128))+rbp],rbx
+        mov     rbx,QWORD[((144+8-128))+rsi]
+        shl     r10,60
+        mov     BYTE[8+rsp],dl
+        or      rax,r10
+        mov     dl,bl
+        shr     rbx,4
+        mov     r10,r9
+        shr     r9,4
+        mov     QWORD[64+rbp],r8
+        mov     r8,QWORD[((160+0-128))+rsi]
+        shl     dl,4
+        mov     QWORD[((64-128))+rbp],rax
+        mov     rax,QWORD[((160+8-128))+rsi]
+        shl     r10,60
+        mov     BYTE[9+rsp],dl
+        or      rbx,r10
+        mov     dl,al
+        shr     rax,4
+        mov     r10,r8
+        shr     r8,4
+        mov     QWORD[72+rbp],r9
+        mov     r9,QWORD[((176+0-128))+rsi]
+        shl     dl,4
+        mov     QWORD[((72-128))+rbp],rbx
+        mov     rbx,QWORD[((176+8-128))+rsi]
+        shl     r10,60
+        mov     BYTE[10+rsp],dl
+        or      rax,r10
+        mov     dl,bl
+        shr     rbx,4
+        mov     r10,r9
+        shr     r9,4
+        mov     QWORD[80+rbp],r8
+        mov     r8,QWORD[((192+0-128))+rsi]
+        shl     dl,4
+        mov     QWORD[((80-128))+rbp],rax
+        mov     rax,QWORD[((192+8-128))+rsi]
+        shl     r10,60
+        mov     BYTE[11+rsp],dl
+        or      rbx,r10
+        mov     dl,al
+        shr     rax,4
+        mov     r10,r8
+        shr     r8,4
+        mov     QWORD[88+rbp],r9
+        mov     r9,QWORD[((208+0-128))+rsi]
+        shl     dl,4
+        mov     QWORD[((88-128))+rbp],rbx
+        mov     rbx,QWORD[((208+8-128))+rsi]
+        shl     r10,60
+        mov     BYTE[12+rsp],dl
+        or      rax,r10
+        mov     dl,bl
+        shr     rbx,4
+        mov     r10,r9
+        shr     r9,4
+        mov     QWORD[96+rbp],r8
+        mov     r8,QWORD[((224+0-128))+rsi]
+        shl     dl,4
+        mov     QWORD[((96-128))+rbp],rax
+        mov     rax,QWORD[((224+8-128))+rsi]
+        shl     r10,60
+        mov     BYTE[13+rsp],dl
+        or      rbx,r10
+        mov     dl,al
+        shr     rax,4
+        mov     r10,r8
+        shr     r8,4
+        mov     QWORD[104+rbp],r9
+        mov     r9,QWORD[((240+0-128))+rsi]
+        shl     dl,4
+        mov     QWORD[((104-128))+rbp],rbx
+        mov     rbx,QWORD[((240+8-128))+rsi]
+        shl     r10,60
+        mov     BYTE[14+rsp],dl
+        or      rax,r10
+        mov     dl,bl
+        shr     rbx,4
+        mov     r10,r9
+        shr     r9,4
+        mov     QWORD[112+rbp],r8
+        shl     dl,4
+        mov     QWORD[((112-128))+rbp],rax
+        shl     r10,60
+        mov     BYTE[15+rsp],dl
+        or      rbx,r10
+        mov     QWORD[120+rbp],r9
+        mov     QWORD[((120-128))+rbp],rbx
+        add     rsi,-128
+        mov     r8,QWORD[8+rdi]
+        mov     r9,QWORD[rdi]
+        add     r15,r14
+        lea     r11,[$L$rem_8bit]
+        jmp     NEAR $L$outer_loop
+ALIGN   16
+$L$outer_loop:
+        xor     r9,QWORD[r14]
+        mov     rdx,QWORD[8+r14]
+        lea     r14,[16+r14]
+        xor     rdx,r8
+        mov     QWORD[rdi],r9
+        mov     QWORD[8+rdi],rdx
+        shr     rdx,32
+        xor     rax,rax
+        rol     edx,8
+        mov     al,dl
+        movzx   ebx,dl
+        shl     al,4
+        shr     ebx,4
+        rol     edx,8
+        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[rbx*1+rsp]
+        shr     ecx,4
+        xor     r12,r8
+        mov     r10,r9
+        shr     r8,8
+        movzx   r12,r12b
+        shr     r9,8
+        xor     r8,QWORD[((-128))+rbx*8+rbp]
+        shl     r10,56
+        xor     r9,QWORD[rbx*8+rbp]
+        rol     edx,8
+        xor     r8,QWORD[8+rax*1+rsi]
+        xor     r9,QWORD[rax*1+rsi]
+        mov     al,dl
+        xor     r8,r10
+        movzx   r12,WORD[r12*2+r11]
+        movzx   ebx,dl
+        shl     al,4
+        movzx   r13,BYTE[rcx*1+rsp]
+        shr     ebx,4
+        shl     r12,48
+        xor     r13,r8
+        mov     r10,r9
+        xor     r9,r12
+        shr     r8,8
+        movzx   r13,r13b
+        shr     r9,8
+        xor     r8,QWORD[((-128))+rcx*8+rbp]
+        shl     r10,56
+        xor     r9,QWORD[rcx*8+rbp]
+        rol     edx,8
+        xor     r8,QWORD[8+rax*1+rsi]
+        xor     r9,QWORD[rax*1+rsi]
+        mov     al,dl
+        xor     r8,r10
+        movzx   r13,WORD[r13*2+r11]
+        movzx   ecx,dl
+        shl     al,4
+        movzx   r12,BYTE[rbx*1+rsp]
+        shr     ecx,4
+        shl     r13,48
+        xor     r12,r8
+        mov     r10,r9
+        xor     r9,r13
+        shr     r8,8
+        movzx   r12,r12b
+        mov     edx,DWORD[8+rdi]
+        shr     r9,8
+        xor     r8,QWORD[((-128))+rbx*8+rbp]
+        shl     r10,56
+        xor     r9,QWORD[rbx*8+rbp]
+        rol     edx,8
+        xor     r8,QWORD[8+rax*1+rsi]
+        xor     r9,QWORD[rax*1+rsi]
+        mov     al,dl
+        xor     r8,r10
+        movzx   r12,WORD[r12*2+r11]
+        movzx   ebx,dl
+        shl     al,4
+        movzx   r13,BYTE[rcx*1+rsp]
+        shr     ebx,4
+        shl     r12,48
+        xor     r13,r8
+        mov     r10,r9
+        xor     r9,r12
+        shr     r8,8
+        movzx   r13,r13b
+        shr     r9,8
+        xor     r8,QWORD[((-128))+rcx*8+rbp]
+        shl     r10,56
+        xor     r9,QWORD[rcx*8+rbp]
+        rol     edx,8
+        xor     r8,QWORD[8+rax*1+rsi]
+        xor     r9,QWORD[rax*1+rsi]
+        mov     al,dl
+        xor     r8,r10
+        movzx   r13,WORD[r13*2+r11]
+        movzx   ecx,dl
+        shl     al,4
+        movzx   r12,BYTE[rbx*1+rsp]
+        shr     ecx,4
+        shl     r13,48
+        xor     r12,r8
+        mov     r10,r9
+        xor     r9,r13
+        shr     r8,8
+        movzx   r12,r12b
+        shr     r9,8
+        xor     r8,QWORD[((-128))+rbx*8+rbp]
+        shl     r10,56
+        xor     r9,QWORD[rbx*8+rbp]
+        rol     edx,8
+        xor     r8,QWORD[8+rax*1+rsi]
+        xor     r9,QWORD[rax*1+rsi]
+        mov     al,dl
+        xor     r8,r10
+        movzx   r12,WORD[r12*2+r11]
+        movzx   ebx,dl
+        shl     al,4
+        movzx   r13,BYTE[rcx*1+rsp]
+        shr     ebx,4
+        shl     r12,48
+        xor     r13,r8
+        mov     r10,r9
+        xor     r9,r12
+        shr     r8,8
+        movzx   r13,r13b
+        shr     r9,8
+        xor     r8,QWORD[((-128))+rcx*8+rbp]
+        shl     r10,56
+        xor     r9,QWORD[rcx*8+rbp]
+        rol     edx,8
+        xor     r8,QWORD[8+rax*1+rsi]
+        xor     r9,QWORD[rax*1+rsi]
+        mov     al,dl
+        xor     r8,r10
+        movzx   r13,WORD[r13*2+r11]
+        movzx   ecx,dl
+        shl     al,4
+        movzx   r12,BYTE[rbx*1+rsp]
+        shr     ecx,4
+        shl     r13,48
+        xor     r12,r8
+        mov     r10,r9
+        xor     r9,r13
+        shr     r8,8
+        movzx   r12,r12b
+        mov     edx,DWORD[4+rdi]
+        shr     r9,8
+        xor     r8,QWORD[((-128))+rbx*8+rbp]
+        shl     r10,56
+        xor     r9,QWORD[rbx*8+rbp]
+        rol     edx,8
+        xor     r8,QWORD[8+rax*1+rsi]
+        xor     r9,QWORD[rax*1+rsi]
+        mov     al,dl
+        xor     r8,r10
+        movzx   r12,WORD[r12*2+r11]
+        movzx   ebx,dl
+        shl     al,4
+        movzx   r13,BYTE[rcx*1+rsp]
+        shr     ebx,4
+        shl     r12,48
+        xor     r13,r8
+        mov     r10,r9
+        xor     r9,r12
+        shr     r8,8
+        movzx   r13,r13b
+        shr     r9,8
+        xor     r8,QWORD[((-128))+rcx*8+rbp]
+        shl     r10,56
+        xor     r9,QWORD[rcx*8+rbp]
+        rol     edx,8
+        xor     r8,QWORD[8+rax*1+rsi]
+        xor     r9,QWORD[rax*1+rsi]
+        mov     al,dl
+        xor     r8,r10
+        movzx   r13,WORD[r13*2+r11]
+        movzx   ecx,dl
+        shl     al,4
+        movzx   r12,BYTE[rbx*1+rsp]
+        shr     ecx,4
+        shl     r13,48
+        xor     r12,r8
+        mov     r10,r9
+        xor     r9,r13
+        shr     r8,8
+        movzx   r12,r12b
+        shr     r9,8
+        xor     r8,QWORD[((-128))+rbx*8+rbp]
+        shl     r10,56
+        xor     r9,QWORD[rbx*8+rbp]
+        rol     edx,8
+        xor     r8,QWORD[8+rax*1+rsi]
+        xor     r9,QWORD[rax*1+rsi]
+        mov     al,dl
+        xor     r8,r10
+        movzx   r12,WORD[r12*2+r11]
+        movzx   ebx,dl
+        shl     al,4
+        movzx   r13,BYTE[rcx*1+rsp]
+        shr     ebx,4
+        shl     r12,48
+        xor     r13,r8
+        mov     r10,r9
+        xor     r9,r12
+        shr     r8,8
+        movzx   r13,r13b
+        shr     r9,8
+        xor     r8,QWORD[((-128))+rcx*8+rbp]
+        shl     r10,56
+        xor     r9,QWORD[rcx*8+rbp]
+        rol     edx,8
+        xor     r8,QWORD[8+rax*1+rsi]
+        xor     r9,QWORD[rax*1+rsi]
+        mov     al,dl
+        xor     r8,r10
+        movzx   r13,WORD[r13*2+r11]
+        movzx   ecx,dl
+        shl     al,4
+        movzx   r12,BYTE[rbx*1+rsp]
+        shr     ecx,4
+        shl     r13,48
+        xor     r12,r8
+        mov     r10,r9
+        xor     r9,r13
+        shr     r8,8
+        movzx   r12,r12b
+        mov     edx,DWORD[rdi]
+        shr     r9,8
+        xor     r8,QWORD[((-128))+rbx*8+rbp]
+        shl     r10,56
+        xor     r9,QWORD[rbx*8+rbp]
+        rol     edx,8
+        xor     r8,QWORD[8+rax*1+rsi]
+        xor     r9,QWORD[rax*1+rsi]
+        mov     al,dl
+        xor     r8,r10
+        movzx   r12,WORD[r12*2+r11]
+        movzx   ebx,dl
+        shl     al,4
+        movzx   r13,BYTE[rcx*1+rsp]
+        shr     ebx,4
+        shl     r12,48
+        xor     r13,r8
+        mov     r10,r9
+        xor     r9,r12
+        shr     r8,8
+        movzx   r13,r13b
+        shr     r9,8
+        xor     r8,QWORD[((-128))+rcx*8+rbp]
+        shl     r10,56
+        xor     r9,QWORD[rcx*8+rbp]
+        rol     edx,8
+        xor     r8,QWORD[8+rax*1+rsi]
+        xor     r9,QWORD[rax*1+rsi]
+        mov     al,dl
+        xor     r8,r10
+        movzx   r13,WORD[r13*2+r11]
+        movzx   ecx,dl
+        shl     al,4
+        movzx   r12,BYTE[rbx*1+rsp]
+        shr     ecx,4
+        shl     r13,48
+        xor     r12,r8
+        mov     r10,r9
+        xor     r9,r13
+        shr     r8,8
+        movzx   r12,r12b
+        shr     r9,8
+        xor     r8,QWORD[((-128))+rbx*8+rbp]
+        shl     r10,56
+        xor     r9,QWORD[rbx*8+rbp]
+        rol     edx,8
+        xor     r8,QWORD[8+rax*1+rsi]
+        xor     r9,QWORD[rax*1+rsi]
+        mov     al,dl
+        xor     r8,r10
+        movzx   r12,WORD[r12*2+r11]
+        movzx   ebx,dl
+        shl     al,4
+        movzx   r13,BYTE[rcx*1+rsp]
+        shr     ebx,4
+        shl     r12,48
+        xor     r13,r8
+        mov     r10,r9
+        xor     r9,r12
+        shr     r8,8
+        movzx   r13,r13b
+        shr     r9,8
+        xor     r8,QWORD[((-128))+rcx*8+rbp]
+        shl     r10,56
+        xor     r9,QWORD[rcx*8+rbp]
+        rol     edx,8
+        xor     r8,QWORD[8+rax*1+rsi]
+        xor     r9,QWORD[rax*1+rsi]
+        mov     al,dl
+        xor     r8,r10
+        movzx   r13,WORD[r13*2+r11]
+        movzx   ecx,dl
+        shl     al,4
+        movzx   r12,BYTE[rbx*1+rsp]
+        and     ecx,240
+        shl     r13,48
+        xor     r12,r8
+        mov     r10,r9
+        xor     r9,r13
+        shr     r8,8
+        movzx   r12,r12b
+        mov     edx,DWORD[((-4))+rdi]
+        shr     r9,8
+        xor     r8,QWORD[((-128))+rbx*8+rbp]
+        shl     r10,56
+        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
+        movzx   r13,r8b
+        shr     r8,4
+        mov     r10,r9
+        shl     r13b,4
+        shr     r9,4
+        xor     r8,QWORD[8+rcx*1+rsi]
+        movzx   r13,WORD[r13*2+r11]
+        shl     r10,60
+        xor     r9,QWORD[rcx*1+rsi]
+        xor     r8,r10
+        shl     r13,48
+        bswap   r8
+        xor     r9,r13
+        bswap   r9
+        cmp     r14,r15
+        jb      NEAR $L$outer_loop
+        mov     QWORD[8+rdi],r8
+        mov     QWORD[rdi],r9
+
+        lea     rsi,[((280+48))+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$ghash_epilogue:
+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
+        mov     rsi,QWORD[16+rsp]
+        DB      0F3h,0C3h               ;repret
+
+$L$SEH_end_gcm_ghash_4bit:
+global  gcm_init_clmul
+
+ALIGN   16
+gcm_init_clmul:
+
+$L$_init_clmul:
+$L$SEH_begin_gcm_init_clmul:
+
+DB      0x48,0x83,0xec,0x18
+DB      0x0f,0x29,0x34,0x24
+        movdqu  xmm2,XMMWORD[rdx]
+        pshufd  xmm2,xmm2,78
+
+
+        pshufd  xmm4,xmm2,255
+        movdqa  xmm3,xmm2
+        psllq   xmm2,1
+        pxor    xmm5,xmm5
+        psrlq   xmm3,63
+        pcmpgtd xmm5,xmm4
+        pslldq  xmm3,8
+        por     xmm2,xmm3
+
+
+        pand    xmm5,XMMWORD[$L$0x1c2_polynomial]
+        pxor    xmm2,xmm5
+
+
+        pshufd  xmm6,xmm2,78
+        movdqa  xmm0,xmm2
+        pxor    xmm6,xmm2
+        movdqa  xmm1,xmm0
+        pshufd  xmm3,xmm0,78
+        pxor    xmm3,xmm0
+DB      102,15,58,68,194,0
+DB      102,15,58,68,202,17
+DB      102,15,58,68,222,0
+        pxor    xmm3,xmm0
+        pxor    xmm3,xmm1
+
+        movdqa  xmm4,xmm3
+        psrldq  xmm3,8
+        pslldq  xmm4,8
+        pxor    xmm1,xmm3
+        pxor    xmm0,xmm4
+
+        movdqa  xmm4,xmm0
+        movdqa  xmm3,xmm0
+        psllq   xmm0,5
+        pxor    xmm3,xmm0
+        psllq   xmm0,1
+        pxor    xmm0,xmm3
+        psllq   xmm0,57
+        movdqa  xmm3,xmm0
+        pslldq  xmm0,8
+        psrldq  xmm3,8
+        pxor    xmm0,xmm4
+        pxor    xmm1,xmm3
+
+
+        movdqa  xmm4,xmm0
+        psrlq   xmm0,1
+        pxor    xmm1,xmm4
+        pxor    xmm4,xmm0
+        psrlq   xmm0,5
+        pxor    xmm0,xmm4
+        psrlq   xmm0,1
+        pxor    xmm0,xmm1
+        pshufd  xmm3,xmm2,78
+        pshufd  xmm4,xmm0,78
+        pxor    xmm3,xmm2
+        movdqu  XMMWORD[rcx],xmm2
+        pxor    xmm4,xmm0
+        movdqu  XMMWORD[16+rcx],xmm0
+DB      102,15,58,15,227,8
+        movdqu  XMMWORD[32+rcx],xmm4
+        movdqa  xmm1,xmm0
+        pshufd  xmm3,xmm0,78
+        pxor    xmm3,xmm0
+DB      102,15,58,68,194,0
+DB      102,15,58,68,202,17
+DB      102,15,58,68,222,0
+        pxor    xmm3,xmm0
+        pxor    xmm3,xmm1
+
+        movdqa  xmm4,xmm3
+        psrldq  xmm3,8
+        pslldq  xmm4,8
+        pxor    xmm1,xmm3
+        pxor    xmm0,xmm4
+
+        movdqa  xmm4,xmm0
+        movdqa  xmm3,xmm0
+        psllq   xmm0,5
+        pxor    xmm3,xmm0
+        psllq   xmm0,1
+        pxor    xmm0,xmm3
+        psllq   xmm0,57
+        movdqa  xmm3,xmm0
+        pslldq  xmm0,8
+        psrldq  xmm3,8
+        pxor    xmm0,xmm4
+        pxor    xmm1,xmm3
+
+
+        movdqa  xmm4,xmm0
+        psrlq   xmm0,1
+        pxor    xmm1,xmm4
+        pxor    xmm4,xmm0
+        psrlq   xmm0,5
+        pxor    xmm0,xmm4
+        psrlq   xmm0,1
+        pxor    xmm0,xmm1
+        movdqa  xmm5,xmm0
+        movdqa  xmm1,xmm0
+        pshufd  xmm3,xmm0,78
+        pxor    xmm3,xmm0
+DB      102,15,58,68,194,0
+DB      102,15,58,68,202,17
+DB      102,15,58,68,222,0
+        pxor    xmm3,xmm0
+        pxor    xmm3,xmm1
+
+        movdqa  xmm4,xmm3
+        psrldq  xmm3,8
+        pslldq  xmm4,8
+        pxor    xmm1,xmm3
+        pxor    xmm0,xmm4
+
+        movdqa  xmm4,xmm0
+        movdqa  xmm3,xmm0
+        psllq   xmm0,5
+        pxor    xmm3,xmm0
+        psllq   xmm0,1
+        pxor    xmm0,xmm3
+        psllq   xmm0,57
+        movdqa  xmm3,xmm0
+        pslldq  xmm0,8
+        psrldq  xmm3,8
+        pxor    xmm0,xmm4
+        pxor    xmm1,xmm3
+
+
+        movdqa  xmm4,xmm0
+        psrlq   xmm0,1
+        pxor    xmm1,xmm4
+        pxor    xmm4,xmm0
+        psrlq   xmm0,5
+        pxor    xmm0,xmm4
+        psrlq   xmm0,1
+        pxor    xmm0,xmm1
+        pshufd  xmm3,xmm5,78
+        pshufd  xmm4,xmm0,78
+        pxor    xmm3,xmm5
+        movdqu  XMMWORD[48+rcx],xmm5
+        pxor    xmm4,xmm0
+        movdqu  XMMWORD[64+rcx],xmm0
+DB      102,15,58,15,227,8
+        movdqu  XMMWORD[80+rcx],xmm4
+        movaps  xmm6,XMMWORD[rsp]
+        lea     rsp,[24+rsp]
+$L$SEH_end_gcm_init_clmul:
+        DB      0F3h,0C3h               ;repret
+
+
+global  gcm_gmult_clmul
+
+ALIGN   16
+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
+        pxor    xmm3,xmm0
+DB      102,15,58,68,194,0
+DB      102,15,58,68,202,17
+DB      102,15,58,68,220,0
+        pxor    xmm3,xmm0
+        pxor    xmm3,xmm1
+
+        movdqa  xmm4,xmm3
+        psrldq  xmm3,8
+        pslldq  xmm4,8
+        pxor    xmm1,xmm3
+        pxor    xmm0,xmm4
+
+        movdqa  xmm4,xmm0
+        movdqa  xmm3,xmm0
+        psllq   xmm0,5
+        pxor    xmm3,xmm0
+        psllq   xmm0,1
+        pxor    xmm0,xmm3
+        psllq   xmm0,57
+        movdqa  xmm3,xmm0
+        pslldq  xmm0,8
+        psrldq  xmm3,8
+        pxor    xmm0,xmm4
+        pxor    xmm1,xmm3
+
+
+        movdqa  xmm4,xmm0
+        psrlq   xmm0,1
+        pxor    xmm1,xmm4
+        pxor    xmm4,xmm0
+        psrlq   xmm0,5
+        pxor    xmm0,xmm4
+        psrlq   xmm0,1
+        pxor    xmm0,xmm1
+DB      102,15,56,0,197
+        movdqu  XMMWORD[rcx],xmm0
+        DB      0F3h,0C3h               ;repret
+
+
+global  gcm_ghash_clmul
+
+ALIGN   32
+gcm_ghash_clmul:
+
+$L$_ghash_clmul:
+        lea     rax,[((-136))+rsp]
+$L$SEH_begin_gcm_ghash_clmul:
+
+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[rcx]
+        movdqu  xmm2,XMMWORD[rdx]
+        movdqu  xmm7,XMMWORD[32+rdx]
+DB      102,65,15,56,0,194
+
+        sub     r9,0x10
+        jz      NEAR $L$odd_tail
+
+        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      NEAR $L$skip4x
+
+        sub     r9,0x30
+        mov     rax,0xA040608020C0E000
+        movdqu  xmm14,XMMWORD[48+rdx]
+        movdqu  xmm15,XMMWORD[64+rdx]
+
+
+
+
+        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
+        pshufd  xmm4,xmm3,78
+        pxor    xmm4,xmm3
+DB      102,15,58,68,218,0
+DB      102,15,58,68,234,17
+DB      102,15,58,68,231,0
+
+        movdqa  xmm13,xmm11
+        pshufd  xmm12,xmm11,78
+        pxor    xmm12,xmm11
+DB      102,68,15,58,68,222,0
+DB      102,68,15,58,68,238,17
+DB      102,68,15,58,68,231,16
+        xorps   xmm3,xmm11
+        xorps   xmm5,xmm13
+        movups  xmm7,XMMWORD[80+rdx]
+        xorps   xmm4,xmm12
+
+        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
+        pshufd  xmm12,xmm11,78
+        pxor    xmm0,xmm8
+        pxor    xmm12,xmm11
+DB      102,69,15,58,68,222,0
+        movdqa  xmm1,xmm0
+        pshufd  xmm8,xmm0,78
+        pxor    xmm8,xmm0
+DB      102,69,15,58,68,238,17
+DB      102,68,15,58,68,231,0
+        xorps   xmm3,xmm11
+        xorps   xmm5,xmm13
+
+        lea     r8,[64+r8]
+        sub     r9,0x40
+        jc      NEAR $L$tail4x
+
+        jmp     NEAR $L$mod4_loop
+ALIGN   32
+$L$mod4_loop:
+DB      102,65,15,58,68,199,0
+        xorps   xmm4,xmm12
+        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[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[32+rdx]
+        xorps   xmm8,xmm4
+DB      102,68,15,58,68,218,0
+        pshufd  xmm4,xmm3,78
+
+        pxor    xmm8,xmm0
+        movdqa  xmm5,xmm3
+        pxor    xmm8,xmm1
+        pxor    xmm4,xmm3
+        movdqa  xmm9,xmm8
+DB      102,68,15,58,68,234,17
+        pslldq  xmm8,8
+        psrldq  xmm9,8
+        pxor    xmm0,xmm8
+        movdqa  xmm8,XMMWORD[$L$7_mask]
+        pxor    xmm1,xmm9
+DB      102,76,15,110,200
+
+        pand    xmm8,xmm0
+DB      102,69,15,56,0,200
+        pxor    xmm9,xmm0
+DB      102,68,15,58,68,231,0
+        psllq   xmm9,57
+        movdqa  xmm8,xmm9
+        pslldq  xmm9,8
+DB      102,15,58,68,222,0
+        psrldq  xmm8,8
+        pxor    xmm0,xmm9
+        pxor    xmm1,xmm8
+        movdqu  xmm8,XMMWORD[r8]
+
+        movdqa  xmm9,xmm0
+        psrlq   xmm0,1
+DB      102,15,58,68,238,17
+        xorps   xmm3,xmm11
+        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[80+rdx]
+DB      102,69,15,56,0,194
+        pxor    xmm1,xmm9
+        pxor    xmm9,xmm0
+        psrlq   xmm0,5
+
+        movdqa  xmm13,xmm11
+        pxor    xmm4,xmm12
+        pshufd  xmm12,xmm11,78
+        pxor    xmm0,xmm9
+        pxor    xmm1,xmm8
+        pxor    xmm12,xmm11
+DB      102,69,15,58,68,222,0
+        psrlq   xmm0,1
+        pxor    xmm0,xmm1
+        movdqa  xmm1,xmm0
+DB      102,69,15,58,68,238,17
+        xorps   xmm3,xmm11
+        pshufd  xmm8,xmm0,78
+        pxor    xmm8,xmm0
+
+DB      102,68,15,58,68,231,0
+        xorps   xmm5,xmm13
+
+        lea     r8,[64+r8]
+        sub     r9,0x40
+        jnc     NEAR $L$mod4_loop
+
+$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
+        xorps   xmm4,xmm12
+        xorps   xmm0,xmm3
+        xorps   xmm1,xmm5
+        pxor    xmm1,xmm0
+        pxor    xmm8,xmm4
+
+        pxor    xmm8,xmm1
+        pxor    xmm1,xmm0
+
+        movdqa  xmm9,xmm8
+        psrldq  xmm8,8
+        pslldq  xmm9,8
+        pxor    xmm1,xmm8
+        pxor    xmm0,xmm9
+
+        movdqa  xmm4,xmm0
+        movdqa  xmm3,xmm0
+        psllq   xmm0,5
+        pxor    xmm3,xmm0
+        psllq   xmm0,1
+        pxor    xmm0,xmm3
+        psllq   xmm0,57
+        movdqa  xmm3,xmm0
+        pslldq  xmm0,8
+        psrldq  xmm3,8
+        pxor    xmm0,xmm4
+        pxor    xmm1,xmm3
+
+
+        movdqa  xmm4,xmm0
+        psrlq   xmm0,1
+        pxor    xmm1,xmm4
+        pxor    xmm4,xmm0
+        psrlq   xmm0,5
+        pxor    xmm0,xmm4
+        psrlq   xmm0,1
+        pxor    xmm0,xmm1
+        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[r8]
+        movdqu  xmm3,XMMWORD[16+r8]
+DB      102,69,15,56,0,194
+DB      102,65,15,56,0,218
+        pxor    xmm0,xmm8
+
+        movdqa  xmm5,xmm3
+        pshufd  xmm4,xmm3,78
+        pxor    xmm4,xmm3
+DB      102,15,58,68,218,0
+DB      102,15,58,68,234,17
+DB      102,15,58,68,231,0
+
+        lea     r8,[32+r8]
+        nop
+        sub     r9,0x20
+        jbe     NEAR $L$even_tail
+        nop
+        jmp     NEAR $L$mod_loop
+
+ALIGN   32
+$L$mod_loop:
+        movdqa  xmm1,xmm0
+        movdqa  xmm8,xmm4
+        pshufd  xmm4,xmm0,78
+        pxor    xmm4,xmm0
+
+DB      102,15,58,68,198,0
+DB      102,15,58,68,206,17
+DB      102,15,58,68,231,16
+
+        pxor    xmm0,xmm3
+        pxor    xmm1,xmm5
+        movdqu  xmm9,XMMWORD[r8]
+        pxor    xmm8,xmm0
+DB      102,69,15,56,0,202
+        movdqu  xmm3,XMMWORD[16+r8]
+
+        pxor    xmm8,xmm1
+        pxor    xmm1,xmm9
+        pxor    xmm4,xmm8
+DB      102,65,15,56,0,218
+        movdqa  xmm8,xmm4
+        psrldq  xmm8,8
+        pslldq  xmm4,8
+        pxor    xmm1,xmm8
+        pxor    xmm0,xmm4
+
+        movdqa  xmm5,xmm3
+
+        movdqa  xmm9,xmm0
+        movdqa  xmm8,xmm0
+        psllq   xmm0,5
+        pxor    xmm8,xmm0
+DB      102,15,58,68,218,0
+        psllq   xmm0,1
+        pxor    xmm0,xmm8
+        psllq   xmm0,57
+        movdqa  xmm8,xmm0
+        pslldq  xmm0,8
+        psrldq  xmm8,8
+        pxor    xmm0,xmm9
+        pshufd  xmm4,xmm5,78
+        pxor    xmm1,xmm8
+        pxor    xmm4,xmm5
+
+        movdqa  xmm9,xmm0
+        psrlq   xmm0,1
+DB      102,15,58,68,234,17
+        pxor    xmm1,xmm9
+        pxor    xmm9,xmm0
+        psrlq   xmm0,5
+        pxor    xmm0,xmm9
+        lea     r8,[32+r8]
+        psrlq   xmm0,1
+DB      102,15,58,68,231,0
+        pxor    xmm0,xmm1
+
+        sub     r9,0x20
+        ja      NEAR $L$mod_loop
+
+$L$even_tail:
+        movdqa  xmm1,xmm0
+        movdqa  xmm8,xmm4
+        pshufd  xmm4,xmm0,78
+        pxor    xmm4,xmm0
+
+DB      102,15,58,68,198,0
+DB      102,15,58,68,206,17
+DB      102,15,58,68,231,16
+
+        pxor    xmm0,xmm3
+        pxor    xmm1,xmm5
+        pxor    xmm8,xmm0
+        pxor    xmm8,xmm1
+        pxor    xmm4,xmm8
+        movdqa  xmm8,xmm4
+        psrldq  xmm8,8
+        pslldq  xmm4,8
+        pxor    xmm1,xmm8
+        pxor    xmm0,xmm4
+
+        movdqa  xmm4,xmm0
+        movdqa  xmm3,xmm0
+        psllq   xmm0,5
+        pxor    xmm3,xmm0
+        psllq   xmm0,1
+        pxor    xmm0,xmm3
+        psllq   xmm0,57
+        movdqa  xmm3,xmm0
+        pslldq  xmm0,8
+        psrldq  xmm3,8
+        pxor    xmm0,xmm4
+        pxor    xmm1,xmm3
+
+
+        movdqa  xmm4,xmm0
+        psrlq   xmm0,1
+        pxor    xmm1,xmm4
+        pxor    xmm4,xmm0
+        psrlq   xmm0,5
+        pxor    xmm0,xmm4
+        psrlq   xmm0,1
+        pxor    xmm0,xmm1
+        test    r9,r9
+        jnz     NEAR $L$done
+
+$L$odd_tail:
+        movdqu  xmm8,XMMWORD[r8]
+DB      102,69,15,56,0,194
+        pxor    xmm0,xmm8
+        movdqa  xmm1,xmm0
+        pshufd  xmm3,xmm0,78
+        pxor    xmm3,xmm0
+DB      102,15,58,68,194,0
+DB      102,15,58,68,202,17
+DB      102,15,58,68,223,0
+        pxor    xmm3,xmm0
+        pxor    xmm3,xmm1
+
+        movdqa  xmm4,xmm3
+        psrldq  xmm3,8
+        pslldq  xmm4,8
+        pxor    xmm1,xmm3
+        pxor    xmm0,xmm4
+
+        movdqa  xmm4,xmm0
+        movdqa  xmm3,xmm0
+        psllq   xmm0,5
+        pxor    xmm3,xmm0
+        psllq   xmm0,1
+        pxor    xmm0,xmm3
+        psllq   xmm0,57
+        movdqa  xmm3,xmm0
+        pslldq  xmm0,8
+        psrldq  xmm3,8
+        pxor    xmm0,xmm4
+        pxor    xmm1,xmm3
+
+
+        movdqa  xmm4,xmm0
+        psrlq   xmm0,1
+        pxor    xmm1,xmm4
+        pxor    xmm4,xmm0
+        psrlq   xmm0,5
+        pxor    xmm0,xmm4
+        psrlq   xmm0,1
+        pxor    xmm0,xmm1
+$L$done:
+DB      102,65,15,56,0,194
+        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
+
+
+global  gcm_init_avx
+
+ALIGN   32
+gcm_init_avx:
+
+        jmp     NEAR $L$_init_clmul
+
+
+global  gcm_gmult_avx
+
+ALIGN   32
+gcm_gmult_avx:
+
+        jmp     NEAR $L$_gmult_clmul
+
+
+global  gcm_ghash_avx
+
+ALIGN   32
+gcm_ghash_avx:
+
+        jmp     NEAR $L$_ghash_clmul
+
+
+ALIGN   64
+$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,0xc2
+$L$7_mask:
+        DD      7,0,7,0
+$L$7_mask_poly:
+        DD      7,0,450,0
+ALIGN   64
+
+$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      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
+
+ALIGN   16
+se_handler:
+        push    rsi
+        push    rdi
+        push    rbx
+        push    rbp
+        push    r12
+        push    r13
+        push    r14
+        push    r15
+        pushfq
+        sub     rsp,64
+
+        mov     rax,QWORD[120+r8]
+        mov     rbx,QWORD[248+r8]
+
+        mov     rsi,QWORD[8+r9]
+        mov     r11,QWORD[56+r9]
+
+        mov     r10d,DWORD[r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jb      NEAR $L$in_prologue
+
+        mov     rax,QWORD[152+r8]
+
+        mov     r10d,DWORD[4+r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jae     NEAR $L$in_prologue
+
+        lea     rax,[((48+280))+rax]
+
+        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_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[40+r9]
+        mov     rsi,r8
+        mov     ecx,154
+        DD      0xa548f3fc
+
+        mov     rsi,r9
+        xor     rcx,rcx
+        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
+        popfq
+        pop     r15
+        pop     r14
+        pop     r13
+        pop     r12
+        pop     rbp
+        pop     rbx
+        pop     rdi
+        pop     rsi
+        DB      0F3h,0C3h               ;repret
+
+
+section .pdata rdata align=4
+ALIGN   4
+        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      $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      $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      $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:
+DB      9,0,0,0
+        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      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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm
new file mode 100644
index 0000000000..f3b7b0e35e
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm
@@ -0,0 +1,3137 @@
+; WARNING: do not edit!
+; Generated from openssl/crypto/sha/asm/sha1-mb-x86_64.pl
+;
+; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
+;
+; Licensed under the OpenSSL license (the "License").  You may not use
+; this file except in compliance with the License.  You can obtain a copy
+; in the file LICENSE in the source distribution or at
+; https://www.openssl.org/source/license.html
+
+default rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section .text code align=64
+
+
+EXTERN  OPENSSL_ia32cap_P
+
+global  sha1_multi_block
+
+ALIGN   32
+sha1_multi_block:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_sha1_multi_block:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+
+
+
+        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
+        bt      rcx,61
+        jc      NEAR _shaext_shortcut
+        mov     rax,rsp
+
+        push    rbx
+
+        push    rbp
+
+        lea     rsp,[((-168))+rsp]
+        movaps  XMMWORD[rsp],xmm6
+        movaps  XMMWORD[16+rsp],xmm7
+        movaps  XMMWORD[32+rsp],xmm8
+        movaps  XMMWORD[48+rsp],xmm9
+        movaps  XMMWORD[(-120)+rax],xmm10
+        movaps  XMMWORD[(-104)+rax],xmm11
+        movaps  XMMWORD[(-88)+rax],xmm12
+        movaps  XMMWORD[(-72)+rax],xmm13
+        movaps  XMMWORD[(-56)+rax],xmm14
+        movaps  XMMWORD[(-40)+rax],xmm15
+        sub     rsp,288
+        and     rsp,-256
+        mov     QWORD[272+rsp],rax
+
+$L$body:
+        lea     rbp,[K_XX_XX]
+        lea     rbx,[256+rsp]
+
+$L$oop_grande:
+        mov     DWORD[280+rsp],edx
+        xor     edx,edx
+        mov     r8,QWORD[rsi]
+        mov     ecx,DWORD[8+rsi]
+        cmp     ecx,edx
+        cmovg   edx,ecx
+        test    ecx,ecx
+        mov     DWORD[rbx],ecx
+        cmovle  r8,rbp
+        mov     r9,QWORD[16+rsi]
+        mov     ecx,DWORD[24+rsi]
+        cmp     ecx,edx
+        cmovg   edx,ecx
+        test    ecx,ecx
+        mov     DWORD[4+rbx],ecx
+        cmovle  r9,rbp
+        mov     r10,QWORD[32+rsi]
+        mov     ecx,DWORD[40+rsi]
+        cmp     ecx,edx
+        cmovg   edx,ecx
+        test    ecx,ecx
+        mov     DWORD[8+rbx],ecx
+        cmovle  r10,rbp
+        mov     r11,QWORD[48+rsi]
+        mov     ecx,DWORD[56+rsi]
+        cmp     ecx,edx
+        cmovg   edx,ecx
+        test    ecx,ecx
+        mov     DWORD[12+rbx],ecx
+        cmovle  r11,rbp
+        test    edx,edx
+        jz      NEAR $L$done
+
+        movdqu  xmm10,XMMWORD[rdi]
+        lea     rax,[128+rsp]
+        movdqu  xmm11,XMMWORD[32+rdi]
+        movdqu  xmm12,XMMWORD[64+rdi]
+        movdqu  xmm13,XMMWORD[96+rdi]
+        movdqu  xmm14,XMMWORD[128+rdi]
+        movdqa  xmm5,XMMWORD[96+rbp]
+        movdqa  xmm15,XMMWORD[((-32))+rbp]
+        jmp     NEAR $L$oop
+
+ALIGN   32
+$L$oop:
+        movd    xmm0,DWORD[r8]
+        lea     r8,[64+r8]
+        movd    xmm2,DWORD[r9]
+        lea     r9,[64+r9]
+        movd    xmm3,DWORD[r10]
+        lea     r10,[64+r10]
+        movd    xmm4,DWORD[r11]
+        lea     r11,[64+r11]
+        punpckldq       xmm0,xmm3
+        movd    xmm1,DWORD[((-60))+r8]
+        punpckldq       xmm2,xmm4
+        movd    xmm9,DWORD[((-60))+r9]
+        punpckldq       xmm0,xmm2
+        movd    xmm8,DWORD[((-60))+r10]
+DB      102,15,56,0,197
+        movd    xmm7,DWORD[((-60))+r11]
+        punpckldq       xmm1,xmm8
+        movdqa  xmm8,xmm10
+        paddd   xmm14,xmm15
+        punpckldq       xmm9,xmm7
+        movdqa  xmm7,xmm11
+        movdqa  xmm6,xmm11
+        pslld   xmm8,5
+        pandn   xmm7,xmm13
+        pand    xmm6,xmm12
+        punpckldq       xmm1,xmm9
+        movdqa  xmm9,xmm10
+
+        movdqa  XMMWORD[(0-128)+rax],xmm0
+        paddd   xmm14,xmm0
+        movd    xmm2,DWORD[((-56))+r8]
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+        movdqa  xmm7,xmm11
+
+        por     xmm8,xmm9
+        movd    xmm9,DWORD[((-56))+r9]
+        pslld   xmm7,30
+        paddd   xmm14,xmm6
+
+        psrld   xmm11,2
+        paddd   xmm14,xmm8
+DB      102,15,56,0,205
+        movd    xmm8,DWORD[((-56))+r10]
+        por     xmm11,xmm7
+        movd    xmm7,DWORD[((-56))+r11]
+        punpckldq       xmm2,xmm8
+        movdqa  xmm8,xmm14
+        paddd   xmm13,xmm15
+        punpckldq       xmm9,xmm7
+        movdqa  xmm7,xmm10
+        movdqa  xmm6,xmm10
+        pslld   xmm8,5
+        pandn   xmm7,xmm12
+        pand    xmm6,xmm11
+        punpckldq       xmm2,xmm9
+        movdqa  xmm9,xmm14
+
+        movdqa  XMMWORD[(16-128)+rax],xmm1
+        paddd   xmm13,xmm1
+        movd    xmm3,DWORD[((-52))+r8]
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+        movdqa  xmm7,xmm10
+
+        por     xmm8,xmm9
+        movd    xmm9,DWORD[((-52))+r9]
+        pslld   xmm7,30
+        paddd   xmm13,xmm6
+
+        psrld   xmm10,2
+        paddd   xmm13,xmm8
+DB      102,15,56,0,213
+        movd    xmm8,DWORD[((-52))+r10]
+        por     xmm10,xmm7
+        movd    xmm7,DWORD[((-52))+r11]
+        punpckldq       xmm3,xmm8
+        movdqa  xmm8,xmm13
+        paddd   xmm12,xmm15
+        punpckldq       xmm9,xmm7
+        movdqa  xmm7,xmm14
+        movdqa  xmm6,xmm14
+        pslld   xmm8,5
+        pandn   xmm7,xmm11
+        pand    xmm6,xmm10
+        punpckldq       xmm3,xmm9
+        movdqa  xmm9,xmm13
+
+        movdqa  XMMWORD[(32-128)+rax],xmm2
+        paddd   xmm12,xmm2
+        movd    xmm4,DWORD[((-48))+r8]
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+        movdqa  xmm7,xmm14
+
+        por     xmm8,xmm9
+        movd    xmm9,DWORD[((-48))+r9]
+        pslld   xmm7,30
+        paddd   xmm12,xmm6
+
+        psrld   xmm14,2
+        paddd   xmm12,xmm8
+DB      102,15,56,0,221
+        movd    xmm8,DWORD[((-48))+r10]
+        por     xmm14,xmm7
+        movd    xmm7,DWORD[((-48))+r11]
+        punpckldq       xmm4,xmm8
+        movdqa  xmm8,xmm12
+        paddd   xmm11,xmm15
+        punpckldq       xmm9,xmm7
+        movdqa  xmm7,xmm13
+        movdqa  xmm6,xmm13
+        pslld   xmm8,5
+        pandn   xmm7,xmm10
+        pand    xmm6,xmm14
+        punpckldq       xmm4,xmm9
+        movdqa  xmm9,xmm12
+
+        movdqa  XMMWORD[(48-128)+rax],xmm3
+        paddd   xmm11,xmm3
+        movd    xmm0,DWORD[((-44))+r8]
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+        movdqa  xmm7,xmm13
+
+        por     xmm8,xmm9
+        movd    xmm9,DWORD[((-44))+r9]
+        pslld   xmm7,30
+        paddd   xmm11,xmm6
+
+        psrld   xmm13,2
+        paddd   xmm11,xmm8
+DB      102,15,56,0,229
+        movd    xmm8,DWORD[((-44))+r10]
+        por     xmm13,xmm7
+        movd    xmm7,DWORD[((-44))+r11]
+        punpckldq       xmm0,xmm8
+        movdqa  xmm8,xmm11
+        paddd   xmm10,xmm15
+        punpckldq       xmm9,xmm7
+        movdqa  xmm7,xmm12
+        movdqa  xmm6,xmm12
+        pslld   xmm8,5
+        pandn   xmm7,xmm14
+        pand    xmm6,xmm13
+        punpckldq       xmm0,xmm9
+        movdqa  xmm9,xmm11
+
+        movdqa  XMMWORD[(64-128)+rax],xmm4
+        paddd   xmm10,xmm4
+        movd    xmm1,DWORD[((-40))+r8]
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+        movdqa  xmm7,xmm12
+
+        por     xmm8,xmm9
+        movd    xmm9,DWORD[((-40))+r9]
+        pslld   xmm7,30
+        paddd   xmm10,xmm6
+
+        psrld   xmm12,2
+        paddd   xmm10,xmm8
+DB      102,15,56,0,197
+        movd    xmm8,DWORD[((-40))+r10]
+        por     xmm12,xmm7
+        movd    xmm7,DWORD[((-40))+r11]
+        punpckldq       xmm1,xmm8
+        movdqa  xmm8,xmm10
+        paddd   xmm14,xmm15
+        punpckldq       xmm9,xmm7
+        movdqa  xmm7,xmm11
+        movdqa  xmm6,xmm11
+        pslld   xmm8,5
+        pandn   xmm7,xmm13
+        pand    xmm6,xmm12
+        punpckldq       xmm1,xmm9
+        movdqa  xmm9,xmm10
+
+        movdqa  XMMWORD[(80-128)+rax],xmm0
+        paddd   xmm14,xmm0
+        movd    xmm2,DWORD[((-36))+r8]
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+        movdqa  xmm7,xmm11
+
+        por     xmm8,xmm9
+        movd    xmm9,DWORD[((-36))+r9]
+        pslld   xmm7,30
+        paddd   xmm14,xmm6
+
+        psrld   xmm11,2
+        paddd   xmm14,xmm8
+DB      102,15,56,0,205
+        movd    xmm8,DWORD[((-36))+r10]
+        por     xmm11,xmm7
+        movd    xmm7,DWORD[((-36))+r11]
+        punpckldq       xmm2,xmm8
+        movdqa  xmm8,xmm14
+        paddd   xmm13,xmm15
+        punpckldq       xmm9,xmm7
+        movdqa  xmm7,xmm10
+        movdqa  xmm6,xmm10
+        pslld   xmm8,5
+        pandn   xmm7,xmm12
+        pand    xmm6,xmm11
+        punpckldq       xmm2,xmm9
+        movdqa  xmm9,xmm14
+
+        movdqa  XMMWORD[(96-128)+rax],xmm1
+        paddd   xmm13,xmm1
+        movd    xmm3,DWORD[((-32))+r8]
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+        movdqa  xmm7,xmm10
+
+        por     xmm8,xmm9
+        movd    xmm9,DWORD[((-32))+r9]
+        pslld   xmm7,30
+        paddd   xmm13,xmm6
+
+        psrld   xmm10,2
+        paddd   xmm13,xmm8
+DB      102,15,56,0,213
+        movd    xmm8,DWORD[((-32))+r10]
+        por     xmm10,xmm7
+        movd    xmm7,DWORD[((-32))+r11]
+        punpckldq       xmm3,xmm8
+        movdqa  xmm8,xmm13
+        paddd   xmm12,xmm15
+        punpckldq       xmm9,xmm7
+        movdqa  xmm7,xmm14
+        movdqa  xmm6,xmm14
+        pslld   xmm8,5
+        pandn   xmm7,xmm11
+        pand    xmm6,xmm10
+        punpckldq       xmm3,xmm9
+        movdqa  xmm9,xmm13
+
+        movdqa  XMMWORD[(112-128)+rax],xmm2
+        paddd   xmm12,xmm2
+        movd    xmm4,DWORD[((-28))+r8]
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+        movdqa  xmm7,xmm14
+
+        por     xmm8,xmm9
+        movd    xmm9,DWORD[((-28))+r9]
+        pslld   xmm7,30
+        paddd   xmm12,xmm6
+
+        psrld   xmm14,2
+        paddd   xmm12,xmm8
+DB      102,15,56,0,221
+        movd    xmm8,DWORD[((-28))+r10]
+        por     xmm14,xmm7
+        movd    xmm7,DWORD[((-28))+r11]
+        punpckldq       xmm4,xmm8
+        movdqa  xmm8,xmm12
+        paddd   xmm11,xmm15
+        punpckldq       xmm9,xmm7
+        movdqa  xmm7,xmm13
+        movdqa  xmm6,xmm13
+        pslld   xmm8,5
+        pandn   xmm7,xmm10
+        pand    xmm6,xmm14
+        punpckldq       xmm4,xmm9
+        movdqa  xmm9,xmm12
+
+        movdqa  XMMWORD[(128-128)+rax],xmm3
+        paddd   xmm11,xmm3
+        movd    xmm0,DWORD[((-24))+r8]
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+        movdqa  xmm7,xmm13
+
+        por     xmm8,xmm9
+        movd    xmm9,DWORD[((-24))+r9]
+        pslld   xmm7,30
+        paddd   xmm11,xmm6
+
+        psrld   xmm13,2
+        paddd   xmm11,xmm8
+DB      102,15,56,0,229
+        movd    xmm8,DWORD[((-24))+r10]
+        por     xmm13,xmm7
+        movd    xmm7,DWORD[((-24))+r11]
+        punpckldq       xmm0,xmm8
+        movdqa  xmm8,xmm11
+        paddd   xmm10,xmm15
+        punpckldq       xmm9,xmm7
+        movdqa  xmm7,xmm12
+        movdqa  xmm6,xmm12
+        pslld   xmm8,5
+        pandn   xmm7,xmm14
+        pand    xmm6,xmm13
+        punpckldq       xmm0,xmm9
+        movdqa  xmm9,xmm11
+
+        movdqa  XMMWORD[(144-128)+rax],xmm4
+        paddd   xmm10,xmm4
+        movd    xmm1,DWORD[((-20))+r8]
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+        movdqa  xmm7,xmm12
+
+        por     xmm8,xmm9
+        movd    xmm9,DWORD[((-20))+r9]
+        pslld   xmm7,30
+        paddd   xmm10,xmm6
+
+        psrld   xmm12,2
+        paddd   xmm10,xmm8
+DB      102,15,56,0,197
+        movd    xmm8,DWORD[((-20))+r10]
+        por     xmm12,xmm7
+        movd    xmm7,DWORD[((-20))+r11]
+        punpckldq       xmm1,xmm8
+        movdqa  xmm8,xmm10
+        paddd   xmm14,xmm15
+        punpckldq       xmm9,xmm7
+        movdqa  xmm7,xmm11
+        movdqa  xmm6,xmm11
+        pslld   xmm8,5
+        pandn   xmm7,xmm13
+        pand    xmm6,xmm12
+        punpckldq       xmm1,xmm9
+        movdqa  xmm9,xmm10
+
+        movdqa  XMMWORD[(160-128)+rax],xmm0
+        paddd   xmm14,xmm0
+        movd    xmm2,DWORD[((-16))+r8]
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+        movdqa  xmm7,xmm11
+
+        por     xmm8,xmm9
+        movd    xmm9,DWORD[((-16))+r9]
+        pslld   xmm7,30
+        paddd   xmm14,xmm6
+
+        psrld   xmm11,2
+        paddd   xmm14,xmm8
+DB      102,15,56,0,205
+        movd    xmm8,DWORD[((-16))+r10]
+        por     xmm11,xmm7
+        movd    xmm7,DWORD[((-16))+r11]
+        punpckldq       xmm2,xmm8
+        movdqa  xmm8,xmm14
+        paddd   xmm13,xmm15
+        punpckldq       xmm9,xmm7
+        movdqa  xmm7,xmm10
+        movdqa  xmm6,xmm10
+        pslld   xmm8,5
+        pandn   xmm7,xmm12
+        pand    xmm6,xmm11
+        punpckldq       xmm2,xmm9
+        movdqa  xmm9,xmm14
+
+        movdqa  XMMWORD[(176-128)+rax],xmm1
+        paddd   xmm13,xmm1
+        movd    xmm3,DWORD[((-12))+r8]
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+        movdqa  xmm7,xmm10
+
+        por     xmm8,xmm9
+        movd    xmm9,DWORD[((-12))+r9]
+        pslld   xmm7,30
+        paddd   xmm13,xmm6
+
+        psrld   xmm10,2
+        paddd   xmm13,xmm8
+DB      102,15,56,0,213
+        movd    xmm8,DWORD[((-12))+r10]
+        por     xmm10,xmm7
+        movd    xmm7,DWORD[((-12))+r11]
+        punpckldq       xmm3,xmm8
+        movdqa  xmm8,xmm13
+        paddd   xmm12,xmm15
+        punpckldq       xmm9,xmm7
+        movdqa  xmm7,xmm14
+        movdqa  xmm6,xmm14
+        pslld   xmm8,5
+        pandn   xmm7,xmm11
+        pand    xmm6,xmm10
+        punpckldq       xmm3,xmm9
+        movdqa  xmm9,xmm13
+
+        movdqa  XMMWORD[(192-128)+rax],xmm2
+        paddd   xmm12,xmm2
+        movd    xmm4,DWORD[((-8))+r8]
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+        movdqa  xmm7,xmm14
+
+        por     xmm8,xmm9
+        movd    xmm9,DWORD[((-8))+r9]
+        pslld   xmm7,30
+        paddd   xmm12,xmm6
+
+        psrld   xmm14,2
+        paddd   xmm12,xmm8
+DB      102,15,56,0,221
+        movd    xmm8,DWORD[((-8))+r10]
+        por     xmm14,xmm7
+        movd    xmm7,DWORD[((-8))+r11]
+        punpckldq       xmm4,xmm8
+        movdqa  xmm8,xmm12
+        paddd   xmm11,xmm15
+        punpckldq       xmm9,xmm7
+        movdqa  xmm7,xmm13
+        movdqa  xmm6,xmm13
+        pslld   xmm8,5
+        pandn   xmm7,xmm10
+        pand    xmm6,xmm14
+        punpckldq       xmm4,xmm9
+        movdqa  xmm9,xmm12
+
+        movdqa  XMMWORD[(208-128)+rax],xmm3
+        paddd   xmm11,xmm3
+        movd    xmm0,DWORD[((-4))+r8]
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+        movdqa  xmm7,xmm13
+
+        por     xmm8,xmm9
+        movd    xmm9,DWORD[((-4))+r9]
+        pslld   xmm7,30
+        paddd   xmm11,xmm6
+
+        psrld   xmm13,2
+        paddd   xmm11,xmm8
+DB      102,15,56,0,229
+        movd    xmm8,DWORD[((-4))+r10]
+        por     xmm13,xmm7
+        movdqa  xmm1,XMMWORD[((0-128))+rax]
+        movd    xmm7,DWORD[((-4))+r11]
+        punpckldq       xmm0,xmm8
+        movdqa  xmm8,xmm11
+        paddd   xmm10,xmm15
+        punpckldq       xmm9,xmm7
+        movdqa  xmm7,xmm12
+        movdqa  xmm6,xmm12
+        pslld   xmm8,5
+        prefetcht0      [63+r8]
+        pandn   xmm7,xmm14
+        pand    xmm6,xmm13
+        punpckldq       xmm0,xmm9
+        movdqa  xmm9,xmm11
+
+        movdqa  XMMWORD[(224-128)+rax],xmm4
+        paddd   xmm10,xmm4
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+        movdqa  xmm7,xmm12
+        prefetcht0      [63+r9]
+
+        por     xmm8,xmm9
+        pslld   xmm7,30
+        paddd   xmm10,xmm6
+        prefetcht0      [63+r10]
+
+        psrld   xmm12,2
+        paddd   xmm10,xmm8
+DB      102,15,56,0,197
+        prefetcht0      [63+r11]
+        por     xmm12,xmm7
+        movdqa  xmm2,XMMWORD[((16-128))+rax]
+        pxor    xmm1,xmm3
+        movdqa  xmm3,XMMWORD[((32-128))+rax]
+
+        movdqa  xmm8,xmm10
+        pxor    xmm1,XMMWORD[((128-128))+rax]
+        paddd   xmm14,xmm15
+        movdqa  xmm7,xmm11
+        pslld   xmm8,5
+        pxor    xmm1,xmm3
+        movdqa  xmm6,xmm11
+        pandn   xmm7,xmm13
+        movdqa  xmm5,xmm1
+        pand    xmm6,xmm12
+        movdqa  xmm9,xmm10
+        psrld   xmm5,31
+        paddd   xmm1,xmm1
+
+        movdqa  XMMWORD[(240-128)+rax],xmm0
+        paddd   xmm14,xmm0
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+
+        movdqa  xmm7,xmm11
+        por     xmm8,xmm9
+        pslld   xmm7,30
+        paddd   xmm14,xmm6
+
+        psrld   xmm11,2
+        paddd   xmm14,xmm8
+        por     xmm1,xmm5
+        por     xmm11,xmm7
+        pxor    xmm2,xmm4
+        movdqa  xmm4,XMMWORD[((48-128))+rax]
+
+        movdqa  xmm8,xmm14
+        pxor    xmm2,XMMWORD[((144-128))+rax]
+        paddd   xmm13,xmm15
+        movdqa  xmm7,xmm10
+        pslld   xmm8,5
+        pxor    xmm2,xmm4
+        movdqa  xmm6,xmm10
+        pandn   xmm7,xmm12
+        movdqa  xmm5,xmm2
+        pand    xmm6,xmm11
+        movdqa  xmm9,xmm14
+        psrld   xmm5,31
+        paddd   xmm2,xmm2
+
+        movdqa  XMMWORD[(0-128)+rax],xmm1
+        paddd   xmm13,xmm1
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+
+        movdqa  xmm7,xmm10
+        por     xmm8,xmm9
+        pslld   xmm7,30
+        paddd   xmm13,xmm6
+
+        psrld   xmm10,2
+        paddd   xmm13,xmm8
+        por     xmm2,xmm5
+        por     xmm10,xmm7
+        pxor    xmm3,xmm0
+        movdqa  xmm0,XMMWORD[((64-128))+rax]
+
+        movdqa  xmm8,xmm13
+        pxor    xmm3,XMMWORD[((160-128))+rax]
+        paddd   xmm12,xmm15
+        movdqa  xmm7,xmm14
+        pslld   xmm8,5
+        pxor    xmm3,xmm0
+        movdqa  xmm6,xmm14
+        pandn   xmm7,xmm11
+        movdqa  xmm5,xmm3
+        pand    xmm6,xmm10
+        movdqa  xmm9,xmm13
+        psrld   xmm5,31
+        paddd   xmm3,xmm3
+
+        movdqa  XMMWORD[(16-128)+rax],xmm2
+        paddd   xmm12,xmm2
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+
+        movdqa  xmm7,xmm14
+        por     xmm8,xmm9
+        pslld   xmm7,30
+        paddd   xmm12,xmm6
+
+        psrld   xmm14,2
+        paddd   xmm12,xmm8
+        por     xmm3,xmm5
+        por     xmm14,xmm7
+        pxor    xmm4,xmm1
+        movdqa  xmm1,XMMWORD[((80-128))+rax]
+
+        movdqa  xmm8,xmm12
+        pxor    xmm4,XMMWORD[((176-128))+rax]
+        paddd   xmm11,xmm15
+        movdqa  xmm7,xmm13
+        pslld   xmm8,5
+        pxor    xmm4,xmm1
+        movdqa  xmm6,xmm13
+        pandn   xmm7,xmm10
+        movdqa  xmm5,xmm4
+        pand    xmm6,xmm14
+        movdqa  xmm9,xmm12
+        psrld   xmm5,31
+        paddd   xmm4,xmm4
+
+        movdqa  XMMWORD[(32-128)+rax],xmm3
+        paddd   xmm11,xmm3
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+
+        movdqa  xmm7,xmm13
+        por     xmm8,xmm9
+        pslld   xmm7,30
+        paddd   xmm11,xmm6
+
+        psrld   xmm13,2
+        paddd   xmm11,xmm8
+        por     xmm4,xmm5
+        por     xmm13,xmm7
+        pxor    xmm0,xmm2
+        movdqa  xmm2,XMMWORD[((96-128))+rax]
+
+        movdqa  xmm8,xmm11
+        pxor    xmm0,XMMWORD[((192-128))+rax]
+        paddd   xmm10,xmm15
+        movdqa  xmm7,xmm12
+        pslld   xmm8,5
+        pxor    xmm0,xmm2
+        movdqa  xmm6,xmm12
+        pandn   xmm7,xmm14
+        movdqa  xmm5,xmm0
+        pand    xmm6,xmm13
+        movdqa  xmm9,xmm11
+        psrld   xmm5,31
+        paddd   xmm0,xmm0
+
+        movdqa  XMMWORD[(48-128)+rax],xmm4
+        paddd   xmm10,xmm4
+        psrld   xmm9,27
+        pxor    xmm6,xmm7
+
+        movdqa  xmm7,xmm12
+        por     xmm8,xmm9
+        pslld   xmm7,30
+        paddd   xmm10,xmm6
+
+        psrld   xmm12,2
+        paddd   xmm10,xmm8
+        por     xmm0,xmm5
+        por     xmm12,xmm7
+        movdqa  xmm15,XMMWORD[rbp]
+        pxor    xmm1,xmm3
+        movdqa  xmm3,XMMWORD[((112-128))+rax]
+
+        movdqa  xmm8,xmm10
+        movdqa  xmm6,xmm13
+        pxor    xmm1,XMMWORD[((208-128))+rax]
+        paddd   xmm14,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm11
+
+        movdqa  xmm9,xmm10
+        movdqa  XMMWORD[(64-128)+rax],xmm0
+        paddd   xmm14,xmm0
+        pxor    xmm1,xmm3
+        psrld   xmm9,27
+        pxor    xmm6,xmm12
+        movdqa  xmm7,xmm11
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm1
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm14,xmm6
+        paddd   xmm1,xmm1
+
+        psrld   xmm11,2
+        paddd   xmm14,xmm8
+        por     xmm1,xmm5
+        por     xmm11,xmm7
+        pxor    xmm2,xmm4
+        movdqa  xmm4,XMMWORD[((128-128))+rax]
+
+        movdqa  xmm8,xmm14
+        movdqa  xmm6,xmm12
+        pxor    xmm2,XMMWORD[((224-128))+rax]
+        paddd   xmm13,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm10
+
+        movdqa  xmm9,xmm14
+        movdqa  XMMWORD[(80-128)+rax],xmm1
+        paddd   xmm13,xmm1
+        pxor    xmm2,xmm4
+        psrld   xmm9,27
+        pxor    xmm6,xmm11
+        movdqa  xmm7,xmm10
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm2
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm13,xmm6
+        paddd   xmm2,xmm2
+
+        psrld   xmm10,2
+        paddd   xmm13,xmm8
+        por     xmm2,xmm5
+        por     xmm10,xmm7
+        pxor    xmm3,xmm0
+        movdqa  xmm0,XMMWORD[((144-128))+rax]
+
+        movdqa  xmm8,xmm13
+        movdqa  xmm6,xmm11
+        pxor    xmm3,XMMWORD[((240-128))+rax]
+        paddd   xmm12,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm14
+
+        movdqa  xmm9,xmm13
+        movdqa  XMMWORD[(96-128)+rax],xmm2
+        paddd   xmm12,xmm2
+        pxor    xmm3,xmm0
+        psrld   xmm9,27
+        pxor    xmm6,xmm10
+        movdqa  xmm7,xmm14
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm3
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm12,xmm6
+        paddd   xmm3,xmm3
+
+        psrld   xmm14,2
+        paddd   xmm12,xmm8
+        por     xmm3,xmm5
+        por     xmm14,xmm7
+        pxor    xmm4,xmm1
+        movdqa  xmm1,XMMWORD[((160-128))+rax]
+
+        movdqa  xmm8,xmm12
+        movdqa  xmm6,xmm10
+        pxor    xmm4,XMMWORD[((0-128))+rax]
+        paddd   xmm11,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm13
+
+        movdqa  xmm9,xmm12
+        movdqa  XMMWORD[(112-128)+rax],xmm3
+        paddd   xmm11,xmm3
+        pxor    xmm4,xmm1
+        psrld   xmm9,27
+        pxor    xmm6,xmm14
+        movdqa  xmm7,xmm13
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm4
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm11,xmm6
+        paddd   xmm4,xmm4
+
+        psrld   xmm13,2
+        paddd   xmm11,xmm8
+        por     xmm4,xmm5
+        por     xmm13,xmm7
+        pxor    xmm0,xmm2
+        movdqa  xmm2,XMMWORD[((176-128))+rax]
+
+        movdqa  xmm8,xmm11
+        movdqa  xmm6,xmm14
+        pxor    xmm0,XMMWORD[((16-128))+rax]
+        paddd   xmm10,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm12
+
+        movdqa  xmm9,xmm11
+        movdqa  XMMWORD[(128-128)+rax],xmm4
+        paddd   xmm10,xmm4
+        pxor    xmm0,xmm2
+        psrld   xmm9,27
+        pxor    xmm6,xmm13
+        movdqa  xmm7,xmm12
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm0
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm10,xmm6
+        paddd   xmm0,xmm0
+
+        psrld   xmm12,2
+        paddd   xmm10,xmm8
+        por     xmm0,xmm5
+        por     xmm12,xmm7
+        pxor    xmm1,xmm3
+        movdqa  xmm3,XMMWORD[((192-128))+rax]
+
+        movdqa  xmm8,xmm10
+        movdqa  xmm6,xmm13
+        pxor    xmm1,XMMWORD[((32-128))+rax]
+        paddd   xmm14,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm11
+
+        movdqa  xmm9,xmm10
+        movdqa  XMMWORD[(144-128)+rax],xmm0
+        paddd   xmm14,xmm0
+        pxor    xmm1,xmm3
+        psrld   xmm9,27
+        pxor    xmm6,xmm12
+        movdqa  xmm7,xmm11
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm1
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm14,xmm6
+        paddd   xmm1,xmm1
+
+        psrld   xmm11,2
+        paddd   xmm14,xmm8
+        por     xmm1,xmm5
+        por     xmm11,xmm7
+        pxor    xmm2,xmm4
+        movdqa  xmm4,XMMWORD[((208-128))+rax]
+
+        movdqa  xmm8,xmm14
+        movdqa  xmm6,xmm12
+        pxor    xmm2,XMMWORD[((48-128))+rax]
+        paddd   xmm13,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm10
+
+        movdqa  xmm9,xmm14
+        movdqa  XMMWORD[(160-128)+rax],xmm1
+        paddd   xmm13,xmm1
+        pxor    xmm2,xmm4
+        psrld   xmm9,27
+        pxor    xmm6,xmm11
+        movdqa  xmm7,xmm10
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm2
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm13,xmm6
+        paddd   xmm2,xmm2
+
+        psrld   xmm10,2
+        paddd   xmm13,xmm8
+        por     xmm2,xmm5
+        por     xmm10,xmm7
+        pxor    xmm3,xmm0
+        movdqa  xmm0,XMMWORD[((224-128))+rax]
+
+        movdqa  xmm8,xmm13
+        movdqa  xmm6,xmm11
+        pxor    xmm3,XMMWORD[((64-128))+rax]
+        paddd   xmm12,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm14
+
+        movdqa  xmm9,xmm13
+        movdqa  XMMWORD[(176-128)+rax],xmm2
+        paddd   xmm12,xmm2
+        pxor    xmm3,xmm0
+        psrld   xmm9,27
+        pxor    xmm6,xmm10
+        movdqa  xmm7,xmm14
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm3
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm12,xmm6
+        paddd   xmm3,xmm3
+
+        psrld   xmm14,2
+        paddd   xmm12,xmm8
+        por     xmm3,xmm5
+        por     xmm14,xmm7
+        pxor    xmm4,xmm1
+        movdqa  xmm1,XMMWORD[((240-128))+rax]
+
+        movdqa  xmm8,xmm12
+        movdqa  xmm6,xmm10
+        pxor    xmm4,XMMWORD[((80-128))+rax]
+        paddd   xmm11,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm13
+
+        movdqa  xmm9,xmm12
+        movdqa  XMMWORD[(192-128)+rax],xmm3
+        paddd   xmm11,xmm3
+        pxor    xmm4,xmm1
+        psrld   xmm9,27
+        pxor    xmm6,xmm14
+        movdqa  xmm7,xmm13
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm4
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm11,xmm6
+        paddd   xmm4,xmm4
+
+        psrld   xmm13,2
+        paddd   xmm11,xmm8
+        por     xmm4,xmm5
+        por     xmm13,xmm7
+        pxor    xmm0,xmm2
+        movdqa  xmm2,XMMWORD[((0-128))+rax]
+
+        movdqa  xmm8,xmm11
+        movdqa  xmm6,xmm14
+        pxor    xmm0,XMMWORD[((96-128))+rax]
+        paddd   xmm10,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm12
+
+        movdqa  xmm9,xmm11
+        movdqa  XMMWORD[(208-128)+rax],xmm4
+        paddd   xmm10,xmm4
+        pxor    xmm0,xmm2
+        psrld   xmm9,27
+        pxor    xmm6,xmm13
+        movdqa  xmm7,xmm12
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm0
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm10,xmm6
+        paddd   xmm0,xmm0
+
+        psrld   xmm12,2
+        paddd   xmm10,xmm8
+        por     xmm0,xmm5
+        por     xmm12,xmm7
+        pxor    xmm1,xmm3
+        movdqa  xmm3,XMMWORD[((16-128))+rax]
+
+        movdqa  xmm8,xmm10
+        movdqa  xmm6,xmm13
+        pxor    xmm1,XMMWORD[((112-128))+rax]
+        paddd   xmm14,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm11
+
+        movdqa  xmm9,xmm10
+        movdqa  XMMWORD[(224-128)+rax],xmm0
+        paddd   xmm14,xmm0
+        pxor    xmm1,xmm3
+        psrld   xmm9,27
+        pxor    xmm6,xmm12
+        movdqa  xmm7,xmm11
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm1
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm14,xmm6
+        paddd   xmm1,xmm1
+
+        psrld   xmm11,2
+        paddd   xmm14,xmm8
+        por     xmm1,xmm5
+        por     xmm11,xmm7
+        pxor    xmm2,xmm4
+        movdqa  xmm4,XMMWORD[((32-128))+rax]
+
+        movdqa  xmm8,xmm14
+        movdqa  xmm6,xmm12
+        pxor    xmm2,XMMWORD[((128-128))+rax]
+        paddd   xmm13,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm10
+
+        movdqa  xmm9,xmm14
+        movdqa  XMMWORD[(240-128)+rax],xmm1
+        paddd   xmm13,xmm1
+        pxor    xmm2,xmm4
+        psrld   xmm9,27
+        pxor    xmm6,xmm11
+        movdqa  xmm7,xmm10
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm2
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm13,xmm6
+        paddd   xmm2,xmm2
+
+        psrld   xmm10,2
+        paddd   xmm13,xmm8
+        por     xmm2,xmm5
+        por     xmm10,xmm7
+        pxor    xmm3,xmm0
+        movdqa  xmm0,XMMWORD[((48-128))+rax]
+
+        movdqa  xmm8,xmm13
+        movdqa  xmm6,xmm11
+        pxor    xmm3,XMMWORD[((144-128))+rax]
+        paddd   xmm12,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm14
+
+        movdqa  xmm9,xmm13
+        movdqa  XMMWORD[(0-128)+rax],xmm2
+        paddd   xmm12,xmm2
+        pxor    xmm3,xmm0
+        psrld   xmm9,27
+        pxor    xmm6,xmm10
+        movdqa  xmm7,xmm14
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm3
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm12,xmm6
+        paddd   xmm3,xmm3
+
+        psrld   xmm14,2
+        paddd   xmm12,xmm8
+        por     xmm3,xmm5
+        por     xmm14,xmm7
+        pxor    xmm4,xmm1
+        movdqa  xmm1,XMMWORD[((64-128))+rax]
+
+        movdqa  xmm8,xmm12
+        movdqa  xmm6,xmm10
+        pxor    xmm4,XMMWORD[((160-128))+rax]
+        paddd   xmm11,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm13
+
+        movdqa  xmm9,xmm12
+        movdqa  XMMWORD[(16-128)+rax],xmm3
+        paddd   xmm11,xmm3
+        pxor    xmm4,xmm1
+        psrld   xmm9,27
+        pxor    xmm6,xmm14
+        movdqa  xmm7,xmm13
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm4
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm11,xmm6
+        paddd   xmm4,xmm4
+
+        psrld   xmm13,2
+        paddd   xmm11,xmm8
+        por     xmm4,xmm5
+        por     xmm13,xmm7
+        pxor    xmm0,xmm2
+        movdqa  xmm2,XMMWORD[((80-128))+rax]
+
+        movdqa  xmm8,xmm11
+        movdqa  xmm6,xmm14
+        pxor    xmm0,XMMWORD[((176-128))+rax]
+        paddd   xmm10,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm12
+
+        movdqa  xmm9,xmm11
+        movdqa  XMMWORD[(32-128)+rax],xmm4
+        paddd   xmm10,xmm4
+        pxor    xmm0,xmm2
+        psrld   xmm9,27
+        pxor    xmm6,xmm13
+        movdqa  xmm7,xmm12
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm0
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm10,xmm6
+        paddd   xmm0,xmm0
+
+        psrld   xmm12,2
+        paddd   xmm10,xmm8
+        por     xmm0,xmm5
+        por     xmm12,xmm7
+        pxor    xmm1,xmm3
+        movdqa  xmm3,XMMWORD[((96-128))+rax]
+
+        movdqa  xmm8,xmm10
+        movdqa  xmm6,xmm13
+        pxor    xmm1,XMMWORD[((192-128))+rax]
+        paddd   xmm14,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm11
+
+        movdqa  xmm9,xmm10
+        movdqa  XMMWORD[(48-128)+rax],xmm0
+        paddd   xmm14,xmm0
+        pxor    xmm1,xmm3
+        psrld   xmm9,27
+        pxor    xmm6,xmm12
+        movdqa  xmm7,xmm11
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm1
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm14,xmm6
+        paddd   xmm1,xmm1
+
+        psrld   xmm11,2
+        paddd   xmm14,xmm8
+        por     xmm1,xmm5
+        por     xmm11,xmm7
+        pxor    xmm2,xmm4
+        movdqa  xmm4,XMMWORD[((112-128))+rax]
+
+        movdqa  xmm8,xmm14
+        movdqa  xmm6,xmm12
+        pxor    xmm2,XMMWORD[((208-128))+rax]
+        paddd   xmm13,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm10
+
+        movdqa  xmm9,xmm14
+        movdqa  XMMWORD[(64-128)+rax],xmm1
+        paddd   xmm13,xmm1
+        pxor    xmm2,xmm4
+        psrld   xmm9,27
+        pxor    xmm6,xmm11
+        movdqa  xmm7,xmm10
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm2
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm13,xmm6
+        paddd   xmm2,xmm2
+
+        psrld   xmm10,2
+        paddd   xmm13,xmm8
+        por     xmm2,xmm5
+        por     xmm10,xmm7
+        pxor    xmm3,xmm0
+        movdqa  xmm0,XMMWORD[((128-128))+rax]
+
+        movdqa  xmm8,xmm13
+        movdqa  xmm6,xmm11
+        pxor    xmm3,XMMWORD[((224-128))+rax]
+        paddd   xmm12,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm14
+
+        movdqa  xmm9,xmm13
+        movdqa  XMMWORD[(80-128)+rax],xmm2
+        paddd   xmm12,xmm2
+        pxor    xmm3,xmm0
+        psrld   xmm9,27
+        pxor    xmm6,xmm10
+        movdqa  xmm7,xmm14
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm3
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm12,xmm6
+        paddd   xmm3,xmm3
+
+        psrld   xmm14,2
+        paddd   xmm12,xmm8
+        por     xmm3,xmm5
+        por     xmm14,xmm7
+        pxor    xmm4,xmm1
+        movdqa  xmm1,XMMWORD[((144-128))+rax]
+
+        movdqa  xmm8,xmm12
+        movdqa  xmm6,xmm10
+        pxor    xmm4,XMMWORD[((240-128))+rax]
+        paddd   xmm11,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm13
+
+        movdqa  xmm9,xmm12
+        movdqa  XMMWORD[(96-128)+rax],xmm3
+        paddd   xmm11,xmm3
+        pxor    xmm4,xmm1
+        psrld   xmm9,27
+        pxor    xmm6,xmm14
+        movdqa  xmm7,xmm13
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm4
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm11,xmm6
+        paddd   xmm4,xmm4
+
+        psrld   xmm13,2
+        paddd   xmm11,xmm8
+        por     xmm4,xmm5
+        por     xmm13,xmm7
+        pxor    xmm0,xmm2
+        movdqa  xmm2,XMMWORD[((160-128))+rax]
+
+        movdqa  xmm8,xmm11
+        movdqa  xmm6,xmm14
+        pxor    xmm0,XMMWORD[((0-128))+rax]
+        paddd   xmm10,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm12
+
+        movdqa  xmm9,xmm11
+        movdqa  XMMWORD[(112-128)+rax],xmm4
+        paddd   xmm10,xmm4
+        pxor    xmm0,xmm2
+        psrld   xmm9,27
+        pxor    xmm6,xmm13
+        movdqa  xmm7,xmm12
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm0
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm10,xmm6
+        paddd   xmm0,xmm0
+
+        psrld   xmm12,2
+        paddd   xmm10,xmm8
+        por     xmm0,xmm5
+        por     xmm12,xmm7
+        movdqa  xmm15,XMMWORD[32+rbp]
+        pxor    xmm1,xmm3
+        movdqa  xmm3,XMMWORD[((176-128))+rax]
+
+        movdqa  xmm8,xmm10
+        movdqa  xmm7,xmm13
+        pxor    xmm1,XMMWORD[((16-128))+rax]
+        pxor    xmm1,xmm3
+        paddd   xmm14,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm10
+        pand    xmm7,xmm12
+
+        movdqa  xmm6,xmm13
+        movdqa  xmm5,xmm1
+        psrld   xmm9,27
+        paddd   xmm14,xmm7
+        pxor    xmm6,xmm12
+
+        movdqa  XMMWORD[(128-128)+rax],xmm0
+        paddd   xmm14,xmm0
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm11
+        movdqa  xmm7,xmm11
+
+        pslld   xmm7,30
+        paddd   xmm1,xmm1
+        paddd   xmm14,xmm6
+
+        psrld   xmm11,2
+        paddd   xmm14,xmm8
+        por     xmm1,xmm5
+        por     xmm11,xmm7
+        pxor    xmm2,xmm4
+        movdqa  xmm4,XMMWORD[((192-128))+rax]
+
+        movdqa  xmm8,xmm14
+        movdqa  xmm7,xmm12
+        pxor    xmm2,XMMWORD[((32-128))+rax]
+        pxor    xmm2,xmm4
+        paddd   xmm13,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm14
+        pand    xmm7,xmm11
+
+        movdqa  xmm6,xmm12
+        movdqa  xmm5,xmm2
+        psrld   xmm9,27
+        paddd   xmm13,xmm7
+        pxor    xmm6,xmm11
+
+        movdqa  XMMWORD[(144-128)+rax],xmm1
+        paddd   xmm13,xmm1
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm10
+        movdqa  xmm7,xmm10
+
+        pslld   xmm7,30
+        paddd   xmm2,xmm2
+        paddd   xmm13,xmm6
+
+        psrld   xmm10,2
+        paddd   xmm13,xmm8
+        por     xmm2,xmm5
+        por     xmm10,xmm7
+        pxor    xmm3,xmm0
+        movdqa  xmm0,XMMWORD[((208-128))+rax]
+
+        movdqa  xmm8,xmm13
+        movdqa  xmm7,xmm11
+        pxor    xmm3,XMMWORD[((48-128))+rax]
+        pxor    xmm3,xmm0
+        paddd   xmm12,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm13
+        pand    xmm7,xmm10
+
+        movdqa  xmm6,xmm11
+        movdqa  xmm5,xmm3
+        psrld   xmm9,27
+        paddd   xmm12,xmm7
+        pxor    xmm6,xmm10
+
+        movdqa  XMMWORD[(160-128)+rax],xmm2
+        paddd   xmm12,xmm2
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm14
+        movdqa  xmm7,xmm14
+
+        pslld   xmm7,30
+        paddd   xmm3,xmm3
+        paddd   xmm12,xmm6
+
+        psrld   xmm14,2
+        paddd   xmm12,xmm8
+        por     xmm3,xmm5
+        por     xmm14,xmm7
+        pxor    xmm4,xmm1
+        movdqa  xmm1,XMMWORD[((224-128))+rax]
+
+        movdqa  xmm8,xmm12
+        movdqa  xmm7,xmm10
+        pxor    xmm4,XMMWORD[((64-128))+rax]
+        pxor    xmm4,xmm1
+        paddd   xmm11,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm12
+        pand    xmm7,xmm14
+
+        movdqa  xmm6,xmm10
+        movdqa  xmm5,xmm4
+        psrld   xmm9,27
+        paddd   xmm11,xmm7
+        pxor    xmm6,xmm14
+
+        movdqa  XMMWORD[(176-128)+rax],xmm3
+        paddd   xmm11,xmm3
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm13
+        movdqa  xmm7,xmm13
+
+        pslld   xmm7,30
+        paddd   xmm4,xmm4
+        paddd   xmm11,xmm6
+
+        psrld   xmm13,2
+        paddd   xmm11,xmm8
+        por     xmm4,xmm5
+        por     xmm13,xmm7
+        pxor    xmm0,xmm2
+        movdqa  xmm2,XMMWORD[((240-128))+rax]
+
+        movdqa  xmm8,xmm11
+        movdqa  xmm7,xmm14
+        pxor    xmm0,XMMWORD[((80-128))+rax]
+        pxor    xmm0,xmm2
+        paddd   xmm10,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm11
+        pand    xmm7,xmm13
+
+        movdqa  xmm6,xmm14
+        movdqa  xmm5,xmm0
+        psrld   xmm9,27
+        paddd   xmm10,xmm7
+        pxor    xmm6,xmm13
+
+        movdqa  XMMWORD[(192-128)+rax],xmm4
+        paddd   xmm10,xmm4
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm12
+        movdqa  xmm7,xmm12
+
+        pslld   xmm7,30
+        paddd   xmm0,xmm0
+        paddd   xmm10,xmm6
+
+        psrld   xmm12,2
+        paddd   xmm10,xmm8
+        por     xmm0,xmm5
+        por     xmm12,xmm7
+        pxor    xmm1,xmm3
+        movdqa  xmm3,XMMWORD[((0-128))+rax]
+
+        movdqa  xmm8,xmm10
+        movdqa  xmm7,xmm13
+        pxor    xmm1,XMMWORD[((96-128))+rax]
+        pxor    xmm1,xmm3
+        paddd   xmm14,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm10
+        pand    xmm7,xmm12
+
+        movdqa  xmm6,xmm13
+        movdqa  xmm5,xmm1
+        psrld   xmm9,27
+        paddd   xmm14,xmm7
+        pxor    xmm6,xmm12
+
+        movdqa  XMMWORD[(208-128)+rax],xmm0
+        paddd   xmm14,xmm0
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm11
+        movdqa  xmm7,xmm11
+
+        pslld   xmm7,30
+        paddd   xmm1,xmm1
+        paddd   xmm14,xmm6
+
+        psrld   xmm11,2
+        paddd   xmm14,xmm8
+        por     xmm1,xmm5
+        por     xmm11,xmm7
+        pxor    xmm2,xmm4
+        movdqa  xmm4,XMMWORD[((16-128))+rax]
+
+        movdqa  xmm8,xmm14
+        movdqa  xmm7,xmm12
+        pxor    xmm2,XMMWORD[((112-128))+rax]
+        pxor    xmm2,xmm4
+        paddd   xmm13,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm14
+        pand    xmm7,xmm11
+
+        movdqa  xmm6,xmm12
+        movdqa  xmm5,xmm2
+        psrld   xmm9,27
+        paddd   xmm13,xmm7
+        pxor    xmm6,xmm11
+
+        movdqa  XMMWORD[(224-128)+rax],xmm1
+        paddd   xmm13,xmm1
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm10
+        movdqa  xmm7,xmm10
+
+        pslld   xmm7,30
+        paddd   xmm2,xmm2
+        paddd   xmm13,xmm6
+
+        psrld   xmm10,2
+        paddd   xmm13,xmm8
+        por     xmm2,xmm5
+        por     xmm10,xmm7
+        pxor    xmm3,xmm0
+        movdqa  xmm0,XMMWORD[((32-128))+rax]
+
+        movdqa  xmm8,xmm13
+        movdqa  xmm7,xmm11
+        pxor    xmm3,XMMWORD[((128-128))+rax]
+        pxor    xmm3,xmm0
+        paddd   xmm12,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm13
+        pand    xmm7,xmm10
+
+        movdqa  xmm6,xmm11
+        movdqa  xmm5,xmm3
+        psrld   xmm9,27
+        paddd   xmm12,xmm7
+        pxor    xmm6,xmm10
+
+        movdqa  XMMWORD[(240-128)+rax],xmm2
+        paddd   xmm12,xmm2
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm14
+        movdqa  xmm7,xmm14
+
+        pslld   xmm7,30
+        paddd   xmm3,xmm3
+        paddd   xmm12,xmm6
+
+        psrld   xmm14,2
+        paddd   xmm12,xmm8
+        por     xmm3,xmm5
+        por     xmm14,xmm7
+        pxor    xmm4,xmm1
+        movdqa  xmm1,XMMWORD[((48-128))+rax]
+
+        movdqa  xmm8,xmm12
+        movdqa  xmm7,xmm10
+        pxor    xmm4,XMMWORD[((144-128))+rax]
+        pxor    xmm4,xmm1
+        paddd   xmm11,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm12
+        pand    xmm7,xmm14
+
+        movdqa  xmm6,xmm10
+        movdqa  xmm5,xmm4
+        psrld   xmm9,27
+        paddd   xmm11,xmm7
+        pxor    xmm6,xmm14
+
+        movdqa  XMMWORD[(0-128)+rax],xmm3
+        paddd   xmm11,xmm3
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm13
+        movdqa  xmm7,xmm13
+
+        pslld   xmm7,30
+        paddd   xmm4,xmm4
+        paddd   xmm11,xmm6
+
+        psrld   xmm13,2
+        paddd   xmm11,xmm8
+        por     xmm4,xmm5
+        por     xmm13,xmm7
+        pxor    xmm0,xmm2
+        movdqa  xmm2,XMMWORD[((64-128))+rax]
+
+        movdqa  xmm8,xmm11
+        movdqa  xmm7,xmm14
+        pxor    xmm0,XMMWORD[((160-128))+rax]
+        pxor    xmm0,xmm2
+        paddd   xmm10,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm11
+        pand    xmm7,xmm13
+
+        movdqa  xmm6,xmm14
+        movdqa  xmm5,xmm0
+        psrld   xmm9,27
+        paddd   xmm10,xmm7
+        pxor    xmm6,xmm13
+
+        movdqa  XMMWORD[(16-128)+rax],xmm4
+        paddd   xmm10,xmm4
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm12
+        movdqa  xmm7,xmm12
+
+        pslld   xmm7,30
+        paddd   xmm0,xmm0
+        paddd   xmm10,xmm6
+
+        psrld   xmm12,2
+        paddd   xmm10,xmm8
+        por     xmm0,xmm5
+        por     xmm12,xmm7
+        pxor    xmm1,xmm3
+        movdqa  xmm3,XMMWORD[((80-128))+rax]
+
+        movdqa  xmm8,xmm10
+        movdqa  xmm7,xmm13
+        pxor    xmm1,XMMWORD[((176-128))+rax]
+        pxor    xmm1,xmm3
+        paddd   xmm14,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm10
+        pand    xmm7,xmm12
+
+        movdqa  xmm6,xmm13
+        movdqa  xmm5,xmm1
+        psrld   xmm9,27
+        paddd   xmm14,xmm7
+        pxor    xmm6,xmm12
+
+        movdqa  XMMWORD[(32-128)+rax],xmm0
+        paddd   xmm14,xmm0
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm11
+        movdqa  xmm7,xmm11
+
+        pslld   xmm7,30
+        paddd   xmm1,xmm1
+        paddd   xmm14,xmm6
+
+        psrld   xmm11,2
+        paddd   xmm14,xmm8
+        por     xmm1,xmm5
+        por     xmm11,xmm7
+        pxor    xmm2,xmm4
+        movdqa  xmm4,XMMWORD[((96-128))+rax]
+
+        movdqa  xmm8,xmm14
+        movdqa  xmm7,xmm12
+        pxor    xmm2,XMMWORD[((192-128))+rax]
+        pxor    xmm2,xmm4
+        paddd   xmm13,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm14
+        pand    xmm7,xmm11
+
+        movdqa  xmm6,xmm12
+        movdqa  xmm5,xmm2
+        psrld   xmm9,27
+        paddd   xmm13,xmm7
+        pxor    xmm6,xmm11
+
+        movdqa  XMMWORD[(48-128)+rax],xmm1
+        paddd   xmm13,xmm1
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm10
+        movdqa  xmm7,xmm10
+
+        pslld   xmm7,30
+        paddd   xmm2,xmm2
+        paddd   xmm13,xmm6
+
+        psrld   xmm10,2
+        paddd   xmm13,xmm8
+        por     xmm2,xmm5
+        por     xmm10,xmm7
+        pxor    xmm3,xmm0
+        movdqa  xmm0,XMMWORD[((112-128))+rax]
+
+        movdqa  xmm8,xmm13
+        movdqa  xmm7,xmm11
+        pxor    xmm3,XMMWORD[((208-128))+rax]
+        pxor    xmm3,xmm0
+        paddd   xmm12,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm13
+        pand    xmm7,xmm10
+
+        movdqa  xmm6,xmm11
+        movdqa  xmm5,xmm3
+        psrld   xmm9,27
+        paddd   xmm12,xmm7
+        pxor    xmm6,xmm10
+
+        movdqa  XMMWORD[(64-128)+rax],xmm2
+        paddd   xmm12,xmm2
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm14
+        movdqa  xmm7,xmm14
+
+        pslld   xmm7,30
+        paddd   xmm3,xmm3
+        paddd   xmm12,xmm6
+
+        psrld   xmm14,2
+        paddd   xmm12,xmm8
+        por     xmm3,xmm5
+        por     xmm14,xmm7
+        pxor    xmm4,xmm1
+        movdqa  xmm1,XMMWORD[((128-128))+rax]
+
+        movdqa  xmm8,xmm12
+        movdqa  xmm7,xmm10
+        pxor    xmm4,XMMWORD[((224-128))+rax]
+        pxor    xmm4,xmm1
+        paddd   xmm11,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm12
+        pand    xmm7,xmm14
+
+        movdqa  xmm6,xmm10
+        movdqa  xmm5,xmm4
+        psrld   xmm9,27
+        paddd   xmm11,xmm7
+        pxor    xmm6,xmm14
+
+        movdqa  XMMWORD[(80-128)+rax],xmm3
+        paddd   xmm11,xmm3
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm13
+        movdqa  xmm7,xmm13
+
+        pslld   xmm7,30
+        paddd   xmm4,xmm4
+        paddd   xmm11,xmm6
+
+        psrld   xmm13,2
+        paddd   xmm11,xmm8
+        por     xmm4,xmm5
+        por     xmm13,xmm7
+        pxor    xmm0,xmm2
+        movdqa  xmm2,XMMWORD[((144-128))+rax]
+
+        movdqa  xmm8,xmm11
+        movdqa  xmm7,xmm14
+        pxor    xmm0,XMMWORD[((240-128))+rax]
+        pxor    xmm0,xmm2
+        paddd   xmm10,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm11
+        pand    xmm7,xmm13
+
+        movdqa  xmm6,xmm14
+        movdqa  xmm5,xmm0
+        psrld   xmm9,27
+        paddd   xmm10,xmm7
+        pxor    xmm6,xmm13
+
+        movdqa  XMMWORD[(96-128)+rax],xmm4
+        paddd   xmm10,xmm4
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm12
+        movdqa  xmm7,xmm12
+
+        pslld   xmm7,30
+        paddd   xmm0,xmm0
+        paddd   xmm10,xmm6
+
+        psrld   xmm12,2
+        paddd   xmm10,xmm8
+        por     xmm0,xmm5
+        por     xmm12,xmm7
+        pxor    xmm1,xmm3
+        movdqa  xmm3,XMMWORD[((160-128))+rax]
+
+        movdqa  xmm8,xmm10
+        movdqa  xmm7,xmm13
+        pxor    xmm1,XMMWORD[((0-128))+rax]
+        pxor    xmm1,xmm3
+        paddd   xmm14,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm10
+        pand    xmm7,xmm12
+
+        movdqa  xmm6,xmm13
+        movdqa  xmm5,xmm1
+        psrld   xmm9,27
+        paddd   xmm14,xmm7
+        pxor    xmm6,xmm12
+
+        movdqa  XMMWORD[(112-128)+rax],xmm0
+        paddd   xmm14,xmm0
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm11
+        movdqa  xmm7,xmm11
+
+        pslld   xmm7,30
+        paddd   xmm1,xmm1
+        paddd   xmm14,xmm6
+
+        psrld   xmm11,2
+        paddd   xmm14,xmm8
+        por     xmm1,xmm5
+        por     xmm11,xmm7
+        pxor    xmm2,xmm4
+        movdqa  xmm4,XMMWORD[((176-128))+rax]
+
+        movdqa  xmm8,xmm14
+        movdqa  xmm7,xmm12
+        pxor    xmm2,XMMWORD[((16-128))+rax]
+        pxor    xmm2,xmm4
+        paddd   xmm13,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm14
+        pand    xmm7,xmm11
+
+        movdqa  xmm6,xmm12
+        movdqa  xmm5,xmm2
+        psrld   xmm9,27
+        paddd   xmm13,xmm7
+        pxor    xmm6,xmm11
+
+        movdqa  XMMWORD[(128-128)+rax],xmm1
+        paddd   xmm13,xmm1
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm10
+        movdqa  xmm7,xmm10
+
+        pslld   xmm7,30
+        paddd   xmm2,xmm2
+        paddd   xmm13,xmm6
+
+        psrld   xmm10,2
+        paddd   xmm13,xmm8
+        por     xmm2,xmm5
+        por     xmm10,xmm7
+        pxor    xmm3,xmm0
+        movdqa  xmm0,XMMWORD[((192-128))+rax]
+
+        movdqa  xmm8,xmm13
+        movdqa  xmm7,xmm11
+        pxor    xmm3,XMMWORD[((32-128))+rax]
+        pxor    xmm3,xmm0
+        paddd   xmm12,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm13
+        pand    xmm7,xmm10
+
+        movdqa  xmm6,xmm11
+        movdqa  xmm5,xmm3
+        psrld   xmm9,27
+        paddd   xmm12,xmm7
+        pxor    xmm6,xmm10
+
+        movdqa  XMMWORD[(144-128)+rax],xmm2
+        paddd   xmm12,xmm2
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm14
+        movdqa  xmm7,xmm14
+
+        pslld   xmm7,30
+        paddd   xmm3,xmm3
+        paddd   xmm12,xmm6
+
+        psrld   xmm14,2
+        paddd   xmm12,xmm8
+        por     xmm3,xmm5
+        por     xmm14,xmm7
+        pxor    xmm4,xmm1
+        movdqa  xmm1,XMMWORD[((208-128))+rax]
+
+        movdqa  xmm8,xmm12
+        movdqa  xmm7,xmm10
+        pxor    xmm4,XMMWORD[((48-128))+rax]
+        pxor    xmm4,xmm1
+        paddd   xmm11,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm12
+        pand    xmm7,xmm14
+
+        movdqa  xmm6,xmm10
+        movdqa  xmm5,xmm4
+        psrld   xmm9,27
+        paddd   xmm11,xmm7
+        pxor    xmm6,xmm14
+
+        movdqa  XMMWORD[(160-128)+rax],xmm3
+        paddd   xmm11,xmm3
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm13
+        movdqa  xmm7,xmm13
+
+        pslld   xmm7,30
+        paddd   xmm4,xmm4
+        paddd   xmm11,xmm6
+
+        psrld   xmm13,2
+        paddd   xmm11,xmm8
+        por     xmm4,xmm5
+        por     xmm13,xmm7
+        pxor    xmm0,xmm2
+        movdqa  xmm2,XMMWORD[((224-128))+rax]
+
+        movdqa  xmm8,xmm11
+        movdqa  xmm7,xmm14
+        pxor    xmm0,XMMWORD[((64-128))+rax]
+        pxor    xmm0,xmm2
+        paddd   xmm10,xmm15
+        pslld   xmm8,5
+        movdqa  xmm9,xmm11
+        pand    xmm7,xmm13
+
+        movdqa  xmm6,xmm14
+        movdqa  xmm5,xmm0
+        psrld   xmm9,27
+        paddd   xmm10,xmm7
+        pxor    xmm6,xmm13
+
+        movdqa  XMMWORD[(176-128)+rax],xmm4
+        paddd   xmm10,xmm4
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        pand    xmm6,xmm12
+        movdqa  xmm7,xmm12
+
+        pslld   xmm7,30
+        paddd   xmm0,xmm0
+        paddd   xmm10,xmm6
+
+        psrld   xmm12,2
+        paddd   xmm10,xmm8
+        por     xmm0,xmm5
+        por     xmm12,xmm7
+        movdqa  xmm15,XMMWORD[64+rbp]
+        pxor    xmm1,xmm3
+        movdqa  xmm3,XMMWORD[((240-128))+rax]
+
+        movdqa  xmm8,xmm10
+        movdqa  xmm6,xmm13
+        pxor    xmm1,XMMWORD[((80-128))+rax]
+        paddd   xmm14,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm11
+
+        movdqa  xmm9,xmm10
+        movdqa  XMMWORD[(192-128)+rax],xmm0
+        paddd   xmm14,xmm0
+        pxor    xmm1,xmm3
+        psrld   xmm9,27
+        pxor    xmm6,xmm12
+        movdqa  xmm7,xmm11
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm1
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm14,xmm6
+        paddd   xmm1,xmm1
+
+        psrld   xmm11,2
+        paddd   xmm14,xmm8
+        por     xmm1,xmm5
+        por     xmm11,xmm7
+        pxor    xmm2,xmm4
+        movdqa  xmm4,XMMWORD[((0-128))+rax]
+
+        movdqa  xmm8,xmm14
+        movdqa  xmm6,xmm12
+        pxor    xmm2,XMMWORD[((96-128))+rax]
+        paddd   xmm13,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm10
+
+        movdqa  xmm9,xmm14
+        movdqa  XMMWORD[(208-128)+rax],xmm1
+        paddd   xmm13,xmm1
+        pxor    xmm2,xmm4
+        psrld   xmm9,27
+        pxor    xmm6,xmm11
+        movdqa  xmm7,xmm10
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm2
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm13,xmm6
+        paddd   xmm2,xmm2
+
+        psrld   xmm10,2
+        paddd   xmm13,xmm8
+        por     xmm2,xmm5
+        por     xmm10,xmm7
+        pxor    xmm3,xmm0
+        movdqa  xmm0,XMMWORD[((16-128))+rax]
+
+        movdqa  xmm8,xmm13
+        movdqa  xmm6,xmm11
+        pxor    xmm3,XMMWORD[((112-128))+rax]
+        paddd   xmm12,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm14
+
+        movdqa  xmm9,xmm13
+        movdqa  XMMWORD[(224-128)+rax],xmm2
+        paddd   xmm12,xmm2
+        pxor    xmm3,xmm0
+        psrld   xmm9,27
+        pxor    xmm6,xmm10
+        movdqa  xmm7,xmm14
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm3
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm12,xmm6
+        paddd   xmm3,xmm3
+
+        psrld   xmm14,2
+        paddd   xmm12,xmm8
+        por     xmm3,xmm5
+        por     xmm14,xmm7
+        pxor    xmm4,xmm1
+        movdqa  xmm1,XMMWORD[((32-128))+rax]
+
+        movdqa  xmm8,xmm12
+        movdqa  xmm6,xmm10
+        pxor    xmm4,XMMWORD[((128-128))+rax]
+        paddd   xmm11,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm13
+
+        movdqa  xmm9,xmm12
+        movdqa  XMMWORD[(240-128)+rax],xmm3
+        paddd   xmm11,xmm3
+        pxor    xmm4,xmm1
+        psrld   xmm9,27
+        pxor    xmm6,xmm14
+        movdqa  xmm7,xmm13
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm4
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm11,xmm6
+        paddd   xmm4,xmm4
+
+        psrld   xmm13,2
+        paddd   xmm11,xmm8
+        por     xmm4,xmm5
+        por     xmm13,xmm7
+        pxor    xmm0,xmm2
+        movdqa  xmm2,XMMWORD[((48-128))+rax]
+
+        movdqa  xmm8,xmm11
+        movdqa  xmm6,xmm14
+        pxor    xmm0,XMMWORD[((144-128))+rax]
+        paddd   xmm10,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm12
+
+        movdqa  xmm9,xmm11
+        movdqa  XMMWORD[(0-128)+rax],xmm4
+        paddd   xmm10,xmm4
+        pxor    xmm0,xmm2
+        psrld   xmm9,27
+        pxor    xmm6,xmm13
+        movdqa  xmm7,xmm12
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm0
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm10,xmm6
+        paddd   xmm0,xmm0
+
+        psrld   xmm12,2
+        paddd   xmm10,xmm8
+        por     xmm0,xmm5
+        por     xmm12,xmm7
+        pxor    xmm1,xmm3
+        movdqa  xmm3,XMMWORD[((64-128))+rax]
+
+        movdqa  xmm8,xmm10
+        movdqa  xmm6,xmm13
+        pxor    xmm1,XMMWORD[((160-128))+rax]
+        paddd   xmm14,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm11
+
+        movdqa  xmm9,xmm10
+        movdqa  XMMWORD[(16-128)+rax],xmm0
+        paddd   xmm14,xmm0
+        pxor    xmm1,xmm3
+        psrld   xmm9,27
+        pxor    xmm6,xmm12
+        movdqa  xmm7,xmm11
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm1
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm14,xmm6
+        paddd   xmm1,xmm1
+
+        psrld   xmm11,2
+        paddd   xmm14,xmm8
+        por     xmm1,xmm5
+        por     xmm11,xmm7
+        pxor    xmm2,xmm4
+        movdqa  xmm4,XMMWORD[((80-128))+rax]
+
+        movdqa  xmm8,xmm14
+        movdqa  xmm6,xmm12
+        pxor    xmm2,XMMWORD[((176-128))+rax]
+        paddd   xmm13,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm10
+
+        movdqa  xmm9,xmm14
+        movdqa  XMMWORD[(32-128)+rax],xmm1
+        paddd   xmm13,xmm1
+        pxor    xmm2,xmm4
+        psrld   xmm9,27
+        pxor    xmm6,xmm11
+        movdqa  xmm7,xmm10
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm2
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm13,xmm6
+        paddd   xmm2,xmm2
+
+        psrld   xmm10,2
+        paddd   xmm13,xmm8
+        por     xmm2,xmm5
+        por     xmm10,xmm7
+        pxor    xmm3,xmm0
+        movdqa  xmm0,XMMWORD[((96-128))+rax]
+
+        movdqa  xmm8,xmm13
+        movdqa  xmm6,xmm11
+        pxor    xmm3,XMMWORD[((192-128))+rax]
+        paddd   xmm12,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm14
+
+        movdqa  xmm9,xmm13
+        movdqa  XMMWORD[(48-128)+rax],xmm2
+        paddd   xmm12,xmm2
+        pxor    xmm3,xmm0
+        psrld   xmm9,27
+        pxor    xmm6,xmm10
+        movdqa  xmm7,xmm14
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm3
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm12,xmm6
+        paddd   xmm3,xmm3
+
+        psrld   xmm14,2
+        paddd   xmm12,xmm8
+        por     xmm3,xmm5
+        por     xmm14,xmm7
+        pxor    xmm4,xmm1
+        movdqa  xmm1,XMMWORD[((112-128))+rax]
+
+        movdqa  xmm8,xmm12
+        movdqa  xmm6,xmm10
+        pxor    xmm4,XMMWORD[((208-128))+rax]
+        paddd   xmm11,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm13
+
+        movdqa  xmm9,xmm12
+        movdqa  XMMWORD[(64-128)+rax],xmm3
+        paddd   xmm11,xmm3
+        pxor    xmm4,xmm1
+        psrld   xmm9,27
+        pxor    xmm6,xmm14
+        movdqa  xmm7,xmm13
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm4
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm11,xmm6
+        paddd   xmm4,xmm4
+
+        psrld   xmm13,2
+        paddd   xmm11,xmm8
+        por     xmm4,xmm5
+        por     xmm13,xmm7
+        pxor    xmm0,xmm2
+        movdqa  xmm2,XMMWORD[((128-128))+rax]
+
+        movdqa  xmm8,xmm11
+        movdqa  xmm6,xmm14
+        pxor    xmm0,XMMWORD[((224-128))+rax]
+        paddd   xmm10,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm12
+
+        movdqa  xmm9,xmm11
+        movdqa  XMMWORD[(80-128)+rax],xmm4
+        paddd   xmm10,xmm4
+        pxor    xmm0,xmm2
+        psrld   xmm9,27
+        pxor    xmm6,xmm13
+        movdqa  xmm7,xmm12
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm0
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm10,xmm6
+        paddd   xmm0,xmm0
+
+        psrld   xmm12,2
+        paddd   xmm10,xmm8
+        por     xmm0,xmm5
+        por     xmm12,xmm7
+        pxor    xmm1,xmm3
+        movdqa  xmm3,XMMWORD[((144-128))+rax]
+
+        movdqa  xmm8,xmm10
+        movdqa  xmm6,xmm13
+        pxor    xmm1,XMMWORD[((240-128))+rax]
+        paddd   xmm14,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm11
+
+        movdqa  xmm9,xmm10
+        movdqa  XMMWORD[(96-128)+rax],xmm0
+        paddd   xmm14,xmm0
+        pxor    xmm1,xmm3
+        psrld   xmm9,27
+        pxor    xmm6,xmm12
+        movdqa  xmm7,xmm11
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm1
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm14,xmm6
+        paddd   xmm1,xmm1
+
+        psrld   xmm11,2
+        paddd   xmm14,xmm8
+        por     xmm1,xmm5
+        por     xmm11,xmm7
+        pxor    xmm2,xmm4
+        movdqa  xmm4,XMMWORD[((160-128))+rax]
+
+        movdqa  xmm8,xmm14
+        movdqa  xmm6,xmm12
+        pxor    xmm2,XMMWORD[((0-128))+rax]
+        paddd   xmm13,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm10
+
+        movdqa  xmm9,xmm14
+        movdqa  XMMWORD[(112-128)+rax],xmm1
+        paddd   xmm13,xmm1
+        pxor    xmm2,xmm4
+        psrld   xmm9,27
+        pxor    xmm6,xmm11
+        movdqa  xmm7,xmm10
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm2
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm13,xmm6
+        paddd   xmm2,xmm2
+
+        psrld   xmm10,2
+        paddd   xmm13,xmm8
+        por     xmm2,xmm5
+        por     xmm10,xmm7
+        pxor    xmm3,xmm0
+        movdqa  xmm0,XMMWORD[((176-128))+rax]
+
+        movdqa  xmm8,xmm13
+        movdqa  xmm6,xmm11
+        pxor    xmm3,XMMWORD[((16-128))+rax]
+        paddd   xmm12,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm14
+
+        movdqa  xmm9,xmm13
+        paddd   xmm12,xmm2
+        pxor    xmm3,xmm0
+        psrld   xmm9,27
+        pxor    xmm6,xmm10
+        movdqa  xmm7,xmm14
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm3
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm12,xmm6
+        paddd   xmm3,xmm3
+
+        psrld   xmm14,2
+        paddd   xmm12,xmm8
+        por     xmm3,xmm5
+        por     xmm14,xmm7
+        pxor    xmm4,xmm1
+        movdqa  xmm1,XMMWORD[((192-128))+rax]
+
+        movdqa  xmm8,xmm12
+        movdqa  xmm6,xmm10
+        pxor    xmm4,XMMWORD[((32-128))+rax]
+        paddd   xmm11,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm13
+
+        movdqa  xmm9,xmm12
+        paddd   xmm11,xmm3
+        pxor    xmm4,xmm1
+        psrld   xmm9,27
+        pxor    xmm6,xmm14
+        movdqa  xmm7,xmm13
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm4
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm11,xmm6
+        paddd   xmm4,xmm4
+
+        psrld   xmm13,2
+        paddd   xmm11,xmm8
+        por     xmm4,xmm5
+        por     xmm13,xmm7
+        pxor    xmm0,xmm2
+        movdqa  xmm2,XMMWORD[((208-128))+rax]
+
+        movdqa  xmm8,xmm11
+        movdqa  xmm6,xmm14
+        pxor    xmm0,XMMWORD[((48-128))+rax]
+        paddd   xmm10,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm12
+
+        movdqa  xmm9,xmm11
+        paddd   xmm10,xmm4
+        pxor    xmm0,xmm2
+        psrld   xmm9,27
+        pxor    xmm6,xmm13
+        movdqa  xmm7,xmm12
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm0
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm10,xmm6
+        paddd   xmm0,xmm0
+
+        psrld   xmm12,2
+        paddd   xmm10,xmm8
+        por     xmm0,xmm5
+        por     xmm12,xmm7
+        pxor    xmm1,xmm3
+        movdqa  xmm3,XMMWORD[((224-128))+rax]
+
+        movdqa  xmm8,xmm10
+        movdqa  xmm6,xmm13
+        pxor    xmm1,XMMWORD[((64-128))+rax]
+        paddd   xmm14,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm11
+
+        movdqa  xmm9,xmm10
+        paddd   xmm14,xmm0
+        pxor    xmm1,xmm3
+        psrld   xmm9,27
+        pxor    xmm6,xmm12
+        movdqa  xmm7,xmm11
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm1
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm14,xmm6
+        paddd   xmm1,xmm1
+
+        psrld   xmm11,2
+        paddd   xmm14,xmm8
+        por     xmm1,xmm5
+        por     xmm11,xmm7
+        pxor    xmm2,xmm4
+        movdqa  xmm4,XMMWORD[((240-128))+rax]
+
+        movdqa  xmm8,xmm14
+        movdqa  xmm6,xmm12
+        pxor    xmm2,XMMWORD[((80-128))+rax]
+        paddd   xmm13,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm10
+
+        movdqa  xmm9,xmm14
+        paddd   xmm13,xmm1
+        pxor    xmm2,xmm4
+        psrld   xmm9,27
+        pxor    xmm6,xmm11
+        movdqa  xmm7,xmm10
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm2
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm13,xmm6
+        paddd   xmm2,xmm2
+
+        psrld   xmm10,2
+        paddd   xmm13,xmm8
+        por     xmm2,xmm5
+        por     xmm10,xmm7
+        pxor    xmm3,xmm0
+        movdqa  xmm0,XMMWORD[((0-128))+rax]
+
+        movdqa  xmm8,xmm13
+        movdqa  xmm6,xmm11
+        pxor    xmm3,XMMWORD[((96-128))+rax]
+        paddd   xmm12,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm14
+
+        movdqa  xmm9,xmm13
+        paddd   xmm12,xmm2
+        pxor    xmm3,xmm0
+        psrld   xmm9,27
+        pxor    xmm6,xmm10
+        movdqa  xmm7,xmm14
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm3
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm12,xmm6
+        paddd   xmm3,xmm3
+
+        psrld   xmm14,2
+        paddd   xmm12,xmm8
+        por     xmm3,xmm5
+        por     xmm14,xmm7
+        pxor    xmm4,xmm1
+        movdqa  xmm1,XMMWORD[((16-128))+rax]
+
+        movdqa  xmm8,xmm12
+        movdqa  xmm6,xmm10
+        pxor    xmm4,XMMWORD[((112-128))+rax]
+        paddd   xmm11,xmm15
+        pslld   xmm8,5
+        pxor    xmm6,xmm13
+
+        movdqa  xmm9,xmm12
+        paddd   xmm11,xmm3
+        pxor    xmm4,xmm1
+        psrld   xmm9,27
+        pxor    xmm6,xmm14
+        movdqa  xmm7,xmm13
+
+        pslld   xmm7,30
+        movdqa  xmm5,xmm4
+        por     xmm8,xmm9
+        psrld   xmm5,31
+        paddd   xmm11,xmm6
+        paddd   xmm4,xmm4
+
+        psrld   xmm13,2
+        paddd   xmm11,xmm8
+        por     xmm4,xmm5
+        por     xmm13,xmm7
+        movdqa  xmm8,xmm11
+        paddd   xmm10,xmm15
+        movdqa  xmm6,xmm14
+        pslld   xmm8,5
+        pxor    xmm6,xmm12
+
+        movdqa  xmm9,xmm11
+        paddd   xmm10,xmm4
+        psrld   xmm9,27
+        movdqa  xmm7,xmm12
+        pxor    xmm6,xmm13
+
+        pslld   xmm7,30
+        por     xmm8,xmm9
+        paddd   xmm10,xmm6
+
+        psrld   xmm12,2
+        paddd   xmm10,xmm8
+        por     xmm12,xmm7
+        movdqa  xmm0,XMMWORD[rbx]
+        mov     ecx,1
+        cmp     ecx,DWORD[rbx]
+        pxor    xmm8,xmm8
+        cmovge  r8,rbp
+        cmp     ecx,DWORD[4+rbx]
+        movdqa  xmm1,xmm0
+        cmovge  r9,rbp
+        cmp     ecx,DWORD[8+rbx]
+        pcmpgtd xmm1,xmm8
+        cmovge  r10,rbp
+        cmp     ecx,DWORD[12+rbx]
+        paddd   xmm0,xmm1
+        cmovge  r11,rbp
+
+        movdqu  xmm6,XMMWORD[rdi]
+        pand    xmm10,xmm1
+        movdqu  xmm7,XMMWORD[32+rdi]
+        pand    xmm11,xmm1
+        paddd   xmm10,xmm6
+        movdqu  xmm8,XMMWORD[64+rdi]
+        pand    xmm12,xmm1
+        paddd   xmm11,xmm7
+        movdqu  xmm9,XMMWORD[96+rdi]
+        pand    xmm13,xmm1
+        paddd   xmm12,xmm8
+        movdqu  xmm5,XMMWORD[128+rdi]
+        pand    xmm14,xmm1
+        movdqu  XMMWORD[rdi],xmm10
+        paddd   xmm13,xmm9
+        movdqu  XMMWORD[32+rdi],xmm11
+        paddd   xmm14,xmm5
+        movdqu  XMMWORD[64+rdi],xmm12
+        movdqu  XMMWORD[96+rdi],xmm13
+        movdqu  XMMWORD[128+rdi],xmm14
+
+        movdqa  XMMWORD[rbx],xmm0
+        movdqa  xmm5,XMMWORD[96+rbp]
+        movdqa  xmm15,XMMWORD[((-32))+rbp]
+        dec     edx
+        jnz     NEAR $L$oop
+
+        mov     edx,DWORD[280+rsp]
+        lea     rdi,[16+rdi]
+        lea     rsi,[64+rsi]
+        dec     edx
+        jnz     NEAR $L$oop_grande
+
+$L$done:
+        mov     rax,QWORD[272+rsp]
+
+        movaps  xmm6,XMMWORD[((-184))+rax]
+        movaps  xmm7,XMMWORD[((-168))+rax]
+        movaps  xmm8,XMMWORD[((-152))+rax]
+        movaps  xmm9,XMMWORD[((-136))+rax]
+        movaps  xmm10,XMMWORD[((-120))+rax]
+        movaps  xmm11,XMMWORD[((-104))+rax]
+        movaps  xmm12,XMMWORD[((-88))+rax]
+        movaps  xmm13,XMMWORD[((-72))+rax]
+        movaps  xmm14,XMMWORD[((-56))+rax]
+        movaps  xmm15,XMMWORD[((-40))+rax]
+        mov     rbp,QWORD[((-16))+rax]
+
+        mov     rbx,QWORD[((-8))+rax]
+
+        lea     rsp,[rax]
+
+$L$epilogue:
+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
+        mov     rsi,QWORD[16+rsp]
+        DB      0F3h,0C3h               ;repret
+
+$L$SEH_end_sha1_multi_block:
+
+ALIGN   32
+sha1_multi_block_shaext:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_sha1_multi_block_shaext:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+
+
+
+_shaext_shortcut:
+        mov     rax,rsp
+
+        push    rbx
+
+        push    rbp
+
+        lea     rsp,[((-168))+rsp]
+        movaps  XMMWORD[rsp],xmm6
+        movaps  XMMWORD[16+rsp],xmm7
+        movaps  XMMWORD[32+rsp],xmm8
+        movaps  XMMWORD[48+rsp],xmm9
+        movaps  XMMWORD[(-120)+rax],xmm10
+        movaps  XMMWORD[(-104)+rax],xmm11
+        movaps  XMMWORD[(-88)+rax],xmm12
+        movaps  XMMWORD[(-72)+rax],xmm13
+        movaps  XMMWORD[(-56)+rax],xmm14
+        movaps  XMMWORD[(-40)+rax],xmm15
+        sub     rsp,288
+        shl     edx,1
+        and     rsp,-256
+        lea     rdi,[64+rdi]
+        mov     QWORD[272+rsp],rax
+$L$body_shaext:
+        lea     rbx,[256+rsp]
+        movdqa  xmm3,XMMWORD[((K_XX_XX+128))]
+
+$L$oop_grande_shaext:
+        mov     DWORD[280+rsp],edx
+        xor     edx,edx
+        mov     r8,QWORD[rsi]
+        mov     ecx,DWORD[8+rsi]
+        cmp     ecx,edx
+        cmovg   edx,ecx
+        test    ecx,ecx
+        mov     DWORD[rbx],ecx
+        cmovle  r8,rsp
+        mov     r9,QWORD[16+rsi]
+        mov     ecx,DWORD[24+rsi]
+        cmp     ecx,edx
+        cmovg   edx,ecx
+        test    ecx,ecx
+        mov     DWORD[4+rbx],ecx
+        cmovle  r9,rsp
+        test    edx,edx
+        jz      NEAR $L$done_shaext
+
+        movq    xmm0,QWORD[((0-64))+rdi]
+        movq    xmm4,QWORD[((32-64))+rdi]
+        movq    xmm5,QWORD[((64-64))+rdi]
+        movq    xmm6,QWORD[((96-64))+rdi]
+        movq    xmm7,QWORD[((128-64))+rdi]
+
+        punpckldq       xmm0,xmm4
+        punpckldq       xmm5,xmm6
+
+        movdqa  xmm8,xmm0
+        punpcklqdq      xmm0,xmm5
+        punpckhqdq      xmm8,xmm5
+
+        pshufd  xmm1,xmm7,63
+        pshufd  xmm9,xmm7,127
+        pshufd  xmm0,xmm0,27
+        pshufd  xmm8,xmm8,27
+        jmp     NEAR $L$oop_shaext
+
+ALIGN   32
+$L$oop_shaext:
+        movdqu  xmm4,XMMWORD[r8]
+        movdqu  xmm11,XMMWORD[r9]
+        movdqu  xmm5,XMMWORD[16+r8]
+        movdqu  xmm12,XMMWORD[16+r9]
+        movdqu  xmm6,XMMWORD[32+r8]
+DB      102,15,56,0,227
+        movdqu  xmm13,XMMWORD[32+r9]
+DB      102,68,15,56,0,219
+        movdqu  xmm7,XMMWORD[48+r8]
+        lea     r8,[64+r8]
+DB      102,15,56,0,235
+        movdqu  xmm14,XMMWORD[48+r9]
+        lea     r9,[64+r9]
+DB      102,68,15,56,0,227
+
+        movdqa  XMMWORD[80+rsp],xmm1
+        paddd   xmm1,xmm4
+        movdqa  XMMWORD[112+rsp],xmm9
+        paddd   xmm9,xmm11
+        movdqa  XMMWORD[64+rsp],xmm0
+        movdqa  xmm2,xmm0
+        movdqa  XMMWORD[96+rsp],xmm8
+        movdqa  xmm10,xmm8
+DB      15,58,204,193,0
+DB      15,56,200,213
+DB      69,15,58,204,193,0
+DB      69,15,56,200,212
+DB      102,15,56,0,243
+        prefetcht0      [127+r8]
+DB      15,56,201,229
+DB      102,68,15,56,0,235
+        prefetcht0      [127+r9]
+DB      69,15,56,201,220
+
+DB      102,15,56,0,251
+        movdqa  xmm1,xmm0
+DB      102,68,15,56,0,243
+        movdqa  xmm9,xmm8
+DB      15,58,204,194,0
+DB      15,56,200,206
+DB      69,15,58,204,194,0
+DB      69,15,56,200,205
+        pxor    xmm4,xmm6
+DB      15,56,201,238
+        pxor    xmm11,xmm13
+DB      69,15,56,201,229
+        movdqa  xmm2,xmm0
+        movdqa  xmm10,xmm8
+DB      15,58,204,193,0
+DB      15,56,200,215
+DB      69,15,58,204,193,0
+DB      69,15,56,200,214
+DB      15,56,202,231
+DB      69,15,56,202,222
+        pxor    xmm5,xmm7
+DB      15,56,201,247
+        pxor    xmm12,xmm14
+DB      69,15,56,201,238
+        movdqa  xmm1,xmm0
+        movdqa  xmm9,xmm8
+DB      15,58,204,194,0
+DB      15,56,200,204
+DB      69,15,58,204,194,0
+DB      69,15,56,200,203
+DB      15,56,202,236
+DB      69,15,56,202,227
+        pxor    xmm6,xmm4
+DB      15,56,201,252
+        pxor    xmm13,xmm11
+DB      69,15,56,201,243
+        movdqa  xmm2,xmm0
+        movdqa  xmm10,xmm8
+DB      15,58,204,193,0
+DB      15,56,200,213
+DB      69,15,58,204,193,0
+DB      69,15,56,200,212
+DB      15,56,202,245
+DB      69,15,56,202,236
+        pxor    xmm7,xmm5
+DB      15,56,201,229
+        pxor    xmm14,xmm12
+DB      69,15,56,201,220
+        movdqa  xmm1,xmm0
+        movdqa  xmm9,xmm8
+DB      15,58,204,194,1
+DB      15,56,200,206
+DB      69,15,58,204,194,1
+DB      69,15,56,200,205
+DB      15,56,202,254
+DB      69,15,56,202,245
+        pxor    xmm4,xmm6
+DB      15,56,201,238
+        pxor    xmm11,xmm13
+DB      69,15,56,201,229
+        movdqa  xmm2,xmm0
+        movdqa  xmm10,xmm8
+DB      15,58,204,193,1
+DB      15,56,200,215
+DB      69,15,58,204,193,1
+DB      69,15,56,200,214
+DB      15,56,202,231
+DB      69,15,56,202,222
+        pxor    xmm5,xmm7
+DB      15,56,201,247
+        pxor    xmm12,xmm14
+DB      69,15,56,201,238
+        movdqa  xmm1,xmm0
+        movdqa  xmm9,xmm8
+DB      15,58,204,194,1
+DB      15,56,200,204
+DB      69,15,58,204,194,1
+DB      69,15,56,200,203
+DB      15,56,202,236
+DB      69,15,56,202,227
+        pxor    xmm6,xmm4
+DB      15,56,201,252
+        pxor    xmm13,xmm11
+DB      69,15,56,201,243
+        movdqa  xmm2,xmm0
+        movdqa  xmm10,xmm8
+DB      15,58,204,193,1
+DB      15,56,200,213
+DB      69,15,58,204,193,1
+DB      69,15,56,200,212
+DB      15,56,202,245
+DB      69,15,56,202,236
+        pxor    xmm7,xmm5
+DB      15,56,201,229
+        pxor    xmm14,xmm12
+DB      69,15,56,201,220
+        movdqa  xmm1,xmm0
+        movdqa  xmm9,xmm8
+DB      15,58,204,194,1
+DB      15,56,200,206
+DB      69,15,58,204,194,1
+DB      69,15,56,200,205
+DB      15,56,202,254
+DB      69,15,56,202,245
+        pxor    xmm4,xmm6
+DB      15,56,201,238
+        pxor    xmm11,xmm13
+DB      69,15,56,201,229
+        movdqa  xmm2,xmm0
+        movdqa  xmm10,xmm8
+DB      15,58,204,193,2
+DB      15,56,200,215
+DB      69,15,58,204,193,2
+DB      69,15,56,200,214
+DB      15,56,202,231
+DB      69,15,56,202,222
+        pxor    xmm5,xmm7
+DB      15,56,201,247
+        pxor    xmm12,xmm14
+DB      69,15,56,201,238
+        movdqa  xmm1,xmm0
+        movdqa  xmm9,xmm8
+DB      15,58,204,194,2
+DB      15,56,200,204
+DB      69,15,58,204,194,2
+DB      69,15,56,200,203
+DB      15,56,202,236
+DB      69,15,56,202,227
+        pxor    xmm6,xmm4
+DB      15,56,201,252
+        pxor    xmm13,xmm11
+DB      69,15,56,201,243
+        movdqa  xmm2,xmm0
+        movdqa  xmm10,xmm8
+DB      15,58,204,193,2
+DB      15,56,200,213
+DB      69,15,58,204,193,2
+DB      69,15,56,200,212
+DB      15,56,202,245
+DB      69,15,56,202,236
+        pxor    xmm7,xmm5
+DB      15,56,201,229
+        pxor    xmm14,xmm12
+DB      69,15,56,201,220
+        movdqa  xmm1,xmm0
+        movdqa  xmm9,xmm8
+DB      15,58,204,194,2
+DB      15,56,200,206
+DB      69,15,58,204,194,2
+DB      69,15,56,200,205
+DB      15,56,202,254
+DB      69,15,56,202,245
+        pxor    xmm4,xmm6
+DB      15,56,201,238
+        pxor    xmm11,xmm13
+DB      69,15,56,201,229
+        movdqa  xmm2,xmm0
+        movdqa  xmm10,xmm8
+DB      15,58,204,193,2
+DB      15,56,200,215
+DB      69,15,58,204,193,2
+DB      69,15,56,200,214
+DB      15,56,202,231
+DB      69,15,56,202,222
+        pxor    xmm5,xmm7
+DB      15,56,201,247
+        pxor    xmm12,xmm14
+DB      69,15,56,201,238
+        movdqa  xmm1,xmm0
+        movdqa  xmm9,xmm8
+DB      15,58,204,194,3
+DB      15,56,200,204
+DB      69,15,58,204,194,3
+DB      69,15,56,200,203
+DB      15,56,202,236
+DB      69,15,56,202,227
+        pxor    xmm6,xmm4
+DB      15,56,201,252
+        pxor    xmm13,xmm11
+DB      69,15,56,201,243
+        movdqa  xmm2,xmm0
+        movdqa  xmm10,xmm8
+DB      15,58,204,193,3
+DB      15,56,200,213
+DB      69,15,58,204,193,3
+DB      69,15,56,200,212
+DB      15,56,202,245
+DB      69,15,56,202,236
+        pxor    xmm7,xmm5
+        pxor    xmm14,xmm12
+
+        mov     ecx,1
+        pxor    xmm4,xmm4
+        cmp     ecx,DWORD[rbx]
+        cmovge  r8,rsp
+
+        movdqa  xmm1,xmm0
+        movdqa  xmm9,xmm8
+DB      15,58,204,194,3
+DB      15,56,200,206
+DB      69,15,58,204,194,3
+DB      69,15,56,200,205
+DB      15,56,202,254
+DB      69,15,56,202,245
+
+        cmp     ecx,DWORD[4+rbx]
+        cmovge  r9,rsp
+        movq    xmm6,QWORD[rbx]
+
+        movdqa  xmm2,xmm0
+        movdqa  xmm10,xmm8
+DB      15,58,204,193,3
+DB      15,56,200,215
+DB      69,15,58,204,193,3
+DB      69,15,56,200,214
+
+        pshufd  xmm11,xmm6,0x00
+        pshufd  xmm12,xmm6,0x55
+        movdqa  xmm7,xmm6
+        pcmpgtd xmm11,xmm4
+        pcmpgtd xmm12,xmm4
+
+        movdqa  xmm1,xmm0
+        movdqa  xmm9,xmm8
+DB      15,58,204,194,3
+DB      15,56,200,204
+DB      69,15,58,204,194,3
+DB      68,15,56,200,204
+
+        pcmpgtd xmm7,xmm4
+        pand    xmm0,xmm11
+        pand    xmm1,xmm11
+        pand    xmm8,xmm12
+        pand    xmm9,xmm12
+        paddd   xmm6,xmm7
+
+        paddd   xmm0,XMMWORD[64+rsp]
+        paddd   xmm1,XMMWORD[80+rsp]
+        paddd   xmm8,XMMWORD[96+rsp]
+        paddd   xmm9,XMMWORD[112+rsp]
+
+        movq    QWORD[rbx],xmm6
+        dec     edx
+        jnz     NEAR $L$oop_shaext
+
+        mov     edx,DWORD[280+rsp]
+
+        pshufd  xmm0,xmm0,27
+        pshufd  xmm8,xmm8,27
+
+        movdqa  xmm6,xmm0
+        punpckldq       xmm0,xmm8
+        punpckhdq       xmm6,xmm8
+        punpckhdq       xmm1,xmm9
+        movq    QWORD[(0-64)+rdi],xmm0
+        psrldq  xmm0,8
+        movq    QWORD[(64-64)+rdi],xmm6
+        psrldq  xmm6,8
+        movq    QWORD[(32-64)+rdi],xmm0
+        psrldq  xmm1,8
+        movq    QWORD[(96-64)+rdi],xmm6
+        movq    QWORD[(128-64)+rdi],xmm1
+
+        lea     rdi,[8+rdi]
+        lea     rsi,[32+rsi]
+        dec     edx
+        jnz     NEAR $L$oop_grande_shaext
+
+$L$done_shaext:
+
+        movaps  xmm6,XMMWORD[((-184))+rax]
+        movaps  xmm7,XMMWORD[((-168))+rax]
+        movaps  xmm8,XMMWORD[((-152))+rax]
+        movaps  xmm9,XMMWORD[((-136))+rax]
+        movaps  xmm10,XMMWORD[((-120))+rax]
+        movaps  xmm11,XMMWORD[((-104))+rax]
+        movaps  xmm12,XMMWORD[((-88))+rax]
+        movaps  xmm13,XMMWORD[((-72))+rax]
+        movaps  xmm14,XMMWORD[((-56))+rax]
+        movaps  xmm15,XMMWORD[((-40))+rax]
+        mov     rbp,QWORD[((-16))+rax]
+
+        mov     rbx,QWORD[((-8))+rax]
+
+        lea     rsp,[rax]
+
+$L$epilogue_shaext:
+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
+        mov     rsi,QWORD[16+rsp]
+        DB      0F3h,0C3h               ;repret
+
+$L$SEH_end_sha1_multi_block_shaext:
+
+ALIGN   256
+        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
+        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
+K_XX_XX:
+        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,109,117,108,116,105,45,98,108,111,99,107
+DB      32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120
+DB      56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77
+DB      83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110
+DB      115,115,108,46,111,114,103,62,0
+EXTERN  __imp_RtlVirtualUnwind
+
+ALIGN   16
+se_handler:
+        push    rsi
+        push    rdi
+        push    rbx
+        push    rbp
+        push    r12
+        push    r13
+        push    r14
+        push    r15
+        pushfq
+        sub     rsp,64
+
+        mov     rax,QWORD[120+r8]
+        mov     rbx,QWORD[248+r8]
+
+        mov     rsi,QWORD[8+r9]
+        mov     r11,QWORD[56+r9]
+
+        mov     r10d,DWORD[r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jb      NEAR $L$in_prologue
+
+        mov     rax,QWORD[152+r8]
+
+        mov     r10d,DWORD[4+r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jae     NEAR $L$in_prologue
+
+        mov     rax,QWORD[272+rax]
+
+        mov     rbx,QWORD[((-8))+rax]
+        mov     rbp,QWORD[((-16))+rax]
+        mov     QWORD[144+r8],rbx
+        mov     QWORD[160+r8],rbp
+
+        lea     rsi,[((-24-160))+rax]
+        lea     rdi,[512+r8]
+        mov     ecx,20
+        DD      0xa548f3fc
+
+$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[40+r9]
+        mov     rsi,r8
+        mov     ecx,154
+        DD      0xa548f3fc
+
+        mov     rsi,r9
+        xor     rcx,rcx
+        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
+        popfq
+        pop     r15
+        pop     r14
+        pop     r13
+        pop     r12
+        pop     rbp
+        pop     rbx
+        pop     rdi
+        pop     rsi
+        DB      0F3h,0C3h               ;repret
+
+section .pdata rdata align=4
+ALIGN   4
+        DD      $L$SEH_begin_sha1_multi_block wrt ..imagebase
+        DD      $L$SEH_end_sha1_multi_block wrt ..imagebase
+        DD      $L$SEH_info_sha1_multi_block wrt ..imagebase
+        DD      $L$SEH_begin_sha1_multi_block_shaext wrt ..imagebase
+        DD      $L$SEH_end_sha1_multi_block_shaext wrt ..imagebase
+        DD      $L$SEH_info_sha1_multi_block_shaext wrt ..imagebase
+section .xdata rdata align=8
+ALIGN   8
+$L$SEH_info_sha1_multi_block:
+DB      9,0,0,0
+        DD      se_handler wrt ..imagebase
+        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
+$L$SEH_info_sha1_multi_block_shaext:
+DB      9,0,0,0
+        DD      se_handler wrt ..imagebase
+        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext wrt ..imagebase
diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
new file mode 100644
index 0000000000..c6d68d348f
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
@@ -0,0 +1,2884 @@
+; WARNING: do not edit!
+; Generated from openssl/crypto/sha/asm/sha1-x86_64.pl
+;
+; Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved.
+;
+; Licensed under the OpenSSL license (the "License").  You may not use
+; this file except in compliance with the License.  You can obtain a copy
+; in the file LICENSE in the source distribution or at
+; https://www.openssl.org/source/license.html
+
+default rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section .text code align=64
+
+EXTERN  OPENSSL_ia32cap_P
+
+global  sha1_block_data_order
+
+ALIGN   16
+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:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+
+
+
+        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      NEAR $L$ialu
+        test    r10d,536870912
+        jnz     NEAR _shaext_shortcut
+        jmp     NEAR _ssse3_shortcut
+
+ALIGN   16
+$L$ialu:
+        mov     rax,rsp
+
+        push    rbx
+
+        push    rbp
+
+        push    r12
+
+        push    r13
+
+        push    r14
+
+        mov     r8,rdi
+        sub     rsp,72
+        mov     r9,rsi
+        and     rsp,-64
+        mov     r10,rdx
+        mov     QWORD[64+rsp],rax
+
+$L$prologue:
+
+        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[r9]
+        bswap   edx
+        mov     ebp,DWORD[4+r9]
+        mov     eax,r12d
+        mov     DWORD[rsp],edx
+        mov     ecx,esi
+        bswap   ebp
+        xor     eax,r11d
+        rol     ecx,5
+        and     eax,edi
+        lea     r13d,[1518500249+r13*1+rdx]
+        add     r13d,ecx
+        xor     eax,r12d
+        rol     edi,30
+        add     r13d,eax
+        mov     r14d,DWORD[8+r9]
+        mov     eax,r11d
+        mov     DWORD[4+rsp],ebp
+        mov     ecx,r13d
+        bswap   r14d
+        xor     eax,edi
+        rol     ecx,5
+        and     eax,esi
+        lea     r12d,[1518500249+r12*1+rbp]
+        add     r12d,ecx
+        xor     eax,r11d
+        rol     esi,30
+        add     r12d,eax
+        mov     edx,DWORD[12+r9]
+        mov     eax,edi
+        mov     DWORD[8+rsp],r14d
+        mov     ecx,r12d
+        bswap   edx
+        xor     eax,esi
+        rol     ecx,5
+        and     eax,r13d
+        lea     r11d,[1518500249+r11*1+r14]
+        add     r11d,ecx
+        xor     eax,edi
+        rol     r13d,30
+        add     r11d,eax
+        mov     ebp,DWORD[16+r9]
+        mov     eax,esi
+        mov     DWORD[12+rsp],edx
+        mov     ecx,r11d
+        bswap   ebp
+        xor     eax,r13d
+        rol     ecx,5
+        and     eax,r12d
+        lea     edi,[1518500249+rdi*1+rdx]
+        add     edi,ecx
+        xor     eax,esi
+        rol     r12d,30
+        add     edi,eax
+        mov     r14d,DWORD[20+r9]
+        mov     eax,r13d
+        mov     DWORD[16+rsp],ebp
+        mov     ecx,edi
+        bswap   r14d
+        xor     eax,r12d
+        rol     ecx,5
+        and     eax,r11d
+        lea     esi,[1518500249+rsi*1+rbp]
+        add     esi,ecx
+        xor     eax,r13d
+        rol     r11d,30
+        add     esi,eax
+        mov     edx,DWORD[24+r9]
+        mov     eax,r12d
+        mov     DWORD[20+rsp],r14d
+        mov     ecx,esi
+        bswap   edx
+        xor     eax,r11d
+        rol     ecx,5
+        and     eax,edi
+        lea     r13d,[1518500249+r13*1+r14]
+        add     r13d,ecx
+        xor     eax,r12d
+        rol     edi,30
+        add     r13d,eax
+        mov     ebp,DWORD[28+r9]
+        mov     eax,r11d
+        mov     DWORD[24+rsp],edx
+        mov     ecx,r13d
+        bswap   ebp
+        xor     eax,edi
+        rol     ecx,5
+        and     eax,esi
+        lea     r12d,[1518500249+r12*1+rdx]
+        add     r12d,ecx
+        xor     eax,r11d
+        rol     esi,30
+        add     r12d,eax
+        mov     r14d,DWORD[32+r9]
+        mov     eax,edi
+        mov     DWORD[28+rsp],ebp
+        mov     ecx,r12d
+        bswap   r14d
+        xor     eax,esi
+        rol     ecx,5
+        and     eax,r13d
+        lea     r11d,[1518500249+r11*1+rbp]
+        add     r11d,ecx
+        xor     eax,edi
+        rol     r13d,30
+        add     r11d,eax
+        mov     edx,DWORD[36+r9]
+        mov     eax,esi
+        mov     DWORD[32+rsp],r14d
+        mov     ecx,r11d
+        bswap   edx
+        xor     eax,r13d
+        rol     ecx,5
+        and     eax,r12d
+        lea     edi,[1518500249+rdi*1+r14]
+        add     edi,ecx
+        xor     eax,esi
+        rol     r12d,30
+        add     edi,eax
+        mov     ebp,DWORD[40+r9]
+        mov     eax,r13d
+        mov     DWORD[36+rsp],edx
+        mov     ecx,edi
+        bswap   ebp
+        xor     eax,r12d
+        rol     ecx,5
+        and     eax,r11d
+        lea     esi,[1518500249+rsi*1+rdx]
+        add     esi,ecx
+        xor     eax,r13d
+        rol     r11d,30
+        add     esi,eax
+        mov     r14d,DWORD[44+r9]
+        mov     eax,r12d
+        mov     DWORD[40+rsp],ebp
+        mov     ecx,esi
+        bswap   r14d
+        xor     eax,r11d
+        rol     ecx,5
+        and     eax,edi
+        lea     r13d,[1518500249+r13*1+rbp]
+        add     r13d,ecx
+        xor     eax,r12d
+        rol     edi,30
+        add     r13d,eax
+        mov     edx,DWORD[48+r9]
+        mov     eax,r11d
+        mov     DWORD[44+rsp],r14d
+        mov     ecx,r13d
+        bswap   edx
+        xor     eax,edi
+        rol     ecx,5
+        and     eax,esi
+        lea     r12d,[1518500249+r12*1+r14]
+        add     r12d,ecx
+        xor     eax,r11d
+        rol     esi,30
+        add     r12d,eax
+        mov     ebp,DWORD[52+r9]
+        mov     eax,edi
+        mov     DWORD[48+rsp],edx
+        mov     ecx,r12d
+        bswap   ebp
+        xor     eax,esi
+        rol     ecx,5
+        and     eax,r13d
+        lea     r11d,[1518500249+r11*1+rdx]
+        add     r11d,ecx
+        xor     eax,edi
+        rol     r13d,30
+        add     r11d,eax
+        mov     r14d,DWORD[56+r9]
+        mov     eax,esi
+        mov     DWORD[52+rsp],ebp
+        mov     ecx,r11d
+        bswap   r14d
+        xor     eax,r13d
+        rol     ecx,5
+        and     eax,r12d
+        lea     edi,[1518500249+rdi*1+rbp]
+        add     edi,ecx
+        xor     eax,esi
+        rol     r12d,30
+        add     edi,eax
+        mov     edx,DWORD[60+r9]
+        mov     eax,r13d
+        mov     DWORD[56+rsp],r14d
+        mov     ecx,edi
+        bswap   edx
+        xor     eax,r12d
+        rol     ecx,5
+        and     eax,r11d
+        lea     esi,[1518500249+rsi*1+r14]
+        add     esi,ecx
+        xor     eax,r13d
+        rol     r11d,30
+        add     esi,eax
+        xor     ebp,DWORD[rsp]
+        mov     eax,r12d
+        mov     DWORD[60+rsp],edx
+        mov     ecx,esi
+        xor     ebp,DWORD[8+rsp]
+        xor     eax,r11d
+        rol     ecx,5
+        xor     ebp,DWORD[32+rsp]
+        and     eax,edi
+        lea     r13d,[1518500249+r13*1+rdx]
+        rol     edi,30
+        xor     eax,r12d
+        add     r13d,ecx
+        rol     ebp,1
+        add     r13d,eax
+        xor     r14d,DWORD[4+rsp]
+        mov     eax,r11d
+        mov     DWORD[rsp],ebp
+        mov     ecx,r13d
+        xor     r14d,DWORD[12+rsp]
+        xor     eax,edi
+        rol     ecx,5
+        xor     r14d,DWORD[36+rsp]
+        and     eax,esi
+        lea     r12d,[1518500249+r12*1+rbp]
+        rol     esi,30
+        xor     eax,r11d
+        add     r12d,ecx
+        rol     r14d,1
+        add     r12d,eax
+        xor     edx,DWORD[8+rsp]
+        mov     eax,edi
+        mov     DWORD[4+rsp],r14d
+        mov     ecx,r12d
+        xor     edx,DWORD[16+rsp]
+        xor     eax,esi
+        rol     ecx,5
+        xor     edx,DWORD[40+rsp]
+        and     eax,r13d
+        lea     r11d,[1518500249+r11*1+r14]
+        rol     r13d,30
+        xor     eax,edi
+        add     r11d,ecx
+        rol     edx,1
+        add     r11d,eax
+        xor     ebp,DWORD[12+rsp]
+        mov     eax,esi
+        mov     DWORD[8+rsp],edx
+        mov     ecx,r11d
+        xor     ebp,DWORD[20+rsp]
+        xor     eax,r13d
+        rol     ecx,5
+        xor     ebp,DWORD[44+rsp]
+        and     eax,r12d
+        lea     edi,[1518500249+rdi*1+rdx]
+        rol     r12d,30
+        xor     eax,esi
+        add     edi,ecx
+        rol     ebp,1
+        add     edi,eax
+        xor     r14d,DWORD[16+rsp]
+        mov     eax,r13d
+        mov     DWORD[12+rsp],ebp
+        mov     ecx,edi
+        xor     r14d,DWORD[24+rsp]
+        xor     eax,r12d
+        rol     ecx,5
+        xor     r14d,DWORD[48+rsp]
+        and     eax,r11d
+        lea     esi,[1518500249+rsi*1+rbp]
+        rol     r11d,30
+        xor     eax,r13d
+        add     esi,ecx
+        rol     r14d,1
+        add     esi,eax
+        xor     edx,DWORD[20+rsp]
+        mov     eax,edi
+        mov     DWORD[16+rsp],r14d
+        mov     ecx,esi
+        xor     edx,DWORD[28+rsp]
+        xor     eax,r12d
+        rol     ecx,5
+        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[24+rsp]
+        mov     eax,esi
+        mov     DWORD[20+rsp],edx
+        mov     ecx,r13d
+        xor     ebp,DWORD[32+rsp]
+        xor     eax,r11d
+        rol     ecx,5
+        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[28+rsp]
+        mov     eax,r13d
+        mov     DWORD[24+rsp],ebp
+        mov     ecx,r12d
+        xor     r14d,DWORD[36+rsp]
+        xor     eax,edi
+        rol     ecx,5
+        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[32+rsp]
+        mov     eax,r12d
+        mov     DWORD[28+rsp],r14d
+        mov     ecx,r11d
+        xor     edx,DWORD[40+rsp]
+        xor     eax,esi
+        rol     ecx,5
+        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[36+rsp]
+        mov     eax,r11d
+        mov     DWORD[32+rsp],edx
+        mov     ecx,edi
+        xor     ebp,DWORD[44+rsp]
+        xor     eax,r13d
+        rol     ecx,5
+        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[40+rsp]
+        mov     eax,edi
+        mov     DWORD[36+rsp],ebp
+        mov     ecx,esi
+        xor     r14d,DWORD[48+rsp]
+        xor     eax,r12d
+        rol     ecx,5
+        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[44+rsp]
+        mov     eax,esi
+        mov     DWORD[40+rsp],r14d
+        mov     ecx,r13d
+        xor     edx,DWORD[52+rsp]
+        xor     eax,r11d
+        rol     ecx,5
+        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[48+rsp]
+        mov     eax,r13d
+        mov     DWORD[44+rsp],edx
+        mov     ecx,r12d
+        xor     ebp,DWORD[56+rsp]
+        xor     eax,edi
+        rol     ecx,5
+        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[52+rsp]
+        mov     eax,r12d
+        mov     DWORD[48+rsp],ebp
+        mov     ecx,r11d
+        xor     r14d,DWORD[60+rsp]
+        xor     eax,esi
+        rol     ecx,5
+        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[56+rsp]
+        mov     eax,r11d
+        mov     DWORD[52+rsp],r14d
+        mov     ecx,edi
+        xor     edx,DWORD[rsp]
+        xor     eax,r13d
+        rol     ecx,5
+        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[60+rsp]
+        mov     eax,edi
+        mov     DWORD[56+rsp],edx
+        mov     ecx,esi
+        xor     ebp,DWORD[4+rsp]
+        xor     eax,r12d
+        rol     ecx,5
+        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[rsp]
+        mov     eax,esi
+        mov     DWORD[60+rsp],ebp
+        mov     ecx,r13d
+        xor     r14d,DWORD[8+rsp]
+        xor     eax,r11d
+        rol     ecx,5
+        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[4+rsp]
+        mov     eax,r13d
+        mov     DWORD[rsp],r14d
+        mov     ecx,r12d
+        xor     edx,DWORD[12+rsp]
+        xor     eax,edi
+        rol     ecx,5
+        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[8+rsp]
+        mov     eax,r12d
+        mov     DWORD[4+rsp],edx
+        mov     ecx,r11d
+        xor     ebp,DWORD[16+rsp]
+        xor     eax,esi
+        rol     ecx,5
+        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[12+rsp]
+        mov     eax,r11d
+        mov     DWORD[8+rsp],ebp
+        mov     ecx,edi
+        xor     r14d,DWORD[20+rsp]
+        xor     eax,r13d
+        rol     ecx,5
+        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[16+rsp]
+        mov     eax,edi
+        mov     DWORD[12+rsp],r14d
+        mov     ecx,esi
+        xor     edx,DWORD[24+rsp]
+        xor     eax,r12d
+        rol     ecx,5
+        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[20+rsp]
+        mov     eax,esi
+        mov     DWORD[16+rsp],edx
+        mov     ecx,r13d
+        xor     ebp,DWORD[28+rsp]
+        xor     eax,r11d
+        rol     ecx,5
+        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[24+rsp]
+        mov     eax,r13d
+        mov     DWORD[20+rsp],ebp
+        mov     ecx,r12d
+        xor     r14d,DWORD[32+rsp]
+        xor     eax,edi
+        rol     ecx,5
+        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[28+rsp]
+        mov     eax,r12d
+        mov     DWORD[24+rsp],r14d
+        mov     ecx,r11d
+        xor     edx,DWORD[36+rsp]
+        xor     eax,esi
+        rol     ecx,5
+        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[32+rsp]
+        mov     eax,r11d
+        mov     DWORD[28+rsp],edx
+        mov     ecx,edi
+        xor     ebp,DWORD[40+rsp]
+        xor     eax,r13d
+        rol     ecx,5
+        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[36+rsp]
+        mov     eax,r12d
+        mov     DWORD[32+rsp],ebp
+        mov     ebx,r12d
+        xor     r14d,DWORD[44+rsp]
+        and     eax,r11d
+        mov     ecx,esi
+        xor     r14d,DWORD[4+rsp]
+        lea     r13d,[((-1894007588))+r13*1+rbp]
+        xor     ebx,r11d
+        rol     ecx,5
+        add     r13d,eax
+        rol     r14d,1
+        and     ebx,edi
+        add     r13d,ecx
+        rol     edi,30
+        add     r13d,ebx
+        xor     edx,DWORD[40+rsp]
+        mov     eax,r11d
+        mov     DWORD[36+rsp],r14d
+        mov     ebx,r11d
+        xor     edx,DWORD[48+rsp]
+        and     eax,edi
+        mov     ecx,r13d
+        xor     edx,DWORD[8+rsp]
+        lea     r12d,[((-1894007588))+r12*1+r14]
+        xor     ebx,edi
+        rol     ecx,5
+        add     r12d,eax
+        rol     edx,1
+        and     ebx,esi
+        add     r12d,ecx
+        rol     esi,30
+        add     r12d,ebx
+        xor     ebp,DWORD[44+rsp]
+        mov     eax,edi
+        mov     DWORD[40+rsp],edx
+        mov     ebx,edi
+        xor     ebp,DWORD[52+rsp]
+        and     eax,esi
+        mov     ecx,r12d
+        xor     ebp,DWORD[12+rsp]
+        lea     r11d,[((-1894007588))+r11*1+rdx]
+        xor     ebx,esi
+        rol     ecx,5
+        add     r11d,eax
+        rol     ebp,1
+        and     ebx,r13d
+        add     r11d,ecx
+        rol     r13d,30
+        add     r11d,ebx
+        xor     r14d,DWORD[48+rsp]
+        mov     eax,esi
+        mov     DWORD[44+rsp],ebp
+        mov     ebx,esi
+        xor     r14d,DWORD[56+rsp]
+        and     eax,r13d
+        mov     ecx,r11d
+        xor     r14d,DWORD[16+rsp]
+        lea     edi,[((-1894007588))+rdi*1+rbp]
+        xor     ebx,r13d
+        rol     ecx,5
+        add     edi,eax
+        rol     r14d,1
+        and     ebx,r12d
+        add     edi,ecx
+        rol     r12d,30
+        add     edi,ebx
+        xor     edx,DWORD[52+rsp]
+        mov     eax,r13d
+        mov     DWORD[48+rsp],r14d
+        mov     ebx,r13d
+        xor     edx,DWORD[60+rsp]
+        and     eax,r12d
+        mov     ecx,edi
+        xor     edx,DWORD[20+rsp]
+        lea     esi,[((-1894007588))+rsi*1+r14]
+        xor     ebx,r12d
+        rol     ecx,5
+        add     esi,eax
+        rol     edx,1
+        and     ebx,r11d
+        add     esi,ecx
+        rol     r11d,30
+        add     esi,ebx
+        xor     ebp,DWORD[56+rsp]
+        mov     eax,r12d
+        mov     DWORD[52+rsp],edx
+        mov     ebx,r12d
+        xor     ebp,DWORD[rsp]
+        and     eax,r11d
+        mov     ecx,esi
+        xor     ebp,DWORD[24+rsp]
+        lea     r13d,[((-1894007588))+r13*1+rdx]
+        xor     ebx,r11d
+        rol     ecx,5
+        add     r13d,eax
+        rol     ebp,1
+        and     ebx,edi
+        add     r13d,ecx
+        rol     edi,30
+        add     r13d,ebx
+        xor     r14d,DWORD[60+rsp]
+        mov     eax,r11d
+        mov     DWORD[56+rsp],ebp
+        mov     ebx,r11d
+        xor     r14d,DWORD[4+rsp]
+        and     eax,edi
+        mov     ecx,r13d
+        xor     r14d,DWORD[28+rsp]
+        lea     r12d,[((-1894007588))+r12*1+rbp]
+        xor     ebx,edi
+        rol     ecx,5
+        add     r12d,eax
+        rol     r14d,1
+        and     ebx,esi
+        add     r12d,ecx
+        rol     esi,30
+        add     r12d,ebx
+        xor     edx,DWORD[rsp]
+        mov     eax,edi
+        mov     DWORD[60+rsp],r14d
+        mov     ebx,edi
+        xor     edx,DWORD[8+rsp]
+        and     eax,esi
+        mov     ecx,r12d
+        xor     edx,DWORD[32+rsp]
+        lea     r11d,[((-1894007588))+r11*1+r14]
+        xor     ebx,esi
+        rol     ecx,5
+        add     r11d,eax
+        rol     edx,1
+        and     ebx,r13d
+        add     r11d,ecx
+        rol     r13d,30
+        add     r11d,ebx
+        xor     ebp,DWORD[4+rsp]
+        mov     eax,esi
+        mov     DWORD[rsp],edx
+        mov     ebx,esi
+        xor     ebp,DWORD[12+rsp]
+        and     eax,r13d
+        mov     ecx,r11d
+        xor     ebp,DWORD[36+rsp]
+        lea     edi,[((-1894007588))+rdi*1+rdx]
+        xor     ebx,r13d
+        rol     ecx,5
+        add     edi,eax
+        rol     ebp,1
+        and     ebx,r12d
+        add     edi,ecx
+        rol     r12d,30
+        add     edi,ebx
+        xor     r14d,DWORD[8+rsp]
+        mov     eax,r13d
+        mov     DWORD[4+rsp],ebp
+        mov     ebx,r13d
+        xor     r14d,DWORD[16+rsp]
+        and     eax,r12d
+        mov     ecx,edi
+        xor     r14d,DWORD[40+rsp]
+        lea     esi,[((-1894007588))+rsi*1+rbp]
+        xor     ebx,r12d
+        rol     ecx,5
+        add     esi,eax
+        rol     r14d,1
+        and     ebx,r11d
+        add     esi,ecx
+        rol     r11d,30
+        add     esi,ebx
+        xor     edx,DWORD[12+rsp]
+        mov     eax,r12d
+        mov     DWORD[8+rsp],r14d
+        mov     ebx,r12d
+        xor     edx,DWORD[20+rsp]
+        and     eax,r11d
+        mov     ecx,esi
+        xor     edx,DWORD[44+rsp]
+        lea     r13d,[((-1894007588))+r13*1+r14]
+        xor     ebx,r11d
+        rol     ecx,5
+        add     r13d,eax
+        rol     edx,1
+        and     ebx,edi
+        add     r13d,ecx
+        rol     edi,30
+        add     r13d,ebx
+        xor     ebp,DWORD[16+rsp]
+        mov     eax,r11d
+        mov     DWORD[12+rsp],edx
+        mov     ebx,r11d
+        xor     ebp,DWORD[24+rsp]
+        and     eax,edi
+        mov     ecx,r13d
+        xor     ebp,DWORD[48+rsp]
+        lea     r12d,[((-1894007588))+r12*1+rdx]
+        xor     ebx,edi
+        rol     ecx,5
+        add     r12d,eax
+        rol     ebp,1
+        and     ebx,esi
+        add     r12d,ecx
+        rol     esi,30
+        add     r12d,ebx
+        xor     r14d,DWORD[20+rsp]
+        mov     eax,edi
+        mov     DWORD[16+rsp],ebp
+        mov     ebx,edi
+        xor     r14d,DWORD[28+rsp]
+        and     eax,esi
+        mov     ecx,r12d
+        xor     r14d,DWORD[52+rsp]
+        lea     r11d,[((-1894007588))+r11*1+rbp]
+        xor     ebx,esi
+        rol     ecx,5
+        add     r11d,eax
+        rol     r14d,1
+        and     ebx,r13d
+        add     r11d,ecx
+        rol     r13d,30
+        add     r11d,ebx
+        xor     edx,DWORD[24+rsp]
+        mov     eax,esi
+        mov     DWORD[20+rsp],r14d
+        mov     ebx,esi
+        xor     edx,DWORD[32+rsp]
+        and     eax,r13d
+        mov     ecx,r11d
+        xor     edx,DWORD[56+rsp]
+        lea     edi,[((-1894007588))+rdi*1+r14]
+        xor     ebx,r13d
+        rol     ecx,5
+        add     edi,eax
+        rol     edx,1
+        and     ebx,r12d
+        add     edi,ecx
+        rol     r12d,30
+        add     edi,ebx
+        xor     ebp,DWORD[28+rsp]
+        mov     eax,r13d
+        mov     DWORD[24+rsp],edx
+        mov     ebx,r13d
+        xor     ebp,DWORD[36+rsp]
+        and     eax,r12d
+        mov     ecx,edi
+        xor     ebp,DWORD[60+rsp]
+        lea     esi,[((-1894007588))+rsi*1+rdx]
+        xor     ebx,r12d
+        rol     ecx,5
+        add     esi,eax
+        rol     ebp,1
+        and     ebx,r11d
+        add     esi,ecx
+        rol     r11d,30
+        add     esi,ebx
+        xor     r14d,DWORD[32+rsp]
+        mov     eax,r12d
+        mov     DWORD[28+rsp],ebp
+        mov     ebx,r12d
+        xor     r14d,DWORD[40+rsp]
+        and     eax,r11d
+        mov     ecx,esi
+        xor     r14d,DWORD[rsp]
+        lea     r13d,[((-1894007588))+r13*1+rbp]
+        xor     ebx,r11d
+        rol     ecx,5
+        add     r13d,eax
+        rol     r14d,1
+        and     ebx,edi
+        add     r13d,ecx
+        rol     edi,30
+        add     r13d,ebx
+        xor     edx,DWORD[36+rsp]
+        mov     eax,r11d
+        mov     DWORD[32+rsp],r14d
+        mov     ebx,r11d
+        xor     edx,DWORD[44+rsp]
+        and     eax,edi
+        mov     ecx,r13d
+        xor     edx,DWORD[4+rsp]
+        lea     r12d,[((-1894007588))+r12*1+r14]
+        xor     ebx,edi
+        rol     ecx,5
+        add     r12d,eax
+        rol     edx,1
+        and     ebx,esi
+        add     r12d,ecx
+        rol     esi,30
+        add     r12d,ebx
+        xor     ebp,DWORD[40+rsp]
+        mov     eax,edi
+        mov     DWORD[36+rsp],edx
+        mov     ebx,edi
+        xor     ebp,DWORD[48+rsp]
+        and     eax,esi
+        mov     ecx,r12d
+        xor     ebp,DWORD[8+rsp]
+        lea     r11d,[((-1894007588))+r11*1+rdx]
+        xor     ebx,esi
+        rol     ecx,5
+        add     r11d,eax
+        rol     ebp,1
+        and     ebx,r13d
+        add     r11d,ecx
+        rol     r13d,30
+        add     r11d,ebx
+        xor     r14d,DWORD[44+rsp]
+        mov     eax,esi
+        mov     DWORD[40+rsp],ebp
+        mov     ebx,esi
+        xor     r14d,DWORD[52+rsp]
+        and     eax,r13d
+        mov     ecx,r11d
+        xor     r14d,DWORD[12+rsp]
+        lea     edi,[((-1894007588))+rdi*1+rbp]
+        xor     ebx,r13d
+        rol     ecx,5
+        add     edi,eax
+        rol     r14d,1
+        and     ebx,r12d
+        add     edi,ecx
+        rol     r12d,30
+        add     edi,ebx
+        xor     edx,DWORD[48+rsp]
+        mov     eax,r13d
+        mov     DWORD[44+rsp],r14d
+        mov     ebx,r13d
+        xor     edx,DWORD[56+rsp]
+        and     eax,r12d
+        mov     ecx,edi
+        xor     edx,DWORD[16+rsp]
+        lea     esi,[((-1894007588))+rsi*1+r14]
+        xor     ebx,r12d
+        rol     ecx,5
+        add     esi,eax
+        rol     edx,1
+        and     ebx,r11d
+        add     esi,ecx
+        rol     r11d,30
+        add     esi,ebx
+        xor     ebp,DWORD[52+rsp]
+        mov     eax,edi
+        mov     DWORD[48+rsp],edx
+        mov     ecx,esi
+        xor     ebp,DWORD[60+rsp]
+        xor     eax,r12d
+        rol     ecx,5
+        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[56+rsp]
+        mov     eax,esi
+        mov     DWORD[52+rsp],ebp
+        mov     ecx,r13d
+        xor     r14d,DWORD[rsp]
+        xor     eax,r11d
+        rol     ecx,5
+        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[60+rsp]
+        mov     eax,r13d
+        mov     DWORD[56+rsp],r14d
+        mov     ecx,r12d
+        xor     edx,DWORD[4+rsp]
+        xor     eax,edi
+        rol     ecx,5
+        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[rsp]
+        mov     eax,r12d
+        mov     DWORD[60+rsp],edx
+        mov     ecx,r11d
+        xor     ebp,DWORD[8+rsp]
+        xor     eax,esi
+        rol     ecx,5
+        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[4+rsp]
+        mov     eax,r11d
+        mov     DWORD[rsp],ebp
+        mov     ecx,edi
+        xor     r14d,DWORD[12+rsp]
+        xor     eax,r13d
+        rol     ecx,5
+        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[8+rsp]
+        mov     eax,edi
+        mov     DWORD[4+rsp],r14d
+        mov     ecx,esi
+        xor     edx,DWORD[16+rsp]
+        xor     eax,r12d
+        rol     ecx,5
+        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[12+rsp]
+        mov     eax,esi
+        mov     DWORD[8+rsp],edx
+        mov     ecx,r13d
+        xor     ebp,DWORD[20+rsp]
+        xor     eax,r11d
+        rol     ecx,5
+        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[16+rsp]
+        mov     eax,r13d
+        mov     DWORD[12+rsp],ebp
+        mov     ecx,r12d
+        xor     r14d,DWORD[24+rsp]
+        xor     eax,edi
+        rol     ecx,5
+        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[20+rsp]
+        mov     eax,r12d
+        mov     DWORD[16+rsp],r14d
+        mov     ecx,r11d
+        xor     edx,DWORD[28+rsp]
+        xor     eax,esi
+        rol     ecx,5
+        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[24+rsp]
+        mov     eax,r11d
+        mov     DWORD[20+rsp],edx
+        mov     ecx,edi
+        xor     ebp,DWORD[32+rsp]
+        xor     eax,r13d
+        rol     ecx,5
+        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[28+rsp]
+        mov     eax,edi
+        mov     DWORD[24+rsp],ebp
+        mov     ecx,esi
+        xor     r14d,DWORD[36+rsp]
+        xor     eax,r12d
+        rol     ecx,5
+        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[32+rsp]
+        mov     eax,esi
+        mov     DWORD[28+rsp],r14d
+        mov     ecx,r13d
+        xor     edx,DWORD[40+rsp]
+        xor     eax,r11d
+        rol     ecx,5
+        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[36+rsp]
+        mov     eax,r13d
+
+        mov     ecx,r12d
+        xor     ebp,DWORD[44+rsp]
+        xor     eax,edi
+        rol     ecx,5
+        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[40+rsp]
+        mov     eax,r12d
+
+        mov     ecx,r11d
+        xor     r14d,DWORD[48+rsp]
+        xor     eax,esi
+        rol     ecx,5
+        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[44+rsp]
+        mov     eax,r11d
+
+        mov     ecx,edi
+        xor     edx,DWORD[52+rsp]
+        xor     eax,r13d
+        rol     ecx,5
+        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[48+rsp]
+        mov     eax,edi
+
+        mov     ecx,esi
+        xor     ebp,DWORD[56+rsp]
+        xor     eax,r12d
+        rol     ecx,5
+        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[52+rsp]
+        mov     eax,esi
+
+        mov     ecx,r13d
+        xor     r14d,DWORD[60+rsp]
+        xor     eax,r11d
+        rol     ecx,5
+        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[56+rsp]
+        mov     eax,r13d
+
+        mov     ecx,r12d
+        xor     edx,DWORD[rsp]
+        xor     eax,edi
+        rol     ecx,5
+        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[60+rsp]
+        mov     eax,r12d
+
+        mov     ecx,r11d
+        xor     ebp,DWORD[4+rsp]
+        xor     eax,esi
+        rol     ecx,5
+        xor     ebp,DWORD[28+rsp]
+        lea     edi,[((-899497514))+rdi*1+rdx]
+        xor     eax,r13d
+        add     edi,ecx
+        rol     r12d,30
+        add     edi,eax
+        rol     ebp,1
+        mov     eax,r11d
+        mov     ecx,edi
+        xor     eax,r13d
+        lea     esi,[((-899497514))+rsi*1+rbp]
+        rol     ecx,5
+        xor     eax,r12d
+        add     esi,ecx
+        rol     r11d,30
+        add     esi,eax
+        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,[64+r9]
+        jnz     NEAR $L$loop
+
+        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:
+
+ALIGN   32
+sha1_block_data_order_shaext:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_sha1_block_data_order_shaext:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+
+
+_shaext_shortcut:
+
+        lea     rsp,[((-72))+rsp]
+        movaps  XMMWORD[(-8-64)+rax],xmm6
+        movaps  XMMWORD[(-8-48)+rax],xmm7
+        movaps  XMMWORD[(-8-32)+rax],xmm8
+        movaps  XMMWORD[(-8-16)+rax],xmm9
+$L$prologue_shaext:
+        movdqu  xmm0,XMMWORD[rdi]
+        movd    xmm1,DWORD[16+rdi]
+        movdqa  xmm3,XMMWORD[((K_XX_XX+160))]
+
+        movdqu  xmm4,XMMWORD[rsi]
+        pshufd  xmm0,xmm0,27
+        movdqu  xmm5,XMMWORD[16+rsi]
+        pshufd  xmm1,xmm1,27
+        movdqu  xmm6,XMMWORD[32+rsi]
+DB      102,15,56,0,227
+        movdqu  xmm7,XMMWORD[48+rsi]
+DB      102,15,56,0,235
+DB      102,15,56,0,243
+        movdqa  xmm9,xmm1
+DB      102,15,56,0,251
+        jmp     NEAR $L$oop_shaext
+
+ALIGN   16
+$L$oop_shaext:
+        dec     rdx
+        lea     r8,[64+rsi]
+        paddd   xmm1,xmm4
+        cmovne  rsi,r8
+        movdqa  xmm8,xmm0
+DB      15,56,201,229
+        movdqa  xmm2,xmm0
+DB      15,58,204,193,0
+DB      15,56,200,213
+        pxor    xmm4,xmm6
+DB      15,56,201,238
+DB      15,56,202,231
+
+        movdqa  xmm1,xmm0
+DB      15,58,204,194,0
+DB      15,56,200,206
+        pxor    xmm5,xmm7
+DB      15,56,202,236
+DB      15,56,201,247
+        movdqa  xmm2,xmm0
+DB      15,58,204,193,0
+DB      15,56,200,215
+        pxor    xmm6,xmm4
+DB      15,56,201,252
+DB      15,56,202,245
+
+        movdqa  xmm1,xmm0
+DB      15,58,204,194,0
+DB      15,56,200,204
+        pxor    xmm7,xmm5
+DB      15,56,202,254
+DB      15,56,201,229
+        movdqa  xmm2,xmm0
+DB      15,58,204,193,0
+DB      15,56,200,213
+        pxor    xmm4,xmm6
+DB      15,56,201,238
+DB      15,56,202,231
+
+        movdqa  xmm1,xmm0
+DB      15,58,204,194,1
+DB      15,56,200,206
+        pxor    xmm5,xmm7
+DB      15,56,202,236
+DB      15,56,201,247
+        movdqa  xmm2,xmm0
+DB      15,58,204,193,1
+DB      15,56,200,215
+        pxor    xmm6,xmm4
+DB      15,56,201,252
+DB      15,56,202,245
+
+        movdqa  xmm1,xmm0
+DB      15,58,204,194,1
+DB      15,56,200,204
+        pxor    xmm7,xmm5
+DB      15,56,202,254
+DB      15,56,201,229
+        movdqa  xmm2,xmm0
+DB      15,58,204,193,1
+DB      15,56,200,213
+        pxor    xmm4,xmm6
+DB      15,56,201,238
+DB      15,56,202,231
+
+        movdqa  xmm1,xmm0
+DB      15,58,204,194,1
+DB      15,56,200,206
+        pxor    xmm5,xmm7
+DB      15,56,202,236
+DB      15,56,201,247
+        movdqa  xmm2,xmm0
+DB      15,58,204,193,2
+DB      15,56,200,215
+        pxor    xmm6,xmm4
+DB      15,56,201,252
+DB      15,56,202,245
+
+        movdqa  xmm1,xmm0
+DB      15,58,204,194,2
+DB      15,56,200,204
+        pxor    xmm7,xmm5
+DB      15,56,202,254
+DB      15,56,201,229
+        movdqa  xmm2,xmm0
+DB      15,58,204,193,2
+DB      15,56,200,213
+        pxor    xmm4,xmm6
+DB      15,56,201,238
+DB      15,56,202,231
+
+        movdqa  xmm1,xmm0
+DB      15,58,204,194,2
+DB      15,56,200,206
+        pxor    xmm5,xmm7
+DB      15,56,202,236
+DB      15,56,201,247
+        movdqa  xmm2,xmm0
+DB      15,58,204,193,2
+DB      15,56,200,215
+        pxor    xmm6,xmm4
+DB      15,56,201,252
+DB      15,56,202,245
+
+        movdqa  xmm1,xmm0
+DB      15,58,204,194,3
+DB      15,56,200,204
+        pxor    xmm7,xmm5
+DB      15,56,202,254
+        movdqu  xmm4,XMMWORD[rsi]
+        movdqa  xmm2,xmm0
+DB      15,58,204,193,3
+DB      15,56,200,213
+        movdqu  xmm5,XMMWORD[16+rsi]
+DB      102,15,56,0,227
+
+        movdqa  xmm1,xmm0
+DB      15,58,204,194,3
+DB      15,56,200,206
+        movdqu  xmm6,XMMWORD[32+rsi]
+DB      102,15,56,0,235
+
+        movdqa  xmm2,xmm0
+DB      15,58,204,193,3
+DB      15,56,200,215
+        movdqu  xmm7,XMMWORD[48+rsi]
+DB      102,15,56,0,243
+
+        movdqa  xmm1,xmm0
+DB      15,58,204,194,3
+DB      65,15,56,200,201
+DB      102,15,56,0,251
+
+        paddd   xmm0,xmm8
+        movdqa  xmm9,xmm1
+
+        jnz     NEAR $L$oop_shaext
+
+        pshufd  xmm0,xmm0,27
+        pshufd  xmm1,xmm1,27
+        movdqu  XMMWORD[rdi],xmm0
+        movd    DWORD[16+rdi],xmm1
+        movaps  xmm6,XMMWORD[((-8-64))+rax]
+        movaps  xmm7,XMMWORD[((-8-48))+rax]
+        movaps  xmm8,XMMWORD[((-8-32))+rax]
+        movaps  xmm9,XMMWORD[((-8-16))+rax]
+        mov     rsp,rax
+$L$epilogue_shaext:
+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
+        mov     rsi,QWORD[16+rsp]
+        DB      0F3h,0C3h               ;repret
+
+$L$SEH_end_sha1_block_data_order_shaext:
+
+ALIGN   16
+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:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+
+
+_ssse3_shortcut:
+
+        mov     r11,rsp
+
+        push    rbx
+
+        push    rbp
+
+        push    r12
+
+        push    r13
+
+        push    r14
+
+        lea     rsp,[((-160))+rsp]
+        movaps  XMMWORD[(-40-96)+r11],xmm6
+        movaps  XMMWORD[(-40-80)+r11],xmm7
+        movaps  XMMWORD[(-40-64)+r11],xmm8
+        movaps  XMMWORD[(-40-48)+r11],xmm9
+        movaps  XMMWORD[(-40-32)+r11],xmm10
+        movaps  XMMWORD[(-40-16)+r11],xmm11
+$L$prologue_ssse3:
+        and     rsp,-64
+        mov     r8,rdi
+        mov     r9,rsi
+        mov     r10,rdx
+
+        shl     r10,6
+        add     r10,r9
+        lea     r14,[((K_XX_XX+64))]
+
+        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[16+r8]
+        mov     edi,ecx
+        xor     edi,edx
+        and     esi,edi
+
+        movdqa  xmm6,XMMWORD[64+r14]
+        movdqa  xmm9,XMMWORD[((-64))+r14]
+        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
+        add     r9,64
+        paddd   xmm0,xmm9
+DB      102,15,56,0,222
+        paddd   xmm1,xmm9
+        paddd   xmm2,xmm9
+        movdqa  XMMWORD[rsp],xmm0
+        psubd   xmm0,xmm9
+        movdqa  XMMWORD[16+rsp],xmm1
+        psubd   xmm1,xmm9
+        movdqa  XMMWORD[32+rsp],xmm2
+        psubd   xmm2,xmm9
+        jmp     NEAR $L$oop_ssse3
+ALIGN   16
+$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[rsp]
+        punpcklqdq      xmm4,xmm1
+        xor     ebx,ecx
+        rol     eax,5
+        add     ebp,esi
+        psrldq  xmm8,4
+        and     edi,ebx
+        xor     ebx,ecx
+        pxor    xmm4,xmm0
+        add     ebp,eax
+        ror     eax,7
+        pxor    xmm8,xmm2
+        xor     edi,ecx
+        mov     esi,ebp
+        add     edx,DWORD[4+rsp]
+        pxor    xmm4,xmm8
+        xor     eax,ebx
+        rol     ebp,5
+        movdqa  XMMWORD[48+rsp],xmm9
+        add     edx,edi
+        and     esi,eax
+        movdqa  xmm10,xmm4
+        xor     eax,ebx
+        add     edx,ebp
+        ror     ebp,7
+        movdqa  xmm8,xmm4
+        xor     esi,ebx
+        pslldq  xmm10,12
+        paddd   xmm4,xmm4
+        mov     edi,edx
+        add     ecx,DWORD[8+rsp]
+        psrld   xmm8,31
+        xor     ebp,eax
+        rol     edx,5
+        add     ecx,esi
+        movdqa  xmm9,xmm10
+        and     edi,ebp
+        xor     ebp,eax
+        psrld   xmm10,30
+        add     ecx,edx
+        ror     edx,7
+        por     xmm4,xmm8
+        xor     edi,eax
+        mov     esi,ecx
+        add     ebx,DWORD[12+rsp]
+        pslld   xmm9,2
+        pxor    xmm4,xmm10
+        xor     edx,ebp
+        movdqa  xmm10,XMMWORD[((-64))+r14]
+        rol     ecx,5
+        add     ebx,edi
+        and     esi,edx
+        pxor    xmm4,xmm9
+        xor     edx,ebp
+        add     ebx,ecx
+        ror     ecx,7
+        pshufd  xmm5,xmm1,238
+        xor     esi,ebp
+        movdqa  xmm9,xmm4
+        paddd   xmm10,xmm4
+        mov     edi,ebx
+        add     eax,DWORD[16+rsp]
+        punpcklqdq      xmm5,xmm2
+        xor     ecx,edx
+        rol     ebx,5
+        add     eax,esi
+        psrldq  xmm9,4
+        and     edi,ecx
+        xor     ecx,edx
+        pxor    xmm5,xmm1
+        add     eax,ebx
+        ror     ebx,7
+        pxor    xmm9,xmm3
+        xor     edi,edx
+        mov     esi,eax
+        add     ebp,DWORD[20+rsp]
+        pxor    xmm5,xmm9
+        xor     ebx,ecx
+        rol     eax,5
+        movdqa  XMMWORD[rsp],xmm10
+        add     ebp,edi
+        and     esi,ebx
+        movdqa  xmm8,xmm5
+        xor     ebx,ecx
+        add     ebp,eax
+        ror     eax,7
+        movdqa  xmm9,xmm5
+        xor     esi,ecx
+        pslldq  xmm8,12
+        paddd   xmm5,xmm5
+        mov     edi,ebp
+        add     edx,DWORD[24+rsp]
+        psrld   xmm9,31
+        xor     eax,ebx
+        rol     ebp,5
+        add     edx,esi
+        movdqa  xmm10,xmm8
+        and     edi,eax
+        xor     eax,ebx
+        psrld   xmm8,30
+        add     edx,ebp
+        ror     ebp,7
+        por     xmm5,xmm9
+        xor     edi,ebx
+        mov     esi,edx
+        add     ecx,DWORD[28+rsp]
+        pslld   xmm10,2
+        pxor    xmm5,xmm8
+        xor     ebp,eax
+        movdqa  xmm8,XMMWORD[((-32))+r14]
+        rol     edx,5
+        add     ecx,edi
+        and     esi,ebp
+        pxor    xmm5,xmm10
+        xor     ebp,eax
+        add     ecx,edx
+        ror     edx,7
+        pshufd  xmm6,xmm2,238
+        xor     esi,eax
+        movdqa  xmm10,xmm5
+        paddd   xmm8,xmm5
+        mov     edi,ecx
+        add     ebx,DWORD[32+rsp]
+        punpcklqdq      xmm6,xmm3
+        xor     edx,ebp
+        rol     ecx,5
+        add     ebx,esi
+        psrldq  xmm10,4
+        and     edi,edx
+        xor     edx,ebp
+        pxor    xmm6,xmm2
+        add     ebx,ecx
+        ror     ecx,7
+        pxor    xmm10,xmm4
+        xor     edi,ebp
+        mov     esi,ebx
+        add     eax,DWORD[36+rsp]
+        pxor    xmm6,xmm10
+        xor     ecx,edx
+        rol     ebx,5
+        movdqa  XMMWORD[16+rsp],xmm8
+        add     eax,edi
+        and     esi,ecx
+        movdqa  xmm9,xmm6
+        xor     ecx,edx
+        add     eax,ebx
+        ror     ebx,7
+        movdqa  xmm10,xmm6
+        xor     esi,edx
+        pslldq  xmm9,12
+        paddd   xmm6,xmm6
+        mov     edi,eax
+        add     ebp,DWORD[40+rsp]
+        psrld   xmm10,31
+        xor     ebx,ecx
+        rol     eax,5
+        add     ebp,esi
+        movdqa  xmm8,xmm9
+        and     edi,ebx
+        xor     ebx,ecx
+        psrld   xmm9,30
+        add     ebp,eax
+        ror     eax,7
+        por     xmm6,xmm10
+        xor     edi,ecx
+        mov     esi,ebp
+        add     edx,DWORD[44+rsp]
+        pslld   xmm8,2
+        pxor    xmm6,xmm9
+        xor     eax,ebx
+        movdqa  xmm9,XMMWORD[((-32))+r14]
+        rol     ebp,5
+        add     edx,edi
+        and     esi,eax
+        pxor    xmm6,xmm8
+        xor     eax,ebx
+        add     edx,ebp
+        ror     ebp,7
+        pshufd  xmm7,xmm3,238
+        xor     esi,ebx
+        movdqa  xmm8,xmm6
+        paddd   xmm9,xmm6
+        mov     edi,edx
+        add     ecx,DWORD[48+rsp]
+        punpcklqdq      xmm7,xmm4
+        xor     ebp,eax
+        rol     edx,5
+        add     ecx,esi
+        psrldq  xmm8,4
+        and     edi,ebp
+        xor     ebp,eax
+        pxor    xmm7,xmm3
+        add     ecx,edx
+        ror     edx,7
+        pxor    xmm8,xmm5
+        xor     edi,eax
+        mov     esi,ecx
+        add     ebx,DWORD[52+rsp]
+        pxor    xmm7,xmm8
+        xor     edx,ebp
+        rol     ecx,5
+        movdqa  XMMWORD[32+rsp],xmm9
+        add     ebx,edi
+        and     esi,edx
+        movdqa  xmm10,xmm7
+        xor     edx,ebp
+        add     ebx,ecx
+        ror     ecx,7
+        movdqa  xmm8,xmm7
+        xor     esi,ebp
+        pslldq  xmm10,12
+        paddd   xmm7,xmm7
+        mov     edi,ebx
+        add     eax,DWORD[56+rsp]
+        psrld   xmm8,31
+        xor     ecx,edx
+        rol     ebx,5
+        add     eax,esi
+        movdqa  xmm9,xmm10
+        and     edi,ecx
+        xor     ecx,edx
+        psrld   xmm10,30
+        add     eax,ebx
+        ror     ebx,7
+        por     xmm7,xmm8
+        xor     edi,edx
+        mov     esi,eax
+        add     ebp,DWORD[60+rsp]
+        pslld   xmm9,2
+        pxor    xmm7,xmm10
+        xor     ebx,ecx
+        movdqa  xmm10,XMMWORD[((-32))+r14]
+        rol     eax,5
+        add     ebp,edi
+        and     esi,ebx
+        pxor    xmm7,xmm9
+        pshufd  xmm9,xmm6,238
+        xor     ebx,ecx
+        add     ebp,eax
+        ror     eax,7
+        pxor    xmm0,xmm4
+        xor     esi,ecx
+        mov     edi,ebp
+        add     edx,DWORD[rsp]
+        punpcklqdq      xmm9,xmm7
+        xor     eax,ebx
+        rol     ebp,5
+        pxor    xmm0,xmm1
+        add     edx,esi
+        and     edi,eax
+        movdqa  xmm8,xmm10
+        xor     eax,ebx
+        paddd   xmm10,xmm7
+        add     edx,ebp
+        pxor    xmm0,xmm9
+        ror     ebp,7
+        xor     edi,ebx
+        mov     esi,edx
+        add     ecx,DWORD[4+rsp]
+        movdqa  xmm9,xmm0
+        xor     ebp,eax
+        rol     edx,5
+        movdqa  XMMWORD[48+rsp],xmm10
+        add     ecx,edi
+        and     esi,ebp
+        xor     ebp,eax
+        pslld   xmm0,2
+        add     ecx,edx
+        ror     edx,7
+        psrld   xmm9,30
+        xor     esi,eax
+        mov     edi,ecx
+        add     ebx,DWORD[8+rsp]
+        por     xmm0,xmm9
+        xor     edx,ebp
+        rol     ecx,5
+        pshufd  xmm10,xmm7,238
+        add     ebx,esi
+        and     edi,edx
+        xor     edx,ebp
+        add     ebx,ecx
+        add     eax,DWORD[12+rsp]
+        xor     edi,ebp
+        mov     esi,ebx
+        rol     ebx,5
+        add     eax,edi
+        xor     esi,edx
+        ror     ecx,7
+        add     eax,ebx
+        pxor    xmm1,xmm5
+        add     ebp,DWORD[16+rsp]
+        xor     esi,ecx
+        punpcklqdq      xmm10,xmm0
+        mov     edi,eax
+        rol     eax,5
+        pxor    xmm1,xmm2
+        add     ebp,esi
+        xor     edi,ecx
+        movdqa  xmm9,xmm8
+        ror     ebx,7
+        paddd   xmm8,xmm0
+        add     ebp,eax
+        pxor    xmm1,xmm10
+        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[rsp],xmm8
+        ror     eax,7
+        add     edx,ebp
+        add     ecx,DWORD[24+rsp]
+        pslld   xmm1,2
+        xor     esi,eax
+        mov     edi,edx
+        psrld   xmm10,30
+        rol     edx,5
+        add     ecx,esi
+        xor     edi,eax
+        ror     ebp,7
+        por     xmm1,xmm10
+        add     ecx,edx
+        add     ebx,DWORD[28+rsp]
+        pshufd  xmm8,xmm0,238
+        xor     edi,ebp
+        mov     esi,ecx
+        rol     ecx,5
+        add     ebx,edi
+        xor     esi,ebp
+        ror     edx,7
+        add     ebx,ecx
+        pxor    xmm2,xmm6
+        add     eax,DWORD[32+rsp]
+        xor     esi,edx
+        punpcklqdq      xmm8,xmm1
+        mov     edi,ebx
+        rol     ebx,5
+        pxor    xmm2,xmm3
+        add     eax,esi
+        xor     edi,edx
+        movdqa  xmm10,XMMWORD[r14]
+        ror     ecx,7
+        paddd   xmm9,xmm1
+        add     eax,ebx
+        pxor    xmm2,xmm8
+        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[16+rsp],xmm9
+        ror     ebx,7
+        add     ebp,eax
+        add     edx,DWORD[40+rsp]
+        pslld   xmm2,2
+        xor     esi,ebx
+        mov     edi,ebp
+        psrld   xmm8,30
+        rol     ebp,5
+        add     edx,esi
+        xor     edi,ebx
+        ror     eax,7
+        por     xmm2,xmm8
+        add     edx,ebp
+        add     ecx,DWORD[44+rsp]
+        pshufd  xmm9,xmm1,238
+        xor     edi,eax
+        mov     esi,edx
+        rol     edx,5
+        add     ecx,edi
+        xor     esi,eax
+        ror     ebp,7
+        add     ecx,edx
+        pxor    xmm3,xmm7
+        add     ebx,DWORD[48+rsp]
+        xor     esi,ebp
+        punpcklqdq      xmm9,xmm2
+        mov     edi,ecx
+        rol     ecx,5
+        pxor    xmm3,xmm4
+        add     ebx,esi
+        xor     edi,ebp
+        movdqa  xmm8,xmm10
+        ror     edx,7
+        paddd   xmm10,xmm2
+        add     ebx,ecx
+        pxor    xmm3,xmm9
+        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[32+rsp],xmm10
+        ror     ecx,7
+        add     eax,ebx
+        add     ebp,DWORD[56+rsp]
+        pslld   xmm3,2
+        xor     esi,ecx
+        mov     edi,eax
+        psrld   xmm9,30
+        rol     eax,5
+        add     ebp,esi
+        xor     edi,ecx
+        ror     ebx,7
+        por     xmm3,xmm9
+        add     ebp,eax
+        add     edx,DWORD[60+rsp]
+        pshufd  xmm10,xmm2,238
+        xor     edi,ebx
+        mov     esi,ebp
+        rol     ebp,5
+        add     edx,edi
+        xor     esi,ebx
+        ror     eax,7
+        add     edx,ebp
+        pxor    xmm4,xmm0
+        add     ecx,DWORD[rsp]
+        xor     esi,eax
+        punpcklqdq      xmm10,xmm3
+        mov     edi,edx
+        rol     edx,5
+        pxor    xmm4,xmm5
+        add     ecx,esi
+        xor     edi,eax
+        movdqa  xmm9,xmm8
+        ror     ebp,7
+        paddd   xmm8,xmm3
+        add     ecx,edx
+        pxor    xmm4,xmm10
+        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[48+rsp],xmm8
+        ror     edx,7
+        add     ebx,ecx
+        add     eax,DWORD[8+rsp]
+        pslld   xmm4,2
+        xor     esi,edx
+        mov     edi,ebx
+        psrld   xmm10,30
+        rol     ebx,5
+        add     eax,esi
+        xor     edi,edx
+        ror     ecx,7
+        por     xmm4,xmm10
+        add     eax,ebx
+        add     ebp,DWORD[12+rsp]
+        pshufd  xmm8,xmm3,238
+        xor     edi,ecx
+        mov     esi,eax
+        rol     eax,5
+        add     ebp,edi
+        xor     esi,ecx
+        ror     ebx,7
+        add     ebp,eax
+        pxor    xmm5,xmm1
+        add     edx,DWORD[16+rsp]
+        xor     esi,ebx
+        punpcklqdq      xmm8,xmm4
+        mov     edi,ebp
+        rol     ebp,5
+        pxor    xmm5,xmm6
+        add     edx,esi
+        xor     edi,ebx
+        movdqa  xmm10,xmm9
+        ror     eax,7
+        paddd   xmm9,xmm4
+        add     edx,ebp
+        pxor    xmm5,xmm8
+        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[rsp],xmm9
+        ror     ebp,7
+        add     ecx,edx
+        add     ebx,DWORD[24+rsp]
+        pslld   xmm5,2
+        xor     esi,ebp
+        mov     edi,ecx
+        psrld   xmm8,30
+        rol     ecx,5
+        add     ebx,esi
+        xor     edi,ebp
+        ror     edx,7
+        por     xmm5,xmm8
+        add     ebx,ecx
+        add     eax,DWORD[28+rsp]
+        pshufd  xmm9,xmm4,238
+        ror     ecx,7
+        mov     esi,ebx
+        xor     edi,edx
+        rol     ebx,5
+        add     eax,edi
+        xor     esi,ecx
+        xor     ecx,edx
+        add     eax,ebx
+        pxor    xmm6,xmm2
+        add     ebp,DWORD[32+rsp]
+        and     esi,ecx
+        xor     ecx,edx
+        ror     ebx,7
+        punpcklqdq      xmm9,xmm5
+        mov     edi,eax
+        xor     esi,ecx
+        pxor    xmm6,xmm7
+        rol     eax,5
+        add     ebp,esi
+        movdqa  xmm8,xmm10
+        xor     edi,ebx
+        paddd   xmm10,xmm5
+        xor     ebx,ecx
+        pxor    xmm6,xmm9
+        add     ebp,eax
+        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[16+rsp],xmm10
+        rol     ebp,5
+        add     edx,edi
+        xor     esi,eax
+        pslld   xmm6,2
+        xor     eax,ebx
+        add     edx,ebp
+        psrld   xmm9,30
+        add     ecx,DWORD[40+rsp]
+        and     esi,eax
+        xor     eax,ebx
+        por     xmm6,xmm9
+        ror     ebp,7
+        mov     edi,edx
+        xor     esi,eax
+        rol     edx,5
+        pshufd  xmm10,xmm5,238
+        add     ecx,esi
+        xor     edi,ebp
+        xor     ebp,eax
+        add     ecx,edx
+        add     ebx,DWORD[44+rsp]
+        and     edi,ebp
+        xor     ebp,eax
+        ror     edx,7
+        mov     esi,ecx
+        xor     edi,ebp
+        rol     ecx,5
+        add     ebx,edi
+        xor     esi,edx
+        xor     edx,ebp
+        add     ebx,ecx
+        pxor    xmm7,xmm3
+        add     eax,DWORD[48+rsp]
+        and     esi,edx
+        xor     edx,ebp
+        ror     ecx,7
+        punpcklqdq      xmm10,xmm6
+        mov     edi,ebx
+        xor     esi,edx
+        pxor    xmm7,xmm0
+        rol     ebx,5
+        add     eax,esi
+        movdqa  xmm9,XMMWORD[32+r14]
+        xor     edi,ecx
+        paddd   xmm8,xmm6
+        xor     ecx,edx
+        pxor    xmm7,xmm10
+        add     eax,ebx
+        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[32+rsp],xmm8
+        rol     eax,5
+        add     ebp,edi
+        xor     esi,ebx
+        pslld   xmm7,2
+        xor     ebx,ecx
+        add     ebp,eax
+        psrld   xmm10,30
+        add     edx,DWORD[56+rsp]
+        and     esi,ebx
+        xor     ebx,ecx
+        por     xmm7,xmm10
+        ror     eax,7
+        mov     edi,ebp
+        xor     esi,ebx
+        rol     ebp,5
+        pshufd  xmm8,xmm6,238
+        add     edx,esi
+        xor     edi,eax
+        xor     eax,ebx
+        add     edx,ebp
+        add     ecx,DWORD[60+rsp]
+        and     edi,eax
+        xor     eax,ebx
+        ror     ebp,7
+        mov     esi,edx
+        xor     edi,eax
+        rol     edx,5
+        add     ecx,edi
+        xor     esi,ebp
+        xor     ebp,eax
+        add     ecx,edx
+        pxor    xmm0,xmm4
+        add     ebx,DWORD[rsp]
+        and     esi,ebp
+        xor     ebp,eax
+        ror     edx,7
+        punpcklqdq      xmm8,xmm7
+        mov     edi,ecx
+        xor     esi,ebp
+        pxor    xmm0,xmm1
+        rol     ecx,5
+        add     ebx,esi
+        movdqa  xmm10,xmm9
+        xor     edi,edx
+        paddd   xmm9,xmm7
+        xor     edx,ebp
+        pxor    xmm0,xmm8
+        add     ebx,ecx
+        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[48+rsp],xmm9
+        rol     ebx,5
+        add     eax,edi
+        xor     esi,ecx
+        pslld   xmm0,2
+        xor     ecx,edx
+        add     eax,ebx
+        psrld   xmm8,30
+        add     ebp,DWORD[8+rsp]
+        and     esi,ecx
+        xor     ecx,edx
+        por     xmm0,xmm8
+        ror     ebx,7
+        mov     edi,eax
+        xor     esi,ecx
+        rol     eax,5
+        pshufd  xmm9,xmm7,238
+        add     ebp,esi
+        xor     edi,ebx
+        xor     ebx,ecx
+        add     ebp,eax
+        add     edx,DWORD[12+rsp]
+        and     edi,ebx
+        xor     ebx,ecx
+        ror     eax,7
+        mov     esi,ebp
+        xor     edi,ebx
+        rol     ebp,5
+        add     edx,edi
+        xor     esi,eax
+        xor     eax,ebx
+        add     edx,ebp
+        pxor    xmm1,xmm5
+        add     ecx,DWORD[16+rsp]
+        and     esi,eax
+        xor     eax,ebx
+        ror     ebp,7
+        punpcklqdq      xmm9,xmm0
+        mov     edi,edx
+        xor     esi,eax
+        pxor    xmm1,xmm2
+        rol     edx,5
+        add     ecx,esi
+        movdqa  xmm8,xmm10
+        xor     edi,ebp
+        paddd   xmm10,xmm0
+        xor     ebp,eax
+        pxor    xmm1,xmm9
+        add     ecx,edx
+        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[rsp],xmm10
+        rol     ecx,5
+        add     ebx,edi
+        xor     esi,edx
+        pslld   xmm1,2
+        xor     edx,ebp
+        add     ebx,ecx
+        psrld   xmm9,30
+        add     eax,DWORD[24+rsp]
+        and     esi,edx
+        xor     edx,ebp
+        por     xmm1,xmm9
+        ror     ecx,7
+        mov     edi,ebx
+        xor     esi,edx
+        rol     ebx,5
+        pshufd  xmm10,xmm0,238
+        add     eax,esi
+        xor     edi,ecx
+        xor     ecx,edx
+        add     eax,ebx
+        add     ebp,DWORD[28+rsp]
+        and     edi,ecx
+        xor     ecx,edx
+        ror     ebx,7
+        mov     esi,eax
+        xor     edi,ecx
+        rol     eax,5
+        add     ebp,edi
+        xor     esi,ebx
+        xor     ebx,ecx
+        add     ebp,eax
+        pxor    xmm2,xmm6
+        add     edx,DWORD[32+rsp]
+        and     esi,ebx
+        xor     ebx,ecx
+        ror     eax,7
+        punpcklqdq      xmm10,xmm1
+        mov     edi,ebp
+        xor     esi,ebx
+        pxor    xmm2,xmm3
+        rol     ebp,5
+        add     edx,esi
+        movdqa  xmm9,xmm8
+        xor     edi,eax
+        paddd   xmm8,xmm1
+        xor     eax,ebx
+        pxor    xmm2,xmm10
+        add     edx,ebp
+        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[16+rsp],xmm8
+        rol     edx,5
+        add     ecx,edi
+        xor     esi,ebp
+        pslld   xmm2,2
+        xor     ebp,eax
+        add     ecx,edx
+        psrld   xmm10,30
+        add     ebx,DWORD[40+rsp]
+        and     esi,ebp
+        xor     ebp,eax
+        por     xmm2,xmm10
+        ror     edx,7
+        mov     edi,ecx
+        xor     esi,ebp
+        rol     ecx,5
+        pshufd  xmm8,xmm1,238
+        add     ebx,esi
+        xor     edi,edx
+        xor     edx,ebp
+        add     ebx,ecx
+        add     eax,DWORD[44+rsp]
+        and     edi,edx
+        xor     edx,ebp
+        ror     ecx,7
+        mov     esi,ebx
+        xor     edi,edx
+        rol     ebx,5
+        add     eax,edi
+        xor     esi,edx
+        add     eax,ebx
+        pxor    xmm3,xmm7
+        add     ebp,DWORD[48+rsp]
+        xor     esi,ecx
+        punpcklqdq      xmm8,xmm2
+        mov     edi,eax
+        rol     eax,5
+        pxor    xmm3,xmm4
+        add     ebp,esi
+        xor     edi,ecx
+        movdqa  xmm10,xmm9
+        ror     ebx,7
+        paddd   xmm9,xmm2
+        add     ebp,eax
+        pxor    xmm3,xmm8
+        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[32+rsp],xmm9
+        ror     eax,7
+        add     edx,ebp
+        add     ecx,DWORD[56+rsp]
+        pslld   xmm3,2
+        xor     esi,eax
+        mov     edi,edx
+        psrld   xmm8,30
+        rol     edx,5
+        add     ecx,esi
+        xor     edi,eax
+        ror     ebp,7
+        por     xmm3,xmm8
+        add     ecx,edx
+        add     ebx,DWORD[60+rsp]
+        xor     edi,ebp
+        mov     esi,ecx
+        rol     ecx,5
+        add     ebx,edi
+        xor     esi,ebp
+        ror     edx,7
+        add     ebx,ecx
+        add     eax,DWORD[rsp]
+        xor     esi,edx
+        mov     edi,ebx
+        rol     ebx,5
+        paddd   xmm10,xmm3
+        add     eax,esi
+        xor     edi,edx
+        movdqa  XMMWORD[48+rsp],xmm10
+        ror     ecx,7
+        add     eax,ebx
+        add     ebp,DWORD[4+rsp]
+        xor     edi,ecx
+        mov     esi,eax
+        rol     eax,5
+        add     ebp,edi
+        xor     esi,ecx
+        ror     ebx,7
+        add     ebp,eax
+        add     edx,DWORD[8+rsp]
+        xor     esi,ebx
+        mov     edi,ebp
+        rol     ebp,5
+        add     edx,esi
+        xor     edi,ebx
+        ror     eax,7
+        add     edx,ebp
+        add     ecx,DWORD[12+rsp]
+        xor     edi,eax
+        mov     esi,edx
+        rol     edx,5
+        add     ecx,edi
+        xor     esi,eax
+        ror     ebp,7
+        add     ecx,edx
+        cmp     r9,r10
+        je      NEAR $L$done_ssse3
+        movdqa  xmm6,XMMWORD[64+r14]
+        movdqa  xmm9,XMMWORD[((-64))+r14]
+        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[16+rsp]
+        xor     esi,ebp
+        mov     edi,ecx
+DB      102,15,56,0,206
+        rol     ecx,5
+        add     ebx,esi
+        xor     edi,ebp
+        ror     edx,7
+        paddd   xmm0,xmm9
+        add     ebx,ecx
+        add     eax,DWORD[20+rsp]
+        xor     edi,edx
+        mov     esi,ebx
+        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[24+rsp]
+        xor     esi,ecx
+        mov     edi,eax
+        rol     eax,5
+        add     ebp,esi
+        xor     edi,ecx
+        ror     ebx,7
+        add     ebp,eax
+        add     edx,DWORD[28+rsp]
+        xor     edi,ebx
+        mov     esi,ebp
+        rol     ebp,5
+        add     edx,edi
+        xor     esi,ebx
+        ror     eax,7
+        add     edx,ebp
+        add     ecx,DWORD[32+rsp]
+        xor     esi,eax
+        mov     edi,edx
+DB      102,15,56,0,214
+        rol     edx,5
+        add     ecx,esi
+        xor     edi,eax
+        ror     ebp,7
+        paddd   xmm1,xmm9
+        add     ecx,edx
+        add     ebx,DWORD[36+rsp]
+        xor     edi,ebp
+        mov     esi,ecx
+        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[40+rsp]
+        xor     esi,edx
+        mov     edi,ebx
+        rol     ebx,5
+        add     eax,esi
+        xor     edi,edx
+        ror     ecx,7
+        add     eax,ebx
+        add     ebp,DWORD[44+rsp]
+        xor     edi,ecx
+        mov     esi,eax
+        rol     eax,5
+        add     ebp,edi
+        xor     esi,ecx
+        ror     ebx,7
+        add     ebp,eax
+        add     edx,DWORD[48+rsp]
+        xor     esi,ebx
+        mov     edi,ebp
+DB      102,15,56,0,222
+        rol     ebp,5
+        add     edx,esi
+        xor     edi,ebx
+        ror     eax,7
+        paddd   xmm2,xmm9
+        add     edx,ebp
+        add     ecx,DWORD[52+rsp]
+        xor     edi,eax
+        mov     esi,edx
+        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[56+rsp]
+        xor     esi,ebp
+        mov     edi,ecx
+        rol     ecx,5
+        add     ebx,esi
+        xor     edi,ebp
+        ror     edx,7
+        add     ebx,ecx
+        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[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[8+r8],ecx
+        mov     edi,ecx
+        mov     DWORD[12+r8],edx
+        xor     edi,edx
+        mov     DWORD[16+r8],ebp
+        and     esi,edi
+        jmp     NEAR $L$oop_ssse3
+
+ALIGN   16
+$L$done_ssse3:
+        add     ebx,DWORD[16+rsp]
+        xor     esi,ebp
+        mov     edi,ecx
+        rol     ecx,5
+        add     ebx,esi
+        xor     edi,ebp
+        ror     edx,7
+        add     ebx,ecx
+        add     eax,DWORD[20+rsp]
+        xor     edi,edx
+        mov     esi,ebx
+        rol     ebx,5
+        add     eax,edi
+        xor     esi,edx
+        ror     ecx,7
+        add     eax,ebx
+        add     ebp,DWORD[24+rsp]
+        xor     esi,ecx
+        mov     edi,eax
+        rol     eax,5
+        add     ebp,esi
+        xor     edi,ecx
+        ror     ebx,7
+        add     ebp,eax
+        add     edx,DWORD[28+rsp]
+        xor     edi,ebx
+        mov     esi,ebp
+        rol     ebp,5
+        add     edx,edi
+        xor     esi,ebx
+        ror     eax,7
+        add     edx,ebp
+        add     ecx,DWORD[32+rsp]
+        xor     esi,eax
+        mov     edi,edx
+        rol     edx,5
+        add     ecx,esi
+        xor     edi,eax
+        ror     ebp,7
+        add     ecx,edx
+        add     ebx,DWORD[36+rsp]
+        xor     edi,ebp
+        mov     esi,ecx
+        rol     ecx,5
+        add     ebx,edi
+        xor     esi,ebp
+        ror     edx,7
+        add     ebx,ecx
+        add     eax,DWORD[40+rsp]
+        xor     esi,edx
+        mov     edi,ebx
+        rol     ebx,5
+        add     eax,esi
+        xor     edi,edx
+        ror     ecx,7
+        add     eax,ebx
+        add     ebp,DWORD[44+rsp]
+        xor     edi,ecx
+        mov     esi,eax
+        rol     eax,5
+        add     ebp,edi
+        xor     esi,ecx
+        ror     ebx,7
+        add     ebp,eax
+        add     edx,DWORD[48+rsp]
+        xor     esi,ebx
+        mov     edi,ebp
+        rol     ebp,5
+        add     edx,esi
+        xor     edi,ebx
+        ror     eax,7
+        add     edx,ebp
+        add     ecx,DWORD[52+rsp]
+        xor     edi,eax
+        mov     esi,edx
+        rol     edx,5
+        add     ecx,edi
+        xor     esi,eax
+        ror     ebp,7
+        add     ecx,edx
+        add     ebx,DWORD[56+rsp]
+        xor     esi,ebp
+        mov     edi,ecx
+        rol     ecx,5
+        add     ebx,esi
+        xor     edi,ebp
+        ror     edx,7
+        add     ebx,ecx
+        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[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))+r11]
+        movaps  xmm7,XMMWORD[((-40-80))+r11]
+        movaps  xmm8,XMMWORD[((-40-64))+r11]
+        movaps  xmm9,XMMWORD[((-40-48))+r11]
+        movaps  xmm10,XMMWORD[((-40-32))+r11]
+        movaps  xmm11,XMMWORD[((-40-16))+r11]
+        mov     r14,QWORD[((-40))+r11]
+
+        mov     r13,QWORD[((-32))+r11]
+
+        mov     r12,QWORD[((-24))+r11]
+
+        mov     rbp,QWORD[((-16))+r11]
+
+        mov     rbx,QWORD[((-8))+r11]
+
+        lea     rsp,[r11]
+
+$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:
+ALIGN   64
+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
+
+ALIGN   16
+se_handler:
+        push    rsi
+        push    rdi
+        push    rbx
+        push    rbp
+        push    r12
+        push    r13
+        push    r14
+        push    r15
+        pushfq
+        sub     rsp,64
+
+        mov     rax,QWORD[120+r8]
+        mov     rbx,QWORD[248+r8]
+
+        lea     r10,[$L$prologue]
+        cmp     rbx,r10
+        jb      NEAR $L$common_seh_tail
+
+        mov     rax,QWORD[152+r8]
+
+        lea     r10,[$L$epilogue]
+        cmp     rbx,r10
+        jae     NEAR $L$common_seh_tail
+
+        mov     rax,QWORD[64+rax]
+
+        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     NEAR $L$common_seh_tail
+
+
+ALIGN   16
+shaext_handler:
+        push    rsi
+        push    rdi
+        push    rbx
+        push    rbp
+        push    r12
+        push    r13
+        push    r14
+        push    r15
+        pushfq
+        sub     rsp,64
+
+        mov     rax,QWORD[120+r8]
+        mov     rbx,QWORD[248+r8]
+
+        lea     r10,[$L$prologue_shaext]
+        cmp     rbx,r10
+        jb      NEAR $L$common_seh_tail
+
+        lea     r10,[$L$epilogue_shaext]
+        cmp     rbx,r10
+        jae     NEAR $L$common_seh_tail
+
+        lea     rsi,[((-8-64))+rax]
+        lea     rdi,[512+r8]
+        mov     ecx,8
+        DD      0xa548f3fc
+
+        jmp     NEAR $L$common_seh_tail
+
+
+ALIGN   16
+ssse3_handler:
+        push    rsi
+        push    rdi
+        push    rbx
+        push    rbp
+        push    r12
+        push    r13
+        push    r14
+        push    r15
+        pushfq
+        sub     rsp,64
+
+        mov     rax,QWORD[120+r8]
+        mov     rbx,QWORD[248+r8]
+
+        mov     rsi,QWORD[8+r9]
+        mov     r11,QWORD[56+r9]
+
+        mov     r10d,DWORD[r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jb      NEAR $L$common_seh_tail
+
+        mov     rax,QWORD[208+r8]
+
+        mov     r10d,DWORD[4+r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jae     NEAR $L$common_seh_tail
+
+        lea     rsi,[((-40-96))+rax]
+        lea     rdi,[512+r8]
+        mov     ecx,12
+        DD      0xa548f3fc
+
+        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[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[40+r9]
+        mov     rsi,r8
+        mov     ecx,154
+        DD      0xa548f3fc
+
+        mov     rsi,r9
+        xor     rcx,rcx
+        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
+        popfq
+        pop     r15
+        pop     r14
+        pop     r13
+        pop     r12
+        pop     rbp
+        pop     rbx
+        pop     rdi
+        pop     rsi
+        DB      0F3h,0C3h               ;repret
+
+
+section .pdata rdata align=4
+ALIGN   4
+        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_shaext wrt ..imagebase
+        DD      $L$SEH_end_sha1_block_data_order_shaext wrt ..imagebase
+        DD      $L$SEH_info_sha1_block_data_order_shaext 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:
+DB      9,0,0,0
+        DD      se_handler wrt ..imagebase
+$L$SEH_info_sha1_block_data_order_shaext:
+DB      9,0,0,0
+        DD      shaext_handler wrt ..imagebase
+$L$SEH_info_sha1_block_data_order_ssse3:
+DB      9,0,0,0
+        DD      ssse3_handler wrt ..imagebase
+        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase
diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm
new file mode 100644
index 0000000000..7cd5eae85c
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm
@@ -0,0 +1,3461 @@
+; WARNING: do not edit!
+; Generated from openssl/crypto/sha/asm/sha256-mb-x86_64.pl
+;
+; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
+;
+; Licensed under the OpenSSL license (the "License").  You may not use
+; this file except in compliance with the License.  You can obtain a copy
+; in the file LICENSE in the source distribution or at
+; https://www.openssl.org/source/license.html
+
+default rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section .text code align=64
+
+
+EXTERN  OPENSSL_ia32cap_P
+
+global  sha256_multi_block
+
+ALIGN   32
+sha256_multi_block:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_sha256_multi_block:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+
+
+
+        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
+        bt      rcx,61
+        jc      NEAR _shaext_shortcut
+        mov     rax,rsp
+
+        push    rbx
+
+        push    rbp
+
+        lea     rsp,[((-168))+rsp]
+        movaps  XMMWORD[rsp],xmm6
+        movaps  XMMWORD[16+rsp],xmm7
+        movaps  XMMWORD[32+rsp],xmm8
+        movaps  XMMWORD[48+rsp],xmm9
+        movaps  XMMWORD[(-120)+rax],xmm10
+        movaps  XMMWORD[(-104)+rax],xmm11
+        movaps  XMMWORD[(-88)+rax],xmm12
+        movaps  XMMWORD[(-72)+rax],xmm13
+        movaps  XMMWORD[(-56)+rax],xmm14
+        movaps  XMMWORD[(-40)+rax],xmm15
+        sub     rsp,288
+        and     rsp,-256
+        mov     QWORD[272+rsp],rax
+
+$L$body:
+        lea     rbp,[((K256+128))]
+        lea     rbx,[256+rsp]
+        lea     rdi,[128+rdi]
+
+$L$oop_grande:
+        mov     DWORD[280+rsp],edx
+        xor     edx,edx
+        mov     r8,QWORD[rsi]
+        mov     ecx,DWORD[8+rsi]
+        cmp     ecx,edx
+        cmovg   edx,ecx
+        test    ecx,ecx
+        mov     DWORD[rbx],ecx
+        cmovle  r8,rbp
+        mov     r9,QWORD[16+rsi]
+        mov     ecx,DWORD[24+rsi]
+        cmp     ecx,edx
+        cmovg   edx,ecx
+        test    ecx,ecx
+        mov     DWORD[4+rbx],ecx
+        cmovle  r9,rbp
+        mov     r10,QWORD[32+rsi]
+        mov     ecx,DWORD[40+rsi]
+        cmp     ecx,edx
+        cmovg   edx,ecx
+        test    ecx,ecx
+        mov     DWORD[8+rbx],ecx
+        cmovle  r10,rbp
+        mov     r11,QWORD[48+rsi]
+        mov     ecx,DWORD[56+rsi]
+        cmp     ecx,edx
+        cmovg   edx,ecx
+        test    ecx,ecx
+        mov     DWORD[12+rbx],ecx
+        cmovle  r11,rbp
+        test    edx,edx
+        jz      NEAR $L$done
+
+        movdqu  xmm8,XMMWORD[((0-128))+rdi]
+        lea     rax,[128+rsp]
+        movdqu  xmm9,XMMWORD[((32-128))+rdi]
+        movdqu  xmm10,XMMWORD[((64-128))+rdi]
+        movdqu  xmm11,XMMWORD[((96-128))+rdi]
+        movdqu  xmm12,XMMWORD[((128-128))+rdi]
+        movdqu  xmm13,XMMWORD[((160-128))+rdi]
+        movdqu  xmm14,XMMWORD[((192-128))+rdi]
+        movdqu  xmm15,XMMWORD[((224-128))+rdi]
+        movdqu  xmm6,XMMWORD[$L$pbswap]
+        jmp     NEAR $L$oop
+
+ALIGN   32
+$L$oop:
+        movdqa  xmm4,xmm10
+        pxor    xmm4,xmm9
+        movd    xmm5,DWORD[r8]
+        movd    xmm0,DWORD[r9]
+        movd    xmm1,DWORD[r10]
+        movd    xmm2,DWORD[r11]
+        punpckldq       xmm5,xmm1
+        punpckldq       xmm0,xmm2
+        punpckldq       xmm5,xmm0
+        movdqa  xmm7,xmm12
+DB      102,15,56,0,238
+        movdqa  xmm2,xmm12
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm12
+        pslld   xmm2,7
+        movdqa  XMMWORD[(0-128)+rax],xmm5
+        paddd   xmm5,xmm15
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[((-128))+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm12
+
+        pxor    xmm7,xmm2
+        movdqa  xmm3,xmm12
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm14
+        pand    xmm3,xmm13
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm8
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm8
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        movdqa  xmm3,xmm9
+        movdqa  xmm7,xmm8
+        pslld   xmm2,10
+        pxor    xmm3,xmm8
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm4,xmm3
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm15,xmm9
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm15,xmm4
+        paddd   xmm11,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm15,xmm5
+        paddd   xmm15,xmm7
+        movd    xmm5,DWORD[4+r8]
+        movd    xmm0,DWORD[4+r9]
+        movd    xmm1,DWORD[4+r10]
+        movd    xmm2,DWORD[4+r11]
+        punpckldq       xmm5,xmm1
+        punpckldq       xmm0,xmm2
+        punpckldq       xmm5,xmm0
+        movdqa  xmm7,xmm11
+
+        movdqa  xmm2,xmm11
+DB      102,15,56,0,238
+        psrld   xmm7,6
+        movdqa  xmm1,xmm11
+        pslld   xmm2,7
+        movdqa  XMMWORD[(16-128)+rax],xmm5
+        paddd   xmm5,xmm14
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[((-96))+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm11
+
+        pxor    xmm7,xmm2
+        movdqa  xmm4,xmm11
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm13
+        pand    xmm4,xmm12
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm15
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm15
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm4
+        movdqa  xmm4,xmm8
+        movdqa  xmm7,xmm15
+        pslld   xmm2,10
+        pxor    xmm4,xmm15
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm3,xmm4
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm14,xmm8
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm14,xmm3
+        paddd   xmm10,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm14,xmm5
+        paddd   xmm14,xmm7
+        movd    xmm5,DWORD[8+r8]
+        movd    xmm0,DWORD[8+r9]
+        movd    xmm1,DWORD[8+r10]
+        movd    xmm2,DWORD[8+r11]
+        punpckldq       xmm5,xmm1
+        punpckldq       xmm0,xmm2
+        punpckldq       xmm5,xmm0
+        movdqa  xmm7,xmm10
+DB      102,15,56,0,238
+        movdqa  xmm2,xmm10
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm10
+        pslld   xmm2,7
+        movdqa  XMMWORD[(32-128)+rax],xmm5
+        paddd   xmm5,xmm13
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[((-64))+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm10
+
+        pxor    xmm7,xmm2
+        movdqa  xmm3,xmm10
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm12
+        pand    xmm3,xmm11
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm14
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm14
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        movdqa  xmm3,xmm15
+        movdqa  xmm7,xmm14
+        pslld   xmm2,10
+        pxor    xmm3,xmm14
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm4,xmm3
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm13,xmm15
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm13,xmm4
+        paddd   xmm9,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm13,xmm5
+        paddd   xmm13,xmm7
+        movd    xmm5,DWORD[12+r8]
+        movd    xmm0,DWORD[12+r9]
+        movd    xmm1,DWORD[12+r10]
+        movd    xmm2,DWORD[12+r11]
+        punpckldq       xmm5,xmm1
+        punpckldq       xmm0,xmm2
+        punpckldq       xmm5,xmm0
+        movdqa  xmm7,xmm9
+
+        movdqa  xmm2,xmm9
+DB      102,15,56,0,238
+        psrld   xmm7,6
+        movdqa  xmm1,xmm9
+        pslld   xmm2,7
+        movdqa  XMMWORD[(48-128)+rax],xmm5
+        paddd   xmm5,xmm12
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[((-32))+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm9
+
+        pxor    xmm7,xmm2
+        movdqa  xmm4,xmm9
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm11
+        pand    xmm4,xmm10
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm13
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm13
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm4
+        movdqa  xmm4,xmm14
+        movdqa  xmm7,xmm13
+        pslld   xmm2,10
+        pxor    xmm4,xmm13
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm3,xmm4
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm12,xmm14
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm12,xmm3
+        paddd   xmm8,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm12,xmm5
+        paddd   xmm12,xmm7
+        movd    xmm5,DWORD[16+r8]
+        movd    xmm0,DWORD[16+r9]
+        movd    xmm1,DWORD[16+r10]
+        movd    xmm2,DWORD[16+r11]
+        punpckldq       xmm5,xmm1
+        punpckldq       xmm0,xmm2
+        punpckldq       xmm5,xmm0
+        movdqa  xmm7,xmm8
+DB      102,15,56,0,238
+        movdqa  xmm2,xmm8
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm8
+        pslld   xmm2,7
+        movdqa  XMMWORD[(64-128)+rax],xmm5
+        paddd   xmm5,xmm11
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm8
+
+        pxor    xmm7,xmm2
+        movdqa  xmm3,xmm8
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm10
+        pand    xmm3,xmm9
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm12
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm12
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        movdqa  xmm3,xmm13
+        movdqa  xmm7,xmm12
+        pslld   xmm2,10
+        pxor    xmm3,xmm12
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm4,xmm3
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm11,xmm13
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm11,xmm4
+        paddd   xmm15,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm11,xmm5
+        paddd   xmm11,xmm7
+        movd    xmm5,DWORD[20+r8]
+        movd    xmm0,DWORD[20+r9]
+        movd    xmm1,DWORD[20+r10]
+        movd    xmm2,DWORD[20+r11]
+        punpckldq       xmm5,xmm1
+        punpckldq       xmm0,xmm2
+        punpckldq       xmm5,xmm0
+        movdqa  xmm7,xmm15
+
+        movdqa  xmm2,xmm15
+DB      102,15,56,0,238
+        psrld   xmm7,6
+        movdqa  xmm1,xmm15
+        pslld   xmm2,7
+        movdqa  XMMWORD[(80-128)+rax],xmm5
+        paddd   xmm5,xmm10
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[32+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm15
+
+        pxor    xmm7,xmm2
+        movdqa  xmm4,xmm15
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm9
+        pand    xmm4,xmm8
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm11
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm11
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm4
+        movdqa  xmm4,xmm12
+        movdqa  xmm7,xmm11
+        pslld   xmm2,10
+        pxor    xmm4,xmm11
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm3,xmm4
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm10,xmm12
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm10,xmm3
+        paddd   xmm14,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm10,xmm5
+        paddd   xmm10,xmm7
+        movd    xmm5,DWORD[24+r8]
+        movd    xmm0,DWORD[24+r9]
+        movd    xmm1,DWORD[24+r10]
+        movd    xmm2,DWORD[24+r11]
+        punpckldq       xmm5,xmm1
+        punpckldq       xmm0,xmm2
+        punpckldq       xmm5,xmm0
+        movdqa  xmm7,xmm14
+DB      102,15,56,0,238
+        movdqa  xmm2,xmm14
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm14
+        pslld   xmm2,7
+        movdqa  XMMWORD[(96-128)+rax],xmm5
+        paddd   xmm5,xmm9
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[64+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm14
+
+        pxor    xmm7,xmm2
+        movdqa  xmm3,xmm14
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm8
+        pand    xmm3,xmm15
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm10
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm10
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        movdqa  xmm3,xmm11
+        movdqa  xmm7,xmm10
+        pslld   xmm2,10
+        pxor    xmm3,xmm10
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm4,xmm3
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm9,xmm11
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm9,xmm4
+        paddd   xmm13,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm9,xmm5
+        paddd   xmm9,xmm7
+        movd    xmm5,DWORD[28+r8]
+        movd    xmm0,DWORD[28+r9]
+        movd    xmm1,DWORD[28+r10]
+        movd    xmm2,DWORD[28+r11]
+        punpckldq       xmm5,xmm1
+        punpckldq       xmm0,xmm2
+        punpckldq       xmm5,xmm0
+        movdqa  xmm7,xmm13
+
+        movdqa  xmm2,xmm13
+DB      102,15,56,0,238
+        psrld   xmm7,6
+        movdqa  xmm1,xmm13
+        pslld   xmm2,7
+        movdqa  XMMWORD[(112-128)+rax],xmm5
+        paddd   xmm5,xmm8
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[96+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm13
+
+        pxor    xmm7,xmm2
+        movdqa  xmm4,xmm13
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm15
+        pand    xmm4,xmm14
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm9
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm9
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm4
+        movdqa  xmm4,xmm10
+        movdqa  xmm7,xmm9
+        pslld   xmm2,10
+        pxor    xmm4,xmm9
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm3,xmm4
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm8,xmm10
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm8,xmm3
+        paddd   xmm12,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm8,xmm5
+        paddd   xmm8,xmm7
+        lea     rbp,[256+rbp]
+        movd    xmm5,DWORD[32+r8]
+        movd    xmm0,DWORD[32+r9]
+        movd    xmm1,DWORD[32+r10]
+        movd    xmm2,DWORD[32+r11]
+        punpckldq       xmm5,xmm1
+        punpckldq       xmm0,xmm2
+        punpckldq       xmm5,xmm0
+        movdqa  xmm7,xmm12
+DB      102,15,56,0,238
+        movdqa  xmm2,xmm12
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm12
+        pslld   xmm2,7
+        movdqa  XMMWORD[(128-128)+rax],xmm5
+        paddd   xmm5,xmm15
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[((-128))+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm12
+
+        pxor    xmm7,xmm2
+        movdqa  xmm3,xmm12
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm14
+        pand    xmm3,xmm13
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm8
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm8
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        movdqa  xmm3,xmm9
+        movdqa  xmm7,xmm8
+        pslld   xmm2,10
+        pxor    xmm3,xmm8
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm4,xmm3
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm15,xmm9
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm15,xmm4
+        paddd   xmm11,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm15,xmm5
+        paddd   xmm15,xmm7
+        movd    xmm5,DWORD[36+r8]
+        movd    xmm0,DWORD[36+r9]
+        movd    xmm1,DWORD[36+r10]
+        movd    xmm2,DWORD[36+r11]
+        punpckldq       xmm5,xmm1
+        punpckldq       xmm0,xmm2
+        punpckldq       xmm5,xmm0
+        movdqa  xmm7,xmm11
+
+        movdqa  xmm2,xmm11
+DB      102,15,56,0,238
+        psrld   xmm7,6
+        movdqa  xmm1,xmm11
+        pslld   xmm2,7
+        movdqa  XMMWORD[(144-128)+rax],xmm5
+        paddd   xmm5,xmm14
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[((-96))+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm11
+
+        pxor    xmm7,xmm2
+        movdqa  xmm4,xmm11
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm13
+        pand    xmm4,xmm12
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm15
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm15
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm4
+        movdqa  xmm4,xmm8
+        movdqa  xmm7,xmm15
+        pslld   xmm2,10
+        pxor    xmm4,xmm15
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm3,xmm4
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm14,xmm8
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm14,xmm3
+        paddd   xmm10,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm14,xmm5
+        paddd   xmm14,xmm7
+        movd    xmm5,DWORD[40+r8]
+        movd    xmm0,DWORD[40+r9]
+        movd    xmm1,DWORD[40+r10]
+        movd    xmm2,DWORD[40+r11]
+        punpckldq       xmm5,xmm1
+        punpckldq       xmm0,xmm2
+        punpckldq       xmm5,xmm0
+        movdqa  xmm7,xmm10
+DB      102,15,56,0,238
+        movdqa  xmm2,xmm10
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm10
+        pslld   xmm2,7
+        movdqa  XMMWORD[(160-128)+rax],xmm5
+        paddd   xmm5,xmm13
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[((-64))+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm10
+
+        pxor    xmm7,xmm2
+        movdqa  xmm3,xmm10
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm12
+        pand    xmm3,xmm11
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm14
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm14
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        movdqa  xmm3,xmm15
+        movdqa  xmm7,xmm14
+        pslld   xmm2,10
+        pxor    xmm3,xmm14
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm4,xmm3
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm13,xmm15
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm13,xmm4
+        paddd   xmm9,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm13,xmm5
+        paddd   xmm13,xmm7
+        movd    xmm5,DWORD[44+r8]
+        movd    xmm0,DWORD[44+r9]
+        movd    xmm1,DWORD[44+r10]
+        movd    xmm2,DWORD[44+r11]
+        punpckldq       xmm5,xmm1
+        punpckldq       xmm0,xmm2
+        punpckldq       xmm5,xmm0
+        movdqa  xmm7,xmm9
+
+        movdqa  xmm2,xmm9
+DB      102,15,56,0,238
+        psrld   xmm7,6
+        movdqa  xmm1,xmm9
+        pslld   xmm2,7
+        movdqa  XMMWORD[(176-128)+rax],xmm5
+        paddd   xmm5,xmm12
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[((-32))+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm9
+
+        pxor    xmm7,xmm2
+        movdqa  xmm4,xmm9
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm11
+        pand    xmm4,xmm10
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm13
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm13
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm4
+        movdqa  xmm4,xmm14
+        movdqa  xmm7,xmm13
+        pslld   xmm2,10
+        pxor    xmm4,xmm13
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm3,xmm4
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm12,xmm14
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm12,xmm3
+        paddd   xmm8,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm12,xmm5
+        paddd   xmm12,xmm7
+        movd    xmm5,DWORD[48+r8]
+        movd    xmm0,DWORD[48+r9]
+        movd    xmm1,DWORD[48+r10]
+        movd    xmm2,DWORD[48+r11]
+        punpckldq       xmm5,xmm1
+        punpckldq       xmm0,xmm2
+        punpckldq       xmm5,xmm0
+        movdqa  xmm7,xmm8
+DB      102,15,56,0,238
+        movdqa  xmm2,xmm8
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm8
+        pslld   xmm2,7
+        movdqa  XMMWORD[(192-128)+rax],xmm5
+        paddd   xmm5,xmm11
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm8
+
+        pxor    xmm7,xmm2
+        movdqa  xmm3,xmm8
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm10
+        pand    xmm3,xmm9
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm12
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm12
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        movdqa  xmm3,xmm13
+        movdqa  xmm7,xmm12
+        pslld   xmm2,10
+        pxor    xmm3,xmm12
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm4,xmm3
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm11,xmm13
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm11,xmm4
+        paddd   xmm15,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm11,xmm5
+        paddd   xmm11,xmm7
+        movd    xmm5,DWORD[52+r8]
+        movd    xmm0,DWORD[52+r9]
+        movd    xmm1,DWORD[52+r10]
+        movd    xmm2,DWORD[52+r11]
+        punpckldq       xmm5,xmm1
+        punpckldq       xmm0,xmm2
+        punpckldq       xmm5,xmm0
+        movdqa  xmm7,xmm15
+
+        movdqa  xmm2,xmm15
+DB      102,15,56,0,238
+        psrld   xmm7,6
+        movdqa  xmm1,xmm15
+        pslld   xmm2,7
+        movdqa  XMMWORD[(208-128)+rax],xmm5
+        paddd   xmm5,xmm10
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[32+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm15
+
+        pxor    xmm7,xmm2
+        movdqa  xmm4,xmm15
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm9
+        pand    xmm4,xmm8
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm11
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm11
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm4
+        movdqa  xmm4,xmm12
+        movdqa  xmm7,xmm11
+        pslld   xmm2,10
+        pxor    xmm4,xmm11
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm3,xmm4
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm10,xmm12
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm10,xmm3
+        paddd   xmm14,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm10,xmm5
+        paddd   xmm10,xmm7
+        movd    xmm5,DWORD[56+r8]
+        movd    xmm0,DWORD[56+r9]
+        movd    xmm1,DWORD[56+r10]
+        movd    xmm2,DWORD[56+r11]
+        punpckldq       xmm5,xmm1
+        punpckldq       xmm0,xmm2
+        punpckldq       xmm5,xmm0
+        movdqa  xmm7,xmm14
+DB      102,15,56,0,238
+        movdqa  xmm2,xmm14
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm14
+        pslld   xmm2,7
+        movdqa  XMMWORD[(224-128)+rax],xmm5
+        paddd   xmm5,xmm9
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[64+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm14
+
+        pxor    xmm7,xmm2
+        movdqa  xmm3,xmm14
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm8
+        pand    xmm3,xmm15
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm10
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm10
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        movdqa  xmm3,xmm11
+        movdqa  xmm7,xmm10
+        pslld   xmm2,10
+        pxor    xmm3,xmm10
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm4,xmm3
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm9,xmm11
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm9,xmm4
+        paddd   xmm13,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm9,xmm5
+        paddd   xmm9,xmm7
+        movd    xmm5,DWORD[60+r8]
+        lea     r8,[64+r8]
+        movd    xmm0,DWORD[60+r9]
+        lea     r9,[64+r9]
+        movd    xmm1,DWORD[60+r10]
+        lea     r10,[64+r10]
+        movd    xmm2,DWORD[60+r11]
+        lea     r11,[64+r11]
+        punpckldq       xmm5,xmm1
+        punpckldq       xmm0,xmm2
+        punpckldq       xmm5,xmm0
+        movdqa  xmm7,xmm13
+
+        movdqa  xmm2,xmm13
+DB      102,15,56,0,238
+        psrld   xmm7,6
+        movdqa  xmm1,xmm13
+        pslld   xmm2,7
+        movdqa  XMMWORD[(240-128)+rax],xmm5
+        paddd   xmm5,xmm8
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[96+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm13
+        prefetcht0      [63+r8]
+        pxor    xmm7,xmm2
+        movdqa  xmm4,xmm13
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm15
+        pand    xmm4,xmm14
+        pxor    xmm7,xmm1
+
+        prefetcht0      [63+r9]
+        movdqa  xmm1,xmm9
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm9
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm4
+        movdqa  xmm4,xmm10
+        movdqa  xmm7,xmm9
+        pslld   xmm2,10
+        pxor    xmm4,xmm9
+
+        prefetcht0      [63+r10]
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm3,xmm4
+        pxor    xmm1,xmm7
+
+        prefetcht0      [63+r11]
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm8,xmm10
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm8,xmm3
+        paddd   xmm12,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm8,xmm5
+        paddd   xmm8,xmm7
+        lea     rbp,[256+rbp]
+        movdqu  xmm5,XMMWORD[((0-128))+rax]
+        mov     ecx,3
+        jmp     NEAR $L$oop_16_xx
+ALIGN   32
+$L$oop_16_xx:
+        movdqa  xmm6,XMMWORD[((16-128))+rax]
+        paddd   xmm5,XMMWORD[((144-128))+rax]
+
+        movdqa  xmm7,xmm6
+        movdqa  xmm1,xmm6
+        psrld   xmm7,3
+        movdqa  xmm2,xmm6
+
+        psrld   xmm1,7
+        movdqa  xmm0,XMMWORD[((224-128))+rax]
+        pslld   xmm2,14
+        pxor    xmm7,xmm1
+        psrld   xmm1,18-7
+        movdqa  xmm3,xmm0
+        pxor    xmm7,xmm2
+        pslld   xmm2,25-14
+        pxor    xmm7,xmm1
+        psrld   xmm0,10
+        movdqa  xmm1,xmm3
+
+        psrld   xmm3,17
+        pxor    xmm7,xmm2
+        pslld   xmm1,13
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        psrld   xmm3,19-17
+        pxor    xmm0,xmm1
+        pslld   xmm1,15-13
+        pxor    xmm0,xmm3
+        pxor    xmm0,xmm1
+        paddd   xmm5,xmm0
+        movdqa  xmm7,xmm12
+
+        movdqa  xmm2,xmm12
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm12
+        pslld   xmm2,7
+        movdqa  XMMWORD[(0-128)+rax],xmm5
+        paddd   xmm5,xmm15
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[((-128))+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm12
+
+        pxor    xmm7,xmm2
+        movdqa  xmm3,xmm12
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm14
+        pand    xmm3,xmm13
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm8
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm8
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        movdqa  xmm3,xmm9
+        movdqa  xmm7,xmm8
+        pslld   xmm2,10
+        pxor    xmm3,xmm8
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm4,xmm3
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm15,xmm9
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm15,xmm4
+        paddd   xmm11,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm15,xmm5
+        paddd   xmm15,xmm7
+        movdqa  xmm5,XMMWORD[((32-128))+rax]
+        paddd   xmm6,XMMWORD[((160-128))+rax]
+
+        movdqa  xmm7,xmm5
+        movdqa  xmm1,xmm5
+        psrld   xmm7,3
+        movdqa  xmm2,xmm5
+
+        psrld   xmm1,7
+        movdqa  xmm0,XMMWORD[((240-128))+rax]
+        pslld   xmm2,14
+        pxor    xmm7,xmm1
+        psrld   xmm1,18-7
+        movdqa  xmm4,xmm0
+        pxor    xmm7,xmm2
+        pslld   xmm2,25-14
+        pxor    xmm7,xmm1
+        psrld   xmm0,10
+        movdqa  xmm1,xmm4
+
+        psrld   xmm4,17
+        pxor    xmm7,xmm2
+        pslld   xmm1,13
+        paddd   xmm6,xmm7
+        pxor    xmm0,xmm4
+        psrld   xmm4,19-17
+        pxor    xmm0,xmm1
+        pslld   xmm1,15-13
+        pxor    xmm0,xmm4
+        pxor    xmm0,xmm1
+        paddd   xmm6,xmm0
+        movdqa  xmm7,xmm11
+
+        movdqa  xmm2,xmm11
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm11
+        pslld   xmm2,7
+        movdqa  XMMWORD[(16-128)+rax],xmm6
+        paddd   xmm6,xmm14
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm6,XMMWORD[((-96))+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm11
+
+        pxor    xmm7,xmm2
+        movdqa  xmm4,xmm11
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm13
+        pand    xmm4,xmm12
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm15
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm15
+        psrld   xmm1,2
+        paddd   xmm6,xmm7
+        pxor    xmm0,xmm4
+        movdqa  xmm4,xmm8
+        movdqa  xmm7,xmm15
+        pslld   xmm2,10
+        pxor    xmm4,xmm15
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm6,xmm0
+        pslld   xmm2,19-10
+        pand    xmm3,xmm4
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm14,xmm8
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm14,xmm3
+        paddd   xmm10,xmm6
+        pxor    xmm7,xmm2
+
+        paddd   xmm14,xmm6
+        paddd   xmm14,xmm7
+        movdqa  xmm6,XMMWORD[((48-128))+rax]
+        paddd   xmm5,XMMWORD[((176-128))+rax]
+
+        movdqa  xmm7,xmm6
+        movdqa  xmm1,xmm6
+        psrld   xmm7,3
+        movdqa  xmm2,xmm6
+
+        psrld   xmm1,7
+        movdqa  xmm0,XMMWORD[((0-128))+rax]
+        pslld   xmm2,14
+        pxor    xmm7,xmm1
+        psrld   xmm1,18-7
+        movdqa  xmm3,xmm0
+        pxor    xmm7,xmm2
+        pslld   xmm2,25-14
+        pxor    xmm7,xmm1
+        psrld   xmm0,10
+        movdqa  xmm1,xmm3
+
+        psrld   xmm3,17
+        pxor    xmm7,xmm2
+        pslld   xmm1,13
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        psrld   xmm3,19-17
+        pxor    xmm0,xmm1
+        pslld   xmm1,15-13
+        pxor    xmm0,xmm3
+        pxor    xmm0,xmm1
+        paddd   xmm5,xmm0
+        movdqa  xmm7,xmm10
+
+        movdqa  xmm2,xmm10
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm10
+        pslld   xmm2,7
+        movdqa  XMMWORD[(32-128)+rax],xmm5
+        paddd   xmm5,xmm13
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[((-64))+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm10
+
+        pxor    xmm7,xmm2
+        movdqa  xmm3,xmm10
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm12
+        pand    xmm3,xmm11
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm14
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm14
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        movdqa  xmm3,xmm15
+        movdqa  xmm7,xmm14
+        pslld   xmm2,10
+        pxor    xmm3,xmm14
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm4,xmm3
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm13,xmm15
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm13,xmm4
+        paddd   xmm9,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm13,xmm5
+        paddd   xmm13,xmm7
+        movdqa  xmm5,XMMWORD[((64-128))+rax]
+        paddd   xmm6,XMMWORD[((192-128))+rax]
+
+        movdqa  xmm7,xmm5
+        movdqa  xmm1,xmm5
+        psrld   xmm7,3
+        movdqa  xmm2,xmm5
+
+        psrld   xmm1,7
+        movdqa  xmm0,XMMWORD[((16-128))+rax]
+        pslld   xmm2,14
+        pxor    xmm7,xmm1
+        psrld   xmm1,18-7
+        movdqa  xmm4,xmm0
+        pxor    xmm7,xmm2
+        pslld   xmm2,25-14
+        pxor    xmm7,xmm1
+        psrld   xmm0,10
+        movdqa  xmm1,xmm4
+
+        psrld   xmm4,17
+        pxor    xmm7,xmm2
+        pslld   xmm1,13
+        paddd   xmm6,xmm7
+        pxor    xmm0,xmm4
+        psrld   xmm4,19-17
+        pxor    xmm0,xmm1
+        pslld   xmm1,15-13
+        pxor    xmm0,xmm4
+        pxor    xmm0,xmm1
+        paddd   xmm6,xmm0
+        movdqa  xmm7,xmm9
+
+        movdqa  xmm2,xmm9
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm9
+        pslld   xmm2,7
+        movdqa  XMMWORD[(48-128)+rax],xmm6
+        paddd   xmm6,xmm12
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm6,XMMWORD[((-32))+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm9
+
+        pxor    xmm7,xmm2
+        movdqa  xmm4,xmm9
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm11
+        pand    xmm4,xmm10
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm13
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm13
+        psrld   xmm1,2
+        paddd   xmm6,xmm7
+        pxor    xmm0,xmm4
+        movdqa  xmm4,xmm14
+        movdqa  xmm7,xmm13
+        pslld   xmm2,10
+        pxor    xmm4,xmm13
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm6,xmm0
+        pslld   xmm2,19-10
+        pand    xmm3,xmm4
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm12,xmm14
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm12,xmm3
+        paddd   xmm8,xmm6
+        pxor    xmm7,xmm2
+
+        paddd   xmm12,xmm6
+        paddd   xmm12,xmm7
+        movdqa  xmm6,XMMWORD[((80-128))+rax]
+        paddd   xmm5,XMMWORD[((208-128))+rax]
+
+        movdqa  xmm7,xmm6
+        movdqa  xmm1,xmm6
+        psrld   xmm7,3
+        movdqa  xmm2,xmm6
+
+        psrld   xmm1,7
+        movdqa  xmm0,XMMWORD[((32-128))+rax]
+        pslld   xmm2,14
+        pxor    xmm7,xmm1
+        psrld   xmm1,18-7
+        movdqa  xmm3,xmm0
+        pxor    xmm7,xmm2
+        pslld   xmm2,25-14
+        pxor    xmm7,xmm1
+        psrld   xmm0,10
+        movdqa  xmm1,xmm3
+
+        psrld   xmm3,17
+        pxor    xmm7,xmm2
+        pslld   xmm1,13
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        psrld   xmm3,19-17
+        pxor    xmm0,xmm1
+        pslld   xmm1,15-13
+        pxor    xmm0,xmm3
+        pxor    xmm0,xmm1
+        paddd   xmm5,xmm0
+        movdqa  xmm7,xmm8
+
+        movdqa  xmm2,xmm8
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm8
+        pslld   xmm2,7
+        movdqa  XMMWORD[(64-128)+rax],xmm5
+        paddd   xmm5,xmm11
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm8
+
+        pxor    xmm7,xmm2
+        movdqa  xmm3,xmm8
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm10
+        pand    xmm3,xmm9
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm12
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm12
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        movdqa  xmm3,xmm13
+        movdqa  xmm7,xmm12
+        pslld   xmm2,10
+        pxor    xmm3,xmm12
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm4,xmm3
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm11,xmm13
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm11,xmm4
+        paddd   xmm15,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm11,xmm5
+        paddd   xmm11,xmm7
+        movdqa  xmm5,XMMWORD[((96-128))+rax]
+        paddd   xmm6,XMMWORD[((224-128))+rax]
+
+        movdqa  xmm7,xmm5
+        movdqa  xmm1,xmm5
+        psrld   xmm7,3
+        movdqa  xmm2,xmm5
+
+        psrld   xmm1,7
+        movdqa  xmm0,XMMWORD[((48-128))+rax]
+        pslld   xmm2,14
+        pxor    xmm7,xmm1
+        psrld   xmm1,18-7
+        movdqa  xmm4,xmm0
+        pxor    xmm7,xmm2
+        pslld   xmm2,25-14
+        pxor    xmm7,xmm1
+        psrld   xmm0,10
+        movdqa  xmm1,xmm4
+
+        psrld   xmm4,17
+        pxor    xmm7,xmm2
+        pslld   xmm1,13
+        paddd   xmm6,xmm7
+        pxor    xmm0,xmm4
+        psrld   xmm4,19-17
+        pxor    xmm0,xmm1
+        pslld   xmm1,15-13
+        pxor    xmm0,xmm4
+        pxor    xmm0,xmm1
+        paddd   xmm6,xmm0
+        movdqa  xmm7,xmm15
+
+        movdqa  xmm2,xmm15
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm15
+        pslld   xmm2,7
+        movdqa  XMMWORD[(80-128)+rax],xmm6
+        paddd   xmm6,xmm10
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm6,XMMWORD[32+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm15
+
+        pxor    xmm7,xmm2
+        movdqa  xmm4,xmm15
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm9
+        pand    xmm4,xmm8
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm11
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm11
+        psrld   xmm1,2
+        paddd   xmm6,xmm7
+        pxor    xmm0,xmm4
+        movdqa  xmm4,xmm12
+        movdqa  xmm7,xmm11
+        pslld   xmm2,10
+        pxor    xmm4,xmm11
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm6,xmm0
+        pslld   xmm2,19-10
+        pand    xmm3,xmm4
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm10,xmm12
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm10,xmm3
+        paddd   xmm14,xmm6
+        pxor    xmm7,xmm2
+
+        paddd   xmm10,xmm6
+        paddd   xmm10,xmm7
+        movdqa  xmm6,XMMWORD[((112-128))+rax]
+        paddd   xmm5,XMMWORD[((240-128))+rax]
+
+        movdqa  xmm7,xmm6
+        movdqa  xmm1,xmm6
+        psrld   xmm7,3
+        movdqa  xmm2,xmm6
+
+        psrld   xmm1,7
+        movdqa  xmm0,XMMWORD[((64-128))+rax]
+        pslld   xmm2,14
+        pxor    xmm7,xmm1
+        psrld   xmm1,18-7
+        movdqa  xmm3,xmm0
+        pxor    xmm7,xmm2
+        pslld   xmm2,25-14
+        pxor    xmm7,xmm1
+        psrld   xmm0,10
+        movdqa  xmm1,xmm3
+
+        psrld   xmm3,17
+        pxor    xmm7,xmm2
+        pslld   xmm1,13
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        psrld   xmm3,19-17
+        pxor    xmm0,xmm1
+        pslld   xmm1,15-13
+        pxor    xmm0,xmm3
+        pxor    xmm0,xmm1
+        paddd   xmm5,xmm0
+        movdqa  xmm7,xmm14
+
+        movdqa  xmm2,xmm14
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm14
+        pslld   xmm2,7
+        movdqa  XMMWORD[(96-128)+rax],xmm5
+        paddd   xmm5,xmm9
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[64+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm14
+
+        pxor    xmm7,xmm2
+        movdqa  xmm3,xmm14
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm8
+        pand    xmm3,xmm15
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm10
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm10
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        movdqa  xmm3,xmm11
+        movdqa  xmm7,xmm10
+        pslld   xmm2,10
+        pxor    xmm3,xmm10
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm4,xmm3
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm9,xmm11
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm9,xmm4
+        paddd   xmm13,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm9,xmm5
+        paddd   xmm9,xmm7
+        movdqa  xmm5,XMMWORD[((128-128))+rax]
+        paddd   xmm6,XMMWORD[((0-128))+rax]
+
+        movdqa  xmm7,xmm5
+        movdqa  xmm1,xmm5
+        psrld   xmm7,3
+        movdqa  xmm2,xmm5
+
+        psrld   xmm1,7
+        movdqa  xmm0,XMMWORD[((80-128))+rax]
+        pslld   xmm2,14
+        pxor    xmm7,xmm1
+        psrld   xmm1,18-7
+        movdqa  xmm4,xmm0
+        pxor    xmm7,xmm2
+        pslld   xmm2,25-14
+        pxor    xmm7,xmm1
+        psrld   xmm0,10
+        movdqa  xmm1,xmm4
+
+        psrld   xmm4,17
+        pxor    xmm7,xmm2
+        pslld   xmm1,13
+        paddd   xmm6,xmm7
+        pxor    xmm0,xmm4
+        psrld   xmm4,19-17
+        pxor    xmm0,xmm1
+        pslld   xmm1,15-13
+        pxor    xmm0,xmm4
+        pxor    xmm0,xmm1
+        paddd   xmm6,xmm0
+        movdqa  xmm7,xmm13
+
+        movdqa  xmm2,xmm13
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm13
+        pslld   xmm2,7
+        movdqa  XMMWORD[(112-128)+rax],xmm6
+        paddd   xmm6,xmm8
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm6,XMMWORD[96+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm13
+
+        pxor    xmm7,xmm2
+        movdqa  xmm4,xmm13
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm15
+        pand    xmm4,xmm14
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm9
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm9
+        psrld   xmm1,2
+        paddd   xmm6,xmm7
+        pxor    xmm0,xmm4
+        movdqa  xmm4,xmm10
+        movdqa  xmm7,xmm9
+        pslld   xmm2,10
+        pxor    xmm4,xmm9
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm6,xmm0
+        pslld   xmm2,19-10
+        pand    xmm3,xmm4
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm8,xmm10
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm8,xmm3
+        paddd   xmm12,xmm6
+        pxor    xmm7,xmm2
+
+        paddd   xmm8,xmm6
+        paddd   xmm8,xmm7
+        lea     rbp,[256+rbp]
+        movdqa  xmm6,XMMWORD[((144-128))+rax]
+        paddd   xmm5,XMMWORD[((16-128))+rax]
+
+        movdqa  xmm7,xmm6
+        movdqa  xmm1,xmm6
+        psrld   xmm7,3
+        movdqa  xmm2,xmm6
+
+        psrld   xmm1,7
+        movdqa  xmm0,XMMWORD[((96-128))+rax]
+        pslld   xmm2,14
+        pxor    xmm7,xmm1
+        psrld   xmm1,18-7
+        movdqa  xmm3,xmm0
+        pxor    xmm7,xmm2
+        pslld   xmm2,25-14
+        pxor    xmm7,xmm1
+        psrld   xmm0,10
+        movdqa  xmm1,xmm3
+
+        psrld   xmm3,17
+        pxor    xmm7,xmm2
+        pslld   xmm1,13
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        psrld   xmm3,19-17
+        pxor    xmm0,xmm1
+        pslld   xmm1,15-13
+        pxor    xmm0,xmm3
+        pxor    xmm0,xmm1
+        paddd   xmm5,xmm0
+        movdqa  xmm7,xmm12
+
+        movdqa  xmm2,xmm12
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm12
+        pslld   xmm2,7
+        movdqa  XMMWORD[(128-128)+rax],xmm5
+        paddd   xmm5,xmm15
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[((-128))+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm12
+
+        pxor    xmm7,xmm2
+        movdqa  xmm3,xmm12
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm14
+        pand    xmm3,xmm13
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm8
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm8
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        movdqa  xmm3,xmm9
+        movdqa  xmm7,xmm8
+        pslld   xmm2,10
+        pxor    xmm3,xmm8
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm4,xmm3
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm15,xmm9
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm15,xmm4
+        paddd   xmm11,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm15,xmm5
+        paddd   xmm15,xmm7
+        movdqa  xmm5,XMMWORD[((160-128))+rax]
+        paddd   xmm6,XMMWORD[((32-128))+rax]
+
+        movdqa  xmm7,xmm5
+        movdqa  xmm1,xmm5
+        psrld   xmm7,3
+        movdqa  xmm2,xmm5
+
+        psrld   xmm1,7
+        movdqa  xmm0,XMMWORD[((112-128))+rax]
+        pslld   xmm2,14
+        pxor    xmm7,xmm1
+        psrld   xmm1,18-7
+        movdqa  xmm4,xmm0
+        pxor    xmm7,xmm2
+        pslld   xmm2,25-14
+        pxor    xmm7,xmm1
+        psrld   xmm0,10
+        movdqa  xmm1,xmm4
+
+        psrld   xmm4,17
+        pxor    xmm7,xmm2
+        pslld   xmm1,13
+        paddd   xmm6,xmm7
+        pxor    xmm0,xmm4
+        psrld   xmm4,19-17
+        pxor    xmm0,xmm1
+        pslld   xmm1,15-13
+        pxor    xmm0,xmm4
+        pxor    xmm0,xmm1
+        paddd   xmm6,xmm0
+        movdqa  xmm7,xmm11
+
+        movdqa  xmm2,xmm11
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm11
+        pslld   xmm2,7
+        movdqa  XMMWORD[(144-128)+rax],xmm6
+        paddd   xmm6,xmm14
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm6,XMMWORD[((-96))+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm11
+
+        pxor    xmm7,xmm2
+        movdqa  xmm4,xmm11
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm13
+        pand    xmm4,xmm12
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm15
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm15
+        psrld   xmm1,2
+        paddd   xmm6,xmm7
+        pxor    xmm0,xmm4
+        movdqa  xmm4,xmm8
+        movdqa  xmm7,xmm15
+        pslld   xmm2,10
+        pxor    xmm4,xmm15
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm6,xmm0
+        pslld   xmm2,19-10
+        pand    xmm3,xmm4
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm14,xmm8
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm14,xmm3
+        paddd   xmm10,xmm6
+        pxor    xmm7,xmm2
+
+        paddd   xmm14,xmm6
+        paddd   xmm14,xmm7
+        movdqa  xmm6,XMMWORD[((176-128))+rax]
+        paddd   xmm5,XMMWORD[((48-128))+rax]
+
+        movdqa  xmm7,xmm6
+        movdqa  xmm1,xmm6
+        psrld   xmm7,3
+        movdqa  xmm2,xmm6
+
+        psrld   xmm1,7
+        movdqa  xmm0,XMMWORD[((128-128))+rax]
+        pslld   xmm2,14
+        pxor    xmm7,xmm1
+        psrld   xmm1,18-7
+        movdqa  xmm3,xmm0
+        pxor    xmm7,xmm2
+        pslld   xmm2,25-14
+        pxor    xmm7,xmm1
+        psrld   xmm0,10
+        movdqa  xmm1,xmm3
+
+        psrld   xmm3,17
+        pxor    xmm7,xmm2
+        pslld   xmm1,13
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        psrld   xmm3,19-17
+        pxor    xmm0,xmm1
+        pslld   xmm1,15-13
+        pxor    xmm0,xmm3
+        pxor    xmm0,xmm1
+        paddd   xmm5,xmm0
+        movdqa  xmm7,xmm10
+
+        movdqa  xmm2,xmm10
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm10
+        pslld   xmm2,7
+        movdqa  XMMWORD[(160-128)+rax],xmm5
+        paddd   xmm5,xmm13
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[((-64))+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm10
+
+        pxor    xmm7,xmm2
+        movdqa  xmm3,xmm10
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm12
+        pand    xmm3,xmm11
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm14
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm14
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        movdqa  xmm3,xmm15
+        movdqa  xmm7,xmm14
+        pslld   xmm2,10
+        pxor    xmm3,xmm14
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm4,xmm3
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm13,xmm15
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm13,xmm4
+        paddd   xmm9,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm13,xmm5
+        paddd   xmm13,xmm7
+        movdqa  xmm5,XMMWORD[((192-128))+rax]
+        paddd   xmm6,XMMWORD[((64-128))+rax]
+
+        movdqa  xmm7,xmm5
+        movdqa  xmm1,xmm5
+        psrld   xmm7,3
+        movdqa  xmm2,xmm5
+
+        psrld   xmm1,7
+        movdqa  xmm0,XMMWORD[((144-128))+rax]
+        pslld   xmm2,14
+        pxor    xmm7,xmm1
+        psrld   xmm1,18-7
+        movdqa  xmm4,xmm0
+        pxor    xmm7,xmm2
+        pslld   xmm2,25-14
+        pxor    xmm7,xmm1
+        psrld   xmm0,10
+        movdqa  xmm1,xmm4
+
+        psrld   xmm4,17
+        pxor    xmm7,xmm2
+        pslld   xmm1,13
+        paddd   xmm6,xmm7
+        pxor    xmm0,xmm4
+        psrld   xmm4,19-17
+        pxor    xmm0,xmm1
+        pslld   xmm1,15-13
+        pxor    xmm0,xmm4
+        pxor    xmm0,xmm1
+        paddd   xmm6,xmm0
+        movdqa  xmm7,xmm9
+
+        movdqa  xmm2,xmm9
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm9
+        pslld   xmm2,7
+        movdqa  XMMWORD[(176-128)+rax],xmm6
+        paddd   xmm6,xmm12
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm6,XMMWORD[((-32))+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm9
+
+        pxor    xmm7,xmm2
+        movdqa  xmm4,xmm9
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm11
+        pand    xmm4,xmm10
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm13
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm13
+        psrld   xmm1,2
+        paddd   xmm6,xmm7
+        pxor    xmm0,xmm4
+        movdqa  xmm4,xmm14
+        movdqa  xmm7,xmm13
+        pslld   xmm2,10
+        pxor    xmm4,xmm13
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm6,xmm0
+        pslld   xmm2,19-10
+        pand    xmm3,xmm4
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm12,xmm14
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm12,xmm3
+        paddd   xmm8,xmm6
+        pxor    xmm7,xmm2
+
+        paddd   xmm12,xmm6
+        paddd   xmm12,xmm7
+        movdqa  xmm6,XMMWORD[((208-128))+rax]
+        paddd   xmm5,XMMWORD[((80-128))+rax]
+
+        movdqa  xmm7,xmm6
+        movdqa  xmm1,xmm6
+        psrld   xmm7,3
+        movdqa  xmm2,xmm6
+
+        psrld   xmm1,7
+        movdqa  xmm0,XMMWORD[((160-128))+rax]
+        pslld   xmm2,14
+        pxor    xmm7,xmm1
+        psrld   xmm1,18-7
+        movdqa  xmm3,xmm0
+        pxor    xmm7,xmm2
+        pslld   xmm2,25-14
+        pxor    xmm7,xmm1
+        psrld   xmm0,10
+        movdqa  xmm1,xmm3
+
+        psrld   xmm3,17
+        pxor    xmm7,xmm2
+        pslld   xmm1,13
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        psrld   xmm3,19-17
+        pxor    xmm0,xmm1
+        pslld   xmm1,15-13
+        pxor    xmm0,xmm3
+        pxor    xmm0,xmm1
+        paddd   xmm5,xmm0
+        movdqa  xmm7,xmm8
+
+        movdqa  xmm2,xmm8
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm8
+        pslld   xmm2,7
+        movdqa  XMMWORD[(192-128)+rax],xmm5
+        paddd   xmm5,xmm11
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm8
+
+        pxor    xmm7,xmm2
+        movdqa  xmm3,xmm8
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm10
+        pand    xmm3,xmm9
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm12
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm12
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        movdqa  xmm3,xmm13
+        movdqa  xmm7,xmm12
+        pslld   xmm2,10
+        pxor    xmm3,xmm12
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm4,xmm3
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm11,xmm13
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm11,xmm4
+        paddd   xmm15,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm11,xmm5
+        paddd   xmm11,xmm7
+        movdqa  xmm5,XMMWORD[((224-128))+rax]
+        paddd   xmm6,XMMWORD[((96-128))+rax]
+
+        movdqa  xmm7,xmm5
+        movdqa  xmm1,xmm5
+        psrld   xmm7,3
+        movdqa  xmm2,xmm5
+
+        psrld   xmm1,7
+        movdqa  xmm0,XMMWORD[((176-128))+rax]
+        pslld   xmm2,14
+        pxor    xmm7,xmm1
+        psrld   xmm1,18-7
+        movdqa  xmm4,xmm0
+        pxor    xmm7,xmm2
+        pslld   xmm2,25-14
+        pxor    xmm7,xmm1
+        psrld   xmm0,10
+        movdqa  xmm1,xmm4
+
+        psrld   xmm4,17
+        pxor    xmm7,xmm2
+        pslld   xmm1,13
+        paddd   xmm6,xmm7
+        pxor    xmm0,xmm4
+        psrld   xmm4,19-17
+        pxor    xmm0,xmm1
+        pslld   xmm1,15-13
+        pxor    xmm0,xmm4
+        pxor    xmm0,xmm1
+        paddd   xmm6,xmm0
+        movdqa  xmm7,xmm15
+
+        movdqa  xmm2,xmm15
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm15
+        pslld   xmm2,7
+        movdqa  XMMWORD[(208-128)+rax],xmm6
+        paddd   xmm6,xmm10
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm6,XMMWORD[32+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm15
+
+        pxor    xmm7,xmm2
+        movdqa  xmm4,xmm15
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm9
+        pand    xmm4,xmm8
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm11
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm11
+        psrld   xmm1,2
+        paddd   xmm6,xmm7
+        pxor    xmm0,xmm4
+        movdqa  xmm4,xmm12
+        movdqa  xmm7,xmm11
+        pslld   xmm2,10
+        pxor    xmm4,xmm11
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm6,xmm0
+        pslld   xmm2,19-10
+        pand    xmm3,xmm4
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm10,xmm12
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm10,xmm3
+        paddd   xmm14,xmm6
+        pxor    xmm7,xmm2
+
+        paddd   xmm10,xmm6
+        paddd   xmm10,xmm7
+        movdqa  xmm6,XMMWORD[((240-128))+rax]
+        paddd   xmm5,XMMWORD[((112-128))+rax]
+
+        movdqa  xmm7,xmm6
+        movdqa  xmm1,xmm6
+        psrld   xmm7,3
+        movdqa  xmm2,xmm6
+
+        psrld   xmm1,7
+        movdqa  xmm0,XMMWORD[((192-128))+rax]
+        pslld   xmm2,14
+        pxor    xmm7,xmm1
+        psrld   xmm1,18-7
+        movdqa  xmm3,xmm0
+        pxor    xmm7,xmm2
+        pslld   xmm2,25-14
+        pxor    xmm7,xmm1
+        psrld   xmm0,10
+        movdqa  xmm1,xmm3
+
+        psrld   xmm3,17
+        pxor    xmm7,xmm2
+        pslld   xmm1,13
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        psrld   xmm3,19-17
+        pxor    xmm0,xmm1
+        pslld   xmm1,15-13
+        pxor    xmm0,xmm3
+        pxor    xmm0,xmm1
+        paddd   xmm5,xmm0
+        movdqa  xmm7,xmm14
+
+        movdqa  xmm2,xmm14
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm14
+        pslld   xmm2,7
+        movdqa  XMMWORD[(224-128)+rax],xmm5
+        paddd   xmm5,xmm9
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm5,XMMWORD[64+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm14
+
+        pxor    xmm7,xmm2
+        movdqa  xmm3,xmm14
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm8
+        pand    xmm3,xmm15
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm10
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm10
+        psrld   xmm1,2
+        paddd   xmm5,xmm7
+        pxor    xmm0,xmm3
+        movdqa  xmm3,xmm11
+        movdqa  xmm7,xmm10
+        pslld   xmm2,10
+        pxor    xmm3,xmm10
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm5,xmm0
+        pslld   xmm2,19-10
+        pand    xmm4,xmm3
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm9,xmm11
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm9,xmm4
+        paddd   xmm13,xmm5
+        pxor    xmm7,xmm2
+
+        paddd   xmm9,xmm5
+        paddd   xmm9,xmm7
+        movdqa  xmm5,XMMWORD[((0-128))+rax]
+        paddd   xmm6,XMMWORD[((128-128))+rax]
+
+        movdqa  xmm7,xmm5
+        movdqa  xmm1,xmm5
+        psrld   xmm7,3
+        movdqa  xmm2,xmm5
+
+        psrld   xmm1,7
+        movdqa  xmm0,XMMWORD[((208-128))+rax]
+        pslld   xmm2,14
+        pxor    xmm7,xmm1
+        psrld   xmm1,18-7
+        movdqa  xmm4,xmm0
+        pxor    xmm7,xmm2
+        pslld   xmm2,25-14
+        pxor    xmm7,xmm1
+        psrld   xmm0,10
+        movdqa  xmm1,xmm4
+
+        psrld   xmm4,17
+        pxor    xmm7,xmm2
+        pslld   xmm1,13
+        paddd   xmm6,xmm7
+        pxor    xmm0,xmm4
+        psrld   xmm4,19-17
+        pxor    xmm0,xmm1
+        pslld   xmm1,15-13
+        pxor    xmm0,xmm4
+        pxor    xmm0,xmm1
+        paddd   xmm6,xmm0
+        movdqa  xmm7,xmm13
+
+        movdqa  xmm2,xmm13
+
+        psrld   xmm7,6
+        movdqa  xmm1,xmm13
+        pslld   xmm2,7
+        movdqa  XMMWORD[(240-128)+rax],xmm6
+        paddd   xmm6,xmm8
+
+        psrld   xmm1,11
+        pxor    xmm7,xmm2
+        pslld   xmm2,21-7
+        paddd   xmm6,XMMWORD[96+rbp]
+        pxor    xmm7,xmm1
+
+        psrld   xmm1,25-11
+        movdqa  xmm0,xmm13
+
+        pxor    xmm7,xmm2
+        movdqa  xmm4,xmm13
+        pslld   xmm2,26-21
+        pandn   xmm0,xmm15
+        pand    xmm4,xmm14
+        pxor    xmm7,xmm1
+
+
+        movdqa  xmm1,xmm9
+        pxor    xmm7,xmm2
+        movdqa  xmm2,xmm9
+        psrld   xmm1,2
+        paddd   xmm6,xmm7
+        pxor    xmm0,xmm4
+        movdqa  xmm4,xmm10
+        movdqa  xmm7,xmm9
+        pslld   xmm2,10
+        pxor    xmm4,xmm9
+
+
+        psrld   xmm7,13
+        pxor    xmm1,xmm2
+        paddd   xmm6,xmm0
+        pslld   xmm2,19-10
+        pand    xmm3,xmm4
+        pxor    xmm1,xmm7
+
+
+        psrld   xmm7,22-13
+        pxor    xmm1,xmm2
+        movdqa  xmm8,xmm10
+        pslld   xmm2,30-19
+        pxor    xmm7,xmm1
+        pxor    xmm8,xmm3
+        paddd   xmm12,xmm6
+        pxor    xmm7,xmm2
+
+        paddd   xmm8,xmm6
+        paddd   xmm8,xmm7
+        lea     rbp,[256+rbp]
+        dec     ecx
+        jnz     NEAR $L$oop_16_xx
+
+        mov     ecx,1
+        lea     rbp,[((K256+128))]
+
+        movdqa  xmm7,XMMWORD[rbx]
+        cmp     ecx,DWORD[rbx]
+        pxor    xmm0,xmm0
+        cmovge  r8,rbp
+        cmp     ecx,DWORD[4+rbx]
+        movdqa  xmm6,xmm7
+        cmovge  r9,rbp
+        cmp     ecx,DWORD[8+rbx]
+        pcmpgtd xmm6,xmm0
+        cmovge  r10,rbp
+        cmp     ecx,DWORD[12+rbx]
+        paddd   xmm7,xmm6
+        cmovge  r11,rbp
+
+        movdqu  xmm0,XMMWORD[((0-128))+rdi]
+        pand    xmm8,xmm6
+        movdqu  xmm1,XMMWORD[((32-128))+rdi]
+        pand    xmm9,xmm6
+        movdqu  xmm2,XMMWORD[((64-128))+rdi]
+        pand    xmm10,xmm6
+        movdqu  xmm5,XMMWORD[((96-128))+rdi]
+        pand    xmm11,xmm6
+        paddd   xmm8,xmm0
+        movdqu  xmm0,XMMWORD[((128-128))+rdi]
+        pand    xmm12,xmm6
+        paddd   xmm9,xmm1
+        movdqu  xmm1,XMMWORD[((160-128))+rdi]
+        pand    xmm13,xmm6
+        paddd   xmm10,xmm2
+        movdqu  xmm2,XMMWORD[((192-128))+rdi]
+        pand    xmm14,xmm6
+        paddd   xmm11,xmm5
+        movdqu  xmm5,XMMWORD[((224-128))+rdi]
+        pand    xmm15,xmm6
+        paddd   xmm12,xmm0
+        paddd   xmm13,xmm1
+        movdqu  XMMWORD[(0-128)+rdi],xmm8
+        paddd   xmm14,xmm2
+        movdqu  XMMWORD[(32-128)+rdi],xmm9
+        paddd   xmm15,xmm5
+        movdqu  XMMWORD[(64-128)+rdi],xmm10
+        movdqu  XMMWORD[(96-128)+rdi],xmm11
+        movdqu  XMMWORD[(128-128)+rdi],xmm12
+        movdqu  XMMWORD[(160-128)+rdi],xmm13
+        movdqu  XMMWORD[(192-128)+rdi],xmm14
+        movdqu  XMMWORD[(224-128)+rdi],xmm15
+
+        movdqa  XMMWORD[rbx],xmm7
+        movdqa  xmm6,XMMWORD[$L$pbswap]
+        dec     edx
+        jnz     NEAR $L$oop
+
+        mov     edx,DWORD[280+rsp]
+        lea     rdi,[16+rdi]
+        lea     rsi,[64+rsi]
+        dec     edx
+        jnz     NEAR $L$oop_grande
+
+$L$done:
+        mov     rax,QWORD[272+rsp]
+
+        movaps  xmm6,XMMWORD[((-184))+rax]
+        movaps  xmm7,XMMWORD[((-168))+rax]
+        movaps  xmm8,XMMWORD[((-152))+rax]
+        movaps  xmm9,XMMWORD[((-136))+rax]
+        movaps  xmm10,XMMWORD[((-120))+rax]
+        movaps  xmm11,XMMWORD[((-104))+rax]
+        movaps  xmm12,XMMWORD[((-88))+rax]
+        movaps  xmm13,XMMWORD[((-72))+rax]
+        movaps  xmm14,XMMWORD[((-56))+rax]
+        movaps  xmm15,XMMWORD[((-40))+rax]
+        mov     rbp,QWORD[((-16))+rax]
+
+        mov     rbx,QWORD[((-8))+rax]
+
+        lea     rsp,[rax]
+
+$L$epilogue:
+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
+        mov     rsi,QWORD[16+rsp]
+        DB      0F3h,0C3h               ;repret
+
+$L$SEH_end_sha256_multi_block:
+
+ALIGN   32
+sha256_multi_block_shaext:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_sha256_multi_block_shaext:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+
+
+
+_shaext_shortcut:
+        mov     rax,rsp
+
+        push    rbx
+
+        push    rbp
+
+        lea     rsp,[((-168))+rsp]
+        movaps  XMMWORD[rsp],xmm6
+        movaps  XMMWORD[16+rsp],xmm7
+        movaps  XMMWORD[32+rsp],xmm8
+        movaps  XMMWORD[48+rsp],xmm9
+        movaps  XMMWORD[(-120)+rax],xmm10
+        movaps  XMMWORD[(-104)+rax],xmm11
+        movaps  XMMWORD[(-88)+rax],xmm12
+        movaps  XMMWORD[(-72)+rax],xmm13
+        movaps  XMMWORD[(-56)+rax],xmm14
+        movaps  XMMWORD[(-40)+rax],xmm15
+        sub     rsp,288
+        shl     edx,1
+        and     rsp,-256
+        lea     rdi,[128+rdi]
+        mov     QWORD[272+rsp],rax
+$L$body_shaext:
+        lea     rbx,[256+rsp]
+        lea     rbp,[((K256_shaext+128))]
+
+$L$oop_grande_shaext:
+        mov     DWORD[280+rsp],edx
+        xor     edx,edx
+        mov     r8,QWORD[rsi]
+        mov     ecx,DWORD[8+rsi]
+        cmp     ecx,edx
+        cmovg   edx,ecx
+        test    ecx,ecx
+        mov     DWORD[rbx],ecx
+        cmovle  r8,rsp
+        mov     r9,QWORD[16+rsi]
+        mov     ecx,DWORD[24+rsi]
+        cmp     ecx,edx
+        cmovg   edx,ecx
+        test    ecx,ecx
+        mov     DWORD[4+rbx],ecx
+        cmovle  r9,rsp
+        test    edx,edx
+        jz      NEAR $L$done_shaext
+
+        movq    xmm12,QWORD[((0-128))+rdi]
+        movq    xmm4,QWORD[((32-128))+rdi]
+        movq    xmm13,QWORD[((64-128))+rdi]
+        movq    xmm5,QWORD[((96-128))+rdi]
+        movq    xmm8,QWORD[((128-128))+rdi]
+        movq    xmm9,QWORD[((160-128))+rdi]
+        movq    xmm10,QWORD[((192-128))+rdi]
+        movq    xmm11,QWORD[((224-128))+rdi]
+
+        punpckldq       xmm12,xmm4
+        punpckldq       xmm13,xmm5
+        punpckldq       xmm8,xmm9
+        punpckldq       xmm10,xmm11
+        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
+
+        movdqa  xmm14,xmm12
+        movdqa  xmm15,xmm13
+        punpcklqdq      xmm12,xmm8
+        punpcklqdq      xmm13,xmm10
+        punpckhqdq      xmm14,xmm8
+        punpckhqdq      xmm15,xmm10
+
+        pshufd  xmm12,xmm12,27
+        pshufd  xmm13,xmm13,27
+        pshufd  xmm14,xmm14,27
+        pshufd  xmm15,xmm15,27
+        jmp     NEAR $L$oop_shaext
+
+ALIGN   32
+$L$oop_shaext:
+        movdqu  xmm4,XMMWORD[r8]
+        movdqu  xmm8,XMMWORD[r9]
+        movdqu  xmm5,XMMWORD[16+r8]
+        movdqu  xmm9,XMMWORD[16+r9]
+        movdqu  xmm6,XMMWORD[32+r8]
+DB      102,15,56,0,227
+        movdqu  xmm10,XMMWORD[32+r9]
+DB      102,68,15,56,0,195
+        movdqu  xmm7,XMMWORD[48+r8]
+        lea     r8,[64+r8]
+        movdqu  xmm11,XMMWORD[48+r9]
+        lea     r9,[64+r9]
+
+        movdqa  xmm0,XMMWORD[((0-128))+rbp]
+DB      102,15,56,0,235
+        paddd   xmm0,xmm4
+        pxor    xmm4,xmm12
+        movdqa  xmm1,xmm0
+        movdqa  xmm2,XMMWORD[((0-128))+rbp]
+DB      102,68,15,56,0,203
+        paddd   xmm2,xmm8
+        movdqa  XMMWORD[80+rsp],xmm13
+DB      69,15,56,203,236
+        pxor    xmm8,xmm14
+        movdqa  xmm0,xmm2
+        movdqa  XMMWORD[112+rsp],xmm15
+DB      69,15,56,203,254
+        pshufd  xmm0,xmm1,0x0e
+        pxor    xmm4,xmm12
+        movdqa  XMMWORD[64+rsp],xmm12
+DB      69,15,56,203,229
+        pshufd  xmm0,xmm2,0x0e
+        pxor    xmm8,xmm14
+        movdqa  XMMWORD[96+rsp],xmm14
+        movdqa  xmm1,XMMWORD[((16-128))+rbp]
+        paddd   xmm1,xmm5
+DB      102,15,56,0,243
+DB      69,15,56,203,247
+
+        movdqa  xmm0,xmm1
+        movdqa  xmm2,XMMWORD[((16-128))+rbp]
+        paddd   xmm2,xmm9
+DB      69,15,56,203,236
+        movdqa  xmm0,xmm2
+        prefetcht0      [127+r8]
+DB      102,15,56,0,251
+DB      102,68,15,56,0,211
+        prefetcht0      [127+r9]
+DB      69,15,56,203,254
+        pshufd  xmm0,xmm1,0x0e
+DB      102,68,15,56,0,219
+DB      15,56,204,229
+DB      69,15,56,203,229
+        pshufd  xmm0,xmm2,0x0e
+        movdqa  xmm1,XMMWORD[((32-128))+rbp]
+        paddd   xmm1,xmm6
+DB      69,15,56,203,247
+
+        movdqa  xmm0,xmm1
+        movdqa  xmm2,XMMWORD[((32-128))+rbp]
+        paddd   xmm2,xmm10
+DB      69,15,56,203,236
+DB      69,15,56,204,193
+        movdqa  xmm0,xmm2
+        movdqa  xmm3,xmm7
+DB      69,15,56,203,254
+        pshufd  xmm0,xmm1,0x0e
+DB      102,15,58,15,222,4
+        paddd   xmm4,xmm3
+        movdqa  xmm3,xmm11
+DB      102,65,15,58,15,218,4
+DB      15,56,204,238
+DB      69,15,56,203,229
+        pshufd  xmm0,xmm2,0x0e
+        movdqa  xmm1,XMMWORD[((48-128))+rbp]
+        paddd   xmm1,xmm7
+DB      69,15,56,203,247
+DB      69,15,56,204,202
+
+        movdqa  xmm0,xmm1
+        movdqa  xmm2,XMMWORD[((48-128))+rbp]
+        paddd   xmm8,xmm3
+        paddd   xmm2,xmm11
+DB      15,56,205,231
+DB      69,15,56,203,236
+        movdqa  xmm0,xmm2
+        movdqa  xmm3,xmm4
+DB      102,15,58,15,223,4
+DB      69,15,56,203,254
+DB      69,15,56,205,195
+        pshufd  xmm0,xmm1,0x0e
+        paddd   xmm5,xmm3
+        movdqa  xmm3,xmm8
+DB      102,65,15,58,15,219,4
+DB      15,56,204,247
+DB      69,15,56,203,229
+        pshufd  xmm0,xmm2,0x0e
+        movdqa  xmm1,XMMWORD[((64-128))+rbp]
+        paddd   xmm1,xmm4
+DB      69,15,56,203,247
+DB      69,15,56,204,211
+        movdqa  xmm0,xmm1
+        movdqa  xmm2,XMMWORD[((64-128))+rbp]
+        paddd   xmm9,xmm3
+        paddd   xmm2,xmm8
+DB      15,56,205,236
+DB      69,15,56,203,236
+        movdqa  xmm0,xmm2
+        movdqa  xmm3,xmm5
+DB      102,15,58,15,220,4
+DB      69,15,56,203,254
+DB      69,15,56,205,200
+        pshufd  xmm0,xmm1,0x0e
+        paddd   xmm6,xmm3
+        movdqa  xmm3,xmm9
+DB      102,65,15,58,15,216,4
+DB      15,56,204,252
+DB      69,15,56,203,229
+        pshufd  xmm0,xmm2,0x0e
+        movdqa  xmm1,XMMWORD[((80-128))+rbp]
+        paddd   xmm1,xmm5
+DB      69,15,56,203,247
+DB      69,15,56,204,216
+        movdqa  xmm0,xmm1
+        movdqa  xmm2,XMMWORD[((80-128))+rbp]
+        paddd   xmm10,xmm3
+        paddd   xmm2,xmm9
+DB      15,56,205,245
+DB      69,15,56,203,236
+        movdqa  xmm0,xmm2
+        movdqa  xmm3,xmm6
+DB      102,15,58,15,221,4
+DB      69,15,56,203,254
+DB      69,15,56,205,209
+        pshufd  xmm0,xmm1,0x0e
+        paddd   xmm7,xmm3
+        movdqa  xmm3,xmm10
+DB      102,65,15,58,15,217,4
+DB      15,56,204,229
+DB      69,15,56,203,229
+        pshufd  xmm0,xmm2,0x0e
+        movdqa  xmm1,XMMWORD[((96-128))+rbp]
+        paddd   xmm1,xmm6
+DB      69,15,56,203,247
+DB      69,15,56,204,193
+        movdqa  xmm0,xmm1
+        movdqa  xmm2,XMMWORD[((96-128))+rbp]
+        paddd   xmm11,xmm3
+        paddd   xmm2,xmm10
+DB      15,56,205,254
+DB      69,15,56,203,236
+        movdqa  xmm0,xmm2
+        movdqa  xmm3,xmm7
+DB      102,15,58,15,222,4
+DB      69,15,56,203,254
+DB      69,15,56,205,218
+        pshufd  xmm0,xmm1,0x0e
+        paddd   xmm4,xmm3
+        movdqa  xmm3,xmm11
+DB      102,65,15,58,15,218,4
+DB      15,56,204,238
+DB      69,15,56,203,229
+        pshufd  xmm0,xmm2,0x0e
+        movdqa  xmm1,XMMWORD[((112-128))+rbp]
+        paddd   xmm1,xmm7
+DB      69,15,56,203,247
+DB      69,15,56,204,202
+        movdqa  xmm0,xmm1
+        movdqa  xmm2,XMMWORD[((112-128))+rbp]
+        paddd   xmm8,xmm3
+        paddd   xmm2,xmm11
+DB      15,56,205,231
+DB      69,15,56,203,236
+        movdqa  xmm0,xmm2
+        movdqa  xmm3,xmm4
+DB      102,15,58,15,223,4
+DB      69,15,56,203,254
+DB      69,15,56,205,195
+        pshufd  xmm0,xmm1,0x0e
+        paddd   xmm5,xmm3
+        movdqa  xmm3,xmm8
+DB      102,65,15,58,15,219,4
+DB      15,56,204,247
+DB      69,15,56,203,229
+        pshufd  xmm0,xmm2,0x0e
+        movdqa  xmm1,XMMWORD[((128-128))+rbp]
+        paddd   xmm1,xmm4
+DB      69,15,56,203,247
+DB      69,15,56,204,211
+        movdqa  xmm0,xmm1
+        movdqa  xmm2,XMMWORD[((128-128))+rbp]
+        paddd   xmm9,xmm3
+        paddd   xmm2,xmm8
+DB      15,56,205,236
+DB      69,15,56,203,236
+        movdqa  xmm0,xmm2
+        movdqa  xmm3,xmm5
+DB      102,15,58,15,220,4
+DB      69,15,56,203,254
+DB      69,15,56,205,200
+        pshufd  xmm0,xmm1,0x0e
+        paddd   xmm6,xmm3
+        movdqa  xmm3,xmm9
+DB      102,65,15,58,15,216,4
+DB      15,56,204,252
+DB      69,15,56,203,229
+        pshufd  xmm0,xmm2,0x0e
+        movdqa  xmm1,XMMWORD[((144-128))+rbp]
+        paddd   xmm1,xmm5
+DB      69,15,56,203,247
+DB      69,15,56,204,216
+        movdqa  xmm0,xmm1
+        movdqa  xmm2,XMMWORD[((144-128))+rbp]
+        paddd   xmm10,xmm3
+        paddd   xmm2,xmm9
+DB      15,56,205,245
+DB      69,15,56,203,236
+        movdqa  xmm0,xmm2
+        movdqa  xmm3,xmm6
+DB      102,15,58,15,221,4
+DB      69,15,56,203,254
+DB      69,15,56,205,209
+        pshufd  xmm0,xmm1,0x0e
+        paddd   xmm7,xmm3
+        movdqa  xmm3,xmm10
+DB      102,65,15,58,15,217,4
+DB      15,56,204,229
+DB      69,15,56,203,229
+        pshufd  xmm0,xmm2,0x0e
+        movdqa  xmm1,XMMWORD[((160-128))+rbp]
+        paddd   xmm1,xmm6
+DB      69,15,56,203,247
+DB      69,15,56,204,193
+        movdqa  xmm0,xmm1
+        movdqa  xmm2,XMMWORD[((160-128))+rbp]
+        paddd   xmm11,xmm3
+        paddd   xmm2,xmm10
+DB      15,56,205,254
+DB      69,15,56,203,236
+        movdqa  xmm0,xmm2
+        movdqa  xmm3,xmm7
+DB      102,15,58,15,222,4
+DB      69,15,56,203,254
+DB      69,15,56,205,218
+        pshufd  xmm0,xmm1,0x0e
+        paddd   xmm4,xmm3
+        movdqa  xmm3,xmm11
+DB      102,65,15,58,15,218,4
+DB      15,56,204,238
+DB      69,15,56,203,229
+        pshufd  xmm0,xmm2,0x0e
+        movdqa  xmm1,XMMWORD[((176-128))+rbp]
+        paddd   xmm1,xmm7
+DB      69,15,56,203,247
+DB      69,15,56,204,202
+        movdqa  xmm0,xmm1
+        movdqa  xmm2,XMMWORD[((176-128))+rbp]
+        paddd   xmm8,xmm3
+        paddd   xmm2,xmm11
+DB      15,56,205,231
+DB      69,15,56,203,236
+        movdqa  xmm0,xmm2
+        movdqa  xmm3,xmm4
+DB      102,15,58,15,223,4
+DB      69,15,56,203,254
+DB      69,15,56,205,195
+        pshufd  xmm0,xmm1,0x0e
+        paddd   xmm5,xmm3
+        movdqa  xmm3,xmm8
+DB      102,65,15,58,15,219,4
+DB      15,56,204,247
+DB      69,15,56,203,229
+        pshufd  xmm0,xmm2,0x0e
+        movdqa  xmm1,XMMWORD[((192-128))+rbp]
+        paddd   xmm1,xmm4
+DB      69,15,56,203,247
+DB      69,15,56,204,211
+        movdqa  xmm0,xmm1
+        movdqa  xmm2,XMMWORD[((192-128))+rbp]
+        paddd   xmm9,xmm3
+        paddd   xmm2,xmm8
+DB      15,56,205,236
+DB      69,15,56,203,236
+        movdqa  xmm0,xmm2
+        movdqa  xmm3,xmm5
+DB      102,15,58,15,220,4
+DB      69,15,56,203,254
+DB      69,15,56,205,200
+        pshufd  xmm0,xmm1,0x0e
+        paddd   xmm6,xmm3
+        movdqa  xmm3,xmm9
+DB      102,65,15,58,15,216,4
+DB      15,56,204,252
+DB      69,15,56,203,229
+        pshufd  xmm0,xmm2,0x0e
+        movdqa  xmm1,XMMWORD[((208-128))+rbp]
+        paddd   xmm1,xmm5
+DB      69,15,56,203,247
+DB      69,15,56,204,216
+        movdqa  xmm0,xmm1
+        movdqa  xmm2,XMMWORD[((208-128))+rbp]
+        paddd   xmm10,xmm3
+        paddd   xmm2,xmm9
+DB      15,56,205,245
+DB      69,15,56,203,236
+        movdqa  xmm0,xmm2
+        movdqa  xmm3,xmm6
+DB      102,15,58,15,221,4
+DB      69,15,56,203,254
+DB      69,15,56,205,209
+        pshufd  xmm0,xmm1,0x0e
+        paddd   xmm7,xmm3
+        movdqa  xmm3,xmm10
+DB      102,65,15,58,15,217,4
+        nop
+DB      69,15,56,203,229
+        pshufd  xmm0,xmm2,0x0e
+        movdqa  xmm1,XMMWORD[((224-128))+rbp]
+        paddd   xmm1,xmm6
+DB      69,15,56,203,247
+
+        movdqa  xmm0,xmm1
+        movdqa  xmm2,XMMWORD[((224-128))+rbp]
+        paddd   xmm11,xmm3
+        paddd   xmm2,xmm10
+DB      15,56,205,254
+        nop
+DB      69,15,56,203,236
+        movdqa  xmm0,xmm2
+        mov     ecx,1
+        pxor    xmm6,xmm6
+DB      69,15,56,203,254
+DB      69,15,56,205,218
+        pshufd  xmm0,xmm1,0x0e
+        movdqa  xmm1,XMMWORD[((240-128))+rbp]
+        paddd   xmm1,xmm7
+        movq    xmm7,QWORD[rbx]
+        nop
+DB      69,15,56,203,229
+        pshufd  xmm0,xmm2,0x0e
+        movdqa  xmm2,XMMWORD[((240-128))+rbp]
+        paddd   xmm2,xmm11
+DB      69,15,56,203,247
+
+        movdqa  xmm0,xmm1
+        cmp     ecx,DWORD[rbx]
+        cmovge  r8,rsp
+        cmp     ecx,DWORD[4+rbx]
+        cmovge  r9,rsp
+        pshufd  xmm9,xmm7,0x00
+DB      69,15,56,203,236
+        movdqa  xmm0,xmm2
+        pshufd  xmm10,xmm7,0x55
+        movdqa  xmm11,xmm7
+DB      69,15,56,203,254
+        pshufd  xmm0,xmm1,0x0e
+        pcmpgtd xmm9,xmm6
+        pcmpgtd xmm10,xmm6
+DB      69,15,56,203,229
+        pshufd  xmm0,xmm2,0x0e
+        pcmpgtd xmm11,xmm6
+        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
+DB      69,15,56,203,247
+
+        pand    xmm13,xmm9
+        pand    xmm15,xmm10
+        pand    xmm12,xmm9
+        pand    xmm14,xmm10
+        paddd   xmm11,xmm7
+
+        paddd   xmm13,XMMWORD[80+rsp]
+        paddd   xmm15,XMMWORD[112+rsp]
+        paddd   xmm12,XMMWORD[64+rsp]
+        paddd   xmm14,XMMWORD[96+rsp]
+
+        movq    QWORD[rbx],xmm11
+        dec     edx
+        jnz     NEAR $L$oop_shaext
+
+        mov     edx,DWORD[280+rsp]
+
+        pshufd  xmm12,xmm12,27
+        pshufd  xmm13,xmm13,27
+        pshufd  xmm14,xmm14,27
+        pshufd  xmm15,xmm15,27
+
+        movdqa  xmm5,xmm12
+        movdqa  xmm6,xmm13
+        punpckldq       xmm12,xmm14
+        punpckhdq       xmm5,xmm14
+        punpckldq       xmm13,xmm15
+        punpckhdq       xmm6,xmm15
+
+        movq    QWORD[(0-128)+rdi],xmm12
+        psrldq  xmm12,8
+        movq    QWORD[(128-128)+rdi],xmm5
+        psrldq  xmm5,8
+        movq    QWORD[(32-128)+rdi],xmm12
+        movq    QWORD[(160-128)+rdi],xmm5
+
+        movq    QWORD[(64-128)+rdi],xmm13
+        psrldq  xmm13,8
+        movq    QWORD[(192-128)+rdi],xmm6
+        psrldq  xmm6,8
+        movq    QWORD[(96-128)+rdi],xmm13
+        movq    QWORD[(224-128)+rdi],xmm6
+
+        lea     rdi,[8+rdi]
+        lea     rsi,[32+rsi]
+        dec     edx
+        jnz     NEAR $L$oop_grande_shaext
+
+$L$done_shaext:
+
+        movaps  xmm6,XMMWORD[((-184))+rax]
+        movaps  xmm7,XMMWORD[((-168))+rax]
+        movaps  xmm8,XMMWORD[((-152))+rax]
+        movaps  xmm9,XMMWORD[((-136))+rax]
+        movaps  xmm10,XMMWORD[((-120))+rax]
+        movaps  xmm11,XMMWORD[((-104))+rax]
+        movaps  xmm12,XMMWORD[((-88))+rax]
+        movaps  xmm13,XMMWORD[((-72))+rax]
+        movaps  xmm14,XMMWORD[((-56))+rax]
+        movaps  xmm15,XMMWORD[((-40))+rax]
+        mov     rbp,QWORD[((-16))+rax]
+
+        mov     rbx,QWORD[((-8))+rax]
+
+        lea     rsp,[rax]
+
+$L$epilogue_shaext:
+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
+        mov     rsi,QWORD[16+rsp]
+        DB      0F3h,0C3h               ;repret
+
+$L$SEH_end_sha256_multi_block_shaext:
+ALIGN   256
+K256:
+        DD      1116352408,1116352408,1116352408,1116352408
+        DD      1116352408,1116352408,1116352408,1116352408
+        DD      1899447441,1899447441,1899447441,1899447441
+        DD      1899447441,1899447441,1899447441,1899447441
+        DD      3049323471,3049323471,3049323471,3049323471
+        DD      3049323471,3049323471,3049323471,3049323471
+        DD      3921009573,3921009573,3921009573,3921009573
+        DD      3921009573,3921009573,3921009573,3921009573
+        DD      961987163,961987163,961987163,961987163
+        DD      961987163,961987163,961987163,961987163
+        DD      1508970993,1508970993,1508970993,1508970993
+        DD      1508970993,1508970993,1508970993,1508970993
+        DD      2453635748,2453635748,2453635748,2453635748
+        DD      2453635748,2453635748,2453635748,2453635748
+        DD      2870763221,2870763221,2870763221,2870763221
+        DD      2870763221,2870763221,2870763221,2870763221
+        DD      3624381080,3624381080,3624381080,3624381080
+        DD      3624381080,3624381080,3624381080,3624381080
+        DD      310598401,310598401,310598401,310598401
+        DD      310598401,310598401,310598401,310598401
+        DD      607225278,607225278,607225278,607225278
+        DD      607225278,607225278,607225278,607225278
+        DD      1426881987,1426881987,1426881987,1426881987
+        DD      1426881987,1426881987,1426881987,1426881987
+        DD      1925078388,1925078388,1925078388,1925078388
+        DD      1925078388,1925078388,1925078388,1925078388
+        DD      2162078206,2162078206,2162078206,2162078206
+        DD      2162078206,2162078206,2162078206,2162078206
+        DD      2614888103,2614888103,2614888103,2614888103
+        DD      2614888103,2614888103,2614888103,2614888103
+        DD      3248222580,3248222580,3248222580,3248222580
+        DD      3248222580,3248222580,3248222580,3248222580
+        DD      3835390401,3835390401,3835390401,3835390401
+        DD      3835390401,3835390401,3835390401,3835390401
+        DD      4022224774,4022224774,4022224774,4022224774
+        DD      4022224774,4022224774,4022224774,4022224774
+        DD      264347078,264347078,264347078,264347078
+        DD      264347078,264347078,264347078,264347078
+        DD      604807628,604807628,604807628,604807628
+        DD      604807628,604807628,604807628,604807628
+        DD      770255983,770255983,770255983,770255983
+        DD      770255983,770255983,770255983,770255983
+        DD      1249150122,1249150122,1249150122,1249150122
+        DD      1249150122,1249150122,1249150122,1249150122
+        DD      1555081692,1555081692,1555081692,1555081692
+        DD      1555081692,1555081692,1555081692,1555081692
+        DD      1996064986,1996064986,1996064986,1996064986
+        DD      1996064986,1996064986,1996064986,1996064986
+        DD      2554220882,2554220882,2554220882,2554220882
+        DD      2554220882,2554220882,2554220882,2554220882
+        DD      2821834349,2821834349,2821834349,2821834349
+        DD      2821834349,2821834349,2821834349,2821834349
+        DD      2952996808,2952996808,2952996808,2952996808
+        DD      2952996808,2952996808,2952996808,2952996808
+        DD      3210313671,3210313671,3210313671,3210313671
+        DD      3210313671,3210313671,3210313671,3210313671
+        DD      3336571891,3336571891,3336571891,3336571891
+        DD      3336571891,3336571891,3336571891,3336571891
+        DD      3584528711,3584528711,3584528711,3584528711
+        DD      3584528711,3584528711,3584528711,3584528711
+        DD      113926993,113926993,113926993,113926993
+        DD      113926993,113926993,113926993,113926993
+        DD      338241895,338241895,338241895,338241895
+        DD      338241895,338241895,338241895,338241895
+        DD      666307205,666307205,666307205,666307205
+        DD      666307205,666307205,666307205,666307205
+        DD      773529912,773529912,773529912,773529912
+        DD      773529912,773529912,773529912,773529912
+        DD      1294757372,1294757372,1294757372,1294757372
+        DD      1294757372,1294757372,1294757372,1294757372
+        DD      1396182291,1396182291,1396182291,1396182291
+        DD      1396182291,1396182291,1396182291,1396182291
+        DD      1695183700,1695183700,1695183700,1695183700
+        DD      1695183700,1695183700,1695183700,1695183700
+        DD      1986661051,1986661051,1986661051,1986661051
+        DD      1986661051,1986661051,1986661051,1986661051
+        DD      2177026350,2177026350,2177026350,2177026350
+        DD      2177026350,2177026350,2177026350,2177026350
+        DD      2456956037,2456956037,2456956037,2456956037
+        DD      2456956037,2456956037,2456956037,2456956037
+        DD      2730485921,2730485921,2730485921,2730485921
+        DD      2730485921,2730485921,2730485921,2730485921
+        DD      2820302411,2820302411,2820302411,2820302411
+        DD      2820302411,2820302411,2820302411,2820302411
+        DD      3259730800,3259730800,3259730800,3259730800
+        DD      3259730800,3259730800,3259730800,3259730800
+        DD      3345764771,3345764771,3345764771,3345764771
+        DD      3345764771,3345764771,3345764771,3345764771
+        DD      3516065817,3516065817,3516065817,3516065817
+        DD      3516065817,3516065817,3516065817,3516065817
+        DD      3600352804,3600352804,3600352804,3600352804
+        DD      3600352804,3600352804,3600352804,3600352804
+        DD      4094571909,4094571909,4094571909,4094571909
+        DD      4094571909,4094571909,4094571909,4094571909
+        DD      275423344,275423344,275423344,275423344
+        DD      275423344,275423344,275423344,275423344
+        DD      430227734,430227734,430227734,430227734
+        DD      430227734,430227734,430227734,430227734
+        DD      506948616,506948616,506948616,506948616
+        DD      506948616,506948616,506948616,506948616
+        DD      659060556,659060556,659060556,659060556
+        DD      659060556,659060556,659060556,659060556
+        DD      883997877,883997877,883997877,883997877
+        DD      883997877,883997877,883997877,883997877
+        DD      958139571,958139571,958139571,958139571
+        DD      958139571,958139571,958139571,958139571
+        DD      1322822218,1322822218,1322822218,1322822218
+        DD      1322822218,1322822218,1322822218,1322822218
+        DD      1537002063,1537002063,1537002063,1537002063
+        DD      1537002063,1537002063,1537002063,1537002063
+        DD      1747873779,1747873779,1747873779,1747873779
+        DD      1747873779,1747873779,1747873779,1747873779
+        DD      1955562222,1955562222,1955562222,1955562222
+        DD      1955562222,1955562222,1955562222,1955562222
+        DD      2024104815,2024104815,2024104815,2024104815
+        DD      2024104815,2024104815,2024104815,2024104815
+        DD      2227730452,2227730452,2227730452,2227730452
+        DD      2227730452,2227730452,2227730452,2227730452
+        DD      2361852424,2361852424,2361852424,2361852424
+        DD      2361852424,2361852424,2361852424,2361852424
+        DD      2428436474,2428436474,2428436474,2428436474
+        DD      2428436474,2428436474,2428436474,2428436474
+        DD      2756734187,2756734187,2756734187,2756734187
+        DD      2756734187,2756734187,2756734187,2756734187
+        DD      3204031479,3204031479,3204031479,3204031479
+        DD      3204031479,3204031479,3204031479,3204031479
+        DD      3329325298,3329325298,3329325298,3329325298
+        DD      3329325298,3329325298,3329325298,3329325298
+$L$pbswap:
+        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
+        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
+K256_shaext:
+        DD      0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
+        DD      0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
+        DD      0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
+        DD      0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
+        DD      0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
+        DD      0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
+        DD      0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
+        DD      0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
+        DD      0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
+        DD      0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
+        DD      0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
+        DD      0xd192e819,0xd6990624,0xf40e3585,0x106aa070
+        DD      0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
+        DD      0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
+        DD      0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
+        DD      0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
+DB      83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111
+DB      99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114
+DB      32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71
+DB      65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112
+DB      101,110,115,115,108,46,111,114,103,62,0
+EXTERN  __imp_RtlVirtualUnwind
+
+ALIGN   16
+se_handler:
+        push    rsi
+        push    rdi
+        push    rbx
+        push    rbp
+        push    r12
+        push    r13
+        push    r14
+        push    r15
+        pushfq
+        sub     rsp,64
+
+        mov     rax,QWORD[120+r8]
+        mov     rbx,QWORD[248+r8]
+
+        mov     rsi,QWORD[8+r9]
+        mov     r11,QWORD[56+r9]
+
+        mov     r10d,DWORD[r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jb      NEAR $L$in_prologue
+
+        mov     rax,QWORD[152+r8]
+
+        mov     r10d,DWORD[4+r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jae     NEAR $L$in_prologue
+
+        mov     rax,QWORD[272+rax]
+
+        mov     rbx,QWORD[((-8))+rax]
+        mov     rbp,QWORD[((-16))+rax]
+        mov     QWORD[144+r8],rbx
+        mov     QWORD[160+r8],rbp
+
+        lea     rsi,[((-24-160))+rax]
+        lea     rdi,[512+r8]
+        mov     ecx,20
+        DD      0xa548f3fc
+
+$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[40+r9]
+        mov     rsi,r8
+        mov     ecx,154
+        DD      0xa548f3fc
+
+        mov     rsi,r9
+        xor     rcx,rcx
+        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
+        popfq
+        pop     r15
+        pop     r14
+        pop     r13
+        pop     r12
+        pop     rbp
+        pop     rbx
+        pop     rdi
+        pop     rsi
+        DB      0F3h,0C3h               ;repret
+
+section .pdata rdata align=4
+ALIGN   4
+        DD      $L$SEH_begin_sha256_multi_block wrt ..imagebase
+        DD      $L$SEH_end_sha256_multi_block wrt ..imagebase
+        DD      $L$SEH_info_sha256_multi_block wrt ..imagebase
+        DD      $L$SEH_begin_sha256_multi_block_shaext wrt ..imagebase
+        DD      $L$SEH_end_sha256_multi_block_shaext wrt ..imagebase
+        DD      $L$SEH_info_sha256_multi_block_shaext wrt ..imagebase
+section .xdata rdata align=8
+ALIGN   8
+$L$SEH_info_sha256_multi_block:
+DB      9,0,0,0
+        DD      se_handler wrt ..imagebase
+        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
+$L$SEH_info_sha256_multi_block_shaext:
+DB      9,0,0,0
+        DD      se_handler wrt ..imagebase
+        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext wrt ..imagebase
diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
new file mode 100644
index 0000000000..70e49862a3
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
@@ -0,0 +1,3313 @@
+; WARNING: do not edit!
+; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
+;
+; Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.
+;
+; Licensed under the OpenSSL license (the "License").  You may not use
+; this file except in compliance with the License.  You can obtain a copy
+; in the file LICENSE in the source distribution or at
+; https://www.openssl.org/source/license.html
+
+default rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section .text code align=64
+
+
+EXTERN  OPENSSL_ia32cap_P
+global  sha256_block_data_order
+
+ALIGN   16
+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:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+
+
+
+        lea     r11,[OPENSSL_ia32cap_P]
+        mov     r9d,DWORD[r11]
+        mov     r10d,DWORD[4+r11]
+        mov     r11d,DWORD[8+r11]
+        test    r11d,536870912
+        jnz     NEAR _shaext_shortcut
+        test    r10d,512
+        jnz     NEAR $L$ssse3_shortcut
+        mov     rax,rsp
+
+        push    rbx
+
+        push    rbp
+
+        push    r12
+
+        push    r13
+
+        push    r14
+
+        push    r15
+
+        shl     rdx,4
+        sub     rsp,16*4+4*8
+        lea     rdx,[rdx*4+rsi]
+        and     rsp,-64
+        mov     QWORD[((64+0))+rsp],rdi
+        mov     QWORD[((64+8))+rsp],rsi
+        mov     QWORD[((64+16))+rsp],rdx
+        mov     QWORD[88+rsp],rax
+
+$L$prologue:
+
+        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:
+        mov     edi,ebx
+        lea     rbp,[K256]
+        xor     edi,ecx
+        mov     r12d,DWORD[rsi]
+        mov     r13d,r8d
+        mov     r14d,eax
+        bswap   r12d
+        ror     r13d,14
+        mov     r15d,r9d
+
+        xor     r13d,r8d
+        ror     r14d,9
+        xor     r15d,r10d
+
+        mov     DWORD[rsp],r12d
+        xor     r14d,eax
+        and     r15d,r8d
+
+        ror     r13d,5
+        add     r12d,r11d
+        xor     r15d,r10d
+
+        ror     r14d,11
+        xor     r13d,r8d
+        add     r12d,r15d
+
+        mov     r15d,eax
+        add     r12d,DWORD[rbp]
+        xor     r14d,eax
+
+        xor     r15d,ebx
+        ror     r13d,6
+        mov     r11d,ebx
+
+        and     edi,r15d
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     r11d,edi
+        add     edx,r12d
+        add     r11d,r12d
+
+        lea     rbp,[4+rbp]
+        add     r11d,r14d
+        mov     r12d,DWORD[4+rsi]
+        mov     r13d,edx
+        mov     r14d,r11d
+        bswap   r12d
+        ror     r13d,14
+        mov     edi,r8d
+
+        xor     r13d,edx
+        ror     r14d,9
+        xor     edi,r9d
+
+        mov     DWORD[4+rsp],r12d
+        xor     r14d,r11d
+        and     edi,edx
+
+        ror     r13d,5
+        add     r12d,r10d
+        xor     edi,r9d
+
+        ror     r14d,11
+        xor     r13d,edx
+        add     r12d,edi
+
+        mov     edi,r11d
+        add     r12d,DWORD[rbp]
+        xor     r14d,r11d
+
+        xor     edi,eax
+        ror     r13d,6
+        mov     r10d,eax
+
+        and     r15d,edi
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     r10d,r15d
+        add     ecx,r12d
+        add     r10d,r12d
+
+        lea     rbp,[4+rbp]
+        add     r10d,r14d
+        mov     r12d,DWORD[8+rsi]
+        mov     r13d,ecx
+        mov     r14d,r10d
+        bswap   r12d
+        ror     r13d,14
+        mov     r15d,edx
+
+        xor     r13d,ecx
+        ror     r14d,9
+        xor     r15d,r8d
+
+        mov     DWORD[8+rsp],r12d
+        xor     r14d,r10d
+        and     r15d,ecx
+
+        ror     r13d,5
+        add     r12d,r9d
+        xor     r15d,r8d
+
+        ror     r14d,11
+        xor     r13d,ecx
+        add     r12d,r15d
+
+        mov     r15d,r10d
+        add     r12d,DWORD[rbp]
+        xor     r14d,r10d
+
+        xor     r15d,r11d
+        ror     r13d,6
+        mov     r9d,r11d
+
+        and     edi,r15d
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     r9d,edi
+        add     ebx,r12d
+        add     r9d,r12d
+
+        lea     rbp,[4+rbp]
+        add     r9d,r14d
+        mov     r12d,DWORD[12+rsi]
+        mov     r13d,ebx
+        mov     r14d,r9d
+        bswap   r12d
+        ror     r13d,14
+        mov     edi,ecx
+
+        xor     r13d,ebx
+        ror     r14d,9
+        xor     edi,edx
+
+        mov     DWORD[12+rsp],r12d
+        xor     r14d,r9d
+        and     edi,ebx
+
+        ror     r13d,5
+        add     r12d,r8d
+        xor     edi,edx
+
+        ror     r14d,11
+        xor     r13d,ebx
+        add     r12d,edi
+
+        mov     edi,r9d
+        add     r12d,DWORD[rbp]
+        xor     r14d,r9d
+
+        xor     edi,r10d
+        ror     r13d,6
+        mov     r8d,r10d
+
+        and     r15d,edi
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     r8d,r15d
+        add     eax,r12d
+        add     r8d,r12d
+
+        lea     rbp,[20+rbp]
+        add     r8d,r14d
+        mov     r12d,DWORD[16+rsi]
+        mov     r13d,eax
+        mov     r14d,r8d
+        bswap   r12d
+        ror     r13d,14
+        mov     r15d,ebx
+
+        xor     r13d,eax
+        ror     r14d,9
+        xor     r15d,ecx
+
+        mov     DWORD[16+rsp],r12d
+        xor     r14d,r8d
+        and     r15d,eax
+
+        ror     r13d,5
+        add     r12d,edx
+        xor     r15d,ecx
+
+        ror     r14d,11
+        xor     r13d,eax
+        add     r12d,r15d
+
+        mov     r15d,r8d
+        add     r12d,DWORD[rbp]
+        xor     r14d,r8d
+
+        xor     r15d,r9d
+        ror     r13d,6
+        mov     edx,r9d
+
+        and     edi,r15d
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     edx,edi
+        add     r11d,r12d
+        add     edx,r12d
+
+        lea     rbp,[4+rbp]
+        add     edx,r14d
+        mov     r12d,DWORD[20+rsi]
+        mov     r13d,r11d
+        mov     r14d,edx
+        bswap   r12d
+        ror     r13d,14
+        mov     edi,eax
+
+        xor     r13d,r11d
+        ror     r14d,9
+        xor     edi,ebx
+
+        mov     DWORD[20+rsp],r12d
+        xor     r14d,edx
+        and     edi,r11d
+
+        ror     r13d,5
+        add     r12d,ecx
+        xor     edi,ebx
+
+        ror     r14d,11
+        xor     r13d,r11d
+        add     r12d,edi
+
+        mov     edi,edx
+        add     r12d,DWORD[rbp]
+        xor     r14d,edx
+
+        xor     edi,r8d
+        ror     r13d,6
+        mov     ecx,r8d
+
+        and     r15d,edi
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     ecx,r15d
+        add     r10d,r12d
+        add     ecx,r12d
+
+        lea     rbp,[4+rbp]
+        add     ecx,r14d
+        mov     r12d,DWORD[24+rsi]
+        mov     r13d,r10d
+        mov     r14d,ecx
+        bswap   r12d
+        ror     r13d,14
+        mov     r15d,r11d
+
+        xor     r13d,r10d
+        ror     r14d,9
+        xor     r15d,eax
+
+        mov     DWORD[24+rsp],r12d
+        xor     r14d,ecx
+        and     r15d,r10d
+
+        ror     r13d,5
+        add     r12d,ebx
+        xor     r15d,eax
+
+        ror     r14d,11
+        xor     r13d,r10d
+        add     r12d,r15d
+
+        mov     r15d,ecx
+        add     r12d,DWORD[rbp]
+        xor     r14d,ecx
+
+        xor     r15d,edx
+        ror     r13d,6
+        mov     ebx,edx
+
+        and     edi,r15d
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     ebx,edi
+        add     r9d,r12d
+        add     ebx,r12d
+
+        lea     rbp,[4+rbp]
+        add     ebx,r14d
+        mov     r12d,DWORD[28+rsi]
+        mov     r13d,r9d
+        mov     r14d,ebx
+        bswap   r12d
+        ror     r13d,14
+        mov     edi,r10d
+
+        xor     r13d,r9d
+        ror     r14d,9
+        xor     edi,r11d
+
+        mov     DWORD[28+rsp],r12d
+        xor     r14d,ebx
+        and     edi,r9d
+
+        ror     r13d,5
+        add     r12d,eax
+        xor     edi,r11d
+
+        ror     r14d,11
+        xor     r13d,r9d
+        add     r12d,edi
+
+        mov     edi,ebx
+        add     r12d,DWORD[rbp]
+        xor     r14d,ebx
+
+        xor     edi,ecx
+        ror     r13d,6
+        mov     eax,ecx
+
+        and     r15d,edi
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     eax,r15d
+        add     r8d,r12d
+        add     eax,r12d
+
+        lea     rbp,[20+rbp]
+        add     eax,r14d
+        mov     r12d,DWORD[32+rsi]
+        mov     r13d,r8d
+        mov     r14d,eax
+        bswap   r12d
+        ror     r13d,14
+        mov     r15d,r9d
+
+        xor     r13d,r8d
+        ror     r14d,9
+        xor     r15d,r10d
+
+        mov     DWORD[32+rsp],r12d
+        xor     r14d,eax
+        and     r15d,r8d
+
+        ror     r13d,5
+        add     r12d,r11d
+        xor     r15d,r10d
+
+        ror     r14d,11
+        xor     r13d,r8d
+        add     r12d,r15d
+
+        mov     r15d,eax
+        add     r12d,DWORD[rbp]
+        xor     r14d,eax
+
+        xor     r15d,ebx
+        ror     r13d,6
+        mov     r11d,ebx
+
+        and     edi,r15d
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     r11d,edi
+        add     edx,r12d
+        add     r11d,r12d
+
+        lea     rbp,[4+rbp]
+        add     r11d,r14d
+        mov     r12d,DWORD[36+rsi]
+        mov     r13d,edx
+        mov     r14d,r11d
+        bswap   r12d
+        ror     r13d,14
+        mov     edi,r8d
+
+        xor     r13d,edx
+        ror     r14d,9
+        xor     edi,r9d
+
+        mov     DWORD[36+rsp],r12d
+        xor     r14d,r11d
+        and     edi,edx
+
+        ror     r13d,5
+        add     r12d,r10d
+        xor     edi,r9d
+
+        ror     r14d,11
+        xor     r13d,edx
+        add     r12d,edi
+
+        mov     edi,r11d
+        add     r12d,DWORD[rbp]
+        xor     r14d,r11d
+
+        xor     edi,eax
+        ror     r13d,6
+        mov     r10d,eax
+
+        and     r15d,edi
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     r10d,r15d
+        add     ecx,r12d
+        add     r10d,r12d
+
+        lea     rbp,[4+rbp]
+        add     r10d,r14d
+        mov     r12d,DWORD[40+rsi]
+        mov     r13d,ecx
+        mov     r14d,r10d
+        bswap   r12d
+        ror     r13d,14
+        mov     r15d,edx
+
+        xor     r13d,ecx
+        ror     r14d,9
+        xor     r15d,r8d
+
+        mov     DWORD[40+rsp],r12d
+        xor     r14d,r10d
+        and     r15d,ecx
+
+        ror     r13d,5
+        add     r12d,r9d
+        xor     r15d,r8d
+
+        ror     r14d,11
+        xor     r13d,ecx
+        add     r12d,r15d
+
+        mov     r15d,r10d
+        add     r12d,DWORD[rbp]
+        xor     r14d,r10d
+
+        xor     r15d,r11d
+        ror     r13d,6
+        mov     r9d,r11d
+
+        and     edi,r15d
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     r9d,edi
+        add     ebx,r12d
+        add     r9d,r12d
+
+        lea     rbp,[4+rbp]
+        add     r9d,r14d
+        mov     r12d,DWORD[44+rsi]
+        mov     r13d,ebx
+        mov     r14d,r9d
+        bswap   r12d
+        ror     r13d,14
+        mov     edi,ecx
+
+        xor     r13d,ebx
+        ror     r14d,9
+        xor     edi,edx
+
+        mov     DWORD[44+rsp],r12d
+        xor     r14d,r9d
+        and     edi,ebx
+
+        ror     r13d,5
+        add     r12d,r8d
+        xor     edi,edx
+
+        ror     r14d,11
+        xor     r13d,ebx
+        add     r12d,edi
+
+        mov     edi,r9d
+        add     r12d,DWORD[rbp]
+        xor     r14d,r9d
+
+        xor     edi,r10d
+        ror     r13d,6
+        mov     r8d,r10d
+
+        and     r15d,edi
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     r8d,r15d
+        add     eax,r12d
+        add     r8d,r12d
+
+        lea     rbp,[20+rbp]
+        add     r8d,r14d
+        mov     r12d,DWORD[48+rsi]
+        mov     r13d,eax
+        mov     r14d,r8d
+        bswap   r12d
+        ror     r13d,14
+        mov     r15d,ebx
+
+        xor     r13d,eax
+        ror     r14d,9
+        xor     r15d,ecx
+
+        mov     DWORD[48+rsp],r12d
+        xor     r14d,r8d
+        and     r15d,eax
+
+        ror     r13d,5
+        add     r12d,edx
+        xor     r15d,ecx
+
+        ror     r14d,11
+        xor     r13d,eax
+        add     r12d,r15d
+
+        mov     r15d,r8d
+        add     r12d,DWORD[rbp]
+        xor     r14d,r8d
+
+        xor     r15d,r9d
+        ror     r13d,6
+        mov     edx,r9d
+
+        and     edi,r15d
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     edx,edi
+        add     r11d,r12d
+        add     edx,r12d
+
+        lea     rbp,[4+rbp]
+        add     edx,r14d
+        mov     r12d,DWORD[52+rsi]
+        mov     r13d,r11d
+        mov     r14d,edx
+        bswap   r12d
+        ror     r13d,14
+        mov     edi,eax
+
+        xor     r13d,r11d
+        ror     r14d,9
+        xor     edi,ebx
+
+        mov     DWORD[52+rsp],r12d
+        xor     r14d,edx
+        and     edi,r11d
+
+        ror     r13d,5
+        add     r12d,ecx
+        xor     edi,ebx
+
+        ror     r14d,11
+        xor     r13d,r11d
+        add     r12d,edi
+
+        mov     edi,edx
+        add     r12d,DWORD[rbp]
+        xor     r14d,edx
+
+        xor     edi,r8d
+        ror     r13d,6
+        mov     ecx,r8d
+
+        and     r15d,edi
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     ecx,r15d
+        add     r10d,r12d
+        add     ecx,r12d
+
+        lea     rbp,[4+rbp]
+        add     ecx,r14d
+        mov     r12d,DWORD[56+rsi]
+        mov     r13d,r10d
+        mov     r14d,ecx
+        bswap   r12d
+        ror     r13d,14
+        mov     r15d,r11d
+
+        xor     r13d,r10d
+        ror     r14d,9
+        xor     r15d,eax
+
+        mov     DWORD[56+rsp],r12d
+        xor     r14d,ecx
+        and     r15d,r10d
+
+        ror     r13d,5
+        add     r12d,ebx
+        xor     r15d,eax
+
+        ror     r14d,11
+        xor     r13d,r10d
+        add     r12d,r15d
+
+        mov     r15d,ecx
+        add     r12d,DWORD[rbp]
+        xor     r14d,ecx
+
+        xor     r15d,edx
+        ror     r13d,6
+        mov     ebx,edx
+
+        and     edi,r15d
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     ebx,edi
+        add     r9d,r12d
+        add     ebx,r12d
+
+        lea     rbp,[4+rbp]
+        add     ebx,r14d
+        mov     r12d,DWORD[60+rsi]
+        mov     r13d,r9d
+        mov     r14d,ebx
+        bswap   r12d
+        ror     r13d,14
+        mov     edi,r10d
+
+        xor     r13d,r9d
+        ror     r14d,9
+        xor     edi,r11d
+
+        mov     DWORD[60+rsp],r12d
+        xor     r14d,ebx
+        and     edi,r9d
+
+        ror     r13d,5
+        add     r12d,eax
+        xor     edi,r11d
+
+        ror     r14d,11
+        xor     r13d,r9d
+        add     r12d,edi
+
+        mov     edi,ebx
+        add     r12d,DWORD[rbp]
+        xor     r14d,ebx
+
+        xor     edi,ecx
+        ror     r13d,6
+        mov     eax,ecx
+
+        and     r15d,edi
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     eax,r15d
+        add     r8d,r12d
+        add     eax,r12d
+
+        lea     rbp,[20+rbp]
+        jmp     NEAR $L$rounds_16_xx
+ALIGN   16
+$L$rounds_16_xx:
+        mov     r13d,DWORD[4+rsp]
+        mov     r15d,DWORD[56+rsp]
+
+        mov     r12d,r13d
+        ror     r13d,11
+        add     eax,r14d
+        mov     r14d,r15d
+        ror     r15d,2
+
+        xor     r13d,r12d
+        shr     r12d,3
+        ror     r13d,7
+        xor     r15d,r14d
+        shr     r14d,10
+
+        ror     r15d,17
+        xor     r12d,r13d
+        xor     r15d,r14d
+        add     r12d,DWORD[36+rsp]
+
+        add     r12d,DWORD[rsp]
+        mov     r13d,r8d
+        add     r12d,r15d
+        mov     r14d,eax
+        ror     r13d,14
+        mov     r15d,r9d
+
+        xor     r13d,r8d
+        ror     r14d,9
+        xor     r15d,r10d
+
+        mov     DWORD[rsp],r12d
+        xor     r14d,eax
+        and     r15d,r8d
+
+        ror     r13d,5
+        add     r12d,r11d
+        xor     r15d,r10d
+
+        ror     r14d,11
+        xor     r13d,r8d
+        add     r12d,r15d
+
+        mov     r15d,eax
+        add     r12d,DWORD[rbp]
+        xor     r14d,eax
+
+        xor     r15d,ebx
+        ror     r13d,6
+        mov     r11d,ebx
+
+        and     edi,r15d
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     r11d,edi
+        add     edx,r12d
+        add     r11d,r12d
+
+        lea     rbp,[4+rbp]
+        mov     r13d,DWORD[8+rsp]
+        mov     edi,DWORD[60+rsp]
+
+        mov     r12d,r13d
+        ror     r13d,11
+        add     r11d,r14d
+        mov     r14d,edi
+        ror     edi,2
+
+        xor     r13d,r12d
+        shr     r12d,3
+        ror     r13d,7
+        xor     edi,r14d
+        shr     r14d,10
+
+        ror     edi,17
+        xor     r12d,r13d
+        xor     edi,r14d
+        add     r12d,DWORD[40+rsp]
+
+        add     r12d,DWORD[4+rsp]
+        mov     r13d,edx
+        add     r12d,edi
+        mov     r14d,r11d
+        ror     r13d,14
+        mov     edi,r8d
+
+        xor     r13d,edx
+        ror     r14d,9
+        xor     edi,r9d
+
+        mov     DWORD[4+rsp],r12d
+        xor     r14d,r11d
+        and     edi,edx
+
+        ror     r13d,5
+        add     r12d,r10d
+        xor     edi,r9d
+
+        ror     r14d,11
+        xor     r13d,edx
+        add     r12d,edi
+
+        mov     edi,r11d
+        add     r12d,DWORD[rbp]
+        xor     r14d,r11d
+
+        xor     edi,eax
+        ror     r13d,6
+        mov     r10d,eax
+
+        and     r15d,edi
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     r10d,r15d
+        add     ecx,r12d
+        add     r10d,r12d
+
+        lea     rbp,[4+rbp]
+        mov     r13d,DWORD[12+rsp]
+        mov     r15d,DWORD[rsp]
+
+        mov     r12d,r13d
+        ror     r13d,11
+        add     r10d,r14d
+        mov     r14d,r15d
+        ror     r15d,2
+
+        xor     r13d,r12d
+        shr     r12d,3
+        ror     r13d,7
+        xor     r15d,r14d
+        shr     r14d,10
+
+        ror     r15d,17
+        xor     r12d,r13d
+        xor     r15d,r14d
+        add     r12d,DWORD[44+rsp]
+
+        add     r12d,DWORD[8+rsp]
+        mov     r13d,ecx
+        add     r12d,r15d
+        mov     r14d,r10d
+        ror     r13d,14
+        mov     r15d,edx
+
+        xor     r13d,ecx
+        ror     r14d,9
+        xor     r15d,r8d
+
+        mov     DWORD[8+rsp],r12d
+        xor     r14d,r10d
+        and     r15d,ecx
+
+        ror     r13d,5
+        add     r12d,r9d
+        xor     r15d,r8d
+
+        ror     r14d,11
+        xor     r13d,ecx
+        add     r12d,r15d
+
+        mov     r15d,r10d
+        add     r12d,DWORD[rbp]
+        xor     r14d,r10d
+
+        xor     r15d,r11d
+        ror     r13d,6
+        mov     r9d,r11d
+
+        and     edi,r15d
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     r9d,edi
+        add     ebx,r12d
+        add     r9d,r12d
+
+        lea     rbp,[4+rbp]
+        mov     r13d,DWORD[16+rsp]
+        mov     edi,DWORD[4+rsp]
+
+        mov     r12d,r13d
+        ror     r13d,11
+        add     r9d,r14d
+        mov     r14d,edi
+        ror     edi,2
+
+        xor     r13d,r12d
+        shr     r12d,3
+        ror     r13d,7
+        xor     edi,r14d
+        shr     r14d,10
+
+        ror     edi,17
+        xor     r12d,r13d
+        xor     edi,r14d
+        add     r12d,DWORD[48+rsp]
+
+        add     r12d,DWORD[12+rsp]
+        mov     r13d,ebx
+        add     r12d,edi
+        mov     r14d,r9d
+        ror     r13d,14
+        mov     edi,ecx
+
+        xor     r13d,ebx
+        ror     r14d,9
+        xor     edi,edx
+
+        mov     DWORD[12+rsp],r12d
+        xor     r14d,r9d
+        and     edi,ebx
+
+        ror     r13d,5
+        add     r12d,r8d
+        xor     edi,edx
+
+        ror     r14d,11
+        xor     r13d,ebx
+        add     r12d,edi
+
+        mov     edi,r9d
+        add     r12d,DWORD[rbp]
+        xor     r14d,r9d
+
+        xor     edi,r10d
+        ror     r13d,6
+        mov     r8d,r10d
+
+        and     r15d,edi
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     r8d,r15d
+        add     eax,r12d
+        add     r8d,r12d
+
+        lea     rbp,[20+rbp]
+        mov     r13d,DWORD[20+rsp]
+        mov     r15d,DWORD[8+rsp]
+
+        mov     r12d,r13d
+        ror     r13d,11
+        add     r8d,r14d
+        mov     r14d,r15d
+        ror     r15d,2
+
+        xor     r13d,r12d
+        shr     r12d,3
+        ror     r13d,7
+        xor     r15d,r14d
+        shr     r14d,10
+
+        ror     r15d,17
+        xor     r12d,r13d
+        xor     r15d,r14d
+        add     r12d,DWORD[52+rsp]
+
+        add     r12d,DWORD[16+rsp]
+        mov     r13d,eax
+        add     r12d,r15d
+        mov     r14d,r8d
+        ror     r13d,14
+        mov     r15d,ebx
+
+        xor     r13d,eax
+        ror     r14d,9
+        xor     r15d,ecx
+
+        mov     DWORD[16+rsp],r12d
+        xor     r14d,r8d
+        and     r15d,eax
+
+        ror     r13d,5
+        add     r12d,edx
+        xor     r15d,ecx
+
+        ror     r14d,11
+        xor     r13d,eax
+        add     r12d,r15d
+
+        mov     r15d,r8d
+        add     r12d,DWORD[rbp]
+        xor     r14d,r8d
+
+        xor     r15d,r9d
+        ror     r13d,6
+        mov     edx,r9d
+
+        and     edi,r15d
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     edx,edi
+        add     r11d,r12d
+        add     edx,r12d
+
+        lea     rbp,[4+rbp]
+        mov     r13d,DWORD[24+rsp]
+        mov     edi,DWORD[12+rsp]
+
+        mov     r12d,r13d
+        ror     r13d,11
+        add     edx,r14d
+        mov     r14d,edi
+        ror     edi,2
+
+        xor     r13d,r12d
+        shr     r12d,3
+        ror     r13d,7
+        xor     edi,r14d
+        shr     r14d,10
+
+        ror     edi,17
+        xor     r12d,r13d
+        xor     edi,r14d
+        add     r12d,DWORD[56+rsp]
+
+        add     r12d,DWORD[20+rsp]
+        mov     r13d,r11d
+        add     r12d,edi
+        mov     r14d,edx
+        ror     r13d,14
+        mov     edi,eax
+
+        xor     r13d,r11d
+        ror     r14d,9
+        xor     edi,ebx
+
+        mov     DWORD[20+rsp],r12d
+        xor     r14d,edx
+        and     edi,r11d
+
+        ror     r13d,5
+        add     r12d,ecx
+        xor     edi,ebx
+
+        ror     r14d,11
+        xor     r13d,r11d
+        add     r12d,edi
+
+        mov     edi,edx
+        add     r12d,DWORD[rbp]
+        xor     r14d,edx
+
+        xor     edi,r8d
+        ror     r13d,6
+        mov     ecx,r8d
+
+        and     r15d,edi
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     ecx,r15d
+        add     r10d,r12d
+        add     ecx,r12d
+
+        lea     rbp,[4+rbp]
+        mov     r13d,DWORD[28+rsp]
+        mov     r15d,DWORD[16+rsp]
+
+        mov     r12d,r13d
+        ror     r13d,11
+        add     ecx,r14d
+        mov     r14d,r15d
+        ror     r15d,2
+
+        xor     r13d,r12d
+        shr     r12d,3
+        ror     r13d,7
+        xor     r15d,r14d
+        shr     r14d,10
+
+        ror     r15d,17
+        xor     r12d,r13d
+        xor     r15d,r14d
+        add     r12d,DWORD[60+rsp]
+
+        add     r12d,DWORD[24+rsp]
+        mov     r13d,r10d
+        add     r12d,r15d
+        mov     r14d,ecx
+        ror     r13d,14
+        mov     r15d,r11d
+
+        xor     r13d,r10d
+        ror     r14d,9
+        xor     r15d,eax
+
+        mov     DWORD[24+rsp],r12d
+        xor     r14d,ecx
+        and     r15d,r10d
+
+        ror     r13d,5
+        add     r12d,ebx
+        xor     r15d,eax
+
+        ror     r14d,11
+        xor     r13d,r10d
+        add     r12d,r15d
+
+        mov     r15d,ecx
+        add     r12d,DWORD[rbp]
+        xor     r14d,ecx
+
+        xor     r15d,edx
+        ror     r13d,6
+        mov     ebx,edx
+
+        and     edi,r15d
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     ebx,edi
+        add     r9d,r12d
+        add     ebx,r12d
+
+        lea     rbp,[4+rbp]
+        mov     r13d,DWORD[32+rsp]
+        mov     edi,DWORD[20+rsp]
+
+        mov     r12d,r13d
+        ror     r13d,11
+        add     ebx,r14d
+        mov     r14d,edi
+        ror     edi,2
+
+        xor     r13d,r12d
+        shr     r12d,3
+        ror     r13d,7
+        xor     edi,r14d
+        shr     r14d,10
+
+        ror     edi,17
+        xor     r12d,r13d
+        xor     edi,r14d
+        add     r12d,DWORD[rsp]
+
+        add     r12d,DWORD[28+rsp]
+        mov     r13d,r9d
+        add     r12d,edi
+        mov     r14d,ebx
+        ror     r13d,14
+        mov     edi,r10d
+
+        xor     r13d,r9d
+        ror     r14d,9
+        xor     edi,r11d
+
+        mov     DWORD[28+rsp],r12d
+        xor     r14d,ebx
+        and     edi,r9d
+
+        ror     r13d,5
+        add     r12d,eax
+        xor     edi,r11d
+
+        ror     r14d,11
+        xor     r13d,r9d
+        add     r12d,edi
+
+        mov     edi,ebx
+        add     r12d,DWORD[rbp]
+        xor     r14d,ebx
+
+        xor     edi,ecx
+        ror     r13d,6
+        mov     eax,ecx
+
+        and     r15d,edi
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     eax,r15d
+        add     r8d,r12d
+        add     eax,r12d
+
+        lea     rbp,[20+rbp]
+        mov     r13d,DWORD[36+rsp]
+        mov     r15d,DWORD[24+rsp]
+
+        mov     r12d,r13d
+        ror     r13d,11
+        add     eax,r14d
+        mov     r14d,r15d
+        ror     r15d,2
+
+        xor     r13d,r12d
+        shr     r12d,3
+        ror     r13d,7
+        xor     r15d,r14d
+        shr     r14d,10
+
+        ror     r15d,17
+        xor     r12d,r13d
+        xor     r15d,r14d
+        add     r12d,DWORD[4+rsp]
+
+        add     r12d,DWORD[32+rsp]
+        mov     r13d,r8d
+        add     r12d,r15d
+        mov     r14d,eax
+        ror     r13d,14
+        mov     r15d,r9d
+
+        xor     r13d,r8d
+        ror     r14d,9
+        xor     r15d,r10d
+
+        mov     DWORD[32+rsp],r12d
+        xor     r14d,eax
+        and     r15d,r8d
+
+        ror     r13d,5
+        add     r12d,r11d
+        xor     r15d,r10d
+
+        ror     r14d,11
+        xor     r13d,r8d
+        add     r12d,r15d
+
+        mov     r15d,eax
+        add     r12d,DWORD[rbp]
+        xor     r14d,eax
+
+        xor     r15d,ebx
+        ror     r13d,6
+        mov     r11d,ebx
+
+        and     edi,r15d
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     r11d,edi
+        add     edx,r12d
+        add     r11d,r12d
+
+        lea     rbp,[4+rbp]
+        mov     r13d,DWORD[40+rsp]
+        mov     edi,DWORD[28+rsp]
+
+        mov     r12d,r13d
+        ror     r13d,11
+        add     r11d,r14d
+        mov     r14d,edi
+        ror     edi,2
+
+        xor     r13d,r12d
+        shr     r12d,3
+        ror     r13d,7
+        xor     edi,r14d
+        shr     r14d,10
+
+        ror     edi,17
+        xor     r12d,r13d
+        xor     edi,r14d
+        add     r12d,DWORD[8+rsp]
+
+        add     r12d,DWORD[36+rsp]
+        mov     r13d,edx
+        add     r12d,edi
+        mov     r14d,r11d
+        ror     r13d,14
+        mov     edi,r8d
+
+        xor     r13d,edx
+        ror     r14d,9
+        xor     edi,r9d
+
+        mov     DWORD[36+rsp],r12d
+        xor     r14d,r11d
+        and     edi,edx
+
+        ror     r13d,5
+        add     r12d,r10d
+        xor     edi,r9d
+
+        ror     r14d,11
+        xor     r13d,edx
+        add     r12d,edi
+
+        mov     edi,r11d
+        add     r12d,DWORD[rbp]
+        xor     r14d,r11d
+
+        xor     edi,eax
+        ror     r13d,6
+        mov     r10d,eax
+
+        and     r15d,edi
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     r10d,r15d
+        add     ecx,r12d
+        add     r10d,r12d
+
+        lea     rbp,[4+rbp]
+        mov     r13d,DWORD[44+rsp]
+        mov     r15d,DWORD[32+rsp]
+
+        mov     r12d,r13d
+        ror     r13d,11
+        add     r10d,r14d
+        mov     r14d,r15d
+        ror     r15d,2
+
+        xor     r13d,r12d
+        shr     r12d,3
+        ror     r13d,7
+        xor     r15d,r14d
+        shr     r14d,10
+
+        ror     r15d,17
+        xor     r12d,r13d
+        xor     r15d,r14d
+        add     r12d,DWORD[12+rsp]
+
+        add     r12d,DWORD[40+rsp]
+        mov     r13d,ecx
+        add     r12d,r15d
+        mov     r14d,r10d
+        ror     r13d,14
+        mov     r15d,edx
+
+        xor     r13d,ecx
+        ror     r14d,9
+        xor     r15d,r8d
+
+        mov     DWORD[40+rsp],r12d
+        xor     r14d,r10d
+        and     r15d,ecx
+
+        ror     r13d,5
+        add     r12d,r9d
+        xor     r15d,r8d
+
+        ror     r14d,11
+        xor     r13d,ecx
+        add     r12d,r15d
+
+        mov     r15d,r10d
+        add     r12d,DWORD[rbp]
+        xor     r14d,r10d
+
+        xor     r15d,r11d
+        ror     r13d,6
+        mov     r9d,r11d
+
+        and     edi,r15d
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     r9d,edi
+        add     ebx,r12d
+        add     r9d,r12d
+
+        lea     rbp,[4+rbp]
+        mov     r13d,DWORD[48+rsp]
+        mov     edi,DWORD[36+rsp]
+
+        mov     r12d,r13d
+        ror     r13d,11
+        add     r9d,r14d
+        mov     r14d,edi
+        ror     edi,2
+
+        xor     r13d,r12d
+        shr     r12d,3
+        ror     r13d,7
+        xor     edi,r14d
+        shr     r14d,10
+
+        ror     edi,17
+        xor     r12d,r13d
+        xor     edi,r14d
+        add     r12d,DWORD[16+rsp]
+
+        add     r12d,DWORD[44+rsp]
+        mov     r13d,ebx
+        add     r12d,edi
+        mov     r14d,r9d
+        ror     r13d,14
+        mov     edi,ecx
+
+        xor     r13d,ebx
+        ror     r14d,9
+        xor     edi,edx
+
+        mov     DWORD[44+rsp],r12d
+        xor     r14d,r9d
+        and     edi,ebx
+
+        ror     r13d,5
+        add     r12d,r8d
+        xor     edi,edx
+
+        ror     r14d,11
+        xor     r13d,ebx
+        add     r12d,edi
+
+        mov     edi,r9d
+        add     r12d,DWORD[rbp]
+        xor     r14d,r9d
+
+        xor     edi,r10d
+        ror     r13d,6
+        mov     r8d,r10d
+
+        and     r15d,edi
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     r8d,r15d
+        add     eax,r12d
+        add     r8d,r12d
+
+        lea     rbp,[20+rbp]
+        mov     r13d,DWORD[52+rsp]
+        mov     r15d,DWORD[40+rsp]
+
+        mov     r12d,r13d
+        ror     r13d,11
+        add     r8d,r14d
+        mov     r14d,r15d
+        ror     r15d,2
+
+        xor     r13d,r12d
+        shr     r12d,3
+        ror     r13d,7
+        xor     r15d,r14d
+        shr     r14d,10
+
+        ror     r15d,17
+        xor     r12d,r13d
+        xor     r15d,r14d
+        add     r12d,DWORD[20+rsp]
+
+        add     r12d,DWORD[48+rsp]
+        mov     r13d,eax
+        add     r12d,r15d
+        mov     r14d,r8d
+        ror     r13d,14
+        mov     r15d,ebx
+
+        xor     r13d,eax
+        ror     r14d,9
+        xor     r15d,ecx
+
+        mov     DWORD[48+rsp],r12d
+        xor     r14d,r8d
+        and     r15d,eax
+
+        ror     r13d,5
+        add     r12d,edx
+        xor     r15d,ecx
+
+        ror     r14d,11
+        xor     r13d,eax
+        add     r12d,r15d
+
+        mov     r15d,r8d
+        add     r12d,DWORD[rbp]
+        xor     r14d,r8d
+
+        xor     r15d,r9d
+        ror     r13d,6
+        mov     edx,r9d
+
+        and     edi,r15d
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     edx,edi
+        add     r11d,r12d
+        add     edx,r12d
+
+        lea     rbp,[4+rbp]
+        mov     r13d,DWORD[56+rsp]
+        mov     edi,DWORD[44+rsp]
+
+        mov     r12d,r13d
+        ror     r13d,11
+        add     edx,r14d
+        mov     r14d,edi
+        ror     edi,2
+
+        xor     r13d,r12d
+        shr     r12d,3
+        ror     r13d,7
+        xor     edi,r14d
+        shr     r14d,10
+
+        ror     edi,17
+        xor     r12d,r13d
+        xor     edi,r14d
+        add     r12d,DWORD[24+rsp]
+
+        add     r12d,DWORD[52+rsp]
+        mov     r13d,r11d
+        add     r12d,edi
+        mov     r14d,edx
+        ror     r13d,14
+        mov     edi,eax
+
+        xor     r13d,r11d
+        ror     r14d,9
+        xor     edi,ebx
+
+        mov     DWORD[52+rsp],r12d
+        xor     r14d,edx
+        and     edi,r11d
+
+        ror     r13d,5
+        add     r12d,ecx
+        xor     edi,ebx
+
+        ror     r14d,11
+        xor     r13d,r11d
+        add     r12d,edi
+
+        mov     edi,edx
+        add     r12d,DWORD[rbp]
+        xor     r14d,edx
+
+        xor     edi,r8d
+        ror     r13d,6
+        mov     ecx,r8d
+
+        and     r15d,edi
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     ecx,r15d
+        add     r10d,r12d
+        add     ecx,r12d
+
+        lea     rbp,[4+rbp]
+        mov     r13d,DWORD[60+rsp]
+        mov     r15d,DWORD[48+rsp]
+
+        mov     r12d,r13d
+        ror     r13d,11
+        add     ecx,r14d
+        mov     r14d,r15d
+        ror     r15d,2
+
+        xor     r13d,r12d
+        shr     r12d,3
+        ror     r13d,7
+        xor     r15d,r14d
+        shr     r14d,10
+
+        ror     r15d,17
+        xor     r12d,r13d
+        xor     r15d,r14d
+        add     r12d,DWORD[28+rsp]
+
+        add     r12d,DWORD[56+rsp]
+        mov     r13d,r10d
+        add     r12d,r15d
+        mov     r14d,ecx
+        ror     r13d,14
+        mov     r15d,r11d
+
+        xor     r13d,r10d
+        ror     r14d,9
+        xor     r15d,eax
+
+        mov     DWORD[56+rsp],r12d
+        xor     r14d,ecx
+        and     r15d,r10d
+
+        ror     r13d,5
+        add     r12d,ebx
+        xor     r15d,eax
+
+        ror     r14d,11
+        xor     r13d,r10d
+        add     r12d,r15d
+
+        mov     r15d,ecx
+        add     r12d,DWORD[rbp]
+        xor     r14d,ecx
+
+        xor     r15d,edx
+        ror     r13d,6
+        mov     ebx,edx
+
+        and     edi,r15d
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     ebx,edi
+        add     r9d,r12d
+        add     ebx,r12d
+
+        lea     rbp,[4+rbp]
+        mov     r13d,DWORD[rsp]
+        mov     edi,DWORD[52+rsp]
+
+        mov     r12d,r13d
+        ror     r13d,11
+        add     ebx,r14d
+        mov     r14d,edi
+        ror     edi,2
+
+        xor     r13d,r12d
+        shr     r12d,3
+        ror     r13d,7
+        xor     edi,r14d
+        shr     r14d,10
+
+        ror     edi,17
+        xor     r12d,r13d
+        xor     edi,r14d
+        add     r12d,DWORD[32+rsp]
+
+        add     r12d,DWORD[60+rsp]
+        mov     r13d,r9d
+        add     r12d,edi
+        mov     r14d,ebx
+        ror     r13d,14
+        mov     edi,r10d
+
+        xor     r13d,r9d
+        ror     r14d,9
+        xor     edi,r11d
+
+        mov     DWORD[60+rsp],r12d
+        xor     r14d,ebx
+        and     edi,r9d
+
+        ror     r13d,5
+        add     r12d,eax
+        xor     edi,r11d
+
+        ror     r14d,11
+        xor     r13d,r9d
+        add     r12d,edi
+
+        mov     edi,ebx
+        add     r12d,DWORD[rbp]
+        xor     r14d,ebx
+
+        xor     edi,ecx
+        ror     r13d,6
+        mov     eax,ecx
+
+        and     r15d,edi
+        ror     r14d,2
+        add     r12d,r13d
+
+        xor     eax,r15d
+        add     r8d,r12d
+        add     eax,r12d
+
+        lea     rbp,[20+rbp]
+        cmp     BYTE[3+rbp],0
+        jnz     NEAR $L$rounds_16_xx
+
+        mov     rdi,QWORD[((64+0))+rsp]
+        add     eax,r14d
+        lea     rsi,[64+rsi]
+
+        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[((64+16))+rsp]
+
+        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[88+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$epilogue:
+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
+        mov     rsi,QWORD[16+rsp]
+        DB      0F3h,0C3h               ;repret
+
+$L$SEH_end_sha256_block_data_order:
+ALIGN   64
+
+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      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
+DB      32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
+DB      111,114,103,62,0
+
+ALIGN   64
+sha256_block_data_order_shaext:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_sha256_block_data_order_shaext:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+
+
+_shaext_shortcut:
+
+        lea     rsp,[((-88))+rsp]
+        movaps  XMMWORD[(-8-80)+rax],xmm6
+        movaps  XMMWORD[(-8-64)+rax],xmm7
+        movaps  XMMWORD[(-8-48)+rax],xmm8
+        movaps  XMMWORD[(-8-32)+rax],xmm9
+        movaps  XMMWORD[(-8-16)+rax],xmm10
+$L$prologue_shaext:
+        lea     rcx,[((K256+128))]
+        movdqu  xmm1,XMMWORD[rdi]
+        movdqu  xmm2,XMMWORD[16+rdi]
+        movdqa  xmm7,XMMWORD[((512-128))+rcx]
+
+        pshufd  xmm0,xmm1,0x1b
+        pshufd  xmm1,xmm1,0xb1
+        pshufd  xmm2,xmm2,0x1b
+        movdqa  xmm8,xmm7
+DB      102,15,58,15,202,8
+        punpcklqdq      xmm2,xmm0
+        jmp     NEAR $L$oop_shaext
+
+ALIGN   16
+$L$oop_shaext:
+        movdqu  xmm3,XMMWORD[rsi]
+        movdqu  xmm4,XMMWORD[16+rsi]
+        movdqu  xmm5,XMMWORD[32+rsi]
+DB      102,15,56,0,223
+        movdqu  xmm6,XMMWORD[48+rsi]
+
+        movdqa  xmm0,XMMWORD[((0-128))+rcx]
+        paddd   xmm0,xmm3
+DB      102,15,56,0,231
+        movdqa  xmm10,xmm2
+DB      15,56,203,209
+        pshufd  xmm0,xmm0,0x0e
+        nop
+        movdqa  xmm9,xmm1
+DB      15,56,203,202
+
+        movdqa  xmm0,XMMWORD[((32-128))+rcx]
+        paddd   xmm0,xmm4
+DB      102,15,56,0,239
+DB      15,56,203,209
+        pshufd  xmm0,xmm0,0x0e
+        lea     rsi,[64+rsi]
+DB      15,56,204,220
+DB      15,56,203,202
+
+        movdqa  xmm0,XMMWORD[((64-128))+rcx]
+        paddd   xmm0,xmm5
+DB      102,15,56,0,247
+DB      15,56,203,209
+        pshufd  xmm0,xmm0,0x0e
+        movdqa  xmm7,xmm6
+DB      102,15,58,15,253,4
+        nop
+        paddd   xmm3,xmm7
+DB      15,56,204,229
+DB      15,56,203,202
+
+        movdqa  xmm0,XMMWORD[((96-128))+rcx]
+        paddd   xmm0,xmm6
+DB      15,56,205,222
+DB      15,56,203,209
+        pshufd  xmm0,xmm0,0x0e
+        movdqa  xmm7,xmm3
+DB      102,15,58,15,254,4
+        nop
+        paddd   xmm4,xmm7
+DB      15,56,204,238
+DB      15,56,203,202
+        movdqa  xmm0,XMMWORD[((128-128))+rcx]
+        paddd   xmm0,xmm3
+DB      15,56,205,227
+DB      15,56,203,209
+        pshufd  xmm0,xmm0,0x0e
+        movdqa  xmm7,xmm4
+DB      102,15,58,15,251,4
+        nop
+        paddd   xmm5,xmm7
+DB      15,56,204,243
+DB      15,56,203,202
+        movdqa  xmm0,XMMWORD[((160-128))+rcx]
+        paddd   xmm0,xmm4
+DB      15,56,205,236
+DB      15,56,203,209
+        pshufd  xmm0,xmm0,0x0e
+        movdqa  xmm7,xmm5
+DB      102,15,58,15,252,4
+        nop
+        paddd   xmm6,xmm7
+DB      15,56,204,220
+DB      15,56,203,202
+        movdqa  xmm0,XMMWORD[((192-128))+rcx]
+        paddd   xmm0,xmm5
+DB      15,56,205,245
+DB      15,56,203,209
+        pshufd  xmm0,xmm0,0x0e
+        movdqa  xmm7,xmm6
+DB      102,15,58,15,253,4
+        nop
+        paddd   xmm3,xmm7
+DB      15,56,204,229
+DB      15,56,203,202
+        movdqa  xmm0,XMMWORD[((224-128))+rcx]
+        paddd   xmm0,xmm6
+DB      15,56,205,222
+DB      15,56,203,209
+        pshufd  xmm0,xmm0,0x0e
+        movdqa  xmm7,xmm3
+DB      102,15,58,15,254,4
+        nop
+        paddd   xmm4,xmm7
+DB      15,56,204,238
+DB      15,56,203,202
+        movdqa  xmm0,XMMWORD[((256-128))+rcx]
+        paddd   xmm0,xmm3
+DB      15,56,205,227
+DB      15,56,203,209
+        pshufd  xmm0,xmm0,0x0e
+        movdqa  xmm7,xmm4
+DB      102,15,58,15,251,4
+        nop
+        paddd   xmm5,xmm7
+DB      15,56,204,243
+DB      15,56,203,202
+        movdqa  xmm0,XMMWORD[((288-128))+rcx]
+        paddd   xmm0,xmm4
+DB      15,56,205,236
+DB      15,56,203,209
+        pshufd  xmm0,xmm0,0x0e
+        movdqa  xmm7,xmm5
+DB      102,15,58,15,252,4
+        nop
+        paddd   xmm6,xmm7
+DB      15,56,204,220
+DB      15,56,203,202
+        movdqa  xmm0,XMMWORD[((320-128))+rcx]
+        paddd   xmm0,xmm5
+DB      15,56,205,245
+DB      15,56,203,209
+        pshufd  xmm0,xmm0,0x0e
+        movdqa  xmm7,xmm6
+DB      102,15,58,15,253,4
+        nop
+        paddd   xmm3,xmm7
+DB      15,56,204,229
+DB      15,56,203,202
+        movdqa  xmm0,XMMWORD[((352-128))+rcx]
+        paddd   xmm0,xmm6
+DB      15,56,205,222
+DB      15,56,203,209
+        pshufd  xmm0,xmm0,0x0e
+        movdqa  xmm7,xmm3
+DB      102,15,58,15,254,4
+        nop
+        paddd   xmm4,xmm7
+DB      15,56,204,238
+DB      15,56,203,202
+        movdqa  xmm0,XMMWORD[((384-128))+rcx]
+        paddd   xmm0,xmm3
+DB      15,56,205,227
+DB      15,56,203,209
+        pshufd  xmm0,xmm0,0x0e
+        movdqa  xmm7,xmm4
+DB      102,15,58,15,251,4
+        nop
+        paddd   xmm5,xmm7
+DB      15,56,204,243
+DB      15,56,203,202
+        movdqa  xmm0,XMMWORD[((416-128))+rcx]
+        paddd   xmm0,xmm4
+DB      15,56,205,236
+DB      15,56,203,209
+        pshufd  xmm0,xmm0,0x0e
+        movdqa  xmm7,xmm5
+DB      102,15,58,15,252,4
+DB      15,56,203,202
+        paddd   xmm6,xmm7
+
+        movdqa  xmm0,XMMWORD[((448-128))+rcx]
+        paddd   xmm0,xmm5
+DB      15,56,203,209
+        pshufd  xmm0,xmm0,0x0e
+DB      15,56,205,245
+        movdqa  xmm7,xmm8
+DB      15,56,203,202
+
+        movdqa  xmm0,XMMWORD[((480-128))+rcx]
+        paddd   xmm0,xmm6
+        nop
+DB      15,56,203,209
+        pshufd  xmm0,xmm0,0x0e
+        dec     rdx
+        nop
+DB      15,56,203,202
+
+        paddd   xmm2,xmm10
+        paddd   xmm1,xmm9
+        jnz     NEAR $L$oop_shaext
+
+        pshufd  xmm2,xmm2,0xb1
+        pshufd  xmm7,xmm1,0x1b
+        pshufd  xmm1,xmm1,0xb1
+        punpckhqdq      xmm1,xmm2
+DB      102,15,58,15,215,8
+
+        movdqu  XMMWORD[rdi],xmm1
+        movdqu  XMMWORD[16+rdi],xmm2
+        movaps  xmm6,XMMWORD[((-8-80))+rax]
+        movaps  xmm7,XMMWORD[((-8-64))+rax]
+        movaps  xmm8,XMMWORD[((-8-48))+rax]
+        movaps  xmm9,XMMWORD[((-8-32))+rax]
+        movaps  xmm10,XMMWORD[((-8-16))+rax]
+        mov     rsp,rax
+$L$epilogue_shaext:
+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
+        mov     rsi,QWORD[16+rsp]
+        DB      0F3h,0C3h               ;repret
+
+$L$SEH_end_sha256_block_data_order_shaext:
+
+ALIGN   64
+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:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+
+
+
+$L$ssse3_shortcut:
+        mov     rax,rsp
+
+        push    rbx
+
+        push    rbp
+
+        push    r12
+
+        push    r13
+
+        push    r14
+
+        push    r15
+
+        shl     rdx,4
+        sub     rsp,160
+        lea     rdx,[rdx*4+rsi]
+        and     rsp,-64
+        mov     QWORD[((64+0))+rsp],rdi
+        mov     QWORD[((64+8))+rsp],rsi
+        mov     QWORD[((64+16))+rsp],rdx
+        mov     QWORD[88+rsp],rax
+
+        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[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_ssse3
+ALIGN   16
+$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[48+rsi]
+        lea     rbp,[K256]
+DB      102,15,56,0,207
+        movdqa  xmm4,XMMWORD[rbp]
+        movdqa  xmm5,XMMWORD[32+rbp]
+DB      102,15,56,0,215
+        paddd   xmm4,xmm0
+        movdqa  xmm6,XMMWORD[64+rbp]
+DB      102,15,56,0,223
+        movdqa  xmm7,XMMWORD[96+rbp]
+        paddd   xmm5,xmm1
+        paddd   xmm6,xmm2
+        paddd   xmm7,xmm3
+        movdqa  XMMWORD[rsp],xmm4
+        mov     r14d,eax
+        movdqa  XMMWORD[16+rsp],xmm5
+        mov     edi,ebx
+        movdqa  XMMWORD[32+rsp],xmm6
+        xor     edi,ecx
+        movdqa  XMMWORD[48+rsp],xmm7
+        mov     r13d,r8d
+        jmp     NEAR $L$ssse3_00_47
+
+ALIGN   16
+$L$ssse3_00_47:
+        sub     rbp,-128
+        ror     r13d,14
+        movdqa  xmm4,xmm1
+        mov     eax,r14d
+        mov     r12d,r9d
+        movdqa  xmm7,xmm3
+        ror     r14d,9
+        xor     r13d,r8d
+        xor     r12d,r10d
+        ror     r13d,5
+        xor     r14d,eax
+DB      102,15,58,15,224,4
+        and     r12d,r8d
+        xor     r13d,r8d
+DB      102,15,58,15,250,4
+        add     r11d,DWORD[rsp]
+        mov     r15d,eax
+        xor     r12d,r10d
+        ror     r14d,11
+        movdqa  xmm5,xmm4
+        xor     r15d,ebx
+        add     r11d,r12d
+        movdqa  xmm6,xmm4
+        ror     r13d,6
+        and     edi,r15d
+        psrld   xmm4,3
+        xor     r14d,eax
+        add     r11d,r13d
+        xor     edi,ebx
+        paddd   xmm0,xmm7
+        ror     r14d,2
+        add     edx,r11d
+        psrld   xmm6,7
+        add     r11d,edi
+        mov     r13d,edx
+        pshufd  xmm7,xmm3,250
+        add     r14d,r11d
+        ror     r13d,14
+        pslld   xmm5,14
+        mov     r11d,r14d
+        mov     r12d,r8d
+        pxor    xmm4,xmm6
+        ror     r14d,9
+        xor     r13d,edx
+        xor     r12d,r9d
+        ror     r13d,5
+        psrld   xmm6,11
+        xor     r14d,r11d
+        pxor    xmm4,xmm5
+        and     r12d,edx
+        xor     r13d,edx
+        pslld   xmm5,11
+        add     r10d,DWORD[4+rsp]
+        mov     edi,r11d
+        pxor    xmm4,xmm6
+        xor     r12d,r9d
+        ror     r14d,11
+        movdqa  xmm6,xmm7
+        xor     edi,eax
+        add     r10d,r12d
+        pxor    xmm4,xmm5
+        ror     r13d,6
+        and     r15d,edi
+        xor     r14d,r11d
+        psrld   xmm7,10
+        add     r10d,r13d
+        xor     r15d,eax
+        paddd   xmm0,xmm4
+        ror     r14d,2
+        add     ecx,r10d
+        psrlq   xmm6,17
+        add     r10d,r15d
+        mov     r13d,ecx
+        add     r14d,r10d
+        pxor    xmm7,xmm6
+        ror     r13d,14
+        mov     r10d,r14d
+        mov     r12d,edx
+        ror     r14d,9
+        psrlq   xmm6,2
+        xor     r13d,ecx
+        xor     r12d,r8d
+        pxor    xmm7,xmm6
+        ror     r13d,5
+        xor     r14d,r10d
+        and     r12d,ecx
+        pshufd  xmm7,xmm7,128
+        xor     r13d,ecx
+        add     r9d,DWORD[8+rsp]
+        mov     r15d,r10d
+        psrldq  xmm7,8
+        xor     r12d,r8d
+        ror     r14d,11
+        xor     r15d,r11d
+        add     r9d,r12d
+        ror     r13d,6
+        paddd   xmm0,xmm7
+        and     edi,r15d
+        xor     r14d,r10d
+        add     r9d,r13d
+        pshufd  xmm7,xmm0,80
+        xor     edi,r11d
+        ror     r14d,2
+        add     ebx,r9d
+        movdqa  xmm6,xmm7
+        add     r9d,edi
+        mov     r13d,ebx
+        psrld   xmm7,10
+        add     r14d,r9d
+        ror     r13d,14
+        psrlq   xmm6,17
+        mov     r9d,r14d
+        mov     r12d,ecx
+        pxor    xmm7,xmm6
+        ror     r14d,9
+        xor     r13d,ebx
+        xor     r12d,edx
+        ror     r13d,5
+        xor     r14d,r9d
+        psrlq   xmm6,2
+        and     r12d,ebx
+        xor     r13d,ebx
+        add     r8d,DWORD[12+rsp]
+        pxor    xmm7,xmm6
+        mov     edi,r9d
+        xor     r12d,edx
+        ror     r14d,11
+        pshufd  xmm7,xmm7,8
+        xor     edi,r10d
+        add     r8d,r12d
+        movdqa  xmm6,XMMWORD[rbp]
+        ror     r13d,6
+        and     r15d,edi
+        pslldq  xmm7,8
+        xor     r14d,r9d
+        add     r8d,r13d
+        xor     r15d,r10d
+        paddd   xmm0,xmm7
+        ror     r14d,2
+        add     eax,r8d
+        add     r8d,r15d
+        paddd   xmm6,xmm0
+        mov     r13d,eax
+        add     r14d,r8d
+        movdqa  XMMWORD[rsp],xmm6
+        ror     r13d,14
+        movdqa  xmm4,xmm2
+        mov     r8d,r14d
+        mov     r12d,ebx
+        movdqa  xmm7,xmm0
+        ror     r14d,9
+        xor     r13d,eax
+        xor     r12d,ecx
+        ror     r13d,5
+        xor     r14d,r8d
+DB      102,15,58,15,225,4
+        and     r12d,eax
+        xor     r13d,eax
+DB      102,15,58,15,251,4
+        add     edx,DWORD[16+rsp]
+        mov     r15d,r8d
+        xor     r12d,ecx
+        ror     r14d,11
+        movdqa  xmm5,xmm4
+        xor     r15d,r9d
+        add     edx,r12d
+        movdqa  xmm6,xmm4
+        ror     r13d,6
+        and     edi,r15d
+        psrld   xmm4,3
+        xor     r14d,r8d
+        add     edx,r13d
+        xor     edi,r9d
+        paddd   xmm1,xmm7
+        ror     r14d,2
+        add     r11d,edx
+        psrld   xmm6,7
+        add     edx,edi
+        mov     r13d,r11d
+        pshufd  xmm7,xmm0,250
+        add     r14d,edx
+        ror     r13d,14
+        pslld   xmm5,14
+        mov     edx,r14d
+        mov     r12d,eax
+        pxor    xmm4,xmm6
+        ror     r14d,9
+        xor     r13d,r11d
+        xor     r12d,ebx
+        ror     r13d,5
+        psrld   xmm6,11
+        xor     r14d,edx
+        pxor    xmm4,xmm5
+        and     r12d,r11d
+        xor     r13d,r11d
+        pslld   xmm5,11
+        add     ecx,DWORD[20+rsp]
+        mov     edi,edx
+        pxor    xmm4,xmm6
+        xor     r12d,ebx
+        ror     r14d,11
+        movdqa  xmm6,xmm7
+        xor     edi,r8d
+        add     ecx,r12d
+        pxor    xmm4,xmm5
+        ror     r13d,6
+        and     r15d,edi
+        xor     r14d,edx
+        psrld   xmm7,10
+        add     ecx,r13d
+        xor     r15d,r8d
+        paddd   xmm1,xmm4
+        ror     r14d,2
+        add     r10d,ecx
+        psrlq   xmm6,17
+        add     ecx,r15d
+        mov     r13d,r10d
+        add     r14d,ecx
+        pxor    xmm7,xmm6
+        ror     r13d,14
+        mov     ecx,r14d
+        mov     r12d,r11d
+        ror     r14d,9
+        psrlq   xmm6,2
+        xor     r13d,r10d
+        xor     r12d,eax
+        pxor    xmm7,xmm6
+        ror     r13d,5
+        xor     r14d,ecx
+        and     r12d,r10d
+        pshufd  xmm7,xmm7,128
+        xor     r13d,r10d
+        add     ebx,DWORD[24+rsp]
+        mov     r15d,ecx
+        psrldq  xmm7,8
+        xor     r12d,eax
+        ror     r14d,11
+        xor     r15d,edx
+        add     ebx,r12d
+        ror     r13d,6
+        paddd   xmm1,xmm7
+        and     edi,r15d
+        xor     r14d,ecx
+        add     ebx,r13d
+        pshufd  xmm7,xmm1,80
+        xor     edi,edx
+        ror     r14d,2
+        add     r9d,ebx
+        movdqa  xmm6,xmm7
+        add     ebx,edi
+        mov     r13d,r9d
+        psrld   xmm7,10
+        add     r14d,ebx
+        ror     r13d,14
+        psrlq   xmm6,17
+        mov     ebx,r14d
+        mov     r12d,r10d
+        pxor    xmm7,xmm6
+        ror     r14d,9
+        xor     r13d,r9d
+        xor     r12d,r11d
+        ror     r13d,5
+        xor     r14d,ebx
+        psrlq   xmm6,2
+        and     r12d,r9d
+        xor     r13d,r9d
+        add     eax,DWORD[28+rsp]
+        pxor    xmm7,xmm6
+        mov     edi,ebx
+        xor     r12d,r11d
+        ror     r14d,11
+        pshufd  xmm7,xmm7,8
+        xor     edi,ecx
+        add     eax,r12d
+        movdqa  xmm6,XMMWORD[32+rbp]
+        ror     r13d,6
+        and     r15d,edi
+        pslldq  xmm7,8
+        xor     r14d,ebx
+        add     eax,r13d
+        xor     r15d,ecx
+        paddd   xmm1,xmm7
+        ror     r14d,2
+        add     r8d,eax
+        add     eax,r15d
+        paddd   xmm6,xmm1
+        mov     r13d,r8d
+        add     r14d,eax
+        movdqa  XMMWORD[16+rsp],xmm6
+        ror     r13d,14
+        movdqa  xmm4,xmm3
+        mov     eax,r14d
+        mov     r12d,r9d
+        movdqa  xmm7,xmm1
+        ror     r14d,9
+        xor     r13d,r8d
+        xor     r12d,r10d
+        ror     r13d,5
+        xor     r14d,eax
+DB      102,15,58,15,226,4
+        and     r12d,r8d
+        xor     r13d,r8d
+DB      102,15,58,15,248,4
+        add     r11d,DWORD[32+rsp]
+        mov     r15d,eax
+        xor     r12d,r10d
+        ror     r14d,11
+        movdqa  xmm5,xmm4
+        xor     r15d,ebx
+        add     r11d,r12d
+        movdqa  xmm6,xmm4
+        ror     r13d,6
+        and     edi,r15d
+        psrld   xmm4,3
+        xor     r14d,eax
+        add     r11d,r13d
+        xor     edi,ebx
+        paddd   xmm2,xmm7
+        ror     r14d,2
+        add     edx,r11d
+        psrld   xmm6,7
+        add     r11d,edi
+        mov     r13d,edx
+        pshufd  xmm7,xmm1,250
+        add     r14d,r11d
+        ror     r13d,14
+        pslld   xmm5,14
+        mov     r11d,r14d
+        mov     r12d,r8d
+        pxor    xmm4,xmm6
+        ror     r14d,9
+        xor     r13d,edx
+        xor     r12d,r9d
+        ror     r13d,5
+        psrld   xmm6,11
+        xor     r14d,r11d
+        pxor    xmm4,xmm5
+        and     r12d,edx
+        xor     r13d,edx
+        pslld   xmm5,11
+        add     r10d,DWORD[36+rsp]
+        mov     edi,r11d
+        pxor    xmm4,xmm6
+        xor     r12d,r9d
+        ror     r14d,11
+        movdqa  xmm6,xmm7
+        xor     edi,eax
+        add     r10d,r12d
+        pxor    xmm4,xmm5
+        ror     r13d,6
+        and     r15d,edi
+        xor     r14d,r11d
+        psrld   xmm7,10
+        add     r10d,r13d
+        xor     r15d,eax
+        paddd   xmm2,xmm4
+        ror     r14d,2
+        add     ecx,r10d
+        psrlq   xmm6,17
+        add     r10d,r15d
+        mov     r13d,ecx
+        add     r14d,r10d
+        pxor    xmm7,xmm6
+        ror     r13d,14
+        mov     r10d,r14d
+        mov     r12d,edx
+        ror     r14d,9
+        psrlq   xmm6,2
+        xor     r13d,ecx
+        xor     r12d,r8d
+        pxor    xmm7,xmm6
+        ror     r13d,5
+        xor     r14d,r10d
+        and     r12d,ecx
+        pshufd  xmm7,xmm7,128
+        xor     r13d,ecx
+        add     r9d,DWORD[40+rsp]
+        mov     r15d,r10d
+        psrldq  xmm7,8
+        xor     r12d,r8d
+        ror     r14d,11
+        xor     r15d,r11d
+        add     r9d,r12d
+        ror     r13d,6
+        paddd   xmm2,xmm7
+        and     edi,r15d
+        xor     r14d,r10d
+        add     r9d,r13d
+        pshufd  xmm7,xmm2,80
+        xor     edi,r11d
+        ror     r14d,2
+        add     ebx,r9d
+        movdqa  xmm6,xmm7
+        add     r9d,edi
+        mov     r13d,ebx
+        psrld   xmm7,10
+        add     r14d,r9d
+        ror     r13d,14
+        psrlq   xmm6,17
+        mov     r9d,r14d
+        mov     r12d,ecx
+        pxor    xmm7,xmm6
+        ror     r14d,9
+        xor     r13d,ebx
+        xor     r12d,edx
+        ror     r13d,5
+        xor     r14d,r9d
+        psrlq   xmm6,2
+        and     r12d,ebx
+        xor     r13d,ebx
+        add     r8d,DWORD[44+rsp]
+        pxor    xmm7,xmm6
+        mov     edi,r9d
+        xor     r12d,edx
+        ror     r14d,11
+        pshufd  xmm7,xmm7,8
+        xor     edi,r10d
+        add     r8d,r12d
+        movdqa  xmm6,XMMWORD[64+rbp]
+        ror     r13d,6
+        and     r15d,edi
+        pslldq  xmm7,8
+        xor     r14d,r9d
+        add     r8d,r13d
+        xor     r15d,r10d
+        paddd   xmm2,xmm7
+        ror     r14d,2
+        add     eax,r8d
+        add     r8d,r15d
+        paddd   xmm6,xmm2
+        mov     r13d,eax
+        add     r14d,r8d
+        movdqa  XMMWORD[32+rsp],xmm6
+        ror     r13d,14
+        movdqa  xmm4,xmm0
+        mov     r8d,r14d
+        mov     r12d,ebx
+        movdqa  xmm7,xmm2
+        ror     r14d,9
+        xor     r13d,eax
+        xor     r12d,ecx
+        ror     r13d,5
+        xor     r14d,r8d
+DB      102,15,58,15,227,4
+        and     r12d,eax
+        xor     r13d,eax
+DB      102,15,58,15,249,4
+        add     edx,DWORD[48+rsp]
+        mov     r15d,r8d
+        xor     r12d,ecx
+        ror     r14d,11
+        movdqa  xmm5,xmm4
+        xor     r15d,r9d
+        add     edx,r12d
+        movdqa  xmm6,xmm4
+        ror     r13d,6
+        and     edi,r15d
+        psrld   xmm4,3
+        xor     r14d,r8d
+        add     edx,r13d
+        xor     edi,r9d
+        paddd   xmm3,xmm7
+        ror     r14d,2
+        add     r11d,edx
+        psrld   xmm6,7
+        add     edx,edi
+        mov     r13d,r11d
+        pshufd  xmm7,xmm2,250
+        add     r14d,edx
+        ror     r13d,14
+        pslld   xmm5,14
+        mov     edx,r14d
+        mov     r12d,eax
+        pxor    xmm4,xmm6
+        ror     r14d,9
+        xor     r13d,r11d
+        xor     r12d,ebx
+        ror     r13d,5
+        psrld   xmm6,11
+        xor     r14d,edx
+        pxor    xmm4,xmm5
+        and     r12d,r11d
+        xor     r13d,r11d
+        pslld   xmm5,11
+        add     ecx,DWORD[52+rsp]
+        mov     edi,edx
+        pxor    xmm4,xmm6
+        xor     r12d,ebx
+        ror     r14d,11
+        movdqa  xmm6,xmm7
+        xor     edi,r8d
+        add     ecx,r12d
+        pxor    xmm4,xmm5
+        ror     r13d,6
+        and     r15d,edi
+        xor     r14d,edx
+        psrld   xmm7,10
+        add     ecx,r13d
+        xor     r15d,r8d
+        paddd   xmm3,xmm4
+        ror     r14d,2
+        add     r10d,ecx
+        psrlq   xmm6,17
+        add     ecx,r15d
+        mov     r13d,r10d
+        add     r14d,ecx
+        pxor    xmm7,xmm6
+        ror     r13d,14
+        mov     ecx,r14d
+        mov     r12d,r11d
+        ror     r14d,9
+        psrlq   xmm6,2
+        xor     r13d,r10d
+        xor     r12d,eax
+        pxor    xmm7,xmm6
+        ror     r13d,5
+        xor     r14d,ecx
+        and     r12d,r10d
+        pshufd  xmm7,xmm7,128
+        xor     r13d,r10d
+        add     ebx,DWORD[56+rsp]
+        mov     r15d,ecx
+        psrldq  xmm7,8
+        xor     r12d,eax
+        ror     r14d,11
+        xor     r15d,edx
+        add     ebx,r12d
+        ror     r13d,6
+        paddd   xmm3,xmm7
+        and     edi,r15d
+        xor     r14d,ecx
+        add     ebx,r13d
+        pshufd  xmm7,xmm3,80
+        xor     edi,edx
+        ror     r14d,2
+        add     r9d,ebx
+        movdqa  xmm6,xmm7
+        add     ebx,edi
+        mov     r13d,r9d
+        psrld   xmm7,10
+        add     r14d,ebx
+        ror     r13d,14
+        psrlq   xmm6,17
+        mov     ebx,r14d
+        mov     r12d,r10d
+        pxor    xmm7,xmm6
+        ror     r14d,9
+        xor     r13d,r9d
+        xor     r12d,r11d
+        ror     r13d,5
+        xor     r14d,ebx
+        psrlq   xmm6,2
+        and     r12d,r9d
+        xor     r13d,r9d
+        add     eax,DWORD[60+rsp]
+        pxor    xmm7,xmm6
+        mov     edi,ebx
+        xor     r12d,r11d
+        ror     r14d,11
+        pshufd  xmm7,xmm7,8
+        xor     edi,ecx
+        add     eax,r12d
+        movdqa  xmm6,XMMWORD[96+rbp]
+        ror     r13d,6
+        and     r15d,edi
+        pslldq  xmm7,8
+        xor     r14d,ebx
+        add     eax,r13d
+        xor     r15d,ecx
+        paddd   xmm3,xmm7
+        ror     r14d,2
+        add     r8d,eax
+        add     eax,r15d
+        paddd   xmm6,xmm3
+        mov     r13d,r8d
+        add     r14d,eax
+        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
+        ror     r14d,9
+        xor     r13d,r8d
+        xor     r12d,r10d
+        ror     r13d,5
+        xor     r14d,eax
+        and     r12d,r8d
+        xor     r13d,r8d
+        add     r11d,DWORD[rsp]
+        mov     r15d,eax
+        xor     r12d,r10d
+        ror     r14d,11
+        xor     r15d,ebx
+        add     r11d,r12d
+        ror     r13d,6
+        and     edi,r15d
+        xor     r14d,eax
+        add     r11d,r13d
+        xor     edi,ebx
+        ror     r14d,2
+        add     edx,r11d
+        add     r11d,edi
+        mov     r13d,edx
+        add     r14d,r11d
+        ror     r13d,14
+        mov     r11d,r14d
+        mov     r12d,r8d
+        ror     r14d,9
+        xor     r13d,edx
+        xor     r12d,r9d
+        ror     r13d,5
+        xor     r14d,r11d
+        and     r12d,edx
+        xor     r13d,edx
+        add     r10d,DWORD[4+rsp]
+        mov     edi,r11d
+        xor     r12d,r9d
+        ror     r14d,11
+        xor     edi,eax
+        add     r10d,r12d
+        ror     r13d,6
+        and     r15d,edi
+        xor     r14d,r11d
+        add     r10d,r13d
+        xor     r15d,eax
+        ror     r14d,2
+        add     ecx,r10d
+        add     r10d,r15d
+        mov     r13d,ecx
+        add     r14d,r10d
+        ror     r13d,14
+        mov     r10d,r14d
+        mov     r12d,edx
+        ror     r14d,9
+        xor     r13d,ecx
+        xor     r12d,r8d
+        ror     r13d,5
+        xor     r14d,r10d
+        and     r12d,ecx
+        xor     r13d,ecx
+        add     r9d,DWORD[8+rsp]
+        mov     r15d,r10d
+        xor     r12d,r8d
+        ror     r14d,11
+        xor     r15d,r11d
+        add     r9d,r12d
+        ror     r13d,6
+        and     edi,r15d
+        xor     r14d,r10d
+        add     r9d,r13d
+        xor     edi,r11d
+        ror     r14d,2
+        add     ebx,r9d
+        add     r9d,edi
+        mov     r13d,ebx
+        add     r14d,r9d
+        ror     r13d,14
+        mov     r9d,r14d
+        mov     r12d,ecx
+        ror     r14d,9
+        xor     r13d,ebx
+        xor     r12d,edx
+        ror     r13d,5
+        xor     r14d,r9d
+        and     r12d,ebx
+        xor     r13d,ebx
+        add     r8d,DWORD[12+rsp]
+        mov     edi,r9d
+        xor     r12d,edx
+        ror     r14d,11
+        xor     edi,r10d
+        add     r8d,r12d
+        ror     r13d,6
+        and     r15d,edi
+        xor     r14d,r9d
+        add     r8d,r13d
+        xor     r15d,r10d
+        ror     r14d,2
+        add     eax,r8d
+        add     r8d,r15d
+        mov     r13d,eax
+        add     r14d,r8d
+        ror     r13d,14
+        mov     r8d,r14d
+        mov     r12d,ebx
+        ror     r14d,9
+        xor     r13d,eax
+        xor     r12d,ecx
+        ror     r13d,5
+        xor     r14d,r8d
+        and     r12d,eax
+        xor     r13d,eax
+        add     edx,DWORD[16+rsp]
+        mov     r15d,r8d
+        xor     r12d,ecx
+        ror     r14d,11
+        xor     r15d,r9d
+        add     edx,r12d
+        ror     r13d,6
+        and     edi,r15d
+        xor     r14d,r8d
+        add     edx,r13d
+        xor     edi,r9d
+        ror     r14d,2
+        add     r11d,edx
+        add     edx,edi
+        mov     r13d,r11d
+        add     r14d,edx
+        ror     r13d,14
+        mov     edx,r14d
+        mov     r12d,eax
+        ror     r14d,9
+        xor     r13d,r11d
+        xor     r12d,ebx
+        ror     r13d,5
+        xor     r14d,edx
+        and     r12d,r11d
+        xor     r13d,r11d
+        add     ecx,DWORD[20+rsp]
+        mov     edi,edx
+        xor     r12d,ebx
+        ror     r14d,11
+        xor     edi,r8d
+        add     ecx,r12d
+        ror     r13d,6
+        and     r15d,edi
+        xor     r14d,edx
+        add     ecx,r13d
+        xor     r15d,r8d
+        ror     r14d,2
+        add     r10d,ecx
+        add     ecx,r15d
+        mov     r13d,r10d
+        add     r14d,ecx
+        ror     r13d,14
+        mov     ecx,r14d
+        mov     r12d,r11d
+        ror     r14d,9
+        xor     r13d,r10d
+        xor     r12d,eax
+        ror     r13d,5
+        xor     r14d,ecx
+        and     r12d,r10d
+        xor     r13d,r10d
+        add     ebx,DWORD[24+rsp]
+        mov     r15d,ecx
+        xor     r12d,eax
+        ror     r14d,11
+        xor     r15d,edx
+        add     ebx,r12d
+        ror     r13d,6
+        and     edi,r15d
+        xor     r14d,ecx
+        add     ebx,r13d
+        xor     edi,edx
+        ror     r14d,2
+        add     r9d,ebx
+        add     ebx,edi
+        mov     r13d,r9d
+        add     r14d,ebx
+        ror     r13d,14
+        mov     ebx,r14d
+        mov     r12d,r10d
+        ror     r14d,9
+        xor     r13d,r9d
+        xor     r12d,r11d
+        ror     r13d,5
+        xor     r14d,ebx
+        and     r12d,r9d
+        xor     r13d,r9d
+        add     eax,DWORD[28+rsp]
+        mov     edi,ebx
+        xor     r12d,r11d
+        ror     r14d,11
+        xor     edi,ecx
+        add     eax,r12d
+        ror     r13d,6
+        and     r15d,edi
+        xor     r14d,ebx
+        add     eax,r13d
+        xor     r15d,ecx
+        ror     r14d,2
+        add     r8d,eax
+        add     eax,r15d
+        mov     r13d,r8d
+        add     r14d,eax
+        ror     r13d,14
+        mov     eax,r14d
+        mov     r12d,r9d
+        ror     r14d,9
+        xor     r13d,r8d
+        xor     r12d,r10d
+        ror     r13d,5
+        xor     r14d,eax
+        and     r12d,r8d
+        xor     r13d,r8d
+        add     r11d,DWORD[32+rsp]
+        mov     r15d,eax
+        xor     r12d,r10d
+        ror     r14d,11
+        xor     r15d,ebx
+        add     r11d,r12d
+        ror     r13d,6
+        and     edi,r15d
+        xor     r14d,eax
+        add     r11d,r13d
+        xor     edi,ebx
+        ror     r14d,2
+        add     edx,r11d
+        add     r11d,edi
+        mov     r13d,edx
+        add     r14d,r11d
+        ror     r13d,14
+        mov     r11d,r14d
+        mov     r12d,r8d
+        ror     r14d,9
+        xor     r13d,edx
+        xor     r12d,r9d
+        ror     r13d,5
+        xor     r14d,r11d
+        and     r12d,edx
+        xor     r13d,edx
+        add     r10d,DWORD[36+rsp]
+        mov     edi,r11d
+        xor     r12d,r9d
+        ror     r14d,11
+        xor     edi,eax
+        add     r10d,r12d
+        ror     r13d,6
+        and     r15d,edi
+        xor     r14d,r11d
+        add     r10d,r13d
+        xor     r15d,eax
+        ror     r14d,2
+        add     ecx,r10d
+        add     r10d,r15d
+        mov     r13d,ecx
+        add     r14d,r10d
+        ror     r13d,14
+        mov     r10d,r14d
+        mov     r12d,edx
+        ror     r14d,9
+        xor     r13d,ecx
+        xor     r12d,r8d
+        ror     r13d,5
+        xor     r14d,r10d
+        and     r12d,ecx
+        xor     r13d,ecx
+        add     r9d,DWORD[40+rsp]
+        mov     r15d,r10d
+        xor     r12d,r8d
+        ror     r14d,11
+        xor     r15d,r11d
+        add     r9d,r12d
+        ror     r13d,6
+        and     edi,r15d
+        xor     r14d,r10d
+        add     r9d,r13d
+        xor     edi,r11d
+        ror     r14d,2
+        add     ebx,r9d
+        add     r9d,edi
+        mov     r13d,ebx
+        add     r14d,r9d
+        ror     r13d,14
+        mov     r9d,r14d
+        mov     r12d,ecx
+        ror     r14d,9
+        xor     r13d,ebx
+        xor     r12d,edx
+        ror     r13d,5
+        xor     r14d,r9d
+        and     r12d,ebx
+        xor     r13d,ebx
+        add     r8d,DWORD[44+rsp]
+        mov     edi,r9d
+        xor     r12d,edx
+        ror     r14d,11
+        xor     edi,r10d
+        add     r8d,r12d
+        ror     r13d,6
+        and     r15d,edi
+        xor     r14d,r9d
+        add     r8d,r13d
+        xor     r15d,r10d
+        ror     r14d,2
+        add     eax,r8d
+        add     r8d,r15d
+        mov     r13d,eax
+        add     r14d,r8d
+        ror     r13d,14
+        mov     r8d,r14d
+        mov     r12d,ebx
+        ror     r14d,9
+        xor     r13d,eax
+        xor     r12d,ecx
+        ror     r13d,5
+        xor     r14d,r8d
+        and     r12d,eax
+        xor     r13d,eax
+        add     edx,DWORD[48+rsp]
+        mov     r15d,r8d
+        xor     r12d,ecx
+        ror     r14d,11
+        xor     r15d,r9d
+        add     edx,r12d
+        ror     r13d,6
+        and     edi,r15d
+        xor     r14d,r8d
+        add     edx,r13d
+        xor     edi,r9d
+        ror     r14d,2
+        add     r11d,edx
+        add     edx,edi
+        mov     r13d,r11d
+        add     r14d,edx
+        ror     r13d,14
+        mov     edx,r14d
+        mov     r12d,eax
+        ror     r14d,9
+        xor     r13d,r11d
+        xor     r12d,ebx
+        ror     r13d,5
+        xor     r14d,edx
+        and     r12d,r11d
+        xor     r13d,r11d
+        add     ecx,DWORD[52+rsp]
+        mov     edi,edx
+        xor     r12d,ebx
+        ror     r14d,11
+        xor     edi,r8d
+        add     ecx,r12d
+        ror     r13d,6
+        and     r15d,edi
+        xor     r14d,edx
+        add     ecx,r13d
+        xor     r15d,r8d
+        ror     r14d,2
+        add     r10d,ecx
+        add     ecx,r15d
+        mov     r13d,r10d
+        add     r14d,ecx
+        ror     r13d,14
+        mov     ecx,r14d
+        mov     r12d,r11d
+        ror     r14d,9
+        xor     r13d,r10d
+        xor     r12d,eax
+        ror     r13d,5
+        xor     r14d,ecx
+        and     r12d,r10d
+        xor     r13d,r10d
+        add     ebx,DWORD[56+rsp]
+        mov     r15d,ecx
+        xor     r12d,eax
+        ror     r14d,11
+        xor     r15d,edx
+        add     ebx,r12d
+        ror     r13d,6
+        and     edi,r15d
+        xor     r14d,ecx
+        add     ebx,r13d
+        xor     edi,edx
+        ror     r14d,2
+        add     r9d,ebx
+        add     ebx,edi
+        mov     r13d,r9d
+        add     r14d,ebx
+        ror     r13d,14
+        mov     ebx,r14d
+        mov     r12d,r10d
+        ror     r14d,9
+        xor     r13d,r9d
+        xor     r12d,r11d
+        ror     r13d,5
+        xor     r14d,ebx
+        and     r12d,r9d
+        xor     r13d,r9d
+        add     eax,DWORD[60+rsp]
+        mov     edi,ebx
+        xor     r12d,r11d
+        ror     r14d,11
+        xor     edi,ecx
+        add     eax,r12d
+        ror     r13d,6
+        and     r15d,edi
+        xor     r14d,ebx
+        add     eax,r13d
+        xor     r15d,ecx
+        ror     r14d,2
+        add     r8d,eax
+        add     eax,r15d
+        mov     r13d,r8d
+        add     r14d,eax
+        mov     rdi,QWORD[((64+0))+rsp]
+        mov     eax,r14d
+
+        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[((64+16))+rsp]
+
+        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[88+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[((-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$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:
+EXTERN  __imp_RtlVirtualUnwind
+
+ALIGN   16
+se_handler:
+        push    rsi
+        push    rdi
+        push    rbx
+        push    rbp
+        push    r12
+        push    r13
+        push    r14
+        push    r15
+        pushfq
+        sub     rsp,64
+
+        mov     rax,QWORD[120+r8]
+        mov     rbx,QWORD[248+r8]
+
+        mov     rsi,QWORD[8+r9]
+        mov     r11,QWORD[56+r9]
+
+        mov     r10d,DWORD[r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jb      NEAR $L$in_prologue
+
+        mov     rax,QWORD[152+r8]
+
+        mov     r10d,DWORD[4+r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jae     NEAR $L$in_prologue
+        mov     rsi,rax
+        mov     rax,QWORD[((64+24))+rax]
+
+        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,[$L$epilogue]
+        cmp     rbx,r10
+        jb      NEAR $L$in_prologue
+
+        lea     rsi,[((64+32))+rsi]
+        lea     rdi,[512+r8]
+        mov     ecx,8
+        DD      0xa548f3fc
+
+$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[40+r9]
+        mov     rsi,r8
+        mov     ecx,154
+        DD      0xa548f3fc
+
+        mov     rsi,r9
+        xor     rcx,rcx
+        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
+        popfq
+        pop     r15
+        pop     r14
+        pop     r13
+        pop     r12
+        pop     rbp
+        pop     rbx
+        pop     rdi
+        pop     rsi
+        DB      0F3h,0C3h               ;repret
+
+
+ALIGN   16
+shaext_handler:
+        push    rsi
+        push    rdi
+        push    rbx
+        push    rbp
+        push    r12
+        push    r13
+        push    r14
+        push    r15
+        pushfq
+        sub     rsp,64
+
+        mov     rax,QWORD[120+r8]
+        mov     rbx,QWORD[248+r8]
+
+        lea     r10,[$L$prologue_shaext]
+        cmp     rbx,r10
+        jb      NEAR $L$in_prologue
+
+        lea     r10,[$L$epilogue_shaext]
+        cmp     rbx,r10
+        jae     NEAR $L$in_prologue
+
+        lea     rsi,[((-8-80))+rax]
+        lea     rdi,[512+r8]
+        mov     ecx,10
+        DD      0xa548f3fc
+
+        jmp     NEAR $L$in_prologue
+
+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_shaext wrt ..imagebase
+        DD      $L$SEH_end_sha256_block_data_order_shaext wrt ..imagebase
+        DD      $L$SEH_info_sha256_block_data_order_shaext 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_shaext:
+DB      9,0,0,0
+        DD      shaext_handler 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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
new file mode 100644
index 0000000000..c6397d4393
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
@@ -0,0 +1,1938 @@
+; WARNING: do not edit!
+; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
+;
+; Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.
+;
+; Licensed under the OpenSSL license (the "License").  You may not use
+; this file except in compliance with the License.  You can obtain a copy
+; in the file LICENSE in the source distribution or at
+; https://www.openssl.org/source/license.html
+
+default rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section .text code align=64
+
+
+EXTERN  OPENSSL_ia32cap_P
+global  sha512_block_data_order
+
+ALIGN   16
+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:
+        mov     rdi,rcx
+        mov     rsi,rdx
+        mov     rdx,r8
+
+
+
+        mov     rax,rsp
+
+        push    rbx
+
+        push    rbp
+
+        push    r12
+
+        push    r13
+
+        push    r14
+
+        push    r15
+
+        shl     rdx,4
+        sub     rsp,16*8+4*8
+        lea     rdx,[rdx*8+rsi]
+        and     rsp,-64
+        mov     QWORD[((128+0))+rsp],rdi
+        mov     QWORD[((128+8))+rsp],rsi
+        mov     QWORD[((128+16))+rsp],rdx
+        mov     QWORD[152+rsp],rax
+
+$L$prologue:
+
+        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:
+        mov     rdi,rbx
+        lea     rbp,[K512]
+        xor     rdi,rcx
+        mov     r12,QWORD[rsi]
+        mov     r13,r8
+        mov     r14,rax
+        bswap   r12
+        ror     r13,23
+        mov     r15,r9
+
+        xor     r13,r8
+        ror     r14,5
+        xor     r15,r10
+
+        mov     QWORD[rsp],r12
+        xor     r14,rax
+        and     r15,r8
+
+        ror     r13,4
+        add     r12,r11
+        xor     r15,r10
+
+        ror     r14,6
+        xor     r13,r8
+        add     r12,r15
+
+        mov     r15,rax
+        add     r12,QWORD[rbp]
+        xor     r14,rax
+
+        xor     r15,rbx
+        ror     r13,14
+        mov     r11,rbx
+
+        and     rdi,r15
+        ror     r14,28
+        add     r12,r13
+
+        xor     r11,rdi
+        add     rdx,r12
+        add     r11,r12
+
+        lea     rbp,[8+rbp]
+        add     r11,r14
+        mov     r12,QWORD[8+rsi]
+        mov     r13,rdx
+        mov     r14,r11
+        bswap   r12
+        ror     r13,23
+        mov     rdi,r8
+
+        xor     r13,rdx
+        ror     r14,5
+        xor     rdi,r9
+
+        mov     QWORD[8+rsp],r12
+        xor     r14,r11
+        and     rdi,rdx
+
+        ror     r13,4
+        add     r12,r10
+        xor     rdi,r9
+
+        ror     r14,6
+        xor     r13,rdx
+        add     r12,rdi
+
+        mov     rdi,r11
+        add     r12,QWORD[rbp]
+        xor     r14,r11
+
+        xor     rdi,rax
+        ror     r13,14
+        mov     r10,rax
+
+        and     r15,rdi
+        ror     r14,28
+        add     r12,r13
+
+        xor     r10,r15
+        add     rcx,r12
+        add     r10,r12
+
+        lea     rbp,[24+rbp]
+        add     r10,r14
+        mov     r12,QWORD[16+rsi]
+        mov     r13,rcx
+        mov     r14,r10
+        bswap   r12
+        ror     r13,23
+        mov     r15,rdx
+
+        xor     r13,rcx
+        ror     r14,5
+        xor     r15,r8
+
+        mov     QWORD[16+rsp],r12
+        xor     r14,r10
+        and     r15,rcx
+
+        ror     r13,4
+        add     r12,r9
+        xor     r15,r8
+
+        ror     r14,6
+        xor     r13,rcx
+        add     r12,r15
+
+        mov     r15,r10
+        add     r12,QWORD[rbp]
+        xor     r14,r10
+
+        xor     r15,r11
+        ror     r13,14
+        mov     r9,r11
+
+        and     rdi,r15
+        ror     r14,28
+        add     r12,r13
+
+        xor     r9,rdi
+        add     rbx,r12
+        add     r9,r12
+
+        lea     rbp,[8+rbp]
+        add     r9,r14
+        mov     r12,QWORD[24+rsi]
+        mov     r13,rbx
+        mov     r14,r9
+        bswap   r12
+        ror     r13,23
+        mov     rdi,rcx
+
+        xor     r13,rbx
+        ror     r14,5
+        xor     rdi,rdx
+
+        mov     QWORD[24+rsp],r12
+        xor     r14,r9
+        and     rdi,rbx
+
+        ror     r13,4
+        add     r12,r8
+        xor     rdi,rdx
+
+        ror     r14,6
+        xor     r13,rbx
+        add     r12,rdi
+
+        mov     rdi,r9
+        add     r12,QWORD[rbp]
+        xor     r14,r9
+
+        xor     rdi,r10
+        ror     r13,14
+        mov     r8,r10
+
+        and     r15,rdi
+        ror     r14,28
+        add     r12,r13
+
+        xor     r8,r15
+        add     rax,r12
+        add     r8,r12
+
+        lea     rbp,[24+rbp]
+        add     r8,r14
+        mov     r12,QWORD[32+rsi]
+        mov     r13,rax
+        mov     r14,r8
+        bswap   r12
+        ror     r13,23
+        mov     r15,rbx
+
+        xor     r13,rax
+        ror     r14,5
+        xor     r15,rcx
+
+        mov     QWORD[32+rsp],r12
+        xor     r14,r8
+        and     r15,rax
+
+        ror     r13,4
+        add     r12,rdx
+        xor     r15,rcx
+
+        ror     r14,6
+        xor     r13,rax
+        add     r12,r15
+
+        mov     r15,r8
+        add     r12,QWORD[rbp]
+        xor     r14,r8
+
+        xor     r15,r9
+        ror     r13,14
+        mov     rdx,r9
+
+        and     rdi,r15
+        ror     r14,28
+        add     r12,r13
+
+        xor     rdx,rdi
+        add     r11,r12
+        add     rdx,r12
+
+        lea     rbp,[8+rbp]
+        add     rdx,r14
+        mov     r12,QWORD[40+rsi]
+        mov     r13,r11
+        mov     r14,rdx
+        bswap   r12
+        ror     r13,23
+        mov     rdi,rax
+
+        xor     r13,r11
+        ror     r14,5
+        xor     rdi,rbx
+
+        mov     QWORD[40+rsp],r12
+        xor     r14,rdx
+        and     rdi,r11
+
+        ror     r13,4
+        add     r12,rcx
+        xor     rdi,rbx
+
+        ror     r14,6
+        xor     r13,r11
+        add     r12,rdi
+
+        mov     rdi,rdx
+        add     r12,QWORD[rbp]
+        xor     r14,rdx
+
+        xor     rdi,r8
+        ror     r13,14
+        mov     rcx,r8
+
+        and     r15,rdi
+        ror     r14,28
+        add     r12,r13
+
+        xor     rcx,r15
+        add     r10,r12
+        add     rcx,r12
+
+        lea     rbp,[24+rbp]
+        add     rcx,r14
+        mov     r12,QWORD[48+rsi]
+        mov     r13,r10
+        mov     r14,rcx
+        bswap   r12
+        ror     r13,23
+        mov     r15,r11
+
+        xor     r13,r10
+        ror     r14,5
+        xor     r15,rax
+
+        mov     QWORD[48+rsp],r12
+        xor     r14,rcx
+        and     r15,r10
+
+        ror     r13,4
+        add     r12,rbx
+        xor     r15,rax
+
+        ror     r14,6
+        xor     r13,r10
+        add     r12,r15
+
+        mov     r15,rcx
+        add     r12,QWORD[rbp]
+        xor     r14,rcx
+
+        xor     r15,rdx
+        ror     r13,14
+        mov     rbx,rdx
+
+        and     rdi,r15
+        ror     r14,28
+        add     r12,r13
+
+        xor     rbx,rdi
+        add     r9,r12
+        add     rbx,r12
+
+        lea     rbp,[8+rbp]
+        add     rbx,r14
+        mov     r12,QWORD[56+rsi]
+        mov     r13,r9
+        mov     r14,rbx
+        bswap   r12
+        ror     r13,23
+        mov     rdi,r10
+
+        xor     r13,r9
+        ror     r14,5
+        xor     rdi,r11
+
+        mov     QWORD[56+rsp],r12
+        xor     r14,rbx
+        and     rdi,r9
+
+        ror     r13,4
+        add     r12,rax
+        xor     rdi,r11
+
+        ror     r14,6
+        xor     r13,r9
+        add     r12,rdi
+
+        mov     rdi,rbx
+        add     r12,QWORD[rbp]
+        xor     r14,rbx
+
+        xor     rdi,rcx
+        ror     r13,14
+        mov     rax,rcx
+
+        and     r15,rdi
+        ror     r14,28
+        add     r12,r13
+
+        xor     rax,r15
+        add     r8,r12
+        add     rax,r12
+
+        lea     rbp,[24+rbp]
+        add     rax,r14
+        mov     r12,QWORD[64+rsi]
+        mov     r13,r8
+        mov     r14,rax
+        bswap   r12
+        ror     r13,23
+        mov     r15,r9
+
+        xor     r13,r8
+        ror     r14,5
+        xor     r15,r10
+
+        mov     QWORD[64+rsp],r12
+        xor     r14,rax
+        and     r15,r8
+
+        ror     r13,4
+        add     r12,r11
+        xor     r15,r10
+
+        ror     r14,6
+        xor     r13,r8
+        add     r12,r15
+
+        mov     r15,rax
+        add     r12,QWORD[rbp]
+        xor     r14,rax
+
+        xor     r15,rbx
+        ror     r13,14
+        mov     r11,rbx
+
+        and     rdi,r15
+        ror     r14,28
+        add     r12,r13
+
+        xor     r11,rdi
+        add     rdx,r12
+        add     r11,r12
+
+        lea     rbp,[8+rbp]
+        add     r11,r14
+        mov     r12,QWORD[72+rsi]
+        mov     r13,rdx
+        mov     r14,r11
+        bswap   r12
+        ror     r13,23
+        mov     rdi,r8
+
+        xor     r13,rdx
+        ror     r14,5
+        xor     rdi,r9
+
+        mov     QWORD[72+rsp],r12
+        xor     r14,r11
+        and     rdi,rdx
+
+        ror     r13,4
+        add     r12,r10
+        xor     rdi,r9
+
+        ror     r14,6
+        xor     r13,rdx
+        add     r12,rdi
+
+        mov     rdi,r11
+        add     r12,QWORD[rbp]
+        xor     r14,r11
+
+        xor     rdi,rax
+        ror     r13,14
+        mov     r10,rax
+
+        and     r15,rdi
+        ror     r14,28
+        add     r12,r13
+
+        xor     r10,r15
+        add     rcx,r12
+        add     r10,r12
+
+        lea     rbp,[24+rbp]
+        add     r10,r14
+        mov     r12,QWORD[80+rsi]
+        mov     r13,rcx
+        mov     r14,r10
+        bswap   r12
+        ror     r13,23
+        mov     r15,rdx
+
+        xor     r13,rcx
+        ror     r14,5
+        xor     r15,r8
+
+        mov     QWORD[80+rsp],r12
+        xor     r14,r10
+        and     r15,rcx
+
+        ror     r13,4
+        add     r12,r9
+        xor     r15,r8
+
+        ror     r14,6
+        xor     r13,rcx
+        add     r12,r15
+
+        mov     r15,r10
+        add     r12,QWORD[rbp]
+        xor     r14,r10
+
+        xor     r15,r11
+        ror     r13,14
+        mov     r9,r11
+
+        and     rdi,r15
+        ror     r14,28
+        add     r12,r13
+
+        xor     r9,rdi
+        add     rbx,r12
+        add     r9,r12
+
+        lea     rbp,[8+rbp]
+        add     r9,r14
+        mov     r12,QWORD[88+rsi]
+        mov     r13,rbx
+        mov     r14,r9
+        bswap   r12
+        ror     r13,23
+        mov     rdi,rcx
+
+        xor     r13,rbx
+        ror     r14,5
+        xor     rdi,rdx
+
+        mov     QWORD[88+rsp],r12
+        xor     r14,r9
+        and     rdi,rbx
+
+        ror     r13,4
+        add     r12,r8
+        xor     rdi,rdx
+
+        ror     r14,6
+        xor     r13,rbx
+        add     r12,rdi
+
+        mov     rdi,r9
+        add     r12,QWORD[rbp]
+        xor     r14,r9
+
+        xor     rdi,r10
+        ror     r13,14
+        mov     r8,r10
+
+        and     r15,rdi
+        ror     r14,28
+        add     r12,r13
+
+        xor     r8,r15
+        add     rax,r12
+        add     r8,r12
+
+        lea     rbp,[24+rbp]
+        add     r8,r14
+        mov     r12,QWORD[96+rsi]
+        mov     r13,rax
+        mov     r14,r8
+        bswap   r12
+        ror     r13,23
+        mov     r15,rbx
+
+        xor     r13,rax
+        ror     r14,5
+        xor     r15,rcx
+
+        mov     QWORD[96+rsp],r12
+        xor     r14,r8
+        and     r15,rax
+
+        ror     r13,4
+        add     r12,rdx
+        xor     r15,rcx
+
+        ror     r14,6
+        xor     r13,rax
+        add     r12,r15
+
+        mov     r15,r8
+        add     r12,QWORD[rbp]
+        xor     r14,r8
+
+        xor     r15,r9
+        ror     r13,14
+        mov     rdx,r9
+
+        and     rdi,r15
+        ror     r14,28
+        add     r12,r13
+
+        xor     rdx,rdi
+        add     r11,r12
+        add     rdx,r12
+
+        lea     rbp,[8+rbp]
+        add     rdx,r14
+        mov     r12,QWORD[104+rsi]
+        mov     r13,r11
+        mov     r14,rdx
+        bswap   r12
+        ror     r13,23
+        mov     rdi,rax
+
+        xor     r13,r11
+        ror     r14,5
+        xor     rdi,rbx
+
+        mov     QWORD[104+rsp],r12
+        xor     r14,rdx
+        and     rdi,r11
+
+        ror     r13,4
+        add     r12,rcx
+        xor     rdi,rbx
+
+        ror     r14,6
+        xor     r13,r11
+        add     r12,rdi
+
+        mov     rdi,rdx
+        add     r12,QWORD[rbp]
+        xor     r14,rdx
+
+        xor     rdi,r8
+        ror     r13,14
+        mov     rcx,r8
+
+        and     r15,rdi
+        ror     r14,28
+        add     r12,r13
+
+        xor     rcx,r15
+        add     r10,r12
+        add     rcx,r12
+
+        lea     rbp,[24+rbp]
+        add     rcx,r14
+        mov     r12,QWORD[112+rsi]
+        mov     r13,r10
+        mov     r14,rcx
+        bswap   r12
+        ror     r13,23
+        mov     r15,r11
+
+        xor     r13,r10
+        ror     r14,5
+        xor     r15,rax
+
+        mov     QWORD[112+rsp],r12
+        xor     r14,rcx
+        and     r15,r10
+
+        ror     r13,4
+        add     r12,rbx
+        xor     r15,rax
+
+        ror     r14,6
+        xor     r13,r10
+        add     r12,r15
+
+        mov     r15,rcx
+        add     r12,QWORD[rbp]
+        xor     r14,rcx
+
+        xor     r15,rdx
+        ror     r13,14
+        mov     rbx,rdx
+
+        and     rdi,r15
+        ror     r14,28
+        add     r12,r13
+
+        xor     rbx,rdi
+        add     r9,r12
+        add     rbx,r12
+
+        lea     rbp,[8+rbp]
+        add     rbx,r14
+        mov     r12,QWORD[120+rsi]
+        mov     r13,r9
+        mov     r14,rbx
+        bswap   r12
+        ror     r13,23
+        mov     rdi,r10
+
+        xor     r13,r9
+        ror     r14,5
+        xor     rdi,r11
+
+        mov     QWORD[120+rsp],r12
+        xor     r14,rbx
+        and     rdi,r9
+
+        ror     r13,4
+        add     r12,rax
+        xor     rdi,r11
+
+        ror     r14,6
+        xor     r13,r9
+        add     r12,rdi
+
+        mov     rdi,rbx
+        add     r12,QWORD[rbp]
+        xor     r14,rbx
+
+        xor     rdi,rcx
+        ror     r13,14
+        mov     rax,rcx
+
+        and     r15,rdi
+        ror     r14,28
+        add     r12,r13
+
+        xor     rax,r15
+        add     r8,r12
+        add     rax,r12
+
+        lea     rbp,[24+rbp]
+        jmp     NEAR $L$rounds_16_xx
+ALIGN   16
+$L$rounds_16_xx:
+        mov     r13,QWORD[8+rsp]
+        mov     r15,QWORD[112+rsp]
+
+        mov     r12,r13
+        ror     r13,7
+        add     rax,r14
+        mov     r14,r15
+        ror     r15,42
+
+        xor     r13,r12
+        shr     r12,7
+        ror     r13,1
+        xor     r15,r14
+        shr     r14,6
+
+        ror     r15,19
+        xor     r12,r13
+        xor     r15,r14
+        add     r12,QWORD[72+rsp]
+
+        add     r12,QWORD[rsp]
+        mov     r13,r8
+        add     r12,r15
+        mov     r14,rax
+        ror     r13,23
+        mov     r15,r9
+
+        xor     r13,r8
+        ror     r14,5
+        xor     r15,r10
+
+        mov     QWORD[rsp],r12
+        xor     r14,rax
+        and     r15,r8
+
+        ror     r13,4
+        add     r12,r11
+        xor     r15,r10
+
+        ror     r14,6
+        xor     r13,r8
+        add     r12,r15
+
+        mov     r15,rax
+        add     r12,QWORD[rbp]
+        xor     r14,rax
+
+        xor     r15,rbx
+        ror     r13,14
+        mov     r11,rbx
+
+        and     rdi,r15
+        ror     r14,28
+        add     r12,r13
+
+        xor     r11,rdi
+        add     rdx,r12
+        add     r11,r12
+
+        lea     rbp,[8+rbp]
+        mov     r13,QWORD[16+rsp]
+        mov     rdi,QWORD[120+rsp]
+
+        mov     r12,r13
+        ror     r13,7
+        add     r11,r14
+        mov     r14,rdi
+        ror     rdi,42
+
+        xor     r13,r12
+        shr     r12,7
+        ror     r13,1
+        xor     rdi,r14
+        shr     r14,6
+
+        ror     rdi,19
+        xor     r12,r13
+        xor     rdi,r14
+        add     r12,QWORD[80+rsp]
+
+        add     r12,QWORD[8+rsp]
+        mov     r13,rdx
+        add     r12,rdi
+        mov     r14,r11
+        ror     r13,23
+        mov     rdi,r8
+
+        xor     r13,rdx
+        ror     r14,5
+        xor     rdi,r9
+
+        mov     QWORD[8+rsp],r12
+        xor     r14,r11
+        and     rdi,rdx
+
+        ror     r13,4
+        add     r12,r10
+        xor     rdi,r9
+
+        ror     r14,6
+        xor     r13,rdx
+        add     r12,rdi
+
+        mov     rdi,r11
+        add     r12,QWORD[rbp]
+        xor     r14,r11
+
+        xor     rdi,rax
+        ror     r13,14
+        mov     r10,rax
+
+        and     r15,rdi
+        ror     r14,28
+        add     r12,r13
+
+        xor     r10,r15
+        add     rcx,r12
+        add     r10,r12
+
+        lea     rbp,[24+rbp]
+        mov     r13,QWORD[24+rsp]
+        mov     r15,QWORD[rsp]
+
+        mov     r12,r13
+        ror     r13,7
+        add     r10,r14
+        mov     r14,r15
+        ror     r15,42
+
+        xor     r13,r12
+        shr     r12,7
+        ror     r13,1
+        xor     r15,r14
+        shr     r14,6
+
+        ror     r15,19
+        xor     r12,r13
+        xor     r15,r14
+        add     r12,QWORD[88+rsp]
+
+        add     r12,QWORD[16+rsp]
+        mov     r13,rcx
+        add     r12,r15
+        mov     r14,r10
+        ror     r13,23
+        mov     r15,rdx
+
+        xor     r13,rcx
+        ror     r14,5
+        xor     r15,r8
+
+        mov     QWORD[16+rsp],r12
+        xor     r14,r10
+        and     r15,rcx
+
+        ror     r13,4
+        add     r12,r9
+        xor     r15,r8
+
+        ror     r14,6
+        xor     r13,rcx
+        add     r12,r15
+
+        mov     r15,r10
+        add     r12,QWORD[rbp]
+        xor     r14,r10
+
+        xor     r15,r11
+        ror     r13,14
+        mov     r9,r11
+
+        and     rdi,r15
+        ror     r14,28
+        add     r12,r13
+
+        xor     r9,rdi
+        add     rbx,r12
+        add     r9,r12
+
+        lea     rbp,[8+rbp]
+        mov     r13,QWORD[32+rsp]
+        mov     rdi,QWORD[8+rsp]
+
+        mov     r12,r13
+        ror     r13,7
+        add     r9,r14
+        mov     r14,rdi
+        ror     rdi,42
+
+        xor     r13,r12
+        shr     r12,7
+        ror     r13,1
+        xor     rdi,r14
+        shr     r14,6
+
+        ror     rdi,19
+        xor     r12,r13
+        xor     rdi,r14
+        add     r12,QWORD[96+rsp]
+
+        add     r12,QWORD[24+rsp]
+        mov     r13,rbx
+        add     r12,rdi
+        mov     r14,r9
+        ror     r13,23
+        mov     rdi,rcx
+
+        xor     r13,rbx
+        ror     r14,5
+        xor     rdi,rdx
+
+        mov     QWORD[24+rsp],r12
+        xor     r14,r9
+        and     rdi,rbx
+
+        ror     r13,4
+        add     r12,r8
+        xor     rdi,rdx
+
+        ror     r14,6
+        xor     r13,rbx
+        add     r12,rdi
+
+        mov     rdi,r9
+        add     r12,QWORD[rbp]
+        xor     r14,r9
+
+        xor     rdi,r10
+        ror     r13,14
+        mov     r8,r10
+
+        and     r15,rdi
+        ror     r14,28
+        add     r12,r13
+
+        xor     r8,r15
+        add     rax,r12
+        add     r8,r12
+
+        lea     rbp,[24+rbp]
+        mov     r13,QWORD[40+rsp]
+        mov     r15,QWORD[16+rsp]
+
+        mov     r12,r13
+        ror     r13,7
+        add     r8,r14
+        mov     r14,r15
+        ror     r15,42
+
+        xor     r13,r12
+        shr     r12,7
+        ror     r13,1
+        xor     r15,r14
+        shr     r14,6
+
+        ror     r15,19
+        xor     r12,r13
+        xor     r15,r14
+        add     r12,QWORD[104+rsp]
+
+        add     r12,QWORD[32+rsp]
+        mov     r13,rax
+        add     r12,r15
+        mov     r14,r8
+        ror     r13,23
+        mov     r15,rbx
+
+        xor     r13,rax
+        ror     r14,5
+        xor     r15,rcx
+
+        mov     QWORD[32+rsp],r12
+        xor     r14,r8
+        and     r15,rax
+
+        ror     r13,4
+        add     r12,rdx
+        xor     r15,rcx
+
+        ror     r14,6
+        xor     r13,rax
+        add     r12,r15
+
+        mov     r15,r8
+        add     r12,QWORD[rbp]
+        xor     r14,r8
+
+        xor     r15,r9
+        ror     r13,14
+        mov     rdx,r9
+
+        and     rdi,r15
+        ror     r14,28
+        add     r12,r13
+
+        xor     rdx,rdi
+        add     r11,r12
+        add     rdx,r12
+
+        lea     rbp,[8+rbp]
+        mov     r13,QWORD[48+rsp]
+        mov     rdi,QWORD[24+rsp]
+
+        mov     r12,r13
+        ror     r13,7
+        add     rdx,r14
+        mov     r14,rdi
+        ror     rdi,42
+
+        xor     r13,r12
+        shr     r12,7
+        ror     r13,1
+        xor     rdi,r14
+        shr     r14,6
+
+        ror     rdi,19
+        xor     r12,r13
+        xor     rdi,r14
+        add     r12,QWORD[112+rsp]
+
+        add     r12,QWORD[40+rsp]
+        mov     r13,r11
+        add     r12,rdi
+        mov     r14,rdx
+        ror     r13,23
+        mov     rdi,rax
+
+        xor     r13,r11
+        ror     r14,5
+        xor     rdi,rbx
+
+        mov     QWORD[40+rsp],r12
+        xor     r14,rdx
+        and     rdi,r11
+
+        ror     r13,4
+        add     r12,rcx
+        xor     rdi,rbx
+
+        ror     r14,6
+        xor     r13,r11
+        add     r12,rdi
+
+        mov     rdi,rdx
+        add     r12,QWORD[rbp]
+        xor     r14,rdx
+
+        xor     rdi,r8
+        ror     r13,14
+        mov     rcx,r8
+
+        and     r15,rdi
+        ror     r14,28
+        add     r12,r13
+
+        xor     rcx,r15
+        add     r10,r12
+        add     rcx,r12
+
+        lea     rbp,[24+rbp]
+        mov     r13,QWORD[56+rsp]
+        mov     r15,QWORD[32+rsp]
+
+        mov     r12,r13
+        ror     r13,7
+        add     rcx,r14
+        mov     r14,r15
+        ror     r15,42
+
+        xor     r13,r12
+        shr     r12,7
+        ror     r13,1
+        xor     r15,r14
+        shr     r14,6
+
+        ror     r15,19
+        xor     r12,r13
+        xor     r15,r14
+        add     r12,QWORD[120+rsp]
+
+        add     r12,QWORD[48+rsp]
+        mov     r13,r10
+        add     r12,r15
+        mov     r14,rcx
+        ror     r13,23
+        mov     r15,r11
+
+        xor     r13,r10
+        ror     r14,5
+        xor     r15,rax
+
+        mov     QWORD[48+rsp],r12
+        xor     r14,rcx
+        and     r15,r10
+
+        ror     r13,4
+        add     r12,rbx
+        xor     r15,rax
+
+        ror     r14,6
+        xor     r13,r10
+        add     r12,r15
+
+        mov     r15,rcx
+        add     r12,QWORD[rbp]
+        xor     r14,rcx
+
+        xor     r15,rdx
+        ror     r13,14
+        mov     rbx,rdx
+
+        and     rdi,r15
+        ror     r14,28
+        add     r12,r13
+
+        xor     rbx,rdi
+        add     r9,r12
+        add     rbx,r12
+
+        lea     rbp,[8+rbp]
+        mov     r13,QWORD[64+rsp]
+        mov     rdi,QWORD[40+rsp]
+
+        mov     r12,r13
+        ror     r13,7
+        add     rbx,r14
+        mov     r14,rdi
+        ror     rdi,42
+
+        xor     r13,r12
+        shr     r12,7
+        ror     r13,1
+        xor     rdi,r14
+        shr     r14,6
+
+        ror     rdi,19
+        xor     r12,r13
+        xor     rdi,r14
+        add     r12,QWORD[rsp]
+
+        add     r12,QWORD[56+rsp]
+        mov     r13,r9
+        add     r12,rdi
+        mov     r14,rbx
+        ror     r13,23
+        mov     rdi,r10
+
+        xor     r13,r9
+        ror     r14,5
+        xor     rdi,r11
+
+        mov     QWORD[56+rsp],r12
+        xor     r14,rbx
+        and     rdi,r9
+
+        ror     r13,4
+        add     r12,rax
+        xor     rdi,r11
+
+        ror     r14,6
+        xor     r13,r9
+        add     r12,rdi
+
+        mov     rdi,rbx
+        add     r12,QWORD[rbp]
+        xor     r14,rbx
+
+        xor     rdi,rcx
+        ror     r13,14
+        mov     rax,rcx
+
+        and     r15,rdi
+        ror     r14,28
+        add     r12,r13
+
+        xor     rax,r15
+        add     r8,r12
+        add     rax,r12
+
+        lea     rbp,[24+rbp]
+        mov     r13,QWORD[72+rsp]
+        mov     r15,QWORD[48+rsp]
+
+        mov     r12,r13
+        ror     r13,7
+        add     rax,r14
+        mov     r14,r15
+        ror     r15,42
+
+        xor     r13,r12
+        shr     r12,7
+        ror     r13,1
+        xor     r15,r14
+        shr     r14,6
+
+        ror     r15,19
+        xor     r12,r13
+        xor     r15,r14
+        add     r12,QWORD[8+rsp]
+
+        add     r12,QWORD[64+rsp]
+        mov     r13,r8
+        add     r12,r15
+        mov     r14,rax
+        ror     r13,23
+        mov     r15,r9
+
+        xor     r13,r8
+        ror     r14,5
+        xor     r15,r10
+
+        mov     QWORD[64+rsp],r12
+        xor     r14,rax
+        and     r15,r8
+
+        ror     r13,4
+        add     r12,r11
+        xor     r15,r10
+
+        ror     r14,6
+        xor     r13,r8
+        add     r12,r15
+
+        mov     r15,rax
+        add     r12,QWORD[rbp]
+        xor     r14,rax
+
+        xor     r15,rbx
+        ror     r13,14
+        mov     r11,rbx
+
+        and     rdi,r15
+        ror     r14,28
+        add     r12,r13
+
+        xor     r11,rdi
+        add     rdx,r12
+        add     r11,r12
+
+        lea     rbp,[8+rbp]
+        mov     r13,QWORD[80+rsp]
+        mov     rdi,QWORD[56+rsp]
+
+        mov     r12,r13
+        ror     r13,7
+        add     r11,r14
+        mov     r14,rdi
+        ror     rdi,42
+
+        xor     r13,r12
+        shr     r12,7
+        ror     r13,1
+        xor     rdi,r14
+        shr     r14,6
+
+        ror     rdi,19
+        xor     r12,r13
+        xor     rdi,r14
+        add     r12,QWORD[16+rsp]
+
+        add     r12,QWORD[72+rsp]
+        mov     r13,rdx
+        add     r12,rdi
+        mov     r14,r11
+        ror     r13,23
+        mov     rdi,r8
+
+        xor     r13,rdx
+        ror     r14,5
+        xor     rdi,r9
+
+        mov     QWORD[72+rsp],r12
+        xor     r14,r11
+        and     rdi,rdx
+
+        ror     r13,4
+        add     r12,r10
+        xor     rdi,r9
+
+        ror     r14,6
+        xor     r13,rdx
+        add     r12,rdi
+
+        mov     rdi,r11
+        add     r12,QWORD[rbp]
+        xor     r14,r11
+
+        xor     rdi,rax
+        ror     r13,14
+        mov     r10,rax
+
+        and     r15,rdi
+        ror     r14,28
+        add     r12,r13
+
+        xor     r10,r15
+        add     rcx,r12
+        add     r10,r12
+
+        lea     rbp,[24+rbp]
+        mov     r13,QWORD[88+rsp]
+        mov     r15,QWORD[64+rsp]
+
+        mov     r12,r13
+        ror     r13,7
+        add     r10,r14
+        mov     r14,r15
+        ror     r15,42
+
+        xor     r13,r12
+        shr     r12,7
+        ror     r13,1
+        xor     r15,r14
+        shr     r14,6
+
+        ror     r15,19
+        xor     r12,r13
+        xor     r15,r14
+        add     r12,QWORD[24+rsp]
+
+        add     r12,QWORD[80+rsp]
+        mov     r13,rcx
+        add     r12,r15
+        mov     r14,r10
+        ror     r13,23
+        mov     r15,rdx
+
+        xor     r13,rcx
+        ror     r14,5
+        xor     r15,r8
+
+        mov     QWORD[80+rsp],r12
+        xor     r14,r10
+        and     r15,rcx
+
+        ror     r13,4
+        add     r12,r9
+        xor     r15,r8
+
+        ror     r14,6
+        xor     r13,rcx
+        add     r12,r15
+
+        mov     r15,r10
+        add     r12,QWORD[rbp]
+        xor     r14,r10
+
+        xor     r15,r11
+        ror     r13,14
+        mov     r9,r11
+
+        and     rdi,r15
+        ror     r14,28
+        add     r12,r13
+
+        xor     r9,rdi
+        add     rbx,r12
+        add     r9,r12
+
+        lea     rbp,[8+rbp]
+        mov     r13,QWORD[96+rsp]
+        mov     rdi,QWORD[72+rsp]
+
+        mov     r12,r13
+        ror     r13,7
+        add     r9,r14
+        mov     r14,rdi
+        ror     rdi,42
+
+        xor     r13,r12
+        shr     r12,7
+        ror     r13,1
+        xor     rdi,r14
+        shr     r14,6
+
+        ror     rdi,19
+        xor     r12,r13
+        xor     rdi,r14
+        add     r12,QWORD[32+rsp]
+
+        add     r12,QWORD[88+rsp]
+        mov     r13,rbx
+        add     r12,rdi
+        mov     r14,r9
+        ror     r13,23
+        mov     rdi,rcx
+
+        xor     r13,rbx
+        ror     r14,5
+        xor     rdi,rdx
+
+        mov     QWORD[88+rsp],r12
+        xor     r14,r9
+        and     rdi,rbx
+
+        ror     r13,4
+        add     r12,r8
+        xor     rdi,rdx
+
+        ror     r14,6
+        xor     r13,rbx
+        add     r12,rdi
+
+        mov     rdi,r9
+        add     r12,QWORD[rbp]
+        xor     r14,r9
+
+        xor     rdi,r10
+        ror     r13,14
+        mov     r8,r10
+
+        and     r15,rdi
+        ror     r14,28
+        add     r12,r13
+
+        xor     r8,r15
+        add     rax,r12
+        add     r8,r12
+
+        lea     rbp,[24+rbp]
+        mov     r13,QWORD[104+rsp]
+        mov     r15,QWORD[80+rsp]
+
+        mov     r12,r13
+        ror     r13,7
+        add     r8,r14
+        mov     r14,r15
+        ror     r15,42
+
+        xor     r13,r12
+        shr     r12,7
+        ror     r13,1
+        xor     r15,r14
+        shr     r14,6
+
+        ror     r15,19
+        xor     r12,r13
+        xor     r15,r14
+        add     r12,QWORD[40+rsp]
+
+        add     r12,QWORD[96+rsp]
+        mov     r13,rax
+        add     r12,r15
+        mov     r14,r8
+        ror     r13,23
+        mov     r15,rbx
+
+        xor     r13,rax
+        ror     r14,5
+        xor     r15,rcx
+
+        mov     QWORD[96+rsp],r12
+        xor     r14,r8
+        and     r15,rax
+
+        ror     r13,4
+        add     r12,rdx
+        xor     r15,rcx
+
+        ror     r14,6
+        xor     r13,rax
+        add     r12,r15
+
+        mov     r15,r8
+        add     r12,QWORD[rbp]
+        xor     r14,r8
+
+        xor     r15,r9
+        ror     r13,14
+        mov     rdx,r9
+
+        and     rdi,r15
+        ror     r14,28
+        add     r12,r13
+
+        xor     rdx,rdi
+        add     r11,r12
+        add     rdx,r12
+
+        lea     rbp,[8+rbp]
+        mov     r13,QWORD[112+rsp]
+        mov     rdi,QWORD[88+rsp]
+
+        mov     r12,r13
+        ror     r13,7
+        add     rdx,r14
+        mov     r14,rdi
+        ror     rdi,42
+
+        xor     r13,r12
+        shr     r12,7
+        ror     r13,1
+        xor     rdi,r14
+        shr     r14,6
+
+        ror     rdi,19
+        xor     r12,r13
+        xor     rdi,r14
+        add     r12,QWORD[48+rsp]
+
+        add     r12,QWORD[104+rsp]
+        mov     r13,r11
+        add     r12,rdi
+        mov     r14,rdx
+        ror     r13,23
+        mov     rdi,rax
+
+        xor     r13,r11
+        ror     r14,5
+        xor     rdi,rbx
+
+        mov     QWORD[104+rsp],r12
+        xor     r14,rdx
+        and     rdi,r11
+
+        ror     r13,4
+        add     r12,rcx
+        xor     rdi,rbx
+
+        ror     r14,6
+        xor     r13,r11
+        add     r12,rdi
+
+        mov     rdi,rdx
+        add     r12,QWORD[rbp]
+        xor     r14,rdx
+
+        xor     rdi,r8
+        ror     r13,14
+        mov     rcx,r8
+
+        and     r15,rdi
+        ror     r14,28
+        add     r12,r13
+
+        xor     rcx,r15
+        add     r10,r12
+        add     rcx,r12
+
+        lea     rbp,[24+rbp]
+        mov     r13,QWORD[120+rsp]
+        mov     r15,QWORD[96+rsp]
+
+        mov     r12,r13
+        ror     r13,7
+        add     rcx,r14
+        mov     r14,r15
+        ror     r15,42
+
+        xor     r13,r12
+        shr     r12,7
+        ror     r13,1
+        xor     r15,r14
+        shr     r14,6
+
+        ror     r15,19
+        xor     r12,r13
+        xor     r15,r14
+        add     r12,QWORD[56+rsp]
+
+        add     r12,QWORD[112+rsp]
+        mov     r13,r10
+        add     r12,r15
+        mov     r14,rcx
+        ror     r13,23
+        mov     r15,r11
+
+        xor     r13,r10
+        ror     r14,5
+        xor     r15,rax
+
+        mov     QWORD[112+rsp],r12
+        xor     r14,rcx
+        and     r15,r10
+
+        ror     r13,4
+        add     r12,rbx
+        xor     r15,rax
+
+        ror     r14,6
+        xor     r13,r10
+        add     r12,r15
+
+        mov     r15,rcx
+        add     r12,QWORD[rbp]
+        xor     r14,rcx
+
+        xor     r15,rdx
+        ror     r13,14
+        mov     rbx,rdx
+
+        and     rdi,r15
+        ror     r14,28
+        add     r12,r13
+
+        xor     rbx,rdi
+        add     r9,r12
+        add     rbx,r12
+
+        lea     rbp,[8+rbp]
+        mov     r13,QWORD[rsp]
+        mov     rdi,QWORD[104+rsp]
+
+        mov     r12,r13
+        ror     r13,7
+        add     rbx,r14
+        mov     r14,rdi
+        ror     rdi,42
+
+        xor     r13,r12
+        shr     r12,7
+        ror     r13,1
+        xor     rdi,r14
+        shr     r14,6
+
+        ror     rdi,19
+        xor     r12,r13
+        xor     rdi,r14
+        add     r12,QWORD[64+rsp]
+
+        add     r12,QWORD[120+rsp]
+        mov     r13,r9
+        add     r12,rdi
+        mov     r14,rbx
+        ror     r13,23
+        mov     rdi,r10
+
+        xor     r13,r9
+        ror     r14,5
+        xor     rdi,r11
+
+        mov     QWORD[120+rsp],r12
+        xor     r14,rbx
+        and     rdi,r9
+
+        ror     r13,4
+        add     r12,rax
+        xor     rdi,r11
+
+        ror     r14,6
+        xor     r13,r9
+        add     r12,rdi
+
+        mov     rdi,rbx
+        add     r12,QWORD[rbp]
+        xor     r14,rbx
+
+        xor     rdi,rcx
+        ror     r13,14
+        mov     rax,rcx
+
+        and     r15,rdi
+        ror     r14,28
+        add     r12,r13
+
+        xor     rax,r15
+        add     r8,r12
+        add     rax,r12
+
+        lea     rbp,[24+rbp]
+        cmp     BYTE[7+rbp],0
+        jnz     NEAR $L$rounds_16_xx
+
+        mov     rdi,QWORD[((128+0))+rsp]
+        add     rax,r14
+        lea     rsi,[128+rsi]
+
+        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[((128+16))+rsp]
+
+        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[152+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$epilogue:
+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
+        mov     rsi,QWORD[16+rsp]
+        DB      0F3h,0C3h               ;repret
+
+$L$SEH_end_sha512_block_data_order:
+ALIGN   64
+
+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      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
+
+ALIGN   16
+se_handler:
+        push    rsi
+        push    rdi
+        push    rbx
+        push    rbp
+        push    r12
+        push    r13
+        push    r14
+        push    r15
+        pushfq
+        sub     rsp,64
+
+        mov     rax,QWORD[120+r8]
+        mov     rbx,QWORD[248+r8]
+
+        mov     rsi,QWORD[8+r9]
+        mov     r11,QWORD[56+r9]
+
+        mov     r10d,DWORD[r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jb      NEAR $L$in_prologue
+
+        mov     rax,QWORD[152+r8]
+
+        mov     r10d,DWORD[4+r11]
+        lea     r10,[r10*1+rsi]
+        cmp     rbx,r10
+        jae     NEAR $L$in_prologue
+        mov     rsi,rax
+        mov     rax,QWORD[((128+24))+rax]
+
+        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,[$L$epilogue]
+        cmp     rbx,r10
+        jb      NEAR $L$in_prologue
+
+        lea     rsi,[((128+32))+rsi]
+        lea     rdi,[512+r8]
+        mov     ecx,12
+        DD      0xa548f3fc
+
+$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[40+r9]
+        mov     rsi,r8
+        mov     ecx,154
+        DD      0xa548f3fc
+
+        mov     rsi,r9
+        xor     rcx,rcx
+        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
+        popfq
+        pop     r15
+        pop     r14
+        pop     r13
+        pop     r12
+        pop     rbp
+        pop     rbx
+        pop     rdi
+        pop     rsi
+        DB      0F3h,0C3h               ;repret
+
+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/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
new file mode 100644
index 0000000000..2a3d5bcf72
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
@@ -0,0 +1,491 @@
+; WARNING: do not edit!
+; Generated from openssl/crypto/x86_64cpuid.pl
+;
+; Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.
+;
+; Licensed under the OpenSSL license (the "License").  You may not use
+; this file except in compliance with the License.  You can obtain a copy
+; in the file LICENSE in the source distribution or at
+; https://www.openssl.org/source/license.html
+
+default rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+EXTERN  OPENSSL_cpuid_setup
+
+section .CRT$XCU rdata align=8
+                DQ      OPENSSL_cpuid_setup
+
+
+common  OPENSSL_ia32cap_P 16
+
+section .text code align=64
+
+
+global  OPENSSL_atomic_add
+
+ALIGN   16
+OPENSSL_atomic_add:
+
+        mov     eax,DWORD[rcx]
+$L$spin:        lea     r8,[rax*1+rdx]
+DB      0xf0
+        cmpxchg DWORD[rcx],r8d
+        jne     NEAR $L$spin
+        mov     eax,r8d
+DB      0x48,0x98
+        DB      0F3h,0C3h               ;repret
+
+
+
+global  OPENSSL_rdtsc
+
+ALIGN   16
+OPENSSL_rdtsc:
+
+        rdtsc
+        shl     rdx,32
+        or      rax,rdx
+        DB      0F3h,0C3h               ;repret
+
+
+
+global  OPENSSL_ia32_cpuid
+
+ALIGN   16
+OPENSSL_ia32_cpuid:
+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
+        mov     QWORD[16+rsp],rsi
+        mov     rax,rsp
+$L$SEH_begin_OPENSSL_ia32_cpuid:
+        mov     rdi,rcx
+
+
+
+        mov     r8,rbx
+
+
+        xor     eax,eax
+        mov     QWORD[8+rdi],rax
+        cpuid
+        mov     r11d,eax
+
+        xor     eax,eax
+        cmp     ebx,0x756e6547
+        setne   al
+        mov     r9d,eax
+        cmp     edx,0x49656e69
+        setne   al
+        or      r9d,eax
+        cmp     ecx,0x6c65746e
+        setne   al
+        or      r9d,eax
+        jz      NEAR $L$intel
+
+        cmp     ebx,0x68747541
+        setne   al
+        mov     r10d,eax
+        cmp     edx,0x69746E65
+        setne   al
+        or      r10d,eax
+        cmp     ecx,0x444D4163
+        setne   al
+        or      r10d,eax
+        jnz     NEAR $L$intel
+
+
+        mov     eax,0x80000000
+        cpuid
+        cmp     eax,0x80000001
+        jb      NEAR $L$intel
+        mov     r10d,eax
+        mov     eax,0x80000001
+        cpuid
+        or      r9d,ecx
+        and     r9d,0x00000801
+
+        cmp     r10d,0x80000008
+        jb      NEAR $L$intel
+
+        mov     eax,0x80000008
+        cpuid
+        movzx   r10,cl
+        inc     r10
+
+        mov     eax,1
+        cpuid
+        bt      edx,28
+        jnc     NEAR $L$generic
+        shr     ebx,16
+        cmp     bl,r10b
+        ja      NEAR $L$generic
+        and     edx,0xefffffff
+        jmp     NEAR $L$generic
+
+$L$intel:
+        cmp     r11d,4
+        mov     r10d,-1
+        jb      NEAR $L$nocacheinfo
+
+        mov     eax,4
+        mov     ecx,0
+        cpuid
+        mov     r10d,eax
+        shr     r10d,14
+        and     r10d,0xfff
+
+$L$nocacheinfo:
+        mov     eax,1
+        cpuid
+        movd    xmm0,eax
+        and     edx,0xbfefffff
+        cmp     r9d,0
+        jne     NEAR $L$notintel
+        or      edx,0x40000000
+        and     ah,15
+        cmp     ah,15
+        jne     NEAR $L$notP4
+        or      edx,0x00100000
+$L$notP4:
+        cmp     ah,6
+        jne     NEAR $L$notintel
+        and     eax,0x0fff0ff0
+        cmp     eax,0x00050670
+        je      NEAR $L$knights
+        cmp     eax,0x00080650
+        jne     NEAR $L$notintel
+$L$knights:
+        and     ecx,0xfbffffff
+
+$L$notintel:
+        bt      edx,28
+        jnc     NEAR $L$generic
+        and     edx,0xefffffff
+        cmp     r10d,0
+        je      NEAR $L$generic
+
+        or      edx,0x10000000
+        shr     ebx,16
+        cmp     bl,1
+        ja      NEAR $L$generic
+        and     edx,0xefffffff
+$L$generic:
+        and     r9d,0x00000800
+        and     ecx,0xfffff7ff
+        or      r9d,ecx
+
+        mov     r10d,edx
+
+        cmp     r11d,7
+        jb      NEAR $L$no_extended_info
+        mov     eax,7
+        xor     ecx,ecx
+        cpuid
+        bt      r9d,26
+        jc      NEAR $L$notknights
+        and     ebx,0xfff7ffff
+$L$notknights:
+        movd    eax,xmm0
+        and     eax,0x0fff0ff0
+        cmp     eax,0x00050650
+        jne     NEAR $L$notskylakex
+        and     ebx,0xfffeffff
+
+$L$notskylakex:
+        mov     DWORD[8+rdi],ebx
+        mov     DWORD[12+rdi],ecx
+$L$no_extended_info:
+
+        bt      r9d,27
+        jnc     NEAR $L$clear_avx
+        xor     ecx,ecx
+DB      0x0f,0x01,0xd0
+        and     eax,0xe6
+        cmp     eax,0xe6
+        je      NEAR $L$done
+        and     DWORD[8+rdi],0x3fdeffff
+
+
+
+
+        and     eax,6
+        cmp     eax,6
+        je      NEAR $L$done
+$L$clear_avx:
+        mov     eax,0xefffe7ff
+        and     r9d,eax
+        mov     eax,0x3fdeffdf
+        and     DWORD[8+rdi],eax
+$L$done:
+        shl     r9,32
+        mov     eax,r10d
+        mov     rbx,r8
+
+        or      rax,r9
+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
+        mov     rsi,QWORD[16+rsp]
+        DB      0F3h,0C3h               ;repret
+
+$L$SEH_end_OPENSSL_ia32_cpuid:
+
+global  OPENSSL_cleanse
+
+ALIGN   16
+OPENSSL_cleanse:
+
+        xor     rax,rax
+        cmp     rdx,15
+        jae     NEAR $L$ot
+        cmp     rdx,0
+        je      NEAR $L$ret
+$L$ittle:
+        mov     BYTE[rcx],al
+        sub     rdx,1
+        lea     rcx,[1+rcx]
+        jnz     NEAR $L$ittle
+$L$ret:
+        DB      0F3h,0C3h               ;repret
+ALIGN   16
+$L$ot:
+        test    rcx,7
+        jz      NEAR $L$aligned
+        mov     BYTE[rcx],al
+        lea     rdx,[((-1))+rdx]
+        lea     rcx,[1+rcx]
+        jmp     NEAR $L$ot
+$L$aligned:
+        mov     QWORD[rcx],rax
+        lea     rdx,[((-8))+rdx]
+        test    rdx,-8
+        lea     rcx,[8+rcx]
+        jnz     NEAR $L$aligned
+        cmp     rdx,0
+        jne     NEAR $L$ittle
+        DB      0F3h,0C3h               ;repret
+
+
+
+global  CRYPTO_memcmp
+
+ALIGN   16
+CRYPTO_memcmp:
+
+        xor     rax,rax
+        xor     r10,r10
+        cmp     r8,0
+        je      NEAR $L$no_data
+        cmp     r8,16
+        jne     NEAR $L$oop_cmp
+        mov     r10,QWORD[rcx]
+        mov     r11,QWORD[8+rcx]
+        mov     r8,1
+        xor     r10,QWORD[rdx]
+        xor     r11,QWORD[8+rdx]
+        or      r10,r11
+        cmovnz  rax,r8
+        DB      0F3h,0C3h               ;repret
+
+ALIGN   16
+$L$oop_cmp:
+        mov     r10b,BYTE[rcx]
+        lea     rcx,[1+rcx]
+        xor     r10b,BYTE[rdx]
+        lea     rdx,[1+rdx]
+        or      al,r10b
+        dec     r8
+        jnz     NEAR $L$oop_cmp
+        neg     rax
+        shr     rax,63
+$L$no_data:
+        DB      0F3h,0C3h               ;repret
+
+
+global  OPENSSL_wipe_cpu
+
+ALIGN   16
+OPENSSL_wipe_cpu:
+        pxor    xmm0,xmm0
+        pxor    xmm1,xmm1
+        pxor    xmm2,xmm2
+        pxor    xmm3,xmm3
+        pxor    xmm4,xmm4
+        pxor    xmm5,xmm5
+        xor     rcx,rcx
+        xor     rdx,rdx
+        xor     r8,r8
+        xor     r9,r9
+        xor     r10,r10
+        xor     r11,r11
+        lea     rax,[8+rsp]
+        DB      0F3h,0C3h               ;repret
+
+global  OPENSSL_instrument_bus
+
+ALIGN   16
+OPENSSL_instrument_bus:
+
+        mov     r10,rcx
+        mov     rcx,rdx
+        mov     r11,rdx
+
+        rdtsc
+        mov     r8d,eax
+        mov     r9d,0
+        clflush [r10]
+DB      0xf0
+        add     DWORD[r10],r9d
+        jmp     NEAR $L$oop
+ALIGN   16
+$L$oop: rdtsc
+        mov     edx,eax
+        sub     eax,r8d
+        mov     r8d,edx
+        mov     r9d,eax
+        clflush [r10]
+DB      0xf0
+        add     DWORD[r10],eax
+        lea     r10,[4+r10]
+        sub     rcx,1
+        jnz     NEAR $L$oop
+
+        mov     rax,r11
+        DB      0F3h,0C3h               ;repret
+
+
+
+global  OPENSSL_instrument_bus2
+
+ALIGN   16
+OPENSSL_instrument_bus2:
+
+        mov     r10,rcx
+        mov     rcx,rdx
+        mov     r11,r8
+        mov     QWORD[8+rsp],rcx
+
+        rdtsc
+        mov     r8d,eax
+        mov     r9d,0
+
+        clflush [r10]
+DB      0xf0
+        add     DWORD[r10],r9d
+
+        rdtsc
+        mov     edx,eax
+        sub     eax,r8d
+        mov     r8d,edx
+        mov     r9d,eax
+$L$oop2:
+        clflush [r10]
+DB      0xf0
+        add     DWORD[r10],eax
+
+        sub     r11,1
+        jz      NEAR $L$done2
+
+        rdtsc
+        mov     edx,eax
+        sub     eax,r8d
+        mov     r8d,edx
+        cmp     eax,r9d
+        mov     r9d,eax
+        mov     edx,0
+        setne   dl
+        sub     rcx,rdx
+        lea     r10,[rdx*4+r10]
+        jnz     NEAR $L$oop2
+
+$L$done2:
+        mov     rax,QWORD[8+rsp]
+        sub     rax,rcx
+        DB      0F3h,0C3h               ;repret
+
+
+global  OPENSSL_ia32_rdrand_bytes
+
+ALIGN   16
+OPENSSL_ia32_rdrand_bytes:
+
+        xor     rax,rax
+        cmp     rdx,0
+        je      NEAR $L$done_rdrand_bytes
+
+        mov     r11,8
+$L$oop_rdrand_bytes:
+DB      73,15,199,242
+        jc      NEAR $L$break_rdrand_bytes
+        dec     r11
+        jnz     NEAR $L$oop_rdrand_bytes
+        jmp     NEAR $L$done_rdrand_bytes
+
+ALIGN   16
+$L$break_rdrand_bytes:
+        cmp     rdx,8
+        jb      NEAR $L$tail_rdrand_bytes
+        mov     QWORD[rcx],r10
+        lea     rcx,[8+rcx]
+        add     rax,8
+        sub     rdx,8
+        jz      NEAR $L$done_rdrand_bytes
+        mov     r11,8
+        jmp     NEAR $L$oop_rdrand_bytes
+
+ALIGN   16
+$L$tail_rdrand_bytes:
+        mov     BYTE[rcx],r10b
+        lea     rcx,[1+rcx]
+        inc     rax
+        shr     r10,8
+        dec     rdx
+        jnz     NEAR $L$tail_rdrand_bytes
+
+$L$done_rdrand_bytes:
+        xor     r10,r10
+        DB      0F3h,0C3h               ;repret
+
+
+global  OPENSSL_ia32_rdseed_bytes
+
+ALIGN   16
+OPENSSL_ia32_rdseed_bytes:
+
+        xor     rax,rax
+        cmp     rdx,0
+        je      NEAR $L$done_rdseed_bytes
+
+        mov     r11,8
+$L$oop_rdseed_bytes:
+DB      73,15,199,250
+        jc      NEAR $L$break_rdseed_bytes
+        dec     r11
+        jnz     NEAR $L$oop_rdseed_bytes
+        jmp     NEAR $L$done_rdseed_bytes
+
+ALIGN   16
+$L$break_rdseed_bytes:
+        cmp     rdx,8
+        jb      NEAR $L$tail_rdseed_bytes
+        mov     QWORD[rcx],r10
+        lea     rcx,[8+rcx]
+        add     rax,8
+        sub     rdx,8
+        jz      NEAR $L$done_rdseed_bytes
+        mov     r11,8
+        jmp     NEAR $L$oop_rdseed_bytes
+
+ALIGN   16
+$L$tail_rdseed_bytes:
+        mov     BYTE[rcx],r10b
+        lea     rcx,[1+rcx]
+        inc     rax
+        shr     r10,8
+        dec     rdx
+        jnz     NEAR $L$tail_rdseed_bytes
+
+$L$done_rdseed_bytes:
+        xor     r10,r10
+        DB      0F3h,0C3h               ;repret
+
+
-- 
2.28.0.windows.1


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

* Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
  2020-08-04  0:24 ` [PATCH v2 1/2] " Zurcher, Christopher J
@ 2020-08-11 11:46   ` Guomin Jiang
  2020-08-13 15:03   ` Yao, Jiewen
  1 sibling, 0 replies; 42+ messages in thread
From: Guomin Jiang @ 2020-08-11 11:46 UTC (permalink / raw)
  To: devel@edk2.groups.io, Zurcher, Christopher J
  Cc: Yao, Jiewen, Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel

It is slight complex, I will review it by 9/11/2020.

Thanks.
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Zurcher,
> Christopher J
> Sent: Tuesday, August 4, 2020 8:24 AM
> To: devel@edk2.groups.io
> Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard
> Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> instruction support for X64
> 
> BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> 
> Adding OpensslLibX64.inf and modifying process_files.pl to process this file
> and generate the necessary assembly files.
> ApiHooks.c contains a stub function for a Windows API call.
> uefi-asm.conf contains the limited assembly configurations for OpenSSL.
> 
> Cc: Jiewen Yao <jiewen.yao@intel.com>
> Cc: Jian J Wang <jian.j.wang@intel.com>
> Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Signed-off-by: Christopher J Zurcher <christopher.j.zurcher@intel.com>
> ---
>  CryptoPkg/Library/OpensslLib/OpensslLib.inf          |   2 +-
>  CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf    |   2 +-
>  CryptoPkg/Library/OpensslLib/OpensslLibX64.inf       | 656
> ++++++++++++++++++++
>  CryptoPkg/Library/Include/openssl/opensslconf.h      |   3 -
>  CryptoPkg/Library/OpensslLib/ApiHooks.c              |  18 +
>  CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c |  34 +
>  CryptoPkg/Library/OpensslLib/process_files.pl        | 223 +++++--
>  CryptoPkg/Library/OpensslLib/uefi-asm.conf           |  15 +
>  8 files changed, 903 insertions(+), 50 deletions(-)
> 
> diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> index dbbe5386a1..bd62d86936 100644
> --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> @@ -16,7 +16,7 @@
>    VERSION_STRING                 = 1.0   LIBRARY_CLASS                  = OpensslLib
> DEFINE OPENSSL_PATH            = openssl-  DEFINE OPENSSL_FLAGS           = -
> DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -
> D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE+
> DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT
> -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -
> DOPENSSL_NO_ASM  # #  VALID_ARCHITECTURES           = IA32 X64 ARM
> AARCH64diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> index 616ccd9f62..2b7324a990 100644
> --- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> +++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> @@ -16,7 +16,7 @@
>    VERSION_STRING                 = 1.0   LIBRARY_CLASS                  = OpensslLib
> DEFINE OPENSSL_PATH            = openssl-  DEFINE OPENSSL_FLAGS           = -
> DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -
> D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE+
> DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT
> -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -
> DOPENSSL_NO_ASM  # #  VALID_ARCHITECTURES           = IA32 X64 ARM
> AARCH64diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> new file mode 100644
> index 0000000000..825eea0254
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> @@ -0,0 +1,656 @@
> +## @file+#  This module provides OpenSSL Library implementation.+#+#
> Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved.<BR>+#  (C)
> Copyright 2020 Hewlett Packard Enterprise Development LP<BR>+#  SPDX-
> License-Identifier: BSD-2-Clause-Patent+#+##++[Defines]+  INF_VERSION
> = 0x00010005+  BASE_NAME                      = OpensslLibX64+
> MODULE_UNI_FILE                = OpensslLib.uni+  FILE_GUID                      =
> 18125E50-0117-4DD0-BE54-4784AD995FEF+  MODULE_TYPE                    = BASE+
> VERSION_STRING                 = 1.0+  LIBRARY_CLASS                  = OpensslLib+
> DEFINE OPENSSL_PATH            = openssl+  DEFINE OPENSSL_FLAGS           = -
> DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -
> D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE+
> DEFINE OPENSSL_FLAGS_CONFIG    = -DOPENSSL_CPUID_OBJ -DSHA1_ASM -
> DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -
> DGHASH_ASM+  CONSTRUCTOR                    = OpensslLibConstructor++#+#
> VALID_ARCHITECTURES           = X64+#++[Sources]+  OpensslLibConstructor.c+
> $(OPENSSL_PATH)/e_os.h+  $(OPENSSL_PATH)/ms/uplink.h+#
> Autogenerated files list starts here+  X64/crypto/aes/aesni-mb-
> x86_64.nasm+  X64/crypto/aes/aesni-sha1-x86_64.nasm+
> X64/crypto/aes/aesni-sha256-x86_64.nasm+  X64/crypto/aes/aesni-
> x86_64.nasm+  X64/crypto/aes/vpaes-x86_64.nasm+
> X64/crypto/modes/ghash-x86_64.nasm+  X64/crypto/sha/sha1-mb-
> x86_64.nasm+  X64/crypto/sha/sha1-x86_64.nasm+  X64/crypto/sha/sha256-
> mb-x86_64.nasm+  X64/crypto/sha/sha256-x86_64.nasm+
> X64/crypto/sha/sha512-x86_64.nasm+  X64/crypto/x86_64cpuid.nasm+
> $(OPENSSL_PATH)/crypto/aes/aes_cbc.c+
> $(OPENSSL_PATH)/crypto/aes/aes_cfb.c+
> $(OPENSSL_PATH)/crypto/aes/aes_core.c+
> $(OPENSSL_PATH)/crypto/aes/aes_ige.c+
> $(OPENSSL_PATH)/crypto/aes/aes_misc.c+
> $(OPENSSL_PATH)/crypto/aes/aes_ofb.c+
> $(OPENSSL_PATH)/crypto/aes/aes_wrap.c+
> $(OPENSSL_PATH)/crypto/aria/aria.c+
> $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c+
> $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c+
> $(OPENSSL_PATH)/crypto/asn1/a_digest.c+
> $(OPENSSL_PATH)/crypto/asn1/a_dup.c+
> $(OPENSSL_PATH)/crypto/asn1/a_gentm.c+
> $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c+
> $(OPENSSL_PATH)/crypto/asn1/a_int.c+
> $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c+
> $(OPENSSL_PATH)/crypto/asn1/a_object.c+
> $(OPENSSL_PATH)/crypto/asn1/a_octet.c+
> $(OPENSSL_PATH)/crypto/asn1/a_print.c+
> $(OPENSSL_PATH)/crypto/asn1/a_sign.c+
> $(OPENSSL_PATH)/crypto/asn1/a_strex.c+
> $(OPENSSL_PATH)/crypto/asn1/a_strnid.c+
> $(OPENSSL_PATH)/crypto/asn1/a_time.c+
> $(OPENSSL_PATH)/crypto/asn1/a_type.c+
> $(OPENSSL_PATH)/crypto/asn1/a_utctm.c+
> $(OPENSSL_PATH)/crypto/asn1/a_utf8.c+
> $(OPENSSL_PATH)/crypto/asn1/a_verify.c+
> $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c+
> $(OPENSSL_PATH)/crypto/asn1/asn1_err.c+
> $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c+
> $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c+
> $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c+
> $(OPENSSL_PATH)/crypto/asn1/asn1_par.c+
> $(OPENSSL_PATH)/crypto/asn1/asn_mime.c+
> $(OPENSSL_PATH)/crypto/asn1/asn_moid.c+
> $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c+
> $(OPENSSL_PATH)/crypto/asn1/asn_pack.c+
> $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c+
> $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c+
> $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c+
> $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c+
> $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c+
> $(OPENSSL_PATH)/crypto/asn1/f_int.c+
> $(OPENSSL_PATH)/crypto/asn1/f_string.c+
> $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c+
> $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c+
> $(OPENSSL_PATH)/crypto/asn1/n_pkey.c+
> $(OPENSSL_PATH)/crypto/asn1/nsseq.c+
> $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c+
> $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c+
> $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c+
> $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c+
> $(OPENSSL_PATH)/crypto/asn1/t_bitst.c+
> $(OPENSSL_PATH)/crypto/asn1/t_pkey.c+
> $(OPENSSL_PATH)/crypto/asn1/t_spki.c+
> $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c+
> $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c+
> $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c+
> $(OPENSSL_PATH)/crypto/asn1/tasn_new.c+
> $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c+
> $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c+
> $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c+
> $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c+
> $(OPENSSL_PATH)/crypto/asn1/x_algor.c+
> $(OPENSSL_PATH)/crypto/asn1/x_bignum.c+
> $(OPENSSL_PATH)/crypto/asn1/x_info.c+
> $(OPENSSL_PATH)/crypto/asn1/x_int64.c+
> $(OPENSSL_PATH)/crypto/asn1/x_long.c+
> $(OPENSSL_PATH)/crypto/asn1/x_pkey.c+
> $(OPENSSL_PATH)/crypto/asn1/x_sig.c+
> $(OPENSSL_PATH)/crypto/asn1/x_spki.c+
> $(OPENSSL_PATH)/crypto/asn1/x_val.c+
> $(OPENSSL_PATH)/crypto/async/arch/async_null.c+
> $(OPENSSL_PATH)/crypto/async/arch/async_posix.c+
> $(OPENSSL_PATH)/crypto/async/arch/async_win.c+
> $(OPENSSL_PATH)/crypto/async/async.c+
> $(OPENSSL_PATH)/crypto/async/async_err.c+
> $(OPENSSL_PATH)/crypto/async/async_wait.c+
> $(OPENSSL_PATH)/crypto/bio/b_addr.c+
> $(OPENSSL_PATH)/crypto/bio/b_dump.c+
> $(OPENSSL_PATH)/crypto/bio/b_sock.c+
> $(OPENSSL_PATH)/crypto/bio/b_sock2.c+
> $(OPENSSL_PATH)/crypto/bio/bf_buff.c+
> $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c+
> $(OPENSSL_PATH)/crypto/bio/bf_nbio.c+
> $(OPENSSL_PATH)/crypto/bio/bf_null.c+
> $(OPENSSL_PATH)/crypto/bio/bio_cb.c+
> $(OPENSSL_PATH)/crypto/bio/bio_err.c+
> $(OPENSSL_PATH)/crypto/bio/bio_lib.c+
> $(OPENSSL_PATH)/crypto/bio/bio_meth.c+
> $(OPENSSL_PATH)/crypto/bio/bss_acpt.c+
> $(OPENSSL_PATH)/crypto/bio/bss_bio.c+
> $(OPENSSL_PATH)/crypto/bio/bss_conn.c+
> $(OPENSSL_PATH)/crypto/bio/bss_dgram.c+
> $(OPENSSL_PATH)/crypto/bio/bss_fd.c+
> $(OPENSSL_PATH)/crypto/bio/bss_file.c+
> $(OPENSSL_PATH)/crypto/bio/bss_log.c+
> $(OPENSSL_PATH)/crypto/bio/bss_mem.c+
> $(OPENSSL_PATH)/crypto/bio/bss_null.c+
> $(OPENSSL_PATH)/crypto/bio/bss_sock.c+
> $(OPENSSL_PATH)/crypto/bn/bn_add.c+
> $(OPENSSL_PATH)/crypto/bn/bn_asm.c+
> $(OPENSSL_PATH)/crypto/bn/bn_blind.c+
> $(OPENSSL_PATH)/crypto/bn/bn_const.c+
> $(OPENSSL_PATH)/crypto/bn/bn_ctx.c+
> $(OPENSSL_PATH)/crypto/bn/bn_depr.c+
> $(OPENSSL_PATH)/crypto/bn/bn_dh.c+
> $(OPENSSL_PATH)/crypto/bn/bn_div.c+
> $(OPENSSL_PATH)/crypto/bn/bn_err.c+
> $(OPENSSL_PATH)/crypto/bn/bn_exp.c+
> $(OPENSSL_PATH)/crypto/bn/bn_exp2.c+
> $(OPENSSL_PATH)/crypto/bn/bn_gcd.c+
> $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c+
> $(OPENSSL_PATH)/crypto/bn/bn_intern.c+
> $(OPENSSL_PATH)/crypto/bn/bn_kron.c+
> $(OPENSSL_PATH)/crypto/bn/bn_lib.c+
> $(OPENSSL_PATH)/crypto/bn/bn_mod.c+
> $(OPENSSL_PATH)/crypto/bn/bn_mont.c+
> $(OPENSSL_PATH)/crypto/bn/bn_mpi.c+
> $(OPENSSL_PATH)/crypto/bn/bn_mul.c+
> $(OPENSSL_PATH)/crypto/bn/bn_nist.c+
> $(OPENSSL_PATH)/crypto/bn/bn_prime.c+
> $(OPENSSL_PATH)/crypto/bn/bn_print.c+
> $(OPENSSL_PATH)/crypto/bn/bn_rand.c+
> $(OPENSSL_PATH)/crypto/bn/bn_recp.c+
> $(OPENSSL_PATH)/crypto/bn/bn_shift.c+
> $(OPENSSL_PATH)/crypto/bn/bn_sqr.c+
> $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c+
> $(OPENSSL_PATH)/crypto/bn/bn_srp.c+
> $(OPENSSL_PATH)/crypto/bn/bn_word.c+
> $(OPENSSL_PATH)/crypto/bn/bn_x931p.c+
> $(OPENSSL_PATH)/crypto/buffer/buf_err.c+
> $(OPENSSL_PATH)/crypto/buffer/buffer.c+
> $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c+
> $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c+
> $(OPENSSL_PATH)/crypto/cmac/cmac.c+
> $(OPENSSL_PATH)/crypto/comp/c_zlib.c+
> $(OPENSSL_PATH)/crypto/comp/comp_err.c+
> $(OPENSSL_PATH)/crypto/comp/comp_lib.c+
> $(OPENSSL_PATH)/crypto/conf/conf_api.c+
> $(OPENSSL_PATH)/crypto/conf/conf_def.c+
> $(OPENSSL_PATH)/crypto/conf/conf_err.c+
> $(OPENSSL_PATH)/crypto/conf/conf_lib.c+
> $(OPENSSL_PATH)/crypto/conf/conf_mall.c+
> $(OPENSSL_PATH)/crypto/conf/conf_mod.c+
> $(OPENSSL_PATH)/crypto/conf/conf_sap.c+
> $(OPENSSL_PATH)/crypto/conf/conf_ssl.c+
> $(OPENSSL_PATH)/crypto/cpt_err.c+  $(OPENSSL_PATH)/crypto/cryptlib.c+
> $(OPENSSL_PATH)/crypto/ctype.c+  $(OPENSSL_PATH)/crypto/cversion.c+
> $(OPENSSL_PATH)/crypto/dh/dh_ameth.c+
> $(OPENSSL_PATH)/crypto/dh/dh_asn1.c+
> $(OPENSSL_PATH)/crypto/dh/dh_check.c+
> $(OPENSSL_PATH)/crypto/dh/dh_depr.c+
> $(OPENSSL_PATH)/crypto/dh/dh_err.c+
> $(OPENSSL_PATH)/crypto/dh/dh_gen.c+
> $(OPENSSL_PATH)/crypto/dh/dh_kdf.c+
> $(OPENSSL_PATH)/crypto/dh/dh_key.c+
> $(OPENSSL_PATH)/crypto/dh/dh_lib.c+
> $(OPENSSL_PATH)/crypto/dh/dh_meth.c+
> $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c+
> $(OPENSSL_PATH)/crypto/dh/dh_prn.c+
> $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c+
> $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c+
> $(OPENSSL_PATH)/crypto/dso/dso_dl.c+
> $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c+
> $(OPENSSL_PATH)/crypto/dso/dso_err.c+
> $(OPENSSL_PATH)/crypto/dso/dso_lib.c+
> $(OPENSSL_PATH)/crypto/dso/dso_openssl.c+
> $(OPENSSL_PATH)/crypto/dso/dso_vms.c+
> $(OPENSSL_PATH)/crypto/dso/dso_win32.c+
> $(OPENSSL_PATH)/crypto/ebcdic.c+  $(OPENSSL_PATH)/crypto/err/err.c+
> $(OPENSSL_PATH)/crypto/err/err_prn.c+
> $(OPENSSL_PATH)/crypto/evp/bio_b64.c+
> $(OPENSSL_PATH)/crypto/evp/bio_enc.c+
> $(OPENSSL_PATH)/crypto/evp/bio_md.c+
> $(OPENSSL_PATH)/crypto/evp/bio_ok.c+
> $(OPENSSL_PATH)/crypto/evp/c_allc.c+
> $(OPENSSL_PATH)/crypto/evp/c_alld.c+
> $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c+
> $(OPENSSL_PATH)/crypto/evp/digest.c+
> $(OPENSSL_PATH)/crypto/evp/e_aes.c+
> $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c+
> $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c+
> $(OPENSSL_PATH)/crypto/evp/e_aria.c+
> $(OPENSSL_PATH)/crypto/evp/e_bf.c+
> $(OPENSSL_PATH)/crypto/evp/e_camellia.c+
> $(OPENSSL_PATH)/crypto/evp/e_cast.c+
> $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c+
> $(OPENSSL_PATH)/crypto/evp/e_des.c+
> $(OPENSSL_PATH)/crypto/evp/e_des3.c+
> $(OPENSSL_PATH)/crypto/evp/e_idea.c+
> $(OPENSSL_PATH)/crypto/evp/e_null.c+
> $(OPENSSL_PATH)/crypto/evp/e_old.c+
> $(OPENSSL_PATH)/crypto/evp/e_rc2.c+
> $(OPENSSL_PATH)/crypto/evp/e_rc4.c+
> $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c+
> $(OPENSSL_PATH)/crypto/evp/e_rc5.c+
> $(OPENSSL_PATH)/crypto/evp/e_seed.c+
> $(OPENSSL_PATH)/crypto/evp/e_sm4.c+
> $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c+
> $(OPENSSL_PATH)/crypto/evp/encode.c+
> $(OPENSSL_PATH)/crypto/evp/evp_cnf.c+
> $(OPENSSL_PATH)/crypto/evp/evp_enc.c+
> $(OPENSSL_PATH)/crypto/evp/evp_err.c+
> $(OPENSSL_PATH)/crypto/evp/evp_key.c+
> $(OPENSSL_PATH)/crypto/evp/evp_lib.c+
> $(OPENSSL_PATH)/crypto/evp/evp_pbe.c+
> $(OPENSSL_PATH)/crypto/evp/evp_pkey.c+
> $(OPENSSL_PATH)/crypto/evp/m_md2.c+
> $(OPENSSL_PATH)/crypto/evp/m_md4.c+
> $(OPENSSL_PATH)/crypto/evp/m_md5.c+
> $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c+
> $(OPENSSL_PATH)/crypto/evp/m_mdc2.c+
> $(OPENSSL_PATH)/crypto/evp/m_null.c+
> $(OPENSSL_PATH)/crypto/evp/m_ripemd.c+
> $(OPENSSL_PATH)/crypto/evp/m_sha1.c+
> $(OPENSSL_PATH)/crypto/evp/m_sha3.c+
> $(OPENSSL_PATH)/crypto/evp/m_sigver.c+
> $(OPENSSL_PATH)/crypto/evp/m_wp.c+
> $(OPENSSL_PATH)/crypto/evp/names.c+
> $(OPENSSL_PATH)/crypto/evp/p5_crpt.c+
> $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c+
> $(OPENSSL_PATH)/crypto/evp/p_dec.c+
> $(OPENSSL_PATH)/crypto/evp/p_enc.c+
> $(OPENSSL_PATH)/crypto/evp/p_lib.c+
> $(OPENSSL_PATH)/crypto/evp/p_open.c+
> $(OPENSSL_PATH)/crypto/evp/p_seal.c+
> $(OPENSSL_PATH)/crypto/evp/p_sign.c+
> $(OPENSSL_PATH)/crypto/evp/p_verify.c+
> $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c+
> $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c+
> $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c+
> $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c+
> $(OPENSSL_PATH)/crypto/ex_data.c+  $(OPENSSL_PATH)/crypto/getenv.c+
> $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c+
> $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c+
> $(OPENSSL_PATH)/crypto/hmac/hmac.c+  $(OPENSSL_PATH)/crypto/init.c+
> $(OPENSSL_PATH)/crypto/kdf/hkdf.c+
> $(OPENSSL_PATH)/crypto/kdf/kdf_err.c+
> $(OPENSSL_PATH)/crypto/kdf/scrypt.c+
> $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c+
> $(OPENSSL_PATH)/crypto/lhash/lh_stats.c+
> $(OPENSSL_PATH)/crypto/lhash/lhash.c+
> $(OPENSSL_PATH)/crypto/md5/md5_dgst.c+
> $(OPENSSL_PATH)/crypto/md5/md5_one.c+
> $(OPENSSL_PATH)/crypto/mem.c+  $(OPENSSL_PATH)/crypto/mem_dbg.c+
> $(OPENSSL_PATH)/crypto/mem_sec.c+
> $(OPENSSL_PATH)/crypto/modes/cbc128.c+
> $(OPENSSL_PATH)/crypto/modes/ccm128.c+
> $(OPENSSL_PATH)/crypto/modes/cfb128.c+
> $(OPENSSL_PATH)/crypto/modes/ctr128.c+
> $(OPENSSL_PATH)/crypto/modes/cts128.c+
> $(OPENSSL_PATH)/crypto/modes/gcm128.c+
> $(OPENSSL_PATH)/crypto/modes/ocb128.c+
> $(OPENSSL_PATH)/crypto/modes/ofb128.c+
> $(OPENSSL_PATH)/crypto/modes/wrap128.c+
> $(OPENSSL_PATH)/crypto/modes/xts128.c+
> $(OPENSSL_PATH)/crypto/o_dir.c+  $(OPENSSL_PATH)/crypto/o_fips.c+
> $(OPENSSL_PATH)/crypto/o_fopen.c+  $(OPENSSL_PATH)/crypto/o_init.c+
> $(OPENSSL_PATH)/crypto/o_str.c+  $(OPENSSL_PATH)/crypto/o_time.c+
> $(OPENSSL_PATH)/crypto/objects/o_names.c+
> $(OPENSSL_PATH)/crypto/objects/obj_dat.c+
> $(OPENSSL_PATH)/crypto/objects/obj_err.c+
> $(OPENSSL_PATH)/crypto/objects/obj_lib.c+
> $(OPENSSL_PATH)/crypto/objects/obj_xref.c+
> $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c+
> $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c+
> $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c+
> $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c+
> $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c+
> $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c+
> $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c+
> $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c+
> $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c+
> $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c+
> $(OPENSSL_PATH)/crypto/pem/pem_all.c+
> $(OPENSSL_PATH)/crypto/pem/pem_err.c+
> $(OPENSSL_PATH)/crypto/pem/pem_info.c+
> $(OPENSSL_PATH)/crypto/pem/pem_lib.c+
> $(OPENSSL_PATH)/crypto/pem/pem_oth.c+
> $(OPENSSL_PATH)/crypto/pem/pem_pk8.c+
> $(OPENSSL_PATH)/crypto/pem/pem_pkey.c+
> $(OPENSSL_PATH)/crypto/pem/pem_sign.c+
> $(OPENSSL_PATH)/crypto/pem/pem_x509.c+
> $(OPENSSL_PATH)/crypto/pem/pem_xaux.c+
> $(OPENSSL_PATH)/crypto/pem/pvkfmt.c+
> $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c+
> $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c+
> $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c+
> $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c+
> $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c+
> $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c+
> $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c+
> $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c+
> $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c+
> $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c+
> $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c+
> $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c+
> $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c+
> $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c+
> $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c+
> $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c+
> $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c+
> $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c+
> $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c+
> $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c+
> $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c+
> $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c+
> $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c+
> $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c+
> $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c+
> $(OPENSSL_PATH)/crypto/rand/drbg_lib.c+
> $(OPENSSL_PATH)/crypto/rand/rand_egd.c+
> $(OPENSSL_PATH)/crypto/rand/rand_err.c+
> $(OPENSSL_PATH)/crypto/rand/rand_lib.c+
> $(OPENSSL_PATH)/crypto/rand/rand_unix.c+
> $(OPENSSL_PATH)/crypto/rand/rand_vms.c+
> $(OPENSSL_PATH)/crypto/rand/rand_win.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_err.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_none.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c+
> $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c+
> $(OPENSSL_PATH)/crypto/sha/keccak1600.c+
> $(OPENSSL_PATH)/crypto/sha/sha1_one.c+
> $(OPENSSL_PATH)/crypto/sha/sha1dgst.c+
> $(OPENSSL_PATH)/crypto/sha/sha256.c+
> $(OPENSSL_PATH)/crypto/sha/sha512.c+
> $(OPENSSL_PATH)/crypto/siphash/siphash.c+
> $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c+
> $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c+
> $(OPENSSL_PATH)/crypto/sm3/m_sm3.c+
> $(OPENSSL_PATH)/crypto/sm3/sm3.c+
> $(OPENSSL_PATH)/crypto/sm4/sm4.c+
> $(OPENSSL_PATH)/crypto/stack/stack.c+
> $(OPENSSL_PATH)/crypto/threads_none.c+
> $(OPENSSL_PATH)/crypto/threads_pthread.c+
> $(OPENSSL_PATH)/crypto/threads_win.c+
> $(OPENSSL_PATH)/crypto/txt_db/txt_db.c+
> $(OPENSSL_PATH)/crypto/ui/ui_err.c+
> $(OPENSSL_PATH)/crypto/ui/ui_lib.c+
> $(OPENSSL_PATH)/crypto/ui/ui_null.c+
> $(OPENSSL_PATH)/crypto/ui/ui_openssl.c+
> $(OPENSSL_PATH)/crypto/ui/ui_util.c+  $(OPENSSL_PATH)/crypto/uid.c+
> $(OPENSSL_PATH)/crypto/x509/by_dir.c+
> $(OPENSSL_PATH)/crypto/x509/by_file.c+
> $(OPENSSL_PATH)/crypto/x509/t_crl.c+
> $(OPENSSL_PATH)/crypto/x509/t_req.c+
> $(OPENSSL_PATH)/crypto/x509/t_x509.c+
> $(OPENSSL_PATH)/crypto/x509/x509_att.c+
> $(OPENSSL_PATH)/crypto/x509/x509_cmp.c+
> $(OPENSSL_PATH)/crypto/x509/x509_d2.c+
> $(OPENSSL_PATH)/crypto/x509/x509_def.c+
> $(OPENSSL_PATH)/crypto/x509/x509_err.c+
> $(OPENSSL_PATH)/crypto/x509/x509_ext.c+
> $(OPENSSL_PATH)/crypto/x509/x509_lu.c+
> $(OPENSSL_PATH)/crypto/x509/x509_meth.c+
> $(OPENSSL_PATH)/crypto/x509/x509_obj.c+
> $(OPENSSL_PATH)/crypto/x509/x509_r2x.c+
> $(OPENSSL_PATH)/crypto/x509/x509_req.c+
> $(OPENSSL_PATH)/crypto/x509/x509_set.c+
> $(OPENSSL_PATH)/crypto/x509/x509_trs.c+
> $(OPENSSL_PATH)/crypto/x509/x509_txt.c+
> $(OPENSSL_PATH)/crypto/x509/x509_v3.c+
> $(OPENSSL_PATH)/crypto/x509/x509_vfy.c+
> $(OPENSSL_PATH)/crypto/x509/x509_vpm.c+
> $(OPENSSL_PATH)/crypto/x509/x509cset.c+
> $(OPENSSL_PATH)/crypto/x509/x509name.c+
> $(OPENSSL_PATH)/crypto/x509/x509rset.c+
> $(OPENSSL_PATH)/crypto/x509/x509spki.c+
> $(OPENSSL_PATH)/crypto/x509/x509type.c+
> $(OPENSSL_PATH)/crypto/x509/x_all.c+
> $(OPENSSL_PATH)/crypto/x509/x_attrib.c+
> $(OPENSSL_PATH)/crypto/x509/x_crl.c+
> $(OPENSSL_PATH)/crypto/x509/x_exten.c+
> $(OPENSSL_PATH)/crypto/x509/x_name.c+
> $(OPENSSL_PATH)/crypto/x509/x_pubkey.c+
> $(OPENSSL_PATH)/crypto/x509/x_req.c+
> $(OPENSSL_PATH)/crypto/x509/x_x509.c+
> $(OPENSSL_PATH)/crypto/x509/x_x509a.c+
> $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c+
> $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c+
> $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c+
> $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c+
> $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c+
> $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_info.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_int.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c+
> $(OPENSSL_PATH)/crypto/x509v3/v3err.c+
> $(OPENSSL_PATH)/crypto/arm_arch.h+
> $(OPENSSL_PATH)/crypto/mips_arch.h+
> $(OPENSSL_PATH)/crypto/ppc_arch.h+
> $(OPENSSL_PATH)/crypto/s390x_arch.h+
> $(OPENSSL_PATH)/crypto/sparc_arch.h+
> $(OPENSSL_PATH)/crypto/vms_rms.h+
> $(OPENSSL_PATH)/crypto/aes/aes_local.h+
> $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h+
> $(OPENSSL_PATH)/crypto/asn1/asn1_local.h+
> $(OPENSSL_PATH)/crypto/asn1/charmap.h+
> $(OPENSSL_PATH)/crypto/asn1/standard_methods.h+
> $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h+
> $(OPENSSL_PATH)/crypto/async/async_local.h+
> $(OPENSSL_PATH)/crypto/async/arch/async_null.h+
> $(OPENSSL_PATH)/crypto/async/arch/async_posix.h+
> $(OPENSSL_PATH)/crypto/async/arch/async_win.h+
> $(OPENSSL_PATH)/crypto/bio/bio_local.h+
> $(OPENSSL_PATH)/crypto/bn/bn_local.h+
> $(OPENSSL_PATH)/crypto/bn/bn_prime.h+
> $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h+
> $(OPENSSL_PATH)/crypto/comp/comp_local.h+
> $(OPENSSL_PATH)/crypto/conf/conf_def.h+
> $(OPENSSL_PATH)/crypto/conf/conf_local.h+
> $(OPENSSL_PATH)/crypto/dh/dh_local.h+
> $(OPENSSL_PATH)/crypto/dso/dso_local.h+
> $(OPENSSL_PATH)/crypto/evp/evp_local.h+
> $(OPENSSL_PATH)/crypto/hmac/hmac_local.h+
> $(OPENSSL_PATH)/crypto/lhash/lhash_local.h+
> $(OPENSSL_PATH)/crypto/md5/md5_local.h+
> $(OPENSSL_PATH)/crypto/modes/modes_local.h+
> $(OPENSSL_PATH)/crypto/objects/obj_dat.h+
> $(OPENSSL_PATH)/crypto/objects/obj_local.h+
> $(OPENSSL_PATH)/crypto/objects/obj_xref.h+
> $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h+
> $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h+
> $(OPENSSL_PATH)/crypto/rand/rand_local.h+
> $(OPENSSL_PATH)/crypto/rsa/rsa_local.h+
> $(OPENSSL_PATH)/crypto/sha/sha_local.h+
> $(OPENSSL_PATH)/crypto/siphash/siphash_local.h+
> $(OPENSSL_PATH)/crypto/sm3/sm3_local.h+
> $(OPENSSL_PATH)/crypto/store/store_local.h+
> $(OPENSSL_PATH)/crypto/ui/ui_local.h+
> $(OPENSSL_PATH)/crypto/x509/x509_local.h+
> $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h+
> $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h+
> $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h+
> $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h+
> $(OPENSSL_PATH)/ssl/bio_ssl.c+  $(OPENSSL_PATH)/ssl/d1_lib.c+
> $(OPENSSL_PATH)/ssl/d1_msg.c+  $(OPENSSL_PATH)/ssl/d1_srtp.c+
> $(OPENSSL_PATH)/ssl/methods.c+  $(OPENSSL_PATH)/ssl/packet.c+
> $(OPENSSL_PATH)/ssl/pqueue.c+
> $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c+
> $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c+
> $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c+
> $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c+
> $(OPENSSL_PATH)/ssl/record/ssl3_record.c+
> $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c+
> $(OPENSSL_PATH)/ssl/s3_cbc.c+  $(OPENSSL_PATH)/ssl/s3_enc.c+
> $(OPENSSL_PATH)/ssl/s3_lib.c+  $(OPENSSL_PATH)/ssl/s3_msg.c+
> $(OPENSSL_PATH)/ssl/ssl_asn1.c+  $(OPENSSL_PATH)/ssl/ssl_cert.c+
> $(OPENSSL_PATH)/ssl/ssl_ciph.c+  $(OPENSSL_PATH)/ssl/ssl_conf.c+
> $(OPENSSL_PATH)/ssl/ssl_err.c+  $(OPENSSL_PATH)/ssl/ssl_init.c+
> $(OPENSSL_PATH)/ssl/ssl_lib.c+  $(OPENSSL_PATH)/ssl/ssl_mcnf.c+
> $(OPENSSL_PATH)/ssl/ssl_rsa.c+  $(OPENSSL_PATH)/ssl/ssl_sess.c+
> $(OPENSSL_PATH)/ssl/ssl_stat.c+  $(OPENSSL_PATH)/ssl/ssl_txt.c+
> $(OPENSSL_PATH)/ssl/ssl_utst.c+
> $(OPENSSL_PATH)/ssl/statem/extensions.c+
> $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c+
> $(OPENSSL_PATH)/ssl/statem/extensions_cust.c+
> $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c+
> $(OPENSSL_PATH)/ssl/statem/statem.c+
> $(OPENSSL_PATH)/ssl/statem/statem_clnt.c+
> $(OPENSSL_PATH)/ssl/statem/statem_dtls.c+
> $(OPENSSL_PATH)/ssl/statem/statem_lib.c+
> $(OPENSSL_PATH)/ssl/statem/statem_srvr.c+
> $(OPENSSL_PATH)/ssl/t1_enc.c+  $(OPENSSL_PATH)/ssl/t1_lib.c+
> $(OPENSSL_PATH)/ssl/t1_trce.c+  $(OPENSSL_PATH)/ssl/tls13_enc.c+
> $(OPENSSL_PATH)/ssl/tls_srp.c+  $(OPENSSL_PATH)/ssl/packet_local.h+
> $(OPENSSL_PATH)/ssl/ssl_cert_table.h+  $(OPENSSL_PATH)/ssl/ssl_local.h+
> $(OPENSSL_PATH)/ssl/record/record.h+
> $(OPENSSL_PATH)/ssl/record/record_local.h+
> $(OPENSSL_PATH)/ssl/statem/statem.h+
> $(OPENSSL_PATH)/ssl/statem/statem_local.h+# Autogenerated files list
> ends here+  buildinf.h+  rand_pool_noise.h+  ossl_store.c+
> rand_pool.c++[Sources.X64]+  rand_pool_noise_tsc.c+
> ApiHooks.c++[Packages]+  MdePkg/MdePkg.dec+
> CryptoPkg/CryptoPkg.dec++[LibraryClasses]+  BaseLib+  DebugLib+
> TimerLib+  PrintLib++[BuildOptions]+  #+  # Disables the following Visual
> Studio compiler warnings brought by openssl source,+  # so we do not break
> the build with /WX option:+  #   C4090: 'function' : different 'const' qualifiers+
> #   C4132: 'object' : const object should be initialized (tls13_enc.c)+  #   C4210:
> nonstandard extension used: function given file scope+  #   C4244:
> conversion from type1 to type2, possible loss of data+  #   C4245: conversion
> from type1 to type2, signed/unsigned mismatch+  #   C4267: conversion from
> size_t to type, possible loss of data+  #   C4306: 'identifier' : conversion from
> 'type1' to 'type2' of greater size+  #   C4310: cast truncates constant value+  #
> C4389: 'operator' : signed/unsigned mismatch (xxxx)+  #   C4700: uninitialized
> local variable 'name' used. (conf_sap.c(71))+  #   C4702: unreachable code+  #
> C4706: assignment within conditional expression+  #   C4819: The file contains
> a character that cannot be represented in the current code page+  #+
> MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER
> $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132 /wd4210
> /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700 /wd4389 /wd4702
> /wd4706 /wd4819++  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -
> U_MSC_VER -U__ICC $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w++
> #+  # Suppress the following build warnings in openssl so we don't break the
> build with -Werror+  #   -Werror=maybe-uninitialized: there exist some other
> paths for which the variable is not initialized.+  #   -Werror=format: Check
> calls to printf and scanf, etc., to make sure that the arguments supplied
> have+  #                   types appropriate to the format string specified.+  #   -
> Werror=unused-but-set-variable: Warn whenever a local variable is assigned
> to, but otherwise unused (aside from its declaration).+  #+
> GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-
> error=format -Wno-format -Wno-error=unused-but-set-variable -
> DNO_MSABI_VA_FUNCS++  # suppress the following warnings in openssl so
> we don't break the build with warnings-as-errors:+  # 1295: Deprecated
> declaration <entity> - give arg types+  #  550: <entity> was set but never
> used+  # 1293: assignment in condition+  #  111: statement is unreachable
> (invariably "break;" after "return X;" in case statement)+  #   68: integer
> conversion resulted in a change of sign ("if (Status == -1)")+  #  177: <entity>
> was declared but never referenced+  #  223: function <entity> declared
> implicitly+  #  144: a value of type <type> cannot be used to initialize an entity
> of type <type>+  #  513: a value of type <type> cannot be assigned to an
> entity of type <type>+  #  188: enumerated type mixed with another type
> (i.e. passing an integer as an enum without a cast)+  # 1296: Extended
> constant initialiser used+  #  128: loop is not reachable - may be emitted
> inappropriately if code follows a conditional return+  #       from the function
> that evaluates to true at compile time+  #  546: transfer of control bypasses
> initialization - may be emitted inappropriately if the uninitialized+  #
> variable is never referenced after the jump+  #    1: ignore "#1-D: last line of
> file ends without a newline"+  # 3017: <entity> may be used before being set
> (NOTE: This was fixed in OpenSSL 1.1 HEAD with+  #       commit
> d9b8b89bec4480de3a10bdaf9425db371c19145b, and can be dropped then.)+
> XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -U_WIN64
> $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-
> error=uninitializeddiff --git
> a/CryptoPkg/Library/Include/openssl/opensslconf.h
> b/CryptoPkg/Library/Include/openssl/opensslconf.h
> index 3a2544ea5c..e8f73c4d10 100644
> --- a/CryptoPkg/Library/Include/openssl/opensslconf.h
> +++ b/CryptoPkg/Library/Include/openssl/opensslconf.h
> @@ -112,9 +112,6 @@ extern "C" {
>  #ifndef OPENSSL_NO_ASAN # define OPENSSL_NO_ASAN #endif-#ifndef
> OPENSSL_NO_ASM-# define OPENSSL_NO_ASM-#endif #ifndef
> OPENSSL_NO_ASYNC # define OPENSSL_NO_ASYNC #endifdiff --git
> a/CryptoPkg/Library/OpensslLib/ApiHooks.c
> b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> new file mode 100644
> index 0000000000..58cff16838
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> @@ -0,0 +1,18 @@
> +/** @file+  OpenSSL Library API hooks.++Copyright (c) 2020, Intel
> Corporation. All rights reserved.<BR>+SPDX-License-Identifier: BSD-2-
> Clause-Patent++**/++#include <Uefi.h>++VOID *+__imp_RtlVirtualUnwind
> (+  VOID *    Args+  )+{+  return NULL;+}+diff --git
> a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> new file mode 100644
> index 0000000000..ef20d2b84e
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> @@ -0,0 +1,34 @@
> +/** @file+  Constructor to initialize CPUID data for OpenSSL assembly
> operations.++Copyright (c) 2020, Intel Corporation. All rights
> reserved.<BR>+SPDX-License-Identifier: BSD-2-Clause-
> Patent++**/++#include <Uefi.h>++extern void OPENSSL_cpuid_setup
> (void);++/**+  Constructor routine for OpensslLib.++  The constructor calls an
> internal OpenSSL function which fetches a local copy+  of the hardware
> capability flags, used to enable native crypto instructions.++  @param
> None++  @retval EFI_SUCCESS         The construction
> succeeded.++**/+EFI_STATUS+EFIAPI+OpensslLibConstructor (+  VOID+
> )+{+  OPENSSL_cpuid_setup ();++  return EFI_SUCCESS;+}+diff --git
> a/CryptoPkg/Library/OpensslLib/process_files.pl
> b/CryptoPkg/Library/OpensslLib/process_files.pl
> index 57ce195394..472f59bc8e 100755
> --- a/CryptoPkg/Library/OpensslLib/process_files.pl
> +++ b/CryptoPkg/Library/OpensslLib/process_files.pl
> @@ -9,9 +9,63 @@
>  # do not need to do this, since the results are stored in the EDK2 # git
> repository for them. #+# Due to the script wrapping required to process the
> OpenSSL+# configuration data, each native architecture must be
> processed+# individually by the maintainer (in addition to the standard
> version):+#   ./process_files.pl+#   ./process_files.pl X64+#   ./process_files.pl
> [Arch]+ use strict; use Cwd; use File::Copy;+use File::Basename;+use
> File::Path qw(make_path remove_tree);+use Text::Tabs;++#+# OpenSSL
> perlasm generator script does not transfer the copyright header+#+sub
> copy_license_header+{+    my @args = split / /, shift;    #Separate args by
> spaces+    my $source = $args[1];          #Source file is second (after "perl")+
> my $target = pop @args;         #Target file is always last+    chop ($target);
> #Remove newline char++    my $temp_file_name = "license.tmp";+    open
> (my $source_file, "<" . $source) || die $source;+    open (my $target_file, "<"
> . $target) || die $target;+    open (my $temp_file, ">" . $temp_file_name) ||
> die $temp_file_name;++    #Add "generated file" warning+    $source =~
> s/^..//;             #Remove leading "./"+    print ($temp_file "; WARNING: do not
> edit!\r\n");+    print ($temp_file "; Generated from $source\r\n");+    print
> ($temp_file ";\r\n");++    #Copy source file header to temp file+    while (my
> $line = <$source_file>) {+        next if ($line =~ /#!/);    #Ignore shebang line+
> $line =~ s/#/;/;            #Fix comment character for assembly+        $line =~
> s/\s+$/\r\n/;      #Trim trailing whitepsace, fixup line endings+        print
> ($temp_file $line);+        last if ($line =~ /http/);  #Last line of copyright header
> contains a web link+    }+    print ($temp_file "\r\n");+    #Retrieve generated
> assembly contents+    while (my $line = <$target_file>) {+        $line =~
> s/\s+$/\r\n/;      #Trim trailing whitepsace, fixup line endings+        print
> ($temp_file expand ($line));  #expand() replaces tabs with spaces+    }++
> close ($source_file);+    close ($target_file);+    close ($temp_file);++    move
> ($temp_file_name, $target) ||+        die "Cannot replace \"" . $target .
> "\"!";+}  # # Find the openssl directory name for use lib. We have to do
> this@@ -21,10 +75,41 @@ use File::Copy;
>  # my $inf_file; my $OPENSSL_PATH;+my $uefi_config;+my $extension;+my
> $arch; my @inf;  BEGIN {     $inf_file = "OpensslLib.inf";+    $uefi_config =
> "UEFI";+    $arch = shift;++    if (defined $arch) {+        if (uc ($arch) eq "X64") {+
> $arch = "X64";+            $inf_file = "OpensslLibX64.inf";+            $uefi_config =
> "UEFI-x86_64";+            $extension = "nasm";+        } else {+            die
> "Unsupported architecture \"" . $arch . "\"!";+        }+        if ($extension eq
> "nasm") {+            if (`nasm -v 2>&1`) {+                #Presence of nasm executable
> will trigger inclusion of AVX instructions+                die "\nCannot run assembly
> generators with NASM in path!\n\n";+            }+        }++        # Prepare
> assembly folder+        if (-d $arch) {+            remove_tree ($arch, {safe => 1})
> ||+                die "Cannot clean assembly folder \"" . $arch . "\"!";+        } else {+
> mkdir $arch ||+                die "Cannot create assembly folder \"" . $arch .
> "\"!";+        }+    }      # Read the contents of the inf file     open( FD, "<" .
> $inf_file ) ||@@ -47,9 +132,9 @@ BEGIN {
>              # Configure UEFI             system(                 "./Configure",-
> "UEFI",+                "--config=../uefi-asm.conf",+                "$uefi_config",
> "no-afalgeng",-                "no-asm",                 "no-async",                 "no-
> autoerrinit",                 "no-autoload-config",@@ -129,23 +214,53 @@ BEGIN {
>  # Retrieve file lists from OpenSSL configdata # use configdata
> qw/%unified_info/;+use configdata qw/%config/;+use configdata
> qw/%target/;++#+# Collect build flags from configdata+#+my $flags =
> "";+foreach my $f (@{$config{lib_defines}}) {+    $flags .= " -D$f";+}  my
> @cryptofilelist = (); my @sslfilelist = ();+my @asmfilelist = ();+my @asmbuild
> = (); foreach my $product ((@{$unified_info{libraries}},
> @{$unified_info{engines}})) {     foreach my $o (@{$unified_info{sources}-
> >{$product}}) {         foreach my $s (@{$unified_info{sources}->{$o}}) {-
> next if ($unified_info{generate}->{$s});-            next if $s =~
> "crypto/bio/b_print.c";-             # No need to add unused files in UEFI.             #
> So it can reduce porting time, compile time, library size.+            next if $s =~
> "crypto/bio/b_print.c";             next if $s =~ "crypto/rand/randfile.c";
> next if $s =~ "crypto/store/";             next if $s =~ "crypto/err/err_all.c";
> next if $s =~ "crypto/aes/aes_ecb.c"; +            if ($unified_info{generate}-
> >{$s}) {+                if (defined $arch) {+                    my $buildstring = "perl";+
> foreach my $arg (@{$unified_info{generate}->{$s}}) {+                        if ($arg =~
> ".pl") {+                            $buildstring .= " ./openssl/$arg";+                        } elsif
> ($arg =~ "PERLASM_SCHEME") {+                            $buildstring .= "
> $target{perlasm_scheme}";+                        } elsif ($arg =~ "LIB_CFLAGS") {+
> $buildstring .= "$flags";+                        }+                    }+                    ($s, my $path,
> undef) = fileparse($s, qr/\.[^.]*/);+                    $buildstring .= "
> ./$arch/$path$s.$extension";+                    make_path ("./$arch/$path");+
> push @asmbuild, "$buildstring\n";+                    push @asmfilelist, "
> $arch/$path$s.$extension\r\n";+                }+                next;+            }             if
> ($product =~ "libssl") {                 push @sslfilelist, '  $(OPENSSL_PATH)/' . $s .
> "\r\n";                 next;@@ -183,15 +298,31 @@ foreach (@headers){
>  }  +#+# Generate assembly files+#+if (@asmbuild) {+    print "\n-->
> Generating assembly files ... ";+    foreach my $buildstring (@asmbuild) {+
> system ("$buildstring");+        copy_license_header ($buildstring);+    }+    print
> "Done!";+}+ # # Update OpensslLib.inf with autogenerated file list # my
> @new_inf = (); my $subbing = 0;-print "\n--> Updating OpensslLib.inf ...
> ";+print "\n--> Updating $inf_file ... "; foreach (@inf) {+    if ($_ =~ "DEFINE
> OPENSSL_FLAGS_CONFIG") {+        push @new_inf, "  DEFINE
> OPENSSL_FLAGS_CONFIG    =" . $flags . "\r\n";+        next;+    }     if ( $_ =~ "#
> Autogenerated files list starts here" ) {-        push @new_inf, $_,
> @cryptofilelist, @sslfilelist;+        push @new_inf, $_, @asmfilelist,
> @cryptofilelist, @sslfilelist;         $subbing = 1;         next;     }@@ -216,49
> +347,51 @@ rename( $new_inf_file, $inf_file ) ||
>      die "rename $inf_file"; print "Done!"; -#-# Update OpensslLibCrypto.inf
> with auto-generated file list (no libssl)-#-$inf_file = "OpensslLibCrypto.inf";--
> # Read the contents of the inf file-@inf = ();-@new_inf = ();-open( FD, "<" .
> $inf_file ) ||-    die "Cannot open \"" . $inf_file . "\"!";-@inf = (<FD>);-
> close(FD) ||-    die "Cannot close \"" . $inf_file . "\"!";+if (!defined $arch) {+
> #+    # Update OpensslLibCrypto.inf with auto-generated file list (no libssl)+
> #+    $inf_file = "OpensslLibCrypto.inf"; -$subbing = 0;-print "\n--> Updating
> OpensslLibCrypto.inf ... ";-foreach (@inf) {-    if ( $_ =~ "# Autogenerated files
> list starts here" ) {-        push @new_inf, $_, @cryptofilelist;-        $subbing = 1;-
> next;-    }-    if ( $_ =~ "# Autogenerated files list ends here" ) {-        push
> @new_inf, $_;-        $subbing = 0;-        next;+    # Read the contents of the inf
> file+    @inf = ();+    @new_inf = ();+    open( FD, "<" . $inf_file ) ||+        die
> "Cannot open \"" . $inf_file . "\"!";+    @inf = (<FD>);+    close(FD) ||+        die
> "Cannot close \"" . $inf_file . "\"!";++    $subbing = 0;+    print "\n--> Updating
> OpensslLibCrypto.inf ... ";+    foreach (@inf) {+        if ( $_ =~ "#
> Autogenerated files list starts here" ) {+            push @new_inf, $_,
> @cryptofilelist;+            $subbing = 1;+            next;+        }+        if ( $_ =~ "#
> Autogenerated files list ends here" ) {+            push @new_inf, $_;+
> $subbing = 0;+            next;+        }++        push @new_inf, $_+            unless
> ($subbing);     } -    push @new_inf, $_-        unless ($subbing);+
> $new_inf_file = $inf_file . ".new";+    open( FD, ">" . $new_inf_file ) ||+
> die $new_inf_file;+    print( FD @new_inf ) ||+        die $new_inf_file;+
> close(FD) ||+        die $new_inf_file;+    rename( $new_inf_file, $inf_file ) ||+
> die "rename $inf_file";+    print "Done!"; } -$new_inf_file = $inf_file .
> ".new";-open( FD, ">" . $new_inf_file ) ||-    die $new_inf_file;-print( FD
> @new_inf ) ||-    die $new_inf_file;-close(FD) ||-    die $new_inf_file;-
> rename( $new_inf_file, $inf_file ) ||-    die "rename $inf_file";-print
> "Done!";- # # Copy opensslconf.h and dso_conf.h generated from OpenSSL
> Configuration #diff --git a/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> new file mode 100644
> index 0000000000..55eedbf3ba
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> @@ -0,0 +1,15 @@
> +## -*- mode: perl; -*-+## UEFI assembly openssl configuration
> targets.++my %targets = (+#### UEFI+    "UEFI-x86_64" => {+
> perlasm_scheme  => "nasm",+        # inherit_from    => [ "UEFI",
> asm("x86_64_asm") ],+        inherit_from    => [ "UEFI" ],+        cpuid_asm_src
> => "x86_64cpuid.s",+        aes_asm_src     => "aes_core.c aes_cbc.c vpaes-
> x86_64.s aesni-x86_64.s aesni-sha1-x86_64.s aesni-sha256-x86_64.s aesni-
> mb-x86_64.s",+        sha1_asm_src    => "sha1-x86_64.s sha256-x86_64.s
> sha512-x86_64.s sha1-mb-x86_64.s sha256-mb-x86_64.s",+
> modes_asm_src   => "ghash-x86_64.s",+    },+);--
> 2.28.0.windows.1
> 
> 
> -=-=-=-=-=-=
> Groups.io Links: You receive all messages sent to this group.
> 
> View/Reply Online (#63682): https://edk2.groups.io/g/devel/message/63682
> Mute This Topic: https://groups.io/mt/75978612/4399222
> Group Owner: devel+owner@edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub
> [guomin.jiang@intel.com] -=-=-=-=-=-=


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

* Re: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
  2020-08-04  0:24 ` [PATCH v2 1/2] " Zurcher, Christopher J
  2020-08-11 11:46   ` [edk2-devel] " Guomin Jiang
@ 2020-08-13 15:03   ` Yao, Jiewen
  2020-08-18 22:49     ` Zurcher, Christopher J
       [not found]     ` <162C7E6ED8CEF542.12673@groups.io>
  1 sibling, 2 replies; 42+ messages in thread
From: Yao, Jiewen @ 2020-08-13 15:03 UTC (permalink / raw)
  To: Zurcher, Christopher J, devel@edk2.groups.io
  Cc: Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel

Hi Christopher
Thanks.

1) Would you please help me understand more on "ApiHooks.c contains a stub function for a Windows API call" ?
Why we need this?
If it is compiler specific in openssl, should we submit patch to openssl to exclude this with OPENSSL_SYS_UEFI? That should be a cleaner solution for UEFI.

2) Would you please describe what compiler you have tried? VS? GCC? LLVM?

3) Would you please describe what unit test you have done?

Thank you
Yao Jiewen


> -----Original Message-----
> From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> Sent: Tuesday, August 4, 2020 8:24 AM
> To: devel@edk2.groups.io
> Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J <jian.j.wang@intel.com>;
> Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support
> for X64
> 
> BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> 
> Adding OpensslLibX64.inf and modifying process_files.pl to process this
> file and generate the necessary assembly files.
> ApiHooks.c contains a stub function for a Windows API call.
> uefi-asm.conf contains the limited assembly configurations for OpenSSL.
> 
> Cc: Jiewen Yao <jiewen.yao@intel.com>
> Cc: Jian J Wang <jian.j.wang@intel.com>
> Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Signed-off-by: Christopher J Zurcher <christopher.j.zurcher@intel.com>
> ---
>  CryptoPkg/Library/OpensslLib/OpensslLib.inf          |   2 +-
>  CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf    |   2 +-
>  CryptoPkg/Library/OpensslLib/OpensslLibX64.inf       | 656
> ++++++++++++++++++++
>  CryptoPkg/Library/Include/openssl/opensslconf.h      |   3 -
>  CryptoPkg/Library/OpensslLib/ApiHooks.c              |  18 +
>  CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c |  34 +
>  CryptoPkg/Library/OpensslLib/process_files.pl        | 223 +++++--
>  CryptoPkg/Library/OpensslLib/uefi-asm.conf           |  15 +
>  8 files changed, 903 insertions(+), 50 deletions(-)
> 
> diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> index dbbe5386a1..bd62d86936 100644
> --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> @@ -16,7 +16,7 @@
>    VERSION_STRING                 = 1.0
> 
>    LIBRARY_CLASS                  = OpensslLib
> 
>    DEFINE OPENSSL_PATH            = openssl
> 
> -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT
> -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
> 
> +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT
> -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -
> DOPENSSL_NO_ASM
> 
> 
> 
>  #
> 
>  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
> 
> diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> index 616ccd9f62..2b7324a990 100644
> --- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> +++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> @@ -16,7 +16,7 @@
>    VERSION_STRING                 = 1.0
> 
>    LIBRARY_CLASS                  = OpensslLib
> 
>    DEFINE OPENSSL_PATH            = openssl
> 
> -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT
> -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
> 
> +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT
> -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -
> DOPENSSL_NO_ASM
> 
> 
> 
>  #
> 
>  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
> 
> diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> new file mode 100644
> index 0000000000..825eea0254
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> @@ -0,0 +1,656 @@
> +## @file
> 
> +#  This module provides OpenSSL Library implementation.
> 
> +#
> 
> +#  Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved.<BR>
> 
> +#  (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
> 
> +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +#
> 
> +##
> 
> +
> 
> +[Defines]
> 
> +  INF_VERSION                    = 0x00010005
> 
> +  BASE_NAME                      = OpensslLibX64
> 
> +  MODULE_UNI_FILE                = OpensslLib.uni
> 
> +  FILE_GUID                      = 18125E50-0117-4DD0-BE54-4784AD995FEF
> 
> +  MODULE_TYPE                    = BASE
> 
> +  VERSION_STRING                 = 1.0
> 
> +  LIBRARY_CLASS                  = OpensslLib
> 
> +  DEFINE OPENSSL_PATH            = openssl
> 
> +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT
> -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
> 
> +  DEFINE OPENSSL_FLAGS_CONFIG    = -DOPENSSL_CPUID_OBJ -DSHA1_ASM -
> DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM
> 
> +  CONSTRUCTOR                    = OpensslLibConstructor
> 
> +
> 
> +#
> 
> +#  VALID_ARCHITECTURES           = X64
> 
> +#
> 
> +
> 
> +[Sources]
> 
> +  OpensslLibConstructor.c
> 
> +  $(OPENSSL_PATH)/e_os.h
> 
> +  $(OPENSSL_PATH)/ms/uplink.h
> 
> +# Autogenerated files list starts here
> 
> +  X64/crypto/aes/aesni-mb-x86_64.nasm
> 
> +  X64/crypto/aes/aesni-sha1-x86_64.nasm
> 
> +  X64/crypto/aes/aesni-sha256-x86_64.nasm
> 
> +  X64/crypto/aes/aesni-x86_64.nasm
> 
> +  X64/crypto/aes/vpaes-x86_64.nasm
> 
> +  X64/crypto/modes/ghash-x86_64.nasm
> 
> +  X64/crypto/sha/sha1-mb-x86_64.nasm
> 
> +  X64/crypto/sha/sha1-x86_64.nasm
> 
> +  X64/crypto/sha/sha256-mb-x86_64.nasm
> 
> +  X64/crypto/sha/sha256-x86_64.nasm
> 
> +  X64/crypto/sha/sha512-x86_64.nasm
> 
> +  X64/crypto/x86_64cpuid.nasm
> 
> +  $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
> 
> +  $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
> 
> +  $(OPENSSL_PATH)/crypto/aes/aes_core.c
> 
> +  $(OPENSSL_PATH)/crypto/aes/aes_ige.c
> 
> +  $(OPENSSL_PATH)/crypto/aes/aes_misc.c
> 
> +  $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
> 
> +  $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
> 
> +  $(OPENSSL_PATH)/crypto/aria/aria.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/a_digest.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/a_dup.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/a_gentm.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/a_int.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/a_object.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/a_octet.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/a_print.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/a_sign.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/a_strex.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/a_strnid.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/a_time.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/a_type.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/a_utctm.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/a_utf8.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/a_verify.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/asn1_err.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/asn1_par.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/asn_mime.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/asn_moid.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/asn_pack.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/f_int.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/f_string.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/n_pkey.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/nsseq.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/t_bitst.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/t_pkey.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/t_spki.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/tasn_new.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/x_algor.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/x_bignum.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/x_info.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/x_int64.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/x_long.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/x_pkey.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/x_sig.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/x_spki.c
> 
> +  $(OPENSSL_PATH)/crypto/asn1/x_val.c
> 
> +  $(OPENSSL_PATH)/crypto/async/arch/async_null.c
> 
> +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
> 
> +  $(OPENSSL_PATH)/crypto/async/arch/async_win.c
> 
> +  $(OPENSSL_PATH)/crypto/async/async.c
> 
> +  $(OPENSSL_PATH)/crypto/async/async_err.c
> 
> +  $(OPENSSL_PATH)/crypto/async/async_wait.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/b_addr.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/b_dump.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/b_sock.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/b_sock2.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/bf_buff.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/bf_nbio.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/bf_null.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/bio_cb.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/bio_err.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/bio_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/bio_meth.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/bss_acpt.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/bss_bio.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/bss_conn.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/bss_dgram.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/bss_fd.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/bss_file.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/bss_log.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/bss_mem.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/bss_null.c
> 
> +  $(OPENSSL_PATH)/crypto/bio/bss_sock.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_add.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_asm.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_blind.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_const.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_ctx.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_depr.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_dh.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_div.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_err.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_exp.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_exp2.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_gcd.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_intern.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_kron.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_mod.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_mont.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_mpi.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_mul.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_nist.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_prime.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_print.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_rand.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_recp.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_shift.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_sqr.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_srp.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_word.c
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_x931p.c
> 
> +  $(OPENSSL_PATH)/crypto/buffer/buf_err.c
> 
> +  $(OPENSSL_PATH)/crypto/buffer/buffer.c
> 
> +  $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c
> 
> +  $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c
> 
> +  $(OPENSSL_PATH)/crypto/cmac/cmac.c
> 
> +  $(OPENSSL_PATH)/crypto/comp/c_zlib.c
> 
> +  $(OPENSSL_PATH)/crypto/comp/comp_err.c
> 
> +  $(OPENSSL_PATH)/crypto/comp/comp_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/conf/conf_api.c
> 
> +  $(OPENSSL_PATH)/crypto/conf/conf_def.c
> 
> +  $(OPENSSL_PATH)/crypto/conf/conf_err.c
> 
> +  $(OPENSSL_PATH)/crypto/conf/conf_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/conf/conf_mall.c
> 
> +  $(OPENSSL_PATH)/crypto/conf/conf_mod.c
> 
> +  $(OPENSSL_PATH)/crypto/conf/conf_sap.c
> 
> +  $(OPENSSL_PATH)/crypto/conf/conf_ssl.c
> 
> +  $(OPENSSL_PATH)/crypto/cpt_err.c
> 
> +  $(OPENSSL_PATH)/crypto/cryptlib.c
> 
> +  $(OPENSSL_PATH)/crypto/ctype.c
> 
> +  $(OPENSSL_PATH)/crypto/cversion.c
> 
> +  $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
> 
> +  $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
> 
> +  $(OPENSSL_PATH)/crypto/dh/dh_check.c
> 
> +  $(OPENSSL_PATH)/crypto/dh/dh_depr.c
> 
> +  $(OPENSSL_PATH)/crypto/dh/dh_err.c
> 
> +  $(OPENSSL_PATH)/crypto/dh/dh_gen.c
> 
> +  $(OPENSSL_PATH)/crypto/dh/dh_kdf.c
> 
> +  $(OPENSSL_PATH)/crypto/dh/dh_key.c
> 
> +  $(OPENSSL_PATH)/crypto/dh/dh_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/dh/dh_meth.c
> 
> +  $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c
> 
> +  $(OPENSSL_PATH)/crypto/dh/dh_prn.c
> 
> +  $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
> 
> +  $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
> 
> +  $(OPENSSL_PATH)/crypto/dso/dso_dl.c
> 
> +  $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
> 
> +  $(OPENSSL_PATH)/crypto/dso/dso_err.c
> 
> +  $(OPENSSL_PATH)/crypto/dso/dso_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
> 
> +  $(OPENSSL_PATH)/crypto/dso/dso_vms.c
> 
> +  $(OPENSSL_PATH)/crypto/dso/dso_win32.c
> 
> +  $(OPENSSL_PATH)/crypto/ebcdic.c
> 
> +  $(OPENSSL_PATH)/crypto/err/err.c
> 
> +  $(OPENSSL_PATH)/crypto/err/err_prn.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/bio_enc.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/bio_md.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/bio_ok.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/c_allc.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/c_alld.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/digest.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_aes.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_aria.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_bf.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_camellia.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_cast.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_des.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_des3.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_idea.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_null.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_old.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_rc2.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_rc4.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_rc5.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_seed.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_sm4.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/encode.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/evp_cnf.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/evp_enc.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/evp_err.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/evp_key.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/evp_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/evp_pbe.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/evp_pkey.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/m_md2.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/m_md4.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/m_md5.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/m_mdc2.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/m_null.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/m_ripemd.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/m_sha1.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/m_sha3.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/m_sigver.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/m_wp.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/names.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/p5_crpt.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/p_dec.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/p_enc.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/p_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/p_open.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/p_seal.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/p_sign.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/p_verify.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
> 
> +  $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/ex_data.c
> 
> +  $(OPENSSL_PATH)/crypto/getenv.c
> 
> +  $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
> 
> +  $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c
> 
> +  $(OPENSSL_PATH)/crypto/hmac/hmac.c
> 
> +  $(OPENSSL_PATH)/crypto/init.c
> 
> +  $(OPENSSL_PATH)/crypto/kdf/hkdf.c
> 
> +  $(OPENSSL_PATH)/crypto/kdf/kdf_err.c
> 
> +  $(OPENSSL_PATH)/crypto/kdf/scrypt.c
> 
> +  $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c
> 
> +  $(OPENSSL_PATH)/crypto/lhash/lh_stats.c
> 
> +  $(OPENSSL_PATH)/crypto/lhash/lhash.c
> 
> +  $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
> 
> +  $(OPENSSL_PATH)/crypto/md5/md5_one.c
> 
> +  $(OPENSSL_PATH)/crypto/mem.c
> 
> +  $(OPENSSL_PATH)/crypto/mem_dbg.c
> 
> +  $(OPENSSL_PATH)/crypto/mem_sec.c
> 
> +  $(OPENSSL_PATH)/crypto/modes/cbc128.c
> 
> +  $(OPENSSL_PATH)/crypto/modes/ccm128.c
> 
> +  $(OPENSSL_PATH)/crypto/modes/cfb128.c
> 
> +  $(OPENSSL_PATH)/crypto/modes/ctr128.c
> 
> +  $(OPENSSL_PATH)/crypto/modes/cts128.c
> 
> +  $(OPENSSL_PATH)/crypto/modes/gcm128.c
> 
> +  $(OPENSSL_PATH)/crypto/modes/ocb128.c
> 
> +  $(OPENSSL_PATH)/crypto/modes/ofb128.c
> 
> +  $(OPENSSL_PATH)/crypto/modes/wrap128.c
> 
> +  $(OPENSSL_PATH)/crypto/modes/xts128.c
> 
> +  $(OPENSSL_PATH)/crypto/o_dir.c
> 
> +  $(OPENSSL_PATH)/crypto/o_fips.c
> 
> +  $(OPENSSL_PATH)/crypto/o_fopen.c
> 
> +  $(OPENSSL_PATH)/crypto/o_init.c
> 
> +  $(OPENSSL_PATH)/crypto/o_str.c
> 
> +  $(OPENSSL_PATH)/crypto/o_time.c
> 
> +  $(OPENSSL_PATH)/crypto/objects/o_names.c
> 
> +  $(OPENSSL_PATH)/crypto/objects/obj_dat.c
> 
> +  $(OPENSSL_PATH)/crypto/objects/obj_err.c
> 
> +  $(OPENSSL_PATH)/crypto/objects/obj_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/objects/obj_xref.c
> 
> +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c
> 
> +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c
> 
> +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c
> 
> +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c
> 
> +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c
> 
> +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c
> 
> +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c
> 
> +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c
> 
> +  $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c
> 
> +  $(OPENSSL_PATH)/crypto/pem/pem_all.c
> 
> +  $(OPENSSL_PATH)/crypto/pem/pem_err.c
> 
> +  $(OPENSSL_PATH)/crypto/pem/pem_info.c
> 
> +  $(OPENSSL_PATH)/crypto/pem/pem_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/pem/pem_oth.c
> 
> +  $(OPENSSL_PATH)/crypto/pem/pem_pk8.c
> 
> +  $(OPENSSL_PATH)/crypto/pem/pem_pkey.c
> 
> +  $(OPENSSL_PATH)/crypto/pem/pem_sign.c
> 
> +  $(OPENSSL_PATH)/crypto/pem/pem_x509.c
> 
> +  $(OPENSSL_PATH)/crypto/pem/pem_xaux.c
> 
> +  $(OPENSSL_PATH)/crypto/pem/pvkfmt.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c
> 
> +  $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c
> 
> +  $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c
> 
> +  $(OPENSSL_PATH)/crypto/rand/drbg_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/rand/rand_egd.c
> 
> +  $(OPENSSL_PATH)/crypto/rand/rand_err.c
> 
> +  $(OPENSSL_PATH)/crypto/rand/rand_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/rand/rand_unix.c
> 
> +  $(OPENSSL_PATH)/crypto/rand/rand_vms.c
> 
> +  $(OPENSSL_PATH)/crypto/rand/rand_win.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_err.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_none.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
> 
> +  $(OPENSSL_PATH)/crypto/sha/keccak1600.c
> 
> +  $(OPENSSL_PATH)/crypto/sha/sha1_one.c
> 
> +  $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
> 
> +  $(OPENSSL_PATH)/crypto/sha/sha256.c
> 
> +  $(OPENSSL_PATH)/crypto/sha/sha512.c
> 
> +  $(OPENSSL_PATH)/crypto/siphash/siphash.c
> 
> +  $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
> 
> +  $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> 
> +  $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
> 
> +  $(OPENSSL_PATH)/crypto/sm3/sm3.c
> 
> +  $(OPENSSL_PATH)/crypto/sm4/sm4.c
> 
> +  $(OPENSSL_PATH)/crypto/stack/stack.c
> 
> +  $(OPENSSL_PATH)/crypto/threads_none.c
> 
> +  $(OPENSSL_PATH)/crypto/threads_pthread.c
> 
> +  $(OPENSSL_PATH)/crypto/threads_win.c
> 
> +  $(OPENSSL_PATH)/crypto/txt_db/txt_db.c
> 
> +  $(OPENSSL_PATH)/crypto/ui/ui_err.c
> 
> +  $(OPENSSL_PATH)/crypto/ui/ui_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/ui/ui_null.c
> 
> +  $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
> 
> +  $(OPENSSL_PATH)/crypto/ui/ui_util.c
> 
> +  $(OPENSSL_PATH)/crypto/uid.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/by_dir.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/by_file.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/t_crl.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/t_req.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/t_x509.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509_att.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509_cmp.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509_d2.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509_def.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509_err.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509_ext.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509_lu.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509_meth.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509_obj.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509_r2x.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509_req.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509_set.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509_trs.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509_txt.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509_v3.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509_vfy.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509_vpm.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509cset.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509name.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509rset.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509spki.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509type.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x_all.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x_attrib.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x_crl.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x_exten.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x_name.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x_pubkey.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x_req.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x_x509.c
> 
> +  $(OPENSSL_PATH)/crypto/x509/x_x509a.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_info.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_int.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3err.c
> 
> +  $(OPENSSL_PATH)/crypto/arm_arch.h
> 
> +  $(OPENSSL_PATH)/crypto/mips_arch.h
> 
> +  $(OPENSSL_PATH)/crypto/ppc_arch.h
> 
> +  $(OPENSSL_PATH)/crypto/s390x_arch.h
> 
> +  $(OPENSSL_PATH)/crypto/sparc_arch.h
> 
> +  $(OPENSSL_PATH)/crypto/vms_rms.h
> 
> +  $(OPENSSL_PATH)/crypto/aes/aes_local.h
> 
> +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
> 
> +  $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
> 
> +  $(OPENSSL_PATH)/crypto/asn1/charmap.h
> 
> +  $(OPENSSL_PATH)/crypto/asn1/standard_methods.h
> 
> +  $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
> 
> +  $(OPENSSL_PATH)/crypto/async/async_local.h
> 
> +  $(OPENSSL_PATH)/crypto/async/arch/async_null.h
> 
> +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.h
> 
> +  $(OPENSSL_PATH)/crypto/async/arch/async_win.h
> 
> +  $(OPENSSL_PATH)/crypto/bio/bio_local.h
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_local.h
> 
> +  $(OPENSSL_PATH)/crypto/bn/bn_prime.h
> 
> +  $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h
> 
> +  $(OPENSSL_PATH)/crypto/comp/comp_local.h
> 
> +  $(OPENSSL_PATH)/crypto/conf/conf_def.h
> 
> +  $(OPENSSL_PATH)/crypto/conf/conf_local.h
> 
> +  $(OPENSSL_PATH)/crypto/dh/dh_local.h
> 
> +  $(OPENSSL_PATH)/crypto/dso/dso_local.h
> 
> +  $(OPENSSL_PATH)/crypto/evp/evp_local.h
> 
> +  $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
> 
> +  $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> 
> +  $(OPENSSL_PATH)/crypto/md5/md5_local.h
> 
> +  $(OPENSSL_PATH)/crypto/modes/modes_local.h
> 
> +  $(OPENSSL_PATH)/crypto/objects/obj_dat.h
> 
> +  $(OPENSSL_PATH)/crypto/objects/obj_local.h
> 
> +  $(OPENSSL_PATH)/crypto/objects/obj_xref.h
> 
> +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h
> 
> +  $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h
> 
> +  $(OPENSSL_PATH)/crypto/rand/rand_local.h
> 
> +  $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
> 
> +  $(OPENSSL_PATH)/crypto/sha/sha_local.h
> 
> +  $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
> 
> +  $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
> 
> +  $(OPENSSL_PATH)/crypto/store/store_local.h
> 
> +  $(OPENSSL_PATH)/crypto/ui/ui_local.h
> 
> +  $(OPENSSL_PATH)/crypto/x509/x509_local.h
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h
> 
> +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h
> 
> +  $(OPENSSL_PATH)/ssl/bio_ssl.c
> 
> +  $(OPENSSL_PATH)/ssl/d1_lib.c
> 
> +  $(OPENSSL_PATH)/ssl/d1_msg.c
> 
> +  $(OPENSSL_PATH)/ssl/d1_srtp.c
> 
> +  $(OPENSSL_PATH)/ssl/methods.c
> 
> +  $(OPENSSL_PATH)/ssl/packet.c
> 
> +  $(OPENSSL_PATH)/ssl/pqueue.c
> 
> +  $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c
> 
> +  $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c
> 
> +  $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c
> 
> +  $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c
> 
> +  $(OPENSSL_PATH)/ssl/record/ssl3_record.c
> 
> +  $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c
> 
> +  $(OPENSSL_PATH)/ssl/s3_cbc.c
> 
> +  $(OPENSSL_PATH)/ssl/s3_enc.c
> 
> +  $(OPENSSL_PATH)/ssl/s3_lib.c
> 
> +  $(OPENSSL_PATH)/ssl/s3_msg.c
> 
> +  $(OPENSSL_PATH)/ssl/ssl_asn1.c
> 
> +  $(OPENSSL_PATH)/ssl/ssl_cert.c
> 
> +  $(OPENSSL_PATH)/ssl/ssl_ciph.c
> 
> +  $(OPENSSL_PATH)/ssl/ssl_conf.c
> 
> +  $(OPENSSL_PATH)/ssl/ssl_err.c
> 
> +  $(OPENSSL_PATH)/ssl/ssl_init.c
> 
> +  $(OPENSSL_PATH)/ssl/ssl_lib.c
> 
> +  $(OPENSSL_PATH)/ssl/ssl_mcnf.c
> 
> +  $(OPENSSL_PATH)/ssl/ssl_rsa.c
> 
> +  $(OPENSSL_PATH)/ssl/ssl_sess.c
> 
> +  $(OPENSSL_PATH)/ssl/ssl_stat.c
> 
> +  $(OPENSSL_PATH)/ssl/ssl_txt.c
> 
> +  $(OPENSSL_PATH)/ssl/ssl_utst.c
> 
> +  $(OPENSSL_PATH)/ssl/statem/extensions.c
> 
> +  $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c
> 
> +  $(OPENSSL_PATH)/ssl/statem/extensions_cust.c
> 
> +  $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c
> 
> +  $(OPENSSL_PATH)/ssl/statem/statem.c
> 
> +  $(OPENSSL_PATH)/ssl/statem/statem_clnt.c
> 
> +  $(OPENSSL_PATH)/ssl/statem/statem_dtls.c
> 
> +  $(OPENSSL_PATH)/ssl/statem/statem_lib.c
> 
> +  $(OPENSSL_PATH)/ssl/statem/statem_srvr.c
> 
> +  $(OPENSSL_PATH)/ssl/t1_enc.c
> 
> +  $(OPENSSL_PATH)/ssl/t1_lib.c
> 
> +  $(OPENSSL_PATH)/ssl/t1_trce.c
> 
> +  $(OPENSSL_PATH)/ssl/tls13_enc.c
> 
> +  $(OPENSSL_PATH)/ssl/tls_srp.c
> 
> +  $(OPENSSL_PATH)/ssl/packet_local.h
> 
> +  $(OPENSSL_PATH)/ssl/ssl_cert_table.h
> 
> +  $(OPENSSL_PATH)/ssl/ssl_local.h
> 
> +  $(OPENSSL_PATH)/ssl/record/record.h
> 
> +  $(OPENSSL_PATH)/ssl/record/record_local.h
> 
> +  $(OPENSSL_PATH)/ssl/statem/statem.h
> 
> +  $(OPENSSL_PATH)/ssl/statem/statem_local.h
> 
> +# Autogenerated files list ends here
> 
> +  buildinf.h
> 
> +  rand_pool_noise.h
> 
> +  ossl_store.c
> 
> +  rand_pool.c
> 
> +
> 
> +[Sources.X64]
> 
> +  rand_pool_noise_tsc.c
> 
> +  ApiHooks.c
> 
> +
> 
> +[Packages]
> 
> +  MdePkg/MdePkg.dec
> 
> +  CryptoPkg/CryptoPkg.dec
> 
> +
> 
> +[LibraryClasses]
> 
> +  BaseLib
> 
> +  DebugLib
> 
> +  TimerLib
> 
> +  PrintLib
> 
> +
> 
> +[BuildOptions]
> 
> +  #
> 
> +  # Disables the following Visual Studio compiler warnings brought by openssl
> source,
> 
> +  # so we do not break the build with /WX option:
> 
> +  #   C4090: 'function' : different 'const' qualifiers
> 
> +  #   C4132: 'object' : const object should be initialized (tls13_enc.c)
> 
> +  #   C4210: nonstandard extension used: function given file scope
> 
> +  #   C4244: conversion from type1 to type2, possible loss of data
> 
> +  #   C4245: conversion from type1 to type2, signed/unsigned mismatch
> 
> +  #   C4267: conversion from size_t to type, possible loss of data
> 
> +  #   C4306: 'identifier' : conversion from 'type1' to 'type2' of greater size
> 
> +  #   C4310: cast truncates constant value
> 
> +  #   C4389: 'operator' : signed/unsigned mismatch (xxxx)
> 
> +  #   C4700: uninitialized local variable 'name' used. (conf_sap.c(71))
> 
> +  #   C4702: unreachable code
> 
> +  #   C4706: assignment within conditional expression
> 
> +  #   C4819: The file contains a character that cannot be represented in the
> current code page
> 
> +  #
> 
> +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER
> $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132 /wd4210
> /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700 /wd4389 /wd4702
> /wd4706 /wd4819
> 
> +
> 
> +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> 
> +
> 
> +  #
> 
> +  # Suppress the following build warnings in openssl so we don't break the build
> with -Werror
> 
> +  #   -Werror=maybe-uninitialized: there exist some other paths for which the
> variable is not initialized.
> 
> +  #   -Werror=format: Check calls to printf and scanf, etc., to make sure that the
> arguments supplied have
> 
> +  #                   types appropriate to the format string specified.
> 
> +  #   -Werror=unused-but-set-variable: Warn whenever a local variable is
> assigned to, but otherwise unused (aside from its declaration).
> 
> +  #
> 
> +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-
> error=format -Wno-format -Wno-error=unused-but-set-variable -
> DNO_MSABI_VA_FUNCS
> 
> +
> 
> +  # suppress the following warnings in openssl so we don't break the build with
> warnings-as-errors:
> 
> +  # 1295: Deprecated declaration <entity> - give arg types
> 
> +  #  550: <entity> was set but never used
> 
> +  # 1293: assignment in condition
> 
> +  #  111: statement is unreachable (invariably "break;" after "return X;" in case
> statement)
> 
> +  #   68: integer conversion resulted in a change of sign ("if (Status == -1)")
> 
> +  #  177: <entity> was declared but never referenced
> 
> +  #  223: function <entity> declared implicitly
> 
> +  #  144: a value of type <type> cannot be used to initialize an entity of type
> <type>
> 
> +  #  513: a value of type <type> cannot be assigned to an entity of type <type>
> 
> +  #  188: enumerated type mixed with another type (i.e. passing an integer as an
> enum without a cast)
> 
> +  # 1296: Extended constant initialiser used
> 
> +  #  128: loop is not reachable - may be emitted inappropriately if code follows
> a conditional return
> 
> +  #       from the function that evaluates to true at compile time
> 
> +  #  546: transfer of control bypasses initialization - may be emitted
> inappropriately if the uninitialized
> 
> +  #       variable is never referenced after the jump
> 
> +  #    1: ignore "#1-D: last line of file ends without a newline"
> 
> +  # 3017: <entity> may be used before being set (NOTE: This was fixed in
> OpenSSL 1.1 HEAD with
> 
> +  #       commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and can be
> dropped then.)
> 
> +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -U_WIN64
> $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-
> error=uninitialized
> 
> diff --git a/CryptoPkg/Library/Include/openssl/opensslconf.h
> b/CryptoPkg/Library/Include/openssl/opensslconf.h
> index 3a2544ea5c..e8f73c4d10 100644
> --- a/CryptoPkg/Library/Include/openssl/opensslconf.h
> +++ b/CryptoPkg/Library/Include/openssl/opensslconf.h
> @@ -112,9 +112,6 @@ extern "C" {
>  #ifndef OPENSSL_NO_ASAN
> 
>  # define OPENSSL_NO_ASAN
> 
>  #endif
> 
> -#ifndef OPENSSL_NO_ASM
> 
> -# define OPENSSL_NO_ASM
> 
> -#endif
> 
>  #ifndef OPENSSL_NO_ASYNC
> 
>  # define OPENSSL_NO_ASYNC
> 
>  #endif
> 
> diff --git a/CryptoPkg/Library/OpensslLib/ApiHooks.c
> b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> new file mode 100644
> index 0000000000..58cff16838
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> @@ -0,0 +1,18 @@
> +/** @file
> 
> +  OpenSSL Library API hooks.
> 
> +
> 
> +Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
> 
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +
> 
> +#include <Uefi.h>
> 
> +
> 
> +VOID *
> 
> +__imp_RtlVirtualUnwind (
> 
> +  VOID *    Args
> 
> +  )
> 
> +{
> 
> +  return NULL;
> 
> +}
> 
> +
> 
> diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> new file mode 100644
> index 0000000000..ef20d2b84e
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> @@ -0,0 +1,34 @@
> +/** @file
> 
> +  Constructor to initialize CPUID data for OpenSSL assembly operations.
> 
> +
> 
> +Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
> 
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +
> 
> +#include <Uefi.h>
> 
> +
> 
> +extern void OPENSSL_cpuid_setup (void);
> 
> +
> 
> +/**
> 
> +  Constructor routine for OpensslLib.
> 
> +
> 
> +  The constructor calls an internal OpenSSL function which fetches a local copy
> 
> +  of the hardware capability flags, used to enable native crypto instructions.
> 
> +
> 
> +  @param  None
> 
> +
> 
> +  @retval EFI_SUCCESS         The construction succeeded.
> 
> +
> 
> +**/
> 
> +EFI_STATUS
> 
> +EFIAPI
> 
> +OpensslLibConstructor (
> 
> +  VOID
> 
> +  )
> 
> +{
> 
> +  OPENSSL_cpuid_setup ();
> 
> +
> 
> +  return EFI_SUCCESS;
> 
> +}
> 
> +
> 
> diff --git a/CryptoPkg/Library/OpensslLib/process_files.pl
> b/CryptoPkg/Library/OpensslLib/process_files.pl
> index 57ce195394..472f59bc8e 100755
> --- a/CryptoPkg/Library/OpensslLib/process_files.pl
> +++ b/CryptoPkg/Library/OpensslLib/process_files.pl
> @@ -9,9 +9,63 @@
>  # do not need to do this, since the results are stored in the EDK2
> 
>  # git repository for them.
> 
>  #
> 
> +# Due to the script wrapping required to process the OpenSSL
> 
> +# configuration data, each native architecture must be processed
> 
> +# individually by the maintainer (in addition to the standard version):
> 
> +#   ./process_files.pl
> 
> +#   ./process_files.pl X64
> 
> +#   ./process_files.pl [Arch]
> 
> +
> 
>  use strict;
> 
>  use Cwd;
> 
>  use File::Copy;
> 
> +use File::Basename;
> 
> +use File::Path qw(make_path remove_tree);
> 
> +use Text::Tabs;
> 
> +
> 
> +#
> 
> +# OpenSSL perlasm generator script does not transfer the copyright header
> 
> +#
> 
> +sub copy_license_header
> 
> +{
> 
> +    my @args = split / /, shift;    #Separate args by spaces
> 
> +    my $source = $args[1];          #Source file is second (after "perl")
> 
> +    my $target = pop @args;         #Target file is always last
> 
> +    chop ($target);                 #Remove newline char
> 
> +
> 
> +    my $temp_file_name = "license.tmp";
> 
> +    open (my $source_file, "<" . $source) || die $source;
> 
> +    open (my $target_file, "<" . $target) || die $target;
> 
> +    open (my $temp_file, ">" . $temp_file_name) || die $temp_file_name;
> 
> +
> 
> +    #Add "generated file" warning
> 
> +    $source =~ s/^..//;             #Remove leading "./"
> 
> +    print ($temp_file "; WARNING: do not edit!\r\n");
> 
> +    print ($temp_file "; Generated from $source\r\n");
> 
> +    print ($temp_file ";\r\n");
> 
> +
> 
> +    #Copy source file header to temp file
> 
> +    while (my $line = <$source_file>) {
> 
> +        next if ($line =~ /#!/);    #Ignore shebang line
> 
> +        $line =~ s/#/;/;            #Fix comment character for assembly
> 
> +        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace, fixup line endings
> 
> +        print ($temp_file $line);
> 
> +        last if ($line =~ /http/);  #Last line of copyright header contains a web link
> 
> +    }
> 
> +    print ($temp_file "\r\n");
> 
> +    #Retrieve generated assembly contents
> 
> +    while (my $line = <$target_file>) {
> 
> +        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace, fixup line endings
> 
> +        print ($temp_file expand ($line));  #expand() replaces tabs with spaces
> 
> +    }
> 
> +
> 
> +    close ($source_file);
> 
> +    close ($target_file);
> 
> +    close ($temp_file);
> 
> +
> 
> +    move ($temp_file_name, $target) ||
> 
> +        die "Cannot replace \"" . $target . "\"!";
> 
> +}
> 
> 
> 
>  #
> 
>  # Find the openssl directory name for use lib. We have to do this
> 
> @@ -21,10 +75,41 @@ use File::Copy;
>  #
> 
>  my $inf_file;
> 
>  my $OPENSSL_PATH;
> 
> +my $uefi_config;
> 
> +my $extension;
> 
> +my $arch;
> 
>  my @inf;
> 
> 
> 
>  BEGIN {
> 
>      $inf_file = "OpensslLib.inf";
> 
> +    $uefi_config = "UEFI";
> 
> +    $arch = shift;
> 
> +
> 
> +    if (defined $arch) {
> 
> +        if (uc ($arch) eq "X64") {
> 
> +            $arch = "X64";
> 
> +            $inf_file = "OpensslLibX64.inf";
> 
> +            $uefi_config = "UEFI-x86_64";
> 
> +            $extension = "nasm";
> 
> +        } else {
> 
> +            die "Unsupported architecture \"" . $arch . "\"!";
> 
> +        }
> 
> +        if ($extension eq "nasm") {
> 
> +            if (`nasm -v 2>&1`) {
> 
> +                #Presence of nasm executable will trigger inclusion of AVX instructions
> 
> +                die "\nCannot run assembly generators with NASM in path!\n\n";
> 
> +            }
> 
> +        }
> 
> +
> 
> +        # Prepare assembly folder
> 
> +        if (-d $arch) {
> 
> +            remove_tree ($arch, {safe => 1}) ||
> 
> +                die "Cannot clean assembly folder \"" . $arch . "\"!";
> 
> +        } else {
> 
> +            mkdir $arch ||
> 
> +                die "Cannot create assembly folder \"" . $arch . "\"!";
> 
> +        }
> 
> +    }
> 
> 
> 
>      # Read the contents of the inf file
> 
>      open( FD, "<" . $inf_file ) ||
> 
> @@ -47,9 +132,9 @@ BEGIN {
>              # Configure UEFI
> 
>              system(
> 
>                  "./Configure",
> 
> -                "UEFI",
> 
> +                "--config=../uefi-asm.conf",
> 
> +                "$uefi_config",
> 
>                  "no-afalgeng",
> 
> -                "no-asm",
> 
>                  "no-async",
> 
>                  "no-autoerrinit",
> 
>                  "no-autoload-config",
> 
> @@ -129,23 +214,53 @@ BEGIN {
>  # Retrieve file lists from OpenSSL configdata
> 
>  #
> 
>  use configdata qw/%unified_info/;
> 
> +use configdata qw/%config/;
> 
> +use configdata qw/%target/;
> 
> +
> 
> +#
> 
> +# Collect build flags from configdata
> 
> +#
> 
> +my $flags = "";
> 
> +foreach my $f (@{$config{lib_defines}}) {
> 
> +    $flags .= " -D$f";
> 
> +}
> 
> 
> 
>  my @cryptofilelist = ();
> 
>  my @sslfilelist = ();
> 
> +my @asmfilelist = ();
> 
> +my @asmbuild = ();
> 
>  foreach my $product ((@{$unified_info{libraries}},
> 
>                        @{$unified_info{engines}})) {
> 
>      foreach my $o (@{$unified_info{sources}->{$product}}) {
> 
>          foreach my $s (@{$unified_info{sources}->{$o}}) {
> 
> -            next if ($unified_info{generate}->{$s});
> 
> -            next if $s =~ "crypto/bio/b_print.c";
> 
> -
> 
>              # No need to add unused files in UEFI.
> 
>              # So it can reduce porting time, compile time, library size.
> 
> +            next if $s =~ "crypto/bio/b_print.c";
> 
>              next if $s =~ "crypto/rand/randfile.c";
> 
>              next if $s =~ "crypto/store/";
> 
>              next if $s =~ "crypto/err/err_all.c";
> 
>              next if $s =~ "crypto/aes/aes_ecb.c";
> 
> 
> 
> +            if ($unified_info{generate}->{$s}) {
> 
> +                if (defined $arch) {
> 
> +                    my $buildstring = "perl";
> 
> +                    foreach my $arg (@{$unified_info{generate}->{$s}}) {
> 
> +                        if ($arg =~ ".pl") {
> 
> +                            $buildstring .= " ./openssl/$arg";
> 
> +                        } elsif ($arg =~ "PERLASM_SCHEME") {
> 
> +                            $buildstring .= " $target{perlasm_scheme}";
> 
> +                        } elsif ($arg =~ "LIB_CFLAGS") {
> 
> +                            $buildstring .= "$flags";
> 
> +                        }
> 
> +                    }
> 
> +                    ($s, my $path, undef) = fileparse($s, qr/\.[^.]*/);
> 
> +                    $buildstring .= " ./$arch/$path$s.$extension";
> 
> +                    make_path ("./$arch/$path");
> 
> +                    push @asmbuild, "$buildstring\n";
> 
> +                    push @asmfilelist, "  $arch/$path$s.$extension\r\n";
> 
> +                }
> 
> +                next;
> 
> +            }
> 
>              if ($product =~ "libssl") {
> 
>                  push @sslfilelist, '  $(OPENSSL_PATH)/' . $s . "\r\n";
> 
>                  next;
> 
> @@ -183,15 +298,31 @@ foreach (@headers){
>  }
> 
> 
> 
> 
> 
> +#
> 
> +# Generate assembly files
> 
> +#
> 
> +if (@asmbuild) {
> 
> +    print "\n--> Generating assembly files ... ";
> 
> +    foreach my $buildstring (@asmbuild) {
> 
> +        system ("$buildstring");
> 
> +        copy_license_header ($buildstring);
> 
> +    }
> 
> +    print "Done!";
> 
> +}
> 
> +
> 
>  #
> 
>  # Update OpensslLib.inf with autogenerated file list
> 
>  #
> 
>  my @new_inf = ();
> 
>  my $subbing = 0;
> 
> -print "\n--> Updating OpensslLib.inf ... ";
> 
> +print "\n--> Updating $inf_file ... ";
> 
>  foreach (@inf) {
> 
> +    if ($_ =~ "DEFINE OPENSSL_FLAGS_CONFIG") {
> 
> +        push @new_inf, "  DEFINE OPENSSL_FLAGS_CONFIG    =" . $flags . "\r\n";
> 
> +        next;
> 
> +    }
> 
>      if ( $_ =~ "# Autogenerated files list starts here" ) {
> 
> -        push @new_inf, $_, @cryptofilelist, @sslfilelist;
> 
> +        push @new_inf, $_, @asmfilelist, @cryptofilelist, @sslfilelist;
> 
>          $subbing = 1;
> 
>          next;
> 
>      }
> 
> @@ -216,49 +347,51 @@ rename( $new_inf_file, $inf_file ) ||
>      die "rename $inf_file";
> 
>  print "Done!";
> 
> 
> 
> -#
> 
> -# Update OpensslLibCrypto.inf with auto-generated file list (no libssl)
> 
> -#
> 
> -$inf_file = "OpensslLibCrypto.inf";
> 
> -
> 
> -# Read the contents of the inf file
> 
> -@inf = ();
> 
> -@new_inf = ();
> 
> -open( FD, "<" . $inf_file ) ||
> 
> -    die "Cannot open \"" . $inf_file . "\"!";
> 
> -@inf = (<FD>);
> 
> -close(FD) ||
> 
> -    die "Cannot close \"" . $inf_file . "\"!";
> 
> +if (!defined $arch) {
> 
> +    #
> 
> +    # Update OpensslLibCrypto.inf with auto-generated file list (no libssl)
> 
> +    #
> 
> +    $inf_file = "OpensslLibCrypto.inf";
> 
> 
> 
> -$subbing = 0;
> 
> -print "\n--> Updating OpensslLibCrypto.inf ... ";
> 
> -foreach (@inf) {
> 
> -    if ( $_ =~ "# Autogenerated files list starts here" ) {
> 
> -        push @new_inf, $_, @cryptofilelist;
> 
> -        $subbing = 1;
> 
> -        next;
> 
> -    }
> 
> -    if ( $_ =~ "# Autogenerated files list ends here" ) {
> 
> -        push @new_inf, $_;
> 
> -        $subbing = 0;
> 
> -        next;
> 
> +    # Read the contents of the inf file
> 
> +    @inf = ();
> 
> +    @new_inf = ();
> 
> +    open( FD, "<" . $inf_file ) ||
> 
> +        die "Cannot open \"" . $inf_file . "\"!";
> 
> +    @inf = (<FD>);
> 
> +    close(FD) ||
> 
> +        die "Cannot close \"" . $inf_file . "\"!";
> 
> +
> 
> +    $subbing = 0;
> 
> +    print "\n--> Updating OpensslLibCrypto.inf ... ";
> 
> +    foreach (@inf) {
> 
> +        if ( $_ =~ "# Autogenerated files list starts here" ) {
> 
> +            push @new_inf, $_, @cryptofilelist;
> 
> +            $subbing = 1;
> 
> +            next;
> 
> +        }
> 
> +        if ( $_ =~ "# Autogenerated files list ends here" ) {
> 
> +            push @new_inf, $_;
> 
> +            $subbing = 0;
> 
> +            next;
> 
> +        }
> 
> +
> 
> +        push @new_inf, $_
> 
> +            unless ($subbing);
> 
>      }
> 
> 
> 
> -    push @new_inf, $_
> 
> -        unless ($subbing);
> 
> +    $new_inf_file = $inf_file . ".new";
> 
> +    open( FD, ">" . $new_inf_file ) ||
> 
> +        die $new_inf_file;
> 
> +    print( FD @new_inf ) ||
> 
> +        die $new_inf_file;
> 
> +    close(FD) ||
> 
> +        die $new_inf_file;
> 
> +    rename( $new_inf_file, $inf_file ) ||
> 
> +        die "rename $inf_file";
> 
> +    print "Done!";
> 
>  }
> 
> 
> 
> -$new_inf_file = $inf_file . ".new";
> 
> -open( FD, ">" . $new_inf_file ) ||
> 
> -    die $new_inf_file;
> 
> -print( FD @new_inf ) ||
> 
> -    die $new_inf_file;
> 
> -close(FD) ||
> 
> -    die $new_inf_file;
> 
> -rename( $new_inf_file, $inf_file ) ||
> 
> -    die "rename $inf_file";
> 
> -print "Done!";
> 
> -
> 
>  #
> 
>  # Copy opensslconf.h and dso_conf.h generated from OpenSSL Configuration
> 
>  #
> 
> diff --git a/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> new file mode 100644
> index 0000000000..55eedbf3ba
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> @@ -0,0 +1,15 @@
> +## -*- mode: perl; -*-
> 
> +## UEFI assembly openssl configuration targets.
> 
> +
> 
> +my %targets = (
> 
> +#### UEFI
> 
> +    "UEFI-x86_64" => {
> 
> +        perlasm_scheme  => "nasm",
> 
> +        # inherit_from    => [ "UEFI",  asm("x86_64_asm") ],
> 
> +        inherit_from    => [ "UEFI" ],
> 
> +        cpuid_asm_src   => "x86_64cpuid.s",
> 
> +        aes_asm_src     => "aes_core.c aes_cbc.c vpaes-x86_64.s aesni-x86_64.s
> aesni-sha1-x86_64.s aesni-sha256-x86_64.s aesni-mb-x86_64.s",
> 
> +        sha1_asm_src    => "sha1-x86_64.s sha256-x86_64.s sha512-x86_64.s
> sha1-mb-x86_64.s sha256-mb-x86_64.s",
> 
> +        modes_asm_src   => "ghash-x86_64.s",
> 
> +    },
> 
> +);
> 
> --
> 2.28.0.windows.1


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

* Re: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
  2020-08-04  0:24 ` [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files " Zurcher, Christopher J
@ 2020-08-13 15:24   ` Yao, Jiewen
  2020-08-13 15:37     ` Michael D Kinney
  0 siblings, 1 reply; 42+ messages in thread
From: Yao, Jiewen @ 2020-08-13 15:24 UTC (permalink / raw)
  To: Zurcher, Christopher J, devel@edk2.groups.io
  Cc: Wang, Jian J, Lu, XiaoyuX, Kinney, Michael D, Ard Biesheuvel

+ Mike Kinney

I am not sure if it is a right way to check in auto-generated file.
That means, whenever we upgrade the openssl, we need manually generate them again.
Any step by step, or readme to tell us how to do that?

Mike, would you please double confirm what is the right way for auto-generated file in EDKII?


> -----Original Message-----
> From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> Sent: Tuesday, August 4, 2020 8:24 AM
> To: devel@edk2.groups.io
> Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J <jian.j.wang@intel.com>;
> Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated
> assembly files for X64
> 
> BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> 
> Adding the auto-generated assembly files for the X64 architecture.
> 
> Cc: Jiewen Yao <jiewen.yao@intel.com>
> Cc: Jian J Wang <jian.j.wang@intel.com>
> Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Signed-off-by: Christopher J Zurcher <christopher.j.zurcher@intel.com>
> ---
>  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm     |  732
> +++
>  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm   |
> 1916 ++++++++
>  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-x86_64.nasm |
> 78 +
>  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm        | 5103
> ++++++++++++++++++++
>  CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm        | 1173
> +++++
>  CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm      |
> 1569 ++++++
>  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm      | 3137
> ++++++++++++
>  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm         | 2884
> +++++++++++
>  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm    |
> 3461 +++++++++++++
>  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm       | 3313
> +++++++++++++
>  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm       | 1938
> ++++++++
>  CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm             |  491 ++
>  12 files changed, 25795 insertions(+)
> 
> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
> x86_64.nasm
> new file mode 100644
> index 0000000000..1a3ed1dd35
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm
> @@ -0,0 +1,732 @@
> +; WARNING: do not edit!
> 
> +; Generated from openssl/crypto/aes/asm/aesni-mb-x86_64.pl
> 
> +;
> 
> +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
> 
> +;
> 
> +; Licensed under the OpenSSL license (the "License").  You may not use
> 
> +; this file except in compliance with the License.  You can obtain a copy
> 
> +; in the file LICENSE in the source distribution or at
> 
> +; https://www.openssl.org/source/license.html
> 
> +
> 
> +default rel
> 
> +%define XMMWORD
> 
> +%define YMMWORD
> 
> +%define ZMMWORD
> 
> +section .text code align=64
> 
> +
> 
> +
> 
> +EXTERN  OPENSSL_ia32cap_P
> 
> +
> 
> +global  aesni_multi_cbc_encrypt
> 
> +
> 
> +ALIGN   32
> 
> +aesni_multi_cbc_encrypt:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_aesni_multi_cbc_encrypt:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +
> 
> +
> 
> +
> 
> +        mov     rax,rsp
> 
> +
> 
> +        push    rbx
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        push    r12
> 
> +
> 
> +        push    r13
> 
> +
> 
> +        push    r14
> 
> +
> 
> +        push    r15
> 
> +
> 
> +        lea     rsp,[((-168))+rsp]
> 
> +        movaps  XMMWORD[rsp],xmm6
> 
> +        movaps  XMMWORD[16+rsp],xmm7
> 
> +        movaps  XMMWORD[32+rsp],xmm8
> 
> +        movaps  XMMWORD[48+rsp],xmm9
> 
> +        movaps  XMMWORD[64+rsp],xmm10
> 
> +        movaps  XMMWORD[80+rsp],xmm11
> 
> +        movaps  XMMWORD[96+rsp],xmm12
> 
> +        movaps  XMMWORD[(-104)+rax],xmm13
> 
> +        movaps  XMMWORD[(-88)+rax],xmm14
> 
> +        movaps  XMMWORD[(-72)+rax],xmm15
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +        sub     rsp,48
> 
> +        and     rsp,-64
> 
> +        mov     QWORD[16+rsp],rax
> 
> +
> 
> +
> 
> +$L$enc4x_body:
> 
> +        movdqu  xmm12,XMMWORD[rsi]
> 
> +        lea     rsi,[120+rsi]
> 
> +        lea     rdi,[80+rdi]
> 
> +
> 
> +$L$enc4x_loop_grande:
> 
> +        mov     DWORD[24+rsp],edx
> 
> +        xor     edx,edx
> 
> +        mov     ecx,DWORD[((-64))+rdi]
> 
> +        mov     r8,QWORD[((-80))+rdi]
> 
> +        cmp     ecx,edx
> 
> +        mov     r12,QWORD[((-72))+rdi]
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        movdqu  xmm2,XMMWORD[((-56))+rdi]
> 
> +        mov     DWORD[32+rsp],ecx
> 
> +        cmovle  r8,rsp
> 
> +        mov     ecx,DWORD[((-24))+rdi]
> 
> +        mov     r9,QWORD[((-40))+rdi]
> 
> +        cmp     ecx,edx
> 
> +        mov     r13,QWORD[((-32))+rdi]
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        movdqu  xmm3,XMMWORD[((-16))+rdi]
> 
> +        mov     DWORD[36+rsp],ecx
> 
> +        cmovle  r9,rsp
> 
> +        mov     ecx,DWORD[16+rdi]
> 
> +        mov     r10,QWORD[rdi]
> 
> +        cmp     ecx,edx
> 
> +        mov     r14,QWORD[8+rdi]
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        movdqu  xmm4,XMMWORD[24+rdi]
> 
> +        mov     DWORD[40+rsp],ecx
> 
> +        cmovle  r10,rsp
> 
> +        mov     ecx,DWORD[56+rdi]
> 
> +        mov     r11,QWORD[40+rdi]
> 
> +        cmp     ecx,edx
> 
> +        mov     r15,QWORD[48+rdi]
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        movdqu  xmm5,XMMWORD[64+rdi]
> 
> +        mov     DWORD[44+rsp],ecx
> 
> +        cmovle  r11,rsp
> 
> +        test    edx,edx
> 
> +        jz      NEAR $L$enc4x_done
> 
> +
> 
> +        movups  xmm1,XMMWORD[((16-120))+rsi]
> 
> +        pxor    xmm2,xmm12
> 
> +        movups  xmm0,XMMWORD[((32-120))+rsi]
> 
> +        pxor    xmm3,xmm12
> 
> +        mov     eax,DWORD[((240-120))+rsi]
> 
> +        pxor    xmm4,xmm12
> 
> +        movdqu  xmm6,XMMWORD[r8]
> 
> +        pxor    xmm5,xmm12
> 
> +        movdqu  xmm7,XMMWORD[r9]
> 
> +        pxor    xmm2,xmm6
> 
> +        movdqu  xmm8,XMMWORD[r10]
> 
> +        pxor    xmm3,xmm7
> 
> +        movdqu  xmm9,XMMWORD[r11]
> 
> +        pxor    xmm4,xmm8
> 
> +        pxor    xmm5,xmm9
> 
> +        movdqa  xmm10,XMMWORD[32+rsp]
> 
> +        xor     rbx,rbx
> 
> +        jmp     NEAR $L$oop_enc4x
> 
> +
> 
> +ALIGN   32
> 
> +$L$oop_enc4x:
> 
> +        add     rbx,16
> 
> +        lea     rbp,[16+rsp]
> 
> +        mov     ecx,1
> 
> +        sub     rbp,rbx
> 
> +
> 
> +DB      102,15,56,220,209
> 
> +        prefetcht0      [31+rbx*1+r8]
> 
> +        prefetcht0      [31+rbx*1+r9]
> 
> +DB      102,15,56,220,217
> 
> +        prefetcht0      [31+rbx*1+r10]
> 
> +        prefetcht0      [31+rbx*1+r10]
> 
> +DB      102,15,56,220,225
> 
> +DB      102,15,56,220,233
> 
> +        movups  xmm1,XMMWORD[((48-120))+rsi]
> 
> +        cmp     ecx,DWORD[32+rsp]
> 
> +DB      102,15,56,220,208
> 
> +DB      102,15,56,220,216
> 
> +DB      102,15,56,220,224
> 
> +        cmovge  r8,rbp
> 
> +        cmovg   r12,rbp
> 
> +DB      102,15,56,220,232
> 
> +        movups  xmm0,XMMWORD[((-56))+rsi]
> 
> +        cmp     ecx,DWORD[36+rsp]
> 
> +DB      102,15,56,220,209
> 
> +DB      102,15,56,220,217
> 
> +DB      102,15,56,220,225
> 
> +        cmovge  r9,rbp
> 
> +        cmovg   r13,rbp
> 
> +DB      102,15,56,220,233
> 
> +        movups  xmm1,XMMWORD[((-40))+rsi]
> 
> +        cmp     ecx,DWORD[40+rsp]
> 
> +DB      102,15,56,220,208
> 
> +DB      102,15,56,220,216
> 
> +DB      102,15,56,220,224
> 
> +        cmovge  r10,rbp
> 
> +        cmovg   r14,rbp
> 
> +DB      102,15,56,220,232
> 
> +        movups  xmm0,XMMWORD[((-24))+rsi]
> 
> +        cmp     ecx,DWORD[44+rsp]
> 
> +DB      102,15,56,220,209
> 
> +DB      102,15,56,220,217
> 
> +DB      102,15,56,220,225
> 
> +        cmovge  r11,rbp
> 
> +        cmovg   r15,rbp
> 
> +DB      102,15,56,220,233
> 
> +        movups  xmm1,XMMWORD[((-8))+rsi]
> 
> +        movdqa  xmm11,xmm10
> 
> +DB      102,15,56,220,208
> 
> +        prefetcht0      [15+rbx*1+r12]
> 
> +        prefetcht0      [15+rbx*1+r13]
> 
> +DB      102,15,56,220,216
> 
> +        prefetcht0      [15+rbx*1+r14]
> 
> +        prefetcht0      [15+rbx*1+r15]
> 
> +DB      102,15,56,220,224
> 
> +DB      102,15,56,220,232
> 
> +        movups  xmm0,XMMWORD[((128-120))+rsi]
> 
> +        pxor    xmm12,xmm12
> 
> +
> 
> +DB      102,15,56,220,209
> 
> +        pcmpgtd xmm11,xmm12
> 
> +        movdqu  xmm12,XMMWORD[((-120))+rsi]
> 
> +DB      102,15,56,220,217
> 
> +        paddd   xmm10,xmm11
> 
> +        movdqa  XMMWORD[32+rsp],xmm10
> 
> +DB      102,15,56,220,225
> 
> +DB      102,15,56,220,233
> 
> +        movups  xmm1,XMMWORD[((144-120))+rsi]
> 
> +
> 
> +        cmp     eax,11
> 
> +
> 
> +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[((160-120))+rsi]
> 
> +
> 
> +        jb      NEAR $L$enc4x_tail
> 
> +
> 
> +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[((176-120))+rsi]
> 
> +
> 
> +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[((192-120))+rsi]
> 
> +
> 
> +        je      NEAR $L$enc4x_tail
> 
> +
> 
> +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[((208-120))+rsi]
> 
> +
> 
> +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[((224-120))+rsi]
> 
> +        jmp     NEAR $L$enc4x_tail
> 
> +
> 
> +ALIGN   32
> 
> +$L$enc4x_tail:
> 
> +DB      102,15,56,220,209
> 
> +DB      102,15,56,220,217
> 
> +DB      102,15,56,220,225
> 
> +DB      102,15,56,220,233
> 
> +        movdqu  xmm6,XMMWORD[rbx*1+r8]
> 
> +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
> 
> +
> 
> +DB      102,15,56,221,208
> 
> +        movdqu  xmm7,XMMWORD[rbx*1+r9]
> 
> +        pxor    xmm6,xmm12
> 
> +DB      102,15,56,221,216
> 
> +        movdqu  xmm8,XMMWORD[rbx*1+r10]
> 
> +        pxor    xmm7,xmm12
> 
> +DB      102,15,56,221,224
> 
> +        movdqu  xmm9,XMMWORD[rbx*1+r11]
> 
> +        pxor    xmm8,xmm12
> 
> +DB      102,15,56,221,232
> 
> +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
> 
> +        pxor    xmm9,xmm12
> 
> +
> 
> +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
> 
> +        pxor    xmm2,xmm6
> 
> +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
> 
> +        pxor    xmm3,xmm7
> 
> +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
> 
> +        pxor    xmm4,xmm8
> 
> +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
> 
> +        pxor    xmm5,xmm9
> 
> +
> 
> +        dec     edx
> 
> +        jnz     NEAR $L$oop_enc4x
> 
> +
> 
> +        mov     rax,QWORD[16+rsp]
> 
> +
> 
> +        mov     edx,DWORD[24+rsp]
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +        lea     rdi,[160+rdi]
> 
> +        dec     edx
> 
> +        jnz     NEAR $L$enc4x_loop_grande
> 
> +
> 
> +$L$enc4x_done:
> 
> +        movaps  xmm6,XMMWORD[((-216))+rax]
> 
> +        movaps  xmm7,XMMWORD[((-200))+rax]
> 
> +        movaps  xmm8,XMMWORD[((-184))+rax]
> 
> +        movaps  xmm9,XMMWORD[((-168))+rax]
> 
> +        movaps  xmm10,XMMWORD[((-152))+rax]
> 
> +        movaps  xmm11,XMMWORD[((-136))+rax]
> 
> +        movaps  xmm12,XMMWORD[((-120))+rax]
> 
> +
> 
> +
> 
> +
> 
> +        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$enc4x_epilogue:
> 
> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> 
> +        mov     rsi,QWORD[16+rsp]
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +$L$SEH_end_aesni_multi_cbc_encrypt:
> 
> +
> 
> +global  aesni_multi_cbc_decrypt
> 
> +
> 
> +ALIGN   32
> 
> +aesni_multi_cbc_decrypt:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_aesni_multi_cbc_decrypt:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +
> 
> +
> 
> +
> 
> +        mov     rax,rsp
> 
> +
> 
> +        push    rbx
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        push    r12
> 
> +
> 
> +        push    r13
> 
> +
> 
> +        push    r14
> 
> +
> 
> +        push    r15
> 
> +
> 
> +        lea     rsp,[((-168))+rsp]
> 
> +        movaps  XMMWORD[rsp],xmm6
> 
> +        movaps  XMMWORD[16+rsp],xmm7
> 
> +        movaps  XMMWORD[32+rsp],xmm8
> 
> +        movaps  XMMWORD[48+rsp],xmm9
> 
> +        movaps  XMMWORD[64+rsp],xmm10
> 
> +        movaps  XMMWORD[80+rsp],xmm11
> 
> +        movaps  XMMWORD[96+rsp],xmm12
> 
> +        movaps  XMMWORD[(-104)+rax],xmm13
> 
> +        movaps  XMMWORD[(-88)+rax],xmm14
> 
> +        movaps  XMMWORD[(-72)+rax],xmm15
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +        sub     rsp,48
> 
> +        and     rsp,-64
> 
> +        mov     QWORD[16+rsp],rax
> 
> +
> 
> +
> 
> +$L$dec4x_body:
> 
> +        movdqu  xmm12,XMMWORD[rsi]
> 
> +        lea     rsi,[120+rsi]
> 
> +        lea     rdi,[80+rdi]
> 
> +
> 
> +$L$dec4x_loop_grande:
> 
> +        mov     DWORD[24+rsp],edx
> 
> +        xor     edx,edx
> 
> +        mov     ecx,DWORD[((-64))+rdi]
> 
> +        mov     r8,QWORD[((-80))+rdi]
> 
> +        cmp     ecx,edx
> 
> +        mov     r12,QWORD[((-72))+rdi]
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        movdqu  xmm6,XMMWORD[((-56))+rdi]
> 
> +        mov     DWORD[32+rsp],ecx
> 
> +        cmovle  r8,rsp
> 
> +        mov     ecx,DWORD[((-24))+rdi]
> 
> +        mov     r9,QWORD[((-40))+rdi]
> 
> +        cmp     ecx,edx
> 
> +        mov     r13,QWORD[((-32))+rdi]
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        movdqu  xmm7,XMMWORD[((-16))+rdi]
> 
> +        mov     DWORD[36+rsp],ecx
> 
> +        cmovle  r9,rsp
> 
> +        mov     ecx,DWORD[16+rdi]
> 
> +        mov     r10,QWORD[rdi]
> 
> +        cmp     ecx,edx
> 
> +        mov     r14,QWORD[8+rdi]
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        movdqu  xmm8,XMMWORD[24+rdi]
> 
> +        mov     DWORD[40+rsp],ecx
> 
> +        cmovle  r10,rsp
> 
> +        mov     ecx,DWORD[56+rdi]
> 
> +        mov     r11,QWORD[40+rdi]
> 
> +        cmp     ecx,edx
> 
> +        mov     r15,QWORD[48+rdi]
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        movdqu  xmm9,XMMWORD[64+rdi]
> 
> +        mov     DWORD[44+rsp],ecx
> 
> +        cmovle  r11,rsp
> 
> +        test    edx,edx
> 
> +        jz      NEAR $L$dec4x_done
> 
> +
> 
> +        movups  xmm1,XMMWORD[((16-120))+rsi]
> 
> +        movups  xmm0,XMMWORD[((32-120))+rsi]
> 
> +        mov     eax,DWORD[((240-120))+rsi]
> 
> +        movdqu  xmm2,XMMWORD[r8]
> 
> +        movdqu  xmm3,XMMWORD[r9]
> 
> +        pxor    xmm2,xmm12
> 
> +        movdqu  xmm4,XMMWORD[r10]
> 
> +        pxor    xmm3,xmm12
> 
> +        movdqu  xmm5,XMMWORD[r11]
> 
> +        pxor    xmm4,xmm12
> 
> +        pxor    xmm5,xmm12
> 
> +        movdqa  xmm10,XMMWORD[32+rsp]
> 
> +        xor     rbx,rbx
> 
> +        jmp     NEAR $L$oop_dec4x
> 
> +
> 
> +ALIGN   32
> 
> +$L$oop_dec4x:
> 
> +        add     rbx,16
> 
> +        lea     rbp,[16+rsp]
> 
> +        mov     ecx,1
> 
> +        sub     rbp,rbx
> 
> +
> 
> +DB      102,15,56,222,209
> 
> +        prefetcht0      [31+rbx*1+r8]
> 
> +        prefetcht0      [31+rbx*1+r9]
> 
> +DB      102,15,56,222,217
> 
> +        prefetcht0      [31+rbx*1+r10]
> 
> +        prefetcht0      [31+rbx*1+r11]
> 
> +DB      102,15,56,222,225
> 
> +DB      102,15,56,222,233
> 
> +        movups  xmm1,XMMWORD[((48-120))+rsi]
> 
> +        cmp     ecx,DWORD[32+rsp]
> 
> +DB      102,15,56,222,208
> 
> +DB      102,15,56,222,216
> 
> +DB      102,15,56,222,224
> 
> +        cmovge  r8,rbp
> 
> +        cmovg   r12,rbp
> 
> +DB      102,15,56,222,232
> 
> +        movups  xmm0,XMMWORD[((-56))+rsi]
> 
> +        cmp     ecx,DWORD[36+rsp]
> 
> +DB      102,15,56,222,209
> 
> +DB      102,15,56,222,217
> 
> +DB      102,15,56,222,225
> 
> +        cmovge  r9,rbp
> 
> +        cmovg   r13,rbp
> 
> +DB      102,15,56,222,233
> 
> +        movups  xmm1,XMMWORD[((-40))+rsi]
> 
> +        cmp     ecx,DWORD[40+rsp]
> 
> +DB      102,15,56,222,208
> 
> +DB      102,15,56,222,216
> 
> +DB      102,15,56,222,224
> 
> +        cmovge  r10,rbp
> 
> +        cmovg   r14,rbp
> 
> +DB      102,15,56,222,232
> 
> +        movups  xmm0,XMMWORD[((-24))+rsi]
> 
> +        cmp     ecx,DWORD[44+rsp]
> 
> +DB      102,15,56,222,209
> 
> +DB      102,15,56,222,217
> 
> +DB      102,15,56,222,225
> 
> +        cmovge  r11,rbp
> 
> +        cmovg   r15,rbp
> 
> +DB      102,15,56,222,233
> 
> +        movups  xmm1,XMMWORD[((-8))+rsi]
> 
> +        movdqa  xmm11,xmm10
> 
> +DB      102,15,56,222,208
> 
> +        prefetcht0      [15+rbx*1+r12]
> 
> +        prefetcht0      [15+rbx*1+r13]
> 
> +DB      102,15,56,222,216
> 
> +        prefetcht0      [15+rbx*1+r14]
> 
> +        prefetcht0      [15+rbx*1+r15]
> 
> +DB      102,15,56,222,224
> 
> +DB      102,15,56,222,232
> 
> +        movups  xmm0,XMMWORD[((128-120))+rsi]
> 
> +        pxor    xmm12,xmm12
> 
> +
> 
> +DB      102,15,56,222,209
> 
> +        pcmpgtd xmm11,xmm12
> 
> +        movdqu  xmm12,XMMWORD[((-120))+rsi]
> 
> +DB      102,15,56,222,217
> 
> +        paddd   xmm10,xmm11
> 
> +        movdqa  XMMWORD[32+rsp],xmm10
> 
> +DB      102,15,56,222,225
> 
> +DB      102,15,56,222,233
> 
> +        movups  xmm1,XMMWORD[((144-120))+rsi]
> 
> +
> 
> +        cmp     eax,11
> 
> +
> 
> +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[((160-120))+rsi]
> 
> +
> 
> +        jb      NEAR $L$dec4x_tail
> 
> +
> 
> +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[((176-120))+rsi]
> 
> +
> 
> +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[((192-120))+rsi]
> 
> +
> 
> +        je      NEAR $L$dec4x_tail
> 
> +
> 
> +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[((208-120))+rsi]
> 
> +
> 
> +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[((224-120))+rsi]
> 
> +        jmp     NEAR $L$dec4x_tail
> 
> +
> 
> +ALIGN   32
> 
> +$L$dec4x_tail:
> 
> +DB      102,15,56,222,209
> 
> +DB      102,15,56,222,217
> 
> +DB      102,15,56,222,225
> 
> +        pxor    xmm6,xmm0
> 
> +        pxor    xmm7,xmm0
> 
> +DB      102,15,56,222,233
> 
> +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
> 
> +        pxor    xmm8,xmm0
> 
> +        pxor    xmm9,xmm0
> 
> +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
> 
> +
> 
> +DB      102,15,56,223,214
> 
> +DB      102,15,56,223,223
> 
> +        movdqu  xmm6,XMMWORD[((-16))+rbx*1+r8]
> 
> +        movdqu  xmm7,XMMWORD[((-16))+rbx*1+r9]
> 
> +DB      102,65,15,56,223,224
> 
> +DB      102,65,15,56,223,233
> 
> +        movdqu  xmm8,XMMWORD[((-16))+rbx*1+r10]
> 
> +        movdqu  xmm9,XMMWORD[((-16))+rbx*1+r11]
> 
> +
> 
> +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
> 
> +        movdqu  xmm2,XMMWORD[rbx*1+r8]
> 
> +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
> 
> +        movdqu  xmm3,XMMWORD[rbx*1+r9]
> 
> +        pxor    xmm2,xmm12
> 
> +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
> 
> +        movdqu  xmm4,XMMWORD[rbx*1+r10]
> 
> +        pxor    xmm3,xmm12
> 
> +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
> 
> +        movdqu  xmm5,XMMWORD[rbx*1+r11]
> 
> +        pxor    xmm4,xmm12
> 
> +        pxor    xmm5,xmm12
> 
> +
> 
> +        dec     edx
> 
> +        jnz     NEAR $L$oop_dec4x
> 
> +
> 
> +        mov     rax,QWORD[16+rsp]
> 
> +
> 
> +        mov     edx,DWORD[24+rsp]
> 
> +
> 
> +        lea     rdi,[160+rdi]
> 
> +        dec     edx
> 
> +        jnz     NEAR $L$dec4x_loop_grande
> 
> +
> 
> +$L$dec4x_done:
> 
> +        movaps  xmm6,XMMWORD[((-216))+rax]
> 
> +        movaps  xmm7,XMMWORD[((-200))+rax]
> 
> +        movaps  xmm8,XMMWORD[((-184))+rax]
> 
> +        movaps  xmm9,XMMWORD[((-168))+rax]
> 
> +        movaps  xmm10,XMMWORD[((-152))+rax]
> 
> +        movaps  xmm11,XMMWORD[((-136))+rax]
> 
> +        movaps  xmm12,XMMWORD[((-120))+rax]
> 
> +
> 
> +
> 
> +
> 
> +        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$dec4x_epilogue:
> 
> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> 
> +        mov     rsi,QWORD[16+rsp]
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +$L$SEH_end_aesni_multi_cbc_decrypt:
> 
> +EXTERN  __imp_RtlVirtualUnwind
> 
> +
> 
> +ALIGN   16
> 
> +se_handler:
> 
> +        push    rsi
> 
> +        push    rdi
> 
> +        push    rbx
> 
> +        push    rbp
> 
> +        push    r12
> 
> +        push    r13
> 
> +        push    r14
> 
> +        push    r15
> 
> +        pushfq
> 
> +        sub     rsp,64
> 
> +
> 
> +        mov     rax,QWORD[120+r8]
> 
> +        mov     rbx,QWORD[248+r8]
> 
> +
> 
> +        mov     rsi,QWORD[8+r9]
> 
> +        mov     r11,QWORD[56+r9]
> 
> +
> 
> +        mov     r10d,DWORD[r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$in_prologue
> 
> +
> 
> +        mov     rax,QWORD[152+r8]
> 
> +
> 
> +        mov     r10d,DWORD[4+r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jae     NEAR $L$in_prologue
> 
> +
> 
> +        mov     rax,QWORD[16+rax]
> 
> +
> 
> +        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     rsi,[((-56-160))+rax]
> 
> +        lea     rdi,[512+r8]
> 
> +        mov     ecx,20
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +$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[40+r9]
> 
> +        mov     rsi,r8
> 
> +        mov     ecx,154
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +        mov     rsi,r9
> 
> +        xor     rcx,rcx
> 
> +        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
> 
> +        popfq
> 
> +        pop     r15
> 
> +        pop     r14
> 
> +        pop     r13
> 
> +        pop     r12
> 
> +        pop     rbp
> 
> +        pop     rbx
> 
> +        pop     rdi
> 
> +        pop     rsi
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +section .pdata rdata align=4
> 
> +ALIGN   4
> 
> +        DD      $L$SEH_begin_aesni_multi_cbc_encrypt wrt ..imagebase
> 
> +        DD      $L$SEH_end_aesni_multi_cbc_encrypt wrt ..imagebase
> 
> +        DD      $L$SEH_info_aesni_multi_cbc_encrypt wrt ..imagebase
> 
> +        DD      $L$SEH_begin_aesni_multi_cbc_decrypt wrt ..imagebase
> 
> +        DD      $L$SEH_end_aesni_multi_cbc_decrypt wrt ..imagebase
> 
> +        DD      $L$SEH_info_aesni_multi_cbc_decrypt wrt ..imagebase
> 
> +section .xdata rdata align=8
> 
> +ALIGN   8
> 
> +$L$SEH_info_aesni_multi_cbc_encrypt:
> 
> +DB      9,0,0,0
> 
> +        DD      se_handler wrt ..imagebase
> 
> +        DD      $L$enc4x_body wrt ..imagebase,$L$enc4x_epilogue
> wrt ..imagebase
> 
> +$L$SEH_info_aesni_multi_cbc_decrypt:
> 
> +DB      9,0,0,0
> 
> +        DD      se_handler wrt ..imagebase
> 
> +        DD      $L$dec4x_body wrt ..imagebase,$L$dec4x_epilogue
> wrt ..imagebase
> 
> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
> x86_64.nasm
> new file mode 100644
> index 0000000000..f4fd9ca50d
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm
> @@ -0,0 +1,1916 @@
> +; WARNING: do not edit!
> 
> +; Generated from openssl/crypto/aes/asm/aesni-sha1-x86_64.pl
> 
> +;
> 
> +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved.
> 
> +;
> 
> +; Licensed under the OpenSSL license (the "License").  You may not use
> 
> +; this file except in compliance with the License.  You can obtain a copy
> 
> +; in the file LICENSE in the source distribution or at
> 
> +; https://www.openssl.org/source/license.html
> 
> +
> 
> +default rel
> 
> +%define XMMWORD
> 
> +%define YMMWORD
> 
> +%define ZMMWORD
> 
> +section .text code align=64
> 
> +
> 
> +EXTERN  OPENSSL_ia32cap_P
> 
> +
> 
> +global  aesni_cbc_sha1_enc
> 
> +
> 
> +ALIGN   32
> 
> +aesni_cbc_sha1_enc:
> 
> +
> 
> +
> 
> +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+0))]
> 
> +        mov     r11,QWORD[((OPENSSL_ia32cap_P+4))]
> 
> +        bt      r11,61
> 
> +        jc      NEAR aesni_cbc_sha1_enc_shaext
> 
> +        jmp     NEAR aesni_cbc_sha1_enc_ssse3
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   32
> 
> +aesni_cbc_sha1_enc_ssse3:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_aesni_cbc_sha1_enc_ssse3:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +        mov     rcx,r9
> 
> +        mov     r8,QWORD[40+rsp]
> 
> +        mov     r9,QWORD[48+rsp]
> 
> +
> 
> +
> 
> +
> 
> +        mov     r10,QWORD[56+rsp]
> 
> +
> 
> +
> 
> +        push    rbx
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        push    r12
> 
> +
> 
> +        push    r13
> 
> +
> 
> +        push    r14
> 
> +
> 
> +        push    r15
> 
> +
> 
> +        lea     rsp,[((-264))+rsp]
> 
> +
> 
> +
> 
> +
> 
> +        movaps  XMMWORD[(96+0)+rsp],xmm6
> 
> +        movaps  XMMWORD[(96+16)+rsp],xmm7
> 
> +        movaps  XMMWORD[(96+32)+rsp],xmm8
> 
> +        movaps  XMMWORD[(96+48)+rsp],xmm9
> 
> +        movaps  XMMWORD[(96+64)+rsp],xmm10
> 
> +        movaps  XMMWORD[(96+80)+rsp],xmm11
> 
> +        movaps  XMMWORD[(96+96)+rsp],xmm12
> 
> +        movaps  XMMWORD[(96+112)+rsp],xmm13
> 
> +        movaps  XMMWORD[(96+128)+rsp],xmm14
> 
> +        movaps  XMMWORD[(96+144)+rsp],xmm15
> 
> +$L$prologue_ssse3:
> 
> +        mov     r12,rdi
> 
> +        mov     r13,rsi
> 
> +        mov     r14,rdx
> 
> +        lea     r15,[112+rcx]
> 
> +        movdqu  xmm2,XMMWORD[r8]
> 
> +        mov     QWORD[88+rsp],r8
> 
> +        shl     r14,6
> 
> +        sub     r13,r12
> 
> +        mov     r8d,DWORD[((240-112))+r15]
> 
> +        add     r14,r10
> 
> +
> 
> +        lea     r11,[K_XX_XX]
> 
> +        mov     eax,DWORD[r9]
> 
> +        mov     ebx,DWORD[4+r9]
> 
> +        mov     ecx,DWORD[8+r9]
> 
> +        mov     edx,DWORD[12+r9]
> 
> +        mov     esi,ebx
> 
> +        mov     ebp,DWORD[16+r9]
> 
> +        mov     edi,ecx
> 
> +        xor     edi,edx
> 
> +        and     esi,edi
> 
> +
> 
> +        movdqa  xmm3,XMMWORD[64+r11]
> 
> +        movdqa  xmm13,XMMWORD[r11]
> 
> +        movdqu  xmm4,XMMWORD[r10]
> 
> +        movdqu  xmm5,XMMWORD[16+r10]
> 
> +        movdqu  xmm6,XMMWORD[32+r10]
> 
> +        movdqu  xmm7,XMMWORD[48+r10]
> 
> +DB      102,15,56,0,227
> 
> +DB      102,15,56,0,235
> 
> +DB      102,15,56,0,243
> 
> +        add     r10,64
> 
> +        paddd   xmm4,xmm13
> 
> +DB      102,15,56,0,251
> 
> +        paddd   xmm5,xmm13
> 
> +        paddd   xmm6,xmm13
> 
> +        movdqa  XMMWORD[rsp],xmm4
> 
> +        psubd   xmm4,xmm13
> 
> +        movdqa  XMMWORD[16+rsp],xmm5
> 
> +        psubd   xmm5,xmm13
> 
> +        movdqa  XMMWORD[32+rsp],xmm6
> 
> +        psubd   xmm6,xmm13
> 
> +        movups  xmm15,XMMWORD[((-112))+r15]
> 
> +        movups  xmm0,XMMWORD[((16-112))+r15]
> 
> +        jmp     NEAR $L$oop_ssse3
> 
> +ALIGN   32
> 
> +$L$oop_ssse3:
> 
> +        ror     ebx,2
> 
> +        movups  xmm14,XMMWORD[r12]
> 
> +        xorps   xmm14,xmm15
> 
> +        xorps   xmm2,xmm14
> 
> +        movups  xmm1,XMMWORD[((-80))+r15]
> 
> +DB      102,15,56,220,208
> 
> +        pshufd  xmm8,xmm4,238
> 
> +        xor     esi,edx
> 
> +        movdqa  xmm12,xmm7
> 
> +        paddd   xmm13,xmm7
> 
> +        mov     edi,eax
> 
> +        add     ebp,DWORD[rsp]
> 
> +        punpcklqdq      xmm8,xmm5
> 
> +        xor     ebx,ecx
> 
> +        rol     eax,5
> 
> +        add     ebp,esi
> 
> +        psrldq  xmm12,4
> 
> +        and     edi,ebx
> 
> +        xor     ebx,ecx
> 
> +        pxor    xmm8,xmm4
> 
> +        add     ebp,eax
> 
> +        ror     eax,7
> 
> +        pxor    xmm12,xmm6
> 
> +        xor     edi,ecx
> 
> +        mov     esi,ebp
> 
> +        add     edx,DWORD[4+rsp]
> 
> +        pxor    xmm8,xmm12
> 
> +        xor     eax,ebx
> 
> +        rol     ebp,5
> 
> +        movdqa  XMMWORD[48+rsp],xmm13
> 
> +        add     edx,edi
> 
> +        movups  xmm0,XMMWORD[((-64))+r15]
> 
> +DB      102,15,56,220,209
> 
> +        and     esi,eax
> 
> +        movdqa  xmm3,xmm8
> 
> +        xor     eax,ebx
> 
> +        add     edx,ebp
> 
> +        ror     ebp,7
> 
> +        movdqa  xmm12,xmm8
> 
> +        xor     esi,ebx
> 
> +        pslldq  xmm3,12
> 
> +        paddd   xmm8,xmm8
> 
> +        mov     edi,edx
> 
> +        add     ecx,DWORD[8+rsp]
> 
> +        psrld   xmm12,31
> 
> +        xor     ebp,eax
> 
> +        rol     edx,5
> 
> +        add     ecx,esi
> 
> +        movdqa  xmm13,xmm3
> 
> +        and     edi,ebp
> 
> +        xor     ebp,eax
> 
> +        psrld   xmm3,30
> 
> +        add     ecx,edx
> 
> +        ror     edx,7
> 
> +        por     xmm8,xmm12
> 
> +        xor     edi,eax
> 
> +        mov     esi,ecx
> 
> +        add     ebx,DWORD[12+rsp]
> 
> +        movups  xmm1,XMMWORD[((-48))+r15]
> 
> +DB      102,15,56,220,208
> 
> +        pslld   xmm13,2
> 
> +        pxor    xmm8,xmm3
> 
> +        xor     edx,ebp
> 
> +        movdqa  xmm3,XMMWORD[r11]
> 
> +        rol     ecx,5
> 
> +        add     ebx,edi
> 
> +        and     esi,edx
> 
> +        pxor    xmm8,xmm13
> 
> +        xor     edx,ebp
> 
> +        add     ebx,ecx
> 
> +        ror     ecx,7
> 
> +        pshufd  xmm9,xmm5,238
> 
> +        xor     esi,ebp
> 
> +        movdqa  xmm13,xmm8
> 
> +        paddd   xmm3,xmm8
> 
> +        mov     edi,ebx
> 
> +        add     eax,DWORD[16+rsp]
> 
> +        punpcklqdq      xmm9,xmm6
> 
> +        xor     ecx,edx
> 
> +        rol     ebx,5
> 
> +        add     eax,esi
> 
> +        psrldq  xmm13,4
> 
> +        and     edi,ecx
> 
> +        xor     ecx,edx
> 
> +        pxor    xmm9,xmm5
> 
> +        add     eax,ebx
> 
> +        ror     ebx,7
> 
> +        movups  xmm0,XMMWORD[((-32))+r15]
> 
> +DB      102,15,56,220,209
> 
> +        pxor    xmm13,xmm7
> 
> +        xor     edi,edx
> 
> +        mov     esi,eax
> 
> +        add     ebp,DWORD[20+rsp]
> 
> +        pxor    xmm9,xmm13
> 
> +        xor     ebx,ecx
> 
> +        rol     eax,5
> 
> +        movdqa  XMMWORD[rsp],xmm3
> 
> +        add     ebp,edi
> 
> +        and     esi,ebx
> 
> +        movdqa  xmm12,xmm9
> 
> +        xor     ebx,ecx
> 
> +        add     ebp,eax
> 
> +        ror     eax,7
> 
> +        movdqa  xmm13,xmm9
> 
> +        xor     esi,ecx
> 
> +        pslldq  xmm12,12
> 
> +        paddd   xmm9,xmm9
> 
> +        mov     edi,ebp
> 
> +        add     edx,DWORD[24+rsp]
> 
> +        psrld   xmm13,31
> 
> +        xor     eax,ebx
> 
> +        rol     ebp,5
> 
> +        add     edx,esi
> 
> +        movups  xmm1,XMMWORD[((-16))+r15]
> 
> +DB      102,15,56,220,208
> 
> +        movdqa  xmm3,xmm12
> 
> +        and     edi,eax
> 
> +        xor     eax,ebx
> 
> +        psrld   xmm12,30
> 
> +        add     edx,ebp
> 
> +        ror     ebp,7
> 
> +        por     xmm9,xmm13
> 
> +        xor     edi,ebx
> 
> +        mov     esi,edx
> 
> +        add     ecx,DWORD[28+rsp]
> 
> +        pslld   xmm3,2
> 
> +        pxor    xmm9,xmm12
> 
> +        xor     ebp,eax
> 
> +        movdqa  xmm12,XMMWORD[16+r11]
> 
> +        rol     edx,5
> 
> +        add     ecx,edi
> 
> +        and     esi,ebp
> 
> +        pxor    xmm9,xmm3
> 
> +        xor     ebp,eax
> 
> +        add     ecx,edx
> 
> +        ror     edx,7
> 
> +        pshufd  xmm10,xmm6,238
> 
> +        xor     esi,eax
> 
> +        movdqa  xmm3,xmm9
> 
> +        paddd   xmm12,xmm9
> 
> +        mov     edi,ecx
> 
> +        add     ebx,DWORD[32+rsp]
> 
> +        movups  xmm0,XMMWORD[r15]
> 
> +DB      102,15,56,220,209
> 
> +        punpcklqdq      xmm10,xmm7
> 
> +        xor     edx,ebp
> 
> +        rol     ecx,5
> 
> +        add     ebx,esi
> 
> +        psrldq  xmm3,4
> 
> +        and     edi,edx
> 
> +        xor     edx,ebp
> 
> +        pxor    xmm10,xmm6
> 
> +        add     ebx,ecx
> 
> +        ror     ecx,7
> 
> +        pxor    xmm3,xmm8
> 
> +        xor     edi,ebp
> 
> +        mov     esi,ebx
> 
> +        add     eax,DWORD[36+rsp]
> 
> +        pxor    xmm10,xmm3
> 
> +        xor     ecx,edx
> 
> +        rol     ebx,5
> 
> +        movdqa  XMMWORD[16+rsp],xmm12
> 
> +        add     eax,edi
> 
> +        and     esi,ecx
> 
> +        movdqa  xmm13,xmm10
> 
> +        xor     ecx,edx
> 
> +        add     eax,ebx
> 
> +        ror     ebx,7
> 
> +        movups  xmm1,XMMWORD[16+r15]
> 
> +DB      102,15,56,220,208
> 
> +        movdqa  xmm3,xmm10
> 
> +        xor     esi,edx
> 
> +        pslldq  xmm13,12
> 
> +        paddd   xmm10,xmm10
> 
> +        mov     edi,eax
> 
> +        add     ebp,DWORD[40+rsp]
> 
> +        psrld   xmm3,31
> 
> +        xor     ebx,ecx
> 
> +        rol     eax,5
> 
> +        add     ebp,esi
> 
> +        movdqa  xmm12,xmm13
> 
> +        and     edi,ebx
> 
> +        xor     ebx,ecx
> 
> +        psrld   xmm13,30
> 
> +        add     ebp,eax
> 
> +        ror     eax,7
> 
> +        por     xmm10,xmm3
> 
> +        xor     edi,ecx
> 
> +        mov     esi,ebp
> 
> +        add     edx,DWORD[44+rsp]
> 
> +        pslld   xmm12,2
> 
> +        pxor    xmm10,xmm13
> 
> +        xor     eax,ebx
> 
> +        movdqa  xmm13,XMMWORD[16+r11]
> 
> +        rol     ebp,5
> 
> +        add     edx,edi
> 
> +        movups  xmm0,XMMWORD[32+r15]
> 
> +DB      102,15,56,220,209
> 
> +        and     esi,eax
> 
> +        pxor    xmm10,xmm12
> 
> +        xor     eax,ebx
> 
> +        add     edx,ebp
> 
> +        ror     ebp,7
> 
> +        pshufd  xmm11,xmm7,238
> 
> +        xor     esi,ebx
> 
> +        movdqa  xmm12,xmm10
> 
> +        paddd   xmm13,xmm10
> 
> +        mov     edi,edx
> 
> +        add     ecx,DWORD[48+rsp]
> 
> +        punpcklqdq      xmm11,xmm8
> 
> +        xor     ebp,eax
> 
> +        rol     edx,5
> 
> +        add     ecx,esi
> 
> +        psrldq  xmm12,4
> 
> +        and     edi,ebp
> 
> +        xor     ebp,eax
> 
> +        pxor    xmm11,xmm7
> 
> +        add     ecx,edx
> 
> +        ror     edx,7
> 
> +        pxor    xmm12,xmm9
> 
> +        xor     edi,eax
> 
> +        mov     esi,ecx
> 
> +        add     ebx,DWORD[52+rsp]
> 
> +        movups  xmm1,XMMWORD[48+r15]
> 
> +DB      102,15,56,220,208
> 
> +        pxor    xmm11,xmm12
> 
> +        xor     edx,ebp
> 
> +        rol     ecx,5
> 
> +        movdqa  XMMWORD[32+rsp],xmm13
> 
> +        add     ebx,edi
> 
> +        and     esi,edx
> 
> +        movdqa  xmm3,xmm11
> 
> +        xor     edx,ebp
> 
> +        add     ebx,ecx
> 
> +        ror     ecx,7
> 
> +        movdqa  xmm12,xmm11
> 
> +        xor     esi,ebp
> 
> +        pslldq  xmm3,12
> 
> +        paddd   xmm11,xmm11
> 
> +        mov     edi,ebx
> 
> +        add     eax,DWORD[56+rsp]
> 
> +        psrld   xmm12,31
> 
> +        xor     ecx,edx
> 
> +        rol     ebx,5
> 
> +        add     eax,esi
> 
> +        movdqa  xmm13,xmm3
> 
> +        and     edi,ecx
> 
> +        xor     ecx,edx
> 
> +        psrld   xmm3,30
> 
> +        add     eax,ebx
> 
> +        ror     ebx,7
> 
> +        cmp     r8d,11
> 
> +        jb      NEAR $L$aesenclast1
> 
> +        movups  xmm0,XMMWORD[64+r15]
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[80+r15]
> 
> +DB      102,15,56,220,208
> 
> +        je      NEAR $L$aesenclast1
> 
> +        movups  xmm0,XMMWORD[96+r15]
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[112+r15]
> 
> +DB      102,15,56,220,208
> 
> +$L$aesenclast1:
> 
> +DB      102,15,56,221,209
> 
> +        movups  xmm0,XMMWORD[((16-112))+r15]
> 
> +        por     xmm11,xmm12
> 
> +        xor     edi,edx
> 
> +        mov     esi,eax
> 
> +        add     ebp,DWORD[60+rsp]
> 
> +        pslld   xmm13,2
> 
> +        pxor    xmm11,xmm3
> 
> +        xor     ebx,ecx
> 
> +        movdqa  xmm3,XMMWORD[16+r11]
> 
> +        rol     eax,5
> 
> +        add     ebp,edi
> 
> +        and     esi,ebx
> 
> +        pxor    xmm11,xmm13
> 
> +        pshufd  xmm13,xmm10,238
> 
> +        xor     ebx,ecx
> 
> +        add     ebp,eax
> 
> +        ror     eax,7
> 
> +        pxor    xmm4,xmm8
> 
> +        xor     esi,ecx
> 
> +        mov     edi,ebp
> 
> +        add     edx,DWORD[rsp]
> 
> +        punpcklqdq      xmm13,xmm11
> 
> +        xor     eax,ebx
> 
> +        rol     ebp,5
> 
> +        pxor    xmm4,xmm5
> 
> +        add     edx,esi
> 
> +        movups  xmm14,XMMWORD[16+r12]
> 
> +        xorps   xmm14,xmm15
> 
> +        movups  XMMWORD[r13*1+r12],xmm2
> 
> +        xorps   xmm2,xmm14
> 
> +        movups  xmm1,XMMWORD[((-80))+r15]
> 
> +DB      102,15,56,220,208
> 
> +        and     edi,eax
> 
> +        movdqa  xmm12,xmm3
> 
> +        xor     eax,ebx
> 
> +        paddd   xmm3,xmm11
> 
> +        add     edx,ebp
> 
> +        pxor    xmm4,xmm13
> 
> +        ror     ebp,7
> 
> +        xor     edi,ebx
> 
> +        mov     esi,edx
> 
> +        add     ecx,DWORD[4+rsp]
> 
> +        movdqa  xmm13,xmm4
> 
> +        xor     ebp,eax
> 
> +        rol     edx,5
> 
> +        movdqa  XMMWORD[48+rsp],xmm3
> 
> +        add     ecx,edi
> 
> +        and     esi,ebp
> 
> +        xor     ebp,eax
> 
> +        pslld   xmm4,2
> 
> +        add     ecx,edx
> 
> +        ror     edx,7
> 
> +        psrld   xmm13,30
> 
> +        xor     esi,eax
> 
> +        mov     edi,ecx
> 
> +        add     ebx,DWORD[8+rsp]
> 
> +        movups  xmm0,XMMWORD[((-64))+r15]
> 
> +DB      102,15,56,220,209
> 
> +        por     xmm4,xmm13
> 
> +        xor     edx,ebp
> 
> +        rol     ecx,5
> 
> +        pshufd  xmm3,xmm11,238
> 
> +        add     ebx,esi
> 
> +        and     edi,edx
> 
> +        xor     edx,ebp
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[12+rsp]
> 
> +        xor     edi,ebp
> 
> +        mov     esi,ebx
> 
> +        rol     ebx,5
> 
> +        add     eax,edi
> 
> +        xor     esi,edx
> 
> +        ror     ecx,7
> 
> +        add     eax,ebx
> 
> +        pxor    xmm5,xmm9
> 
> +        add     ebp,DWORD[16+rsp]
> 
> +        movups  xmm1,XMMWORD[((-48))+r15]
> 
> +DB      102,15,56,220,208
> 
> +        xor     esi,ecx
> 
> +        punpcklqdq      xmm3,xmm4
> 
> +        mov     edi,eax
> 
> +        rol     eax,5
> 
> +        pxor    xmm5,xmm6
> 
> +        add     ebp,esi
> 
> +        xor     edi,ecx
> 
> +        movdqa  xmm13,xmm12
> 
> +        ror     ebx,7
> 
> +        paddd   xmm12,xmm4
> 
> +        add     ebp,eax
> 
> +        pxor    xmm5,xmm3
> 
> +        add     edx,DWORD[20+rsp]
> 
> +        xor     edi,ebx
> 
> +        mov     esi,ebp
> 
> +        rol     ebp,5
> 
> +        movdqa  xmm3,xmm5
> 
> +        add     edx,edi
> 
> +        xor     esi,ebx
> 
> +        movdqa  XMMWORD[rsp],xmm12
> 
> +        ror     eax,7
> 
> +        add     edx,ebp
> 
> +        add     ecx,DWORD[24+rsp]
> 
> +        pslld   xmm5,2
> 
> +        xor     esi,eax
> 
> +        mov     edi,edx
> 
> +        psrld   xmm3,30
> 
> +        rol     edx,5
> 
> +        add     ecx,esi
> 
> +        movups  xmm0,XMMWORD[((-32))+r15]
> 
> +DB      102,15,56,220,209
> 
> +        xor     edi,eax
> 
> +        ror     ebp,7
> 
> +        por     xmm5,xmm3
> 
> +        add     ecx,edx
> 
> +        add     ebx,DWORD[28+rsp]
> 
> +        pshufd  xmm12,xmm4,238
> 
> +        xor     edi,ebp
> 
> +        mov     esi,ecx
> 
> +        rol     ecx,5
> 
> +        add     ebx,edi
> 
> +        xor     esi,ebp
> 
> +        ror     edx,7
> 
> +        add     ebx,ecx
> 
> +        pxor    xmm6,xmm10
> 
> +        add     eax,DWORD[32+rsp]
> 
> +        xor     esi,edx
> 
> +        punpcklqdq      xmm12,xmm5
> 
> +        mov     edi,ebx
> 
> +        rol     ebx,5
> 
> +        pxor    xmm6,xmm7
> 
> +        add     eax,esi
> 
> +        xor     edi,edx
> 
> +        movdqa  xmm3,XMMWORD[32+r11]
> 
> +        ror     ecx,7
> 
> +        paddd   xmm13,xmm5
> 
> +        add     eax,ebx
> 
> +        pxor    xmm6,xmm12
> 
> +        add     ebp,DWORD[36+rsp]
> 
> +        movups  xmm1,XMMWORD[((-16))+r15]
> 
> +DB      102,15,56,220,208
> 
> +        xor     edi,ecx
> 
> +        mov     esi,eax
> 
> +        rol     eax,5
> 
> +        movdqa  xmm12,xmm6
> 
> +        add     ebp,edi
> 
> +        xor     esi,ecx
> 
> +        movdqa  XMMWORD[16+rsp],xmm13
> 
> +        ror     ebx,7
> 
> +        add     ebp,eax
> 
> +        add     edx,DWORD[40+rsp]
> 
> +        pslld   xmm6,2
> 
> +        xor     esi,ebx
> 
> +        mov     edi,ebp
> 
> +        psrld   xmm12,30
> 
> +        rol     ebp,5
> 
> +        add     edx,esi
> 
> +        xor     edi,ebx
> 
> +        ror     eax,7
> 
> +        por     xmm6,xmm12
> 
> +        add     edx,ebp
> 
> +        add     ecx,DWORD[44+rsp]
> 
> +        pshufd  xmm13,xmm5,238
> 
> +        xor     edi,eax
> 
> +        mov     esi,edx
> 
> +        rol     edx,5
> 
> +        add     ecx,edi
> 
> +        movups  xmm0,XMMWORD[r15]
> 
> +DB      102,15,56,220,209
> 
> +        xor     esi,eax
> 
> +        ror     ebp,7
> 
> +        add     ecx,edx
> 
> +        pxor    xmm7,xmm11
> 
> +        add     ebx,DWORD[48+rsp]
> 
> +        xor     esi,ebp
> 
> +        punpcklqdq      xmm13,xmm6
> 
> +        mov     edi,ecx
> 
> +        rol     ecx,5
> 
> +        pxor    xmm7,xmm8
> 
> +        add     ebx,esi
> 
> +        xor     edi,ebp
> 
> +        movdqa  xmm12,xmm3
> 
> +        ror     edx,7
> 
> +        paddd   xmm3,xmm6
> 
> +        add     ebx,ecx
> 
> +        pxor    xmm7,xmm13
> 
> +        add     eax,DWORD[52+rsp]
> 
> +        xor     edi,edx
> 
> +        mov     esi,ebx
> 
> +        rol     ebx,5
> 
> +        movdqa  xmm13,xmm7
> 
> +        add     eax,edi
> 
> +        xor     esi,edx
> 
> +        movdqa  XMMWORD[32+rsp],xmm3
> 
> +        ror     ecx,7
> 
> +        add     eax,ebx
> 
> +        add     ebp,DWORD[56+rsp]
> 
> +        movups  xmm1,XMMWORD[16+r15]
> 
> +DB      102,15,56,220,208
> 
> +        pslld   xmm7,2
> 
> +        xor     esi,ecx
> 
> +        mov     edi,eax
> 
> +        psrld   xmm13,30
> 
> +        rol     eax,5
> 
> +        add     ebp,esi
> 
> +        xor     edi,ecx
> 
> +        ror     ebx,7
> 
> +        por     xmm7,xmm13
> 
> +        add     ebp,eax
> 
> +        add     edx,DWORD[60+rsp]
> 
> +        pshufd  xmm3,xmm6,238
> 
> +        xor     edi,ebx
> 
> +        mov     esi,ebp
> 
> +        rol     ebp,5
> 
> +        add     edx,edi
> 
> +        xor     esi,ebx
> 
> +        ror     eax,7
> 
> +        add     edx,ebp
> 
> +        pxor    xmm8,xmm4
> 
> +        add     ecx,DWORD[rsp]
> 
> +        xor     esi,eax
> 
> +        punpcklqdq      xmm3,xmm7
> 
> +        mov     edi,edx
> 
> +        rol     edx,5
> 
> +        pxor    xmm8,xmm9
> 
> +        add     ecx,esi
> 
> +        movups  xmm0,XMMWORD[32+r15]
> 
> +DB      102,15,56,220,209
> 
> +        xor     edi,eax
> 
> +        movdqa  xmm13,xmm12
> 
> +        ror     ebp,7
> 
> +        paddd   xmm12,xmm7
> 
> +        add     ecx,edx
> 
> +        pxor    xmm8,xmm3
> 
> +        add     ebx,DWORD[4+rsp]
> 
> +        xor     edi,ebp
> 
> +        mov     esi,ecx
> 
> +        rol     ecx,5
> 
> +        movdqa  xmm3,xmm8
> 
> +        add     ebx,edi
> 
> +        xor     esi,ebp
> 
> +        movdqa  XMMWORD[48+rsp],xmm12
> 
> +        ror     edx,7
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[8+rsp]
> 
> +        pslld   xmm8,2
> 
> +        xor     esi,edx
> 
> +        mov     edi,ebx
> 
> +        psrld   xmm3,30
> 
> +        rol     ebx,5
> 
> +        add     eax,esi
> 
> +        xor     edi,edx
> 
> +        ror     ecx,7
> 
> +        por     xmm8,xmm3
> 
> +        add     eax,ebx
> 
> +        add     ebp,DWORD[12+rsp]
> 
> +        movups  xmm1,XMMWORD[48+r15]
> 
> +DB      102,15,56,220,208
> 
> +        pshufd  xmm12,xmm7,238
> 
> +        xor     edi,ecx
> 
> +        mov     esi,eax
> 
> +        rol     eax,5
> 
> +        add     ebp,edi
> 
> +        xor     esi,ecx
> 
> +        ror     ebx,7
> 
> +        add     ebp,eax
> 
> +        pxor    xmm9,xmm5
> 
> +        add     edx,DWORD[16+rsp]
> 
> +        xor     esi,ebx
> 
> +        punpcklqdq      xmm12,xmm8
> 
> +        mov     edi,ebp
> 
> +        rol     ebp,5
> 
> +        pxor    xmm9,xmm10
> 
> +        add     edx,esi
> 
> +        xor     edi,ebx
> 
> +        movdqa  xmm3,xmm13
> 
> +        ror     eax,7
> 
> +        paddd   xmm13,xmm8
> 
> +        add     edx,ebp
> 
> +        pxor    xmm9,xmm12
> 
> +        add     ecx,DWORD[20+rsp]
> 
> +        xor     edi,eax
> 
> +        mov     esi,edx
> 
> +        rol     edx,5
> 
> +        movdqa  xmm12,xmm9
> 
> +        add     ecx,edi
> 
> +        cmp     r8d,11
> 
> +        jb      NEAR $L$aesenclast2
> 
> +        movups  xmm0,XMMWORD[64+r15]
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[80+r15]
> 
> +DB      102,15,56,220,208
> 
> +        je      NEAR $L$aesenclast2
> 
> +        movups  xmm0,XMMWORD[96+r15]
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[112+r15]
> 
> +DB      102,15,56,220,208
> 
> +$L$aesenclast2:
> 
> +DB      102,15,56,221,209
> 
> +        movups  xmm0,XMMWORD[((16-112))+r15]
> 
> +        xor     esi,eax
> 
> +        movdqa  XMMWORD[rsp],xmm13
> 
> +        ror     ebp,7
> 
> +        add     ecx,edx
> 
> +        add     ebx,DWORD[24+rsp]
> 
> +        pslld   xmm9,2
> 
> +        xor     esi,ebp
> 
> +        mov     edi,ecx
> 
> +        psrld   xmm12,30
> 
> +        rol     ecx,5
> 
> +        add     ebx,esi
> 
> +        xor     edi,ebp
> 
> +        ror     edx,7
> 
> +        por     xmm9,xmm12
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[28+rsp]
> 
> +        pshufd  xmm13,xmm8,238
> 
> +        ror     ecx,7
> 
> +        mov     esi,ebx
> 
> +        xor     edi,edx
> 
> +        rol     ebx,5
> 
> +        add     eax,edi
> 
> +        xor     esi,ecx
> 
> +        xor     ecx,edx
> 
> +        add     eax,ebx
> 
> +        pxor    xmm10,xmm6
> 
> +        add     ebp,DWORD[32+rsp]
> 
> +        movups  xmm14,XMMWORD[32+r12]
> 
> +        xorps   xmm14,xmm15
> 
> +        movups  XMMWORD[16+r12*1+r13],xmm2
> 
> +        xorps   xmm2,xmm14
> 
> +        movups  xmm1,XMMWORD[((-80))+r15]
> 
> +DB      102,15,56,220,208
> 
> +        and     esi,ecx
> 
> +        xor     ecx,edx
> 
> +        ror     ebx,7
> 
> +        punpcklqdq      xmm13,xmm9
> 
> +        mov     edi,eax
> 
> +        xor     esi,ecx
> 
> +        pxor    xmm10,xmm11
> 
> +        rol     eax,5
> 
> +        add     ebp,esi
> 
> +        movdqa  xmm12,xmm3
> 
> +        xor     edi,ebx
> 
> +        paddd   xmm3,xmm9
> 
> +        xor     ebx,ecx
> 
> +        pxor    xmm10,xmm13
> 
> +        add     ebp,eax
> 
> +        add     edx,DWORD[36+rsp]
> 
> +        and     edi,ebx
> 
> +        xor     ebx,ecx
> 
> +        ror     eax,7
> 
> +        movdqa  xmm13,xmm10
> 
> +        mov     esi,ebp
> 
> +        xor     edi,ebx
> 
> +        movdqa  XMMWORD[16+rsp],xmm3
> 
> +        rol     ebp,5
> 
> +        add     edx,edi
> 
> +        movups  xmm0,XMMWORD[((-64))+r15]
> 
> +DB      102,15,56,220,209
> 
> +        xor     esi,eax
> 
> +        pslld   xmm10,2
> 
> +        xor     eax,ebx
> 
> +        add     edx,ebp
> 
> +        psrld   xmm13,30
> 
> +        add     ecx,DWORD[40+rsp]
> 
> +        and     esi,eax
> 
> +        xor     eax,ebx
> 
> +        por     xmm10,xmm13
> 
> +        ror     ebp,7
> 
> +        mov     edi,edx
> 
> +        xor     esi,eax
> 
> +        rol     edx,5
> 
> +        pshufd  xmm3,xmm9,238
> 
> +        add     ecx,esi
> 
> +        xor     edi,ebp
> 
> +        xor     ebp,eax
> 
> +        add     ecx,edx
> 
> +        add     ebx,DWORD[44+rsp]
> 
> +        and     edi,ebp
> 
> +        xor     ebp,eax
> 
> +        ror     edx,7
> 
> +        movups  xmm1,XMMWORD[((-48))+r15]
> 
> +DB      102,15,56,220,208
> 
> +        mov     esi,ecx
> 
> +        xor     edi,ebp
> 
> +        rol     ecx,5
> 
> +        add     ebx,edi
> 
> +        xor     esi,edx
> 
> +        xor     edx,ebp
> 
> +        add     ebx,ecx
> 
> +        pxor    xmm11,xmm7
> 
> +        add     eax,DWORD[48+rsp]
> 
> +        and     esi,edx
> 
> +        xor     edx,ebp
> 
> +        ror     ecx,7
> 
> +        punpcklqdq      xmm3,xmm10
> 
> +        mov     edi,ebx
> 
> +        xor     esi,edx
> 
> +        pxor    xmm11,xmm4
> 
> +        rol     ebx,5
> 
> +        add     eax,esi
> 
> +        movdqa  xmm13,XMMWORD[48+r11]
> 
> +        xor     edi,ecx
> 
> +        paddd   xmm12,xmm10
> 
> +        xor     ecx,edx
> 
> +        pxor    xmm11,xmm3
> 
> +        add     eax,ebx
> 
> +        add     ebp,DWORD[52+rsp]
> 
> +        movups  xmm0,XMMWORD[((-32))+r15]
> 
> +DB      102,15,56,220,209
> 
> +        and     edi,ecx
> 
> +        xor     ecx,edx
> 
> +        ror     ebx,7
> 
> +        movdqa  xmm3,xmm11
> 
> +        mov     esi,eax
> 
> +        xor     edi,ecx
> 
> +        movdqa  XMMWORD[32+rsp],xmm12
> 
> +        rol     eax,5
> 
> +        add     ebp,edi
> 
> +        xor     esi,ebx
> 
> +        pslld   xmm11,2
> 
> +        xor     ebx,ecx
> 
> +        add     ebp,eax
> 
> +        psrld   xmm3,30
> 
> +        add     edx,DWORD[56+rsp]
> 
> +        and     esi,ebx
> 
> +        xor     ebx,ecx
> 
> +        por     xmm11,xmm3
> 
> +        ror     eax,7
> 
> +        mov     edi,ebp
> 
> +        xor     esi,ebx
> 
> +        rol     ebp,5
> 
> +        pshufd  xmm12,xmm10,238
> 
> +        add     edx,esi
> 
> +        movups  xmm1,XMMWORD[((-16))+r15]
> 
> +DB      102,15,56,220,208
> 
> +        xor     edi,eax
> 
> +        xor     eax,ebx
> 
> +        add     edx,ebp
> 
> +        add     ecx,DWORD[60+rsp]
> 
> +        and     edi,eax
> 
> +        xor     eax,ebx
> 
> +        ror     ebp,7
> 
> +        mov     esi,edx
> 
> +        xor     edi,eax
> 
> +        rol     edx,5
> 
> +        add     ecx,edi
> 
> +        xor     esi,ebp
> 
> +        xor     ebp,eax
> 
> +        add     ecx,edx
> 
> +        pxor    xmm4,xmm8
> 
> +        add     ebx,DWORD[rsp]
> 
> +        and     esi,ebp
> 
> +        xor     ebp,eax
> 
> +        ror     edx,7
> 
> +        movups  xmm0,XMMWORD[r15]
> 
> +DB      102,15,56,220,209
> 
> +        punpcklqdq      xmm12,xmm11
> 
> +        mov     edi,ecx
> 
> +        xor     esi,ebp
> 
> +        pxor    xmm4,xmm5
> 
> +        rol     ecx,5
> 
> +        add     ebx,esi
> 
> +        movdqa  xmm3,xmm13
> 
> +        xor     edi,edx
> 
> +        paddd   xmm13,xmm11
> 
> +        xor     edx,ebp
> 
> +        pxor    xmm4,xmm12
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[4+rsp]
> 
> +        and     edi,edx
> 
> +        xor     edx,ebp
> 
> +        ror     ecx,7
> 
> +        movdqa  xmm12,xmm4
> 
> +        mov     esi,ebx
> 
> +        xor     edi,edx
> 
> +        movdqa  XMMWORD[48+rsp],xmm13
> 
> +        rol     ebx,5
> 
> +        add     eax,edi
> 
> +        xor     esi,ecx
> 
> +        pslld   xmm4,2
> 
> +        xor     ecx,edx
> 
> +        add     eax,ebx
> 
> +        psrld   xmm12,30
> 
> +        add     ebp,DWORD[8+rsp]
> 
> +        movups  xmm1,XMMWORD[16+r15]
> 
> +DB      102,15,56,220,208
> 
> +        and     esi,ecx
> 
> +        xor     ecx,edx
> 
> +        por     xmm4,xmm12
> 
> +        ror     ebx,7
> 
> +        mov     edi,eax
> 
> +        xor     esi,ecx
> 
> +        rol     eax,5
> 
> +        pshufd  xmm13,xmm11,238
> 
> +        add     ebp,esi
> 
> +        xor     edi,ebx
> 
> +        xor     ebx,ecx
> 
> +        add     ebp,eax
> 
> +        add     edx,DWORD[12+rsp]
> 
> +        and     edi,ebx
> 
> +        xor     ebx,ecx
> 
> +        ror     eax,7
> 
> +        mov     esi,ebp
> 
> +        xor     edi,ebx
> 
> +        rol     ebp,5
> 
> +        add     edx,edi
> 
> +        movups  xmm0,XMMWORD[32+r15]
> 
> +DB      102,15,56,220,209
> 
> +        xor     esi,eax
> 
> +        xor     eax,ebx
> 
> +        add     edx,ebp
> 
> +        pxor    xmm5,xmm9
> 
> +        add     ecx,DWORD[16+rsp]
> 
> +        and     esi,eax
> 
> +        xor     eax,ebx
> 
> +        ror     ebp,7
> 
> +        punpcklqdq      xmm13,xmm4
> 
> +        mov     edi,edx
> 
> +        xor     esi,eax
> 
> +        pxor    xmm5,xmm6
> 
> +        rol     edx,5
> 
> +        add     ecx,esi
> 
> +        movdqa  xmm12,xmm3
> 
> +        xor     edi,ebp
> 
> +        paddd   xmm3,xmm4
> 
> +        xor     ebp,eax
> 
> +        pxor    xmm5,xmm13
> 
> +        add     ecx,edx
> 
> +        add     ebx,DWORD[20+rsp]
> 
> +        and     edi,ebp
> 
> +        xor     ebp,eax
> 
> +        ror     edx,7
> 
> +        movups  xmm1,XMMWORD[48+r15]
> 
> +DB      102,15,56,220,208
> 
> +        movdqa  xmm13,xmm5
> 
> +        mov     esi,ecx
> 
> +        xor     edi,ebp
> 
> +        movdqa  XMMWORD[rsp],xmm3
> 
> +        rol     ecx,5
> 
> +        add     ebx,edi
> 
> +        xor     esi,edx
> 
> +        pslld   xmm5,2
> 
> +        xor     edx,ebp
> 
> +        add     ebx,ecx
> 
> +        psrld   xmm13,30
> 
> +        add     eax,DWORD[24+rsp]
> 
> +        and     esi,edx
> 
> +        xor     edx,ebp
> 
> +        por     xmm5,xmm13
> 
> +        ror     ecx,7
> 
> +        mov     edi,ebx
> 
> +        xor     esi,edx
> 
> +        rol     ebx,5
> 
> +        pshufd  xmm3,xmm4,238
> 
> +        add     eax,esi
> 
> +        xor     edi,ecx
> 
> +        xor     ecx,edx
> 
> +        add     eax,ebx
> 
> +        add     ebp,DWORD[28+rsp]
> 
> +        cmp     r8d,11
> 
> +        jb      NEAR $L$aesenclast3
> 
> +        movups  xmm0,XMMWORD[64+r15]
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[80+r15]
> 
> +DB      102,15,56,220,208
> 
> +        je      NEAR $L$aesenclast3
> 
> +        movups  xmm0,XMMWORD[96+r15]
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[112+r15]
> 
> +DB      102,15,56,220,208
> 
> +$L$aesenclast3:
> 
> +DB      102,15,56,221,209
> 
> +        movups  xmm0,XMMWORD[((16-112))+r15]
> 
> +        and     edi,ecx
> 
> +        xor     ecx,edx
> 
> +        ror     ebx,7
> 
> +        mov     esi,eax
> 
> +        xor     edi,ecx
> 
> +        rol     eax,5
> 
> +        add     ebp,edi
> 
> +        xor     esi,ebx
> 
> +        xor     ebx,ecx
> 
> +        add     ebp,eax
> 
> +        pxor    xmm6,xmm10
> 
> +        add     edx,DWORD[32+rsp]
> 
> +        and     esi,ebx
> 
> +        xor     ebx,ecx
> 
> +        ror     eax,7
> 
> +        punpcklqdq      xmm3,xmm5
> 
> +        mov     edi,ebp
> 
> +        xor     esi,ebx
> 
> +        pxor    xmm6,xmm7
> 
> +        rol     ebp,5
> 
> +        add     edx,esi
> 
> +        movups  xmm14,XMMWORD[48+r12]
> 
> +        xorps   xmm14,xmm15
> 
> +        movups  XMMWORD[32+r12*1+r13],xmm2
> 
> +        xorps   xmm2,xmm14
> 
> +        movups  xmm1,XMMWORD[((-80))+r15]
> 
> +DB      102,15,56,220,208
> 
> +        movdqa  xmm13,xmm12
> 
> +        xor     edi,eax
> 
> +        paddd   xmm12,xmm5
> 
> +        xor     eax,ebx
> 
> +        pxor    xmm6,xmm3
> 
> +        add     edx,ebp
> 
> +        add     ecx,DWORD[36+rsp]
> 
> +        and     edi,eax
> 
> +        xor     eax,ebx
> 
> +        ror     ebp,7
> 
> +        movdqa  xmm3,xmm6
> 
> +        mov     esi,edx
> 
> +        xor     edi,eax
> 
> +        movdqa  XMMWORD[16+rsp],xmm12
> 
> +        rol     edx,5
> 
> +        add     ecx,edi
> 
> +        xor     esi,ebp
> 
> +        pslld   xmm6,2
> 
> +        xor     ebp,eax
> 
> +        add     ecx,edx
> 
> +        psrld   xmm3,30
> 
> +        add     ebx,DWORD[40+rsp]
> 
> +        and     esi,ebp
> 
> +        xor     ebp,eax
> 
> +        por     xmm6,xmm3
> 
> +        ror     edx,7
> 
> +        movups  xmm0,XMMWORD[((-64))+r15]
> 
> +DB      102,15,56,220,209
> 
> +        mov     edi,ecx
> 
> +        xor     esi,ebp
> 
> +        rol     ecx,5
> 
> +        pshufd  xmm12,xmm5,238
> 
> +        add     ebx,esi
> 
> +        xor     edi,edx
> 
> +        xor     edx,ebp
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[44+rsp]
> 
> +        and     edi,edx
> 
> +        xor     edx,ebp
> 
> +        ror     ecx,7
> 
> +        mov     esi,ebx
> 
> +        xor     edi,edx
> 
> +        rol     ebx,5
> 
> +        add     eax,edi
> 
> +        xor     esi,edx
> 
> +        add     eax,ebx
> 
> +        pxor    xmm7,xmm11
> 
> +        add     ebp,DWORD[48+rsp]
> 
> +        movups  xmm1,XMMWORD[((-48))+r15]
> 
> +DB      102,15,56,220,208
> 
> +        xor     esi,ecx
> 
> +        punpcklqdq      xmm12,xmm6
> 
> +        mov     edi,eax
> 
> +        rol     eax,5
> 
> +        pxor    xmm7,xmm8
> 
> +        add     ebp,esi
> 
> +        xor     edi,ecx
> 
> +        movdqa  xmm3,xmm13
> 
> +        ror     ebx,7
> 
> +        paddd   xmm13,xmm6
> 
> +        add     ebp,eax
> 
> +        pxor    xmm7,xmm12
> 
> +        add     edx,DWORD[52+rsp]
> 
> +        xor     edi,ebx
> 
> +        mov     esi,ebp
> 
> +        rol     ebp,5
> 
> +        movdqa  xmm12,xmm7
> 
> +        add     edx,edi
> 
> +        xor     esi,ebx
> 
> +        movdqa  XMMWORD[32+rsp],xmm13
> 
> +        ror     eax,7
> 
> +        add     edx,ebp
> 
> +        add     ecx,DWORD[56+rsp]
> 
> +        pslld   xmm7,2
> 
> +        xor     esi,eax
> 
> +        mov     edi,edx
> 
> +        psrld   xmm12,30
> 
> +        rol     edx,5
> 
> +        add     ecx,esi
> 
> +        movups  xmm0,XMMWORD[((-32))+r15]
> 
> +DB      102,15,56,220,209
> 
> +        xor     edi,eax
> 
> +        ror     ebp,7
> 
> +        por     xmm7,xmm12
> 
> +        add     ecx,edx
> 
> +        add     ebx,DWORD[60+rsp]
> 
> +        xor     edi,ebp
> 
> +        mov     esi,ecx
> 
> +        rol     ecx,5
> 
> +        add     ebx,edi
> 
> +        xor     esi,ebp
> 
> +        ror     edx,7
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[rsp]
> 
> +        xor     esi,edx
> 
> +        mov     edi,ebx
> 
> +        rol     ebx,5
> 
> +        paddd   xmm3,xmm7
> 
> +        add     eax,esi
> 
> +        xor     edi,edx
> 
> +        movdqa  XMMWORD[48+rsp],xmm3
> 
> +        ror     ecx,7
> 
> +        add     eax,ebx
> 
> +        add     ebp,DWORD[4+rsp]
> 
> +        movups  xmm1,XMMWORD[((-16))+r15]
> 
> +DB      102,15,56,220,208
> 
> +        xor     edi,ecx
> 
> +        mov     esi,eax
> 
> +        rol     eax,5
> 
> +        add     ebp,edi
> 
> +        xor     esi,ecx
> 
> +        ror     ebx,7
> 
> +        add     ebp,eax
> 
> +        add     edx,DWORD[8+rsp]
> 
> +        xor     esi,ebx
> 
> +        mov     edi,ebp
> 
> +        rol     ebp,5
> 
> +        add     edx,esi
> 
> +        xor     edi,ebx
> 
> +        ror     eax,7
> 
> +        add     edx,ebp
> 
> +        add     ecx,DWORD[12+rsp]
> 
> +        xor     edi,eax
> 
> +        mov     esi,edx
> 
> +        rol     edx,5
> 
> +        add     ecx,edi
> 
> +        movups  xmm0,XMMWORD[r15]
> 
> +DB      102,15,56,220,209
> 
> +        xor     esi,eax
> 
> +        ror     ebp,7
> 
> +        add     ecx,edx
> 
> +        cmp     r10,r14
> 
> +        je      NEAR $L$done_ssse3
> 
> +        movdqa  xmm3,XMMWORD[64+r11]
> 
> +        movdqa  xmm13,XMMWORD[r11]
> 
> +        movdqu  xmm4,XMMWORD[r10]
> 
> +        movdqu  xmm5,XMMWORD[16+r10]
> 
> +        movdqu  xmm6,XMMWORD[32+r10]
> 
> +        movdqu  xmm7,XMMWORD[48+r10]
> 
> +DB      102,15,56,0,227
> 
> +        add     r10,64
> 
> +        add     ebx,DWORD[16+rsp]
> 
> +        xor     esi,ebp
> 
> +        mov     edi,ecx
> 
> +DB      102,15,56,0,235
> 
> +        rol     ecx,5
> 
> +        add     ebx,esi
> 
> +        xor     edi,ebp
> 
> +        ror     edx,7
> 
> +        paddd   xmm4,xmm13
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[20+rsp]
> 
> +        xor     edi,edx
> 
> +        mov     esi,ebx
> 
> +        movdqa  XMMWORD[rsp],xmm4
> 
> +        rol     ebx,5
> 
> +        add     eax,edi
> 
> +        xor     esi,edx
> 
> +        ror     ecx,7
> 
> +        psubd   xmm4,xmm13
> 
> +        add     eax,ebx
> 
> +        add     ebp,DWORD[24+rsp]
> 
> +        movups  xmm1,XMMWORD[16+r15]
> 
> +DB      102,15,56,220,208
> 
> +        xor     esi,ecx
> 
> +        mov     edi,eax
> 
> +        rol     eax,5
> 
> +        add     ebp,esi
> 
> +        xor     edi,ecx
> 
> +        ror     ebx,7
> 
> +        add     ebp,eax
> 
> +        add     edx,DWORD[28+rsp]
> 
> +        xor     edi,ebx
> 
> +        mov     esi,ebp
> 
> +        rol     ebp,5
> 
> +        add     edx,edi
> 
> +        xor     esi,ebx
> 
> +        ror     eax,7
> 
> +        add     edx,ebp
> 
> +        add     ecx,DWORD[32+rsp]
> 
> +        xor     esi,eax
> 
> +        mov     edi,edx
> 
> +DB      102,15,56,0,243
> 
> +        rol     edx,5
> 
> +        add     ecx,esi
> 
> +        movups  xmm0,XMMWORD[32+r15]
> 
> +DB      102,15,56,220,209
> 
> +        xor     edi,eax
> 
> +        ror     ebp,7
> 
> +        paddd   xmm5,xmm13
> 
> +        add     ecx,edx
> 
> +        add     ebx,DWORD[36+rsp]
> 
> +        xor     edi,ebp
> 
> +        mov     esi,ecx
> 
> +        movdqa  XMMWORD[16+rsp],xmm5
> 
> +        rol     ecx,5
> 
> +        add     ebx,edi
> 
> +        xor     esi,ebp
> 
> +        ror     edx,7
> 
> +        psubd   xmm5,xmm13
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[40+rsp]
> 
> +        xor     esi,edx
> 
> +        mov     edi,ebx
> 
> +        rol     ebx,5
> 
> +        add     eax,esi
> 
> +        xor     edi,edx
> 
> +        ror     ecx,7
> 
> +        add     eax,ebx
> 
> +        add     ebp,DWORD[44+rsp]
> 
> +        movups  xmm1,XMMWORD[48+r15]
> 
> +DB      102,15,56,220,208
> 
> +        xor     edi,ecx
> 
> +        mov     esi,eax
> 
> +        rol     eax,5
> 
> +        add     ebp,edi
> 
> +        xor     esi,ecx
> 
> +        ror     ebx,7
> 
> +        add     ebp,eax
> 
> +        add     edx,DWORD[48+rsp]
> 
> +        xor     esi,ebx
> 
> +        mov     edi,ebp
> 
> +DB      102,15,56,0,251
> 
> +        rol     ebp,5
> 
> +        add     edx,esi
> 
> +        xor     edi,ebx
> 
> +        ror     eax,7
> 
> +        paddd   xmm6,xmm13
> 
> +        add     edx,ebp
> 
> +        add     ecx,DWORD[52+rsp]
> 
> +        xor     edi,eax
> 
> +        mov     esi,edx
> 
> +        movdqa  XMMWORD[32+rsp],xmm6
> 
> +        rol     edx,5
> 
> +        add     ecx,edi
> 
> +        cmp     r8d,11
> 
> +        jb      NEAR $L$aesenclast4
> 
> +        movups  xmm0,XMMWORD[64+r15]
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[80+r15]
> 
> +DB      102,15,56,220,208
> 
> +        je      NEAR $L$aesenclast4
> 
> +        movups  xmm0,XMMWORD[96+r15]
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[112+r15]
> 
> +DB      102,15,56,220,208
> 
> +$L$aesenclast4:
> 
> +DB      102,15,56,221,209
> 
> +        movups  xmm0,XMMWORD[((16-112))+r15]
> 
> +        xor     esi,eax
> 
> +        ror     ebp,7
> 
> +        psubd   xmm6,xmm13
> 
> +        add     ecx,edx
> 
> +        add     ebx,DWORD[56+rsp]
> 
> +        xor     esi,ebp
> 
> +        mov     edi,ecx
> 
> +        rol     ecx,5
> 
> +        add     ebx,esi
> 
> +        xor     edi,ebp
> 
> +        ror     edx,7
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[60+rsp]
> 
> +        xor     edi,edx
> 
> +        mov     esi,ebx
> 
> +        rol     ebx,5
> 
> +        add     eax,edi
> 
> +        ror     ecx,7
> 
> +        add     eax,ebx
> 
> +        movups  XMMWORD[48+r12*1+r13],xmm2
> 
> +        lea     r12,[64+r12]
> 
> +
> 
> +        add     eax,DWORD[r9]
> 
> +        add     esi,DWORD[4+r9]
> 
> +        add     ecx,DWORD[8+r9]
> 
> +        add     edx,DWORD[12+r9]
> 
> +        mov     DWORD[r9],eax
> 
> +        add     ebp,DWORD[16+r9]
> 
> +        mov     DWORD[4+r9],esi
> 
> +        mov     ebx,esi
> 
> +        mov     DWORD[8+r9],ecx
> 
> +        mov     edi,ecx
> 
> +        mov     DWORD[12+r9],edx
> 
> +        xor     edi,edx
> 
> +        mov     DWORD[16+r9],ebp
> 
> +        and     esi,edi
> 
> +        jmp     NEAR $L$oop_ssse3
> 
> +
> 
> +$L$done_ssse3:
> 
> +        add     ebx,DWORD[16+rsp]
> 
> +        xor     esi,ebp
> 
> +        mov     edi,ecx
> 
> +        rol     ecx,5
> 
> +        add     ebx,esi
> 
> +        xor     edi,ebp
> 
> +        ror     edx,7
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[20+rsp]
> 
> +        xor     edi,edx
> 
> +        mov     esi,ebx
> 
> +        rol     ebx,5
> 
> +        add     eax,edi
> 
> +        xor     esi,edx
> 
> +        ror     ecx,7
> 
> +        add     eax,ebx
> 
> +        add     ebp,DWORD[24+rsp]
> 
> +        movups  xmm1,XMMWORD[16+r15]
> 
> +DB      102,15,56,220,208
> 
> +        xor     esi,ecx
> 
> +        mov     edi,eax
> 
> +        rol     eax,5
> 
> +        add     ebp,esi
> 
> +        xor     edi,ecx
> 
> +        ror     ebx,7
> 
> +        add     ebp,eax
> 
> +        add     edx,DWORD[28+rsp]
> 
> +        xor     edi,ebx
> 
> +        mov     esi,ebp
> 
> +        rol     ebp,5
> 
> +        add     edx,edi
> 
> +        xor     esi,ebx
> 
> +        ror     eax,7
> 
> +        add     edx,ebp
> 
> +        add     ecx,DWORD[32+rsp]
> 
> +        xor     esi,eax
> 
> +        mov     edi,edx
> 
> +        rol     edx,5
> 
> +        add     ecx,esi
> 
> +        movups  xmm0,XMMWORD[32+r15]
> 
> +DB      102,15,56,220,209
> 
> +        xor     edi,eax
> 
> +        ror     ebp,7
> 
> +        add     ecx,edx
> 
> +        add     ebx,DWORD[36+rsp]
> 
> +        xor     edi,ebp
> 
> +        mov     esi,ecx
> 
> +        rol     ecx,5
> 
> +        add     ebx,edi
> 
> +        xor     esi,ebp
> 
> +        ror     edx,7
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[40+rsp]
> 
> +        xor     esi,edx
> 
> +        mov     edi,ebx
> 
> +        rol     ebx,5
> 
> +        add     eax,esi
> 
> +        xor     edi,edx
> 
> +        ror     ecx,7
> 
> +        add     eax,ebx
> 
> +        add     ebp,DWORD[44+rsp]
> 
> +        movups  xmm1,XMMWORD[48+r15]
> 
> +DB      102,15,56,220,208
> 
> +        xor     edi,ecx
> 
> +        mov     esi,eax
> 
> +        rol     eax,5
> 
> +        add     ebp,edi
> 
> +        xor     esi,ecx
> 
> +        ror     ebx,7
> 
> +        add     ebp,eax
> 
> +        add     edx,DWORD[48+rsp]
> 
> +        xor     esi,ebx
> 
> +        mov     edi,ebp
> 
> +        rol     ebp,5
> 
> +        add     edx,esi
> 
> +        xor     edi,ebx
> 
> +        ror     eax,7
> 
> +        add     edx,ebp
> 
> +        add     ecx,DWORD[52+rsp]
> 
> +        xor     edi,eax
> 
> +        mov     esi,edx
> 
> +        rol     edx,5
> 
> +        add     ecx,edi
> 
> +        cmp     r8d,11
> 
> +        jb      NEAR $L$aesenclast5
> 
> +        movups  xmm0,XMMWORD[64+r15]
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[80+r15]
> 
> +DB      102,15,56,220,208
> 
> +        je      NEAR $L$aesenclast5
> 
> +        movups  xmm0,XMMWORD[96+r15]
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[112+r15]
> 
> +DB      102,15,56,220,208
> 
> +$L$aesenclast5:
> 
> +DB      102,15,56,221,209
> 
> +        movups  xmm0,XMMWORD[((16-112))+r15]
> 
> +        xor     esi,eax
> 
> +        ror     ebp,7
> 
> +        add     ecx,edx
> 
> +        add     ebx,DWORD[56+rsp]
> 
> +        xor     esi,ebp
> 
> +        mov     edi,ecx
> 
> +        rol     ecx,5
> 
> +        add     ebx,esi
> 
> +        xor     edi,ebp
> 
> +        ror     edx,7
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[60+rsp]
> 
> +        xor     edi,edx
> 
> +        mov     esi,ebx
> 
> +        rol     ebx,5
> 
> +        add     eax,edi
> 
> +        ror     ecx,7
> 
> +        add     eax,ebx
> 
> +        movups  XMMWORD[48+r12*1+r13],xmm2
> 
> +        mov     r8,QWORD[88+rsp]
> 
> +
> 
> +        add     eax,DWORD[r9]
> 
> +        add     esi,DWORD[4+r9]
> 
> +        add     ecx,DWORD[8+r9]
> 
> +        mov     DWORD[r9],eax
> 
> +        add     edx,DWORD[12+r9]
> 
> +        mov     DWORD[4+r9],esi
> 
> +        add     ebp,DWORD[16+r9]
> 
> +        mov     DWORD[8+r9],ecx
> 
> +        mov     DWORD[12+r9],edx
> 
> +        mov     DWORD[16+r9],ebp
> 
> +        movups  XMMWORD[r8],xmm2
> 
> +        movaps  xmm6,XMMWORD[((96+0))+rsp]
> 
> +        movaps  xmm7,XMMWORD[((96+16))+rsp]
> 
> +        movaps  xmm8,XMMWORD[((96+32))+rsp]
> 
> +        movaps  xmm9,XMMWORD[((96+48))+rsp]
> 
> +        movaps  xmm10,XMMWORD[((96+64))+rsp]
> 
> +        movaps  xmm11,XMMWORD[((96+80))+rsp]
> 
> +        movaps  xmm12,XMMWORD[((96+96))+rsp]
> 
> +        movaps  xmm13,XMMWORD[((96+112))+rsp]
> 
> +        movaps  xmm14,XMMWORD[((96+128))+rsp]
> 
> +        movaps  xmm15,XMMWORD[((96+144))+rsp]
> 
> +        lea     rsi,[264+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_aesni_cbc_sha1_enc_ssse3:
> 
> +ALIGN   64
> 
> +K_XX_XX:
> 
> +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> 
> +        DD      0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
> 
> +        DD      0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
> 
> +        DD      0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
> 
> +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> 
> +DB      0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
> 
> +
> 
> +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115
> 
> +DB      116,105,116,99,104,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
> 
> +
> 
> +ALIGN   32
> 
> +aesni_cbc_sha1_enc_shaext:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_aesni_cbc_sha1_enc_shaext:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +        mov     rcx,r9
> 
> +        mov     r8,QWORD[40+rsp]
> 
> +        mov     r9,QWORD[48+rsp]
> 
> +
> 
> +
> 
> +
> 
> +        mov     r10,QWORD[56+rsp]
> 
> +        lea     rsp,[((-168))+rsp]
> 
> +        movaps  XMMWORD[(-8-160)+rax],xmm6
> 
> +        movaps  XMMWORD[(-8-144)+rax],xmm7
> 
> +        movaps  XMMWORD[(-8-128)+rax],xmm8
> 
> +        movaps  XMMWORD[(-8-112)+rax],xmm9
> 
> +        movaps  XMMWORD[(-8-96)+rax],xmm10
> 
> +        movaps  XMMWORD[(-8-80)+rax],xmm11
> 
> +        movaps  XMMWORD[(-8-64)+rax],xmm12
> 
> +        movaps  XMMWORD[(-8-48)+rax],xmm13
> 
> +        movaps  XMMWORD[(-8-32)+rax],xmm14
> 
> +        movaps  XMMWORD[(-8-16)+rax],xmm15
> 
> +$L$prologue_shaext:
> 
> +        movdqu  xmm8,XMMWORD[r9]
> 
> +        movd    xmm9,DWORD[16+r9]
> 
> +        movdqa  xmm7,XMMWORD[((K_XX_XX+80))]
> 
> +
> 
> +        mov     r11d,DWORD[240+rcx]
> 
> +        sub     rsi,rdi
> 
> +        movups  xmm15,XMMWORD[rcx]
> 
> +        movups  xmm2,XMMWORD[r8]
> 
> +        movups  xmm0,XMMWORD[16+rcx]
> 
> +        lea     rcx,[112+rcx]
> 
> +
> 
> +        pshufd  xmm8,xmm8,27
> 
> +        pshufd  xmm9,xmm9,27
> 
> +        jmp     NEAR $L$oop_shaext
> 
> +
> 
> +ALIGN   16
> 
> +$L$oop_shaext:
> 
> +        movups  xmm14,XMMWORD[rdi]
> 
> +        xorps   xmm14,xmm15
> 
> +        xorps   xmm2,xmm14
> 
> +        movups  xmm1,XMMWORD[((-80))+rcx]
> 
> +DB      102,15,56,220,208
> 
> +        movdqu  xmm3,XMMWORD[r10]
> 
> +        movdqa  xmm12,xmm9
> 
> +DB      102,15,56,0,223
> 
> +        movdqu  xmm4,XMMWORD[16+r10]
> 
> +        movdqa  xmm11,xmm8
> 
> +        movups  xmm0,XMMWORD[((-64))+rcx]
> 
> +DB      102,15,56,220,209
> 
> +DB      102,15,56,0,231
> 
> +
> 
> +        paddd   xmm9,xmm3
> 
> +        movdqu  xmm5,XMMWORD[32+r10]
> 
> +        lea     r10,[64+r10]
> 
> +        pxor    xmm3,xmm12
> 
> +        movups  xmm1,XMMWORD[((-48))+rcx]
> 
> +DB      102,15,56,220,208
> 
> +        pxor    xmm3,xmm12
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      102,15,56,0,239
> 
> +DB      69,15,58,204,193,0
> 
> +DB      68,15,56,200,212
> 
> +        movups  xmm0,XMMWORD[((-32))+rcx]
> 
> +DB      102,15,56,220,209
> 
> +DB      15,56,201,220
> 
> +        movdqu  xmm6,XMMWORD[((-16))+r10]
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      102,15,56,0,247
> 
> +        movups  xmm1,XMMWORD[((-16))+rcx]
> 
> +DB      102,15,56,220,208
> 
> +DB      69,15,58,204,194,0
> 
> +DB      68,15,56,200,205
> 
> +        pxor    xmm3,xmm5
> 
> +DB      15,56,201,229
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      69,15,58,204,193,0
> 
> +DB      68,15,56,200,214
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +DB      102,15,56,220,208
> 
> +DB      15,56,202,222
> 
> +        pxor    xmm4,xmm6
> 
> +DB      15,56,201,238
> 
> +        movups  xmm0,XMMWORD[32+rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      69,15,58,204,194,0
> 
> +DB      68,15,56,200,203
> 
> +        movups  xmm1,XMMWORD[48+rcx]
> 
> +DB      102,15,56,220,208
> 
> +DB      15,56,202,227
> 
> +        pxor    xmm5,xmm3
> 
> +DB      15,56,201,243
> 
> +        cmp     r11d,11
> 
> +        jb      NEAR $L$aesenclast6
> 
> +        movups  xmm0,XMMWORD[64+rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[80+rcx]
> 
> +DB      102,15,56,220,208
> 
> +        je      NEAR $L$aesenclast6
> 
> +        movups  xmm0,XMMWORD[96+rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[112+rcx]
> 
> +DB      102,15,56,220,208
> 
> +$L$aesenclast6:
> 
> +DB      102,15,56,221,209
> 
> +        movups  xmm0,XMMWORD[((16-112))+rcx]
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      69,15,58,204,193,0
> 
> +DB      68,15,56,200,212
> 
> +        movups  xmm14,XMMWORD[16+rdi]
> 
> +        xorps   xmm14,xmm15
> 
> +        movups  XMMWORD[rdi*1+rsi],xmm2
> 
> +        xorps   xmm2,xmm14
> 
> +        movups  xmm1,XMMWORD[((-80))+rcx]
> 
> +DB      102,15,56,220,208
> 
> +DB      15,56,202,236
> 
> +        pxor    xmm6,xmm4
> 
> +DB      15,56,201,220
> 
> +        movups  xmm0,XMMWORD[((-64))+rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      69,15,58,204,194,1
> 
> +DB      68,15,56,200,205
> 
> +        movups  xmm1,XMMWORD[((-48))+rcx]
> 
> +DB      102,15,56,220,208
> 
> +DB      15,56,202,245
> 
> +        pxor    xmm3,xmm5
> 
> +DB      15,56,201,229
> 
> +        movups  xmm0,XMMWORD[((-32))+rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      69,15,58,204,193,1
> 
> +DB      68,15,56,200,214
> 
> +        movups  xmm1,XMMWORD[((-16))+rcx]
> 
> +DB      102,15,56,220,208
> 
> +DB      15,56,202,222
> 
> +        pxor    xmm4,xmm6
> 
> +DB      15,56,201,238
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      69,15,58,204,194,1
> 
> +DB      68,15,56,200,203
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +DB      102,15,56,220,208
> 
> +DB      15,56,202,227
> 
> +        pxor    xmm5,xmm3
> 
> +DB      15,56,201,243
> 
> +        movups  xmm0,XMMWORD[32+rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      69,15,58,204,193,1
> 
> +DB      68,15,56,200,212
> 
> +        movups  xmm1,XMMWORD[48+rcx]
> 
> +DB      102,15,56,220,208
> 
> +DB      15,56,202,236
> 
> +        pxor    xmm6,xmm4
> 
> +DB      15,56,201,220
> 
> +        cmp     r11d,11
> 
> +        jb      NEAR $L$aesenclast7
> 
> +        movups  xmm0,XMMWORD[64+rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[80+rcx]
> 
> +DB      102,15,56,220,208
> 
> +        je      NEAR $L$aesenclast7
> 
> +        movups  xmm0,XMMWORD[96+rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[112+rcx]
> 
> +DB      102,15,56,220,208
> 
> +$L$aesenclast7:
> 
> +DB      102,15,56,221,209
> 
> +        movups  xmm0,XMMWORD[((16-112))+rcx]
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      69,15,58,204,194,1
> 
> +DB      68,15,56,200,205
> 
> +        movups  xmm14,XMMWORD[32+rdi]
> 
> +        xorps   xmm14,xmm15
> 
> +        movups  XMMWORD[16+rdi*1+rsi],xmm2
> 
> +        xorps   xmm2,xmm14
> 
> +        movups  xmm1,XMMWORD[((-80))+rcx]
> 
> +DB      102,15,56,220,208
> 
> +DB      15,56,202,245
> 
> +        pxor    xmm3,xmm5
> 
> +DB      15,56,201,229
> 
> +        movups  xmm0,XMMWORD[((-64))+rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      69,15,58,204,193,2
> 
> +DB      68,15,56,200,214
> 
> +        movups  xmm1,XMMWORD[((-48))+rcx]
> 
> +DB      102,15,56,220,208
> 
> +DB      15,56,202,222
> 
> +        pxor    xmm4,xmm6
> 
> +DB      15,56,201,238
> 
> +        movups  xmm0,XMMWORD[((-32))+rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      69,15,58,204,194,2
> 
> +DB      68,15,56,200,203
> 
> +        movups  xmm1,XMMWORD[((-16))+rcx]
> 
> +DB      102,15,56,220,208
> 
> +DB      15,56,202,227
> 
> +        pxor    xmm5,xmm3
> 
> +DB      15,56,201,243
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      69,15,58,204,193,2
> 
> +DB      68,15,56,200,212
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +DB      102,15,56,220,208
> 
> +DB      15,56,202,236
> 
> +        pxor    xmm6,xmm4
> 
> +DB      15,56,201,220
> 
> +        movups  xmm0,XMMWORD[32+rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      69,15,58,204,194,2
> 
> +DB      68,15,56,200,205
> 
> +        movups  xmm1,XMMWORD[48+rcx]
> 
> +DB      102,15,56,220,208
> 
> +DB      15,56,202,245
> 
> +        pxor    xmm3,xmm5
> 
> +DB      15,56,201,229
> 
> +        cmp     r11d,11
> 
> +        jb      NEAR $L$aesenclast8
> 
> +        movups  xmm0,XMMWORD[64+rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[80+rcx]
> 
> +DB      102,15,56,220,208
> 
> +        je      NEAR $L$aesenclast8
> 
> +        movups  xmm0,XMMWORD[96+rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[112+rcx]
> 
> +DB      102,15,56,220,208
> 
> +$L$aesenclast8:
> 
> +DB      102,15,56,221,209
> 
> +        movups  xmm0,XMMWORD[((16-112))+rcx]
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      69,15,58,204,193,2
> 
> +DB      68,15,56,200,214
> 
> +        movups  xmm14,XMMWORD[48+rdi]
> 
> +        xorps   xmm14,xmm15
> 
> +        movups  XMMWORD[32+rdi*1+rsi],xmm2
> 
> +        xorps   xmm2,xmm14
> 
> +        movups  xmm1,XMMWORD[((-80))+rcx]
> 
> +DB      102,15,56,220,208
> 
> +DB      15,56,202,222
> 
> +        pxor    xmm4,xmm6
> 
> +DB      15,56,201,238
> 
> +        movups  xmm0,XMMWORD[((-64))+rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      69,15,58,204,194,3
> 
> +DB      68,15,56,200,203
> 
> +        movups  xmm1,XMMWORD[((-48))+rcx]
> 
> +DB      102,15,56,220,208
> 
> +DB      15,56,202,227
> 
> +        pxor    xmm5,xmm3
> 
> +DB      15,56,201,243
> 
> +        movups  xmm0,XMMWORD[((-32))+rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      69,15,58,204,193,3
> 
> +DB      68,15,56,200,212
> 
> +DB      15,56,202,236
> 
> +        pxor    xmm6,xmm4
> 
> +        movups  xmm1,XMMWORD[((-16))+rcx]
> 
> +DB      102,15,56,220,208
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      69,15,58,204,194,3
> 
> +DB      68,15,56,200,205
> 
> +DB      15,56,202,245
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movdqa  xmm5,xmm12
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      69,15,58,204,193,3
> 
> +DB      68,15,56,200,214
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +DB      102,15,56,220,208
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      69,15,58,204,194,3
> 
> +DB      68,15,56,200,205
> 
> +        movups  xmm0,XMMWORD[32+rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[48+rcx]
> 
> +DB      102,15,56,220,208
> 
> +        cmp     r11d,11
> 
> +        jb      NEAR $L$aesenclast9
> 
> +        movups  xmm0,XMMWORD[64+rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[80+rcx]
> 
> +DB      102,15,56,220,208
> 
> +        je      NEAR $L$aesenclast9
> 
> +        movups  xmm0,XMMWORD[96+rcx]
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[112+rcx]
> 
> +DB      102,15,56,220,208
> 
> +$L$aesenclast9:
> 
> +DB      102,15,56,221,209
> 
> +        movups  xmm0,XMMWORD[((16-112))+rcx]
> 
> +        dec     rdx
> 
> +
> 
> +        paddd   xmm8,xmm11
> 
> +        movups  XMMWORD[48+rdi*1+rsi],xmm2
> 
> +        lea     rdi,[64+rdi]
> 
> +        jnz     NEAR $L$oop_shaext
> 
> +
> 
> +        pshufd  xmm8,xmm8,27
> 
> +        pshufd  xmm9,xmm9,27
> 
> +        movups  XMMWORD[r8],xmm2
> 
> +        movdqu  XMMWORD[r9],xmm8
> 
> +        movd    DWORD[16+r9],xmm9
> 
> +        movaps  xmm6,XMMWORD[((-8-160))+rax]
> 
> +        movaps  xmm7,XMMWORD[((-8-144))+rax]
> 
> +        movaps  xmm8,XMMWORD[((-8-128))+rax]
> 
> +        movaps  xmm9,XMMWORD[((-8-112))+rax]
> 
> +        movaps  xmm10,XMMWORD[((-8-96))+rax]
> 
> +        movaps  xmm11,XMMWORD[((-8-80))+rax]
> 
> +        movaps  xmm12,XMMWORD[((-8-64))+rax]
> 
> +        movaps  xmm13,XMMWORD[((-8-48))+rax]
> 
> +        movaps  xmm14,XMMWORD[((-8-32))+rax]
> 
> +        movaps  xmm15,XMMWORD[((-8-16))+rax]
> 
> +        mov     rsp,rax
> 
> +$L$epilogue_shaext:
> 
> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> 
> +        mov     rsi,QWORD[16+rsp]
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +$L$SEH_end_aesni_cbc_sha1_enc_shaext:
> 
> +EXTERN  __imp_RtlVirtualUnwind
> 
> +
> 
> +ALIGN   16
> 
> +ssse3_handler:
> 
> +        push    rsi
> 
> +        push    rdi
> 
> +        push    rbx
> 
> +        push    rbp
> 
> +        push    r12
> 
> +        push    r13
> 
> +        push    r14
> 
> +        push    r15
> 
> +        pushfq
> 
> +        sub     rsp,64
> 
> +
> 
> +        mov     rax,QWORD[120+r8]
> 
> +        mov     rbx,QWORD[248+r8]
> 
> +
> 
> +        mov     rsi,QWORD[8+r9]
> 
> +        mov     r11,QWORD[56+r9]
> 
> +
> 
> +        mov     r10d,DWORD[r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$common_seh_tail
> 
> +
> 
> +        mov     rax,QWORD[152+r8]
> 
> +
> 
> +        mov     r10d,DWORD[4+r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jae     NEAR $L$common_seh_tail
> 
> +        lea     r10,[aesni_cbc_sha1_enc_shaext]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$seh_no_shaext
> 
> +
> 
> +        lea     rsi,[rax]
> 
> +        lea     rdi,[512+r8]
> 
> +        mov     ecx,20
> 
> +        DD      0xa548f3fc
> 
> +        lea     rax,[168+rax]
> 
> +        jmp     NEAR $L$common_seh_tail
> 
> +$L$seh_no_shaext:
> 
> +        lea     rsi,[96+rax]
> 
> +        lea     rdi,[512+r8]
> 
> +        mov     ecx,20
> 
> +        DD      0xa548f3fc
> 
> +        lea     rax,[264+rax]
> 
> +
> 
> +        mov     r15,QWORD[rax]
> 
> +        mov     r14,QWORD[8+rax]
> 
> +        mov     r13,QWORD[16+rax]
> 
> +        mov     r12,QWORD[24+rax]
> 
> +        mov     rbp,QWORD[32+rax]
> 
> +        mov     rbx,QWORD[40+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$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[40+r9]
> 
> +        mov     rsi,r8
> 
> +        mov     ecx,154
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +        mov     rsi,r9
> 
> +        xor     rcx,rcx
> 
> +        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
> 
> +        popfq
> 
> +        pop     r15
> 
> +        pop     r14
> 
> +        pop     r13
> 
> +        pop     r12
> 
> +        pop     rbp
> 
> +        pop     rbx
> 
> +        pop     rdi
> 
> +        pop     rsi
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +section .pdata rdata align=4
> 
> +ALIGN   4
> 
> +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> 
> +        DD      $L$SEH_end_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> 
> +        DD      $L$SEH_info_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> 
> +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> 
> +        DD      $L$SEH_end_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> 
> +        DD      $L$SEH_info_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> 
> +section .xdata rdata align=8
> 
> +ALIGN   8
> 
> +$L$SEH_info_aesni_cbc_sha1_enc_ssse3:
> 
> +DB      9,0,0,0
> 
> +        DD      ssse3_handler wrt ..imagebase
> 
> +        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
> wrt ..imagebase
> 
> +$L$SEH_info_aesni_cbc_sha1_enc_shaext:
> 
> +DB      9,0,0,0
> 
> +        DD      ssse3_handler wrt ..imagebase
> 
> +        DD      $L$prologue_shaext wrt ..imagebase,$L$epilogue_shaext
> wrt ..imagebase
> 
> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> x86_64.nasm
> new file mode 100644
> index 0000000000..f5c250b904
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> x86_64.nasm
> @@ -0,0 +1,78 @@
> +; WARNING: do not edit!
> 
> +; Generated from openssl/crypto/aes/asm/aesni-sha256-x86_64.pl
> 
> +;
> 
> +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
> 
> +;
> 
> +; Licensed under the OpenSSL license (the "License").  You may not use
> 
> +; this file except in compliance with the License.  You can obtain a copy
> 
> +; in the file LICENSE in the source distribution or at
> 
> +; https://www.openssl.org/source/license.html
> 
> +
> 
> +default rel
> 
> +%define XMMWORD
> 
> +%define YMMWORD
> 
> +%define ZMMWORD
> 
> +section .text code align=64
> 
> +
> 
> +
> 
> +EXTERN  OPENSSL_ia32cap_P
> 
> +global  aesni_cbc_sha256_enc
> 
> +
> 
> +ALIGN   16
> 
> +aesni_cbc_sha256_enc:
> 
> +
> 
> +        xor     eax,eax
> 
> +        cmp     rcx,0
> 
> +        je      NEAR $L$probe
> 
> +        ud2
> 
> +$L$probe:
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   64
> 
> +
> 
> +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      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> 
> +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> 
> +        DD      0,0,0,0,0,0,0,0,-1,-1,-1,-1
> 
> +        DD      0,0,0,0,0,0,0,0
> 
> +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54
> 
> +DB      32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95
> 
> +DB      54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98
> 
> +DB      121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108
> 
> +DB      46,111,114,103,62,0
> 
> +ALIGN   64
> 
> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
> b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
> new file mode 100644
> index 0000000000..57ee23ea8c
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
> @@ -0,0 +1,5103 @@
> +; WARNING: do not edit!
> 
> +; Generated from openssl/crypto/aes/asm/aesni-x86_64.pl
> 
> +;
> 
> +; Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved.
> 
> +;
> 
> +; Licensed under the OpenSSL license (the "License").  You may not use
> 
> +; this file except in compliance with the License.  You can obtain a copy
> 
> +; in the file LICENSE in the source distribution or at
> 
> +; https://www.openssl.org/source/license.html
> 
> +
> 
> +default rel
> 
> +%define XMMWORD
> 
> +%define YMMWORD
> 
> +%define ZMMWORD
> 
> +section .text code align=64
> 
> +
> 
> +EXTERN  OPENSSL_ia32cap_P
> 
> +global  aesni_encrypt
> 
> +
> 
> +ALIGN   16
> 
> +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:
> 
> +DB      102,15,56,220,209
> 
> +        dec     eax
> 
> +        movups  xmm1,XMMWORD[r8]
> 
> +        lea     r8,[16+r8]
> 
> +        jnz     NEAR $L$oop_enc1_1
> 
> +DB      102,15,56,221,209
> 
> +        pxor    xmm0,xmm0
> 
> +        pxor    xmm1,xmm1
> 
> +        movups  XMMWORD[rdx],xmm2
> 
> +        pxor    xmm2,xmm2
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +global  aesni_decrypt
> 
> +
> 
> +ALIGN   16
> 
> +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:
> 
> +DB      102,15,56,222,209
> 
> +        dec     eax
> 
> +        movups  xmm1,XMMWORD[r8]
> 
> +        lea     r8,[16+r8]
> 
> +        jnz     NEAR $L$oop_dec1_2
> 
> +DB      102,15,56,223,209
> 
> +        pxor    xmm0,xmm0
> 
> +        pxor    xmm1,xmm1
> 
> +        movups  XMMWORD[rdx],xmm2
> 
> +        pxor    xmm2,xmm2
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +_aesni_encrypt2:
> 
> +
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        shl     eax,4
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +        xorps   xmm3,xmm0
> 
> +        movups  xmm0,XMMWORD[32+rcx]
> 
> +        lea     rcx,[32+rax*1+rcx]
> 
> +        neg     rax
> 
> +        add     rax,16
> 
> +
> 
> +$L$enc_loop2:
> 
> +DB      102,15,56,220,209
> 
> +DB      102,15,56,220,217
> 
> +        movups  xmm1,XMMWORD[rax*1+rcx]
> 
> +        add     rax,32
> 
> +DB      102,15,56,220,208
> 
> +DB      102,15,56,220,216
> 
> +        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
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +_aesni_decrypt2:
> 
> +
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        shl     eax,4
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +        xorps   xmm3,xmm0
> 
> +        movups  xmm0,XMMWORD[32+rcx]
> 
> +        lea     rcx,[32+rax*1+rcx]
> 
> +        neg     rax
> 
> +        add     rax,16
> 
> +
> 
> +$L$dec_loop2:
> 
> +DB      102,15,56,222,209
> 
> +DB      102,15,56,222,217
> 
> +        movups  xmm1,XMMWORD[rax*1+rcx]
> 
> +        add     rax,32
> 
> +DB      102,15,56,222,208
> 
> +DB      102,15,56,222,216
> 
> +        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
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +_aesni_encrypt3:
> 
> +
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        shl     eax,4
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +        xorps   xmm3,xmm0
> 
> +        xorps   xmm4,xmm0
> 
> +        movups  xmm0,XMMWORD[32+rcx]
> 
> +        lea     rcx,[32+rax*1+rcx]
> 
> +        neg     rax
> 
> +        add     rax,16
> 
> +
> 
> +$L$enc_loop3:
> 
> +DB      102,15,56,220,209
> 
> +DB      102,15,56,220,217
> 
> +DB      102,15,56,220,225
> 
> +        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[((-16))+rax*1+rcx]
> 
> +        jnz     NEAR $L$enc_loop3
> 
> +
> 
> +DB      102,15,56,220,209
> 
> +DB      102,15,56,220,217
> 
> +DB      102,15,56,220,225
> 
> +DB      102,15,56,221,208
> 
> +DB      102,15,56,221,216
> 
> +DB      102,15,56,221,224
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +_aesni_decrypt3:
> 
> +
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        shl     eax,4
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +        xorps   xmm3,xmm0
> 
> +        xorps   xmm4,xmm0
> 
> +        movups  xmm0,XMMWORD[32+rcx]
> 
> +        lea     rcx,[32+rax*1+rcx]
> 
> +        neg     rax
> 
> +        add     rax,16
> 
> +
> 
> +$L$dec_loop3:
> 
> +DB      102,15,56,222,209
> 
> +DB      102,15,56,222,217
> 
> +DB      102,15,56,222,225
> 
> +        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[((-16))+rax*1+rcx]
> 
> +        jnz     NEAR $L$dec_loop3
> 
> +
> 
> +DB      102,15,56,222,209
> 
> +DB      102,15,56,222,217
> 
> +DB      102,15,56,222,225
> 
> +DB      102,15,56,223,208
> 
> +DB      102,15,56,223,216
> 
> +DB      102,15,56,223,224
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +_aesni_encrypt4:
> 
> +
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        shl     eax,4
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +        xorps   xmm3,xmm0
> 
> +        xorps   xmm4,xmm0
> 
> +        xorps   xmm5,xmm0
> 
> +        movups  xmm0,XMMWORD[32+rcx]
> 
> +        lea     rcx,[32+rax*1+rcx]
> 
> +        neg     rax
> 
> +DB      0x0f,0x1f,0x00
> 
> +        add     rax,16
> 
> +
> 
> +$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[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[((-16))+rax*1+rcx]
> 
> +        jnz     NEAR $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
> 
> +DB      102,15,56,221,208
> 
> +DB      102,15,56,221,216
> 
> +DB      102,15,56,221,224
> 
> +DB      102,15,56,221,232
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +_aesni_decrypt4:
> 
> +
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        shl     eax,4
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +        xorps   xmm3,xmm0
> 
> +        xorps   xmm4,xmm0
> 
> +        xorps   xmm5,xmm0
> 
> +        movups  xmm0,XMMWORD[32+rcx]
> 
> +        lea     rcx,[32+rax*1+rcx]
> 
> +        neg     rax
> 
> +DB      0x0f,0x1f,0x00
> 
> +        add     rax,16
> 
> +
> 
> +$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[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[((-16))+rax*1+rcx]
> 
> +        jnz     NEAR $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
> 
> +DB      102,15,56,223,208
> 
> +DB      102,15,56,223,216
> 
> +DB      102,15,56,223,224
> 
> +DB      102,15,56,223,232
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +_aesni_encrypt6:
> 
> +
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        shl     eax,4
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +        pxor    xmm3,xmm0
> 
> +        pxor    xmm4,xmm0
> 
> +DB      102,15,56,220,209
> 
> +        lea     rcx,[32+rax*1+rcx]
> 
> +        neg     rax
> 
> +DB      102,15,56,220,217
> 
> +        pxor    xmm5,xmm0
> 
> +        pxor    xmm6,xmm0
> 
> +DB      102,15,56,220,225
> 
> +        pxor    xmm7,xmm0
> 
> +        movups  xmm0,XMMWORD[rax*1+rcx]
> 
> +        add     rax,16
> 
> +        jmp     NEAR $L$enc_loop6_enter
> 
> +ALIGN   16
> 
> +$L$enc_loop6:
> 
> +DB      102,15,56,220,209
> 
> +DB      102,15,56,220,217
> 
> +DB      102,15,56,220,225
> 
> +$L$enc_loop6_enter:
> 
> +DB      102,15,56,220,233
> 
> +DB      102,15,56,220,241
> 
> +DB      102,15,56,220,249
> 
> +        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
> 
> +DB      102,15,56,220,240
> 
> +DB      102,15,56,220,248
> 
> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> 
> +        jnz     NEAR $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
> 
> +DB      102,15,56,221,208
> 
> +DB      102,15,56,221,216
> 
> +DB      102,15,56,221,224
> 
> +DB      102,15,56,221,232
> 
> +DB      102,15,56,221,240
> 
> +DB      102,15,56,221,248
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +_aesni_decrypt6:
> 
> +
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        shl     eax,4
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +        pxor    xmm3,xmm0
> 
> +        pxor    xmm4,xmm0
> 
> +DB      102,15,56,222,209
> 
> +        lea     rcx,[32+rax*1+rcx]
> 
> +        neg     rax
> 
> +DB      102,15,56,222,217
> 
> +        pxor    xmm5,xmm0
> 
> +        pxor    xmm6,xmm0
> 
> +DB      102,15,56,222,225
> 
> +        pxor    xmm7,xmm0
> 
> +        movups  xmm0,XMMWORD[rax*1+rcx]
> 
> +        add     rax,16
> 
> +        jmp     NEAR $L$dec_loop6_enter
> 
> +ALIGN   16
> 
> +$L$dec_loop6:
> 
> +DB      102,15,56,222,209
> 
> +DB      102,15,56,222,217
> 
> +DB      102,15,56,222,225
> 
> +$L$dec_loop6_enter:
> 
> +DB      102,15,56,222,233
> 
> +DB      102,15,56,222,241
> 
> +DB      102,15,56,222,249
> 
> +        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
> 
> +DB      102,15,56,222,240
> 
> +DB      102,15,56,222,248
> 
> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> 
> +        jnz     NEAR $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
> 
> +DB      102,15,56,223,208
> 
> +DB      102,15,56,223,216
> 
> +DB      102,15,56,223,224
> 
> +DB      102,15,56,223,232
> 
> +DB      102,15,56,223,240
> 
> +DB      102,15,56,223,248
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +_aesni_encrypt8:
> 
> +
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        shl     eax,4
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +        xorps   xmm3,xmm0
> 
> +        pxor    xmm4,xmm0
> 
> +        pxor    xmm5,xmm0
> 
> +        pxor    xmm6,xmm0
> 
> +        lea     rcx,[32+rax*1+rcx]
> 
> +        neg     rax
> 
> +DB      102,15,56,220,209
> 
> +        pxor    xmm7,xmm0
> 
> +        pxor    xmm8,xmm0
> 
> +DB      102,15,56,220,217
> 
> +        pxor    xmm9,xmm0
> 
> +        movups  xmm0,XMMWORD[rax*1+rcx]
> 
> +        add     rax,16
> 
> +        jmp     NEAR $L$enc_loop8_inner
> 
> +ALIGN   16
> 
> +$L$enc_loop8:
> 
> +DB      102,15,56,220,209
> 
> +DB      102,15,56,220,217
> 
> +$L$enc_loop8_inner:
> 
> +DB      102,15,56,220,225
> 
> +DB      102,15,56,220,233
> 
> +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
> 
> +$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
> 
> +DB      102,15,56,220,224
> 
> +DB      102,15,56,220,232
> 
> +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[((-16))+rax*1+rcx]
> 
> +        jnz     NEAR $L$enc_loop8
> 
> +
> 
> +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
> 
> +DB      102,68,15,56,220,193
> 
> +DB      102,68,15,56,220,201
> 
> +DB      102,15,56,221,208
> 
> +DB      102,15,56,221,216
> 
> +DB      102,15,56,221,224
> 
> +DB      102,15,56,221,232
> 
> +DB      102,15,56,221,240
> 
> +DB      102,15,56,221,248
> 
> +DB      102,68,15,56,221,192
> 
> +DB      102,68,15,56,221,200
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +_aesni_decrypt8:
> 
> +
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        shl     eax,4
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +        xorps   xmm3,xmm0
> 
> +        pxor    xmm4,xmm0
> 
> +        pxor    xmm5,xmm0
> 
> +        pxor    xmm6,xmm0
> 
> +        lea     rcx,[32+rax*1+rcx]
> 
> +        neg     rax
> 
> +DB      102,15,56,222,209
> 
> +        pxor    xmm7,xmm0
> 
> +        pxor    xmm8,xmm0
> 
> +DB      102,15,56,222,217
> 
> +        pxor    xmm9,xmm0
> 
> +        movups  xmm0,XMMWORD[rax*1+rcx]
> 
> +        add     rax,16
> 
> +        jmp     NEAR $L$dec_loop8_inner
> 
> +ALIGN   16
> 
> +$L$dec_loop8:
> 
> +DB      102,15,56,222,209
> 
> +DB      102,15,56,222,217
> 
> +$L$dec_loop8_inner:
> 
> +DB      102,15,56,222,225
> 
> +DB      102,15,56,222,233
> 
> +DB      102,15,56,222,241
> 
> +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[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
> 
> +DB      102,15,56,222,240
> 
> +DB      102,15,56,222,248
> 
> +DB      102,68,15,56,222,192
> 
> +DB      102,68,15,56,222,200
> 
> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> 
> +        jnz     NEAR $L$dec_loop8
> 
> +
> 
> +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
> 
> +DB      102,68,15,56,222,193
> 
> +DB      102,68,15,56,222,201
> 
> +DB      102,15,56,223,208
> 
> +DB      102,15,56,223,216
> 
> +DB      102,15,56,223,224
> 
> +DB      102,15,56,223,232
> 
> +DB      102,15,56,223,240
> 
> +DB      102,15,56,223,248
> 
> +DB      102,68,15,56,223,192
> 
> +DB      102,68,15,56,223,200
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +global  aesni_ecb_encrypt
> 
> +
> 
> +ALIGN   16
> 
> +aesni_ecb_encrypt:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_aesni_ecb_encrypt:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +        mov     rcx,r9
> 
> +        mov     r8,QWORD[40+rsp]
> 
> +
> 
> +
> 
> +
> 
> +        lea     rsp,[((-88))+rsp]
> 
> +        movaps  XMMWORD[rsp],xmm6
> 
> +        movaps  XMMWORD[16+rsp],xmm7
> 
> +        movaps  XMMWORD[32+rsp],xmm8
> 
> +        movaps  XMMWORD[48+rsp],xmm9
> 
> +$L$ecb_enc_body:
> 
> +        and     rdx,-16
> 
> +        jz      NEAR $L$ecb_ret
> 
> +
> 
> +        mov     eax,DWORD[240+rcx]
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        mov     r11,rcx
> 
> +        mov     r10d,eax
> 
> +        test    r8d,r8d
> 
> +        jz      NEAR $L$ecb_decrypt
> 
> +
> 
> +        cmp     rdx,0x80
> 
> +        jb      NEAR $L$ecb_enc_tail
> 
> +
> 
> +        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[rsi],xmm2
> 
> +        mov     rcx,r11
> 
> +        movdqu  xmm2,XMMWORD[rdi]
> 
> +        mov     eax,r10d
> 
> +        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,0x80
> 
> +        jnc     NEAR $L$ecb_enc_loop8
> 
> +
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        mov     rcx,r11
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        mov     eax,r10d
> 
> +        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[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]
> 
> +        xorps   xmm9,xmm9
> 
> +        call    _aesni_encrypt8
> 
> +        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[rcx]
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        lea     rcx,[32+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +$L$oop_enc1_3:
> 
> +DB      102,15,56,220,209
> 
> +        dec     eax
> 
> +        movups  xmm1,XMMWORD[rcx]
> 
> +        lea     rcx,[16+rcx]
> 
> +        jnz     NEAR $L$oop_enc1_3
> 
> +DB      102,15,56,221,209
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        jmp     NEAR $L$ecb_ret
> 
> +ALIGN   16
> 
> +$L$ecb_enc_two:
> 
> +        call    _aesni_encrypt2
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        jmp     NEAR $L$ecb_ret
> 
> +ALIGN   16
> 
> +$L$ecb_enc_three:
> 
> +        call    _aesni_encrypt3
> 
> +        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:
> 
> +        call    _aesni_encrypt4
> 
> +        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:
> 
> +        xorps   xmm7,xmm7
> 
> +        call    _aesni_encrypt6
> 
> +        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:
> 
> +        call    _aesni_encrypt6
> 
> +        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,0x80
> 
> +        jb      NEAR $L$ecb_dec_tail
> 
> +
> 
> +        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[rsi],xmm2
> 
> +        mov     rcx,r11
> 
> +        movdqu  xmm2,XMMWORD[rdi]
> 
> +        mov     eax,r10d
> 
> +        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[r11]
> 
> +        sub     rdx,0x80
> 
> +        jnc     NEAR $L$ecb_dec_loop8
> 
> +
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm2,xmm2
> 
> +        mov     rcx,r11
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        pxor    xmm3,xmm3
> 
> +        mov     eax,r10d
> 
> +        movups  XMMWORD[32+rsi],xmm4
> 
> +        pxor    xmm4,xmm4
> 
> +        movups  XMMWORD[48+rsi],xmm5
> 
> +        pxor    xmm5,xmm5
> 
> +        movups  XMMWORD[64+rsi],xmm6
> 
> +        pxor    xmm6,xmm6
> 
> +        movups  XMMWORD[80+rsi],xmm7
> 
> +        pxor    xmm7,xmm7
> 
> +        movups  XMMWORD[96+rsi],xmm8
> 
> +        pxor    xmm8,xmm8
> 
> +        movups  XMMWORD[112+rsi],xmm9
> 
> +        pxor    xmm9,xmm9
> 
> +        lea     rsi,[128+rsi]
> 
> +        add     rdx,0x80
> 
> +        jz      NEAR $L$ecb_ret
> 
> +
> 
> +$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]
> 
> +        xorps   xmm9,xmm9
> 
> +        call    _aesni_decrypt8
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm2,xmm2
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        pxor    xmm3,xmm3
> 
> +        movups  XMMWORD[32+rsi],xmm4
> 
> +        pxor    xmm4,xmm4
> 
> +        movups  XMMWORD[48+rsi],xmm5
> 
> +        pxor    xmm5,xmm5
> 
> +        movups  XMMWORD[64+rsi],xmm6
> 
> +        pxor    xmm6,xmm6
> 
> +        movups  XMMWORD[80+rsi],xmm7
> 
> +        pxor    xmm7,xmm7
> 
> +        movups  XMMWORD[96+rsi],xmm8
> 
> +        pxor    xmm8,xmm8
> 
> +        pxor    xmm9,xmm9
> 
> +        jmp     NEAR $L$ecb_ret
> 
> +ALIGN   16
> 
> +$L$ecb_dec_one:
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        lea     rcx,[32+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +$L$oop_dec1_4:
> 
> +DB      102,15,56,222,209
> 
> +        dec     eax
> 
> +        movups  xmm1,XMMWORD[rcx]
> 
> +        lea     rcx,[16+rcx]
> 
> +        jnz     NEAR $L$oop_dec1_4
> 
> +DB      102,15,56,223,209
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm2,xmm2
> 
> +        jmp     NEAR $L$ecb_ret
> 
> +ALIGN   16
> 
> +$L$ecb_dec_two:
> 
> +        call    _aesni_decrypt2
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm2,xmm2
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        pxor    xmm3,xmm3
> 
> +        jmp     NEAR $L$ecb_ret
> 
> +ALIGN   16
> 
> +$L$ecb_dec_three:
> 
> +        call    _aesni_decrypt3
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm2,xmm2
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        pxor    xmm3,xmm3
> 
> +        movups  XMMWORD[32+rsi],xmm4
> 
> +        pxor    xmm4,xmm4
> 
> +        jmp     NEAR $L$ecb_ret
> 
> +ALIGN   16
> 
> +$L$ecb_dec_four:
> 
> +        call    _aesni_decrypt4
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm2,xmm2
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        pxor    xmm3,xmm3
> 
> +        movups  XMMWORD[32+rsi],xmm4
> 
> +        pxor    xmm4,xmm4
> 
> +        movups  XMMWORD[48+rsi],xmm5
> 
> +        pxor    xmm5,xmm5
> 
> +        jmp     NEAR $L$ecb_ret
> 
> +ALIGN   16
> 
> +$L$ecb_dec_five:
> 
> +        xorps   xmm7,xmm7
> 
> +        call    _aesni_decrypt6
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm2,xmm2
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        pxor    xmm3,xmm3
> 
> +        movups  XMMWORD[32+rsi],xmm4
> 
> +        pxor    xmm4,xmm4
> 
> +        movups  XMMWORD[48+rsi],xmm5
> 
> +        pxor    xmm5,xmm5
> 
> +        movups  XMMWORD[64+rsi],xmm6
> 
> +        pxor    xmm6,xmm6
> 
> +        pxor    xmm7,xmm7
> 
> +        jmp     NEAR $L$ecb_ret
> 
> +ALIGN   16
> 
> +$L$ecb_dec_six:
> 
> +        call    _aesni_decrypt6
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm2,xmm2
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        pxor    xmm3,xmm3
> 
> +        movups  XMMWORD[32+rsi],xmm4
> 
> +        pxor    xmm4,xmm4
> 
> +        movups  XMMWORD[48+rsi],xmm5
> 
> +        pxor    xmm5,xmm5
> 
> +        movups  XMMWORD[64+rsi],xmm6
> 
> +        pxor    xmm6,xmm6
> 
> +        movups  XMMWORD[80+rsi],xmm7
> 
> +        pxor    xmm7,xmm7
> 
> +
> 
> +$L$ecb_ret:
> 
> +        xorps   xmm0,xmm0
> 
> +        pxor    xmm1,xmm1
> 
> +        movaps  xmm6,XMMWORD[rsp]
> 
> +        movaps  XMMWORD[rsp],xmm0
> 
> +        movaps  xmm7,XMMWORD[16+rsp]
> 
> +        movaps  XMMWORD[16+rsp],xmm0
> 
> +        movaps  xmm8,XMMWORD[32+rsp]
> 
> +        movaps  XMMWORD[32+rsp],xmm0
> 
> +        movaps  xmm9,XMMWORD[48+rsp]
> 
> +        movaps  XMMWORD[48+rsp],xmm0
> 
> +        lea     rsp,[88+rsp]
> 
> +$L$ecb_enc_ret:
> 
> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> 
> +        mov     rsi,QWORD[16+rsp]
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +$L$SEH_end_aesni_ecb_encrypt:
> 
> +global  aesni_ccm64_encrypt_blocks
> 
> +
> 
> +ALIGN   16
> 
> +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:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +        mov     rcx,r9
> 
> +        mov     r8,QWORD[40+rsp]
> 
> +        mov     r9,QWORD[48+rsp]
> 
> +
> 
> +
> 
> +
> 
> +        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,[rcx]
> 
> +        movdqu  xmm3,XMMWORD[r9]
> 
> +        movdqa  xmm2,xmm6
> 
> +        lea     rcx,[32+rax*1+rcx]
> 
> +DB      102,15,56,0,247
> 
> +        sub     r10,rax
> 
> +        jmp     NEAR $L$ccm64_enc_outer
> 
> +ALIGN   16
> 
> +$L$ccm64_enc_outer:
> 
> +        movups  xmm0,XMMWORD[r11]
> 
> +        mov     rax,r10
> 
> +        movups  xmm8,XMMWORD[rdi]
> 
> +
> 
> +        xorps   xmm2,xmm0
> 
> +        movups  xmm1,XMMWORD[16+r11]
> 
> +        xorps   xmm0,xmm8
> 
> +        xorps   xmm3,xmm0
> 
> +        movups  xmm0,XMMWORD[32+r11]
> 
> +
> 
> +$L$ccm64_enc2_loop:
> 
> +DB      102,15,56,220,209
> 
> +DB      102,15,56,220,217
> 
> +        movups  xmm1,XMMWORD[rax*1+rcx]
> 
> +        add     rax,32
> 
> +DB      102,15,56,220,208
> 
> +DB      102,15,56,220,216
> 
> +        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
> 
> +        dec     rdx
> 
> +DB      102,15,56,221,208
> 
> +DB      102,15,56,221,216
> 
> +
> 
> +        lea     rdi,[16+rdi]
> 
> +        xorps   xmm8,xmm2
> 
> +        movdqa  xmm2,xmm6
> 
> +        movups  XMMWORD[rsi],xmm8
> 
> +DB      102,15,56,0,215
> 
> +        lea     rsi,[16+rsi]
> 
> +        jnz     NEAR $L$ccm64_enc_outer
> 
> +
> 
> +        pxor    xmm0,xmm0
> 
> +        pxor    xmm1,xmm1
> 
> +        pxor    xmm2,xmm2
> 
> +        movups  XMMWORD[r9],xmm3
> 
> +        pxor    xmm3,xmm3
> 
> +        pxor    xmm8,xmm8
> 
> +        pxor    xmm6,xmm6
> 
> +        movaps  xmm6,XMMWORD[rsp]
> 
> +        movaps  XMMWORD[rsp],xmm0
> 
> +        movaps  xmm7,XMMWORD[16+rsp]
> 
> +        movaps  XMMWORD[16+rsp],xmm0
> 
> +        movaps  xmm8,XMMWORD[32+rsp]
> 
> +        movaps  XMMWORD[32+rsp],xmm0
> 
> +        movaps  xmm9,XMMWORD[48+rsp]
> 
> +        movaps  XMMWORD[48+rsp],xmm0
> 
> +        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:
> 
> +global  aesni_ccm64_decrypt_blocks
> 
> +
> 
> +ALIGN   16
> 
> +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:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +        mov     rcx,r9
> 
> +        mov     r8,QWORD[40+rsp]
> 
> +        mov     r9,QWORD[48+rsp]
> 
> +
> 
> +
> 
> +
> 
> +        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[rcx]
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        lea     rcx,[32+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +$L$oop_enc1_5:
> 
> +DB      102,15,56,220,209
> 
> +        dec     eax
> 
> +        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[rdi]
> 
> +        paddq   xmm6,xmm9
> 
> +        lea     rdi,[16+rdi]
> 
> +        sub     rax,r10
> 
> +        lea     rcx,[32+r10*1+r11]
> 
> +        mov     r10,rax
> 
> +        jmp     NEAR $L$ccm64_dec_outer
> 
> +ALIGN   16
> 
> +$L$ccm64_dec_outer:
> 
> +        xorps   xmm8,xmm2
> 
> +        movdqa  xmm2,xmm6
> 
> +        movups  XMMWORD[rsi],xmm8
> 
> +        lea     rsi,[16+rsi]
> 
> +DB      102,15,56,0,215
> 
> +
> 
> +        sub     rdx,1
> 
> +        jz      NEAR $L$ccm64_dec_break
> 
> +
> 
> +        movups  xmm0,XMMWORD[r11]
> 
> +        mov     rax,r10
> 
> +        movups  xmm1,XMMWORD[16+r11]
> 
> +        xorps   xmm8,xmm0
> 
> +        xorps   xmm2,xmm0
> 
> +        xorps   xmm3,xmm8
> 
> +        movups  xmm0,XMMWORD[32+r11]
> 
> +        jmp     NEAR $L$ccm64_dec2_loop
> 
> +ALIGN   16
> 
> +$L$ccm64_dec2_loop:
> 
> +DB      102,15,56,220,209
> 
> +DB      102,15,56,220,217
> 
> +        movups  xmm1,XMMWORD[rax*1+rcx]
> 
> +        add     rax,32
> 
> +DB      102,15,56,220,208
> 
> +DB      102,15,56,220,216
> 
> +        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,[16+rdi]
> 
> +        jmp     NEAR $L$ccm64_dec_outer
> 
> +
> 
> +ALIGN   16
> 
> +$L$ccm64_dec_break:
> 
> +
> 
> +        mov     eax,DWORD[240+r11]
> 
> +        movups  xmm0,XMMWORD[r11]
> 
> +        movups  xmm1,XMMWORD[16+r11]
> 
> +        xorps   xmm8,xmm0
> 
> +        lea     r11,[32+r11]
> 
> +        xorps   xmm3,xmm8
> 
> +$L$oop_enc1_6:
> 
> +DB      102,15,56,220,217
> 
> +        dec     eax
> 
> +        movups  xmm1,XMMWORD[r11]
> 
> +        lea     r11,[16+r11]
> 
> +        jnz     NEAR $L$oop_enc1_6
> 
> +DB      102,15,56,221,217
> 
> +        pxor    xmm0,xmm0
> 
> +        pxor    xmm1,xmm1
> 
> +        pxor    xmm2,xmm2
> 
> +        movups  XMMWORD[r9],xmm3
> 
> +        pxor    xmm3,xmm3
> 
> +        pxor    xmm8,xmm8
> 
> +        pxor    xmm6,xmm6
> 
> +        movaps  xmm6,XMMWORD[rsp]
> 
> +        movaps  XMMWORD[rsp],xmm0
> 
> +        movaps  xmm7,XMMWORD[16+rsp]
> 
> +        movaps  XMMWORD[16+rsp],xmm0
> 
> +        movaps  xmm8,XMMWORD[32+rsp]
> 
> +        movaps  XMMWORD[32+rsp],xmm0
> 
> +        movaps  xmm9,XMMWORD[48+rsp]
> 
> +        movaps  XMMWORD[48+rsp],xmm0
> 
> +        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:
> 
> +global  aesni_ctr32_encrypt_blocks
> 
> +
> 
> +ALIGN   16
> 
> +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:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +        mov     rcx,r9
> 
> +        mov     r8,QWORD[40+rsp]
> 
> +
> 
> +
> 
> +
> 
> +        cmp     rdx,1
> 
> +        jne     NEAR $L$ctr32_bulk
> 
> +
> 
> +
> 
> +
> 
> +        movups  xmm2,XMMWORD[r8]
> 
> +        movups  xmm3,XMMWORD[rdi]
> 
> +        mov     edx,DWORD[240+rcx]
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        lea     rcx,[32+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +$L$oop_enc1_7:
> 
> +DB      102,15,56,220,209
> 
> +        dec     edx
> 
> +        movups  xmm1,XMMWORD[rcx]
> 
> +        lea     rcx,[16+rcx]
> 
> +        jnz     NEAR $L$oop_enc1_7
> 
> +DB      102,15,56,221,209
> 
> +        pxor    xmm0,xmm0
> 
> +        pxor    xmm1,xmm1
> 
> +        xorps   xmm2,xmm3
> 
> +        pxor    xmm3,xmm3
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        xorps   xmm2,xmm2
> 
> +        jmp     NEAR $L$ctr32_epilogue
> 
> +
> 
> +ALIGN   16
> 
> +$L$ctr32_bulk:
> 
> +        lea     r11,[rsp]
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        sub     rsp,288
> 
> +        and     rsp,-16
> 
> +        movaps  XMMWORD[(-168)+r11],xmm6
> 
> +        movaps  XMMWORD[(-152)+r11],xmm7
> 
> +        movaps  XMMWORD[(-136)+r11],xmm8
> 
> +        movaps  XMMWORD[(-120)+r11],xmm9
> 
> +        movaps  XMMWORD[(-104)+r11],xmm10
> 
> +        movaps  XMMWORD[(-88)+r11],xmm11
> 
> +        movaps  XMMWORD[(-72)+r11],xmm12
> 
> +        movaps  XMMWORD[(-56)+r11],xmm13
> 
> +        movaps  XMMWORD[(-40)+r11],xmm14
> 
> +        movaps  XMMWORD[(-24)+r11],xmm15
> 
> +$L$ctr32_body:
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +        movdqu  xmm2,XMMWORD[r8]
> 
> +        movdqu  xmm0,XMMWORD[rcx]
> 
> +        mov     r8d,DWORD[12+r8]
> 
> +        pxor    xmm2,xmm0
> 
> +        mov     ebp,DWORD[12+rcx]
> 
> +        movdqa  XMMWORD[rsp],xmm2
> 
> +        bswap   r8d
> 
> +        movdqa  xmm3,xmm2
> 
> +        movdqa  xmm4,xmm2
> 
> +        movdqa  xmm5,xmm2
> 
> +        movdqa  XMMWORD[64+rsp],xmm2
> 
> +        movdqa  XMMWORD[80+rsp],xmm2
> 
> +        movdqa  XMMWORD[96+rsp],xmm2
> 
> +        mov     r10,rdx
> 
> +        movdqa  XMMWORD[112+rsp],xmm2
> 
> +
> 
> +        lea     rax,[1+r8]
> 
> +        lea     rdx,[2+r8]
> 
> +        bswap   eax
> 
> +        bswap   edx
> 
> +        xor     eax,ebp
> 
> +        xor     edx,ebp
> 
> +DB      102,15,58,34,216,3
> 
> +        lea     rax,[3+r8]
> 
> +        movdqa  XMMWORD[16+rsp],xmm3
> 
> +DB      102,15,58,34,226,3
> 
> +        bswap   eax
> 
> +        mov     rdx,r10
> 
> +        lea     r10,[4+r8]
> 
> +        movdqa  XMMWORD[32+rsp],xmm4
> 
> +        xor     eax,ebp
> 
> +        bswap   r10d
> 
> +DB      102,15,58,34,232,3
> 
> +        xor     r10d,ebp
> 
> +        movdqa  XMMWORD[48+rsp],xmm5
> 
> +        lea     r9,[5+r8]
> 
> +        mov     DWORD[((64+12))+rsp],r10d
> 
> +        bswap   r9d
> 
> +        lea     r10,[6+r8]
> 
> +        mov     eax,DWORD[240+rcx]
> 
> +        xor     r9d,ebp
> 
> +        bswap   r10d
> 
> +        mov     DWORD[((80+12))+rsp],r9d
> 
> +        xor     r10d,ebp
> 
> +        lea     r9,[7+r8]
> 
> +        mov     DWORD[((96+12))+rsp],r10d
> 
> +        bswap   r9d
> 
> +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
> 
> +        xor     r9d,ebp
> 
> +        and     r10d,71303168
> 
> +        mov     DWORD[((112+12))+rsp],r9d
> 
> +
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +
> 
> +        movdqa  xmm6,XMMWORD[64+rsp]
> 
> +        movdqa  xmm7,XMMWORD[80+rsp]
> 
> +
> 
> +        cmp     rdx,8
> 
> +        jb      NEAR $L$ctr32_tail
> 
> +
> 
> +        sub     rdx,6
> 
> +        cmp     r10d,4194304
> 
> +        je      NEAR $L$ctr32_6x
> 
> +
> 
> +        lea     rcx,[128+rcx]
> 
> +        sub     rdx,2
> 
> +        jmp     NEAR $L$ctr32_loop8
> 
> +
> 
> +ALIGN   16
> 
> +$L$ctr32_6x:
> 
> +        shl     eax,4
> 
> +        mov     r10d,48
> 
> +        bswap   ebp
> 
> +        lea     rcx,[32+rax*1+rcx]
> 
> +        sub     r10,rax
> 
> +        jmp     NEAR $L$ctr32_loop6
> 
> +
> 
> +ALIGN   16
> 
> +$L$ctr32_loop6:
> 
> +        add     r8d,6
> 
> +        movups  xmm0,XMMWORD[((-48))+r10*1+rcx]
> 
> +DB      102,15,56,220,209
> 
> +        mov     eax,r8d
> 
> +        xor     eax,ebp
> 
> +DB      102,15,56,220,217
> 
> +DB      0x0f,0x38,0xf1,0x44,0x24,12
> 
> +        lea     eax,[1+r8]
> 
> +DB      102,15,56,220,225
> 
> +        xor     eax,ebp
> 
> +DB      0x0f,0x38,0xf1,0x44,0x24,28
> 
> +DB      102,15,56,220,233
> 
> +        lea     eax,[2+r8]
> 
> +        xor     eax,ebp
> 
> +DB      102,15,56,220,241
> 
> +DB      0x0f,0x38,0xf1,0x44,0x24,44
> 
> +        lea     eax,[3+r8]
> 
> +DB      102,15,56,220,249
> 
> +        movups  xmm1,XMMWORD[((-32))+r10*1+rcx]
> 
> +        xor     eax,ebp
> 
> +
> 
> +DB      102,15,56,220,208
> 
> +DB      0x0f,0x38,0xf1,0x44,0x24,60
> 
> +        lea     eax,[4+r8]
> 
> +DB      102,15,56,220,216
> 
> +        xor     eax,ebp
> 
> +DB      0x0f,0x38,0xf1,0x44,0x24,76
> 
> +DB      102,15,56,220,224
> 
> +        lea     eax,[5+r8]
> 
> +        xor     eax,ebp
> 
> +DB      102,15,56,220,232
> 
> +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[((-16))+r10*1+rcx]
> 
> +
> 
> +        call    $L$enc_loop6
> 
> +
> 
> +        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[rsp]
> 
> +        pxor    xmm9,xmm3
> 
> +        movaps  xmm3,XMMWORD[16+rsp]
> 
> +        pxor    xmm10,xmm4
> 
> +        movaps  xmm4,XMMWORD[32+rsp]
> 
> +        pxor    xmm11,xmm5
> 
> +        movaps  xmm5,XMMWORD[48+rsp]
> 
> +        pxor    xmm12,xmm6
> 
> +        movaps  xmm6,XMMWORD[64+rsp]
> 
> +        pxor    xmm13,xmm7
> 
> +        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     NEAR $L$ctr32_loop6
> 
> +
> 
> +        add     rdx,6
> 
> +        jz      NEAR $L$ctr32_done
> 
> +
> 
> +        lea     eax,[((-48))+r10]
> 
> +        lea     rcx,[((-80))+r10*1+rcx]
> 
> +        neg     eax
> 
> +        shr     eax,4
> 
> +        jmp     NEAR $L$ctr32_tail
> 
> +
> 
> +ALIGN   32
> 
> +$L$ctr32_loop8:
> 
> +        add     r8d,8
> 
> +        movdqa  xmm8,XMMWORD[96+rsp]
> 
> +DB      102,15,56,220,209
> 
> +        mov     r9d,r8d
> 
> +        movdqa  xmm9,XMMWORD[112+rsp]
> 
> +DB      102,15,56,220,217
> 
> +        bswap   r9d
> 
> +        movups  xmm0,XMMWORD[((32-128))+rcx]
> 
> +DB      102,15,56,220,225
> 
> +        xor     r9d,ebp
> 
> +        nop
> 
> +DB      102,15,56,220,233
> 
> +        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[((48-128))+rcx]
> 
> +        bswap   r9d
> 
> +DB      102,15,56,220,208
> 
> +DB      102,15,56,220,216
> 
> +        xor     r9d,ebp
> 
> +DB      0x66,0x90
> 
> +DB      102,15,56,220,224
> 
> +DB      102,15,56,220,232
> 
> +        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[((64-128))+rcx]
> 
> +        bswap   r9d
> 
> +DB      102,15,56,220,209
> 
> +DB      102,15,56,220,217
> 
> +        xor     r9d,ebp
> 
> +DB      0x66,0x90
> 
> +DB      102,15,56,220,225
> 
> +DB      102,15,56,220,233
> 
> +        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[((80-128))+rcx]
> 
> +        bswap   r9d
> 
> +DB      102,15,56,220,208
> 
> +DB      102,15,56,220,216
> 
> +        xor     r9d,ebp
> 
> +DB      0x66,0x90
> 
> +DB      102,15,56,220,224
> 
> +DB      102,15,56,220,232
> 
> +        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[((96-128))+rcx]
> 
> +        bswap   r9d
> 
> +DB      102,15,56,220,209
> 
> +DB      102,15,56,220,217
> 
> +        xor     r9d,ebp
> 
> +DB      0x66,0x90
> 
> +DB      102,15,56,220,225
> 
> +DB      102,15,56,220,233
> 
> +        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[((112-128))+rcx]
> 
> +        bswap   r9d
> 
> +DB      102,15,56,220,208
> 
> +DB      102,15,56,220,216
> 
> +        xor     r9d,ebp
> 
> +DB      0x66,0x90
> 
> +DB      102,15,56,220,224
> 
> +DB      102,15,56,220,232
> 
> +        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[((128-128))+rcx]
> 
> +        bswap   r9d
> 
> +DB      102,15,56,220,209
> 
> +DB      102,15,56,220,217
> 
> +        xor     r9d,ebp
> 
> +DB      0x66,0x90
> 
> +DB      102,15,56,220,225
> 
> +DB      102,15,56,220,233
> 
> +        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[((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,ebp
> 
> +        movdqu  xmm10,XMMWORD[rdi]
> 
> +DB      102,15,56,220,232
> 
> +        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[((160-128))+rcx]
> 
> +
> 
> +        jb      NEAR $L$ctr32_enc_done
> 
> +
> 
> +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
> 
> +DB      102,68,15,56,220,193
> 
> +DB      102,68,15,56,220,201
> 
> +        movups  xmm1,XMMWORD[((176-128))+rcx]
> 
> +
> 
> +DB      102,15,56,220,208
> 
> +DB      102,15,56,220,216
> 
> +DB      102,15,56,220,224
> 
> +DB      102,15,56,220,232
> 
> +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[((192-128))+rcx]
> 
> +        je      NEAR $L$ctr32_enc_done
> 
> +
> 
> +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
> 
> +DB      102,68,15,56,220,193
> 
> +DB      102,68,15,56,220,201
> 
> +        movups  xmm1,XMMWORD[((208-128))+rcx]
> 
> +
> 
> +DB      102,15,56,220,208
> 
> +DB      102,15,56,220,216
> 
> +DB      102,15,56,220,224
> 
> +DB      102,15,56,220,232
> 
> +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[((224-128))+rcx]
> 
> +        jmp     NEAR $L$ctr32_enc_done
> 
> +
> 
> +ALIGN   16
> 
> +$L$ctr32_enc_done:
> 
> +        movdqu  xmm11,XMMWORD[16+rdi]
> 
> +        pxor    xmm10,xmm0
> 
> +        movdqu  xmm12,XMMWORD[32+rdi]
> 
> +        pxor    xmm11,xmm0
> 
> +        movdqu  xmm13,XMMWORD[48+rdi]
> 
> +        pxor    xmm12,xmm0
> 
> +        movdqu  xmm14,XMMWORD[64+rdi]
> 
> +        pxor    xmm13,xmm0
> 
> +        movdqu  xmm15,XMMWORD[80+rdi]
> 
> +        pxor    xmm14,xmm0
> 
> +        pxor    xmm15,xmm0
> 
> +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
> 
> +DB      102,68,15,56,220,193
> 
> +DB      102,68,15,56,220,201
> 
> +        movdqu  xmm1,XMMWORD[96+rdi]
> 
> +        lea     rdi,[128+rdi]
> 
> +
> 
> +DB      102,65,15,56,221,210
> 
> +        pxor    xmm1,xmm0
> 
> +        movdqu  xmm10,XMMWORD[((112-128))+rdi]
> 
> +DB      102,65,15,56,221,219
> 
> +        pxor    xmm10,xmm0
> 
> +        movdqa  xmm11,XMMWORD[rsp]
> 
> +DB      102,65,15,56,221,228
> 
> +DB      102,65,15,56,221,237
> 
> +        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[48+rsp]
> 
> +        movdqa  xmm15,XMMWORD[64+rsp]
> 
> +DB      102,68,15,56,221,193
> 
> +        movdqa  xmm0,XMMWORD[80+rsp]
> 
> +        movups  xmm1,XMMWORD[((16-128))+rcx]
> 
> +DB      102,69,15,56,221,202
> 
> +
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        movdqa  xmm2,xmm11
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        movdqa  xmm3,xmm12
> 
> +        movups  XMMWORD[32+rsi],xmm4
> 
> +        movdqa  xmm4,xmm13
> 
> +        movups  XMMWORD[48+rsi],xmm5
> 
> +        movdqa  xmm5,xmm14
> 
> +        movups  XMMWORD[64+rsi],xmm6
> 
> +        movdqa  xmm6,xmm15
> 
> +        movups  XMMWORD[80+rsi],xmm7
> 
> +        movdqa  xmm7,xmm0
> 
> +        movups  XMMWORD[96+rsi],xmm8
> 
> +        movups  XMMWORD[112+rsi],xmm9
> 
> +        lea     rsi,[128+rsi]
> 
> +
> 
> +        sub     rdx,8
> 
> +        jnc     NEAR $L$ctr32_loop8
> 
> +
> 
> +        add     rdx,8
> 
> +        jz      NEAR $L$ctr32_done
> 
> +        lea     rcx,[((-128))+rcx]
> 
> +
> 
> +$L$ctr32_tail:
> 
> +
> 
> +
> 
> +        lea     rcx,[16+rcx]
> 
> +        cmp     rdx,4
> 
> +        jb      NEAR $L$ctr32_loop3
> 
> +        je      NEAR $L$ctr32_loop4
> 
> +
> 
> +
> 
> +        shl     eax,4
> 
> +        movdqa  xmm8,XMMWORD[96+rsp]
> 
> +        pxor    xmm9,xmm9
> 
> +
> 
> +        movups  xmm0,XMMWORD[16+rcx]
> 
> +DB      102,15,56,220,209
> 
> +DB      102,15,56,220,217
> 
> +        lea     rcx,[((32-16))+rax*1+rcx]
> 
> +        neg     rax
> 
> +DB      102,15,56,220,225
> 
> +        add     rax,16
> 
> +        movups  xmm10,XMMWORD[rdi]
> 
> +DB      102,15,56,220,233
> 
> +DB      102,15,56,220,241
> 
> +        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[48+rdi]
> 
> +        pxor    xmm2,xmm10
> 
> +        movdqu  xmm10,XMMWORD[64+rdi]
> 
> +        pxor    xmm3,xmm11
> 
> +        movdqu  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm4,xmm12
> 
> +        movdqu  XMMWORD[16+rsi],xmm3
> 
> +        pxor    xmm5,xmm13
> 
> +        movdqu  XMMWORD[32+rsi],xmm4
> 
> +        pxor    xmm6,xmm10
> 
> +        movdqu  XMMWORD[48+rsi],xmm5
> 
> +        movdqu  XMMWORD[64+rsi],xmm6
> 
> +        cmp     rdx,6
> 
> +        jb      NEAR $L$ctr32_done
> 
> +
> 
> +        movups  xmm11,XMMWORD[80+rdi]
> 
> +        xorps   xmm7,xmm11
> 
> +        movups  XMMWORD[80+rsi],xmm7
> 
> +        je      NEAR $L$ctr32_done
> 
> +
> 
> +        movups  xmm12,XMMWORD[96+rdi]
> 
> +        xorps   xmm8,xmm12
> 
> +        movups  XMMWORD[96+rsi],xmm8
> 
> +        jmp     NEAR $L$ctr32_done
> 
> +
> 
> +ALIGN   32
> 
> +$L$ctr32_loop4:
> 
> +DB      102,15,56,220,209
> 
> +        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[rcx]
> 
> +        jnz     NEAR $L$ctr32_loop4
> 
> +DB      102,15,56,221,209
> 
> +DB      102,15,56,221,217
> 
> +        movups  xmm10,XMMWORD[rdi]
> 
> +        movups  xmm11,XMMWORD[16+rdi]
> 
> +DB      102,15,56,221,225
> 
> +DB      102,15,56,221,233
> 
> +        movups  xmm12,XMMWORD[32+rdi]
> 
> +        movups  xmm13,XMMWORD[48+rdi]
> 
> +
> 
> +        xorps   xmm2,xmm10
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        xorps   xmm3,xmm11
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        pxor    xmm4,xmm12
> 
> +        movdqu  XMMWORD[32+rsi],xmm4
> 
> +        pxor    xmm5,xmm13
> 
> +        movdqu  XMMWORD[48+rsi],xmm5
> 
> +        jmp     NEAR $L$ctr32_done
> 
> +
> 
> +ALIGN   32
> 
> +$L$ctr32_loop3:
> 
> +DB      102,15,56,220,209
> 
> +        lea     rcx,[16+rcx]
> 
> +        dec     eax
> 
> +DB      102,15,56,220,217
> 
> +DB      102,15,56,220,225
> 
> +        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[rdi]
> 
> +        xorps   xmm2,xmm10
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        cmp     rdx,2
> 
> +        jb      NEAR $L$ctr32_done
> 
> +
> 
> +        movups  xmm11,XMMWORD[16+rdi]
> 
> +        xorps   xmm3,xmm11
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        je      NEAR $L$ctr32_done
> 
> +
> 
> +        movups  xmm12,XMMWORD[32+rdi]
> 
> +        xorps   xmm4,xmm12
> 
> +        movups  XMMWORD[32+rsi],xmm4
> 
> +
> 
> +$L$ctr32_done:
> 
> +        xorps   xmm0,xmm0
> 
> +        xor     ebp,ebp
> 
> +        pxor    xmm1,xmm1
> 
> +        pxor    xmm2,xmm2
> 
> +        pxor    xmm3,xmm3
> 
> +        pxor    xmm4,xmm4
> 
> +        pxor    xmm5,xmm5
> 
> +        movaps  xmm6,XMMWORD[((-168))+r11]
> 
> +        movaps  XMMWORD[(-168)+r11],xmm0
> 
> +        movaps  xmm7,XMMWORD[((-152))+r11]
> 
> +        movaps  XMMWORD[(-152)+r11],xmm0
> 
> +        movaps  xmm8,XMMWORD[((-136))+r11]
> 
> +        movaps  XMMWORD[(-136)+r11],xmm0
> 
> +        movaps  xmm9,XMMWORD[((-120))+r11]
> 
> +        movaps  XMMWORD[(-120)+r11],xmm0
> 
> +        movaps  xmm10,XMMWORD[((-104))+r11]
> 
> +        movaps  XMMWORD[(-104)+r11],xmm0
> 
> +        movaps  xmm11,XMMWORD[((-88))+r11]
> 
> +        movaps  XMMWORD[(-88)+r11],xmm0
> 
> +        movaps  xmm12,XMMWORD[((-72))+r11]
> 
> +        movaps  XMMWORD[(-72)+r11],xmm0
> 
> +        movaps  xmm13,XMMWORD[((-56))+r11]
> 
> +        movaps  XMMWORD[(-56)+r11],xmm0
> 
> +        movaps  xmm14,XMMWORD[((-40))+r11]
> 
> +        movaps  XMMWORD[(-40)+r11],xmm0
> 
> +        movaps  xmm15,XMMWORD[((-24))+r11]
> 
> +        movaps  XMMWORD[(-24)+r11],xmm0
> 
> +        movaps  XMMWORD[rsp],xmm0
> 
> +        movaps  XMMWORD[16+rsp],xmm0
> 
> +        movaps  XMMWORD[32+rsp],xmm0
> 
> +        movaps  XMMWORD[48+rsp],xmm0
> 
> +        movaps  XMMWORD[64+rsp],xmm0
> 
> +        movaps  XMMWORD[80+rsp],xmm0
> 
> +        movaps  XMMWORD[96+rsp],xmm0
> 
> +        movaps  XMMWORD[112+rsp],xmm0
> 
> +        mov     rbp,QWORD[((-8))+r11]
> 
> +
> 
> +        lea     rsp,[r11]
> 
> +
> 
> +$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:
> 
> +global  aesni_xts_encrypt
> 
> +
> 
> +ALIGN   16
> 
> +aesni_xts_encrypt:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_aesni_xts_encrypt:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +        mov     rcx,r9
> 
> +        mov     r8,QWORD[40+rsp]
> 
> +        mov     r9,QWORD[48+rsp]
> 
> +
> 
> +
> 
> +
> 
> +        lea     r11,[rsp]
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        sub     rsp,272
> 
> +        and     rsp,-16
> 
> +        movaps  XMMWORD[(-168)+r11],xmm6
> 
> +        movaps  XMMWORD[(-152)+r11],xmm7
> 
> +        movaps  XMMWORD[(-136)+r11],xmm8
> 
> +        movaps  XMMWORD[(-120)+r11],xmm9
> 
> +        movaps  XMMWORD[(-104)+r11],xmm10
> 
> +        movaps  XMMWORD[(-88)+r11],xmm11
> 
> +        movaps  XMMWORD[(-72)+r11],xmm12
> 
> +        movaps  XMMWORD[(-56)+r11],xmm13
> 
> +        movaps  XMMWORD[(-40)+r11],xmm14
> 
> +        movaps  XMMWORD[(-24)+r11],xmm15
> 
> +$L$xts_enc_body:
> 
> +        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:
> 
> +DB      102,15,56,220,209
> 
> +        dec     eax
> 
> +        movups  xmm1,XMMWORD[r8]
> 
> +        lea     r8,[16+r8]
> 
> +        jnz     NEAR $L$oop_enc1_8
> 
> +DB      102,15,56,221,209
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        mov     rbp,rcx
> 
> +        mov     eax,r10d
> 
> +        shl     r10d,4
> 
> +        mov     r9,rdx
> 
> +        and     rdx,-16
> 
> +
> 
> +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> 
> +
> 
> +        movdqa  xmm8,XMMWORD[$L$xts_magic]
> 
> +        movdqa  xmm15,xmm2
> 
> +        pshufd  xmm9,xmm2,0x5f
> 
> +        pxor    xmm1,xmm0
> 
> +        movdqa  xmm14,xmm9
> 
> +        paddd   xmm9,xmm9
> 
> +        movdqa  xmm10,xmm15
> 
> +        psrad   xmm14,31
> 
> +        paddq   xmm15,xmm15
> 
> +        pand    xmm14,xmm8
> 
> +        pxor    xmm10,xmm0
> 
> +        pxor    xmm15,xmm14
> 
> +        movdqa  xmm14,xmm9
> 
> +        paddd   xmm9,xmm9
> 
> +        movdqa  xmm11,xmm15
> 
> +        psrad   xmm14,31
> 
> +        paddq   xmm15,xmm15
> 
> +        pand    xmm14,xmm8
> 
> +        pxor    xmm11,xmm0
> 
> +        pxor    xmm15,xmm14
> 
> +        movdqa  xmm14,xmm9
> 
> +        paddd   xmm9,xmm9
> 
> +        movdqa  xmm12,xmm15
> 
> +        psrad   xmm14,31
> 
> +        paddq   xmm15,xmm15
> 
> +        pand    xmm14,xmm8
> 
> +        pxor    xmm12,xmm0
> 
> +        pxor    xmm15,xmm14
> 
> +        movdqa  xmm14,xmm9
> 
> +        paddd   xmm9,xmm9
> 
> +        movdqa  xmm13,xmm15
> 
> +        psrad   xmm14,31
> 
> +        paddq   xmm15,xmm15
> 
> +        pand    xmm14,xmm8
> 
> +        pxor    xmm13,xmm0
> 
> +        pxor    xmm15,xmm14
> 
> +        movdqa  xmm14,xmm15
> 
> +        psrad   xmm9,31
> 
> +        paddq   xmm15,xmm15
> 
> +        pand    xmm9,xmm8
> 
> +        pxor    xmm14,xmm0
> 
> +        pxor    xmm15,xmm9
> 
> +        movaps  XMMWORD[96+rsp],xmm1
> 
> +
> 
> +        sub     rdx,16*6
> 
> +        jc      NEAR $L$xts_enc_short
> 
> +
> 
> +        mov     eax,16+96
> 
> +        lea     rcx,[32+r10*1+rbp]
> 
> +        sub     rax,r10
> 
> +        movups  xmm1,XMMWORD[16+rbp]
> 
> +        mov     r10,rax
> 
> +        lea     r8,[$L$xts_magic]
> 
> +        jmp     NEAR $L$xts_enc_grandloop
> 
> +
> 
> +ALIGN   32
> 
> +$L$xts_enc_grandloop:
> 
> +        movdqu  xmm2,XMMWORD[rdi]
> 
> +        movdqa  xmm8,xmm0
> 
> +        movdqu  xmm3,XMMWORD[16+rdi]
> 
> +        pxor    xmm2,xmm10
> 
> +        movdqu  xmm4,XMMWORD[32+rdi]
> 
> +        pxor    xmm3,xmm11
> 
> +DB      102,15,56,220,209
> 
> +        movdqu  xmm5,XMMWORD[48+rdi]
> 
> +        pxor    xmm4,xmm12
> 
> +DB      102,15,56,220,217
> 
> +        movdqu  xmm6,XMMWORD[64+rdi]
> 
> +        pxor    xmm5,xmm13
> 
> +DB      102,15,56,220,225
> 
> +        movdqu  xmm7,XMMWORD[80+rdi]
> 
> +        pxor    xmm8,xmm15
> 
> +        movdqa  xmm9,XMMWORD[96+rsp]
> 
> +        pxor    xmm6,xmm14
> 
> +DB      102,15,56,220,233
> 
> +        movups  xmm0,XMMWORD[32+rbp]
> 
> +        lea     rdi,[96+rdi]
> 
> +        pxor    xmm7,xmm8
> 
> +
> 
> +        pxor    xmm10,xmm9
> 
> +DB      102,15,56,220,241
> 
> +        pxor    xmm11,xmm9
> 
> +        movdqa  XMMWORD[rsp],xmm10
> 
> +DB      102,15,56,220,249
> 
> +        movups  xmm1,XMMWORD[48+rbp]
> 
> +        pxor    xmm12,xmm9
> 
> +
> 
> +DB      102,15,56,220,208
> 
> +        pxor    xmm13,xmm9
> 
> +        movdqa  XMMWORD[16+rsp],xmm11
> 
> +DB      102,15,56,220,216
> 
> +        pxor    xmm14,xmm9
> 
> +        movdqa  XMMWORD[32+rsp],xmm12
> 
> +DB      102,15,56,220,224
> 
> +DB      102,15,56,220,232
> 
> +        pxor    xmm8,xmm9
> 
> +        movdqa  XMMWORD[64+rsp],xmm14
> 
> +DB      102,15,56,220,240
> 
> +DB      102,15,56,220,248
> 
> +        movups  xmm0,XMMWORD[64+rbp]
> 
> +        movdqa  XMMWORD[80+rsp],xmm8
> 
> +        pshufd  xmm9,xmm15,0x5f
> 
> +        jmp     NEAR $L$xts_enc_loop6
> 
> +ALIGN   32
> 
> +$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[((-64))+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
> 
> +DB      102,15,56,220,240
> 
> +DB      102,15,56,220,248
> 
> +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
> 
> +        jnz     NEAR $L$xts_enc_loop6
> 
> +
> 
> +        movdqa  xmm8,XMMWORD[r8]
> 
> +        movdqa  xmm14,xmm9
> 
> +        paddd   xmm9,xmm9
> 
> +DB      102,15,56,220,209
> 
> +        paddq   xmm15,xmm15
> 
> +        psrad   xmm14,31
> 
> +DB      102,15,56,220,217
> 
> +        pand    xmm14,xmm8
> 
> +        movups  xmm10,XMMWORD[rbp]
> 
> +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[((-64))+rcx]
> 
> +
> 
> +        movdqa  xmm14,xmm9
> 
> +DB      102,15,56,220,208
> 
> +        paddd   xmm9,xmm9
> 
> +        pxor    xmm10,xmm15
> 
> +DB      102,15,56,220,216
> 
> +        psrad   xmm14,31
> 
> +        paddq   xmm15,xmm15
> 
> +DB      102,15,56,220,224
> 
> +DB      102,15,56,220,232
> 
> +        pand    xmm14,xmm8
> 
> +        movaps  xmm12,xmm11
> 
> +DB      102,15,56,220,240
> 
> +        pxor    xmm15,xmm14
> 
> +        movdqa  xmm14,xmm9
> 
> +DB      102,15,56,220,248
> 
> +        movups  xmm0,XMMWORD[((-48))+rcx]
> 
> +
> 
> +        paddd   xmm9,xmm9
> 
> +DB      102,15,56,220,209
> 
> +        pxor    xmm11,xmm15
> 
> +        psrad   xmm14,31
> 
> +DB      102,15,56,220,217
> 
> +        paddq   xmm15,xmm15
> 
> +        pand    xmm14,xmm8
> 
> +DB      102,15,56,220,225
> 
> +DB      102,15,56,220,233
> 
> +        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[((-32))+rcx]
> 
> +
> 
> +        paddd   xmm9,xmm9
> 
> +DB      102,15,56,220,208
> 
> +        pxor    xmm12,xmm15
> 
> +        psrad   xmm14,31
> 
> +DB      102,15,56,220,216
> 
> +        paddq   xmm15,xmm15
> 
> +        pand    xmm14,xmm8
> 
> +DB      102,15,56,220,224
> 
> +DB      102,15,56,220,232
> 
> +DB      102,15,56,220,240
> 
> +        pxor    xmm15,xmm14
> 
> +        movaps  xmm14,xmm13
> 
> +DB      102,15,56,220,248
> 
> +
> 
> +        movdqa  xmm0,xmm9
> 
> +        paddd   xmm9,xmm9
> 
> +DB      102,15,56,220,209
> 
> +        pxor    xmm13,xmm15
> 
> +        psrad   xmm0,31
> 
> +DB      102,15,56,220,217
> 
> +        paddq   xmm15,xmm15
> 
> +        pand    xmm0,xmm8
> 
> +DB      102,15,56,220,225
> 
> +DB      102,15,56,220,233
> 
> +        pxor    xmm15,xmm0
> 
> +        movups  xmm0,XMMWORD[rbp]
> 
> +DB      102,15,56,220,241
> 
> +DB      102,15,56,220,249
> 
> +        movups  xmm1,XMMWORD[16+rbp]
> 
> +
> 
> +        pxor    xmm14,xmm15
> 
> +DB      102,15,56,221,84,36,0
> 
> +        psrad   xmm9,31
> 
> +        paddq   xmm15,xmm15
> 
> +DB      102,15,56,221,92,36,16
> 
> +DB      102,15,56,221,100,36,32
> 
> +        pand    xmm9,xmm8
> 
> +        mov     rax,r10
> 
> +DB      102,15,56,221,108,36,48
> 
> +DB      102,15,56,221,116,36,64
> 
> +DB      102,15,56,221,124,36,80
> 
> +        pxor    xmm15,xmm9
> 
> +
> 
> +        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     NEAR $L$xts_enc_grandloop
> 
> +
> 
> +        mov     eax,16+96
> 
> +        sub     eax,r10d
> 
> +        mov     rcx,rbp
> 
> +        shr     eax,4
> 
> +
> 
> +$L$xts_enc_short:
> 
> +
> 
> +        mov     r10d,eax
> 
> +        pxor    xmm10,xmm0
> 
> +        add     rdx,16*6
> 
> +        jz      NEAR $L$xts_enc_done
> 
> +
> 
> +        pxor    xmm11,xmm0
> 
> +        cmp     rdx,0x20
> 
> +        jb      NEAR $L$xts_enc_one
> 
> +        pxor    xmm12,xmm0
> 
> +        je      NEAR $L$xts_enc_two
> 
> +
> 
> +        pxor    xmm13,xmm0
> 
> +        cmp     rdx,0x40
> 
> +        jb      NEAR $L$xts_enc_three
> 
> +        pxor    xmm14,xmm0
> 
> +        je      NEAR $L$xts_enc_four
> 
> +
> 
> +        movdqu  xmm2,XMMWORD[rdi]
> 
> +        movdqu  xmm3,XMMWORD[16+rdi]
> 
> +        movdqu  xmm4,XMMWORD[32+rdi]
> 
> +        pxor    xmm2,xmm10
> 
> +        movdqu  xmm5,XMMWORD[48+rdi]
> 
> +        pxor    xmm3,xmm11
> 
> +        movdqu  xmm6,XMMWORD[64+rdi]
> 
> +        lea     rdi,[80+rdi]
> 
> +        pxor    xmm4,xmm12
> 
> +        pxor    xmm5,xmm13
> 
> +        pxor    xmm6,xmm14
> 
> +        pxor    xmm7,xmm7
> 
> +
> 
> +        call    _aesni_encrypt6
> 
> +
> 
> +        xorps   xmm2,xmm10
> 
> +        movdqa  xmm10,xmm15
> 
> +        xorps   xmm3,xmm11
> 
> +        xorps   xmm4,xmm12
> 
> +        movdqu  XMMWORD[rsi],xmm2
> 
> +        xorps   xmm5,xmm13
> 
> +        movdqu  XMMWORD[16+rsi],xmm3
> 
> +        xorps   xmm6,xmm14
> 
> +        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[rdi]
> 
> +        lea     rdi,[16+rdi]
> 
> +        xorps   xmm2,xmm10
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        lea     rcx,[32+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +$L$oop_enc1_9:
> 
> +DB      102,15,56,220,209
> 
> +        dec     eax
> 
> +        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[rsi],xmm2
> 
> +        lea     rsi,[16+rsi]
> 
> +        jmp     NEAR $L$xts_enc_done
> 
> +
> 
> +ALIGN   16
> 
> +$L$xts_enc_two:
> 
> +        movups  xmm2,XMMWORD[rdi]
> 
> +        movups  xmm3,XMMWORD[16+rdi]
> 
> +        lea     rdi,[32+rdi]
> 
> +        xorps   xmm2,xmm10
> 
> +        xorps   xmm3,xmm11
> 
> +
> 
> +        call    _aesni_encrypt2
> 
> +
> 
> +        xorps   xmm2,xmm10
> 
> +        movdqa  xmm10,xmm12
> 
> +        xorps   xmm3,xmm11
> 
> +        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[rdi]
> 
> +        movups  xmm3,XMMWORD[16+rdi]
> 
> +        movups  xmm4,XMMWORD[32+rdi]
> 
> +        lea     rdi,[48+rdi]
> 
> +        xorps   xmm2,xmm10
> 
> +        xorps   xmm3,xmm11
> 
> +        xorps   xmm4,xmm12
> 
> +
> 
> +        call    _aesni_encrypt3
> 
> +
> 
> +        xorps   xmm2,xmm10
> 
> +        movdqa  xmm10,xmm13
> 
> +        xorps   xmm3,xmm11
> 
> +        xorps   xmm4,xmm12
> 
> +        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[rdi]
> 
> +        movups  xmm3,XMMWORD[16+rdi]
> 
> +        movups  xmm4,XMMWORD[32+rdi]
> 
> +        xorps   xmm2,xmm10
> 
> +        movups  xmm5,XMMWORD[48+rdi]
> 
> +        lea     rdi,[64+rdi]
> 
> +        xorps   xmm3,xmm11
> 
> +        xorps   xmm4,xmm12
> 
> +        xorps   xmm5,xmm13
> 
> +
> 
> +        call    _aesni_encrypt4
> 
> +
> 
> +        pxor    xmm2,xmm10
> 
> +        movdqa  xmm10,xmm14
> 
> +        pxor    xmm3,xmm11
> 
> +        pxor    xmm4,xmm12
> 
> +        movdqu  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm5,xmm13
> 
> +        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:
> 
> +        and     r9,15
> 
> +        jz      NEAR $L$xts_enc_ret
> 
> +        mov     rdx,r9
> 
> +
> 
> +$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     NEAR $L$xts_enc_steal
> 
> +
> 
> +        sub     rsi,r9
> 
> +        mov     rcx,rbp
> 
> +        mov     eax,r10d
> 
> +
> 
> +        movups  xmm2,XMMWORD[((-16))+rsi]
> 
> +        xorps   xmm2,xmm10
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        lea     rcx,[32+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +$L$oop_enc1_10:
> 
> +DB      102,15,56,220,209
> 
> +        dec     eax
> 
> +        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[(-16)+rsi],xmm2
> 
> +
> 
> +$L$xts_enc_ret:
> 
> +        xorps   xmm0,xmm0
> 
> +        pxor    xmm1,xmm1
> 
> +        pxor    xmm2,xmm2
> 
> +        pxor    xmm3,xmm3
> 
> +        pxor    xmm4,xmm4
> 
> +        pxor    xmm5,xmm5
> 
> +        movaps  xmm6,XMMWORD[((-168))+r11]
> 
> +        movaps  XMMWORD[(-168)+r11],xmm0
> 
> +        movaps  xmm7,XMMWORD[((-152))+r11]
> 
> +        movaps  XMMWORD[(-152)+r11],xmm0
> 
> +        movaps  xmm8,XMMWORD[((-136))+r11]
> 
> +        movaps  XMMWORD[(-136)+r11],xmm0
> 
> +        movaps  xmm9,XMMWORD[((-120))+r11]
> 
> +        movaps  XMMWORD[(-120)+r11],xmm0
> 
> +        movaps  xmm10,XMMWORD[((-104))+r11]
> 
> +        movaps  XMMWORD[(-104)+r11],xmm0
> 
> +        movaps  xmm11,XMMWORD[((-88))+r11]
> 
> +        movaps  XMMWORD[(-88)+r11],xmm0
> 
> +        movaps  xmm12,XMMWORD[((-72))+r11]
> 
> +        movaps  XMMWORD[(-72)+r11],xmm0
> 
> +        movaps  xmm13,XMMWORD[((-56))+r11]
> 
> +        movaps  XMMWORD[(-56)+r11],xmm0
> 
> +        movaps  xmm14,XMMWORD[((-40))+r11]
> 
> +        movaps  XMMWORD[(-40)+r11],xmm0
> 
> +        movaps  xmm15,XMMWORD[((-24))+r11]
> 
> +        movaps  XMMWORD[(-24)+r11],xmm0
> 
> +        movaps  XMMWORD[rsp],xmm0
> 
> +        movaps  XMMWORD[16+rsp],xmm0
> 
> +        movaps  XMMWORD[32+rsp],xmm0
> 
> +        movaps  XMMWORD[48+rsp],xmm0
> 
> +        movaps  XMMWORD[64+rsp],xmm0
> 
> +        movaps  XMMWORD[80+rsp],xmm0
> 
> +        movaps  XMMWORD[96+rsp],xmm0
> 
> +        mov     rbp,QWORD[((-8))+r11]
> 
> +
> 
> +        lea     rsp,[r11]
> 
> +
> 
> +$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:
> 
> +global  aesni_xts_decrypt
> 
> +
> 
> +ALIGN   16
> 
> +aesni_xts_decrypt:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_aesni_xts_decrypt:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +        mov     rcx,r9
> 
> +        mov     r8,QWORD[40+rsp]
> 
> +        mov     r9,QWORD[48+rsp]
> 
> +
> 
> +
> 
> +
> 
> +        lea     r11,[rsp]
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        sub     rsp,272
> 
> +        and     rsp,-16
> 
> +        movaps  XMMWORD[(-168)+r11],xmm6
> 
> +        movaps  XMMWORD[(-152)+r11],xmm7
> 
> +        movaps  XMMWORD[(-136)+r11],xmm8
> 
> +        movaps  XMMWORD[(-120)+r11],xmm9
> 
> +        movaps  XMMWORD[(-104)+r11],xmm10
> 
> +        movaps  XMMWORD[(-88)+r11],xmm11
> 
> +        movaps  XMMWORD[(-72)+r11],xmm12
> 
> +        movaps  XMMWORD[(-56)+r11],xmm13
> 
> +        movaps  XMMWORD[(-40)+r11],xmm14
> 
> +        movaps  XMMWORD[(-24)+r11],xmm15
> 
> +$L$xts_dec_body:
> 
> +        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:
> 
> +DB      102,15,56,220,209
> 
> +        dec     eax
> 
> +        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
> 
> +        setnz   al
> 
> +        shl     rax,4
> 
> +        sub     rdx,rax
> 
> +
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        mov     rbp,rcx
> 
> +        mov     eax,r10d
> 
> +        shl     r10d,4
> 
> +        mov     r9,rdx
> 
> +        and     rdx,-16
> 
> +
> 
> +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> 
> +
> 
> +        movdqa  xmm8,XMMWORD[$L$xts_magic]
> 
> +        movdqa  xmm15,xmm2
> 
> +        pshufd  xmm9,xmm2,0x5f
> 
> +        pxor    xmm1,xmm0
> 
> +        movdqa  xmm14,xmm9
> 
> +        paddd   xmm9,xmm9
> 
> +        movdqa  xmm10,xmm15
> 
> +        psrad   xmm14,31
> 
> +        paddq   xmm15,xmm15
> 
> +        pand    xmm14,xmm8
> 
> +        pxor    xmm10,xmm0
> 
> +        pxor    xmm15,xmm14
> 
> +        movdqa  xmm14,xmm9
> 
> +        paddd   xmm9,xmm9
> 
> +        movdqa  xmm11,xmm15
> 
> +        psrad   xmm14,31
> 
> +        paddq   xmm15,xmm15
> 
> +        pand    xmm14,xmm8
> 
> +        pxor    xmm11,xmm0
> 
> +        pxor    xmm15,xmm14
> 
> +        movdqa  xmm14,xmm9
> 
> +        paddd   xmm9,xmm9
> 
> +        movdqa  xmm12,xmm15
> 
> +        psrad   xmm14,31
> 
> +        paddq   xmm15,xmm15
> 
> +        pand    xmm14,xmm8
> 
> +        pxor    xmm12,xmm0
> 
> +        pxor    xmm15,xmm14
> 
> +        movdqa  xmm14,xmm9
> 
> +        paddd   xmm9,xmm9
> 
> +        movdqa  xmm13,xmm15
> 
> +        psrad   xmm14,31
> 
> +        paddq   xmm15,xmm15
> 
> +        pand    xmm14,xmm8
> 
> +        pxor    xmm13,xmm0
> 
> +        pxor    xmm15,xmm14
> 
> +        movdqa  xmm14,xmm15
> 
> +        psrad   xmm9,31
> 
> +        paddq   xmm15,xmm15
> 
> +        pand    xmm9,xmm8
> 
> +        pxor    xmm14,xmm0
> 
> +        pxor    xmm15,xmm9
> 
> +        movaps  XMMWORD[96+rsp],xmm1
> 
> +
> 
> +        sub     rdx,16*6
> 
> +        jc      NEAR $L$xts_dec_short
> 
> +
> 
> +        mov     eax,16+96
> 
> +        lea     rcx,[32+r10*1+rbp]
> 
> +        sub     rax,r10
> 
> +        movups  xmm1,XMMWORD[16+rbp]
> 
> +        mov     r10,rax
> 
> +        lea     r8,[$L$xts_magic]
> 
> +        jmp     NEAR $L$xts_dec_grandloop
> 
> +
> 
> +ALIGN   32
> 
> +$L$xts_dec_grandloop:
> 
> +        movdqu  xmm2,XMMWORD[rdi]
> 
> +        movdqa  xmm8,xmm0
> 
> +        movdqu  xmm3,XMMWORD[16+rdi]
> 
> +        pxor    xmm2,xmm10
> 
> +        movdqu  xmm4,XMMWORD[32+rdi]
> 
> +        pxor    xmm3,xmm11
> 
> +DB      102,15,56,222,209
> 
> +        movdqu  xmm5,XMMWORD[48+rdi]
> 
> +        pxor    xmm4,xmm12
> 
> +DB      102,15,56,222,217
> 
> +        movdqu  xmm6,XMMWORD[64+rdi]
> 
> +        pxor    xmm5,xmm13
> 
> +DB      102,15,56,222,225
> 
> +        movdqu  xmm7,XMMWORD[80+rdi]
> 
> +        pxor    xmm8,xmm15
> 
> +        movdqa  xmm9,XMMWORD[96+rsp]
> 
> +        pxor    xmm6,xmm14
> 
> +DB      102,15,56,222,233
> 
> +        movups  xmm0,XMMWORD[32+rbp]
> 
> +        lea     rdi,[96+rdi]
> 
> +        pxor    xmm7,xmm8
> 
> +
> 
> +        pxor    xmm10,xmm9
> 
> +DB      102,15,56,222,241
> 
> +        pxor    xmm11,xmm9
> 
> +        movdqa  XMMWORD[rsp],xmm10
> 
> +DB      102,15,56,222,249
> 
> +        movups  xmm1,XMMWORD[48+rbp]
> 
> +        pxor    xmm12,xmm9
> 
> +
> 
> +DB      102,15,56,222,208
> 
> +        pxor    xmm13,xmm9
> 
> +        movdqa  XMMWORD[16+rsp],xmm11
> 
> +DB      102,15,56,222,216
> 
> +        pxor    xmm14,xmm9
> 
> +        movdqa  XMMWORD[32+rsp],xmm12
> 
> +DB      102,15,56,222,224
> 
> +DB      102,15,56,222,232
> 
> +        pxor    xmm8,xmm9
> 
> +        movdqa  XMMWORD[64+rsp],xmm14
> 
> +DB      102,15,56,222,240
> 
> +DB      102,15,56,222,248
> 
> +        movups  xmm0,XMMWORD[64+rbp]
> 
> +        movdqa  XMMWORD[80+rsp],xmm8
> 
> +        pshufd  xmm9,xmm15,0x5f
> 
> +        jmp     NEAR $L$xts_dec_loop6
> 
> +ALIGN   32
> 
> +$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[((-64))+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
> 
> +DB      102,15,56,222,240
> 
> +DB      102,15,56,222,248
> 
> +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
> 
> +        jnz     NEAR $L$xts_dec_loop6
> 
> +
> 
> +        movdqa  xmm8,XMMWORD[r8]
> 
> +        movdqa  xmm14,xmm9
> 
> +        paddd   xmm9,xmm9
> 
> +DB      102,15,56,222,209
> 
> +        paddq   xmm15,xmm15
> 
> +        psrad   xmm14,31
> 
> +DB      102,15,56,222,217
> 
> +        pand    xmm14,xmm8
> 
> +        movups  xmm10,XMMWORD[rbp]
> 
> +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[((-64))+rcx]
> 
> +
> 
> +        movdqa  xmm14,xmm9
> 
> +DB      102,15,56,222,208
> 
> +        paddd   xmm9,xmm9
> 
> +        pxor    xmm10,xmm15
> 
> +DB      102,15,56,222,216
> 
> +        psrad   xmm14,31
> 
> +        paddq   xmm15,xmm15
> 
> +DB      102,15,56,222,224
> 
> +DB      102,15,56,222,232
> 
> +        pand    xmm14,xmm8
> 
> +        movaps  xmm12,xmm11
> 
> +DB      102,15,56,222,240
> 
> +        pxor    xmm15,xmm14
> 
> +        movdqa  xmm14,xmm9
> 
> +DB      102,15,56,222,248
> 
> +        movups  xmm0,XMMWORD[((-48))+rcx]
> 
> +
> 
> +        paddd   xmm9,xmm9
> 
> +DB      102,15,56,222,209
> 
> +        pxor    xmm11,xmm15
> 
> +        psrad   xmm14,31
> 
> +DB      102,15,56,222,217
> 
> +        paddq   xmm15,xmm15
> 
> +        pand    xmm14,xmm8
> 
> +DB      102,15,56,222,225
> 
> +DB      102,15,56,222,233
> 
> +        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[((-32))+rcx]
> 
> +
> 
> +        paddd   xmm9,xmm9
> 
> +DB      102,15,56,222,208
> 
> +        pxor    xmm12,xmm15
> 
> +        psrad   xmm14,31
> 
> +DB      102,15,56,222,216
> 
> +        paddq   xmm15,xmm15
> 
> +        pand    xmm14,xmm8
> 
> +DB      102,15,56,222,224
> 
> +DB      102,15,56,222,232
> 
> +DB      102,15,56,222,240
> 
> +        pxor    xmm15,xmm14
> 
> +        movaps  xmm14,xmm13
> 
> +DB      102,15,56,222,248
> 
> +
> 
> +        movdqa  xmm0,xmm9
> 
> +        paddd   xmm9,xmm9
> 
> +DB      102,15,56,222,209
> 
> +        pxor    xmm13,xmm15
> 
> +        psrad   xmm0,31
> 
> +DB      102,15,56,222,217
> 
> +        paddq   xmm15,xmm15
> 
> +        pand    xmm0,xmm8
> 
> +DB      102,15,56,222,225
> 
> +DB      102,15,56,222,233
> 
> +        pxor    xmm15,xmm0
> 
> +        movups  xmm0,XMMWORD[rbp]
> 
> +DB      102,15,56,222,241
> 
> +DB      102,15,56,222,249
> 
> +        movups  xmm1,XMMWORD[16+rbp]
> 
> +
> 
> +        pxor    xmm14,xmm15
> 
> +DB      102,15,56,223,84,36,0
> 
> +        psrad   xmm9,31
> 
> +        paddq   xmm15,xmm15
> 
> +DB      102,15,56,223,92,36,16
> 
> +DB      102,15,56,223,100,36,32
> 
> +        pand    xmm9,xmm8
> 
> +        mov     rax,r10
> 
> +DB      102,15,56,223,108,36,48
> 
> +DB      102,15,56,223,116,36,64
> 
> +DB      102,15,56,223,124,36,80
> 
> +        pxor    xmm15,xmm9
> 
> +
> 
> +        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     NEAR $L$xts_dec_grandloop
> 
> +
> 
> +        mov     eax,16+96
> 
> +        sub     eax,r10d
> 
> +        mov     rcx,rbp
> 
> +        shr     eax,4
> 
> +
> 
> +$L$xts_dec_short:
> 
> +
> 
> +        mov     r10d,eax
> 
> +        pxor    xmm10,xmm0
> 
> +        pxor    xmm11,xmm0
> 
> +        add     rdx,16*6
> 
> +        jz      NEAR $L$xts_dec_done
> 
> +
> 
> +        pxor    xmm12,xmm0
> 
> +        cmp     rdx,0x20
> 
> +        jb      NEAR $L$xts_dec_one
> 
> +        pxor    xmm13,xmm0
> 
> +        je      NEAR $L$xts_dec_two
> 
> +
> 
> +        pxor    xmm14,xmm0
> 
> +        cmp     rdx,0x40
> 
> +        jb      NEAR $L$xts_dec_three
> 
> +        je      NEAR $L$xts_dec_four
> 
> +
> 
> +        movdqu  xmm2,XMMWORD[rdi]
> 
> +        movdqu  xmm3,XMMWORD[16+rdi]
> 
> +        movdqu  xmm4,XMMWORD[32+rdi]
> 
> +        pxor    xmm2,xmm10
> 
> +        movdqu  xmm5,XMMWORD[48+rdi]
> 
> +        pxor    xmm3,xmm11
> 
> +        movdqu  xmm6,XMMWORD[64+rdi]
> 
> +        lea     rdi,[80+rdi]
> 
> +        pxor    xmm4,xmm12
> 
> +        pxor    xmm5,xmm13
> 
> +        pxor    xmm6,xmm14
> 
> +
> 
> +        call    _aesni_decrypt6
> 
> +
> 
> +        xorps   xmm2,xmm10
> 
> +        xorps   xmm3,xmm11
> 
> +        xorps   xmm4,xmm12
> 
> +        movdqu  XMMWORD[rsi],xmm2
> 
> +        xorps   xmm5,xmm13
> 
> +        movdqu  XMMWORD[16+rsi],xmm3
> 
> +        xorps   xmm6,xmm14
> 
> +        movdqu  XMMWORD[32+rsi],xmm4
> 
> +        pxor    xmm14,xmm14
> 
> +        movdqu  XMMWORD[48+rsi],xmm5
> 
> +        pcmpgtd xmm14,xmm15
> 
> +        movdqu  XMMWORD[64+rsi],xmm6
> 
> +        lea     rsi,[80+rsi]
> 
> +        pshufd  xmm11,xmm14,0x13
> 
> +        and     r9,15
> 
> +        jz      NEAR $L$xts_dec_ret
> 
> +
> 
> +        movdqa  xmm10,xmm15
> 
> +        paddq   xmm15,xmm15
> 
> +        pand    xmm11,xmm8
> 
> +        pxor    xmm11,xmm15
> 
> +        jmp     NEAR $L$xts_dec_done2
> 
> +
> 
> +ALIGN   16
> 
> +$L$xts_dec_one:
> 
> +        movups  xmm2,XMMWORD[rdi]
> 
> +        lea     rdi,[16+rdi]
> 
> +        xorps   xmm2,xmm10
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        lea     rcx,[32+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +$L$oop_dec1_12:
> 
> +DB      102,15,56,222,209
> 
> +        dec     eax
> 
> +        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[rsi],xmm2
> 
> +        movdqa  xmm11,xmm12
> 
> +        lea     rsi,[16+rsi]
> 
> +        jmp     NEAR $L$xts_dec_done
> 
> +
> 
> +ALIGN   16
> 
> +$L$xts_dec_two:
> 
> +        movups  xmm2,XMMWORD[rdi]
> 
> +        movups  xmm3,XMMWORD[16+rdi]
> 
> +        lea     rdi,[32+rdi]
> 
> +        xorps   xmm2,xmm10
> 
> +        xorps   xmm3,xmm11
> 
> +
> 
> +        call    _aesni_decrypt2
> 
> +
> 
> +        xorps   xmm2,xmm10
> 
> +        movdqa  xmm10,xmm12
> 
> +        xorps   xmm3,xmm11
> 
> +        movdqa  xmm11,xmm13
> 
> +        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[rdi]
> 
> +        movups  xmm3,XMMWORD[16+rdi]
> 
> +        movups  xmm4,XMMWORD[32+rdi]
> 
> +        lea     rdi,[48+rdi]
> 
> +        xorps   xmm2,xmm10
> 
> +        xorps   xmm3,xmm11
> 
> +        xorps   xmm4,xmm12
> 
> +
> 
> +        call    _aesni_decrypt3
> 
> +
> 
> +        xorps   xmm2,xmm10
> 
> +        movdqa  xmm10,xmm13
> 
> +        xorps   xmm3,xmm11
> 
> +        movdqa  xmm11,xmm14
> 
> +        xorps   xmm4,xmm12
> 
> +        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[rdi]
> 
> +        movups  xmm3,XMMWORD[16+rdi]
> 
> +        movups  xmm4,XMMWORD[32+rdi]
> 
> +        xorps   xmm2,xmm10
> 
> +        movups  xmm5,XMMWORD[48+rdi]
> 
> +        lea     rdi,[64+rdi]
> 
> +        xorps   xmm3,xmm11
> 
> +        xorps   xmm4,xmm12
> 
> +        xorps   xmm5,xmm13
> 
> +
> 
> +        call    _aesni_decrypt4
> 
> +
> 
> +        pxor    xmm2,xmm10
> 
> +        movdqa  xmm10,xmm14
> 
> +        pxor    xmm3,xmm11
> 
> +        movdqa  xmm11,xmm15
> 
> +        pxor    xmm4,xmm12
> 
> +        movdqu  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm5,xmm13
> 
> +        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:
> 
> +        and     r9,15
> 
> +        jz      NEAR $L$xts_dec_ret
> 
> +$L$xts_dec_done2:
> 
> +        mov     rdx,r9
> 
> +        mov     rcx,rbp
> 
> +        mov     eax,r10d
> 
> +
> 
> +        movups  xmm2,XMMWORD[rdi]
> 
> +        xorps   xmm2,xmm11
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        lea     rcx,[32+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +$L$oop_dec1_13:
> 
> +DB      102,15,56,222,209
> 
> +        dec     eax
> 
> +        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[rsi],xmm2
> 
> +
> 
> +$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     NEAR $L$xts_dec_steal
> 
> +
> 
> +        sub     rsi,r9
> 
> +        mov     rcx,rbp
> 
> +        mov     eax,r10d
> 
> +
> 
> +        movups  xmm2,XMMWORD[rsi]
> 
> +        xorps   xmm2,xmm10
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        lea     rcx,[32+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +$L$oop_dec1_14:
> 
> +DB      102,15,56,222,209
> 
> +        dec     eax
> 
> +        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[rsi],xmm2
> 
> +
> 
> +$L$xts_dec_ret:
> 
> +        xorps   xmm0,xmm0
> 
> +        pxor    xmm1,xmm1
> 
> +        pxor    xmm2,xmm2
> 
> +        pxor    xmm3,xmm3
> 
> +        pxor    xmm4,xmm4
> 
> +        pxor    xmm5,xmm5
> 
> +        movaps  xmm6,XMMWORD[((-168))+r11]
> 
> +        movaps  XMMWORD[(-168)+r11],xmm0
> 
> +        movaps  xmm7,XMMWORD[((-152))+r11]
> 
> +        movaps  XMMWORD[(-152)+r11],xmm0
> 
> +        movaps  xmm8,XMMWORD[((-136))+r11]
> 
> +        movaps  XMMWORD[(-136)+r11],xmm0
> 
> +        movaps  xmm9,XMMWORD[((-120))+r11]
> 
> +        movaps  XMMWORD[(-120)+r11],xmm0
> 
> +        movaps  xmm10,XMMWORD[((-104))+r11]
> 
> +        movaps  XMMWORD[(-104)+r11],xmm0
> 
> +        movaps  xmm11,XMMWORD[((-88))+r11]
> 
> +        movaps  XMMWORD[(-88)+r11],xmm0
> 
> +        movaps  xmm12,XMMWORD[((-72))+r11]
> 
> +        movaps  XMMWORD[(-72)+r11],xmm0
> 
> +        movaps  xmm13,XMMWORD[((-56))+r11]
> 
> +        movaps  XMMWORD[(-56)+r11],xmm0
> 
> +        movaps  xmm14,XMMWORD[((-40))+r11]
> 
> +        movaps  XMMWORD[(-40)+r11],xmm0
> 
> +        movaps  xmm15,XMMWORD[((-24))+r11]
> 
> +        movaps  XMMWORD[(-24)+r11],xmm0
> 
> +        movaps  XMMWORD[rsp],xmm0
> 
> +        movaps  XMMWORD[16+rsp],xmm0
> 
> +        movaps  XMMWORD[32+rsp],xmm0
> 
> +        movaps  XMMWORD[48+rsp],xmm0
> 
> +        movaps  XMMWORD[64+rsp],xmm0
> 
> +        movaps  XMMWORD[80+rsp],xmm0
> 
> +        movaps  XMMWORD[96+rsp],xmm0
> 
> +        mov     rbp,QWORD[((-8))+r11]
> 
> +
> 
> +        lea     rsp,[r11]
> 
> +
> 
> +$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:
> 
> +global  aesni_ocb_encrypt
> 
> +
> 
> +ALIGN   32
> 
> +aesni_ocb_encrypt:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_aesni_ocb_encrypt:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +        mov     rcx,r9
> 
> +        mov     r8,QWORD[40+rsp]
> 
> +        mov     r9,QWORD[48+rsp]
> 
> +
> 
> +
> 
> +
> 
> +        lea     rax,[rsp]
> 
> +        push    rbx
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        push    r12
> 
> +
> 
> +        push    r13
> 
> +
> 
> +        push    r14
> 
> +
> 
> +        lea     rsp,[((-160))+rsp]
> 
> +        movaps  XMMWORD[rsp],xmm6
> 
> +        movaps  XMMWORD[16+rsp],xmm7
> 
> +        movaps  XMMWORD[32+rsp],xmm8
> 
> +        movaps  XMMWORD[48+rsp],xmm9
> 
> +        movaps  XMMWORD[64+rsp],xmm10
> 
> +        movaps  XMMWORD[80+rsp],xmm11
> 
> +        movaps  XMMWORD[96+rsp],xmm12
> 
> +        movaps  XMMWORD[112+rsp],xmm13
> 
> +        movaps  XMMWORD[128+rsp],xmm14
> 
> +        movaps  XMMWORD[144+rsp],xmm15
> 
> +$L$ocb_enc_body:
> 
> +        mov     rbx,QWORD[56+rax]
> 
> +        mov     rbp,QWORD[((56+8))+rax]
> 
> +
> 
> +        mov     r10d,DWORD[240+rcx]
> 
> +        mov     r11,rcx
> 
> +        shl     r10d,4
> 
> +        movups  xmm9,XMMWORD[rcx]
> 
> +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> 
> +
> 
> +        movdqu  xmm15,XMMWORD[r9]
> 
> +        pxor    xmm9,xmm1
> 
> +        pxor    xmm15,xmm1
> 
> +
> 
> +        mov     eax,16+32
> 
> +        lea     rcx,[32+r10*1+r11]
> 
> +        movups  xmm1,XMMWORD[16+r11]
> 
> +        sub     rax,r10
> 
> +        mov     r10,rax
> 
> +
> 
> +        movdqu  xmm10,XMMWORD[rbx]
> 
> +        movdqu  xmm8,XMMWORD[rbp]
> 
> +
> 
> +        test    r8,1
> 
> +        jnz     NEAR $L$ocb_enc_odd
> 
> +
> 
> +        bsf     r12,r8
> 
> +        add     r8,1
> 
> +        shl     r12,4
> 
> +        movdqu  xmm7,XMMWORD[r12*1+rbx]
> 
> +        movdqu  xmm2,XMMWORD[rdi]
> 
> +        lea     rdi,[16+rdi]
> 
> +
> 
> +        call    __ocb_encrypt1
> 
> +
> 
> +        movdqa  xmm15,xmm7
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        lea     rsi,[16+rsi]
> 
> +        sub     rdx,1
> 
> +        jz      NEAR $L$ocb_enc_done
> 
> +
> 
> +$L$ocb_enc_odd:
> 
> +        lea     r12,[1+r8]
> 
> +        lea     r13,[3+r8]
> 
> +        lea     r14,[5+r8]
> 
> +        lea     r8,[6+r8]
> 
> +        bsf     r12,r12
> 
> +        bsf     r13,r13
> 
> +        bsf     r14,r14
> 
> +        shl     r12,4
> 
> +        shl     r13,4
> 
> +        shl     r14,4
> 
> +
> 
> +        sub     rdx,6
> 
> +        jc      NEAR $L$ocb_enc_short
> 
> +        jmp     NEAR $L$ocb_enc_grandloop
> 
> +
> 
> +ALIGN   32
> 
> +$L$ocb_enc_grandloop:
> 
> +        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]
> 
> +        lea     rdi,[96+rdi]
> 
> +
> 
> +        call    __ocb_encrypt6
> 
> +
> 
> +        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
> 
> +        lea     rsi,[96+rsi]
> 
> +        sub     rdx,6
> 
> +        jnc     NEAR $L$ocb_enc_grandloop
> 
> +
> 
> +$L$ocb_enc_short:
> 
> +        add     rdx,6
> 
> +        jz      NEAR $L$ocb_enc_done
> 
> +
> 
> +        movdqu  xmm2,XMMWORD[rdi]
> 
> +        cmp     rdx,2
> 
> +        jb      NEAR $L$ocb_enc_one
> 
> +        movdqu  xmm3,XMMWORD[16+rdi]
> 
> +        je      NEAR $L$ocb_enc_two
> 
> +
> 
> +        movdqu  xmm4,XMMWORD[32+rdi]
> 
> +        cmp     rdx,4
> 
> +        jb      NEAR $L$ocb_enc_three
> 
> +        movdqu  xmm5,XMMWORD[48+rdi]
> 
> +        je      NEAR $L$ocb_enc_four
> 
> +
> 
> +        movdqu  xmm6,XMMWORD[64+rdi]
> 
> +        pxor    xmm7,xmm7
> 
> +
> 
> +        call    __ocb_encrypt6
> 
> +
> 
> +        movdqa  xmm15,xmm14
> 
> +        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$ocb_enc_done
> 
> +
> 
> +ALIGN   16
> 
> +$L$ocb_enc_one:
> 
> +        movdqa  xmm7,xmm10
> 
> +
> 
> +        call    __ocb_encrypt1
> 
> +
> 
> +        movdqa  xmm15,xmm7
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        jmp     NEAR $L$ocb_enc_done
> 
> +
> 
> +ALIGN   16
> 
> +$L$ocb_enc_two:
> 
> +        pxor    xmm4,xmm4
> 
> +        pxor    xmm5,xmm5
> 
> +
> 
> +        call    __ocb_encrypt4
> 
> +
> 
> +        movdqa  xmm15,xmm11
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +
> 
> +        jmp     NEAR $L$ocb_enc_done
> 
> +
> 
> +ALIGN   16
> 
> +$L$ocb_enc_three:
> 
> +        pxor    xmm5,xmm5
> 
> +
> 
> +        call    __ocb_encrypt4
> 
> +
> 
> +        movdqa  xmm15,xmm12
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        movups  XMMWORD[32+rsi],xmm4
> 
> +
> 
> +        jmp     NEAR $L$ocb_enc_done
> 
> +
> 
> +ALIGN   16
> 
> +$L$ocb_enc_four:
> 
> +        call    __ocb_encrypt4
> 
> +
> 
> +        movdqa  xmm15,xmm13
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        movups  XMMWORD[32+rsi],xmm4
> 
> +        movups  XMMWORD[48+rsi],xmm5
> 
> +
> 
> +$L$ocb_enc_done:
> 
> +        pxor    xmm15,xmm0
> 
> +        movdqu  XMMWORD[rbp],xmm8
> 
> +        movdqu  XMMWORD[r9],xmm15
> 
> +
> 
> +        xorps   xmm0,xmm0
> 
> +        pxor    xmm1,xmm1
> 
> +        pxor    xmm2,xmm2
> 
> +        pxor    xmm3,xmm3
> 
> +        pxor    xmm4,xmm4
> 
> +        pxor    xmm5,xmm5
> 
> +        movaps  xmm6,XMMWORD[rsp]
> 
> +        movaps  XMMWORD[rsp],xmm0
> 
> +        movaps  xmm7,XMMWORD[16+rsp]
> 
> +        movaps  XMMWORD[16+rsp],xmm0
> 
> +        movaps  xmm8,XMMWORD[32+rsp]
> 
> +        movaps  XMMWORD[32+rsp],xmm0
> 
> +        movaps  xmm9,XMMWORD[48+rsp]
> 
> +        movaps  XMMWORD[48+rsp],xmm0
> 
> +        movaps  xmm10,XMMWORD[64+rsp]
> 
> +        movaps  XMMWORD[64+rsp],xmm0
> 
> +        movaps  xmm11,XMMWORD[80+rsp]
> 
> +        movaps  XMMWORD[80+rsp],xmm0
> 
> +        movaps  xmm12,XMMWORD[96+rsp]
> 
> +        movaps  XMMWORD[96+rsp],xmm0
> 
> +        movaps  xmm13,XMMWORD[112+rsp]
> 
> +        movaps  XMMWORD[112+rsp],xmm0
> 
> +        movaps  xmm14,XMMWORD[128+rsp]
> 
> +        movaps  XMMWORD[128+rsp],xmm0
> 
> +        movaps  xmm15,XMMWORD[144+rsp]
> 
> +        movaps  XMMWORD[144+rsp],xmm0
> 
> +        lea     rax,[((160+40))+rsp]
> 
> +$L$ocb_enc_pop:
> 
> +        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$ocb_enc_epilogue:
> 
> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> 
> +        mov     rsi,QWORD[16+rsp]
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +$L$SEH_end_aesni_ocb_encrypt:
> 
> +
> 
> +
> 
> +ALIGN   32
> 
> +__ocb_encrypt6:
> 
> +
> 
> +        pxor    xmm15,xmm9
> 
> +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> 
> +        movdqa  xmm12,xmm10
> 
> +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> 
> +        movdqa  xmm14,xmm10
> 
> +        pxor    xmm10,xmm15
> 
> +        movdqu  xmm15,XMMWORD[r14*1+rbx]
> 
> +        pxor    xmm11,xmm10
> 
> +        pxor    xmm8,xmm2
> 
> +        pxor    xmm2,xmm10
> 
> +        pxor    xmm12,xmm11
> 
> +        pxor    xmm8,xmm3
> 
> +        pxor    xmm3,xmm11
> 
> +        pxor    xmm13,xmm12
> 
> +        pxor    xmm8,xmm4
> 
> +        pxor    xmm4,xmm12
> 
> +        pxor    xmm14,xmm13
> 
> +        pxor    xmm8,xmm5
> 
> +        pxor    xmm5,xmm13
> 
> +        pxor    xmm15,xmm14
> 
> +        pxor    xmm8,xmm6
> 
> +        pxor    xmm6,xmm14
> 
> +        pxor    xmm8,xmm7
> 
> +        pxor    xmm7,xmm15
> 
> +        movups  xmm0,XMMWORD[32+r11]
> 
> +
> 
> +        lea     r12,[1+r8]
> 
> +        lea     r13,[3+r8]
> 
> +        lea     r14,[5+r8]
> 
> +        add     r8,6
> 
> +        pxor    xmm10,xmm9
> 
> +        bsf     r12,r12
> 
> +        bsf     r13,r13
> 
> +        bsf     r14,r14
> 
> +
> 
> +DB      102,15,56,220,209
> 
> +DB      102,15,56,220,217
> 
> +DB      102,15,56,220,225
> 
> +DB      102,15,56,220,233
> 
> +        pxor    xmm11,xmm9
> 
> +        pxor    xmm12,xmm9
> 
> +DB      102,15,56,220,241
> 
> +        pxor    xmm13,xmm9
> 
> +        pxor    xmm14,xmm9
> 
> +DB      102,15,56,220,249
> 
> +        movups  xmm1,XMMWORD[48+r11]
> 
> +        pxor    xmm15,xmm9
> 
> +
> 
> +DB      102,15,56,220,208
> 
> +DB      102,15,56,220,216
> 
> +DB      102,15,56,220,224
> 
> +DB      102,15,56,220,232
> 
> +DB      102,15,56,220,240
> 
> +DB      102,15,56,220,248
> 
> +        movups  xmm0,XMMWORD[64+r11]
> 
> +        shl     r12,4
> 
> +        shl     r13,4
> 
> +        jmp     NEAR $L$ocb_enc_loop6
> 
> +
> 
> +ALIGN   32
> 
> +$L$ocb_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[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
> 
> +DB      102,15,56,220,240
> 
> +DB      102,15,56,220,248
> 
> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> 
> +        jnz     NEAR $L$ocb_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[16+r11]
> 
> +        shl     r14,4
> 
> +
> 
> +DB      102,65,15,56,221,210
> 
> +        movdqu  xmm10,XMMWORD[rbx]
> 
> +        mov     rax,r10
> 
> +DB      102,65,15,56,221,219
> 
> +DB      102,65,15,56,221,228
> 
> +DB      102,65,15,56,221,237
> 
> +DB      102,65,15,56,221,246
> 
> +DB      102,65,15,56,221,255
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   32
> 
> +__ocb_encrypt4:
> 
> +
> 
> +        pxor    xmm15,xmm9
> 
> +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> 
> +        movdqa  xmm12,xmm10
> 
> +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> 
> +        pxor    xmm10,xmm15
> 
> +        pxor    xmm11,xmm10
> 
> +        pxor    xmm8,xmm2
> 
> +        pxor    xmm2,xmm10
> 
> +        pxor    xmm12,xmm11
> 
> +        pxor    xmm8,xmm3
> 
> +        pxor    xmm3,xmm11
> 
> +        pxor    xmm13,xmm12
> 
> +        pxor    xmm8,xmm4
> 
> +        pxor    xmm4,xmm12
> 
> +        pxor    xmm8,xmm5
> 
> +        pxor    xmm5,xmm13
> 
> +        movups  xmm0,XMMWORD[32+r11]
> 
> +
> 
> +        pxor    xmm10,xmm9
> 
> +        pxor    xmm11,xmm9
> 
> +        pxor    xmm12,xmm9
> 
> +        pxor    xmm13,xmm9
> 
> +
> 
> +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[48+r11]
> 
> +
> 
> +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[64+r11]
> 
> +        jmp     NEAR $L$ocb_enc_loop4
> 
> +
> 
> +ALIGN   32
> 
> +$L$ocb_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[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[((-16))+rax*1+rcx]
> 
> +        jnz     NEAR $L$ocb_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[16+r11]
> 
> +        mov     rax,r10
> 
> +
> 
> +DB      102,65,15,56,221,210
> 
> +DB      102,65,15,56,221,219
> 
> +DB      102,65,15,56,221,228
> 
> +DB      102,65,15,56,221,237
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   32
> 
> +__ocb_encrypt1:
> 
> +
> 
> +        pxor    xmm7,xmm15
> 
> +        pxor    xmm7,xmm9
> 
> +        pxor    xmm8,xmm2
> 
> +        pxor    xmm2,xmm7
> 
> +        movups  xmm0,XMMWORD[32+r11]
> 
> +
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[48+r11]
> 
> +        pxor    xmm7,xmm9
> 
> +
> 
> +DB      102,15,56,220,208
> 
> +        movups  xmm0,XMMWORD[64+r11]
> 
> +        jmp     NEAR $L$ocb_enc_loop1
> 
> +
> 
> +ALIGN   32
> 
> +$L$ocb_enc_loop1:
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[rax*1+rcx]
> 
> +        add     rax,32
> 
> +
> 
> +DB      102,15,56,220,208
> 
> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> 
> +        jnz     NEAR $L$ocb_enc_loop1
> 
> +
> 
> +DB      102,15,56,220,209
> 
> +        movups  xmm1,XMMWORD[16+r11]
> 
> +        mov     rax,r10
> 
> +
> 
> +DB      102,15,56,221,215
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +global  aesni_ocb_decrypt
> 
> +
> 
> +ALIGN   32
> 
> +aesni_ocb_decrypt:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_aesni_ocb_decrypt:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +        mov     rcx,r9
> 
> +        mov     r8,QWORD[40+rsp]
> 
> +        mov     r9,QWORD[48+rsp]
> 
> +
> 
> +
> 
> +
> 
> +        lea     rax,[rsp]
> 
> +        push    rbx
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        push    r12
> 
> +
> 
> +        push    r13
> 
> +
> 
> +        push    r14
> 
> +
> 
> +        lea     rsp,[((-160))+rsp]
> 
> +        movaps  XMMWORD[rsp],xmm6
> 
> +        movaps  XMMWORD[16+rsp],xmm7
> 
> +        movaps  XMMWORD[32+rsp],xmm8
> 
> +        movaps  XMMWORD[48+rsp],xmm9
> 
> +        movaps  XMMWORD[64+rsp],xmm10
> 
> +        movaps  XMMWORD[80+rsp],xmm11
> 
> +        movaps  XMMWORD[96+rsp],xmm12
> 
> +        movaps  XMMWORD[112+rsp],xmm13
> 
> +        movaps  XMMWORD[128+rsp],xmm14
> 
> +        movaps  XMMWORD[144+rsp],xmm15
> 
> +$L$ocb_dec_body:
> 
> +        mov     rbx,QWORD[56+rax]
> 
> +        mov     rbp,QWORD[((56+8))+rax]
> 
> +
> 
> +        mov     r10d,DWORD[240+rcx]
> 
> +        mov     r11,rcx
> 
> +        shl     r10d,4
> 
> +        movups  xmm9,XMMWORD[rcx]
> 
> +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> 
> +
> 
> +        movdqu  xmm15,XMMWORD[r9]
> 
> +        pxor    xmm9,xmm1
> 
> +        pxor    xmm15,xmm1
> 
> +
> 
> +        mov     eax,16+32
> 
> +        lea     rcx,[32+r10*1+r11]
> 
> +        movups  xmm1,XMMWORD[16+r11]
> 
> +        sub     rax,r10
> 
> +        mov     r10,rax
> 
> +
> 
> +        movdqu  xmm10,XMMWORD[rbx]
> 
> +        movdqu  xmm8,XMMWORD[rbp]
> 
> +
> 
> +        test    r8,1
> 
> +        jnz     NEAR $L$ocb_dec_odd
> 
> +
> 
> +        bsf     r12,r8
> 
> +        add     r8,1
> 
> +        shl     r12,4
> 
> +        movdqu  xmm7,XMMWORD[r12*1+rbx]
> 
> +        movdqu  xmm2,XMMWORD[rdi]
> 
> +        lea     rdi,[16+rdi]
> 
> +
> 
> +        call    __ocb_decrypt1
> 
> +
> 
> +        movdqa  xmm15,xmm7
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        xorps   xmm8,xmm2
> 
> +        lea     rsi,[16+rsi]
> 
> +        sub     rdx,1
> 
> +        jz      NEAR $L$ocb_dec_done
> 
> +
> 
> +$L$ocb_dec_odd:
> 
> +        lea     r12,[1+r8]
> 
> +        lea     r13,[3+r8]
> 
> +        lea     r14,[5+r8]
> 
> +        lea     r8,[6+r8]
> 
> +        bsf     r12,r12
> 
> +        bsf     r13,r13
> 
> +        bsf     r14,r14
> 
> +        shl     r12,4
> 
> +        shl     r13,4
> 
> +        shl     r14,4
> 
> +
> 
> +        sub     rdx,6
> 
> +        jc      NEAR $L$ocb_dec_short
> 
> +        jmp     NEAR $L$ocb_dec_grandloop
> 
> +
> 
> +ALIGN   32
> 
> +$L$ocb_dec_grandloop:
> 
> +        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]
> 
> +        lea     rdi,[96+rdi]
> 
> +
> 
> +        call    __ocb_decrypt6
> 
> +
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm8,xmm2
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        pxor    xmm8,xmm3
> 
> +        movups  XMMWORD[32+rsi],xmm4
> 
> +        pxor    xmm8,xmm4
> 
> +        movups  XMMWORD[48+rsi],xmm5
> 
> +        pxor    xmm8,xmm5
> 
> +        movups  XMMWORD[64+rsi],xmm6
> 
> +        pxor    xmm8,xmm6
> 
> +        movups  XMMWORD[80+rsi],xmm7
> 
> +        pxor    xmm8,xmm7
> 
> +        lea     rsi,[96+rsi]
> 
> +        sub     rdx,6
> 
> +        jnc     NEAR $L$ocb_dec_grandloop
> 
> +
> 
> +$L$ocb_dec_short:
> 
> +        add     rdx,6
> 
> +        jz      NEAR $L$ocb_dec_done
> 
> +
> 
> +        movdqu  xmm2,XMMWORD[rdi]
> 
> +        cmp     rdx,2
> 
> +        jb      NEAR $L$ocb_dec_one
> 
> +        movdqu  xmm3,XMMWORD[16+rdi]
> 
> +        je      NEAR $L$ocb_dec_two
> 
> +
> 
> +        movdqu  xmm4,XMMWORD[32+rdi]
> 
> +        cmp     rdx,4
> 
> +        jb      NEAR $L$ocb_dec_three
> 
> +        movdqu  xmm5,XMMWORD[48+rdi]
> 
> +        je      NEAR $L$ocb_dec_four
> 
> +
> 
> +        movdqu  xmm6,XMMWORD[64+rdi]
> 
> +        pxor    xmm7,xmm7
> 
> +
> 
> +        call    __ocb_decrypt6
> 
> +
> 
> +        movdqa  xmm15,xmm14
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm8,xmm2
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        pxor    xmm8,xmm3
> 
> +        movups  XMMWORD[32+rsi],xmm4
> 
> +        pxor    xmm8,xmm4
> 
> +        movups  XMMWORD[48+rsi],xmm5
> 
> +        pxor    xmm8,xmm5
> 
> +        movups  XMMWORD[64+rsi],xmm6
> 
> +        pxor    xmm8,xmm6
> 
> +
> 
> +        jmp     NEAR $L$ocb_dec_done
> 
> +
> 
> +ALIGN   16
> 
> +$L$ocb_dec_one:
> 
> +        movdqa  xmm7,xmm10
> 
> +
> 
> +        call    __ocb_decrypt1
> 
> +
> 
> +        movdqa  xmm15,xmm7
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        xorps   xmm8,xmm2
> 
> +        jmp     NEAR $L$ocb_dec_done
> 
> +
> 
> +ALIGN   16
> 
> +$L$ocb_dec_two:
> 
> +        pxor    xmm4,xmm4
> 
> +        pxor    xmm5,xmm5
> 
> +
> 
> +        call    __ocb_decrypt4
> 
> +
> 
> +        movdqa  xmm15,xmm11
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        xorps   xmm8,xmm2
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        xorps   xmm8,xmm3
> 
> +
> 
> +        jmp     NEAR $L$ocb_dec_done
> 
> +
> 
> +ALIGN   16
> 
> +$L$ocb_dec_three:
> 
> +        pxor    xmm5,xmm5
> 
> +
> 
> +        call    __ocb_decrypt4
> 
> +
> 
> +        movdqa  xmm15,xmm12
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        xorps   xmm8,xmm2
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        xorps   xmm8,xmm3
> 
> +        movups  XMMWORD[32+rsi],xmm4
> 
> +        xorps   xmm8,xmm4
> 
> +
> 
> +        jmp     NEAR $L$ocb_dec_done
> 
> +
> 
> +ALIGN   16
> 
> +$L$ocb_dec_four:
> 
> +        call    __ocb_decrypt4
> 
> +
> 
> +        movdqa  xmm15,xmm13
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm8,xmm2
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        pxor    xmm8,xmm3
> 
> +        movups  XMMWORD[32+rsi],xmm4
> 
> +        pxor    xmm8,xmm4
> 
> +        movups  XMMWORD[48+rsi],xmm5
> 
> +        pxor    xmm8,xmm5
> 
> +
> 
> +$L$ocb_dec_done:
> 
> +        pxor    xmm15,xmm0
> 
> +        movdqu  XMMWORD[rbp],xmm8
> 
> +        movdqu  XMMWORD[r9],xmm15
> 
> +
> 
> +        xorps   xmm0,xmm0
> 
> +        pxor    xmm1,xmm1
> 
> +        pxor    xmm2,xmm2
> 
> +        pxor    xmm3,xmm3
> 
> +        pxor    xmm4,xmm4
> 
> +        pxor    xmm5,xmm5
> 
> +        movaps  xmm6,XMMWORD[rsp]
> 
> +        movaps  XMMWORD[rsp],xmm0
> 
> +        movaps  xmm7,XMMWORD[16+rsp]
> 
> +        movaps  XMMWORD[16+rsp],xmm0
> 
> +        movaps  xmm8,XMMWORD[32+rsp]
> 
> +        movaps  XMMWORD[32+rsp],xmm0
> 
> +        movaps  xmm9,XMMWORD[48+rsp]
> 
> +        movaps  XMMWORD[48+rsp],xmm0
> 
> +        movaps  xmm10,XMMWORD[64+rsp]
> 
> +        movaps  XMMWORD[64+rsp],xmm0
> 
> +        movaps  xmm11,XMMWORD[80+rsp]
> 
> +        movaps  XMMWORD[80+rsp],xmm0
> 
> +        movaps  xmm12,XMMWORD[96+rsp]
> 
> +        movaps  XMMWORD[96+rsp],xmm0
> 
> +        movaps  xmm13,XMMWORD[112+rsp]
> 
> +        movaps  XMMWORD[112+rsp],xmm0
> 
> +        movaps  xmm14,XMMWORD[128+rsp]
> 
> +        movaps  XMMWORD[128+rsp],xmm0
> 
> +        movaps  xmm15,XMMWORD[144+rsp]
> 
> +        movaps  XMMWORD[144+rsp],xmm0
> 
> +        lea     rax,[((160+40))+rsp]
> 
> +$L$ocb_dec_pop:
> 
> +        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$ocb_dec_epilogue:
> 
> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> 
> +        mov     rsi,QWORD[16+rsp]
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +$L$SEH_end_aesni_ocb_decrypt:
> 
> +
> 
> +
> 
> +ALIGN   32
> 
> +__ocb_decrypt6:
> 
> +
> 
> +        pxor    xmm15,xmm9
> 
> +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> 
> +        movdqa  xmm12,xmm10
> 
> +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> 
> +        movdqa  xmm14,xmm10
> 
> +        pxor    xmm10,xmm15
> 
> +        movdqu  xmm15,XMMWORD[r14*1+rbx]
> 
> +        pxor    xmm11,xmm10
> 
> +        pxor    xmm2,xmm10
> 
> +        pxor    xmm12,xmm11
> 
> +        pxor    xmm3,xmm11
> 
> +        pxor    xmm13,xmm12
> 
> +        pxor    xmm4,xmm12
> 
> +        pxor    xmm14,xmm13
> 
> +        pxor    xmm5,xmm13
> 
> +        pxor    xmm15,xmm14
> 
> +        pxor    xmm6,xmm14
> 
> +        pxor    xmm7,xmm15
> 
> +        movups  xmm0,XMMWORD[32+r11]
> 
> +
> 
> +        lea     r12,[1+r8]
> 
> +        lea     r13,[3+r8]
> 
> +        lea     r14,[5+r8]
> 
> +        add     r8,6
> 
> +        pxor    xmm10,xmm9
> 
> +        bsf     r12,r12
> 
> +        bsf     r13,r13
> 
> +        bsf     r14,r14
> 
> +
> 
> +DB      102,15,56,222,209
> 
> +DB      102,15,56,222,217
> 
> +DB      102,15,56,222,225
> 
> +DB      102,15,56,222,233
> 
> +        pxor    xmm11,xmm9
> 
> +        pxor    xmm12,xmm9
> 
> +DB      102,15,56,222,241
> 
> +        pxor    xmm13,xmm9
> 
> +        pxor    xmm14,xmm9
> 
> +DB      102,15,56,222,249
> 
> +        movups  xmm1,XMMWORD[48+r11]
> 
> +        pxor    xmm15,xmm9
> 
> +
> 
> +DB      102,15,56,222,208
> 
> +DB      102,15,56,222,216
> 
> +DB      102,15,56,222,224
> 
> +DB      102,15,56,222,232
> 
> +DB      102,15,56,222,240
> 
> +DB      102,15,56,222,248
> 
> +        movups  xmm0,XMMWORD[64+r11]
> 
> +        shl     r12,4
> 
> +        shl     r13,4
> 
> +        jmp     NEAR $L$ocb_dec_loop6
> 
> +
> 
> +ALIGN   32
> 
> +$L$ocb_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[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
> 
> +DB      102,15,56,222,240
> 
> +DB      102,15,56,222,248
> 
> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> 
> +        jnz     NEAR $L$ocb_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[16+r11]
> 
> +        shl     r14,4
> 
> +
> 
> +DB      102,65,15,56,223,210
> 
> +        movdqu  xmm10,XMMWORD[rbx]
> 
> +        mov     rax,r10
> 
> +DB      102,65,15,56,223,219
> 
> +DB      102,65,15,56,223,228
> 
> +DB      102,65,15,56,223,237
> 
> +DB      102,65,15,56,223,246
> 
> +DB      102,65,15,56,223,255
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   32
> 
> +__ocb_decrypt4:
> 
> +
> 
> +        pxor    xmm15,xmm9
> 
> +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> 
> +        movdqa  xmm12,xmm10
> 
> +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> 
> +        pxor    xmm10,xmm15
> 
> +        pxor    xmm11,xmm10
> 
> +        pxor    xmm2,xmm10
> 
> +        pxor    xmm12,xmm11
> 
> +        pxor    xmm3,xmm11
> 
> +        pxor    xmm13,xmm12
> 
> +        pxor    xmm4,xmm12
> 
> +        pxor    xmm5,xmm13
> 
> +        movups  xmm0,XMMWORD[32+r11]
> 
> +
> 
> +        pxor    xmm10,xmm9
> 
> +        pxor    xmm11,xmm9
> 
> +        pxor    xmm12,xmm9
> 
> +        pxor    xmm13,xmm9
> 
> +
> 
> +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[48+r11]
> 
> +
> 
> +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[64+r11]
> 
> +        jmp     NEAR $L$ocb_dec_loop4
> 
> +
> 
> +ALIGN   32
> 
> +$L$ocb_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[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[((-16))+rax*1+rcx]
> 
> +        jnz     NEAR $L$ocb_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[16+r11]
> 
> +        mov     rax,r10
> 
> +
> 
> +DB      102,65,15,56,223,210
> 
> +DB      102,65,15,56,223,219
> 
> +DB      102,65,15,56,223,228
> 
> +DB      102,65,15,56,223,237
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   32
> 
> +__ocb_decrypt1:
> 
> +
> 
> +        pxor    xmm7,xmm15
> 
> +        pxor    xmm7,xmm9
> 
> +        pxor    xmm2,xmm7
> 
> +        movups  xmm0,XMMWORD[32+r11]
> 
> +
> 
> +DB      102,15,56,222,209
> 
> +        movups  xmm1,XMMWORD[48+r11]
> 
> +        pxor    xmm7,xmm9
> 
> +
> 
> +DB      102,15,56,222,208
> 
> +        movups  xmm0,XMMWORD[64+r11]
> 
> +        jmp     NEAR $L$ocb_dec_loop1
> 
> +
> 
> +ALIGN   32
> 
> +$L$ocb_dec_loop1:
> 
> +DB      102,15,56,222,209
> 
> +        movups  xmm1,XMMWORD[rax*1+rcx]
> 
> +        add     rax,32
> 
> +
> 
> +DB      102,15,56,222,208
> 
> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> 
> +        jnz     NEAR $L$ocb_dec_loop1
> 
> +
> 
> +DB      102,15,56,222,209
> 
> +        movups  xmm1,XMMWORD[16+r11]
> 
> +        mov     rax,r10
> 
> +
> 
> +DB      102,15,56,223,215
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +global  aesni_cbc_encrypt
> 
> +
> 
> +ALIGN   16
> 
> +aesni_cbc_encrypt:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_aesni_cbc_encrypt:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +        mov     rcx,r9
> 
> +        mov     r8,QWORD[40+rsp]
> 
> +        mov     r9,QWORD[48+rsp]
> 
> +
> 
> +
> 
> +
> 
> +        test    rdx,rdx
> 
> +        jz      NEAR $L$cbc_ret
> 
> +
> 
> +        mov     r10d,DWORD[240+rcx]
> 
> +        mov     r11,rcx
> 
> +        test    r9d,r9d
> 
> +        jz      NEAR $L$cbc_decrypt
> 
> +
> 
> +        movups  xmm2,XMMWORD[r8]
> 
> +        mov     eax,r10d
> 
> +        cmp     rdx,16
> 
> +        jb      NEAR $L$cbc_enc_tail
> 
> +        sub     rdx,16
> 
> +        jmp     NEAR $L$cbc_enc_loop
> 
> +ALIGN   16
> 
> +$L$cbc_enc_loop:
> 
> +        movups  xmm3,XMMWORD[rdi]
> 
> +        lea     rdi,[16+rdi]
> 
> +
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        xorps   xmm3,xmm0
> 
> +        lea     rcx,[32+rcx]
> 
> +        xorps   xmm2,xmm3
> 
> +$L$oop_enc1_15:
> 
> +DB      102,15,56,220,209
> 
> +        dec     eax
> 
> +        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[rsi],xmm2
> 
> +        lea     rsi,[16+rsi]
> 
> +        sub     rdx,16
> 
> +        jnc     NEAR $L$cbc_enc_loop
> 
> +        add     rdx,16
> 
> +        jnz     NEAR $L$cbc_enc_tail
> 
> +        pxor    xmm0,xmm0
> 
> +        pxor    xmm1,xmm1
> 
> +        movups  XMMWORD[r8],xmm2
> 
> +        pxor    xmm2,xmm2
> 
> +        pxor    xmm3,xmm3
> 
> +        jmp     NEAR $L$cbc_ret
> 
> +
> 
> +$L$cbc_enc_tail:
> 
> +        mov     rcx,rdx
> 
> +        xchg    rsi,rdi
> 
> +        DD      0x9066A4F3
> 
> +        mov     ecx,16
> 
> +        sub     rcx,rdx
> 
> +        xor     eax,eax
> 
> +        DD      0x9066AAF3
> 
> +        lea     rdi,[((-16))+rdi]
> 
> +        mov     eax,r10d
> 
> +        mov     rsi,rdi
> 
> +        mov     rcx,r11
> 
> +        xor     rdx,rdx
> 
> +        jmp     NEAR $L$cbc_enc_loop
> 
> +
> 
> +ALIGN   16
> 
> +$L$cbc_decrypt:
> 
> +        cmp     rdx,16
> 
> +        jne     NEAR $L$cbc_decrypt_bulk
> 
> +
> 
> +
> 
> +
> 
> +        movdqu  xmm2,XMMWORD[rdi]
> 
> +        movdqu  xmm3,XMMWORD[r8]
> 
> +        movdqa  xmm4,xmm2
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        lea     rcx,[32+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +$L$oop_dec1_16:
> 
> +DB      102,15,56,222,209
> 
> +        dec     r10d
> 
> +        movups  xmm1,XMMWORD[rcx]
> 
> +        lea     rcx,[16+rcx]
> 
> +        jnz     NEAR $L$oop_dec1_16
> 
> +DB      102,15,56,223,209
> 
> +        pxor    xmm0,xmm0
> 
> +        pxor    xmm1,xmm1
> 
> +        movdqu  XMMWORD[r8],xmm4
> 
> +        xorps   xmm2,xmm3
> 
> +        pxor    xmm3,xmm3
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm2,xmm2
> 
> +        jmp     NEAR $L$cbc_ret
> 
> +ALIGN   16
> 
> +$L$cbc_decrypt_bulk:
> 
> +        lea     r11,[rsp]
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        sub     rsp,176
> 
> +        and     rsp,-16
> 
> +        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:
> 
> +        mov     rbp,rcx
> 
> +        movups  xmm10,XMMWORD[r8]
> 
> +        mov     eax,r10d
> 
> +        cmp     rdx,0x50
> 
> +        jbe     NEAR $L$cbc_dec_tail
> 
> +
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        movdqu  xmm2,XMMWORD[rdi]
> 
> +        movdqu  xmm3,XMMWORD[16+rdi]
> 
> +        movdqa  xmm11,xmm2
> 
> +        movdqu  xmm4,XMMWORD[32+rdi]
> 
> +        movdqa  xmm12,xmm3
> 
> +        movdqu  xmm5,XMMWORD[48+rdi]
> 
> +        movdqa  xmm13,xmm4
> 
> +        movdqu  xmm6,XMMWORD[64+rdi]
> 
> +        movdqa  xmm14,xmm5
> 
> +        movdqu  xmm7,XMMWORD[80+rdi]
> 
> +        movdqa  xmm15,xmm6
> 
> +        mov     r9d,DWORD[((OPENSSL_ia32cap_P+4))]
> 
> +        cmp     rdx,0x70
> 
> +        jbe     NEAR $L$cbc_dec_six_or_seven
> 
> +
> 
> +        and     r9d,71303168
> 
> +        sub     rdx,0x50
> 
> +        cmp     r9d,4194304
> 
> +        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[rsi],xmm9
> 
> +        lea     rsi,[16+rsi]
> 
> +$L$cbc_dec_loop8_enter:
> 
> +        movdqu  xmm8,XMMWORD[96+rdi]
> 
> +        pxor    xmm2,xmm0
> 
> +        movdqu  xmm9,XMMWORD[112+rdi]
> 
> +        pxor    xmm3,xmm0
> 
> +        movups  xmm1,XMMWORD[((16-112))+rcx]
> 
> +        pxor    xmm4,xmm0
> 
> +        mov     rbp,-1
> 
> +        cmp     rdx,0x70
> 
> +        pxor    xmm5,xmm0
> 
> +        pxor    xmm6,xmm0
> 
> +        pxor    xmm7,xmm0
> 
> +        pxor    xmm8,xmm0
> 
> +
> 
> +DB      102,15,56,222,209
> 
> +        pxor    xmm9,xmm0
> 
> +        movups  xmm0,XMMWORD[((32-112))+rcx]
> 
> +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
> 
> +DB      102,68,15,56,222,193
> 
> +        adc     rbp,0
> 
> +        and     rbp,128
> 
> +DB      102,68,15,56,222,201
> 
> +        add     rbp,rdi
> 
> +        movups  xmm1,XMMWORD[((48-112))+rcx]
> 
> +DB      102,15,56,222,208
> 
> +DB      102,15,56,222,216
> 
> +DB      102,15,56,222,224
> 
> +DB      102,15,56,222,232
> 
> +DB      102,15,56,222,240
> 
> +DB      102,15,56,222,248
> 
> +DB      102,68,15,56,222,192
> 
> +DB      102,68,15,56,222,200
> 
> +        movups  xmm0,XMMWORD[((64-112))+rcx]
> 
> +        nop
> 
> +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
> 
> +DB      102,68,15,56,222,193
> 
> +DB      102,68,15,56,222,201
> 
> +        movups  xmm1,XMMWORD[((80-112))+rcx]
> 
> +        nop
> 
> +DB      102,15,56,222,208
> 
> +DB      102,15,56,222,216
> 
> +DB      102,15,56,222,224
> 
> +DB      102,15,56,222,232
> 
> +DB      102,15,56,222,240
> 
> +DB      102,15,56,222,248
> 
> +DB      102,68,15,56,222,192
> 
> +DB      102,68,15,56,222,200
> 
> +        movups  xmm0,XMMWORD[((96-112))+rcx]
> 
> +        nop
> 
> +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
> 
> +DB      102,68,15,56,222,193
> 
> +DB      102,68,15,56,222,201
> 
> +        movups  xmm1,XMMWORD[((112-112))+rcx]
> 
> +        nop
> 
> +DB      102,15,56,222,208
> 
> +DB      102,15,56,222,216
> 
> +DB      102,15,56,222,224
> 
> +DB      102,15,56,222,232
> 
> +DB      102,15,56,222,240
> 
> +DB      102,15,56,222,248
> 
> +DB      102,68,15,56,222,192
> 
> +DB      102,68,15,56,222,200
> 
> +        movups  xmm0,XMMWORD[((128-112))+rcx]
> 
> +        nop
> 
> +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
> 
> +DB      102,68,15,56,222,193
> 
> +DB      102,68,15,56,222,201
> 
> +        movups  xmm1,XMMWORD[((144-112))+rcx]
> 
> +        cmp     eax,11
> 
> +DB      102,15,56,222,208
> 
> +DB      102,15,56,222,216
> 
> +DB      102,15,56,222,224
> 
> +DB      102,15,56,222,232
> 
> +DB      102,15,56,222,240
> 
> +DB      102,15,56,222,248
> 
> +DB      102,68,15,56,222,192
> 
> +DB      102,68,15,56,222,200
> 
> +        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
> 
> +DB      102,15,56,222,233
> 
> +DB      102,15,56,222,241
> 
> +DB      102,15,56,222,249
> 
> +DB      102,68,15,56,222,193
> 
> +DB      102,68,15,56,222,201
> 
> +        movups  xmm1,XMMWORD[((176-112))+rcx]
> 
> +        nop
> 
> +DB      102,15,56,222,208
> 
> +DB      102,15,56,222,216
> 
> +DB      102,15,56,222,224
> 
> +DB      102,15,56,222,232
> 
> +DB      102,15,56,222,240
> 
> +DB      102,15,56,222,248
> 
> +DB      102,68,15,56,222,192
> 
> +DB      102,68,15,56,222,200
> 
> +        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
> 
> +DB      102,15,56,222,233
> 
> +DB      102,15,56,222,241
> 
> +DB      102,15,56,222,249
> 
> +DB      102,68,15,56,222,193
> 
> +DB      102,68,15,56,222,201
> 
> +        movups  xmm1,XMMWORD[((208-112))+rcx]
> 
> +        nop
> 
> +DB      102,15,56,222,208
> 
> +DB      102,15,56,222,216
> 
> +DB      102,15,56,222,224
> 
> +DB      102,15,56,222,232
> 
> +DB      102,15,56,222,240
> 
> +DB      102,15,56,222,248
> 
> +DB      102,68,15,56,222,192
> 
> +DB      102,68,15,56,222,200
> 
> +        movups  xmm0,XMMWORD[((224-112))+rcx]
> 
> +        jmp     NEAR $L$cbc_dec_done
> 
> +ALIGN   16
> 
> +$L$cbc_dec_done:
> 
> +DB      102,15,56,222,209
> 
> +DB      102,15,56,222,217
> 
> +        pxor    xmm10,xmm0
> 
> +        pxor    xmm11,xmm0
> 
> +DB      102,15,56,222,225
> 
> +DB      102,15,56,222,233
> 
> +        pxor    xmm12,xmm0
> 
> +        pxor    xmm13,xmm0
> 
> +DB      102,15,56,222,241
> 
> +DB      102,15,56,222,249
> 
> +        pxor    xmm14,xmm0
> 
> +        pxor    xmm15,xmm0
> 
> +DB      102,68,15,56,222,193
> 
> +DB      102,68,15,56,222,201
> 
> +        movdqu  xmm1,XMMWORD[80+rdi]
> 
> +
> 
> +DB      102,65,15,56,223,210
> 
> +        movdqu  xmm10,XMMWORD[96+rdi]
> 
> +        pxor    xmm1,xmm0
> 
> +DB      102,65,15,56,223,219
> 
> +        pxor    xmm10,xmm0
> 
> +        movdqu  xmm0,XMMWORD[112+rdi]
> 
> +DB      102,65,15,56,223,228
> 
> +        lea     rdi,[128+rdi]
> 
> +        movdqu  xmm11,XMMWORD[rbp]
> 
> +DB      102,65,15,56,223,237
> 
> +DB      102,65,15,56,223,246
> 
> +        movdqu  xmm12,XMMWORD[16+rbp]
> 
> +        movdqu  xmm13,XMMWORD[32+rbp]
> 
> +DB      102,65,15,56,223,255
> 
> +DB      102,68,15,56,223,193
> 
> +        movdqu  xmm14,XMMWORD[48+rbp]
> 
> +        movdqu  xmm15,XMMWORD[64+rbp]
> 
> +DB      102,69,15,56,223,202
> 
> +        movdqa  xmm10,xmm0
> 
> +        movdqu  xmm1,XMMWORD[80+rbp]
> 
> +        movups  xmm0,XMMWORD[((-112))+rcx]
> 
> +
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        movdqa  xmm2,xmm11
> 
> +        movups  XMMWORD[16+rsi],xmm3
> 
> +        movdqa  xmm3,xmm12
> 
> +        movups  XMMWORD[32+rsi],xmm4
> 
> +        movdqa  xmm4,xmm13
> 
> +        movups  XMMWORD[48+rsi],xmm5
> 
> +        movdqa  xmm5,xmm14
> 
> +        movups  XMMWORD[64+rsi],xmm6
> 
> +        movdqa  xmm6,xmm15
> 
> +        movups  XMMWORD[80+rsi],xmm7
> 
> +        movdqa  xmm7,xmm1
> 
> +        movups  XMMWORD[96+rsi],xmm8
> 
> +        lea     rsi,[112+rsi]
> 
> +
> 
> +        sub     rdx,0x80
> 
> +        ja      NEAR $L$cbc_dec_loop8
> 
> +
> 
> +        movaps  xmm2,xmm9
> 
> +        lea     rcx,[((-112))+rcx]
> 
> +        add     rdx,0x70
> 
> +        jle     NEAR $L$cbc_dec_clear_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,0x60
> 
> +        ja      NEAR $L$cbc_dec_seven
> 
> +
> 
> +        movaps  xmm8,xmm7
> 
> +        call    _aesni_decrypt6
> 
> +        pxor    xmm2,xmm10
> 
> +        movaps  xmm10,xmm8
> 
> +        pxor    xmm3,xmm11
> 
> +        movdqu  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm4,xmm12
> 
> +        movdqu  XMMWORD[16+rsi],xmm3
> 
> +        pxor    xmm3,xmm3
> 
> +        pxor    xmm5,xmm13
> 
> +        movdqu  XMMWORD[32+rsi],xmm4
> 
> +        pxor    xmm4,xmm4
> 
> +        pxor    xmm6,xmm14
> 
> +        movdqu  XMMWORD[48+rsi],xmm5
> 
> +        pxor    xmm5,xmm5
> 
> +        pxor    xmm7,xmm15
> 
> +        movdqu  XMMWORD[64+rsi],xmm6
> 
> +        pxor    xmm6,xmm6
> 
> +        lea     rsi,[80+rsi]
> 
> +        movdqa  xmm2,xmm7
> 
> +        pxor    xmm7,xmm7
> 
> +        jmp     NEAR $L$cbc_dec_tail_collected
> 
> +
> 
> +ALIGN   16
> 
> +$L$cbc_dec_seven:
> 
> +        movups  xmm8,XMMWORD[96+rdi]
> 
> +        xorps   xmm9,xmm9
> 
> +        call    _aesni_decrypt8
> 
> +        movups  xmm9,XMMWORD[80+rdi]
> 
> +        pxor    xmm2,xmm10
> 
> +        movups  xmm10,XMMWORD[96+rdi]
> 
> +        pxor    xmm3,xmm11
> 
> +        movdqu  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm4,xmm12
> 
> +        movdqu  XMMWORD[16+rsi],xmm3
> 
> +        pxor    xmm3,xmm3
> 
> +        pxor    xmm5,xmm13
> 
> +        movdqu  XMMWORD[32+rsi],xmm4
> 
> +        pxor    xmm4,xmm4
> 
> +        pxor    xmm6,xmm14
> 
> +        movdqu  XMMWORD[48+rsi],xmm5
> 
> +        pxor    xmm5,xmm5
> 
> +        pxor    xmm7,xmm15
> 
> +        movdqu  XMMWORD[64+rsi],xmm6
> 
> +        pxor    xmm6,xmm6
> 
> +        pxor    xmm8,xmm9
> 
> +        movdqu  XMMWORD[80+rsi],xmm7
> 
> +        pxor    xmm7,xmm7
> 
> +        lea     rsi,[96+rsi]
> 
> +        movdqa  xmm2,xmm8
> 
> +        pxor    xmm8,xmm8
> 
> +        pxor    xmm9,xmm9
> 
> +        jmp     NEAR $L$cbc_dec_tail_collected
> 
> +
> 
> +ALIGN   16
> 
> +$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[32+rdi]
> 
> +        movdqa  xmm12,xmm3
> 
> +        movdqu  xmm5,XMMWORD[48+rdi]
> 
> +        movdqa  xmm13,xmm4
> 
> +        movdqu  xmm6,XMMWORD[64+rdi]
> 
> +        movdqa  xmm14,xmm5
> 
> +        movdqu  xmm7,XMMWORD[80+rdi]
> 
> +        movdqa  xmm15,xmm6
> 
> +$L$cbc_dec_loop6_enter:
> 
> +        lea     rdi,[96+rdi]
> 
> +        movdqa  xmm8,xmm7
> 
> +
> 
> +        call    _aesni_decrypt6
> 
> +
> 
> +        pxor    xmm2,xmm10
> 
> +        movdqa  xmm10,xmm8
> 
> +        pxor    xmm3,xmm11
> 
> +        movdqu  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm4,xmm12
> 
> +        movdqu  XMMWORD[16+rsi],xmm3
> 
> +        pxor    xmm5,xmm13
> 
> +        movdqu  XMMWORD[32+rsi],xmm4
> 
> +        pxor    xmm6,xmm14
> 
> +        mov     rcx,rbp
> 
> +        movdqu  XMMWORD[48+rsi],xmm5
> 
> +        pxor    xmm7,xmm15
> 
> +        mov     eax,r10d
> 
> +        movdqu  XMMWORD[64+rsi],xmm6
> 
> +        lea     rsi,[80+rsi]
> 
> +        sub     rdx,0x60
> 
> +        ja      NEAR $L$cbc_dec_loop6
> 
> +
> 
> +        movdqa  xmm2,xmm7
> 
> +        add     rdx,0x50
> 
> +        jle     NEAR $L$cbc_dec_clear_tail_collected
> 
> +        movups  XMMWORD[rsi],xmm7
> 
> +        lea     rsi,[16+rsi]
> 
> +
> 
> +$L$cbc_dec_tail:
> 
> +        movups  xmm2,XMMWORD[rdi]
> 
> +        sub     rdx,0x10
> 
> +        jbe     NEAR $L$cbc_dec_one
> 
> +
> 
> +        movups  xmm3,XMMWORD[16+rdi]
> 
> +        movaps  xmm11,xmm2
> 
> +        sub     rdx,0x10
> 
> +        jbe     NEAR $L$cbc_dec_two
> 
> +
> 
> +        movups  xmm4,XMMWORD[32+rdi]
> 
> +        movaps  xmm12,xmm3
> 
> +        sub     rdx,0x10
> 
> +        jbe     NEAR $L$cbc_dec_three
> 
> +
> 
> +        movups  xmm5,XMMWORD[48+rdi]
> 
> +        movaps  xmm13,xmm4
> 
> +        sub     rdx,0x10
> 
> +        jbe     NEAR $L$cbc_dec_four
> 
> +
> 
> +        movups  xmm6,XMMWORD[64+rdi]
> 
> +        movaps  xmm14,xmm5
> 
> +        movaps  xmm15,xmm6
> 
> +        xorps   xmm7,xmm7
> 
> +        call    _aesni_decrypt6
> 
> +        pxor    xmm2,xmm10
> 
> +        movaps  xmm10,xmm15
> 
> +        pxor    xmm3,xmm11
> 
> +        movdqu  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm4,xmm12
> 
> +        movdqu  XMMWORD[16+rsi],xmm3
> 
> +        pxor    xmm3,xmm3
> 
> +        pxor    xmm5,xmm13
> 
> +        movdqu  XMMWORD[32+rsi],xmm4
> 
> +        pxor    xmm4,xmm4
> 
> +        pxor    xmm6,xmm14
> 
> +        movdqu  XMMWORD[48+rsi],xmm5
> 
> +        pxor    xmm5,xmm5
> 
> +        lea     rsi,[64+rsi]
> 
> +        movdqa  xmm2,xmm6
> 
> +        pxor    xmm6,xmm6
> 
> +        pxor    xmm7,xmm7
> 
> +        sub     rdx,0x10
> 
> +        jmp     NEAR $L$cbc_dec_tail_collected
> 
> +
> 
> +ALIGN   16
> 
> +$L$cbc_dec_one:
> 
> +        movaps  xmm11,xmm2
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        movups  xmm1,XMMWORD[16+rcx]
> 
> +        lea     rcx,[32+rcx]
> 
> +        xorps   xmm2,xmm0
> 
> +$L$oop_dec1_17:
> 
> +DB      102,15,56,222,209
> 
> +        dec     eax
> 
> +        movups  xmm1,XMMWORD[rcx]
> 
> +        lea     rcx,[16+rcx]
> 
> +        jnz     NEAR $L$oop_dec1_17
> 
> +DB      102,15,56,223,209
> 
> +        xorps   xmm2,xmm10
> 
> +        movaps  xmm10,xmm11
> 
> +        jmp     NEAR $L$cbc_dec_tail_collected
> 
> +ALIGN   16
> 
> +$L$cbc_dec_two:
> 
> +        movaps  xmm12,xmm3
> 
> +        call    _aesni_decrypt2
> 
> +        pxor    xmm2,xmm10
> 
> +        movaps  xmm10,xmm12
> 
> +        pxor    xmm3,xmm11
> 
> +        movdqu  XMMWORD[rsi],xmm2
> 
> +        movdqa  xmm2,xmm3
> 
> +        pxor    xmm3,xmm3
> 
> +        lea     rsi,[16+rsi]
> 
> +        jmp     NEAR $L$cbc_dec_tail_collected
> 
> +ALIGN   16
> 
> +$L$cbc_dec_three:
> 
> +        movaps  xmm13,xmm4
> 
> +        call    _aesni_decrypt3
> 
> +        pxor    xmm2,xmm10
> 
> +        movaps  xmm10,xmm13
> 
> +        pxor    xmm3,xmm11
> 
> +        movdqu  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm4,xmm12
> 
> +        movdqu  XMMWORD[16+rsi],xmm3
> 
> +        pxor    xmm3,xmm3
> 
> +        movdqa  xmm2,xmm4
> 
> +        pxor    xmm4,xmm4
> 
> +        lea     rsi,[32+rsi]
> 
> +        jmp     NEAR $L$cbc_dec_tail_collected
> 
> +ALIGN   16
> 
> +$L$cbc_dec_four:
> 
> +        movaps  xmm14,xmm5
> 
> +        call    _aesni_decrypt4
> 
> +        pxor    xmm2,xmm10
> 
> +        movaps  xmm10,xmm14
> 
> +        pxor    xmm3,xmm11
> 
> +        movdqu  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm4,xmm12
> 
> +        movdqu  XMMWORD[16+rsi],xmm3
> 
> +        pxor    xmm3,xmm3
> 
> +        pxor    xmm5,xmm13
> 
> +        movdqu  XMMWORD[32+rsi],xmm4
> 
> +        pxor    xmm4,xmm4
> 
> +        movdqa  xmm2,xmm5
> 
> +        pxor    xmm5,xmm5
> 
> +        lea     rsi,[48+rsi]
> 
> +        jmp     NEAR $L$cbc_dec_tail_collected
> 
> +
> 
> +ALIGN   16
> 
> +$L$cbc_dec_clear_tail_collected:
> 
> +        pxor    xmm3,xmm3
> 
> +        pxor    xmm4,xmm4
> 
> +        pxor    xmm5,xmm5
> 
> +$L$cbc_dec_tail_collected:
> 
> +        movups  XMMWORD[r8],xmm10
> 
> +        and     rdx,15
> 
> +        jnz     NEAR $L$cbc_dec_tail_partial
> 
> +        movups  XMMWORD[rsi],xmm2
> 
> +        pxor    xmm2,xmm2
> 
> +        jmp     NEAR $L$cbc_dec_ret
> 
> +ALIGN   16
> 
> +$L$cbc_dec_tail_partial:
> 
> +        movaps  XMMWORD[rsp],xmm2
> 
> +        pxor    xmm2,xmm2
> 
> +        mov     rcx,16
> 
> +        mov     rdi,rsi
> 
> +        sub     rcx,rdx
> 
> +        lea     rsi,[rsp]
> 
> +        DD      0x9066A4F3
> 
> +        movdqa  XMMWORD[rsp],xmm2
> 
> +
> 
> +$L$cbc_dec_ret:
> 
> +        xorps   xmm0,xmm0
> 
> +        pxor    xmm1,xmm1
> 
> +        movaps  xmm6,XMMWORD[16+rsp]
> 
> +        movaps  XMMWORD[16+rsp],xmm0
> 
> +        movaps  xmm7,XMMWORD[32+rsp]
> 
> +        movaps  XMMWORD[32+rsp],xmm0
> 
> +        movaps  xmm8,XMMWORD[48+rsp]
> 
> +        movaps  XMMWORD[48+rsp],xmm0
> 
> +        movaps  xmm9,XMMWORD[64+rsp]
> 
> +        movaps  XMMWORD[64+rsp],xmm0
> 
> +        movaps  xmm10,XMMWORD[80+rsp]
> 
> +        movaps  XMMWORD[80+rsp],xmm0
> 
> +        movaps  xmm11,XMMWORD[96+rsp]
> 
> +        movaps  XMMWORD[96+rsp],xmm0
> 
> +        movaps  xmm12,XMMWORD[112+rsp]
> 
> +        movaps  XMMWORD[112+rsp],xmm0
> 
> +        movaps  xmm13,XMMWORD[128+rsp]
> 
> +        movaps  XMMWORD[128+rsp],xmm0
> 
> +        movaps  xmm14,XMMWORD[144+rsp]
> 
> +        movaps  XMMWORD[144+rsp],xmm0
> 
> +        movaps  xmm15,XMMWORD[160+rsp]
> 
> +        movaps  XMMWORD[160+rsp],xmm0
> 
> +        mov     rbp,QWORD[((-8))+r11]
> 
> +
> 
> +        lea     rsp,[r11]
> 
> +
> 
> +$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:
> 
> +global  aesni_set_decrypt_key
> 
> +
> 
> +ALIGN   16
> 
> +aesni_set_decrypt_key:
> 
> +
> 
> +DB      0x48,0x83,0xEC,0x08
> 
> +
> 
> +        call    __aesni_set_encrypt_key
> 
> +        shl     edx,4
> 
> +        test    eax,eax
> 
> +        jnz     NEAR $L$dec_key_ret
> 
> +        lea     rcx,[16+rdx*1+r8]
> 
> +
> 
> +        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[r8]
> 
> +        movups  xmm1,XMMWORD[rcx]
> 
> +DB      102,15,56,219,192
> 
> +DB      102,15,56,219,201
> 
> +        lea     r8,[16+r8]
> 
> +        lea     rcx,[((-16))+rcx]
> 
> +        movups  XMMWORD[16+rcx],xmm0
> 
> +        movups  XMMWORD[(-16)+r8],xmm1
> 
> +        cmp     rcx,r8
> 
> +        ja      NEAR $L$dec_key_inverse
> 
> +
> 
> +        movups  xmm0,XMMWORD[r8]
> 
> +DB      102,15,56,219,192
> 
> +        pxor    xmm1,xmm1
> 
> +        movups  XMMWORD[rcx],xmm0
> 
> +        pxor    xmm0,xmm0
> 
> +$L$dec_key_ret:
> 
> +        add     rsp,8
> 
> +
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +$L$SEH_end_set_decrypt_key:
> 
> +
> 
> +global  aesni_set_encrypt_key
> 
> +
> 
> +ALIGN   16
> 
> +aesni_set_encrypt_key:
> 
> +__aesni_set_encrypt_key:
> 
> +
> 
> +DB      0x48,0x83,0xEC,0x08
> 
> +
> 
> +        mov     rax,-1
> 
> +        test    rcx,rcx
> 
> +        jz      NEAR $L$enc_key_ret
> 
> +        test    r8,r8
> 
> +        jz      NEAR $L$enc_key_ret
> 
> +
> 
> +        mov     r10d,268437504
> 
> +        movups  xmm0,XMMWORD[rcx]
> 
> +        xorps   xmm4,xmm4
> 
> +        and     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
> 
> +        lea     rax,[16+r8]
> 
> +        cmp     edx,256
> 
> +        je      NEAR $L$14rounds
> 
> +        cmp     edx,192
> 
> +        je      NEAR $L$12rounds
> 
> +        cmp     edx,128
> 
> +        jne     NEAR $L$bad_keybits
> 
> +
> 
> +$L$10rounds:
> 
> +        mov     edx,9
> 
> +        cmp     r10d,268435456
> 
> +        je      NEAR $L$10rounds_alt
> 
> +
> 
> +        movups  XMMWORD[r8],xmm0
> 
> +DB      102,15,58,223,200,1
> 
> +        call    $L$key_expansion_128_cold
> 
> +DB      102,15,58,223,200,2
> 
> +        call    $L$key_expansion_128
> 
> +DB      102,15,58,223,200,4
> 
> +        call    $L$key_expansion_128
> 
> +DB      102,15,58,223,200,8
> 
> +        call    $L$key_expansion_128
> 
> +DB      102,15,58,223,200,16
> 
> +        call    $L$key_expansion_128
> 
> +DB      102,15,58,223,200,32
> 
> +        call    $L$key_expansion_128
> 
> +DB      102,15,58,223,200,64
> 
> +        call    $L$key_expansion_128
> 
> +DB      102,15,58,223,200,128
> 
> +        call    $L$key_expansion_128
> 
> +DB      102,15,58,223,200,27
> 
> +        call    $L$key_expansion_128
> 
> +DB      102,15,58,223,200,54
> 
> +        call    $L$key_expansion_128
> 
> +        movups  XMMWORD[rax],xmm0
> 
> +        mov     DWORD[80+rax],edx
> 
> +        xor     eax,eax
> 
> +        jmp     NEAR $L$enc_key_ret
> 
> +
> 
> +ALIGN   16
> 
> +$L$10rounds_alt:
> 
> +        movdqa  xmm5,XMMWORD[$L$key_rotate]
> 
> +        mov     r10d,8
> 
> +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> 
> +        movdqa  xmm2,xmm0
> 
> +        movdqu  XMMWORD[r8],xmm0
> 
> +        jmp     NEAR $L$oop_key128
> 
> +
> 
> +ALIGN   16
> 
> +$L$oop_key128:
> 
> +DB      102,15,56,0,197
> 
> +DB      102,15,56,221,196
> 
> +        pslld   xmm4,1
> 
> +        lea     rax,[16+rax]
> 
> +
> 
> +        movdqa  xmm3,xmm2
> 
> +        pslldq  xmm2,4
> 
> +        pxor    xmm3,xmm2
> 
> +        pslldq  xmm2,4
> 
> +        pxor    xmm3,xmm2
> 
> +        pslldq  xmm2,4
> 
> +        pxor    xmm2,xmm3
> 
> +
> 
> +        pxor    xmm0,xmm2
> 
> +        movdqu  XMMWORD[(-16)+rax],xmm0
> 
> +        movdqa  xmm2,xmm0
> 
> +
> 
> +        dec     r10d
> 
> +        jnz     NEAR $L$oop_key128
> 
> +
> 
> +        movdqa  xmm4,XMMWORD[$L$key_rcon1b]
> 
> +
> 
> +DB      102,15,56,0,197
> 
> +DB      102,15,56,221,196
> 
> +        pslld   xmm4,1
> 
> +
> 
> +        movdqa  xmm3,xmm2
> 
> +        pslldq  xmm2,4
> 
> +        pxor    xmm3,xmm2
> 
> +        pslldq  xmm2,4
> 
> +        pxor    xmm3,xmm2
> 
> +        pslldq  xmm2,4
> 
> +        pxor    xmm2,xmm3
> 
> +
> 
> +        pxor    xmm0,xmm2
> 
> +        movdqu  XMMWORD[rax],xmm0
> 
> +
> 
> +        movdqa  xmm2,xmm0
> 
> +DB      102,15,56,0,197
> 
> +DB      102,15,56,221,196
> 
> +
> 
> +        movdqa  xmm3,xmm2
> 
> +        pslldq  xmm2,4
> 
> +        pxor    xmm3,xmm2
> 
> +        pslldq  xmm2,4
> 
> +        pxor    xmm3,xmm2
> 
> +        pslldq  xmm2,4
> 
> +        pxor    xmm2,xmm3
> 
> +
> 
> +        pxor    xmm0,xmm2
> 
> +        movdqu  XMMWORD[16+rax],xmm0
> 
> +
> 
> +        mov     DWORD[96+rax],edx
> 
> +        xor     eax,eax
> 
> +        jmp     NEAR $L$enc_key_ret
> 
> +
> 
> +ALIGN   16
> 
> +$L$12rounds:
> 
> +        movq    xmm2,QWORD[16+rcx]
> 
> +        mov     edx,11
> 
> +        cmp     r10d,268435456
> 
> +        je      NEAR $L$12rounds_alt
> 
> +
> 
> +        movups  XMMWORD[r8],xmm0
> 
> +DB      102,15,58,223,202,1
> 
> +        call    $L$key_expansion_192a_cold
> 
> +DB      102,15,58,223,202,2
> 
> +        call    $L$key_expansion_192b
> 
> +DB      102,15,58,223,202,4
> 
> +        call    $L$key_expansion_192a
> 
> +DB      102,15,58,223,202,8
> 
> +        call    $L$key_expansion_192b
> 
> +DB      102,15,58,223,202,16
> 
> +        call    $L$key_expansion_192a
> 
> +DB      102,15,58,223,202,32
> 
> +        call    $L$key_expansion_192b
> 
> +DB      102,15,58,223,202,64
> 
> +        call    $L$key_expansion_192a
> 
> +DB      102,15,58,223,202,128
> 
> +        call    $L$key_expansion_192b
> 
> +        movups  XMMWORD[rax],xmm0
> 
> +        mov     DWORD[48+rax],edx
> 
> +        xor     rax,rax
> 
> +        jmp     NEAR $L$enc_key_ret
> 
> +
> 
> +ALIGN   16
> 
> +$L$12rounds_alt:
> 
> +        movdqa  xmm5,XMMWORD[$L$key_rotate192]
> 
> +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> 
> +        mov     r10d,8
> 
> +        movdqu  XMMWORD[r8],xmm0
> 
> +        jmp     NEAR $L$oop_key192
> 
> +
> 
> +ALIGN   16
> 
> +$L$oop_key192:
> 
> +        movq    QWORD[rax],xmm2
> 
> +        movdqa  xmm1,xmm2
> 
> +DB      102,15,56,0,213
> 
> +DB      102,15,56,221,212
> 
> +        pslld   xmm4,1
> 
> +        lea     rax,[24+rax]
> 
> +
> 
> +        movdqa  xmm3,xmm0
> 
> +        pslldq  xmm0,4
> 
> +        pxor    xmm3,xmm0
> 
> +        pslldq  xmm0,4
> 
> +        pxor    xmm3,xmm0
> 
> +        pslldq  xmm0,4
> 
> +        pxor    xmm0,xmm3
> 
> +
> 
> +        pshufd  xmm3,xmm0,0xff
> 
> +        pxor    xmm3,xmm1
> 
> +        pslldq  xmm1,4
> 
> +        pxor    xmm3,xmm1
> 
> +
> 
> +        pxor    xmm0,xmm2
> 
> +        pxor    xmm2,xmm3
> 
> +        movdqu  XMMWORD[(-16)+rax],xmm0
> 
> +
> 
> +        dec     r10d
> 
> +        jnz     NEAR $L$oop_key192
> 
> +
> 
> +        mov     DWORD[32+rax],edx
> 
> +        xor     eax,eax
> 
> +        jmp     NEAR $L$enc_key_ret
> 
> +
> 
> +ALIGN   16
> 
> +$L$14rounds:
> 
> +        movups  xmm2,XMMWORD[16+rcx]
> 
> +        mov     edx,13
> 
> +        lea     rax,[16+rax]
> 
> +        cmp     r10d,268435456
> 
> +        je      NEAR $L$14rounds_alt
> 
> +
> 
> +        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
> 
> +        call    $L$key_expansion_256b
> 
> +DB      102,15,58,223,202,2
> 
> +        call    $L$key_expansion_256a
> 
> +DB      102,15,58,223,200,2
> 
> +        call    $L$key_expansion_256b
> 
> +DB      102,15,58,223,202,4
> 
> +        call    $L$key_expansion_256a
> 
> +DB      102,15,58,223,200,4
> 
> +        call    $L$key_expansion_256b
> 
> +DB      102,15,58,223,202,8
> 
> +        call    $L$key_expansion_256a
> 
> +DB      102,15,58,223,200,8
> 
> +        call    $L$key_expansion_256b
> 
> +DB      102,15,58,223,202,16
> 
> +        call    $L$key_expansion_256a
> 
> +DB      102,15,58,223,200,16
> 
> +        call    $L$key_expansion_256b
> 
> +DB      102,15,58,223,202,32
> 
> +        call    $L$key_expansion_256a
> 
> +DB      102,15,58,223,200,32
> 
> +        call    $L$key_expansion_256b
> 
> +DB      102,15,58,223,202,64
> 
> +        call    $L$key_expansion_256a
> 
> +        movups  XMMWORD[rax],xmm0
> 
> +        mov     DWORD[16+rax],edx
> 
> +        xor     rax,rax
> 
> +        jmp     NEAR $L$enc_key_ret
> 
> +
> 
> +ALIGN   16
> 
> +$L$14rounds_alt:
> 
> +        movdqa  xmm5,XMMWORD[$L$key_rotate]
> 
> +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> 
> +        mov     r10d,7
> 
> +        movdqu  XMMWORD[r8],xmm0
> 
> +        movdqa  xmm1,xmm2
> 
> +        movdqu  XMMWORD[16+r8],xmm2
> 
> +        jmp     NEAR $L$oop_key256
> 
> +
> 
> +ALIGN   16
> 
> +$L$oop_key256:
> 
> +DB      102,15,56,0,213
> 
> +DB      102,15,56,221,212
> 
> +
> 
> +        movdqa  xmm3,xmm0
> 
> +        pslldq  xmm0,4
> 
> +        pxor    xmm3,xmm0
> 
> +        pslldq  xmm0,4
> 
> +        pxor    xmm3,xmm0
> 
> +        pslldq  xmm0,4
> 
> +        pxor    xmm0,xmm3
> 
> +        pslld   xmm4,1
> 
> +
> 
> +        pxor    xmm0,xmm2
> 
> +        movdqu  XMMWORD[rax],xmm0
> 
> +
> 
> +        dec     r10d
> 
> +        jz      NEAR $L$done_key256
> 
> +
> 
> +        pshufd  xmm2,xmm0,0xff
> 
> +        pxor    xmm3,xmm3
> 
> +DB      102,15,56,221,211
> 
> +
> 
> +        movdqa  xmm3,xmm1
> 
> +        pslldq  xmm1,4
> 
> +        pxor    xmm3,xmm1
> 
> +        pslldq  xmm1,4
> 
> +        pxor    xmm3,xmm1
> 
> +        pslldq  xmm1,4
> 
> +        pxor    xmm1,xmm3
> 
> +
> 
> +        pxor    xmm2,xmm1
> 
> +        movdqu  XMMWORD[16+rax],xmm2
> 
> +        lea     rax,[32+rax]
> 
> +        movdqa  xmm1,xmm2
> 
> +
> 
> +        jmp     NEAR $L$oop_key256
> 
> +
> 
> +$L$done_key256:
> 
> +        mov     DWORD[16+rax],edx
> 
> +        xor     eax,eax
> 
> +        jmp     NEAR $L$enc_key_ret
> 
> +
> 
> +ALIGN   16
> 
> +$L$bad_keybits:
> 
> +        mov     rax,-2
> 
> +$L$enc_key_ret:
> 
> +        pxor    xmm0,xmm0
> 
> +        pxor    xmm1,xmm1
> 
> +        pxor    xmm2,xmm2
> 
> +        pxor    xmm3,xmm3
> 
> +        pxor    xmm4,xmm4
> 
> +        pxor    xmm5,xmm5
> 
> +        add     rsp,8
> 
> +
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +$L$SEH_end_set_encrypt_key:
> 
> +
> 
> +ALIGN   16
> 
> +$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
> 
> +        xorps   xmm0,xmm4
> 
> +        shufps  xmm1,xmm1,255
> 
> +        xorps   xmm0,xmm1
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +ALIGN   16
> 
> +$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:
> 
> +        shufps  xmm4,xmm0,16
> 
> +        movdqa  xmm3,xmm2
> 
> +        xorps   xmm0,xmm4
> 
> +        shufps  xmm4,xmm0,140
> 
> +        pslldq  xmm3,4
> 
> +        xorps   xmm0,xmm4
> 
> +        pshufd  xmm1,xmm1,85
> 
> +        pxor    xmm2,xmm3
> 
> +        pxor    xmm0,xmm1
> 
> +        pshufd  xmm3,xmm0,255
> 
> +        pxor    xmm2,xmm3
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +ALIGN   16
> 
> +$L$key_expansion_192b:
> 
> +        movaps  xmm3,xmm0
> 
> +        shufps  xmm5,xmm0,68
> 
> +        movups  XMMWORD[rax],xmm5
> 
> +        shufps  xmm3,xmm2,78
> 
> +        movups  XMMWORD[16+rax],xmm3
> 
> +        lea     rax,[32+rax]
> 
> +        jmp     NEAR $L$key_expansion_192b_warm
> 
> +
> 
> +ALIGN   16
> 
> +$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
> 
> +        xorps   xmm0,xmm4
> 
> +        shufps  xmm1,xmm1,255
> 
> +        xorps   xmm0,xmm1
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +ALIGN   16
> 
> +$L$key_expansion_256b:
> 
> +        movups  XMMWORD[rax],xmm0
> 
> +        lea     rax,[16+rax]
> 
> +
> 
> +        shufps  xmm4,xmm2,16
> 
> +        xorps   xmm2,xmm4
> 
> +        shufps  xmm4,xmm2,140
> 
> +        xorps   xmm2,xmm4
> 
> +        shufps  xmm1,xmm1,170
> 
> +        xorps   xmm2,xmm1
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   64
> 
> +$L$bswap_mask:
> 
> +DB      15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
> 
> +$L$increment32:
> 
> +        DD      6,6,6,0
> 
> +$L$increment64:
> 
> +        DD      1,0,0,0
> 
> +$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
> 
> +$L$key_rotate:
> 
> +        DD      0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
> 
> +$L$key_rotate192:
> 
> +        DD      0x04070605,0x04070605,0x04070605,0x04070605
> 
> +$L$key_rcon1:
> 
> +        DD      1,1,1,1
> 
> +$L$key_rcon1b:
> 
> +        DD      0x1b,0x1b,0x1b,0x1b
> 
> +
> 
> +DB      65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
> 
> +DB      83,45,78,73,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   64
> 
> +EXTERN  __imp_RtlVirtualUnwind
> 
> +
> 
> +ALIGN   16
> 
> +ecb_ccm64_se_handler:
> 
> +        push    rsi
> 
> +        push    rdi
> 
> +        push    rbx
> 
> +        push    rbp
> 
> +        push    r12
> 
> +        push    r13
> 
> +        push    r14
> 
> +        push    r15
> 
> +        pushfq
> 
> +        sub     rsp,64
> 
> +
> 
> +        mov     rax,QWORD[120+r8]
> 
> +        mov     rbx,QWORD[248+r8]
> 
> +
> 
> +        mov     rsi,QWORD[8+r9]
> 
> +        mov     r11,QWORD[56+r9]
> 
> +
> 
> +        mov     r10d,DWORD[r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$common_seh_tail
> 
> +
> 
> +        mov     rax,QWORD[152+r8]
> 
> +
> 
> +        mov     r10d,DWORD[4+r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jae     NEAR $L$common_seh_tail
> 
> +
> 
> +        lea     rsi,[rax]
> 
> +        lea     rdi,[512+r8]
> 
> +        mov     ecx,8
> 
> +        DD      0xa548f3fc
> 
> +        lea     rax,[88+rax]
> 
> +
> 
> +        jmp     NEAR $L$common_seh_tail
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +ctr_xts_se_handler:
> 
> +        push    rsi
> 
> +        push    rdi
> 
> +        push    rbx
> 
> +        push    rbp
> 
> +        push    r12
> 
> +        push    r13
> 
> +        push    r14
> 
> +        push    r15
> 
> +        pushfq
> 
> +        sub     rsp,64
> 
> +
> 
> +        mov     rax,QWORD[120+r8]
> 
> +        mov     rbx,QWORD[248+r8]
> 
> +
> 
> +        mov     rsi,QWORD[8+r9]
> 
> +        mov     r11,QWORD[56+r9]
> 
> +
> 
> +        mov     r10d,DWORD[r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$common_seh_tail
> 
> +
> 
> +        mov     rax,QWORD[152+r8]
> 
> +
> 
> +        mov     r10d,DWORD[4+r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jae     NEAR $L$common_seh_tail
> 
> +
> 
> +        mov     rax,QWORD[208+r8]
> 
> +
> 
> +        lea     rsi,[((-168))+rax]
> 
> +        lea     rdi,[512+r8]
> 
> +        mov     ecx,20
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +        mov     rbp,QWORD[((-8))+rax]
> 
> +        mov     QWORD[160+r8],rbp
> 
> +        jmp     NEAR $L$common_seh_tail
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +ocb_se_handler:
> 
> +        push    rsi
> 
> +        push    rdi
> 
> +        push    rbx
> 
> +        push    rbp
> 
> +        push    r12
> 
> +        push    r13
> 
> +        push    r14
> 
> +        push    r15
> 
> +        pushfq
> 
> +        sub     rsp,64
> 
> +
> 
> +        mov     rax,QWORD[120+r8]
> 
> +        mov     rbx,QWORD[248+r8]
> 
> +
> 
> +        mov     rsi,QWORD[8+r9]
> 
> +        mov     r11,QWORD[56+r9]
> 
> +
> 
> +        mov     r10d,DWORD[r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$common_seh_tail
> 
> +
> 
> +        mov     r10d,DWORD[4+r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jae     NEAR $L$common_seh_tail
> 
> +
> 
> +        mov     r10d,DWORD[8+r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jae     NEAR $L$ocb_no_xmm
> 
> +
> 
> +        mov     rax,QWORD[152+r8]
> 
> +
> 
> +        lea     rsi,[rax]
> 
> +        lea     rdi,[512+r8]
> 
> +        mov     ecx,20
> 
> +        DD      0xa548f3fc
> 
> +        lea     rax,[((160+40))+rax]
> 
> +
> 
> +$L$ocb_no_xmm:
> 
> +        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     NEAR $L$common_seh_tail
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +cbc_se_handler:
> 
> +        push    rsi
> 
> +        push    rdi
> 
> +        push    rbx
> 
> +        push    rbp
> 
> +        push    r12
> 
> +        push    r13
> 
> +        push    r14
> 
> +        push    r15
> 
> +        pushfq
> 
> +        sub     rsp,64
> 
> +
> 
> +        mov     rax,QWORD[152+r8]
> 
> +        mov     rbx,QWORD[248+r8]
> 
> +
> 
> +        lea     r10,[$L$cbc_decrypt_bulk]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$common_seh_tail
> 
> +
> 
> +        mov     rax,QWORD[120+r8]
> 
> +
> 
> +        lea     r10,[$L$cbc_decrypt_body]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$common_seh_tail
> 
> +
> 
> +        mov     rax,QWORD[152+r8]
> 
> +
> 
> +        lea     r10,[$L$cbc_ret]
> 
> +        cmp     rbx,r10
> 
> +        jae     NEAR $L$common_seh_tail
> 
> +
> 
> +        lea     rsi,[16+rax]
> 
> +        lea     rdi,[512+r8]
> 
> +        mov     ecx,20
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +        mov     rax,QWORD[208+r8]
> 
> +
> 
> +        mov     rbp,QWORD[((-8))+rax]
> 
> +        mov     QWORD[160+r8],rbp
> 
> +
> 
> +$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[40+r9]
> 
> +        mov     rsi,r8
> 
> +        mov     ecx,154
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +        mov     rsi,r9
> 
> +        xor     rcx,rcx
> 
> +        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
> 
> +        popfq
> 
> +        pop     r15
> 
> +        pop     r14
> 
> +        pop     r13
> 
> +        pop     r12
> 
> +        pop     rbp
> 
> +        pop     rbx
> 
> +        pop     rdi
> 
> +        pop     rsi
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +section .pdata rdata align=4
> 
> +ALIGN   4
> 
> +        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      $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      $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      $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      $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      $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_ocb_encrypt wrt ..imagebase
> 
> +        DD      $L$SEH_end_aesni_ocb_encrypt wrt ..imagebase
> 
> +        DD      $L$SEH_info_ocb_enc wrt ..imagebase
> 
> +
> 
> +        DD      $L$SEH_begin_aesni_ocb_decrypt wrt ..imagebase
> 
> +        DD      $L$SEH_end_aesni_ocb_decrypt wrt ..imagebase
> 
> +        DD      $L$SEH_info_ocb_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      aesni_set_decrypt_key wrt ..imagebase
> 
> +        DD      $L$SEH_end_set_decrypt_key wrt ..imagebase
> 
> +        DD      $L$SEH_info_key wrt ..imagebase
> 
> +
> 
> +        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:
> 
> +DB      9,0,0,0
> 
> +        DD      ecb_ccm64_se_handler wrt ..imagebase
> 
> +        DD      $L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret wrt ..imagebase
> 
> +$L$SEH_info_ccm64_enc:
> 
> +DB      9,0,0,0
> 
> +        DD      ecb_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      ecb_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      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      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      ctr_xts_se_handler wrt ..imagebase
> 
> +        DD      $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue
> wrt ..imagebase
> 
> +$L$SEH_info_ocb_enc:
> 
> +DB      9,0,0,0
> 
> +        DD      ocb_se_handler wrt ..imagebase
> 
> +        DD      $L$ocb_enc_body wrt ..imagebase,$L$ocb_enc_epilogue
> wrt ..imagebase
> 
> +        DD      $L$ocb_enc_pop wrt ..imagebase
> 
> +        DD      0
> 
> +$L$SEH_info_ocb_dec:
> 
> +DB      9,0,0,0
> 
> +        DD      ocb_se_handler wrt ..imagebase
> 
> +        DD      $L$ocb_dec_body wrt ..imagebase,$L$ocb_dec_epilogue
> wrt ..imagebase
> 
> +        DD      $L$ocb_dec_pop wrt ..imagebase
> 
> +        DD      0
> 
> +$L$SEH_info_cbc:
> 
> +DB      9,0,0,0
> 
> +        DD      cbc_se_handler wrt ..imagebase
> 
> +$L$SEH_info_key:
> 
> +DB      0x01,0x04,0x01,0x00
> 
> +DB      0x04,0x02,0x00,0x00
> 
> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
> b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
> new file mode 100644
> index 0000000000..1c911fa294
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
> @@ -0,0 +1,1173 @@
> +; WARNING: do not edit!
> 
> +; Generated from openssl/crypto/aes/asm/vpaes-x86_64.pl
> 
> +;
> 
> +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved.
> 
> +;
> 
> +; Licensed under the OpenSSL license (the "License").  You may not use
> 
> +; this file except in compliance with the License.  You can obtain a copy
> 
> +; in the file LICENSE in the source distribution or at
> 
> +; https://www.openssl.org/source/license.html
> 
> +
> 
> +default rel
> 
> +%define XMMWORD
> 
> +%define YMMWORD
> 
> +%define ZMMWORD
> 
> +section .text code align=64
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +_vpaes_encrypt_core:
> 
> +
> 
> +        mov     r9,rdx
> 
> +        mov     r11,16
> 
> +        mov     eax,DWORD[240+rdx]
> 
> +        movdqa  xmm1,xmm9
> 
> +        movdqa  xmm2,XMMWORD[$L$k_ipt]
> 
> +        pandn   xmm1,xmm0
> 
> +        movdqu  xmm5,XMMWORD[r9]
> 
> +        psrld   xmm1,4
> 
> +        pand    xmm0,xmm9
> 
> +DB      102,15,56,0,208
> 
> +        movdqa  xmm0,XMMWORD[(($L$k_ipt+16))]
> 
> +DB      102,15,56,0,193
> 
> +        pxor    xmm2,xmm5
> 
> +        add     r9,16
> 
> +        pxor    xmm0,xmm2
> 
> +        lea     r10,[$L$k_mc_backward]
> 
> +        jmp     NEAR $L$enc_entry
> 
> +
> 
> +ALIGN   16
> 
> +$L$enc_loop:
> 
> +
> 
> +        movdqa  xmm4,xmm13
> 
> +        movdqa  xmm0,xmm12
> 
> +DB      102,15,56,0,226
> 
> +DB      102,15,56,0,195
> 
> +        pxor    xmm4,xmm5
> 
> +        movdqa  xmm5,xmm15
> 
> +        pxor    xmm0,xmm4
> 
> +        movdqa  xmm1,XMMWORD[((-64))+r10*1+r11]
> 
> +DB      102,15,56,0,234
> 
> +        movdqa  xmm4,XMMWORD[r10*1+r11]
> 
> +        movdqa  xmm2,xmm14
> 
> +DB      102,15,56,0,211
> 
> +        movdqa  xmm3,xmm0
> 
> +        pxor    xmm2,xmm5
> 
> +DB      102,15,56,0,193
> 
> +        add     r9,16
> 
> +        pxor    xmm0,xmm2
> 
> +DB      102,15,56,0,220
> 
> +        add     r11,16
> 
> +        pxor    xmm3,xmm0
> 
> +DB      102,15,56,0,193
> 
> +        and     r11,0x30
> 
> +        sub     rax,1
> 
> +        pxor    xmm0,xmm3
> 
> +
> 
> +$L$enc_entry:
> 
> +
> 
> +        movdqa  xmm1,xmm9
> 
> +        movdqa  xmm5,xmm11
> 
> +        pandn   xmm1,xmm0
> 
> +        psrld   xmm1,4
> 
> +        pand    xmm0,xmm9
> 
> +DB      102,15,56,0,232
> 
> +        movdqa  xmm3,xmm10
> 
> +        pxor    xmm0,xmm1
> 
> +DB      102,15,56,0,217
> 
> +        movdqa  xmm4,xmm10
> 
> +        pxor    xmm3,xmm5
> 
> +DB      102,15,56,0,224
> 
> +        movdqa  xmm2,xmm10
> 
> +        pxor    xmm4,xmm5
> 
> +DB      102,15,56,0,211
> 
> +        movdqa  xmm3,xmm10
> 
> +        pxor    xmm2,xmm0
> 
> +DB      102,15,56,0,220
> 
> +        movdqu  xmm5,XMMWORD[r9]
> 
> +        pxor    xmm3,xmm1
> 
> +        jnz     NEAR $L$enc_loop
> 
> +
> 
> +
> 
> +        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[64+r10*1+r11]
> 
> +        pxor    xmm0,xmm4
> 
> +DB      102,15,56,0,193
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +_vpaes_decrypt_core:
> 
> +
> 
> +        mov     r9,rdx
> 
> +        mov     eax,DWORD[240+rdx]
> 
> +        movdqa  xmm1,xmm9
> 
> +        movdqa  xmm2,XMMWORD[$L$k_dipt]
> 
> +        pandn   xmm1,xmm0
> 
> +        mov     r11,rax
> 
> +        psrld   xmm1,4
> 
> +        movdqu  xmm5,XMMWORD[r9]
> 
> +        shl     r11,4
> 
> +        pand    xmm0,xmm9
> 
> +DB      102,15,56,0,208
> 
> +        movdqa  xmm0,XMMWORD[(($L$k_dipt+16))]
> 
> +        xor     r11,0x30
> 
> +        lea     r10,[$L$k_dsbd]
> 
> +DB      102,15,56,0,193
> 
> +        and     r11,0x30
> 
> +        pxor    xmm2,xmm5
> 
> +        movdqa  xmm5,XMMWORD[(($L$k_mc_forward+48))]
> 
> +        pxor    xmm0,xmm2
> 
> +        add     r9,16
> 
> +        add     r11,r10
> 
> +        jmp     NEAR $L$dec_entry
> 
> +
> 
> +ALIGN   16
> 
> +$L$dec_loop:
> 
> +
> 
> +
> 
> +
> 
> +        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[r10]
> 
> +        pxor    xmm0,xmm1
> 
> +        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[32+r10]
> 
> +        pxor    xmm0,xmm1
> 
> +        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[64+r10]
> 
> +        pxor    xmm0,xmm1
> 
> +        movdqa  xmm1,XMMWORD[80+r10]
> 
> +
> 
> +DB      102,15,56,0,226
> 
> +DB      102,15,56,0,197
> 
> +DB      102,15,56,0,203
> 
> +        pxor    xmm0,xmm4
> 
> +        add     r9,16
> 
> +DB      102,15,58,15,237,12
> 
> +        pxor    xmm0,xmm1
> 
> +        sub     rax,1
> 
> +
> 
> +$L$dec_entry:
> 
> +
> 
> +        movdqa  xmm1,xmm9
> 
> +        pandn   xmm1,xmm0
> 
> +        movdqa  xmm2,xmm11
> 
> +        psrld   xmm1,4
> 
> +        pand    xmm0,xmm9
> 
> +DB      102,15,56,0,208
> 
> +        movdqa  xmm3,xmm10
> 
> +        pxor    xmm0,xmm1
> 
> +DB      102,15,56,0,217
> 
> +        movdqa  xmm4,xmm10
> 
> +        pxor    xmm3,xmm2
> 
> +DB      102,15,56,0,224
> 
> +        pxor    xmm4,xmm2
> 
> +        movdqa  xmm2,xmm10
> 
> +DB      102,15,56,0,211
> 
> +        movdqa  xmm3,xmm10
> 
> +        pxor    xmm2,xmm0
> 
> +DB      102,15,56,0,220
> 
> +        movdqu  xmm0,XMMWORD[r9]
> 
> +        pxor    xmm3,xmm1
> 
> +        jnz     NEAR $L$dec_loop
> 
> +
> 
> +
> 
> +        movdqa  xmm4,XMMWORD[96+r10]
> 
> +DB      102,15,56,0,226
> 
> +        pxor    xmm4,xmm0
> 
> +        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
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +_vpaes_schedule_core:
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +        call    _vpaes_preheat
> 
> +        movdqa  xmm8,XMMWORD[$L$k_rcon]
> 
> +        movdqu  xmm0,XMMWORD[rdi]
> 
> +
> 
> +
> 
> +        movdqa  xmm3,xmm0
> 
> +        lea     r11,[$L$k_ipt]
> 
> +        call    _vpaes_schedule_transform
> 
> +        movdqa  xmm7,xmm0
> 
> +
> 
> +        lea     r10,[$L$k_sr]
> 
> +        test    rcx,rcx
> 
> +        jnz     NEAR $L$schedule_am_decrypting
> 
> +
> 
> +
> 
> +        movdqu  XMMWORD[rdx],xmm0
> 
> +        jmp     NEAR $L$schedule_go
> 
> +
> 
> +$L$schedule_am_decrypting:
> 
> +
> 
> +        movdqa  xmm1,XMMWORD[r10*1+r8]
> 
> +DB      102,15,56,0,217
> 
> +        movdqu  XMMWORD[rdx],xmm3
> 
> +        xor     r8,0x30
> 
> +
> 
> +$L$schedule_go:
> 
> +        cmp     esi,192
> 
> +        ja      NEAR $L$schedule_256
> 
> +        je      NEAR $L$schedule_192
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +$L$schedule_128:
> 
> +        mov     esi,10
> 
> +
> 
> +$L$oop_schedule_128:
> 
> +        call    _vpaes_schedule_round
> 
> +        dec     rsi
> 
> +        jz      NEAR $L$schedule_mangle_last
> 
> +        call    _vpaes_schedule_mangle
> 
> +        jmp     NEAR $L$oop_schedule_128
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +$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:
> 
> +        call    _vpaes_schedule_round
> 
> +DB      102,15,58,15,198,8
> 
> +        call    _vpaes_schedule_mangle
> 
> +        call    _vpaes_schedule_192_smear
> 
> +        call    _vpaes_schedule_mangle
> 
> +        call    _vpaes_schedule_round
> 
> +        dec     rsi
> 
> +        jz      NEAR $L$schedule_mangle_last
> 
> +        call    _vpaes_schedule_mangle
> 
> +        call    _vpaes_schedule_192_smear
> 
> +        jmp     NEAR $L$oop_schedule_192
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +$L$schedule_256:
> 
> +        movdqu  xmm0,XMMWORD[16+rdi]
> 
> +        call    _vpaes_schedule_transform
> 
> +        mov     esi,7
> 
> +
> 
> +$L$oop_schedule_256:
> 
> +        call    _vpaes_schedule_mangle
> 
> +        movdqa  xmm6,xmm0
> 
> +
> 
> +
> 
> +        call    _vpaes_schedule_round
> 
> +        dec     rsi
> 
> +        jz      NEAR $L$schedule_mangle_last
> 
> +        call    _vpaes_schedule_mangle
> 
> +
> 
> +
> 
> +        pshufd  xmm0,xmm0,0xFF
> 
> +        movdqa  xmm5,xmm7
> 
> +        movdqa  xmm7,xmm6
> 
> +        call    _vpaes_schedule_low_round
> 
> +        movdqa  xmm7,xmm5
> 
> +
> 
> +        jmp     NEAR $L$oop_schedule_256
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +$L$schedule_mangle_last:
> 
> +
> 
> +        lea     r11,[$L$k_deskew]
> 
> +        test    rcx,rcx
> 
> +        jnz     NEAR $L$schedule_mangle_last_dec
> 
> +
> 
> +
> 
> +        movdqa  xmm1,XMMWORD[r10*1+r8]
> 
> +DB      102,15,56,0,193
> 
> +        lea     r11,[$L$k_opt]
> 
> +        add     rdx,32
> 
> +
> 
> +$L$schedule_mangle_last_dec:
> 
> +        add     rdx,-16
> 
> +        pxor    xmm0,XMMWORD[$L$k_s63]
> 
> +        call    _vpaes_schedule_transform
> 
> +        movdqu  XMMWORD[rdx],xmm0
> 
> +
> 
> +
> 
> +        pxor    xmm0,xmm0
> 
> +        pxor    xmm1,xmm1
> 
> +        pxor    xmm2,xmm2
> 
> +        pxor    xmm3,xmm3
> 
> +        pxor    xmm4,xmm4
> 
> +        pxor    xmm5,xmm5
> 
> +        pxor    xmm6,xmm6
> 
> +        pxor    xmm7,xmm7
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +_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
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +_vpaes_schedule_round:
> 
> +
> 
> +
> 
> +        pxor    xmm1,xmm1
> 
> +DB      102,65,15,58,15,200,15
> 
> +DB      102,69,15,58,15,192,15
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        pshufd  xmm0,xmm0,0xFF
> 
> +DB      102,15,58,15,192,1
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +_vpaes_schedule_low_round:
> 
> +
> 
> +        movdqa  xmm1,xmm7
> 
> +        pslldq  xmm7,4
> 
> +        pxor    xmm7,xmm1
> 
> +        movdqa  xmm1,xmm7
> 
> +        pslldq  xmm7,8
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm7,XMMWORD[$L$k_s63]
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm9
> 
> +        pandn   xmm1,xmm0
> 
> +        psrld   xmm1,4
> 
> +        pand    xmm0,xmm9
> 
> +        movdqa  xmm2,xmm11
> 
> +DB      102,15,56,0,208
> 
> +        pxor    xmm0,xmm1
> 
> +        movdqa  xmm3,xmm10
> 
> +DB      102,15,56,0,217
> 
> +        pxor    xmm3,xmm2
> 
> +        movdqa  xmm4,xmm10
> 
> +DB      102,15,56,0,224
> 
> +        pxor    xmm4,xmm2
> 
> +        movdqa  xmm2,xmm10
> 
> +DB      102,15,56,0,211
> 
> +        pxor    xmm2,xmm0
> 
> +        movdqa  xmm3,xmm10
> 
> +DB      102,15,56,0,220
> 
> +        pxor    xmm3,xmm1
> 
> +        movdqa  xmm4,xmm13
> 
> +DB      102,15,56,0,226
> 
> +        movdqa  xmm0,xmm12
> 
> +DB      102,15,56,0,195
> 
> +        pxor    xmm0,xmm4
> 
> +
> 
> +
> 
> +        pxor    xmm0,xmm7
> 
> +        movdqa  xmm7,xmm0
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +_vpaes_schedule_transform:
> 
> +
> 
> +        movdqa  xmm1,xmm9
> 
> +        pandn   xmm1,xmm0
> 
> +        psrld   xmm1,4
> 
> +        pand    xmm0,xmm9
> 
> +        movdqa  xmm2,XMMWORD[r11]
> 
> +DB      102,15,56,0,208
> 
> +        movdqa  xmm0,XMMWORD[16+r11]
> 
> +DB      102,15,56,0,193
> 
> +        pxor    xmm0,xmm2
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +_vpaes_schedule_mangle:
> 
> +
> 
> +        movdqa  xmm4,xmm0
> 
> +        movdqa  xmm5,XMMWORD[$L$k_mc_forward]
> 
> +        test    rcx,rcx
> 
> +        jnz     NEAR $L$schedule_mangle_dec
> 
> +
> 
> +
> 
> +        add     rdx,16
> 
> +        pxor    xmm4,XMMWORD[$L$k_s63]
> 
> +DB      102,15,56,0,229
> 
> +        movdqa  xmm3,xmm4
> 
> +DB      102,15,56,0,229
> 
> +        pxor    xmm3,xmm4
> 
> +DB      102,15,56,0,229
> 
> +        pxor    xmm3,xmm4
> 
> +
> 
> +        jmp     NEAR $L$schedule_mangle_both
> 
> +ALIGN   16
> 
> +$L$schedule_mangle_dec:
> 
> +
> 
> +        lea     r11,[$L$k_dksd]
> 
> +        movdqa  xmm1,xmm9
> 
> +        pandn   xmm1,xmm4
> 
> +        psrld   xmm1,4
> 
> +        pand    xmm4,xmm9
> 
> +
> 
> +        movdqa  xmm2,XMMWORD[r11]
> 
> +DB      102,15,56,0,212
> 
> +        movdqa  xmm3,XMMWORD[16+r11]
> 
> +DB      102,15,56,0,217
> 
> +        pxor    xmm3,xmm2
> 
> +DB      102,15,56,0,221
> 
> +
> 
> +        movdqa  xmm2,XMMWORD[32+r11]
> 
> +DB      102,15,56,0,212
> 
> +        pxor    xmm2,xmm3
> 
> +        movdqa  xmm3,XMMWORD[48+r11]
> 
> +DB      102,15,56,0,217
> 
> +        pxor    xmm3,xmm2
> 
> +DB      102,15,56,0,221
> 
> +
> 
> +        movdqa  xmm2,XMMWORD[64+r11]
> 
> +DB      102,15,56,0,212
> 
> +        pxor    xmm2,xmm3
> 
> +        movdqa  xmm3,XMMWORD[80+r11]
> 
> +DB      102,15,56,0,217
> 
> +        pxor    xmm3,xmm2
> 
> +DB      102,15,56,0,221
> 
> +
> 
> +        movdqa  xmm2,XMMWORD[96+r11]
> 
> +DB      102,15,56,0,212
> 
> +        pxor    xmm2,xmm3
> 
> +        movdqa  xmm3,XMMWORD[112+r11]
> 
> +DB      102,15,56,0,217
> 
> +        pxor    xmm3,xmm2
> 
> +
> 
> +        add     rdx,-16
> 
> +
> 
> +$L$schedule_mangle_both:
> 
> +        movdqa  xmm1,XMMWORD[r10*1+r8]
> 
> +DB      102,15,56,0,217
> 
> +        add     r8,-16
> 
> +        and     r8,0x30
> 
> +        movdqu  XMMWORD[rdx],xmm3
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +global  vpaes_set_encrypt_key
> 
> +
> 
> +ALIGN   16
> 
> +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:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +
> 
> +
> 
> +
> 
> +        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[240+rdx],eax
> 
> +
> 
> +        mov     ecx,0
> 
> +        mov     r8d,0x30
> 
> +        call    _vpaes_schedule_core
> 
> +        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[8+rsp]        ;WIN64 epilogue
> 
> +        mov     rsi,QWORD[16+rsp]
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +$L$SEH_end_vpaes_set_encrypt_key:
> 
> +
> 
> +global  vpaes_set_decrypt_key
> 
> +
> 
> +ALIGN   16
> 
> +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:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +
> 
> +
> 
> +
> 
> +        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[240+rdx],eax
> 
> +        shl     eax,4
> 
> +        lea     rdx,[16+rax*1+rdx]
> 
> +
> 
> +        mov     ecx,1
> 
> +        mov     r8d,esi
> 
> +        shr     r8d,1
> 
> +        and     r8d,32
> 
> +        xor     r8d,32
> 
> +        call    _vpaes_schedule_core
> 
> +        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[8+rsp]        ;WIN64 epilogue
> 
> +        mov     rsi,QWORD[16+rsp]
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +$L$SEH_end_vpaes_set_decrypt_key:
> 
> +
> 
> +global  vpaes_encrypt
> 
> +
> 
> +ALIGN   16
> 
> +vpaes_encrypt:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_vpaes_encrypt:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +
> 
> +
> 
> +
> 
> +        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[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:
> 
> +
> 
> +global  vpaes_decrypt
> 
> +
> 
> +ALIGN   16
> 
> +vpaes_decrypt:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_vpaes_decrypt:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +
> 
> +
> 
> +
> 
> +        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[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:
> 
> +global  vpaes_cbc_encrypt
> 
> +
> 
> +ALIGN   16
> 
> +vpaes_cbc_encrypt:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_vpaes_cbc_encrypt:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +        mov     rcx,r9
> 
> +        mov     r8,QWORD[40+rsp]
> 
> +        mov     r9,QWORD[48+rsp]
> 
> +
> 
> +
> 
> +
> 
> +        xchg    rdx,rcx
> 
> +        sub     rcx,16
> 
> +        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      NEAR $L$cbc_dec_loop
> 
> +        jmp     NEAR $L$cbc_enc_loop
> 
> +ALIGN   16
> 
> +$L$cbc_enc_loop:
> 
> +        movdqu  xmm0,XMMWORD[rdi]
> 
> +        pxor    xmm0,xmm6
> 
> +        call    _vpaes_encrypt_core
> 
> +        movdqa  xmm6,xmm0
> 
> +        movdqu  XMMWORD[rdi*1+rsi],xmm0
> 
> +        lea     rdi,[16+rdi]
> 
> +        sub     rcx,16
> 
> +        jnc     NEAR $L$cbc_enc_loop
> 
> +        jmp     NEAR $L$cbc_done
> 
> +ALIGN   16
> 
> +$L$cbc_dec_loop:
> 
> +        movdqu  xmm0,XMMWORD[rdi]
> 
> +        movdqa  xmm7,xmm0
> 
> +        call    _vpaes_decrypt_core
> 
> +        pxor    xmm0,xmm6
> 
> +        movdqa  xmm6,xmm7
> 
> +        movdqu  XMMWORD[rdi*1+rsi],xmm0
> 
> +        lea     rdi,[16+rdi]
> 
> +        sub     rcx,16
> 
> +        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:
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +_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
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +ALIGN   64
> 
> +_vpaes_consts:
> 
> +$L$k_inv:
> 
> +        DQ      0x0E05060F0D080180,0x040703090A0B0C02
> 
> +        DQ      0x01040A060F0B0780,0x030D0E0C02050809
> 
> +
> 
> +$L$k_s0F:
> 
> +        DQ      0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F
> 
> +
> 
> +$L$k_ipt:
> 
> +        DQ      0xC2B2E8985A2A7000,0xCABAE09052227808
> 
> +        DQ      0x4C01307D317C4D00,0xCD80B1FCB0FDCC81
> 
> +
> 
> +$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      0x0407060500030201,0x0C0F0E0D080B0A09
> 
> +        DQ      0x080B0A0904070605,0x000302010C0F0E0D
> 
> +        DQ      0x0C0F0E0D080B0A09,0x0407060500030201
> 
> +        DQ      0x000302010C0F0E0D,0x080B0A0904070605
> 
> +
> 
> +$L$k_mc_backward:
> 
> +        DQ      0x0605040702010003,0x0E0D0C0F0A09080B
> 
> +        DQ      0x020100030E0D0C0F,0x0A09080B06050407
> 
> +        DQ      0x0E0D0C0F0A09080B,0x0605040702010003
> 
> +        DQ      0x0A09080B06050407,0x020100030E0D0C0F
> 
> +
> 
> +$L$k_sr:
> 
> +        DQ      0x0706050403020100,0x0F0E0D0C0B0A0908
> 
> +        DQ      0x030E09040F0A0500,0x0B06010C07020D08
> 
> +        DQ      0x0F060D040B020900,0x070E050C030A0108
> 
> +        DQ      0x0B0E0104070A0D00,0x0306090C0F020508
> 
> +
> 
> +$L$k_rcon:
> 
> +        DQ      0x1F8391B9AF9DEEB6,0x702A98084D7C7D81
> 
> +
> 
> +$L$k_s63:
> 
> +        DQ      0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B
> 
> +
> 
> +$L$k_opt:
> 
> +        DQ      0xFF9F4929D6B66000,0xF7974121DEBE6808
> 
> +        DQ      0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0
> 
> +
> 
> +$L$k_deskew:
> 
> +        DQ      0x07E4A34047A4E300,0x1DFEB95A5DBEF91A
> 
> +        DQ      0x5F36B5DC83EA6900,0x2841C2ABF49D1E77
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +$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      0x0F505B040B545F00,0x154A411E114E451A
> 
> +        DQ      0x86E383E660056500,0x12771772F491F194
> 
> +
> 
> +$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
> 
> +DB      109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32
> 
> +DB      85,110,105,118,101,114,115,105,116,121,41,0
> 
> +ALIGN   64
> 
> +
> 
> +EXTERN  __imp_RtlVirtualUnwind
> 
> +
> 
> +ALIGN   16
> 
> +se_handler:
> 
> +        push    rsi
> 
> +        push    rdi
> 
> +        push    rbx
> 
> +        push    rbp
> 
> +        push    r12
> 
> +        push    r13
> 
> +        push    r14
> 
> +        push    r15
> 
> +        pushfq
> 
> +        sub     rsp,64
> 
> +
> 
> +        mov     rax,QWORD[120+r8]
> 
> +        mov     rbx,QWORD[248+r8]
> 
> +
> 
> +        mov     rsi,QWORD[8+r9]
> 
> +        mov     r11,QWORD[56+r9]
> 
> +
> 
> +        mov     r10d,DWORD[r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$in_prologue
> 
> +
> 
> +        mov     rax,QWORD[152+r8]
> 
> +
> 
> +        mov     r10d,DWORD[4+r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jae     NEAR $L$in_prologue
> 
> +
> 
> +        lea     rsi,[16+rax]
> 
> +        lea     rdi,[512+r8]
> 
> +        mov     ecx,20
> 
> +        DD      0xa548f3fc
> 
> +        lea     rax,[184+rax]
> 
> +
> 
> +$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[40+r9]
> 
> +        mov     rsi,r8
> 
> +        mov     ecx,154
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +        mov     rsi,r9
> 
> +        xor     rcx,rcx
> 
> +        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
> 
> +        popfq
> 
> +        pop     r15
> 
> +        pop     r14
> 
> +        pop     r13
> 
> +        pop     r12
> 
> +        pop     rbp
> 
> +        pop     rbx
> 
> +        pop     rdi
> 
> +        pop     rsi
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +section .pdata rdata align=4
> 
> +ALIGN   4
> 
> +        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      $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      $L$SEH_begin_vpaes_encrypt wrt ..imagebase
> 
> +        DD      $L$SEH_end_vpaes_encrypt wrt ..imagebase
> 
> +        DD      $L$SEH_info_vpaes_encrypt wrt ..imagebase
> 
> +
> 
> +        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      $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
> 
> +
> 
> +section .xdata rdata align=8
> 
> +ALIGN   8
> 
> +$L$SEH_info_vpaes_set_encrypt_key:
> 
> +DB      9,0,0,0
> 
> +        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      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      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      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      se_handler wrt ..imagebase
> 
> +        DD      $L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt ..imagebase
> 
> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
> x86_64.nasm
> new file mode 100644
> index 0000000000..60f283d5fb
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm
> @@ -0,0 +1,1569 @@
> +; WARNING: do not edit!
> 
> +; Generated from openssl/crypto/modes/asm/ghash-x86_64.pl
> 
> +;
> 
> +; Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved.
> 
> +;
> 
> +; Licensed under the OpenSSL license (the "License").  You may not use
> 
> +; this file except in compliance with the License.  You can obtain a copy
> 
> +; in the file LICENSE in the source distribution or at
> 
> +; https://www.openssl.org/source/license.html
> 
> +
> 
> +default rel
> 
> +%define XMMWORD
> 
> +%define YMMWORD
> 
> +%define ZMMWORD
> 
> +section .text code align=64
> 
> +
> 
> +EXTERN  OPENSSL_ia32cap_P
> 
> +
> 
> +global  gcm_gmult_4bit
> 
> +
> 
> +ALIGN   16
> 
> +gcm_gmult_4bit:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_gcm_gmult_4bit:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +
> 
> +
> 
> +
> 
> +        push    rbx
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        push    r12
> 
> +
> 
> +        push    r13
> 
> +
> 
> +        push    r14
> 
> +
> 
> +        push    r15
> 
> +
> 
> +        sub     rsp,280
> 
> +
> 
> +$L$gmult_prologue:
> 
> +
> 
> +        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[8+rax*1+rsi]
> 
> +        mov     r9,QWORD[rax*1+rsi]
> 
> +        and     bl,0xf0
> 
> +        mov     rdx,r8
> 
> +        jmp     NEAR $L$oop1
> 
> +
> 
> +ALIGN   16
> 
> +$L$oop1:
> 
> +        shr     r8,4
> 
> +        and     rdx,0xf
> 
> +        mov     r10,r9
> 
> +        mov     al,BYTE[rcx*1+rdi]
> 
> +        shr     r9,4
> 
> +        xor     r8,QWORD[8+rbx*1+rsi]
> 
> +        shl     r10,60
> 
> +        xor     r9,QWORD[rbx*1+rsi]
> 
> +        mov     bl,al
> 
> +        xor     r9,QWORD[rdx*8+r11]
> 
> +        mov     rdx,r8
> 
> +        shl     al,4
> 
> +        xor     r8,r10
> 
> +        dec     rcx
> 
> +        js      NEAR $L$break1
> 
> +
> 
> +        shr     r8,4
> 
> +        and     rdx,0xf
> 
> +        mov     r10,r9
> 
> +        shr     r9,4
> 
> +        xor     r8,QWORD[8+rax*1+rsi]
> 
> +        shl     r10,60
> 
> +        xor     r9,QWORD[rax*1+rsi]
> 
> +        and     bl,0xf0
> 
> +        xor     r9,QWORD[rdx*8+r11]
> 
> +        mov     rdx,r8
> 
> +        xor     r8,r10
> 
> +        jmp     NEAR $L$oop1
> 
> +
> 
> +ALIGN   16
> 
> +$L$break1:
> 
> +        shr     r8,4
> 
> +        and     rdx,0xf
> 
> +        mov     r10,r9
> 
> +        shr     r9,4
> 
> +        xor     r8,QWORD[8+rax*1+rsi]
> 
> +        shl     r10,60
> 
> +        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,0xf
> 
> +        mov     r10,r9
> 
> +        shr     r9,4
> 
> +        xor     r8,QWORD[8+rbx*1+rsi]
> 
> +        shl     r10,60
> 
> +        xor     r9,QWORD[rbx*1+rsi]
> 
> +        xor     r8,r10
> 
> +        xor     r9,QWORD[rdx*8+r11]
> 
> +
> 
> +        bswap   r8
> 
> +        bswap   r9
> 
> +        mov     QWORD[8+rdi],r8
> 
> +        mov     QWORD[rdi],r9
> 
> +
> 
> +        lea     rsi,[((280+48))+rsp]
> 
> +
> 
> +        mov     rbx,QWORD[((-8))+rsi]
> 
> +
> 
> +        lea     rsp,[rsi]
> 
> +
> 
> +$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:
> 
> +global  gcm_ghash_4bit
> 
> +
> 
> +ALIGN   16
> 
> +gcm_ghash_4bit:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_gcm_ghash_4bit:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +        mov     rcx,r9
> 
> +
> 
> +
> 
> +
> 
> +        push    rbx
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        push    r12
> 
> +
> 
> +        push    r13
> 
> +
> 
> +        push    r14
> 
> +
> 
> +        push    r15
> 
> +
> 
> +        sub     rsp,280
> 
> +
> 
> +$L$ghash_prologue:
> 
> +        mov     r14,rdx
> 
> +        mov     r15,rcx
> 
> +        sub     rsi,-128
> 
> +        lea     rbp,[((16+128))+rsp]
> 
> +        xor     edx,edx
> 
> +        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[((16+0-128))+rsi]
> 
> +        shl     dl,4
> 
> +        mov     rbx,QWORD[((16+8-128))+rsi]
> 
> +        shl     r10,60
> 
> +        mov     BYTE[rsp],dl
> 
> +        or      rax,r10
> 
> +        mov     dl,bl
> 
> +        shr     rbx,4
> 
> +        mov     r10,r9
> 
> +        shr     r9,4
> 
> +        mov     QWORD[rbp],r8
> 
> +        mov     r8,QWORD[((32+0-128))+rsi]
> 
> +        shl     dl,4
> 
> +        mov     QWORD[((0-128))+rbp],rax
> 
> +        mov     rax,QWORD[((32+8-128))+rsi]
> 
> +        shl     r10,60
> 
> +        mov     BYTE[1+rsp],dl
> 
> +        or      rbx,r10
> 
> +        mov     dl,al
> 
> +        shr     rax,4
> 
> +        mov     r10,r8
> 
> +        shr     r8,4
> 
> +        mov     QWORD[8+rbp],r9
> 
> +        mov     r9,QWORD[((48+0-128))+rsi]
> 
> +        shl     dl,4
> 
> +        mov     QWORD[((8-128))+rbp],rbx
> 
> +        mov     rbx,QWORD[((48+8-128))+rsi]
> 
> +        shl     r10,60
> 
> +        mov     BYTE[2+rsp],dl
> 
> +        or      rax,r10
> 
> +        mov     dl,bl
> 
> +        shr     rbx,4
> 
> +        mov     r10,r9
> 
> +        shr     r9,4
> 
> +        mov     QWORD[16+rbp],r8
> 
> +        mov     r8,QWORD[((64+0-128))+rsi]
> 
> +        shl     dl,4
> 
> +        mov     QWORD[((16-128))+rbp],rax
> 
> +        mov     rax,QWORD[((64+8-128))+rsi]
> 
> +        shl     r10,60
> 
> +        mov     BYTE[3+rsp],dl
> 
> +        or      rbx,r10
> 
> +        mov     dl,al
> 
> +        shr     rax,4
> 
> +        mov     r10,r8
> 
> +        shr     r8,4
> 
> +        mov     QWORD[24+rbp],r9
> 
> +        mov     r9,QWORD[((80+0-128))+rsi]
> 
> +        shl     dl,4
> 
> +        mov     QWORD[((24-128))+rbp],rbx
> 
> +        mov     rbx,QWORD[((80+8-128))+rsi]
> 
> +        shl     r10,60
> 
> +        mov     BYTE[4+rsp],dl
> 
> +        or      rax,r10
> 
> +        mov     dl,bl
> 
> +        shr     rbx,4
> 
> +        mov     r10,r9
> 
> +        shr     r9,4
> 
> +        mov     QWORD[32+rbp],r8
> 
> +        mov     r8,QWORD[((96+0-128))+rsi]
> 
> +        shl     dl,4
> 
> +        mov     QWORD[((32-128))+rbp],rax
> 
> +        mov     rax,QWORD[((96+8-128))+rsi]
> 
> +        shl     r10,60
> 
> +        mov     BYTE[5+rsp],dl
> 
> +        or      rbx,r10
> 
> +        mov     dl,al
> 
> +        shr     rax,4
> 
> +        mov     r10,r8
> 
> +        shr     r8,4
> 
> +        mov     QWORD[40+rbp],r9
> 
> +        mov     r9,QWORD[((112+0-128))+rsi]
> 
> +        shl     dl,4
> 
> +        mov     QWORD[((40-128))+rbp],rbx
> 
> +        mov     rbx,QWORD[((112+8-128))+rsi]
> 
> +        shl     r10,60
> 
> +        mov     BYTE[6+rsp],dl
> 
> +        or      rax,r10
> 
> +        mov     dl,bl
> 
> +        shr     rbx,4
> 
> +        mov     r10,r9
> 
> +        shr     r9,4
> 
> +        mov     QWORD[48+rbp],r8
> 
> +        mov     r8,QWORD[((128+0-128))+rsi]
> 
> +        shl     dl,4
> 
> +        mov     QWORD[((48-128))+rbp],rax
> 
> +        mov     rax,QWORD[((128+8-128))+rsi]
> 
> +        shl     r10,60
> 
> +        mov     BYTE[7+rsp],dl
> 
> +        or      rbx,r10
> 
> +        mov     dl,al
> 
> +        shr     rax,4
> 
> +        mov     r10,r8
> 
> +        shr     r8,4
> 
> +        mov     QWORD[56+rbp],r9
> 
> +        mov     r9,QWORD[((144+0-128))+rsi]
> 
> +        shl     dl,4
> 
> +        mov     QWORD[((56-128))+rbp],rbx
> 
> +        mov     rbx,QWORD[((144+8-128))+rsi]
> 
> +        shl     r10,60
> 
> +        mov     BYTE[8+rsp],dl
> 
> +        or      rax,r10
> 
> +        mov     dl,bl
> 
> +        shr     rbx,4
> 
> +        mov     r10,r9
> 
> +        shr     r9,4
> 
> +        mov     QWORD[64+rbp],r8
> 
> +        mov     r8,QWORD[((160+0-128))+rsi]
> 
> +        shl     dl,4
> 
> +        mov     QWORD[((64-128))+rbp],rax
> 
> +        mov     rax,QWORD[((160+8-128))+rsi]
> 
> +        shl     r10,60
> 
> +        mov     BYTE[9+rsp],dl
> 
> +        or      rbx,r10
> 
> +        mov     dl,al
> 
> +        shr     rax,4
> 
> +        mov     r10,r8
> 
> +        shr     r8,4
> 
> +        mov     QWORD[72+rbp],r9
> 
> +        mov     r9,QWORD[((176+0-128))+rsi]
> 
> +        shl     dl,4
> 
> +        mov     QWORD[((72-128))+rbp],rbx
> 
> +        mov     rbx,QWORD[((176+8-128))+rsi]
> 
> +        shl     r10,60
> 
> +        mov     BYTE[10+rsp],dl
> 
> +        or      rax,r10
> 
> +        mov     dl,bl
> 
> +        shr     rbx,4
> 
> +        mov     r10,r9
> 
> +        shr     r9,4
> 
> +        mov     QWORD[80+rbp],r8
> 
> +        mov     r8,QWORD[((192+0-128))+rsi]
> 
> +        shl     dl,4
> 
> +        mov     QWORD[((80-128))+rbp],rax
> 
> +        mov     rax,QWORD[((192+8-128))+rsi]
> 
> +        shl     r10,60
> 
> +        mov     BYTE[11+rsp],dl
> 
> +        or      rbx,r10
> 
> +        mov     dl,al
> 
> +        shr     rax,4
> 
> +        mov     r10,r8
> 
> +        shr     r8,4
> 
> +        mov     QWORD[88+rbp],r9
> 
> +        mov     r9,QWORD[((208+0-128))+rsi]
> 
> +        shl     dl,4
> 
> +        mov     QWORD[((88-128))+rbp],rbx
> 
> +        mov     rbx,QWORD[((208+8-128))+rsi]
> 
> +        shl     r10,60
> 
> +        mov     BYTE[12+rsp],dl
> 
> +        or      rax,r10
> 
> +        mov     dl,bl
> 
> +        shr     rbx,4
> 
> +        mov     r10,r9
> 
> +        shr     r9,4
> 
> +        mov     QWORD[96+rbp],r8
> 
> +        mov     r8,QWORD[((224+0-128))+rsi]
> 
> +        shl     dl,4
> 
> +        mov     QWORD[((96-128))+rbp],rax
> 
> +        mov     rax,QWORD[((224+8-128))+rsi]
> 
> +        shl     r10,60
> 
> +        mov     BYTE[13+rsp],dl
> 
> +        or      rbx,r10
> 
> +        mov     dl,al
> 
> +        shr     rax,4
> 
> +        mov     r10,r8
> 
> +        shr     r8,4
> 
> +        mov     QWORD[104+rbp],r9
> 
> +        mov     r9,QWORD[((240+0-128))+rsi]
> 
> +        shl     dl,4
> 
> +        mov     QWORD[((104-128))+rbp],rbx
> 
> +        mov     rbx,QWORD[((240+8-128))+rsi]
> 
> +        shl     r10,60
> 
> +        mov     BYTE[14+rsp],dl
> 
> +        or      rax,r10
> 
> +        mov     dl,bl
> 
> +        shr     rbx,4
> 
> +        mov     r10,r9
> 
> +        shr     r9,4
> 
> +        mov     QWORD[112+rbp],r8
> 
> +        shl     dl,4
> 
> +        mov     QWORD[((112-128))+rbp],rax
> 
> +        shl     r10,60
> 
> +        mov     BYTE[15+rsp],dl
> 
> +        or      rbx,r10
> 
> +        mov     QWORD[120+rbp],r9
> 
> +        mov     QWORD[((120-128))+rbp],rbx
> 
> +        add     rsi,-128
> 
> +        mov     r8,QWORD[8+rdi]
> 
> +        mov     r9,QWORD[rdi]
> 
> +        add     r15,r14
> 
> +        lea     r11,[$L$rem_8bit]
> 
> +        jmp     NEAR $L$outer_loop
> 
> +ALIGN   16
> 
> +$L$outer_loop:
> 
> +        xor     r9,QWORD[r14]
> 
> +        mov     rdx,QWORD[8+r14]
> 
> +        lea     r14,[16+r14]
> 
> +        xor     rdx,r8
> 
> +        mov     QWORD[rdi],r9
> 
> +        mov     QWORD[8+rdi],rdx
> 
> +        shr     rdx,32
> 
> +        xor     rax,rax
> 
> +        rol     edx,8
> 
> +        mov     al,dl
> 
> +        movzx   ebx,dl
> 
> +        shl     al,4
> 
> +        shr     ebx,4
> 
> +        rol     edx,8
> 
> +        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[rbx*1+rsp]
> 
> +        shr     ecx,4
> 
> +        xor     r12,r8
> 
> +        mov     r10,r9
> 
> +        shr     r8,8
> 
> +        movzx   r12,r12b
> 
> +        shr     r9,8
> 
> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> 
> +        shl     r10,56
> 
> +        xor     r9,QWORD[rbx*8+rbp]
> 
> +        rol     edx,8
> 
> +        xor     r8,QWORD[8+rax*1+rsi]
> 
> +        xor     r9,QWORD[rax*1+rsi]
> 
> +        mov     al,dl
> 
> +        xor     r8,r10
> 
> +        movzx   r12,WORD[r12*2+r11]
> 
> +        movzx   ebx,dl
> 
> +        shl     al,4
> 
> +        movzx   r13,BYTE[rcx*1+rsp]
> 
> +        shr     ebx,4
> 
> +        shl     r12,48
> 
> +        xor     r13,r8
> 
> +        mov     r10,r9
> 
> +        xor     r9,r12
> 
> +        shr     r8,8
> 
> +        movzx   r13,r13b
> 
> +        shr     r9,8
> 
> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> 
> +        shl     r10,56
> 
> +        xor     r9,QWORD[rcx*8+rbp]
> 
> +        rol     edx,8
> 
> +        xor     r8,QWORD[8+rax*1+rsi]
> 
> +        xor     r9,QWORD[rax*1+rsi]
> 
> +        mov     al,dl
> 
> +        xor     r8,r10
> 
> +        movzx   r13,WORD[r13*2+r11]
> 
> +        movzx   ecx,dl
> 
> +        shl     al,4
> 
> +        movzx   r12,BYTE[rbx*1+rsp]
> 
> +        shr     ecx,4
> 
> +        shl     r13,48
> 
> +        xor     r12,r8
> 
> +        mov     r10,r9
> 
> +        xor     r9,r13
> 
> +        shr     r8,8
> 
> +        movzx   r12,r12b
> 
> +        mov     edx,DWORD[8+rdi]
> 
> +        shr     r9,8
> 
> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> 
> +        shl     r10,56
> 
> +        xor     r9,QWORD[rbx*8+rbp]
> 
> +        rol     edx,8
> 
> +        xor     r8,QWORD[8+rax*1+rsi]
> 
> +        xor     r9,QWORD[rax*1+rsi]
> 
> +        mov     al,dl
> 
> +        xor     r8,r10
> 
> +        movzx   r12,WORD[r12*2+r11]
> 
> +        movzx   ebx,dl
> 
> +        shl     al,4
> 
> +        movzx   r13,BYTE[rcx*1+rsp]
> 
> +        shr     ebx,4
> 
> +        shl     r12,48
> 
> +        xor     r13,r8
> 
> +        mov     r10,r9
> 
> +        xor     r9,r12
> 
> +        shr     r8,8
> 
> +        movzx   r13,r13b
> 
> +        shr     r9,8
> 
> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> 
> +        shl     r10,56
> 
> +        xor     r9,QWORD[rcx*8+rbp]
> 
> +        rol     edx,8
> 
> +        xor     r8,QWORD[8+rax*1+rsi]
> 
> +        xor     r9,QWORD[rax*1+rsi]
> 
> +        mov     al,dl
> 
> +        xor     r8,r10
> 
> +        movzx   r13,WORD[r13*2+r11]
> 
> +        movzx   ecx,dl
> 
> +        shl     al,4
> 
> +        movzx   r12,BYTE[rbx*1+rsp]
> 
> +        shr     ecx,4
> 
> +        shl     r13,48
> 
> +        xor     r12,r8
> 
> +        mov     r10,r9
> 
> +        xor     r9,r13
> 
> +        shr     r8,8
> 
> +        movzx   r12,r12b
> 
> +        shr     r9,8
> 
> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> 
> +        shl     r10,56
> 
> +        xor     r9,QWORD[rbx*8+rbp]
> 
> +        rol     edx,8
> 
> +        xor     r8,QWORD[8+rax*1+rsi]
> 
> +        xor     r9,QWORD[rax*1+rsi]
> 
> +        mov     al,dl
> 
> +        xor     r8,r10
> 
> +        movzx   r12,WORD[r12*2+r11]
> 
> +        movzx   ebx,dl
> 
> +        shl     al,4
> 
> +        movzx   r13,BYTE[rcx*1+rsp]
> 
> +        shr     ebx,4
> 
> +        shl     r12,48
> 
> +        xor     r13,r8
> 
> +        mov     r10,r9
> 
> +        xor     r9,r12
> 
> +        shr     r8,8
> 
> +        movzx   r13,r13b
> 
> +        shr     r9,8
> 
> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> 
> +        shl     r10,56
> 
> +        xor     r9,QWORD[rcx*8+rbp]
> 
> +        rol     edx,8
> 
> +        xor     r8,QWORD[8+rax*1+rsi]
> 
> +        xor     r9,QWORD[rax*1+rsi]
> 
> +        mov     al,dl
> 
> +        xor     r8,r10
> 
> +        movzx   r13,WORD[r13*2+r11]
> 
> +        movzx   ecx,dl
> 
> +        shl     al,4
> 
> +        movzx   r12,BYTE[rbx*1+rsp]
> 
> +        shr     ecx,4
> 
> +        shl     r13,48
> 
> +        xor     r12,r8
> 
> +        mov     r10,r9
> 
> +        xor     r9,r13
> 
> +        shr     r8,8
> 
> +        movzx   r12,r12b
> 
> +        mov     edx,DWORD[4+rdi]
> 
> +        shr     r9,8
> 
> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> 
> +        shl     r10,56
> 
> +        xor     r9,QWORD[rbx*8+rbp]
> 
> +        rol     edx,8
> 
> +        xor     r8,QWORD[8+rax*1+rsi]
> 
> +        xor     r9,QWORD[rax*1+rsi]
> 
> +        mov     al,dl
> 
> +        xor     r8,r10
> 
> +        movzx   r12,WORD[r12*2+r11]
> 
> +        movzx   ebx,dl
> 
> +        shl     al,4
> 
> +        movzx   r13,BYTE[rcx*1+rsp]
> 
> +        shr     ebx,4
> 
> +        shl     r12,48
> 
> +        xor     r13,r8
> 
> +        mov     r10,r9
> 
> +        xor     r9,r12
> 
> +        shr     r8,8
> 
> +        movzx   r13,r13b
> 
> +        shr     r9,8
> 
> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> 
> +        shl     r10,56
> 
> +        xor     r9,QWORD[rcx*8+rbp]
> 
> +        rol     edx,8
> 
> +        xor     r8,QWORD[8+rax*1+rsi]
> 
> +        xor     r9,QWORD[rax*1+rsi]
> 
> +        mov     al,dl
> 
> +        xor     r8,r10
> 
> +        movzx   r13,WORD[r13*2+r11]
> 
> +        movzx   ecx,dl
> 
> +        shl     al,4
> 
> +        movzx   r12,BYTE[rbx*1+rsp]
> 
> +        shr     ecx,4
> 
> +        shl     r13,48
> 
> +        xor     r12,r8
> 
> +        mov     r10,r9
> 
> +        xor     r9,r13
> 
> +        shr     r8,8
> 
> +        movzx   r12,r12b
> 
> +        shr     r9,8
> 
> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> 
> +        shl     r10,56
> 
> +        xor     r9,QWORD[rbx*8+rbp]
> 
> +        rol     edx,8
> 
> +        xor     r8,QWORD[8+rax*1+rsi]
> 
> +        xor     r9,QWORD[rax*1+rsi]
> 
> +        mov     al,dl
> 
> +        xor     r8,r10
> 
> +        movzx   r12,WORD[r12*2+r11]
> 
> +        movzx   ebx,dl
> 
> +        shl     al,4
> 
> +        movzx   r13,BYTE[rcx*1+rsp]
> 
> +        shr     ebx,4
> 
> +        shl     r12,48
> 
> +        xor     r13,r8
> 
> +        mov     r10,r9
> 
> +        xor     r9,r12
> 
> +        shr     r8,8
> 
> +        movzx   r13,r13b
> 
> +        shr     r9,8
> 
> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> 
> +        shl     r10,56
> 
> +        xor     r9,QWORD[rcx*8+rbp]
> 
> +        rol     edx,8
> 
> +        xor     r8,QWORD[8+rax*1+rsi]
> 
> +        xor     r9,QWORD[rax*1+rsi]
> 
> +        mov     al,dl
> 
> +        xor     r8,r10
> 
> +        movzx   r13,WORD[r13*2+r11]
> 
> +        movzx   ecx,dl
> 
> +        shl     al,4
> 
> +        movzx   r12,BYTE[rbx*1+rsp]
> 
> +        shr     ecx,4
> 
> +        shl     r13,48
> 
> +        xor     r12,r8
> 
> +        mov     r10,r9
> 
> +        xor     r9,r13
> 
> +        shr     r8,8
> 
> +        movzx   r12,r12b
> 
> +        mov     edx,DWORD[rdi]
> 
> +        shr     r9,8
> 
> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> 
> +        shl     r10,56
> 
> +        xor     r9,QWORD[rbx*8+rbp]
> 
> +        rol     edx,8
> 
> +        xor     r8,QWORD[8+rax*1+rsi]
> 
> +        xor     r9,QWORD[rax*1+rsi]
> 
> +        mov     al,dl
> 
> +        xor     r8,r10
> 
> +        movzx   r12,WORD[r12*2+r11]
> 
> +        movzx   ebx,dl
> 
> +        shl     al,4
> 
> +        movzx   r13,BYTE[rcx*1+rsp]
> 
> +        shr     ebx,4
> 
> +        shl     r12,48
> 
> +        xor     r13,r8
> 
> +        mov     r10,r9
> 
> +        xor     r9,r12
> 
> +        shr     r8,8
> 
> +        movzx   r13,r13b
> 
> +        shr     r9,8
> 
> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> 
> +        shl     r10,56
> 
> +        xor     r9,QWORD[rcx*8+rbp]
> 
> +        rol     edx,8
> 
> +        xor     r8,QWORD[8+rax*1+rsi]
> 
> +        xor     r9,QWORD[rax*1+rsi]
> 
> +        mov     al,dl
> 
> +        xor     r8,r10
> 
> +        movzx   r13,WORD[r13*2+r11]
> 
> +        movzx   ecx,dl
> 
> +        shl     al,4
> 
> +        movzx   r12,BYTE[rbx*1+rsp]
> 
> +        shr     ecx,4
> 
> +        shl     r13,48
> 
> +        xor     r12,r8
> 
> +        mov     r10,r9
> 
> +        xor     r9,r13
> 
> +        shr     r8,8
> 
> +        movzx   r12,r12b
> 
> +        shr     r9,8
> 
> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> 
> +        shl     r10,56
> 
> +        xor     r9,QWORD[rbx*8+rbp]
> 
> +        rol     edx,8
> 
> +        xor     r8,QWORD[8+rax*1+rsi]
> 
> +        xor     r9,QWORD[rax*1+rsi]
> 
> +        mov     al,dl
> 
> +        xor     r8,r10
> 
> +        movzx   r12,WORD[r12*2+r11]
> 
> +        movzx   ebx,dl
> 
> +        shl     al,4
> 
> +        movzx   r13,BYTE[rcx*1+rsp]
> 
> +        shr     ebx,4
> 
> +        shl     r12,48
> 
> +        xor     r13,r8
> 
> +        mov     r10,r9
> 
> +        xor     r9,r12
> 
> +        shr     r8,8
> 
> +        movzx   r13,r13b
> 
> +        shr     r9,8
> 
> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> 
> +        shl     r10,56
> 
> +        xor     r9,QWORD[rcx*8+rbp]
> 
> +        rol     edx,8
> 
> +        xor     r8,QWORD[8+rax*1+rsi]
> 
> +        xor     r9,QWORD[rax*1+rsi]
> 
> +        mov     al,dl
> 
> +        xor     r8,r10
> 
> +        movzx   r13,WORD[r13*2+r11]
> 
> +        movzx   ecx,dl
> 
> +        shl     al,4
> 
> +        movzx   r12,BYTE[rbx*1+rsp]
> 
> +        and     ecx,240
> 
> +        shl     r13,48
> 
> +        xor     r12,r8
> 
> +        mov     r10,r9
> 
> +        xor     r9,r13
> 
> +        shr     r8,8
> 
> +        movzx   r12,r12b
> 
> +        mov     edx,DWORD[((-4))+rdi]
> 
> +        shr     r9,8
> 
> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> 
> +        shl     r10,56
> 
> +        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
> 
> +        movzx   r13,r8b
> 
> +        shr     r8,4
> 
> +        mov     r10,r9
> 
> +        shl     r13b,4
> 
> +        shr     r9,4
> 
> +        xor     r8,QWORD[8+rcx*1+rsi]
> 
> +        movzx   r13,WORD[r13*2+r11]
> 
> +        shl     r10,60
> 
> +        xor     r9,QWORD[rcx*1+rsi]
> 
> +        xor     r8,r10
> 
> +        shl     r13,48
> 
> +        bswap   r8
> 
> +        xor     r9,r13
> 
> +        bswap   r9
> 
> +        cmp     r14,r15
> 
> +        jb      NEAR $L$outer_loop
> 
> +        mov     QWORD[8+rdi],r8
> 
> +        mov     QWORD[rdi],r9
> 
> +
> 
> +        lea     rsi,[((280+48))+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$ghash_epilogue:
> 
> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> 
> +        mov     rsi,QWORD[16+rsp]
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +$L$SEH_end_gcm_ghash_4bit:
> 
> +global  gcm_init_clmul
> 
> +
> 
> +ALIGN   16
> 
> +gcm_init_clmul:
> 
> +
> 
> +$L$_init_clmul:
> 
> +$L$SEH_begin_gcm_init_clmul:
> 
> +
> 
> +DB      0x48,0x83,0xec,0x18
> 
> +DB      0x0f,0x29,0x34,0x24
> 
> +        movdqu  xmm2,XMMWORD[rdx]
> 
> +        pshufd  xmm2,xmm2,78
> 
> +
> 
> +
> 
> +        pshufd  xmm4,xmm2,255
> 
> +        movdqa  xmm3,xmm2
> 
> +        psllq   xmm2,1
> 
> +        pxor    xmm5,xmm5
> 
> +        psrlq   xmm3,63
> 
> +        pcmpgtd xmm5,xmm4
> 
> +        pslldq  xmm3,8
> 
> +        por     xmm2,xmm3
> 
> +
> 
> +
> 
> +        pand    xmm5,XMMWORD[$L$0x1c2_polynomial]
> 
> +        pxor    xmm2,xmm5
> 
> +
> 
> +
> 
> +        pshufd  xmm6,xmm2,78
> 
> +        movdqa  xmm0,xmm2
> 
> +        pxor    xmm6,xmm2
> 
> +        movdqa  xmm1,xmm0
> 
> +        pshufd  xmm3,xmm0,78
> 
> +        pxor    xmm3,xmm0
> 
> +DB      102,15,58,68,194,0
> 
> +DB      102,15,58,68,202,17
> 
> +DB      102,15,58,68,222,0
> 
> +        pxor    xmm3,xmm0
> 
> +        pxor    xmm3,xmm1
> 
> +
> 
> +        movdqa  xmm4,xmm3
> 
> +        psrldq  xmm3,8
> 
> +        pslldq  xmm4,8
> 
> +        pxor    xmm1,xmm3
> 
> +        pxor    xmm0,xmm4
> 
> +
> 
> +        movdqa  xmm4,xmm0
> 
> +        movdqa  xmm3,xmm0
> 
> +        psllq   xmm0,5
> 
> +        pxor    xmm3,xmm0
> 
> +        psllq   xmm0,1
> 
> +        pxor    xmm0,xmm3
> 
> +        psllq   xmm0,57
> 
> +        movdqa  xmm3,xmm0
> 
> +        pslldq  xmm0,8
> 
> +        psrldq  xmm3,8
> 
> +        pxor    xmm0,xmm4
> 
> +        pxor    xmm1,xmm3
> 
> +
> 
> +
> 
> +        movdqa  xmm4,xmm0
> 
> +        psrlq   xmm0,1
> 
> +        pxor    xmm1,xmm4
> 
> +        pxor    xmm4,xmm0
> 
> +        psrlq   xmm0,5
> 
> +        pxor    xmm0,xmm4
> 
> +        psrlq   xmm0,1
> 
> +        pxor    xmm0,xmm1
> 
> +        pshufd  xmm3,xmm2,78
> 
> +        pshufd  xmm4,xmm0,78
> 
> +        pxor    xmm3,xmm2
> 
> +        movdqu  XMMWORD[rcx],xmm2
> 
> +        pxor    xmm4,xmm0
> 
> +        movdqu  XMMWORD[16+rcx],xmm0
> 
> +DB      102,15,58,15,227,8
> 
> +        movdqu  XMMWORD[32+rcx],xmm4
> 
> +        movdqa  xmm1,xmm0
> 
> +        pshufd  xmm3,xmm0,78
> 
> +        pxor    xmm3,xmm0
> 
> +DB      102,15,58,68,194,0
> 
> +DB      102,15,58,68,202,17
> 
> +DB      102,15,58,68,222,0
> 
> +        pxor    xmm3,xmm0
> 
> +        pxor    xmm3,xmm1
> 
> +
> 
> +        movdqa  xmm4,xmm3
> 
> +        psrldq  xmm3,8
> 
> +        pslldq  xmm4,8
> 
> +        pxor    xmm1,xmm3
> 
> +        pxor    xmm0,xmm4
> 
> +
> 
> +        movdqa  xmm4,xmm0
> 
> +        movdqa  xmm3,xmm0
> 
> +        psllq   xmm0,5
> 
> +        pxor    xmm3,xmm0
> 
> +        psllq   xmm0,1
> 
> +        pxor    xmm0,xmm3
> 
> +        psllq   xmm0,57
> 
> +        movdqa  xmm3,xmm0
> 
> +        pslldq  xmm0,8
> 
> +        psrldq  xmm3,8
> 
> +        pxor    xmm0,xmm4
> 
> +        pxor    xmm1,xmm3
> 
> +
> 
> +
> 
> +        movdqa  xmm4,xmm0
> 
> +        psrlq   xmm0,1
> 
> +        pxor    xmm1,xmm4
> 
> +        pxor    xmm4,xmm0
> 
> +        psrlq   xmm0,5
> 
> +        pxor    xmm0,xmm4
> 
> +        psrlq   xmm0,1
> 
> +        pxor    xmm0,xmm1
> 
> +        movdqa  xmm5,xmm0
> 
> +        movdqa  xmm1,xmm0
> 
> +        pshufd  xmm3,xmm0,78
> 
> +        pxor    xmm3,xmm0
> 
> +DB      102,15,58,68,194,0
> 
> +DB      102,15,58,68,202,17
> 
> +DB      102,15,58,68,222,0
> 
> +        pxor    xmm3,xmm0
> 
> +        pxor    xmm3,xmm1
> 
> +
> 
> +        movdqa  xmm4,xmm3
> 
> +        psrldq  xmm3,8
> 
> +        pslldq  xmm4,8
> 
> +        pxor    xmm1,xmm3
> 
> +        pxor    xmm0,xmm4
> 
> +
> 
> +        movdqa  xmm4,xmm0
> 
> +        movdqa  xmm3,xmm0
> 
> +        psllq   xmm0,5
> 
> +        pxor    xmm3,xmm0
> 
> +        psllq   xmm0,1
> 
> +        pxor    xmm0,xmm3
> 
> +        psllq   xmm0,57
> 
> +        movdqa  xmm3,xmm0
> 
> +        pslldq  xmm0,8
> 
> +        psrldq  xmm3,8
> 
> +        pxor    xmm0,xmm4
> 
> +        pxor    xmm1,xmm3
> 
> +
> 
> +
> 
> +        movdqa  xmm4,xmm0
> 
> +        psrlq   xmm0,1
> 
> +        pxor    xmm1,xmm4
> 
> +        pxor    xmm4,xmm0
> 
> +        psrlq   xmm0,5
> 
> +        pxor    xmm0,xmm4
> 
> +        psrlq   xmm0,1
> 
> +        pxor    xmm0,xmm1
> 
> +        pshufd  xmm3,xmm5,78
> 
> +        pshufd  xmm4,xmm0,78
> 
> +        pxor    xmm3,xmm5
> 
> +        movdqu  XMMWORD[48+rcx],xmm5
> 
> +        pxor    xmm4,xmm0
> 
> +        movdqu  XMMWORD[64+rcx],xmm0
> 
> +DB      102,15,58,15,227,8
> 
> +        movdqu  XMMWORD[80+rcx],xmm4
> 
> +        movaps  xmm6,XMMWORD[rsp]
> 
> +        lea     rsp,[24+rsp]
> 
> +$L$SEH_end_gcm_init_clmul:
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +global  gcm_gmult_clmul
> 
> +
> 
> +ALIGN   16
> 
> +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
> 
> +        pxor    xmm3,xmm0
> 
> +DB      102,15,58,68,194,0
> 
> +DB      102,15,58,68,202,17
> 
> +DB      102,15,58,68,220,0
> 
> +        pxor    xmm3,xmm0
> 
> +        pxor    xmm3,xmm1
> 
> +
> 
> +        movdqa  xmm4,xmm3
> 
> +        psrldq  xmm3,8
> 
> +        pslldq  xmm4,8
> 
> +        pxor    xmm1,xmm3
> 
> +        pxor    xmm0,xmm4
> 
> +
> 
> +        movdqa  xmm4,xmm0
> 
> +        movdqa  xmm3,xmm0
> 
> +        psllq   xmm0,5
> 
> +        pxor    xmm3,xmm0
> 
> +        psllq   xmm0,1
> 
> +        pxor    xmm0,xmm3
> 
> +        psllq   xmm0,57
> 
> +        movdqa  xmm3,xmm0
> 
> +        pslldq  xmm0,8
> 
> +        psrldq  xmm3,8
> 
> +        pxor    xmm0,xmm4
> 
> +        pxor    xmm1,xmm3
> 
> +
> 
> +
> 
> +        movdqa  xmm4,xmm0
> 
> +        psrlq   xmm0,1
> 
> +        pxor    xmm1,xmm4
> 
> +        pxor    xmm4,xmm0
> 
> +        psrlq   xmm0,5
> 
> +        pxor    xmm0,xmm4
> 
> +        psrlq   xmm0,1
> 
> +        pxor    xmm0,xmm1
> 
> +DB      102,15,56,0,197
> 
> +        movdqu  XMMWORD[rcx],xmm0
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +global  gcm_ghash_clmul
> 
> +
> 
> +ALIGN   32
> 
> +gcm_ghash_clmul:
> 
> +
> 
> +$L$_ghash_clmul:
> 
> +        lea     rax,[((-136))+rsp]
> 
> +$L$SEH_begin_gcm_ghash_clmul:
> 
> +
> 
> +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[rcx]
> 
> +        movdqu  xmm2,XMMWORD[rdx]
> 
> +        movdqu  xmm7,XMMWORD[32+rdx]
> 
> +DB      102,65,15,56,0,194
> 
> +
> 
> +        sub     r9,0x10
> 
> +        jz      NEAR $L$odd_tail
> 
> +
> 
> +        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      NEAR $L$skip4x
> 
> +
> 
> +        sub     r9,0x30
> 
> +        mov     rax,0xA040608020C0E000
> 
> +        movdqu  xmm14,XMMWORD[48+rdx]
> 
> +        movdqu  xmm15,XMMWORD[64+rdx]
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +        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
> 
> +        pshufd  xmm4,xmm3,78
> 
> +        pxor    xmm4,xmm3
> 
> +DB      102,15,58,68,218,0
> 
> +DB      102,15,58,68,234,17
> 
> +DB      102,15,58,68,231,0
> 
> +
> 
> +        movdqa  xmm13,xmm11
> 
> +        pshufd  xmm12,xmm11,78
> 
> +        pxor    xmm12,xmm11
> 
> +DB      102,68,15,58,68,222,0
> 
> +DB      102,68,15,58,68,238,17
> 
> +DB      102,68,15,58,68,231,16
> 
> +        xorps   xmm3,xmm11
> 
> +        xorps   xmm5,xmm13
> 
> +        movups  xmm7,XMMWORD[80+rdx]
> 
> +        xorps   xmm4,xmm12
> 
> +
> 
> +        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
> 
> +        pshufd  xmm12,xmm11,78
> 
> +        pxor    xmm0,xmm8
> 
> +        pxor    xmm12,xmm11
> 
> +DB      102,69,15,58,68,222,0
> 
> +        movdqa  xmm1,xmm0
> 
> +        pshufd  xmm8,xmm0,78
> 
> +        pxor    xmm8,xmm0
> 
> +DB      102,69,15,58,68,238,17
> 
> +DB      102,68,15,58,68,231,0
> 
> +        xorps   xmm3,xmm11
> 
> +        xorps   xmm5,xmm13
> 
> +
> 
> +        lea     r8,[64+r8]
> 
> +        sub     r9,0x40
> 
> +        jc      NEAR $L$tail4x
> 
> +
> 
> +        jmp     NEAR $L$mod4_loop
> 
> +ALIGN   32
> 
> +$L$mod4_loop:
> 
> +DB      102,65,15,58,68,199,0
> 
> +        xorps   xmm4,xmm12
> 
> +        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[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[32+rdx]
> 
> +        xorps   xmm8,xmm4
> 
> +DB      102,68,15,58,68,218,0
> 
> +        pshufd  xmm4,xmm3,78
> 
> +
> 
> +        pxor    xmm8,xmm0
> 
> +        movdqa  xmm5,xmm3
> 
> +        pxor    xmm8,xmm1
> 
> +        pxor    xmm4,xmm3
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      102,68,15,58,68,234,17
> 
> +        pslldq  xmm8,8
> 
> +        psrldq  xmm9,8
> 
> +        pxor    xmm0,xmm8
> 
> +        movdqa  xmm8,XMMWORD[$L$7_mask]
> 
> +        pxor    xmm1,xmm9
> 
> +DB      102,76,15,110,200
> 
> +
> 
> +        pand    xmm8,xmm0
> 
> +DB      102,69,15,56,0,200
> 
> +        pxor    xmm9,xmm0
> 
> +DB      102,68,15,58,68,231,0
> 
> +        psllq   xmm9,57
> 
> +        movdqa  xmm8,xmm9
> 
> +        pslldq  xmm9,8
> 
> +DB      102,15,58,68,222,0
> 
> +        psrldq  xmm8,8
> 
> +        pxor    xmm0,xmm9
> 
> +        pxor    xmm1,xmm8
> 
> +        movdqu  xmm8,XMMWORD[r8]
> 
> +
> 
> +        movdqa  xmm9,xmm0
> 
> +        psrlq   xmm0,1
> 
> +DB      102,15,58,68,238,17
> 
> +        xorps   xmm3,xmm11
> 
> +        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[80+rdx]
> 
> +DB      102,69,15,56,0,194
> 
> +        pxor    xmm1,xmm9
> 
> +        pxor    xmm9,xmm0
> 
> +        psrlq   xmm0,5
> 
> +
> 
> +        movdqa  xmm13,xmm11
> 
> +        pxor    xmm4,xmm12
> 
> +        pshufd  xmm12,xmm11,78
> 
> +        pxor    xmm0,xmm9
> 
> +        pxor    xmm1,xmm8
> 
> +        pxor    xmm12,xmm11
> 
> +DB      102,69,15,58,68,222,0
> 
> +        psrlq   xmm0,1
> 
> +        pxor    xmm0,xmm1
> 
> +        movdqa  xmm1,xmm0
> 
> +DB      102,69,15,58,68,238,17
> 
> +        xorps   xmm3,xmm11
> 
> +        pshufd  xmm8,xmm0,78
> 
> +        pxor    xmm8,xmm0
> 
> +
> 
> +DB      102,68,15,58,68,231,0
> 
> +        xorps   xmm5,xmm13
> 
> +
> 
> +        lea     r8,[64+r8]
> 
> +        sub     r9,0x40
> 
> +        jnc     NEAR $L$mod4_loop
> 
> +
> 
> +$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
> 
> +        xorps   xmm4,xmm12
> 
> +        xorps   xmm0,xmm3
> 
> +        xorps   xmm1,xmm5
> 
> +        pxor    xmm1,xmm0
> 
> +        pxor    xmm8,xmm4
> 
> +
> 
> +        pxor    xmm8,xmm1
> 
> +        pxor    xmm1,xmm0
> 
> +
> 
> +        movdqa  xmm9,xmm8
> 
> +        psrldq  xmm8,8
> 
> +        pslldq  xmm9,8
> 
> +        pxor    xmm1,xmm8
> 
> +        pxor    xmm0,xmm9
> 
> +
> 
> +        movdqa  xmm4,xmm0
> 
> +        movdqa  xmm3,xmm0
> 
> +        psllq   xmm0,5
> 
> +        pxor    xmm3,xmm0
> 
> +        psllq   xmm0,1
> 
> +        pxor    xmm0,xmm3
> 
> +        psllq   xmm0,57
> 
> +        movdqa  xmm3,xmm0
> 
> +        pslldq  xmm0,8
> 
> +        psrldq  xmm3,8
> 
> +        pxor    xmm0,xmm4
> 
> +        pxor    xmm1,xmm3
> 
> +
> 
> +
> 
> +        movdqa  xmm4,xmm0
> 
> +        psrlq   xmm0,1
> 
> +        pxor    xmm1,xmm4
> 
> +        pxor    xmm4,xmm0
> 
> +        psrlq   xmm0,5
> 
> +        pxor    xmm0,xmm4
> 
> +        psrlq   xmm0,1
> 
> +        pxor    xmm0,xmm1
> 
> +        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[r8]
> 
> +        movdqu  xmm3,XMMWORD[16+r8]
> 
> +DB      102,69,15,56,0,194
> 
> +DB      102,65,15,56,0,218
> 
> +        pxor    xmm0,xmm8
> 
> +
> 
> +        movdqa  xmm5,xmm3
> 
> +        pshufd  xmm4,xmm3,78
> 
> +        pxor    xmm4,xmm3
> 
> +DB      102,15,58,68,218,0
> 
> +DB      102,15,58,68,234,17
> 
> +DB      102,15,58,68,231,0
> 
> +
> 
> +        lea     r8,[32+r8]
> 
> +        nop
> 
> +        sub     r9,0x20
> 
> +        jbe     NEAR $L$even_tail
> 
> +        nop
> 
> +        jmp     NEAR $L$mod_loop
> 
> +
> 
> +ALIGN   32
> 
> +$L$mod_loop:
> 
> +        movdqa  xmm1,xmm0
> 
> +        movdqa  xmm8,xmm4
> 
> +        pshufd  xmm4,xmm0,78
> 
> +        pxor    xmm4,xmm0
> 
> +
> 
> +DB      102,15,58,68,198,0
> 
> +DB      102,15,58,68,206,17
> 
> +DB      102,15,58,68,231,16
> 
> +
> 
> +        pxor    xmm0,xmm3
> 
> +        pxor    xmm1,xmm5
> 
> +        movdqu  xmm9,XMMWORD[r8]
> 
> +        pxor    xmm8,xmm0
> 
> +DB      102,69,15,56,0,202
> 
> +        movdqu  xmm3,XMMWORD[16+r8]
> 
> +
> 
> +        pxor    xmm8,xmm1
> 
> +        pxor    xmm1,xmm9
> 
> +        pxor    xmm4,xmm8
> 
> +DB      102,65,15,56,0,218
> 
> +        movdqa  xmm8,xmm4
> 
> +        psrldq  xmm8,8
> 
> +        pslldq  xmm4,8
> 
> +        pxor    xmm1,xmm8
> 
> +        pxor    xmm0,xmm4
> 
> +
> 
> +        movdqa  xmm5,xmm3
> 
> +
> 
> +        movdqa  xmm9,xmm0
> 
> +        movdqa  xmm8,xmm0
> 
> +        psllq   xmm0,5
> 
> +        pxor    xmm8,xmm0
> 
> +DB      102,15,58,68,218,0
> 
> +        psllq   xmm0,1
> 
> +        pxor    xmm0,xmm8
> 
> +        psllq   xmm0,57
> 
> +        movdqa  xmm8,xmm0
> 
> +        pslldq  xmm0,8
> 
> +        psrldq  xmm8,8
> 
> +        pxor    xmm0,xmm9
> 
> +        pshufd  xmm4,xmm5,78
> 
> +        pxor    xmm1,xmm8
> 
> +        pxor    xmm4,xmm5
> 
> +
> 
> +        movdqa  xmm9,xmm0
> 
> +        psrlq   xmm0,1
> 
> +DB      102,15,58,68,234,17
> 
> +        pxor    xmm1,xmm9
> 
> +        pxor    xmm9,xmm0
> 
> +        psrlq   xmm0,5
> 
> +        pxor    xmm0,xmm9
> 
> +        lea     r8,[32+r8]
> 
> +        psrlq   xmm0,1
> 
> +DB      102,15,58,68,231,0
> 
> +        pxor    xmm0,xmm1
> 
> +
> 
> +        sub     r9,0x20
> 
> +        ja      NEAR $L$mod_loop
> 
> +
> 
> +$L$even_tail:
> 
> +        movdqa  xmm1,xmm0
> 
> +        movdqa  xmm8,xmm4
> 
> +        pshufd  xmm4,xmm0,78
> 
> +        pxor    xmm4,xmm0
> 
> +
> 
> +DB      102,15,58,68,198,0
> 
> +DB      102,15,58,68,206,17
> 
> +DB      102,15,58,68,231,16
> 
> +
> 
> +        pxor    xmm0,xmm3
> 
> +        pxor    xmm1,xmm5
> 
> +        pxor    xmm8,xmm0
> 
> +        pxor    xmm8,xmm1
> 
> +        pxor    xmm4,xmm8
> 
> +        movdqa  xmm8,xmm4
> 
> +        psrldq  xmm8,8
> 
> +        pslldq  xmm4,8
> 
> +        pxor    xmm1,xmm8
> 
> +        pxor    xmm0,xmm4
> 
> +
> 
> +        movdqa  xmm4,xmm0
> 
> +        movdqa  xmm3,xmm0
> 
> +        psllq   xmm0,5
> 
> +        pxor    xmm3,xmm0
> 
> +        psllq   xmm0,1
> 
> +        pxor    xmm0,xmm3
> 
> +        psllq   xmm0,57
> 
> +        movdqa  xmm3,xmm0
> 
> +        pslldq  xmm0,8
> 
> +        psrldq  xmm3,8
> 
> +        pxor    xmm0,xmm4
> 
> +        pxor    xmm1,xmm3
> 
> +
> 
> +
> 
> +        movdqa  xmm4,xmm0
> 
> +        psrlq   xmm0,1
> 
> +        pxor    xmm1,xmm4
> 
> +        pxor    xmm4,xmm0
> 
> +        psrlq   xmm0,5
> 
> +        pxor    xmm0,xmm4
> 
> +        psrlq   xmm0,1
> 
> +        pxor    xmm0,xmm1
> 
> +        test    r9,r9
> 
> +        jnz     NEAR $L$done
> 
> +
> 
> +$L$odd_tail:
> 
> +        movdqu  xmm8,XMMWORD[r8]
> 
> +DB      102,69,15,56,0,194
> 
> +        pxor    xmm0,xmm8
> 
> +        movdqa  xmm1,xmm0
> 
> +        pshufd  xmm3,xmm0,78
> 
> +        pxor    xmm3,xmm0
> 
> +DB      102,15,58,68,194,0
> 
> +DB      102,15,58,68,202,17
> 
> +DB      102,15,58,68,223,0
> 
> +        pxor    xmm3,xmm0
> 
> +        pxor    xmm3,xmm1
> 
> +
> 
> +        movdqa  xmm4,xmm3
> 
> +        psrldq  xmm3,8
> 
> +        pslldq  xmm4,8
> 
> +        pxor    xmm1,xmm3
> 
> +        pxor    xmm0,xmm4
> 
> +
> 
> +        movdqa  xmm4,xmm0
> 
> +        movdqa  xmm3,xmm0
> 
> +        psllq   xmm0,5
> 
> +        pxor    xmm3,xmm0
> 
> +        psllq   xmm0,1
> 
> +        pxor    xmm0,xmm3
> 
> +        psllq   xmm0,57
> 
> +        movdqa  xmm3,xmm0
> 
> +        pslldq  xmm0,8
> 
> +        psrldq  xmm3,8
> 
> +        pxor    xmm0,xmm4
> 
> +        pxor    xmm1,xmm3
> 
> +
> 
> +
> 
> +        movdqa  xmm4,xmm0
> 
> +        psrlq   xmm0,1
> 
> +        pxor    xmm1,xmm4
> 
> +        pxor    xmm4,xmm0
> 
> +        psrlq   xmm0,5
> 
> +        pxor    xmm0,xmm4
> 
> +        psrlq   xmm0,1
> 
> +        pxor    xmm0,xmm1
> 
> +$L$done:
> 
> +DB      102,65,15,56,0,194
> 
> +        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
> 
> +
> 
> +
> 
> +global  gcm_init_avx
> 
> +
> 
> +ALIGN   32
> 
> +gcm_init_avx:
> 
> +
> 
> +        jmp     NEAR $L$_init_clmul
> 
> +
> 
> +
> 
> +global  gcm_gmult_avx
> 
> +
> 
> +ALIGN   32
> 
> +gcm_gmult_avx:
> 
> +
> 
> +        jmp     NEAR $L$_gmult_clmul
> 
> +
> 
> +
> 
> +global  gcm_ghash_avx
> 
> +
> 
> +ALIGN   32
> 
> +gcm_ghash_avx:
> 
> +
> 
> +        jmp     NEAR $L$_ghash_clmul
> 
> +
> 
> +
> 
> +ALIGN   64
> 
> +$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,0xc2
> 
> +$L$7_mask:
> 
> +        DD      7,0,7,0
> 
> +$L$7_mask_poly:
> 
> +        DD      7,0,450,0
> 
> +ALIGN   64
> 
> +
> 
> +$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      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
> 
> +
> 
> +ALIGN   16
> 
> +se_handler:
> 
> +        push    rsi
> 
> +        push    rdi
> 
> +        push    rbx
> 
> +        push    rbp
> 
> +        push    r12
> 
> +        push    r13
> 
> +        push    r14
> 
> +        push    r15
> 
> +        pushfq
> 
> +        sub     rsp,64
> 
> +
> 
> +        mov     rax,QWORD[120+r8]
> 
> +        mov     rbx,QWORD[248+r8]
> 
> +
> 
> +        mov     rsi,QWORD[8+r9]
> 
> +        mov     r11,QWORD[56+r9]
> 
> +
> 
> +        mov     r10d,DWORD[r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$in_prologue
> 
> +
> 
> +        mov     rax,QWORD[152+r8]
> 
> +
> 
> +        mov     r10d,DWORD[4+r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jae     NEAR $L$in_prologue
> 
> +
> 
> +        lea     rax,[((48+280))+rax]
> 
> +
> 
> +        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_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[40+r9]
> 
> +        mov     rsi,r8
> 
> +        mov     ecx,154
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +        mov     rsi,r9
> 
> +        xor     rcx,rcx
> 
> +        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
> 
> +        popfq
> 
> +        pop     r15
> 
> +        pop     r14
> 
> +        pop     r13
> 
> +        pop     r12
> 
> +        pop     rbp
> 
> +        pop     rbx
> 
> +        pop     rdi
> 
> +        pop     rsi
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +section .pdata rdata align=4
> 
> +ALIGN   4
> 
> +        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      $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      $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      $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:
> 
> +DB      9,0,0,0
> 
> +        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      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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
> x86_64.nasm
> new file mode 100644
> index 0000000000..f3b7b0e35e
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm
> @@ -0,0 +1,3137 @@
> +; WARNING: do not edit!
> 
> +; Generated from openssl/crypto/sha/asm/sha1-mb-x86_64.pl
> 
> +;
> 
> +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
> 
> +;
> 
> +; Licensed under the OpenSSL license (the "License").  You may not use
> 
> +; this file except in compliance with the License.  You can obtain a copy
> 
> +; in the file LICENSE in the source distribution or at
> 
> +; https://www.openssl.org/source/license.html
> 
> +
> 
> +default rel
> 
> +%define XMMWORD
> 
> +%define YMMWORD
> 
> +%define ZMMWORD
> 
> +section .text code align=64
> 
> +
> 
> +
> 
> +EXTERN  OPENSSL_ia32cap_P
> 
> +
> 
> +global  sha1_multi_block
> 
> +
> 
> +ALIGN   32
> 
> +sha1_multi_block:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_sha1_multi_block:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +
> 
> +
> 
> +
> 
> +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
> 
> +        bt      rcx,61
> 
> +        jc      NEAR _shaext_shortcut
> 
> +        mov     rax,rsp
> 
> +
> 
> +        push    rbx
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        lea     rsp,[((-168))+rsp]
> 
> +        movaps  XMMWORD[rsp],xmm6
> 
> +        movaps  XMMWORD[16+rsp],xmm7
> 
> +        movaps  XMMWORD[32+rsp],xmm8
> 
> +        movaps  XMMWORD[48+rsp],xmm9
> 
> +        movaps  XMMWORD[(-120)+rax],xmm10
> 
> +        movaps  XMMWORD[(-104)+rax],xmm11
> 
> +        movaps  XMMWORD[(-88)+rax],xmm12
> 
> +        movaps  XMMWORD[(-72)+rax],xmm13
> 
> +        movaps  XMMWORD[(-56)+rax],xmm14
> 
> +        movaps  XMMWORD[(-40)+rax],xmm15
> 
> +        sub     rsp,288
> 
> +        and     rsp,-256
> 
> +        mov     QWORD[272+rsp],rax
> 
> +
> 
> +$L$body:
> 
> +        lea     rbp,[K_XX_XX]
> 
> +        lea     rbx,[256+rsp]
> 
> +
> 
> +$L$oop_grande:
> 
> +        mov     DWORD[280+rsp],edx
> 
> +        xor     edx,edx
> 
> +        mov     r8,QWORD[rsi]
> 
> +        mov     ecx,DWORD[8+rsi]
> 
> +        cmp     ecx,edx
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        mov     DWORD[rbx],ecx
> 
> +        cmovle  r8,rbp
> 
> +        mov     r9,QWORD[16+rsi]
> 
> +        mov     ecx,DWORD[24+rsi]
> 
> +        cmp     ecx,edx
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        mov     DWORD[4+rbx],ecx
> 
> +        cmovle  r9,rbp
> 
> +        mov     r10,QWORD[32+rsi]
> 
> +        mov     ecx,DWORD[40+rsi]
> 
> +        cmp     ecx,edx
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        mov     DWORD[8+rbx],ecx
> 
> +        cmovle  r10,rbp
> 
> +        mov     r11,QWORD[48+rsi]
> 
> +        mov     ecx,DWORD[56+rsi]
> 
> +        cmp     ecx,edx
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        mov     DWORD[12+rbx],ecx
> 
> +        cmovle  r11,rbp
> 
> +        test    edx,edx
> 
> +        jz      NEAR $L$done
> 
> +
> 
> +        movdqu  xmm10,XMMWORD[rdi]
> 
> +        lea     rax,[128+rsp]
> 
> +        movdqu  xmm11,XMMWORD[32+rdi]
> 
> +        movdqu  xmm12,XMMWORD[64+rdi]
> 
> +        movdqu  xmm13,XMMWORD[96+rdi]
> 
> +        movdqu  xmm14,XMMWORD[128+rdi]
> 
> +        movdqa  xmm5,XMMWORD[96+rbp]
> 
> +        movdqa  xmm15,XMMWORD[((-32))+rbp]
> 
> +        jmp     NEAR $L$oop
> 
> +
> 
> +ALIGN   32
> 
> +$L$oop:
> 
> +        movd    xmm0,DWORD[r8]
> 
> +        lea     r8,[64+r8]
> 
> +        movd    xmm2,DWORD[r9]
> 
> +        lea     r9,[64+r9]
> 
> +        movd    xmm3,DWORD[r10]
> 
> +        lea     r10,[64+r10]
> 
> +        movd    xmm4,DWORD[r11]
> 
> +        lea     r11,[64+r11]
> 
> +        punpckldq       xmm0,xmm3
> 
> +        movd    xmm1,DWORD[((-60))+r8]
> 
> +        punpckldq       xmm2,xmm4
> 
> +        movd    xmm9,DWORD[((-60))+r9]
> 
> +        punpckldq       xmm0,xmm2
> 
> +        movd    xmm8,DWORD[((-60))+r10]
> 
> +DB      102,15,56,0,197
> 
> +        movd    xmm7,DWORD[((-60))+r11]
> 
> +        punpckldq       xmm1,xmm8
> 
> +        movdqa  xmm8,xmm10
> 
> +        paddd   xmm14,xmm15
> 
> +        punpckldq       xmm9,xmm7
> 
> +        movdqa  xmm7,xmm11
> 
> +        movdqa  xmm6,xmm11
> 
> +        pslld   xmm8,5
> 
> +        pandn   xmm7,xmm13
> 
> +        pand    xmm6,xmm12
> 
> +        punpckldq       xmm1,xmm9
> 
> +        movdqa  xmm9,xmm10
> 
> +
> 
> +        movdqa  XMMWORD[(0-128)+rax],xmm0
> 
> +        paddd   xmm14,xmm0
> 
> +        movd    xmm2,DWORD[((-56))+r8]
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +        movdqa  xmm7,xmm11
> 
> +
> 
> +        por     xmm8,xmm9
> 
> +        movd    xmm9,DWORD[((-56))+r9]
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm14,xmm6
> 
> +
> 
> +        psrld   xmm11,2
> 
> +        paddd   xmm14,xmm8
> 
> +DB      102,15,56,0,205
> 
> +        movd    xmm8,DWORD[((-56))+r10]
> 
> +        por     xmm11,xmm7
> 
> +        movd    xmm7,DWORD[((-56))+r11]
> 
> +        punpckldq       xmm2,xmm8
> 
> +        movdqa  xmm8,xmm14
> 
> +        paddd   xmm13,xmm15
> 
> +        punpckldq       xmm9,xmm7
> 
> +        movdqa  xmm7,xmm10
> 
> +        movdqa  xmm6,xmm10
> 
> +        pslld   xmm8,5
> 
> +        pandn   xmm7,xmm12
> 
> +        pand    xmm6,xmm11
> 
> +        punpckldq       xmm2,xmm9
> 
> +        movdqa  xmm9,xmm14
> 
> +
> 
> +        movdqa  XMMWORD[(16-128)+rax],xmm1
> 
> +        paddd   xmm13,xmm1
> 
> +        movd    xmm3,DWORD[((-52))+r8]
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +        movdqa  xmm7,xmm10
> 
> +
> 
> +        por     xmm8,xmm9
> 
> +        movd    xmm9,DWORD[((-52))+r9]
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm13,xmm6
> 
> +
> 
> +        psrld   xmm10,2
> 
> +        paddd   xmm13,xmm8
> 
> +DB      102,15,56,0,213
> 
> +        movd    xmm8,DWORD[((-52))+r10]
> 
> +        por     xmm10,xmm7
> 
> +        movd    xmm7,DWORD[((-52))+r11]
> 
> +        punpckldq       xmm3,xmm8
> 
> +        movdqa  xmm8,xmm13
> 
> +        paddd   xmm12,xmm15
> 
> +        punpckldq       xmm9,xmm7
> 
> +        movdqa  xmm7,xmm14
> 
> +        movdqa  xmm6,xmm14
> 
> +        pslld   xmm8,5
> 
> +        pandn   xmm7,xmm11
> 
> +        pand    xmm6,xmm10
> 
> +        punpckldq       xmm3,xmm9
> 
> +        movdqa  xmm9,xmm13
> 
> +
> 
> +        movdqa  XMMWORD[(32-128)+rax],xmm2
> 
> +        paddd   xmm12,xmm2
> 
> +        movd    xmm4,DWORD[((-48))+r8]
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +        movdqa  xmm7,xmm14
> 
> +
> 
> +        por     xmm8,xmm9
> 
> +        movd    xmm9,DWORD[((-48))+r9]
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm12,xmm6
> 
> +
> 
> +        psrld   xmm14,2
> 
> +        paddd   xmm12,xmm8
> 
> +DB      102,15,56,0,221
> 
> +        movd    xmm8,DWORD[((-48))+r10]
> 
> +        por     xmm14,xmm7
> 
> +        movd    xmm7,DWORD[((-48))+r11]
> 
> +        punpckldq       xmm4,xmm8
> 
> +        movdqa  xmm8,xmm12
> 
> +        paddd   xmm11,xmm15
> 
> +        punpckldq       xmm9,xmm7
> 
> +        movdqa  xmm7,xmm13
> 
> +        movdqa  xmm6,xmm13
> 
> +        pslld   xmm8,5
> 
> +        pandn   xmm7,xmm10
> 
> +        pand    xmm6,xmm14
> 
> +        punpckldq       xmm4,xmm9
> 
> +        movdqa  xmm9,xmm12
> 
> +
> 
> +        movdqa  XMMWORD[(48-128)+rax],xmm3
> 
> +        paddd   xmm11,xmm3
> 
> +        movd    xmm0,DWORD[((-44))+r8]
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +        movdqa  xmm7,xmm13
> 
> +
> 
> +        por     xmm8,xmm9
> 
> +        movd    xmm9,DWORD[((-44))+r9]
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm11,xmm6
> 
> +
> 
> +        psrld   xmm13,2
> 
> +        paddd   xmm11,xmm8
> 
> +DB      102,15,56,0,229
> 
> +        movd    xmm8,DWORD[((-44))+r10]
> 
> +        por     xmm13,xmm7
> 
> +        movd    xmm7,DWORD[((-44))+r11]
> 
> +        punpckldq       xmm0,xmm8
> 
> +        movdqa  xmm8,xmm11
> 
> +        paddd   xmm10,xmm15
> 
> +        punpckldq       xmm9,xmm7
> 
> +        movdqa  xmm7,xmm12
> 
> +        movdqa  xmm6,xmm12
> 
> +        pslld   xmm8,5
> 
> +        pandn   xmm7,xmm14
> 
> +        pand    xmm6,xmm13
> 
> +        punpckldq       xmm0,xmm9
> 
> +        movdqa  xmm9,xmm11
> 
> +
> 
> +        movdqa  XMMWORD[(64-128)+rax],xmm4
> 
> +        paddd   xmm10,xmm4
> 
> +        movd    xmm1,DWORD[((-40))+r8]
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +        movdqa  xmm7,xmm12
> 
> +
> 
> +        por     xmm8,xmm9
> 
> +        movd    xmm9,DWORD[((-40))+r9]
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm10,xmm6
> 
> +
> 
> +        psrld   xmm12,2
> 
> +        paddd   xmm10,xmm8
> 
> +DB      102,15,56,0,197
> 
> +        movd    xmm8,DWORD[((-40))+r10]
> 
> +        por     xmm12,xmm7
> 
> +        movd    xmm7,DWORD[((-40))+r11]
> 
> +        punpckldq       xmm1,xmm8
> 
> +        movdqa  xmm8,xmm10
> 
> +        paddd   xmm14,xmm15
> 
> +        punpckldq       xmm9,xmm7
> 
> +        movdqa  xmm7,xmm11
> 
> +        movdqa  xmm6,xmm11
> 
> +        pslld   xmm8,5
> 
> +        pandn   xmm7,xmm13
> 
> +        pand    xmm6,xmm12
> 
> +        punpckldq       xmm1,xmm9
> 
> +        movdqa  xmm9,xmm10
> 
> +
> 
> +        movdqa  XMMWORD[(80-128)+rax],xmm0
> 
> +        paddd   xmm14,xmm0
> 
> +        movd    xmm2,DWORD[((-36))+r8]
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +        movdqa  xmm7,xmm11
> 
> +
> 
> +        por     xmm8,xmm9
> 
> +        movd    xmm9,DWORD[((-36))+r9]
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm14,xmm6
> 
> +
> 
> +        psrld   xmm11,2
> 
> +        paddd   xmm14,xmm8
> 
> +DB      102,15,56,0,205
> 
> +        movd    xmm8,DWORD[((-36))+r10]
> 
> +        por     xmm11,xmm7
> 
> +        movd    xmm7,DWORD[((-36))+r11]
> 
> +        punpckldq       xmm2,xmm8
> 
> +        movdqa  xmm8,xmm14
> 
> +        paddd   xmm13,xmm15
> 
> +        punpckldq       xmm9,xmm7
> 
> +        movdqa  xmm7,xmm10
> 
> +        movdqa  xmm6,xmm10
> 
> +        pslld   xmm8,5
> 
> +        pandn   xmm7,xmm12
> 
> +        pand    xmm6,xmm11
> 
> +        punpckldq       xmm2,xmm9
> 
> +        movdqa  xmm9,xmm14
> 
> +
> 
> +        movdqa  XMMWORD[(96-128)+rax],xmm1
> 
> +        paddd   xmm13,xmm1
> 
> +        movd    xmm3,DWORD[((-32))+r8]
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +        movdqa  xmm7,xmm10
> 
> +
> 
> +        por     xmm8,xmm9
> 
> +        movd    xmm9,DWORD[((-32))+r9]
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm13,xmm6
> 
> +
> 
> +        psrld   xmm10,2
> 
> +        paddd   xmm13,xmm8
> 
> +DB      102,15,56,0,213
> 
> +        movd    xmm8,DWORD[((-32))+r10]
> 
> +        por     xmm10,xmm7
> 
> +        movd    xmm7,DWORD[((-32))+r11]
> 
> +        punpckldq       xmm3,xmm8
> 
> +        movdqa  xmm8,xmm13
> 
> +        paddd   xmm12,xmm15
> 
> +        punpckldq       xmm9,xmm7
> 
> +        movdqa  xmm7,xmm14
> 
> +        movdqa  xmm6,xmm14
> 
> +        pslld   xmm8,5
> 
> +        pandn   xmm7,xmm11
> 
> +        pand    xmm6,xmm10
> 
> +        punpckldq       xmm3,xmm9
> 
> +        movdqa  xmm9,xmm13
> 
> +
> 
> +        movdqa  XMMWORD[(112-128)+rax],xmm2
> 
> +        paddd   xmm12,xmm2
> 
> +        movd    xmm4,DWORD[((-28))+r8]
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +        movdqa  xmm7,xmm14
> 
> +
> 
> +        por     xmm8,xmm9
> 
> +        movd    xmm9,DWORD[((-28))+r9]
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm12,xmm6
> 
> +
> 
> +        psrld   xmm14,2
> 
> +        paddd   xmm12,xmm8
> 
> +DB      102,15,56,0,221
> 
> +        movd    xmm8,DWORD[((-28))+r10]
> 
> +        por     xmm14,xmm7
> 
> +        movd    xmm7,DWORD[((-28))+r11]
> 
> +        punpckldq       xmm4,xmm8
> 
> +        movdqa  xmm8,xmm12
> 
> +        paddd   xmm11,xmm15
> 
> +        punpckldq       xmm9,xmm7
> 
> +        movdqa  xmm7,xmm13
> 
> +        movdqa  xmm6,xmm13
> 
> +        pslld   xmm8,5
> 
> +        pandn   xmm7,xmm10
> 
> +        pand    xmm6,xmm14
> 
> +        punpckldq       xmm4,xmm9
> 
> +        movdqa  xmm9,xmm12
> 
> +
> 
> +        movdqa  XMMWORD[(128-128)+rax],xmm3
> 
> +        paddd   xmm11,xmm3
> 
> +        movd    xmm0,DWORD[((-24))+r8]
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +        movdqa  xmm7,xmm13
> 
> +
> 
> +        por     xmm8,xmm9
> 
> +        movd    xmm9,DWORD[((-24))+r9]
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm11,xmm6
> 
> +
> 
> +        psrld   xmm13,2
> 
> +        paddd   xmm11,xmm8
> 
> +DB      102,15,56,0,229
> 
> +        movd    xmm8,DWORD[((-24))+r10]
> 
> +        por     xmm13,xmm7
> 
> +        movd    xmm7,DWORD[((-24))+r11]
> 
> +        punpckldq       xmm0,xmm8
> 
> +        movdqa  xmm8,xmm11
> 
> +        paddd   xmm10,xmm15
> 
> +        punpckldq       xmm9,xmm7
> 
> +        movdqa  xmm7,xmm12
> 
> +        movdqa  xmm6,xmm12
> 
> +        pslld   xmm8,5
> 
> +        pandn   xmm7,xmm14
> 
> +        pand    xmm6,xmm13
> 
> +        punpckldq       xmm0,xmm9
> 
> +        movdqa  xmm9,xmm11
> 
> +
> 
> +        movdqa  XMMWORD[(144-128)+rax],xmm4
> 
> +        paddd   xmm10,xmm4
> 
> +        movd    xmm1,DWORD[((-20))+r8]
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +        movdqa  xmm7,xmm12
> 
> +
> 
> +        por     xmm8,xmm9
> 
> +        movd    xmm9,DWORD[((-20))+r9]
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm10,xmm6
> 
> +
> 
> +        psrld   xmm12,2
> 
> +        paddd   xmm10,xmm8
> 
> +DB      102,15,56,0,197
> 
> +        movd    xmm8,DWORD[((-20))+r10]
> 
> +        por     xmm12,xmm7
> 
> +        movd    xmm7,DWORD[((-20))+r11]
> 
> +        punpckldq       xmm1,xmm8
> 
> +        movdqa  xmm8,xmm10
> 
> +        paddd   xmm14,xmm15
> 
> +        punpckldq       xmm9,xmm7
> 
> +        movdqa  xmm7,xmm11
> 
> +        movdqa  xmm6,xmm11
> 
> +        pslld   xmm8,5
> 
> +        pandn   xmm7,xmm13
> 
> +        pand    xmm6,xmm12
> 
> +        punpckldq       xmm1,xmm9
> 
> +        movdqa  xmm9,xmm10
> 
> +
> 
> +        movdqa  XMMWORD[(160-128)+rax],xmm0
> 
> +        paddd   xmm14,xmm0
> 
> +        movd    xmm2,DWORD[((-16))+r8]
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +        movdqa  xmm7,xmm11
> 
> +
> 
> +        por     xmm8,xmm9
> 
> +        movd    xmm9,DWORD[((-16))+r9]
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm14,xmm6
> 
> +
> 
> +        psrld   xmm11,2
> 
> +        paddd   xmm14,xmm8
> 
> +DB      102,15,56,0,205
> 
> +        movd    xmm8,DWORD[((-16))+r10]
> 
> +        por     xmm11,xmm7
> 
> +        movd    xmm7,DWORD[((-16))+r11]
> 
> +        punpckldq       xmm2,xmm8
> 
> +        movdqa  xmm8,xmm14
> 
> +        paddd   xmm13,xmm15
> 
> +        punpckldq       xmm9,xmm7
> 
> +        movdqa  xmm7,xmm10
> 
> +        movdqa  xmm6,xmm10
> 
> +        pslld   xmm8,5
> 
> +        pandn   xmm7,xmm12
> 
> +        pand    xmm6,xmm11
> 
> +        punpckldq       xmm2,xmm9
> 
> +        movdqa  xmm9,xmm14
> 
> +
> 
> +        movdqa  XMMWORD[(176-128)+rax],xmm1
> 
> +        paddd   xmm13,xmm1
> 
> +        movd    xmm3,DWORD[((-12))+r8]
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +        movdqa  xmm7,xmm10
> 
> +
> 
> +        por     xmm8,xmm9
> 
> +        movd    xmm9,DWORD[((-12))+r9]
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm13,xmm6
> 
> +
> 
> +        psrld   xmm10,2
> 
> +        paddd   xmm13,xmm8
> 
> +DB      102,15,56,0,213
> 
> +        movd    xmm8,DWORD[((-12))+r10]
> 
> +        por     xmm10,xmm7
> 
> +        movd    xmm7,DWORD[((-12))+r11]
> 
> +        punpckldq       xmm3,xmm8
> 
> +        movdqa  xmm8,xmm13
> 
> +        paddd   xmm12,xmm15
> 
> +        punpckldq       xmm9,xmm7
> 
> +        movdqa  xmm7,xmm14
> 
> +        movdqa  xmm6,xmm14
> 
> +        pslld   xmm8,5
> 
> +        pandn   xmm7,xmm11
> 
> +        pand    xmm6,xmm10
> 
> +        punpckldq       xmm3,xmm9
> 
> +        movdqa  xmm9,xmm13
> 
> +
> 
> +        movdqa  XMMWORD[(192-128)+rax],xmm2
> 
> +        paddd   xmm12,xmm2
> 
> +        movd    xmm4,DWORD[((-8))+r8]
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +        movdqa  xmm7,xmm14
> 
> +
> 
> +        por     xmm8,xmm9
> 
> +        movd    xmm9,DWORD[((-8))+r9]
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm12,xmm6
> 
> +
> 
> +        psrld   xmm14,2
> 
> +        paddd   xmm12,xmm8
> 
> +DB      102,15,56,0,221
> 
> +        movd    xmm8,DWORD[((-8))+r10]
> 
> +        por     xmm14,xmm7
> 
> +        movd    xmm7,DWORD[((-8))+r11]
> 
> +        punpckldq       xmm4,xmm8
> 
> +        movdqa  xmm8,xmm12
> 
> +        paddd   xmm11,xmm15
> 
> +        punpckldq       xmm9,xmm7
> 
> +        movdqa  xmm7,xmm13
> 
> +        movdqa  xmm6,xmm13
> 
> +        pslld   xmm8,5
> 
> +        pandn   xmm7,xmm10
> 
> +        pand    xmm6,xmm14
> 
> +        punpckldq       xmm4,xmm9
> 
> +        movdqa  xmm9,xmm12
> 
> +
> 
> +        movdqa  XMMWORD[(208-128)+rax],xmm3
> 
> +        paddd   xmm11,xmm3
> 
> +        movd    xmm0,DWORD[((-4))+r8]
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +        movdqa  xmm7,xmm13
> 
> +
> 
> +        por     xmm8,xmm9
> 
> +        movd    xmm9,DWORD[((-4))+r9]
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm11,xmm6
> 
> +
> 
> +        psrld   xmm13,2
> 
> +        paddd   xmm11,xmm8
> 
> +DB      102,15,56,0,229
> 
> +        movd    xmm8,DWORD[((-4))+r10]
> 
> +        por     xmm13,xmm7
> 
> +        movdqa  xmm1,XMMWORD[((0-128))+rax]
> 
> +        movd    xmm7,DWORD[((-4))+r11]
> 
> +        punpckldq       xmm0,xmm8
> 
> +        movdqa  xmm8,xmm11
> 
> +        paddd   xmm10,xmm15
> 
> +        punpckldq       xmm9,xmm7
> 
> +        movdqa  xmm7,xmm12
> 
> +        movdqa  xmm6,xmm12
> 
> +        pslld   xmm8,5
> 
> +        prefetcht0      [63+r8]
> 
> +        pandn   xmm7,xmm14
> 
> +        pand    xmm6,xmm13
> 
> +        punpckldq       xmm0,xmm9
> 
> +        movdqa  xmm9,xmm11
> 
> +
> 
> +        movdqa  XMMWORD[(224-128)+rax],xmm4
> 
> +        paddd   xmm10,xmm4
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +        movdqa  xmm7,xmm12
> 
> +        prefetcht0      [63+r9]
> 
> +
> 
> +        por     xmm8,xmm9
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm10,xmm6
> 
> +        prefetcht0      [63+r10]
> 
> +
> 
> +        psrld   xmm12,2
> 
> +        paddd   xmm10,xmm8
> 
> +DB      102,15,56,0,197
> 
> +        prefetcht0      [63+r11]
> 
> +        por     xmm12,xmm7
> 
> +        movdqa  xmm2,XMMWORD[((16-128))+rax]
> 
> +        pxor    xmm1,xmm3
> 
> +        movdqa  xmm3,XMMWORD[((32-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm10
> 
> +        pxor    xmm1,XMMWORD[((128-128))+rax]
> 
> +        paddd   xmm14,xmm15
> 
> +        movdqa  xmm7,xmm11
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm1,xmm3
> 
> +        movdqa  xmm6,xmm11
> 
> +        pandn   xmm7,xmm13
> 
> +        movdqa  xmm5,xmm1
> 
> +        pand    xmm6,xmm12
> 
> +        movdqa  xmm9,xmm10
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm1,xmm1
> 
> +
> 
> +        movdqa  XMMWORD[(240-128)+rax],xmm0
> 
> +        paddd   xmm14,xmm0
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +
> 
> +        movdqa  xmm7,xmm11
> 
> +        por     xmm8,xmm9
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm14,xmm6
> 
> +
> 
> +        psrld   xmm11,2
> 
> +        paddd   xmm14,xmm8
> 
> +        por     xmm1,xmm5
> 
> +        por     xmm11,xmm7
> 
> +        pxor    xmm2,xmm4
> 
> +        movdqa  xmm4,XMMWORD[((48-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm14
> 
> +        pxor    xmm2,XMMWORD[((144-128))+rax]
> 
> +        paddd   xmm13,xmm15
> 
> +        movdqa  xmm7,xmm10
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm2,xmm4
> 
> +        movdqa  xmm6,xmm10
> 
> +        pandn   xmm7,xmm12
> 
> +        movdqa  xmm5,xmm2
> 
> +        pand    xmm6,xmm11
> 
> +        movdqa  xmm9,xmm14
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm2,xmm2
> 
> +
> 
> +        movdqa  XMMWORD[(0-128)+rax],xmm1
> 
> +        paddd   xmm13,xmm1
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +
> 
> +        movdqa  xmm7,xmm10
> 
> +        por     xmm8,xmm9
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm13,xmm6
> 
> +
> 
> +        psrld   xmm10,2
> 
> +        paddd   xmm13,xmm8
> 
> +        por     xmm2,xmm5
> 
> +        por     xmm10,xmm7
> 
> +        pxor    xmm3,xmm0
> 
> +        movdqa  xmm0,XMMWORD[((64-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm13
> 
> +        pxor    xmm3,XMMWORD[((160-128))+rax]
> 
> +        paddd   xmm12,xmm15
> 
> +        movdqa  xmm7,xmm14
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm3,xmm0
> 
> +        movdqa  xmm6,xmm14
> 
> +        pandn   xmm7,xmm11
> 
> +        movdqa  xmm5,xmm3
> 
> +        pand    xmm6,xmm10
> 
> +        movdqa  xmm9,xmm13
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm3,xmm3
> 
> +
> 
> +        movdqa  XMMWORD[(16-128)+rax],xmm2
> 
> +        paddd   xmm12,xmm2
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +
> 
> +        movdqa  xmm7,xmm14
> 
> +        por     xmm8,xmm9
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm12,xmm6
> 
> +
> 
> +        psrld   xmm14,2
> 
> +        paddd   xmm12,xmm8
> 
> +        por     xmm3,xmm5
> 
> +        por     xmm14,xmm7
> 
> +        pxor    xmm4,xmm1
> 
> +        movdqa  xmm1,XMMWORD[((80-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm12
> 
> +        pxor    xmm4,XMMWORD[((176-128))+rax]
> 
> +        paddd   xmm11,xmm15
> 
> +        movdqa  xmm7,xmm13
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm4,xmm1
> 
> +        movdqa  xmm6,xmm13
> 
> +        pandn   xmm7,xmm10
> 
> +        movdqa  xmm5,xmm4
> 
> +        pand    xmm6,xmm14
> 
> +        movdqa  xmm9,xmm12
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm4,xmm4
> 
> +
> 
> +        movdqa  XMMWORD[(32-128)+rax],xmm3
> 
> +        paddd   xmm11,xmm3
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +
> 
> +        movdqa  xmm7,xmm13
> 
> +        por     xmm8,xmm9
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm11,xmm6
> 
> +
> 
> +        psrld   xmm13,2
> 
> +        paddd   xmm11,xmm8
> 
> +        por     xmm4,xmm5
> 
> +        por     xmm13,xmm7
> 
> +        pxor    xmm0,xmm2
> 
> +        movdqa  xmm2,XMMWORD[((96-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm11
> 
> +        pxor    xmm0,XMMWORD[((192-128))+rax]
> 
> +        paddd   xmm10,xmm15
> 
> +        movdqa  xmm7,xmm12
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm0,xmm2
> 
> +        movdqa  xmm6,xmm12
> 
> +        pandn   xmm7,xmm14
> 
> +        movdqa  xmm5,xmm0
> 
> +        pand    xmm6,xmm13
> 
> +        movdqa  xmm9,xmm11
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm0,xmm0
> 
> +
> 
> +        movdqa  XMMWORD[(48-128)+rax],xmm4
> 
> +        paddd   xmm10,xmm4
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm7
> 
> +
> 
> +        movdqa  xmm7,xmm12
> 
> +        por     xmm8,xmm9
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm10,xmm6
> 
> +
> 
> +        psrld   xmm12,2
> 
> +        paddd   xmm10,xmm8
> 
> +        por     xmm0,xmm5
> 
> +        por     xmm12,xmm7
> 
> +        movdqa  xmm15,XMMWORD[rbp]
> 
> +        pxor    xmm1,xmm3
> 
> +        movdqa  xmm3,XMMWORD[((112-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm10
> 
> +        movdqa  xmm6,xmm13
> 
> +        pxor    xmm1,XMMWORD[((208-128))+rax]
> 
> +        paddd   xmm14,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm11
> 
> +
> 
> +        movdqa  xmm9,xmm10
> 
> +        movdqa  XMMWORD[(64-128)+rax],xmm0
> 
> +        paddd   xmm14,xmm0
> 
> +        pxor    xmm1,xmm3
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm12
> 
> +        movdqa  xmm7,xmm11
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm1
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm14,xmm6
> 
> +        paddd   xmm1,xmm1
> 
> +
> 
> +        psrld   xmm11,2
> 
> +        paddd   xmm14,xmm8
> 
> +        por     xmm1,xmm5
> 
> +        por     xmm11,xmm7
> 
> +        pxor    xmm2,xmm4
> 
> +        movdqa  xmm4,XMMWORD[((128-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm14
> 
> +        movdqa  xmm6,xmm12
> 
> +        pxor    xmm2,XMMWORD[((224-128))+rax]
> 
> +        paddd   xmm13,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm10
> 
> +
> 
> +        movdqa  xmm9,xmm14
> 
> +        movdqa  XMMWORD[(80-128)+rax],xmm1
> 
> +        paddd   xmm13,xmm1
> 
> +        pxor    xmm2,xmm4
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm11
> 
> +        movdqa  xmm7,xmm10
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm2
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm13,xmm6
> 
> +        paddd   xmm2,xmm2
> 
> +
> 
> +        psrld   xmm10,2
> 
> +        paddd   xmm13,xmm8
> 
> +        por     xmm2,xmm5
> 
> +        por     xmm10,xmm7
> 
> +        pxor    xmm3,xmm0
> 
> +        movdqa  xmm0,XMMWORD[((144-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm13
> 
> +        movdqa  xmm6,xmm11
> 
> +        pxor    xmm3,XMMWORD[((240-128))+rax]
> 
> +        paddd   xmm12,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm14
> 
> +
> 
> +        movdqa  xmm9,xmm13
> 
> +        movdqa  XMMWORD[(96-128)+rax],xmm2
> 
> +        paddd   xmm12,xmm2
> 
> +        pxor    xmm3,xmm0
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm10
> 
> +        movdqa  xmm7,xmm14
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm3
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm12,xmm6
> 
> +        paddd   xmm3,xmm3
> 
> +
> 
> +        psrld   xmm14,2
> 
> +        paddd   xmm12,xmm8
> 
> +        por     xmm3,xmm5
> 
> +        por     xmm14,xmm7
> 
> +        pxor    xmm4,xmm1
> 
> +        movdqa  xmm1,XMMWORD[((160-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm12
> 
> +        movdqa  xmm6,xmm10
> 
> +        pxor    xmm4,XMMWORD[((0-128))+rax]
> 
> +        paddd   xmm11,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm13
> 
> +
> 
> +        movdqa  xmm9,xmm12
> 
> +        movdqa  XMMWORD[(112-128)+rax],xmm3
> 
> +        paddd   xmm11,xmm3
> 
> +        pxor    xmm4,xmm1
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm14
> 
> +        movdqa  xmm7,xmm13
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm4
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm11,xmm6
> 
> +        paddd   xmm4,xmm4
> 
> +
> 
> +        psrld   xmm13,2
> 
> +        paddd   xmm11,xmm8
> 
> +        por     xmm4,xmm5
> 
> +        por     xmm13,xmm7
> 
> +        pxor    xmm0,xmm2
> 
> +        movdqa  xmm2,XMMWORD[((176-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm11
> 
> +        movdqa  xmm6,xmm14
> 
> +        pxor    xmm0,XMMWORD[((16-128))+rax]
> 
> +        paddd   xmm10,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm12
> 
> +
> 
> +        movdqa  xmm9,xmm11
> 
> +        movdqa  XMMWORD[(128-128)+rax],xmm4
> 
> +        paddd   xmm10,xmm4
> 
> +        pxor    xmm0,xmm2
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm13
> 
> +        movdqa  xmm7,xmm12
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm0
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm10,xmm6
> 
> +        paddd   xmm0,xmm0
> 
> +
> 
> +        psrld   xmm12,2
> 
> +        paddd   xmm10,xmm8
> 
> +        por     xmm0,xmm5
> 
> +        por     xmm12,xmm7
> 
> +        pxor    xmm1,xmm3
> 
> +        movdqa  xmm3,XMMWORD[((192-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm10
> 
> +        movdqa  xmm6,xmm13
> 
> +        pxor    xmm1,XMMWORD[((32-128))+rax]
> 
> +        paddd   xmm14,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm11
> 
> +
> 
> +        movdqa  xmm9,xmm10
> 
> +        movdqa  XMMWORD[(144-128)+rax],xmm0
> 
> +        paddd   xmm14,xmm0
> 
> +        pxor    xmm1,xmm3
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm12
> 
> +        movdqa  xmm7,xmm11
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm1
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm14,xmm6
> 
> +        paddd   xmm1,xmm1
> 
> +
> 
> +        psrld   xmm11,2
> 
> +        paddd   xmm14,xmm8
> 
> +        por     xmm1,xmm5
> 
> +        por     xmm11,xmm7
> 
> +        pxor    xmm2,xmm4
> 
> +        movdqa  xmm4,XMMWORD[((208-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm14
> 
> +        movdqa  xmm6,xmm12
> 
> +        pxor    xmm2,XMMWORD[((48-128))+rax]
> 
> +        paddd   xmm13,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm10
> 
> +
> 
> +        movdqa  xmm9,xmm14
> 
> +        movdqa  XMMWORD[(160-128)+rax],xmm1
> 
> +        paddd   xmm13,xmm1
> 
> +        pxor    xmm2,xmm4
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm11
> 
> +        movdqa  xmm7,xmm10
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm2
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm13,xmm6
> 
> +        paddd   xmm2,xmm2
> 
> +
> 
> +        psrld   xmm10,2
> 
> +        paddd   xmm13,xmm8
> 
> +        por     xmm2,xmm5
> 
> +        por     xmm10,xmm7
> 
> +        pxor    xmm3,xmm0
> 
> +        movdqa  xmm0,XMMWORD[((224-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm13
> 
> +        movdqa  xmm6,xmm11
> 
> +        pxor    xmm3,XMMWORD[((64-128))+rax]
> 
> +        paddd   xmm12,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm14
> 
> +
> 
> +        movdqa  xmm9,xmm13
> 
> +        movdqa  XMMWORD[(176-128)+rax],xmm2
> 
> +        paddd   xmm12,xmm2
> 
> +        pxor    xmm3,xmm0
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm10
> 
> +        movdqa  xmm7,xmm14
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm3
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm12,xmm6
> 
> +        paddd   xmm3,xmm3
> 
> +
> 
> +        psrld   xmm14,2
> 
> +        paddd   xmm12,xmm8
> 
> +        por     xmm3,xmm5
> 
> +        por     xmm14,xmm7
> 
> +        pxor    xmm4,xmm1
> 
> +        movdqa  xmm1,XMMWORD[((240-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm12
> 
> +        movdqa  xmm6,xmm10
> 
> +        pxor    xmm4,XMMWORD[((80-128))+rax]
> 
> +        paddd   xmm11,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm13
> 
> +
> 
> +        movdqa  xmm9,xmm12
> 
> +        movdqa  XMMWORD[(192-128)+rax],xmm3
> 
> +        paddd   xmm11,xmm3
> 
> +        pxor    xmm4,xmm1
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm14
> 
> +        movdqa  xmm7,xmm13
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm4
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm11,xmm6
> 
> +        paddd   xmm4,xmm4
> 
> +
> 
> +        psrld   xmm13,2
> 
> +        paddd   xmm11,xmm8
> 
> +        por     xmm4,xmm5
> 
> +        por     xmm13,xmm7
> 
> +        pxor    xmm0,xmm2
> 
> +        movdqa  xmm2,XMMWORD[((0-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm11
> 
> +        movdqa  xmm6,xmm14
> 
> +        pxor    xmm0,XMMWORD[((96-128))+rax]
> 
> +        paddd   xmm10,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm12
> 
> +
> 
> +        movdqa  xmm9,xmm11
> 
> +        movdqa  XMMWORD[(208-128)+rax],xmm4
> 
> +        paddd   xmm10,xmm4
> 
> +        pxor    xmm0,xmm2
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm13
> 
> +        movdqa  xmm7,xmm12
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm0
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm10,xmm6
> 
> +        paddd   xmm0,xmm0
> 
> +
> 
> +        psrld   xmm12,2
> 
> +        paddd   xmm10,xmm8
> 
> +        por     xmm0,xmm5
> 
> +        por     xmm12,xmm7
> 
> +        pxor    xmm1,xmm3
> 
> +        movdqa  xmm3,XMMWORD[((16-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm10
> 
> +        movdqa  xmm6,xmm13
> 
> +        pxor    xmm1,XMMWORD[((112-128))+rax]
> 
> +        paddd   xmm14,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm11
> 
> +
> 
> +        movdqa  xmm9,xmm10
> 
> +        movdqa  XMMWORD[(224-128)+rax],xmm0
> 
> +        paddd   xmm14,xmm0
> 
> +        pxor    xmm1,xmm3
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm12
> 
> +        movdqa  xmm7,xmm11
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm1
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm14,xmm6
> 
> +        paddd   xmm1,xmm1
> 
> +
> 
> +        psrld   xmm11,2
> 
> +        paddd   xmm14,xmm8
> 
> +        por     xmm1,xmm5
> 
> +        por     xmm11,xmm7
> 
> +        pxor    xmm2,xmm4
> 
> +        movdqa  xmm4,XMMWORD[((32-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm14
> 
> +        movdqa  xmm6,xmm12
> 
> +        pxor    xmm2,XMMWORD[((128-128))+rax]
> 
> +        paddd   xmm13,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm10
> 
> +
> 
> +        movdqa  xmm9,xmm14
> 
> +        movdqa  XMMWORD[(240-128)+rax],xmm1
> 
> +        paddd   xmm13,xmm1
> 
> +        pxor    xmm2,xmm4
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm11
> 
> +        movdqa  xmm7,xmm10
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm2
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm13,xmm6
> 
> +        paddd   xmm2,xmm2
> 
> +
> 
> +        psrld   xmm10,2
> 
> +        paddd   xmm13,xmm8
> 
> +        por     xmm2,xmm5
> 
> +        por     xmm10,xmm7
> 
> +        pxor    xmm3,xmm0
> 
> +        movdqa  xmm0,XMMWORD[((48-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm13
> 
> +        movdqa  xmm6,xmm11
> 
> +        pxor    xmm3,XMMWORD[((144-128))+rax]
> 
> +        paddd   xmm12,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm14
> 
> +
> 
> +        movdqa  xmm9,xmm13
> 
> +        movdqa  XMMWORD[(0-128)+rax],xmm2
> 
> +        paddd   xmm12,xmm2
> 
> +        pxor    xmm3,xmm0
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm10
> 
> +        movdqa  xmm7,xmm14
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm3
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm12,xmm6
> 
> +        paddd   xmm3,xmm3
> 
> +
> 
> +        psrld   xmm14,2
> 
> +        paddd   xmm12,xmm8
> 
> +        por     xmm3,xmm5
> 
> +        por     xmm14,xmm7
> 
> +        pxor    xmm4,xmm1
> 
> +        movdqa  xmm1,XMMWORD[((64-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm12
> 
> +        movdqa  xmm6,xmm10
> 
> +        pxor    xmm4,XMMWORD[((160-128))+rax]
> 
> +        paddd   xmm11,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm13
> 
> +
> 
> +        movdqa  xmm9,xmm12
> 
> +        movdqa  XMMWORD[(16-128)+rax],xmm3
> 
> +        paddd   xmm11,xmm3
> 
> +        pxor    xmm4,xmm1
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm14
> 
> +        movdqa  xmm7,xmm13
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm4
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm11,xmm6
> 
> +        paddd   xmm4,xmm4
> 
> +
> 
> +        psrld   xmm13,2
> 
> +        paddd   xmm11,xmm8
> 
> +        por     xmm4,xmm5
> 
> +        por     xmm13,xmm7
> 
> +        pxor    xmm0,xmm2
> 
> +        movdqa  xmm2,XMMWORD[((80-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm11
> 
> +        movdqa  xmm6,xmm14
> 
> +        pxor    xmm0,XMMWORD[((176-128))+rax]
> 
> +        paddd   xmm10,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm12
> 
> +
> 
> +        movdqa  xmm9,xmm11
> 
> +        movdqa  XMMWORD[(32-128)+rax],xmm4
> 
> +        paddd   xmm10,xmm4
> 
> +        pxor    xmm0,xmm2
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm13
> 
> +        movdqa  xmm7,xmm12
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm0
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm10,xmm6
> 
> +        paddd   xmm0,xmm0
> 
> +
> 
> +        psrld   xmm12,2
> 
> +        paddd   xmm10,xmm8
> 
> +        por     xmm0,xmm5
> 
> +        por     xmm12,xmm7
> 
> +        pxor    xmm1,xmm3
> 
> +        movdqa  xmm3,XMMWORD[((96-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm10
> 
> +        movdqa  xmm6,xmm13
> 
> +        pxor    xmm1,XMMWORD[((192-128))+rax]
> 
> +        paddd   xmm14,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm11
> 
> +
> 
> +        movdqa  xmm9,xmm10
> 
> +        movdqa  XMMWORD[(48-128)+rax],xmm0
> 
> +        paddd   xmm14,xmm0
> 
> +        pxor    xmm1,xmm3
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm12
> 
> +        movdqa  xmm7,xmm11
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm1
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm14,xmm6
> 
> +        paddd   xmm1,xmm1
> 
> +
> 
> +        psrld   xmm11,2
> 
> +        paddd   xmm14,xmm8
> 
> +        por     xmm1,xmm5
> 
> +        por     xmm11,xmm7
> 
> +        pxor    xmm2,xmm4
> 
> +        movdqa  xmm4,XMMWORD[((112-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm14
> 
> +        movdqa  xmm6,xmm12
> 
> +        pxor    xmm2,XMMWORD[((208-128))+rax]
> 
> +        paddd   xmm13,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm10
> 
> +
> 
> +        movdqa  xmm9,xmm14
> 
> +        movdqa  XMMWORD[(64-128)+rax],xmm1
> 
> +        paddd   xmm13,xmm1
> 
> +        pxor    xmm2,xmm4
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm11
> 
> +        movdqa  xmm7,xmm10
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm2
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm13,xmm6
> 
> +        paddd   xmm2,xmm2
> 
> +
> 
> +        psrld   xmm10,2
> 
> +        paddd   xmm13,xmm8
> 
> +        por     xmm2,xmm5
> 
> +        por     xmm10,xmm7
> 
> +        pxor    xmm3,xmm0
> 
> +        movdqa  xmm0,XMMWORD[((128-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm13
> 
> +        movdqa  xmm6,xmm11
> 
> +        pxor    xmm3,XMMWORD[((224-128))+rax]
> 
> +        paddd   xmm12,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm14
> 
> +
> 
> +        movdqa  xmm9,xmm13
> 
> +        movdqa  XMMWORD[(80-128)+rax],xmm2
> 
> +        paddd   xmm12,xmm2
> 
> +        pxor    xmm3,xmm0
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm10
> 
> +        movdqa  xmm7,xmm14
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm3
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm12,xmm6
> 
> +        paddd   xmm3,xmm3
> 
> +
> 
> +        psrld   xmm14,2
> 
> +        paddd   xmm12,xmm8
> 
> +        por     xmm3,xmm5
> 
> +        por     xmm14,xmm7
> 
> +        pxor    xmm4,xmm1
> 
> +        movdqa  xmm1,XMMWORD[((144-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm12
> 
> +        movdqa  xmm6,xmm10
> 
> +        pxor    xmm4,XMMWORD[((240-128))+rax]
> 
> +        paddd   xmm11,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm13
> 
> +
> 
> +        movdqa  xmm9,xmm12
> 
> +        movdqa  XMMWORD[(96-128)+rax],xmm3
> 
> +        paddd   xmm11,xmm3
> 
> +        pxor    xmm4,xmm1
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm14
> 
> +        movdqa  xmm7,xmm13
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm4
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm11,xmm6
> 
> +        paddd   xmm4,xmm4
> 
> +
> 
> +        psrld   xmm13,2
> 
> +        paddd   xmm11,xmm8
> 
> +        por     xmm4,xmm5
> 
> +        por     xmm13,xmm7
> 
> +        pxor    xmm0,xmm2
> 
> +        movdqa  xmm2,XMMWORD[((160-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm11
> 
> +        movdqa  xmm6,xmm14
> 
> +        pxor    xmm0,XMMWORD[((0-128))+rax]
> 
> +        paddd   xmm10,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm12
> 
> +
> 
> +        movdqa  xmm9,xmm11
> 
> +        movdqa  XMMWORD[(112-128)+rax],xmm4
> 
> +        paddd   xmm10,xmm4
> 
> +        pxor    xmm0,xmm2
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm13
> 
> +        movdqa  xmm7,xmm12
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm0
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm10,xmm6
> 
> +        paddd   xmm0,xmm0
> 
> +
> 
> +        psrld   xmm12,2
> 
> +        paddd   xmm10,xmm8
> 
> +        por     xmm0,xmm5
> 
> +        por     xmm12,xmm7
> 
> +        movdqa  xmm15,XMMWORD[32+rbp]
> 
> +        pxor    xmm1,xmm3
> 
> +        movdqa  xmm3,XMMWORD[((176-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm10
> 
> +        movdqa  xmm7,xmm13
> 
> +        pxor    xmm1,XMMWORD[((16-128))+rax]
> 
> +        pxor    xmm1,xmm3
> 
> +        paddd   xmm14,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm10
> 
> +        pand    xmm7,xmm12
> 
> +
> 
> +        movdqa  xmm6,xmm13
> 
> +        movdqa  xmm5,xmm1
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm14,xmm7
> 
> +        pxor    xmm6,xmm12
> 
> +
> 
> +        movdqa  XMMWORD[(128-128)+rax],xmm0
> 
> +        paddd   xmm14,xmm0
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm11
> 
> +        movdqa  xmm7,xmm11
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm1,xmm1
> 
> +        paddd   xmm14,xmm6
> 
> +
> 
> +        psrld   xmm11,2
> 
> +        paddd   xmm14,xmm8
> 
> +        por     xmm1,xmm5
> 
> +        por     xmm11,xmm7
> 
> +        pxor    xmm2,xmm4
> 
> +        movdqa  xmm4,XMMWORD[((192-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm14
> 
> +        movdqa  xmm7,xmm12
> 
> +        pxor    xmm2,XMMWORD[((32-128))+rax]
> 
> +        pxor    xmm2,xmm4
> 
> +        paddd   xmm13,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm14
> 
> +        pand    xmm7,xmm11
> 
> +
> 
> +        movdqa  xmm6,xmm12
> 
> +        movdqa  xmm5,xmm2
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm13,xmm7
> 
> +        pxor    xmm6,xmm11
> 
> +
> 
> +        movdqa  XMMWORD[(144-128)+rax],xmm1
> 
> +        paddd   xmm13,xmm1
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm10
> 
> +        movdqa  xmm7,xmm10
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm2,xmm2
> 
> +        paddd   xmm13,xmm6
> 
> +
> 
> +        psrld   xmm10,2
> 
> +        paddd   xmm13,xmm8
> 
> +        por     xmm2,xmm5
> 
> +        por     xmm10,xmm7
> 
> +        pxor    xmm3,xmm0
> 
> +        movdqa  xmm0,XMMWORD[((208-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm13
> 
> +        movdqa  xmm7,xmm11
> 
> +        pxor    xmm3,XMMWORD[((48-128))+rax]
> 
> +        pxor    xmm3,xmm0
> 
> +        paddd   xmm12,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm13
> 
> +        pand    xmm7,xmm10
> 
> +
> 
> +        movdqa  xmm6,xmm11
> 
> +        movdqa  xmm5,xmm3
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm12,xmm7
> 
> +        pxor    xmm6,xmm10
> 
> +
> 
> +        movdqa  XMMWORD[(160-128)+rax],xmm2
> 
> +        paddd   xmm12,xmm2
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm14
> 
> +        movdqa  xmm7,xmm14
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm3,xmm3
> 
> +        paddd   xmm12,xmm6
> 
> +
> 
> +        psrld   xmm14,2
> 
> +        paddd   xmm12,xmm8
> 
> +        por     xmm3,xmm5
> 
> +        por     xmm14,xmm7
> 
> +        pxor    xmm4,xmm1
> 
> +        movdqa  xmm1,XMMWORD[((224-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm12
> 
> +        movdqa  xmm7,xmm10
> 
> +        pxor    xmm4,XMMWORD[((64-128))+rax]
> 
> +        pxor    xmm4,xmm1
> 
> +        paddd   xmm11,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm12
> 
> +        pand    xmm7,xmm14
> 
> +
> 
> +        movdqa  xmm6,xmm10
> 
> +        movdqa  xmm5,xmm4
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm11,xmm7
> 
> +        pxor    xmm6,xmm14
> 
> +
> 
> +        movdqa  XMMWORD[(176-128)+rax],xmm3
> 
> +        paddd   xmm11,xmm3
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm13
> 
> +        movdqa  xmm7,xmm13
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm4,xmm4
> 
> +        paddd   xmm11,xmm6
> 
> +
> 
> +        psrld   xmm13,2
> 
> +        paddd   xmm11,xmm8
> 
> +        por     xmm4,xmm5
> 
> +        por     xmm13,xmm7
> 
> +        pxor    xmm0,xmm2
> 
> +        movdqa  xmm2,XMMWORD[((240-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm11
> 
> +        movdqa  xmm7,xmm14
> 
> +        pxor    xmm0,XMMWORD[((80-128))+rax]
> 
> +        pxor    xmm0,xmm2
> 
> +        paddd   xmm10,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm11
> 
> +        pand    xmm7,xmm13
> 
> +
> 
> +        movdqa  xmm6,xmm14
> 
> +        movdqa  xmm5,xmm0
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm10,xmm7
> 
> +        pxor    xmm6,xmm13
> 
> +
> 
> +        movdqa  XMMWORD[(192-128)+rax],xmm4
> 
> +        paddd   xmm10,xmm4
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm12
> 
> +        movdqa  xmm7,xmm12
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm0,xmm0
> 
> +        paddd   xmm10,xmm6
> 
> +
> 
> +        psrld   xmm12,2
> 
> +        paddd   xmm10,xmm8
> 
> +        por     xmm0,xmm5
> 
> +        por     xmm12,xmm7
> 
> +        pxor    xmm1,xmm3
> 
> +        movdqa  xmm3,XMMWORD[((0-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm10
> 
> +        movdqa  xmm7,xmm13
> 
> +        pxor    xmm1,XMMWORD[((96-128))+rax]
> 
> +        pxor    xmm1,xmm3
> 
> +        paddd   xmm14,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm10
> 
> +        pand    xmm7,xmm12
> 
> +
> 
> +        movdqa  xmm6,xmm13
> 
> +        movdqa  xmm5,xmm1
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm14,xmm7
> 
> +        pxor    xmm6,xmm12
> 
> +
> 
> +        movdqa  XMMWORD[(208-128)+rax],xmm0
> 
> +        paddd   xmm14,xmm0
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm11
> 
> +        movdqa  xmm7,xmm11
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm1,xmm1
> 
> +        paddd   xmm14,xmm6
> 
> +
> 
> +        psrld   xmm11,2
> 
> +        paddd   xmm14,xmm8
> 
> +        por     xmm1,xmm5
> 
> +        por     xmm11,xmm7
> 
> +        pxor    xmm2,xmm4
> 
> +        movdqa  xmm4,XMMWORD[((16-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm14
> 
> +        movdqa  xmm7,xmm12
> 
> +        pxor    xmm2,XMMWORD[((112-128))+rax]
> 
> +        pxor    xmm2,xmm4
> 
> +        paddd   xmm13,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm14
> 
> +        pand    xmm7,xmm11
> 
> +
> 
> +        movdqa  xmm6,xmm12
> 
> +        movdqa  xmm5,xmm2
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm13,xmm7
> 
> +        pxor    xmm6,xmm11
> 
> +
> 
> +        movdqa  XMMWORD[(224-128)+rax],xmm1
> 
> +        paddd   xmm13,xmm1
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm10
> 
> +        movdqa  xmm7,xmm10
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm2,xmm2
> 
> +        paddd   xmm13,xmm6
> 
> +
> 
> +        psrld   xmm10,2
> 
> +        paddd   xmm13,xmm8
> 
> +        por     xmm2,xmm5
> 
> +        por     xmm10,xmm7
> 
> +        pxor    xmm3,xmm0
> 
> +        movdqa  xmm0,XMMWORD[((32-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm13
> 
> +        movdqa  xmm7,xmm11
> 
> +        pxor    xmm3,XMMWORD[((128-128))+rax]
> 
> +        pxor    xmm3,xmm0
> 
> +        paddd   xmm12,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm13
> 
> +        pand    xmm7,xmm10
> 
> +
> 
> +        movdqa  xmm6,xmm11
> 
> +        movdqa  xmm5,xmm3
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm12,xmm7
> 
> +        pxor    xmm6,xmm10
> 
> +
> 
> +        movdqa  XMMWORD[(240-128)+rax],xmm2
> 
> +        paddd   xmm12,xmm2
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm14
> 
> +        movdqa  xmm7,xmm14
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm3,xmm3
> 
> +        paddd   xmm12,xmm6
> 
> +
> 
> +        psrld   xmm14,2
> 
> +        paddd   xmm12,xmm8
> 
> +        por     xmm3,xmm5
> 
> +        por     xmm14,xmm7
> 
> +        pxor    xmm4,xmm1
> 
> +        movdqa  xmm1,XMMWORD[((48-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm12
> 
> +        movdqa  xmm7,xmm10
> 
> +        pxor    xmm4,XMMWORD[((144-128))+rax]
> 
> +        pxor    xmm4,xmm1
> 
> +        paddd   xmm11,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm12
> 
> +        pand    xmm7,xmm14
> 
> +
> 
> +        movdqa  xmm6,xmm10
> 
> +        movdqa  xmm5,xmm4
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm11,xmm7
> 
> +        pxor    xmm6,xmm14
> 
> +
> 
> +        movdqa  XMMWORD[(0-128)+rax],xmm3
> 
> +        paddd   xmm11,xmm3
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm13
> 
> +        movdqa  xmm7,xmm13
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm4,xmm4
> 
> +        paddd   xmm11,xmm6
> 
> +
> 
> +        psrld   xmm13,2
> 
> +        paddd   xmm11,xmm8
> 
> +        por     xmm4,xmm5
> 
> +        por     xmm13,xmm7
> 
> +        pxor    xmm0,xmm2
> 
> +        movdqa  xmm2,XMMWORD[((64-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm11
> 
> +        movdqa  xmm7,xmm14
> 
> +        pxor    xmm0,XMMWORD[((160-128))+rax]
> 
> +        pxor    xmm0,xmm2
> 
> +        paddd   xmm10,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm11
> 
> +        pand    xmm7,xmm13
> 
> +
> 
> +        movdqa  xmm6,xmm14
> 
> +        movdqa  xmm5,xmm0
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm10,xmm7
> 
> +        pxor    xmm6,xmm13
> 
> +
> 
> +        movdqa  XMMWORD[(16-128)+rax],xmm4
> 
> +        paddd   xmm10,xmm4
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm12
> 
> +        movdqa  xmm7,xmm12
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm0,xmm0
> 
> +        paddd   xmm10,xmm6
> 
> +
> 
> +        psrld   xmm12,2
> 
> +        paddd   xmm10,xmm8
> 
> +        por     xmm0,xmm5
> 
> +        por     xmm12,xmm7
> 
> +        pxor    xmm1,xmm3
> 
> +        movdqa  xmm3,XMMWORD[((80-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm10
> 
> +        movdqa  xmm7,xmm13
> 
> +        pxor    xmm1,XMMWORD[((176-128))+rax]
> 
> +        pxor    xmm1,xmm3
> 
> +        paddd   xmm14,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm10
> 
> +        pand    xmm7,xmm12
> 
> +
> 
> +        movdqa  xmm6,xmm13
> 
> +        movdqa  xmm5,xmm1
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm14,xmm7
> 
> +        pxor    xmm6,xmm12
> 
> +
> 
> +        movdqa  XMMWORD[(32-128)+rax],xmm0
> 
> +        paddd   xmm14,xmm0
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm11
> 
> +        movdqa  xmm7,xmm11
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm1,xmm1
> 
> +        paddd   xmm14,xmm6
> 
> +
> 
> +        psrld   xmm11,2
> 
> +        paddd   xmm14,xmm8
> 
> +        por     xmm1,xmm5
> 
> +        por     xmm11,xmm7
> 
> +        pxor    xmm2,xmm4
> 
> +        movdqa  xmm4,XMMWORD[((96-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm14
> 
> +        movdqa  xmm7,xmm12
> 
> +        pxor    xmm2,XMMWORD[((192-128))+rax]
> 
> +        pxor    xmm2,xmm4
> 
> +        paddd   xmm13,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm14
> 
> +        pand    xmm7,xmm11
> 
> +
> 
> +        movdqa  xmm6,xmm12
> 
> +        movdqa  xmm5,xmm2
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm13,xmm7
> 
> +        pxor    xmm6,xmm11
> 
> +
> 
> +        movdqa  XMMWORD[(48-128)+rax],xmm1
> 
> +        paddd   xmm13,xmm1
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm10
> 
> +        movdqa  xmm7,xmm10
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm2,xmm2
> 
> +        paddd   xmm13,xmm6
> 
> +
> 
> +        psrld   xmm10,2
> 
> +        paddd   xmm13,xmm8
> 
> +        por     xmm2,xmm5
> 
> +        por     xmm10,xmm7
> 
> +        pxor    xmm3,xmm0
> 
> +        movdqa  xmm0,XMMWORD[((112-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm13
> 
> +        movdqa  xmm7,xmm11
> 
> +        pxor    xmm3,XMMWORD[((208-128))+rax]
> 
> +        pxor    xmm3,xmm0
> 
> +        paddd   xmm12,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm13
> 
> +        pand    xmm7,xmm10
> 
> +
> 
> +        movdqa  xmm6,xmm11
> 
> +        movdqa  xmm5,xmm3
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm12,xmm7
> 
> +        pxor    xmm6,xmm10
> 
> +
> 
> +        movdqa  XMMWORD[(64-128)+rax],xmm2
> 
> +        paddd   xmm12,xmm2
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm14
> 
> +        movdqa  xmm7,xmm14
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm3,xmm3
> 
> +        paddd   xmm12,xmm6
> 
> +
> 
> +        psrld   xmm14,2
> 
> +        paddd   xmm12,xmm8
> 
> +        por     xmm3,xmm5
> 
> +        por     xmm14,xmm7
> 
> +        pxor    xmm4,xmm1
> 
> +        movdqa  xmm1,XMMWORD[((128-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm12
> 
> +        movdqa  xmm7,xmm10
> 
> +        pxor    xmm4,XMMWORD[((224-128))+rax]
> 
> +        pxor    xmm4,xmm1
> 
> +        paddd   xmm11,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm12
> 
> +        pand    xmm7,xmm14
> 
> +
> 
> +        movdqa  xmm6,xmm10
> 
> +        movdqa  xmm5,xmm4
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm11,xmm7
> 
> +        pxor    xmm6,xmm14
> 
> +
> 
> +        movdqa  XMMWORD[(80-128)+rax],xmm3
> 
> +        paddd   xmm11,xmm3
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm13
> 
> +        movdqa  xmm7,xmm13
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm4,xmm4
> 
> +        paddd   xmm11,xmm6
> 
> +
> 
> +        psrld   xmm13,2
> 
> +        paddd   xmm11,xmm8
> 
> +        por     xmm4,xmm5
> 
> +        por     xmm13,xmm7
> 
> +        pxor    xmm0,xmm2
> 
> +        movdqa  xmm2,XMMWORD[((144-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm11
> 
> +        movdqa  xmm7,xmm14
> 
> +        pxor    xmm0,XMMWORD[((240-128))+rax]
> 
> +        pxor    xmm0,xmm2
> 
> +        paddd   xmm10,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm11
> 
> +        pand    xmm7,xmm13
> 
> +
> 
> +        movdqa  xmm6,xmm14
> 
> +        movdqa  xmm5,xmm0
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm10,xmm7
> 
> +        pxor    xmm6,xmm13
> 
> +
> 
> +        movdqa  XMMWORD[(96-128)+rax],xmm4
> 
> +        paddd   xmm10,xmm4
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm12
> 
> +        movdqa  xmm7,xmm12
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm0,xmm0
> 
> +        paddd   xmm10,xmm6
> 
> +
> 
> +        psrld   xmm12,2
> 
> +        paddd   xmm10,xmm8
> 
> +        por     xmm0,xmm5
> 
> +        por     xmm12,xmm7
> 
> +        pxor    xmm1,xmm3
> 
> +        movdqa  xmm3,XMMWORD[((160-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm10
> 
> +        movdqa  xmm7,xmm13
> 
> +        pxor    xmm1,XMMWORD[((0-128))+rax]
> 
> +        pxor    xmm1,xmm3
> 
> +        paddd   xmm14,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm10
> 
> +        pand    xmm7,xmm12
> 
> +
> 
> +        movdqa  xmm6,xmm13
> 
> +        movdqa  xmm5,xmm1
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm14,xmm7
> 
> +        pxor    xmm6,xmm12
> 
> +
> 
> +        movdqa  XMMWORD[(112-128)+rax],xmm0
> 
> +        paddd   xmm14,xmm0
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm11
> 
> +        movdqa  xmm7,xmm11
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm1,xmm1
> 
> +        paddd   xmm14,xmm6
> 
> +
> 
> +        psrld   xmm11,2
> 
> +        paddd   xmm14,xmm8
> 
> +        por     xmm1,xmm5
> 
> +        por     xmm11,xmm7
> 
> +        pxor    xmm2,xmm4
> 
> +        movdqa  xmm4,XMMWORD[((176-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm14
> 
> +        movdqa  xmm7,xmm12
> 
> +        pxor    xmm2,XMMWORD[((16-128))+rax]
> 
> +        pxor    xmm2,xmm4
> 
> +        paddd   xmm13,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm14
> 
> +        pand    xmm7,xmm11
> 
> +
> 
> +        movdqa  xmm6,xmm12
> 
> +        movdqa  xmm5,xmm2
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm13,xmm7
> 
> +        pxor    xmm6,xmm11
> 
> +
> 
> +        movdqa  XMMWORD[(128-128)+rax],xmm1
> 
> +        paddd   xmm13,xmm1
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm10
> 
> +        movdqa  xmm7,xmm10
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm2,xmm2
> 
> +        paddd   xmm13,xmm6
> 
> +
> 
> +        psrld   xmm10,2
> 
> +        paddd   xmm13,xmm8
> 
> +        por     xmm2,xmm5
> 
> +        por     xmm10,xmm7
> 
> +        pxor    xmm3,xmm0
> 
> +        movdqa  xmm0,XMMWORD[((192-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm13
> 
> +        movdqa  xmm7,xmm11
> 
> +        pxor    xmm3,XMMWORD[((32-128))+rax]
> 
> +        pxor    xmm3,xmm0
> 
> +        paddd   xmm12,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm13
> 
> +        pand    xmm7,xmm10
> 
> +
> 
> +        movdqa  xmm6,xmm11
> 
> +        movdqa  xmm5,xmm3
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm12,xmm7
> 
> +        pxor    xmm6,xmm10
> 
> +
> 
> +        movdqa  XMMWORD[(144-128)+rax],xmm2
> 
> +        paddd   xmm12,xmm2
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm14
> 
> +        movdqa  xmm7,xmm14
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm3,xmm3
> 
> +        paddd   xmm12,xmm6
> 
> +
> 
> +        psrld   xmm14,2
> 
> +        paddd   xmm12,xmm8
> 
> +        por     xmm3,xmm5
> 
> +        por     xmm14,xmm7
> 
> +        pxor    xmm4,xmm1
> 
> +        movdqa  xmm1,XMMWORD[((208-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm12
> 
> +        movdqa  xmm7,xmm10
> 
> +        pxor    xmm4,XMMWORD[((48-128))+rax]
> 
> +        pxor    xmm4,xmm1
> 
> +        paddd   xmm11,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm12
> 
> +        pand    xmm7,xmm14
> 
> +
> 
> +        movdqa  xmm6,xmm10
> 
> +        movdqa  xmm5,xmm4
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm11,xmm7
> 
> +        pxor    xmm6,xmm14
> 
> +
> 
> +        movdqa  XMMWORD[(160-128)+rax],xmm3
> 
> +        paddd   xmm11,xmm3
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm13
> 
> +        movdqa  xmm7,xmm13
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm4,xmm4
> 
> +        paddd   xmm11,xmm6
> 
> +
> 
> +        psrld   xmm13,2
> 
> +        paddd   xmm11,xmm8
> 
> +        por     xmm4,xmm5
> 
> +        por     xmm13,xmm7
> 
> +        pxor    xmm0,xmm2
> 
> +        movdqa  xmm2,XMMWORD[((224-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm11
> 
> +        movdqa  xmm7,xmm14
> 
> +        pxor    xmm0,XMMWORD[((64-128))+rax]
> 
> +        pxor    xmm0,xmm2
> 
> +        paddd   xmm10,xmm15
> 
> +        pslld   xmm8,5
> 
> +        movdqa  xmm9,xmm11
> 
> +        pand    xmm7,xmm13
> 
> +
> 
> +        movdqa  xmm6,xmm14
> 
> +        movdqa  xmm5,xmm0
> 
> +        psrld   xmm9,27
> 
> +        paddd   xmm10,xmm7
> 
> +        pxor    xmm6,xmm13
> 
> +
> 
> +        movdqa  XMMWORD[(176-128)+rax],xmm4
> 
> +        paddd   xmm10,xmm4
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        pand    xmm6,xmm12
> 
> +        movdqa  xmm7,xmm12
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        paddd   xmm0,xmm0
> 
> +        paddd   xmm10,xmm6
> 
> +
> 
> +        psrld   xmm12,2
> 
> +        paddd   xmm10,xmm8
> 
> +        por     xmm0,xmm5
> 
> +        por     xmm12,xmm7
> 
> +        movdqa  xmm15,XMMWORD[64+rbp]
> 
> +        pxor    xmm1,xmm3
> 
> +        movdqa  xmm3,XMMWORD[((240-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm10
> 
> +        movdqa  xmm6,xmm13
> 
> +        pxor    xmm1,XMMWORD[((80-128))+rax]
> 
> +        paddd   xmm14,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm11
> 
> +
> 
> +        movdqa  xmm9,xmm10
> 
> +        movdqa  XMMWORD[(192-128)+rax],xmm0
> 
> +        paddd   xmm14,xmm0
> 
> +        pxor    xmm1,xmm3
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm12
> 
> +        movdqa  xmm7,xmm11
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm1
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm14,xmm6
> 
> +        paddd   xmm1,xmm1
> 
> +
> 
> +        psrld   xmm11,2
> 
> +        paddd   xmm14,xmm8
> 
> +        por     xmm1,xmm5
> 
> +        por     xmm11,xmm7
> 
> +        pxor    xmm2,xmm4
> 
> +        movdqa  xmm4,XMMWORD[((0-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm14
> 
> +        movdqa  xmm6,xmm12
> 
> +        pxor    xmm2,XMMWORD[((96-128))+rax]
> 
> +        paddd   xmm13,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm10
> 
> +
> 
> +        movdqa  xmm9,xmm14
> 
> +        movdqa  XMMWORD[(208-128)+rax],xmm1
> 
> +        paddd   xmm13,xmm1
> 
> +        pxor    xmm2,xmm4
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm11
> 
> +        movdqa  xmm7,xmm10
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm2
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm13,xmm6
> 
> +        paddd   xmm2,xmm2
> 
> +
> 
> +        psrld   xmm10,2
> 
> +        paddd   xmm13,xmm8
> 
> +        por     xmm2,xmm5
> 
> +        por     xmm10,xmm7
> 
> +        pxor    xmm3,xmm0
> 
> +        movdqa  xmm0,XMMWORD[((16-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm13
> 
> +        movdqa  xmm6,xmm11
> 
> +        pxor    xmm3,XMMWORD[((112-128))+rax]
> 
> +        paddd   xmm12,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm14
> 
> +
> 
> +        movdqa  xmm9,xmm13
> 
> +        movdqa  XMMWORD[(224-128)+rax],xmm2
> 
> +        paddd   xmm12,xmm2
> 
> +        pxor    xmm3,xmm0
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm10
> 
> +        movdqa  xmm7,xmm14
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm3
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm12,xmm6
> 
> +        paddd   xmm3,xmm3
> 
> +
> 
> +        psrld   xmm14,2
> 
> +        paddd   xmm12,xmm8
> 
> +        por     xmm3,xmm5
> 
> +        por     xmm14,xmm7
> 
> +        pxor    xmm4,xmm1
> 
> +        movdqa  xmm1,XMMWORD[((32-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm12
> 
> +        movdqa  xmm6,xmm10
> 
> +        pxor    xmm4,XMMWORD[((128-128))+rax]
> 
> +        paddd   xmm11,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm13
> 
> +
> 
> +        movdqa  xmm9,xmm12
> 
> +        movdqa  XMMWORD[(240-128)+rax],xmm3
> 
> +        paddd   xmm11,xmm3
> 
> +        pxor    xmm4,xmm1
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm14
> 
> +        movdqa  xmm7,xmm13
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm4
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm11,xmm6
> 
> +        paddd   xmm4,xmm4
> 
> +
> 
> +        psrld   xmm13,2
> 
> +        paddd   xmm11,xmm8
> 
> +        por     xmm4,xmm5
> 
> +        por     xmm13,xmm7
> 
> +        pxor    xmm0,xmm2
> 
> +        movdqa  xmm2,XMMWORD[((48-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm11
> 
> +        movdqa  xmm6,xmm14
> 
> +        pxor    xmm0,XMMWORD[((144-128))+rax]
> 
> +        paddd   xmm10,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm12
> 
> +
> 
> +        movdqa  xmm9,xmm11
> 
> +        movdqa  XMMWORD[(0-128)+rax],xmm4
> 
> +        paddd   xmm10,xmm4
> 
> +        pxor    xmm0,xmm2
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm13
> 
> +        movdqa  xmm7,xmm12
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm0
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm10,xmm6
> 
> +        paddd   xmm0,xmm0
> 
> +
> 
> +        psrld   xmm12,2
> 
> +        paddd   xmm10,xmm8
> 
> +        por     xmm0,xmm5
> 
> +        por     xmm12,xmm7
> 
> +        pxor    xmm1,xmm3
> 
> +        movdqa  xmm3,XMMWORD[((64-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm10
> 
> +        movdqa  xmm6,xmm13
> 
> +        pxor    xmm1,XMMWORD[((160-128))+rax]
> 
> +        paddd   xmm14,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm11
> 
> +
> 
> +        movdqa  xmm9,xmm10
> 
> +        movdqa  XMMWORD[(16-128)+rax],xmm0
> 
> +        paddd   xmm14,xmm0
> 
> +        pxor    xmm1,xmm3
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm12
> 
> +        movdqa  xmm7,xmm11
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm1
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm14,xmm6
> 
> +        paddd   xmm1,xmm1
> 
> +
> 
> +        psrld   xmm11,2
> 
> +        paddd   xmm14,xmm8
> 
> +        por     xmm1,xmm5
> 
> +        por     xmm11,xmm7
> 
> +        pxor    xmm2,xmm4
> 
> +        movdqa  xmm4,XMMWORD[((80-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm14
> 
> +        movdqa  xmm6,xmm12
> 
> +        pxor    xmm2,XMMWORD[((176-128))+rax]
> 
> +        paddd   xmm13,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm10
> 
> +
> 
> +        movdqa  xmm9,xmm14
> 
> +        movdqa  XMMWORD[(32-128)+rax],xmm1
> 
> +        paddd   xmm13,xmm1
> 
> +        pxor    xmm2,xmm4
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm11
> 
> +        movdqa  xmm7,xmm10
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm2
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm13,xmm6
> 
> +        paddd   xmm2,xmm2
> 
> +
> 
> +        psrld   xmm10,2
> 
> +        paddd   xmm13,xmm8
> 
> +        por     xmm2,xmm5
> 
> +        por     xmm10,xmm7
> 
> +        pxor    xmm3,xmm0
> 
> +        movdqa  xmm0,XMMWORD[((96-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm13
> 
> +        movdqa  xmm6,xmm11
> 
> +        pxor    xmm3,XMMWORD[((192-128))+rax]
> 
> +        paddd   xmm12,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm14
> 
> +
> 
> +        movdqa  xmm9,xmm13
> 
> +        movdqa  XMMWORD[(48-128)+rax],xmm2
> 
> +        paddd   xmm12,xmm2
> 
> +        pxor    xmm3,xmm0
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm10
> 
> +        movdqa  xmm7,xmm14
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm3
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm12,xmm6
> 
> +        paddd   xmm3,xmm3
> 
> +
> 
> +        psrld   xmm14,2
> 
> +        paddd   xmm12,xmm8
> 
> +        por     xmm3,xmm5
> 
> +        por     xmm14,xmm7
> 
> +        pxor    xmm4,xmm1
> 
> +        movdqa  xmm1,XMMWORD[((112-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm12
> 
> +        movdqa  xmm6,xmm10
> 
> +        pxor    xmm4,XMMWORD[((208-128))+rax]
> 
> +        paddd   xmm11,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm13
> 
> +
> 
> +        movdqa  xmm9,xmm12
> 
> +        movdqa  XMMWORD[(64-128)+rax],xmm3
> 
> +        paddd   xmm11,xmm3
> 
> +        pxor    xmm4,xmm1
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm14
> 
> +        movdqa  xmm7,xmm13
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm4
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm11,xmm6
> 
> +        paddd   xmm4,xmm4
> 
> +
> 
> +        psrld   xmm13,2
> 
> +        paddd   xmm11,xmm8
> 
> +        por     xmm4,xmm5
> 
> +        por     xmm13,xmm7
> 
> +        pxor    xmm0,xmm2
> 
> +        movdqa  xmm2,XMMWORD[((128-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm11
> 
> +        movdqa  xmm6,xmm14
> 
> +        pxor    xmm0,XMMWORD[((224-128))+rax]
> 
> +        paddd   xmm10,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm12
> 
> +
> 
> +        movdqa  xmm9,xmm11
> 
> +        movdqa  XMMWORD[(80-128)+rax],xmm4
> 
> +        paddd   xmm10,xmm4
> 
> +        pxor    xmm0,xmm2
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm13
> 
> +        movdqa  xmm7,xmm12
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm0
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm10,xmm6
> 
> +        paddd   xmm0,xmm0
> 
> +
> 
> +        psrld   xmm12,2
> 
> +        paddd   xmm10,xmm8
> 
> +        por     xmm0,xmm5
> 
> +        por     xmm12,xmm7
> 
> +        pxor    xmm1,xmm3
> 
> +        movdqa  xmm3,XMMWORD[((144-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm10
> 
> +        movdqa  xmm6,xmm13
> 
> +        pxor    xmm1,XMMWORD[((240-128))+rax]
> 
> +        paddd   xmm14,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm11
> 
> +
> 
> +        movdqa  xmm9,xmm10
> 
> +        movdqa  XMMWORD[(96-128)+rax],xmm0
> 
> +        paddd   xmm14,xmm0
> 
> +        pxor    xmm1,xmm3
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm12
> 
> +        movdqa  xmm7,xmm11
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm1
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm14,xmm6
> 
> +        paddd   xmm1,xmm1
> 
> +
> 
> +        psrld   xmm11,2
> 
> +        paddd   xmm14,xmm8
> 
> +        por     xmm1,xmm5
> 
> +        por     xmm11,xmm7
> 
> +        pxor    xmm2,xmm4
> 
> +        movdqa  xmm4,XMMWORD[((160-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm14
> 
> +        movdqa  xmm6,xmm12
> 
> +        pxor    xmm2,XMMWORD[((0-128))+rax]
> 
> +        paddd   xmm13,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm10
> 
> +
> 
> +        movdqa  xmm9,xmm14
> 
> +        movdqa  XMMWORD[(112-128)+rax],xmm1
> 
> +        paddd   xmm13,xmm1
> 
> +        pxor    xmm2,xmm4
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm11
> 
> +        movdqa  xmm7,xmm10
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm2
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm13,xmm6
> 
> +        paddd   xmm2,xmm2
> 
> +
> 
> +        psrld   xmm10,2
> 
> +        paddd   xmm13,xmm8
> 
> +        por     xmm2,xmm5
> 
> +        por     xmm10,xmm7
> 
> +        pxor    xmm3,xmm0
> 
> +        movdqa  xmm0,XMMWORD[((176-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm13
> 
> +        movdqa  xmm6,xmm11
> 
> +        pxor    xmm3,XMMWORD[((16-128))+rax]
> 
> +        paddd   xmm12,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm14
> 
> +
> 
> +        movdqa  xmm9,xmm13
> 
> +        paddd   xmm12,xmm2
> 
> +        pxor    xmm3,xmm0
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm10
> 
> +        movdqa  xmm7,xmm14
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm3
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm12,xmm6
> 
> +        paddd   xmm3,xmm3
> 
> +
> 
> +        psrld   xmm14,2
> 
> +        paddd   xmm12,xmm8
> 
> +        por     xmm3,xmm5
> 
> +        por     xmm14,xmm7
> 
> +        pxor    xmm4,xmm1
> 
> +        movdqa  xmm1,XMMWORD[((192-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm12
> 
> +        movdqa  xmm6,xmm10
> 
> +        pxor    xmm4,XMMWORD[((32-128))+rax]
> 
> +        paddd   xmm11,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm13
> 
> +
> 
> +        movdqa  xmm9,xmm12
> 
> +        paddd   xmm11,xmm3
> 
> +        pxor    xmm4,xmm1
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm14
> 
> +        movdqa  xmm7,xmm13
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm4
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm11,xmm6
> 
> +        paddd   xmm4,xmm4
> 
> +
> 
> +        psrld   xmm13,2
> 
> +        paddd   xmm11,xmm8
> 
> +        por     xmm4,xmm5
> 
> +        por     xmm13,xmm7
> 
> +        pxor    xmm0,xmm2
> 
> +        movdqa  xmm2,XMMWORD[((208-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm11
> 
> +        movdqa  xmm6,xmm14
> 
> +        pxor    xmm0,XMMWORD[((48-128))+rax]
> 
> +        paddd   xmm10,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm12
> 
> +
> 
> +        movdqa  xmm9,xmm11
> 
> +        paddd   xmm10,xmm4
> 
> +        pxor    xmm0,xmm2
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm13
> 
> +        movdqa  xmm7,xmm12
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm0
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm10,xmm6
> 
> +        paddd   xmm0,xmm0
> 
> +
> 
> +        psrld   xmm12,2
> 
> +        paddd   xmm10,xmm8
> 
> +        por     xmm0,xmm5
> 
> +        por     xmm12,xmm7
> 
> +        pxor    xmm1,xmm3
> 
> +        movdqa  xmm3,XMMWORD[((224-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm10
> 
> +        movdqa  xmm6,xmm13
> 
> +        pxor    xmm1,XMMWORD[((64-128))+rax]
> 
> +        paddd   xmm14,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm11
> 
> +
> 
> +        movdqa  xmm9,xmm10
> 
> +        paddd   xmm14,xmm0
> 
> +        pxor    xmm1,xmm3
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm12
> 
> +        movdqa  xmm7,xmm11
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm1
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm14,xmm6
> 
> +        paddd   xmm1,xmm1
> 
> +
> 
> +        psrld   xmm11,2
> 
> +        paddd   xmm14,xmm8
> 
> +        por     xmm1,xmm5
> 
> +        por     xmm11,xmm7
> 
> +        pxor    xmm2,xmm4
> 
> +        movdqa  xmm4,XMMWORD[((240-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm14
> 
> +        movdqa  xmm6,xmm12
> 
> +        pxor    xmm2,XMMWORD[((80-128))+rax]
> 
> +        paddd   xmm13,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm10
> 
> +
> 
> +        movdqa  xmm9,xmm14
> 
> +        paddd   xmm13,xmm1
> 
> +        pxor    xmm2,xmm4
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm11
> 
> +        movdqa  xmm7,xmm10
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm2
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm13,xmm6
> 
> +        paddd   xmm2,xmm2
> 
> +
> 
> +        psrld   xmm10,2
> 
> +        paddd   xmm13,xmm8
> 
> +        por     xmm2,xmm5
> 
> +        por     xmm10,xmm7
> 
> +        pxor    xmm3,xmm0
> 
> +        movdqa  xmm0,XMMWORD[((0-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm13
> 
> +        movdqa  xmm6,xmm11
> 
> +        pxor    xmm3,XMMWORD[((96-128))+rax]
> 
> +        paddd   xmm12,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm14
> 
> +
> 
> +        movdqa  xmm9,xmm13
> 
> +        paddd   xmm12,xmm2
> 
> +        pxor    xmm3,xmm0
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm10
> 
> +        movdqa  xmm7,xmm14
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm3
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm12,xmm6
> 
> +        paddd   xmm3,xmm3
> 
> +
> 
> +        psrld   xmm14,2
> 
> +        paddd   xmm12,xmm8
> 
> +        por     xmm3,xmm5
> 
> +        por     xmm14,xmm7
> 
> +        pxor    xmm4,xmm1
> 
> +        movdqa  xmm1,XMMWORD[((16-128))+rax]
> 
> +
> 
> +        movdqa  xmm8,xmm12
> 
> +        movdqa  xmm6,xmm10
> 
> +        pxor    xmm4,XMMWORD[((112-128))+rax]
> 
> +        paddd   xmm11,xmm15
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm13
> 
> +
> 
> +        movdqa  xmm9,xmm12
> 
> +        paddd   xmm11,xmm3
> 
> +        pxor    xmm4,xmm1
> 
> +        psrld   xmm9,27
> 
> +        pxor    xmm6,xmm14
> 
> +        movdqa  xmm7,xmm13
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        movdqa  xmm5,xmm4
> 
> +        por     xmm8,xmm9
> 
> +        psrld   xmm5,31
> 
> +        paddd   xmm11,xmm6
> 
> +        paddd   xmm4,xmm4
> 
> +
> 
> +        psrld   xmm13,2
> 
> +        paddd   xmm11,xmm8
> 
> +        por     xmm4,xmm5
> 
> +        por     xmm13,xmm7
> 
> +        movdqa  xmm8,xmm11
> 
> +        paddd   xmm10,xmm15
> 
> +        movdqa  xmm6,xmm14
> 
> +        pslld   xmm8,5
> 
> +        pxor    xmm6,xmm12
> 
> +
> 
> +        movdqa  xmm9,xmm11
> 
> +        paddd   xmm10,xmm4
> 
> +        psrld   xmm9,27
> 
> +        movdqa  xmm7,xmm12
> 
> +        pxor    xmm6,xmm13
> 
> +
> 
> +        pslld   xmm7,30
> 
> +        por     xmm8,xmm9
> 
> +        paddd   xmm10,xmm6
> 
> +
> 
> +        psrld   xmm12,2
> 
> +        paddd   xmm10,xmm8
> 
> +        por     xmm12,xmm7
> 
> +        movdqa  xmm0,XMMWORD[rbx]
> 
> +        mov     ecx,1
> 
> +        cmp     ecx,DWORD[rbx]
> 
> +        pxor    xmm8,xmm8
> 
> +        cmovge  r8,rbp
> 
> +        cmp     ecx,DWORD[4+rbx]
> 
> +        movdqa  xmm1,xmm0
> 
> +        cmovge  r9,rbp
> 
> +        cmp     ecx,DWORD[8+rbx]
> 
> +        pcmpgtd xmm1,xmm8
> 
> +        cmovge  r10,rbp
> 
> +        cmp     ecx,DWORD[12+rbx]
> 
> +        paddd   xmm0,xmm1
> 
> +        cmovge  r11,rbp
> 
> +
> 
> +        movdqu  xmm6,XMMWORD[rdi]
> 
> +        pand    xmm10,xmm1
> 
> +        movdqu  xmm7,XMMWORD[32+rdi]
> 
> +        pand    xmm11,xmm1
> 
> +        paddd   xmm10,xmm6
> 
> +        movdqu  xmm8,XMMWORD[64+rdi]
> 
> +        pand    xmm12,xmm1
> 
> +        paddd   xmm11,xmm7
> 
> +        movdqu  xmm9,XMMWORD[96+rdi]
> 
> +        pand    xmm13,xmm1
> 
> +        paddd   xmm12,xmm8
> 
> +        movdqu  xmm5,XMMWORD[128+rdi]
> 
> +        pand    xmm14,xmm1
> 
> +        movdqu  XMMWORD[rdi],xmm10
> 
> +        paddd   xmm13,xmm9
> 
> +        movdqu  XMMWORD[32+rdi],xmm11
> 
> +        paddd   xmm14,xmm5
> 
> +        movdqu  XMMWORD[64+rdi],xmm12
> 
> +        movdqu  XMMWORD[96+rdi],xmm13
> 
> +        movdqu  XMMWORD[128+rdi],xmm14
> 
> +
> 
> +        movdqa  XMMWORD[rbx],xmm0
> 
> +        movdqa  xmm5,XMMWORD[96+rbp]
> 
> +        movdqa  xmm15,XMMWORD[((-32))+rbp]
> 
> +        dec     edx
> 
> +        jnz     NEAR $L$oop
> 
> +
> 
> +        mov     edx,DWORD[280+rsp]
> 
> +        lea     rdi,[16+rdi]
> 
> +        lea     rsi,[64+rsi]
> 
> +        dec     edx
> 
> +        jnz     NEAR $L$oop_grande
> 
> +
> 
> +$L$done:
> 
> +        mov     rax,QWORD[272+rsp]
> 
> +
> 
> +        movaps  xmm6,XMMWORD[((-184))+rax]
> 
> +        movaps  xmm7,XMMWORD[((-168))+rax]
> 
> +        movaps  xmm8,XMMWORD[((-152))+rax]
> 
> +        movaps  xmm9,XMMWORD[((-136))+rax]
> 
> +        movaps  xmm10,XMMWORD[((-120))+rax]
> 
> +        movaps  xmm11,XMMWORD[((-104))+rax]
> 
> +        movaps  xmm12,XMMWORD[((-88))+rax]
> 
> +        movaps  xmm13,XMMWORD[((-72))+rax]
> 
> +        movaps  xmm14,XMMWORD[((-56))+rax]
> 
> +        movaps  xmm15,XMMWORD[((-40))+rax]
> 
> +        mov     rbp,QWORD[((-16))+rax]
> 
> +
> 
> +        mov     rbx,QWORD[((-8))+rax]
> 
> +
> 
> +        lea     rsp,[rax]
> 
> +
> 
> +$L$epilogue:
> 
> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> 
> +        mov     rsi,QWORD[16+rsp]
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +$L$SEH_end_sha1_multi_block:
> 
> +
> 
> +ALIGN   32
> 
> +sha1_multi_block_shaext:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_sha1_multi_block_shaext:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +
> 
> +
> 
> +
> 
> +_shaext_shortcut:
> 
> +        mov     rax,rsp
> 
> +
> 
> +        push    rbx
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        lea     rsp,[((-168))+rsp]
> 
> +        movaps  XMMWORD[rsp],xmm6
> 
> +        movaps  XMMWORD[16+rsp],xmm7
> 
> +        movaps  XMMWORD[32+rsp],xmm8
> 
> +        movaps  XMMWORD[48+rsp],xmm9
> 
> +        movaps  XMMWORD[(-120)+rax],xmm10
> 
> +        movaps  XMMWORD[(-104)+rax],xmm11
> 
> +        movaps  XMMWORD[(-88)+rax],xmm12
> 
> +        movaps  XMMWORD[(-72)+rax],xmm13
> 
> +        movaps  XMMWORD[(-56)+rax],xmm14
> 
> +        movaps  XMMWORD[(-40)+rax],xmm15
> 
> +        sub     rsp,288
> 
> +        shl     edx,1
> 
> +        and     rsp,-256
> 
> +        lea     rdi,[64+rdi]
> 
> +        mov     QWORD[272+rsp],rax
> 
> +$L$body_shaext:
> 
> +        lea     rbx,[256+rsp]
> 
> +        movdqa  xmm3,XMMWORD[((K_XX_XX+128))]
> 
> +
> 
> +$L$oop_grande_shaext:
> 
> +        mov     DWORD[280+rsp],edx
> 
> +        xor     edx,edx
> 
> +        mov     r8,QWORD[rsi]
> 
> +        mov     ecx,DWORD[8+rsi]
> 
> +        cmp     ecx,edx
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        mov     DWORD[rbx],ecx
> 
> +        cmovle  r8,rsp
> 
> +        mov     r9,QWORD[16+rsi]
> 
> +        mov     ecx,DWORD[24+rsi]
> 
> +        cmp     ecx,edx
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        mov     DWORD[4+rbx],ecx
> 
> +        cmovle  r9,rsp
> 
> +        test    edx,edx
> 
> +        jz      NEAR $L$done_shaext
> 
> +
> 
> +        movq    xmm0,QWORD[((0-64))+rdi]
> 
> +        movq    xmm4,QWORD[((32-64))+rdi]
> 
> +        movq    xmm5,QWORD[((64-64))+rdi]
> 
> +        movq    xmm6,QWORD[((96-64))+rdi]
> 
> +        movq    xmm7,QWORD[((128-64))+rdi]
> 
> +
> 
> +        punpckldq       xmm0,xmm4
> 
> +        punpckldq       xmm5,xmm6
> 
> +
> 
> +        movdqa  xmm8,xmm0
> 
> +        punpcklqdq      xmm0,xmm5
> 
> +        punpckhqdq      xmm8,xmm5
> 
> +
> 
> +        pshufd  xmm1,xmm7,63
> 
> +        pshufd  xmm9,xmm7,127
> 
> +        pshufd  xmm0,xmm0,27
> 
> +        pshufd  xmm8,xmm8,27
> 
> +        jmp     NEAR $L$oop_shaext
> 
> +
> 
> +ALIGN   32
> 
> +$L$oop_shaext:
> 
> +        movdqu  xmm4,XMMWORD[r8]
> 
> +        movdqu  xmm11,XMMWORD[r9]
> 
> +        movdqu  xmm5,XMMWORD[16+r8]
> 
> +        movdqu  xmm12,XMMWORD[16+r9]
> 
> +        movdqu  xmm6,XMMWORD[32+r8]
> 
> +DB      102,15,56,0,227
> 
> +        movdqu  xmm13,XMMWORD[32+r9]
> 
> +DB      102,68,15,56,0,219
> 
> +        movdqu  xmm7,XMMWORD[48+r8]
> 
> +        lea     r8,[64+r8]
> 
> +DB      102,15,56,0,235
> 
> +        movdqu  xmm14,XMMWORD[48+r9]
> 
> +        lea     r9,[64+r9]
> 
> +DB      102,68,15,56,0,227
> 
> +
> 
> +        movdqa  XMMWORD[80+rsp],xmm1
> 
> +        paddd   xmm1,xmm4
> 
> +        movdqa  XMMWORD[112+rsp],xmm9
> 
> +        paddd   xmm9,xmm11
> 
> +        movdqa  XMMWORD[64+rsp],xmm0
> 
> +        movdqa  xmm2,xmm0
> 
> +        movdqa  XMMWORD[96+rsp],xmm8
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      15,58,204,193,0
> 
> +DB      15,56,200,213
> 
> +DB      69,15,58,204,193,0
> 
> +DB      69,15,56,200,212
> 
> +DB      102,15,56,0,243
> 
> +        prefetcht0      [127+r8]
> 
> +DB      15,56,201,229
> 
> +DB      102,68,15,56,0,235
> 
> +        prefetcht0      [127+r9]
> 
> +DB      69,15,56,201,220
> 
> +
> 
> +DB      102,15,56,0,251
> 
> +        movdqa  xmm1,xmm0
> 
> +DB      102,68,15,56,0,243
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      15,58,204,194,0
> 
> +DB      15,56,200,206
> 
> +DB      69,15,58,204,194,0
> 
> +DB      69,15,56,200,205
> 
> +        pxor    xmm4,xmm6
> 
> +DB      15,56,201,238
> 
> +        pxor    xmm11,xmm13
> 
> +DB      69,15,56,201,229
> 
> +        movdqa  xmm2,xmm0
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      15,58,204,193,0
> 
> +DB      15,56,200,215
> 
> +DB      69,15,58,204,193,0
> 
> +DB      69,15,56,200,214
> 
> +DB      15,56,202,231
> 
> +DB      69,15,56,202,222
> 
> +        pxor    xmm5,xmm7
> 
> +DB      15,56,201,247
> 
> +        pxor    xmm12,xmm14
> 
> +DB      69,15,56,201,238
> 
> +        movdqa  xmm1,xmm0
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      15,58,204,194,0
> 
> +DB      15,56,200,204
> 
> +DB      69,15,58,204,194,0
> 
> +DB      69,15,56,200,203
> 
> +DB      15,56,202,236
> 
> +DB      69,15,56,202,227
> 
> +        pxor    xmm6,xmm4
> 
> +DB      15,56,201,252
> 
> +        pxor    xmm13,xmm11
> 
> +DB      69,15,56,201,243
> 
> +        movdqa  xmm2,xmm0
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      15,58,204,193,0
> 
> +DB      15,56,200,213
> 
> +DB      69,15,58,204,193,0
> 
> +DB      69,15,56,200,212
> 
> +DB      15,56,202,245
> 
> +DB      69,15,56,202,236
> 
> +        pxor    xmm7,xmm5
> 
> +DB      15,56,201,229
> 
> +        pxor    xmm14,xmm12
> 
> +DB      69,15,56,201,220
> 
> +        movdqa  xmm1,xmm0
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      15,58,204,194,1
> 
> +DB      15,56,200,206
> 
> +DB      69,15,58,204,194,1
> 
> +DB      69,15,56,200,205
> 
> +DB      15,56,202,254
> 
> +DB      69,15,56,202,245
> 
> +        pxor    xmm4,xmm6
> 
> +DB      15,56,201,238
> 
> +        pxor    xmm11,xmm13
> 
> +DB      69,15,56,201,229
> 
> +        movdqa  xmm2,xmm0
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      15,58,204,193,1
> 
> +DB      15,56,200,215
> 
> +DB      69,15,58,204,193,1
> 
> +DB      69,15,56,200,214
> 
> +DB      15,56,202,231
> 
> +DB      69,15,56,202,222
> 
> +        pxor    xmm5,xmm7
> 
> +DB      15,56,201,247
> 
> +        pxor    xmm12,xmm14
> 
> +DB      69,15,56,201,238
> 
> +        movdqa  xmm1,xmm0
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      15,58,204,194,1
> 
> +DB      15,56,200,204
> 
> +DB      69,15,58,204,194,1
> 
> +DB      69,15,56,200,203
> 
> +DB      15,56,202,236
> 
> +DB      69,15,56,202,227
> 
> +        pxor    xmm6,xmm4
> 
> +DB      15,56,201,252
> 
> +        pxor    xmm13,xmm11
> 
> +DB      69,15,56,201,243
> 
> +        movdqa  xmm2,xmm0
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      15,58,204,193,1
> 
> +DB      15,56,200,213
> 
> +DB      69,15,58,204,193,1
> 
> +DB      69,15,56,200,212
> 
> +DB      15,56,202,245
> 
> +DB      69,15,56,202,236
> 
> +        pxor    xmm7,xmm5
> 
> +DB      15,56,201,229
> 
> +        pxor    xmm14,xmm12
> 
> +DB      69,15,56,201,220
> 
> +        movdqa  xmm1,xmm0
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      15,58,204,194,1
> 
> +DB      15,56,200,206
> 
> +DB      69,15,58,204,194,1
> 
> +DB      69,15,56,200,205
> 
> +DB      15,56,202,254
> 
> +DB      69,15,56,202,245
> 
> +        pxor    xmm4,xmm6
> 
> +DB      15,56,201,238
> 
> +        pxor    xmm11,xmm13
> 
> +DB      69,15,56,201,229
> 
> +        movdqa  xmm2,xmm0
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      15,58,204,193,2
> 
> +DB      15,56,200,215
> 
> +DB      69,15,58,204,193,2
> 
> +DB      69,15,56,200,214
> 
> +DB      15,56,202,231
> 
> +DB      69,15,56,202,222
> 
> +        pxor    xmm5,xmm7
> 
> +DB      15,56,201,247
> 
> +        pxor    xmm12,xmm14
> 
> +DB      69,15,56,201,238
> 
> +        movdqa  xmm1,xmm0
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      15,58,204,194,2
> 
> +DB      15,56,200,204
> 
> +DB      69,15,58,204,194,2
> 
> +DB      69,15,56,200,203
> 
> +DB      15,56,202,236
> 
> +DB      69,15,56,202,227
> 
> +        pxor    xmm6,xmm4
> 
> +DB      15,56,201,252
> 
> +        pxor    xmm13,xmm11
> 
> +DB      69,15,56,201,243
> 
> +        movdqa  xmm2,xmm0
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      15,58,204,193,2
> 
> +DB      15,56,200,213
> 
> +DB      69,15,58,204,193,2
> 
> +DB      69,15,56,200,212
> 
> +DB      15,56,202,245
> 
> +DB      69,15,56,202,236
> 
> +        pxor    xmm7,xmm5
> 
> +DB      15,56,201,229
> 
> +        pxor    xmm14,xmm12
> 
> +DB      69,15,56,201,220
> 
> +        movdqa  xmm1,xmm0
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      15,58,204,194,2
> 
> +DB      15,56,200,206
> 
> +DB      69,15,58,204,194,2
> 
> +DB      69,15,56,200,205
> 
> +DB      15,56,202,254
> 
> +DB      69,15,56,202,245
> 
> +        pxor    xmm4,xmm6
> 
> +DB      15,56,201,238
> 
> +        pxor    xmm11,xmm13
> 
> +DB      69,15,56,201,229
> 
> +        movdqa  xmm2,xmm0
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      15,58,204,193,2
> 
> +DB      15,56,200,215
> 
> +DB      69,15,58,204,193,2
> 
> +DB      69,15,56,200,214
> 
> +DB      15,56,202,231
> 
> +DB      69,15,56,202,222
> 
> +        pxor    xmm5,xmm7
> 
> +DB      15,56,201,247
> 
> +        pxor    xmm12,xmm14
> 
> +DB      69,15,56,201,238
> 
> +        movdqa  xmm1,xmm0
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      15,58,204,194,3
> 
> +DB      15,56,200,204
> 
> +DB      69,15,58,204,194,3
> 
> +DB      69,15,56,200,203
> 
> +DB      15,56,202,236
> 
> +DB      69,15,56,202,227
> 
> +        pxor    xmm6,xmm4
> 
> +DB      15,56,201,252
> 
> +        pxor    xmm13,xmm11
> 
> +DB      69,15,56,201,243
> 
> +        movdqa  xmm2,xmm0
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      15,58,204,193,3
> 
> +DB      15,56,200,213
> 
> +DB      69,15,58,204,193,3
> 
> +DB      69,15,56,200,212
> 
> +DB      15,56,202,245
> 
> +DB      69,15,56,202,236
> 
> +        pxor    xmm7,xmm5
> 
> +        pxor    xmm14,xmm12
> 
> +
> 
> +        mov     ecx,1
> 
> +        pxor    xmm4,xmm4
> 
> +        cmp     ecx,DWORD[rbx]
> 
> +        cmovge  r8,rsp
> 
> +
> 
> +        movdqa  xmm1,xmm0
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      15,58,204,194,3
> 
> +DB      15,56,200,206
> 
> +DB      69,15,58,204,194,3
> 
> +DB      69,15,56,200,205
> 
> +DB      15,56,202,254
> 
> +DB      69,15,56,202,245
> 
> +
> 
> +        cmp     ecx,DWORD[4+rbx]
> 
> +        cmovge  r9,rsp
> 
> +        movq    xmm6,QWORD[rbx]
> 
> +
> 
> +        movdqa  xmm2,xmm0
> 
> +        movdqa  xmm10,xmm8
> 
> +DB      15,58,204,193,3
> 
> +DB      15,56,200,215
> 
> +DB      69,15,58,204,193,3
> 
> +DB      69,15,56,200,214
> 
> +
> 
> +        pshufd  xmm11,xmm6,0x00
> 
> +        pshufd  xmm12,xmm6,0x55
> 
> +        movdqa  xmm7,xmm6
> 
> +        pcmpgtd xmm11,xmm4
> 
> +        pcmpgtd xmm12,xmm4
> 
> +
> 
> +        movdqa  xmm1,xmm0
> 
> +        movdqa  xmm9,xmm8
> 
> +DB      15,58,204,194,3
> 
> +DB      15,56,200,204
> 
> +DB      69,15,58,204,194,3
> 
> +DB      68,15,56,200,204
> 
> +
> 
> +        pcmpgtd xmm7,xmm4
> 
> +        pand    xmm0,xmm11
> 
> +        pand    xmm1,xmm11
> 
> +        pand    xmm8,xmm12
> 
> +        pand    xmm9,xmm12
> 
> +        paddd   xmm6,xmm7
> 
> +
> 
> +        paddd   xmm0,XMMWORD[64+rsp]
> 
> +        paddd   xmm1,XMMWORD[80+rsp]
> 
> +        paddd   xmm8,XMMWORD[96+rsp]
> 
> +        paddd   xmm9,XMMWORD[112+rsp]
> 
> +
> 
> +        movq    QWORD[rbx],xmm6
> 
> +        dec     edx
> 
> +        jnz     NEAR $L$oop_shaext
> 
> +
> 
> +        mov     edx,DWORD[280+rsp]
> 
> +
> 
> +        pshufd  xmm0,xmm0,27
> 
> +        pshufd  xmm8,xmm8,27
> 
> +
> 
> +        movdqa  xmm6,xmm0
> 
> +        punpckldq       xmm0,xmm8
> 
> +        punpckhdq       xmm6,xmm8
> 
> +        punpckhdq       xmm1,xmm9
> 
> +        movq    QWORD[(0-64)+rdi],xmm0
> 
> +        psrldq  xmm0,8
> 
> +        movq    QWORD[(64-64)+rdi],xmm6
> 
> +        psrldq  xmm6,8
> 
> +        movq    QWORD[(32-64)+rdi],xmm0
> 
> +        psrldq  xmm1,8
> 
> +        movq    QWORD[(96-64)+rdi],xmm6
> 
> +        movq    QWORD[(128-64)+rdi],xmm1
> 
> +
> 
> +        lea     rdi,[8+rdi]
> 
> +        lea     rsi,[32+rsi]
> 
> +        dec     edx
> 
> +        jnz     NEAR $L$oop_grande_shaext
> 
> +
> 
> +$L$done_shaext:
> 
> +
> 
> +        movaps  xmm6,XMMWORD[((-184))+rax]
> 
> +        movaps  xmm7,XMMWORD[((-168))+rax]
> 
> +        movaps  xmm8,XMMWORD[((-152))+rax]
> 
> +        movaps  xmm9,XMMWORD[((-136))+rax]
> 
> +        movaps  xmm10,XMMWORD[((-120))+rax]
> 
> +        movaps  xmm11,XMMWORD[((-104))+rax]
> 
> +        movaps  xmm12,XMMWORD[((-88))+rax]
> 
> +        movaps  xmm13,XMMWORD[((-72))+rax]
> 
> +        movaps  xmm14,XMMWORD[((-56))+rax]
> 
> +        movaps  xmm15,XMMWORD[((-40))+rax]
> 
> +        mov     rbp,QWORD[((-16))+rax]
> 
> +
> 
> +        mov     rbx,QWORD[((-8))+rax]
> 
> +
> 
> +        lea     rsp,[rax]
> 
> +
> 
> +$L$epilogue_shaext:
> 
> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> 
> +        mov     rsi,QWORD[16+rsp]
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +$L$SEH_end_sha1_multi_block_shaext:
> 
> +
> 
> +ALIGN   256
> 
> +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> 
> +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> 
> +K_XX_XX:
> 
> +        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,109,117,108,116,105,45,98,108,111,99,107
> 
> +DB      32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120
> 
> +DB      56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77
> 
> +DB      83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110
> 
> +DB      115,115,108,46,111,114,103,62,0
> 
> +EXTERN  __imp_RtlVirtualUnwind
> 
> +
> 
> +ALIGN   16
> 
> +se_handler:
> 
> +        push    rsi
> 
> +        push    rdi
> 
> +        push    rbx
> 
> +        push    rbp
> 
> +        push    r12
> 
> +        push    r13
> 
> +        push    r14
> 
> +        push    r15
> 
> +        pushfq
> 
> +        sub     rsp,64
> 
> +
> 
> +        mov     rax,QWORD[120+r8]
> 
> +        mov     rbx,QWORD[248+r8]
> 
> +
> 
> +        mov     rsi,QWORD[8+r9]
> 
> +        mov     r11,QWORD[56+r9]
> 
> +
> 
> +        mov     r10d,DWORD[r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$in_prologue
> 
> +
> 
> +        mov     rax,QWORD[152+r8]
> 
> +
> 
> +        mov     r10d,DWORD[4+r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jae     NEAR $L$in_prologue
> 
> +
> 
> +        mov     rax,QWORD[272+rax]
> 
> +
> 
> +        mov     rbx,QWORD[((-8))+rax]
> 
> +        mov     rbp,QWORD[((-16))+rax]
> 
> +        mov     QWORD[144+r8],rbx
> 
> +        mov     QWORD[160+r8],rbp
> 
> +
> 
> +        lea     rsi,[((-24-160))+rax]
> 
> +        lea     rdi,[512+r8]
> 
> +        mov     ecx,20
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +$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[40+r9]
> 
> +        mov     rsi,r8
> 
> +        mov     ecx,154
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +        mov     rsi,r9
> 
> +        xor     rcx,rcx
> 
> +        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
> 
> +        popfq
> 
> +        pop     r15
> 
> +        pop     r14
> 
> +        pop     r13
> 
> +        pop     r12
> 
> +        pop     rbp
> 
> +        pop     rbx
> 
> +        pop     rdi
> 
> +        pop     rsi
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +section .pdata rdata align=4
> 
> +ALIGN   4
> 
> +        DD      $L$SEH_begin_sha1_multi_block wrt ..imagebase
> 
> +        DD      $L$SEH_end_sha1_multi_block wrt ..imagebase
> 
> +        DD      $L$SEH_info_sha1_multi_block wrt ..imagebase
> 
> +        DD      $L$SEH_begin_sha1_multi_block_shaext wrt ..imagebase
> 
> +        DD      $L$SEH_end_sha1_multi_block_shaext wrt ..imagebase
> 
> +        DD      $L$SEH_info_sha1_multi_block_shaext wrt ..imagebase
> 
> +section .xdata rdata align=8
> 
> +ALIGN   8
> 
> +$L$SEH_info_sha1_multi_block:
> 
> +DB      9,0,0,0
> 
> +        DD      se_handler wrt ..imagebase
> 
> +        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
> 
> +$L$SEH_info_sha1_multi_block_shaext:
> 
> +DB      9,0,0,0
> 
> +        DD      se_handler wrt ..imagebase
> 
> +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
> wrt ..imagebase
> 
> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> new file mode 100644
> index 0000000000..c6d68d348f
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> @@ -0,0 +1,2884 @@
> +; WARNING: do not edit!
> 
> +; Generated from openssl/crypto/sha/asm/sha1-x86_64.pl
> 
> +;
> 
> +; Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved.
> 
> +;
> 
> +; Licensed under the OpenSSL license (the "License").  You may not use
> 
> +; this file except in compliance with the License.  You can obtain a copy
> 
> +; in the file LICENSE in the source distribution or at
> 
> +; https://www.openssl.org/source/license.html
> 
> +
> 
> +default rel
> 
> +%define XMMWORD
> 
> +%define YMMWORD
> 
> +%define ZMMWORD
> 
> +section .text code align=64
> 
> +
> 
> +EXTERN  OPENSSL_ia32cap_P
> 
> +
> 
> +global  sha1_block_data_order
> 
> +
> 
> +ALIGN   16
> 
> +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:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +
> 
> +
> 
> +
> 
> +        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      NEAR $L$ialu
> 
> +        test    r10d,536870912
> 
> +        jnz     NEAR _shaext_shortcut
> 
> +        jmp     NEAR _ssse3_shortcut
> 
> +
> 
> +ALIGN   16
> 
> +$L$ialu:
> 
> +        mov     rax,rsp
> 
> +
> 
> +        push    rbx
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        push    r12
> 
> +
> 
> +        push    r13
> 
> +
> 
> +        push    r14
> 
> +
> 
> +        mov     r8,rdi
> 
> +        sub     rsp,72
> 
> +        mov     r9,rsi
> 
> +        and     rsp,-64
> 
> +        mov     r10,rdx
> 
> +        mov     QWORD[64+rsp],rax
> 
> +
> 
> +$L$prologue:
> 
> +
> 
> +        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[r9]
> 
> +        bswap   edx
> 
> +        mov     ebp,DWORD[4+r9]
> 
> +        mov     eax,r12d
> 
> +        mov     DWORD[rsp],edx
> 
> +        mov     ecx,esi
> 
> +        bswap   ebp
> 
> +        xor     eax,r11d
> 
> +        rol     ecx,5
> 
> +        and     eax,edi
> 
> +        lea     r13d,[1518500249+r13*1+rdx]
> 
> +        add     r13d,ecx
> 
> +        xor     eax,r12d
> 
> +        rol     edi,30
> 
> +        add     r13d,eax
> 
> +        mov     r14d,DWORD[8+r9]
> 
> +        mov     eax,r11d
> 
> +        mov     DWORD[4+rsp],ebp
> 
> +        mov     ecx,r13d
> 
> +        bswap   r14d
> 
> +        xor     eax,edi
> 
> +        rol     ecx,5
> 
> +        and     eax,esi
> 
> +        lea     r12d,[1518500249+r12*1+rbp]
> 
> +        add     r12d,ecx
> 
> +        xor     eax,r11d
> 
> +        rol     esi,30
> 
> +        add     r12d,eax
> 
> +        mov     edx,DWORD[12+r9]
> 
> +        mov     eax,edi
> 
> +        mov     DWORD[8+rsp],r14d
> 
> +        mov     ecx,r12d
> 
> +        bswap   edx
> 
> +        xor     eax,esi
> 
> +        rol     ecx,5
> 
> +        and     eax,r13d
> 
> +        lea     r11d,[1518500249+r11*1+r14]
> 
> +        add     r11d,ecx
> 
> +        xor     eax,edi
> 
> +        rol     r13d,30
> 
> +        add     r11d,eax
> 
> +        mov     ebp,DWORD[16+r9]
> 
> +        mov     eax,esi
> 
> +        mov     DWORD[12+rsp],edx
> 
> +        mov     ecx,r11d
> 
> +        bswap   ebp
> 
> +        xor     eax,r13d
> 
> +        rol     ecx,5
> 
> +        and     eax,r12d
> 
> +        lea     edi,[1518500249+rdi*1+rdx]
> 
> +        add     edi,ecx
> 
> +        xor     eax,esi
> 
> +        rol     r12d,30
> 
> +        add     edi,eax
> 
> +        mov     r14d,DWORD[20+r9]
> 
> +        mov     eax,r13d
> 
> +        mov     DWORD[16+rsp],ebp
> 
> +        mov     ecx,edi
> 
> +        bswap   r14d
> 
> +        xor     eax,r12d
> 
> +        rol     ecx,5
> 
> +        and     eax,r11d
> 
> +        lea     esi,[1518500249+rsi*1+rbp]
> 
> +        add     esi,ecx
> 
> +        xor     eax,r13d
> 
> +        rol     r11d,30
> 
> +        add     esi,eax
> 
> +        mov     edx,DWORD[24+r9]
> 
> +        mov     eax,r12d
> 
> +        mov     DWORD[20+rsp],r14d
> 
> +        mov     ecx,esi
> 
> +        bswap   edx
> 
> +        xor     eax,r11d
> 
> +        rol     ecx,5
> 
> +        and     eax,edi
> 
> +        lea     r13d,[1518500249+r13*1+r14]
> 
> +        add     r13d,ecx
> 
> +        xor     eax,r12d
> 
> +        rol     edi,30
> 
> +        add     r13d,eax
> 
> +        mov     ebp,DWORD[28+r9]
> 
> +        mov     eax,r11d
> 
> +        mov     DWORD[24+rsp],edx
> 
> +        mov     ecx,r13d
> 
> +        bswap   ebp
> 
> +        xor     eax,edi
> 
> +        rol     ecx,5
> 
> +        and     eax,esi
> 
> +        lea     r12d,[1518500249+r12*1+rdx]
> 
> +        add     r12d,ecx
> 
> +        xor     eax,r11d
> 
> +        rol     esi,30
> 
> +        add     r12d,eax
> 
> +        mov     r14d,DWORD[32+r9]
> 
> +        mov     eax,edi
> 
> +        mov     DWORD[28+rsp],ebp
> 
> +        mov     ecx,r12d
> 
> +        bswap   r14d
> 
> +        xor     eax,esi
> 
> +        rol     ecx,5
> 
> +        and     eax,r13d
> 
> +        lea     r11d,[1518500249+r11*1+rbp]
> 
> +        add     r11d,ecx
> 
> +        xor     eax,edi
> 
> +        rol     r13d,30
> 
> +        add     r11d,eax
> 
> +        mov     edx,DWORD[36+r9]
> 
> +        mov     eax,esi
> 
> +        mov     DWORD[32+rsp],r14d
> 
> +        mov     ecx,r11d
> 
> +        bswap   edx
> 
> +        xor     eax,r13d
> 
> +        rol     ecx,5
> 
> +        and     eax,r12d
> 
> +        lea     edi,[1518500249+rdi*1+r14]
> 
> +        add     edi,ecx
> 
> +        xor     eax,esi
> 
> +        rol     r12d,30
> 
> +        add     edi,eax
> 
> +        mov     ebp,DWORD[40+r9]
> 
> +        mov     eax,r13d
> 
> +        mov     DWORD[36+rsp],edx
> 
> +        mov     ecx,edi
> 
> +        bswap   ebp
> 
> +        xor     eax,r12d
> 
> +        rol     ecx,5
> 
> +        and     eax,r11d
> 
> +        lea     esi,[1518500249+rsi*1+rdx]
> 
> +        add     esi,ecx
> 
> +        xor     eax,r13d
> 
> +        rol     r11d,30
> 
> +        add     esi,eax
> 
> +        mov     r14d,DWORD[44+r9]
> 
> +        mov     eax,r12d
> 
> +        mov     DWORD[40+rsp],ebp
> 
> +        mov     ecx,esi
> 
> +        bswap   r14d
> 
> +        xor     eax,r11d
> 
> +        rol     ecx,5
> 
> +        and     eax,edi
> 
> +        lea     r13d,[1518500249+r13*1+rbp]
> 
> +        add     r13d,ecx
> 
> +        xor     eax,r12d
> 
> +        rol     edi,30
> 
> +        add     r13d,eax
> 
> +        mov     edx,DWORD[48+r9]
> 
> +        mov     eax,r11d
> 
> +        mov     DWORD[44+rsp],r14d
> 
> +        mov     ecx,r13d
> 
> +        bswap   edx
> 
> +        xor     eax,edi
> 
> +        rol     ecx,5
> 
> +        and     eax,esi
> 
> +        lea     r12d,[1518500249+r12*1+r14]
> 
> +        add     r12d,ecx
> 
> +        xor     eax,r11d
> 
> +        rol     esi,30
> 
> +        add     r12d,eax
> 
> +        mov     ebp,DWORD[52+r9]
> 
> +        mov     eax,edi
> 
> +        mov     DWORD[48+rsp],edx
> 
> +        mov     ecx,r12d
> 
> +        bswap   ebp
> 
> +        xor     eax,esi
> 
> +        rol     ecx,5
> 
> +        and     eax,r13d
> 
> +        lea     r11d,[1518500249+r11*1+rdx]
> 
> +        add     r11d,ecx
> 
> +        xor     eax,edi
> 
> +        rol     r13d,30
> 
> +        add     r11d,eax
> 
> +        mov     r14d,DWORD[56+r9]
> 
> +        mov     eax,esi
> 
> +        mov     DWORD[52+rsp],ebp
> 
> +        mov     ecx,r11d
> 
> +        bswap   r14d
> 
> +        xor     eax,r13d
> 
> +        rol     ecx,5
> 
> +        and     eax,r12d
> 
> +        lea     edi,[1518500249+rdi*1+rbp]
> 
> +        add     edi,ecx
> 
> +        xor     eax,esi
> 
> +        rol     r12d,30
> 
> +        add     edi,eax
> 
> +        mov     edx,DWORD[60+r9]
> 
> +        mov     eax,r13d
> 
> +        mov     DWORD[56+rsp],r14d
> 
> +        mov     ecx,edi
> 
> +        bswap   edx
> 
> +        xor     eax,r12d
> 
> +        rol     ecx,5
> 
> +        and     eax,r11d
> 
> +        lea     esi,[1518500249+rsi*1+r14]
> 
> +        add     esi,ecx
> 
> +        xor     eax,r13d
> 
> +        rol     r11d,30
> 
> +        add     esi,eax
> 
> +        xor     ebp,DWORD[rsp]
> 
> +        mov     eax,r12d
> 
> +        mov     DWORD[60+rsp],edx
> 
> +        mov     ecx,esi
> 
> +        xor     ebp,DWORD[8+rsp]
> 
> +        xor     eax,r11d
> 
> +        rol     ecx,5
> 
> +        xor     ebp,DWORD[32+rsp]
> 
> +        and     eax,edi
> 
> +        lea     r13d,[1518500249+r13*1+rdx]
> 
> +        rol     edi,30
> 
> +        xor     eax,r12d
> 
> +        add     r13d,ecx
> 
> +        rol     ebp,1
> 
> +        add     r13d,eax
> 
> +        xor     r14d,DWORD[4+rsp]
> 
> +        mov     eax,r11d
> 
> +        mov     DWORD[rsp],ebp
> 
> +        mov     ecx,r13d
> 
> +        xor     r14d,DWORD[12+rsp]
> 
> +        xor     eax,edi
> 
> +        rol     ecx,5
> 
> +        xor     r14d,DWORD[36+rsp]
> 
> +        and     eax,esi
> 
> +        lea     r12d,[1518500249+r12*1+rbp]
> 
> +        rol     esi,30
> 
> +        xor     eax,r11d
> 
> +        add     r12d,ecx
> 
> +        rol     r14d,1
> 
> +        add     r12d,eax
> 
> +        xor     edx,DWORD[8+rsp]
> 
> +        mov     eax,edi
> 
> +        mov     DWORD[4+rsp],r14d
> 
> +        mov     ecx,r12d
> 
> +        xor     edx,DWORD[16+rsp]
> 
> +        xor     eax,esi
> 
> +        rol     ecx,5
> 
> +        xor     edx,DWORD[40+rsp]
> 
> +        and     eax,r13d
> 
> +        lea     r11d,[1518500249+r11*1+r14]
> 
> +        rol     r13d,30
> 
> +        xor     eax,edi
> 
> +        add     r11d,ecx
> 
> +        rol     edx,1
> 
> +        add     r11d,eax
> 
> +        xor     ebp,DWORD[12+rsp]
> 
> +        mov     eax,esi
> 
> +        mov     DWORD[8+rsp],edx
> 
> +        mov     ecx,r11d
> 
> +        xor     ebp,DWORD[20+rsp]
> 
> +        xor     eax,r13d
> 
> +        rol     ecx,5
> 
> +        xor     ebp,DWORD[44+rsp]
> 
> +        and     eax,r12d
> 
> +        lea     edi,[1518500249+rdi*1+rdx]
> 
> +        rol     r12d,30
> 
> +        xor     eax,esi
> 
> +        add     edi,ecx
> 
> +        rol     ebp,1
> 
> +        add     edi,eax
> 
> +        xor     r14d,DWORD[16+rsp]
> 
> +        mov     eax,r13d
> 
> +        mov     DWORD[12+rsp],ebp
> 
> +        mov     ecx,edi
> 
> +        xor     r14d,DWORD[24+rsp]
> 
> +        xor     eax,r12d
> 
> +        rol     ecx,5
> 
> +        xor     r14d,DWORD[48+rsp]
> 
> +        and     eax,r11d
> 
> +        lea     esi,[1518500249+rsi*1+rbp]
> 
> +        rol     r11d,30
> 
> +        xor     eax,r13d
> 
> +        add     esi,ecx
> 
> +        rol     r14d,1
> 
> +        add     esi,eax
> 
> +        xor     edx,DWORD[20+rsp]
> 
> +        mov     eax,edi
> 
> +        mov     DWORD[16+rsp],r14d
> 
> +        mov     ecx,esi
> 
> +        xor     edx,DWORD[28+rsp]
> 
> +        xor     eax,r12d
> 
> +        rol     ecx,5
> 
> +        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[24+rsp]
> 
> +        mov     eax,esi
> 
> +        mov     DWORD[20+rsp],edx
> 
> +        mov     ecx,r13d
> 
> +        xor     ebp,DWORD[32+rsp]
> 
> +        xor     eax,r11d
> 
> +        rol     ecx,5
> 
> +        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[28+rsp]
> 
> +        mov     eax,r13d
> 
> +        mov     DWORD[24+rsp],ebp
> 
> +        mov     ecx,r12d
> 
> +        xor     r14d,DWORD[36+rsp]
> 
> +        xor     eax,edi
> 
> +        rol     ecx,5
> 
> +        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[32+rsp]
> 
> +        mov     eax,r12d
> 
> +        mov     DWORD[28+rsp],r14d
> 
> +        mov     ecx,r11d
> 
> +        xor     edx,DWORD[40+rsp]
> 
> +        xor     eax,esi
> 
> +        rol     ecx,5
> 
> +        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[36+rsp]
> 
> +        mov     eax,r11d
> 
> +        mov     DWORD[32+rsp],edx
> 
> +        mov     ecx,edi
> 
> +        xor     ebp,DWORD[44+rsp]
> 
> +        xor     eax,r13d
> 
> +        rol     ecx,5
> 
> +        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[40+rsp]
> 
> +        mov     eax,edi
> 
> +        mov     DWORD[36+rsp],ebp
> 
> +        mov     ecx,esi
> 
> +        xor     r14d,DWORD[48+rsp]
> 
> +        xor     eax,r12d
> 
> +        rol     ecx,5
> 
> +        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[44+rsp]
> 
> +        mov     eax,esi
> 
> +        mov     DWORD[40+rsp],r14d
> 
> +        mov     ecx,r13d
> 
> +        xor     edx,DWORD[52+rsp]
> 
> +        xor     eax,r11d
> 
> +        rol     ecx,5
> 
> +        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[48+rsp]
> 
> +        mov     eax,r13d
> 
> +        mov     DWORD[44+rsp],edx
> 
> +        mov     ecx,r12d
> 
> +        xor     ebp,DWORD[56+rsp]
> 
> +        xor     eax,edi
> 
> +        rol     ecx,5
> 
> +        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[52+rsp]
> 
> +        mov     eax,r12d
> 
> +        mov     DWORD[48+rsp],ebp
> 
> +        mov     ecx,r11d
> 
> +        xor     r14d,DWORD[60+rsp]
> 
> +        xor     eax,esi
> 
> +        rol     ecx,5
> 
> +        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[56+rsp]
> 
> +        mov     eax,r11d
> 
> +        mov     DWORD[52+rsp],r14d
> 
> +        mov     ecx,edi
> 
> +        xor     edx,DWORD[rsp]
> 
> +        xor     eax,r13d
> 
> +        rol     ecx,5
> 
> +        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[60+rsp]
> 
> +        mov     eax,edi
> 
> +        mov     DWORD[56+rsp],edx
> 
> +        mov     ecx,esi
> 
> +        xor     ebp,DWORD[4+rsp]
> 
> +        xor     eax,r12d
> 
> +        rol     ecx,5
> 
> +        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[rsp]
> 
> +        mov     eax,esi
> 
> +        mov     DWORD[60+rsp],ebp
> 
> +        mov     ecx,r13d
> 
> +        xor     r14d,DWORD[8+rsp]
> 
> +        xor     eax,r11d
> 
> +        rol     ecx,5
> 
> +        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[4+rsp]
> 
> +        mov     eax,r13d
> 
> +        mov     DWORD[rsp],r14d
> 
> +        mov     ecx,r12d
> 
> +        xor     edx,DWORD[12+rsp]
> 
> +        xor     eax,edi
> 
> +        rol     ecx,5
> 
> +        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[8+rsp]
> 
> +        mov     eax,r12d
> 
> +        mov     DWORD[4+rsp],edx
> 
> +        mov     ecx,r11d
> 
> +        xor     ebp,DWORD[16+rsp]
> 
> +        xor     eax,esi
> 
> +        rol     ecx,5
> 
> +        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[12+rsp]
> 
> +        mov     eax,r11d
> 
> +        mov     DWORD[8+rsp],ebp
> 
> +        mov     ecx,edi
> 
> +        xor     r14d,DWORD[20+rsp]
> 
> +        xor     eax,r13d
> 
> +        rol     ecx,5
> 
> +        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[16+rsp]
> 
> +        mov     eax,edi
> 
> +        mov     DWORD[12+rsp],r14d
> 
> +        mov     ecx,esi
> 
> +        xor     edx,DWORD[24+rsp]
> 
> +        xor     eax,r12d
> 
> +        rol     ecx,5
> 
> +        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[20+rsp]
> 
> +        mov     eax,esi
> 
> +        mov     DWORD[16+rsp],edx
> 
> +        mov     ecx,r13d
> 
> +        xor     ebp,DWORD[28+rsp]
> 
> +        xor     eax,r11d
> 
> +        rol     ecx,5
> 
> +        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[24+rsp]
> 
> +        mov     eax,r13d
> 
> +        mov     DWORD[20+rsp],ebp
> 
> +        mov     ecx,r12d
> 
> +        xor     r14d,DWORD[32+rsp]
> 
> +        xor     eax,edi
> 
> +        rol     ecx,5
> 
> +        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[28+rsp]
> 
> +        mov     eax,r12d
> 
> +        mov     DWORD[24+rsp],r14d
> 
> +        mov     ecx,r11d
> 
> +        xor     edx,DWORD[36+rsp]
> 
> +        xor     eax,esi
> 
> +        rol     ecx,5
> 
> +        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[32+rsp]
> 
> +        mov     eax,r11d
> 
> +        mov     DWORD[28+rsp],edx
> 
> +        mov     ecx,edi
> 
> +        xor     ebp,DWORD[40+rsp]
> 
> +        xor     eax,r13d
> 
> +        rol     ecx,5
> 
> +        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[36+rsp]
> 
> +        mov     eax,r12d
> 
> +        mov     DWORD[32+rsp],ebp
> 
> +        mov     ebx,r12d
> 
> +        xor     r14d,DWORD[44+rsp]
> 
> +        and     eax,r11d
> 
> +        mov     ecx,esi
> 
> +        xor     r14d,DWORD[4+rsp]
> 
> +        lea     r13d,[((-1894007588))+r13*1+rbp]
> 
> +        xor     ebx,r11d
> 
> +        rol     ecx,5
> 
> +        add     r13d,eax
> 
> +        rol     r14d,1
> 
> +        and     ebx,edi
> 
> +        add     r13d,ecx
> 
> +        rol     edi,30
> 
> +        add     r13d,ebx
> 
> +        xor     edx,DWORD[40+rsp]
> 
> +        mov     eax,r11d
> 
> +        mov     DWORD[36+rsp],r14d
> 
> +        mov     ebx,r11d
> 
> +        xor     edx,DWORD[48+rsp]
> 
> +        and     eax,edi
> 
> +        mov     ecx,r13d
> 
> +        xor     edx,DWORD[8+rsp]
> 
> +        lea     r12d,[((-1894007588))+r12*1+r14]
> 
> +        xor     ebx,edi
> 
> +        rol     ecx,5
> 
> +        add     r12d,eax
> 
> +        rol     edx,1
> 
> +        and     ebx,esi
> 
> +        add     r12d,ecx
> 
> +        rol     esi,30
> 
> +        add     r12d,ebx
> 
> +        xor     ebp,DWORD[44+rsp]
> 
> +        mov     eax,edi
> 
> +        mov     DWORD[40+rsp],edx
> 
> +        mov     ebx,edi
> 
> +        xor     ebp,DWORD[52+rsp]
> 
> +        and     eax,esi
> 
> +        mov     ecx,r12d
> 
> +        xor     ebp,DWORD[12+rsp]
> 
> +        lea     r11d,[((-1894007588))+r11*1+rdx]
> 
> +        xor     ebx,esi
> 
> +        rol     ecx,5
> 
> +        add     r11d,eax
> 
> +        rol     ebp,1
> 
> +        and     ebx,r13d
> 
> +        add     r11d,ecx
> 
> +        rol     r13d,30
> 
> +        add     r11d,ebx
> 
> +        xor     r14d,DWORD[48+rsp]
> 
> +        mov     eax,esi
> 
> +        mov     DWORD[44+rsp],ebp
> 
> +        mov     ebx,esi
> 
> +        xor     r14d,DWORD[56+rsp]
> 
> +        and     eax,r13d
> 
> +        mov     ecx,r11d
> 
> +        xor     r14d,DWORD[16+rsp]
> 
> +        lea     edi,[((-1894007588))+rdi*1+rbp]
> 
> +        xor     ebx,r13d
> 
> +        rol     ecx,5
> 
> +        add     edi,eax
> 
> +        rol     r14d,1
> 
> +        and     ebx,r12d
> 
> +        add     edi,ecx
> 
> +        rol     r12d,30
> 
> +        add     edi,ebx
> 
> +        xor     edx,DWORD[52+rsp]
> 
> +        mov     eax,r13d
> 
> +        mov     DWORD[48+rsp],r14d
> 
> +        mov     ebx,r13d
> 
> +        xor     edx,DWORD[60+rsp]
> 
> +        and     eax,r12d
> 
> +        mov     ecx,edi
> 
> +        xor     edx,DWORD[20+rsp]
> 
> +        lea     esi,[((-1894007588))+rsi*1+r14]
> 
> +        xor     ebx,r12d
> 
> +        rol     ecx,5
> 
> +        add     esi,eax
> 
> +        rol     edx,1
> 
> +        and     ebx,r11d
> 
> +        add     esi,ecx
> 
> +        rol     r11d,30
> 
> +        add     esi,ebx
> 
> +        xor     ebp,DWORD[56+rsp]
> 
> +        mov     eax,r12d
> 
> +        mov     DWORD[52+rsp],edx
> 
> +        mov     ebx,r12d
> 
> +        xor     ebp,DWORD[rsp]
> 
> +        and     eax,r11d
> 
> +        mov     ecx,esi
> 
> +        xor     ebp,DWORD[24+rsp]
> 
> +        lea     r13d,[((-1894007588))+r13*1+rdx]
> 
> +        xor     ebx,r11d
> 
> +        rol     ecx,5
> 
> +        add     r13d,eax
> 
> +        rol     ebp,1
> 
> +        and     ebx,edi
> 
> +        add     r13d,ecx
> 
> +        rol     edi,30
> 
> +        add     r13d,ebx
> 
> +        xor     r14d,DWORD[60+rsp]
> 
> +        mov     eax,r11d
> 
> +        mov     DWORD[56+rsp],ebp
> 
> +        mov     ebx,r11d
> 
> +        xor     r14d,DWORD[4+rsp]
> 
> +        and     eax,edi
> 
> +        mov     ecx,r13d
> 
> +        xor     r14d,DWORD[28+rsp]
> 
> +        lea     r12d,[((-1894007588))+r12*1+rbp]
> 
> +        xor     ebx,edi
> 
> +        rol     ecx,5
> 
> +        add     r12d,eax
> 
> +        rol     r14d,1
> 
> +        and     ebx,esi
> 
> +        add     r12d,ecx
> 
> +        rol     esi,30
> 
> +        add     r12d,ebx
> 
> +        xor     edx,DWORD[rsp]
> 
> +        mov     eax,edi
> 
> +        mov     DWORD[60+rsp],r14d
> 
> +        mov     ebx,edi
> 
> +        xor     edx,DWORD[8+rsp]
> 
> +        and     eax,esi
> 
> +        mov     ecx,r12d
> 
> +        xor     edx,DWORD[32+rsp]
> 
> +        lea     r11d,[((-1894007588))+r11*1+r14]
> 
> +        xor     ebx,esi
> 
> +        rol     ecx,5
> 
> +        add     r11d,eax
> 
> +        rol     edx,1
> 
> +        and     ebx,r13d
> 
> +        add     r11d,ecx
> 
> +        rol     r13d,30
> 
> +        add     r11d,ebx
> 
> +        xor     ebp,DWORD[4+rsp]
> 
> +        mov     eax,esi
> 
> +        mov     DWORD[rsp],edx
> 
> +        mov     ebx,esi
> 
> +        xor     ebp,DWORD[12+rsp]
> 
> +        and     eax,r13d
> 
> +        mov     ecx,r11d
> 
> +        xor     ebp,DWORD[36+rsp]
> 
> +        lea     edi,[((-1894007588))+rdi*1+rdx]
> 
> +        xor     ebx,r13d
> 
> +        rol     ecx,5
> 
> +        add     edi,eax
> 
> +        rol     ebp,1
> 
> +        and     ebx,r12d
> 
> +        add     edi,ecx
> 
> +        rol     r12d,30
> 
> +        add     edi,ebx
> 
> +        xor     r14d,DWORD[8+rsp]
> 
> +        mov     eax,r13d
> 
> +        mov     DWORD[4+rsp],ebp
> 
> +        mov     ebx,r13d
> 
> +        xor     r14d,DWORD[16+rsp]
> 
> +        and     eax,r12d
> 
> +        mov     ecx,edi
> 
> +        xor     r14d,DWORD[40+rsp]
> 
> +        lea     esi,[((-1894007588))+rsi*1+rbp]
> 
> +        xor     ebx,r12d
> 
> +        rol     ecx,5
> 
> +        add     esi,eax
> 
> +        rol     r14d,1
> 
> +        and     ebx,r11d
> 
> +        add     esi,ecx
> 
> +        rol     r11d,30
> 
> +        add     esi,ebx
> 
> +        xor     edx,DWORD[12+rsp]
> 
> +        mov     eax,r12d
> 
> +        mov     DWORD[8+rsp],r14d
> 
> +        mov     ebx,r12d
> 
> +        xor     edx,DWORD[20+rsp]
> 
> +        and     eax,r11d
> 
> +        mov     ecx,esi
> 
> +        xor     edx,DWORD[44+rsp]
> 
> +        lea     r13d,[((-1894007588))+r13*1+r14]
> 
> +        xor     ebx,r11d
> 
> +        rol     ecx,5
> 
> +        add     r13d,eax
> 
> +        rol     edx,1
> 
> +        and     ebx,edi
> 
> +        add     r13d,ecx
> 
> +        rol     edi,30
> 
> +        add     r13d,ebx
> 
> +        xor     ebp,DWORD[16+rsp]
> 
> +        mov     eax,r11d
> 
> +        mov     DWORD[12+rsp],edx
> 
> +        mov     ebx,r11d
> 
> +        xor     ebp,DWORD[24+rsp]
> 
> +        and     eax,edi
> 
> +        mov     ecx,r13d
> 
> +        xor     ebp,DWORD[48+rsp]
> 
> +        lea     r12d,[((-1894007588))+r12*1+rdx]
> 
> +        xor     ebx,edi
> 
> +        rol     ecx,5
> 
> +        add     r12d,eax
> 
> +        rol     ebp,1
> 
> +        and     ebx,esi
> 
> +        add     r12d,ecx
> 
> +        rol     esi,30
> 
> +        add     r12d,ebx
> 
> +        xor     r14d,DWORD[20+rsp]
> 
> +        mov     eax,edi
> 
> +        mov     DWORD[16+rsp],ebp
> 
> +        mov     ebx,edi
> 
> +        xor     r14d,DWORD[28+rsp]
> 
> +        and     eax,esi
> 
> +        mov     ecx,r12d
> 
> +        xor     r14d,DWORD[52+rsp]
> 
> +        lea     r11d,[((-1894007588))+r11*1+rbp]
> 
> +        xor     ebx,esi
> 
> +        rol     ecx,5
> 
> +        add     r11d,eax
> 
> +        rol     r14d,1
> 
> +        and     ebx,r13d
> 
> +        add     r11d,ecx
> 
> +        rol     r13d,30
> 
> +        add     r11d,ebx
> 
> +        xor     edx,DWORD[24+rsp]
> 
> +        mov     eax,esi
> 
> +        mov     DWORD[20+rsp],r14d
> 
> +        mov     ebx,esi
> 
> +        xor     edx,DWORD[32+rsp]
> 
> +        and     eax,r13d
> 
> +        mov     ecx,r11d
> 
> +        xor     edx,DWORD[56+rsp]
> 
> +        lea     edi,[((-1894007588))+rdi*1+r14]
> 
> +        xor     ebx,r13d
> 
> +        rol     ecx,5
> 
> +        add     edi,eax
> 
> +        rol     edx,1
> 
> +        and     ebx,r12d
> 
> +        add     edi,ecx
> 
> +        rol     r12d,30
> 
> +        add     edi,ebx
> 
> +        xor     ebp,DWORD[28+rsp]
> 
> +        mov     eax,r13d
> 
> +        mov     DWORD[24+rsp],edx
> 
> +        mov     ebx,r13d
> 
> +        xor     ebp,DWORD[36+rsp]
> 
> +        and     eax,r12d
> 
> +        mov     ecx,edi
> 
> +        xor     ebp,DWORD[60+rsp]
> 
> +        lea     esi,[((-1894007588))+rsi*1+rdx]
> 
> +        xor     ebx,r12d
> 
> +        rol     ecx,5
> 
> +        add     esi,eax
> 
> +        rol     ebp,1
> 
> +        and     ebx,r11d
> 
> +        add     esi,ecx
> 
> +        rol     r11d,30
> 
> +        add     esi,ebx
> 
> +        xor     r14d,DWORD[32+rsp]
> 
> +        mov     eax,r12d
> 
> +        mov     DWORD[28+rsp],ebp
> 
> +        mov     ebx,r12d
> 
> +        xor     r14d,DWORD[40+rsp]
> 
> +        and     eax,r11d
> 
> +        mov     ecx,esi
> 
> +        xor     r14d,DWORD[rsp]
> 
> +        lea     r13d,[((-1894007588))+r13*1+rbp]
> 
> +        xor     ebx,r11d
> 
> +        rol     ecx,5
> 
> +        add     r13d,eax
> 
> +        rol     r14d,1
> 
> +        and     ebx,edi
> 
> +        add     r13d,ecx
> 
> +        rol     edi,30
> 
> +        add     r13d,ebx
> 
> +        xor     edx,DWORD[36+rsp]
> 
> +        mov     eax,r11d
> 
> +        mov     DWORD[32+rsp],r14d
> 
> +        mov     ebx,r11d
> 
> +        xor     edx,DWORD[44+rsp]
> 
> +        and     eax,edi
> 
> +        mov     ecx,r13d
> 
> +        xor     edx,DWORD[4+rsp]
> 
> +        lea     r12d,[((-1894007588))+r12*1+r14]
> 
> +        xor     ebx,edi
> 
> +        rol     ecx,5
> 
> +        add     r12d,eax
> 
> +        rol     edx,1
> 
> +        and     ebx,esi
> 
> +        add     r12d,ecx
> 
> +        rol     esi,30
> 
> +        add     r12d,ebx
> 
> +        xor     ebp,DWORD[40+rsp]
> 
> +        mov     eax,edi
> 
> +        mov     DWORD[36+rsp],edx
> 
> +        mov     ebx,edi
> 
> +        xor     ebp,DWORD[48+rsp]
> 
> +        and     eax,esi
> 
> +        mov     ecx,r12d
> 
> +        xor     ebp,DWORD[8+rsp]
> 
> +        lea     r11d,[((-1894007588))+r11*1+rdx]
> 
> +        xor     ebx,esi
> 
> +        rol     ecx,5
> 
> +        add     r11d,eax
> 
> +        rol     ebp,1
> 
> +        and     ebx,r13d
> 
> +        add     r11d,ecx
> 
> +        rol     r13d,30
> 
> +        add     r11d,ebx
> 
> +        xor     r14d,DWORD[44+rsp]
> 
> +        mov     eax,esi
> 
> +        mov     DWORD[40+rsp],ebp
> 
> +        mov     ebx,esi
> 
> +        xor     r14d,DWORD[52+rsp]
> 
> +        and     eax,r13d
> 
> +        mov     ecx,r11d
> 
> +        xor     r14d,DWORD[12+rsp]
> 
> +        lea     edi,[((-1894007588))+rdi*1+rbp]
> 
> +        xor     ebx,r13d
> 
> +        rol     ecx,5
> 
> +        add     edi,eax
> 
> +        rol     r14d,1
> 
> +        and     ebx,r12d
> 
> +        add     edi,ecx
> 
> +        rol     r12d,30
> 
> +        add     edi,ebx
> 
> +        xor     edx,DWORD[48+rsp]
> 
> +        mov     eax,r13d
> 
> +        mov     DWORD[44+rsp],r14d
> 
> +        mov     ebx,r13d
> 
> +        xor     edx,DWORD[56+rsp]
> 
> +        and     eax,r12d
> 
> +        mov     ecx,edi
> 
> +        xor     edx,DWORD[16+rsp]
> 
> +        lea     esi,[((-1894007588))+rsi*1+r14]
> 
> +        xor     ebx,r12d
> 
> +        rol     ecx,5
> 
> +        add     esi,eax
> 
> +        rol     edx,1
> 
> +        and     ebx,r11d
> 
> +        add     esi,ecx
> 
> +        rol     r11d,30
> 
> +        add     esi,ebx
> 
> +        xor     ebp,DWORD[52+rsp]
> 
> +        mov     eax,edi
> 
> +        mov     DWORD[48+rsp],edx
> 
> +        mov     ecx,esi
> 
> +        xor     ebp,DWORD[60+rsp]
> 
> +        xor     eax,r12d
> 
> +        rol     ecx,5
> 
> +        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[56+rsp]
> 
> +        mov     eax,esi
> 
> +        mov     DWORD[52+rsp],ebp
> 
> +        mov     ecx,r13d
> 
> +        xor     r14d,DWORD[rsp]
> 
> +        xor     eax,r11d
> 
> +        rol     ecx,5
> 
> +        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[60+rsp]
> 
> +        mov     eax,r13d
> 
> +        mov     DWORD[56+rsp],r14d
> 
> +        mov     ecx,r12d
> 
> +        xor     edx,DWORD[4+rsp]
> 
> +        xor     eax,edi
> 
> +        rol     ecx,5
> 
> +        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[rsp]
> 
> +        mov     eax,r12d
> 
> +        mov     DWORD[60+rsp],edx
> 
> +        mov     ecx,r11d
> 
> +        xor     ebp,DWORD[8+rsp]
> 
> +        xor     eax,esi
> 
> +        rol     ecx,5
> 
> +        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[4+rsp]
> 
> +        mov     eax,r11d
> 
> +        mov     DWORD[rsp],ebp
> 
> +        mov     ecx,edi
> 
> +        xor     r14d,DWORD[12+rsp]
> 
> +        xor     eax,r13d
> 
> +        rol     ecx,5
> 
> +        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[8+rsp]
> 
> +        mov     eax,edi
> 
> +        mov     DWORD[4+rsp],r14d
> 
> +        mov     ecx,esi
> 
> +        xor     edx,DWORD[16+rsp]
> 
> +        xor     eax,r12d
> 
> +        rol     ecx,5
> 
> +        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[12+rsp]
> 
> +        mov     eax,esi
> 
> +        mov     DWORD[8+rsp],edx
> 
> +        mov     ecx,r13d
> 
> +        xor     ebp,DWORD[20+rsp]
> 
> +        xor     eax,r11d
> 
> +        rol     ecx,5
> 
> +        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[16+rsp]
> 
> +        mov     eax,r13d
> 
> +        mov     DWORD[12+rsp],ebp
> 
> +        mov     ecx,r12d
> 
> +        xor     r14d,DWORD[24+rsp]
> 
> +        xor     eax,edi
> 
> +        rol     ecx,5
> 
> +        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[20+rsp]
> 
> +        mov     eax,r12d
> 
> +        mov     DWORD[16+rsp],r14d
> 
> +        mov     ecx,r11d
> 
> +        xor     edx,DWORD[28+rsp]
> 
> +        xor     eax,esi
> 
> +        rol     ecx,5
> 
> +        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[24+rsp]
> 
> +        mov     eax,r11d
> 
> +        mov     DWORD[20+rsp],edx
> 
> +        mov     ecx,edi
> 
> +        xor     ebp,DWORD[32+rsp]
> 
> +        xor     eax,r13d
> 
> +        rol     ecx,5
> 
> +        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[28+rsp]
> 
> +        mov     eax,edi
> 
> +        mov     DWORD[24+rsp],ebp
> 
> +        mov     ecx,esi
> 
> +        xor     r14d,DWORD[36+rsp]
> 
> +        xor     eax,r12d
> 
> +        rol     ecx,5
> 
> +        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[32+rsp]
> 
> +        mov     eax,esi
> 
> +        mov     DWORD[28+rsp],r14d
> 
> +        mov     ecx,r13d
> 
> +        xor     edx,DWORD[40+rsp]
> 
> +        xor     eax,r11d
> 
> +        rol     ecx,5
> 
> +        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[36+rsp]
> 
> +        mov     eax,r13d
> 
> +
> 
> +        mov     ecx,r12d
> 
> +        xor     ebp,DWORD[44+rsp]
> 
> +        xor     eax,edi
> 
> +        rol     ecx,5
> 
> +        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[40+rsp]
> 
> +        mov     eax,r12d
> 
> +
> 
> +        mov     ecx,r11d
> 
> +        xor     r14d,DWORD[48+rsp]
> 
> +        xor     eax,esi
> 
> +        rol     ecx,5
> 
> +        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[44+rsp]
> 
> +        mov     eax,r11d
> 
> +
> 
> +        mov     ecx,edi
> 
> +        xor     edx,DWORD[52+rsp]
> 
> +        xor     eax,r13d
> 
> +        rol     ecx,5
> 
> +        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[48+rsp]
> 
> +        mov     eax,edi
> 
> +
> 
> +        mov     ecx,esi
> 
> +        xor     ebp,DWORD[56+rsp]
> 
> +        xor     eax,r12d
> 
> +        rol     ecx,5
> 
> +        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[52+rsp]
> 
> +        mov     eax,esi
> 
> +
> 
> +        mov     ecx,r13d
> 
> +        xor     r14d,DWORD[60+rsp]
> 
> +        xor     eax,r11d
> 
> +        rol     ecx,5
> 
> +        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[56+rsp]
> 
> +        mov     eax,r13d
> 
> +
> 
> +        mov     ecx,r12d
> 
> +        xor     edx,DWORD[rsp]
> 
> +        xor     eax,edi
> 
> +        rol     ecx,5
> 
> +        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[60+rsp]
> 
> +        mov     eax,r12d
> 
> +
> 
> +        mov     ecx,r11d
> 
> +        xor     ebp,DWORD[4+rsp]
> 
> +        xor     eax,esi
> 
> +        rol     ecx,5
> 
> +        xor     ebp,DWORD[28+rsp]
> 
> +        lea     edi,[((-899497514))+rdi*1+rdx]
> 
> +        xor     eax,r13d
> 
> +        add     edi,ecx
> 
> +        rol     r12d,30
> 
> +        add     edi,eax
> 
> +        rol     ebp,1
> 
> +        mov     eax,r11d
> 
> +        mov     ecx,edi
> 
> +        xor     eax,r13d
> 
> +        lea     esi,[((-899497514))+rsi*1+rbp]
> 
> +        rol     ecx,5
> 
> +        xor     eax,r12d
> 
> +        add     esi,ecx
> 
> +        rol     r11d,30
> 
> +        add     esi,eax
> 
> +        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,[64+r9]
> 
> +        jnz     NEAR $L$loop
> 
> +
> 
> +        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:
> 
> +
> 
> +ALIGN   32
> 
> +sha1_block_data_order_shaext:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_sha1_block_data_order_shaext:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +
> 
> +
> 
> +_shaext_shortcut:
> 
> +
> 
> +        lea     rsp,[((-72))+rsp]
> 
> +        movaps  XMMWORD[(-8-64)+rax],xmm6
> 
> +        movaps  XMMWORD[(-8-48)+rax],xmm7
> 
> +        movaps  XMMWORD[(-8-32)+rax],xmm8
> 
> +        movaps  XMMWORD[(-8-16)+rax],xmm9
> 
> +$L$prologue_shaext:
> 
> +        movdqu  xmm0,XMMWORD[rdi]
> 
> +        movd    xmm1,DWORD[16+rdi]
> 
> +        movdqa  xmm3,XMMWORD[((K_XX_XX+160))]
> 
> +
> 
> +        movdqu  xmm4,XMMWORD[rsi]
> 
> +        pshufd  xmm0,xmm0,27
> 
> +        movdqu  xmm5,XMMWORD[16+rsi]
> 
> +        pshufd  xmm1,xmm1,27
> 
> +        movdqu  xmm6,XMMWORD[32+rsi]
> 
> +DB      102,15,56,0,227
> 
> +        movdqu  xmm7,XMMWORD[48+rsi]
> 
> +DB      102,15,56,0,235
> 
> +DB      102,15,56,0,243
> 
> +        movdqa  xmm9,xmm1
> 
> +DB      102,15,56,0,251
> 
> +        jmp     NEAR $L$oop_shaext
> 
> +
> 
> +ALIGN   16
> 
> +$L$oop_shaext:
> 
> +        dec     rdx
> 
> +        lea     r8,[64+rsi]
> 
> +        paddd   xmm1,xmm4
> 
> +        cmovne  rsi,r8
> 
> +        movdqa  xmm8,xmm0
> 
> +DB      15,56,201,229
> 
> +        movdqa  xmm2,xmm0
> 
> +DB      15,58,204,193,0
> 
> +DB      15,56,200,213
> 
> +        pxor    xmm4,xmm6
> 
> +DB      15,56,201,238
> 
> +DB      15,56,202,231
> 
> +
> 
> +        movdqa  xmm1,xmm0
> 
> +DB      15,58,204,194,0
> 
> +DB      15,56,200,206
> 
> +        pxor    xmm5,xmm7
> 
> +DB      15,56,202,236
> 
> +DB      15,56,201,247
> 
> +        movdqa  xmm2,xmm0
> 
> +DB      15,58,204,193,0
> 
> +DB      15,56,200,215
> 
> +        pxor    xmm6,xmm4
> 
> +DB      15,56,201,252
> 
> +DB      15,56,202,245
> 
> +
> 
> +        movdqa  xmm1,xmm0
> 
> +DB      15,58,204,194,0
> 
> +DB      15,56,200,204
> 
> +        pxor    xmm7,xmm5
> 
> +DB      15,56,202,254
> 
> +DB      15,56,201,229
> 
> +        movdqa  xmm2,xmm0
> 
> +DB      15,58,204,193,0
> 
> +DB      15,56,200,213
> 
> +        pxor    xmm4,xmm6
> 
> +DB      15,56,201,238
> 
> +DB      15,56,202,231
> 
> +
> 
> +        movdqa  xmm1,xmm0
> 
> +DB      15,58,204,194,1
> 
> +DB      15,56,200,206
> 
> +        pxor    xmm5,xmm7
> 
> +DB      15,56,202,236
> 
> +DB      15,56,201,247
> 
> +        movdqa  xmm2,xmm0
> 
> +DB      15,58,204,193,1
> 
> +DB      15,56,200,215
> 
> +        pxor    xmm6,xmm4
> 
> +DB      15,56,201,252
> 
> +DB      15,56,202,245
> 
> +
> 
> +        movdqa  xmm1,xmm0
> 
> +DB      15,58,204,194,1
> 
> +DB      15,56,200,204
> 
> +        pxor    xmm7,xmm5
> 
> +DB      15,56,202,254
> 
> +DB      15,56,201,229
> 
> +        movdqa  xmm2,xmm0
> 
> +DB      15,58,204,193,1
> 
> +DB      15,56,200,213
> 
> +        pxor    xmm4,xmm6
> 
> +DB      15,56,201,238
> 
> +DB      15,56,202,231
> 
> +
> 
> +        movdqa  xmm1,xmm0
> 
> +DB      15,58,204,194,1
> 
> +DB      15,56,200,206
> 
> +        pxor    xmm5,xmm7
> 
> +DB      15,56,202,236
> 
> +DB      15,56,201,247
> 
> +        movdqa  xmm2,xmm0
> 
> +DB      15,58,204,193,2
> 
> +DB      15,56,200,215
> 
> +        pxor    xmm6,xmm4
> 
> +DB      15,56,201,252
> 
> +DB      15,56,202,245
> 
> +
> 
> +        movdqa  xmm1,xmm0
> 
> +DB      15,58,204,194,2
> 
> +DB      15,56,200,204
> 
> +        pxor    xmm7,xmm5
> 
> +DB      15,56,202,254
> 
> +DB      15,56,201,229
> 
> +        movdqa  xmm2,xmm0
> 
> +DB      15,58,204,193,2
> 
> +DB      15,56,200,213
> 
> +        pxor    xmm4,xmm6
> 
> +DB      15,56,201,238
> 
> +DB      15,56,202,231
> 
> +
> 
> +        movdqa  xmm1,xmm0
> 
> +DB      15,58,204,194,2
> 
> +DB      15,56,200,206
> 
> +        pxor    xmm5,xmm7
> 
> +DB      15,56,202,236
> 
> +DB      15,56,201,247
> 
> +        movdqa  xmm2,xmm0
> 
> +DB      15,58,204,193,2
> 
> +DB      15,56,200,215
> 
> +        pxor    xmm6,xmm4
> 
> +DB      15,56,201,252
> 
> +DB      15,56,202,245
> 
> +
> 
> +        movdqa  xmm1,xmm0
> 
> +DB      15,58,204,194,3
> 
> +DB      15,56,200,204
> 
> +        pxor    xmm7,xmm5
> 
> +DB      15,56,202,254
> 
> +        movdqu  xmm4,XMMWORD[rsi]
> 
> +        movdqa  xmm2,xmm0
> 
> +DB      15,58,204,193,3
> 
> +DB      15,56,200,213
> 
> +        movdqu  xmm5,XMMWORD[16+rsi]
> 
> +DB      102,15,56,0,227
> 
> +
> 
> +        movdqa  xmm1,xmm0
> 
> +DB      15,58,204,194,3
> 
> +DB      15,56,200,206
> 
> +        movdqu  xmm6,XMMWORD[32+rsi]
> 
> +DB      102,15,56,0,235
> 
> +
> 
> +        movdqa  xmm2,xmm0
> 
> +DB      15,58,204,193,3
> 
> +DB      15,56,200,215
> 
> +        movdqu  xmm7,XMMWORD[48+rsi]
> 
> +DB      102,15,56,0,243
> 
> +
> 
> +        movdqa  xmm1,xmm0
> 
> +DB      15,58,204,194,3
> 
> +DB      65,15,56,200,201
> 
> +DB      102,15,56,0,251
> 
> +
> 
> +        paddd   xmm0,xmm8
> 
> +        movdqa  xmm9,xmm1
> 
> +
> 
> +        jnz     NEAR $L$oop_shaext
> 
> +
> 
> +        pshufd  xmm0,xmm0,27
> 
> +        pshufd  xmm1,xmm1,27
> 
> +        movdqu  XMMWORD[rdi],xmm0
> 
> +        movd    DWORD[16+rdi],xmm1
> 
> +        movaps  xmm6,XMMWORD[((-8-64))+rax]
> 
> +        movaps  xmm7,XMMWORD[((-8-48))+rax]
> 
> +        movaps  xmm8,XMMWORD[((-8-32))+rax]
> 
> +        movaps  xmm9,XMMWORD[((-8-16))+rax]
> 
> +        mov     rsp,rax
> 
> +$L$epilogue_shaext:
> 
> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> 
> +        mov     rsi,QWORD[16+rsp]
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +$L$SEH_end_sha1_block_data_order_shaext:
> 
> +
> 
> +ALIGN   16
> 
> +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:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +
> 
> +
> 
> +_ssse3_shortcut:
> 
> +
> 
> +        mov     r11,rsp
> 
> +
> 
> +        push    rbx
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        push    r12
> 
> +
> 
> +        push    r13
> 
> +
> 
> +        push    r14
> 
> +
> 
> +        lea     rsp,[((-160))+rsp]
> 
> +        movaps  XMMWORD[(-40-96)+r11],xmm6
> 
> +        movaps  XMMWORD[(-40-80)+r11],xmm7
> 
> +        movaps  XMMWORD[(-40-64)+r11],xmm8
> 
> +        movaps  XMMWORD[(-40-48)+r11],xmm9
> 
> +        movaps  XMMWORD[(-40-32)+r11],xmm10
> 
> +        movaps  XMMWORD[(-40-16)+r11],xmm11
> 
> +$L$prologue_ssse3:
> 
> +        and     rsp,-64
> 
> +        mov     r8,rdi
> 
> +        mov     r9,rsi
> 
> +        mov     r10,rdx
> 
> +
> 
> +        shl     r10,6
> 
> +        add     r10,r9
> 
> +        lea     r14,[((K_XX_XX+64))]
> 
> +
> 
> +        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[16+r8]
> 
> +        mov     edi,ecx
> 
> +        xor     edi,edx
> 
> +        and     esi,edi
> 
> +
> 
> +        movdqa  xmm6,XMMWORD[64+r14]
> 
> +        movdqa  xmm9,XMMWORD[((-64))+r14]
> 
> +        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
> 
> +        add     r9,64
> 
> +        paddd   xmm0,xmm9
> 
> +DB      102,15,56,0,222
> 
> +        paddd   xmm1,xmm9
> 
> +        paddd   xmm2,xmm9
> 
> +        movdqa  XMMWORD[rsp],xmm0
> 
> +        psubd   xmm0,xmm9
> 
> +        movdqa  XMMWORD[16+rsp],xmm1
> 
> +        psubd   xmm1,xmm9
> 
> +        movdqa  XMMWORD[32+rsp],xmm2
> 
> +        psubd   xmm2,xmm9
> 
> +        jmp     NEAR $L$oop_ssse3
> 
> +ALIGN   16
> 
> +$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[rsp]
> 
> +        punpcklqdq      xmm4,xmm1
> 
> +        xor     ebx,ecx
> 
> +        rol     eax,5
> 
> +        add     ebp,esi
> 
> +        psrldq  xmm8,4
> 
> +        and     edi,ebx
> 
> +        xor     ebx,ecx
> 
> +        pxor    xmm4,xmm0
> 
> +        add     ebp,eax
> 
> +        ror     eax,7
> 
> +        pxor    xmm8,xmm2
> 
> +        xor     edi,ecx
> 
> +        mov     esi,ebp
> 
> +        add     edx,DWORD[4+rsp]
> 
> +        pxor    xmm4,xmm8
> 
> +        xor     eax,ebx
> 
> +        rol     ebp,5
> 
> +        movdqa  XMMWORD[48+rsp],xmm9
> 
> +        add     edx,edi
> 
> +        and     esi,eax
> 
> +        movdqa  xmm10,xmm4
> 
> +        xor     eax,ebx
> 
> +        add     edx,ebp
> 
> +        ror     ebp,7
> 
> +        movdqa  xmm8,xmm4
> 
> +        xor     esi,ebx
> 
> +        pslldq  xmm10,12
> 
> +        paddd   xmm4,xmm4
> 
> +        mov     edi,edx
> 
> +        add     ecx,DWORD[8+rsp]
> 
> +        psrld   xmm8,31
> 
> +        xor     ebp,eax
> 
> +        rol     edx,5
> 
> +        add     ecx,esi
> 
> +        movdqa  xmm9,xmm10
> 
> +        and     edi,ebp
> 
> +        xor     ebp,eax
> 
> +        psrld   xmm10,30
> 
> +        add     ecx,edx
> 
> +        ror     edx,7
> 
> +        por     xmm4,xmm8
> 
> +        xor     edi,eax
> 
> +        mov     esi,ecx
> 
> +        add     ebx,DWORD[12+rsp]
> 
> +        pslld   xmm9,2
> 
> +        pxor    xmm4,xmm10
> 
> +        xor     edx,ebp
> 
> +        movdqa  xmm10,XMMWORD[((-64))+r14]
> 
> +        rol     ecx,5
> 
> +        add     ebx,edi
> 
> +        and     esi,edx
> 
> +        pxor    xmm4,xmm9
> 
> +        xor     edx,ebp
> 
> +        add     ebx,ecx
> 
> +        ror     ecx,7
> 
> +        pshufd  xmm5,xmm1,238
> 
> +        xor     esi,ebp
> 
> +        movdqa  xmm9,xmm4
> 
> +        paddd   xmm10,xmm4
> 
> +        mov     edi,ebx
> 
> +        add     eax,DWORD[16+rsp]
> 
> +        punpcklqdq      xmm5,xmm2
> 
> +        xor     ecx,edx
> 
> +        rol     ebx,5
> 
> +        add     eax,esi
> 
> +        psrldq  xmm9,4
> 
> +        and     edi,ecx
> 
> +        xor     ecx,edx
> 
> +        pxor    xmm5,xmm1
> 
> +        add     eax,ebx
> 
> +        ror     ebx,7
> 
> +        pxor    xmm9,xmm3
> 
> +        xor     edi,edx
> 
> +        mov     esi,eax
> 
> +        add     ebp,DWORD[20+rsp]
> 
> +        pxor    xmm5,xmm9
> 
> +        xor     ebx,ecx
> 
> +        rol     eax,5
> 
> +        movdqa  XMMWORD[rsp],xmm10
> 
> +        add     ebp,edi
> 
> +        and     esi,ebx
> 
> +        movdqa  xmm8,xmm5
> 
> +        xor     ebx,ecx
> 
> +        add     ebp,eax
> 
> +        ror     eax,7
> 
> +        movdqa  xmm9,xmm5
> 
> +        xor     esi,ecx
> 
> +        pslldq  xmm8,12
> 
> +        paddd   xmm5,xmm5
> 
> +        mov     edi,ebp
> 
> +        add     edx,DWORD[24+rsp]
> 
> +        psrld   xmm9,31
> 
> +        xor     eax,ebx
> 
> +        rol     ebp,5
> 
> +        add     edx,esi
> 
> +        movdqa  xmm10,xmm8
> 
> +        and     edi,eax
> 
> +        xor     eax,ebx
> 
> +        psrld   xmm8,30
> 
> +        add     edx,ebp
> 
> +        ror     ebp,7
> 
> +        por     xmm5,xmm9
> 
> +        xor     edi,ebx
> 
> +        mov     esi,edx
> 
> +        add     ecx,DWORD[28+rsp]
> 
> +        pslld   xmm10,2
> 
> +        pxor    xmm5,xmm8
> 
> +        xor     ebp,eax
> 
> +        movdqa  xmm8,XMMWORD[((-32))+r14]
> 
> +        rol     edx,5
> 
> +        add     ecx,edi
> 
> +        and     esi,ebp
> 
> +        pxor    xmm5,xmm10
> 
> +        xor     ebp,eax
> 
> +        add     ecx,edx
> 
> +        ror     edx,7
> 
> +        pshufd  xmm6,xmm2,238
> 
> +        xor     esi,eax
> 
> +        movdqa  xmm10,xmm5
> 
> +        paddd   xmm8,xmm5
> 
> +        mov     edi,ecx
> 
> +        add     ebx,DWORD[32+rsp]
> 
> +        punpcklqdq      xmm6,xmm3
> 
> +        xor     edx,ebp
> 
> +        rol     ecx,5
> 
> +        add     ebx,esi
> 
> +        psrldq  xmm10,4
> 
> +        and     edi,edx
> 
> +        xor     edx,ebp
> 
> +        pxor    xmm6,xmm2
> 
> +        add     ebx,ecx
> 
> +        ror     ecx,7
> 
> +        pxor    xmm10,xmm4
> 
> +        xor     edi,ebp
> 
> +        mov     esi,ebx
> 
> +        add     eax,DWORD[36+rsp]
> 
> +        pxor    xmm6,xmm10
> 
> +        xor     ecx,edx
> 
> +        rol     ebx,5
> 
> +        movdqa  XMMWORD[16+rsp],xmm8
> 
> +        add     eax,edi
> 
> +        and     esi,ecx
> 
> +        movdqa  xmm9,xmm6
> 
> +        xor     ecx,edx
> 
> +        add     eax,ebx
> 
> +        ror     ebx,7
> 
> +        movdqa  xmm10,xmm6
> 
> +        xor     esi,edx
> 
> +        pslldq  xmm9,12
> 
> +        paddd   xmm6,xmm6
> 
> +        mov     edi,eax
> 
> +        add     ebp,DWORD[40+rsp]
> 
> +        psrld   xmm10,31
> 
> +        xor     ebx,ecx
> 
> +        rol     eax,5
> 
> +        add     ebp,esi
> 
> +        movdqa  xmm8,xmm9
> 
> +        and     edi,ebx
> 
> +        xor     ebx,ecx
> 
> +        psrld   xmm9,30
> 
> +        add     ebp,eax
> 
> +        ror     eax,7
> 
> +        por     xmm6,xmm10
> 
> +        xor     edi,ecx
> 
> +        mov     esi,ebp
> 
> +        add     edx,DWORD[44+rsp]
> 
> +        pslld   xmm8,2
> 
> +        pxor    xmm6,xmm9
> 
> +        xor     eax,ebx
> 
> +        movdqa  xmm9,XMMWORD[((-32))+r14]
> 
> +        rol     ebp,5
> 
> +        add     edx,edi
> 
> +        and     esi,eax
> 
> +        pxor    xmm6,xmm8
> 
> +        xor     eax,ebx
> 
> +        add     edx,ebp
> 
> +        ror     ebp,7
> 
> +        pshufd  xmm7,xmm3,238
> 
> +        xor     esi,ebx
> 
> +        movdqa  xmm8,xmm6
> 
> +        paddd   xmm9,xmm6
> 
> +        mov     edi,edx
> 
> +        add     ecx,DWORD[48+rsp]
> 
> +        punpcklqdq      xmm7,xmm4
> 
> +        xor     ebp,eax
> 
> +        rol     edx,5
> 
> +        add     ecx,esi
> 
> +        psrldq  xmm8,4
> 
> +        and     edi,ebp
> 
> +        xor     ebp,eax
> 
> +        pxor    xmm7,xmm3
> 
> +        add     ecx,edx
> 
> +        ror     edx,7
> 
> +        pxor    xmm8,xmm5
> 
> +        xor     edi,eax
> 
> +        mov     esi,ecx
> 
> +        add     ebx,DWORD[52+rsp]
> 
> +        pxor    xmm7,xmm8
> 
> +        xor     edx,ebp
> 
> +        rol     ecx,5
> 
> +        movdqa  XMMWORD[32+rsp],xmm9
> 
> +        add     ebx,edi
> 
> +        and     esi,edx
> 
> +        movdqa  xmm10,xmm7
> 
> +        xor     edx,ebp
> 
> +        add     ebx,ecx
> 
> +        ror     ecx,7
> 
> +        movdqa  xmm8,xmm7
> 
> +        xor     esi,ebp
> 
> +        pslldq  xmm10,12
> 
> +        paddd   xmm7,xmm7
> 
> +        mov     edi,ebx
> 
> +        add     eax,DWORD[56+rsp]
> 
> +        psrld   xmm8,31
> 
> +        xor     ecx,edx
> 
> +        rol     ebx,5
> 
> +        add     eax,esi
> 
> +        movdqa  xmm9,xmm10
> 
> +        and     edi,ecx
> 
> +        xor     ecx,edx
> 
> +        psrld   xmm10,30
> 
> +        add     eax,ebx
> 
> +        ror     ebx,7
> 
> +        por     xmm7,xmm8
> 
> +        xor     edi,edx
> 
> +        mov     esi,eax
> 
> +        add     ebp,DWORD[60+rsp]
> 
> +        pslld   xmm9,2
> 
> +        pxor    xmm7,xmm10
> 
> +        xor     ebx,ecx
> 
> +        movdqa  xmm10,XMMWORD[((-32))+r14]
> 
> +        rol     eax,5
> 
> +        add     ebp,edi
> 
> +        and     esi,ebx
> 
> +        pxor    xmm7,xmm9
> 
> +        pshufd  xmm9,xmm6,238
> 
> +        xor     ebx,ecx
> 
> +        add     ebp,eax
> 
> +        ror     eax,7
> 
> +        pxor    xmm0,xmm4
> 
> +        xor     esi,ecx
> 
> +        mov     edi,ebp
> 
> +        add     edx,DWORD[rsp]
> 
> +        punpcklqdq      xmm9,xmm7
> 
> +        xor     eax,ebx
> 
> +        rol     ebp,5
> 
> +        pxor    xmm0,xmm1
> 
> +        add     edx,esi
> 
> +        and     edi,eax
> 
> +        movdqa  xmm8,xmm10
> 
> +        xor     eax,ebx
> 
> +        paddd   xmm10,xmm7
> 
> +        add     edx,ebp
> 
> +        pxor    xmm0,xmm9
> 
> +        ror     ebp,7
> 
> +        xor     edi,ebx
> 
> +        mov     esi,edx
> 
> +        add     ecx,DWORD[4+rsp]
> 
> +        movdqa  xmm9,xmm0
> 
> +        xor     ebp,eax
> 
> +        rol     edx,5
> 
> +        movdqa  XMMWORD[48+rsp],xmm10
> 
> +        add     ecx,edi
> 
> +        and     esi,ebp
> 
> +        xor     ebp,eax
> 
> +        pslld   xmm0,2
> 
> +        add     ecx,edx
> 
> +        ror     edx,7
> 
> +        psrld   xmm9,30
> 
> +        xor     esi,eax
> 
> +        mov     edi,ecx
> 
> +        add     ebx,DWORD[8+rsp]
> 
> +        por     xmm0,xmm9
> 
> +        xor     edx,ebp
> 
> +        rol     ecx,5
> 
> +        pshufd  xmm10,xmm7,238
> 
> +        add     ebx,esi
> 
> +        and     edi,edx
> 
> +        xor     edx,ebp
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[12+rsp]
> 
> +        xor     edi,ebp
> 
> +        mov     esi,ebx
> 
> +        rol     ebx,5
> 
> +        add     eax,edi
> 
> +        xor     esi,edx
> 
> +        ror     ecx,7
> 
> +        add     eax,ebx
> 
> +        pxor    xmm1,xmm5
> 
> +        add     ebp,DWORD[16+rsp]
> 
> +        xor     esi,ecx
> 
> +        punpcklqdq      xmm10,xmm0
> 
> +        mov     edi,eax
> 
> +        rol     eax,5
> 
> +        pxor    xmm1,xmm2
> 
> +        add     ebp,esi
> 
> +        xor     edi,ecx
> 
> +        movdqa  xmm9,xmm8
> 
> +        ror     ebx,7
> 
> +        paddd   xmm8,xmm0
> 
> +        add     ebp,eax
> 
> +        pxor    xmm1,xmm10
> 
> +        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[rsp],xmm8
> 
> +        ror     eax,7
> 
> +        add     edx,ebp
> 
> +        add     ecx,DWORD[24+rsp]
> 
> +        pslld   xmm1,2
> 
> +        xor     esi,eax
> 
> +        mov     edi,edx
> 
> +        psrld   xmm10,30
> 
> +        rol     edx,5
> 
> +        add     ecx,esi
> 
> +        xor     edi,eax
> 
> +        ror     ebp,7
> 
> +        por     xmm1,xmm10
> 
> +        add     ecx,edx
> 
> +        add     ebx,DWORD[28+rsp]
> 
> +        pshufd  xmm8,xmm0,238
> 
> +        xor     edi,ebp
> 
> +        mov     esi,ecx
> 
> +        rol     ecx,5
> 
> +        add     ebx,edi
> 
> +        xor     esi,ebp
> 
> +        ror     edx,7
> 
> +        add     ebx,ecx
> 
> +        pxor    xmm2,xmm6
> 
> +        add     eax,DWORD[32+rsp]
> 
> +        xor     esi,edx
> 
> +        punpcklqdq      xmm8,xmm1
> 
> +        mov     edi,ebx
> 
> +        rol     ebx,5
> 
> +        pxor    xmm2,xmm3
> 
> +        add     eax,esi
> 
> +        xor     edi,edx
> 
> +        movdqa  xmm10,XMMWORD[r14]
> 
> +        ror     ecx,7
> 
> +        paddd   xmm9,xmm1
> 
> +        add     eax,ebx
> 
> +        pxor    xmm2,xmm8
> 
> +        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[16+rsp],xmm9
> 
> +        ror     ebx,7
> 
> +        add     ebp,eax
> 
> +        add     edx,DWORD[40+rsp]
> 
> +        pslld   xmm2,2
> 
> +        xor     esi,ebx
> 
> +        mov     edi,ebp
> 
> +        psrld   xmm8,30
> 
> +        rol     ebp,5
> 
> +        add     edx,esi
> 
> +        xor     edi,ebx
> 
> +        ror     eax,7
> 
> +        por     xmm2,xmm8
> 
> +        add     edx,ebp
> 
> +        add     ecx,DWORD[44+rsp]
> 
> +        pshufd  xmm9,xmm1,238
> 
> +        xor     edi,eax
> 
> +        mov     esi,edx
> 
> +        rol     edx,5
> 
> +        add     ecx,edi
> 
> +        xor     esi,eax
> 
> +        ror     ebp,7
> 
> +        add     ecx,edx
> 
> +        pxor    xmm3,xmm7
> 
> +        add     ebx,DWORD[48+rsp]
> 
> +        xor     esi,ebp
> 
> +        punpcklqdq      xmm9,xmm2
> 
> +        mov     edi,ecx
> 
> +        rol     ecx,5
> 
> +        pxor    xmm3,xmm4
> 
> +        add     ebx,esi
> 
> +        xor     edi,ebp
> 
> +        movdqa  xmm8,xmm10
> 
> +        ror     edx,7
> 
> +        paddd   xmm10,xmm2
> 
> +        add     ebx,ecx
> 
> +        pxor    xmm3,xmm9
> 
> +        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[32+rsp],xmm10
> 
> +        ror     ecx,7
> 
> +        add     eax,ebx
> 
> +        add     ebp,DWORD[56+rsp]
> 
> +        pslld   xmm3,2
> 
> +        xor     esi,ecx
> 
> +        mov     edi,eax
> 
> +        psrld   xmm9,30
> 
> +        rol     eax,5
> 
> +        add     ebp,esi
> 
> +        xor     edi,ecx
> 
> +        ror     ebx,7
> 
> +        por     xmm3,xmm9
> 
> +        add     ebp,eax
> 
> +        add     edx,DWORD[60+rsp]
> 
> +        pshufd  xmm10,xmm2,238
> 
> +        xor     edi,ebx
> 
> +        mov     esi,ebp
> 
> +        rol     ebp,5
> 
> +        add     edx,edi
> 
> +        xor     esi,ebx
> 
> +        ror     eax,7
> 
> +        add     edx,ebp
> 
> +        pxor    xmm4,xmm0
> 
> +        add     ecx,DWORD[rsp]
> 
> +        xor     esi,eax
> 
> +        punpcklqdq      xmm10,xmm3
> 
> +        mov     edi,edx
> 
> +        rol     edx,5
> 
> +        pxor    xmm4,xmm5
> 
> +        add     ecx,esi
> 
> +        xor     edi,eax
> 
> +        movdqa  xmm9,xmm8
> 
> +        ror     ebp,7
> 
> +        paddd   xmm8,xmm3
> 
> +        add     ecx,edx
> 
> +        pxor    xmm4,xmm10
> 
> +        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[48+rsp],xmm8
> 
> +        ror     edx,7
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[8+rsp]
> 
> +        pslld   xmm4,2
> 
> +        xor     esi,edx
> 
> +        mov     edi,ebx
> 
> +        psrld   xmm10,30
> 
> +        rol     ebx,5
> 
> +        add     eax,esi
> 
> +        xor     edi,edx
> 
> +        ror     ecx,7
> 
> +        por     xmm4,xmm10
> 
> +        add     eax,ebx
> 
> +        add     ebp,DWORD[12+rsp]
> 
> +        pshufd  xmm8,xmm3,238
> 
> +        xor     edi,ecx
> 
> +        mov     esi,eax
> 
> +        rol     eax,5
> 
> +        add     ebp,edi
> 
> +        xor     esi,ecx
> 
> +        ror     ebx,7
> 
> +        add     ebp,eax
> 
> +        pxor    xmm5,xmm1
> 
> +        add     edx,DWORD[16+rsp]
> 
> +        xor     esi,ebx
> 
> +        punpcklqdq      xmm8,xmm4
> 
> +        mov     edi,ebp
> 
> +        rol     ebp,5
> 
> +        pxor    xmm5,xmm6
> 
> +        add     edx,esi
> 
> +        xor     edi,ebx
> 
> +        movdqa  xmm10,xmm9
> 
> +        ror     eax,7
> 
> +        paddd   xmm9,xmm4
> 
> +        add     edx,ebp
> 
> +        pxor    xmm5,xmm8
> 
> +        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[rsp],xmm9
> 
> +        ror     ebp,7
> 
> +        add     ecx,edx
> 
> +        add     ebx,DWORD[24+rsp]
> 
> +        pslld   xmm5,2
> 
> +        xor     esi,ebp
> 
> +        mov     edi,ecx
> 
> +        psrld   xmm8,30
> 
> +        rol     ecx,5
> 
> +        add     ebx,esi
> 
> +        xor     edi,ebp
> 
> +        ror     edx,7
> 
> +        por     xmm5,xmm8
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[28+rsp]
> 
> +        pshufd  xmm9,xmm4,238
> 
> +        ror     ecx,7
> 
> +        mov     esi,ebx
> 
> +        xor     edi,edx
> 
> +        rol     ebx,5
> 
> +        add     eax,edi
> 
> +        xor     esi,ecx
> 
> +        xor     ecx,edx
> 
> +        add     eax,ebx
> 
> +        pxor    xmm6,xmm2
> 
> +        add     ebp,DWORD[32+rsp]
> 
> +        and     esi,ecx
> 
> +        xor     ecx,edx
> 
> +        ror     ebx,7
> 
> +        punpcklqdq      xmm9,xmm5
> 
> +        mov     edi,eax
> 
> +        xor     esi,ecx
> 
> +        pxor    xmm6,xmm7
> 
> +        rol     eax,5
> 
> +        add     ebp,esi
> 
> +        movdqa  xmm8,xmm10
> 
> +        xor     edi,ebx
> 
> +        paddd   xmm10,xmm5
> 
> +        xor     ebx,ecx
> 
> +        pxor    xmm6,xmm9
> 
> +        add     ebp,eax
> 
> +        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[16+rsp],xmm10
> 
> +        rol     ebp,5
> 
> +        add     edx,edi
> 
> +        xor     esi,eax
> 
> +        pslld   xmm6,2
> 
> +        xor     eax,ebx
> 
> +        add     edx,ebp
> 
> +        psrld   xmm9,30
> 
> +        add     ecx,DWORD[40+rsp]
> 
> +        and     esi,eax
> 
> +        xor     eax,ebx
> 
> +        por     xmm6,xmm9
> 
> +        ror     ebp,7
> 
> +        mov     edi,edx
> 
> +        xor     esi,eax
> 
> +        rol     edx,5
> 
> +        pshufd  xmm10,xmm5,238
> 
> +        add     ecx,esi
> 
> +        xor     edi,ebp
> 
> +        xor     ebp,eax
> 
> +        add     ecx,edx
> 
> +        add     ebx,DWORD[44+rsp]
> 
> +        and     edi,ebp
> 
> +        xor     ebp,eax
> 
> +        ror     edx,7
> 
> +        mov     esi,ecx
> 
> +        xor     edi,ebp
> 
> +        rol     ecx,5
> 
> +        add     ebx,edi
> 
> +        xor     esi,edx
> 
> +        xor     edx,ebp
> 
> +        add     ebx,ecx
> 
> +        pxor    xmm7,xmm3
> 
> +        add     eax,DWORD[48+rsp]
> 
> +        and     esi,edx
> 
> +        xor     edx,ebp
> 
> +        ror     ecx,7
> 
> +        punpcklqdq      xmm10,xmm6
> 
> +        mov     edi,ebx
> 
> +        xor     esi,edx
> 
> +        pxor    xmm7,xmm0
> 
> +        rol     ebx,5
> 
> +        add     eax,esi
> 
> +        movdqa  xmm9,XMMWORD[32+r14]
> 
> +        xor     edi,ecx
> 
> +        paddd   xmm8,xmm6
> 
> +        xor     ecx,edx
> 
> +        pxor    xmm7,xmm10
> 
> +        add     eax,ebx
> 
> +        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[32+rsp],xmm8
> 
> +        rol     eax,5
> 
> +        add     ebp,edi
> 
> +        xor     esi,ebx
> 
> +        pslld   xmm7,2
> 
> +        xor     ebx,ecx
> 
> +        add     ebp,eax
> 
> +        psrld   xmm10,30
> 
> +        add     edx,DWORD[56+rsp]
> 
> +        and     esi,ebx
> 
> +        xor     ebx,ecx
> 
> +        por     xmm7,xmm10
> 
> +        ror     eax,7
> 
> +        mov     edi,ebp
> 
> +        xor     esi,ebx
> 
> +        rol     ebp,5
> 
> +        pshufd  xmm8,xmm6,238
> 
> +        add     edx,esi
> 
> +        xor     edi,eax
> 
> +        xor     eax,ebx
> 
> +        add     edx,ebp
> 
> +        add     ecx,DWORD[60+rsp]
> 
> +        and     edi,eax
> 
> +        xor     eax,ebx
> 
> +        ror     ebp,7
> 
> +        mov     esi,edx
> 
> +        xor     edi,eax
> 
> +        rol     edx,5
> 
> +        add     ecx,edi
> 
> +        xor     esi,ebp
> 
> +        xor     ebp,eax
> 
> +        add     ecx,edx
> 
> +        pxor    xmm0,xmm4
> 
> +        add     ebx,DWORD[rsp]
> 
> +        and     esi,ebp
> 
> +        xor     ebp,eax
> 
> +        ror     edx,7
> 
> +        punpcklqdq      xmm8,xmm7
> 
> +        mov     edi,ecx
> 
> +        xor     esi,ebp
> 
> +        pxor    xmm0,xmm1
> 
> +        rol     ecx,5
> 
> +        add     ebx,esi
> 
> +        movdqa  xmm10,xmm9
> 
> +        xor     edi,edx
> 
> +        paddd   xmm9,xmm7
> 
> +        xor     edx,ebp
> 
> +        pxor    xmm0,xmm8
> 
> +        add     ebx,ecx
> 
> +        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[48+rsp],xmm9
> 
> +        rol     ebx,5
> 
> +        add     eax,edi
> 
> +        xor     esi,ecx
> 
> +        pslld   xmm0,2
> 
> +        xor     ecx,edx
> 
> +        add     eax,ebx
> 
> +        psrld   xmm8,30
> 
> +        add     ebp,DWORD[8+rsp]
> 
> +        and     esi,ecx
> 
> +        xor     ecx,edx
> 
> +        por     xmm0,xmm8
> 
> +        ror     ebx,7
> 
> +        mov     edi,eax
> 
> +        xor     esi,ecx
> 
> +        rol     eax,5
> 
> +        pshufd  xmm9,xmm7,238
> 
> +        add     ebp,esi
> 
> +        xor     edi,ebx
> 
> +        xor     ebx,ecx
> 
> +        add     ebp,eax
> 
> +        add     edx,DWORD[12+rsp]
> 
> +        and     edi,ebx
> 
> +        xor     ebx,ecx
> 
> +        ror     eax,7
> 
> +        mov     esi,ebp
> 
> +        xor     edi,ebx
> 
> +        rol     ebp,5
> 
> +        add     edx,edi
> 
> +        xor     esi,eax
> 
> +        xor     eax,ebx
> 
> +        add     edx,ebp
> 
> +        pxor    xmm1,xmm5
> 
> +        add     ecx,DWORD[16+rsp]
> 
> +        and     esi,eax
> 
> +        xor     eax,ebx
> 
> +        ror     ebp,7
> 
> +        punpcklqdq      xmm9,xmm0
> 
> +        mov     edi,edx
> 
> +        xor     esi,eax
> 
> +        pxor    xmm1,xmm2
> 
> +        rol     edx,5
> 
> +        add     ecx,esi
> 
> +        movdqa  xmm8,xmm10
> 
> +        xor     edi,ebp
> 
> +        paddd   xmm10,xmm0
> 
> +        xor     ebp,eax
> 
> +        pxor    xmm1,xmm9
> 
> +        add     ecx,edx
> 
> +        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[rsp],xmm10
> 
> +        rol     ecx,5
> 
> +        add     ebx,edi
> 
> +        xor     esi,edx
> 
> +        pslld   xmm1,2
> 
> +        xor     edx,ebp
> 
> +        add     ebx,ecx
> 
> +        psrld   xmm9,30
> 
> +        add     eax,DWORD[24+rsp]
> 
> +        and     esi,edx
> 
> +        xor     edx,ebp
> 
> +        por     xmm1,xmm9
> 
> +        ror     ecx,7
> 
> +        mov     edi,ebx
> 
> +        xor     esi,edx
> 
> +        rol     ebx,5
> 
> +        pshufd  xmm10,xmm0,238
> 
> +        add     eax,esi
> 
> +        xor     edi,ecx
> 
> +        xor     ecx,edx
> 
> +        add     eax,ebx
> 
> +        add     ebp,DWORD[28+rsp]
> 
> +        and     edi,ecx
> 
> +        xor     ecx,edx
> 
> +        ror     ebx,7
> 
> +        mov     esi,eax
> 
> +        xor     edi,ecx
> 
> +        rol     eax,5
> 
> +        add     ebp,edi
> 
> +        xor     esi,ebx
> 
> +        xor     ebx,ecx
> 
> +        add     ebp,eax
> 
> +        pxor    xmm2,xmm6
> 
> +        add     edx,DWORD[32+rsp]
> 
> +        and     esi,ebx
> 
> +        xor     ebx,ecx
> 
> +        ror     eax,7
> 
> +        punpcklqdq      xmm10,xmm1
> 
> +        mov     edi,ebp
> 
> +        xor     esi,ebx
> 
> +        pxor    xmm2,xmm3
> 
> +        rol     ebp,5
> 
> +        add     edx,esi
> 
> +        movdqa  xmm9,xmm8
> 
> +        xor     edi,eax
> 
> +        paddd   xmm8,xmm1
> 
> +        xor     eax,ebx
> 
> +        pxor    xmm2,xmm10
> 
> +        add     edx,ebp
> 
> +        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[16+rsp],xmm8
> 
> +        rol     edx,5
> 
> +        add     ecx,edi
> 
> +        xor     esi,ebp
> 
> +        pslld   xmm2,2
> 
> +        xor     ebp,eax
> 
> +        add     ecx,edx
> 
> +        psrld   xmm10,30
> 
> +        add     ebx,DWORD[40+rsp]
> 
> +        and     esi,ebp
> 
> +        xor     ebp,eax
> 
> +        por     xmm2,xmm10
> 
> +        ror     edx,7
> 
> +        mov     edi,ecx
> 
> +        xor     esi,ebp
> 
> +        rol     ecx,5
> 
> +        pshufd  xmm8,xmm1,238
> 
> +        add     ebx,esi
> 
> +        xor     edi,edx
> 
> +        xor     edx,ebp
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[44+rsp]
> 
> +        and     edi,edx
> 
> +        xor     edx,ebp
> 
> +        ror     ecx,7
> 
> +        mov     esi,ebx
> 
> +        xor     edi,edx
> 
> +        rol     ebx,5
> 
> +        add     eax,edi
> 
> +        xor     esi,edx
> 
> +        add     eax,ebx
> 
> +        pxor    xmm3,xmm7
> 
> +        add     ebp,DWORD[48+rsp]
> 
> +        xor     esi,ecx
> 
> +        punpcklqdq      xmm8,xmm2
> 
> +        mov     edi,eax
> 
> +        rol     eax,5
> 
> +        pxor    xmm3,xmm4
> 
> +        add     ebp,esi
> 
> +        xor     edi,ecx
> 
> +        movdqa  xmm10,xmm9
> 
> +        ror     ebx,7
> 
> +        paddd   xmm9,xmm2
> 
> +        add     ebp,eax
> 
> +        pxor    xmm3,xmm8
> 
> +        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[32+rsp],xmm9
> 
> +        ror     eax,7
> 
> +        add     edx,ebp
> 
> +        add     ecx,DWORD[56+rsp]
> 
> +        pslld   xmm3,2
> 
> +        xor     esi,eax
> 
> +        mov     edi,edx
> 
> +        psrld   xmm8,30
> 
> +        rol     edx,5
> 
> +        add     ecx,esi
> 
> +        xor     edi,eax
> 
> +        ror     ebp,7
> 
> +        por     xmm3,xmm8
> 
> +        add     ecx,edx
> 
> +        add     ebx,DWORD[60+rsp]
> 
> +        xor     edi,ebp
> 
> +        mov     esi,ecx
> 
> +        rol     ecx,5
> 
> +        add     ebx,edi
> 
> +        xor     esi,ebp
> 
> +        ror     edx,7
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[rsp]
> 
> +        xor     esi,edx
> 
> +        mov     edi,ebx
> 
> +        rol     ebx,5
> 
> +        paddd   xmm10,xmm3
> 
> +        add     eax,esi
> 
> +        xor     edi,edx
> 
> +        movdqa  XMMWORD[48+rsp],xmm10
> 
> +        ror     ecx,7
> 
> +        add     eax,ebx
> 
> +        add     ebp,DWORD[4+rsp]
> 
> +        xor     edi,ecx
> 
> +        mov     esi,eax
> 
> +        rol     eax,5
> 
> +        add     ebp,edi
> 
> +        xor     esi,ecx
> 
> +        ror     ebx,7
> 
> +        add     ebp,eax
> 
> +        add     edx,DWORD[8+rsp]
> 
> +        xor     esi,ebx
> 
> +        mov     edi,ebp
> 
> +        rol     ebp,5
> 
> +        add     edx,esi
> 
> +        xor     edi,ebx
> 
> +        ror     eax,7
> 
> +        add     edx,ebp
> 
> +        add     ecx,DWORD[12+rsp]
> 
> +        xor     edi,eax
> 
> +        mov     esi,edx
> 
> +        rol     edx,5
> 
> +        add     ecx,edi
> 
> +        xor     esi,eax
> 
> +        ror     ebp,7
> 
> +        add     ecx,edx
> 
> +        cmp     r9,r10
> 
> +        je      NEAR $L$done_ssse3
> 
> +        movdqa  xmm6,XMMWORD[64+r14]
> 
> +        movdqa  xmm9,XMMWORD[((-64))+r14]
> 
> +        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[16+rsp]
> 
> +        xor     esi,ebp
> 
> +        mov     edi,ecx
> 
> +DB      102,15,56,0,206
> 
> +        rol     ecx,5
> 
> +        add     ebx,esi
> 
> +        xor     edi,ebp
> 
> +        ror     edx,7
> 
> +        paddd   xmm0,xmm9
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[20+rsp]
> 
> +        xor     edi,edx
> 
> +        mov     esi,ebx
> 
> +        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[24+rsp]
> 
> +        xor     esi,ecx
> 
> +        mov     edi,eax
> 
> +        rol     eax,5
> 
> +        add     ebp,esi
> 
> +        xor     edi,ecx
> 
> +        ror     ebx,7
> 
> +        add     ebp,eax
> 
> +        add     edx,DWORD[28+rsp]
> 
> +        xor     edi,ebx
> 
> +        mov     esi,ebp
> 
> +        rol     ebp,5
> 
> +        add     edx,edi
> 
> +        xor     esi,ebx
> 
> +        ror     eax,7
> 
> +        add     edx,ebp
> 
> +        add     ecx,DWORD[32+rsp]
> 
> +        xor     esi,eax
> 
> +        mov     edi,edx
> 
> +DB      102,15,56,0,214
> 
> +        rol     edx,5
> 
> +        add     ecx,esi
> 
> +        xor     edi,eax
> 
> +        ror     ebp,7
> 
> +        paddd   xmm1,xmm9
> 
> +        add     ecx,edx
> 
> +        add     ebx,DWORD[36+rsp]
> 
> +        xor     edi,ebp
> 
> +        mov     esi,ecx
> 
> +        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[40+rsp]
> 
> +        xor     esi,edx
> 
> +        mov     edi,ebx
> 
> +        rol     ebx,5
> 
> +        add     eax,esi
> 
> +        xor     edi,edx
> 
> +        ror     ecx,7
> 
> +        add     eax,ebx
> 
> +        add     ebp,DWORD[44+rsp]
> 
> +        xor     edi,ecx
> 
> +        mov     esi,eax
> 
> +        rol     eax,5
> 
> +        add     ebp,edi
> 
> +        xor     esi,ecx
> 
> +        ror     ebx,7
> 
> +        add     ebp,eax
> 
> +        add     edx,DWORD[48+rsp]
> 
> +        xor     esi,ebx
> 
> +        mov     edi,ebp
> 
> +DB      102,15,56,0,222
> 
> +        rol     ebp,5
> 
> +        add     edx,esi
> 
> +        xor     edi,ebx
> 
> +        ror     eax,7
> 
> +        paddd   xmm2,xmm9
> 
> +        add     edx,ebp
> 
> +        add     ecx,DWORD[52+rsp]
> 
> +        xor     edi,eax
> 
> +        mov     esi,edx
> 
> +        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[56+rsp]
> 
> +        xor     esi,ebp
> 
> +        mov     edi,ecx
> 
> +        rol     ecx,5
> 
> +        add     ebx,esi
> 
> +        xor     edi,ebp
> 
> +        ror     edx,7
> 
> +        add     ebx,ecx
> 
> +        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[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[8+r8],ecx
> 
> +        mov     edi,ecx
> 
> +        mov     DWORD[12+r8],edx
> 
> +        xor     edi,edx
> 
> +        mov     DWORD[16+r8],ebp
> 
> +        and     esi,edi
> 
> +        jmp     NEAR $L$oop_ssse3
> 
> +
> 
> +ALIGN   16
> 
> +$L$done_ssse3:
> 
> +        add     ebx,DWORD[16+rsp]
> 
> +        xor     esi,ebp
> 
> +        mov     edi,ecx
> 
> +        rol     ecx,5
> 
> +        add     ebx,esi
> 
> +        xor     edi,ebp
> 
> +        ror     edx,7
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[20+rsp]
> 
> +        xor     edi,edx
> 
> +        mov     esi,ebx
> 
> +        rol     ebx,5
> 
> +        add     eax,edi
> 
> +        xor     esi,edx
> 
> +        ror     ecx,7
> 
> +        add     eax,ebx
> 
> +        add     ebp,DWORD[24+rsp]
> 
> +        xor     esi,ecx
> 
> +        mov     edi,eax
> 
> +        rol     eax,5
> 
> +        add     ebp,esi
> 
> +        xor     edi,ecx
> 
> +        ror     ebx,7
> 
> +        add     ebp,eax
> 
> +        add     edx,DWORD[28+rsp]
> 
> +        xor     edi,ebx
> 
> +        mov     esi,ebp
> 
> +        rol     ebp,5
> 
> +        add     edx,edi
> 
> +        xor     esi,ebx
> 
> +        ror     eax,7
> 
> +        add     edx,ebp
> 
> +        add     ecx,DWORD[32+rsp]
> 
> +        xor     esi,eax
> 
> +        mov     edi,edx
> 
> +        rol     edx,5
> 
> +        add     ecx,esi
> 
> +        xor     edi,eax
> 
> +        ror     ebp,7
> 
> +        add     ecx,edx
> 
> +        add     ebx,DWORD[36+rsp]
> 
> +        xor     edi,ebp
> 
> +        mov     esi,ecx
> 
> +        rol     ecx,5
> 
> +        add     ebx,edi
> 
> +        xor     esi,ebp
> 
> +        ror     edx,7
> 
> +        add     ebx,ecx
> 
> +        add     eax,DWORD[40+rsp]
> 
> +        xor     esi,edx
> 
> +        mov     edi,ebx
> 
> +        rol     ebx,5
> 
> +        add     eax,esi
> 
> +        xor     edi,edx
> 
> +        ror     ecx,7
> 
> +        add     eax,ebx
> 
> +        add     ebp,DWORD[44+rsp]
> 
> +        xor     edi,ecx
> 
> +        mov     esi,eax
> 
> +        rol     eax,5
> 
> +        add     ebp,edi
> 
> +        xor     esi,ecx
> 
> +        ror     ebx,7
> 
> +        add     ebp,eax
> 
> +        add     edx,DWORD[48+rsp]
> 
> +        xor     esi,ebx
> 
> +        mov     edi,ebp
> 
> +        rol     ebp,5
> 
> +        add     edx,esi
> 
> +        xor     edi,ebx
> 
> +        ror     eax,7
> 
> +        add     edx,ebp
> 
> +        add     ecx,DWORD[52+rsp]
> 
> +        xor     edi,eax
> 
> +        mov     esi,edx
> 
> +        rol     edx,5
> 
> +        add     ecx,edi
> 
> +        xor     esi,eax
> 
> +        ror     ebp,7
> 
> +        add     ecx,edx
> 
> +        add     ebx,DWORD[56+rsp]
> 
> +        xor     esi,ebp
> 
> +        mov     edi,ecx
> 
> +        rol     ecx,5
> 
> +        add     ebx,esi
> 
> +        xor     edi,ebp
> 
> +        ror     edx,7
> 
> +        add     ebx,ecx
> 
> +        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[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))+r11]
> 
> +        movaps  xmm7,XMMWORD[((-40-80))+r11]
> 
> +        movaps  xmm8,XMMWORD[((-40-64))+r11]
> 
> +        movaps  xmm9,XMMWORD[((-40-48))+r11]
> 
> +        movaps  xmm10,XMMWORD[((-40-32))+r11]
> 
> +        movaps  xmm11,XMMWORD[((-40-16))+r11]
> 
> +        mov     r14,QWORD[((-40))+r11]
> 
> +
> 
> +        mov     r13,QWORD[((-32))+r11]
> 
> +
> 
> +        mov     r12,QWORD[((-24))+r11]
> 
> +
> 
> +        mov     rbp,QWORD[((-16))+r11]
> 
> +
> 
> +        mov     rbx,QWORD[((-8))+r11]
> 
> +
> 
> +        lea     rsp,[r11]
> 
> +
> 
> +$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:
> 
> +ALIGN   64
> 
> +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
> 
> +
> 
> +ALIGN   16
> 
> +se_handler:
> 
> +        push    rsi
> 
> +        push    rdi
> 
> +        push    rbx
> 
> +        push    rbp
> 
> +        push    r12
> 
> +        push    r13
> 
> +        push    r14
> 
> +        push    r15
> 
> +        pushfq
> 
> +        sub     rsp,64
> 
> +
> 
> +        mov     rax,QWORD[120+r8]
> 
> +        mov     rbx,QWORD[248+r8]
> 
> +
> 
> +        lea     r10,[$L$prologue]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$common_seh_tail
> 
> +
> 
> +        mov     rax,QWORD[152+r8]
> 
> +
> 
> +        lea     r10,[$L$epilogue]
> 
> +        cmp     rbx,r10
> 
> +        jae     NEAR $L$common_seh_tail
> 
> +
> 
> +        mov     rax,QWORD[64+rax]
> 
> +
> 
> +        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     NEAR $L$common_seh_tail
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +shaext_handler:
> 
> +        push    rsi
> 
> +        push    rdi
> 
> +        push    rbx
> 
> +        push    rbp
> 
> +        push    r12
> 
> +        push    r13
> 
> +        push    r14
> 
> +        push    r15
> 
> +        pushfq
> 
> +        sub     rsp,64
> 
> +
> 
> +        mov     rax,QWORD[120+r8]
> 
> +        mov     rbx,QWORD[248+r8]
> 
> +
> 
> +        lea     r10,[$L$prologue_shaext]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$common_seh_tail
> 
> +
> 
> +        lea     r10,[$L$epilogue_shaext]
> 
> +        cmp     rbx,r10
> 
> +        jae     NEAR $L$common_seh_tail
> 
> +
> 
> +        lea     rsi,[((-8-64))+rax]
> 
> +        lea     rdi,[512+r8]
> 
> +        mov     ecx,8
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +        jmp     NEAR $L$common_seh_tail
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +ssse3_handler:
> 
> +        push    rsi
> 
> +        push    rdi
> 
> +        push    rbx
> 
> +        push    rbp
> 
> +        push    r12
> 
> +        push    r13
> 
> +        push    r14
> 
> +        push    r15
> 
> +        pushfq
> 
> +        sub     rsp,64
> 
> +
> 
> +        mov     rax,QWORD[120+r8]
> 
> +        mov     rbx,QWORD[248+r8]
> 
> +
> 
> +        mov     rsi,QWORD[8+r9]
> 
> +        mov     r11,QWORD[56+r9]
> 
> +
> 
> +        mov     r10d,DWORD[r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$common_seh_tail
> 
> +
> 
> +        mov     rax,QWORD[208+r8]
> 
> +
> 
> +        mov     r10d,DWORD[4+r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jae     NEAR $L$common_seh_tail
> 
> +
> 
> +        lea     rsi,[((-40-96))+rax]
> 
> +        lea     rdi,[512+r8]
> 
> +        mov     ecx,12
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +        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[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[40+r9]
> 
> +        mov     rsi,r8
> 
> +        mov     ecx,154
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +        mov     rsi,r9
> 
> +        xor     rcx,rcx
> 
> +        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
> 
> +        popfq
> 
> +        pop     r15
> 
> +        pop     r14
> 
> +        pop     r13
> 
> +        pop     r12
> 
> +        pop     rbp
> 
> +        pop     rbx
> 
> +        pop     rdi
> 
> +        pop     rsi
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +section .pdata rdata align=4
> 
> +ALIGN   4
> 
> +        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_shaext wrt ..imagebase
> 
> +        DD      $L$SEH_end_sha1_block_data_order_shaext wrt ..imagebase
> 
> +        DD      $L$SEH_info_sha1_block_data_order_shaext 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:
> 
> +DB      9,0,0,0
> 
> +        DD      se_handler wrt ..imagebase
> 
> +$L$SEH_info_sha1_block_data_order_shaext:
> 
> +DB      9,0,0,0
> 
> +        DD      shaext_handler wrt ..imagebase
> 
> +$L$SEH_info_sha1_block_data_order_ssse3:
> 
> +DB      9,0,0,0
> 
> +        DD      ssse3_handler wrt ..imagebase
> 
> +        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
> wrt ..imagebase
> 
> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
> x86_64.nasm
> new file mode 100644
> index 0000000000..7cd5eae85c
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm
> @@ -0,0 +1,3461 @@
> +; WARNING: do not edit!
> 
> +; Generated from openssl/crypto/sha/asm/sha256-mb-x86_64.pl
> 
> +;
> 
> +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
> 
> +;
> 
> +; Licensed under the OpenSSL license (the "License").  You may not use
> 
> +; this file except in compliance with the License.  You can obtain a copy
> 
> +; in the file LICENSE in the source distribution or at
> 
> +; https://www.openssl.org/source/license.html
> 
> +
> 
> +default rel
> 
> +%define XMMWORD
> 
> +%define YMMWORD
> 
> +%define ZMMWORD
> 
> +section .text code align=64
> 
> +
> 
> +
> 
> +EXTERN  OPENSSL_ia32cap_P
> 
> +
> 
> +global  sha256_multi_block
> 
> +
> 
> +ALIGN   32
> 
> +sha256_multi_block:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_sha256_multi_block:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +
> 
> +
> 
> +
> 
> +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
> 
> +        bt      rcx,61
> 
> +        jc      NEAR _shaext_shortcut
> 
> +        mov     rax,rsp
> 
> +
> 
> +        push    rbx
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        lea     rsp,[((-168))+rsp]
> 
> +        movaps  XMMWORD[rsp],xmm6
> 
> +        movaps  XMMWORD[16+rsp],xmm7
> 
> +        movaps  XMMWORD[32+rsp],xmm8
> 
> +        movaps  XMMWORD[48+rsp],xmm9
> 
> +        movaps  XMMWORD[(-120)+rax],xmm10
> 
> +        movaps  XMMWORD[(-104)+rax],xmm11
> 
> +        movaps  XMMWORD[(-88)+rax],xmm12
> 
> +        movaps  XMMWORD[(-72)+rax],xmm13
> 
> +        movaps  XMMWORD[(-56)+rax],xmm14
> 
> +        movaps  XMMWORD[(-40)+rax],xmm15
> 
> +        sub     rsp,288
> 
> +        and     rsp,-256
> 
> +        mov     QWORD[272+rsp],rax
> 
> +
> 
> +$L$body:
> 
> +        lea     rbp,[((K256+128))]
> 
> +        lea     rbx,[256+rsp]
> 
> +        lea     rdi,[128+rdi]
> 
> +
> 
> +$L$oop_grande:
> 
> +        mov     DWORD[280+rsp],edx
> 
> +        xor     edx,edx
> 
> +        mov     r8,QWORD[rsi]
> 
> +        mov     ecx,DWORD[8+rsi]
> 
> +        cmp     ecx,edx
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        mov     DWORD[rbx],ecx
> 
> +        cmovle  r8,rbp
> 
> +        mov     r9,QWORD[16+rsi]
> 
> +        mov     ecx,DWORD[24+rsi]
> 
> +        cmp     ecx,edx
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        mov     DWORD[4+rbx],ecx
> 
> +        cmovle  r9,rbp
> 
> +        mov     r10,QWORD[32+rsi]
> 
> +        mov     ecx,DWORD[40+rsi]
> 
> +        cmp     ecx,edx
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        mov     DWORD[8+rbx],ecx
> 
> +        cmovle  r10,rbp
> 
> +        mov     r11,QWORD[48+rsi]
> 
> +        mov     ecx,DWORD[56+rsi]
> 
> +        cmp     ecx,edx
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        mov     DWORD[12+rbx],ecx
> 
> +        cmovle  r11,rbp
> 
> +        test    edx,edx
> 
> +        jz      NEAR $L$done
> 
> +
> 
> +        movdqu  xmm8,XMMWORD[((0-128))+rdi]
> 
> +        lea     rax,[128+rsp]
> 
> +        movdqu  xmm9,XMMWORD[((32-128))+rdi]
> 
> +        movdqu  xmm10,XMMWORD[((64-128))+rdi]
> 
> +        movdqu  xmm11,XMMWORD[((96-128))+rdi]
> 
> +        movdqu  xmm12,XMMWORD[((128-128))+rdi]
> 
> +        movdqu  xmm13,XMMWORD[((160-128))+rdi]
> 
> +        movdqu  xmm14,XMMWORD[((192-128))+rdi]
> 
> +        movdqu  xmm15,XMMWORD[((224-128))+rdi]
> 
> +        movdqu  xmm6,XMMWORD[$L$pbswap]
> 
> +        jmp     NEAR $L$oop
> 
> +
> 
> +ALIGN   32
> 
> +$L$oop:
> 
> +        movdqa  xmm4,xmm10
> 
> +        pxor    xmm4,xmm9
> 
> +        movd    xmm5,DWORD[r8]
> 
> +        movd    xmm0,DWORD[r9]
> 
> +        movd    xmm1,DWORD[r10]
> 
> +        movd    xmm2,DWORD[r11]
> 
> +        punpckldq       xmm5,xmm1
> 
> +        punpckldq       xmm0,xmm2
> 
> +        punpckldq       xmm5,xmm0
> 
> +        movdqa  xmm7,xmm12
> 
> +DB      102,15,56,0,238
> 
> +        movdqa  xmm2,xmm12
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm12
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(0-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm15
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[((-128))+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm12
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm3,xmm12
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm14
> 
> +        pand    xmm3,xmm13
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm8
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm8
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        movdqa  xmm3,xmm9
> 
> +        movdqa  xmm7,xmm8
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm3,xmm8
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm4,xmm3
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm15,xmm9
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm15,xmm4
> 
> +        paddd   xmm11,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm15,xmm5
> 
> +        paddd   xmm15,xmm7
> 
> +        movd    xmm5,DWORD[4+r8]
> 
> +        movd    xmm0,DWORD[4+r9]
> 
> +        movd    xmm1,DWORD[4+r10]
> 
> +        movd    xmm2,DWORD[4+r11]
> 
> +        punpckldq       xmm5,xmm1
> 
> +        punpckldq       xmm0,xmm2
> 
> +        punpckldq       xmm5,xmm0
> 
> +        movdqa  xmm7,xmm11
> 
> +
> 
> +        movdqa  xmm2,xmm11
> 
> +DB      102,15,56,0,238
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm11
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(16-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm14
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[((-96))+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm11
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm4,xmm11
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm13
> 
> +        pand    xmm4,xmm12
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm15
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm15
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        movdqa  xmm4,xmm8
> 
> +        movdqa  xmm7,xmm15
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm4,xmm15
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm3,xmm4
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm14,xmm8
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm14,xmm3
> 
> +        paddd   xmm10,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm14,xmm5
> 
> +        paddd   xmm14,xmm7
> 
> +        movd    xmm5,DWORD[8+r8]
> 
> +        movd    xmm0,DWORD[8+r9]
> 
> +        movd    xmm1,DWORD[8+r10]
> 
> +        movd    xmm2,DWORD[8+r11]
> 
> +        punpckldq       xmm5,xmm1
> 
> +        punpckldq       xmm0,xmm2
> 
> +        punpckldq       xmm5,xmm0
> 
> +        movdqa  xmm7,xmm10
> 
> +DB      102,15,56,0,238
> 
> +        movdqa  xmm2,xmm10
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm10
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(32-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm13
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[((-64))+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm10
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm3,xmm10
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm12
> 
> +        pand    xmm3,xmm11
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm14
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm14
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        movdqa  xmm3,xmm15
> 
> +        movdqa  xmm7,xmm14
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm3,xmm14
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm4,xmm3
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm13,xmm15
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm13,xmm4
> 
> +        paddd   xmm9,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm13,xmm5
> 
> +        paddd   xmm13,xmm7
> 
> +        movd    xmm5,DWORD[12+r8]
> 
> +        movd    xmm0,DWORD[12+r9]
> 
> +        movd    xmm1,DWORD[12+r10]
> 
> +        movd    xmm2,DWORD[12+r11]
> 
> +        punpckldq       xmm5,xmm1
> 
> +        punpckldq       xmm0,xmm2
> 
> +        punpckldq       xmm5,xmm0
> 
> +        movdqa  xmm7,xmm9
> 
> +
> 
> +        movdqa  xmm2,xmm9
> 
> +DB      102,15,56,0,238
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm9
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(48-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm12
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[((-32))+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm9
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm4,xmm9
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm11
> 
> +        pand    xmm4,xmm10
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm13
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm13
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        movdqa  xmm4,xmm14
> 
> +        movdqa  xmm7,xmm13
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm4,xmm13
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm3,xmm4
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm12,xmm14
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm12,xmm3
> 
> +        paddd   xmm8,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm12,xmm5
> 
> +        paddd   xmm12,xmm7
> 
> +        movd    xmm5,DWORD[16+r8]
> 
> +        movd    xmm0,DWORD[16+r9]
> 
> +        movd    xmm1,DWORD[16+r10]
> 
> +        movd    xmm2,DWORD[16+r11]
> 
> +        punpckldq       xmm5,xmm1
> 
> +        punpckldq       xmm0,xmm2
> 
> +        punpckldq       xmm5,xmm0
> 
> +        movdqa  xmm7,xmm8
> 
> +DB      102,15,56,0,238
> 
> +        movdqa  xmm2,xmm8
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm8
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(64-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm11
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm8
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm3,xmm8
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm10
> 
> +        pand    xmm3,xmm9
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm12
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm12
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        movdqa  xmm3,xmm13
> 
> +        movdqa  xmm7,xmm12
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm3,xmm12
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm4,xmm3
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm11,xmm13
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm11,xmm4
> 
> +        paddd   xmm15,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm11,xmm5
> 
> +        paddd   xmm11,xmm7
> 
> +        movd    xmm5,DWORD[20+r8]
> 
> +        movd    xmm0,DWORD[20+r9]
> 
> +        movd    xmm1,DWORD[20+r10]
> 
> +        movd    xmm2,DWORD[20+r11]
> 
> +        punpckldq       xmm5,xmm1
> 
> +        punpckldq       xmm0,xmm2
> 
> +        punpckldq       xmm5,xmm0
> 
> +        movdqa  xmm7,xmm15
> 
> +
> 
> +        movdqa  xmm2,xmm15
> 
> +DB      102,15,56,0,238
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm15
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(80-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm10
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[32+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm15
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm4,xmm15
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm9
> 
> +        pand    xmm4,xmm8
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm11
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm11
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        movdqa  xmm4,xmm12
> 
> +        movdqa  xmm7,xmm11
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm4,xmm11
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm3,xmm4
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm10,xmm12
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm10,xmm3
> 
> +        paddd   xmm14,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm10,xmm5
> 
> +        paddd   xmm10,xmm7
> 
> +        movd    xmm5,DWORD[24+r8]
> 
> +        movd    xmm0,DWORD[24+r9]
> 
> +        movd    xmm1,DWORD[24+r10]
> 
> +        movd    xmm2,DWORD[24+r11]
> 
> +        punpckldq       xmm5,xmm1
> 
> +        punpckldq       xmm0,xmm2
> 
> +        punpckldq       xmm5,xmm0
> 
> +        movdqa  xmm7,xmm14
> 
> +DB      102,15,56,0,238
> 
> +        movdqa  xmm2,xmm14
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm14
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(96-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm9
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[64+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm14
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm3,xmm14
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm8
> 
> +        pand    xmm3,xmm15
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm10
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm10
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        movdqa  xmm3,xmm11
> 
> +        movdqa  xmm7,xmm10
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm3,xmm10
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm4,xmm3
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm9,xmm11
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm9,xmm4
> 
> +        paddd   xmm13,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm9,xmm5
> 
> +        paddd   xmm9,xmm7
> 
> +        movd    xmm5,DWORD[28+r8]
> 
> +        movd    xmm0,DWORD[28+r9]
> 
> +        movd    xmm1,DWORD[28+r10]
> 
> +        movd    xmm2,DWORD[28+r11]
> 
> +        punpckldq       xmm5,xmm1
> 
> +        punpckldq       xmm0,xmm2
> 
> +        punpckldq       xmm5,xmm0
> 
> +        movdqa  xmm7,xmm13
> 
> +
> 
> +        movdqa  xmm2,xmm13
> 
> +DB      102,15,56,0,238
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm13
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(112-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm8
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[96+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm13
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm4,xmm13
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm15
> 
> +        pand    xmm4,xmm14
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm9
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm9
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        movdqa  xmm4,xmm10
> 
> +        movdqa  xmm7,xmm9
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm4,xmm9
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm3,xmm4
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm8,xmm10
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm8,xmm3
> 
> +        paddd   xmm12,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm8,xmm5
> 
> +        paddd   xmm8,xmm7
> 
> +        lea     rbp,[256+rbp]
> 
> +        movd    xmm5,DWORD[32+r8]
> 
> +        movd    xmm0,DWORD[32+r9]
> 
> +        movd    xmm1,DWORD[32+r10]
> 
> +        movd    xmm2,DWORD[32+r11]
> 
> +        punpckldq       xmm5,xmm1
> 
> +        punpckldq       xmm0,xmm2
> 
> +        punpckldq       xmm5,xmm0
> 
> +        movdqa  xmm7,xmm12
> 
> +DB      102,15,56,0,238
> 
> +        movdqa  xmm2,xmm12
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm12
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(128-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm15
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[((-128))+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm12
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm3,xmm12
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm14
> 
> +        pand    xmm3,xmm13
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm8
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm8
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        movdqa  xmm3,xmm9
> 
> +        movdqa  xmm7,xmm8
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm3,xmm8
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm4,xmm3
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm15,xmm9
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm15,xmm4
> 
> +        paddd   xmm11,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm15,xmm5
> 
> +        paddd   xmm15,xmm7
> 
> +        movd    xmm5,DWORD[36+r8]
> 
> +        movd    xmm0,DWORD[36+r9]
> 
> +        movd    xmm1,DWORD[36+r10]
> 
> +        movd    xmm2,DWORD[36+r11]
> 
> +        punpckldq       xmm5,xmm1
> 
> +        punpckldq       xmm0,xmm2
> 
> +        punpckldq       xmm5,xmm0
> 
> +        movdqa  xmm7,xmm11
> 
> +
> 
> +        movdqa  xmm2,xmm11
> 
> +DB      102,15,56,0,238
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm11
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(144-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm14
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[((-96))+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm11
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm4,xmm11
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm13
> 
> +        pand    xmm4,xmm12
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm15
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm15
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        movdqa  xmm4,xmm8
> 
> +        movdqa  xmm7,xmm15
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm4,xmm15
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm3,xmm4
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm14,xmm8
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm14,xmm3
> 
> +        paddd   xmm10,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm14,xmm5
> 
> +        paddd   xmm14,xmm7
> 
> +        movd    xmm5,DWORD[40+r8]
> 
> +        movd    xmm0,DWORD[40+r9]
> 
> +        movd    xmm1,DWORD[40+r10]
> 
> +        movd    xmm2,DWORD[40+r11]
> 
> +        punpckldq       xmm5,xmm1
> 
> +        punpckldq       xmm0,xmm2
> 
> +        punpckldq       xmm5,xmm0
> 
> +        movdqa  xmm7,xmm10
> 
> +DB      102,15,56,0,238
> 
> +        movdqa  xmm2,xmm10
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm10
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(160-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm13
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[((-64))+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm10
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm3,xmm10
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm12
> 
> +        pand    xmm3,xmm11
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm14
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm14
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        movdqa  xmm3,xmm15
> 
> +        movdqa  xmm7,xmm14
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm3,xmm14
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm4,xmm3
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm13,xmm15
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm13,xmm4
> 
> +        paddd   xmm9,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm13,xmm5
> 
> +        paddd   xmm13,xmm7
> 
> +        movd    xmm5,DWORD[44+r8]
> 
> +        movd    xmm0,DWORD[44+r9]
> 
> +        movd    xmm1,DWORD[44+r10]
> 
> +        movd    xmm2,DWORD[44+r11]
> 
> +        punpckldq       xmm5,xmm1
> 
> +        punpckldq       xmm0,xmm2
> 
> +        punpckldq       xmm5,xmm0
> 
> +        movdqa  xmm7,xmm9
> 
> +
> 
> +        movdqa  xmm2,xmm9
> 
> +DB      102,15,56,0,238
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm9
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(176-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm12
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[((-32))+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm9
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm4,xmm9
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm11
> 
> +        pand    xmm4,xmm10
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm13
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm13
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        movdqa  xmm4,xmm14
> 
> +        movdqa  xmm7,xmm13
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm4,xmm13
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm3,xmm4
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm12,xmm14
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm12,xmm3
> 
> +        paddd   xmm8,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm12,xmm5
> 
> +        paddd   xmm12,xmm7
> 
> +        movd    xmm5,DWORD[48+r8]
> 
> +        movd    xmm0,DWORD[48+r9]
> 
> +        movd    xmm1,DWORD[48+r10]
> 
> +        movd    xmm2,DWORD[48+r11]
> 
> +        punpckldq       xmm5,xmm1
> 
> +        punpckldq       xmm0,xmm2
> 
> +        punpckldq       xmm5,xmm0
> 
> +        movdqa  xmm7,xmm8
> 
> +DB      102,15,56,0,238
> 
> +        movdqa  xmm2,xmm8
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm8
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(192-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm11
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm8
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm3,xmm8
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm10
> 
> +        pand    xmm3,xmm9
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm12
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm12
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        movdqa  xmm3,xmm13
> 
> +        movdqa  xmm7,xmm12
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm3,xmm12
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm4,xmm3
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm11,xmm13
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm11,xmm4
> 
> +        paddd   xmm15,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm11,xmm5
> 
> +        paddd   xmm11,xmm7
> 
> +        movd    xmm5,DWORD[52+r8]
> 
> +        movd    xmm0,DWORD[52+r9]
> 
> +        movd    xmm1,DWORD[52+r10]
> 
> +        movd    xmm2,DWORD[52+r11]
> 
> +        punpckldq       xmm5,xmm1
> 
> +        punpckldq       xmm0,xmm2
> 
> +        punpckldq       xmm5,xmm0
> 
> +        movdqa  xmm7,xmm15
> 
> +
> 
> +        movdqa  xmm2,xmm15
> 
> +DB      102,15,56,0,238
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm15
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(208-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm10
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[32+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm15
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm4,xmm15
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm9
> 
> +        pand    xmm4,xmm8
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm11
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm11
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        movdqa  xmm4,xmm12
> 
> +        movdqa  xmm7,xmm11
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm4,xmm11
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm3,xmm4
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm10,xmm12
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm10,xmm3
> 
> +        paddd   xmm14,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm10,xmm5
> 
> +        paddd   xmm10,xmm7
> 
> +        movd    xmm5,DWORD[56+r8]
> 
> +        movd    xmm0,DWORD[56+r9]
> 
> +        movd    xmm1,DWORD[56+r10]
> 
> +        movd    xmm2,DWORD[56+r11]
> 
> +        punpckldq       xmm5,xmm1
> 
> +        punpckldq       xmm0,xmm2
> 
> +        punpckldq       xmm5,xmm0
> 
> +        movdqa  xmm7,xmm14
> 
> +DB      102,15,56,0,238
> 
> +        movdqa  xmm2,xmm14
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm14
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(224-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm9
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[64+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm14
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm3,xmm14
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm8
> 
> +        pand    xmm3,xmm15
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm10
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm10
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        movdqa  xmm3,xmm11
> 
> +        movdqa  xmm7,xmm10
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm3,xmm10
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm4,xmm3
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm9,xmm11
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm9,xmm4
> 
> +        paddd   xmm13,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm9,xmm5
> 
> +        paddd   xmm9,xmm7
> 
> +        movd    xmm5,DWORD[60+r8]
> 
> +        lea     r8,[64+r8]
> 
> +        movd    xmm0,DWORD[60+r9]
> 
> +        lea     r9,[64+r9]
> 
> +        movd    xmm1,DWORD[60+r10]
> 
> +        lea     r10,[64+r10]
> 
> +        movd    xmm2,DWORD[60+r11]
> 
> +        lea     r11,[64+r11]
> 
> +        punpckldq       xmm5,xmm1
> 
> +        punpckldq       xmm0,xmm2
> 
> +        punpckldq       xmm5,xmm0
> 
> +        movdqa  xmm7,xmm13
> 
> +
> 
> +        movdqa  xmm2,xmm13
> 
> +DB      102,15,56,0,238
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm13
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(240-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm8
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[96+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm13
> 
> +        prefetcht0      [63+r8]
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm4,xmm13
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm15
> 
> +        pand    xmm4,xmm14
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        prefetcht0      [63+r9]
> 
> +        movdqa  xmm1,xmm9
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm9
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        movdqa  xmm4,xmm10
> 
> +        movdqa  xmm7,xmm9
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm4,xmm9
> 
> +
> 
> +        prefetcht0      [63+r10]
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm3,xmm4
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +        prefetcht0      [63+r11]
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm8,xmm10
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm8,xmm3
> 
> +        paddd   xmm12,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm8,xmm5
> 
> +        paddd   xmm8,xmm7
> 
> +        lea     rbp,[256+rbp]
> 
> +        movdqu  xmm5,XMMWORD[((0-128))+rax]
> 
> +        mov     ecx,3
> 
> +        jmp     NEAR $L$oop_16_xx
> 
> +ALIGN   32
> 
> +$L$oop_16_xx:
> 
> +        movdqa  xmm6,XMMWORD[((16-128))+rax]
> 
> +        paddd   xmm5,XMMWORD[((144-128))+rax]
> 
> +
> 
> +        movdqa  xmm7,xmm6
> 
> +        movdqa  xmm1,xmm6
> 
> +        psrld   xmm7,3
> 
> +        movdqa  xmm2,xmm6
> 
> +
> 
> +        psrld   xmm1,7
> 
> +        movdqa  xmm0,XMMWORD[((224-128))+rax]
> 
> +        pslld   xmm2,14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm1,18-7
> 
> +        movdqa  xmm3,xmm0
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,25-14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm0,10
> 
> +        movdqa  xmm1,xmm3
> 
> +
> 
> +        psrld   xmm3,17
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm1,13
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        psrld   xmm3,19-17
> 
> +        pxor    xmm0,xmm1
> 
> +        pslld   xmm1,15-13
> 
> +        pxor    xmm0,xmm3
> 
> +        pxor    xmm0,xmm1
> 
> +        paddd   xmm5,xmm0
> 
> +        movdqa  xmm7,xmm12
> 
> +
> 
> +        movdqa  xmm2,xmm12
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm12
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(0-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm15
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[((-128))+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm12
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm3,xmm12
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm14
> 
> +        pand    xmm3,xmm13
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm8
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm8
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        movdqa  xmm3,xmm9
> 
> +        movdqa  xmm7,xmm8
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm3,xmm8
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm4,xmm3
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm15,xmm9
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm15,xmm4
> 
> +        paddd   xmm11,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm15,xmm5
> 
> +        paddd   xmm15,xmm7
> 
> +        movdqa  xmm5,XMMWORD[((32-128))+rax]
> 
> +        paddd   xmm6,XMMWORD[((160-128))+rax]
> 
> +
> 
> +        movdqa  xmm7,xmm5
> 
> +        movdqa  xmm1,xmm5
> 
> +        psrld   xmm7,3
> 
> +        movdqa  xmm2,xmm5
> 
> +
> 
> +        psrld   xmm1,7
> 
> +        movdqa  xmm0,XMMWORD[((240-128))+rax]
> 
> +        pslld   xmm2,14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm1,18-7
> 
> +        movdqa  xmm4,xmm0
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,25-14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm0,10
> 
> +        movdqa  xmm1,xmm4
> 
> +
> 
> +        psrld   xmm4,17
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm1,13
> 
> +        paddd   xmm6,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        psrld   xmm4,19-17
> 
> +        pxor    xmm0,xmm1
> 
> +        pslld   xmm1,15-13
> 
> +        pxor    xmm0,xmm4
> 
> +        pxor    xmm0,xmm1
> 
> +        paddd   xmm6,xmm0
> 
> +        movdqa  xmm7,xmm11
> 
> +
> 
> +        movdqa  xmm2,xmm11
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm11
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(16-128)+rax],xmm6
> 
> +        paddd   xmm6,xmm14
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm6,XMMWORD[((-96))+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm11
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm4,xmm11
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm13
> 
> +        pand    xmm4,xmm12
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm15
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm15
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm6,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        movdqa  xmm4,xmm8
> 
> +        movdqa  xmm7,xmm15
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm4,xmm15
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm6,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm3,xmm4
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm14,xmm8
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm14,xmm3
> 
> +        paddd   xmm10,xmm6
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm14,xmm6
> 
> +        paddd   xmm14,xmm7
> 
> +        movdqa  xmm6,XMMWORD[((48-128))+rax]
> 
> +        paddd   xmm5,XMMWORD[((176-128))+rax]
> 
> +
> 
> +        movdqa  xmm7,xmm6
> 
> +        movdqa  xmm1,xmm6
> 
> +        psrld   xmm7,3
> 
> +        movdqa  xmm2,xmm6
> 
> +
> 
> +        psrld   xmm1,7
> 
> +        movdqa  xmm0,XMMWORD[((0-128))+rax]
> 
> +        pslld   xmm2,14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm1,18-7
> 
> +        movdqa  xmm3,xmm0
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,25-14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm0,10
> 
> +        movdqa  xmm1,xmm3
> 
> +
> 
> +        psrld   xmm3,17
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm1,13
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        psrld   xmm3,19-17
> 
> +        pxor    xmm0,xmm1
> 
> +        pslld   xmm1,15-13
> 
> +        pxor    xmm0,xmm3
> 
> +        pxor    xmm0,xmm1
> 
> +        paddd   xmm5,xmm0
> 
> +        movdqa  xmm7,xmm10
> 
> +
> 
> +        movdqa  xmm2,xmm10
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm10
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(32-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm13
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[((-64))+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm10
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm3,xmm10
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm12
> 
> +        pand    xmm3,xmm11
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm14
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm14
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        movdqa  xmm3,xmm15
> 
> +        movdqa  xmm7,xmm14
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm3,xmm14
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm4,xmm3
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm13,xmm15
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm13,xmm4
> 
> +        paddd   xmm9,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm13,xmm5
> 
> +        paddd   xmm13,xmm7
> 
> +        movdqa  xmm5,XMMWORD[((64-128))+rax]
> 
> +        paddd   xmm6,XMMWORD[((192-128))+rax]
> 
> +
> 
> +        movdqa  xmm7,xmm5
> 
> +        movdqa  xmm1,xmm5
> 
> +        psrld   xmm7,3
> 
> +        movdqa  xmm2,xmm5
> 
> +
> 
> +        psrld   xmm1,7
> 
> +        movdqa  xmm0,XMMWORD[((16-128))+rax]
> 
> +        pslld   xmm2,14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm1,18-7
> 
> +        movdqa  xmm4,xmm0
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,25-14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm0,10
> 
> +        movdqa  xmm1,xmm4
> 
> +
> 
> +        psrld   xmm4,17
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm1,13
> 
> +        paddd   xmm6,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        psrld   xmm4,19-17
> 
> +        pxor    xmm0,xmm1
> 
> +        pslld   xmm1,15-13
> 
> +        pxor    xmm0,xmm4
> 
> +        pxor    xmm0,xmm1
> 
> +        paddd   xmm6,xmm0
> 
> +        movdqa  xmm7,xmm9
> 
> +
> 
> +        movdqa  xmm2,xmm9
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm9
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(48-128)+rax],xmm6
> 
> +        paddd   xmm6,xmm12
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm6,XMMWORD[((-32))+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm9
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm4,xmm9
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm11
> 
> +        pand    xmm4,xmm10
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm13
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm13
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm6,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        movdqa  xmm4,xmm14
> 
> +        movdqa  xmm7,xmm13
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm4,xmm13
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm6,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm3,xmm4
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm12,xmm14
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm12,xmm3
> 
> +        paddd   xmm8,xmm6
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm12,xmm6
> 
> +        paddd   xmm12,xmm7
> 
> +        movdqa  xmm6,XMMWORD[((80-128))+rax]
> 
> +        paddd   xmm5,XMMWORD[((208-128))+rax]
> 
> +
> 
> +        movdqa  xmm7,xmm6
> 
> +        movdqa  xmm1,xmm6
> 
> +        psrld   xmm7,3
> 
> +        movdqa  xmm2,xmm6
> 
> +
> 
> +        psrld   xmm1,7
> 
> +        movdqa  xmm0,XMMWORD[((32-128))+rax]
> 
> +        pslld   xmm2,14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm1,18-7
> 
> +        movdqa  xmm3,xmm0
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,25-14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm0,10
> 
> +        movdqa  xmm1,xmm3
> 
> +
> 
> +        psrld   xmm3,17
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm1,13
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        psrld   xmm3,19-17
> 
> +        pxor    xmm0,xmm1
> 
> +        pslld   xmm1,15-13
> 
> +        pxor    xmm0,xmm3
> 
> +        pxor    xmm0,xmm1
> 
> +        paddd   xmm5,xmm0
> 
> +        movdqa  xmm7,xmm8
> 
> +
> 
> +        movdqa  xmm2,xmm8
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm8
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(64-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm11
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm8
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm3,xmm8
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm10
> 
> +        pand    xmm3,xmm9
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm12
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm12
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        movdqa  xmm3,xmm13
> 
> +        movdqa  xmm7,xmm12
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm3,xmm12
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm4,xmm3
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm11,xmm13
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm11,xmm4
> 
> +        paddd   xmm15,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm11,xmm5
> 
> +        paddd   xmm11,xmm7
> 
> +        movdqa  xmm5,XMMWORD[((96-128))+rax]
> 
> +        paddd   xmm6,XMMWORD[((224-128))+rax]
> 
> +
> 
> +        movdqa  xmm7,xmm5
> 
> +        movdqa  xmm1,xmm5
> 
> +        psrld   xmm7,3
> 
> +        movdqa  xmm2,xmm5
> 
> +
> 
> +        psrld   xmm1,7
> 
> +        movdqa  xmm0,XMMWORD[((48-128))+rax]
> 
> +        pslld   xmm2,14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm1,18-7
> 
> +        movdqa  xmm4,xmm0
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,25-14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm0,10
> 
> +        movdqa  xmm1,xmm4
> 
> +
> 
> +        psrld   xmm4,17
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm1,13
> 
> +        paddd   xmm6,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        psrld   xmm4,19-17
> 
> +        pxor    xmm0,xmm1
> 
> +        pslld   xmm1,15-13
> 
> +        pxor    xmm0,xmm4
> 
> +        pxor    xmm0,xmm1
> 
> +        paddd   xmm6,xmm0
> 
> +        movdqa  xmm7,xmm15
> 
> +
> 
> +        movdqa  xmm2,xmm15
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm15
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(80-128)+rax],xmm6
> 
> +        paddd   xmm6,xmm10
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm6,XMMWORD[32+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm15
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm4,xmm15
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm9
> 
> +        pand    xmm4,xmm8
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm11
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm11
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm6,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        movdqa  xmm4,xmm12
> 
> +        movdqa  xmm7,xmm11
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm4,xmm11
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm6,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm3,xmm4
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm10,xmm12
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm10,xmm3
> 
> +        paddd   xmm14,xmm6
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm10,xmm6
> 
> +        paddd   xmm10,xmm7
> 
> +        movdqa  xmm6,XMMWORD[((112-128))+rax]
> 
> +        paddd   xmm5,XMMWORD[((240-128))+rax]
> 
> +
> 
> +        movdqa  xmm7,xmm6
> 
> +        movdqa  xmm1,xmm6
> 
> +        psrld   xmm7,3
> 
> +        movdqa  xmm2,xmm6
> 
> +
> 
> +        psrld   xmm1,7
> 
> +        movdqa  xmm0,XMMWORD[((64-128))+rax]
> 
> +        pslld   xmm2,14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm1,18-7
> 
> +        movdqa  xmm3,xmm0
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,25-14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm0,10
> 
> +        movdqa  xmm1,xmm3
> 
> +
> 
> +        psrld   xmm3,17
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm1,13
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        psrld   xmm3,19-17
> 
> +        pxor    xmm0,xmm1
> 
> +        pslld   xmm1,15-13
> 
> +        pxor    xmm0,xmm3
> 
> +        pxor    xmm0,xmm1
> 
> +        paddd   xmm5,xmm0
> 
> +        movdqa  xmm7,xmm14
> 
> +
> 
> +        movdqa  xmm2,xmm14
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm14
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(96-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm9
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[64+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm14
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm3,xmm14
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm8
> 
> +        pand    xmm3,xmm15
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm10
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm10
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        movdqa  xmm3,xmm11
> 
> +        movdqa  xmm7,xmm10
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm3,xmm10
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm4,xmm3
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm9,xmm11
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm9,xmm4
> 
> +        paddd   xmm13,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm9,xmm5
> 
> +        paddd   xmm9,xmm7
> 
> +        movdqa  xmm5,XMMWORD[((128-128))+rax]
> 
> +        paddd   xmm6,XMMWORD[((0-128))+rax]
> 
> +
> 
> +        movdqa  xmm7,xmm5
> 
> +        movdqa  xmm1,xmm5
> 
> +        psrld   xmm7,3
> 
> +        movdqa  xmm2,xmm5
> 
> +
> 
> +        psrld   xmm1,7
> 
> +        movdqa  xmm0,XMMWORD[((80-128))+rax]
> 
> +        pslld   xmm2,14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm1,18-7
> 
> +        movdqa  xmm4,xmm0
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,25-14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm0,10
> 
> +        movdqa  xmm1,xmm4
> 
> +
> 
> +        psrld   xmm4,17
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm1,13
> 
> +        paddd   xmm6,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        psrld   xmm4,19-17
> 
> +        pxor    xmm0,xmm1
> 
> +        pslld   xmm1,15-13
> 
> +        pxor    xmm0,xmm4
> 
> +        pxor    xmm0,xmm1
> 
> +        paddd   xmm6,xmm0
> 
> +        movdqa  xmm7,xmm13
> 
> +
> 
> +        movdqa  xmm2,xmm13
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm13
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(112-128)+rax],xmm6
> 
> +        paddd   xmm6,xmm8
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm6,XMMWORD[96+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm13
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm4,xmm13
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm15
> 
> +        pand    xmm4,xmm14
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm9
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm9
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm6,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        movdqa  xmm4,xmm10
> 
> +        movdqa  xmm7,xmm9
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm4,xmm9
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm6,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm3,xmm4
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm8,xmm10
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm8,xmm3
> 
> +        paddd   xmm12,xmm6
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm8,xmm6
> 
> +        paddd   xmm8,xmm7
> 
> +        lea     rbp,[256+rbp]
> 
> +        movdqa  xmm6,XMMWORD[((144-128))+rax]
> 
> +        paddd   xmm5,XMMWORD[((16-128))+rax]
> 
> +
> 
> +        movdqa  xmm7,xmm6
> 
> +        movdqa  xmm1,xmm6
> 
> +        psrld   xmm7,3
> 
> +        movdqa  xmm2,xmm6
> 
> +
> 
> +        psrld   xmm1,7
> 
> +        movdqa  xmm0,XMMWORD[((96-128))+rax]
> 
> +        pslld   xmm2,14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm1,18-7
> 
> +        movdqa  xmm3,xmm0
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,25-14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm0,10
> 
> +        movdqa  xmm1,xmm3
> 
> +
> 
> +        psrld   xmm3,17
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm1,13
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        psrld   xmm3,19-17
> 
> +        pxor    xmm0,xmm1
> 
> +        pslld   xmm1,15-13
> 
> +        pxor    xmm0,xmm3
> 
> +        pxor    xmm0,xmm1
> 
> +        paddd   xmm5,xmm0
> 
> +        movdqa  xmm7,xmm12
> 
> +
> 
> +        movdqa  xmm2,xmm12
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm12
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(128-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm15
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[((-128))+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm12
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm3,xmm12
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm14
> 
> +        pand    xmm3,xmm13
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm8
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm8
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        movdqa  xmm3,xmm9
> 
> +        movdqa  xmm7,xmm8
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm3,xmm8
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm4,xmm3
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm15,xmm9
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm15,xmm4
> 
> +        paddd   xmm11,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm15,xmm5
> 
> +        paddd   xmm15,xmm7
> 
> +        movdqa  xmm5,XMMWORD[((160-128))+rax]
> 
> +        paddd   xmm6,XMMWORD[((32-128))+rax]
> 
> +
> 
> +        movdqa  xmm7,xmm5
> 
> +        movdqa  xmm1,xmm5
> 
> +        psrld   xmm7,3
> 
> +        movdqa  xmm2,xmm5
> 
> +
> 
> +        psrld   xmm1,7
> 
> +        movdqa  xmm0,XMMWORD[((112-128))+rax]
> 
> +        pslld   xmm2,14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm1,18-7
> 
> +        movdqa  xmm4,xmm0
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,25-14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm0,10
> 
> +        movdqa  xmm1,xmm4
> 
> +
> 
> +        psrld   xmm4,17
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm1,13
> 
> +        paddd   xmm6,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        psrld   xmm4,19-17
> 
> +        pxor    xmm0,xmm1
> 
> +        pslld   xmm1,15-13
> 
> +        pxor    xmm0,xmm4
> 
> +        pxor    xmm0,xmm1
> 
> +        paddd   xmm6,xmm0
> 
> +        movdqa  xmm7,xmm11
> 
> +
> 
> +        movdqa  xmm2,xmm11
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm11
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(144-128)+rax],xmm6
> 
> +        paddd   xmm6,xmm14
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm6,XMMWORD[((-96))+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm11
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm4,xmm11
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm13
> 
> +        pand    xmm4,xmm12
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm15
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm15
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm6,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        movdqa  xmm4,xmm8
> 
> +        movdqa  xmm7,xmm15
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm4,xmm15
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm6,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm3,xmm4
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm14,xmm8
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm14,xmm3
> 
> +        paddd   xmm10,xmm6
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm14,xmm6
> 
> +        paddd   xmm14,xmm7
> 
> +        movdqa  xmm6,XMMWORD[((176-128))+rax]
> 
> +        paddd   xmm5,XMMWORD[((48-128))+rax]
> 
> +
> 
> +        movdqa  xmm7,xmm6
> 
> +        movdqa  xmm1,xmm6
> 
> +        psrld   xmm7,3
> 
> +        movdqa  xmm2,xmm6
> 
> +
> 
> +        psrld   xmm1,7
> 
> +        movdqa  xmm0,XMMWORD[((128-128))+rax]
> 
> +        pslld   xmm2,14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm1,18-7
> 
> +        movdqa  xmm3,xmm0
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,25-14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm0,10
> 
> +        movdqa  xmm1,xmm3
> 
> +
> 
> +        psrld   xmm3,17
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm1,13
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        psrld   xmm3,19-17
> 
> +        pxor    xmm0,xmm1
> 
> +        pslld   xmm1,15-13
> 
> +        pxor    xmm0,xmm3
> 
> +        pxor    xmm0,xmm1
> 
> +        paddd   xmm5,xmm0
> 
> +        movdqa  xmm7,xmm10
> 
> +
> 
> +        movdqa  xmm2,xmm10
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm10
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(160-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm13
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[((-64))+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm10
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm3,xmm10
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm12
> 
> +        pand    xmm3,xmm11
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm14
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm14
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        movdqa  xmm3,xmm15
> 
> +        movdqa  xmm7,xmm14
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm3,xmm14
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm4,xmm3
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm13,xmm15
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm13,xmm4
> 
> +        paddd   xmm9,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm13,xmm5
> 
> +        paddd   xmm13,xmm7
> 
> +        movdqa  xmm5,XMMWORD[((192-128))+rax]
> 
> +        paddd   xmm6,XMMWORD[((64-128))+rax]
> 
> +
> 
> +        movdqa  xmm7,xmm5
> 
> +        movdqa  xmm1,xmm5
> 
> +        psrld   xmm7,3
> 
> +        movdqa  xmm2,xmm5
> 
> +
> 
> +        psrld   xmm1,7
> 
> +        movdqa  xmm0,XMMWORD[((144-128))+rax]
> 
> +        pslld   xmm2,14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm1,18-7
> 
> +        movdqa  xmm4,xmm0
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,25-14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm0,10
> 
> +        movdqa  xmm1,xmm4
> 
> +
> 
> +        psrld   xmm4,17
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm1,13
> 
> +        paddd   xmm6,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        psrld   xmm4,19-17
> 
> +        pxor    xmm0,xmm1
> 
> +        pslld   xmm1,15-13
> 
> +        pxor    xmm0,xmm4
> 
> +        pxor    xmm0,xmm1
> 
> +        paddd   xmm6,xmm0
> 
> +        movdqa  xmm7,xmm9
> 
> +
> 
> +        movdqa  xmm2,xmm9
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm9
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(176-128)+rax],xmm6
> 
> +        paddd   xmm6,xmm12
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm6,XMMWORD[((-32))+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm9
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm4,xmm9
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm11
> 
> +        pand    xmm4,xmm10
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm13
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm13
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm6,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        movdqa  xmm4,xmm14
> 
> +        movdqa  xmm7,xmm13
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm4,xmm13
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm6,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm3,xmm4
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm12,xmm14
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm12,xmm3
> 
> +        paddd   xmm8,xmm6
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm12,xmm6
> 
> +        paddd   xmm12,xmm7
> 
> +        movdqa  xmm6,XMMWORD[((208-128))+rax]
> 
> +        paddd   xmm5,XMMWORD[((80-128))+rax]
> 
> +
> 
> +        movdqa  xmm7,xmm6
> 
> +        movdqa  xmm1,xmm6
> 
> +        psrld   xmm7,3
> 
> +        movdqa  xmm2,xmm6
> 
> +
> 
> +        psrld   xmm1,7
> 
> +        movdqa  xmm0,XMMWORD[((160-128))+rax]
> 
> +        pslld   xmm2,14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm1,18-7
> 
> +        movdqa  xmm3,xmm0
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,25-14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm0,10
> 
> +        movdqa  xmm1,xmm3
> 
> +
> 
> +        psrld   xmm3,17
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm1,13
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        psrld   xmm3,19-17
> 
> +        pxor    xmm0,xmm1
> 
> +        pslld   xmm1,15-13
> 
> +        pxor    xmm0,xmm3
> 
> +        pxor    xmm0,xmm1
> 
> +        paddd   xmm5,xmm0
> 
> +        movdqa  xmm7,xmm8
> 
> +
> 
> +        movdqa  xmm2,xmm8
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm8
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(192-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm11
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm8
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm3,xmm8
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm10
> 
> +        pand    xmm3,xmm9
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm12
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm12
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        movdqa  xmm3,xmm13
> 
> +        movdqa  xmm7,xmm12
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm3,xmm12
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm4,xmm3
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm11,xmm13
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm11,xmm4
> 
> +        paddd   xmm15,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm11,xmm5
> 
> +        paddd   xmm11,xmm7
> 
> +        movdqa  xmm5,XMMWORD[((224-128))+rax]
> 
> +        paddd   xmm6,XMMWORD[((96-128))+rax]
> 
> +
> 
> +        movdqa  xmm7,xmm5
> 
> +        movdqa  xmm1,xmm5
> 
> +        psrld   xmm7,3
> 
> +        movdqa  xmm2,xmm5
> 
> +
> 
> +        psrld   xmm1,7
> 
> +        movdqa  xmm0,XMMWORD[((176-128))+rax]
> 
> +        pslld   xmm2,14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm1,18-7
> 
> +        movdqa  xmm4,xmm0
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,25-14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm0,10
> 
> +        movdqa  xmm1,xmm4
> 
> +
> 
> +        psrld   xmm4,17
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm1,13
> 
> +        paddd   xmm6,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        psrld   xmm4,19-17
> 
> +        pxor    xmm0,xmm1
> 
> +        pslld   xmm1,15-13
> 
> +        pxor    xmm0,xmm4
> 
> +        pxor    xmm0,xmm1
> 
> +        paddd   xmm6,xmm0
> 
> +        movdqa  xmm7,xmm15
> 
> +
> 
> +        movdqa  xmm2,xmm15
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm15
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(208-128)+rax],xmm6
> 
> +        paddd   xmm6,xmm10
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm6,XMMWORD[32+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm15
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm4,xmm15
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm9
> 
> +        pand    xmm4,xmm8
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm11
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm11
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm6,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        movdqa  xmm4,xmm12
> 
> +        movdqa  xmm7,xmm11
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm4,xmm11
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm6,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm3,xmm4
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm10,xmm12
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm10,xmm3
> 
> +        paddd   xmm14,xmm6
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm10,xmm6
> 
> +        paddd   xmm10,xmm7
> 
> +        movdqa  xmm6,XMMWORD[((240-128))+rax]
> 
> +        paddd   xmm5,XMMWORD[((112-128))+rax]
> 
> +
> 
> +        movdqa  xmm7,xmm6
> 
> +        movdqa  xmm1,xmm6
> 
> +        psrld   xmm7,3
> 
> +        movdqa  xmm2,xmm6
> 
> +
> 
> +        psrld   xmm1,7
> 
> +        movdqa  xmm0,XMMWORD[((192-128))+rax]
> 
> +        pslld   xmm2,14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm1,18-7
> 
> +        movdqa  xmm3,xmm0
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,25-14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm0,10
> 
> +        movdqa  xmm1,xmm3
> 
> +
> 
> +        psrld   xmm3,17
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm1,13
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        psrld   xmm3,19-17
> 
> +        pxor    xmm0,xmm1
> 
> +        pslld   xmm1,15-13
> 
> +        pxor    xmm0,xmm3
> 
> +        pxor    xmm0,xmm1
> 
> +        paddd   xmm5,xmm0
> 
> +        movdqa  xmm7,xmm14
> 
> +
> 
> +        movdqa  xmm2,xmm14
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm14
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(224-128)+rax],xmm5
> 
> +        paddd   xmm5,xmm9
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm5,XMMWORD[64+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm14
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm3,xmm14
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm8
> 
> +        pand    xmm3,xmm15
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm10
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm10
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm5,xmm7
> 
> +        pxor    xmm0,xmm3
> 
> +        movdqa  xmm3,xmm11
> 
> +        movdqa  xmm7,xmm10
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm3,xmm10
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm5,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm4,xmm3
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm9,xmm11
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm9,xmm4
> 
> +        paddd   xmm13,xmm5
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm9,xmm5
> 
> +        paddd   xmm9,xmm7
> 
> +        movdqa  xmm5,XMMWORD[((0-128))+rax]
> 
> +        paddd   xmm6,XMMWORD[((128-128))+rax]
> 
> +
> 
> +        movdqa  xmm7,xmm5
> 
> +        movdqa  xmm1,xmm5
> 
> +        psrld   xmm7,3
> 
> +        movdqa  xmm2,xmm5
> 
> +
> 
> +        psrld   xmm1,7
> 
> +        movdqa  xmm0,XMMWORD[((208-128))+rax]
> 
> +        pslld   xmm2,14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm1,18-7
> 
> +        movdqa  xmm4,xmm0
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,25-14
> 
> +        pxor    xmm7,xmm1
> 
> +        psrld   xmm0,10
> 
> +        movdqa  xmm1,xmm4
> 
> +
> 
> +        psrld   xmm4,17
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm1,13
> 
> +        paddd   xmm6,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        psrld   xmm4,19-17
> 
> +        pxor    xmm0,xmm1
> 
> +        pslld   xmm1,15-13
> 
> +        pxor    xmm0,xmm4
> 
> +        pxor    xmm0,xmm1
> 
> +        paddd   xmm6,xmm0
> 
> +        movdqa  xmm7,xmm13
> 
> +
> 
> +        movdqa  xmm2,xmm13
> 
> +
> 
> +        psrld   xmm7,6
> 
> +        movdqa  xmm1,xmm13
> 
> +        pslld   xmm2,7
> 
> +        movdqa  XMMWORD[(240-128)+rax],xmm6
> 
> +        paddd   xmm6,xmm8
> 
> +
> 
> +        psrld   xmm1,11
> 
> +        pxor    xmm7,xmm2
> 
> +        pslld   xmm2,21-7
> 
> +        paddd   xmm6,XMMWORD[96+rbp]
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +        psrld   xmm1,25-11
> 
> +        movdqa  xmm0,xmm13
> 
> +
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm4,xmm13
> 
> +        pslld   xmm2,26-21
> 
> +        pandn   xmm0,xmm15
> 
> +        pand    xmm4,xmm14
> 
> +        pxor    xmm7,xmm1
> 
> +
> 
> +
> 
> +        movdqa  xmm1,xmm9
> 
> +        pxor    xmm7,xmm2
> 
> +        movdqa  xmm2,xmm9
> 
> +        psrld   xmm1,2
> 
> +        paddd   xmm6,xmm7
> 
> +        pxor    xmm0,xmm4
> 
> +        movdqa  xmm4,xmm10
> 
> +        movdqa  xmm7,xmm9
> 
> +        pslld   xmm2,10
> 
> +        pxor    xmm4,xmm9
> 
> +
> 
> +
> 
> +        psrld   xmm7,13
> 
> +        pxor    xmm1,xmm2
> 
> +        paddd   xmm6,xmm0
> 
> +        pslld   xmm2,19-10
> 
> +        pand    xmm3,xmm4
> 
> +        pxor    xmm1,xmm7
> 
> +
> 
> +
> 
> +        psrld   xmm7,22-13
> 
> +        pxor    xmm1,xmm2
> 
> +        movdqa  xmm8,xmm10
> 
> +        pslld   xmm2,30-19
> 
> +        pxor    xmm7,xmm1
> 
> +        pxor    xmm8,xmm3
> 
> +        paddd   xmm12,xmm6
> 
> +        pxor    xmm7,xmm2
> 
> +
> 
> +        paddd   xmm8,xmm6
> 
> +        paddd   xmm8,xmm7
> 
> +        lea     rbp,[256+rbp]
> 
> +        dec     ecx
> 
> +        jnz     NEAR $L$oop_16_xx
> 
> +
> 
> +        mov     ecx,1
> 
> +        lea     rbp,[((K256+128))]
> 
> +
> 
> +        movdqa  xmm7,XMMWORD[rbx]
> 
> +        cmp     ecx,DWORD[rbx]
> 
> +        pxor    xmm0,xmm0
> 
> +        cmovge  r8,rbp
> 
> +        cmp     ecx,DWORD[4+rbx]
> 
> +        movdqa  xmm6,xmm7
> 
> +        cmovge  r9,rbp
> 
> +        cmp     ecx,DWORD[8+rbx]
> 
> +        pcmpgtd xmm6,xmm0
> 
> +        cmovge  r10,rbp
> 
> +        cmp     ecx,DWORD[12+rbx]
> 
> +        paddd   xmm7,xmm6
> 
> +        cmovge  r11,rbp
> 
> +
> 
> +        movdqu  xmm0,XMMWORD[((0-128))+rdi]
> 
> +        pand    xmm8,xmm6
> 
> +        movdqu  xmm1,XMMWORD[((32-128))+rdi]
> 
> +        pand    xmm9,xmm6
> 
> +        movdqu  xmm2,XMMWORD[((64-128))+rdi]
> 
> +        pand    xmm10,xmm6
> 
> +        movdqu  xmm5,XMMWORD[((96-128))+rdi]
> 
> +        pand    xmm11,xmm6
> 
> +        paddd   xmm8,xmm0
> 
> +        movdqu  xmm0,XMMWORD[((128-128))+rdi]
> 
> +        pand    xmm12,xmm6
> 
> +        paddd   xmm9,xmm1
> 
> +        movdqu  xmm1,XMMWORD[((160-128))+rdi]
> 
> +        pand    xmm13,xmm6
> 
> +        paddd   xmm10,xmm2
> 
> +        movdqu  xmm2,XMMWORD[((192-128))+rdi]
> 
> +        pand    xmm14,xmm6
> 
> +        paddd   xmm11,xmm5
> 
> +        movdqu  xmm5,XMMWORD[((224-128))+rdi]
> 
> +        pand    xmm15,xmm6
> 
> +        paddd   xmm12,xmm0
> 
> +        paddd   xmm13,xmm1
> 
> +        movdqu  XMMWORD[(0-128)+rdi],xmm8
> 
> +        paddd   xmm14,xmm2
> 
> +        movdqu  XMMWORD[(32-128)+rdi],xmm9
> 
> +        paddd   xmm15,xmm5
> 
> +        movdqu  XMMWORD[(64-128)+rdi],xmm10
> 
> +        movdqu  XMMWORD[(96-128)+rdi],xmm11
> 
> +        movdqu  XMMWORD[(128-128)+rdi],xmm12
> 
> +        movdqu  XMMWORD[(160-128)+rdi],xmm13
> 
> +        movdqu  XMMWORD[(192-128)+rdi],xmm14
> 
> +        movdqu  XMMWORD[(224-128)+rdi],xmm15
> 
> +
> 
> +        movdqa  XMMWORD[rbx],xmm7
> 
> +        movdqa  xmm6,XMMWORD[$L$pbswap]
> 
> +        dec     edx
> 
> +        jnz     NEAR $L$oop
> 
> +
> 
> +        mov     edx,DWORD[280+rsp]
> 
> +        lea     rdi,[16+rdi]
> 
> +        lea     rsi,[64+rsi]
> 
> +        dec     edx
> 
> +        jnz     NEAR $L$oop_grande
> 
> +
> 
> +$L$done:
> 
> +        mov     rax,QWORD[272+rsp]
> 
> +
> 
> +        movaps  xmm6,XMMWORD[((-184))+rax]
> 
> +        movaps  xmm7,XMMWORD[((-168))+rax]
> 
> +        movaps  xmm8,XMMWORD[((-152))+rax]
> 
> +        movaps  xmm9,XMMWORD[((-136))+rax]
> 
> +        movaps  xmm10,XMMWORD[((-120))+rax]
> 
> +        movaps  xmm11,XMMWORD[((-104))+rax]
> 
> +        movaps  xmm12,XMMWORD[((-88))+rax]
> 
> +        movaps  xmm13,XMMWORD[((-72))+rax]
> 
> +        movaps  xmm14,XMMWORD[((-56))+rax]
> 
> +        movaps  xmm15,XMMWORD[((-40))+rax]
> 
> +        mov     rbp,QWORD[((-16))+rax]
> 
> +
> 
> +        mov     rbx,QWORD[((-8))+rax]
> 
> +
> 
> +        lea     rsp,[rax]
> 
> +
> 
> +$L$epilogue:
> 
> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> 
> +        mov     rsi,QWORD[16+rsp]
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +$L$SEH_end_sha256_multi_block:
> 
> +
> 
> +ALIGN   32
> 
> +sha256_multi_block_shaext:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_sha256_multi_block_shaext:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +
> 
> +
> 
> +
> 
> +_shaext_shortcut:
> 
> +        mov     rax,rsp
> 
> +
> 
> +        push    rbx
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        lea     rsp,[((-168))+rsp]
> 
> +        movaps  XMMWORD[rsp],xmm6
> 
> +        movaps  XMMWORD[16+rsp],xmm7
> 
> +        movaps  XMMWORD[32+rsp],xmm8
> 
> +        movaps  XMMWORD[48+rsp],xmm9
> 
> +        movaps  XMMWORD[(-120)+rax],xmm10
> 
> +        movaps  XMMWORD[(-104)+rax],xmm11
> 
> +        movaps  XMMWORD[(-88)+rax],xmm12
> 
> +        movaps  XMMWORD[(-72)+rax],xmm13
> 
> +        movaps  XMMWORD[(-56)+rax],xmm14
> 
> +        movaps  XMMWORD[(-40)+rax],xmm15
> 
> +        sub     rsp,288
> 
> +        shl     edx,1
> 
> +        and     rsp,-256
> 
> +        lea     rdi,[128+rdi]
> 
> +        mov     QWORD[272+rsp],rax
> 
> +$L$body_shaext:
> 
> +        lea     rbx,[256+rsp]
> 
> +        lea     rbp,[((K256_shaext+128))]
> 
> +
> 
> +$L$oop_grande_shaext:
> 
> +        mov     DWORD[280+rsp],edx
> 
> +        xor     edx,edx
> 
> +        mov     r8,QWORD[rsi]
> 
> +        mov     ecx,DWORD[8+rsi]
> 
> +        cmp     ecx,edx
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        mov     DWORD[rbx],ecx
> 
> +        cmovle  r8,rsp
> 
> +        mov     r9,QWORD[16+rsi]
> 
> +        mov     ecx,DWORD[24+rsi]
> 
> +        cmp     ecx,edx
> 
> +        cmovg   edx,ecx
> 
> +        test    ecx,ecx
> 
> +        mov     DWORD[4+rbx],ecx
> 
> +        cmovle  r9,rsp
> 
> +        test    edx,edx
> 
> +        jz      NEAR $L$done_shaext
> 
> +
> 
> +        movq    xmm12,QWORD[((0-128))+rdi]
> 
> +        movq    xmm4,QWORD[((32-128))+rdi]
> 
> +        movq    xmm13,QWORD[((64-128))+rdi]
> 
> +        movq    xmm5,QWORD[((96-128))+rdi]
> 
> +        movq    xmm8,QWORD[((128-128))+rdi]
> 
> +        movq    xmm9,QWORD[((160-128))+rdi]
> 
> +        movq    xmm10,QWORD[((192-128))+rdi]
> 
> +        movq    xmm11,QWORD[((224-128))+rdi]
> 
> +
> 
> +        punpckldq       xmm12,xmm4
> 
> +        punpckldq       xmm13,xmm5
> 
> +        punpckldq       xmm8,xmm9
> 
> +        punpckldq       xmm10,xmm11
> 
> +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
> 
> +
> 
> +        movdqa  xmm14,xmm12
> 
> +        movdqa  xmm15,xmm13
> 
> +        punpcklqdq      xmm12,xmm8
> 
> +        punpcklqdq      xmm13,xmm10
> 
> +        punpckhqdq      xmm14,xmm8
> 
> +        punpckhqdq      xmm15,xmm10
> 
> +
> 
> +        pshufd  xmm12,xmm12,27
> 
> +        pshufd  xmm13,xmm13,27
> 
> +        pshufd  xmm14,xmm14,27
> 
> +        pshufd  xmm15,xmm15,27
> 
> +        jmp     NEAR $L$oop_shaext
> 
> +
> 
> +ALIGN   32
> 
> +$L$oop_shaext:
> 
> +        movdqu  xmm4,XMMWORD[r8]
> 
> +        movdqu  xmm8,XMMWORD[r9]
> 
> +        movdqu  xmm5,XMMWORD[16+r8]
> 
> +        movdqu  xmm9,XMMWORD[16+r9]
> 
> +        movdqu  xmm6,XMMWORD[32+r8]
> 
> +DB      102,15,56,0,227
> 
> +        movdqu  xmm10,XMMWORD[32+r9]
> 
> +DB      102,68,15,56,0,195
> 
> +        movdqu  xmm7,XMMWORD[48+r8]
> 
> +        lea     r8,[64+r8]
> 
> +        movdqu  xmm11,XMMWORD[48+r9]
> 
> +        lea     r9,[64+r9]
> 
> +
> 
> +        movdqa  xmm0,XMMWORD[((0-128))+rbp]
> 
> +DB      102,15,56,0,235
> 
> +        paddd   xmm0,xmm4
> 
> +        pxor    xmm4,xmm12
> 
> +        movdqa  xmm1,xmm0
> 
> +        movdqa  xmm2,XMMWORD[((0-128))+rbp]
> 
> +DB      102,68,15,56,0,203
> 
> +        paddd   xmm2,xmm8
> 
> +        movdqa  XMMWORD[80+rsp],xmm13
> 
> +DB      69,15,56,203,236
> 
> +        pxor    xmm8,xmm14
> 
> +        movdqa  xmm0,xmm2
> 
> +        movdqa  XMMWORD[112+rsp],xmm15
> 
> +DB      69,15,56,203,254
> 
> +        pshufd  xmm0,xmm1,0x0e
> 
> +        pxor    xmm4,xmm12
> 
> +        movdqa  XMMWORD[64+rsp],xmm12
> 
> +DB      69,15,56,203,229
> 
> +        pshufd  xmm0,xmm2,0x0e
> 
> +        pxor    xmm8,xmm14
> 
> +        movdqa  XMMWORD[96+rsp],xmm14
> 
> +        movdqa  xmm1,XMMWORD[((16-128))+rbp]
> 
> +        paddd   xmm1,xmm5
> 
> +DB      102,15,56,0,243
> 
> +DB      69,15,56,203,247
> 
> +
> 
> +        movdqa  xmm0,xmm1
> 
> +        movdqa  xmm2,XMMWORD[((16-128))+rbp]
> 
> +        paddd   xmm2,xmm9
> 
> +DB      69,15,56,203,236
> 
> +        movdqa  xmm0,xmm2
> 
> +        prefetcht0      [127+r8]
> 
> +DB      102,15,56,0,251
> 
> +DB      102,68,15,56,0,211
> 
> +        prefetcht0      [127+r9]
> 
> +DB      69,15,56,203,254
> 
> +        pshufd  xmm0,xmm1,0x0e
> 
> +DB      102,68,15,56,0,219
> 
> +DB      15,56,204,229
> 
> +DB      69,15,56,203,229
> 
> +        pshufd  xmm0,xmm2,0x0e
> 
> +        movdqa  xmm1,XMMWORD[((32-128))+rbp]
> 
> +        paddd   xmm1,xmm6
> 
> +DB      69,15,56,203,247
> 
> +
> 
> +        movdqa  xmm0,xmm1
> 
> +        movdqa  xmm2,XMMWORD[((32-128))+rbp]
> 
> +        paddd   xmm2,xmm10
> 
> +DB      69,15,56,203,236
> 
> +DB      69,15,56,204,193
> 
> +        movdqa  xmm0,xmm2
> 
> +        movdqa  xmm3,xmm7
> 
> +DB      69,15,56,203,254
> 
> +        pshufd  xmm0,xmm1,0x0e
> 
> +DB      102,15,58,15,222,4
> 
> +        paddd   xmm4,xmm3
> 
> +        movdqa  xmm3,xmm11
> 
> +DB      102,65,15,58,15,218,4
> 
> +DB      15,56,204,238
> 
> +DB      69,15,56,203,229
> 
> +        pshufd  xmm0,xmm2,0x0e
> 
> +        movdqa  xmm1,XMMWORD[((48-128))+rbp]
> 
> +        paddd   xmm1,xmm7
> 
> +DB      69,15,56,203,247
> 
> +DB      69,15,56,204,202
> 
> +
> 
> +        movdqa  xmm0,xmm1
> 
> +        movdqa  xmm2,XMMWORD[((48-128))+rbp]
> 
> +        paddd   xmm8,xmm3
> 
> +        paddd   xmm2,xmm11
> 
> +DB      15,56,205,231
> 
> +DB      69,15,56,203,236
> 
> +        movdqa  xmm0,xmm2
> 
> +        movdqa  xmm3,xmm4
> 
> +DB      102,15,58,15,223,4
> 
> +DB      69,15,56,203,254
> 
> +DB      69,15,56,205,195
> 
> +        pshufd  xmm0,xmm1,0x0e
> 
> +        paddd   xmm5,xmm3
> 
> +        movdqa  xmm3,xmm8
> 
> +DB      102,65,15,58,15,219,4
> 
> +DB      15,56,204,247
> 
> +DB      69,15,56,203,229
> 
> +        pshufd  xmm0,xmm2,0x0e
> 
> +        movdqa  xmm1,XMMWORD[((64-128))+rbp]
> 
> +        paddd   xmm1,xmm4
> 
> +DB      69,15,56,203,247
> 
> +DB      69,15,56,204,211
> 
> +        movdqa  xmm0,xmm1
> 
> +        movdqa  xmm2,XMMWORD[((64-128))+rbp]
> 
> +        paddd   xmm9,xmm3
> 
> +        paddd   xmm2,xmm8
> 
> +DB      15,56,205,236
> 
> +DB      69,15,56,203,236
> 
> +        movdqa  xmm0,xmm2
> 
> +        movdqa  xmm3,xmm5
> 
> +DB      102,15,58,15,220,4
> 
> +DB      69,15,56,203,254
> 
> +DB      69,15,56,205,200
> 
> +        pshufd  xmm0,xmm1,0x0e
> 
> +        paddd   xmm6,xmm3
> 
> +        movdqa  xmm3,xmm9
> 
> +DB      102,65,15,58,15,216,4
> 
> +DB      15,56,204,252
> 
> +DB      69,15,56,203,229
> 
> +        pshufd  xmm0,xmm2,0x0e
> 
> +        movdqa  xmm1,XMMWORD[((80-128))+rbp]
> 
> +        paddd   xmm1,xmm5
> 
> +DB      69,15,56,203,247
> 
> +DB      69,15,56,204,216
> 
> +        movdqa  xmm0,xmm1
> 
> +        movdqa  xmm2,XMMWORD[((80-128))+rbp]
> 
> +        paddd   xmm10,xmm3
> 
> +        paddd   xmm2,xmm9
> 
> +DB      15,56,205,245
> 
> +DB      69,15,56,203,236
> 
> +        movdqa  xmm0,xmm2
> 
> +        movdqa  xmm3,xmm6
> 
> +DB      102,15,58,15,221,4
> 
> +DB      69,15,56,203,254
> 
> +DB      69,15,56,205,209
> 
> +        pshufd  xmm0,xmm1,0x0e
> 
> +        paddd   xmm7,xmm3
> 
> +        movdqa  xmm3,xmm10
> 
> +DB      102,65,15,58,15,217,4
> 
> +DB      15,56,204,229
> 
> +DB      69,15,56,203,229
> 
> +        pshufd  xmm0,xmm2,0x0e
> 
> +        movdqa  xmm1,XMMWORD[((96-128))+rbp]
> 
> +        paddd   xmm1,xmm6
> 
> +DB      69,15,56,203,247
> 
> +DB      69,15,56,204,193
> 
> +        movdqa  xmm0,xmm1
> 
> +        movdqa  xmm2,XMMWORD[((96-128))+rbp]
> 
> +        paddd   xmm11,xmm3
> 
> +        paddd   xmm2,xmm10
> 
> +DB      15,56,205,254
> 
> +DB      69,15,56,203,236
> 
> +        movdqa  xmm0,xmm2
> 
> +        movdqa  xmm3,xmm7
> 
> +DB      102,15,58,15,222,4
> 
> +DB      69,15,56,203,254
> 
> +DB      69,15,56,205,218
> 
> +        pshufd  xmm0,xmm1,0x0e
> 
> +        paddd   xmm4,xmm3
> 
> +        movdqa  xmm3,xmm11
> 
> +DB      102,65,15,58,15,218,4
> 
> +DB      15,56,204,238
> 
> +DB      69,15,56,203,229
> 
> +        pshufd  xmm0,xmm2,0x0e
> 
> +        movdqa  xmm1,XMMWORD[((112-128))+rbp]
> 
> +        paddd   xmm1,xmm7
> 
> +DB      69,15,56,203,247
> 
> +DB      69,15,56,204,202
> 
> +        movdqa  xmm0,xmm1
> 
> +        movdqa  xmm2,XMMWORD[((112-128))+rbp]
> 
> +        paddd   xmm8,xmm3
> 
> +        paddd   xmm2,xmm11
> 
> +DB      15,56,205,231
> 
> +DB      69,15,56,203,236
> 
> +        movdqa  xmm0,xmm2
> 
> +        movdqa  xmm3,xmm4
> 
> +DB      102,15,58,15,223,4
> 
> +DB      69,15,56,203,254
> 
> +DB      69,15,56,205,195
> 
> +        pshufd  xmm0,xmm1,0x0e
> 
> +        paddd   xmm5,xmm3
> 
> +        movdqa  xmm3,xmm8
> 
> +DB      102,65,15,58,15,219,4
> 
> +DB      15,56,204,247
> 
> +DB      69,15,56,203,229
> 
> +        pshufd  xmm0,xmm2,0x0e
> 
> +        movdqa  xmm1,XMMWORD[((128-128))+rbp]
> 
> +        paddd   xmm1,xmm4
> 
> +DB      69,15,56,203,247
> 
> +DB      69,15,56,204,211
> 
> +        movdqa  xmm0,xmm1
> 
> +        movdqa  xmm2,XMMWORD[((128-128))+rbp]
> 
> +        paddd   xmm9,xmm3
> 
> +        paddd   xmm2,xmm8
> 
> +DB      15,56,205,236
> 
> +DB      69,15,56,203,236
> 
> +        movdqa  xmm0,xmm2
> 
> +        movdqa  xmm3,xmm5
> 
> +DB      102,15,58,15,220,4
> 
> +DB      69,15,56,203,254
> 
> +DB      69,15,56,205,200
> 
> +        pshufd  xmm0,xmm1,0x0e
> 
> +        paddd   xmm6,xmm3
> 
> +        movdqa  xmm3,xmm9
> 
> +DB      102,65,15,58,15,216,4
> 
> +DB      15,56,204,252
> 
> +DB      69,15,56,203,229
> 
> +        pshufd  xmm0,xmm2,0x0e
> 
> +        movdqa  xmm1,XMMWORD[((144-128))+rbp]
> 
> +        paddd   xmm1,xmm5
> 
> +DB      69,15,56,203,247
> 
> +DB      69,15,56,204,216
> 
> +        movdqa  xmm0,xmm1
> 
> +        movdqa  xmm2,XMMWORD[((144-128))+rbp]
> 
> +        paddd   xmm10,xmm3
> 
> +        paddd   xmm2,xmm9
> 
> +DB      15,56,205,245
> 
> +DB      69,15,56,203,236
> 
> +        movdqa  xmm0,xmm2
> 
> +        movdqa  xmm3,xmm6
> 
> +DB      102,15,58,15,221,4
> 
> +DB      69,15,56,203,254
> 
> +DB      69,15,56,205,209
> 
> +        pshufd  xmm0,xmm1,0x0e
> 
> +        paddd   xmm7,xmm3
> 
> +        movdqa  xmm3,xmm10
> 
> +DB      102,65,15,58,15,217,4
> 
> +DB      15,56,204,229
> 
> +DB      69,15,56,203,229
> 
> +        pshufd  xmm0,xmm2,0x0e
> 
> +        movdqa  xmm1,XMMWORD[((160-128))+rbp]
> 
> +        paddd   xmm1,xmm6
> 
> +DB      69,15,56,203,247
> 
> +DB      69,15,56,204,193
> 
> +        movdqa  xmm0,xmm1
> 
> +        movdqa  xmm2,XMMWORD[((160-128))+rbp]
> 
> +        paddd   xmm11,xmm3
> 
> +        paddd   xmm2,xmm10
> 
> +DB      15,56,205,254
> 
> +DB      69,15,56,203,236
> 
> +        movdqa  xmm0,xmm2
> 
> +        movdqa  xmm3,xmm7
> 
> +DB      102,15,58,15,222,4
> 
> +DB      69,15,56,203,254
> 
> +DB      69,15,56,205,218
> 
> +        pshufd  xmm0,xmm1,0x0e
> 
> +        paddd   xmm4,xmm3
> 
> +        movdqa  xmm3,xmm11
> 
> +DB      102,65,15,58,15,218,4
> 
> +DB      15,56,204,238
> 
> +DB      69,15,56,203,229
> 
> +        pshufd  xmm0,xmm2,0x0e
> 
> +        movdqa  xmm1,XMMWORD[((176-128))+rbp]
> 
> +        paddd   xmm1,xmm7
> 
> +DB      69,15,56,203,247
> 
> +DB      69,15,56,204,202
> 
> +        movdqa  xmm0,xmm1
> 
> +        movdqa  xmm2,XMMWORD[((176-128))+rbp]
> 
> +        paddd   xmm8,xmm3
> 
> +        paddd   xmm2,xmm11
> 
> +DB      15,56,205,231
> 
> +DB      69,15,56,203,236
> 
> +        movdqa  xmm0,xmm2
> 
> +        movdqa  xmm3,xmm4
> 
> +DB      102,15,58,15,223,4
> 
> +DB      69,15,56,203,254
> 
> +DB      69,15,56,205,195
> 
> +        pshufd  xmm0,xmm1,0x0e
> 
> +        paddd   xmm5,xmm3
> 
> +        movdqa  xmm3,xmm8
> 
> +DB      102,65,15,58,15,219,4
> 
> +DB      15,56,204,247
> 
> +DB      69,15,56,203,229
> 
> +        pshufd  xmm0,xmm2,0x0e
> 
> +        movdqa  xmm1,XMMWORD[((192-128))+rbp]
> 
> +        paddd   xmm1,xmm4
> 
> +DB      69,15,56,203,247
> 
> +DB      69,15,56,204,211
> 
> +        movdqa  xmm0,xmm1
> 
> +        movdqa  xmm2,XMMWORD[((192-128))+rbp]
> 
> +        paddd   xmm9,xmm3
> 
> +        paddd   xmm2,xmm8
> 
> +DB      15,56,205,236
> 
> +DB      69,15,56,203,236
> 
> +        movdqa  xmm0,xmm2
> 
> +        movdqa  xmm3,xmm5
> 
> +DB      102,15,58,15,220,4
> 
> +DB      69,15,56,203,254
> 
> +DB      69,15,56,205,200
> 
> +        pshufd  xmm0,xmm1,0x0e
> 
> +        paddd   xmm6,xmm3
> 
> +        movdqa  xmm3,xmm9
> 
> +DB      102,65,15,58,15,216,4
> 
> +DB      15,56,204,252
> 
> +DB      69,15,56,203,229
> 
> +        pshufd  xmm0,xmm2,0x0e
> 
> +        movdqa  xmm1,XMMWORD[((208-128))+rbp]
> 
> +        paddd   xmm1,xmm5
> 
> +DB      69,15,56,203,247
> 
> +DB      69,15,56,204,216
> 
> +        movdqa  xmm0,xmm1
> 
> +        movdqa  xmm2,XMMWORD[((208-128))+rbp]
> 
> +        paddd   xmm10,xmm3
> 
> +        paddd   xmm2,xmm9
> 
> +DB      15,56,205,245
> 
> +DB      69,15,56,203,236
> 
> +        movdqa  xmm0,xmm2
> 
> +        movdqa  xmm3,xmm6
> 
> +DB      102,15,58,15,221,4
> 
> +DB      69,15,56,203,254
> 
> +DB      69,15,56,205,209
> 
> +        pshufd  xmm0,xmm1,0x0e
> 
> +        paddd   xmm7,xmm3
> 
> +        movdqa  xmm3,xmm10
> 
> +DB      102,65,15,58,15,217,4
> 
> +        nop
> 
> +DB      69,15,56,203,229
> 
> +        pshufd  xmm0,xmm2,0x0e
> 
> +        movdqa  xmm1,XMMWORD[((224-128))+rbp]
> 
> +        paddd   xmm1,xmm6
> 
> +DB      69,15,56,203,247
> 
> +
> 
> +        movdqa  xmm0,xmm1
> 
> +        movdqa  xmm2,XMMWORD[((224-128))+rbp]
> 
> +        paddd   xmm11,xmm3
> 
> +        paddd   xmm2,xmm10
> 
> +DB      15,56,205,254
> 
> +        nop
> 
> +DB      69,15,56,203,236
> 
> +        movdqa  xmm0,xmm2
> 
> +        mov     ecx,1
> 
> +        pxor    xmm6,xmm6
> 
> +DB      69,15,56,203,254
> 
> +DB      69,15,56,205,218
> 
> +        pshufd  xmm0,xmm1,0x0e
> 
> +        movdqa  xmm1,XMMWORD[((240-128))+rbp]
> 
> +        paddd   xmm1,xmm7
> 
> +        movq    xmm7,QWORD[rbx]
> 
> +        nop
> 
> +DB      69,15,56,203,229
> 
> +        pshufd  xmm0,xmm2,0x0e
> 
> +        movdqa  xmm2,XMMWORD[((240-128))+rbp]
> 
> +        paddd   xmm2,xmm11
> 
> +DB      69,15,56,203,247
> 
> +
> 
> +        movdqa  xmm0,xmm1
> 
> +        cmp     ecx,DWORD[rbx]
> 
> +        cmovge  r8,rsp
> 
> +        cmp     ecx,DWORD[4+rbx]
> 
> +        cmovge  r9,rsp
> 
> +        pshufd  xmm9,xmm7,0x00
> 
> +DB      69,15,56,203,236
> 
> +        movdqa  xmm0,xmm2
> 
> +        pshufd  xmm10,xmm7,0x55
> 
> +        movdqa  xmm11,xmm7
> 
> +DB      69,15,56,203,254
> 
> +        pshufd  xmm0,xmm1,0x0e
> 
> +        pcmpgtd xmm9,xmm6
> 
> +        pcmpgtd xmm10,xmm6
> 
> +DB      69,15,56,203,229
> 
> +        pshufd  xmm0,xmm2,0x0e
> 
> +        pcmpgtd xmm11,xmm6
> 
> +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
> 
> +DB      69,15,56,203,247
> 
> +
> 
> +        pand    xmm13,xmm9
> 
> +        pand    xmm15,xmm10
> 
> +        pand    xmm12,xmm9
> 
> +        pand    xmm14,xmm10
> 
> +        paddd   xmm11,xmm7
> 
> +
> 
> +        paddd   xmm13,XMMWORD[80+rsp]
> 
> +        paddd   xmm15,XMMWORD[112+rsp]
> 
> +        paddd   xmm12,XMMWORD[64+rsp]
> 
> +        paddd   xmm14,XMMWORD[96+rsp]
> 
> +
> 
> +        movq    QWORD[rbx],xmm11
> 
> +        dec     edx
> 
> +        jnz     NEAR $L$oop_shaext
> 
> +
> 
> +        mov     edx,DWORD[280+rsp]
> 
> +
> 
> +        pshufd  xmm12,xmm12,27
> 
> +        pshufd  xmm13,xmm13,27
> 
> +        pshufd  xmm14,xmm14,27
> 
> +        pshufd  xmm15,xmm15,27
> 
> +
> 
> +        movdqa  xmm5,xmm12
> 
> +        movdqa  xmm6,xmm13
> 
> +        punpckldq       xmm12,xmm14
> 
> +        punpckhdq       xmm5,xmm14
> 
> +        punpckldq       xmm13,xmm15
> 
> +        punpckhdq       xmm6,xmm15
> 
> +
> 
> +        movq    QWORD[(0-128)+rdi],xmm12
> 
> +        psrldq  xmm12,8
> 
> +        movq    QWORD[(128-128)+rdi],xmm5
> 
> +        psrldq  xmm5,8
> 
> +        movq    QWORD[(32-128)+rdi],xmm12
> 
> +        movq    QWORD[(160-128)+rdi],xmm5
> 
> +
> 
> +        movq    QWORD[(64-128)+rdi],xmm13
> 
> +        psrldq  xmm13,8
> 
> +        movq    QWORD[(192-128)+rdi],xmm6
> 
> +        psrldq  xmm6,8
> 
> +        movq    QWORD[(96-128)+rdi],xmm13
> 
> +        movq    QWORD[(224-128)+rdi],xmm6
> 
> +
> 
> +        lea     rdi,[8+rdi]
> 
> +        lea     rsi,[32+rsi]
> 
> +        dec     edx
> 
> +        jnz     NEAR $L$oop_grande_shaext
> 
> +
> 
> +$L$done_shaext:
> 
> +
> 
> +        movaps  xmm6,XMMWORD[((-184))+rax]
> 
> +        movaps  xmm7,XMMWORD[((-168))+rax]
> 
> +        movaps  xmm8,XMMWORD[((-152))+rax]
> 
> +        movaps  xmm9,XMMWORD[((-136))+rax]
> 
> +        movaps  xmm10,XMMWORD[((-120))+rax]
> 
> +        movaps  xmm11,XMMWORD[((-104))+rax]
> 
> +        movaps  xmm12,XMMWORD[((-88))+rax]
> 
> +        movaps  xmm13,XMMWORD[((-72))+rax]
> 
> +        movaps  xmm14,XMMWORD[((-56))+rax]
> 
> +        movaps  xmm15,XMMWORD[((-40))+rax]
> 
> +        mov     rbp,QWORD[((-16))+rax]
> 
> +
> 
> +        mov     rbx,QWORD[((-8))+rax]
> 
> +
> 
> +        lea     rsp,[rax]
> 
> +
> 
> +$L$epilogue_shaext:
> 
> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> 
> +        mov     rsi,QWORD[16+rsp]
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +$L$SEH_end_sha256_multi_block_shaext:
> 
> +ALIGN   256
> 
> +K256:
> 
> +        DD      1116352408,1116352408,1116352408,1116352408
> 
> +        DD      1116352408,1116352408,1116352408,1116352408
> 
> +        DD      1899447441,1899447441,1899447441,1899447441
> 
> +        DD      1899447441,1899447441,1899447441,1899447441
> 
> +        DD      3049323471,3049323471,3049323471,3049323471
> 
> +        DD      3049323471,3049323471,3049323471,3049323471
> 
> +        DD      3921009573,3921009573,3921009573,3921009573
> 
> +        DD      3921009573,3921009573,3921009573,3921009573
> 
> +        DD      961987163,961987163,961987163,961987163
> 
> +        DD      961987163,961987163,961987163,961987163
> 
> +        DD      1508970993,1508970993,1508970993,1508970993
> 
> +        DD      1508970993,1508970993,1508970993,1508970993
> 
> +        DD      2453635748,2453635748,2453635748,2453635748
> 
> +        DD      2453635748,2453635748,2453635748,2453635748
> 
> +        DD      2870763221,2870763221,2870763221,2870763221
> 
> +        DD      2870763221,2870763221,2870763221,2870763221
> 
> +        DD      3624381080,3624381080,3624381080,3624381080
> 
> +        DD      3624381080,3624381080,3624381080,3624381080
> 
> +        DD      310598401,310598401,310598401,310598401
> 
> +        DD      310598401,310598401,310598401,310598401
> 
> +        DD      607225278,607225278,607225278,607225278
> 
> +        DD      607225278,607225278,607225278,607225278
> 
> +        DD      1426881987,1426881987,1426881987,1426881987
> 
> +        DD      1426881987,1426881987,1426881987,1426881987
> 
> +        DD      1925078388,1925078388,1925078388,1925078388
> 
> +        DD      1925078388,1925078388,1925078388,1925078388
> 
> +        DD      2162078206,2162078206,2162078206,2162078206
> 
> +        DD      2162078206,2162078206,2162078206,2162078206
> 
> +        DD      2614888103,2614888103,2614888103,2614888103
> 
> +        DD      2614888103,2614888103,2614888103,2614888103
> 
> +        DD      3248222580,3248222580,3248222580,3248222580
> 
> +        DD      3248222580,3248222580,3248222580,3248222580
> 
> +        DD      3835390401,3835390401,3835390401,3835390401
> 
> +        DD      3835390401,3835390401,3835390401,3835390401
> 
> +        DD      4022224774,4022224774,4022224774,4022224774
> 
> +        DD      4022224774,4022224774,4022224774,4022224774
> 
> +        DD      264347078,264347078,264347078,264347078
> 
> +        DD      264347078,264347078,264347078,264347078
> 
> +        DD      604807628,604807628,604807628,604807628
> 
> +        DD      604807628,604807628,604807628,604807628
> 
> +        DD      770255983,770255983,770255983,770255983
> 
> +        DD      770255983,770255983,770255983,770255983
> 
> +        DD      1249150122,1249150122,1249150122,1249150122
> 
> +        DD      1249150122,1249150122,1249150122,1249150122
> 
> +        DD      1555081692,1555081692,1555081692,1555081692
> 
> +        DD      1555081692,1555081692,1555081692,1555081692
> 
> +        DD      1996064986,1996064986,1996064986,1996064986
> 
> +        DD      1996064986,1996064986,1996064986,1996064986
> 
> +        DD      2554220882,2554220882,2554220882,2554220882
> 
> +        DD      2554220882,2554220882,2554220882,2554220882
> 
> +        DD      2821834349,2821834349,2821834349,2821834349
> 
> +        DD      2821834349,2821834349,2821834349,2821834349
> 
> +        DD      2952996808,2952996808,2952996808,2952996808
> 
> +        DD      2952996808,2952996808,2952996808,2952996808
> 
> +        DD      3210313671,3210313671,3210313671,3210313671
> 
> +        DD      3210313671,3210313671,3210313671,3210313671
> 
> +        DD      3336571891,3336571891,3336571891,3336571891
> 
> +        DD      3336571891,3336571891,3336571891,3336571891
> 
> +        DD      3584528711,3584528711,3584528711,3584528711
> 
> +        DD      3584528711,3584528711,3584528711,3584528711
> 
> +        DD      113926993,113926993,113926993,113926993
> 
> +        DD      113926993,113926993,113926993,113926993
> 
> +        DD      338241895,338241895,338241895,338241895
> 
> +        DD      338241895,338241895,338241895,338241895
> 
> +        DD      666307205,666307205,666307205,666307205
> 
> +        DD      666307205,666307205,666307205,666307205
> 
> +        DD      773529912,773529912,773529912,773529912
> 
> +        DD      773529912,773529912,773529912,773529912
> 
> +        DD      1294757372,1294757372,1294757372,1294757372
> 
> +        DD      1294757372,1294757372,1294757372,1294757372
> 
> +        DD      1396182291,1396182291,1396182291,1396182291
> 
> +        DD      1396182291,1396182291,1396182291,1396182291
> 
> +        DD      1695183700,1695183700,1695183700,1695183700
> 
> +        DD      1695183700,1695183700,1695183700,1695183700
> 
> +        DD      1986661051,1986661051,1986661051,1986661051
> 
> +        DD      1986661051,1986661051,1986661051,1986661051
> 
> +        DD      2177026350,2177026350,2177026350,2177026350
> 
> +        DD      2177026350,2177026350,2177026350,2177026350
> 
> +        DD      2456956037,2456956037,2456956037,2456956037
> 
> +        DD      2456956037,2456956037,2456956037,2456956037
> 
> +        DD      2730485921,2730485921,2730485921,2730485921
> 
> +        DD      2730485921,2730485921,2730485921,2730485921
> 
> +        DD      2820302411,2820302411,2820302411,2820302411
> 
> +        DD      2820302411,2820302411,2820302411,2820302411
> 
> +        DD      3259730800,3259730800,3259730800,3259730800
> 
> +        DD      3259730800,3259730800,3259730800,3259730800
> 
> +        DD      3345764771,3345764771,3345764771,3345764771
> 
> +        DD      3345764771,3345764771,3345764771,3345764771
> 
> +        DD      3516065817,3516065817,3516065817,3516065817
> 
> +        DD      3516065817,3516065817,3516065817,3516065817
> 
> +        DD      3600352804,3600352804,3600352804,3600352804
> 
> +        DD      3600352804,3600352804,3600352804,3600352804
> 
> +        DD      4094571909,4094571909,4094571909,4094571909
> 
> +        DD      4094571909,4094571909,4094571909,4094571909
> 
> +        DD      275423344,275423344,275423344,275423344
> 
> +        DD      275423344,275423344,275423344,275423344
> 
> +        DD      430227734,430227734,430227734,430227734
> 
> +        DD      430227734,430227734,430227734,430227734
> 
> +        DD      506948616,506948616,506948616,506948616
> 
> +        DD      506948616,506948616,506948616,506948616
> 
> +        DD      659060556,659060556,659060556,659060556
> 
> +        DD      659060556,659060556,659060556,659060556
> 
> +        DD      883997877,883997877,883997877,883997877
> 
> +        DD      883997877,883997877,883997877,883997877
> 
> +        DD      958139571,958139571,958139571,958139571
> 
> +        DD      958139571,958139571,958139571,958139571
> 
> +        DD      1322822218,1322822218,1322822218,1322822218
> 
> +        DD      1322822218,1322822218,1322822218,1322822218
> 
> +        DD      1537002063,1537002063,1537002063,1537002063
> 
> +        DD      1537002063,1537002063,1537002063,1537002063
> 
> +        DD      1747873779,1747873779,1747873779,1747873779
> 
> +        DD      1747873779,1747873779,1747873779,1747873779
> 
> +        DD      1955562222,1955562222,1955562222,1955562222
> 
> +        DD      1955562222,1955562222,1955562222,1955562222
> 
> +        DD      2024104815,2024104815,2024104815,2024104815
> 
> +        DD      2024104815,2024104815,2024104815,2024104815
> 
> +        DD      2227730452,2227730452,2227730452,2227730452
> 
> +        DD      2227730452,2227730452,2227730452,2227730452
> 
> +        DD      2361852424,2361852424,2361852424,2361852424
> 
> +        DD      2361852424,2361852424,2361852424,2361852424
> 
> +        DD      2428436474,2428436474,2428436474,2428436474
> 
> +        DD      2428436474,2428436474,2428436474,2428436474
> 
> +        DD      2756734187,2756734187,2756734187,2756734187
> 
> +        DD      2756734187,2756734187,2756734187,2756734187
> 
> +        DD      3204031479,3204031479,3204031479,3204031479
> 
> +        DD      3204031479,3204031479,3204031479,3204031479
> 
> +        DD      3329325298,3329325298,3329325298,3329325298
> 
> +        DD      3329325298,3329325298,3329325298,3329325298
> 
> +$L$pbswap:
> 
> +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> 
> +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> 
> +K256_shaext:
> 
> +        DD      0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
> 
> +        DD      0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
> 
> +        DD      0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
> 
> +        DD      0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
> 
> +        DD      0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
> 
> +        DD      0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
> 
> +        DD      0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
> 
> +        DD      0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
> 
> +        DD      0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
> 
> +        DD      0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
> 
> +        DD      0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
> 
> +        DD      0xd192e819,0xd6990624,0xf40e3585,0x106aa070
> 
> +        DD      0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
> 
> +        DD      0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
> 
> +        DD      0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
> 
> +        DD      0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
> 
> +DB      83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111
> 
> +DB      99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114
> 
> +DB      32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71
> 
> +DB      65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112
> 
> +DB      101,110,115,115,108,46,111,114,103,62,0
> 
> +EXTERN  __imp_RtlVirtualUnwind
> 
> +
> 
> +ALIGN   16
> 
> +se_handler:
> 
> +        push    rsi
> 
> +        push    rdi
> 
> +        push    rbx
> 
> +        push    rbp
> 
> +        push    r12
> 
> +        push    r13
> 
> +        push    r14
> 
> +        push    r15
> 
> +        pushfq
> 
> +        sub     rsp,64
> 
> +
> 
> +        mov     rax,QWORD[120+r8]
> 
> +        mov     rbx,QWORD[248+r8]
> 
> +
> 
> +        mov     rsi,QWORD[8+r9]
> 
> +        mov     r11,QWORD[56+r9]
> 
> +
> 
> +        mov     r10d,DWORD[r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$in_prologue
> 
> +
> 
> +        mov     rax,QWORD[152+r8]
> 
> +
> 
> +        mov     r10d,DWORD[4+r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jae     NEAR $L$in_prologue
> 
> +
> 
> +        mov     rax,QWORD[272+rax]
> 
> +
> 
> +        mov     rbx,QWORD[((-8))+rax]
> 
> +        mov     rbp,QWORD[((-16))+rax]
> 
> +        mov     QWORD[144+r8],rbx
> 
> +        mov     QWORD[160+r8],rbp
> 
> +
> 
> +        lea     rsi,[((-24-160))+rax]
> 
> +        lea     rdi,[512+r8]
> 
> +        mov     ecx,20
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +$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[40+r9]
> 
> +        mov     rsi,r8
> 
> +        mov     ecx,154
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +        mov     rsi,r9
> 
> +        xor     rcx,rcx
> 
> +        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
> 
> +        popfq
> 
> +        pop     r15
> 
> +        pop     r14
> 
> +        pop     r13
> 
> +        pop     r12
> 
> +        pop     rbp
> 
> +        pop     rbx
> 
> +        pop     rdi
> 
> +        pop     rsi
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +section .pdata rdata align=4
> 
> +ALIGN   4
> 
> +        DD      $L$SEH_begin_sha256_multi_block wrt ..imagebase
> 
> +        DD      $L$SEH_end_sha256_multi_block wrt ..imagebase
> 
> +        DD      $L$SEH_info_sha256_multi_block wrt ..imagebase
> 
> +        DD      $L$SEH_begin_sha256_multi_block_shaext wrt ..imagebase
> 
> +        DD      $L$SEH_end_sha256_multi_block_shaext wrt ..imagebase
> 
> +        DD      $L$SEH_info_sha256_multi_block_shaext wrt ..imagebase
> 
> +section .xdata rdata align=8
> 
> +ALIGN   8
> 
> +$L$SEH_info_sha256_multi_block:
> 
> +DB      9,0,0,0
> 
> +        DD      se_handler wrt ..imagebase
> 
> +        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
> 
> +$L$SEH_info_sha256_multi_block_shaext:
> 
> +DB      9,0,0,0
> 
> +        DD      se_handler wrt ..imagebase
> 
> +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
> wrt ..imagebase
> 
> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
> b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
> new file mode 100644
> index 0000000000..70e49862a3
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
> @@ -0,0 +1,3313 @@
> +; WARNING: do not edit!
> 
> +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
> 
> +;
> 
> +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.
> 
> +;
> 
> +; Licensed under the OpenSSL license (the "License").  You may not use
> 
> +; this file except in compliance with the License.  You can obtain a copy
> 
> +; in the file LICENSE in the source distribution or at
> 
> +; https://www.openssl.org/source/license.html
> 
> +
> 
> +default rel
> 
> +%define XMMWORD
> 
> +%define YMMWORD
> 
> +%define ZMMWORD
> 
> +section .text code align=64
> 
> +
> 
> +
> 
> +EXTERN  OPENSSL_ia32cap_P
> 
> +global  sha256_block_data_order
> 
> +
> 
> +ALIGN   16
> 
> +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:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +
> 
> +
> 
> +
> 
> +        lea     r11,[OPENSSL_ia32cap_P]
> 
> +        mov     r9d,DWORD[r11]
> 
> +        mov     r10d,DWORD[4+r11]
> 
> +        mov     r11d,DWORD[8+r11]
> 
> +        test    r11d,536870912
> 
> +        jnz     NEAR _shaext_shortcut
> 
> +        test    r10d,512
> 
> +        jnz     NEAR $L$ssse3_shortcut
> 
> +        mov     rax,rsp
> 
> +
> 
> +        push    rbx
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        push    r12
> 
> +
> 
> +        push    r13
> 
> +
> 
> +        push    r14
> 
> +
> 
> +        push    r15
> 
> +
> 
> +        shl     rdx,4
> 
> +        sub     rsp,16*4+4*8
> 
> +        lea     rdx,[rdx*4+rsi]
> 
> +        and     rsp,-64
> 
> +        mov     QWORD[((64+0))+rsp],rdi
> 
> +        mov     QWORD[((64+8))+rsp],rsi
> 
> +        mov     QWORD[((64+16))+rsp],rdx
> 
> +        mov     QWORD[88+rsp],rax
> 
> +
> 
> +$L$prologue:
> 
> +
> 
> +        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:
> 
> +        mov     edi,ebx
> 
> +        lea     rbp,[K256]
> 
> +        xor     edi,ecx
> 
> +        mov     r12d,DWORD[rsi]
> 
> +        mov     r13d,r8d
> 
> +        mov     r14d,eax
> 
> +        bswap   r12d
> 
> +        ror     r13d,14
> 
> +        mov     r15d,r9d
> 
> +
> 
> +        xor     r13d,r8d
> 
> +        ror     r14d,9
> 
> +        xor     r15d,r10d
> 
> +
> 
> +        mov     DWORD[rsp],r12d
> 
> +        xor     r14d,eax
> 
> +        and     r15d,r8d
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,r11d
> 
> +        xor     r15d,r10d
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,r8d
> 
> +        add     r12d,r15d
> 
> +
> 
> +        mov     r15d,eax
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,eax
> 
> +
> 
> +        xor     r15d,ebx
> 
> +        ror     r13d,6
> 
> +        mov     r11d,ebx
> 
> +
> 
> +        and     edi,r15d
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     r11d,edi
> 
> +        add     edx,r12d
> 
> +        add     r11d,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        add     r11d,r14d
> 
> +        mov     r12d,DWORD[4+rsi]
> 
> +        mov     r13d,edx
> 
> +        mov     r14d,r11d
> 
> +        bswap   r12d
> 
> +        ror     r13d,14
> 
> +        mov     edi,r8d
> 
> +
> 
> +        xor     r13d,edx
> 
> +        ror     r14d,9
> 
> +        xor     edi,r9d
> 
> +
> 
> +        mov     DWORD[4+rsp],r12d
> 
> +        xor     r14d,r11d
> 
> +        and     edi,edx
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,r10d
> 
> +        xor     edi,r9d
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,edx
> 
> +        add     r12d,edi
> 
> +
> 
> +        mov     edi,r11d
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,r11d
> 
> +
> 
> +        xor     edi,eax
> 
> +        ror     r13d,6
> 
> +        mov     r10d,eax
> 
> +
> 
> +        and     r15d,edi
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     r10d,r15d
> 
> +        add     ecx,r12d
> 
> +        add     r10d,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        add     r10d,r14d
> 
> +        mov     r12d,DWORD[8+rsi]
> 
> +        mov     r13d,ecx
> 
> +        mov     r14d,r10d
> 
> +        bswap   r12d
> 
> +        ror     r13d,14
> 
> +        mov     r15d,edx
> 
> +
> 
> +        xor     r13d,ecx
> 
> +        ror     r14d,9
> 
> +        xor     r15d,r8d
> 
> +
> 
> +        mov     DWORD[8+rsp],r12d
> 
> +        xor     r14d,r10d
> 
> +        and     r15d,ecx
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,r9d
> 
> +        xor     r15d,r8d
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,ecx
> 
> +        add     r12d,r15d
> 
> +
> 
> +        mov     r15d,r10d
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,r10d
> 
> +
> 
> +        xor     r15d,r11d
> 
> +        ror     r13d,6
> 
> +        mov     r9d,r11d
> 
> +
> 
> +        and     edi,r15d
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     r9d,edi
> 
> +        add     ebx,r12d
> 
> +        add     r9d,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        add     r9d,r14d
> 
> +        mov     r12d,DWORD[12+rsi]
> 
> +        mov     r13d,ebx
> 
> +        mov     r14d,r9d
> 
> +        bswap   r12d
> 
> +        ror     r13d,14
> 
> +        mov     edi,ecx
> 
> +
> 
> +        xor     r13d,ebx
> 
> +        ror     r14d,9
> 
> +        xor     edi,edx
> 
> +
> 
> +        mov     DWORD[12+rsp],r12d
> 
> +        xor     r14d,r9d
> 
> +        and     edi,ebx
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,r8d
> 
> +        xor     edi,edx
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,ebx
> 
> +        add     r12d,edi
> 
> +
> 
> +        mov     edi,r9d
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,r9d
> 
> +
> 
> +        xor     edi,r10d
> 
> +        ror     r13d,6
> 
> +        mov     r8d,r10d
> 
> +
> 
> +        and     r15d,edi
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     r8d,r15d
> 
> +        add     eax,r12d
> 
> +        add     r8d,r12d
> 
> +
> 
> +        lea     rbp,[20+rbp]
> 
> +        add     r8d,r14d
> 
> +        mov     r12d,DWORD[16+rsi]
> 
> +        mov     r13d,eax
> 
> +        mov     r14d,r8d
> 
> +        bswap   r12d
> 
> +        ror     r13d,14
> 
> +        mov     r15d,ebx
> 
> +
> 
> +        xor     r13d,eax
> 
> +        ror     r14d,9
> 
> +        xor     r15d,ecx
> 
> +
> 
> +        mov     DWORD[16+rsp],r12d
> 
> +        xor     r14d,r8d
> 
> +        and     r15d,eax
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,edx
> 
> +        xor     r15d,ecx
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,eax
> 
> +        add     r12d,r15d
> 
> +
> 
> +        mov     r15d,r8d
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,r8d
> 
> +
> 
> +        xor     r15d,r9d
> 
> +        ror     r13d,6
> 
> +        mov     edx,r9d
> 
> +
> 
> +        and     edi,r15d
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     edx,edi
> 
> +        add     r11d,r12d
> 
> +        add     edx,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        add     edx,r14d
> 
> +        mov     r12d,DWORD[20+rsi]
> 
> +        mov     r13d,r11d
> 
> +        mov     r14d,edx
> 
> +        bswap   r12d
> 
> +        ror     r13d,14
> 
> +        mov     edi,eax
> 
> +
> 
> +        xor     r13d,r11d
> 
> +        ror     r14d,9
> 
> +        xor     edi,ebx
> 
> +
> 
> +        mov     DWORD[20+rsp],r12d
> 
> +        xor     r14d,edx
> 
> +        and     edi,r11d
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,ecx
> 
> +        xor     edi,ebx
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,r11d
> 
> +        add     r12d,edi
> 
> +
> 
> +        mov     edi,edx
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,edx
> 
> +
> 
> +        xor     edi,r8d
> 
> +        ror     r13d,6
> 
> +        mov     ecx,r8d
> 
> +
> 
> +        and     r15d,edi
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     ecx,r15d
> 
> +        add     r10d,r12d
> 
> +        add     ecx,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        add     ecx,r14d
> 
> +        mov     r12d,DWORD[24+rsi]
> 
> +        mov     r13d,r10d
> 
> +        mov     r14d,ecx
> 
> +        bswap   r12d
> 
> +        ror     r13d,14
> 
> +        mov     r15d,r11d
> 
> +
> 
> +        xor     r13d,r10d
> 
> +        ror     r14d,9
> 
> +        xor     r15d,eax
> 
> +
> 
> +        mov     DWORD[24+rsp],r12d
> 
> +        xor     r14d,ecx
> 
> +        and     r15d,r10d
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,ebx
> 
> +        xor     r15d,eax
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,r10d
> 
> +        add     r12d,r15d
> 
> +
> 
> +        mov     r15d,ecx
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,ecx
> 
> +
> 
> +        xor     r15d,edx
> 
> +        ror     r13d,6
> 
> +        mov     ebx,edx
> 
> +
> 
> +        and     edi,r15d
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     ebx,edi
> 
> +        add     r9d,r12d
> 
> +        add     ebx,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        add     ebx,r14d
> 
> +        mov     r12d,DWORD[28+rsi]
> 
> +        mov     r13d,r9d
> 
> +        mov     r14d,ebx
> 
> +        bswap   r12d
> 
> +        ror     r13d,14
> 
> +        mov     edi,r10d
> 
> +
> 
> +        xor     r13d,r9d
> 
> +        ror     r14d,9
> 
> +        xor     edi,r11d
> 
> +
> 
> +        mov     DWORD[28+rsp],r12d
> 
> +        xor     r14d,ebx
> 
> +        and     edi,r9d
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,eax
> 
> +        xor     edi,r11d
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,r9d
> 
> +        add     r12d,edi
> 
> +
> 
> +        mov     edi,ebx
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,ebx
> 
> +
> 
> +        xor     edi,ecx
> 
> +        ror     r13d,6
> 
> +        mov     eax,ecx
> 
> +
> 
> +        and     r15d,edi
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     eax,r15d
> 
> +        add     r8d,r12d
> 
> +        add     eax,r12d
> 
> +
> 
> +        lea     rbp,[20+rbp]
> 
> +        add     eax,r14d
> 
> +        mov     r12d,DWORD[32+rsi]
> 
> +        mov     r13d,r8d
> 
> +        mov     r14d,eax
> 
> +        bswap   r12d
> 
> +        ror     r13d,14
> 
> +        mov     r15d,r9d
> 
> +
> 
> +        xor     r13d,r8d
> 
> +        ror     r14d,9
> 
> +        xor     r15d,r10d
> 
> +
> 
> +        mov     DWORD[32+rsp],r12d
> 
> +        xor     r14d,eax
> 
> +        and     r15d,r8d
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,r11d
> 
> +        xor     r15d,r10d
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,r8d
> 
> +        add     r12d,r15d
> 
> +
> 
> +        mov     r15d,eax
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,eax
> 
> +
> 
> +        xor     r15d,ebx
> 
> +        ror     r13d,6
> 
> +        mov     r11d,ebx
> 
> +
> 
> +        and     edi,r15d
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     r11d,edi
> 
> +        add     edx,r12d
> 
> +        add     r11d,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        add     r11d,r14d
> 
> +        mov     r12d,DWORD[36+rsi]
> 
> +        mov     r13d,edx
> 
> +        mov     r14d,r11d
> 
> +        bswap   r12d
> 
> +        ror     r13d,14
> 
> +        mov     edi,r8d
> 
> +
> 
> +        xor     r13d,edx
> 
> +        ror     r14d,9
> 
> +        xor     edi,r9d
> 
> +
> 
> +        mov     DWORD[36+rsp],r12d
> 
> +        xor     r14d,r11d
> 
> +        and     edi,edx
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,r10d
> 
> +        xor     edi,r9d
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,edx
> 
> +        add     r12d,edi
> 
> +
> 
> +        mov     edi,r11d
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,r11d
> 
> +
> 
> +        xor     edi,eax
> 
> +        ror     r13d,6
> 
> +        mov     r10d,eax
> 
> +
> 
> +        and     r15d,edi
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     r10d,r15d
> 
> +        add     ecx,r12d
> 
> +        add     r10d,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        add     r10d,r14d
> 
> +        mov     r12d,DWORD[40+rsi]
> 
> +        mov     r13d,ecx
> 
> +        mov     r14d,r10d
> 
> +        bswap   r12d
> 
> +        ror     r13d,14
> 
> +        mov     r15d,edx
> 
> +
> 
> +        xor     r13d,ecx
> 
> +        ror     r14d,9
> 
> +        xor     r15d,r8d
> 
> +
> 
> +        mov     DWORD[40+rsp],r12d
> 
> +        xor     r14d,r10d
> 
> +        and     r15d,ecx
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,r9d
> 
> +        xor     r15d,r8d
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,ecx
> 
> +        add     r12d,r15d
> 
> +
> 
> +        mov     r15d,r10d
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,r10d
> 
> +
> 
> +        xor     r15d,r11d
> 
> +        ror     r13d,6
> 
> +        mov     r9d,r11d
> 
> +
> 
> +        and     edi,r15d
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     r9d,edi
> 
> +        add     ebx,r12d
> 
> +        add     r9d,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        add     r9d,r14d
> 
> +        mov     r12d,DWORD[44+rsi]
> 
> +        mov     r13d,ebx
> 
> +        mov     r14d,r9d
> 
> +        bswap   r12d
> 
> +        ror     r13d,14
> 
> +        mov     edi,ecx
> 
> +
> 
> +        xor     r13d,ebx
> 
> +        ror     r14d,9
> 
> +        xor     edi,edx
> 
> +
> 
> +        mov     DWORD[44+rsp],r12d
> 
> +        xor     r14d,r9d
> 
> +        and     edi,ebx
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,r8d
> 
> +        xor     edi,edx
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,ebx
> 
> +        add     r12d,edi
> 
> +
> 
> +        mov     edi,r9d
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,r9d
> 
> +
> 
> +        xor     edi,r10d
> 
> +        ror     r13d,6
> 
> +        mov     r8d,r10d
> 
> +
> 
> +        and     r15d,edi
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     r8d,r15d
> 
> +        add     eax,r12d
> 
> +        add     r8d,r12d
> 
> +
> 
> +        lea     rbp,[20+rbp]
> 
> +        add     r8d,r14d
> 
> +        mov     r12d,DWORD[48+rsi]
> 
> +        mov     r13d,eax
> 
> +        mov     r14d,r8d
> 
> +        bswap   r12d
> 
> +        ror     r13d,14
> 
> +        mov     r15d,ebx
> 
> +
> 
> +        xor     r13d,eax
> 
> +        ror     r14d,9
> 
> +        xor     r15d,ecx
> 
> +
> 
> +        mov     DWORD[48+rsp],r12d
> 
> +        xor     r14d,r8d
> 
> +        and     r15d,eax
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,edx
> 
> +        xor     r15d,ecx
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,eax
> 
> +        add     r12d,r15d
> 
> +
> 
> +        mov     r15d,r8d
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,r8d
> 
> +
> 
> +        xor     r15d,r9d
> 
> +        ror     r13d,6
> 
> +        mov     edx,r9d
> 
> +
> 
> +        and     edi,r15d
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     edx,edi
> 
> +        add     r11d,r12d
> 
> +        add     edx,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        add     edx,r14d
> 
> +        mov     r12d,DWORD[52+rsi]
> 
> +        mov     r13d,r11d
> 
> +        mov     r14d,edx
> 
> +        bswap   r12d
> 
> +        ror     r13d,14
> 
> +        mov     edi,eax
> 
> +
> 
> +        xor     r13d,r11d
> 
> +        ror     r14d,9
> 
> +        xor     edi,ebx
> 
> +
> 
> +        mov     DWORD[52+rsp],r12d
> 
> +        xor     r14d,edx
> 
> +        and     edi,r11d
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,ecx
> 
> +        xor     edi,ebx
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,r11d
> 
> +        add     r12d,edi
> 
> +
> 
> +        mov     edi,edx
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,edx
> 
> +
> 
> +        xor     edi,r8d
> 
> +        ror     r13d,6
> 
> +        mov     ecx,r8d
> 
> +
> 
> +        and     r15d,edi
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     ecx,r15d
> 
> +        add     r10d,r12d
> 
> +        add     ecx,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        add     ecx,r14d
> 
> +        mov     r12d,DWORD[56+rsi]
> 
> +        mov     r13d,r10d
> 
> +        mov     r14d,ecx
> 
> +        bswap   r12d
> 
> +        ror     r13d,14
> 
> +        mov     r15d,r11d
> 
> +
> 
> +        xor     r13d,r10d
> 
> +        ror     r14d,9
> 
> +        xor     r15d,eax
> 
> +
> 
> +        mov     DWORD[56+rsp],r12d
> 
> +        xor     r14d,ecx
> 
> +        and     r15d,r10d
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,ebx
> 
> +        xor     r15d,eax
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,r10d
> 
> +        add     r12d,r15d
> 
> +
> 
> +        mov     r15d,ecx
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,ecx
> 
> +
> 
> +        xor     r15d,edx
> 
> +        ror     r13d,6
> 
> +        mov     ebx,edx
> 
> +
> 
> +        and     edi,r15d
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     ebx,edi
> 
> +        add     r9d,r12d
> 
> +        add     ebx,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        add     ebx,r14d
> 
> +        mov     r12d,DWORD[60+rsi]
> 
> +        mov     r13d,r9d
> 
> +        mov     r14d,ebx
> 
> +        bswap   r12d
> 
> +        ror     r13d,14
> 
> +        mov     edi,r10d
> 
> +
> 
> +        xor     r13d,r9d
> 
> +        ror     r14d,9
> 
> +        xor     edi,r11d
> 
> +
> 
> +        mov     DWORD[60+rsp],r12d
> 
> +        xor     r14d,ebx
> 
> +        and     edi,r9d
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,eax
> 
> +        xor     edi,r11d
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,r9d
> 
> +        add     r12d,edi
> 
> +
> 
> +        mov     edi,ebx
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,ebx
> 
> +
> 
> +        xor     edi,ecx
> 
> +        ror     r13d,6
> 
> +        mov     eax,ecx
> 
> +
> 
> +        and     r15d,edi
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     eax,r15d
> 
> +        add     r8d,r12d
> 
> +        add     eax,r12d
> 
> +
> 
> +        lea     rbp,[20+rbp]
> 
> +        jmp     NEAR $L$rounds_16_xx
> 
> +ALIGN   16
> 
> +$L$rounds_16_xx:
> 
> +        mov     r13d,DWORD[4+rsp]
> 
> +        mov     r15d,DWORD[56+rsp]
> 
> +
> 
> +        mov     r12d,r13d
> 
> +        ror     r13d,11
> 
> +        add     eax,r14d
> 
> +        mov     r14d,r15d
> 
> +        ror     r15d,2
> 
> +
> 
> +        xor     r13d,r12d
> 
> +        shr     r12d,3
> 
> +        ror     r13d,7
> 
> +        xor     r15d,r14d
> 
> +        shr     r14d,10
> 
> +
> 
> +        ror     r15d,17
> 
> +        xor     r12d,r13d
> 
> +        xor     r15d,r14d
> 
> +        add     r12d,DWORD[36+rsp]
> 
> +
> 
> +        add     r12d,DWORD[rsp]
> 
> +        mov     r13d,r8d
> 
> +        add     r12d,r15d
> 
> +        mov     r14d,eax
> 
> +        ror     r13d,14
> 
> +        mov     r15d,r9d
> 
> +
> 
> +        xor     r13d,r8d
> 
> +        ror     r14d,9
> 
> +        xor     r15d,r10d
> 
> +
> 
> +        mov     DWORD[rsp],r12d
> 
> +        xor     r14d,eax
> 
> +        and     r15d,r8d
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,r11d
> 
> +        xor     r15d,r10d
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,r8d
> 
> +        add     r12d,r15d
> 
> +
> 
> +        mov     r15d,eax
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,eax
> 
> +
> 
> +        xor     r15d,ebx
> 
> +        ror     r13d,6
> 
> +        mov     r11d,ebx
> 
> +
> 
> +        and     edi,r15d
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     r11d,edi
> 
> +        add     edx,r12d
> 
> +        add     r11d,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        mov     r13d,DWORD[8+rsp]
> 
> +        mov     edi,DWORD[60+rsp]
> 
> +
> 
> +        mov     r12d,r13d
> 
> +        ror     r13d,11
> 
> +        add     r11d,r14d
> 
> +        mov     r14d,edi
> 
> +        ror     edi,2
> 
> +
> 
> +        xor     r13d,r12d
> 
> +        shr     r12d,3
> 
> +        ror     r13d,7
> 
> +        xor     edi,r14d
> 
> +        shr     r14d,10
> 
> +
> 
> +        ror     edi,17
> 
> +        xor     r12d,r13d
> 
> +        xor     edi,r14d
> 
> +        add     r12d,DWORD[40+rsp]
> 
> +
> 
> +        add     r12d,DWORD[4+rsp]
> 
> +        mov     r13d,edx
> 
> +        add     r12d,edi
> 
> +        mov     r14d,r11d
> 
> +        ror     r13d,14
> 
> +        mov     edi,r8d
> 
> +
> 
> +        xor     r13d,edx
> 
> +        ror     r14d,9
> 
> +        xor     edi,r9d
> 
> +
> 
> +        mov     DWORD[4+rsp],r12d
> 
> +        xor     r14d,r11d
> 
> +        and     edi,edx
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,r10d
> 
> +        xor     edi,r9d
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,edx
> 
> +        add     r12d,edi
> 
> +
> 
> +        mov     edi,r11d
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,r11d
> 
> +
> 
> +        xor     edi,eax
> 
> +        ror     r13d,6
> 
> +        mov     r10d,eax
> 
> +
> 
> +        and     r15d,edi
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     r10d,r15d
> 
> +        add     ecx,r12d
> 
> +        add     r10d,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        mov     r13d,DWORD[12+rsp]
> 
> +        mov     r15d,DWORD[rsp]
> 
> +
> 
> +        mov     r12d,r13d
> 
> +        ror     r13d,11
> 
> +        add     r10d,r14d
> 
> +        mov     r14d,r15d
> 
> +        ror     r15d,2
> 
> +
> 
> +        xor     r13d,r12d
> 
> +        shr     r12d,3
> 
> +        ror     r13d,7
> 
> +        xor     r15d,r14d
> 
> +        shr     r14d,10
> 
> +
> 
> +        ror     r15d,17
> 
> +        xor     r12d,r13d
> 
> +        xor     r15d,r14d
> 
> +        add     r12d,DWORD[44+rsp]
> 
> +
> 
> +        add     r12d,DWORD[8+rsp]
> 
> +        mov     r13d,ecx
> 
> +        add     r12d,r15d
> 
> +        mov     r14d,r10d
> 
> +        ror     r13d,14
> 
> +        mov     r15d,edx
> 
> +
> 
> +        xor     r13d,ecx
> 
> +        ror     r14d,9
> 
> +        xor     r15d,r8d
> 
> +
> 
> +        mov     DWORD[8+rsp],r12d
> 
> +        xor     r14d,r10d
> 
> +        and     r15d,ecx
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,r9d
> 
> +        xor     r15d,r8d
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,ecx
> 
> +        add     r12d,r15d
> 
> +
> 
> +        mov     r15d,r10d
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,r10d
> 
> +
> 
> +        xor     r15d,r11d
> 
> +        ror     r13d,6
> 
> +        mov     r9d,r11d
> 
> +
> 
> +        and     edi,r15d
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     r9d,edi
> 
> +        add     ebx,r12d
> 
> +        add     r9d,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        mov     r13d,DWORD[16+rsp]
> 
> +        mov     edi,DWORD[4+rsp]
> 
> +
> 
> +        mov     r12d,r13d
> 
> +        ror     r13d,11
> 
> +        add     r9d,r14d
> 
> +        mov     r14d,edi
> 
> +        ror     edi,2
> 
> +
> 
> +        xor     r13d,r12d
> 
> +        shr     r12d,3
> 
> +        ror     r13d,7
> 
> +        xor     edi,r14d
> 
> +        shr     r14d,10
> 
> +
> 
> +        ror     edi,17
> 
> +        xor     r12d,r13d
> 
> +        xor     edi,r14d
> 
> +        add     r12d,DWORD[48+rsp]
> 
> +
> 
> +        add     r12d,DWORD[12+rsp]
> 
> +        mov     r13d,ebx
> 
> +        add     r12d,edi
> 
> +        mov     r14d,r9d
> 
> +        ror     r13d,14
> 
> +        mov     edi,ecx
> 
> +
> 
> +        xor     r13d,ebx
> 
> +        ror     r14d,9
> 
> +        xor     edi,edx
> 
> +
> 
> +        mov     DWORD[12+rsp],r12d
> 
> +        xor     r14d,r9d
> 
> +        and     edi,ebx
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,r8d
> 
> +        xor     edi,edx
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,ebx
> 
> +        add     r12d,edi
> 
> +
> 
> +        mov     edi,r9d
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,r9d
> 
> +
> 
> +        xor     edi,r10d
> 
> +        ror     r13d,6
> 
> +        mov     r8d,r10d
> 
> +
> 
> +        and     r15d,edi
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     r8d,r15d
> 
> +        add     eax,r12d
> 
> +        add     r8d,r12d
> 
> +
> 
> +        lea     rbp,[20+rbp]
> 
> +        mov     r13d,DWORD[20+rsp]
> 
> +        mov     r15d,DWORD[8+rsp]
> 
> +
> 
> +        mov     r12d,r13d
> 
> +        ror     r13d,11
> 
> +        add     r8d,r14d
> 
> +        mov     r14d,r15d
> 
> +        ror     r15d,2
> 
> +
> 
> +        xor     r13d,r12d
> 
> +        shr     r12d,3
> 
> +        ror     r13d,7
> 
> +        xor     r15d,r14d
> 
> +        shr     r14d,10
> 
> +
> 
> +        ror     r15d,17
> 
> +        xor     r12d,r13d
> 
> +        xor     r15d,r14d
> 
> +        add     r12d,DWORD[52+rsp]
> 
> +
> 
> +        add     r12d,DWORD[16+rsp]
> 
> +        mov     r13d,eax
> 
> +        add     r12d,r15d
> 
> +        mov     r14d,r8d
> 
> +        ror     r13d,14
> 
> +        mov     r15d,ebx
> 
> +
> 
> +        xor     r13d,eax
> 
> +        ror     r14d,9
> 
> +        xor     r15d,ecx
> 
> +
> 
> +        mov     DWORD[16+rsp],r12d
> 
> +        xor     r14d,r8d
> 
> +        and     r15d,eax
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,edx
> 
> +        xor     r15d,ecx
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,eax
> 
> +        add     r12d,r15d
> 
> +
> 
> +        mov     r15d,r8d
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,r8d
> 
> +
> 
> +        xor     r15d,r9d
> 
> +        ror     r13d,6
> 
> +        mov     edx,r9d
> 
> +
> 
> +        and     edi,r15d
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     edx,edi
> 
> +        add     r11d,r12d
> 
> +        add     edx,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        mov     r13d,DWORD[24+rsp]
> 
> +        mov     edi,DWORD[12+rsp]
> 
> +
> 
> +        mov     r12d,r13d
> 
> +        ror     r13d,11
> 
> +        add     edx,r14d
> 
> +        mov     r14d,edi
> 
> +        ror     edi,2
> 
> +
> 
> +        xor     r13d,r12d
> 
> +        shr     r12d,3
> 
> +        ror     r13d,7
> 
> +        xor     edi,r14d
> 
> +        shr     r14d,10
> 
> +
> 
> +        ror     edi,17
> 
> +        xor     r12d,r13d
> 
> +        xor     edi,r14d
> 
> +        add     r12d,DWORD[56+rsp]
> 
> +
> 
> +        add     r12d,DWORD[20+rsp]
> 
> +        mov     r13d,r11d
> 
> +        add     r12d,edi
> 
> +        mov     r14d,edx
> 
> +        ror     r13d,14
> 
> +        mov     edi,eax
> 
> +
> 
> +        xor     r13d,r11d
> 
> +        ror     r14d,9
> 
> +        xor     edi,ebx
> 
> +
> 
> +        mov     DWORD[20+rsp],r12d
> 
> +        xor     r14d,edx
> 
> +        and     edi,r11d
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,ecx
> 
> +        xor     edi,ebx
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,r11d
> 
> +        add     r12d,edi
> 
> +
> 
> +        mov     edi,edx
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,edx
> 
> +
> 
> +        xor     edi,r8d
> 
> +        ror     r13d,6
> 
> +        mov     ecx,r8d
> 
> +
> 
> +        and     r15d,edi
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     ecx,r15d
> 
> +        add     r10d,r12d
> 
> +        add     ecx,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        mov     r13d,DWORD[28+rsp]
> 
> +        mov     r15d,DWORD[16+rsp]
> 
> +
> 
> +        mov     r12d,r13d
> 
> +        ror     r13d,11
> 
> +        add     ecx,r14d
> 
> +        mov     r14d,r15d
> 
> +        ror     r15d,2
> 
> +
> 
> +        xor     r13d,r12d
> 
> +        shr     r12d,3
> 
> +        ror     r13d,7
> 
> +        xor     r15d,r14d
> 
> +        shr     r14d,10
> 
> +
> 
> +        ror     r15d,17
> 
> +        xor     r12d,r13d
> 
> +        xor     r15d,r14d
> 
> +        add     r12d,DWORD[60+rsp]
> 
> +
> 
> +        add     r12d,DWORD[24+rsp]
> 
> +        mov     r13d,r10d
> 
> +        add     r12d,r15d
> 
> +        mov     r14d,ecx
> 
> +        ror     r13d,14
> 
> +        mov     r15d,r11d
> 
> +
> 
> +        xor     r13d,r10d
> 
> +        ror     r14d,9
> 
> +        xor     r15d,eax
> 
> +
> 
> +        mov     DWORD[24+rsp],r12d
> 
> +        xor     r14d,ecx
> 
> +        and     r15d,r10d
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,ebx
> 
> +        xor     r15d,eax
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,r10d
> 
> +        add     r12d,r15d
> 
> +
> 
> +        mov     r15d,ecx
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,ecx
> 
> +
> 
> +        xor     r15d,edx
> 
> +        ror     r13d,6
> 
> +        mov     ebx,edx
> 
> +
> 
> +        and     edi,r15d
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     ebx,edi
> 
> +        add     r9d,r12d
> 
> +        add     ebx,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        mov     r13d,DWORD[32+rsp]
> 
> +        mov     edi,DWORD[20+rsp]
> 
> +
> 
> +        mov     r12d,r13d
> 
> +        ror     r13d,11
> 
> +        add     ebx,r14d
> 
> +        mov     r14d,edi
> 
> +        ror     edi,2
> 
> +
> 
> +        xor     r13d,r12d
> 
> +        shr     r12d,3
> 
> +        ror     r13d,7
> 
> +        xor     edi,r14d
> 
> +        shr     r14d,10
> 
> +
> 
> +        ror     edi,17
> 
> +        xor     r12d,r13d
> 
> +        xor     edi,r14d
> 
> +        add     r12d,DWORD[rsp]
> 
> +
> 
> +        add     r12d,DWORD[28+rsp]
> 
> +        mov     r13d,r9d
> 
> +        add     r12d,edi
> 
> +        mov     r14d,ebx
> 
> +        ror     r13d,14
> 
> +        mov     edi,r10d
> 
> +
> 
> +        xor     r13d,r9d
> 
> +        ror     r14d,9
> 
> +        xor     edi,r11d
> 
> +
> 
> +        mov     DWORD[28+rsp],r12d
> 
> +        xor     r14d,ebx
> 
> +        and     edi,r9d
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,eax
> 
> +        xor     edi,r11d
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,r9d
> 
> +        add     r12d,edi
> 
> +
> 
> +        mov     edi,ebx
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,ebx
> 
> +
> 
> +        xor     edi,ecx
> 
> +        ror     r13d,6
> 
> +        mov     eax,ecx
> 
> +
> 
> +        and     r15d,edi
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     eax,r15d
> 
> +        add     r8d,r12d
> 
> +        add     eax,r12d
> 
> +
> 
> +        lea     rbp,[20+rbp]
> 
> +        mov     r13d,DWORD[36+rsp]
> 
> +        mov     r15d,DWORD[24+rsp]
> 
> +
> 
> +        mov     r12d,r13d
> 
> +        ror     r13d,11
> 
> +        add     eax,r14d
> 
> +        mov     r14d,r15d
> 
> +        ror     r15d,2
> 
> +
> 
> +        xor     r13d,r12d
> 
> +        shr     r12d,3
> 
> +        ror     r13d,7
> 
> +        xor     r15d,r14d
> 
> +        shr     r14d,10
> 
> +
> 
> +        ror     r15d,17
> 
> +        xor     r12d,r13d
> 
> +        xor     r15d,r14d
> 
> +        add     r12d,DWORD[4+rsp]
> 
> +
> 
> +        add     r12d,DWORD[32+rsp]
> 
> +        mov     r13d,r8d
> 
> +        add     r12d,r15d
> 
> +        mov     r14d,eax
> 
> +        ror     r13d,14
> 
> +        mov     r15d,r9d
> 
> +
> 
> +        xor     r13d,r8d
> 
> +        ror     r14d,9
> 
> +        xor     r15d,r10d
> 
> +
> 
> +        mov     DWORD[32+rsp],r12d
> 
> +        xor     r14d,eax
> 
> +        and     r15d,r8d
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,r11d
> 
> +        xor     r15d,r10d
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,r8d
> 
> +        add     r12d,r15d
> 
> +
> 
> +        mov     r15d,eax
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,eax
> 
> +
> 
> +        xor     r15d,ebx
> 
> +        ror     r13d,6
> 
> +        mov     r11d,ebx
> 
> +
> 
> +        and     edi,r15d
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     r11d,edi
> 
> +        add     edx,r12d
> 
> +        add     r11d,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        mov     r13d,DWORD[40+rsp]
> 
> +        mov     edi,DWORD[28+rsp]
> 
> +
> 
> +        mov     r12d,r13d
> 
> +        ror     r13d,11
> 
> +        add     r11d,r14d
> 
> +        mov     r14d,edi
> 
> +        ror     edi,2
> 
> +
> 
> +        xor     r13d,r12d
> 
> +        shr     r12d,3
> 
> +        ror     r13d,7
> 
> +        xor     edi,r14d
> 
> +        shr     r14d,10
> 
> +
> 
> +        ror     edi,17
> 
> +        xor     r12d,r13d
> 
> +        xor     edi,r14d
> 
> +        add     r12d,DWORD[8+rsp]
> 
> +
> 
> +        add     r12d,DWORD[36+rsp]
> 
> +        mov     r13d,edx
> 
> +        add     r12d,edi
> 
> +        mov     r14d,r11d
> 
> +        ror     r13d,14
> 
> +        mov     edi,r8d
> 
> +
> 
> +        xor     r13d,edx
> 
> +        ror     r14d,9
> 
> +        xor     edi,r9d
> 
> +
> 
> +        mov     DWORD[36+rsp],r12d
> 
> +        xor     r14d,r11d
> 
> +        and     edi,edx
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,r10d
> 
> +        xor     edi,r9d
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,edx
> 
> +        add     r12d,edi
> 
> +
> 
> +        mov     edi,r11d
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,r11d
> 
> +
> 
> +        xor     edi,eax
> 
> +        ror     r13d,6
> 
> +        mov     r10d,eax
> 
> +
> 
> +        and     r15d,edi
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     r10d,r15d
> 
> +        add     ecx,r12d
> 
> +        add     r10d,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        mov     r13d,DWORD[44+rsp]
> 
> +        mov     r15d,DWORD[32+rsp]
> 
> +
> 
> +        mov     r12d,r13d
> 
> +        ror     r13d,11
> 
> +        add     r10d,r14d
> 
> +        mov     r14d,r15d
> 
> +        ror     r15d,2
> 
> +
> 
> +        xor     r13d,r12d
> 
> +        shr     r12d,3
> 
> +        ror     r13d,7
> 
> +        xor     r15d,r14d
> 
> +        shr     r14d,10
> 
> +
> 
> +        ror     r15d,17
> 
> +        xor     r12d,r13d
> 
> +        xor     r15d,r14d
> 
> +        add     r12d,DWORD[12+rsp]
> 
> +
> 
> +        add     r12d,DWORD[40+rsp]
> 
> +        mov     r13d,ecx
> 
> +        add     r12d,r15d
> 
> +        mov     r14d,r10d
> 
> +        ror     r13d,14
> 
> +        mov     r15d,edx
> 
> +
> 
> +        xor     r13d,ecx
> 
> +        ror     r14d,9
> 
> +        xor     r15d,r8d
> 
> +
> 
> +        mov     DWORD[40+rsp],r12d
> 
> +        xor     r14d,r10d
> 
> +        and     r15d,ecx
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,r9d
> 
> +        xor     r15d,r8d
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,ecx
> 
> +        add     r12d,r15d
> 
> +
> 
> +        mov     r15d,r10d
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,r10d
> 
> +
> 
> +        xor     r15d,r11d
> 
> +        ror     r13d,6
> 
> +        mov     r9d,r11d
> 
> +
> 
> +        and     edi,r15d
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     r9d,edi
> 
> +        add     ebx,r12d
> 
> +        add     r9d,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        mov     r13d,DWORD[48+rsp]
> 
> +        mov     edi,DWORD[36+rsp]
> 
> +
> 
> +        mov     r12d,r13d
> 
> +        ror     r13d,11
> 
> +        add     r9d,r14d
> 
> +        mov     r14d,edi
> 
> +        ror     edi,2
> 
> +
> 
> +        xor     r13d,r12d
> 
> +        shr     r12d,3
> 
> +        ror     r13d,7
> 
> +        xor     edi,r14d
> 
> +        shr     r14d,10
> 
> +
> 
> +        ror     edi,17
> 
> +        xor     r12d,r13d
> 
> +        xor     edi,r14d
> 
> +        add     r12d,DWORD[16+rsp]
> 
> +
> 
> +        add     r12d,DWORD[44+rsp]
> 
> +        mov     r13d,ebx
> 
> +        add     r12d,edi
> 
> +        mov     r14d,r9d
> 
> +        ror     r13d,14
> 
> +        mov     edi,ecx
> 
> +
> 
> +        xor     r13d,ebx
> 
> +        ror     r14d,9
> 
> +        xor     edi,edx
> 
> +
> 
> +        mov     DWORD[44+rsp],r12d
> 
> +        xor     r14d,r9d
> 
> +        and     edi,ebx
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,r8d
> 
> +        xor     edi,edx
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,ebx
> 
> +        add     r12d,edi
> 
> +
> 
> +        mov     edi,r9d
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,r9d
> 
> +
> 
> +        xor     edi,r10d
> 
> +        ror     r13d,6
> 
> +        mov     r8d,r10d
> 
> +
> 
> +        and     r15d,edi
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     r8d,r15d
> 
> +        add     eax,r12d
> 
> +        add     r8d,r12d
> 
> +
> 
> +        lea     rbp,[20+rbp]
> 
> +        mov     r13d,DWORD[52+rsp]
> 
> +        mov     r15d,DWORD[40+rsp]
> 
> +
> 
> +        mov     r12d,r13d
> 
> +        ror     r13d,11
> 
> +        add     r8d,r14d
> 
> +        mov     r14d,r15d
> 
> +        ror     r15d,2
> 
> +
> 
> +        xor     r13d,r12d
> 
> +        shr     r12d,3
> 
> +        ror     r13d,7
> 
> +        xor     r15d,r14d
> 
> +        shr     r14d,10
> 
> +
> 
> +        ror     r15d,17
> 
> +        xor     r12d,r13d
> 
> +        xor     r15d,r14d
> 
> +        add     r12d,DWORD[20+rsp]
> 
> +
> 
> +        add     r12d,DWORD[48+rsp]
> 
> +        mov     r13d,eax
> 
> +        add     r12d,r15d
> 
> +        mov     r14d,r8d
> 
> +        ror     r13d,14
> 
> +        mov     r15d,ebx
> 
> +
> 
> +        xor     r13d,eax
> 
> +        ror     r14d,9
> 
> +        xor     r15d,ecx
> 
> +
> 
> +        mov     DWORD[48+rsp],r12d
> 
> +        xor     r14d,r8d
> 
> +        and     r15d,eax
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,edx
> 
> +        xor     r15d,ecx
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,eax
> 
> +        add     r12d,r15d
> 
> +
> 
> +        mov     r15d,r8d
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,r8d
> 
> +
> 
> +        xor     r15d,r9d
> 
> +        ror     r13d,6
> 
> +        mov     edx,r9d
> 
> +
> 
> +        and     edi,r15d
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     edx,edi
> 
> +        add     r11d,r12d
> 
> +        add     edx,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        mov     r13d,DWORD[56+rsp]
> 
> +        mov     edi,DWORD[44+rsp]
> 
> +
> 
> +        mov     r12d,r13d
> 
> +        ror     r13d,11
> 
> +        add     edx,r14d
> 
> +        mov     r14d,edi
> 
> +        ror     edi,2
> 
> +
> 
> +        xor     r13d,r12d
> 
> +        shr     r12d,3
> 
> +        ror     r13d,7
> 
> +        xor     edi,r14d
> 
> +        shr     r14d,10
> 
> +
> 
> +        ror     edi,17
> 
> +        xor     r12d,r13d
> 
> +        xor     edi,r14d
> 
> +        add     r12d,DWORD[24+rsp]
> 
> +
> 
> +        add     r12d,DWORD[52+rsp]
> 
> +        mov     r13d,r11d
> 
> +        add     r12d,edi
> 
> +        mov     r14d,edx
> 
> +        ror     r13d,14
> 
> +        mov     edi,eax
> 
> +
> 
> +        xor     r13d,r11d
> 
> +        ror     r14d,9
> 
> +        xor     edi,ebx
> 
> +
> 
> +        mov     DWORD[52+rsp],r12d
> 
> +        xor     r14d,edx
> 
> +        and     edi,r11d
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,ecx
> 
> +        xor     edi,ebx
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,r11d
> 
> +        add     r12d,edi
> 
> +
> 
> +        mov     edi,edx
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,edx
> 
> +
> 
> +        xor     edi,r8d
> 
> +        ror     r13d,6
> 
> +        mov     ecx,r8d
> 
> +
> 
> +        and     r15d,edi
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     ecx,r15d
> 
> +        add     r10d,r12d
> 
> +        add     ecx,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        mov     r13d,DWORD[60+rsp]
> 
> +        mov     r15d,DWORD[48+rsp]
> 
> +
> 
> +        mov     r12d,r13d
> 
> +        ror     r13d,11
> 
> +        add     ecx,r14d
> 
> +        mov     r14d,r15d
> 
> +        ror     r15d,2
> 
> +
> 
> +        xor     r13d,r12d
> 
> +        shr     r12d,3
> 
> +        ror     r13d,7
> 
> +        xor     r15d,r14d
> 
> +        shr     r14d,10
> 
> +
> 
> +        ror     r15d,17
> 
> +        xor     r12d,r13d
> 
> +        xor     r15d,r14d
> 
> +        add     r12d,DWORD[28+rsp]
> 
> +
> 
> +        add     r12d,DWORD[56+rsp]
> 
> +        mov     r13d,r10d
> 
> +        add     r12d,r15d
> 
> +        mov     r14d,ecx
> 
> +        ror     r13d,14
> 
> +        mov     r15d,r11d
> 
> +
> 
> +        xor     r13d,r10d
> 
> +        ror     r14d,9
> 
> +        xor     r15d,eax
> 
> +
> 
> +        mov     DWORD[56+rsp],r12d
> 
> +        xor     r14d,ecx
> 
> +        and     r15d,r10d
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,ebx
> 
> +        xor     r15d,eax
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,r10d
> 
> +        add     r12d,r15d
> 
> +
> 
> +        mov     r15d,ecx
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,ecx
> 
> +
> 
> +        xor     r15d,edx
> 
> +        ror     r13d,6
> 
> +        mov     ebx,edx
> 
> +
> 
> +        and     edi,r15d
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     ebx,edi
> 
> +        add     r9d,r12d
> 
> +        add     ebx,r12d
> 
> +
> 
> +        lea     rbp,[4+rbp]
> 
> +        mov     r13d,DWORD[rsp]
> 
> +        mov     edi,DWORD[52+rsp]
> 
> +
> 
> +        mov     r12d,r13d
> 
> +        ror     r13d,11
> 
> +        add     ebx,r14d
> 
> +        mov     r14d,edi
> 
> +        ror     edi,2
> 
> +
> 
> +        xor     r13d,r12d
> 
> +        shr     r12d,3
> 
> +        ror     r13d,7
> 
> +        xor     edi,r14d
> 
> +        shr     r14d,10
> 
> +
> 
> +        ror     edi,17
> 
> +        xor     r12d,r13d
> 
> +        xor     edi,r14d
> 
> +        add     r12d,DWORD[32+rsp]
> 
> +
> 
> +        add     r12d,DWORD[60+rsp]
> 
> +        mov     r13d,r9d
> 
> +        add     r12d,edi
> 
> +        mov     r14d,ebx
> 
> +        ror     r13d,14
> 
> +        mov     edi,r10d
> 
> +
> 
> +        xor     r13d,r9d
> 
> +        ror     r14d,9
> 
> +        xor     edi,r11d
> 
> +
> 
> +        mov     DWORD[60+rsp],r12d
> 
> +        xor     r14d,ebx
> 
> +        and     edi,r9d
> 
> +
> 
> +        ror     r13d,5
> 
> +        add     r12d,eax
> 
> +        xor     edi,r11d
> 
> +
> 
> +        ror     r14d,11
> 
> +        xor     r13d,r9d
> 
> +        add     r12d,edi
> 
> +
> 
> +        mov     edi,ebx
> 
> +        add     r12d,DWORD[rbp]
> 
> +        xor     r14d,ebx
> 
> +
> 
> +        xor     edi,ecx
> 
> +        ror     r13d,6
> 
> +        mov     eax,ecx
> 
> +
> 
> +        and     r15d,edi
> 
> +        ror     r14d,2
> 
> +        add     r12d,r13d
> 
> +
> 
> +        xor     eax,r15d
> 
> +        add     r8d,r12d
> 
> +        add     eax,r12d
> 
> +
> 
> +        lea     rbp,[20+rbp]
> 
> +        cmp     BYTE[3+rbp],0
> 
> +        jnz     NEAR $L$rounds_16_xx
> 
> +
> 
> +        mov     rdi,QWORD[((64+0))+rsp]
> 
> +        add     eax,r14d
> 
> +        lea     rsi,[64+rsi]
> 
> +
> 
> +        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[((64+16))+rsp]
> 
> +
> 
> +        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[88+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$epilogue:
> 
> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> 
> +        mov     rsi,QWORD[16+rsp]
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +$L$SEH_end_sha256_block_data_order:
> 
> +ALIGN   64
> 
> +
> 
> +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      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
> 
> +DB      32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
> 
> +DB      111,114,103,62,0
> 
> +
> 
> +ALIGN   64
> 
> +sha256_block_data_order_shaext:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_sha256_block_data_order_shaext:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +
> 
> +
> 
> +_shaext_shortcut:
> 
> +
> 
> +        lea     rsp,[((-88))+rsp]
> 
> +        movaps  XMMWORD[(-8-80)+rax],xmm6
> 
> +        movaps  XMMWORD[(-8-64)+rax],xmm7
> 
> +        movaps  XMMWORD[(-8-48)+rax],xmm8
> 
> +        movaps  XMMWORD[(-8-32)+rax],xmm9
> 
> +        movaps  XMMWORD[(-8-16)+rax],xmm10
> 
> +$L$prologue_shaext:
> 
> +        lea     rcx,[((K256+128))]
> 
> +        movdqu  xmm1,XMMWORD[rdi]
> 
> +        movdqu  xmm2,XMMWORD[16+rdi]
> 
> +        movdqa  xmm7,XMMWORD[((512-128))+rcx]
> 
> +
> 
> +        pshufd  xmm0,xmm1,0x1b
> 
> +        pshufd  xmm1,xmm1,0xb1
> 
> +        pshufd  xmm2,xmm2,0x1b
> 
> +        movdqa  xmm8,xmm7
> 
> +DB      102,15,58,15,202,8
> 
> +        punpcklqdq      xmm2,xmm0
> 
> +        jmp     NEAR $L$oop_shaext
> 
> +
> 
> +ALIGN   16
> 
> +$L$oop_shaext:
> 
> +        movdqu  xmm3,XMMWORD[rsi]
> 
> +        movdqu  xmm4,XMMWORD[16+rsi]
> 
> +        movdqu  xmm5,XMMWORD[32+rsi]
> 
> +DB      102,15,56,0,223
> 
> +        movdqu  xmm6,XMMWORD[48+rsi]
> 
> +
> 
> +        movdqa  xmm0,XMMWORD[((0-128))+rcx]
> 
> +        paddd   xmm0,xmm3
> 
> +DB      102,15,56,0,231
> 
> +        movdqa  xmm10,xmm2
> 
> +DB      15,56,203,209
> 
> +        pshufd  xmm0,xmm0,0x0e
> 
> +        nop
> 
> +        movdqa  xmm9,xmm1
> 
> +DB      15,56,203,202
> 
> +
> 
> +        movdqa  xmm0,XMMWORD[((32-128))+rcx]
> 
> +        paddd   xmm0,xmm4
> 
> +DB      102,15,56,0,239
> 
> +DB      15,56,203,209
> 
> +        pshufd  xmm0,xmm0,0x0e
> 
> +        lea     rsi,[64+rsi]
> 
> +DB      15,56,204,220
> 
> +DB      15,56,203,202
> 
> +
> 
> +        movdqa  xmm0,XMMWORD[((64-128))+rcx]
> 
> +        paddd   xmm0,xmm5
> 
> +DB      102,15,56,0,247
> 
> +DB      15,56,203,209
> 
> +        pshufd  xmm0,xmm0,0x0e
> 
> +        movdqa  xmm7,xmm6
> 
> +DB      102,15,58,15,253,4
> 
> +        nop
> 
> +        paddd   xmm3,xmm7
> 
> +DB      15,56,204,229
> 
> +DB      15,56,203,202
> 
> +
> 
> +        movdqa  xmm0,XMMWORD[((96-128))+rcx]
> 
> +        paddd   xmm0,xmm6
> 
> +DB      15,56,205,222
> 
> +DB      15,56,203,209
> 
> +        pshufd  xmm0,xmm0,0x0e
> 
> +        movdqa  xmm7,xmm3
> 
> +DB      102,15,58,15,254,4
> 
> +        nop
> 
> +        paddd   xmm4,xmm7
> 
> +DB      15,56,204,238
> 
> +DB      15,56,203,202
> 
> +        movdqa  xmm0,XMMWORD[((128-128))+rcx]
> 
> +        paddd   xmm0,xmm3
> 
> +DB      15,56,205,227
> 
> +DB      15,56,203,209
> 
> +        pshufd  xmm0,xmm0,0x0e
> 
> +        movdqa  xmm7,xmm4
> 
> +DB      102,15,58,15,251,4
> 
> +        nop
> 
> +        paddd   xmm5,xmm7
> 
> +DB      15,56,204,243
> 
> +DB      15,56,203,202
> 
> +        movdqa  xmm0,XMMWORD[((160-128))+rcx]
> 
> +        paddd   xmm0,xmm4
> 
> +DB      15,56,205,236
> 
> +DB      15,56,203,209
> 
> +        pshufd  xmm0,xmm0,0x0e
> 
> +        movdqa  xmm7,xmm5
> 
> +DB      102,15,58,15,252,4
> 
> +        nop
> 
> +        paddd   xmm6,xmm7
> 
> +DB      15,56,204,220
> 
> +DB      15,56,203,202
> 
> +        movdqa  xmm0,XMMWORD[((192-128))+rcx]
> 
> +        paddd   xmm0,xmm5
> 
> +DB      15,56,205,245
> 
> +DB      15,56,203,209
> 
> +        pshufd  xmm0,xmm0,0x0e
> 
> +        movdqa  xmm7,xmm6
> 
> +DB      102,15,58,15,253,4
> 
> +        nop
> 
> +        paddd   xmm3,xmm7
> 
> +DB      15,56,204,229
> 
> +DB      15,56,203,202
> 
> +        movdqa  xmm0,XMMWORD[((224-128))+rcx]
> 
> +        paddd   xmm0,xmm6
> 
> +DB      15,56,205,222
> 
> +DB      15,56,203,209
> 
> +        pshufd  xmm0,xmm0,0x0e
> 
> +        movdqa  xmm7,xmm3
> 
> +DB      102,15,58,15,254,4
> 
> +        nop
> 
> +        paddd   xmm4,xmm7
> 
> +DB      15,56,204,238
> 
> +DB      15,56,203,202
> 
> +        movdqa  xmm0,XMMWORD[((256-128))+rcx]
> 
> +        paddd   xmm0,xmm3
> 
> +DB      15,56,205,227
> 
> +DB      15,56,203,209
> 
> +        pshufd  xmm0,xmm0,0x0e
> 
> +        movdqa  xmm7,xmm4
> 
> +DB      102,15,58,15,251,4
> 
> +        nop
> 
> +        paddd   xmm5,xmm7
> 
> +DB      15,56,204,243
> 
> +DB      15,56,203,202
> 
> +        movdqa  xmm0,XMMWORD[((288-128))+rcx]
> 
> +        paddd   xmm0,xmm4
> 
> +DB      15,56,205,236
> 
> +DB      15,56,203,209
> 
> +        pshufd  xmm0,xmm0,0x0e
> 
> +        movdqa  xmm7,xmm5
> 
> +DB      102,15,58,15,252,4
> 
> +        nop
> 
> +        paddd   xmm6,xmm7
> 
> +DB      15,56,204,220
> 
> +DB      15,56,203,202
> 
> +        movdqa  xmm0,XMMWORD[((320-128))+rcx]
> 
> +        paddd   xmm0,xmm5
> 
> +DB      15,56,205,245
> 
> +DB      15,56,203,209
> 
> +        pshufd  xmm0,xmm0,0x0e
> 
> +        movdqa  xmm7,xmm6
> 
> +DB      102,15,58,15,253,4
> 
> +        nop
> 
> +        paddd   xmm3,xmm7
> 
> +DB      15,56,204,229
> 
> +DB      15,56,203,202
> 
> +        movdqa  xmm0,XMMWORD[((352-128))+rcx]
> 
> +        paddd   xmm0,xmm6
> 
> +DB      15,56,205,222
> 
> +DB      15,56,203,209
> 
> +        pshufd  xmm0,xmm0,0x0e
> 
> +        movdqa  xmm7,xmm3
> 
> +DB      102,15,58,15,254,4
> 
> +        nop
> 
> +        paddd   xmm4,xmm7
> 
> +DB      15,56,204,238
> 
> +DB      15,56,203,202
> 
> +        movdqa  xmm0,XMMWORD[((384-128))+rcx]
> 
> +        paddd   xmm0,xmm3
> 
> +DB      15,56,205,227
> 
> +DB      15,56,203,209
> 
> +        pshufd  xmm0,xmm0,0x0e
> 
> +        movdqa  xmm7,xmm4
> 
> +DB      102,15,58,15,251,4
> 
> +        nop
> 
> +        paddd   xmm5,xmm7
> 
> +DB      15,56,204,243
> 
> +DB      15,56,203,202
> 
> +        movdqa  xmm0,XMMWORD[((416-128))+rcx]
> 
> +        paddd   xmm0,xmm4
> 
> +DB      15,56,205,236
> 
> +DB      15,56,203,209
> 
> +        pshufd  xmm0,xmm0,0x0e
> 
> +        movdqa  xmm7,xmm5
> 
> +DB      102,15,58,15,252,4
> 
> +DB      15,56,203,202
> 
> +        paddd   xmm6,xmm7
> 
> +
> 
> +        movdqa  xmm0,XMMWORD[((448-128))+rcx]
> 
> +        paddd   xmm0,xmm5
> 
> +DB      15,56,203,209
> 
> +        pshufd  xmm0,xmm0,0x0e
> 
> +DB      15,56,205,245
> 
> +        movdqa  xmm7,xmm8
> 
> +DB      15,56,203,202
> 
> +
> 
> +        movdqa  xmm0,XMMWORD[((480-128))+rcx]
> 
> +        paddd   xmm0,xmm6
> 
> +        nop
> 
> +DB      15,56,203,209
> 
> +        pshufd  xmm0,xmm0,0x0e
> 
> +        dec     rdx
> 
> +        nop
> 
> +DB      15,56,203,202
> 
> +
> 
> +        paddd   xmm2,xmm10
> 
> +        paddd   xmm1,xmm9
> 
> +        jnz     NEAR $L$oop_shaext
> 
> +
> 
> +        pshufd  xmm2,xmm2,0xb1
> 
> +        pshufd  xmm7,xmm1,0x1b
> 
> +        pshufd  xmm1,xmm1,0xb1
> 
> +        punpckhqdq      xmm1,xmm2
> 
> +DB      102,15,58,15,215,8
> 
> +
> 
> +        movdqu  XMMWORD[rdi],xmm1
> 
> +        movdqu  XMMWORD[16+rdi],xmm2
> 
> +        movaps  xmm6,XMMWORD[((-8-80))+rax]
> 
> +        movaps  xmm7,XMMWORD[((-8-64))+rax]
> 
> +        movaps  xmm8,XMMWORD[((-8-48))+rax]
> 
> +        movaps  xmm9,XMMWORD[((-8-32))+rax]
> 
> +        movaps  xmm10,XMMWORD[((-8-16))+rax]
> 
> +        mov     rsp,rax
> 
> +$L$epilogue_shaext:
> 
> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> 
> +        mov     rsi,QWORD[16+rsp]
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +$L$SEH_end_sha256_block_data_order_shaext:
> 
> +
> 
> +ALIGN   64
> 
> +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:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +
> 
> +
> 
> +
> 
> +$L$ssse3_shortcut:
> 
> +        mov     rax,rsp
> 
> +
> 
> +        push    rbx
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        push    r12
> 
> +
> 
> +        push    r13
> 
> +
> 
> +        push    r14
> 
> +
> 
> +        push    r15
> 
> +
> 
> +        shl     rdx,4
> 
> +        sub     rsp,160
> 
> +        lea     rdx,[rdx*4+rsi]
> 
> +        and     rsp,-64
> 
> +        mov     QWORD[((64+0))+rsp],rdi
> 
> +        mov     QWORD[((64+8))+rsp],rsi
> 
> +        mov     QWORD[((64+16))+rsp],rdx
> 
> +        mov     QWORD[88+rsp],rax
> 
> +
> 
> +        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[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_ssse3
> 
> +ALIGN   16
> 
> +$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[48+rsi]
> 
> +        lea     rbp,[K256]
> 
> +DB      102,15,56,0,207
> 
> +        movdqa  xmm4,XMMWORD[rbp]
> 
> +        movdqa  xmm5,XMMWORD[32+rbp]
> 
> +DB      102,15,56,0,215
> 
> +        paddd   xmm4,xmm0
> 
> +        movdqa  xmm6,XMMWORD[64+rbp]
> 
> +DB      102,15,56,0,223
> 
> +        movdqa  xmm7,XMMWORD[96+rbp]
> 
> +        paddd   xmm5,xmm1
> 
> +        paddd   xmm6,xmm2
> 
> +        paddd   xmm7,xmm3
> 
> +        movdqa  XMMWORD[rsp],xmm4
> 
> +        mov     r14d,eax
> 
> +        movdqa  XMMWORD[16+rsp],xmm5
> 
> +        mov     edi,ebx
> 
> +        movdqa  XMMWORD[32+rsp],xmm6
> 
> +        xor     edi,ecx
> 
> +        movdqa  XMMWORD[48+rsp],xmm7
> 
> +        mov     r13d,r8d
> 
> +        jmp     NEAR $L$ssse3_00_47
> 
> +
> 
> +ALIGN   16
> 
> +$L$ssse3_00_47:
> 
> +        sub     rbp,-128
> 
> +        ror     r13d,14
> 
> +        movdqa  xmm4,xmm1
> 
> +        mov     eax,r14d
> 
> +        mov     r12d,r9d
> 
> +        movdqa  xmm7,xmm3
> 
> +        ror     r14d,9
> 
> +        xor     r13d,r8d
> 
> +        xor     r12d,r10d
> 
> +        ror     r13d,5
> 
> +        xor     r14d,eax
> 
> +DB      102,15,58,15,224,4
> 
> +        and     r12d,r8d
> 
> +        xor     r13d,r8d
> 
> +DB      102,15,58,15,250,4
> 
> +        add     r11d,DWORD[rsp]
> 
> +        mov     r15d,eax
> 
> +        xor     r12d,r10d
> 
> +        ror     r14d,11
> 
> +        movdqa  xmm5,xmm4
> 
> +        xor     r15d,ebx
> 
> +        add     r11d,r12d
> 
> +        movdqa  xmm6,xmm4
> 
> +        ror     r13d,6
> 
> +        and     edi,r15d
> 
> +        psrld   xmm4,3
> 
> +        xor     r14d,eax
> 
> +        add     r11d,r13d
> 
> +        xor     edi,ebx
> 
> +        paddd   xmm0,xmm7
> 
> +        ror     r14d,2
> 
> +        add     edx,r11d
> 
> +        psrld   xmm6,7
> 
> +        add     r11d,edi
> 
> +        mov     r13d,edx
> 
> +        pshufd  xmm7,xmm3,250
> 
> +        add     r14d,r11d
> 
> +        ror     r13d,14
> 
> +        pslld   xmm5,14
> 
> +        mov     r11d,r14d
> 
> +        mov     r12d,r8d
> 
> +        pxor    xmm4,xmm6
> 
> +        ror     r14d,9
> 
> +        xor     r13d,edx
> 
> +        xor     r12d,r9d
> 
> +        ror     r13d,5
> 
> +        psrld   xmm6,11
> 
> +        xor     r14d,r11d
> 
> +        pxor    xmm4,xmm5
> 
> +        and     r12d,edx
> 
> +        xor     r13d,edx
> 
> +        pslld   xmm5,11
> 
> +        add     r10d,DWORD[4+rsp]
> 
> +        mov     edi,r11d
> 
> +        pxor    xmm4,xmm6
> 
> +        xor     r12d,r9d
> 
> +        ror     r14d,11
> 
> +        movdqa  xmm6,xmm7
> 
> +        xor     edi,eax
> 
> +        add     r10d,r12d
> 
> +        pxor    xmm4,xmm5
> 
> +        ror     r13d,6
> 
> +        and     r15d,edi
> 
> +        xor     r14d,r11d
> 
> +        psrld   xmm7,10
> 
> +        add     r10d,r13d
> 
> +        xor     r15d,eax
> 
> +        paddd   xmm0,xmm4
> 
> +        ror     r14d,2
> 
> +        add     ecx,r10d
> 
> +        psrlq   xmm6,17
> 
> +        add     r10d,r15d
> 
> +        mov     r13d,ecx
> 
> +        add     r14d,r10d
> 
> +        pxor    xmm7,xmm6
> 
> +        ror     r13d,14
> 
> +        mov     r10d,r14d
> 
> +        mov     r12d,edx
> 
> +        ror     r14d,9
> 
> +        psrlq   xmm6,2
> 
> +        xor     r13d,ecx
> 
> +        xor     r12d,r8d
> 
> +        pxor    xmm7,xmm6
> 
> +        ror     r13d,5
> 
> +        xor     r14d,r10d
> 
> +        and     r12d,ecx
> 
> +        pshufd  xmm7,xmm7,128
> 
> +        xor     r13d,ecx
> 
> +        add     r9d,DWORD[8+rsp]
> 
> +        mov     r15d,r10d
> 
> +        psrldq  xmm7,8
> 
> +        xor     r12d,r8d
> 
> +        ror     r14d,11
> 
> +        xor     r15d,r11d
> 
> +        add     r9d,r12d
> 
> +        ror     r13d,6
> 
> +        paddd   xmm0,xmm7
> 
> +        and     edi,r15d
> 
> +        xor     r14d,r10d
> 
> +        add     r9d,r13d
> 
> +        pshufd  xmm7,xmm0,80
> 
> +        xor     edi,r11d
> 
> +        ror     r14d,2
> 
> +        add     ebx,r9d
> 
> +        movdqa  xmm6,xmm7
> 
> +        add     r9d,edi
> 
> +        mov     r13d,ebx
> 
> +        psrld   xmm7,10
> 
> +        add     r14d,r9d
> 
> +        ror     r13d,14
> 
> +        psrlq   xmm6,17
> 
> +        mov     r9d,r14d
> 
> +        mov     r12d,ecx
> 
> +        pxor    xmm7,xmm6
> 
> +        ror     r14d,9
> 
> +        xor     r13d,ebx
> 
> +        xor     r12d,edx
> 
> +        ror     r13d,5
> 
> +        xor     r14d,r9d
> 
> +        psrlq   xmm6,2
> 
> +        and     r12d,ebx
> 
> +        xor     r13d,ebx
> 
> +        add     r8d,DWORD[12+rsp]
> 
> +        pxor    xmm7,xmm6
> 
> +        mov     edi,r9d
> 
> +        xor     r12d,edx
> 
> +        ror     r14d,11
> 
> +        pshufd  xmm7,xmm7,8
> 
> +        xor     edi,r10d
> 
> +        add     r8d,r12d
> 
> +        movdqa  xmm6,XMMWORD[rbp]
> 
> +        ror     r13d,6
> 
> +        and     r15d,edi
> 
> +        pslldq  xmm7,8
> 
> +        xor     r14d,r9d
> 
> +        add     r8d,r13d
> 
> +        xor     r15d,r10d
> 
> +        paddd   xmm0,xmm7
> 
> +        ror     r14d,2
> 
> +        add     eax,r8d
> 
> +        add     r8d,r15d
> 
> +        paddd   xmm6,xmm0
> 
> +        mov     r13d,eax
> 
> +        add     r14d,r8d
> 
> +        movdqa  XMMWORD[rsp],xmm6
> 
> +        ror     r13d,14
> 
> +        movdqa  xmm4,xmm2
> 
> +        mov     r8d,r14d
> 
> +        mov     r12d,ebx
> 
> +        movdqa  xmm7,xmm0
> 
> +        ror     r14d,9
> 
> +        xor     r13d,eax
> 
> +        xor     r12d,ecx
> 
> +        ror     r13d,5
> 
> +        xor     r14d,r8d
> 
> +DB      102,15,58,15,225,4
> 
> +        and     r12d,eax
> 
> +        xor     r13d,eax
> 
> +DB      102,15,58,15,251,4
> 
> +        add     edx,DWORD[16+rsp]
> 
> +        mov     r15d,r8d
> 
> +        xor     r12d,ecx
> 
> +        ror     r14d,11
> 
> +        movdqa  xmm5,xmm4
> 
> +        xor     r15d,r9d
> 
> +        add     edx,r12d
> 
> +        movdqa  xmm6,xmm4
> 
> +        ror     r13d,6
> 
> +        and     edi,r15d
> 
> +        psrld   xmm4,3
> 
> +        xor     r14d,r8d
> 
> +        add     edx,r13d
> 
> +        xor     edi,r9d
> 
> +        paddd   xmm1,xmm7
> 
> +        ror     r14d,2
> 
> +        add     r11d,edx
> 
> +        psrld   xmm6,7
> 
> +        add     edx,edi
> 
> +        mov     r13d,r11d
> 
> +        pshufd  xmm7,xmm0,250
> 
> +        add     r14d,edx
> 
> +        ror     r13d,14
> 
> +        pslld   xmm5,14
> 
> +        mov     edx,r14d
> 
> +        mov     r12d,eax
> 
> +        pxor    xmm4,xmm6
> 
> +        ror     r14d,9
> 
> +        xor     r13d,r11d
> 
> +        xor     r12d,ebx
> 
> +        ror     r13d,5
> 
> +        psrld   xmm6,11
> 
> +        xor     r14d,edx
> 
> +        pxor    xmm4,xmm5
> 
> +        and     r12d,r11d
> 
> +        xor     r13d,r11d
> 
> +        pslld   xmm5,11
> 
> +        add     ecx,DWORD[20+rsp]
> 
> +        mov     edi,edx
> 
> +        pxor    xmm4,xmm6
> 
> +        xor     r12d,ebx
> 
> +        ror     r14d,11
> 
> +        movdqa  xmm6,xmm7
> 
> +        xor     edi,r8d
> 
> +        add     ecx,r12d
> 
> +        pxor    xmm4,xmm5
> 
> +        ror     r13d,6
> 
> +        and     r15d,edi
> 
> +        xor     r14d,edx
> 
> +        psrld   xmm7,10
> 
> +        add     ecx,r13d
> 
> +        xor     r15d,r8d
> 
> +        paddd   xmm1,xmm4
> 
> +        ror     r14d,2
> 
> +        add     r10d,ecx
> 
> +        psrlq   xmm6,17
> 
> +        add     ecx,r15d
> 
> +        mov     r13d,r10d
> 
> +        add     r14d,ecx
> 
> +        pxor    xmm7,xmm6
> 
> +        ror     r13d,14
> 
> +        mov     ecx,r14d
> 
> +        mov     r12d,r11d
> 
> +        ror     r14d,9
> 
> +        psrlq   xmm6,2
> 
> +        xor     r13d,r10d
> 
> +        xor     r12d,eax
> 
> +        pxor    xmm7,xmm6
> 
> +        ror     r13d,5
> 
> +        xor     r14d,ecx
> 
> +        and     r12d,r10d
> 
> +        pshufd  xmm7,xmm7,128
> 
> +        xor     r13d,r10d
> 
> +        add     ebx,DWORD[24+rsp]
> 
> +        mov     r15d,ecx
> 
> +        psrldq  xmm7,8
> 
> +        xor     r12d,eax
> 
> +        ror     r14d,11
> 
> +        xor     r15d,edx
> 
> +        add     ebx,r12d
> 
> +        ror     r13d,6
> 
> +        paddd   xmm1,xmm7
> 
> +        and     edi,r15d
> 
> +        xor     r14d,ecx
> 
> +        add     ebx,r13d
> 
> +        pshufd  xmm7,xmm1,80
> 
> +        xor     edi,edx
> 
> +        ror     r14d,2
> 
> +        add     r9d,ebx
> 
> +        movdqa  xmm6,xmm7
> 
> +        add     ebx,edi
> 
> +        mov     r13d,r9d
> 
> +        psrld   xmm7,10
> 
> +        add     r14d,ebx
> 
> +        ror     r13d,14
> 
> +        psrlq   xmm6,17
> 
> +        mov     ebx,r14d
> 
> +        mov     r12d,r10d
> 
> +        pxor    xmm7,xmm6
> 
> +        ror     r14d,9
> 
> +        xor     r13d,r9d
> 
> +        xor     r12d,r11d
> 
> +        ror     r13d,5
> 
> +        xor     r14d,ebx
> 
> +        psrlq   xmm6,2
> 
> +        and     r12d,r9d
> 
> +        xor     r13d,r9d
> 
> +        add     eax,DWORD[28+rsp]
> 
> +        pxor    xmm7,xmm6
> 
> +        mov     edi,ebx
> 
> +        xor     r12d,r11d
> 
> +        ror     r14d,11
> 
> +        pshufd  xmm7,xmm7,8
> 
> +        xor     edi,ecx
> 
> +        add     eax,r12d
> 
> +        movdqa  xmm6,XMMWORD[32+rbp]
> 
> +        ror     r13d,6
> 
> +        and     r15d,edi
> 
> +        pslldq  xmm7,8
> 
> +        xor     r14d,ebx
> 
> +        add     eax,r13d
> 
> +        xor     r15d,ecx
> 
> +        paddd   xmm1,xmm7
> 
> +        ror     r14d,2
> 
> +        add     r8d,eax
> 
> +        add     eax,r15d
> 
> +        paddd   xmm6,xmm1
> 
> +        mov     r13d,r8d
> 
> +        add     r14d,eax
> 
> +        movdqa  XMMWORD[16+rsp],xmm6
> 
> +        ror     r13d,14
> 
> +        movdqa  xmm4,xmm3
> 
> +        mov     eax,r14d
> 
> +        mov     r12d,r9d
> 
> +        movdqa  xmm7,xmm1
> 
> +        ror     r14d,9
> 
> +        xor     r13d,r8d
> 
> +        xor     r12d,r10d
> 
> +        ror     r13d,5
> 
> +        xor     r14d,eax
> 
> +DB      102,15,58,15,226,4
> 
> +        and     r12d,r8d
> 
> +        xor     r13d,r8d
> 
> +DB      102,15,58,15,248,4
> 
> +        add     r11d,DWORD[32+rsp]
> 
> +        mov     r15d,eax
> 
> +        xor     r12d,r10d
> 
> +        ror     r14d,11
> 
> +        movdqa  xmm5,xmm4
> 
> +        xor     r15d,ebx
> 
> +        add     r11d,r12d
> 
> +        movdqa  xmm6,xmm4
> 
> +        ror     r13d,6
> 
> +        and     edi,r15d
> 
> +        psrld   xmm4,3
> 
> +        xor     r14d,eax
> 
> +        add     r11d,r13d
> 
> +        xor     edi,ebx
> 
> +        paddd   xmm2,xmm7
> 
> +        ror     r14d,2
> 
> +        add     edx,r11d
> 
> +        psrld   xmm6,7
> 
> +        add     r11d,edi
> 
> +        mov     r13d,edx
> 
> +        pshufd  xmm7,xmm1,250
> 
> +        add     r14d,r11d
> 
> +        ror     r13d,14
> 
> +        pslld   xmm5,14
> 
> +        mov     r11d,r14d
> 
> +        mov     r12d,r8d
> 
> +        pxor    xmm4,xmm6
> 
> +        ror     r14d,9
> 
> +        xor     r13d,edx
> 
> +        xor     r12d,r9d
> 
> +        ror     r13d,5
> 
> +        psrld   xmm6,11
> 
> +        xor     r14d,r11d
> 
> +        pxor    xmm4,xmm5
> 
> +        and     r12d,edx
> 
> +        xor     r13d,edx
> 
> +        pslld   xmm5,11
> 
> +        add     r10d,DWORD[36+rsp]
> 
> +        mov     edi,r11d
> 
> +        pxor    xmm4,xmm6
> 
> +        xor     r12d,r9d
> 
> +        ror     r14d,11
> 
> +        movdqa  xmm6,xmm7
> 
> +        xor     edi,eax
> 
> +        add     r10d,r12d
> 
> +        pxor    xmm4,xmm5
> 
> +        ror     r13d,6
> 
> +        and     r15d,edi
> 
> +        xor     r14d,r11d
> 
> +        psrld   xmm7,10
> 
> +        add     r10d,r13d
> 
> +        xor     r15d,eax
> 
> +        paddd   xmm2,xmm4
> 
> +        ror     r14d,2
> 
> +        add     ecx,r10d
> 
> +        psrlq   xmm6,17
> 
> +        add     r10d,r15d
> 
> +        mov     r13d,ecx
> 
> +        add     r14d,r10d
> 
> +        pxor    xmm7,xmm6
> 
> +        ror     r13d,14
> 
> +        mov     r10d,r14d
> 
> +        mov     r12d,edx
> 
> +        ror     r14d,9
> 
> +        psrlq   xmm6,2
> 
> +        xor     r13d,ecx
> 
> +        xor     r12d,r8d
> 
> +        pxor    xmm7,xmm6
> 
> +        ror     r13d,5
> 
> +        xor     r14d,r10d
> 
> +        and     r12d,ecx
> 
> +        pshufd  xmm7,xmm7,128
> 
> +        xor     r13d,ecx
> 
> +        add     r9d,DWORD[40+rsp]
> 
> +        mov     r15d,r10d
> 
> +        psrldq  xmm7,8
> 
> +        xor     r12d,r8d
> 
> +        ror     r14d,11
> 
> +        xor     r15d,r11d
> 
> +        add     r9d,r12d
> 
> +        ror     r13d,6
> 
> +        paddd   xmm2,xmm7
> 
> +        and     edi,r15d
> 
> +        xor     r14d,r10d
> 
> +        add     r9d,r13d
> 
> +        pshufd  xmm7,xmm2,80
> 
> +        xor     edi,r11d
> 
> +        ror     r14d,2
> 
> +        add     ebx,r9d
> 
> +        movdqa  xmm6,xmm7
> 
> +        add     r9d,edi
> 
> +        mov     r13d,ebx
> 
> +        psrld   xmm7,10
> 
> +        add     r14d,r9d
> 
> +        ror     r13d,14
> 
> +        psrlq   xmm6,17
> 
> +        mov     r9d,r14d
> 
> +        mov     r12d,ecx
> 
> +        pxor    xmm7,xmm6
> 
> +        ror     r14d,9
> 
> +        xor     r13d,ebx
> 
> +        xor     r12d,edx
> 
> +        ror     r13d,5
> 
> +        xor     r14d,r9d
> 
> +        psrlq   xmm6,2
> 
> +        and     r12d,ebx
> 
> +        xor     r13d,ebx
> 
> +        add     r8d,DWORD[44+rsp]
> 
> +        pxor    xmm7,xmm6
> 
> +        mov     edi,r9d
> 
> +        xor     r12d,edx
> 
> +        ror     r14d,11
> 
> +        pshufd  xmm7,xmm7,8
> 
> +        xor     edi,r10d
> 
> +        add     r8d,r12d
> 
> +        movdqa  xmm6,XMMWORD[64+rbp]
> 
> +        ror     r13d,6
> 
> +        and     r15d,edi
> 
> +        pslldq  xmm7,8
> 
> +        xor     r14d,r9d
> 
> +        add     r8d,r13d
> 
> +        xor     r15d,r10d
> 
> +        paddd   xmm2,xmm7
> 
> +        ror     r14d,2
> 
> +        add     eax,r8d
> 
> +        add     r8d,r15d
> 
> +        paddd   xmm6,xmm2
> 
> +        mov     r13d,eax
> 
> +        add     r14d,r8d
> 
> +        movdqa  XMMWORD[32+rsp],xmm6
> 
> +        ror     r13d,14
> 
> +        movdqa  xmm4,xmm0
> 
> +        mov     r8d,r14d
> 
> +        mov     r12d,ebx
> 
> +        movdqa  xmm7,xmm2
> 
> +        ror     r14d,9
> 
> +        xor     r13d,eax
> 
> +        xor     r12d,ecx
> 
> +        ror     r13d,5
> 
> +        xor     r14d,r8d
> 
> +DB      102,15,58,15,227,4
> 
> +        and     r12d,eax
> 
> +        xor     r13d,eax
> 
> +DB      102,15,58,15,249,4
> 
> +        add     edx,DWORD[48+rsp]
> 
> +        mov     r15d,r8d
> 
> +        xor     r12d,ecx
> 
> +        ror     r14d,11
> 
> +        movdqa  xmm5,xmm4
> 
> +        xor     r15d,r9d
> 
> +        add     edx,r12d
> 
> +        movdqa  xmm6,xmm4
> 
> +        ror     r13d,6
> 
> +        and     edi,r15d
> 
> +        psrld   xmm4,3
> 
> +        xor     r14d,r8d
> 
> +        add     edx,r13d
> 
> +        xor     edi,r9d
> 
> +        paddd   xmm3,xmm7
> 
> +        ror     r14d,2
> 
> +        add     r11d,edx
> 
> +        psrld   xmm6,7
> 
> +        add     edx,edi
> 
> +        mov     r13d,r11d
> 
> +        pshufd  xmm7,xmm2,250
> 
> +        add     r14d,edx
> 
> +        ror     r13d,14
> 
> +        pslld   xmm5,14
> 
> +        mov     edx,r14d
> 
> +        mov     r12d,eax
> 
> +        pxor    xmm4,xmm6
> 
> +        ror     r14d,9
> 
> +        xor     r13d,r11d
> 
> +        xor     r12d,ebx
> 
> +        ror     r13d,5
> 
> +        psrld   xmm6,11
> 
> +        xor     r14d,edx
> 
> +        pxor    xmm4,xmm5
> 
> +        and     r12d,r11d
> 
> +        xor     r13d,r11d
> 
> +        pslld   xmm5,11
> 
> +        add     ecx,DWORD[52+rsp]
> 
> +        mov     edi,edx
> 
> +        pxor    xmm4,xmm6
> 
> +        xor     r12d,ebx
> 
> +        ror     r14d,11
> 
> +        movdqa  xmm6,xmm7
> 
> +        xor     edi,r8d
> 
> +        add     ecx,r12d
> 
> +        pxor    xmm4,xmm5
> 
> +        ror     r13d,6
> 
> +        and     r15d,edi
> 
> +        xor     r14d,edx
> 
> +        psrld   xmm7,10
> 
> +        add     ecx,r13d
> 
> +        xor     r15d,r8d
> 
> +        paddd   xmm3,xmm4
> 
> +        ror     r14d,2
> 
> +        add     r10d,ecx
> 
> +        psrlq   xmm6,17
> 
> +        add     ecx,r15d
> 
> +        mov     r13d,r10d
> 
> +        add     r14d,ecx
> 
> +        pxor    xmm7,xmm6
> 
> +        ror     r13d,14
> 
> +        mov     ecx,r14d
> 
> +        mov     r12d,r11d
> 
> +        ror     r14d,9
> 
> +        psrlq   xmm6,2
> 
> +        xor     r13d,r10d
> 
> +        xor     r12d,eax
> 
> +        pxor    xmm7,xmm6
> 
> +        ror     r13d,5
> 
> +        xor     r14d,ecx
> 
> +        and     r12d,r10d
> 
> +        pshufd  xmm7,xmm7,128
> 
> +        xor     r13d,r10d
> 
> +        add     ebx,DWORD[56+rsp]
> 
> +        mov     r15d,ecx
> 
> +        psrldq  xmm7,8
> 
> +        xor     r12d,eax
> 
> +        ror     r14d,11
> 
> +        xor     r15d,edx
> 
> +        add     ebx,r12d
> 
> +        ror     r13d,6
> 
> +        paddd   xmm3,xmm7
> 
> +        and     edi,r15d
> 
> +        xor     r14d,ecx
> 
> +        add     ebx,r13d
> 
> +        pshufd  xmm7,xmm3,80
> 
> +        xor     edi,edx
> 
> +        ror     r14d,2
> 
> +        add     r9d,ebx
> 
> +        movdqa  xmm6,xmm7
> 
> +        add     ebx,edi
> 
> +        mov     r13d,r9d
> 
> +        psrld   xmm7,10
> 
> +        add     r14d,ebx
> 
> +        ror     r13d,14
> 
> +        psrlq   xmm6,17
> 
> +        mov     ebx,r14d
> 
> +        mov     r12d,r10d
> 
> +        pxor    xmm7,xmm6
> 
> +        ror     r14d,9
> 
> +        xor     r13d,r9d
> 
> +        xor     r12d,r11d
> 
> +        ror     r13d,5
> 
> +        xor     r14d,ebx
> 
> +        psrlq   xmm6,2
> 
> +        and     r12d,r9d
> 
> +        xor     r13d,r9d
> 
> +        add     eax,DWORD[60+rsp]
> 
> +        pxor    xmm7,xmm6
> 
> +        mov     edi,ebx
> 
> +        xor     r12d,r11d
> 
> +        ror     r14d,11
> 
> +        pshufd  xmm7,xmm7,8
> 
> +        xor     edi,ecx
> 
> +        add     eax,r12d
> 
> +        movdqa  xmm6,XMMWORD[96+rbp]
> 
> +        ror     r13d,6
> 
> +        and     r15d,edi
> 
> +        pslldq  xmm7,8
> 
> +        xor     r14d,ebx
> 
> +        add     eax,r13d
> 
> +        xor     r15d,ecx
> 
> +        paddd   xmm3,xmm7
> 
> +        ror     r14d,2
> 
> +        add     r8d,eax
> 
> +        add     eax,r15d
> 
> +        paddd   xmm6,xmm3
> 
> +        mov     r13d,r8d
> 
> +        add     r14d,eax
> 
> +        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
> 
> +        ror     r14d,9
> 
> +        xor     r13d,r8d
> 
> +        xor     r12d,r10d
> 
> +        ror     r13d,5
> 
> +        xor     r14d,eax
> 
> +        and     r12d,r8d
> 
> +        xor     r13d,r8d
> 
> +        add     r11d,DWORD[rsp]
> 
> +        mov     r15d,eax
> 
> +        xor     r12d,r10d
> 
> +        ror     r14d,11
> 
> +        xor     r15d,ebx
> 
> +        add     r11d,r12d
> 
> +        ror     r13d,6
> 
> +        and     edi,r15d
> 
> +        xor     r14d,eax
> 
> +        add     r11d,r13d
> 
> +        xor     edi,ebx
> 
> +        ror     r14d,2
> 
> +        add     edx,r11d
> 
> +        add     r11d,edi
> 
> +        mov     r13d,edx
> 
> +        add     r14d,r11d
> 
> +        ror     r13d,14
> 
> +        mov     r11d,r14d
> 
> +        mov     r12d,r8d
> 
> +        ror     r14d,9
> 
> +        xor     r13d,edx
> 
> +        xor     r12d,r9d
> 
> +        ror     r13d,5
> 
> +        xor     r14d,r11d
> 
> +        and     r12d,edx
> 
> +        xor     r13d,edx
> 
> +        add     r10d,DWORD[4+rsp]
> 
> +        mov     edi,r11d
> 
> +        xor     r12d,r9d
> 
> +        ror     r14d,11
> 
> +        xor     edi,eax
> 
> +        add     r10d,r12d
> 
> +        ror     r13d,6
> 
> +        and     r15d,edi
> 
> +        xor     r14d,r11d
> 
> +        add     r10d,r13d
> 
> +        xor     r15d,eax
> 
> +        ror     r14d,2
> 
> +        add     ecx,r10d
> 
> +        add     r10d,r15d
> 
> +        mov     r13d,ecx
> 
> +        add     r14d,r10d
> 
> +        ror     r13d,14
> 
> +        mov     r10d,r14d
> 
> +        mov     r12d,edx
> 
> +        ror     r14d,9
> 
> +        xor     r13d,ecx
> 
> +        xor     r12d,r8d
> 
> +        ror     r13d,5
> 
> +        xor     r14d,r10d
> 
> +        and     r12d,ecx
> 
> +        xor     r13d,ecx
> 
> +        add     r9d,DWORD[8+rsp]
> 
> +        mov     r15d,r10d
> 
> +        xor     r12d,r8d
> 
> +        ror     r14d,11
> 
> +        xor     r15d,r11d
> 
> +        add     r9d,r12d
> 
> +        ror     r13d,6
> 
> +        and     edi,r15d
> 
> +        xor     r14d,r10d
> 
> +        add     r9d,r13d
> 
> +        xor     edi,r11d
> 
> +        ror     r14d,2
> 
> +        add     ebx,r9d
> 
> +        add     r9d,edi
> 
> +        mov     r13d,ebx
> 
> +        add     r14d,r9d
> 
> +        ror     r13d,14
> 
> +        mov     r9d,r14d
> 
> +        mov     r12d,ecx
> 
> +        ror     r14d,9
> 
> +        xor     r13d,ebx
> 
> +        xor     r12d,edx
> 
> +        ror     r13d,5
> 
> +        xor     r14d,r9d
> 
> +        and     r12d,ebx
> 
> +        xor     r13d,ebx
> 
> +        add     r8d,DWORD[12+rsp]
> 
> +        mov     edi,r9d
> 
> +        xor     r12d,edx
> 
> +        ror     r14d,11
> 
> +        xor     edi,r10d
> 
> +        add     r8d,r12d
> 
> +        ror     r13d,6
> 
> +        and     r15d,edi
> 
> +        xor     r14d,r9d
> 
> +        add     r8d,r13d
> 
> +        xor     r15d,r10d
> 
> +        ror     r14d,2
> 
> +        add     eax,r8d
> 
> +        add     r8d,r15d
> 
> +        mov     r13d,eax
> 
> +        add     r14d,r8d
> 
> +        ror     r13d,14
> 
> +        mov     r8d,r14d
> 
> +        mov     r12d,ebx
> 
> +        ror     r14d,9
> 
> +        xor     r13d,eax
> 
> +        xor     r12d,ecx
> 
> +        ror     r13d,5
> 
> +        xor     r14d,r8d
> 
> +        and     r12d,eax
> 
> +        xor     r13d,eax
> 
> +        add     edx,DWORD[16+rsp]
> 
> +        mov     r15d,r8d
> 
> +        xor     r12d,ecx
> 
> +        ror     r14d,11
> 
> +        xor     r15d,r9d
> 
> +        add     edx,r12d
> 
> +        ror     r13d,6
> 
> +        and     edi,r15d
> 
> +        xor     r14d,r8d
> 
> +        add     edx,r13d
> 
> +        xor     edi,r9d
> 
> +        ror     r14d,2
> 
> +        add     r11d,edx
> 
> +        add     edx,edi
> 
> +        mov     r13d,r11d
> 
> +        add     r14d,edx
> 
> +        ror     r13d,14
> 
> +        mov     edx,r14d
> 
> +        mov     r12d,eax
> 
> +        ror     r14d,9
> 
> +        xor     r13d,r11d
> 
> +        xor     r12d,ebx
> 
> +        ror     r13d,5
> 
> +        xor     r14d,edx
> 
> +        and     r12d,r11d
> 
> +        xor     r13d,r11d
> 
> +        add     ecx,DWORD[20+rsp]
> 
> +        mov     edi,edx
> 
> +        xor     r12d,ebx
> 
> +        ror     r14d,11
> 
> +        xor     edi,r8d
> 
> +        add     ecx,r12d
> 
> +        ror     r13d,6
> 
> +        and     r15d,edi
> 
> +        xor     r14d,edx
> 
> +        add     ecx,r13d
> 
> +        xor     r15d,r8d
> 
> +        ror     r14d,2
> 
> +        add     r10d,ecx
> 
> +        add     ecx,r15d
> 
> +        mov     r13d,r10d
> 
> +        add     r14d,ecx
> 
> +        ror     r13d,14
> 
> +        mov     ecx,r14d
> 
> +        mov     r12d,r11d
> 
> +        ror     r14d,9
> 
> +        xor     r13d,r10d
> 
> +        xor     r12d,eax
> 
> +        ror     r13d,5
> 
> +        xor     r14d,ecx
> 
> +        and     r12d,r10d
> 
> +        xor     r13d,r10d
> 
> +        add     ebx,DWORD[24+rsp]
> 
> +        mov     r15d,ecx
> 
> +        xor     r12d,eax
> 
> +        ror     r14d,11
> 
> +        xor     r15d,edx
> 
> +        add     ebx,r12d
> 
> +        ror     r13d,6
> 
> +        and     edi,r15d
> 
> +        xor     r14d,ecx
> 
> +        add     ebx,r13d
> 
> +        xor     edi,edx
> 
> +        ror     r14d,2
> 
> +        add     r9d,ebx
> 
> +        add     ebx,edi
> 
> +        mov     r13d,r9d
> 
> +        add     r14d,ebx
> 
> +        ror     r13d,14
> 
> +        mov     ebx,r14d
> 
> +        mov     r12d,r10d
> 
> +        ror     r14d,9
> 
> +        xor     r13d,r9d
> 
> +        xor     r12d,r11d
> 
> +        ror     r13d,5
> 
> +        xor     r14d,ebx
> 
> +        and     r12d,r9d
> 
> +        xor     r13d,r9d
> 
> +        add     eax,DWORD[28+rsp]
> 
> +        mov     edi,ebx
> 
> +        xor     r12d,r11d
> 
> +        ror     r14d,11
> 
> +        xor     edi,ecx
> 
> +        add     eax,r12d
> 
> +        ror     r13d,6
> 
> +        and     r15d,edi
> 
> +        xor     r14d,ebx
> 
> +        add     eax,r13d
> 
> +        xor     r15d,ecx
> 
> +        ror     r14d,2
> 
> +        add     r8d,eax
> 
> +        add     eax,r15d
> 
> +        mov     r13d,r8d
> 
> +        add     r14d,eax
> 
> +        ror     r13d,14
> 
> +        mov     eax,r14d
> 
> +        mov     r12d,r9d
> 
> +        ror     r14d,9
> 
> +        xor     r13d,r8d
> 
> +        xor     r12d,r10d
> 
> +        ror     r13d,5
> 
> +        xor     r14d,eax
> 
> +        and     r12d,r8d
> 
> +        xor     r13d,r8d
> 
> +        add     r11d,DWORD[32+rsp]
> 
> +        mov     r15d,eax
> 
> +        xor     r12d,r10d
> 
> +        ror     r14d,11
> 
> +        xor     r15d,ebx
> 
> +        add     r11d,r12d
> 
> +        ror     r13d,6
> 
> +        and     edi,r15d
> 
> +        xor     r14d,eax
> 
> +        add     r11d,r13d
> 
> +        xor     edi,ebx
> 
> +        ror     r14d,2
> 
> +        add     edx,r11d
> 
> +        add     r11d,edi
> 
> +        mov     r13d,edx
> 
> +        add     r14d,r11d
> 
> +        ror     r13d,14
> 
> +        mov     r11d,r14d
> 
> +        mov     r12d,r8d
> 
> +        ror     r14d,9
> 
> +        xor     r13d,edx
> 
> +        xor     r12d,r9d
> 
> +        ror     r13d,5
> 
> +        xor     r14d,r11d
> 
> +        and     r12d,edx
> 
> +        xor     r13d,edx
> 
> +        add     r10d,DWORD[36+rsp]
> 
> +        mov     edi,r11d
> 
> +        xor     r12d,r9d
> 
> +        ror     r14d,11
> 
> +        xor     edi,eax
> 
> +        add     r10d,r12d
> 
> +        ror     r13d,6
> 
> +        and     r15d,edi
> 
> +        xor     r14d,r11d
> 
> +        add     r10d,r13d
> 
> +        xor     r15d,eax
> 
> +        ror     r14d,2
> 
> +        add     ecx,r10d
> 
> +        add     r10d,r15d
> 
> +        mov     r13d,ecx
> 
> +        add     r14d,r10d
> 
> +        ror     r13d,14
> 
> +        mov     r10d,r14d
> 
> +        mov     r12d,edx
> 
> +        ror     r14d,9
> 
> +        xor     r13d,ecx
> 
> +        xor     r12d,r8d
> 
> +        ror     r13d,5
> 
> +        xor     r14d,r10d
> 
> +        and     r12d,ecx
> 
> +        xor     r13d,ecx
> 
> +        add     r9d,DWORD[40+rsp]
> 
> +        mov     r15d,r10d
> 
> +        xor     r12d,r8d
> 
> +        ror     r14d,11
> 
> +        xor     r15d,r11d
> 
> +        add     r9d,r12d
> 
> +        ror     r13d,6
> 
> +        and     edi,r15d
> 
> +        xor     r14d,r10d
> 
> +        add     r9d,r13d
> 
> +        xor     edi,r11d
> 
> +        ror     r14d,2
> 
> +        add     ebx,r9d
> 
> +        add     r9d,edi
> 
> +        mov     r13d,ebx
> 
> +        add     r14d,r9d
> 
> +        ror     r13d,14
> 
> +        mov     r9d,r14d
> 
> +        mov     r12d,ecx
> 
> +        ror     r14d,9
> 
> +        xor     r13d,ebx
> 
> +        xor     r12d,edx
> 
> +        ror     r13d,5
> 
> +        xor     r14d,r9d
> 
> +        and     r12d,ebx
> 
> +        xor     r13d,ebx
> 
> +        add     r8d,DWORD[44+rsp]
> 
> +        mov     edi,r9d
> 
> +        xor     r12d,edx
> 
> +        ror     r14d,11
> 
> +        xor     edi,r10d
> 
> +        add     r8d,r12d
> 
> +        ror     r13d,6
> 
> +        and     r15d,edi
> 
> +        xor     r14d,r9d
> 
> +        add     r8d,r13d
> 
> +        xor     r15d,r10d
> 
> +        ror     r14d,2
> 
> +        add     eax,r8d
> 
> +        add     r8d,r15d
> 
> +        mov     r13d,eax
> 
> +        add     r14d,r8d
> 
> +        ror     r13d,14
> 
> +        mov     r8d,r14d
> 
> +        mov     r12d,ebx
> 
> +        ror     r14d,9
> 
> +        xor     r13d,eax
> 
> +        xor     r12d,ecx
> 
> +        ror     r13d,5
> 
> +        xor     r14d,r8d
> 
> +        and     r12d,eax
> 
> +        xor     r13d,eax
> 
> +        add     edx,DWORD[48+rsp]
> 
> +        mov     r15d,r8d
> 
> +        xor     r12d,ecx
> 
> +        ror     r14d,11
> 
> +        xor     r15d,r9d
> 
> +        add     edx,r12d
> 
> +        ror     r13d,6
> 
> +        and     edi,r15d
> 
> +        xor     r14d,r8d
> 
> +        add     edx,r13d
> 
> +        xor     edi,r9d
> 
> +        ror     r14d,2
> 
> +        add     r11d,edx
> 
> +        add     edx,edi
> 
> +        mov     r13d,r11d
> 
> +        add     r14d,edx
> 
> +        ror     r13d,14
> 
> +        mov     edx,r14d
> 
> +        mov     r12d,eax
> 
> +        ror     r14d,9
> 
> +        xor     r13d,r11d
> 
> +        xor     r12d,ebx
> 
> +        ror     r13d,5
> 
> +        xor     r14d,edx
> 
> +        and     r12d,r11d
> 
> +        xor     r13d,r11d
> 
> +        add     ecx,DWORD[52+rsp]
> 
> +        mov     edi,edx
> 
> +        xor     r12d,ebx
> 
> +        ror     r14d,11
> 
> +        xor     edi,r8d
> 
> +        add     ecx,r12d
> 
> +        ror     r13d,6
> 
> +        and     r15d,edi
> 
> +        xor     r14d,edx
> 
> +        add     ecx,r13d
> 
> +        xor     r15d,r8d
> 
> +        ror     r14d,2
> 
> +        add     r10d,ecx
> 
> +        add     ecx,r15d
> 
> +        mov     r13d,r10d
> 
> +        add     r14d,ecx
> 
> +        ror     r13d,14
> 
> +        mov     ecx,r14d
> 
> +        mov     r12d,r11d
> 
> +        ror     r14d,9
> 
> +        xor     r13d,r10d
> 
> +        xor     r12d,eax
> 
> +        ror     r13d,5
> 
> +        xor     r14d,ecx
> 
> +        and     r12d,r10d
> 
> +        xor     r13d,r10d
> 
> +        add     ebx,DWORD[56+rsp]
> 
> +        mov     r15d,ecx
> 
> +        xor     r12d,eax
> 
> +        ror     r14d,11
> 
> +        xor     r15d,edx
> 
> +        add     ebx,r12d
> 
> +        ror     r13d,6
> 
> +        and     edi,r15d
> 
> +        xor     r14d,ecx
> 
> +        add     ebx,r13d
> 
> +        xor     edi,edx
> 
> +        ror     r14d,2
> 
> +        add     r9d,ebx
> 
> +        add     ebx,edi
> 
> +        mov     r13d,r9d
> 
> +        add     r14d,ebx
> 
> +        ror     r13d,14
> 
> +        mov     ebx,r14d
> 
> +        mov     r12d,r10d
> 
> +        ror     r14d,9
> 
> +        xor     r13d,r9d
> 
> +        xor     r12d,r11d
> 
> +        ror     r13d,5
> 
> +        xor     r14d,ebx
> 
> +        and     r12d,r9d
> 
> +        xor     r13d,r9d
> 
> +        add     eax,DWORD[60+rsp]
> 
> +        mov     edi,ebx
> 
> +        xor     r12d,r11d
> 
> +        ror     r14d,11
> 
> +        xor     edi,ecx
> 
> +        add     eax,r12d
> 
> +        ror     r13d,6
> 
> +        and     r15d,edi
> 
> +        xor     r14d,ebx
> 
> +        add     eax,r13d
> 
> +        xor     r15d,ecx
> 
> +        ror     r14d,2
> 
> +        add     r8d,eax
> 
> +        add     eax,r15d
> 
> +        mov     r13d,r8d
> 
> +        add     r14d,eax
> 
> +        mov     rdi,QWORD[((64+0))+rsp]
> 
> +        mov     eax,r14d
> 
> +
> 
> +        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[((64+16))+rsp]
> 
> +
> 
> +        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[88+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[((-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$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:
> 
> +EXTERN  __imp_RtlVirtualUnwind
> 
> +
> 
> +ALIGN   16
> 
> +se_handler:
> 
> +        push    rsi
> 
> +        push    rdi
> 
> +        push    rbx
> 
> +        push    rbp
> 
> +        push    r12
> 
> +        push    r13
> 
> +        push    r14
> 
> +        push    r15
> 
> +        pushfq
> 
> +        sub     rsp,64
> 
> +
> 
> +        mov     rax,QWORD[120+r8]
> 
> +        mov     rbx,QWORD[248+r8]
> 
> +
> 
> +        mov     rsi,QWORD[8+r9]
> 
> +        mov     r11,QWORD[56+r9]
> 
> +
> 
> +        mov     r10d,DWORD[r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$in_prologue
> 
> +
> 
> +        mov     rax,QWORD[152+r8]
> 
> +
> 
> +        mov     r10d,DWORD[4+r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jae     NEAR $L$in_prologue
> 
> +        mov     rsi,rax
> 
> +        mov     rax,QWORD[((64+24))+rax]
> 
> +
> 
> +        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,[$L$epilogue]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$in_prologue
> 
> +
> 
> +        lea     rsi,[((64+32))+rsi]
> 
> +        lea     rdi,[512+r8]
> 
> +        mov     ecx,8
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +$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[40+r9]
> 
> +        mov     rsi,r8
> 
> +        mov     ecx,154
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +        mov     rsi,r9
> 
> +        xor     rcx,rcx
> 
> +        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
> 
> +        popfq
> 
> +        pop     r15
> 
> +        pop     r14
> 
> +        pop     r13
> 
> +        pop     r12
> 
> +        pop     rbp
> 
> +        pop     rbx
> 
> +        pop     rdi
> 
> +        pop     rsi
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +ALIGN   16
> 
> +shaext_handler:
> 
> +        push    rsi
> 
> +        push    rdi
> 
> +        push    rbx
> 
> +        push    rbp
> 
> +        push    r12
> 
> +        push    r13
> 
> +        push    r14
> 
> +        push    r15
> 
> +        pushfq
> 
> +        sub     rsp,64
> 
> +
> 
> +        mov     rax,QWORD[120+r8]
> 
> +        mov     rbx,QWORD[248+r8]
> 
> +
> 
> +        lea     r10,[$L$prologue_shaext]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$in_prologue
> 
> +
> 
> +        lea     r10,[$L$epilogue_shaext]
> 
> +        cmp     rbx,r10
> 
> +        jae     NEAR $L$in_prologue
> 
> +
> 
> +        lea     rsi,[((-8-80))+rax]
> 
> +        lea     rdi,[512+r8]
> 
> +        mov     ecx,10
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +        jmp     NEAR $L$in_prologue
> 
> +
> 
> +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_shaext wrt ..imagebase
> 
> +        DD      $L$SEH_end_sha256_block_data_order_shaext wrt ..imagebase
> 
> +        DD      $L$SEH_info_sha256_block_data_order_shaext 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_shaext:
> 
> +DB      9,0,0,0
> 
> +        DD      shaext_handler 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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
> b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
> new file mode 100644
> index 0000000000..c6397d4393
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
> @@ -0,0 +1,1938 @@
> +; WARNING: do not edit!
> 
> +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
> 
> +;
> 
> +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.
> 
> +;
> 
> +; Licensed under the OpenSSL license (the "License").  You may not use
> 
> +; this file except in compliance with the License.  You can obtain a copy
> 
> +; in the file LICENSE in the source distribution or at
> 
> +; https://www.openssl.org/source/license.html
> 
> +
> 
> +default rel
> 
> +%define XMMWORD
> 
> +%define YMMWORD
> 
> +%define ZMMWORD
> 
> +section .text code align=64
> 
> +
> 
> +
> 
> +EXTERN  OPENSSL_ia32cap_P
> 
> +global  sha512_block_data_order
> 
> +
> 
> +ALIGN   16
> 
> +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:
> 
> +        mov     rdi,rcx
> 
> +        mov     rsi,rdx
> 
> +        mov     rdx,r8
> 
> +
> 
> +
> 
> +
> 
> +        mov     rax,rsp
> 
> +
> 
> +        push    rbx
> 
> +
> 
> +        push    rbp
> 
> +
> 
> +        push    r12
> 
> +
> 
> +        push    r13
> 
> +
> 
> +        push    r14
> 
> +
> 
> +        push    r15
> 
> +
> 
> +        shl     rdx,4
> 
> +        sub     rsp,16*8+4*8
> 
> +        lea     rdx,[rdx*8+rsi]
> 
> +        and     rsp,-64
> 
> +        mov     QWORD[((128+0))+rsp],rdi
> 
> +        mov     QWORD[((128+8))+rsp],rsi
> 
> +        mov     QWORD[((128+16))+rsp],rdx
> 
> +        mov     QWORD[152+rsp],rax
> 
> +
> 
> +$L$prologue:
> 
> +
> 
> +        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:
> 
> +        mov     rdi,rbx
> 
> +        lea     rbp,[K512]
> 
> +        xor     rdi,rcx
> 
> +        mov     r12,QWORD[rsi]
> 
> +        mov     r13,r8
> 
> +        mov     r14,rax
> 
> +        bswap   r12
> 
> +        ror     r13,23
> 
> +        mov     r15,r9
> 
> +
> 
> +        xor     r13,r8
> 
> +        ror     r14,5
> 
> +        xor     r15,r10
> 
> +
> 
> +        mov     QWORD[rsp],r12
> 
> +        xor     r14,rax
> 
> +        and     r15,r8
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,r11
> 
> +        xor     r15,r10
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,r8
> 
> +        add     r12,r15
> 
> +
> 
> +        mov     r15,rax
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,rax
> 
> +
> 
> +        xor     r15,rbx
> 
> +        ror     r13,14
> 
> +        mov     r11,rbx
> 
> +
> 
> +        and     rdi,r15
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     r11,rdi
> 
> +        add     rdx,r12
> 
> +        add     r11,r12
> 
> +
> 
> +        lea     rbp,[8+rbp]
> 
> +        add     r11,r14
> 
> +        mov     r12,QWORD[8+rsi]
> 
> +        mov     r13,rdx
> 
> +        mov     r14,r11
> 
> +        bswap   r12
> 
> +        ror     r13,23
> 
> +        mov     rdi,r8
> 
> +
> 
> +        xor     r13,rdx
> 
> +        ror     r14,5
> 
> +        xor     rdi,r9
> 
> +
> 
> +        mov     QWORD[8+rsp],r12
> 
> +        xor     r14,r11
> 
> +        and     rdi,rdx
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,r10
> 
> +        xor     rdi,r9
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,rdx
> 
> +        add     r12,rdi
> 
> +
> 
> +        mov     rdi,r11
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,r11
> 
> +
> 
> +        xor     rdi,rax
> 
> +        ror     r13,14
> 
> +        mov     r10,rax
> 
> +
> 
> +        and     r15,rdi
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     r10,r15
> 
> +        add     rcx,r12
> 
> +        add     r10,r12
> 
> +
> 
> +        lea     rbp,[24+rbp]
> 
> +        add     r10,r14
> 
> +        mov     r12,QWORD[16+rsi]
> 
> +        mov     r13,rcx
> 
> +        mov     r14,r10
> 
> +        bswap   r12
> 
> +        ror     r13,23
> 
> +        mov     r15,rdx
> 
> +
> 
> +        xor     r13,rcx
> 
> +        ror     r14,5
> 
> +        xor     r15,r8
> 
> +
> 
> +        mov     QWORD[16+rsp],r12
> 
> +        xor     r14,r10
> 
> +        and     r15,rcx
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,r9
> 
> +        xor     r15,r8
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,rcx
> 
> +        add     r12,r15
> 
> +
> 
> +        mov     r15,r10
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,r10
> 
> +
> 
> +        xor     r15,r11
> 
> +        ror     r13,14
> 
> +        mov     r9,r11
> 
> +
> 
> +        and     rdi,r15
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     r9,rdi
> 
> +        add     rbx,r12
> 
> +        add     r9,r12
> 
> +
> 
> +        lea     rbp,[8+rbp]
> 
> +        add     r9,r14
> 
> +        mov     r12,QWORD[24+rsi]
> 
> +        mov     r13,rbx
> 
> +        mov     r14,r9
> 
> +        bswap   r12
> 
> +        ror     r13,23
> 
> +        mov     rdi,rcx
> 
> +
> 
> +        xor     r13,rbx
> 
> +        ror     r14,5
> 
> +        xor     rdi,rdx
> 
> +
> 
> +        mov     QWORD[24+rsp],r12
> 
> +        xor     r14,r9
> 
> +        and     rdi,rbx
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,r8
> 
> +        xor     rdi,rdx
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,rbx
> 
> +        add     r12,rdi
> 
> +
> 
> +        mov     rdi,r9
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,r9
> 
> +
> 
> +        xor     rdi,r10
> 
> +        ror     r13,14
> 
> +        mov     r8,r10
> 
> +
> 
> +        and     r15,rdi
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     r8,r15
> 
> +        add     rax,r12
> 
> +        add     r8,r12
> 
> +
> 
> +        lea     rbp,[24+rbp]
> 
> +        add     r8,r14
> 
> +        mov     r12,QWORD[32+rsi]
> 
> +        mov     r13,rax
> 
> +        mov     r14,r8
> 
> +        bswap   r12
> 
> +        ror     r13,23
> 
> +        mov     r15,rbx
> 
> +
> 
> +        xor     r13,rax
> 
> +        ror     r14,5
> 
> +        xor     r15,rcx
> 
> +
> 
> +        mov     QWORD[32+rsp],r12
> 
> +        xor     r14,r8
> 
> +        and     r15,rax
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,rdx
> 
> +        xor     r15,rcx
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,rax
> 
> +        add     r12,r15
> 
> +
> 
> +        mov     r15,r8
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,r8
> 
> +
> 
> +        xor     r15,r9
> 
> +        ror     r13,14
> 
> +        mov     rdx,r9
> 
> +
> 
> +        and     rdi,r15
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     rdx,rdi
> 
> +        add     r11,r12
> 
> +        add     rdx,r12
> 
> +
> 
> +        lea     rbp,[8+rbp]
> 
> +        add     rdx,r14
> 
> +        mov     r12,QWORD[40+rsi]
> 
> +        mov     r13,r11
> 
> +        mov     r14,rdx
> 
> +        bswap   r12
> 
> +        ror     r13,23
> 
> +        mov     rdi,rax
> 
> +
> 
> +        xor     r13,r11
> 
> +        ror     r14,5
> 
> +        xor     rdi,rbx
> 
> +
> 
> +        mov     QWORD[40+rsp],r12
> 
> +        xor     r14,rdx
> 
> +        and     rdi,r11
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,rcx
> 
> +        xor     rdi,rbx
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,r11
> 
> +        add     r12,rdi
> 
> +
> 
> +        mov     rdi,rdx
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,rdx
> 
> +
> 
> +        xor     rdi,r8
> 
> +        ror     r13,14
> 
> +        mov     rcx,r8
> 
> +
> 
> +        and     r15,rdi
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     rcx,r15
> 
> +        add     r10,r12
> 
> +        add     rcx,r12
> 
> +
> 
> +        lea     rbp,[24+rbp]
> 
> +        add     rcx,r14
> 
> +        mov     r12,QWORD[48+rsi]
> 
> +        mov     r13,r10
> 
> +        mov     r14,rcx
> 
> +        bswap   r12
> 
> +        ror     r13,23
> 
> +        mov     r15,r11
> 
> +
> 
> +        xor     r13,r10
> 
> +        ror     r14,5
> 
> +        xor     r15,rax
> 
> +
> 
> +        mov     QWORD[48+rsp],r12
> 
> +        xor     r14,rcx
> 
> +        and     r15,r10
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,rbx
> 
> +        xor     r15,rax
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,r10
> 
> +        add     r12,r15
> 
> +
> 
> +        mov     r15,rcx
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,rcx
> 
> +
> 
> +        xor     r15,rdx
> 
> +        ror     r13,14
> 
> +        mov     rbx,rdx
> 
> +
> 
> +        and     rdi,r15
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     rbx,rdi
> 
> +        add     r9,r12
> 
> +        add     rbx,r12
> 
> +
> 
> +        lea     rbp,[8+rbp]
> 
> +        add     rbx,r14
> 
> +        mov     r12,QWORD[56+rsi]
> 
> +        mov     r13,r9
> 
> +        mov     r14,rbx
> 
> +        bswap   r12
> 
> +        ror     r13,23
> 
> +        mov     rdi,r10
> 
> +
> 
> +        xor     r13,r9
> 
> +        ror     r14,5
> 
> +        xor     rdi,r11
> 
> +
> 
> +        mov     QWORD[56+rsp],r12
> 
> +        xor     r14,rbx
> 
> +        and     rdi,r9
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,rax
> 
> +        xor     rdi,r11
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,r9
> 
> +        add     r12,rdi
> 
> +
> 
> +        mov     rdi,rbx
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,rbx
> 
> +
> 
> +        xor     rdi,rcx
> 
> +        ror     r13,14
> 
> +        mov     rax,rcx
> 
> +
> 
> +        and     r15,rdi
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     rax,r15
> 
> +        add     r8,r12
> 
> +        add     rax,r12
> 
> +
> 
> +        lea     rbp,[24+rbp]
> 
> +        add     rax,r14
> 
> +        mov     r12,QWORD[64+rsi]
> 
> +        mov     r13,r8
> 
> +        mov     r14,rax
> 
> +        bswap   r12
> 
> +        ror     r13,23
> 
> +        mov     r15,r9
> 
> +
> 
> +        xor     r13,r8
> 
> +        ror     r14,5
> 
> +        xor     r15,r10
> 
> +
> 
> +        mov     QWORD[64+rsp],r12
> 
> +        xor     r14,rax
> 
> +        and     r15,r8
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,r11
> 
> +        xor     r15,r10
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,r8
> 
> +        add     r12,r15
> 
> +
> 
> +        mov     r15,rax
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,rax
> 
> +
> 
> +        xor     r15,rbx
> 
> +        ror     r13,14
> 
> +        mov     r11,rbx
> 
> +
> 
> +        and     rdi,r15
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     r11,rdi
> 
> +        add     rdx,r12
> 
> +        add     r11,r12
> 
> +
> 
> +        lea     rbp,[8+rbp]
> 
> +        add     r11,r14
> 
> +        mov     r12,QWORD[72+rsi]
> 
> +        mov     r13,rdx
> 
> +        mov     r14,r11
> 
> +        bswap   r12
> 
> +        ror     r13,23
> 
> +        mov     rdi,r8
> 
> +
> 
> +        xor     r13,rdx
> 
> +        ror     r14,5
> 
> +        xor     rdi,r9
> 
> +
> 
> +        mov     QWORD[72+rsp],r12
> 
> +        xor     r14,r11
> 
> +        and     rdi,rdx
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,r10
> 
> +        xor     rdi,r9
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,rdx
> 
> +        add     r12,rdi
> 
> +
> 
> +        mov     rdi,r11
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,r11
> 
> +
> 
> +        xor     rdi,rax
> 
> +        ror     r13,14
> 
> +        mov     r10,rax
> 
> +
> 
> +        and     r15,rdi
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     r10,r15
> 
> +        add     rcx,r12
> 
> +        add     r10,r12
> 
> +
> 
> +        lea     rbp,[24+rbp]
> 
> +        add     r10,r14
> 
> +        mov     r12,QWORD[80+rsi]
> 
> +        mov     r13,rcx
> 
> +        mov     r14,r10
> 
> +        bswap   r12
> 
> +        ror     r13,23
> 
> +        mov     r15,rdx
> 
> +
> 
> +        xor     r13,rcx
> 
> +        ror     r14,5
> 
> +        xor     r15,r8
> 
> +
> 
> +        mov     QWORD[80+rsp],r12
> 
> +        xor     r14,r10
> 
> +        and     r15,rcx
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,r9
> 
> +        xor     r15,r8
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,rcx
> 
> +        add     r12,r15
> 
> +
> 
> +        mov     r15,r10
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,r10
> 
> +
> 
> +        xor     r15,r11
> 
> +        ror     r13,14
> 
> +        mov     r9,r11
> 
> +
> 
> +        and     rdi,r15
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     r9,rdi
> 
> +        add     rbx,r12
> 
> +        add     r9,r12
> 
> +
> 
> +        lea     rbp,[8+rbp]
> 
> +        add     r9,r14
> 
> +        mov     r12,QWORD[88+rsi]
> 
> +        mov     r13,rbx
> 
> +        mov     r14,r9
> 
> +        bswap   r12
> 
> +        ror     r13,23
> 
> +        mov     rdi,rcx
> 
> +
> 
> +        xor     r13,rbx
> 
> +        ror     r14,5
> 
> +        xor     rdi,rdx
> 
> +
> 
> +        mov     QWORD[88+rsp],r12
> 
> +        xor     r14,r9
> 
> +        and     rdi,rbx
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,r8
> 
> +        xor     rdi,rdx
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,rbx
> 
> +        add     r12,rdi
> 
> +
> 
> +        mov     rdi,r9
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,r9
> 
> +
> 
> +        xor     rdi,r10
> 
> +        ror     r13,14
> 
> +        mov     r8,r10
> 
> +
> 
> +        and     r15,rdi
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     r8,r15
> 
> +        add     rax,r12
> 
> +        add     r8,r12
> 
> +
> 
> +        lea     rbp,[24+rbp]
> 
> +        add     r8,r14
> 
> +        mov     r12,QWORD[96+rsi]
> 
> +        mov     r13,rax
> 
> +        mov     r14,r8
> 
> +        bswap   r12
> 
> +        ror     r13,23
> 
> +        mov     r15,rbx
> 
> +
> 
> +        xor     r13,rax
> 
> +        ror     r14,5
> 
> +        xor     r15,rcx
> 
> +
> 
> +        mov     QWORD[96+rsp],r12
> 
> +        xor     r14,r8
> 
> +        and     r15,rax
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,rdx
> 
> +        xor     r15,rcx
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,rax
> 
> +        add     r12,r15
> 
> +
> 
> +        mov     r15,r8
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,r8
> 
> +
> 
> +        xor     r15,r9
> 
> +        ror     r13,14
> 
> +        mov     rdx,r9
> 
> +
> 
> +        and     rdi,r15
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     rdx,rdi
> 
> +        add     r11,r12
> 
> +        add     rdx,r12
> 
> +
> 
> +        lea     rbp,[8+rbp]
> 
> +        add     rdx,r14
> 
> +        mov     r12,QWORD[104+rsi]
> 
> +        mov     r13,r11
> 
> +        mov     r14,rdx
> 
> +        bswap   r12
> 
> +        ror     r13,23
> 
> +        mov     rdi,rax
> 
> +
> 
> +        xor     r13,r11
> 
> +        ror     r14,5
> 
> +        xor     rdi,rbx
> 
> +
> 
> +        mov     QWORD[104+rsp],r12
> 
> +        xor     r14,rdx
> 
> +        and     rdi,r11
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,rcx
> 
> +        xor     rdi,rbx
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,r11
> 
> +        add     r12,rdi
> 
> +
> 
> +        mov     rdi,rdx
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,rdx
> 
> +
> 
> +        xor     rdi,r8
> 
> +        ror     r13,14
> 
> +        mov     rcx,r8
> 
> +
> 
> +        and     r15,rdi
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     rcx,r15
> 
> +        add     r10,r12
> 
> +        add     rcx,r12
> 
> +
> 
> +        lea     rbp,[24+rbp]
> 
> +        add     rcx,r14
> 
> +        mov     r12,QWORD[112+rsi]
> 
> +        mov     r13,r10
> 
> +        mov     r14,rcx
> 
> +        bswap   r12
> 
> +        ror     r13,23
> 
> +        mov     r15,r11
> 
> +
> 
> +        xor     r13,r10
> 
> +        ror     r14,5
> 
> +        xor     r15,rax
> 
> +
> 
> +        mov     QWORD[112+rsp],r12
> 
> +        xor     r14,rcx
> 
> +        and     r15,r10
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,rbx
> 
> +        xor     r15,rax
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,r10
> 
> +        add     r12,r15
> 
> +
> 
> +        mov     r15,rcx
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,rcx
> 
> +
> 
> +        xor     r15,rdx
> 
> +        ror     r13,14
> 
> +        mov     rbx,rdx
> 
> +
> 
> +        and     rdi,r15
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     rbx,rdi
> 
> +        add     r9,r12
> 
> +        add     rbx,r12
> 
> +
> 
> +        lea     rbp,[8+rbp]
> 
> +        add     rbx,r14
> 
> +        mov     r12,QWORD[120+rsi]
> 
> +        mov     r13,r9
> 
> +        mov     r14,rbx
> 
> +        bswap   r12
> 
> +        ror     r13,23
> 
> +        mov     rdi,r10
> 
> +
> 
> +        xor     r13,r9
> 
> +        ror     r14,5
> 
> +        xor     rdi,r11
> 
> +
> 
> +        mov     QWORD[120+rsp],r12
> 
> +        xor     r14,rbx
> 
> +        and     rdi,r9
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,rax
> 
> +        xor     rdi,r11
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,r9
> 
> +        add     r12,rdi
> 
> +
> 
> +        mov     rdi,rbx
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,rbx
> 
> +
> 
> +        xor     rdi,rcx
> 
> +        ror     r13,14
> 
> +        mov     rax,rcx
> 
> +
> 
> +        and     r15,rdi
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     rax,r15
> 
> +        add     r8,r12
> 
> +        add     rax,r12
> 
> +
> 
> +        lea     rbp,[24+rbp]
> 
> +        jmp     NEAR $L$rounds_16_xx
> 
> +ALIGN   16
> 
> +$L$rounds_16_xx:
> 
> +        mov     r13,QWORD[8+rsp]
> 
> +        mov     r15,QWORD[112+rsp]
> 
> +
> 
> +        mov     r12,r13
> 
> +        ror     r13,7
> 
> +        add     rax,r14
> 
> +        mov     r14,r15
> 
> +        ror     r15,42
> 
> +
> 
> +        xor     r13,r12
> 
> +        shr     r12,7
> 
> +        ror     r13,1
> 
> +        xor     r15,r14
> 
> +        shr     r14,6
> 
> +
> 
> +        ror     r15,19
> 
> +        xor     r12,r13
> 
> +        xor     r15,r14
> 
> +        add     r12,QWORD[72+rsp]
> 
> +
> 
> +        add     r12,QWORD[rsp]
> 
> +        mov     r13,r8
> 
> +        add     r12,r15
> 
> +        mov     r14,rax
> 
> +        ror     r13,23
> 
> +        mov     r15,r9
> 
> +
> 
> +        xor     r13,r8
> 
> +        ror     r14,5
> 
> +        xor     r15,r10
> 
> +
> 
> +        mov     QWORD[rsp],r12
> 
> +        xor     r14,rax
> 
> +        and     r15,r8
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,r11
> 
> +        xor     r15,r10
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,r8
> 
> +        add     r12,r15
> 
> +
> 
> +        mov     r15,rax
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,rax
> 
> +
> 
> +        xor     r15,rbx
> 
> +        ror     r13,14
> 
> +        mov     r11,rbx
> 
> +
> 
> +        and     rdi,r15
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     r11,rdi
> 
> +        add     rdx,r12
> 
> +        add     r11,r12
> 
> +
> 
> +        lea     rbp,[8+rbp]
> 
> +        mov     r13,QWORD[16+rsp]
> 
> +        mov     rdi,QWORD[120+rsp]
> 
> +
> 
> +        mov     r12,r13
> 
> +        ror     r13,7
> 
> +        add     r11,r14
> 
> +        mov     r14,rdi
> 
> +        ror     rdi,42
> 
> +
> 
> +        xor     r13,r12
> 
> +        shr     r12,7
> 
> +        ror     r13,1
> 
> +        xor     rdi,r14
> 
> +        shr     r14,6
> 
> +
> 
> +        ror     rdi,19
> 
> +        xor     r12,r13
> 
> +        xor     rdi,r14
> 
> +        add     r12,QWORD[80+rsp]
> 
> +
> 
> +        add     r12,QWORD[8+rsp]
> 
> +        mov     r13,rdx
> 
> +        add     r12,rdi
> 
> +        mov     r14,r11
> 
> +        ror     r13,23
> 
> +        mov     rdi,r8
> 
> +
> 
> +        xor     r13,rdx
> 
> +        ror     r14,5
> 
> +        xor     rdi,r9
> 
> +
> 
> +        mov     QWORD[8+rsp],r12
> 
> +        xor     r14,r11
> 
> +        and     rdi,rdx
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,r10
> 
> +        xor     rdi,r9
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,rdx
> 
> +        add     r12,rdi
> 
> +
> 
> +        mov     rdi,r11
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,r11
> 
> +
> 
> +        xor     rdi,rax
> 
> +        ror     r13,14
> 
> +        mov     r10,rax
> 
> +
> 
> +        and     r15,rdi
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     r10,r15
> 
> +        add     rcx,r12
> 
> +        add     r10,r12
> 
> +
> 
> +        lea     rbp,[24+rbp]
> 
> +        mov     r13,QWORD[24+rsp]
> 
> +        mov     r15,QWORD[rsp]
> 
> +
> 
> +        mov     r12,r13
> 
> +        ror     r13,7
> 
> +        add     r10,r14
> 
> +        mov     r14,r15
> 
> +        ror     r15,42
> 
> +
> 
> +        xor     r13,r12
> 
> +        shr     r12,7
> 
> +        ror     r13,1
> 
> +        xor     r15,r14
> 
> +        shr     r14,6
> 
> +
> 
> +        ror     r15,19
> 
> +        xor     r12,r13
> 
> +        xor     r15,r14
> 
> +        add     r12,QWORD[88+rsp]
> 
> +
> 
> +        add     r12,QWORD[16+rsp]
> 
> +        mov     r13,rcx
> 
> +        add     r12,r15
> 
> +        mov     r14,r10
> 
> +        ror     r13,23
> 
> +        mov     r15,rdx
> 
> +
> 
> +        xor     r13,rcx
> 
> +        ror     r14,5
> 
> +        xor     r15,r8
> 
> +
> 
> +        mov     QWORD[16+rsp],r12
> 
> +        xor     r14,r10
> 
> +        and     r15,rcx
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,r9
> 
> +        xor     r15,r8
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,rcx
> 
> +        add     r12,r15
> 
> +
> 
> +        mov     r15,r10
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,r10
> 
> +
> 
> +        xor     r15,r11
> 
> +        ror     r13,14
> 
> +        mov     r9,r11
> 
> +
> 
> +        and     rdi,r15
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     r9,rdi
> 
> +        add     rbx,r12
> 
> +        add     r9,r12
> 
> +
> 
> +        lea     rbp,[8+rbp]
> 
> +        mov     r13,QWORD[32+rsp]
> 
> +        mov     rdi,QWORD[8+rsp]
> 
> +
> 
> +        mov     r12,r13
> 
> +        ror     r13,7
> 
> +        add     r9,r14
> 
> +        mov     r14,rdi
> 
> +        ror     rdi,42
> 
> +
> 
> +        xor     r13,r12
> 
> +        shr     r12,7
> 
> +        ror     r13,1
> 
> +        xor     rdi,r14
> 
> +        shr     r14,6
> 
> +
> 
> +        ror     rdi,19
> 
> +        xor     r12,r13
> 
> +        xor     rdi,r14
> 
> +        add     r12,QWORD[96+rsp]
> 
> +
> 
> +        add     r12,QWORD[24+rsp]
> 
> +        mov     r13,rbx
> 
> +        add     r12,rdi
> 
> +        mov     r14,r9
> 
> +        ror     r13,23
> 
> +        mov     rdi,rcx
> 
> +
> 
> +        xor     r13,rbx
> 
> +        ror     r14,5
> 
> +        xor     rdi,rdx
> 
> +
> 
> +        mov     QWORD[24+rsp],r12
> 
> +        xor     r14,r9
> 
> +        and     rdi,rbx
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,r8
> 
> +        xor     rdi,rdx
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,rbx
> 
> +        add     r12,rdi
> 
> +
> 
> +        mov     rdi,r9
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,r9
> 
> +
> 
> +        xor     rdi,r10
> 
> +        ror     r13,14
> 
> +        mov     r8,r10
> 
> +
> 
> +        and     r15,rdi
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     r8,r15
> 
> +        add     rax,r12
> 
> +        add     r8,r12
> 
> +
> 
> +        lea     rbp,[24+rbp]
> 
> +        mov     r13,QWORD[40+rsp]
> 
> +        mov     r15,QWORD[16+rsp]
> 
> +
> 
> +        mov     r12,r13
> 
> +        ror     r13,7
> 
> +        add     r8,r14
> 
> +        mov     r14,r15
> 
> +        ror     r15,42
> 
> +
> 
> +        xor     r13,r12
> 
> +        shr     r12,7
> 
> +        ror     r13,1
> 
> +        xor     r15,r14
> 
> +        shr     r14,6
> 
> +
> 
> +        ror     r15,19
> 
> +        xor     r12,r13
> 
> +        xor     r15,r14
> 
> +        add     r12,QWORD[104+rsp]
> 
> +
> 
> +        add     r12,QWORD[32+rsp]
> 
> +        mov     r13,rax
> 
> +        add     r12,r15
> 
> +        mov     r14,r8
> 
> +        ror     r13,23
> 
> +        mov     r15,rbx
> 
> +
> 
> +        xor     r13,rax
> 
> +        ror     r14,5
> 
> +        xor     r15,rcx
> 
> +
> 
> +        mov     QWORD[32+rsp],r12
> 
> +        xor     r14,r8
> 
> +        and     r15,rax
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,rdx
> 
> +        xor     r15,rcx
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,rax
> 
> +        add     r12,r15
> 
> +
> 
> +        mov     r15,r8
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,r8
> 
> +
> 
> +        xor     r15,r9
> 
> +        ror     r13,14
> 
> +        mov     rdx,r9
> 
> +
> 
> +        and     rdi,r15
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     rdx,rdi
> 
> +        add     r11,r12
> 
> +        add     rdx,r12
> 
> +
> 
> +        lea     rbp,[8+rbp]
> 
> +        mov     r13,QWORD[48+rsp]
> 
> +        mov     rdi,QWORD[24+rsp]
> 
> +
> 
> +        mov     r12,r13
> 
> +        ror     r13,7
> 
> +        add     rdx,r14
> 
> +        mov     r14,rdi
> 
> +        ror     rdi,42
> 
> +
> 
> +        xor     r13,r12
> 
> +        shr     r12,7
> 
> +        ror     r13,1
> 
> +        xor     rdi,r14
> 
> +        shr     r14,6
> 
> +
> 
> +        ror     rdi,19
> 
> +        xor     r12,r13
> 
> +        xor     rdi,r14
> 
> +        add     r12,QWORD[112+rsp]
> 
> +
> 
> +        add     r12,QWORD[40+rsp]
> 
> +        mov     r13,r11
> 
> +        add     r12,rdi
> 
> +        mov     r14,rdx
> 
> +        ror     r13,23
> 
> +        mov     rdi,rax
> 
> +
> 
> +        xor     r13,r11
> 
> +        ror     r14,5
> 
> +        xor     rdi,rbx
> 
> +
> 
> +        mov     QWORD[40+rsp],r12
> 
> +        xor     r14,rdx
> 
> +        and     rdi,r11
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,rcx
> 
> +        xor     rdi,rbx
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,r11
> 
> +        add     r12,rdi
> 
> +
> 
> +        mov     rdi,rdx
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,rdx
> 
> +
> 
> +        xor     rdi,r8
> 
> +        ror     r13,14
> 
> +        mov     rcx,r8
> 
> +
> 
> +        and     r15,rdi
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     rcx,r15
> 
> +        add     r10,r12
> 
> +        add     rcx,r12
> 
> +
> 
> +        lea     rbp,[24+rbp]
> 
> +        mov     r13,QWORD[56+rsp]
> 
> +        mov     r15,QWORD[32+rsp]
> 
> +
> 
> +        mov     r12,r13
> 
> +        ror     r13,7
> 
> +        add     rcx,r14
> 
> +        mov     r14,r15
> 
> +        ror     r15,42
> 
> +
> 
> +        xor     r13,r12
> 
> +        shr     r12,7
> 
> +        ror     r13,1
> 
> +        xor     r15,r14
> 
> +        shr     r14,6
> 
> +
> 
> +        ror     r15,19
> 
> +        xor     r12,r13
> 
> +        xor     r15,r14
> 
> +        add     r12,QWORD[120+rsp]
> 
> +
> 
> +        add     r12,QWORD[48+rsp]
> 
> +        mov     r13,r10
> 
> +        add     r12,r15
> 
> +        mov     r14,rcx
> 
> +        ror     r13,23
> 
> +        mov     r15,r11
> 
> +
> 
> +        xor     r13,r10
> 
> +        ror     r14,5
> 
> +        xor     r15,rax
> 
> +
> 
> +        mov     QWORD[48+rsp],r12
> 
> +        xor     r14,rcx
> 
> +        and     r15,r10
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,rbx
> 
> +        xor     r15,rax
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,r10
> 
> +        add     r12,r15
> 
> +
> 
> +        mov     r15,rcx
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,rcx
> 
> +
> 
> +        xor     r15,rdx
> 
> +        ror     r13,14
> 
> +        mov     rbx,rdx
> 
> +
> 
> +        and     rdi,r15
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     rbx,rdi
> 
> +        add     r9,r12
> 
> +        add     rbx,r12
> 
> +
> 
> +        lea     rbp,[8+rbp]
> 
> +        mov     r13,QWORD[64+rsp]
> 
> +        mov     rdi,QWORD[40+rsp]
> 
> +
> 
> +        mov     r12,r13
> 
> +        ror     r13,7
> 
> +        add     rbx,r14
> 
> +        mov     r14,rdi
> 
> +        ror     rdi,42
> 
> +
> 
> +        xor     r13,r12
> 
> +        shr     r12,7
> 
> +        ror     r13,1
> 
> +        xor     rdi,r14
> 
> +        shr     r14,6
> 
> +
> 
> +        ror     rdi,19
> 
> +        xor     r12,r13
> 
> +        xor     rdi,r14
> 
> +        add     r12,QWORD[rsp]
> 
> +
> 
> +        add     r12,QWORD[56+rsp]
> 
> +        mov     r13,r9
> 
> +        add     r12,rdi
> 
> +        mov     r14,rbx
> 
> +        ror     r13,23
> 
> +        mov     rdi,r10
> 
> +
> 
> +        xor     r13,r9
> 
> +        ror     r14,5
> 
> +        xor     rdi,r11
> 
> +
> 
> +        mov     QWORD[56+rsp],r12
> 
> +        xor     r14,rbx
> 
> +        and     rdi,r9
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,rax
> 
> +        xor     rdi,r11
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,r9
> 
> +        add     r12,rdi
> 
> +
> 
> +        mov     rdi,rbx
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,rbx
> 
> +
> 
> +        xor     rdi,rcx
> 
> +        ror     r13,14
> 
> +        mov     rax,rcx
> 
> +
> 
> +        and     r15,rdi
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     rax,r15
> 
> +        add     r8,r12
> 
> +        add     rax,r12
> 
> +
> 
> +        lea     rbp,[24+rbp]
> 
> +        mov     r13,QWORD[72+rsp]
> 
> +        mov     r15,QWORD[48+rsp]
> 
> +
> 
> +        mov     r12,r13
> 
> +        ror     r13,7
> 
> +        add     rax,r14
> 
> +        mov     r14,r15
> 
> +        ror     r15,42
> 
> +
> 
> +        xor     r13,r12
> 
> +        shr     r12,7
> 
> +        ror     r13,1
> 
> +        xor     r15,r14
> 
> +        shr     r14,6
> 
> +
> 
> +        ror     r15,19
> 
> +        xor     r12,r13
> 
> +        xor     r15,r14
> 
> +        add     r12,QWORD[8+rsp]
> 
> +
> 
> +        add     r12,QWORD[64+rsp]
> 
> +        mov     r13,r8
> 
> +        add     r12,r15
> 
> +        mov     r14,rax
> 
> +        ror     r13,23
> 
> +        mov     r15,r9
> 
> +
> 
> +        xor     r13,r8
> 
> +        ror     r14,5
> 
> +        xor     r15,r10
> 
> +
> 
> +        mov     QWORD[64+rsp],r12
> 
> +        xor     r14,rax
> 
> +        and     r15,r8
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,r11
> 
> +        xor     r15,r10
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,r8
> 
> +        add     r12,r15
> 
> +
> 
> +        mov     r15,rax
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,rax
> 
> +
> 
> +        xor     r15,rbx
> 
> +        ror     r13,14
> 
> +        mov     r11,rbx
> 
> +
> 
> +        and     rdi,r15
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     r11,rdi
> 
> +        add     rdx,r12
> 
> +        add     r11,r12
> 
> +
> 
> +        lea     rbp,[8+rbp]
> 
> +        mov     r13,QWORD[80+rsp]
> 
> +        mov     rdi,QWORD[56+rsp]
> 
> +
> 
> +        mov     r12,r13
> 
> +        ror     r13,7
> 
> +        add     r11,r14
> 
> +        mov     r14,rdi
> 
> +        ror     rdi,42
> 
> +
> 
> +        xor     r13,r12
> 
> +        shr     r12,7
> 
> +        ror     r13,1
> 
> +        xor     rdi,r14
> 
> +        shr     r14,6
> 
> +
> 
> +        ror     rdi,19
> 
> +        xor     r12,r13
> 
> +        xor     rdi,r14
> 
> +        add     r12,QWORD[16+rsp]
> 
> +
> 
> +        add     r12,QWORD[72+rsp]
> 
> +        mov     r13,rdx
> 
> +        add     r12,rdi
> 
> +        mov     r14,r11
> 
> +        ror     r13,23
> 
> +        mov     rdi,r8
> 
> +
> 
> +        xor     r13,rdx
> 
> +        ror     r14,5
> 
> +        xor     rdi,r9
> 
> +
> 
> +        mov     QWORD[72+rsp],r12
> 
> +        xor     r14,r11
> 
> +        and     rdi,rdx
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,r10
> 
> +        xor     rdi,r9
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,rdx
> 
> +        add     r12,rdi
> 
> +
> 
> +        mov     rdi,r11
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,r11
> 
> +
> 
> +        xor     rdi,rax
> 
> +        ror     r13,14
> 
> +        mov     r10,rax
> 
> +
> 
> +        and     r15,rdi
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     r10,r15
> 
> +        add     rcx,r12
> 
> +        add     r10,r12
> 
> +
> 
> +        lea     rbp,[24+rbp]
> 
> +        mov     r13,QWORD[88+rsp]
> 
> +        mov     r15,QWORD[64+rsp]
> 
> +
> 
> +        mov     r12,r13
> 
> +        ror     r13,7
> 
> +        add     r10,r14
> 
> +        mov     r14,r15
> 
> +        ror     r15,42
> 
> +
> 
> +        xor     r13,r12
> 
> +        shr     r12,7
> 
> +        ror     r13,1
> 
> +        xor     r15,r14
> 
> +        shr     r14,6
> 
> +
> 
> +        ror     r15,19
> 
> +        xor     r12,r13
> 
> +        xor     r15,r14
> 
> +        add     r12,QWORD[24+rsp]
> 
> +
> 
> +        add     r12,QWORD[80+rsp]
> 
> +        mov     r13,rcx
> 
> +        add     r12,r15
> 
> +        mov     r14,r10
> 
> +        ror     r13,23
> 
> +        mov     r15,rdx
> 
> +
> 
> +        xor     r13,rcx
> 
> +        ror     r14,5
> 
> +        xor     r15,r8
> 
> +
> 
> +        mov     QWORD[80+rsp],r12
> 
> +        xor     r14,r10
> 
> +        and     r15,rcx
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,r9
> 
> +        xor     r15,r8
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,rcx
> 
> +        add     r12,r15
> 
> +
> 
> +        mov     r15,r10
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,r10
> 
> +
> 
> +        xor     r15,r11
> 
> +        ror     r13,14
> 
> +        mov     r9,r11
> 
> +
> 
> +        and     rdi,r15
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     r9,rdi
> 
> +        add     rbx,r12
> 
> +        add     r9,r12
> 
> +
> 
> +        lea     rbp,[8+rbp]
> 
> +        mov     r13,QWORD[96+rsp]
> 
> +        mov     rdi,QWORD[72+rsp]
> 
> +
> 
> +        mov     r12,r13
> 
> +        ror     r13,7
> 
> +        add     r9,r14
> 
> +        mov     r14,rdi
> 
> +        ror     rdi,42
> 
> +
> 
> +        xor     r13,r12
> 
> +        shr     r12,7
> 
> +        ror     r13,1
> 
> +        xor     rdi,r14
> 
> +        shr     r14,6
> 
> +
> 
> +        ror     rdi,19
> 
> +        xor     r12,r13
> 
> +        xor     rdi,r14
> 
> +        add     r12,QWORD[32+rsp]
> 
> +
> 
> +        add     r12,QWORD[88+rsp]
> 
> +        mov     r13,rbx
> 
> +        add     r12,rdi
> 
> +        mov     r14,r9
> 
> +        ror     r13,23
> 
> +        mov     rdi,rcx
> 
> +
> 
> +        xor     r13,rbx
> 
> +        ror     r14,5
> 
> +        xor     rdi,rdx
> 
> +
> 
> +        mov     QWORD[88+rsp],r12
> 
> +        xor     r14,r9
> 
> +        and     rdi,rbx
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,r8
> 
> +        xor     rdi,rdx
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,rbx
> 
> +        add     r12,rdi
> 
> +
> 
> +        mov     rdi,r9
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,r9
> 
> +
> 
> +        xor     rdi,r10
> 
> +        ror     r13,14
> 
> +        mov     r8,r10
> 
> +
> 
> +        and     r15,rdi
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     r8,r15
> 
> +        add     rax,r12
> 
> +        add     r8,r12
> 
> +
> 
> +        lea     rbp,[24+rbp]
> 
> +        mov     r13,QWORD[104+rsp]
> 
> +        mov     r15,QWORD[80+rsp]
> 
> +
> 
> +        mov     r12,r13
> 
> +        ror     r13,7
> 
> +        add     r8,r14
> 
> +        mov     r14,r15
> 
> +        ror     r15,42
> 
> +
> 
> +        xor     r13,r12
> 
> +        shr     r12,7
> 
> +        ror     r13,1
> 
> +        xor     r15,r14
> 
> +        shr     r14,6
> 
> +
> 
> +        ror     r15,19
> 
> +        xor     r12,r13
> 
> +        xor     r15,r14
> 
> +        add     r12,QWORD[40+rsp]
> 
> +
> 
> +        add     r12,QWORD[96+rsp]
> 
> +        mov     r13,rax
> 
> +        add     r12,r15
> 
> +        mov     r14,r8
> 
> +        ror     r13,23
> 
> +        mov     r15,rbx
> 
> +
> 
> +        xor     r13,rax
> 
> +        ror     r14,5
> 
> +        xor     r15,rcx
> 
> +
> 
> +        mov     QWORD[96+rsp],r12
> 
> +        xor     r14,r8
> 
> +        and     r15,rax
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,rdx
> 
> +        xor     r15,rcx
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,rax
> 
> +        add     r12,r15
> 
> +
> 
> +        mov     r15,r8
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,r8
> 
> +
> 
> +        xor     r15,r9
> 
> +        ror     r13,14
> 
> +        mov     rdx,r9
> 
> +
> 
> +        and     rdi,r15
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     rdx,rdi
> 
> +        add     r11,r12
> 
> +        add     rdx,r12
> 
> +
> 
> +        lea     rbp,[8+rbp]
> 
> +        mov     r13,QWORD[112+rsp]
> 
> +        mov     rdi,QWORD[88+rsp]
> 
> +
> 
> +        mov     r12,r13
> 
> +        ror     r13,7
> 
> +        add     rdx,r14
> 
> +        mov     r14,rdi
> 
> +        ror     rdi,42
> 
> +
> 
> +        xor     r13,r12
> 
> +        shr     r12,7
> 
> +        ror     r13,1
> 
> +        xor     rdi,r14
> 
> +        shr     r14,6
> 
> +
> 
> +        ror     rdi,19
> 
> +        xor     r12,r13
> 
> +        xor     rdi,r14
> 
> +        add     r12,QWORD[48+rsp]
> 
> +
> 
> +        add     r12,QWORD[104+rsp]
> 
> +        mov     r13,r11
> 
> +        add     r12,rdi
> 
> +        mov     r14,rdx
> 
> +        ror     r13,23
> 
> +        mov     rdi,rax
> 
> +
> 
> +        xor     r13,r11
> 
> +        ror     r14,5
> 
> +        xor     rdi,rbx
> 
> +
> 
> +        mov     QWORD[104+rsp],r12
> 
> +        xor     r14,rdx
> 
> +        and     rdi,r11
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,rcx
> 
> +        xor     rdi,rbx
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,r11
> 
> +        add     r12,rdi
> 
> +
> 
> +        mov     rdi,rdx
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,rdx
> 
> +
> 
> +        xor     rdi,r8
> 
> +        ror     r13,14
> 
> +        mov     rcx,r8
> 
> +
> 
> +        and     r15,rdi
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     rcx,r15
> 
> +        add     r10,r12
> 
> +        add     rcx,r12
> 
> +
> 
> +        lea     rbp,[24+rbp]
> 
> +        mov     r13,QWORD[120+rsp]
> 
> +        mov     r15,QWORD[96+rsp]
> 
> +
> 
> +        mov     r12,r13
> 
> +        ror     r13,7
> 
> +        add     rcx,r14
> 
> +        mov     r14,r15
> 
> +        ror     r15,42
> 
> +
> 
> +        xor     r13,r12
> 
> +        shr     r12,7
> 
> +        ror     r13,1
> 
> +        xor     r15,r14
> 
> +        shr     r14,6
> 
> +
> 
> +        ror     r15,19
> 
> +        xor     r12,r13
> 
> +        xor     r15,r14
> 
> +        add     r12,QWORD[56+rsp]
> 
> +
> 
> +        add     r12,QWORD[112+rsp]
> 
> +        mov     r13,r10
> 
> +        add     r12,r15
> 
> +        mov     r14,rcx
> 
> +        ror     r13,23
> 
> +        mov     r15,r11
> 
> +
> 
> +        xor     r13,r10
> 
> +        ror     r14,5
> 
> +        xor     r15,rax
> 
> +
> 
> +        mov     QWORD[112+rsp],r12
> 
> +        xor     r14,rcx
> 
> +        and     r15,r10
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,rbx
> 
> +        xor     r15,rax
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,r10
> 
> +        add     r12,r15
> 
> +
> 
> +        mov     r15,rcx
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,rcx
> 
> +
> 
> +        xor     r15,rdx
> 
> +        ror     r13,14
> 
> +        mov     rbx,rdx
> 
> +
> 
> +        and     rdi,r15
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     rbx,rdi
> 
> +        add     r9,r12
> 
> +        add     rbx,r12
> 
> +
> 
> +        lea     rbp,[8+rbp]
> 
> +        mov     r13,QWORD[rsp]
> 
> +        mov     rdi,QWORD[104+rsp]
> 
> +
> 
> +        mov     r12,r13
> 
> +        ror     r13,7
> 
> +        add     rbx,r14
> 
> +        mov     r14,rdi
> 
> +        ror     rdi,42
> 
> +
> 
> +        xor     r13,r12
> 
> +        shr     r12,7
> 
> +        ror     r13,1
> 
> +        xor     rdi,r14
> 
> +        shr     r14,6
> 
> +
> 
> +        ror     rdi,19
> 
> +        xor     r12,r13
> 
> +        xor     rdi,r14
> 
> +        add     r12,QWORD[64+rsp]
> 
> +
> 
> +        add     r12,QWORD[120+rsp]
> 
> +        mov     r13,r9
> 
> +        add     r12,rdi
> 
> +        mov     r14,rbx
> 
> +        ror     r13,23
> 
> +        mov     rdi,r10
> 
> +
> 
> +        xor     r13,r9
> 
> +        ror     r14,5
> 
> +        xor     rdi,r11
> 
> +
> 
> +        mov     QWORD[120+rsp],r12
> 
> +        xor     r14,rbx
> 
> +        and     rdi,r9
> 
> +
> 
> +        ror     r13,4
> 
> +        add     r12,rax
> 
> +        xor     rdi,r11
> 
> +
> 
> +        ror     r14,6
> 
> +        xor     r13,r9
> 
> +        add     r12,rdi
> 
> +
> 
> +        mov     rdi,rbx
> 
> +        add     r12,QWORD[rbp]
> 
> +        xor     r14,rbx
> 
> +
> 
> +        xor     rdi,rcx
> 
> +        ror     r13,14
> 
> +        mov     rax,rcx
> 
> +
> 
> +        and     r15,rdi
> 
> +        ror     r14,28
> 
> +        add     r12,r13
> 
> +
> 
> +        xor     rax,r15
> 
> +        add     r8,r12
> 
> +        add     rax,r12
> 
> +
> 
> +        lea     rbp,[24+rbp]
> 
> +        cmp     BYTE[7+rbp],0
> 
> +        jnz     NEAR $L$rounds_16_xx
> 
> +
> 
> +        mov     rdi,QWORD[((128+0))+rsp]
> 
> +        add     rax,r14
> 
> +        lea     rsi,[128+rsi]
> 
> +
> 
> +        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[((128+16))+rsp]
> 
> +
> 
> +        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[152+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$epilogue:
> 
> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> 
> +        mov     rsi,QWORD[16+rsp]
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +$L$SEH_end_sha512_block_data_order:
> 
> +ALIGN   64
> 
> +
> 
> +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      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
> 
> +
> 
> +ALIGN   16
> 
> +se_handler:
> 
> +        push    rsi
> 
> +        push    rdi
> 
> +        push    rbx
> 
> +        push    rbp
> 
> +        push    r12
> 
> +        push    r13
> 
> +        push    r14
> 
> +        push    r15
> 
> +        pushfq
> 
> +        sub     rsp,64
> 
> +
> 
> +        mov     rax,QWORD[120+r8]
> 
> +        mov     rbx,QWORD[248+r8]
> 
> +
> 
> +        mov     rsi,QWORD[8+r9]
> 
> +        mov     r11,QWORD[56+r9]
> 
> +
> 
> +        mov     r10d,DWORD[r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$in_prologue
> 
> +
> 
> +        mov     rax,QWORD[152+r8]
> 
> +
> 
> +        mov     r10d,DWORD[4+r11]
> 
> +        lea     r10,[r10*1+rsi]
> 
> +        cmp     rbx,r10
> 
> +        jae     NEAR $L$in_prologue
> 
> +        mov     rsi,rax
> 
> +        mov     rax,QWORD[((128+24))+rax]
> 
> +
> 
> +        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,[$L$epilogue]
> 
> +        cmp     rbx,r10
> 
> +        jb      NEAR $L$in_prologue
> 
> +
> 
> +        lea     rsi,[((128+32))+rsi]
> 
> +        lea     rdi,[512+r8]
> 
> +        mov     ecx,12
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +$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[40+r9]
> 
> +        mov     rsi,r8
> 
> +        mov     ecx,154
> 
> +        DD      0xa548f3fc
> 
> +
> 
> +        mov     rsi,r9
> 
> +        xor     rcx,rcx
> 
> +        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
> 
> +        popfq
> 
> +        pop     r15
> 
> +        pop     r14
> 
> +        pop     r13
> 
> +        pop     r12
> 
> +        pop     rbp
> 
> +        pop     rbx
> 
> +        pop     rdi
> 
> +        pop     rsi
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +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/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> new file mode 100644
> index 0000000000..2a3d5bcf72
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> @@ -0,0 +1,491 @@
> +; WARNING: do not edit!
> 
> +; Generated from openssl/crypto/x86_64cpuid.pl
> 
> +;
> 
> +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.
> 
> +;
> 
> +; Licensed under the OpenSSL license (the "License").  You may not use
> 
> +; this file except in compliance with the License.  You can obtain a copy
> 
> +; in the file LICENSE in the source distribution or at
> 
> +; https://www.openssl.org/source/license.html
> 
> +
> 
> +default rel
> 
> +%define XMMWORD
> 
> +%define YMMWORD
> 
> +%define ZMMWORD
> 
> +EXTERN  OPENSSL_cpuid_setup
> 
> +
> 
> +section .CRT$XCU rdata align=8
> 
> +                DQ      OPENSSL_cpuid_setup
> 
> +
> 
> +
> 
> +common  OPENSSL_ia32cap_P 16
> 
> +
> 
> +section .text code align=64
> 
> +
> 
> +
> 
> +global  OPENSSL_atomic_add
> 
> +
> 
> +ALIGN   16
> 
> +OPENSSL_atomic_add:
> 
> +
> 
> +        mov     eax,DWORD[rcx]
> 
> +$L$spin:        lea     r8,[rax*1+rdx]
> 
> +DB      0xf0
> 
> +        cmpxchg DWORD[rcx],r8d
> 
> +        jne     NEAR $L$spin
> 
> +        mov     eax,r8d
> 
> +DB      0x48,0x98
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +global  OPENSSL_rdtsc
> 
> +
> 
> +ALIGN   16
> 
> +OPENSSL_rdtsc:
> 
> +
> 
> +        rdtsc
> 
> +        shl     rdx,32
> 
> +        or      rax,rdx
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +global  OPENSSL_ia32_cpuid
> 
> +
> 
> +ALIGN   16
> 
> +OPENSSL_ia32_cpuid:
> 
> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> 
> +        mov     QWORD[16+rsp],rsi
> 
> +        mov     rax,rsp
> 
> +$L$SEH_begin_OPENSSL_ia32_cpuid:
> 
> +        mov     rdi,rcx
> 
> +
> 
> +
> 
> +
> 
> +        mov     r8,rbx
> 
> +
> 
> +
> 
> +        xor     eax,eax
> 
> +        mov     QWORD[8+rdi],rax
> 
> +        cpuid
> 
> +        mov     r11d,eax
> 
> +
> 
> +        xor     eax,eax
> 
> +        cmp     ebx,0x756e6547
> 
> +        setne   al
> 
> +        mov     r9d,eax
> 
> +        cmp     edx,0x49656e69
> 
> +        setne   al
> 
> +        or      r9d,eax
> 
> +        cmp     ecx,0x6c65746e
> 
> +        setne   al
> 
> +        or      r9d,eax
> 
> +        jz      NEAR $L$intel
> 
> +
> 
> +        cmp     ebx,0x68747541
> 
> +        setne   al
> 
> +        mov     r10d,eax
> 
> +        cmp     edx,0x69746E65
> 
> +        setne   al
> 
> +        or      r10d,eax
> 
> +        cmp     ecx,0x444D4163
> 
> +        setne   al
> 
> +        or      r10d,eax
> 
> +        jnz     NEAR $L$intel
> 
> +
> 
> +
> 
> +        mov     eax,0x80000000
> 
> +        cpuid
> 
> +        cmp     eax,0x80000001
> 
> +        jb      NEAR $L$intel
> 
> +        mov     r10d,eax
> 
> +        mov     eax,0x80000001
> 
> +        cpuid
> 
> +        or      r9d,ecx
> 
> +        and     r9d,0x00000801
> 
> +
> 
> +        cmp     r10d,0x80000008
> 
> +        jb      NEAR $L$intel
> 
> +
> 
> +        mov     eax,0x80000008
> 
> +        cpuid
> 
> +        movzx   r10,cl
> 
> +        inc     r10
> 
> +
> 
> +        mov     eax,1
> 
> +        cpuid
> 
> +        bt      edx,28
> 
> +        jnc     NEAR $L$generic
> 
> +        shr     ebx,16
> 
> +        cmp     bl,r10b
> 
> +        ja      NEAR $L$generic
> 
> +        and     edx,0xefffffff
> 
> +        jmp     NEAR $L$generic
> 
> +
> 
> +$L$intel:
> 
> +        cmp     r11d,4
> 
> +        mov     r10d,-1
> 
> +        jb      NEAR $L$nocacheinfo
> 
> +
> 
> +        mov     eax,4
> 
> +        mov     ecx,0
> 
> +        cpuid
> 
> +        mov     r10d,eax
> 
> +        shr     r10d,14
> 
> +        and     r10d,0xfff
> 
> +
> 
> +$L$nocacheinfo:
> 
> +        mov     eax,1
> 
> +        cpuid
> 
> +        movd    xmm0,eax
> 
> +        and     edx,0xbfefffff
> 
> +        cmp     r9d,0
> 
> +        jne     NEAR $L$notintel
> 
> +        or      edx,0x40000000
> 
> +        and     ah,15
> 
> +        cmp     ah,15
> 
> +        jne     NEAR $L$notP4
> 
> +        or      edx,0x00100000
> 
> +$L$notP4:
> 
> +        cmp     ah,6
> 
> +        jne     NEAR $L$notintel
> 
> +        and     eax,0x0fff0ff0
> 
> +        cmp     eax,0x00050670
> 
> +        je      NEAR $L$knights
> 
> +        cmp     eax,0x00080650
> 
> +        jne     NEAR $L$notintel
> 
> +$L$knights:
> 
> +        and     ecx,0xfbffffff
> 
> +
> 
> +$L$notintel:
> 
> +        bt      edx,28
> 
> +        jnc     NEAR $L$generic
> 
> +        and     edx,0xefffffff
> 
> +        cmp     r10d,0
> 
> +        je      NEAR $L$generic
> 
> +
> 
> +        or      edx,0x10000000
> 
> +        shr     ebx,16
> 
> +        cmp     bl,1
> 
> +        ja      NEAR $L$generic
> 
> +        and     edx,0xefffffff
> 
> +$L$generic:
> 
> +        and     r9d,0x00000800
> 
> +        and     ecx,0xfffff7ff
> 
> +        or      r9d,ecx
> 
> +
> 
> +        mov     r10d,edx
> 
> +
> 
> +        cmp     r11d,7
> 
> +        jb      NEAR $L$no_extended_info
> 
> +        mov     eax,7
> 
> +        xor     ecx,ecx
> 
> +        cpuid
> 
> +        bt      r9d,26
> 
> +        jc      NEAR $L$notknights
> 
> +        and     ebx,0xfff7ffff
> 
> +$L$notknights:
> 
> +        movd    eax,xmm0
> 
> +        and     eax,0x0fff0ff0
> 
> +        cmp     eax,0x00050650
> 
> +        jne     NEAR $L$notskylakex
> 
> +        and     ebx,0xfffeffff
> 
> +
> 
> +$L$notskylakex:
> 
> +        mov     DWORD[8+rdi],ebx
> 
> +        mov     DWORD[12+rdi],ecx
> 
> +$L$no_extended_info:
> 
> +
> 
> +        bt      r9d,27
> 
> +        jnc     NEAR $L$clear_avx
> 
> +        xor     ecx,ecx
> 
> +DB      0x0f,0x01,0xd0
> 
> +        and     eax,0xe6
> 
> +        cmp     eax,0xe6
> 
> +        je      NEAR $L$done
> 
> +        and     DWORD[8+rdi],0x3fdeffff
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +        and     eax,6
> 
> +        cmp     eax,6
> 
> +        je      NEAR $L$done
> 
> +$L$clear_avx:
> 
> +        mov     eax,0xefffe7ff
> 
> +        and     r9d,eax
> 
> +        mov     eax,0x3fdeffdf
> 
> +        and     DWORD[8+rdi],eax
> 
> +$L$done:
> 
> +        shl     r9,32
> 
> +        mov     eax,r10d
> 
> +        mov     rbx,r8
> 
> +
> 
> +        or      rax,r9
> 
> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> 
> +        mov     rsi,QWORD[16+rsp]
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +$L$SEH_end_OPENSSL_ia32_cpuid:
> 
> +
> 
> +global  OPENSSL_cleanse
> 
> +
> 
> +ALIGN   16
> 
> +OPENSSL_cleanse:
> 
> +
> 
> +        xor     rax,rax
> 
> +        cmp     rdx,15
> 
> +        jae     NEAR $L$ot
> 
> +        cmp     rdx,0
> 
> +        je      NEAR $L$ret
> 
> +$L$ittle:
> 
> +        mov     BYTE[rcx],al
> 
> +        sub     rdx,1
> 
> +        lea     rcx,[1+rcx]
> 
> +        jnz     NEAR $L$ittle
> 
> +$L$ret:
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +ALIGN   16
> 
> +$L$ot:
> 
> +        test    rcx,7
> 
> +        jz      NEAR $L$aligned
> 
> +        mov     BYTE[rcx],al
> 
> +        lea     rdx,[((-1))+rdx]
> 
> +        lea     rcx,[1+rcx]
> 
> +        jmp     NEAR $L$ot
> 
> +$L$aligned:
> 
> +        mov     QWORD[rcx],rax
> 
> +        lea     rdx,[((-8))+rdx]
> 
> +        test    rdx,-8
> 
> +        lea     rcx,[8+rcx]
> 
> +        jnz     NEAR $L$aligned
> 
> +        cmp     rdx,0
> 
> +        jne     NEAR $L$ittle
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +global  CRYPTO_memcmp
> 
> +
> 
> +ALIGN   16
> 
> +CRYPTO_memcmp:
> 
> +
> 
> +        xor     rax,rax
> 
> +        xor     r10,r10
> 
> +        cmp     r8,0
> 
> +        je      NEAR $L$no_data
> 
> +        cmp     r8,16
> 
> +        jne     NEAR $L$oop_cmp
> 
> +        mov     r10,QWORD[rcx]
> 
> +        mov     r11,QWORD[8+rcx]
> 
> +        mov     r8,1
> 
> +        xor     r10,QWORD[rdx]
> 
> +        xor     r11,QWORD[8+rdx]
> 
> +        or      r10,r11
> 
> +        cmovnz  rax,r8
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +ALIGN   16
> 
> +$L$oop_cmp:
> 
> +        mov     r10b,BYTE[rcx]
> 
> +        lea     rcx,[1+rcx]
> 
> +        xor     r10b,BYTE[rdx]
> 
> +        lea     rdx,[1+rdx]
> 
> +        or      al,r10b
> 
> +        dec     r8
> 
> +        jnz     NEAR $L$oop_cmp
> 
> +        neg     rax
> 
> +        shr     rax,63
> 
> +$L$no_data:
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +global  OPENSSL_wipe_cpu
> 
> +
> 
> +ALIGN   16
> 
> +OPENSSL_wipe_cpu:
> 
> +        pxor    xmm0,xmm0
> 
> +        pxor    xmm1,xmm1
> 
> +        pxor    xmm2,xmm2
> 
> +        pxor    xmm3,xmm3
> 
> +        pxor    xmm4,xmm4
> 
> +        pxor    xmm5,xmm5
> 
> +        xor     rcx,rcx
> 
> +        xor     rdx,rdx
> 
> +        xor     r8,r8
> 
> +        xor     r9,r9
> 
> +        xor     r10,r10
> 
> +        xor     r11,r11
> 
> +        lea     rax,[8+rsp]
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +global  OPENSSL_instrument_bus
> 
> +
> 
> +ALIGN   16
> 
> +OPENSSL_instrument_bus:
> 
> +
> 
> +        mov     r10,rcx
> 
> +        mov     rcx,rdx
> 
> +        mov     r11,rdx
> 
> +
> 
> +        rdtsc
> 
> +        mov     r8d,eax
> 
> +        mov     r9d,0
> 
> +        clflush [r10]
> 
> +DB      0xf0
> 
> +        add     DWORD[r10],r9d
> 
> +        jmp     NEAR $L$oop
> 
> +ALIGN   16
> 
> +$L$oop: rdtsc
> 
> +        mov     edx,eax
> 
> +        sub     eax,r8d
> 
> +        mov     r8d,edx
> 
> +        mov     r9d,eax
> 
> +        clflush [r10]
> 
> +DB      0xf0
> 
> +        add     DWORD[r10],eax
> 
> +        lea     r10,[4+r10]
> 
> +        sub     rcx,1
> 
> +        jnz     NEAR $L$oop
> 
> +
> 
> +        mov     rax,r11
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +
> 
> +global  OPENSSL_instrument_bus2
> 
> +
> 
> +ALIGN   16
> 
> +OPENSSL_instrument_bus2:
> 
> +
> 
> +        mov     r10,rcx
> 
> +        mov     rcx,rdx
> 
> +        mov     r11,r8
> 
> +        mov     QWORD[8+rsp],rcx
> 
> +
> 
> +        rdtsc
> 
> +        mov     r8d,eax
> 
> +        mov     r9d,0
> 
> +
> 
> +        clflush [r10]
> 
> +DB      0xf0
> 
> +        add     DWORD[r10],r9d
> 
> +
> 
> +        rdtsc
> 
> +        mov     edx,eax
> 
> +        sub     eax,r8d
> 
> +        mov     r8d,edx
> 
> +        mov     r9d,eax
> 
> +$L$oop2:
> 
> +        clflush [r10]
> 
> +DB      0xf0
> 
> +        add     DWORD[r10],eax
> 
> +
> 
> +        sub     r11,1
> 
> +        jz      NEAR $L$done2
> 
> +
> 
> +        rdtsc
> 
> +        mov     edx,eax
> 
> +        sub     eax,r8d
> 
> +        mov     r8d,edx
> 
> +        cmp     eax,r9d
> 
> +        mov     r9d,eax
> 
> +        mov     edx,0
> 
> +        setne   dl
> 
> +        sub     rcx,rdx
> 
> +        lea     r10,[rdx*4+r10]
> 
> +        jnz     NEAR $L$oop2
> 
> +
> 
> +$L$done2:
> 
> +        mov     rax,QWORD[8+rsp]
> 
> +        sub     rax,rcx
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +global  OPENSSL_ia32_rdrand_bytes
> 
> +
> 
> +ALIGN   16
> 
> +OPENSSL_ia32_rdrand_bytes:
> 
> +
> 
> +        xor     rax,rax
> 
> +        cmp     rdx,0
> 
> +        je      NEAR $L$done_rdrand_bytes
> 
> +
> 
> +        mov     r11,8
> 
> +$L$oop_rdrand_bytes:
> 
> +DB      73,15,199,242
> 
> +        jc      NEAR $L$break_rdrand_bytes
> 
> +        dec     r11
> 
> +        jnz     NEAR $L$oop_rdrand_bytes
> 
> +        jmp     NEAR $L$done_rdrand_bytes
> 
> +
> 
> +ALIGN   16
> 
> +$L$break_rdrand_bytes:
> 
> +        cmp     rdx,8
> 
> +        jb      NEAR $L$tail_rdrand_bytes
> 
> +        mov     QWORD[rcx],r10
> 
> +        lea     rcx,[8+rcx]
> 
> +        add     rax,8
> 
> +        sub     rdx,8
> 
> +        jz      NEAR $L$done_rdrand_bytes
> 
> +        mov     r11,8
> 
> +        jmp     NEAR $L$oop_rdrand_bytes
> 
> +
> 
> +ALIGN   16
> 
> +$L$tail_rdrand_bytes:
> 
> +        mov     BYTE[rcx],r10b
> 
> +        lea     rcx,[1+rcx]
> 
> +        inc     rax
> 
> +        shr     r10,8
> 
> +        dec     rdx
> 
> +        jnz     NEAR $L$tail_rdrand_bytes
> 
> +
> 
> +$L$done_rdrand_bytes:
> 
> +        xor     r10,r10
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> +global  OPENSSL_ia32_rdseed_bytes
> 
> +
> 
> +ALIGN   16
> 
> +OPENSSL_ia32_rdseed_bytes:
> 
> +
> 
> +        xor     rax,rax
> 
> +        cmp     rdx,0
> 
> +        je      NEAR $L$done_rdseed_bytes
> 
> +
> 
> +        mov     r11,8
> 
> +$L$oop_rdseed_bytes:
> 
> +DB      73,15,199,250
> 
> +        jc      NEAR $L$break_rdseed_bytes
> 
> +        dec     r11
> 
> +        jnz     NEAR $L$oop_rdseed_bytes
> 
> +        jmp     NEAR $L$done_rdseed_bytes
> 
> +
> 
> +ALIGN   16
> 
> +$L$break_rdseed_bytes:
> 
> +        cmp     rdx,8
> 
> +        jb      NEAR $L$tail_rdseed_bytes
> 
> +        mov     QWORD[rcx],r10
> 
> +        lea     rcx,[8+rcx]
> 
> +        add     rax,8
> 
> +        sub     rdx,8
> 
> +        jz      NEAR $L$done_rdseed_bytes
> 
> +        mov     r11,8
> 
> +        jmp     NEAR $L$oop_rdseed_bytes
> 
> +
> 
> +ALIGN   16
> 
> +$L$tail_rdseed_bytes:
> 
> +        mov     BYTE[rcx],r10b
> 
> +        lea     rcx,[1+rcx]
> 
> +        inc     rax
> 
> +        shr     r10,8
> 
> +        dec     rdx
> 
> +        jnz     NEAR $L$tail_rdseed_bytes
> 
> +
> 
> +$L$done_rdseed_bytes:
> 
> +        xor     r10,r10
> 
> +        DB      0F3h,0C3h               ;repret
> 
> +
> 
> +
> 
> --
> 2.28.0.windows.1


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

* Re: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
  2020-08-13 15:24   ` Yao, Jiewen
@ 2020-08-13 15:37     ` Michael D Kinney
  2020-08-13 15:45       ` Yao, Jiewen
  0 siblings, 1 reply; 42+ messages in thread
From: Michael D Kinney @ 2020-08-13 15:37 UTC (permalink / raw)
  To: Yao, Jiewen, Zurcher, Christopher J, devel@edk2.groups.io,
	Kinney, Michael D
  Cc: Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel

Hi Jiewen,

For this use case, generating the files as part of the build process would add
a dependency in pearl.

Based on other recent CryptoPkg changes and some being discussed in BZ, I am 
seeing more changes to the OpenSLL .pl configuration files, and I am concerned
that based on platform requirements, we may need to build OpenSSL with
different .pl config file settings which would also add a pearl dependency
to the build.

So exploring what it would take to add the pearl dependency to the build system
is worth exploring and if successful would eliminate the need to checkin these
types of autogenerated files.  This would also reduce maintenance of the 
auto-genererated files when EDK II moves to a new version of OpenSSL.

@Cristopher - Can you please share a branch that uses pearl to generate the files
instead of checking them in?  I would like the BaseTools maintainers to review
that and evaluate adding the pearl dependency.  Hopefully, we can make the
pearl dependency detectable so it is only required if the build requires it.

Thanks,

Mike

> -----Original Message-----
> From: Yao, Jiewen <jiewen.yao@intel.com>
> Sent: Thursday, August 13, 2020 8:25 AM
> To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>; devel@edk2.groups.io
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>; Kinney, Michael D
> <michael.d.kinney@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
> 
> + Mike Kinney
> 
> I am not sure if it is a right way to check in auto-generated file.
> That means, whenever we upgrade the openssl, we need manually generate them again.
> Any step by step, or readme to tell us how to do that?
> 
> Mike, would you please double confirm what is the right way for auto-generated file in EDKII?
> 
> 
> > -----Original Message-----
> > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > Sent: Tuesday, August 4, 2020 8:24 AM
> > To: devel@edk2.groups.io
> > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J <jian.j.wang@intel.com>;
> > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Subject: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated
> > assembly files for X64
> >
> > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> >
> > Adding the auto-generated assembly files for the X64 architecture.
> >
> > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > Cc: Jian J Wang <jian.j.wang@intel.com>
> > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Signed-off-by: Christopher J Zurcher <christopher.j.zurcher@intel.com>
> > ---
> >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm     |  732
> > +++
> >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm   |
> > 1916 ++++++++
> >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-x86_64.nasm |
> > 78 +
> >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm        | 5103
> > ++++++++++++++++++++
> >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm        | 1173
> > +++++
> >  CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm      |
> > 1569 ++++++
> >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm      | 3137
> > ++++++++++++
> >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm         | 2884
> > +++++++++++
> >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm    |
> > 3461 +++++++++++++
> >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm       | 3313
> > +++++++++++++
> >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm       | 1938
> > ++++++++
> >  CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm             |  491 ++
> >  12 files changed, 25795 insertions(+)
> >
> > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
> > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
> > x86_64.nasm
> > new file mode 100644
> > index 0000000000..1a3ed1dd35
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm
> > @@ -0,0 +1,732 @@
> > +; WARNING: do not edit!
> >
> > +; Generated from openssl/crypto/aes/asm/aesni-mb-x86_64.pl
> >
> > +;
> >
> > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
> >
> > +;
> >
> > +; Licensed under the OpenSSL license (the "License").  You may not use
> >
> > +; this file except in compliance with the License.  You can obtain a copy
> >
> > +; in the file LICENSE in the source distribution or at
> >
> > +; https://www.openssl.org/source/license.html
> >
> > +
> >
> > +default rel
> >
> > +%define XMMWORD
> >
> > +%define YMMWORD
> >
> > +%define ZMMWORD
> >
> > +section .text code align=64
> >
> > +
> >
> > +
> >
> > +EXTERN  OPENSSL_ia32cap_P
> >
> > +
> >
> > +global  aesni_multi_cbc_encrypt
> >
> > +
> >
> > +ALIGN   32
> >
> > +aesni_multi_cbc_encrypt:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_aesni_multi_cbc_encrypt:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +
> >
> > +
> >
> > +
> >
> > +        mov     rax,rsp
> >
> > +
> >
> > +        push    rbx
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        push    r12
> >
> > +
> >
> > +        push    r13
> >
> > +
> >
> > +        push    r14
> >
> > +
> >
> > +        push    r15
> >
> > +
> >
> > +        lea     rsp,[((-168))+rsp]
> >
> > +        movaps  XMMWORD[rsp],xmm6
> >
> > +        movaps  XMMWORD[16+rsp],xmm7
> >
> > +        movaps  XMMWORD[32+rsp],xmm8
> >
> > +        movaps  XMMWORD[48+rsp],xmm9
> >
> > +        movaps  XMMWORD[64+rsp],xmm10
> >
> > +        movaps  XMMWORD[80+rsp],xmm11
> >
> > +        movaps  XMMWORD[96+rsp],xmm12
> >
> > +        movaps  XMMWORD[(-104)+rax],xmm13
> >
> > +        movaps  XMMWORD[(-88)+rax],xmm14
> >
> > +        movaps  XMMWORD[(-72)+rax],xmm15
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +        sub     rsp,48
> >
> > +        and     rsp,-64
> >
> > +        mov     QWORD[16+rsp],rax
> >
> > +
> >
> > +
> >
> > +$L$enc4x_body:
> >
> > +        movdqu  xmm12,XMMWORD[rsi]
> >
> > +        lea     rsi,[120+rsi]
> >
> > +        lea     rdi,[80+rdi]
> >
> > +
> >
> > +$L$enc4x_loop_grande:
> >
> > +        mov     DWORD[24+rsp],edx
> >
> > +        xor     edx,edx
> >
> > +        mov     ecx,DWORD[((-64))+rdi]
> >
> > +        mov     r8,QWORD[((-80))+rdi]
> >
> > +        cmp     ecx,edx
> >
> > +        mov     r12,QWORD[((-72))+rdi]
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        movdqu  xmm2,XMMWORD[((-56))+rdi]
> >
> > +        mov     DWORD[32+rsp],ecx
> >
> > +        cmovle  r8,rsp
> >
> > +        mov     ecx,DWORD[((-24))+rdi]
> >
> > +        mov     r9,QWORD[((-40))+rdi]
> >
> > +        cmp     ecx,edx
> >
> > +        mov     r13,QWORD[((-32))+rdi]
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        movdqu  xmm3,XMMWORD[((-16))+rdi]
> >
> > +        mov     DWORD[36+rsp],ecx
> >
> > +        cmovle  r9,rsp
> >
> > +        mov     ecx,DWORD[16+rdi]
> >
> > +        mov     r10,QWORD[rdi]
> >
> > +        cmp     ecx,edx
> >
> > +        mov     r14,QWORD[8+rdi]
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        movdqu  xmm4,XMMWORD[24+rdi]
> >
> > +        mov     DWORD[40+rsp],ecx
> >
> > +        cmovle  r10,rsp
> >
> > +        mov     ecx,DWORD[56+rdi]
> >
> > +        mov     r11,QWORD[40+rdi]
> >
> > +        cmp     ecx,edx
> >
> > +        mov     r15,QWORD[48+rdi]
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        movdqu  xmm5,XMMWORD[64+rdi]
> >
> > +        mov     DWORD[44+rsp],ecx
> >
> > +        cmovle  r11,rsp
> >
> > +        test    edx,edx
> >
> > +        jz      NEAR $L$enc4x_done
> >
> > +
> >
> > +        movups  xmm1,XMMWORD[((16-120))+rsi]
> >
> > +        pxor    xmm2,xmm12
> >
> > +        movups  xmm0,XMMWORD[((32-120))+rsi]
> >
> > +        pxor    xmm3,xmm12
> >
> > +        mov     eax,DWORD[((240-120))+rsi]
> >
> > +        pxor    xmm4,xmm12
> >
> > +        movdqu  xmm6,XMMWORD[r8]
> >
> > +        pxor    xmm5,xmm12
> >
> > +        movdqu  xmm7,XMMWORD[r9]
> >
> > +        pxor    xmm2,xmm6
> >
> > +        movdqu  xmm8,XMMWORD[r10]
> >
> > +        pxor    xmm3,xmm7
> >
> > +        movdqu  xmm9,XMMWORD[r11]
> >
> > +        pxor    xmm4,xmm8
> >
> > +        pxor    xmm5,xmm9
> >
> > +        movdqa  xmm10,XMMWORD[32+rsp]
> >
> > +        xor     rbx,rbx
> >
> > +        jmp     NEAR $L$oop_enc4x
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$oop_enc4x:
> >
> > +        add     rbx,16
> >
> > +        lea     rbp,[16+rsp]
> >
> > +        mov     ecx,1
> >
> > +        sub     rbp,rbx
> >
> > +
> >
> > +DB      102,15,56,220,209
> >
> > +        prefetcht0      [31+rbx*1+r8]
> >
> > +        prefetcht0      [31+rbx*1+r9]
> >
> > +DB      102,15,56,220,217
> >
> > +        prefetcht0      [31+rbx*1+r10]
> >
> > +        prefetcht0      [31+rbx*1+r10]
> >
> > +DB      102,15,56,220,225
> >
> > +DB      102,15,56,220,233
> >
> > +        movups  xmm1,XMMWORD[((48-120))+rsi]
> >
> > +        cmp     ecx,DWORD[32+rsp]
> >
> > +DB      102,15,56,220,208
> >
> > +DB      102,15,56,220,216
> >
> > +DB      102,15,56,220,224
> >
> > +        cmovge  r8,rbp
> >
> > +        cmovg   r12,rbp
> >
> > +DB      102,15,56,220,232
> >
> > +        movups  xmm0,XMMWORD[((-56))+rsi]
> >
> > +        cmp     ecx,DWORD[36+rsp]
> >
> > +DB      102,15,56,220,209
> >
> > +DB      102,15,56,220,217
> >
> > +DB      102,15,56,220,225
> >
> > +        cmovge  r9,rbp
> >
> > +        cmovg   r13,rbp
> >
> > +DB      102,15,56,220,233
> >
> > +        movups  xmm1,XMMWORD[((-40))+rsi]
> >
> > +        cmp     ecx,DWORD[40+rsp]
> >
> > +DB      102,15,56,220,208
> >
> > +DB      102,15,56,220,216
> >
> > +DB      102,15,56,220,224
> >
> > +        cmovge  r10,rbp
> >
> > +        cmovg   r14,rbp
> >
> > +DB      102,15,56,220,232
> >
> > +        movups  xmm0,XMMWORD[((-24))+rsi]
> >
> > +        cmp     ecx,DWORD[44+rsp]
> >
> > +DB      102,15,56,220,209
> >
> > +DB      102,15,56,220,217
> >
> > +DB      102,15,56,220,225
> >
> > +        cmovge  r11,rbp
> >
> > +        cmovg   r15,rbp
> >
> > +DB      102,15,56,220,233
> >
> > +        movups  xmm1,XMMWORD[((-8))+rsi]
> >
> > +        movdqa  xmm11,xmm10
> >
> > +DB      102,15,56,220,208
> >
> > +        prefetcht0      [15+rbx*1+r12]
> >
> > +        prefetcht0      [15+rbx*1+r13]
> >
> > +DB      102,15,56,220,216
> >
> > +        prefetcht0      [15+rbx*1+r14]
> >
> > +        prefetcht0      [15+rbx*1+r15]
> >
> > +DB      102,15,56,220,224
> >
> > +DB      102,15,56,220,232
> >
> > +        movups  xmm0,XMMWORD[((128-120))+rsi]
> >
> > +        pxor    xmm12,xmm12
> >
> > +
> >
> > +DB      102,15,56,220,209
> >
> > +        pcmpgtd xmm11,xmm12
> >
> > +        movdqu  xmm12,XMMWORD[((-120))+rsi]
> >
> > +DB      102,15,56,220,217
> >
> > +        paddd   xmm10,xmm11
> >
> > +        movdqa  XMMWORD[32+rsp],xmm10
> >
> > +DB      102,15,56,220,225
> >
> > +DB      102,15,56,220,233
> >
> > +        movups  xmm1,XMMWORD[((144-120))+rsi]
> >
> > +
> >
> > +        cmp     eax,11
> >
> > +
> >
> > +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[((160-120))+rsi]
> >
> > +
> >
> > +        jb      NEAR $L$enc4x_tail
> >
> > +
> >
> > +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[((176-120))+rsi]
> >
> > +
> >
> > +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[((192-120))+rsi]
> >
> > +
> >
> > +        je      NEAR $L$enc4x_tail
> >
> > +
> >
> > +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[((208-120))+rsi]
> >
> > +
> >
> > +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[((224-120))+rsi]
> >
> > +        jmp     NEAR $L$enc4x_tail
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$enc4x_tail:
> >
> > +DB      102,15,56,220,209
> >
> > +DB      102,15,56,220,217
> >
> > +DB      102,15,56,220,225
> >
> > +DB      102,15,56,220,233
> >
> > +        movdqu  xmm6,XMMWORD[rbx*1+r8]
> >
> > +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
> >
> > +
> >
> > +DB      102,15,56,221,208
> >
> > +        movdqu  xmm7,XMMWORD[rbx*1+r9]
> >
> > +        pxor    xmm6,xmm12
> >
> > +DB      102,15,56,221,216
> >
> > +        movdqu  xmm8,XMMWORD[rbx*1+r10]
> >
> > +        pxor    xmm7,xmm12
> >
> > +DB      102,15,56,221,224
> >
> > +        movdqu  xmm9,XMMWORD[rbx*1+r11]
> >
> > +        pxor    xmm8,xmm12
> >
> > +DB      102,15,56,221,232
> >
> > +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
> >
> > +        pxor    xmm9,xmm12
> >
> > +
> >
> > +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
> >
> > +        pxor    xmm2,xmm6
> >
> > +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
> >
> > +        pxor    xmm3,xmm7
> >
> > +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
> >
> > +        pxor    xmm4,xmm8
> >
> > +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
> >
> > +        pxor    xmm5,xmm9
> >
> > +
> >
> > +        dec     edx
> >
> > +        jnz     NEAR $L$oop_enc4x
> >
> > +
> >
> > +        mov     rax,QWORD[16+rsp]
> >
> > +
> >
> > +        mov     edx,DWORD[24+rsp]
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +        lea     rdi,[160+rdi]
> >
> > +        dec     edx
> >
> > +        jnz     NEAR $L$enc4x_loop_grande
> >
> > +
> >
> > +$L$enc4x_done:
> >
> > +        movaps  xmm6,XMMWORD[((-216))+rax]
> >
> > +        movaps  xmm7,XMMWORD[((-200))+rax]
> >
> > +        movaps  xmm8,XMMWORD[((-184))+rax]
> >
> > +        movaps  xmm9,XMMWORD[((-168))+rax]
> >
> > +        movaps  xmm10,XMMWORD[((-152))+rax]
> >
> > +        movaps  xmm11,XMMWORD[((-136))+rax]
> >
> > +        movaps  xmm12,XMMWORD[((-120))+rax]
> >
> > +
> >
> > +
> >
> > +
> >
> > +        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$enc4x_epilogue:
> >
> > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> >
> > +        mov     rsi,QWORD[16+rsp]
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +$L$SEH_end_aesni_multi_cbc_encrypt:
> >
> > +
> >
> > +global  aesni_multi_cbc_decrypt
> >
> > +
> >
> > +ALIGN   32
> >
> > +aesni_multi_cbc_decrypt:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_aesni_multi_cbc_decrypt:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +
> >
> > +
> >
> > +
> >
> > +        mov     rax,rsp
> >
> > +
> >
> > +        push    rbx
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        push    r12
> >
> > +
> >
> > +        push    r13
> >
> > +
> >
> > +        push    r14
> >
> > +
> >
> > +        push    r15
> >
> > +
> >
> > +        lea     rsp,[((-168))+rsp]
> >
> > +        movaps  XMMWORD[rsp],xmm6
> >
> > +        movaps  XMMWORD[16+rsp],xmm7
> >
> > +        movaps  XMMWORD[32+rsp],xmm8
> >
> > +        movaps  XMMWORD[48+rsp],xmm9
> >
> > +        movaps  XMMWORD[64+rsp],xmm10
> >
> > +        movaps  XMMWORD[80+rsp],xmm11
> >
> > +        movaps  XMMWORD[96+rsp],xmm12
> >
> > +        movaps  XMMWORD[(-104)+rax],xmm13
> >
> > +        movaps  XMMWORD[(-88)+rax],xmm14
> >
> > +        movaps  XMMWORD[(-72)+rax],xmm15
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +        sub     rsp,48
> >
> > +        and     rsp,-64
> >
> > +        mov     QWORD[16+rsp],rax
> >
> > +
> >
> > +
> >
> > +$L$dec4x_body:
> >
> > +        movdqu  xmm12,XMMWORD[rsi]
> >
> > +        lea     rsi,[120+rsi]
> >
> > +        lea     rdi,[80+rdi]
> >
> > +
> >
> > +$L$dec4x_loop_grande:
> >
> > +        mov     DWORD[24+rsp],edx
> >
> > +        xor     edx,edx
> >
> > +        mov     ecx,DWORD[((-64))+rdi]
> >
> > +        mov     r8,QWORD[((-80))+rdi]
> >
> > +        cmp     ecx,edx
> >
> > +        mov     r12,QWORD[((-72))+rdi]
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        movdqu  xmm6,XMMWORD[((-56))+rdi]
> >
> > +        mov     DWORD[32+rsp],ecx
> >
> > +        cmovle  r8,rsp
> >
> > +        mov     ecx,DWORD[((-24))+rdi]
> >
> > +        mov     r9,QWORD[((-40))+rdi]
> >
> > +        cmp     ecx,edx
> >
> > +        mov     r13,QWORD[((-32))+rdi]
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        movdqu  xmm7,XMMWORD[((-16))+rdi]
> >
> > +        mov     DWORD[36+rsp],ecx
> >
> > +        cmovle  r9,rsp
> >
> > +        mov     ecx,DWORD[16+rdi]
> >
> > +        mov     r10,QWORD[rdi]
> >
> > +        cmp     ecx,edx
> >
> > +        mov     r14,QWORD[8+rdi]
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        movdqu  xmm8,XMMWORD[24+rdi]
> >
> > +        mov     DWORD[40+rsp],ecx
> >
> > +        cmovle  r10,rsp
> >
> > +        mov     ecx,DWORD[56+rdi]
> >
> > +        mov     r11,QWORD[40+rdi]
> >
> > +        cmp     ecx,edx
> >
> > +        mov     r15,QWORD[48+rdi]
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        movdqu  xmm9,XMMWORD[64+rdi]
> >
> > +        mov     DWORD[44+rsp],ecx
> >
> > +        cmovle  r11,rsp
> >
> > +        test    edx,edx
> >
> > +        jz      NEAR $L$dec4x_done
> >
> > +
> >
> > +        movups  xmm1,XMMWORD[((16-120))+rsi]
> >
> > +        movups  xmm0,XMMWORD[((32-120))+rsi]
> >
> > +        mov     eax,DWORD[((240-120))+rsi]
> >
> > +        movdqu  xmm2,XMMWORD[r8]
> >
> > +        movdqu  xmm3,XMMWORD[r9]
> >
> > +        pxor    xmm2,xmm12
> >
> > +        movdqu  xmm4,XMMWORD[r10]
> >
> > +        pxor    xmm3,xmm12
> >
> > +        movdqu  xmm5,XMMWORD[r11]
> >
> > +        pxor    xmm4,xmm12
> >
> > +        pxor    xmm5,xmm12
> >
> > +        movdqa  xmm10,XMMWORD[32+rsp]
> >
> > +        xor     rbx,rbx
> >
> > +        jmp     NEAR $L$oop_dec4x
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$oop_dec4x:
> >
> > +        add     rbx,16
> >
> > +        lea     rbp,[16+rsp]
> >
> > +        mov     ecx,1
> >
> > +        sub     rbp,rbx
> >
> > +
> >
> > +DB      102,15,56,222,209
> >
> > +        prefetcht0      [31+rbx*1+r8]
> >
> > +        prefetcht0      [31+rbx*1+r9]
> >
> > +DB      102,15,56,222,217
> >
> > +        prefetcht0      [31+rbx*1+r10]
> >
> > +        prefetcht0      [31+rbx*1+r11]
> >
> > +DB      102,15,56,222,225
> >
> > +DB      102,15,56,222,233
> >
> > +        movups  xmm1,XMMWORD[((48-120))+rsi]
> >
> > +        cmp     ecx,DWORD[32+rsp]
> >
> > +DB      102,15,56,222,208
> >
> > +DB      102,15,56,222,216
> >
> > +DB      102,15,56,222,224
> >
> > +        cmovge  r8,rbp
> >
> > +        cmovg   r12,rbp
> >
> > +DB      102,15,56,222,232
> >
> > +        movups  xmm0,XMMWORD[((-56))+rsi]
> >
> > +        cmp     ecx,DWORD[36+rsp]
> >
> > +DB      102,15,56,222,209
> >
> > +DB      102,15,56,222,217
> >
> > +DB      102,15,56,222,225
> >
> > +        cmovge  r9,rbp
> >
> > +        cmovg   r13,rbp
> >
> > +DB      102,15,56,222,233
> >
> > +        movups  xmm1,XMMWORD[((-40))+rsi]
> >
> > +        cmp     ecx,DWORD[40+rsp]
> >
> > +DB      102,15,56,222,208
> >
> > +DB      102,15,56,222,216
> >
> > +DB      102,15,56,222,224
> >
> > +        cmovge  r10,rbp
> >
> > +        cmovg   r14,rbp
> >
> > +DB      102,15,56,222,232
> >
> > +        movups  xmm0,XMMWORD[((-24))+rsi]
> >
> > +        cmp     ecx,DWORD[44+rsp]
> >
> > +DB      102,15,56,222,209
> >
> > +DB      102,15,56,222,217
> >
> > +DB      102,15,56,222,225
> >
> > +        cmovge  r11,rbp
> >
> > +        cmovg   r15,rbp
> >
> > +DB      102,15,56,222,233
> >
> > +        movups  xmm1,XMMWORD[((-8))+rsi]
> >
> > +        movdqa  xmm11,xmm10
> >
> > +DB      102,15,56,222,208
> >
> > +        prefetcht0      [15+rbx*1+r12]
> >
> > +        prefetcht0      [15+rbx*1+r13]
> >
> > +DB      102,15,56,222,216
> >
> > +        prefetcht0      [15+rbx*1+r14]
> >
> > +        prefetcht0      [15+rbx*1+r15]
> >
> > +DB      102,15,56,222,224
> >
> > +DB      102,15,56,222,232
> >
> > +        movups  xmm0,XMMWORD[((128-120))+rsi]
> >
> > +        pxor    xmm12,xmm12
> >
> > +
> >
> > +DB      102,15,56,222,209
> >
> > +        pcmpgtd xmm11,xmm12
> >
> > +        movdqu  xmm12,XMMWORD[((-120))+rsi]
> >
> > +DB      102,15,56,222,217
> >
> > +        paddd   xmm10,xmm11
> >
> > +        movdqa  XMMWORD[32+rsp],xmm10
> >
> > +DB      102,15,56,222,225
> >
> > +DB      102,15,56,222,233
> >
> > +        movups  xmm1,XMMWORD[((144-120))+rsi]
> >
> > +
> >
> > +        cmp     eax,11
> >
> > +
> >
> > +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[((160-120))+rsi]
> >
> > +
> >
> > +        jb      NEAR $L$dec4x_tail
> >
> > +
> >
> > +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[((176-120))+rsi]
> >
> > +
> >
> > +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[((192-120))+rsi]
> >
> > +
> >
> > +        je      NEAR $L$dec4x_tail
> >
> > +
> >
> > +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[((208-120))+rsi]
> >
> > +
> >
> > +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[((224-120))+rsi]
> >
> > +        jmp     NEAR $L$dec4x_tail
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$dec4x_tail:
> >
> > +DB      102,15,56,222,209
> >
> > +DB      102,15,56,222,217
> >
> > +DB      102,15,56,222,225
> >
> > +        pxor    xmm6,xmm0
> >
> > +        pxor    xmm7,xmm0
> >
> > +DB      102,15,56,222,233
> >
> > +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
> >
> > +        pxor    xmm8,xmm0
> >
> > +        pxor    xmm9,xmm0
> >
> > +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
> >
> > +
> >
> > +DB      102,15,56,223,214
> >
> > +DB      102,15,56,223,223
> >
> > +        movdqu  xmm6,XMMWORD[((-16))+rbx*1+r8]
> >
> > +        movdqu  xmm7,XMMWORD[((-16))+rbx*1+r9]
> >
> > +DB      102,65,15,56,223,224
> >
> > +DB      102,65,15,56,223,233
> >
> > +        movdqu  xmm8,XMMWORD[((-16))+rbx*1+r10]
> >
> > +        movdqu  xmm9,XMMWORD[((-16))+rbx*1+r11]
> >
> > +
> >
> > +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
> >
> > +        movdqu  xmm2,XMMWORD[rbx*1+r8]
> >
> > +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
> >
> > +        movdqu  xmm3,XMMWORD[rbx*1+r9]
> >
> > +        pxor    xmm2,xmm12
> >
> > +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
> >
> > +        movdqu  xmm4,XMMWORD[rbx*1+r10]
> >
> > +        pxor    xmm3,xmm12
> >
> > +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
> >
> > +        movdqu  xmm5,XMMWORD[rbx*1+r11]
> >
> > +        pxor    xmm4,xmm12
> >
> > +        pxor    xmm5,xmm12
> >
> > +
> >
> > +        dec     edx
> >
> > +        jnz     NEAR $L$oop_dec4x
> >
> > +
> >
> > +        mov     rax,QWORD[16+rsp]
> >
> > +
> >
> > +        mov     edx,DWORD[24+rsp]
> >
> > +
> >
> > +        lea     rdi,[160+rdi]
> >
> > +        dec     edx
> >
> > +        jnz     NEAR $L$dec4x_loop_grande
> >
> > +
> >
> > +$L$dec4x_done:
> >
> > +        movaps  xmm6,XMMWORD[((-216))+rax]
> >
> > +        movaps  xmm7,XMMWORD[((-200))+rax]
> >
> > +        movaps  xmm8,XMMWORD[((-184))+rax]
> >
> > +        movaps  xmm9,XMMWORD[((-168))+rax]
> >
> > +        movaps  xmm10,XMMWORD[((-152))+rax]
> >
> > +        movaps  xmm11,XMMWORD[((-136))+rax]
> >
> > +        movaps  xmm12,XMMWORD[((-120))+rax]
> >
> > +
> >
> > +
> >
> > +
> >
> > +        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$dec4x_epilogue:
> >
> > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> >
> > +        mov     rsi,QWORD[16+rsp]
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +$L$SEH_end_aesni_multi_cbc_decrypt:
> >
> > +EXTERN  __imp_RtlVirtualUnwind
> >
> > +
> >
> > +ALIGN   16
> >
> > +se_handler:
> >
> > +        push    rsi
> >
> > +        push    rdi
> >
> > +        push    rbx
> >
> > +        push    rbp
> >
> > +        push    r12
> >
> > +        push    r13
> >
> > +        push    r14
> >
> > +        push    r15
> >
> > +        pushfq
> >
> > +        sub     rsp,64
> >
> > +
> >
> > +        mov     rax,QWORD[120+r8]
> >
> > +        mov     rbx,QWORD[248+r8]
> >
> > +
> >
> > +        mov     rsi,QWORD[8+r9]
> >
> > +        mov     r11,QWORD[56+r9]
> >
> > +
> >
> > +        mov     r10d,DWORD[r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$in_prologue
> >
> > +
> >
> > +        mov     rax,QWORD[152+r8]
> >
> > +
> >
> > +        mov     r10d,DWORD[4+r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jae     NEAR $L$in_prologue
> >
> > +
> >
> > +        mov     rax,QWORD[16+rax]
> >
> > +
> >
> > +        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     rsi,[((-56-160))+rax]
> >
> > +        lea     rdi,[512+r8]
> >
> > +        mov     ecx,20
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +$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[40+r9]
> >
> > +        mov     rsi,r8
> >
> > +        mov     ecx,154
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +        mov     rsi,r9
> >
> > +        xor     rcx,rcx
> >
> > +        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
> >
> > +        popfq
> >
> > +        pop     r15
> >
> > +        pop     r14
> >
> > +        pop     r13
> >
> > +        pop     r12
> >
> > +        pop     rbp
> >
> > +        pop     rbx
> >
> > +        pop     rdi
> >
> > +        pop     rsi
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +section .pdata rdata align=4
> >
> > +ALIGN   4
> >
> > +        DD      $L$SEH_begin_aesni_multi_cbc_encrypt wrt ..imagebase
> >
> > +        DD      $L$SEH_end_aesni_multi_cbc_encrypt wrt ..imagebase
> >
> > +        DD      $L$SEH_info_aesni_multi_cbc_encrypt wrt ..imagebase
> >
> > +        DD      $L$SEH_begin_aesni_multi_cbc_decrypt wrt ..imagebase
> >
> > +        DD      $L$SEH_end_aesni_multi_cbc_decrypt wrt ..imagebase
> >
> > +        DD      $L$SEH_info_aesni_multi_cbc_decrypt wrt ..imagebase
> >
> > +section .xdata rdata align=8
> >
> > +ALIGN   8
> >
> > +$L$SEH_info_aesni_multi_cbc_encrypt:
> >
> > +DB      9,0,0,0
> >
> > +        DD      se_handler wrt ..imagebase
> >
> > +        DD      $L$enc4x_body wrt ..imagebase,$L$enc4x_epilogue
> > wrt ..imagebase
> >
> > +$L$SEH_info_aesni_multi_cbc_decrypt:
> >
> > +DB      9,0,0,0
> >
> > +        DD      se_handler wrt ..imagebase
> >
> > +        DD      $L$dec4x_body wrt ..imagebase,$L$dec4x_epilogue
> > wrt ..imagebase
> >
> > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
> > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
> > x86_64.nasm
> > new file mode 100644
> > index 0000000000..f4fd9ca50d
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm
> > @@ -0,0 +1,1916 @@
> > +; WARNING: do not edit!
> >
> > +; Generated from openssl/crypto/aes/asm/aesni-sha1-x86_64.pl
> >
> > +;
> >
> > +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved.
> >
> > +;
> >
> > +; Licensed under the OpenSSL license (the "License").  You may not use
> >
> > +; this file except in compliance with the License.  You can obtain a copy
> >
> > +; in the file LICENSE in the source distribution or at
> >
> > +; https://www.openssl.org/source/license.html
> >
> > +
> >
> > +default rel
> >
> > +%define XMMWORD
> >
> > +%define YMMWORD
> >
> > +%define ZMMWORD
> >
> > +section .text code align=64
> >
> > +
> >
> > +EXTERN  OPENSSL_ia32cap_P
> >
> > +
> >
> > +global  aesni_cbc_sha1_enc
> >
> > +
> >
> > +ALIGN   32
> >
> > +aesni_cbc_sha1_enc:
> >
> > +
> >
> > +
> >
> > +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+0))]
> >
> > +        mov     r11,QWORD[((OPENSSL_ia32cap_P+4))]
> >
> > +        bt      r11,61
> >
> > +        jc      NEAR aesni_cbc_sha1_enc_shaext
> >
> > +        jmp     NEAR aesni_cbc_sha1_enc_ssse3
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   32
> >
> > +aesni_cbc_sha1_enc_ssse3:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_aesni_cbc_sha1_enc_ssse3:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +        mov     rcx,r9
> >
> > +        mov     r8,QWORD[40+rsp]
> >
> > +        mov     r9,QWORD[48+rsp]
> >
> > +
> >
> > +
> >
> > +
> >
> > +        mov     r10,QWORD[56+rsp]
> >
> > +
> >
> > +
> >
> > +        push    rbx
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        push    r12
> >
> > +
> >
> > +        push    r13
> >
> > +
> >
> > +        push    r14
> >
> > +
> >
> > +        push    r15
> >
> > +
> >
> > +        lea     rsp,[((-264))+rsp]
> >
> > +
> >
> > +
> >
> > +
> >
> > +        movaps  XMMWORD[(96+0)+rsp],xmm6
> >
> > +        movaps  XMMWORD[(96+16)+rsp],xmm7
> >
> > +        movaps  XMMWORD[(96+32)+rsp],xmm8
> >
> > +        movaps  XMMWORD[(96+48)+rsp],xmm9
> >
> > +        movaps  XMMWORD[(96+64)+rsp],xmm10
> >
> > +        movaps  XMMWORD[(96+80)+rsp],xmm11
> >
> > +        movaps  XMMWORD[(96+96)+rsp],xmm12
> >
> > +        movaps  XMMWORD[(96+112)+rsp],xmm13
> >
> > +        movaps  XMMWORD[(96+128)+rsp],xmm14
> >
> > +        movaps  XMMWORD[(96+144)+rsp],xmm15
> >
> > +$L$prologue_ssse3:
> >
> > +        mov     r12,rdi
> >
> > +        mov     r13,rsi
> >
> > +        mov     r14,rdx
> >
> > +        lea     r15,[112+rcx]
> >
> > +        movdqu  xmm2,XMMWORD[r8]
> >
> > +        mov     QWORD[88+rsp],r8
> >
> > +        shl     r14,6
> >
> > +        sub     r13,r12
> >
> > +        mov     r8d,DWORD[((240-112))+r15]
> >
> > +        add     r14,r10
> >
> > +
> >
> > +        lea     r11,[K_XX_XX]
> >
> > +        mov     eax,DWORD[r9]
> >
> > +        mov     ebx,DWORD[4+r9]
> >
> > +        mov     ecx,DWORD[8+r9]
> >
> > +        mov     edx,DWORD[12+r9]
> >
> > +        mov     esi,ebx
> >
> > +        mov     ebp,DWORD[16+r9]
> >
> > +        mov     edi,ecx
> >
> > +        xor     edi,edx
> >
> > +        and     esi,edi
> >
> > +
> >
> > +        movdqa  xmm3,XMMWORD[64+r11]
> >
> > +        movdqa  xmm13,XMMWORD[r11]
> >
> > +        movdqu  xmm4,XMMWORD[r10]
> >
> > +        movdqu  xmm5,XMMWORD[16+r10]
> >
> > +        movdqu  xmm6,XMMWORD[32+r10]
> >
> > +        movdqu  xmm7,XMMWORD[48+r10]
> >
> > +DB      102,15,56,0,227
> >
> > +DB      102,15,56,0,235
> >
> > +DB      102,15,56,0,243
> >
> > +        add     r10,64
> >
> > +        paddd   xmm4,xmm13
> >
> > +DB      102,15,56,0,251
> >
> > +        paddd   xmm5,xmm13
> >
> > +        paddd   xmm6,xmm13
> >
> > +        movdqa  XMMWORD[rsp],xmm4
> >
> > +        psubd   xmm4,xmm13
> >
> > +        movdqa  XMMWORD[16+rsp],xmm5
> >
> > +        psubd   xmm5,xmm13
> >
> > +        movdqa  XMMWORD[32+rsp],xmm6
> >
> > +        psubd   xmm6,xmm13
> >
> > +        movups  xmm15,XMMWORD[((-112))+r15]
> >
> > +        movups  xmm0,XMMWORD[((16-112))+r15]
> >
> > +        jmp     NEAR $L$oop_ssse3
> >
> > +ALIGN   32
> >
> > +$L$oop_ssse3:
> >
> > +        ror     ebx,2
> >
> > +        movups  xmm14,XMMWORD[r12]
> >
> > +        xorps   xmm14,xmm15
> >
> > +        xorps   xmm2,xmm14
> >
> > +        movups  xmm1,XMMWORD[((-80))+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        pshufd  xmm8,xmm4,238
> >
> > +        xor     esi,edx
> >
> > +        movdqa  xmm12,xmm7
> >
> > +        paddd   xmm13,xmm7
> >
> > +        mov     edi,eax
> >
> > +        add     ebp,DWORD[rsp]
> >
> > +        punpcklqdq      xmm8,xmm5
> >
> > +        xor     ebx,ecx
> >
> > +        rol     eax,5
> >
> > +        add     ebp,esi
> >
> > +        psrldq  xmm12,4
> >
> > +        and     edi,ebx
> >
> > +        xor     ebx,ecx
> >
> > +        pxor    xmm8,xmm4
> >
> > +        add     ebp,eax
> >
> > +        ror     eax,7
> >
> > +        pxor    xmm12,xmm6
> >
> > +        xor     edi,ecx
> >
> > +        mov     esi,ebp
> >
> > +        add     edx,DWORD[4+rsp]
> >
> > +        pxor    xmm8,xmm12
> >
> > +        xor     eax,ebx
> >
> > +        rol     ebp,5
> >
> > +        movdqa  XMMWORD[48+rsp],xmm13
> >
> > +        add     edx,edi
> >
> > +        movups  xmm0,XMMWORD[((-64))+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        and     esi,eax
> >
> > +        movdqa  xmm3,xmm8
> >
> > +        xor     eax,ebx
> >
> > +        add     edx,ebp
> >
> > +        ror     ebp,7
> >
> > +        movdqa  xmm12,xmm8
> >
> > +        xor     esi,ebx
> >
> > +        pslldq  xmm3,12
> >
> > +        paddd   xmm8,xmm8
> >
> > +        mov     edi,edx
> >
> > +        add     ecx,DWORD[8+rsp]
> >
> > +        psrld   xmm12,31
> >
> > +        xor     ebp,eax
> >
> > +        rol     edx,5
> >
> > +        add     ecx,esi
> >
> > +        movdqa  xmm13,xmm3
> >
> > +        and     edi,ebp
> >
> > +        xor     ebp,eax
> >
> > +        psrld   xmm3,30
> >
> > +        add     ecx,edx
> >
> > +        ror     edx,7
> >
> > +        por     xmm8,xmm12
> >
> > +        xor     edi,eax
> >
> > +        mov     esi,ecx
> >
> > +        add     ebx,DWORD[12+rsp]
> >
> > +        movups  xmm1,XMMWORD[((-48))+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        pslld   xmm13,2
> >
> > +        pxor    xmm8,xmm3
> >
> > +        xor     edx,ebp
> >
> > +        movdqa  xmm3,XMMWORD[r11]
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,edi
> >
> > +        and     esi,edx
> >
> > +        pxor    xmm8,xmm13
> >
> > +        xor     edx,ebp
> >
> > +        add     ebx,ecx
> >
> > +        ror     ecx,7
> >
> > +        pshufd  xmm9,xmm5,238
> >
> > +        xor     esi,ebp
> >
> > +        movdqa  xmm13,xmm8
> >
> > +        paddd   xmm3,xmm8
> >
> > +        mov     edi,ebx
> >
> > +        add     eax,DWORD[16+rsp]
> >
> > +        punpcklqdq      xmm9,xmm6
> >
> > +        xor     ecx,edx
> >
> > +        rol     ebx,5
> >
> > +        add     eax,esi
> >
> > +        psrldq  xmm13,4
> >
> > +        and     edi,ecx
> >
> > +        xor     ecx,edx
> >
> > +        pxor    xmm9,xmm5
> >
> > +        add     eax,ebx
> >
> > +        ror     ebx,7
> >
> > +        movups  xmm0,XMMWORD[((-32))+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        pxor    xmm13,xmm7
> >
> > +        xor     edi,edx
> >
> > +        mov     esi,eax
> >
> > +        add     ebp,DWORD[20+rsp]
> >
> > +        pxor    xmm9,xmm13
> >
> > +        xor     ebx,ecx
> >
> > +        rol     eax,5
> >
> > +        movdqa  XMMWORD[rsp],xmm3
> >
> > +        add     ebp,edi
> >
> > +        and     esi,ebx
> >
> > +        movdqa  xmm12,xmm9
> >
> > +        xor     ebx,ecx
> >
> > +        add     ebp,eax
> >
> > +        ror     eax,7
> >
> > +        movdqa  xmm13,xmm9
> >
> > +        xor     esi,ecx
> >
> > +        pslldq  xmm12,12
> >
> > +        paddd   xmm9,xmm9
> >
> > +        mov     edi,ebp
> >
> > +        add     edx,DWORD[24+rsp]
> >
> > +        psrld   xmm13,31
> >
> > +        xor     eax,ebx
> >
> > +        rol     ebp,5
> >
> > +        add     edx,esi
> >
> > +        movups  xmm1,XMMWORD[((-16))+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        movdqa  xmm3,xmm12
> >
> > +        and     edi,eax
> >
> > +        xor     eax,ebx
> >
> > +        psrld   xmm12,30
> >
> > +        add     edx,ebp
> >
> > +        ror     ebp,7
> >
> > +        por     xmm9,xmm13
> >
> > +        xor     edi,ebx
> >
> > +        mov     esi,edx
> >
> > +        add     ecx,DWORD[28+rsp]
> >
> > +        pslld   xmm3,2
> >
> > +        pxor    xmm9,xmm12
> >
> > +        xor     ebp,eax
> >
> > +        movdqa  xmm12,XMMWORD[16+r11]
> >
> > +        rol     edx,5
> >
> > +        add     ecx,edi
> >
> > +        and     esi,ebp
> >
> > +        pxor    xmm9,xmm3
> >
> > +        xor     ebp,eax
> >
> > +        add     ecx,edx
> >
> > +        ror     edx,7
> >
> > +        pshufd  xmm10,xmm6,238
> >
> > +        xor     esi,eax
> >
> > +        movdqa  xmm3,xmm9
> >
> > +        paddd   xmm12,xmm9
> >
> > +        mov     edi,ecx
> >
> > +        add     ebx,DWORD[32+rsp]
> >
> > +        movups  xmm0,XMMWORD[r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        punpcklqdq      xmm10,xmm7
> >
> > +        xor     edx,ebp
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,esi
> >
> > +        psrldq  xmm3,4
> >
> > +        and     edi,edx
> >
> > +        xor     edx,ebp
> >
> > +        pxor    xmm10,xmm6
> >
> > +        add     ebx,ecx
> >
> > +        ror     ecx,7
> >
> > +        pxor    xmm3,xmm8
> >
> > +        xor     edi,ebp
> >
> > +        mov     esi,ebx
> >
> > +        add     eax,DWORD[36+rsp]
> >
> > +        pxor    xmm10,xmm3
> >
> > +        xor     ecx,edx
> >
> > +        rol     ebx,5
> >
> > +        movdqa  XMMWORD[16+rsp],xmm12
> >
> > +        add     eax,edi
> >
> > +        and     esi,ecx
> >
> > +        movdqa  xmm13,xmm10
> >
> > +        xor     ecx,edx
> >
> > +        add     eax,ebx
> >
> > +        ror     ebx,7
> >
> > +        movups  xmm1,XMMWORD[16+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        movdqa  xmm3,xmm10
> >
> > +        xor     esi,edx
> >
> > +        pslldq  xmm13,12
> >
> > +        paddd   xmm10,xmm10
> >
> > +        mov     edi,eax
> >
> > +        add     ebp,DWORD[40+rsp]
> >
> > +        psrld   xmm3,31
> >
> > +        xor     ebx,ecx
> >
> > +        rol     eax,5
> >
> > +        add     ebp,esi
> >
> > +        movdqa  xmm12,xmm13
> >
> > +        and     edi,ebx
> >
> > +        xor     ebx,ecx
> >
> > +        psrld   xmm13,30
> >
> > +        add     ebp,eax
> >
> > +        ror     eax,7
> >
> > +        por     xmm10,xmm3
> >
> > +        xor     edi,ecx
> >
> > +        mov     esi,ebp
> >
> > +        add     edx,DWORD[44+rsp]
> >
> > +        pslld   xmm12,2
> >
> > +        pxor    xmm10,xmm13
> >
> > +        xor     eax,ebx
> >
> > +        movdqa  xmm13,XMMWORD[16+r11]
> >
> > +        rol     ebp,5
> >
> > +        add     edx,edi
> >
> > +        movups  xmm0,XMMWORD[32+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        and     esi,eax
> >
> > +        pxor    xmm10,xmm12
> >
> > +        xor     eax,ebx
> >
> > +        add     edx,ebp
> >
> > +        ror     ebp,7
> >
> > +        pshufd  xmm11,xmm7,238
> >
> > +        xor     esi,ebx
> >
> > +        movdqa  xmm12,xmm10
> >
> > +        paddd   xmm13,xmm10
> >
> > +        mov     edi,edx
> >
> > +        add     ecx,DWORD[48+rsp]
> >
> > +        punpcklqdq      xmm11,xmm8
> >
> > +        xor     ebp,eax
> >
> > +        rol     edx,5
> >
> > +        add     ecx,esi
> >
> > +        psrldq  xmm12,4
> >
> > +        and     edi,ebp
> >
> > +        xor     ebp,eax
> >
> > +        pxor    xmm11,xmm7
> >
> > +        add     ecx,edx
> >
> > +        ror     edx,7
> >
> > +        pxor    xmm12,xmm9
> >
> > +        xor     edi,eax
> >
> > +        mov     esi,ecx
> >
> > +        add     ebx,DWORD[52+rsp]
> >
> > +        movups  xmm1,XMMWORD[48+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        pxor    xmm11,xmm12
> >
> > +        xor     edx,ebp
> >
> > +        rol     ecx,5
> >
> > +        movdqa  XMMWORD[32+rsp],xmm13
> >
> > +        add     ebx,edi
> >
> > +        and     esi,edx
> >
> > +        movdqa  xmm3,xmm11
> >
> > +        xor     edx,ebp
> >
> > +        add     ebx,ecx
> >
> > +        ror     ecx,7
> >
> > +        movdqa  xmm12,xmm11
> >
> > +        xor     esi,ebp
> >
> > +        pslldq  xmm3,12
> >
> > +        paddd   xmm11,xmm11
> >
> > +        mov     edi,ebx
> >
> > +        add     eax,DWORD[56+rsp]
> >
> > +        psrld   xmm12,31
> >
> > +        xor     ecx,edx
> >
> > +        rol     ebx,5
> >
> > +        add     eax,esi
> >
> > +        movdqa  xmm13,xmm3
> >
> > +        and     edi,ecx
> >
> > +        xor     ecx,edx
> >
> > +        psrld   xmm3,30
> >
> > +        add     eax,ebx
> >
> > +        ror     ebx,7
> >
> > +        cmp     r8d,11
> >
> > +        jb      NEAR $L$aesenclast1
> >
> > +        movups  xmm0,XMMWORD[64+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[80+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        je      NEAR $L$aesenclast1
> >
> > +        movups  xmm0,XMMWORD[96+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[112+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +$L$aesenclast1:
> >
> > +DB      102,15,56,221,209
> >
> > +        movups  xmm0,XMMWORD[((16-112))+r15]
> >
> > +        por     xmm11,xmm12
> >
> > +        xor     edi,edx
> >
> > +        mov     esi,eax
> >
> > +        add     ebp,DWORD[60+rsp]
> >
> > +        pslld   xmm13,2
> >
> > +        pxor    xmm11,xmm3
> >
> > +        xor     ebx,ecx
> >
> > +        movdqa  xmm3,XMMWORD[16+r11]
> >
> > +        rol     eax,5
> >
> > +        add     ebp,edi
> >
> > +        and     esi,ebx
> >
> > +        pxor    xmm11,xmm13
> >
> > +        pshufd  xmm13,xmm10,238
> >
> > +        xor     ebx,ecx
> >
> > +        add     ebp,eax
> >
> > +        ror     eax,7
> >
> > +        pxor    xmm4,xmm8
> >
> > +        xor     esi,ecx
> >
> > +        mov     edi,ebp
> >
> > +        add     edx,DWORD[rsp]
> >
> > +        punpcklqdq      xmm13,xmm11
> >
> > +        xor     eax,ebx
> >
> > +        rol     ebp,5
> >
> > +        pxor    xmm4,xmm5
> >
> > +        add     edx,esi
> >
> > +        movups  xmm14,XMMWORD[16+r12]
> >
> > +        xorps   xmm14,xmm15
> >
> > +        movups  XMMWORD[r13*1+r12],xmm2
> >
> > +        xorps   xmm2,xmm14
> >
> > +        movups  xmm1,XMMWORD[((-80))+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        and     edi,eax
> >
> > +        movdqa  xmm12,xmm3
> >
> > +        xor     eax,ebx
> >
> > +        paddd   xmm3,xmm11
> >
> > +        add     edx,ebp
> >
> > +        pxor    xmm4,xmm13
> >
> > +        ror     ebp,7
> >
> > +        xor     edi,ebx
> >
> > +        mov     esi,edx
> >
> > +        add     ecx,DWORD[4+rsp]
> >
> > +        movdqa  xmm13,xmm4
> >
> > +        xor     ebp,eax
> >
> > +        rol     edx,5
> >
> > +        movdqa  XMMWORD[48+rsp],xmm3
> >
> > +        add     ecx,edi
> >
> > +        and     esi,ebp
> >
> > +        xor     ebp,eax
> >
> > +        pslld   xmm4,2
> >
> > +        add     ecx,edx
> >
> > +        ror     edx,7
> >
> > +        psrld   xmm13,30
> >
> > +        xor     esi,eax
> >
> > +        mov     edi,ecx
> >
> > +        add     ebx,DWORD[8+rsp]
> >
> > +        movups  xmm0,XMMWORD[((-64))+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        por     xmm4,xmm13
> >
> > +        xor     edx,ebp
> >
> > +        rol     ecx,5
> >
> > +        pshufd  xmm3,xmm11,238
> >
> > +        add     ebx,esi
> >
> > +        and     edi,edx
> >
> > +        xor     edx,ebp
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[12+rsp]
> >
> > +        xor     edi,ebp
> >
> > +        mov     esi,ebx
> >
> > +        rol     ebx,5
> >
> > +        add     eax,edi
> >
> > +        xor     esi,edx
> >
> > +        ror     ecx,7
> >
> > +        add     eax,ebx
> >
> > +        pxor    xmm5,xmm9
> >
> > +        add     ebp,DWORD[16+rsp]
> >
> > +        movups  xmm1,XMMWORD[((-48))+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        xor     esi,ecx
> >
> > +        punpcklqdq      xmm3,xmm4
> >
> > +        mov     edi,eax
> >
> > +        rol     eax,5
> >
> > +        pxor    xmm5,xmm6
> >
> > +        add     ebp,esi
> >
> > +        xor     edi,ecx
> >
> > +        movdqa  xmm13,xmm12
> >
> > +        ror     ebx,7
> >
> > +        paddd   xmm12,xmm4
> >
> > +        add     ebp,eax
> >
> > +        pxor    xmm5,xmm3
> >
> > +        add     edx,DWORD[20+rsp]
> >
> > +        xor     edi,ebx
> >
> > +        mov     esi,ebp
> >
> > +        rol     ebp,5
> >
> > +        movdqa  xmm3,xmm5
> >
> > +        add     edx,edi
> >
> > +        xor     esi,ebx
> >
> > +        movdqa  XMMWORD[rsp],xmm12
> >
> > +        ror     eax,7
> >
> > +        add     edx,ebp
> >
> > +        add     ecx,DWORD[24+rsp]
> >
> > +        pslld   xmm5,2
> >
> > +        xor     esi,eax
> >
> > +        mov     edi,edx
> >
> > +        psrld   xmm3,30
> >
> > +        rol     edx,5
> >
> > +        add     ecx,esi
> >
> > +        movups  xmm0,XMMWORD[((-32))+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        xor     edi,eax
> >
> > +        ror     ebp,7
> >
> > +        por     xmm5,xmm3
> >
> > +        add     ecx,edx
> >
> > +        add     ebx,DWORD[28+rsp]
> >
> > +        pshufd  xmm12,xmm4,238
> >
> > +        xor     edi,ebp
> >
> > +        mov     esi,ecx
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,edi
> >
> > +        xor     esi,ebp
> >
> > +        ror     edx,7
> >
> > +        add     ebx,ecx
> >
> > +        pxor    xmm6,xmm10
> >
> > +        add     eax,DWORD[32+rsp]
> >
> > +        xor     esi,edx
> >
> > +        punpcklqdq      xmm12,xmm5
> >
> > +        mov     edi,ebx
> >
> > +        rol     ebx,5
> >
> > +        pxor    xmm6,xmm7
> >
> > +        add     eax,esi
> >
> > +        xor     edi,edx
> >
> > +        movdqa  xmm3,XMMWORD[32+r11]
> >
> > +        ror     ecx,7
> >
> > +        paddd   xmm13,xmm5
> >
> > +        add     eax,ebx
> >
> > +        pxor    xmm6,xmm12
> >
> > +        add     ebp,DWORD[36+rsp]
> >
> > +        movups  xmm1,XMMWORD[((-16))+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        xor     edi,ecx
> >
> > +        mov     esi,eax
> >
> > +        rol     eax,5
> >
> > +        movdqa  xmm12,xmm6
> >
> > +        add     ebp,edi
> >
> > +        xor     esi,ecx
> >
> > +        movdqa  XMMWORD[16+rsp],xmm13
> >
> > +        ror     ebx,7
> >
> > +        add     ebp,eax
> >
> > +        add     edx,DWORD[40+rsp]
> >
> > +        pslld   xmm6,2
> >
> > +        xor     esi,ebx
> >
> > +        mov     edi,ebp
> >
> > +        psrld   xmm12,30
> >
> > +        rol     ebp,5
> >
> > +        add     edx,esi
> >
> > +        xor     edi,ebx
> >
> > +        ror     eax,7
> >
> > +        por     xmm6,xmm12
> >
> > +        add     edx,ebp
> >
> > +        add     ecx,DWORD[44+rsp]
> >
> > +        pshufd  xmm13,xmm5,238
> >
> > +        xor     edi,eax
> >
> > +        mov     esi,edx
> >
> > +        rol     edx,5
> >
> > +        add     ecx,edi
> >
> > +        movups  xmm0,XMMWORD[r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        xor     esi,eax
> >
> > +        ror     ebp,7
> >
> > +        add     ecx,edx
> >
> > +        pxor    xmm7,xmm11
> >
> > +        add     ebx,DWORD[48+rsp]
> >
> > +        xor     esi,ebp
> >
> > +        punpcklqdq      xmm13,xmm6
> >
> > +        mov     edi,ecx
> >
> > +        rol     ecx,5
> >
> > +        pxor    xmm7,xmm8
> >
> > +        add     ebx,esi
> >
> > +        xor     edi,ebp
> >
> > +        movdqa  xmm12,xmm3
> >
> > +        ror     edx,7
> >
> > +        paddd   xmm3,xmm6
> >
> > +        add     ebx,ecx
> >
> > +        pxor    xmm7,xmm13
> >
> > +        add     eax,DWORD[52+rsp]
> >
> > +        xor     edi,edx
> >
> > +        mov     esi,ebx
> >
> > +        rol     ebx,5
> >
> > +        movdqa  xmm13,xmm7
> >
> > +        add     eax,edi
> >
> > +        xor     esi,edx
> >
> > +        movdqa  XMMWORD[32+rsp],xmm3
> >
> > +        ror     ecx,7
> >
> > +        add     eax,ebx
> >
> > +        add     ebp,DWORD[56+rsp]
> >
> > +        movups  xmm1,XMMWORD[16+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        pslld   xmm7,2
> >
> > +        xor     esi,ecx
> >
> > +        mov     edi,eax
> >
> > +        psrld   xmm13,30
> >
> > +        rol     eax,5
> >
> > +        add     ebp,esi
> >
> > +        xor     edi,ecx
> >
> > +        ror     ebx,7
> >
> > +        por     xmm7,xmm13
> >
> > +        add     ebp,eax
> >
> > +        add     edx,DWORD[60+rsp]
> >
> > +        pshufd  xmm3,xmm6,238
> >
> > +        xor     edi,ebx
> >
> > +        mov     esi,ebp
> >
> > +        rol     ebp,5
> >
> > +        add     edx,edi
> >
> > +        xor     esi,ebx
> >
> > +        ror     eax,7
> >
> > +        add     edx,ebp
> >
> > +        pxor    xmm8,xmm4
> >
> > +        add     ecx,DWORD[rsp]
> >
> > +        xor     esi,eax
> >
> > +        punpcklqdq      xmm3,xmm7
> >
> > +        mov     edi,edx
> >
> > +        rol     edx,5
> >
> > +        pxor    xmm8,xmm9
> >
> > +        add     ecx,esi
> >
> > +        movups  xmm0,XMMWORD[32+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        xor     edi,eax
> >
> > +        movdqa  xmm13,xmm12
> >
> > +        ror     ebp,7
> >
> > +        paddd   xmm12,xmm7
> >
> > +        add     ecx,edx
> >
> > +        pxor    xmm8,xmm3
> >
> > +        add     ebx,DWORD[4+rsp]
> >
> > +        xor     edi,ebp
> >
> > +        mov     esi,ecx
> >
> > +        rol     ecx,5
> >
> > +        movdqa  xmm3,xmm8
> >
> > +        add     ebx,edi
> >
> > +        xor     esi,ebp
> >
> > +        movdqa  XMMWORD[48+rsp],xmm12
> >
> > +        ror     edx,7
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[8+rsp]
> >
> > +        pslld   xmm8,2
> >
> > +        xor     esi,edx
> >
> > +        mov     edi,ebx
> >
> > +        psrld   xmm3,30
> >
> > +        rol     ebx,5
> >
> > +        add     eax,esi
> >
> > +        xor     edi,edx
> >
> > +        ror     ecx,7
> >
> > +        por     xmm8,xmm3
> >
> > +        add     eax,ebx
> >
> > +        add     ebp,DWORD[12+rsp]
> >
> > +        movups  xmm1,XMMWORD[48+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        pshufd  xmm12,xmm7,238
> >
> > +        xor     edi,ecx
> >
> > +        mov     esi,eax
> >
> > +        rol     eax,5
> >
> > +        add     ebp,edi
> >
> > +        xor     esi,ecx
> >
> > +        ror     ebx,7
> >
> > +        add     ebp,eax
> >
> > +        pxor    xmm9,xmm5
> >
> > +        add     edx,DWORD[16+rsp]
> >
> > +        xor     esi,ebx
> >
> > +        punpcklqdq      xmm12,xmm8
> >
> > +        mov     edi,ebp
> >
> > +        rol     ebp,5
> >
> > +        pxor    xmm9,xmm10
> >
> > +        add     edx,esi
> >
> > +        xor     edi,ebx
> >
> > +        movdqa  xmm3,xmm13
> >
> > +        ror     eax,7
> >
> > +        paddd   xmm13,xmm8
> >
> > +        add     edx,ebp
> >
> > +        pxor    xmm9,xmm12
> >
> > +        add     ecx,DWORD[20+rsp]
> >
> > +        xor     edi,eax
> >
> > +        mov     esi,edx
> >
> > +        rol     edx,5
> >
> > +        movdqa  xmm12,xmm9
> >
> > +        add     ecx,edi
> >
> > +        cmp     r8d,11
> >
> > +        jb      NEAR $L$aesenclast2
> >
> > +        movups  xmm0,XMMWORD[64+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[80+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        je      NEAR $L$aesenclast2
> >
> > +        movups  xmm0,XMMWORD[96+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[112+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +$L$aesenclast2:
> >
> > +DB      102,15,56,221,209
> >
> > +        movups  xmm0,XMMWORD[((16-112))+r15]
> >
> > +        xor     esi,eax
> >
> > +        movdqa  XMMWORD[rsp],xmm13
> >
> > +        ror     ebp,7
> >
> > +        add     ecx,edx
> >
> > +        add     ebx,DWORD[24+rsp]
> >
> > +        pslld   xmm9,2
> >
> > +        xor     esi,ebp
> >
> > +        mov     edi,ecx
> >
> > +        psrld   xmm12,30
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,esi
> >
> > +        xor     edi,ebp
> >
> > +        ror     edx,7
> >
> > +        por     xmm9,xmm12
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[28+rsp]
> >
> > +        pshufd  xmm13,xmm8,238
> >
> > +        ror     ecx,7
> >
> > +        mov     esi,ebx
> >
> > +        xor     edi,edx
> >
> > +        rol     ebx,5
> >
> > +        add     eax,edi
> >
> > +        xor     esi,ecx
> >
> > +        xor     ecx,edx
> >
> > +        add     eax,ebx
> >
> > +        pxor    xmm10,xmm6
> >
> > +        add     ebp,DWORD[32+rsp]
> >
> > +        movups  xmm14,XMMWORD[32+r12]
> >
> > +        xorps   xmm14,xmm15
> >
> > +        movups  XMMWORD[16+r12*1+r13],xmm2
> >
> > +        xorps   xmm2,xmm14
> >
> > +        movups  xmm1,XMMWORD[((-80))+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        and     esi,ecx
> >
> > +        xor     ecx,edx
> >
> > +        ror     ebx,7
> >
> > +        punpcklqdq      xmm13,xmm9
> >
> > +        mov     edi,eax
> >
> > +        xor     esi,ecx
> >
> > +        pxor    xmm10,xmm11
> >
> > +        rol     eax,5
> >
> > +        add     ebp,esi
> >
> > +        movdqa  xmm12,xmm3
> >
> > +        xor     edi,ebx
> >
> > +        paddd   xmm3,xmm9
> >
> > +        xor     ebx,ecx
> >
> > +        pxor    xmm10,xmm13
> >
> > +        add     ebp,eax
> >
> > +        add     edx,DWORD[36+rsp]
> >
> > +        and     edi,ebx
> >
> > +        xor     ebx,ecx
> >
> > +        ror     eax,7
> >
> > +        movdqa  xmm13,xmm10
> >
> > +        mov     esi,ebp
> >
> > +        xor     edi,ebx
> >
> > +        movdqa  XMMWORD[16+rsp],xmm3
> >
> > +        rol     ebp,5
> >
> > +        add     edx,edi
> >
> > +        movups  xmm0,XMMWORD[((-64))+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        xor     esi,eax
> >
> > +        pslld   xmm10,2
> >
> > +        xor     eax,ebx
> >
> > +        add     edx,ebp
> >
> > +        psrld   xmm13,30
> >
> > +        add     ecx,DWORD[40+rsp]
> >
> > +        and     esi,eax
> >
> > +        xor     eax,ebx
> >
> > +        por     xmm10,xmm13
> >
> > +        ror     ebp,7
> >
> > +        mov     edi,edx
> >
> > +        xor     esi,eax
> >
> > +        rol     edx,5
> >
> > +        pshufd  xmm3,xmm9,238
> >
> > +        add     ecx,esi
> >
> > +        xor     edi,ebp
> >
> > +        xor     ebp,eax
> >
> > +        add     ecx,edx
> >
> > +        add     ebx,DWORD[44+rsp]
> >
> > +        and     edi,ebp
> >
> > +        xor     ebp,eax
> >
> > +        ror     edx,7
> >
> > +        movups  xmm1,XMMWORD[((-48))+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        mov     esi,ecx
> >
> > +        xor     edi,ebp
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,edi
> >
> > +        xor     esi,edx
> >
> > +        xor     edx,ebp
> >
> > +        add     ebx,ecx
> >
> > +        pxor    xmm11,xmm7
> >
> > +        add     eax,DWORD[48+rsp]
> >
> > +        and     esi,edx
> >
> > +        xor     edx,ebp
> >
> > +        ror     ecx,7
> >
> > +        punpcklqdq      xmm3,xmm10
> >
> > +        mov     edi,ebx
> >
> > +        xor     esi,edx
> >
> > +        pxor    xmm11,xmm4
> >
> > +        rol     ebx,5
> >
> > +        add     eax,esi
> >
> > +        movdqa  xmm13,XMMWORD[48+r11]
> >
> > +        xor     edi,ecx
> >
> > +        paddd   xmm12,xmm10
> >
> > +        xor     ecx,edx
> >
> > +        pxor    xmm11,xmm3
> >
> > +        add     eax,ebx
> >
> > +        add     ebp,DWORD[52+rsp]
> >
> > +        movups  xmm0,XMMWORD[((-32))+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        and     edi,ecx
> >
> > +        xor     ecx,edx
> >
> > +        ror     ebx,7
> >
> > +        movdqa  xmm3,xmm11
> >
> > +        mov     esi,eax
> >
> > +        xor     edi,ecx
> >
> > +        movdqa  XMMWORD[32+rsp],xmm12
> >
> > +        rol     eax,5
> >
> > +        add     ebp,edi
> >
> > +        xor     esi,ebx
> >
> > +        pslld   xmm11,2
> >
> > +        xor     ebx,ecx
> >
> > +        add     ebp,eax
> >
> > +        psrld   xmm3,30
> >
> > +        add     edx,DWORD[56+rsp]
> >
> > +        and     esi,ebx
> >
> > +        xor     ebx,ecx
> >
> > +        por     xmm11,xmm3
> >
> > +        ror     eax,7
> >
> > +        mov     edi,ebp
> >
> > +        xor     esi,ebx
> >
> > +        rol     ebp,5
> >
> > +        pshufd  xmm12,xmm10,238
> >
> > +        add     edx,esi
> >
> > +        movups  xmm1,XMMWORD[((-16))+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        xor     edi,eax
> >
> > +        xor     eax,ebx
> >
> > +        add     edx,ebp
> >
> > +        add     ecx,DWORD[60+rsp]
> >
> > +        and     edi,eax
> >
> > +        xor     eax,ebx
> >
> > +        ror     ebp,7
> >
> > +        mov     esi,edx
> >
> > +        xor     edi,eax
> >
> > +        rol     edx,5
> >
> > +        add     ecx,edi
> >
> > +        xor     esi,ebp
> >
> > +        xor     ebp,eax
> >
> > +        add     ecx,edx
> >
> > +        pxor    xmm4,xmm8
> >
> > +        add     ebx,DWORD[rsp]
> >
> > +        and     esi,ebp
> >
> > +        xor     ebp,eax
> >
> > +        ror     edx,7
> >
> > +        movups  xmm0,XMMWORD[r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        punpcklqdq      xmm12,xmm11
> >
> > +        mov     edi,ecx
> >
> > +        xor     esi,ebp
> >
> > +        pxor    xmm4,xmm5
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,esi
> >
> > +        movdqa  xmm3,xmm13
> >
> > +        xor     edi,edx
> >
> > +        paddd   xmm13,xmm11
> >
> > +        xor     edx,ebp
> >
> > +        pxor    xmm4,xmm12
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[4+rsp]
> >
> > +        and     edi,edx
> >
> > +        xor     edx,ebp
> >
> > +        ror     ecx,7
> >
> > +        movdqa  xmm12,xmm4
> >
> > +        mov     esi,ebx
> >
> > +        xor     edi,edx
> >
> > +        movdqa  XMMWORD[48+rsp],xmm13
> >
> > +        rol     ebx,5
> >
> > +        add     eax,edi
> >
> > +        xor     esi,ecx
> >
> > +        pslld   xmm4,2
> >
> > +        xor     ecx,edx
> >
> > +        add     eax,ebx
> >
> > +        psrld   xmm12,30
> >
> > +        add     ebp,DWORD[8+rsp]
> >
> > +        movups  xmm1,XMMWORD[16+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        and     esi,ecx
> >
> > +        xor     ecx,edx
> >
> > +        por     xmm4,xmm12
> >
> > +        ror     ebx,7
> >
> > +        mov     edi,eax
> >
> > +        xor     esi,ecx
> >
> > +        rol     eax,5
> >
> > +        pshufd  xmm13,xmm11,238
> >
> > +        add     ebp,esi
> >
> > +        xor     edi,ebx
> >
> > +        xor     ebx,ecx
> >
> > +        add     ebp,eax
> >
> > +        add     edx,DWORD[12+rsp]
> >
> > +        and     edi,ebx
> >
> > +        xor     ebx,ecx
> >
> > +        ror     eax,7
> >
> > +        mov     esi,ebp
> >
> > +        xor     edi,ebx
> >
> > +        rol     ebp,5
> >
> > +        add     edx,edi
> >
> > +        movups  xmm0,XMMWORD[32+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        xor     esi,eax
> >
> > +        xor     eax,ebx
> >
> > +        add     edx,ebp
> >
> > +        pxor    xmm5,xmm9
> >
> > +        add     ecx,DWORD[16+rsp]
> >
> > +        and     esi,eax
> >
> > +        xor     eax,ebx
> >
> > +        ror     ebp,7
> >
> > +        punpcklqdq      xmm13,xmm4
> >
> > +        mov     edi,edx
> >
> > +        xor     esi,eax
> >
> > +        pxor    xmm5,xmm6
> >
> > +        rol     edx,5
> >
> > +        add     ecx,esi
> >
> > +        movdqa  xmm12,xmm3
> >
> > +        xor     edi,ebp
> >
> > +        paddd   xmm3,xmm4
> >
> > +        xor     ebp,eax
> >
> > +        pxor    xmm5,xmm13
> >
> > +        add     ecx,edx
> >
> > +        add     ebx,DWORD[20+rsp]
> >
> > +        and     edi,ebp
> >
> > +        xor     ebp,eax
> >
> > +        ror     edx,7
> >
> > +        movups  xmm1,XMMWORD[48+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        movdqa  xmm13,xmm5
> >
> > +        mov     esi,ecx
> >
> > +        xor     edi,ebp
> >
> > +        movdqa  XMMWORD[rsp],xmm3
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,edi
> >
> > +        xor     esi,edx
> >
> > +        pslld   xmm5,2
> >
> > +        xor     edx,ebp
> >
> > +        add     ebx,ecx
> >
> > +        psrld   xmm13,30
> >
> > +        add     eax,DWORD[24+rsp]
> >
> > +        and     esi,edx
> >
> > +        xor     edx,ebp
> >
> > +        por     xmm5,xmm13
> >
> > +        ror     ecx,7
> >
> > +        mov     edi,ebx
> >
> > +        xor     esi,edx
> >
> > +        rol     ebx,5
> >
> > +        pshufd  xmm3,xmm4,238
> >
> > +        add     eax,esi
> >
> > +        xor     edi,ecx
> >
> > +        xor     ecx,edx
> >
> > +        add     eax,ebx
> >
> > +        add     ebp,DWORD[28+rsp]
> >
> > +        cmp     r8d,11
> >
> > +        jb      NEAR $L$aesenclast3
> >
> > +        movups  xmm0,XMMWORD[64+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[80+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        je      NEAR $L$aesenclast3
> >
> > +        movups  xmm0,XMMWORD[96+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[112+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +$L$aesenclast3:
> >
> > +DB      102,15,56,221,209
> >
> > +        movups  xmm0,XMMWORD[((16-112))+r15]
> >
> > +        and     edi,ecx
> >
> > +        xor     ecx,edx
> >
> > +        ror     ebx,7
> >
> > +        mov     esi,eax
> >
> > +        xor     edi,ecx
> >
> > +        rol     eax,5
> >
> > +        add     ebp,edi
> >
> > +        xor     esi,ebx
> >
> > +        xor     ebx,ecx
> >
> > +        add     ebp,eax
> >
> > +        pxor    xmm6,xmm10
> >
> > +        add     edx,DWORD[32+rsp]
> >
> > +        and     esi,ebx
> >
> > +        xor     ebx,ecx
> >
> > +        ror     eax,7
> >
> > +        punpcklqdq      xmm3,xmm5
> >
> > +        mov     edi,ebp
> >
> > +        xor     esi,ebx
> >
> > +        pxor    xmm6,xmm7
> >
> > +        rol     ebp,5
> >
> > +        add     edx,esi
> >
> > +        movups  xmm14,XMMWORD[48+r12]
> >
> > +        xorps   xmm14,xmm15
> >
> > +        movups  XMMWORD[32+r12*1+r13],xmm2
> >
> > +        xorps   xmm2,xmm14
> >
> > +        movups  xmm1,XMMWORD[((-80))+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        movdqa  xmm13,xmm12
> >
> > +        xor     edi,eax
> >
> > +        paddd   xmm12,xmm5
> >
> > +        xor     eax,ebx
> >
> > +        pxor    xmm6,xmm3
> >
> > +        add     edx,ebp
> >
> > +        add     ecx,DWORD[36+rsp]
> >
> > +        and     edi,eax
> >
> > +        xor     eax,ebx
> >
> > +        ror     ebp,7
> >
> > +        movdqa  xmm3,xmm6
> >
> > +        mov     esi,edx
> >
> > +        xor     edi,eax
> >
> > +        movdqa  XMMWORD[16+rsp],xmm12
> >
> > +        rol     edx,5
> >
> > +        add     ecx,edi
> >
> > +        xor     esi,ebp
> >
> > +        pslld   xmm6,2
> >
> > +        xor     ebp,eax
> >
> > +        add     ecx,edx
> >
> > +        psrld   xmm3,30
> >
> > +        add     ebx,DWORD[40+rsp]
> >
> > +        and     esi,ebp
> >
> > +        xor     ebp,eax
> >
> > +        por     xmm6,xmm3
> >
> > +        ror     edx,7
> >
> > +        movups  xmm0,XMMWORD[((-64))+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        mov     edi,ecx
> >
> > +        xor     esi,ebp
> >
> > +        rol     ecx,5
> >
> > +        pshufd  xmm12,xmm5,238
> >
> > +        add     ebx,esi
> >
> > +        xor     edi,edx
> >
> > +        xor     edx,ebp
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[44+rsp]
> >
> > +        and     edi,edx
> >
> > +        xor     edx,ebp
> >
> > +        ror     ecx,7
> >
> > +        mov     esi,ebx
> >
> > +        xor     edi,edx
> >
> > +        rol     ebx,5
> >
> > +        add     eax,edi
> >
> > +        xor     esi,edx
> >
> > +        add     eax,ebx
> >
> > +        pxor    xmm7,xmm11
> >
> > +        add     ebp,DWORD[48+rsp]
> >
> > +        movups  xmm1,XMMWORD[((-48))+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        xor     esi,ecx
> >
> > +        punpcklqdq      xmm12,xmm6
> >
> > +        mov     edi,eax
> >
> > +        rol     eax,5
> >
> > +        pxor    xmm7,xmm8
> >
> > +        add     ebp,esi
> >
> > +        xor     edi,ecx
> >
> > +        movdqa  xmm3,xmm13
> >
> > +        ror     ebx,7
> >
> > +        paddd   xmm13,xmm6
> >
> > +        add     ebp,eax
> >
> > +        pxor    xmm7,xmm12
> >
> > +        add     edx,DWORD[52+rsp]
> >
> > +        xor     edi,ebx
> >
> > +        mov     esi,ebp
> >
> > +        rol     ebp,5
> >
> > +        movdqa  xmm12,xmm7
> >
> > +        add     edx,edi
> >
> > +        xor     esi,ebx
> >
> > +        movdqa  XMMWORD[32+rsp],xmm13
> >
> > +        ror     eax,7
> >
> > +        add     edx,ebp
> >
> > +        add     ecx,DWORD[56+rsp]
> >
> > +        pslld   xmm7,2
> >
> > +        xor     esi,eax
> >
> > +        mov     edi,edx
> >
> > +        psrld   xmm12,30
> >
> > +        rol     edx,5
> >
> > +        add     ecx,esi
> >
> > +        movups  xmm0,XMMWORD[((-32))+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        xor     edi,eax
> >
> > +        ror     ebp,7
> >
> > +        por     xmm7,xmm12
> >
> > +        add     ecx,edx
> >
> > +        add     ebx,DWORD[60+rsp]
> >
> > +        xor     edi,ebp
> >
> > +        mov     esi,ecx
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,edi
> >
> > +        xor     esi,ebp
> >
> > +        ror     edx,7
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[rsp]
> >
> > +        xor     esi,edx
> >
> > +        mov     edi,ebx
> >
> > +        rol     ebx,5
> >
> > +        paddd   xmm3,xmm7
> >
> > +        add     eax,esi
> >
> > +        xor     edi,edx
> >
> > +        movdqa  XMMWORD[48+rsp],xmm3
> >
> > +        ror     ecx,7
> >
> > +        add     eax,ebx
> >
> > +        add     ebp,DWORD[4+rsp]
> >
> > +        movups  xmm1,XMMWORD[((-16))+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        xor     edi,ecx
> >
> > +        mov     esi,eax
> >
> > +        rol     eax,5
> >
> > +        add     ebp,edi
> >
> > +        xor     esi,ecx
> >
> > +        ror     ebx,7
> >
> > +        add     ebp,eax
> >
> > +        add     edx,DWORD[8+rsp]
> >
> > +        xor     esi,ebx
> >
> > +        mov     edi,ebp
> >
> > +        rol     ebp,5
> >
> > +        add     edx,esi
> >
> > +        xor     edi,ebx
> >
> > +        ror     eax,7
> >
> > +        add     edx,ebp
> >
> > +        add     ecx,DWORD[12+rsp]
> >
> > +        xor     edi,eax
> >
> > +        mov     esi,edx
> >
> > +        rol     edx,5
> >
> > +        add     ecx,edi
> >
> > +        movups  xmm0,XMMWORD[r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        xor     esi,eax
> >
> > +        ror     ebp,7
> >
> > +        add     ecx,edx
> >
> > +        cmp     r10,r14
> >
> > +        je      NEAR $L$done_ssse3
> >
> > +        movdqa  xmm3,XMMWORD[64+r11]
> >
> > +        movdqa  xmm13,XMMWORD[r11]
> >
> > +        movdqu  xmm4,XMMWORD[r10]
> >
> > +        movdqu  xmm5,XMMWORD[16+r10]
> >
> > +        movdqu  xmm6,XMMWORD[32+r10]
> >
> > +        movdqu  xmm7,XMMWORD[48+r10]
> >
> > +DB      102,15,56,0,227
> >
> > +        add     r10,64
> >
> > +        add     ebx,DWORD[16+rsp]
> >
> > +        xor     esi,ebp
> >
> > +        mov     edi,ecx
> >
> > +DB      102,15,56,0,235
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,esi
> >
> > +        xor     edi,ebp
> >
> > +        ror     edx,7
> >
> > +        paddd   xmm4,xmm13
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[20+rsp]
> >
> > +        xor     edi,edx
> >
> > +        mov     esi,ebx
> >
> > +        movdqa  XMMWORD[rsp],xmm4
> >
> > +        rol     ebx,5
> >
> > +        add     eax,edi
> >
> > +        xor     esi,edx
> >
> > +        ror     ecx,7
> >
> > +        psubd   xmm4,xmm13
> >
> > +        add     eax,ebx
> >
> > +        add     ebp,DWORD[24+rsp]
> >
> > +        movups  xmm1,XMMWORD[16+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        xor     esi,ecx
> >
> > +        mov     edi,eax
> >
> > +        rol     eax,5
> >
> > +        add     ebp,esi
> >
> > +        xor     edi,ecx
> >
> > +        ror     ebx,7
> >
> > +        add     ebp,eax
> >
> > +        add     edx,DWORD[28+rsp]
> >
> > +        xor     edi,ebx
> >
> > +        mov     esi,ebp
> >
> > +        rol     ebp,5
> >
> > +        add     edx,edi
> >
> > +        xor     esi,ebx
> >
> > +        ror     eax,7
> >
> > +        add     edx,ebp
> >
> > +        add     ecx,DWORD[32+rsp]
> >
> > +        xor     esi,eax
> >
> > +        mov     edi,edx
> >
> > +DB      102,15,56,0,243
> >
> > +        rol     edx,5
> >
> > +        add     ecx,esi
> >
> > +        movups  xmm0,XMMWORD[32+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        xor     edi,eax
> >
> > +        ror     ebp,7
> >
> > +        paddd   xmm5,xmm13
> >
> > +        add     ecx,edx
> >
> > +        add     ebx,DWORD[36+rsp]
> >
> > +        xor     edi,ebp
> >
> > +        mov     esi,ecx
> >
> > +        movdqa  XMMWORD[16+rsp],xmm5
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,edi
> >
> > +        xor     esi,ebp
> >
> > +        ror     edx,7
> >
> > +        psubd   xmm5,xmm13
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[40+rsp]
> >
> > +        xor     esi,edx
> >
> > +        mov     edi,ebx
> >
> > +        rol     ebx,5
> >
> > +        add     eax,esi
> >
> > +        xor     edi,edx
> >
> > +        ror     ecx,7
> >
> > +        add     eax,ebx
> >
> > +        add     ebp,DWORD[44+rsp]
> >
> > +        movups  xmm1,XMMWORD[48+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        xor     edi,ecx
> >
> > +        mov     esi,eax
> >
> > +        rol     eax,5
> >
> > +        add     ebp,edi
> >
> > +        xor     esi,ecx
> >
> > +        ror     ebx,7
> >
> > +        add     ebp,eax
> >
> > +        add     edx,DWORD[48+rsp]
> >
> > +        xor     esi,ebx
> >
> > +        mov     edi,ebp
> >
> > +DB      102,15,56,0,251
> >
> > +        rol     ebp,5
> >
> > +        add     edx,esi
> >
> > +        xor     edi,ebx
> >
> > +        ror     eax,7
> >
> > +        paddd   xmm6,xmm13
> >
> > +        add     edx,ebp
> >
> > +        add     ecx,DWORD[52+rsp]
> >
> > +        xor     edi,eax
> >
> > +        mov     esi,edx
> >
> > +        movdqa  XMMWORD[32+rsp],xmm6
> >
> > +        rol     edx,5
> >
> > +        add     ecx,edi
> >
> > +        cmp     r8d,11
> >
> > +        jb      NEAR $L$aesenclast4
> >
> > +        movups  xmm0,XMMWORD[64+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[80+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        je      NEAR $L$aesenclast4
> >
> > +        movups  xmm0,XMMWORD[96+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[112+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +$L$aesenclast4:
> >
> > +DB      102,15,56,221,209
> >
> > +        movups  xmm0,XMMWORD[((16-112))+r15]
> >
> > +        xor     esi,eax
> >
> > +        ror     ebp,7
> >
> > +        psubd   xmm6,xmm13
> >
> > +        add     ecx,edx
> >
> > +        add     ebx,DWORD[56+rsp]
> >
> > +        xor     esi,ebp
> >
> > +        mov     edi,ecx
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,esi
> >
> > +        xor     edi,ebp
> >
> > +        ror     edx,7
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[60+rsp]
> >
> > +        xor     edi,edx
> >
> > +        mov     esi,ebx
> >
> > +        rol     ebx,5
> >
> > +        add     eax,edi
> >
> > +        ror     ecx,7
> >
> > +        add     eax,ebx
> >
> > +        movups  XMMWORD[48+r12*1+r13],xmm2
> >
> > +        lea     r12,[64+r12]
> >
> > +
> >
> > +        add     eax,DWORD[r9]
> >
> > +        add     esi,DWORD[4+r9]
> >
> > +        add     ecx,DWORD[8+r9]
> >
> > +        add     edx,DWORD[12+r9]
> >
> > +        mov     DWORD[r9],eax
> >
> > +        add     ebp,DWORD[16+r9]
> >
> > +        mov     DWORD[4+r9],esi
> >
> > +        mov     ebx,esi
> >
> > +        mov     DWORD[8+r9],ecx
> >
> > +        mov     edi,ecx
> >
> > +        mov     DWORD[12+r9],edx
> >
> > +        xor     edi,edx
> >
> > +        mov     DWORD[16+r9],ebp
> >
> > +        and     esi,edi
> >
> > +        jmp     NEAR $L$oop_ssse3
> >
> > +
> >
> > +$L$done_ssse3:
> >
> > +        add     ebx,DWORD[16+rsp]
> >
> > +        xor     esi,ebp
> >
> > +        mov     edi,ecx
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,esi
> >
> > +        xor     edi,ebp
> >
> > +        ror     edx,7
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[20+rsp]
> >
> > +        xor     edi,edx
> >
> > +        mov     esi,ebx
> >
> > +        rol     ebx,5
> >
> > +        add     eax,edi
> >
> > +        xor     esi,edx
> >
> > +        ror     ecx,7
> >
> > +        add     eax,ebx
> >
> > +        add     ebp,DWORD[24+rsp]
> >
> > +        movups  xmm1,XMMWORD[16+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        xor     esi,ecx
> >
> > +        mov     edi,eax
> >
> > +        rol     eax,5
> >
> > +        add     ebp,esi
> >
> > +        xor     edi,ecx
> >
> > +        ror     ebx,7
> >
> > +        add     ebp,eax
> >
> > +        add     edx,DWORD[28+rsp]
> >
> > +        xor     edi,ebx
> >
> > +        mov     esi,ebp
> >
> > +        rol     ebp,5
> >
> > +        add     edx,edi
> >
> > +        xor     esi,ebx
> >
> > +        ror     eax,7
> >
> > +        add     edx,ebp
> >
> > +        add     ecx,DWORD[32+rsp]
> >
> > +        xor     esi,eax
> >
> > +        mov     edi,edx
> >
> > +        rol     edx,5
> >
> > +        add     ecx,esi
> >
> > +        movups  xmm0,XMMWORD[32+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        xor     edi,eax
> >
> > +        ror     ebp,7
> >
> > +        add     ecx,edx
> >
> > +        add     ebx,DWORD[36+rsp]
> >
> > +        xor     edi,ebp
> >
> > +        mov     esi,ecx
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,edi
> >
> > +        xor     esi,ebp
> >
> > +        ror     edx,7
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[40+rsp]
> >
> > +        xor     esi,edx
> >
> > +        mov     edi,ebx
> >
> > +        rol     ebx,5
> >
> > +        add     eax,esi
> >
> > +        xor     edi,edx
> >
> > +        ror     ecx,7
> >
> > +        add     eax,ebx
> >
> > +        add     ebp,DWORD[44+rsp]
> >
> > +        movups  xmm1,XMMWORD[48+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        xor     edi,ecx
> >
> > +        mov     esi,eax
> >
> > +        rol     eax,5
> >
> > +        add     ebp,edi
> >
> > +        xor     esi,ecx
> >
> > +        ror     ebx,7
> >
> > +        add     ebp,eax
> >
> > +        add     edx,DWORD[48+rsp]
> >
> > +        xor     esi,ebx
> >
> > +        mov     edi,ebp
> >
> > +        rol     ebp,5
> >
> > +        add     edx,esi
> >
> > +        xor     edi,ebx
> >
> > +        ror     eax,7
> >
> > +        add     edx,ebp
> >
> > +        add     ecx,DWORD[52+rsp]
> >
> > +        xor     edi,eax
> >
> > +        mov     esi,edx
> >
> > +        rol     edx,5
> >
> > +        add     ecx,edi
> >
> > +        cmp     r8d,11
> >
> > +        jb      NEAR $L$aesenclast5
> >
> > +        movups  xmm0,XMMWORD[64+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[80+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +        je      NEAR $L$aesenclast5
> >
> > +        movups  xmm0,XMMWORD[96+r15]
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[112+r15]
> >
> > +DB      102,15,56,220,208
> >
> > +$L$aesenclast5:
> >
> > +DB      102,15,56,221,209
> >
> > +        movups  xmm0,XMMWORD[((16-112))+r15]
> >
> > +        xor     esi,eax
> >
> > +        ror     ebp,7
> >
> > +        add     ecx,edx
> >
> > +        add     ebx,DWORD[56+rsp]
> >
> > +        xor     esi,ebp
> >
> > +        mov     edi,ecx
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,esi
> >
> > +        xor     edi,ebp
> >
> > +        ror     edx,7
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[60+rsp]
> >
> > +        xor     edi,edx
> >
> > +        mov     esi,ebx
> >
> > +        rol     ebx,5
> >
> > +        add     eax,edi
> >
> > +        ror     ecx,7
> >
> > +        add     eax,ebx
> >
> > +        movups  XMMWORD[48+r12*1+r13],xmm2
> >
> > +        mov     r8,QWORD[88+rsp]
> >
> > +
> >
> > +        add     eax,DWORD[r9]
> >
> > +        add     esi,DWORD[4+r9]
> >
> > +        add     ecx,DWORD[8+r9]
> >
> > +        mov     DWORD[r9],eax
> >
> > +        add     edx,DWORD[12+r9]
> >
> > +        mov     DWORD[4+r9],esi
> >
> > +        add     ebp,DWORD[16+r9]
> >
> > +        mov     DWORD[8+r9],ecx
> >
> > +        mov     DWORD[12+r9],edx
> >
> > +        mov     DWORD[16+r9],ebp
> >
> > +        movups  XMMWORD[r8],xmm2
> >
> > +        movaps  xmm6,XMMWORD[((96+0))+rsp]
> >
> > +        movaps  xmm7,XMMWORD[((96+16))+rsp]
> >
> > +        movaps  xmm8,XMMWORD[((96+32))+rsp]
> >
> > +        movaps  xmm9,XMMWORD[((96+48))+rsp]
> >
> > +        movaps  xmm10,XMMWORD[((96+64))+rsp]
> >
> > +        movaps  xmm11,XMMWORD[((96+80))+rsp]
> >
> > +        movaps  xmm12,XMMWORD[((96+96))+rsp]
> >
> > +        movaps  xmm13,XMMWORD[((96+112))+rsp]
> >
> > +        movaps  xmm14,XMMWORD[((96+128))+rsp]
> >
> > +        movaps  xmm15,XMMWORD[((96+144))+rsp]
> >
> > +        lea     rsi,[264+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_aesni_cbc_sha1_enc_ssse3:
> >
> > +ALIGN   64
> >
> > +K_XX_XX:
> >
> > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> >
> > +        DD      0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
> >
> > +        DD      0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
> >
> > +        DD      0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
> >
> > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> >
> > +DB      0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
> >
> > +
> >
> > +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115
> >
> > +DB      116,105,116,99,104,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
> >
> > +
> >
> > +ALIGN   32
> >
> > +aesni_cbc_sha1_enc_shaext:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_aesni_cbc_sha1_enc_shaext:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +        mov     rcx,r9
> >
> > +        mov     r8,QWORD[40+rsp]
> >
> > +        mov     r9,QWORD[48+rsp]
> >
> > +
> >
> > +
> >
> > +
> >
> > +        mov     r10,QWORD[56+rsp]
> >
> > +        lea     rsp,[((-168))+rsp]
> >
> > +        movaps  XMMWORD[(-8-160)+rax],xmm6
> >
> > +        movaps  XMMWORD[(-8-144)+rax],xmm7
> >
> > +        movaps  XMMWORD[(-8-128)+rax],xmm8
> >
> > +        movaps  XMMWORD[(-8-112)+rax],xmm9
> >
> > +        movaps  XMMWORD[(-8-96)+rax],xmm10
> >
> > +        movaps  XMMWORD[(-8-80)+rax],xmm11
> >
> > +        movaps  XMMWORD[(-8-64)+rax],xmm12
> >
> > +        movaps  XMMWORD[(-8-48)+rax],xmm13
> >
> > +        movaps  XMMWORD[(-8-32)+rax],xmm14
> >
> > +        movaps  XMMWORD[(-8-16)+rax],xmm15
> >
> > +$L$prologue_shaext:
> >
> > +        movdqu  xmm8,XMMWORD[r9]
> >
> > +        movd    xmm9,DWORD[16+r9]
> >
> > +        movdqa  xmm7,XMMWORD[((K_XX_XX+80))]
> >
> > +
> >
> > +        mov     r11d,DWORD[240+rcx]
> >
> > +        sub     rsi,rdi
> >
> > +        movups  xmm15,XMMWORD[rcx]
> >
> > +        movups  xmm2,XMMWORD[r8]
> >
> > +        movups  xmm0,XMMWORD[16+rcx]
> >
> > +        lea     rcx,[112+rcx]
> >
> > +
> >
> > +        pshufd  xmm8,xmm8,27
> >
> > +        pshufd  xmm9,xmm9,27
> >
> > +        jmp     NEAR $L$oop_shaext
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$oop_shaext:
> >
> > +        movups  xmm14,XMMWORD[rdi]
> >
> > +        xorps   xmm14,xmm15
> >
> > +        xorps   xmm2,xmm14
> >
> > +        movups  xmm1,XMMWORD[((-80))+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +        movdqu  xmm3,XMMWORD[r10]
> >
> > +        movdqa  xmm12,xmm9
> >
> > +DB      102,15,56,0,223
> >
> > +        movdqu  xmm4,XMMWORD[16+r10]
> >
> > +        movdqa  xmm11,xmm8
> >
> > +        movups  xmm0,XMMWORD[((-64))+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +DB      102,15,56,0,231
> >
> > +
> >
> > +        paddd   xmm9,xmm3
> >
> > +        movdqu  xmm5,XMMWORD[32+r10]
> >
> > +        lea     r10,[64+r10]
> >
> > +        pxor    xmm3,xmm12
> >
> > +        movups  xmm1,XMMWORD[((-48))+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +        pxor    xmm3,xmm12
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      102,15,56,0,239
> >
> > +DB      69,15,58,204,193,0
> >
> > +DB      68,15,56,200,212
> >
> > +        movups  xmm0,XMMWORD[((-32))+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +DB      15,56,201,220
> >
> > +        movdqu  xmm6,XMMWORD[((-16))+r10]
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      102,15,56,0,247
> >
> > +        movups  xmm1,XMMWORD[((-16))+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +DB      69,15,58,204,194,0
> >
> > +DB      68,15,56,200,205
> >
> > +        pxor    xmm3,xmm5
> >
> > +DB      15,56,201,229
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      69,15,58,204,193,0
> >
> > +DB      68,15,56,200,214
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +DB      15,56,202,222
> >
> > +        pxor    xmm4,xmm6
> >
> > +DB      15,56,201,238
> >
> > +        movups  xmm0,XMMWORD[32+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      69,15,58,204,194,0
> >
> > +DB      68,15,56,200,203
> >
> > +        movups  xmm1,XMMWORD[48+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +DB      15,56,202,227
> >
> > +        pxor    xmm5,xmm3
> >
> > +DB      15,56,201,243
> >
> > +        cmp     r11d,11
> >
> > +        jb      NEAR $L$aesenclast6
> >
> > +        movups  xmm0,XMMWORD[64+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[80+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +        je      NEAR $L$aesenclast6
> >
> > +        movups  xmm0,XMMWORD[96+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[112+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +$L$aesenclast6:
> >
> > +DB      102,15,56,221,209
> >
> > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      69,15,58,204,193,0
> >
> > +DB      68,15,56,200,212
> >
> > +        movups  xmm14,XMMWORD[16+rdi]
> >
> > +        xorps   xmm14,xmm15
> >
> > +        movups  XMMWORD[rdi*1+rsi],xmm2
> >
> > +        xorps   xmm2,xmm14
> >
> > +        movups  xmm1,XMMWORD[((-80))+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +DB      15,56,202,236
> >
> > +        pxor    xmm6,xmm4
> >
> > +DB      15,56,201,220
> >
> > +        movups  xmm0,XMMWORD[((-64))+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      69,15,58,204,194,1
> >
> > +DB      68,15,56,200,205
> >
> > +        movups  xmm1,XMMWORD[((-48))+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +DB      15,56,202,245
> >
> > +        pxor    xmm3,xmm5
> >
> > +DB      15,56,201,229
> >
> > +        movups  xmm0,XMMWORD[((-32))+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      69,15,58,204,193,1
> >
> > +DB      68,15,56,200,214
> >
> > +        movups  xmm1,XMMWORD[((-16))+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +DB      15,56,202,222
> >
> > +        pxor    xmm4,xmm6
> >
> > +DB      15,56,201,238
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      69,15,58,204,194,1
> >
> > +DB      68,15,56,200,203
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +DB      15,56,202,227
> >
> > +        pxor    xmm5,xmm3
> >
> > +DB      15,56,201,243
> >
> > +        movups  xmm0,XMMWORD[32+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      69,15,58,204,193,1
> >
> > +DB      68,15,56,200,212
> >
> > +        movups  xmm1,XMMWORD[48+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +DB      15,56,202,236
> >
> > +        pxor    xmm6,xmm4
> >
> > +DB      15,56,201,220
> >
> > +        cmp     r11d,11
> >
> > +        jb      NEAR $L$aesenclast7
> >
> > +        movups  xmm0,XMMWORD[64+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[80+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +        je      NEAR $L$aesenclast7
> >
> > +        movups  xmm0,XMMWORD[96+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[112+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +$L$aesenclast7:
> >
> > +DB      102,15,56,221,209
> >
> > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      69,15,58,204,194,1
> >
> > +DB      68,15,56,200,205
> >
> > +        movups  xmm14,XMMWORD[32+rdi]
> >
> > +        xorps   xmm14,xmm15
> >
> > +        movups  XMMWORD[16+rdi*1+rsi],xmm2
> >
> > +        xorps   xmm2,xmm14
> >
> > +        movups  xmm1,XMMWORD[((-80))+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +DB      15,56,202,245
> >
> > +        pxor    xmm3,xmm5
> >
> > +DB      15,56,201,229
> >
> > +        movups  xmm0,XMMWORD[((-64))+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      69,15,58,204,193,2
> >
> > +DB      68,15,56,200,214
> >
> > +        movups  xmm1,XMMWORD[((-48))+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +DB      15,56,202,222
> >
> > +        pxor    xmm4,xmm6
> >
> > +DB      15,56,201,238
> >
> > +        movups  xmm0,XMMWORD[((-32))+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      69,15,58,204,194,2
> >
> > +DB      68,15,56,200,203
> >
> > +        movups  xmm1,XMMWORD[((-16))+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +DB      15,56,202,227
> >
> > +        pxor    xmm5,xmm3
> >
> > +DB      15,56,201,243
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      69,15,58,204,193,2
> >
> > +DB      68,15,56,200,212
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +DB      15,56,202,236
> >
> > +        pxor    xmm6,xmm4
> >
> > +DB      15,56,201,220
> >
> > +        movups  xmm0,XMMWORD[32+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      69,15,58,204,194,2
> >
> > +DB      68,15,56,200,205
> >
> > +        movups  xmm1,XMMWORD[48+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +DB      15,56,202,245
> >
> > +        pxor    xmm3,xmm5
> >
> > +DB      15,56,201,229
> >
> > +        cmp     r11d,11
> >
> > +        jb      NEAR $L$aesenclast8
> >
> > +        movups  xmm0,XMMWORD[64+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[80+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +        je      NEAR $L$aesenclast8
> >
> > +        movups  xmm0,XMMWORD[96+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[112+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +$L$aesenclast8:
> >
> > +DB      102,15,56,221,209
> >
> > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      69,15,58,204,193,2
> >
> > +DB      68,15,56,200,214
> >
> > +        movups  xmm14,XMMWORD[48+rdi]
> >
> > +        xorps   xmm14,xmm15
> >
> > +        movups  XMMWORD[32+rdi*1+rsi],xmm2
> >
> > +        xorps   xmm2,xmm14
> >
> > +        movups  xmm1,XMMWORD[((-80))+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +DB      15,56,202,222
> >
> > +        pxor    xmm4,xmm6
> >
> > +DB      15,56,201,238
> >
> > +        movups  xmm0,XMMWORD[((-64))+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      69,15,58,204,194,3
> >
> > +DB      68,15,56,200,203
> >
> > +        movups  xmm1,XMMWORD[((-48))+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +DB      15,56,202,227
> >
> > +        pxor    xmm5,xmm3
> >
> > +DB      15,56,201,243
> >
> > +        movups  xmm0,XMMWORD[((-32))+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      69,15,58,204,193,3
> >
> > +DB      68,15,56,200,212
> >
> > +DB      15,56,202,236
> >
> > +        pxor    xmm6,xmm4
> >
> > +        movups  xmm1,XMMWORD[((-16))+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      69,15,58,204,194,3
> >
> > +DB      68,15,56,200,205
> >
> > +DB      15,56,202,245
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movdqa  xmm5,xmm12
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      69,15,58,204,193,3
> >
> > +DB      68,15,56,200,214
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      69,15,58,204,194,3
> >
> > +DB      68,15,56,200,205
> >
> > +        movups  xmm0,XMMWORD[32+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[48+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +        cmp     r11d,11
> >
> > +        jb      NEAR $L$aesenclast9
> >
> > +        movups  xmm0,XMMWORD[64+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[80+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +        je      NEAR $L$aesenclast9
> >
> > +        movups  xmm0,XMMWORD[96+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[112+rcx]
> >
> > +DB      102,15,56,220,208
> >
> > +$L$aesenclast9:
> >
> > +DB      102,15,56,221,209
> >
> > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> >
> > +        dec     rdx
> >
> > +
> >
> > +        paddd   xmm8,xmm11
> >
> > +        movups  XMMWORD[48+rdi*1+rsi],xmm2
> >
> > +        lea     rdi,[64+rdi]
> >
> > +        jnz     NEAR $L$oop_shaext
> >
> > +
> >
> > +        pshufd  xmm8,xmm8,27
> >
> > +        pshufd  xmm9,xmm9,27
> >
> > +        movups  XMMWORD[r8],xmm2
> >
> > +        movdqu  XMMWORD[r9],xmm8
> >
> > +        movd    DWORD[16+r9],xmm9
> >
> > +        movaps  xmm6,XMMWORD[((-8-160))+rax]
> >
> > +        movaps  xmm7,XMMWORD[((-8-144))+rax]
> >
> > +        movaps  xmm8,XMMWORD[((-8-128))+rax]
> >
> > +        movaps  xmm9,XMMWORD[((-8-112))+rax]
> >
> > +        movaps  xmm10,XMMWORD[((-8-96))+rax]
> >
> > +        movaps  xmm11,XMMWORD[((-8-80))+rax]
> >
> > +        movaps  xmm12,XMMWORD[((-8-64))+rax]
> >
> > +        movaps  xmm13,XMMWORD[((-8-48))+rax]
> >
> > +        movaps  xmm14,XMMWORD[((-8-32))+rax]
> >
> > +        movaps  xmm15,XMMWORD[((-8-16))+rax]
> >
> > +        mov     rsp,rax
> >
> > +$L$epilogue_shaext:
> >
> > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> >
> > +        mov     rsi,QWORD[16+rsp]
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +$L$SEH_end_aesni_cbc_sha1_enc_shaext:
> >
> > +EXTERN  __imp_RtlVirtualUnwind
> >
> > +
> >
> > +ALIGN   16
> >
> > +ssse3_handler:
> >
> > +        push    rsi
> >
> > +        push    rdi
> >
> > +        push    rbx
> >
> > +        push    rbp
> >
> > +        push    r12
> >
> > +        push    r13
> >
> > +        push    r14
> >
> > +        push    r15
> >
> > +        pushfq
> >
> > +        sub     rsp,64
> >
> > +
> >
> > +        mov     rax,QWORD[120+r8]
> >
> > +        mov     rbx,QWORD[248+r8]
> >
> > +
> >
> > +        mov     rsi,QWORD[8+r9]
> >
> > +        mov     r11,QWORD[56+r9]
> >
> > +
> >
> > +        mov     r10d,DWORD[r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$common_seh_tail
> >
> > +
> >
> > +        mov     rax,QWORD[152+r8]
> >
> > +
> >
> > +        mov     r10d,DWORD[4+r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jae     NEAR $L$common_seh_tail
> >
> > +        lea     r10,[aesni_cbc_sha1_enc_shaext]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$seh_no_shaext
> >
> > +
> >
> > +        lea     rsi,[rax]
> >
> > +        lea     rdi,[512+r8]
> >
> > +        mov     ecx,20
> >
> > +        DD      0xa548f3fc
> >
> > +        lea     rax,[168+rax]
> >
> > +        jmp     NEAR $L$common_seh_tail
> >
> > +$L$seh_no_shaext:
> >
> > +        lea     rsi,[96+rax]
> >
> > +        lea     rdi,[512+r8]
> >
> > +        mov     ecx,20
> >
> > +        DD      0xa548f3fc
> >
> > +        lea     rax,[264+rax]
> >
> > +
> >
> > +        mov     r15,QWORD[rax]
> >
> > +        mov     r14,QWORD[8+rax]
> >
> > +        mov     r13,QWORD[16+rax]
> >
> > +        mov     r12,QWORD[24+rax]
> >
> > +        mov     rbp,QWORD[32+rax]
> >
> > +        mov     rbx,QWORD[40+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$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[40+r9]
> >
> > +        mov     rsi,r8
> >
> > +        mov     ecx,154
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +        mov     rsi,r9
> >
> > +        xor     rcx,rcx
> >
> > +        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
> >
> > +        popfq
> >
> > +        pop     r15
> >
> > +        pop     r14
> >
> > +        pop     r13
> >
> > +        pop     r12
> >
> > +        pop     rbp
> >
> > +        pop     rbx
> >
> > +        pop     rdi
> >
> > +        pop     rsi
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +section .pdata rdata align=4
> >
> > +ALIGN   4
> >
> > +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> >
> > +        DD      $L$SEH_end_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> >
> > +        DD      $L$SEH_info_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> >
> > +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> >
> > +        DD      $L$SEH_end_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> >
> > +        DD      $L$SEH_info_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> >
> > +section .xdata rdata align=8
> >
> > +ALIGN   8
> >
> > +$L$SEH_info_aesni_cbc_sha1_enc_ssse3:
> >
> > +DB      9,0,0,0
> >
> > +        DD      ssse3_handler wrt ..imagebase
> >
> > +        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
> > wrt ..imagebase
> >
> > +$L$SEH_info_aesni_cbc_sha1_enc_shaext:
> >
> > +DB      9,0,0,0
> >
> > +        DD      ssse3_handler wrt ..imagebase
> >
> > +        DD      $L$prologue_shaext wrt ..imagebase,$L$epilogue_shaext
> > wrt ..imagebase
> >
> > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> > x86_64.nasm
> > new file mode 100644
> > index 0000000000..f5c250b904
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> > x86_64.nasm
> > @@ -0,0 +1,78 @@
> > +; WARNING: do not edit!
> >
> > +; Generated from openssl/crypto/aes/asm/aesni-sha256-x86_64.pl
> >
> > +;
> >
> > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
> >
> > +;
> >
> > +; Licensed under the OpenSSL license (the "License").  You may not use
> >
> > +; this file except in compliance with the License.  You can obtain a copy
> >
> > +; in the file LICENSE in the source distribution or at
> >
> > +; https://www.openssl.org/source/license.html
> >
> > +
> >
> > +default rel
> >
> > +%define XMMWORD
> >
> > +%define YMMWORD
> >
> > +%define ZMMWORD
> >
> > +section .text code align=64
> >
> > +
> >
> > +
> >
> > +EXTERN  OPENSSL_ia32cap_P
> >
> > +global  aesni_cbc_sha256_enc
> >
> > +
> >
> > +ALIGN   16
> >
> > +aesni_cbc_sha256_enc:
> >
> > +
> >
> > +        xor     eax,eax
> >
> > +        cmp     rcx,0
> >
> > +        je      NEAR $L$probe
> >
> > +        ud2
> >
> > +$L$probe:
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   64
> >
> > +
> >
> > +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      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> >
> > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> >
> > +        DD      0,0,0,0,0,0,0,0,-1,-1,-1,-1
> >
> > +        DD      0,0,0,0,0,0,0,0
> >
> > +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54
> >
> > +DB      32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95
> >
> > +DB      54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98
> >
> > +DB      121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108
> >
> > +DB      46,111,114,103,62,0
> >
> > +ALIGN   64
> >
> > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
> > b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
> > new file mode 100644
> > index 0000000000..57ee23ea8c
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
> > @@ -0,0 +1,5103 @@
> > +; WARNING: do not edit!
> >
> > +; Generated from openssl/crypto/aes/asm/aesni-x86_64.pl
> >
> > +;
> >
> > +; Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved.
> >
> > +;
> >
> > +; Licensed under the OpenSSL license (the "License").  You may not use
> >
> > +; this file except in compliance with the License.  You can obtain a copy
> >
> > +; in the file LICENSE in the source distribution or at
> >
> > +; https://www.openssl.org/source/license.html
> >
> > +
> >
> > +default rel
> >
> > +%define XMMWORD
> >
> > +%define YMMWORD
> >
> > +%define ZMMWORD
> >
> > +section .text code align=64
> >
> > +
> >
> > +EXTERN  OPENSSL_ia32cap_P
> >
> > +global  aesni_encrypt
> >
> > +
> >
> > +ALIGN   16
> >
> > +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:
> >
> > +DB      102,15,56,220,209
> >
> > +        dec     eax
> >
> > +        movups  xmm1,XMMWORD[r8]
> >
> > +        lea     r8,[16+r8]
> >
> > +        jnz     NEAR $L$oop_enc1_1
> >
> > +DB      102,15,56,221,209
> >
> > +        pxor    xmm0,xmm0
> >
> > +        pxor    xmm1,xmm1
> >
> > +        movups  XMMWORD[rdx],xmm2
> >
> > +        pxor    xmm2,xmm2
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +global  aesni_decrypt
> >
> > +
> >
> > +ALIGN   16
> >
> > +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:
> >
> > +DB      102,15,56,222,209
> >
> > +        dec     eax
> >
> > +        movups  xmm1,XMMWORD[r8]
> >
> > +        lea     r8,[16+r8]
> >
> > +        jnz     NEAR $L$oop_dec1_2
> >
> > +DB      102,15,56,223,209
> >
> > +        pxor    xmm0,xmm0
> >
> > +        pxor    xmm1,xmm1
> >
> > +        movups  XMMWORD[rdx],xmm2
> >
> > +        pxor    xmm2,xmm2
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +_aesni_encrypt2:
> >
> > +
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        shl     eax,4
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +        xorps   xmm3,xmm0
> >
> > +        movups  xmm0,XMMWORD[32+rcx]
> >
> > +        lea     rcx,[32+rax*1+rcx]
> >
> > +        neg     rax
> >
> > +        add     rax,16
> >
> > +
> >
> > +$L$enc_loop2:
> >
> > +DB      102,15,56,220,209
> >
> > +DB      102,15,56,220,217
> >
> > +        movups  xmm1,XMMWORD[rax*1+rcx]
> >
> > +        add     rax,32
> >
> > +DB      102,15,56,220,208
> >
> > +DB      102,15,56,220,216
> >
> > +        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
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +_aesni_decrypt2:
> >
> > +
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        shl     eax,4
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +        xorps   xmm3,xmm0
> >
> > +        movups  xmm0,XMMWORD[32+rcx]
> >
> > +        lea     rcx,[32+rax*1+rcx]
> >
> > +        neg     rax
> >
> > +        add     rax,16
> >
> > +
> >
> > +$L$dec_loop2:
> >
> > +DB      102,15,56,222,209
> >
> > +DB      102,15,56,222,217
> >
> > +        movups  xmm1,XMMWORD[rax*1+rcx]
> >
> > +        add     rax,32
> >
> > +DB      102,15,56,222,208
> >
> > +DB      102,15,56,222,216
> >
> > +        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
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +_aesni_encrypt3:
> >
> > +
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        shl     eax,4
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +        xorps   xmm3,xmm0
> >
> > +        xorps   xmm4,xmm0
> >
> > +        movups  xmm0,XMMWORD[32+rcx]
> >
> > +        lea     rcx,[32+rax*1+rcx]
> >
> > +        neg     rax
> >
> > +        add     rax,16
> >
> > +
> >
> > +$L$enc_loop3:
> >
> > +DB      102,15,56,220,209
> >
> > +DB      102,15,56,220,217
> >
> > +DB      102,15,56,220,225
> >
> > +        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[((-16))+rax*1+rcx]
> >
> > +        jnz     NEAR $L$enc_loop3
> >
> > +
> >
> > +DB      102,15,56,220,209
> >
> > +DB      102,15,56,220,217
> >
> > +DB      102,15,56,220,225
> >
> > +DB      102,15,56,221,208
> >
> > +DB      102,15,56,221,216
> >
> > +DB      102,15,56,221,224
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +_aesni_decrypt3:
> >
> > +
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        shl     eax,4
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +        xorps   xmm3,xmm0
> >
> > +        xorps   xmm4,xmm0
> >
> > +        movups  xmm0,XMMWORD[32+rcx]
> >
> > +        lea     rcx,[32+rax*1+rcx]
> >
> > +        neg     rax
> >
> > +        add     rax,16
> >
> > +
> >
> > +$L$dec_loop3:
> >
> > +DB      102,15,56,222,209
> >
> > +DB      102,15,56,222,217
> >
> > +DB      102,15,56,222,225
> >
> > +        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[((-16))+rax*1+rcx]
> >
> > +        jnz     NEAR $L$dec_loop3
> >
> > +
> >
> > +DB      102,15,56,222,209
> >
> > +DB      102,15,56,222,217
> >
> > +DB      102,15,56,222,225
> >
> > +DB      102,15,56,223,208
> >
> > +DB      102,15,56,223,216
> >
> > +DB      102,15,56,223,224
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +_aesni_encrypt4:
> >
> > +
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        shl     eax,4
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +        xorps   xmm3,xmm0
> >
> > +        xorps   xmm4,xmm0
> >
> > +        xorps   xmm5,xmm0
> >
> > +        movups  xmm0,XMMWORD[32+rcx]
> >
> > +        lea     rcx,[32+rax*1+rcx]
> >
> > +        neg     rax
> >
> > +DB      0x0f,0x1f,0x00
> >
> > +        add     rax,16
> >
> > +
> >
> > +$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[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[((-16))+rax*1+rcx]
> >
> > +        jnz     NEAR $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
> >
> > +DB      102,15,56,221,208
> >
> > +DB      102,15,56,221,216
> >
> > +DB      102,15,56,221,224
> >
> > +DB      102,15,56,221,232
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +_aesni_decrypt4:
> >
> > +
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        shl     eax,4
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +        xorps   xmm3,xmm0
> >
> > +        xorps   xmm4,xmm0
> >
> > +        xorps   xmm5,xmm0
> >
> > +        movups  xmm0,XMMWORD[32+rcx]
> >
> > +        lea     rcx,[32+rax*1+rcx]
> >
> > +        neg     rax
> >
> > +DB      0x0f,0x1f,0x00
> >
> > +        add     rax,16
> >
> > +
> >
> > +$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[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[((-16))+rax*1+rcx]
> >
> > +        jnz     NEAR $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
> >
> > +DB      102,15,56,223,208
> >
> > +DB      102,15,56,223,216
> >
> > +DB      102,15,56,223,224
> >
> > +DB      102,15,56,223,232
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +_aesni_encrypt6:
> >
> > +
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        shl     eax,4
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +        pxor    xmm3,xmm0
> >
> > +        pxor    xmm4,xmm0
> >
> > +DB      102,15,56,220,209
> >
> > +        lea     rcx,[32+rax*1+rcx]
> >
> > +        neg     rax
> >
> > +DB      102,15,56,220,217
> >
> > +        pxor    xmm5,xmm0
> >
> > +        pxor    xmm6,xmm0
> >
> > +DB      102,15,56,220,225
> >
> > +        pxor    xmm7,xmm0
> >
> > +        movups  xmm0,XMMWORD[rax*1+rcx]
> >
> > +        add     rax,16
> >
> > +        jmp     NEAR $L$enc_loop6_enter
> >
> > +ALIGN   16
> >
> > +$L$enc_loop6:
> >
> > +DB      102,15,56,220,209
> >
> > +DB      102,15,56,220,217
> >
> > +DB      102,15,56,220,225
> >
> > +$L$enc_loop6_enter:
> >
> > +DB      102,15,56,220,233
> >
> > +DB      102,15,56,220,241
> >
> > +DB      102,15,56,220,249
> >
> > +        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
> >
> > +DB      102,15,56,220,240
> >
> > +DB      102,15,56,220,248
> >
> > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> >
> > +        jnz     NEAR $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
> >
> > +DB      102,15,56,221,208
> >
> > +DB      102,15,56,221,216
> >
> > +DB      102,15,56,221,224
> >
> > +DB      102,15,56,221,232
> >
> > +DB      102,15,56,221,240
> >
> > +DB      102,15,56,221,248
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +_aesni_decrypt6:
> >
> > +
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        shl     eax,4
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +        pxor    xmm3,xmm0
> >
> > +        pxor    xmm4,xmm0
> >
> > +DB      102,15,56,222,209
> >
> > +        lea     rcx,[32+rax*1+rcx]
> >
> > +        neg     rax
> >
> > +DB      102,15,56,222,217
> >
> > +        pxor    xmm5,xmm0
> >
> > +        pxor    xmm6,xmm0
> >
> > +DB      102,15,56,222,225
> >
> > +        pxor    xmm7,xmm0
> >
> > +        movups  xmm0,XMMWORD[rax*1+rcx]
> >
> > +        add     rax,16
> >
> > +        jmp     NEAR $L$dec_loop6_enter
> >
> > +ALIGN   16
> >
> > +$L$dec_loop6:
> >
> > +DB      102,15,56,222,209
> >
> > +DB      102,15,56,222,217
> >
> > +DB      102,15,56,222,225
> >
> > +$L$dec_loop6_enter:
> >
> > +DB      102,15,56,222,233
> >
> > +DB      102,15,56,222,241
> >
> > +DB      102,15,56,222,249
> >
> > +        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
> >
> > +DB      102,15,56,222,240
> >
> > +DB      102,15,56,222,248
> >
> > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> >
> > +        jnz     NEAR $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
> >
> > +DB      102,15,56,223,208
> >
> > +DB      102,15,56,223,216
> >
> > +DB      102,15,56,223,224
> >
> > +DB      102,15,56,223,232
> >
> > +DB      102,15,56,223,240
> >
> > +DB      102,15,56,223,248
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +_aesni_encrypt8:
> >
> > +
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        shl     eax,4
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +        xorps   xmm3,xmm0
> >
> > +        pxor    xmm4,xmm0
> >
> > +        pxor    xmm5,xmm0
> >
> > +        pxor    xmm6,xmm0
> >
> > +        lea     rcx,[32+rax*1+rcx]
> >
> > +        neg     rax
> >
> > +DB      102,15,56,220,209
> >
> > +        pxor    xmm7,xmm0
> >
> > +        pxor    xmm8,xmm0
> >
> > +DB      102,15,56,220,217
> >
> > +        pxor    xmm9,xmm0
> >
> > +        movups  xmm0,XMMWORD[rax*1+rcx]
> >
> > +        add     rax,16
> >
> > +        jmp     NEAR $L$enc_loop8_inner
> >
> > +ALIGN   16
> >
> > +$L$enc_loop8:
> >
> > +DB      102,15,56,220,209
> >
> > +DB      102,15,56,220,217
> >
> > +$L$enc_loop8_inner:
> >
> > +DB      102,15,56,220,225
> >
> > +DB      102,15,56,220,233
> >
> > +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
> >
> > +$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
> >
> > +DB      102,15,56,220,224
> >
> > +DB      102,15,56,220,232
> >
> > +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[((-16))+rax*1+rcx]
> >
> > +        jnz     NEAR $L$enc_loop8
> >
> > +
> >
> > +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
> >
> > +DB      102,68,15,56,220,193
> >
> > +DB      102,68,15,56,220,201
> >
> > +DB      102,15,56,221,208
> >
> > +DB      102,15,56,221,216
> >
> > +DB      102,15,56,221,224
> >
> > +DB      102,15,56,221,232
> >
> > +DB      102,15,56,221,240
> >
> > +DB      102,15,56,221,248
> >
> > +DB      102,68,15,56,221,192
> >
> > +DB      102,68,15,56,221,200
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +_aesni_decrypt8:
> >
> > +
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        shl     eax,4
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +        xorps   xmm3,xmm0
> >
> > +        pxor    xmm4,xmm0
> >
> > +        pxor    xmm5,xmm0
> >
> > +        pxor    xmm6,xmm0
> >
> > +        lea     rcx,[32+rax*1+rcx]
> >
> > +        neg     rax
> >
> > +DB      102,15,56,222,209
> >
> > +        pxor    xmm7,xmm0
> >
> > +        pxor    xmm8,xmm0
> >
> > +DB      102,15,56,222,217
> >
> > +        pxor    xmm9,xmm0
> >
> > +        movups  xmm0,XMMWORD[rax*1+rcx]
> >
> > +        add     rax,16
> >
> > +        jmp     NEAR $L$dec_loop8_inner
> >
> > +ALIGN   16
> >
> > +$L$dec_loop8:
> >
> > +DB      102,15,56,222,209
> >
> > +DB      102,15,56,222,217
> >
> > +$L$dec_loop8_inner:
> >
> > +DB      102,15,56,222,225
> >
> > +DB      102,15,56,222,233
> >
> > +DB      102,15,56,222,241
> >
> > +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[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
> >
> > +DB      102,15,56,222,240
> >
> > +DB      102,15,56,222,248
> >
> > +DB      102,68,15,56,222,192
> >
> > +DB      102,68,15,56,222,200
> >
> > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> >
> > +        jnz     NEAR $L$dec_loop8
> >
> > +
> >
> > +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
> >
> > +DB      102,68,15,56,222,193
> >
> > +DB      102,68,15,56,222,201
> >
> > +DB      102,15,56,223,208
> >
> > +DB      102,15,56,223,216
> >
> > +DB      102,15,56,223,224
> >
> > +DB      102,15,56,223,232
> >
> > +DB      102,15,56,223,240
> >
> > +DB      102,15,56,223,248
> >
> > +DB      102,68,15,56,223,192
> >
> > +DB      102,68,15,56,223,200
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +global  aesni_ecb_encrypt
> >
> > +
> >
> > +ALIGN   16
> >
> > +aesni_ecb_encrypt:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_aesni_ecb_encrypt:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +        mov     rcx,r9
> >
> > +        mov     r8,QWORD[40+rsp]
> >
> > +
> >
> > +
> >
> > +
> >
> > +        lea     rsp,[((-88))+rsp]
> >
> > +        movaps  XMMWORD[rsp],xmm6
> >
> > +        movaps  XMMWORD[16+rsp],xmm7
> >
> > +        movaps  XMMWORD[32+rsp],xmm8
> >
> > +        movaps  XMMWORD[48+rsp],xmm9
> >
> > +$L$ecb_enc_body:
> >
> > +        and     rdx,-16
> >
> > +        jz      NEAR $L$ecb_ret
> >
> > +
> >
> > +        mov     eax,DWORD[240+rcx]
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        mov     r11,rcx
> >
> > +        mov     r10d,eax
> >
> > +        test    r8d,r8d
> >
> > +        jz      NEAR $L$ecb_decrypt
> >
> > +
> >
> > +        cmp     rdx,0x80
> >
> > +        jb      NEAR $L$ecb_enc_tail
> >
> > +
> >
> > +        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[rsi],xmm2
> >
> > +        mov     rcx,r11
> >
> > +        movdqu  xmm2,XMMWORD[rdi]
> >
> > +        mov     eax,r10d
> >
> > +        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,0x80
> >
> > +        jnc     NEAR $L$ecb_enc_loop8
> >
> > +
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        mov     rcx,r11
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        mov     eax,r10d
> >
> > +        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[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]
> >
> > +        xorps   xmm9,xmm9
> >
> > +        call    _aesni_encrypt8
> >
> > +        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[rcx]
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        lea     rcx,[32+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +$L$oop_enc1_3:
> >
> > +DB      102,15,56,220,209
> >
> > +        dec     eax
> >
> > +        movups  xmm1,XMMWORD[rcx]
> >
> > +        lea     rcx,[16+rcx]
> >
> > +        jnz     NEAR $L$oop_enc1_3
> >
> > +DB      102,15,56,221,209
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        jmp     NEAR $L$ecb_ret
> >
> > +ALIGN   16
> >
> > +$L$ecb_enc_two:
> >
> > +        call    _aesni_encrypt2
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        jmp     NEAR $L$ecb_ret
> >
> > +ALIGN   16
> >
> > +$L$ecb_enc_three:
> >
> > +        call    _aesni_encrypt3
> >
> > +        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:
> >
> > +        call    _aesni_encrypt4
> >
> > +        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:
> >
> > +        xorps   xmm7,xmm7
> >
> > +        call    _aesni_encrypt6
> >
> > +        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:
> >
> > +        call    _aesni_encrypt6
> >
> > +        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,0x80
> >
> > +        jb      NEAR $L$ecb_dec_tail
> >
> > +
> >
> > +        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[rsi],xmm2
> >
> > +        mov     rcx,r11
> >
> > +        movdqu  xmm2,XMMWORD[rdi]
> >
> > +        mov     eax,r10d
> >
> > +        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[r11]
> >
> > +        sub     rdx,0x80
> >
> > +        jnc     NEAR $L$ecb_dec_loop8
> >
> > +
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm2,xmm2
> >
> > +        mov     rcx,r11
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        pxor    xmm3,xmm3
> >
> > +        mov     eax,r10d
> >
> > +        movups  XMMWORD[32+rsi],xmm4
> >
> > +        pxor    xmm4,xmm4
> >
> > +        movups  XMMWORD[48+rsi],xmm5
> >
> > +        pxor    xmm5,xmm5
> >
> > +        movups  XMMWORD[64+rsi],xmm6
> >
> > +        pxor    xmm6,xmm6
> >
> > +        movups  XMMWORD[80+rsi],xmm7
> >
> > +        pxor    xmm7,xmm7
> >
> > +        movups  XMMWORD[96+rsi],xmm8
> >
> > +        pxor    xmm8,xmm8
> >
> > +        movups  XMMWORD[112+rsi],xmm9
> >
> > +        pxor    xmm9,xmm9
> >
> > +        lea     rsi,[128+rsi]
> >
> > +        add     rdx,0x80
> >
> > +        jz      NEAR $L$ecb_ret
> >
> > +
> >
> > +$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]
> >
> > +        xorps   xmm9,xmm9
> >
> > +        call    _aesni_decrypt8
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm2,xmm2
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        pxor    xmm3,xmm3
> >
> > +        movups  XMMWORD[32+rsi],xmm4
> >
> > +        pxor    xmm4,xmm4
> >
> > +        movups  XMMWORD[48+rsi],xmm5
> >
> > +        pxor    xmm5,xmm5
> >
> > +        movups  XMMWORD[64+rsi],xmm6
> >
> > +        pxor    xmm6,xmm6
> >
> > +        movups  XMMWORD[80+rsi],xmm7
> >
> > +        pxor    xmm7,xmm7
> >
> > +        movups  XMMWORD[96+rsi],xmm8
> >
> > +        pxor    xmm8,xmm8
> >
> > +        pxor    xmm9,xmm9
> >
> > +        jmp     NEAR $L$ecb_ret
> >
> > +ALIGN   16
> >
> > +$L$ecb_dec_one:
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        lea     rcx,[32+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +$L$oop_dec1_4:
> >
> > +DB      102,15,56,222,209
> >
> > +        dec     eax
> >
> > +        movups  xmm1,XMMWORD[rcx]
> >
> > +        lea     rcx,[16+rcx]
> >
> > +        jnz     NEAR $L$oop_dec1_4
> >
> > +DB      102,15,56,223,209
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm2,xmm2
> >
> > +        jmp     NEAR $L$ecb_ret
> >
> > +ALIGN   16
> >
> > +$L$ecb_dec_two:
> >
> > +        call    _aesni_decrypt2
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm2,xmm2
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        pxor    xmm3,xmm3
> >
> > +        jmp     NEAR $L$ecb_ret
> >
> > +ALIGN   16
> >
> > +$L$ecb_dec_three:
> >
> > +        call    _aesni_decrypt3
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm2,xmm2
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        pxor    xmm3,xmm3
> >
> > +        movups  XMMWORD[32+rsi],xmm4
> >
> > +        pxor    xmm4,xmm4
> >
> > +        jmp     NEAR $L$ecb_ret
> >
> > +ALIGN   16
> >
> > +$L$ecb_dec_four:
> >
> > +        call    _aesni_decrypt4
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm2,xmm2
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        pxor    xmm3,xmm3
> >
> > +        movups  XMMWORD[32+rsi],xmm4
> >
> > +        pxor    xmm4,xmm4
> >
> > +        movups  XMMWORD[48+rsi],xmm5
> >
> > +        pxor    xmm5,xmm5
> >
> > +        jmp     NEAR $L$ecb_ret
> >
> > +ALIGN   16
> >
> > +$L$ecb_dec_five:
> >
> > +        xorps   xmm7,xmm7
> >
> > +        call    _aesni_decrypt6
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm2,xmm2
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        pxor    xmm3,xmm3
> >
> > +        movups  XMMWORD[32+rsi],xmm4
> >
> > +        pxor    xmm4,xmm4
> >
> > +        movups  XMMWORD[48+rsi],xmm5
> >
> > +        pxor    xmm5,xmm5
> >
> > +        movups  XMMWORD[64+rsi],xmm6
> >
> > +        pxor    xmm6,xmm6
> >
> > +        pxor    xmm7,xmm7
> >
> > +        jmp     NEAR $L$ecb_ret
> >
> > +ALIGN   16
> >
> > +$L$ecb_dec_six:
> >
> > +        call    _aesni_decrypt6
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm2,xmm2
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        pxor    xmm3,xmm3
> >
> > +        movups  XMMWORD[32+rsi],xmm4
> >
> > +        pxor    xmm4,xmm4
> >
> > +        movups  XMMWORD[48+rsi],xmm5
> >
> > +        pxor    xmm5,xmm5
> >
> > +        movups  XMMWORD[64+rsi],xmm6
> >
> > +        pxor    xmm6,xmm6
> >
> > +        movups  XMMWORD[80+rsi],xmm7
> >
> > +        pxor    xmm7,xmm7
> >
> > +
> >
> > +$L$ecb_ret:
> >
> > +        xorps   xmm0,xmm0
> >
> > +        pxor    xmm1,xmm1
> >
> > +        movaps  xmm6,XMMWORD[rsp]
> >
> > +        movaps  XMMWORD[rsp],xmm0
> >
> > +        movaps  xmm7,XMMWORD[16+rsp]
> >
> > +        movaps  XMMWORD[16+rsp],xmm0
> >
> > +        movaps  xmm8,XMMWORD[32+rsp]
> >
> > +        movaps  XMMWORD[32+rsp],xmm0
> >
> > +        movaps  xmm9,XMMWORD[48+rsp]
> >
> > +        movaps  XMMWORD[48+rsp],xmm0
> >
> > +        lea     rsp,[88+rsp]
> >
> > +$L$ecb_enc_ret:
> >
> > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> >
> > +        mov     rsi,QWORD[16+rsp]
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +$L$SEH_end_aesni_ecb_encrypt:
> >
> > +global  aesni_ccm64_encrypt_blocks
> >
> > +
> >
> > +ALIGN   16
> >
> > +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:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +        mov     rcx,r9
> >
> > +        mov     r8,QWORD[40+rsp]
> >
> > +        mov     r9,QWORD[48+rsp]
> >
> > +
> >
> > +
> >
> > +
> >
> > +        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,[rcx]
> >
> > +        movdqu  xmm3,XMMWORD[r9]
> >
> > +        movdqa  xmm2,xmm6
> >
> > +        lea     rcx,[32+rax*1+rcx]
> >
> > +DB      102,15,56,0,247
> >
> > +        sub     r10,rax
> >
> > +        jmp     NEAR $L$ccm64_enc_outer
> >
> > +ALIGN   16
> >
> > +$L$ccm64_enc_outer:
> >
> > +        movups  xmm0,XMMWORD[r11]
> >
> > +        mov     rax,r10
> >
> > +        movups  xmm8,XMMWORD[rdi]
> >
> > +
> >
> > +        xorps   xmm2,xmm0
> >
> > +        movups  xmm1,XMMWORD[16+r11]
> >
> > +        xorps   xmm0,xmm8
> >
> > +        xorps   xmm3,xmm0
> >
> > +        movups  xmm0,XMMWORD[32+r11]
> >
> > +
> >
> > +$L$ccm64_enc2_loop:
> >
> > +DB      102,15,56,220,209
> >
> > +DB      102,15,56,220,217
> >
> > +        movups  xmm1,XMMWORD[rax*1+rcx]
> >
> > +        add     rax,32
> >
> > +DB      102,15,56,220,208
> >
> > +DB      102,15,56,220,216
> >
> > +        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
> >
> > +        dec     rdx
> >
> > +DB      102,15,56,221,208
> >
> > +DB      102,15,56,221,216
> >
> > +
> >
> > +        lea     rdi,[16+rdi]
> >
> > +        xorps   xmm8,xmm2
> >
> > +        movdqa  xmm2,xmm6
> >
> > +        movups  XMMWORD[rsi],xmm8
> >
> > +DB      102,15,56,0,215
> >
> > +        lea     rsi,[16+rsi]
> >
> > +        jnz     NEAR $L$ccm64_enc_outer
> >
> > +
> >
> > +        pxor    xmm0,xmm0
> >
> > +        pxor    xmm1,xmm1
> >
> > +        pxor    xmm2,xmm2
> >
> > +        movups  XMMWORD[r9],xmm3
> >
> > +        pxor    xmm3,xmm3
> >
> > +        pxor    xmm8,xmm8
> >
> > +        pxor    xmm6,xmm6
> >
> > +        movaps  xmm6,XMMWORD[rsp]
> >
> > +        movaps  XMMWORD[rsp],xmm0
> >
> > +        movaps  xmm7,XMMWORD[16+rsp]
> >
> > +        movaps  XMMWORD[16+rsp],xmm0
> >
> > +        movaps  xmm8,XMMWORD[32+rsp]
> >
> > +        movaps  XMMWORD[32+rsp],xmm0
> >
> > +        movaps  xmm9,XMMWORD[48+rsp]
> >
> > +        movaps  XMMWORD[48+rsp],xmm0
> >
> > +        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:
> >
> > +global  aesni_ccm64_decrypt_blocks
> >
> > +
> >
> > +ALIGN   16
> >
> > +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:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +        mov     rcx,r9
> >
> > +        mov     r8,QWORD[40+rsp]
> >
> > +        mov     r9,QWORD[48+rsp]
> >
> > +
> >
> > +
> >
> > +
> >
> > +        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[rcx]
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        lea     rcx,[32+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +$L$oop_enc1_5:
> >
> > +DB      102,15,56,220,209
> >
> > +        dec     eax
> >
> > +        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[rdi]
> >
> > +        paddq   xmm6,xmm9
> >
> > +        lea     rdi,[16+rdi]
> >
> > +        sub     rax,r10
> >
> > +        lea     rcx,[32+r10*1+r11]
> >
> > +        mov     r10,rax
> >
> > +        jmp     NEAR $L$ccm64_dec_outer
> >
> > +ALIGN   16
> >
> > +$L$ccm64_dec_outer:
> >
> > +        xorps   xmm8,xmm2
> >
> > +        movdqa  xmm2,xmm6
> >
> > +        movups  XMMWORD[rsi],xmm8
> >
> > +        lea     rsi,[16+rsi]
> >
> > +DB      102,15,56,0,215
> >
> > +
> >
> > +        sub     rdx,1
> >
> > +        jz      NEAR $L$ccm64_dec_break
> >
> > +
> >
> > +        movups  xmm0,XMMWORD[r11]
> >
> > +        mov     rax,r10
> >
> > +        movups  xmm1,XMMWORD[16+r11]
> >
> > +        xorps   xmm8,xmm0
> >
> > +        xorps   xmm2,xmm0
> >
> > +        xorps   xmm3,xmm8
> >
> > +        movups  xmm0,XMMWORD[32+r11]
> >
> > +        jmp     NEAR $L$ccm64_dec2_loop
> >
> > +ALIGN   16
> >
> > +$L$ccm64_dec2_loop:
> >
> > +DB      102,15,56,220,209
> >
> > +DB      102,15,56,220,217
> >
> > +        movups  xmm1,XMMWORD[rax*1+rcx]
> >
> > +        add     rax,32
> >
> > +DB      102,15,56,220,208
> >
> > +DB      102,15,56,220,216
> >
> > +        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,[16+rdi]
> >
> > +        jmp     NEAR $L$ccm64_dec_outer
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$ccm64_dec_break:
> >
> > +
> >
> > +        mov     eax,DWORD[240+r11]
> >
> > +        movups  xmm0,XMMWORD[r11]
> >
> > +        movups  xmm1,XMMWORD[16+r11]
> >
> > +        xorps   xmm8,xmm0
> >
> > +        lea     r11,[32+r11]
> >
> > +        xorps   xmm3,xmm8
> >
> > +$L$oop_enc1_6:
> >
> > +DB      102,15,56,220,217
> >
> > +        dec     eax
> >
> > +        movups  xmm1,XMMWORD[r11]
> >
> > +        lea     r11,[16+r11]
> >
> > +        jnz     NEAR $L$oop_enc1_6
> >
> > +DB      102,15,56,221,217
> >
> > +        pxor    xmm0,xmm0
> >
> > +        pxor    xmm1,xmm1
> >
> > +        pxor    xmm2,xmm2
> >
> > +        movups  XMMWORD[r9],xmm3
> >
> > +        pxor    xmm3,xmm3
> >
> > +        pxor    xmm8,xmm8
> >
> > +        pxor    xmm6,xmm6
> >
> > +        movaps  xmm6,XMMWORD[rsp]
> >
> > +        movaps  XMMWORD[rsp],xmm0
> >
> > +        movaps  xmm7,XMMWORD[16+rsp]
> >
> > +        movaps  XMMWORD[16+rsp],xmm0
> >
> > +        movaps  xmm8,XMMWORD[32+rsp]
> >
> > +        movaps  XMMWORD[32+rsp],xmm0
> >
> > +        movaps  xmm9,XMMWORD[48+rsp]
> >
> > +        movaps  XMMWORD[48+rsp],xmm0
> >
> > +        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:
> >
> > +global  aesni_ctr32_encrypt_blocks
> >
> > +
> >
> > +ALIGN   16
> >
> > +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:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +        mov     rcx,r9
> >
> > +        mov     r8,QWORD[40+rsp]
> >
> > +
> >
> > +
> >
> > +
> >
> > +        cmp     rdx,1
> >
> > +        jne     NEAR $L$ctr32_bulk
> >
> > +
> >
> > +
> >
> > +
> >
> > +        movups  xmm2,XMMWORD[r8]
> >
> > +        movups  xmm3,XMMWORD[rdi]
> >
> > +        mov     edx,DWORD[240+rcx]
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        lea     rcx,[32+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +$L$oop_enc1_7:
> >
> > +DB      102,15,56,220,209
> >
> > +        dec     edx
> >
> > +        movups  xmm1,XMMWORD[rcx]
> >
> > +        lea     rcx,[16+rcx]
> >
> > +        jnz     NEAR $L$oop_enc1_7
> >
> > +DB      102,15,56,221,209
> >
> > +        pxor    xmm0,xmm0
> >
> > +        pxor    xmm1,xmm1
> >
> > +        xorps   xmm2,xmm3
> >
> > +        pxor    xmm3,xmm3
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        xorps   xmm2,xmm2
> >
> > +        jmp     NEAR $L$ctr32_epilogue
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$ctr32_bulk:
> >
> > +        lea     r11,[rsp]
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        sub     rsp,288
> >
> > +        and     rsp,-16
> >
> > +        movaps  XMMWORD[(-168)+r11],xmm6
> >
> > +        movaps  XMMWORD[(-152)+r11],xmm7
> >
> > +        movaps  XMMWORD[(-136)+r11],xmm8
> >
> > +        movaps  XMMWORD[(-120)+r11],xmm9
> >
> > +        movaps  XMMWORD[(-104)+r11],xmm10
> >
> > +        movaps  XMMWORD[(-88)+r11],xmm11
> >
> > +        movaps  XMMWORD[(-72)+r11],xmm12
> >
> > +        movaps  XMMWORD[(-56)+r11],xmm13
> >
> > +        movaps  XMMWORD[(-40)+r11],xmm14
> >
> > +        movaps  XMMWORD[(-24)+r11],xmm15
> >
> > +$L$ctr32_body:
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +        movdqu  xmm2,XMMWORD[r8]
> >
> > +        movdqu  xmm0,XMMWORD[rcx]
> >
> > +        mov     r8d,DWORD[12+r8]
> >
> > +        pxor    xmm2,xmm0
> >
> > +        mov     ebp,DWORD[12+rcx]
> >
> > +        movdqa  XMMWORD[rsp],xmm2
> >
> > +        bswap   r8d
> >
> > +        movdqa  xmm3,xmm2
> >
> > +        movdqa  xmm4,xmm2
> >
> > +        movdqa  xmm5,xmm2
> >
> > +        movdqa  XMMWORD[64+rsp],xmm2
> >
> > +        movdqa  XMMWORD[80+rsp],xmm2
> >
> > +        movdqa  XMMWORD[96+rsp],xmm2
> >
> > +        mov     r10,rdx
> >
> > +        movdqa  XMMWORD[112+rsp],xmm2
> >
> > +
> >
> > +        lea     rax,[1+r8]
> >
> > +        lea     rdx,[2+r8]
> >
> > +        bswap   eax
> >
> > +        bswap   edx
> >
> > +        xor     eax,ebp
> >
> > +        xor     edx,ebp
> >
> > +DB      102,15,58,34,216,3
> >
> > +        lea     rax,[3+r8]
> >
> > +        movdqa  XMMWORD[16+rsp],xmm3
> >
> > +DB      102,15,58,34,226,3
> >
> > +        bswap   eax
> >
> > +        mov     rdx,r10
> >
> > +        lea     r10,[4+r8]
> >
> > +        movdqa  XMMWORD[32+rsp],xmm4
> >
> > +        xor     eax,ebp
> >
> > +        bswap   r10d
> >
> > +DB      102,15,58,34,232,3
> >
> > +        xor     r10d,ebp
> >
> > +        movdqa  XMMWORD[48+rsp],xmm5
> >
> > +        lea     r9,[5+r8]
> >
> > +        mov     DWORD[((64+12))+rsp],r10d
> >
> > +        bswap   r9d
> >
> > +        lea     r10,[6+r8]
> >
> > +        mov     eax,DWORD[240+rcx]
> >
> > +        xor     r9d,ebp
> >
> > +        bswap   r10d
> >
> > +        mov     DWORD[((80+12))+rsp],r9d
> >
> > +        xor     r10d,ebp
> >
> > +        lea     r9,[7+r8]
> >
> > +        mov     DWORD[((96+12))+rsp],r10d
> >
> > +        bswap   r9d
> >
> > +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
> >
> > +        xor     r9d,ebp
> >
> > +        and     r10d,71303168
> >
> > +        mov     DWORD[((112+12))+rsp],r9d
> >
> > +
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +
> >
> > +        movdqa  xmm6,XMMWORD[64+rsp]
> >
> > +        movdqa  xmm7,XMMWORD[80+rsp]
> >
> > +
> >
> > +        cmp     rdx,8
> >
> > +        jb      NEAR $L$ctr32_tail
> >
> > +
> >
> > +        sub     rdx,6
> >
> > +        cmp     r10d,4194304
> >
> > +        je      NEAR $L$ctr32_6x
> >
> > +
> >
> > +        lea     rcx,[128+rcx]
> >
> > +        sub     rdx,2
> >
> > +        jmp     NEAR $L$ctr32_loop8
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$ctr32_6x:
> >
> > +        shl     eax,4
> >
> > +        mov     r10d,48
> >
> > +        bswap   ebp
> >
> > +        lea     rcx,[32+rax*1+rcx]
> >
> > +        sub     r10,rax
> >
> > +        jmp     NEAR $L$ctr32_loop6
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$ctr32_loop6:
> >
> > +        add     r8d,6
> >
> > +        movups  xmm0,XMMWORD[((-48))+r10*1+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +        mov     eax,r8d
> >
> > +        xor     eax,ebp
> >
> > +DB      102,15,56,220,217
> >
> > +DB      0x0f,0x38,0xf1,0x44,0x24,12
> >
> > +        lea     eax,[1+r8]
> >
> > +DB      102,15,56,220,225
> >
> > +        xor     eax,ebp
> >
> > +DB      0x0f,0x38,0xf1,0x44,0x24,28
> >
> > +DB      102,15,56,220,233
> >
> > +        lea     eax,[2+r8]
> >
> > +        xor     eax,ebp
> >
> > +DB      102,15,56,220,241
> >
> > +DB      0x0f,0x38,0xf1,0x44,0x24,44
> >
> > +        lea     eax,[3+r8]
> >
> > +DB      102,15,56,220,249
> >
> > +        movups  xmm1,XMMWORD[((-32))+r10*1+rcx]
> >
> > +        xor     eax,ebp
> >
> > +
> >
> > +DB      102,15,56,220,208
> >
> > +DB      0x0f,0x38,0xf1,0x44,0x24,60
> >
> > +        lea     eax,[4+r8]
> >
> > +DB      102,15,56,220,216
> >
> > +        xor     eax,ebp
> >
> > +DB      0x0f,0x38,0xf1,0x44,0x24,76
> >
> > +DB      102,15,56,220,224
> >
> > +        lea     eax,[5+r8]
> >
> > +        xor     eax,ebp
> >
> > +DB      102,15,56,220,232
> >
> > +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[((-16))+r10*1+rcx]
> >
> > +
> >
> > +        call    $L$enc_loop6
> >
> > +
> >
> > +        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[rsp]
> >
> > +        pxor    xmm9,xmm3
> >
> > +        movaps  xmm3,XMMWORD[16+rsp]
> >
> > +        pxor    xmm10,xmm4
> >
> > +        movaps  xmm4,XMMWORD[32+rsp]
> >
> > +        pxor    xmm11,xmm5
> >
> > +        movaps  xmm5,XMMWORD[48+rsp]
> >
> > +        pxor    xmm12,xmm6
> >
> > +        movaps  xmm6,XMMWORD[64+rsp]
> >
> > +        pxor    xmm13,xmm7
> >
> > +        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     NEAR $L$ctr32_loop6
> >
> > +
> >
> > +        add     rdx,6
> >
> > +        jz      NEAR $L$ctr32_done
> >
> > +
> >
> > +        lea     eax,[((-48))+r10]
> >
> > +        lea     rcx,[((-80))+r10*1+rcx]
> >
> > +        neg     eax
> >
> > +        shr     eax,4
> >
> > +        jmp     NEAR $L$ctr32_tail
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$ctr32_loop8:
> >
> > +        add     r8d,8
> >
> > +        movdqa  xmm8,XMMWORD[96+rsp]
> >
> > +DB      102,15,56,220,209
> >
> > +        mov     r9d,r8d
> >
> > +        movdqa  xmm9,XMMWORD[112+rsp]
> >
> > +DB      102,15,56,220,217
> >
> > +        bswap   r9d
> >
> > +        movups  xmm0,XMMWORD[((32-128))+rcx]
> >
> > +DB      102,15,56,220,225
> >
> > +        xor     r9d,ebp
> >
> > +        nop
> >
> > +DB      102,15,56,220,233
> >
> > +        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[((48-128))+rcx]
> >
> > +        bswap   r9d
> >
> > +DB      102,15,56,220,208
> >
> > +DB      102,15,56,220,216
> >
> > +        xor     r9d,ebp
> >
> > +DB      0x66,0x90
> >
> > +DB      102,15,56,220,224
> >
> > +DB      102,15,56,220,232
> >
> > +        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[((64-128))+rcx]
> >
> > +        bswap   r9d
> >
> > +DB      102,15,56,220,209
> >
> > +DB      102,15,56,220,217
> >
> > +        xor     r9d,ebp
> >
> > +DB      0x66,0x90
> >
> > +DB      102,15,56,220,225
> >
> > +DB      102,15,56,220,233
> >
> > +        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[((80-128))+rcx]
> >
> > +        bswap   r9d
> >
> > +DB      102,15,56,220,208
> >
> > +DB      102,15,56,220,216
> >
> > +        xor     r9d,ebp
> >
> > +DB      0x66,0x90
> >
> > +DB      102,15,56,220,224
> >
> > +DB      102,15,56,220,232
> >
> > +        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[((96-128))+rcx]
> >
> > +        bswap   r9d
> >
> > +DB      102,15,56,220,209
> >
> > +DB      102,15,56,220,217
> >
> > +        xor     r9d,ebp
> >
> > +DB      0x66,0x90
> >
> > +DB      102,15,56,220,225
> >
> > +DB      102,15,56,220,233
> >
> > +        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[((112-128))+rcx]
> >
> > +        bswap   r9d
> >
> > +DB      102,15,56,220,208
> >
> > +DB      102,15,56,220,216
> >
> > +        xor     r9d,ebp
> >
> > +DB      0x66,0x90
> >
> > +DB      102,15,56,220,224
> >
> > +DB      102,15,56,220,232
> >
> > +        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[((128-128))+rcx]
> >
> > +        bswap   r9d
> >
> > +DB      102,15,56,220,209
> >
> > +DB      102,15,56,220,217
> >
> > +        xor     r9d,ebp
> >
> > +DB      0x66,0x90
> >
> > +DB      102,15,56,220,225
> >
> > +DB      102,15,56,220,233
> >
> > +        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[((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,ebp
> >
> > +        movdqu  xmm10,XMMWORD[rdi]
> >
> > +DB      102,15,56,220,232
> >
> > +        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[((160-128))+rcx]
> >
> > +
> >
> > +        jb      NEAR $L$ctr32_enc_done
> >
> > +
> >
> > +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
> >
> > +DB      102,68,15,56,220,193
> >
> > +DB      102,68,15,56,220,201
> >
> > +        movups  xmm1,XMMWORD[((176-128))+rcx]
> >
> > +
> >
> > +DB      102,15,56,220,208
> >
> > +DB      102,15,56,220,216
> >
> > +DB      102,15,56,220,224
> >
> > +DB      102,15,56,220,232
> >
> > +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[((192-128))+rcx]
> >
> > +        je      NEAR $L$ctr32_enc_done
> >
> > +
> >
> > +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
> >
> > +DB      102,68,15,56,220,193
> >
> > +DB      102,68,15,56,220,201
> >
> > +        movups  xmm1,XMMWORD[((208-128))+rcx]
> >
> > +
> >
> > +DB      102,15,56,220,208
> >
> > +DB      102,15,56,220,216
> >
> > +DB      102,15,56,220,224
> >
> > +DB      102,15,56,220,232
> >
> > +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[((224-128))+rcx]
> >
> > +        jmp     NEAR $L$ctr32_enc_done
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$ctr32_enc_done:
> >
> > +        movdqu  xmm11,XMMWORD[16+rdi]
> >
> > +        pxor    xmm10,xmm0
> >
> > +        movdqu  xmm12,XMMWORD[32+rdi]
> >
> > +        pxor    xmm11,xmm0
> >
> > +        movdqu  xmm13,XMMWORD[48+rdi]
> >
> > +        pxor    xmm12,xmm0
> >
> > +        movdqu  xmm14,XMMWORD[64+rdi]
> >
> > +        pxor    xmm13,xmm0
> >
> > +        movdqu  xmm15,XMMWORD[80+rdi]
> >
> > +        pxor    xmm14,xmm0
> >
> > +        pxor    xmm15,xmm0
> >
> > +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
> >
> > +DB      102,68,15,56,220,193
> >
> > +DB      102,68,15,56,220,201
> >
> > +        movdqu  xmm1,XMMWORD[96+rdi]
> >
> > +        lea     rdi,[128+rdi]
> >
> > +
> >
> > +DB      102,65,15,56,221,210
> >
> > +        pxor    xmm1,xmm0
> >
> > +        movdqu  xmm10,XMMWORD[((112-128))+rdi]
> >
> > +DB      102,65,15,56,221,219
> >
> > +        pxor    xmm10,xmm0
> >
> > +        movdqa  xmm11,XMMWORD[rsp]
> >
> > +DB      102,65,15,56,221,228
> >
> > +DB      102,65,15,56,221,237
> >
> > +        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[48+rsp]
> >
> > +        movdqa  xmm15,XMMWORD[64+rsp]
> >
> > +DB      102,68,15,56,221,193
> >
> > +        movdqa  xmm0,XMMWORD[80+rsp]
> >
> > +        movups  xmm1,XMMWORD[((16-128))+rcx]
> >
> > +DB      102,69,15,56,221,202
> >
> > +
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        movdqa  xmm2,xmm11
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        movdqa  xmm3,xmm12
> >
> > +        movups  XMMWORD[32+rsi],xmm4
> >
> > +        movdqa  xmm4,xmm13
> >
> > +        movups  XMMWORD[48+rsi],xmm5
> >
> > +        movdqa  xmm5,xmm14
> >
> > +        movups  XMMWORD[64+rsi],xmm6
> >
> > +        movdqa  xmm6,xmm15
> >
> > +        movups  XMMWORD[80+rsi],xmm7
> >
> > +        movdqa  xmm7,xmm0
> >
> > +        movups  XMMWORD[96+rsi],xmm8
> >
> > +        movups  XMMWORD[112+rsi],xmm9
> >
> > +        lea     rsi,[128+rsi]
> >
> > +
> >
> > +        sub     rdx,8
> >
> > +        jnc     NEAR $L$ctr32_loop8
> >
> > +
> >
> > +        add     rdx,8
> >
> > +        jz      NEAR $L$ctr32_done
> >
> > +        lea     rcx,[((-128))+rcx]
> >
> > +
> >
> > +$L$ctr32_tail:
> >
> > +
> >
> > +
> >
> > +        lea     rcx,[16+rcx]
> >
> > +        cmp     rdx,4
> >
> > +        jb      NEAR $L$ctr32_loop3
> >
> > +        je      NEAR $L$ctr32_loop4
> >
> > +
> >
> > +
> >
> > +        shl     eax,4
> >
> > +        movdqa  xmm8,XMMWORD[96+rsp]
> >
> > +        pxor    xmm9,xmm9
> >
> > +
> >
> > +        movups  xmm0,XMMWORD[16+rcx]
> >
> > +DB      102,15,56,220,209
> >
> > +DB      102,15,56,220,217
> >
> > +        lea     rcx,[((32-16))+rax*1+rcx]
> >
> > +        neg     rax
> >
> > +DB      102,15,56,220,225
> >
> > +        add     rax,16
> >
> > +        movups  xmm10,XMMWORD[rdi]
> >
> > +DB      102,15,56,220,233
> >
> > +DB      102,15,56,220,241
> >
> > +        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[48+rdi]
> >
> > +        pxor    xmm2,xmm10
> >
> > +        movdqu  xmm10,XMMWORD[64+rdi]
> >
> > +        pxor    xmm3,xmm11
> >
> > +        movdqu  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm4,xmm12
> >
> > +        movdqu  XMMWORD[16+rsi],xmm3
> >
> > +        pxor    xmm5,xmm13
> >
> > +        movdqu  XMMWORD[32+rsi],xmm4
> >
> > +        pxor    xmm6,xmm10
> >
> > +        movdqu  XMMWORD[48+rsi],xmm5
> >
> > +        movdqu  XMMWORD[64+rsi],xmm6
> >
> > +        cmp     rdx,6
> >
> > +        jb      NEAR $L$ctr32_done
> >
> > +
> >
> > +        movups  xmm11,XMMWORD[80+rdi]
> >
> > +        xorps   xmm7,xmm11
> >
> > +        movups  XMMWORD[80+rsi],xmm7
> >
> > +        je      NEAR $L$ctr32_done
> >
> > +
> >
> > +        movups  xmm12,XMMWORD[96+rdi]
> >
> > +        xorps   xmm8,xmm12
> >
> > +        movups  XMMWORD[96+rsi],xmm8
> >
> > +        jmp     NEAR $L$ctr32_done
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$ctr32_loop4:
> >
> > +DB      102,15,56,220,209
> >
> > +        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[rcx]
> >
> > +        jnz     NEAR $L$ctr32_loop4
> >
> > +DB      102,15,56,221,209
> >
> > +DB      102,15,56,221,217
> >
> > +        movups  xmm10,XMMWORD[rdi]
> >
> > +        movups  xmm11,XMMWORD[16+rdi]
> >
> > +DB      102,15,56,221,225
> >
> > +DB      102,15,56,221,233
> >
> > +        movups  xmm12,XMMWORD[32+rdi]
> >
> > +        movups  xmm13,XMMWORD[48+rdi]
> >
> > +
> >
> > +        xorps   xmm2,xmm10
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        xorps   xmm3,xmm11
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        pxor    xmm4,xmm12
> >
> > +        movdqu  XMMWORD[32+rsi],xmm4
> >
> > +        pxor    xmm5,xmm13
> >
> > +        movdqu  XMMWORD[48+rsi],xmm5
> >
> > +        jmp     NEAR $L$ctr32_done
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$ctr32_loop3:
> >
> > +DB      102,15,56,220,209
> >
> > +        lea     rcx,[16+rcx]
> >
> > +        dec     eax
> >
> > +DB      102,15,56,220,217
> >
> > +DB      102,15,56,220,225
> >
> > +        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[rdi]
> >
> > +        xorps   xmm2,xmm10
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        cmp     rdx,2
> >
> > +        jb      NEAR $L$ctr32_done
> >
> > +
> >
> > +        movups  xmm11,XMMWORD[16+rdi]
> >
> > +        xorps   xmm3,xmm11
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        je      NEAR $L$ctr32_done
> >
> > +
> >
> > +        movups  xmm12,XMMWORD[32+rdi]
> >
> > +        xorps   xmm4,xmm12
> >
> > +        movups  XMMWORD[32+rsi],xmm4
> >
> > +
> >
> > +$L$ctr32_done:
> >
> > +        xorps   xmm0,xmm0
> >
> > +        xor     ebp,ebp
> >
> > +        pxor    xmm1,xmm1
> >
> > +        pxor    xmm2,xmm2
> >
> > +        pxor    xmm3,xmm3
> >
> > +        pxor    xmm4,xmm4
> >
> > +        pxor    xmm5,xmm5
> >
> > +        movaps  xmm6,XMMWORD[((-168))+r11]
> >
> > +        movaps  XMMWORD[(-168)+r11],xmm0
> >
> > +        movaps  xmm7,XMMWORD[((-152))+r11]
> >
> > +        movaps  XMMWORD[(-152)+r11],xmm0
> >
> > +        movaps  xmm8,XMMWORD[((-136))+r11]
> >
> > +        movaps  XMMWORD[(-136)+r11],xmm0
> >
> > +        movaps  xmm9,XMMWORD[((-120))+r11]
> >
> > +        movaps  XMMWORD[(-120)+r11],xmm0
> >
> > +        movaps  xmm10,XMMWORD[((-104))+r11]
> >
> > +        movaps  XMMWORD[(-104)+r11],xmm0
> >
> > +        movaps  xmm11,XMMWORD[((-88))+r11]
> >
> > +        movaps  XMMWORD[(-88)+r11],xmm0
> >
> > +        movaps  xmm12,XMMWORD[((-72))+r11]
> >
> > +        movaps  XMMWORD[(-72)+r11],xmm0
> >
> > +        movaps  xmm13,XMMWORD[((-56))+r11]
> >
> > +        movaps  XMMWORD[(-56)+r11],xmm0
> >
> > +        movaps  xmm14,XMMWORD[((-40))+r11]
> >
> > +        movaps  XMMWORD[(-40)+r11],xmm0
> >
> > +        movaps  xmm15,XMMWORD[((-24))+r11]
> >
> > +        movaps  XMMWORD[(-24)+r11],xmm0
> >
> > +        movaps  XMMWORD[rsp],xmm0
> >
> > +        movaps  XMMWORD[16+rsp],xmm0
> >
> > +        movaps  XMMWORD[32+rsp],xmm0
> >
> > +        movaps  XMMWORD[48+rsp],xmm0
> >
> > +        movaps  XMMWORD[64+rsp],xmm0
> >
> > +        movaps  XMMWORD[80+rsp],xmm0
> >
> > +        movaps  XMMWORD[96+rsp],xmm0
> >
> > +        movaps  XMMWORD[112+rsp],xmm0
> >
> > +        mov     rbp,QWORD[((-8))+r11]
> >
> > +
> >
> > +        lea     rsp,[r11]
> >
> > +
> >
> > +$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:
> >
> > +global  aesni_xts_encrypt
> >
> > +
> >
> > +ALIGN   16
> >
> > +aesni_xts_encrypt:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_aesni_xts_encrypt:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +        mov     rcx,r9
> >
> > +        mov     r8,QWORD[40+rsp]
> >
> > +        mov     r9,QWORD[48+rsp]
> >
> > +
> >
> > +
> >
> > +
> >
> > +        lea     r11,[rsp]
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        sub     rsp,272
> >
> > +        and     rsp,-16
> >
> > +        movaps  XMMWORD[(-168)+r11],xmm6
> >
> > +        movaps  XMMWORD[(-152)+r11],xmm7
> >
> > +        movaps  XMMWORD[(-136)+r11],xmm8
> >
> > +        movaps  XMMWORD[(-120)+r11],xmm9
> >
> > +        movaps  XMMWORD[(-104)+r11],xmm10
> >
> > +        movaps  XMMWORD[(-88)+r11],xmm11
> >
> > +        movaps  XMMWORD[(-72)+r11],xmm12
> >
> > +        movaps  XMMWORD[(-56)+r11],xmm13
> >
> > +        movaps  XMMWORD[(-40)+r11],xmm14
> >
> > +        movaps  XMMWORD[(-24)+r11],xmm15
> >
> > +$L$xts_enc_body:
> >
> > +        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:
> >
> > +DB      102,15,56,220,209
> >
> > +        dec     eax
> >
> > +        movups  xmm1,XMMWORD[r8]
> >
> > +        lea     r8,[16+r8]
> >
> > +        jnz     NEAR $L$oop_enc1_8
> >
> > +DB      102,15,56,221,209
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        mov     rbp,rcx
> >
> > +        mov     eax,r10d
> >
> > +        shl     r10d,4
> >
> > +        mov     r9,rdx
> >
> > +        and     rdx,-16
> >
> > +
> >
> > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> >
> > +
> >
> > +        movdqa  xmm8,XMMWORD[$L$xts_magic]
> >
> > +        movdqa  xmm15,xmm2
> >
> > +        pshufd  xmm9,xmm2,0x5f
> >
> > +        pxor    xmm1,xmm0
> >
> > +        movdqa  xmm14,xmm9
> >
> > +        paddd   xmm9,xmm9
> >
> > +        movdqa  xmm10,xmm15
> >
> > +        psrad   xmm14,31
> >
> > +        paddq   xmm15,xmm15
> >
> > +        pand    xmm14,xmm8
> >
> > +        pxor    xmm10,xmm0
> >
> > +        pxor    xmm15,xmm14
> >
> > +        movdqa  xmm14,xmm9
> >
> > +        paddd   xmm9,xmm9
> >
> > +        movdqa  xmm11,xmm15
> >
> > +        psrad   xmm14,31
> >
> > +        paddq   xmm15,xmm15
> >
> > +        pand    xmm14,xmm8
> >
> > +        pxor    xmm11,xmm0
> >
> > +        pxor    xmm15,xmm14
> >
> > +        movdqa  xmm14,xmm9
> >
> > +        paddd   xmm9,xmm9
> >
> > +        movdqa  xmm12,xmm15
> >
> > +        psrad   xmm14,31
> >
> > +        paddq   xmm15,xmm15
> >
> > +        pand    xmm14,xmm8
> >
> > +        pxor    xmm12,xmm0
> >
> > +        pxor    xmm15,xmm14
> >
> > +        movdqa  xmm14,xmm9
> >
> > +        paddd   xmm9,xmm9
> >
> > +        movdqa  xmm13,xmm15
> >
> > +        psrad   xmm14,31
> >
> > +        paddq   xmm15,xmm15
> >
> > +        pand    xmm14,xmm8
> >
> > +        pxor    xmm13,xmm0
> >
> > +        pxor    xmm15,xmm14
> >
> > +        movdqa  xmm14,xmm15
> >
> > +        psrad   xmm9,31
> >
> > +        paddq   xmm15,xmm15
> >
> > +        pand    xmm9,xmm8
> >
> > +        pxor    xmm14,xmm0
> >
> > +        pxor    xmm15,xmm9
> >
> > +        movaps  XMMWORD[96+rsp],xmm1
> >
> > +
> >
> > +        sub     rdx,16*6
> >
> > +        jc      NEAR $L$xts_enc_short
> >
> > +
> >
> > +        mov     eax,16+96
> >
> > +        lea     rcx,[32+r10*1+rbp]
> >
> > +        sub     rax,r10
> >
> > +        movups  xmm1,XMMWORD[16+rbp]
> >
> > +        mov     r10,rax
> >
> > +        lea     r8,[$L$xts_magic]
> >
> > +        jmp     NEAR $L$xts_enc_grandloop
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$xts_enc_grandloop:
> >
> > +        movdqu  xmm2,XMMWORD[rdi]
> >
> > +        movdqa  xmm8,xmm0
> >
> > +        movdqu  xmm3,XMMWORD[16+rdi]
> >
> > +        pxor    xmm2,xmm10
> >
> > +        movdqu  xmm4,XMMWORD[32+rdi]
> >
> > +        pxor    xmm3,xmm11
> >
> > +DB      102,15,56,220,209
> >
> > +        movdqu  xmm5,XMMWORD[48+rdi]
> >
> > +        pxor    xmm4,xmm12
> >
> > +DB      102,15,56,220,217
> >
> > +        movdqu  xmm6,XMMWORD[64+rdi]
> >
> > +        pxor    xmm5,xmm13
> >
> > +DB      102,15,56,220,225
> >
> > +        movdqu  xmm7,XMMWORD[80+rdi]
> >
> > +        pxor    xmm8,xmm15
> >
> > +        movdqa  xmm9,XMMWORD[96+rsp]
> >
> > +        pxor    xmm6,xmm14
> >
> > +DB      102,15,56,220,233
> >
> > +        movups  xmm0,XMMWORD[32+rbp]
> >
> > +        lea     rdi,[96+rdi]
> >
> > +        pxor    xmm7,xmm8
> >
> > +
> >
> > +        pxor    xmm10,xmm9
> >
> > +DB      102,15,56,220,241
> >
> > +        pxor    xmm11,xmm9
> >
> > +        movdqa  XMMWORD[rsp],xmm10
> >
> > +DB      102,15,56,220,249
> >
> > +        movups  xmm1,XMMWORD[48+rbp]
> >
> > +        pxor    xmm12,xmm9
> >
> > +
> >
> > +DB      102,15,56,220,208
> >
> > +        pxor    xmm13,xmm9
> >
> > +        movdqa  XMMWORD[16+rsp],xmm11
> >
> > +DB      102,15,56,220,216
> >
> > +        pxor    xmm14,xmm9
> >
> > +        movdqa  XMMWORD[32+rsp],xmm12
> >
> > +DB      102,15,56,220,224
> >
> > +DB      102,15,56,220,232
> >
> > +        pxor    xmm8,xmm9
> >
> > +        movdqa  XMMWORD[64+rsp],xmm14
> >
> > +DB      102,15,56,220,240
> >
> > +DB      102,15,56,220,248
> >
> > +        movups  xmm0,XMMWORD[64+rbp]
> >
> > +        movdqa  XMMWORD[80+rsp],xmm8
> >
> > +        pshufd  xmm9,xmm15,0x5f
> >
> > +        jmp     NEAR $L$xts_enc_loop6
> >
> > +ALIGN   32
> >
> > +$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[((-64))+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
> >
> > +DB      102,15,56,220,240
> >
> > +DB      102,15,56,220,248
> >
> > +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
> >
> > +        jnz     NEAR $L$xts_enc_loop6
> >
> > +
> >
> > +        movdqa  xmm8,XMMWORD[r8]
> >
> > +        movdqa  xmm14,xmm9
> >
> > +        paddd   xmm9,xmm9
> >
> > +DB      102,15,56,220,209
> >
> > +        paddq   xmm15,xmm15
> >
> > +        psrad   xmm14,31
> >
> > +DB      102,15,56,220,217
> >
> > +        pand    xmm14,xmm8
> >
> > +        movups  xmm10,XMMWORD[rbp]
> >
> > +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[((-64))+rcx]
> >
> > +
> >
> > +        movdqa  xmm14,xmm9
> >
> > +DB      102,15,56,220,208
> >
> > +        paddd   xmm9,xmm9
> >
> > +        pxor    xmm10,xmm15
> >
> > +DB      102,15,56,220,216
> >
> > +        psrad   xmm14,31
> >
> > +        paddq   xmm15,xmm15
> >
> > +DB      102,15,56,220,224
> >
> > +DB      102,15,56,220,232
> >
> > +        pand    xmm14,xmm8
> >
> > +        movaps  xmm12,xmm11
> >
> > +DB      102,15,56,220,240
> >
> > +        pxor    xmm15,xmm14
> >
> > +        movdqa  xmm14,xmm9
> >
> > +DB      102,15,56,220,248
> >
> > +        movups  xmm0,XMMWORD[((-48))+rcx]
> >
> > +
> >
> > +        paddd   xmm9,xmm9
> >
> > +DB      102,15,56,220,209
> >
> > +        pxor    xmm11,xmm15
> >
> > +        psrad   xmm14,31
> >
> > +DB      102,15,56,220,217
> >
> > +        paddq   xmm15,xmm15
> >
> > +        pand    xmm14,xmm8
> >
> > +DB      102,15,56,220,225
> >
> > +DB      102,15,56,220,233
> >
> > +        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[((-32))+rcx]
> >
> > +
> >
> > +        paddd   xmm9,xmm9
> >
> > +DB      102,15,56,220,208
> >
> > +        pxor    xmm12,xmm15
> >
> > +        psrad   xmm14,31
> >
> > +DB      102,15,56,220,216
> >
> > +        paddq   xmm15,xmm15
> >
> > +        pand    xmm14,xmm8
> >
> > +DB      102,15,56,220,224
> >
> > +DB      102,15,56,220,232
> >
> > +DB      102,15,56,220,240
> >
> > +        pxor    xmm15,xmm14
> >
> > +        movaps  xmm14,xmm13
> >
> > +DB      102,15,56,220,248
> >
> > +
> >
> > +        movdqa  xmm0,xmm9
> >
> > +        paddd   xmm9,xmm9
> >
> > +DB      102,15,56,220,209
> >
> > +        pxor    xmm13,xmm15
> >
> > +        psrad   xmm0,31
> >
> > +DB      102,15,56,220,217
> >
> > +        paddq   xmm15,xmm15
> >
> > +        pand    xmm0,xmm8
> >
> > +DB      102,15,56,220,225
> >
> > +DB      102,15,56,220,233
> >
> > +        pxor    xmm15,xmm0
> >
> > +        movups  xmm0,XMMWORD[rbp]
> >
> > +DB      102,15,56,220,241
> >
> > +DB      102,15,56,220,249
> >
> > +        movups  xmm1,XMMWORD[16+rbp]
> >
> > +
> >
> > +        pxor    xmm14,xmm15
> >
> > +DB      102,15,56,221,84,36,0
> >
> > +        psrad   xmm9,31
> >
> > +        paddq   xmm15,xmm15
> >
> > +DB      102,15,56,221,92,36,16
> >
> > +DB      102,15,56,221,100,36,32
> >
> > +        pand    xmm9,xmm8
> >
> > +        mov     rax,r10
> >
> > +DB      102,15,56,221,108,36,48
> >
> > +DB      102,15,56,221,116,36,64
> >
> > +DB      102,15,56,221,124,36,80
> >
> > +        pxor    xmm15,xmm9
> >
> > +
> >
> > +        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     NEAR $L$xts_enc_grandloop
> >
> > +
> >
> > +        mov     eax,16+96
> >
> > +        sub     eax,r10d
> >
> > +        mov     rcx,rbp
> >
> > +        shr     eax,4
> >
> > +
> >
> > +$L$xts_enc_short:
> >
> > +
> >
> > +        mov     r10d,eax
> >
> > +        pxor    xmm10,xmm0
> >
> > +        add     rdx,16*6
> >
> > +        jz      NEAR $L$xts_enc_done
> >
> > +
> >
> > +        pxor    xmm11,xmm0
> >
> > +        cmp     rdx,0x20
> >
> > +        jb      NEAR $L$xts_enc_one
> >
> > +        pxor    xmm12,xmm0
> >
> > +        je      NEAR $L$xts_enc_two
> >
> > +
> >
> > +        pxor    xmm13,xmm0
> >
> > +        cmp     rdx,0x40
> >
> > +        jb      NEAR $L$xts_enc_three
> >
> > +        pxor    xmm14,xmm0
> >
> > +        je      NEAR $L$xts_enc_four
> >
> > +
> >
> > +        movdqu  xmm2,XMMWORD[rdi]
> >
> > +        movdqu  xmm3,XMMWORD[16+rdi]
> >
> > +        movdqu  xmm4,XMMWORD[32+rdi]
> >
> > +        pxor    xmm2,xmm10
> >
> > +        movdqu  xmm5,XMMWORD[48+rdi]
> >
> > +        pxor    xmm3,xmm11
> >
> > +        movdqu  xmm6,XMMWORD[64+rdi]
> >
> > +        lea     rdi,[80+rdi]
> >
> > +        pxor    xmm4,xmm12
> >
> > +        pxor    xmm5,xmm13
> >
> > +        pxor    xmm6,xmm14
> >
> > +        pxor    xmm7,xmm7
> >
> > +
> >
> > +        call    _aesni_encrypt6
> >
> > +
> >
> > +        xorps   xmm2,xmm10
> >
> > +        movdqa  xmm10,xmm15
> >
> > +        xorps   xmm3,xmm11
> >
> > +        xorps   xmm4,xmm12
> >
> > +        movdqu  XMMWORD[rsi],xmm2
> >
> > +        xorps   xmm5,xmm13
> >
> > +        movdqu  XMMWORD[16+rsi],xmm3
> >
> > +        xorps   xmm6,xmm14
> >
> > +        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[rdi]
> >
> > +        lea     rdi,[16+rdi]
> >
> > +        xorps   xmm2,xmm10
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        lea     rcx,[32+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +$L$oop_enc1_9:
> >
> > +DB      102,15,56,220,209
> >
> > +        dec     eax
> >
> > +        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[rsi],xmm2
> >
> > +        lea     rsi,[16+rsi]
> >
> > +        jmp     NEAR $L$xts_enc_done
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$xts_enc_two:
> >
> > +        movups  xmm2,XMMWORD[rdi]
> >
> > +        movups  xmm3,XMMWORD[16+rdi]
> >
> > +        lea     rdi,[32+rdi]
> >
> > +        xorps   xmm2,xmm10
> >
> > +        xorps   xmm3,xmm11
> >
> > +
> >
> > +        call    _aesni_encrypt2
> >
> > +
> >
> > +        xorps   xmm2,xmm10
> >
> > +        movdqa  xmm10,xmm12
> >
> > +        xorps   xmm3,xmm11
> >
> > +        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[rdi]
> >
> > +        movups  xmm3,XMMWORD[16+rdi]
> >
> > +        movups  xmm4,XMMWORD[32+rdi]
> >
> > +        lea     rdi,[48+rdi]
> >
> > +        xorps   xmm2,xmm10
> >
> > +        xorps   xmm3,xmm11
> >
> > +        xorps   xmm4,xmm12
> >
> > +
> >
> > +        call    _aesni_encrypt3
> >
> > +
> >
> > +        xorps   xmm2,xmm10
> >
> > +        movdqa  xmm10,xmm13
> >
> > +        xorps   xmm3,xmm11
> >
> > +        xorps   xmm4,xmm12
> >
> > +        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[rdi]
> >
> > +        movups  xmm3,XMMWORD[16+rdi]
> >
> > +        movups  xmm4,XMMWORD[32+rdi]
> >
> > +        xorps   xmm2,xmm10
> >
> > +        movups  xmm5,XMMWORD[48+rdi]
> >
> > +        lea     rdi,[64+rdi]
> >
> > +        xorps   xmm3,xmm11
> >
> > +        xorps   xmm4,xmm12
> >
> > +        xorps   xmm5,xmm13
> >
> > +
> >
> > +        call    _aesni_encrypt4
> >
> > +
> >
> > +        pxor    xmm2,xmm10
> >
> > +        movdqa  xmm10,xmm14
> >
> > +        pxor    xmm3,xmm11
> >
> > +        pxor    xmm4,xmm12
> >
> > +        movdqu  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm5,xmm13
> >
> > +        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:
> >
> > +        and     r9,15
> >
> > +        jz      NEAR $L$xts_enc_ret
> >
> > +        mov     rdx,r9
> >
> > +
> >
> > +$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     NEAR $L$xts_enc_steal
> >
> > +
> >
> > +        sub     rsi,r9
> >
> > +        mov     rcx,rbp
> >
> > +        mov     eax,r10d
> >
> > +
> >
> > +        movups  xmm2,XMMWORD[((-16))+rsi]
> >
> > +        xorps   xmm2,xmm10
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        lea     rcx,[32+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +$L$oop_enc1_10:
> >
> > +DB      102,15,56,220,209
> >
> > +        dec     eax
> >
> > +        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[(-16)+rsi],xmm2
> >
> > +
> >
> > +$L$xts_enc_ret:
> >
> > +        xorps   xmm0,xmm0
> >
> > +        pxor    xmm1,xmm1
> >
> > +        pxor    xmm2,xmm2
> >
> > +        pxor    xmm3,xmm3
> >
> > +        pxor    xmm4,xmm4
> >
> > +        pxor    xmm5,xmm5
> >
> > +        movaps  xmm6,XMMWORD[((-168))+r11]
> >
> > +        movaps  XMMWORD[(-168)+r11],xmm0
> >
> > +        movaps  xmm7,XMMWORD[((-152))+r11]
> >
> > +        movaps  XMMWORD[(-152)+r11],xmm0
> >
> > +        movaps  xmm8,XMMWORD[((-136))+r11]
> >
> > +        movaps  XMMWORD[(-136)+r11],xmm0
> >
> > +        movaps  xmm9,XMMWORD[((-120))+r11]
> >
> > +        movaps  XMMWORD[(-120)+r11],xmm0
> >
> > +        movaps  xmm10,XMMWORD[((-104))+r11]
> >
> > +        movaps  XMMWORD[(-104)+r11],xmm0
> >
> > +        movaps  xmm11,XMMWORD[((-88))+r11]
> >
> > +        movaps  XMMWORD[(-88)+r11],xmm0
> >
> > +        movaps  xmm12,XMMWORD[((-72))+r11]
> >
> > +        movaps  XMMWORD[(-72)+r11],xmm0
> >
> > +        movaps  xmm13,XMMWORD[((-56))+r11]
> >
> > +        movaps  XMMWORD[(-56)+r11],xmm0
> >
> > +        movaps  xmm14,XMMWORD[((-40))+r11]
> >
> > +        movaps  XMMWORD[(-40)+r11],xmm0
> >
> > +        movaps  xmm15,XMMWORD[((-24))+r11]
> >
> > +        movaps  XMMWORD[(-24)+r11],xmm0
> >
> > +        movaps  XMMWORD[rsp],xmm0
> >
> > +        movaps  XMMWORD[16+rsp],xmm0
> >
> > +        movaps  XMMWORD[32+rsp],xmm0
> >
> > +        movaps  XMMWORD[48+rsp],xmm0
> >
> > +        movaps  XMMWORD[64+rsp],xmm0
> >
> > +        movaps  XMMWORD[80+rsp],xmm0
> >
> > +        movaps  XMMWORD[96+rsp],xmm0
> >
> > +        mov     rbp,QWORD[((-8))+r11]
> >
> > +
> >
> > +        lea     rsp,[r11]
> >
> > +
> >
> > +$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:
> >
> > +global  aesni_xts_decrypt
> >
> > +
> >
> > +ALIGN   16
> >
> > +aesni_xts_decrypt:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_aesni_xts_decrypt:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +        mov     rcx,r9
> >
> > +        mov     r8,QWORD[40+rsp]
> >
> > +        mov     r9,QWORD[48+rsp]
> >
> > +
> >
> > +
> >
> > +
> >
> > +        lea     r11,[rsp]
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        sub     rsp,272
> >
> > +        and     rsp,-16
> >
> > +        movaps  XMMWORD[(-168)+r11],xmm6
> >
> > +        movaps  XMMWORD[(-152)+r11],xmm7
> >
> > +        movaps  XMMWORD[(-136)+r11],xmm8
> >
> > +        movaps  XMMWORD[(-120)+r11],xmm9
> >
> > +        movaps  XMMWORD[(-104)+r11],xmm10
> >
> > +        movaps  XMMWORD[(-88)+r11],xmm11
> >
> > +        movaps  XMMWORD[(-72)+r11],xmm12
> >
> > +        movaps  XMMWORD[(-56)+r11],xmm13
> >
> > +        movaps  XMMWORD[(-40)+r11],xmm14
> >
> > +        movaps  XMMWORD[(-24)+r11],xmm15
> >
> > +$L$xts_dec_body:
> >
> > +        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:
> >
> > +DB      102,15,56,220,209
> >
> > +        dec     eax
> >
> > +        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
> >
> > +        setnz   al
> >
> > +        shl     rax,4
> >
> > +        sub     rdx,rax
> >
> > +
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        mov     rbp,rcx
> >
> > +        mov     eax,r10d
> >
> > +        shl     r10d,4
> >
> > +        mov     r9,rdx
> >
> > +        and     rdx,-16
> >
> > +
> >
> > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> >
> > +
> >
> > +        movdqa  xmm8,XMMWORD[$L$xts_magic]
> >
> > +        movdqa  xmm15,xmm2
> >
> > +        pshufd  xmm9,xmm2,0x5f
> >
> > +        pxor    xmm1,xmm0
> >
> > +        movdqa  xmm14,xmm9
> >
> > +        paddd   xmm9,xmm9
> >
> > +        movdqa  xmm10,xmm15
> >
> > +        psrad   xmm14,31
> >
> > +        paddq   xmm15,xmm15
> >
> > +        pand    xmm14,xmm8
> >
> > +        pxor    xmm10,xmm0
> >
> > +        pxor    xmm15,xmm14
> >
> > +        movdqa  xmm14,xmm9
> >
> > +        paddd   xmm9,xmm9
> >
> > +        movdqa  xmm11,xmm15
> >
> > +        psrad   xmm14,31
> >
> > +        paddq   xmm15,xmm15
> >
> > +        pand    xmm14,xmm8
> >
> > +        pxor    xmm11,xmm0
> >
> > +        pxor    xmm15,xmm14
> >
> > +        movdqa  xmm14,xmm9
> >
> > +        paddd   xmm9,xmm9
> >
> > +        movdqa  xmm12,xmm15
> >
> > +        psrad   xmm14,31
> >
> > +        paddq   xmm15,xmm15
> >
> > +        pand    xmm14,xmm8
> >
> > +        pxor    xmm12,xmm0
> >
> > +        pxor    xmm15,xmm14
> >
> > +        movdqa  xmm14,xmm9
> >
> > +        paddd   xmm9,xmm9
> >
> > +        movdqa  xmm13,xmm15
> >
> > +        psrad   xmm14,31
> >
> > +        paddq   xmm15,xmm15
> >
> > +        pand    xmm14,xmm8
> >
> > +        pxor    xmm13,xmm0
> >
> > +        pxor    xmm15,xmm14
> >
> > +        movdqa  xmm14,xmm15
> >
> > +        psrad   xmm9,31
> >
> > +        paddq   xmm15,xmm15
> >
> > +        pand    xmm9,xmm8
> >
> > +        pxor    xmm14,xmm0
> >
> > +        pxor    xmm15,xmm9
> >
> > +        movaps  XMMWORD[96+rsp],xmm1
> >
> > +
> >
> > +        sub     rdx,16*6
> >
> > +        jc      NEAR $L$xts_dec_short
> >
> > +
> >
> > +        mov     eax,16+96
> >
> > +        lea     rcx,[32+r10*1+rbp]
> >
> > +        sub     rax,r10
> >
> > +        movups  xmm1,XMMWORD[16+rbp]
> >
> > +        mov     r10,rax
> >
> > +        lea     r8,[$L$xts_magic]
> >
> > +        jmp     NEAR $L$xts_dec_grandloop
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$xts_dec_grandloop:
> >
> > +        movdqu  xmm2,XMMWORD[rdi]
> >
> > +        movdqa  xmm8,xmm0
> >
> > +        movdqu  xmm3,XMMWORD[16+rdi]
> >
> > +        pxor    xmm2,xmm10
> >
> > +        movdqu  xmm4,XMMWORD[32+rdi]
> >
> > +        pxor    xmm3,xmm11
> >
> > +DB      102,15,56,222,209
> >
> > +        movdqu  xmm5,XMMWORD[48+rdi]
> >
> > +        pxor    xmm4,xmm12
> >
> > +DB      102,15,56,222,217
> >
> > +        movdqu  xmm6,XMMWORD[64+rdi]
> >
> > +        pxor    xmm5,xmm13
> >
> > +DB      102,15,56,222,225
> >
> > +        movdqu  xmm7,XMMWORD[80+rdi]
> >
> > +        pxor    xmm8,xmm15
> >
> > +        movdqa  xmm9,XMMWORD[96+rsp]
> >
> > +        pxor    xmm6,xmm14
> >
> > +DB      102,15,56,222,233
> >
> > +        movups  xmm0,XMMWORD[32+rbp]
> >
> > +        lea     rdi,[96+rdi]
> >
> > +        pxor    xmm7,xmm8
> >
> > +
> >
> > +        pxor    xmm10,xmm9
> >
> > +DB      102,15,56,222,241
> >
> > +        pxor    xmm11,xmm9
> >
> > +        movdqa  XMMWORD[rsp],xmm10
> >
> > +DB      102,15,56,222,249
> >
> > +        movups  xmm1,XMMWORD[48+rbp]
> >
> > +        pxor    xmm12,xmm9
> >
> > +
> >
> > +DB      102,15,56,222,208
> >
> > +        pxor    xmm13,xmm9
> >
> > +        movdqa  XMMWORD[16+rsp],xmm11
> >
> > +DB      102,15,56,222,216
> >
> > +        pxor    xmm14,xmm9
> >
> > +        movdqa  XMMWORD[32+rsp],xmm12
> >
> > +DB      102,15,56,222,224
> >
> > +DB      102,15,56,222,232
> >
> > +        pxor    xmm8,xmm9
> >
> > +        movdqa  XMMWORD[64+rsp],xmm14
> >
> > +DB      102,15,56,222,240
> >
> > +DB      102,15,56,222,248
> >
> > +        movups  xmm0,XMMWORD[64+rbp]
> >
> > +        movdqa  XMMWORD[80+rsp],xmm8
> >
> > +        pshufd  xmm9,xmm15,0x5f
> >
> > +        jmp     NEAR $L$xts_dec_loop6
> >
> > +ALIGN   32
> >
> > +$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[((-64))+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
> >
> > +DB      102,15,56,222,240
> >
> > +DB      102,15,56,222,248
> >
> > +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
> >
> > +        jnz     NEAR $L$xts_dec_loop6
> >
> > +
> >
> > +        movdqa  xmm8,XMMWORD[r8]
> >
> > +        movdqa  xmm14,xmm9
> >
> > +        paddd   xmm9,xmm9
> >
> > +DB      102,15,56,222,209
> >
> > +        paddq   xmm15,xmm15
> >
> > +        psrad   xmm14,31
> >
> > +DB      102,15,56,222,217
> >
> > +        pand    xmm14,xmm8
> >
> > +        movups  xmm10,XMMWORD[rbp]
> >
> > +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[((-64))+rcx]
> >
> > +
> >
> > +        movdqa  xmm14,xmm9
> >
> > +DB      102,15,56,222,208
> >
> > +        paddd   xmm9,xmm9
> >
> > +        pxor    xmm10,xmm15
> >
> > +DB      102,15,56,222,216
> >
> > +        psrad   xmm14,31
> >
> > +        paddq   xmm15,xmm15
> >
> > +DB      102,15,56,222,224
> >
> > +DB      102,15,56,222,232
> >
> > +        pand    xmm14,xmm8
> >
> > +        movaps  xmm12,xmm11
> >
> > +DB      102,15,56,222,240
> >
> > +        pxor    xmm15,xmm14
> >
> > +        movdqa  xmm14,xmm9
> >
> > +DB      102,15,56,222,248
> >
> > +        movups  xmm0,XMMWORD[((-48))+rcx]
> >
> > +
> >
> > +        paddd   xmm9,xmm9
> >
> > +DB      102,15,56,222,209
> >
> > +        pxor    xmm11,xmm15
> >
> > +        psrad   xmm14,31
> >
> > +DB      102,15,56,222,217
> >
> > +        paddq   xmm15,xmm15
> >
> > +        pand    xmm14,xmm8
> >
> > +DB      102,15,56,222,225
> >
> > +DB      102,15,56,222,233
> >
> > +        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[((-32))+rcx]
> >
> > +
> >
> > +        paddd   xmm9,xmm9
> >
> > +DB      102,15,56,222,208
> >
> > +        pxor    xmm12,xmm15
> >
> > +        psrad   xmm14,31
> >
> > +DB      102,15,56,222,216
> >
> > +        paddq   xmm15,xmm15
> >
> > +        pand    xmm14,xmm8
> >
> > +DB      102,15,56,222,224
> >
> > +DB      102,15,56,222,232
> >
> > +DB      102,15,56,222,240
> >
> > +        pxor    xmm15,xmm14
> >
> > +        movaps  xmm14,xmm13
> >
> > +DB      102,15,56,222,248
> >
> > +
> >
> > +        movdqa  xmm0,xmm9
> >
> > +        paddd   xmm9,xmm9
> >
> > +DB      102,15,56,222,209
> >
> > +        pxor    xmm13,xmm15
> >
> > +        psrad   xmm0,31
> >
> > +DB      102,15,56,222,217
> >
> > +        paddq   xmm15,xmm15
> >
> > +        pand    xmm0,xmm8
> >
> > +DB      102,15,56,222,225
> >
> > +DB      102,15,56,222,233
> >
> > +        pxor    xmm15,xmm0
> >
> > +        movups  xmm0,XMMWORD[rbp]
> >
> > +DB      102,15,56,222,241
> >
> > +DB      102,15,56,222,249
> >
> > +        movups  xmm1,XMMWORD[16+rbp]
> >
> > +
> >
> > +        pxor    xmm14,xmm15
> >
> > +DB      102,15,56,223,84,36,0
> >
> > +        psrad   xmm9,31
> >
> > +        paddq   xmm15,xmm15
> >
> > +DB      102,15,56,223,92,36,16
> >
> > +DB      102,15,56,223,100,36,32
> >
> > +        pand    xmm9,xmm8
> >
> > +        mov     rax,r10
> >
> > +DB      102,15,56,223,108,36,48
> >
> > +DB      102,15,56,223,116,36,64
> >
> > +DB      102,15,56,223,124,36,80
> >
> > +        pxor    xmm15,xmm9
> >
> > +
> >
> > +        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     NEAR $L$xts_dec_grandloop
> >
> > +
> >
> > +        mov     eax,16+96
> >
> > +        sub     eax,r10d
> >
> > +        mov     rcx,rbp
> >
> > +        shr     eax,4
> >
> > +
> >
> > +$L$xts_dec_short:
> >
> > +
> >
> > +        mov     r10d,eax
> >
> > +        pxor    xmm10,xmm0
> >
> > +        pxor    xmm11,xmm0
> >
> > +        add     rdx,16*6
> >
> > +        jz      NEAR $L$xts_dec_done
> >
> > +
> >
> > +        pxor    xmm12,xmm0
> >
> > +        cmp     rdx,0x20
> >
> > +        jb      NEAR $L$xts_dec_one
> >
> > +        pxor    xmm13,xmm0
> >
> > +        je      NEAR $L$xts_dec_two
> >
> > +
> >
> > +        pxor    xmm14,xmm0
> >
> > +        cmp     rdx,0x40
> >
> > +        jb      NEAR $L$xts_dec_three
> >
> > +        je      NEAR $L$xts_dec_four
> >
> > +
> >
> > +        movdqu  xmm2,XMMWORD[rdi]
> >
> > +        movdqu  xmm3,XMMWORD[16+rdi]
> >
> > +        movdqu  xmm4,XMMWORD[32+rdi]
> >
> > +        pxor    xmm2,xmm10
> >
> > +        movdqu  xmm5,XMMWORD[48+rdi]
> >
> > +        pxor    xmm3,xmm11
> >
> > +        movdqu  xmm6,XMMWORD[64+rdi]
> >
> > +        lea     rdi,[80+rdi]
> >
> > +        pxor    xmm4,xmm12
> >
> > +        pxor    xmm5,xmm13
> >
> > +        pxor    xmm6,xmm14
> >
> > +
> >
> > +        call    _aesni_decrypt6
> >
> > +
> >
> > +        xorps   xmm2,xmm10
> >
> > +        xorps   xmm3,xmm11
> >
> > +        xorps   xmm4,xmm12
> >
> > +        movdqu  XMMWORD[rsi],xmm2
> >
> > +        xorps   xmm5,xmm13
> >
> > +        movdqu  XMMWORD[16+rsi],xmm3
> >
> > +        xorps   xmm6,xmm14
> >
> > +        movdqu  XMMWORD[32+rsi],xmm4
> >
> > +        pxor    xmm14,xmm14
> >
> > +        movdqu  XMMWORD[48+rsi],xmm5
> >
> > +        pcmpgtd xmm14,xmm15
> >
> > +        movdqu  XMMWORD[64+rsi],xmm6
> >
> > +        lea     rsi,[80+rsi]
> >
> > +        pshufd  xmm11,xmm14,0x13
> >
> > +        and     r9,15
> >
> > +        jz      NEAR $L$xts_dec_ret
> >
> > +
> >
> > +        movdqa  xmm10,xmm15
> >
> > +        paddq   xmm15,xmm15
> >
> > +        pand    xmm11,xmm8
> >
> > +        pxor    xmm11,xmm15
> >
> > +        jmp     NEAR $L$xts_dec_done2
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$xts_dec_one:
> >
> > +        movups  xmm2,XMMWORD[rdi]
> >
> > +        lea     rdi,[16+rdi]
> >
> > +        xorps   xmm2,xmm10
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        lea     rcx,[32+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +$L$oop_dec1_12:
> >
> > +DB      102,15,56,222,209
> >
> > +        dec     eax
> >
> > +        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[rsi],xmm2
> >
> > +        movdqa  xmm11,xmm12
> >
> > +        lea     rsi,[16+rsi]
> >
> > +        jmp     NEAR $L$xts_dec_done
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$xts_dec_two:
> >
> > +        movups  xmm2,XMMWORD[rdi]
> >
> > +        movups  xmm3,XMMWORD[16+rdi]
> >
> > +        lea     rdi,[32+rdi]
> >
> > +        xorps   xmm2,xmm10
> >
> > +        xorps   xmm3,xmm11
> >
> > +
> >
> > +        call    _aesni_decrypt2
> >
> > +
> >
> > +        xorps   xmm2,xmm10
> >
> > +        movdqa  xmm10,xmm12
> >
> > +        xorps   xmm3,xmm11
> >
> > +        movdqa  xmm11,xmm13
> >
> > +        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[rdi]
> >
> > +        movups  xmm3,XMMWORD[16+rdi]
> >
> > +        movups  xmm4,XMMWORD[32+rdi]
> >
> > +        lea     rdi,[48+rdi]
> >
> > +        xorps   xmm2,xmm10
> >
> > +        xorps   xmm3,xmm11
> >
> > +        xorps   xmm4,xmm12
> >
> > +
> >
> > +        call    _aesni_decrypt3
> >
> > +
> >
> > +        xorps   xmm2,xmm10
> >
> > +        movdqa  xmm10,xmm13
> >
> > +        xorps   xmm3,xmm11
> >
> > +        movdqa  xmm11,xmm14
> >
> > +        xorps   xmm4,xmm12
> >
> > +        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[rdi]
> >
> > +        movups  xmm3,XMMWORD[16+rdi]
> >
> > +        movups  xmm4,XMMWORD[32+rdi]
> >
> > +        xorps   xmm2,xmm10
> >
> > +        movups  xmm5,XMMWORD[48+rdi]
> >
> > +        lea     rdi,[64+rdi]
> >
> > +        xorps   xmm3,xmm11
> >
> > +        xorps   xmm4,xmm12
> >
> > +        xorps   xmm5,xmm13
> >
> > +
> >
> > +        call    _aesni_decrypt4
> >
> > +
> >
> > +        pxor    xmm2,xmm10
> >
> > +        movdqa  xmm10,xmm14
> >
> > +        pxor    xmm3,xmm11
> >
> > +        movdqa  xmm11,xmm15
> >
> > +        pxor    xmm4,xmm12
> >
> > +        movdqu  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm5,xmm13
> >
> > +        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:
> >
> > +        and     r9,15
> >
> > +        jz      NEAR $L$xts_dec_ret
> >
> > +$L$xts_dec_done2:
> >
> > +        mov     rdx,r9
> >
> > +        mov     rcx,rbp
> >
> > +        mov     eax,r10d
> >
> > +
> >
> > +        movups  xmm2,XMMWORD[rdi]
> >
> > +        xorps   xmm2,xmm11
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        lea     rcx,[32+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +$L$oop_dec1_13:
> >
> > +DB      102,15,56,222,209
> >
> > +        dec     eax
> >
> > +        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[rsi],xmm2
> >
> > +
> >
> > +$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     NEAR $L$xts_dec_steal
> >
> > +
> >
> > +        sub     rsi,r9
> >
> > +        mov     rcx,rbp
> >
> > +        mov     eax,r10d
> >
> > +
> >
> > +        movups  xmm2,XMMWORD[rsi]
> >
> > +        xorps   xmm2,xmm10
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        lea     rcx,[32+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +$L$oop_dec1_14:
> >
> > +DB      102,15,56,222,209
> >
> > +        dec     eax
> >
> > +        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[rsi],xmm2
> >
> > +
> >
> > +$L$xts_dec_ret:
> >
> > +        xorps   xmm0,xmm0
> >
> > +        pxor    xmm1,xmm1
> >
> > +        pxor    xmm2,xmm2
> >
> > +        pxor    xmm3,xmm3
> >
> > +        pxor    xmm4,xmm4
> >
> > +        pxor    xmm5,xmm5
> >
> > +        movaps  xmm6,XMMWORD[((-168))+r11]
> >
> > +        movaps  XMMWORD[(-168)+r11],xmm0
> >
> > +        movaps  xmm7,XMMWORD[((-152))+r11]
> >
> > +        movaps  XMMWORD[(-152)+r11],xmm0
> >
> > +        movaps  xmm8,XMMWORD[((-136))+r11]
> >
> > +        movaps  XMMWORD[(-136)+r11],xmm0
> >
> > +        movaps  xmm9,XMMWORD[((-120))+r11]
> >
> > +        movaps  XMMWORD[(-120)+r11],xmm0
> >
> > +        movaps  xmm10,XMMWORD[((-104))+r11]
> >
> > +        movaps  XMMWORD[(-104)+r11],xmm0
> >
> > +        movaps  xmm11,XMMWORD[((-88))+r11]
> >
> > +        movaps  XMMWORD[(-88)+r11],xmm0
> >
> > +        movaps  xmm12,XMMWORD[((-72))+r11]
> >
> > +        movaps  XMMWORD[(-72)+r11],xmm0
> >
> > +        movaps  xmm13,XMMWORD[((-56))+r11]
> >
> > +        movaps  XMMWORD[(-56)+r11],xmm0
> >
> > +        movaps  xmm14,XMMWORD[((-40))+r11]
> >
> > +        movaps  XMMWORD[(-40)+r11],xmm0
> >
> > +        movaps  xmm15,XMMWORD[((-24))+r11]
> >
> > +        movaps  XMMWORD[(-24)+r11],xmm0
> >
> > +        movaps  XMMWORD[rsp],xmm0
> >
> > +        movaps  XMMWORD[16+rsp],xmm0
> >
> > +        movaps  XMMWORD[32+rsp],xmm0
> >
> > +        movaps  XMMWORD[48+rsp],xmm0
> >
> > +        movaps  XMMWORD[64+rsp],xmm0
> >
> > +        movaps  XMMWORD[80+rsp],xmm0
> >
> > +        movaps  XMMWORD[96+rsp],xmm0
> >
> > +        mov     rbp,QWORD[((-8))+r11]
> >
> > +
> >
> > +        lea     rsp,[r11]
> >
> > +
> >
> > +$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:
> >
> > +global  aesni_ocb_encrypt
> >
> > +
> >
> > +ALIGN   32
> >
> > +aesni_ocb_encrypt:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_aesni_ocb_encrypt:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +        mov     rcx,r9
> >
> > +        mov     r8,QWORD[40+rsp]
> >
> > +        mov     r9,QWORD[48+rsp]
> >
> > +
> >
> > +
> >
> > +
> >
> > +        lea     rax,[rsp]
> >
> > +        push    rbx
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        push    r12
> >
> > +
> >
> > +        push    r13
> >
> > +
> >
> > +        push    r14
> >
> > +
> >
> > +        lea     rsp,[((-160))+rsp]
> >
> > +        movaps  XMMWORD[rsp],xmm6
> >
> > +        movaps  XMMWORD[16+rsp],xmm7
> >
> > +        movaps  XMMWORD[32+rsp],xmm8
> >
> > +        movaps  XMMWORD[48+rsp],xmm9
> >
> > +        movaps  XMMWORD[64+rsp],xmm10
> >
> > +        movaps  XMMWORD[80+rsp],xmm11
> >
> > +        movaps  XMMWORD[96+rsp],xmm12
> >
> > +        movaps  XMMWORD[112+rsp],xmm13
> >
> > +        movaps  XMMWORD[128+rsp],xmm14
> >
> > +        movaps  XMMWORD[144+rsp],xmm15
> >
> > +$L$ocb_enc_body:
> >
> > +        mov     rbx,QWORD[56+rax]
> >
> > +        mov     rbp,QWORD[((56+8))+rax]
> >
> > +
> >
> > +        mov     r10d,DWORD[240+rcx]
> >
> > +        mov     r11,rcx
> >
> > +        shl     r10d,4
> >
> > +        movups  xmm9,XMMWORD[rcx]
> >
> > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> >
> > +
> >
> > +        movdqu  xmm15,XMMWORD[r9]
> >
> > +        pxor    xmm9,xmm1
> >
> > +        pxor    xmm15,xmm1
> >
> > +
> >
> > +        mov     eax,16+32
> >
> > +        lea     rcx,[32+r10*1+r11]
> >
> > +        movups  xmm1,XMMWORD[16+r11]
> >
> > +        sub     rax,r10
> >
> > +        mov     r10,rax
> >
> > +
> >
> > +        movdqu  xmm10,XMMWORD[rbx]
> >
> > +        movdqu  xmm8,XMMWORD[rbp]
> >
> > +
> >
> > +        test    r8,1
> >
> > +        jnz     NEAR $L$ocb_enc_odd
> >
> > +
> >
> > +        bsf     r12,r8
> >
> > +        add     r8,1
> >
> > +        shl     r12,4
> >
> > +        movdqu  xmm7,XMMWORD[r12*1+rbx]
> >
> > +        movdqu  xmm2,XMMWORD[rdi]
> >
> > +        lea     rdi,[16+rdi]
> >
> > +
> >
> > +        call    __ocb_encrypt1
> >
> > +
> >
> > +        movdqa  xmm15,xmm7
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        lea     rsi,[16+rsi]
> >
> > +        sub     rdx,1
> >
> > +        jz      NEAR $L$ocb_enc_done
> >
> > +
> >
> > +$L$ocb_enc_odd:
> >
> > +        lea     r12,[1+r8]
> >
> > +        lea     r13,[3+r8]
> >
> > +        lea     r14,[5+r8]
> >
> > +        lea     r8,[6+r8]
> >
> > +        bsf     r12,r12
> >
> > +        bsf     r13,r13
> >
> > +        bsf     r14,r14
> >
> > +        shl     r12,4
> >
> > +        shl     r13,4
> >
> > +        shl     r14,4
> >
> > +
> >
> > +        sub     rdx,6
> >
> > +        jc      NEAR $L$ocb_enc_short
> >
> > +        jmp     NEAR $L$ocb_enc_grandloop
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$ocb_enc_grandloop:
> >
> > +        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]
> >
> > +        lea     rdi,[96+rdi]
> >
> > +
> >
> > +        call    __ocb_encrypt6
> >
> > +
> >
> > +        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
> >
> > +        lea     rsi,[96+rsi]
> >
> > +        sub     rdx,6
> >
> > +        jnc     NEAR $L$ocb_enc_grandloop
> >
> > +
> >
> > +$L$ocb_enc_short:
> >
> > +        add     rdx,6
> >
> > +        jz      NEAR $L$ocb_enc_done
> >
> > +
> >
> > +        movdqu  xmm2,XMMWORD[rdi]
> >
> > +        cmp     rdx,2
> >
> > +        jb      NEAR $L$ocb_enc_one
> >
> > +        movdqu  xmm3,XMMWORD[16+rdi]
> >
> > +        je      NEAR $L$ocb_enc_two
> >
> > +
> >
> > +        movdqu  xmm4,XMMWORD[32+rdi]
> >
> > +        cmp     rdx,4
> >
> > +        jb      NEAR $L$ocb_enc_three
> >
> > +        movdqu  xmm5,XMMWORD[48+rdi]
> >
> > +        je      NEAR $L$ocb_enc_four
> >
> > +
> >
> > +        movdqu  xmm6,XMMWORD[64+rdi]
> >
> > +        pxor    xmm7,xmm7
> >
> > +
> >
> > +        call    __ocb_encrypt6
> >
> > +
> >
> > +        movdqa  xmm15,xmm14
> >
> > +        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$ocb_enc_done
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$ocb_enc_one:
> >
> > +        movdqa  xmm7,xmm10
> >
> > +
> >
> > +        call    __ocb_encrypt1
> >
> > +
> >
> > +        movdqa  xmm15,xmm7
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        jmp     NEAR $L$ocb_enc_done
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$ocb_enc_two:
> >
> > +        pxor    xmm4,xmm4
> >
> > +        pxor    xmm5,xmm5
> >
> > +
> >
> > +        call    __ocb_encrypt4
> >
> > +
> >
> > +        movdqa  xmm15,xmm11
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +
> >
> > +        jmp     NEAR $L$ocb_enc_done
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$ocb_enc_three:
> >
> > +        pxor    xmm5,xmm5
> >
> > +
> >
> > +        call    __ocb_encrypt4
> >
> > +
> >
> > +        movdqa  xmm15,xmm12
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        movups  XMMWORD[32+rsi],xmm4
> >
> > +
> >
> > +        jmp     NEAR $L$ocb_enc_done
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$ocb_enc_four:
> >
> > +        call    __ocb_encrypt4
> >
> > +
> >
> > +        movdqa  xmm15,xmm13
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        movups  XMMWORD[32+rsi],xmm4
> >
> > +        movups  XMMWORD[48+rsi],xmm5
> >
> > +
> >
> > +$L$ocb_enc_done:
> >
> > +        pxor    xmm15,xmm0
> >
> > +        movdqu  XMMWORD[rbp],xmm8
> >
> > +        movdqu  XMMWORD[r9],xmm15
> >
> > +
> >
> > +        xorps   xmm0,xmm0
> >
> > +        pxor    xmm1,xmm1
> >
> > +        pxor    xmm2,xmm2
> >
> > +        pxor    xmm3,xmm3
> >
> > +        pxor    xmm4,xmm4
> >
> > +        pxor    xmm5,xmm5
> >
> > +        movaps  xmm6,XMMWORD[rsp]
> >
> > +        movaps  XMMWORD[rsp],xmm0
> >
> > +        movaps  xmm7,XMMWORD[16+rsp]
> >
> > +        movaps  XMMWORD[16+rsp],xmm0
> >
> > +        movaps  xmm8,XMMWORD[32+rsp]
> >
> > +        movaps  XMMWORD[32+rsp],xmm0
> >
> > +        movaps  xmm9,XMMWORD[48+rsp]
> >
> > +        movaps  XMMWORD[48+rsp],xmm0
> >
> > +        movaps  xmm10,XMMWORD[64+rsp]
> >
> > +        movaps  XMMWORD[64+rsp],xmm0
> >
> > +        movaps  xmm11,XMMWORD[80+rsp]
> >
> > +        movaps  XMMWORD[80+rsp],xmm0
> >
> > +        movaps  xmm12,XMMWORD[96+rsp]
> >
> > +        movaps  XMMWORD[96+rsp],xmm0
> >
> > +        movaps  xmm13,XMMWORD[112+rsp]
> >
> > +        movaps  XMMWORD[112+rsp],xmm0
> >
> > +        movaps  xmm14,XMMWORD[128+rsp]
> >
> > +        movaps  XMMWORD[128+rsp],xmm0
> >
> > +        movaps  xmm15,XMMWORD[144+rsp]
> >
> > +        movaps  XMMWORD[144+rsp],xmm0
> >
> > +        lea     rax,[((160+40))+rsp]
> >
> > +$L$ocb_enc_pop:
> >
> > +        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$ocb_enc_epilogue:
> >
> > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> >
> > +        mov     rsi,QWORD[16+rsp]
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +$L$SEH_end_aesni_ocb_encrypt:
> >
> > +
> >
> > +
> >
> > +ALIGN   32
> >
> > +__ocb_encrypt6:
> >
> > +
> >
> > +        pxor    xmm15,xmm9
> >
> > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> >
> > +        movdqa  xmm12,xmm10
> >
> > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> >
> > +        movdqa  xmm14,xmm10
> >
> > +        pxor    xmm10,xmm15
> >
> > +        movdqu  xmm15,XMMWORD[r14*1+rbx]
> >
> > +        pxor    xmm11,xmm10
> >
> > +        pxor    xmm8,xmm2
> >
> > +        pxor    xmm2,xmm10
> >
> > +        pxor    xmm12,xmm11
> >
> > +        pxor    xmm8,xmm3
> >
> > +        pxor    xmm3,xmm11
> >
> > +        pxor    xmm13,xmm12
> >
> > +        pxor    xmm8,xmm4
> >
> > +        pxor    xmm4,xmm12
> >
> > +        pxor    xmm14,xmm13
> >
> > +        pxor    xmm8,xmm5
> >
> > +        pxor    xmm5,xmm13
> >
> > +        pxor    xmm15,xmm14
> >
> > +        pxor    xmm8,xmm6
> >
> > +        pxor    xmm6,xmm14
> >
> > +        pxor    xmm8,xmm7
> >
> > +        pxor    xmm7,xmm15
> >
> > +        movups  xmm0,XMMWORD[32+r11]
> >
> > +
> >
> > +        lea     r12,[1+r8]
> >
> > +        lea     r13,[3+r8]
> >
> > +        lea     r14,[5+r8]
> >
> > +        add     r8,6
> >
> > +        pxor    xmm10,xmm9
> >
> > +        bsf     r12,r12
> >
> > +        bsf     r13,r13
> >
> > +        bsf     r14,r14
> >
> > +
> >
> > +DB      102,15,56,220,209
> >
> > +DB      102,15,56,220,217
> >
> > +DB      102,15,56,220,225
> >
> > +DB      102,15,56,220,233
> >
> > +        pxor    xmm11,xmm9
> >
> > +        pxor    xmm12,xmm9
> >
> > +DB      102,15,56,220,241
> >
> > +        pxor    xmm13,xmm9
> >
> > +        pxor    xmm14,xmm9
> >
> > +DB      102,15,56,220,249
> >
> > +        movups  xmm1,XMMWORD[48+r11]
> >
> > +        pxor    xmm15,xmm9
> >
> > +
> >
> > +DB      102,15,56,220,208
> >
> > +DB      102,15,56,220,216
> >
> > +DB      102,15,56,220,224
> >
> > +DB      102,15,56,220,232
> >
> > +DB      102,15,56,220,240
> >
> > +DB      102,15,56,220,248
> >
> > +        movups  xmm0,XMMWORD[64+r11]
> >
> > +        shl     r12,4
> >
> > +        shl     r13,4
> >
> > +        jmp     NEAR $L$ocb_enc_loop6
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$ocb_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[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
> >
> > +DB      102,15,56,220,240
> >
> > +DB      102,15,56,220,248
> >
> > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> >
> > +        jnz     NEAR $L$ocb_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[16+r11]
> >
> > +        shl     r14,4
> >
> > +
> >
> > +DB      102,65,15,56,221,210
> >
> > +        movdqu  xmm10,XMMWORD[rbx]
> >
> > +        mov     rax,r10
> >
> > +DB      102,65,15,56,221,219
> >
> > +DB      102,65,15,56,221,228
> >
> > +DB      102,65,15,56,221,237
> >
> > +DB      102,65,15,56,221,246
> >
> > +DB      102,65,15,56,221,255
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   32
> >
> > +__ocb_encrypt4:
> >
> > +
> >
> > +        pxor    xmm15,xmm9
> >
> > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> >
> > +        movdqa  xmm12,xmm10
> >
> > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> >
> > +        pxor    xmm10,xmm15
> >
> > +        pxor    xmm11,xmm10
> >
> > +        pxor    xmm8,xmm2
> >
> > +        pxor    xmm2,xmm10
> >
> > +        pxor    xmm12,xmm11
> >
> > +        pxor    xmm8,xmm3
> >
> > +        pxor    xmm3,xmm11
> >
> > +        pxor    xmm13,xmm12
> >
> > +        pxor    xmm8,xmm4
> >
> > +        pxor    xmm4,xmm12
> >
> > +        pxor    xmm8,xmm5
> >
> > +        pxor    xmm5,xmm13
> >
> > +        movups  xmm0,XMMWORD[32+r11]
> >
> > +
> >
> > +        pxor    xmm10,xmm9
> >
> > +        pxor    xmm11,xmm9
> >
> > +        pxor    xmm12,xmm9
> >
> > +        pxor    xmm13,xmm9
> >
> > +
> >
> > +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[48+r11]
> >
> > +
> >
> > +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[64+r11]
> >
> > +        jmp     NEAR $L$ocb_enc_loop4
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$ocb_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[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[((-16))+rax*1+rcx]
> >
> > +        jnz     NEAR $L$ocb_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[16+r11]
> >
> > +        mov     rax,r10
> >
> > +
> >
> > +DB      102,65,15,56,221,210
> >
> > +DB      102,65,15,56,221,219
> >
> > +DB      102,65,15,56,221,228
> >
> > +DB      102,65,15,56,221,237
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   32
> >
> > +__ocb_encrypt1:
> >
> > +
> >
> > +        pxor    xmm7,xmm15
> >
> > +        pxor    xmm7,xmm9
> >
> > +        pxor    xmm8,xmm2
> >
> > +        pxor    xmm2,xmm7
> >
> > +        movups  xmm0,XMMWORD[32+r11]
> >
> > +
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[48+r11]
> >
> > +        pxor    xmm7,xmm9
> >
> > +
> >
> > +DB      102,15,56,220,208
> >
> > +        movups  xmm0,XMMWORD[64+r11]
> >
> > +        jmp     NEAR $L$ocb_enc_loop1
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$ocb_enc_loop1:
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[rax*1+rcx]
> >
> > +        add     rax,32
> >
> > +
> >
> > +DB      102,15,56,220,208
> >
> > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> >
> > +        jnz     NEAR $L$ocb_enc_loop1
> >
> > +
> >
> > +DB      102,15,56,220,209
> >
> > +        movups  xmm1,XMMWORD[16+r11]
> >
> > +        mov     rax,r10
> >
> > +
> >
> > +DB      102,15,56,221,215
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +global  aesni_ocb_decrypt
> >
> > +
> >
> > +ALIGN   32
> >
> > +aesni_ocb_decrypt:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_aesni_ocb_decrypt:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +        mov     rcx,r9
> >
> > +        mov     r8,QWORD[40+rsp]
> >
> > +        mov     r9,QWORD[48+rsp]
> >
> > +
> >
> > +
> >
> > +
> >
> > +        lea     rax,[rsp]
> >
> > +        push    rbx
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        push    r12
> >
> > +
> >
> > +        push    r13
> >
> > +
> >
> > +        push    r14
> >
> > +
> >
> > +        lea     rsp,[((-160))+rsp]
> >
> > +        movaps  XMMWORD[rsp],xmm6
> >
> > +        movaps  XMMWORD[16+rsp],xmm7
> >
> > +        movaps  XMMWORD[32+rsp],xmm8
> >
> > +        movaps  XMMWORD[48+rsp],xmm9
> >
> > +        movaps  XMMWORD[64+rsp],xmm10
> >
> > +        movaps  XMMWORD[80+rsp],xmm11
> >
> > +        movaps  XMMWORD[96+rsp],xmm12
> >
> > +        movaps  XMMWORD[112+rsp],xmm13
> >
> > +        movaps  XMMWORD[128+rsp],xmm14
> >
> > +        movaps  XMMWORD[144+rsp],xmm15
> >
> > +$L$ocb_dec_body:
> >
> > +        mov     rbx,QWORD[56+rax]
> >
> > +        mov     rbp,QWORD[((56+8))+rax]
> >
> > +
> >
> > +        mov     r10d,DWORD[240+rcx]
> >
> > +        mov     r11,rcx
> >
> > +        shl     r10d,4
> >
> > +        movups  xmm9,XMMWORD[rcx]
> >
> > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> >
> > +
> >
> > +        movdqu  xmm15,XMMWORD[r9]
> >
> > +        pxor    xmm9,xmm1
> >
> > +        pxor    xmm15,xmm1
> >
> > +
> >
> > +        mov     eax,16+32
> >
> > +        lea     rcx,[32+r10*1+r11]
> >
> > +        movups  xmm1,XMMWORD[16+r11]
> >
> > +        sub     rax,r10
> >
> > +        mov     r10,rax
> >
> > +
> >
> > +        movdqu  xmm10,XMMWORD[rbx]
> >
> > +        movdqu  xmm8,XMMWORD[rbp]
> >
> > +
> >
> > +        test    r8,1
> >
> > +        jnz     NEAR $L$ocb_dec_odd
> >
> > +
> >
> > +        bsf     r12,r8
> >
> > +        add     r8,1
> >
> > +        shl     r12,4
> >
> > +        movdqu  xmm7,XMMWORD[r12*1+rbx]
> >
> > +        movdqu  xmm2,XMMWORD[rdi]
> >
> > +        lea     rdi,[16+rdi]
> >
> > +
> >
> > +        call    __ocb_decrypt1
> >
> > +
> >
> > +        movdqa  xmm15,xmm7
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        xorps   xmm8,xmm2
> >
> > +        lea     rsi,[16+rsi]
> >
> > +        sub     rdx,1
> >
> > +        jz      NEAR $L$ocb_dec_done
> >
> > +
> >
> > +$L$ocb_dec_odd:
> >
> > +        lea     r12,[1+r8]
> >
> > +        lea     r13,[3+r8]
> >
> > +        lea     r14,[5+r8]
> >
> > +        lea     r8,[6+r8]
> >
> > +        bsf     r12,r12
> >
> > +        bsf     r13,r13
> >
> > +        bsf     r14,r14
> >
> > +        shl     r12,4
> >
> > +        shl     r13,4
> >
> > +        shl     r14,4
> >
> > +
> >
> > +        sub     rdx,6
> >
> > +        jc      NEAR $L$ocb_dec_short
> >
> > +        jmp     NEAR $L$ocb_dec_grandloop
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$ocb_dec_grandloop:
> >
> > +        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]
> >
> > +        lea     rdi,[96+rdi]
> >
> > +
> >
> > +        call    __ocb_decrypt6
> >
> > +
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm8,xmm2
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        pxor    xmm8,xmm3
> >
> > +        movups  XMMWORD[32+rsi],xmm4
> >
> > +        pxor    xmm8,xmm4
> >
> > +        movups  XMMWORD[48+rsi],xmm5
> >
> > +        pxor    xmm8,xmm5
> >
> > +        movups  XMMWORD[64+rsi],xmm6
> >
> > +        pxor    xmm8,xmm6
> >
> > +        movups  XMMWORD[80+rsi],xmm7
> >
> > +        pxor    xmm8,xmm7
> >
> > +        lea     rsi,[96+rsi]
> >
> > +        sub     rdx,6
> >
> > +        jnc     NEAR $L$ocb_dec_grandloop
> >
> > +
> >
> > +$L$ocb_dec_short:
> >
> > +        add     rdx,6
> >
> > +        jz      NEAR $L$ocb_dec_done
> >
> > +
> >
> > +        movdqu  xmm2,XMMWORD[rdi]
> >
> > +        cmp     rdx,2
> >
> > +        jb      NEAR $L$ocb_dec_one
> >
> > +        movdqu  xmm3,XMMWORD[16+rdi]
> >
> > +        je      NEAR $L$ocb_dec_two
> >
> > +
> >
> > +        movdqu  xmm4,XMMWORD[32+rdi]
> >
> > +        cmp     rdx,4
> >
> > +        jb      NEAR $L$ocb_dec_three
> >
> > +        movdqu  xmm5,XMMWORD[48+rdi]
> >
> > +        je      NEAR $L$ocb_dec_four
> >
> > +
> >
> > +        movdqu  xmm6,XMMWORD[64+rdi]
> >
> > +        pxor    xmm7,xmm7
> >
> > +
> >
> > +        call    __ocb_decrypt6
> >
> > +
> >
> > +        movdqa  xmm15,xmm14
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm8,xmm2
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        pxor    xmm8,xmm3
> >
> > +        movups  XMMWORD[32+rsi],xmm4
> >
> > +        pxor    xmm8,xmm4
> >
> > +        movups  XMMWORD[48+rsi],xmm5
> >
> > +        pxor    xmm8,xmm5
> >
> > +        movups  XMMWORD[64+rsi],xmm6
> >
> > +        pxor    xmm8,xmm6
> >
> > +
> >
> > +        jmp     NEAR $L$ocb_dec_done
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$ocb_dec_one:
> >
> > +        movdqa  xmm7,xmm10
> >
> > +
> >
> > +        call    __ocb_decrypt1
> >
> > +
> >
> > +        movdqa  xmm15,xmm7
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        xorps   xmm8,xmm2
> >
> > +        jmp     NEAR $L$ocb_dec_done
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$ocb_dec_two:
> >
> > +        pxor    xmm4,xmm4
> >
> > +        pxor    xmm5,xmm5
> >
> > +
> >
> > +        call    __ocb_decrypt4
> >
> > +
> >
> > +        movdqa  xmm15,xmm11
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        xorps   xmm8,xmm2
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        xorps   xmm8,xmm3
> >
> > +
> >
> > +        jmp     NEAR $L$ocb_dec_done
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$ocb_dec_three:
> >
> > +        pxor    xmm5,xmm5
> >
> > +
> >
> > +        call    __ocb_decrypt4
> >
> > +
> >
> > +        movdqa  xmm15,xmm12
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        xorps   xmm8,xmm2
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        xorps   xmm8,xmm3
> >
> > +        movups  XMMWORD[32+rsi],xmm4
> >
> > +        xorps   xmm8,xmm4
> >
> > +
> >
> > +        jmp     NEAR $L$ocb_dec_done
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$ocb_dec_four:
> >
> > +        call    __ocb_decrypt4
> >
> > +
> >
> > +        movdqa  xmm15,xmm13
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm8,xmm2
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        pxor    xmm8,xmm3
> >
> > +        movups  XMMWORD[32+rsi],xmm4
> >
> > +        pxor    xmm8,xmm4
> >
> > +        movups  XMMWORD[48+rsi],xmm5
> >
> > +        pxor    xmm8,xmm5
> >
> > +
> >
> > +$L$ocb_dec_done:
> >
> > +        pxor    xmm15,xmm0
> >
> > +        movdqu  XMMWORD[rbp],xmm8
> >
> > +        movdqu  XMMWORD[r9],xmm15
> >
> > +
> >
> > +        xorps   xmm0,xmm0
> >
> > +        pxor    xmm1,xmm1
> >
> > +        pxor    xmm2,xmm2
> >
> > +        pxor    xmm3,xmm3
> >
> > +        pxor    xmm4,xmm4
> >
> > +        pxor    xmm5,xmm5
> >
> > +        movaps  xmm6,XMMWORD[rsp]
> >
> > +        movaps  XMMWORD[rsp],xmm0
> >
> > +        movaps  xmm7,XMMWORD[16+rsp]
> >
> > +        movaps  XMMWORD[16+rsp],xmm0
> >
> > +        movaps  xmm8,XMMWORD[32+rsp]
> >
> > +        movaps  XMMWORD[32+rsp],xmm0
> >
> > +        movaps  xmm9,XMMWORD[48+rsp]
> >
> > +        movaps  XMMWORD[48+rsp],xmm0
> >
> > +        movaps  xmm10,XMMWORD[64+rsp]
> >
> > +        movaps  XMMWORD[64+rsp],xmm0
> >
> > +        movaps  xmm11,XMMWORD[80+rsp]
> >
> > +        movaps  XMMWORD[80+rsp],xmm0
> >
> > +        movaps  xmm12,XMMWORD[96+rsp]
> >
> > +        movaps  XMMWORD[96+rsp],xmm0
> >
> > +        movaps  xmm13,XMMWORD[112+rsp]
> >
> > +        movaps  XMMWORD[112+rsp],xmm0
> >
> > +        movaps  xmm14,XMMWORD[128+rsp]
> >
> > +        movaps  XMMWORD[128+rsp],xmm0
> >
> > +        movaps  xmm15,XMMWORD[144+rsp]
> >
> > +        movaps  XMMWORD[144+rsp],xmm0
> >
> > +        lea     rax,[((160+40))+rsp]
> >
> > +$L$ocb_dec_pop:
> >
> > +        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$ocb_dec_epilogue:
> >
> > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> >
> > +        mov     rsi,QWORD[16+rsp]
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +$L$SEH_end_aesni_ocb_decrypt:
> >
> > +
> >
> > +
> >
> > +ALIGN   32
> >
> > +__ocb_decrypt6:
> >
> > +
> >
> > +        pxor    xmm15,xmm9
> >
> > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> >
> > +        movdqa  xmm12,xmm10
> >
> > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> >
> > +        movdqa  xmm14,xmm10
> >
> > +        pxor    xmm10,xmm15
> >
> > +        movdqu  xmm15,XMMWORD[r14*1+rbx]
> >
> > +        pxor    xmm11,xmm10
> >
> > +        pxor    xmm2,xmm10
> >
> > +        pxor    xmm12,xmm11
> >
> > +        pxor    xmm3,xmm11
> >
> > +        pxor    xmm13,xmm12
> >
> > +        pxor    xmm4,xmm12
> >
> > +        pxor    xmm14,xmm13
> >
> > +        pxor    xmm5,xmm13
> >
> > +        pxor    xmm15,xmm14
> >
> > +        pxor    xmm6,xmm14
> >
> > +        pxor    xmm7,xmm15
> >
> > +        movups  xmm0,XMMWORD[32+r11]
> >
> > +
> >
> > +        lea     r12,[1+r8]
> >
> > +        lea     r13,[3+r8]
> >
> > +        lea     r14,[5+r8]
> >
> > +        add     r8,6
> >
> > +        pxor    xmm10,xmm9
> >
> > +        bsf     r12,r12
> >
> > +        bsf     r13,r13
> >
> > +        bsf     r14,r14
> >
> > +
> >
> > +DB      102,15,56,222,209
> >
> > +DB      102,15,56,222,217
> >
> > +DB      102,15,56,222,225
> >
> > +DB      102,15,56,222,233
> >
> > +        pxor    xmm11,xmm9
> >
> > +        pxor    xmm12,xmm9
> >
> > +DB      102,15,56,222,241
> >
> > +        pxor    xmm13,xmm9
> >
> > +        pxor    xmm14,xmm9
> >
> > +DB      102,15,56,222,249
> >
> > +        movups  xmm1,XMMWORD[48+r11]
> >
> > +        pxor    xmm15,xmm9
> >
> > +
> >
> > +DB      102,15,56,222,208
> >
> > +DB      102,15,56,222,216
> >
> > +DB      102,15,56,222,224
> >
> > +DB      102,15,56,222,232
> >
> > +DB      102,15,56,222,240
> >
> > +DB      102,15,56,222,248
> >
> > +        movups  xmm0,XMMWORD[64+r11]
> >
> > +        shl     r12,4
> >
> > +        shl     r13,4
> >
> > +        jmp     NEAR $L$ocb_dec_loop6
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$ocb_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[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
> >
> > +DB      102,15,56,222,240
> >
> > +DB      102,15,56,222,248
> >
> > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> >
> > +        jnz     NEAR $L$ocb_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[16+r11]
> >
> > +        shl     r14,4
> >
> > +
> >
> > +DB      102,65,15,56,223,210
> >
> > +        movdqu  xmm10,XMMWORD[rbx]
> >
> > +        mov     rax,r10
> >
> > +DB      102,65,15,56,223,219
> >
> > +DB      102,65,15,56,223,228
> >
> > +DB      102,65,15,56,223,237
> >
> > +DB      102,65,15,56,223,246
> >
> > +DB      102,65,15,56,223,255
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   32
> >
> > +__ocb_decrypt4:
> >
> > +
> >
> > +        pxor    xmm15,xmm9
> >
> > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> >
> > +        movdqa  xmm12,xmm10
> >
> > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> >
> > +        pxor    xmm10,xmm15
> >
> > +        pxor    xmm11,xmm10
> >
> > +        pxor    xmm2,xmm10
> >
> > +        pxor    xmm12,xmm11
> >
> > +        pxor    xmm3,xmm11
> >
> > +        pxor    xmm13,xmm12
> >
> > +        pxor    xmm4,xmm12
> >
> > +        pxor    xmm5,xmm13
> >
> > +        movups  xmm0,XMMWORD[32+r11]
> >
> > +
> >
> > +        pxor    xmm10,xmm9
> >
> > +        pxor    xmm11,xmm9
> >
> > +        pxor    xmm12,xmm9
> >
> > +        pxor    xmm13,xmm9
> >
> > +
> >
> > +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[48+r11]
> >
> > +
> >
> > +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[64+r11]
> >
> > +        jmp     NEAR $L$ocb_dec_loop4
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$ocb_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[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[((-16))+rax*1+rcx]
> >
> > +        jnz     NEAR $L$ocb_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[16+r11]
> >
> > +        mov     rax,r10
> >
> > +
> >
> > +DB      102,65,15,56,223,210
> >
> > +DB      102,65,15,56,223,219
> >
> > +DB      102,65,15,56,223,228
> >
> > +DB      102,65,15,56,223,237
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   32
> >
> > +__ocb_decrypt1:
> >
> > +
> >
> > +        pxor    xmm7,xmm15
> >
> > +        pxor    xmm7,xmm9
> >
> > +        pxor    xmm2,xmm7
> >
> > +        movups  xmm0,XMMWORD[32+r11]
> >
> > +
> >
> > +DB      102,15,56,222,209
> >
> > +        movups  xmm1,XMMWORD[48+r11]
> >
> > +        pxor    xmm7,xmm9
> >
> > +
> >
> > +DB      102,15,56,222,208
> >
> > +        movups  xmm0,XMMWORD[64+r11]
> >
> > +        jmp     NEAR $L$ocb_dec_loop1
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$ocb_dec_loop1:
> >
> > +DB      102,15,56,222,209
> >
> > +        movups  xmm1,XMMWORD[rax*1+rcx]
> >
> > +        add     rax,32
> >
> > +
> >
> > +DB      102,15,56,222,208
> >
> > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> >
> > +        jnz     NEAR $L$ocb_dec_loop1
> >
> > +
> >
> > +DB      102,15,56,222,209
> >
> > +        movups  xmm1,XMMWORD[16+r11]
> >
> > +        mov     rax,r10
> >
> > +
> >
> > +DB      102,15,56,223,215
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +global  aesni_cbc_encrypt
> >
> > +
> >
> > +ALIGN   16
> >
> > +aesni_cbc_encrypt:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_aesni_cbc_encrypt:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +        mov     rcx,r9
> >
> > +        mov     r8,QWORD[40+rsp]
> >
> > +        mov     r9,QWORD[48+rsp]
> >
> > +
> >
> > +
> >
> > +
> >
> > +        test    rdx,rdx
> >
> > +        jz      NEAR $L$cbc_ret
> >
> > +
> >
> > +        mov     r10d,DWORD[240+rcx]
> >
> > +        mov     r11,rcx
> >
> > +        test    r9d,r9d
> >
> > +        jz      NEAR $L$cbc_decrypt
> >
> > +
> >
> > +        movups  xmm2,XMMWORD[r8]
> >
> > +        mov     eax,r10d
> >
> > +        cmp     rdx,16
> >
> > +        jb      NEAR $L$cbc_enc_tail
> >
> > +        sub     rdx,16
> >
> > +        jmp     NEAR $L$cbc_enc_loop
> >
> > +ALIGN   16
> >
> > +$L$cbc_enc_loop:
> >
> > +        movups  xmm3,XMMWORD[rdi]
> >
> > +        lea     rdi,[16+rdi]
> >
> > +
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        xorps   xmm3,xmm0
> >
> > +        lea     rcx,[32+rcx]
> >
> > +        xorps   xmm2,xmm3
> >
> > +$L$oop_enc1_15:
> >
> > +DB      102,15,56,220,209
> >
> > +        dec     eax
> >
> > +        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[rsi],xmm2
> >
> > +        lea     rsi,[16+rsi]
> >
> > +        sub     rdx,16
> >
> > +        jnc     NEAR $L$cbc_enc_loop
> >
> > +        add     rdx,16
> >
> > +        jnz     NEAR $L$cbc_enc_tail
> >
> > +        pxor    xmm0,xmm0
> >
> > +        pxor    xmm1,xmm1
> >
> > +        movups  XMMWORD[r8],xmm2
> >
> > +        pxor    xmm2,xmm2
> >
> > +        pxor    xmm3,xmm3
> >
> > +        jmp     NEAR $L$cbc_ret
> >
> > +
> >
> > +$L$cbc_enc_tail:
> >
> > +        mov     rcx,rdx
> >
> > +        xchg    rsi,rdi
> >
> > +        DD      0x9066A4F3
> >
> > +        mov     ecx,16
> >
> > +        sub     rcx,rdx
> >
> > +        xor     eax,eax
> >
> > +        DD      0x9066AAF3
> >
> > +        lea     rdi,[((-16))+rdi]
> >
> > +        mov     eax,r10d
> >
> > +        mov     rsi,rdi
> >
> > +        mov     rcx,r11
> >
> > +        xor     rdx,rdx
> >
> > +        jmp     NEAR $L$cbc_enc_loop
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$cbc_decrypt:
> >
> > +        cmp     rdx,16
> >
> > +        jne     NEAR $L$cbc_decrypt_bulk
> >
> > +
> >
> > +
> >
> > +
> >
> > +        movdqu  xmm2,XMMWORD[rdi]
> >
> > +        movdqu  xmm3,XMMWORD[r8]
> >
> > +        movdqa  xmm4,xmm2
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        lea     rcx,[32+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +$L$oop_dec1_16:
> >
> > +DB      102,15,56,222,209
> >
> > +        dec     r10d
> >
> > +        movups  xmm1,XMMWORD[rcx]
> >
> > +        lea     rcx,[16+rcx]
> >
> > +        jnz     NEAR $L$oop_dec1_16
> >
> > +DB      102,15,56,223,209
> >
> > +        pxor    xmm0,xmm0
> >
> > +        pxor    xmm1,xmm1
> >
> > +        movdqu  XMMWORD[r8],xmm4
> >
> > +        xorps   xmm2,xmm3
> >
> > +        pxor    xmm3,xmm3
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm2,xmm2
> >
> > +        jmp     NEAR $L$cbc_ret
> >
> > +ALIGN   16
> >
> > +$L$cbc_decrypt_bulk:
> >
> > +        lea     r11,[rsp]
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        sub     rsp,176
> >
> > +        and     rsp,-16
> >
> > +        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:
> >
> > +        mov     rbp,rcx
> >
> > +        movups  xmm10,XMMWORD[r8]
> >
> > +        mov     eax,r10d
> >
> > +        cmp     rdx,0x50
> >
> > +        jbe     NEAR $L$cbc_dec_tail
> >
> > +
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        movdqu  xmm2,XMMWORD[rdi]
> >
> > +        movdqu  xmm3,XMMWORD[16+rdi]
> >
> > +        movdqa  xmm11,xmm2
> >
> > +        movdqu  xmm4,XMMWORD[32+rdi]
> >
> > +        movdqa  xmm12,xmm3
> >
> > +        movdqu  xmm5,XMMWORD[48+rdi]
> >
> > +        movdqa  xmm13,xmm4
> >
> > +        movdqu  xmm6,XMMWORD[64+rdi]
> >
> > +        movdqa  xmm14,xmm5
> >
> > +        movdqu  xmm7,XMMWORD[80+rdi]
> >
> > +        movdqa  xmm15,xmm6
> >
> > +        mov     r9d,DWORD[((OPENSSL_ia32cap_P+4))]
> >
> > +        cmp     rdx,0x70
> >
> > +        jbe     NEAR $L$cbc_dec_six_or_seven
> >
> > +
> >
> > +        and     r9d,71303168
> >
> > +        sub     rdx,0x50
> >
> > +        cmp     r9d,4194304
> >
> > +        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[rsi],xmm9
> >
> > +        lea     rsi,[16+rsi]
> >
> > +$L$cbc_dec_loop8_enter:
> >
> > +        movdqu  xmm8,XMMWORD[96+rdi]
> >
> > +        pxor    xmm2,xmm0
> >
> > +        movdqu  xmm9,XMMWORD[112+rdi]
> >
> > +        pxor    xmm3,xmm0
> >
> > +        movups  xmm1,XMMWORD[((16-112))+rcx]
> >
> > +        pxor    xmm4,xmm0
> >
> > +        mov     rbp,-1
> >
> > +        cmp     rdx,0x70
> >
> > +        pxor    xmm5,xmm0
> >
> > +        pxor    xmm6,xmm0
> >
> > +        pxor    xmm7,xmm0
> >
> > +        pxor    xmm8,xmm0
> >
> > +
> >
> > +DB      102,15,56,222,209
> >
> > +        pxor    xmm9,xmm0
> >
> > +        movups  xmm0,XMMWORD[((32-112))+rcx]
> >
> > +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
> >
> > +DB      102,68,15,56,222,193
> >
> > +        adc     rbp,0
> >
> > +        and     rbp,128
> >
> > +DB      102,68,15,56,222,201
> >
> > +        add     rbp,rdi
> >
> > +        movups  xmm1,XMMWORD[((48-112))+rcx]
> >
> > +DB      102,15,56,222,208
> >
> > +DB      102,15,56,222,216
> >
> > +DB      102,15,56,222,224
> >
> > +DB      102,15,56,222,232
> >
> > +DB      102,15,56,222,240
> >
> > +DB      102,15,56,222,248
> >
> > +DB      102,68,15,56,222,192
> >
> > +DB      102,68,15,56,222,200
> >
> > +        movups  xmm0,XMMWORD[((64-112))+rcx]
> >
> > +        nop
> >
> > +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
> >
> > +DB      102,68,15,56,222,193
> >
> > +DB      102,68,15,56,222,201
> >
> > +        movups  xmm1,XMMWORD[((80-112))+rcx]
> >
> > +        nop
> >
> > +DB      102,15,56,222,208
> >
> > +DB      102,15,56,222,216
> >
> > +DB      102,15,56,222,224
> >
> > +DB      102,15,56,222,232
> >
> > +DB      102,15,56,222,240
> >
> > +DB      102,15,56,222,248
> >
> > +DB      102,68,15,56,222,192
> >
> > +DB      102,68,15,56,222,200
> >
> > +        movups  xmm0,XMMWORD[((96-112))+rcx]
> >
> > +        nop
> >
> > +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
> >
> > +DB      102,68,15,56,222,193
> >
> > +DB      102,68,15,56,222,201
> >
> > +        movups  xmm1,XMMWORD[((112-112))+rcx]
> >
> > +        nop
> >
> > +DB      102,15,56,222,208
> >
> > +DB      102,15,56,222,216
> >
> > +DB      102,15,56,222,224
> >
> > +DB      102,15,56,222,232
> >
> > +DB      102,15,56,222,240
> >
> > +DB      102,15,56,222,248
> >
> > +DB      102,68,15,56,222,192
> >
> > +DB      102,68,15,56,222,200
> >
> > +        movups  xmm0,XMMWORD[((128-112))+rcx]
> >
> > +        nop
> >
> > +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
> >
> > +DB      102,68,15,56,222,193
> >
> > +DB      102,68,15,56,222,201
> >
> > +        movups  xmm1,XMMWORD[((144-112))+rcx]
> >
> > +        cmp     eax,11
> >
> > +DB      102,15,56,222,208
> >
> > +DB      102,15,56,222,216
> >
> > +DB      102,15,56,222,224
> >
> > +DB      102,15,56,222,232
> >
> > +DB      102,15,56,222,240
> >
> > +DB      102,15,56,222,248
> >
> > +DB      102,68,15,56,222,192
> >
> > +DB      102,68,15,56,222,200
> >
> > +        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
> >
> > +DB      102,15,56,222,233
> >
> > +DB      102,15,56,222,241
> >
> > +DB      102,15,56,222,249
> >
> > +DB      102,68,15,56,222,193
> >
> > +DB      102,68,15,56,222,201
> >
> > +        movups  xmm1,XMMWORD[((176-112))+rcx]
> >
> > +        nop
> >
> > +DB      102,15,56,222,208
> >
> > +DB      102,15,56,222,216
> >
> > +DB      102,15,56,222,224
> >
> > +DB      102,15,56,222,232
> >
> > +DB      102,15,56,222,240
> >
> > +DB      102,15,56,222,248
> >
> > +DB      102,68,15,56,222,192
> >
> > +DB      102,68,15,56,222,200
> >
> > +        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
> >
> > +DB      102,15,56,222,233
> >
> > +DB      102,15,56,222,241
> >
> > +DB      102,15,56,222,249
> >
> > +DB      102,68,15,56,222,193
> >
> > +DB      102,68,15,56,222,201
> >
> > +        movups  xmm1,XMMWORD[((208-112))+rcx]
> >
> > +        nop
> >
> > +DB      102,15,56,222,208
> >
> > +DB      102,15,56,222,216
> >
> > +DB      102,15,56,222,224
> >
> > +DB      102,15,56,222,232
> >
> > +DB      102,15,56,222,240
> >
> > +DB      102,15,56,222,248
> >
> > +DB      102,68,15,56,222,192
> >
> > +DB      102,68,15,56,222,200
> >
> > +        movups  xmm0,XMMWORD[((224-112))+rcx]
> >
> > +        jmp     NEAR $L$cbc_dec_done
> >
> > +ALIGN   16
> >
> > +$L$cbc_dec_done:
> >
> > +DB      102,15,56,222,209
> >
> > +DB      102,15,56,222,217
> >
> > +        pxor    xmm10,xmm0
> >
> > +        pxor    xmm11,xmm0
> >
> > +DB      102,15,56,222,225
> >
> > +DB      102,15,56,222,233
> >
> > +        pxor    xmm12,xmm0
> >
> > +        pxor    xmm13,xmm0
> >
> > +DB      102,15,56,222,241
> >
> > +DB      102,15,56,222,249
> >
> > +        pxor    xmm14,xmm0
> >
> > +        pxor    xmm15,xmm0
> >
> > +DB      102,68,15,56,222,193
> >
> > +DB      102,68,15,56,222,201
> >
> > +        movdqu  xmm1,XMMWORD[80+rdi]
> >
> > +
> >
> > +DB      102,65,15,56,223,210
> >
> > +        movdqu  xmm10,XMMWORD[96+rdi]
> >
> > +        pxor    xmm1,xmm0
> >
> > +DB      102,65,15,56,223,219
> >
> > +        pxor    xmm10,xmm0
> >
> > +        movdqu  xmm0,XMMWORD[112+rdi]
> >
> > +DB      102,65,15,56,223,228
> >
> > +        lea     rdi,[128+rdi]
> >
> > +        movdqu  xmm11,XMMWORD[rbp]
> >
> > +DB      102,65,15,56,223,237
> >
> > +DB      102,65,15,56,223,246
> >
> > +        movdqu  xmm12,XMMWORD[16+rbp]
> >
> > +        movdqu  xmm13,XMMWORD[32+rbp]
> >
> > +DB      102,65,15,56,223,255
> >
> > +DB      102,68,15,56,223,193
> >
> > +        movdqu  xmm14,XMMWORD[48+rbp]
> >
> > +        movdqu  xmm15,XMMWORD[64+rbp]
> >
> > +DB      102,69,15,56,223,202
> >
> > +        movdqa  xmm10,xmm0
> >
> > +        movdqu  xmm1,XMMWORD[80+rbp]
> >
> > +        movups  xmm0,XMMWORD[((-112))+rcx]
> >
> > +
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        movdqa  xmm2,xmm11
> >
> > +        movups  XMMWORD[16+rsi],xmm3
> >
> > +        movdqa  xmm3,xmm12
> >
> > +        movups  XMMWORD[32+rsi],xmm4
> >
> > +        movdqa  xmm4,xmm13
> >
> > +        movups  XMMWORD[48+rsi],xmm5
> >
> > +        movdqa  xmm5,xmm14
> >
> > +        movups  XMMWORD[64+rsi],xmm6
> >
> > +        movdqa  xmm6,xmm15
> >
> > +        movups  XMMWORD[80+rsi],xmm7
> >
> > +        movdqa  xmm7,xmm1
> >
> > +        movups  XMMWORD[96+rsi],xmm8
> >
> > +        lea     rsi,[112+rsi]
> >
> > +
> >
> > +        sub     rdx,0x80
> >
> > +        ja      NEAR $L$cbc_dec_loop8
> >
> > +
> >
> > +        movaps  xmm2,xmm9
> >
> > +        lea     rcx,[((-112))+rcx]
> >
> > +        add     rdx,0x70
> >
> > +        jle     NEAR $L$cbc_dec_clear_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,0x60
> >
> > +        ja      NEAR $L$cbc_dec_seven
> >
> > +
> >
> > +        movaps  xmm8,xmm7
> >
> > +        call    _aesni_decrypt6
> >
> > +        pxor    xmm2,xmm10
> >
> > +        movaps  xmm10,xmm8
> >
> > +        pxor    xmm3,xmm11
> >
> > +        movdqu  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm4,xmm12
> >
> > +        movdqu  XMMWORD[16+rsi],xmm3
> >
> > +        pxor    xmm3,xmm3
> >
> > +        pxor    xmm5,xmm13
> >
> > +        movdqu  XMMWORD[32+rsi],xmm4
> >
> > +        pxor    xmm4,xmm4
> >
> > +        pxor    xmm6,xmm14
> >
> > +        movdqu  XMMWORD[48+rsi],xmm5
> >
> > +        pxor    xmm5,xmm5
> >
> > +        pxor    xmm7,xmm15
> >
> > +        movdqu  XMMWORD[64+rsi],xmm6
> >
> > +        pxor    xmm6,xmm6
> >
> > +        lea     rsi,[80+rsi]
> >
> > +        movdqa  xmm2,xmm7
> >
> > +        pxor    xmm7,xmm7
> >
> > +        jmp     NEAR $L$cbc_dec_tail_collected
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$cbc_dec_seven:
> >
> > +        movups  xmm8,XMMWORD[96+rdi]
> >
> > +        xorps   xmm9,xmm9
> >
> > +        call    _aesni_decrypt8
> >
> > +        movups  xmm9,XMMWORD[80+rdi]
> >
> > +        pxor    xmm2,xmm10
> >
> > +        movups  xmm10,XMMWORD[96+rdi]
> >
> > +        pxor    xmm3,xmm11
> >
> > +        movdqu  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm4,xmm12
> >
> > +        movdqu  XMMWORD[16+rsi],xmm3
> >
> > +        pxor    xmm3,xmm3
> >
> > +        pxor    xmm5,xmm13
> >
> > +        movdqu  XMMWORD[32+rsi],xmm4
> >
> > +        pxor    xmm4,xmm4
> >
> > +        pxor    xmm6,xmm14
> >
> > +        movdqu  XMMWORD[48+rsi],xmm5
> >
> > +        pxor    xmm5,xmm5
> >
> > +        pxor    xmm7,xmm15
> >
> > +        movdqu  XMMWORD[64+rsi],xmm6
> >
> > +        pxor    xmm6,xmm6
> >
> > +        pxor    xmm8,xmm9
> >
> > +        movdqu  XMMWORD[80+rsi],xmm7
> >
> > +        pxor    xmm7,xmm7
> >
> > +        lea     rsi,[96+rsi]
> >
> > +        movdqa  xmm2,xmm8
> >
> > +        pxor    xmm8,xmm8
> >
> > +        pxor    xmm9,xmm9
> >
> > +        jmp     NEAR $L$cbc_dec_tail_collected
> >
> > +
> >
> > +ALIGN   16
> >
> > +$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[32+rdi]
> >
> > +        movdqa  xmm12,xmm3
> >
> > +        movdqu  xmm5,XMMWORD[48+rdi]
> >
> > +        movdqa  xmm13,xmm4
> >
> > +        movdqu  xmm6,XMMWORD[64+rdi]
> >
> > +        movdqa  xmm14,xmm5
> >
> > +        movdqu  xmm7,XMMWORD[80+rdi]
> >
> > +        movdqa  xmm15,xmm6
> >
> > +$L$cbc_dec_loop6_enter:
> >
> > +        lea     rdi,[96+rdi]
> >
> > +        movdqa  xmm8,xmm7
> >
> > +
> >
> > +        call    _aesni_decrypt6
> >
> > +
> >
> > +        pxor    xmm2,xmm10
> >
> > +        movdqa  xmm10,xmm8
> >
> > +        pxor    xmm3,xmm11
> >
> > +        movdqu  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm4,xmm12
> >
> > +        movdqu  XMMWORD[16+rsi],xmm3
> >
> > +        pxor    xmm5,xmm13
> >
> > +        movdqu  XMMWORD[32+rsi],xmm4
> >
> > +        pxor    xmm6,xmm14
> >
> > +        mov     rcx,rbp
> >
> > +        movdqu  XMMWORD[48+rsi],xmm5
> >
> > +        pxor    xmm7,xmm15
> >
> > +        mov     eax,r10d
> >
> > +        movdqu  XMMWORD[64+rsi],xmm6
> >
> > +        lea     rsi,[80+rsi]
> >
> > +        sub     rdx,0x60
> >
> > +        ja      NEAR $L$cbc_dec_loop6
> >
> > +
> >
> > +        movdqa  xmm2,xmm7
> >
> > +        add     rdx,0x50
> >
> > +        jle     NEAR $L$cbc_dec_clear_tail_collected
> >
> > +        movups  XMMWORD[rsi],xmm7
> >
> > +        lea     rsi,[16+rsi]
> >
> > +
> >
> > +$L$cbc_dec_tail:
> >
> > +        movups  xmm2,XMMWORD[rdi]
> >
> > +        sub     rdx,0x10
> >
> > +        jbe     NEAR $L$cbc_dec_one
> >
> > +
> >
> > +        movups  xmm3,XMMWORD[16+rdi]
> >
> > +        movaps  xmm11,xmm2
> >
> > +        sub     rdx,0x10
> >
> > +        jbe     NEAR $L$cbc_dec_two
> >
> > +
> >
> > +        movups  xmm4,XMMWORD[32+rdi]
> >
> > +        movaps  xmm12,xmm3
> >
> > +        sub     rdx,0x10
> >
> > +        jbe     NEAR $L$cbc_dec_three
> >
> > +
> >
> > +        movups  xmm5,XMMWORD[48+rdi]
> >
> > +        movaps  xmm13,xmm4
> >
> > +        sub     rdx,0x10
> >
> > +        jbe     NEAR $L$cbc_dec_four
> >
> > +
> >
> > +        movups  xmm6,XMMWORD[64+rdi]
> >
> > +        movaps  xmm14,xmm5
> >
> > +        movaps  xmm15,xmm6
> >
> > +        xorps   xmm7,xmm7
> >
> > +        call    _aesni_decrypt6
> >
> > +        pxor    xmm2,xmm10
> >
> > +        movaps  xmm10,xmm15
> >
> > +        pxor    xmm3,xmm11
> >
> > +        movdqu  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm4,xmm12
> >
> > +        movdqu  XMMWORD[16+rsi],xmm3
> >
> > +        pxor    xmm3,xmm3
> >
> > +        pxor    xmm5,xmm13
> >
> > +        movdqu  XMMWORD[32+rsi],xmm4
> >
> > +        pxor    xmm4,xmm4
> >
> > +        pxor    xmm6,xmm14
> >
> > +        movdqu  XMMWORD[48+rsi],xmm5
> >
> > +        pxor    xmm5,xmm5
> >
> > +        lea     rsi,[64+rsi]
> >
> > +        movdqa  xmm2,xmm6
> >
> > +        pxor    xmm6,xmm6
> >
> > +        pxor    xmm7,xmm7
> >
> > +        sub     rdx,0x10
> >
> > +        jmp     NEAR $L$cbc_dec_tail_collected
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$cbc_dec_one:
> >
> > +        movaps  xmm11,xmm2
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        movups  xmm1,XMMWORD[16+rcx]
> >
> > +        lea     rcx,[32+rcx]
> >
> > +        xorps   xmm2,xmm0
> >
> > +$L$oop_dec1_17:
> >
> > +DB      102,15,56,222,209
> >
> > +        dec     eax
> >
> > +        movups  xmm1,XMMWORD[rcx]
> >
> > +        lea     rcx,[16+rcx]
> >
> > +        jnz     NEAR $L$oop_dec1_17
> >
> > +DB      102,15,56,223,209
> >
> > +        xorps   xmm2,xmm10
> >
> > +        movaps  xmm10,xmm11
> >
> > +        jmp     NEAR $L$cbc_dec_tail_collected
> >
> > +ALIGN   16
> >
> > +$L$cbc_dec_two:
> >
> > +        movaps  xmm12,xmm3
> >
> > +        call    _aesni_decrypt2
> >
> > +        pxor    xmm2,xmm10
> >
> > +        movaps  xmm10,xmm12
> >
> > +        pxor    xmm3,xmm11
> >
> > +        movdqu  XMMWORD[rsi],xmm2
> >
> > +        movdqa  xmm2,xmm3
> >
> > +        pxor    xmm3,xmm3
> >
> > +        lea     rsi,[16+rsi]
> >
> > +        jmp     NEAR $L$cbc_dec_tail_collected
> >
> > +ALIGN   16
> >
> > +$L$cbc_dec_three:
> >
> > +        movaps  xmm13,xmm4
> >
> > +        call    _aesni_decrypt3
> >
> > +        pxor    xmm2,xmm10
> >
> > +        movaps  xmm10,xmm13
> >
> > +        pxor    xmm3,xmm11
> >
> > +        movdqu  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm4,xmm12
> >
> > +        movdqu  XMMWORD[16+rsi],xmm3
> >
> > +        pxor    xmm3,xmm3
> >
> > +        movdqa  xmm2,xmm4
> >
> > +        pxor    xmm4,xmm4
> >
> > +        lea     rsi,[32+rsi]
> >
> > +        jmp     NEAR $L$cbc_dec_tail_collected
> >
> > +ALIGN   16
> >
> > +$L$cbc_dec_four:
> >
> > +        movaps  xmm14,xmm5
> >
> > +        call    _aesni_decrypt4
> >
> > +        pxor    xmm2,xmm10
> >
> > +        movaps  xmm10,xmm14
> >
> > +        pxor    xmm3,xmm11
> >
> > +        movdqu  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm4,xmm12
> >
> > +        movdqu  XMMWORD[16+rsi],xmm3
> >
> > +        pxor    xmm3,xmm3
> >
> > +        pxor    xmm5,xmm13
> >
> > +        movdqu  XMMWORD[32+rsi],xmm4
> >
> > +        pxor    xmm4,xmm4
> >
> > +        movdqa  xmm2,xmm5
> >
> > +        pxor    xmm5,xmm5
> >
> > +        lea     rsi,[48+rsi]
> >
> > +        jmp     NEAR $L$cbc_dec_tail_collected
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$cbc_dec_clear_tail_collected:
> >
> > +        pxor    xmm3,xmm3
> >
> > +        pxor    xmm4,xmm4
> >
> > +        pxor    xmm5,xmm5
> >
> > +$L$cbc_dec_tail_collected:
> >
> > +        movups  XMMWORD[r8],xmm10
> >
> > +        and     rdx,15
> >
> > +        jnz     NEAR $L$cbc_dec_tail_partial
> >
> > +        movups  XMMWORD[rsi],xmm2
> >
> > +        pxor    xmm2,xmm2
> >
> > +        jmp     NEAR $L$cbc_dec_ret
> >
> > +ALIGN   16
> >
> > +$L$cbc_dec_tail_partial:
> >
> > +        movaps  XMMWORD[rsp],xmm2
> >
> > +        pxor    xmm2,xmm2
> >
> > +        mov     rcx,16
> >
> > +        mov     rdi,rsi
> >
> > +        sub     rcx,rdx
> >
> > +        lea     rsi,[rsp]
> >
> > +        DD      0x9066A4F3
> >
> > +        movdqa  XMMWORD[rsp],xmm2
> >
> > +
> >
> > +$L$cbc_dec_ret:
> >
> > +        xorps   xmm0,xmm0
> >
> > +        pxor    xmm1,xmm1
> >
> > +        movaps  xmm6,XMMWORD[16+rsp]
> >
> > +        movaps  XMMWORD[16+rsp],xmm0
> >
> > +        movaps  xmm7,XMMWORD[32+rsp]
> >
> > +        movaps  XMMWORD[32+rsp],xmm0
> >
> > +        movaps  xmm8,XMMWORD[48+rsp]
> >
> > +        movaps  XMMWORD[48+rsp],xmm0
> >
> > +        movaps  xmm9,XMMWORD[64+rsp]
> >
> > +        movaps  XMMWORD[64+rsp],xmm0
> >
> > +        movaps  xmm10,XMMWORD[80+rsp]
> >
> > +        movaps  XMMWORD[80+rsp],xmm0
> >
> > +        movaps  xmm11,XMMWORD[96+rsp]
> >
> > +        movaps  XMMWORD[96+rsp],xmm0
> >
> > +        movaps  xmm12,XMMWORD[112+rsp]
> >
> > +        movaps  XMMWORD[112+rsp],xmm0
> >
> > +        movaps  xmm13,XMMWORD[128+rsp]
> >
> > +        movaps  XMMWORD[128+rsp],xmm0
> >
> > +        movaps  xmm14,XMMWORD[144+rsp]
> >
> > +        movaps  XMMWORD[144+rsp],xmm0
> >
> > +        movaps  xmm15,XMMWORD[160+rsp]
> >
> > +        movaps  XMMWORD[160+rsp],xmm0
> >
> > +        mov     rbp,QWORD[((-8))+r11]
> >
> > +
> >
> > +        lea     rsp,[r11]
> >
> > +
> >
> > +$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:
> >
> > +global  aesni_set_decrypt_key
> >
> > +
> >
> > +ALIGN   16
> >
> > +aesni_set_decrypt_key:
> >
> > +
> >
> > +DB      0x48,0x83,0xEC,0x08
> >
> > +
> >
> > +        call    __aesni_set_encrypt_key
> >
> > +        shl     edx,4
> >
> > +        test    eax,eax
> >
> > +        jnz     NEAR $L$dec_key_ret
> >
> > +        lea     rcx,[16+rdx*1+r8]
> >
> > +
> >
> > +        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[r8]
> >
> > +        movups  xmm1,XMMWORD[rcx]
> >
> > +DB      102,15,56,219,192
> >
> > +DB      102,15,56,219,201
> >
> > +        lea     r8,[16+r8]
> >
> > +        lea     rcx,[((-16))+rcx]
> >
> > +        movups  XMMWORD[16+rcx],xmm0
> >
> > +        movups  XMMWORD[(-16)+r8],xmm1
> >
> > +        cmp     rcx,r8
> >
> > +        ja      NEAR $L$dec_key_inverse
> >
> > +
> >
> > +        movups  xmm0,XMMWORD[r8]
> >
> > +DB      102,15,56,219,192
> >
> > +        pxor    xmm1,xmm1
> >
> > +        movups  XMMWORD[rcx],xmm0
> >
> > +        pxor    xmm0,xmm0
> >
> > +$L$dec_key_ret:
> >
> > +        add     rsp,8
> >
> > +
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +$L$SEH_end_set_decrypt_key:
> >
> > +
> >
> > +global  aesni_set_encrypt_key
> >
> > +
> >
> > +ALIGN   16
> >
> > +aesni_set_encrypt_key:
> >
> > +__aesni_set_encrypt_key:
> >
> > +
> >
> > +DB      0x48,0x83,0xEC,0x08
> >
> > +
> >
> > +        mov     rax,-1
> >
> > +        test    rcx,rcx
> >
> > +        jz      NEAR $L$enc_key_ret
> >
> > +        test    r8,r8
> >
> > +        jz      NEAR $L$enc_key_ret
> >
> > +
> >
> > +        mov     r10d,268437504
> >
> > +        movups  xmm0,XMMWORD[rcx]
> >
> > +        xorps   xmm4,xmm4
> >
> > +        and     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
> >
> > +        lea     rax,[16+r8]
> >
> > +        cmp     edx,256
> >
> > +        je      NEAR $L$14rounds
> >
> > +        cmp     edx,192
> >
> > +        je      NEAR $L$12rounds
> >
> > +        cmp     edx,128
> >
> > +        jne     NEAR $L$bad_keybits
> >
> > +
> >
> > +$L$10rounds:
> >
> > +        mov     edx,9
> >
> > +        cmp     r10d,268435456
> >
> > +        je      NEAR $L$10rounds_alt
> >
> > +
> >
> > +        movups  XMMWORD[r8],xmm0
> >
> > +DB      102,15,58,223,200,1
> >
> > +        call    $L$key_expansion_128_cold
> >
> > +DB      102,15,58,223,200,2
> >
> > +        call    $L$key_expansion_128
> >
> > +DB      102,15,58,223,200,4
> >
> > +        call    $L$key_expansion_128
> >
> > +DB      102,15,58,223,200,8
> >
> > +        call    $L$key_expansion_128
> >
> > +DB      102,15,58,223,200,16
> >
> > +        call    $L$key_expansion_128
> >
> > +DB      102,15,58,223,200,32
> >
> > +        call    $L$key_expansion_128
> >
> > +DB      102,15,58,223,200,64
> >
> > +        call    $L$key_expansion_128
> >
> > +DB      102,15,58,223,200,128
> >
> > +        call    $L$key_expansion_128
> >
> > +DB      102,15,58,223,200,27
> >
> > +        call    $L$key_expansion_128
> >
> > +DB      102,15,58,223,200,54
> >
> > +        call    $L$key_expansion_128
> >
> > +        movups  XMMWORD[rax],xmm0
> >
> > +        mov     DWORD[80+rax],edx
> >
> > +        xor     eax,eax
> >
> > +        jmp     NEAR $L$enc_key_ret
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$10rounds_alt:
> >
> > +        movdqa  xmm5,XMMWORD[$L$key_rotate]
> >
> > +        mov     r10d,8
> >
> > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> >
> > +        movdqa  xmm2,xmm0
> >
> > +        movdqu  XMMWORD[r8],xmm0
> >
> > +        jmp     NEAR $L$oop_key128
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$oop_key128:
> >
> > +DB      102,15,56,0,197
> >
> > +DB      102,15,56,221,196
> >
> > +        pslld   xmm4,1
> >
> > +        lea     rax,[16+rax]
> >
> > +
> >
> > +        movdqa  xmm3,xmm2
> >
> > +        pslldq  xmm2,4
> >
> > +        pxor    xmm3,xmm2
> >
> > +        pslldq  xmm2,4
> >
> > +        pxor    xmm3,xmm2
> >
> > +        pslldq  xmm2,4
> >
> > +        pxor    xmm2,xmm3
> >
> > +
> >
> > +        pxor    xmm0,xmm2
> >
> > +        movdqu  XMMWORD[(-16)+rax],xmm0
> >
> > +        movdqa  xmm2,xmm0
> >
> > +
> >
> > +        dec     r10d
> >
> > +        jnz     NEAR $L$oop_key128
> >
> > +
> >
> > +        movdqa  xmm4,XMMWORD[$L$key_rcon1b]
> >
> > +
> >
> > +DB      102,15,56,0,197
> >
> > +DB      102,15,56,221,196
> >
> > +        pslld   xmm4,1
> >
> > +
> >
> > +        movdqa  xmm3,xmm2
> >
> > +        pslldq  xmm2,4
> >
> > +        pxor    xmm3,xmm2
> >
> > +        pslldq  xmm2,4
> >
> > +        pxor    xmm3,xmm2
> >
> > +        pslldq  xmm2,4
> >
> > +        pxor    xmm2,xmm3
> >
> > +
> >
> > +        pxor    xmm0,xmm2
> >
> > +        movdqu  XMMWORD[rax],xmm0
> >
> > +
> >
> > +        movdqa  xmm2,xmm0
> >
> > +DB      102,15,56,0,197
> >
> > +DB      102,15,56,221,196
> >
> > +
> >
> > +        movdqa  xmm3,xmm2
> >
> > +        pslldq  xmm2,4
> >
> > +        pxor    xmm3,xmm2
> >
> > +        pslldq  xmm2,4
> >
> > +        pxor    xmm3,xmm2
> >
> > +        pslldq  xmm2,4
> >
> > +        pxor    xmm2,xmm3
> >
> > +
> >
> > +        pxor    xmm0,xmm2
> >
> > +        movdqu  XMMWORD[16+rax],xmm0
> >
> > +
> >
> > +        mov     DWORD[96+rax],edx
> >
> > +        xor     eax,eax
> >
> > +        jmp     NEAR $L$enc_key_ret
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$12rounds:
> >
> > +        movq    xmm2,QWORD[16+rcx]
> >
> > +        mov     edx,11
> >
> > +        cmp     r10d,268435456
> >
> > +        je      NEAR $L$12rounds_alt
> >
> > +
> >
> > +        movups  XMMWORD[r8],xmm0
> >
> > +DB      102,15,58,223,202,1
> >
> > +        call    $L$key_expansion_192a_cold
> >
> > +DB      102,15,58,223,202,2
> >
> > +        call    $L$key_expansion_192b
> >
> > +DB      102,15,58,223,202,4
> >
> > +        call    $L$key_expansion_192a
> >
> > +DB      102,15,58,223,202,8
> >
> > +        call    $L$key_expansion_192b
> >
> > +DB      102,15,58,223,202,16
> >
> > +        call    $L$key_expansion_192a
> >
> > +DB      102,15,58,223,202,32
> >
> > +        call    $L$key_expansion_192b
> >
> > +DB      102,15,58,223,202,64
> >
> > +        call    $L$key_expansion_192a
> >
> > +DB      102,15,58,223,202,128
> >
> > +        call    $L$key_expansion_192b
> >
> > +        movups  XMMWORD[rax],xmm0
> >
> > +        mov     DWORD[48+rax],edx
> >
> > +        xor     rax,rax
> >
> > +        jmp     NEAR $L$enc_key_ret
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$12rounds_alt:
> >
> > +        movdqa  xmm5,XMMWORD[$L$key_rotate192]
> >
> > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> >
> > +        mov     r10d,8
> >
> > +        movdqu  XMMWORD[r8],xmm0
> >
> > +        jmp     NEAR $L$oop_key192
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$oop_key192:
> >
> > +        movq    QWORD[rax],xmm2
> >
> > +        movdqa  xmm1,xmm2
> >
> > +DB      102,15,56,0,213
> >
> > +DB      102,15,56,221,212
> >
> > +        pslld   xmm4,1
> >
> > +        lea     rax,[24+rax]
> >
> > +
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        pslldq  xmm0,4
> >
> > +        pxor    xmm3,xmm0
> >
> > +        pslldq  xmm0,4
> >
> > +        pxor    xmm3,xmm0
> >
> > +        pslldq  xmm0,4
> >
> > +        pxor    xmm0,xmm3
> >
> > +
> >
> > +        pshufd  xmm3,xmm0,0xff
> >
> > +        pxor    xmm3,xmm1
> >
> > +        pslldq  xmm1,4
> >
> > +        pxor    xmm3,xmm1
> >
> > +
> >
> > +        pxor    xmm0,xmm2
> >
> > +        pxor    xmm2,xmm3
> >
> > +        movdqu  XMMWORD[(-16)+rax],xmm0
> >
> > +
> >
> > +        dec     r10d
> >
> > +        jnz     NEAR $L$oop_key192
> >
> > +
> >
> > +        mov     DWORD[32+rax],edx
> >
> > +        xor     eax,eax
> >
> > +        jmp     NEAR $L$enc_key_ret
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$14rounds:
> >
> > +        movups  xmm2,XMMWORD[16+rcx]
> >
> > +        mov     edx,13
> >
> > +        lea     rax,[16+rax]
> >
> > +        cmp     r10d,268435456
> >
> > +        je      NEAR $L$14rounds_alt
> >
> > +
> >
> > +        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
> >
> > +        call    $L$key_expansion_256b
> >
> > +DB      102,15,58,223,202,2
> >
> > +        call    $L$key_expansion_256a
> >
> > +DB      102,15,58,223,200,2
> >
> > +        call    $L$key_expansion_256b
> >
> > +DB      102,15,58,223,202,4
> >
> > +        call    $L$key_expansion_256a
> >
> > +DB      102,15,58,223,200,4
> >
> > +        call    $L$key_expansion_256b
> >
> > +DB      102,15,58,223,202,8
> >
> > +        call    $L$key_expansion_256a
> >
> > +DB      102,15,58,223,200,8
> >
> > +        call    $L$key_expansion_256b
> >
> > +DB      102,15,58,223,202,16
> >
> > +        call    $L$key_expansion_256a
> >
> > +DB      102,15,58,223,200,16
> >
> > +        call    $L$key_expansion_256b
> >
> > +DB      102,15,58,223,202,32
> >
> > +        call    $L$key_expansion_256a
> >
> > +DB      102,15,58,223,200,32
> >
> > +        call    $L$key_expansion_256b
> >
> > +DB      102,15,58,223,202,64
> >
> > +        call    $L$key_expansion_256a
> >
> > +        movups  XMMWORD[rax],xmm0
> >
> > +        mov     DWORD[16+rax],edx
> >
> > +        xor     rax,rax
> >
> > +        jmp     NEAR $L$enc_key_ret
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$14rounds_alt:
> >
> > +        movdqa  xmm5,XMMWORD[$L$key_rotate]
> >
> > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> >
> > +        mov     r10d,7
> >
> > +        movdqu  XMMWORD[r8],xmm0
> >
> > +        movdqa  xmm1,xmm2
> >
> > +        movdqu  XMMWORD[16+r8],xmm2
> >
> > +        jmp     NEAR $L$oop_key256
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$oop_key256:
> >
> > +DB      102,15,56,0,213
> >
> > +DB      102,15,56,221,212
> >
> > +
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        pslldq  xmm0,4
> >
> > +        pxor    xmm3,xmm0
> >
> > +        pslldq  xmm0,4
> >
> > +        pxor    xmm3,xmm0
> >
> > +        pslldq  xmm0,4
> >
> > +        pxor    xmm0,xmm3
> >
> > +        pslld   xmm4,1
> >
> > +
> >
> > +        pxor    xmm0,xmm2
> >
> > +        movdqu  XMMWORD[rax],xmm0
> >
> > +
> >
> > +        dec     r10d
> >
> > +        jz      NEAR $L$done_key256
> >
> > +
> >
> > +        pshufd  xmm2,xmm0,0xff
> >
> > +        pxor    xmm3,xmm3
> >
> > +DB      102,15,56,221,211
> >
> > +
> >
> > +        movdqa  xmm3,xmm1
> >
> > +        pslldq  xmm1,4
> >
> > +        pxor    xmm3,xmm1
> >
> > +        pslldq  xmm1,4
> >
> > +        pxor    xmm3,xmm1
> >
> > +        pslldq  xmm1,4
> >
> > +        pxor    xmm1,xmm3
> >
> > +
> >
> > +        pxor    xmm2,xmm1
> >
> > +        movdqu  XMMWORD[16+rax],xmm2
> >
> > +        lea     rax,[32+rax]
> >
> > +        movdqa  xmm1,xmm2
> >
> > +
> >
> > +        jmp     NEAR $L$oop_key256
> >
> > +
> >
> > +$L$done_key256:
> >
> > +        mov     DWORD[16+rax],edx
> >
> > +        xor     eax,eax
> >
> > +        jmp     NEAR $L$enc_key_ret
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$bad_keybits:
> >
> > +        mov     rax,-2
> >
> > +$L$enc_key_ret:
> >
> > +        pxor    xmm0,xmm0
> >
> > +        pxor    xmm1,xmm1
> >
> > +        pxor    xmm2,xmm2
> >
> > +        pxor    xmm3,xmm3
> >
> > +        pxor    xmm4,xmm4
> >
> > +        pxor    xmm5,xmm5
> >
> > +        add     rsp,8
> >
> > +
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +$L$SEH_end_set_encrypt_key:
> >
> > +
> >
> > +ALIGN   16
> >
> > +$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
> >
> > +        xorps   xmm0,xmm4
> >
> > +        shufps  xmm1,xmm1,255
> >
> > +        xorps   xmm0,xmm1
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +ALIGN   16
> >
> > +$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:
> >
> > +        shufps  xmm4,xmm0,16
> >
> > +        movdqa  xmm3,xmm2
> >
> > +        xorps   xmm0,xmm4
> >
> > +        shufps  xmm4,xmm0,140
> >
> > +        pslldq  xmm3,4
> >
> > +        xorps   xmm0,xmm4
> >
> > +        pshufd  xmm1,xmm1,85
> >
> > +        pxor    xmm2,xmm3
> >
> > +        pxor    xmm0,xmm1
> >
> > +        pshufd  xmm3,xmm0,255
> >
> > +        pxor    xmm2,xmm3
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$key_expansion_192b:
> >
> > +        movaps  xmm3,xmm0
> >
> > +        shufps  xmm5,xmm0,68
> >
> > +        movups  XMMWORD[rax],xmm5
> >
> > +        shufps  xmm3,xmm2,78
> >
> > +        movups  XMMWORD[16+rax],xmm3
> >
> > +        lea     rax,[32+rax]
> >
> > +        jmp     NEAR $L$key_expansion_192b_warm
> >
> > +
> >
> > +ALIGN   16
> >
> > +$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
> >
> > +        xorps   xmm0,xmm4
> >
> > +        shufps  xmm1,xmm1,255
> >
> > +        xorps   xmm0,xmm1
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$key_expansion_256b:
> >
> > +        movups  XMMWORD[rax],xmm0
> >
> > +        lea     rax,[16+rax]
> >
> > +
> >
> > +        shufps  xmm4,xmm2,16
> >
> > +        xorps   xmm2,xmm4
> >
> > +        shufps  xmm4,xmm2,140
> >
> > +        xorps   xmm2,xmm4
> >
> > +        shufps  xmm1,xmm1,170
> >
> > +        xorps   xmm2,xmm1
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   64
> >
> > +$L$bswap_mask:
> >
> > +DB      15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
> >
> > +$L$increment32:
> >
> > +        DD      6,6,6,0
> >
> > +$L$increment64:
> >
> > +        DD      1,0,0,0
> >
> > +$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
> >
> > +$L$key_rotate:
> >
> > +        DD      0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
> >
> > +$L$key_rotate192:
> >
> > +        DD      0x04070605,0x04070605,0x04070605,0x04070605
> >
> > +$L$key_rcon1:
> >
> > +        DD      1,1,1,1
> >
> > +$L$key_rcon1b:
> >
> > +        DD      0x1b,0x1b,0x1b,0x1b
> >
> > +
> >
> > +DB      65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
> >
> > +DB      83,45,78,73,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   64
> >
> > +EXTERN  __imp_RtlVirtualUnwind
> >
> > +
> >
> > +ALIGN   16
> >
> > +ecb_ccm64_se_handler:
> >
> > +        push    rsi
> >
> > +        push    rdi
> >
> > +        push    rbx
> >
> > +        push    rbp
> >
> > +        push    r12
> >
> > +        push    r13
> >
> > +        push    r14
> >
> > +        push    r15
> >
> > +        pushfq
> >
> > +        sub     rsp,64
> >
> > +
> >
> > +        mov     rax,QWORD[120+r8]
> >
> > +        mov     rbx,QWORD[248+r8]
> >
> > +
> >
> > +        mov     rsi,QWORD[8+r9]
> >
> > +        mov     r11,QWORD[56+r9]
> >
> > +
> >
> > +        mov     r10d,DWORD[r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$common_seh_tail
> >
> > +
> >
> > +        mov     rax,QWORD[152+r8]
> >
> > +
> >
> > +        mov     r10d,DWORD[4+r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jae     NEAR $L$common_seh_tail
> >
> > +
> >
> > +        lea     rsi,[rax]
> >
> > +        lea     rdi,[512+r8]
> >
> > +        mov     ecx,8
> >
> > +        DD      0xa548f3fc
> >
> > +        lea     rax,[88+rax]
> >
> > +
> >
> > +        jmp     NEAR $L$common_seh_tail
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +ctr_xts_se_handler:
> >
> > +        push    rsi
> >
> > +        push    rdi
> >
> > +        push    rbx
> >
> > +        push    rbp
> >
> > +        push    r12
> >
> > +        push    r13
> >
> > +        push    r14
> >
> > +        push    r15
> >
> > +        pushfq
> >
> > +        sub     rsp,64
> >
> > +
> >
> > +        mov     rax,QWORD[120+r8]
> >
> > +        mov     rbx,QWORD[248+r8]
> >
> > +
> >
> > +        mov     rsi,QWORD[8+r9]
> >
> > +        mov     r11,QWORD[56+r9]
> >
> > +
> >
> > +        mov     r10d,DWORD[r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$common_seh_tail
> >
> > +
> >
> > +        mov     rax,QWORD[152+r8]
> >
> > +
> >
> > +        mov     r10d,DWORD[4+r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jae     NEAR $L$common_seh_tail
> >
> > +
> >
> > +        mov     rax,QWORD[208+r8]
> >
> > +
> >
> > +        lea     rsi,[((-168))+rax]
> >
> > +        lea     rdi,[512+r8]
> >
> > +        mov     ecx,20
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +        mov     rbp,QWORD[((-8))+rax]
> >
> > +        mov     QWORD[160+r8],rbp
> >
> > +        jmp     NEAR $L$common_seh_tail
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +ocb_se_handler:
> >
> > +        push    rsi
> >
> > +        push    rdi
> >
> > +        push    rbx
> >
> > +        push    rbp
> >
> > +        push    r12
> >
> > +        push    r13
> >
> > +        push    r14
> >
> > +        push    r15
> >
> > +        pushfq
> >
> > +        sub     rsp,64
> >
> > +
> >
> > +        mov     rax,QWORD[120+r8]
> >
> > +        mov     rbx,QWORD[248+r8]
> >
> > +
> >
> > +        mov     rsi,QWORD[8+r9]
> >
> > +        mov     r11,QWORD[56+r9]
> >
> > +
> >
> > +        mov     r10d,DWORD[r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$common_seh_tail
> >
> > +
> >
> > +        mov     r10d,DWORD[4+r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jae     NEAR $L$common_seh_tail
> >
> > +
> >
> > +        mov     r10d,DWORD[8+r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jae     NEAR $L$ocb_no_xmm
> >
> > +
> >
> > +        mov     rax,QWORD[152+r8]
> >
> > +
> >
> > +        lea     rsi,[rax]
> >
> > +        lea     rdi,[512+r8]
> >
> > +        mov     ecx,20
> >
> > +        DD      0xa548f3fc
> >
> > +        lea     rax,[((160+40))+rax]
> >
> > +
> >
> > +$L$ocb_no_xmm:
> >
> > +        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     NEAR $L$common_seh_tail
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +cbc_se_handler:
> >
> > +        push    rsi
> >
> > +        push    rdi
> >
> > +        push    rbx
> >
> > +        push    rbp
> >
> > +        push    r12
> >
> > +        push    r13
> >
> > +        push    r14
> >
> > +        push    r15
> >
> > +        pushfq
> >
> > +        sub     rsp,64
> >
> > +
> >
> > +        mov     rax,QWORD[152+r8]
> >
> > +        mov     rbx,QWORD[248+r8]
> >
> > +
> >
> > +        lea     r10,[$L$cbc_decrypt_bulk]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$common_seh_tail
> >
> > +
> >
> > +        mov     rax,QWORD[120+r8]
> >
> > +
> >
> > +        lea     r10,[$L$cbc_decrypt_body]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$common_seh_tail
> >
> > +
> >
> > +        mov     rax,QWORD[152+r8]
> >
> > +
> >
> > +        lea     r10,[$L$cbc_ret]
> >
> > +        cmp     rbx,r10
> >
> > +        jae     NEAR $L$common_seh_tail
> >
> > +
> >
> > +        lea     rsi,[16+rax]
> >
> > +        lea     rdi,[512+r8]
> >
> > +        mov     ecx,20
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +        mov     rax,QWORD[208+r8]
> >
> > +
> >
> > +        mov     rbp,QWORD[((-8))+rax]
> >
> > +        mov     QWORD[160+r8],rbp
> >
> > +
> >
> > +$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[40+r9]
> >
> > +        mov     rsi,r8
> >
> > +        mov     ecx,154
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +        mov     rsi,r9
> >
> > +        xor     rcx,rcx
> >
> > +        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
> >
> > +        popfq
> >
> > +        pop     r15
> >
> > +        pop     r14
> >
> > +        pop     r13
> >
> > +        pop     r12
> >
> > +        pop     rbp
> >
> > +        pop     rbx
> >
> > +        pop     rdi
> >
> > +        pop     rsi
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +section .pdata rdata align=4
> >
> > +ALIGN   4
> >
> > +        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      $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      $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      $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      $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      $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_ocb_encrypt wrt ..imagebase
> >
> > +        DD      $L$SEH_end_aesni_ocb_encrypt wrt ..imagebase
> >
> > +        DD      $L$SEH_info_ocb_enc wrt ..imagebase
> >
> > +
> >
> > +        DD      $L$SEH_begin_aesni_ocb_decrypt wrt ..imagebase
> >
> > +        DD      $L$SEH_end_aesni_ocb_decrypt wrt ..imagebase
> >
> > +        DD      $L$SEH_info_ocb_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      aesni_set_decrypt_key wrt ..imagebase
> >
> > +        DD      $L$SEH_end_set_decrypt_key wrt ..imagebase
> >
> > +        DD      $L$SEH_info_key wrt ..imagebase
> >
> > +
> >
> > +        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:
> >
> > +DB      9,0,0,0
> >
> > +        DD      ecb_ccm64_se_handler wrt ..imagebase
> >
> > +        DD      $L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret wrt ..imagebase
> >
> > +$L$SEH_info_ccm64_enc:
> >
> > +DB      9,0,0,0
> >
> > +        DD      ecb_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      ecb_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      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      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      ctr_xts_se_handler wrt ..imagebase
> >
> > +        DD      $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue
> > wrt ..imagebase
> >
> > +$L$SEH_info_ocb_enc:
> >
> > +DB      9,0,0,0
> >
> > +        DD      ocb_se_handler wrt ..imagebase
> >
> > +        DD      $L$ocb_enc_body wrt ..imagebase,$L$ocb_enc_epilogue
> > wrt ..imagebase
> >
> > +        DD      $L$ocb_enc_pop wrt ..imagebase
> >
> > +        DD      0
> >
> > +$L$SEH_info_ocb_dec:
> >
> > +DB      9,0,0,0
> >
> > +        DD      ocb_se_handler wrt ..imagebase
> >
> > +        DD      $L$ocb_dec_body wrt ..imagebase,$L$ocb_dec_epilogue
> > wrt ..imagebase
> >
> > +        DD      $L$ocb_dec_pop wrt ..imagebase
> >
> > +        DD      0
> >
> > +$L$SEH_info_cbc:
> >
> > +DB      9,0,0,0
> >
> > +        DD      cbc_se_handler wrt ..imagebase
> >
> > +$L$SEH_info_key:
> >
> > +DB      0x01,0x04,0x01,0x00
> >
> > +DB      0x04,0x02,0x00,0x00
> >
> > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
> > b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
> > new file mode 100644
> > index 0000000000..1c911fa294
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
> > @@ -0,0 +1,1173 @@
> > +; WARNING: do not edit!
> >
> > +; Generated from openssl/crypto/aes/asm/vpaes-x86_64.pl
> >
> > +;
> >
> > +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved.
> >
> > +;
> >
> > +; Licensed under the OpenSSL license (the "License").  You may not use
> >
> > +; this file except in compliance with the License.  You can obtain a copy
> >
> > +; in the file LICENSE in the source distribution or at
> >
> > +; https://www.openssl.org/source/license.html
> >
> > +
> >
> > +default rel
> >
> > +%define XMMWORD
> >
> > +%define YMMWORD
> >
> > +%define ZMMWORD
> >
> > +section .text code align=64
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +_vpaes_encrypt_core:
> >
> > +
> >
> > +        mov     r9,rdx
> >
> > +        mov     r11,16
> >
> > +        mov     eax,DWORD[240+rdx]
> >
> > +        movdqa  xmm1,xmm9
> >
> > +        movdqa  xmm2,XMMWORD[$L$k_ipt]
> >
> > +        pandn   xmm1,xmm0
> >
> > +        movdqu  xmm5,XMMWORD[r9]
> >
> > +        psrld   xmm1,4
> >
> > +        pand    xmm0,xmm9
> >
> > +DB      102,15,56,0,208
> >
> > +        movdqa  xmm0,XMMWORD[(($L$k_ipt+16))]
> >
> > +DB      102,15,56,0,193
> >
> > +        pxor    xmm2,xmm5
> >
> > +        add     r9,16
> >
> > +        pxor    xmm0,xmm2
> >
> > +        lea     r10,[$L$k_mc_backward]
> >
> > +        jmp     NEAR $L$enc_entry
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$enc_loop:
> >
> > +
> >
> > +        movdqa  xmm4,xmm13
> >
> > +        movdqa  xmm0,xmm12
> >
> > +DB      102,15,56,0,226
> >
> > +DB      102,15,56,0,195
> >
> > +        pxor    xmm4,xmm5
> >
> > +        movdqa  xmm5,xmm15
> >
> > +        pxor    xmm0,xmm4
> >
> > +        movdqa  xmm1,XMMWORD[((-64))+r10*1+r11]
> >
> > +DB      102,15,56,0,234
> >
> > +        movdqa  xmm4,XMMWORD[r10*1+r11]
> >
> > +        movdqa  xmm2,xmm14
> >
> > +DB      102,15,56,0,211
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        pxor    xmm2,xmm5
> >
> > +DB      102,15,56,0,193
> >
> > +        add     r9,16
> >
> > +        pxor    xmm0,xmm2
> >
> > +DB      102,15,56,0,220
> >
> > +        add     r11,16
> >
> > +        pxor    xmm3,xmm0
> >
> > +DB      102,15,56,0,193
> >
> > +        and     r11,0x30
> >
> > +        sub     rax,1
> >
> > +        pxor    xmm0,xmm3
> >
> > +
> >
> > +$L$enc_entry:
> >
> > +
> >
> > +        movdqa  xmm1,xmm9
> >
> > +        movdqa  xmm5,xmm11
> >
> > +        pandn   xmm1,xmm0
> >
> > +        psrld   xmm1,4
> >
> > +        pand    xmm0,xmm9
> >
> > +DB      102,15,56,0,232
> >
> > +        movdqa  xmm3,xmm10
> >
> > +        pxor    xmm0,xmm1
> >
> > +DB      102,15,56,0,217
> >
> > +        movdqa  xmm4,xmm10
> >
> > +        pxor    xmm3,xmm5
> >
> > +DB      102,15,56,0,224
> >
> > +        movdqa  xmm2,xmm10
> >
> > +        pxor    xmm4,xmm5
> >
> > +DB      102,15,56,0,211
> >
> > +        movdqa  xmm3,xmm10
> >
> > +        pxor    xmm2,xmm0
> >
> > +DB      102,15,56,0,220
> >
> > +        movdqu  xmm5,XMMWORD[r9]
> >
> > +        pxor    xmm3,xmm1
> >
> > +        jnz     NEAR $L$enc_loop
> >
> > +
> >
> > +
> >
> > +        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[64+r10*1+r11]
> >
> > +        pxor    xmm0,xmm4
> >
> > +DB      102,15,56,0,193
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +_vpaes_decrypt_core:
> >
> > +
> >
> > +        mov     r9,rdx
> >
> > +        mov     eax,DWORD[240+rdx]
> >
> > +        movdqa  xmm1,xmm9
> >
> > +        movdqa  xmm2,XMMWORD[$L$k_dipt]
> >
> > +        pandn   xmm1,xmm0
> >
> > +        mov     r11,rax
> >
> > +        psrld   xmm1,4
> >
> > +        movdqu  xmm5,XMMWORD[r9]
> >
> > +        shl     r11,4
> >
> > +        pand    xmm0,xmm9
> >
> > +DB      102,15,56,0,208
> >
> > +        movdqa  xmm0,XMMWORD[(($L$k_dipt+16))]
> >
> > +        xor     r11,0x30
> >
> > +        lea     r10,[$L$k_dsbd]
> >
> > +DB      102,15,56,0,193
> >
> > +        and     r11,0x30
> >
> > +        pxor    xmm2,xmm5
> >
> > +        movdqa  xmm5,XMMWORD[(($L$k_mc_forward+48))]
> >
> > +        pxor    xmm0,xmm2
> >
> > +        add     r9,16
> >
> > +        add     r11,r10
> >
> > +        jmp     NEAR $L$dec_entry
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$dec_loop:
> >
> > +
> >
> > +
> >
> > +
> >
> > +        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[r10]
> >
> > +        pxor    xmm0,xmm1
> >
> > +        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[32+r10]
> >
> > +        pxor    xmm0,xmm1
> >
> > +        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[64+r10]
> >
> > +        pxor    xmm0,xmm1
> >
> > +        movdqa  xmm1,XMMWORD[80+r10]
> >
> > +
> >
> > +DB      102,15,56,0,226
> >
> > +DB      102,15,56,0,197
> >
> > +DB      102,15,56,0,203
> >
> > +        pxor    xmm0,xmm4
> >
> > +        add     r9,16
> >
> > +DB      102,15,58,15,237,12
> >
> > +        pxor    xmm0,xmm1
> >
> > +        sub     rax,1
> >
> > +
> >
> > +$L$dec_entry:
> >
> > +
> >
> > +        movdqa  xmm1,xmm9
> >
> > +        pandn   xmm1,xmm0
> >
> > +        movdqa  xmm2,xmm11
> >
> > +        psrld   xmm1,4
> >
> > +        pand    xmm0,xmm9
> >
> > +DB      102,15,56,0,208
> >
> > +        movdqa  xmm3,xmm10
> >
> > +        pxor    xmm0,xmm1
> >
> > +DB      102,15,56,0,217
> >
> > +        movdqa  xmm4,xmm10
> >
> > +        pxor    xmm3,xmm2
> >
> > +DB      102,15,56,0,224
> >
> > +        pxor    xmm4,xmm2
> >
> > +        movdqa  xmm2,xmm10
> >
> > +DB      102,15,56,0,211
> >
> > +        movdqa  xmm3,xmm10
> >
> > +        pxor    xmm2,xmm0
> >
> > +DB      102,15,56,0,220
> >
> > +        movdqu  xmm0,XMMWORD[r9]
> >
> > +        pxor    xmm3,xmm1
> >
> > +        jnz     NEAR $L$dec_loop
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm4,XMMWORD[96+r10]
> >
> > +DB      102,15,56,0,226
> >
> > +        pxor    xmm4,xmm0
> >
> > +        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
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +_vpaes_schedule_core:
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +        call    _vpaes_preheat
> >
> > +        movdqa  xmm8,XMMWORD[$L$k_rcon]
> >
> > +        movdqu  xmm0,XMMWORD[rdi]
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        lea     r11,[$L$k_ipt]
> >
> > +        call    _vpaes_schedule_transform
> >
> > +        movdqa  xmm7,xmm0
> >
> > +
> >
> > +        lea     r10,[$L$k_sr]
> >
> > +        test    rcx,rcx
> >
> > +        jnz     NEAR $L$schedule_am_decrypting
> >
> > +
> >
> > +
> >
> > +        movdqu  XMMWORD[rdx],xmm0
> >
> > +        jmp     NEAR $L$schedule_go
> >
> > +
> >
> > +$L$schedule_am_decrypting:
> >
> > +
> >
> > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> >
> > +DB      102,15,56,0,217
> >
> > +        movdqu  XMMWORD[rdx],xmm3
> >
> > +        xor     r8,0x30
> >
> > +
> >
> > +$L$schedule_go:
> >
> > +        cmp     esi,192
> >
> > +        ja      NEAR $L$schedule_256
> >
> > +        je      NEAR $L$schedule_192
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +$L$schedule_128:
> >
> > +        mov     esi,10
> >
> > +
> >
> > +$L$oop_schedule_128:
> >
> > +        call    _vpaes_schedule_round
> >
> > +        dec     rsi
> >
> > +        jz      NEAR $L$schedule_mangle_last
> >
> > +        call    _vpaes_schedule_mangle
> >
> > +        jmp     NEAR $L$oop_schedule_128
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +$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:
> >
> > +        call    _vpaes_schedule_round
> >
> > +DB      102,15,58,15,198,8
> >
> > +        call    _vpaes_schedule_mangle
> >
> > +        call    _vpaes_schedule_192_smear
> >
> > +        call    _vpaes_schedule_mangle
> >
> > +        call    _vpaes_schedule_round
> >
> > +        dec     rsi
> >
> > +        jz      NEAR $L$schedule_mangle_last
> >
> > +        call    _vpaes_schedule_mangle
> >
> > +        call    _vpaes_schedule_192_smear
> >
> > +        jmp     NEAR $L$oop_schedule_192
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$schedule_256:
> >
> > +        movdqu  xmm0,XMMWORD[16+rdi]
> >
> > +        call    _vpaes_schedule_transform
> >
> > +        mov     esi,7
> >
> > +
> >
> > +$L$oop_schedule_256:
> >
> > +        call    _vpaes_schedule_mangle
> >
> > +        movdqa  xmm6,xmm0
> >
> > +
> >
> > +
> >
> > +        call    _vpaes_schedule_round
> >
> > +        dec     rsi
> >
> > +        jz      NEAR $L$schedule_mangle_last
> >
> > +        call    _vpaes_schedule_mangle
> >
> > +
> >
> > +
> >
> > +        pshufd  xmm0,xmm0,0xFF
> >
> > +        movdqa  xmm5,xmm7
> >
> > +        movdqa  xmm7,xmm6
> >
> > +        call    _vpaes_schedule_low_round
> >
> > +        movdqa  xmm7,xmm5
> >
> > +
> >
> > +        jmp     NEAR $L$oop_schedule_256
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$schedule_mangle_last:
> >
> > +
> >
> > +        lea     r11,[$L$k_deskew]
> >
> > +        test    rcx,rcx
> >
> > +        jnz     NEAR $L$schedule_mangle_last_dec
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> >
> > +DB      102,15,56,0,193
> >
> > +        lea     r11,[$L$k_opt]
> >
> > +        add     rdx,32
> >
> > +
> >
> > +$L$schedule_mangle_last_dec:
> >
> > +        add     rdx,-16
> >
> > +        pxor    xmm0,XMMWORD[$L$k_s63]
> >
> > +        call    _vpaes_schedule_transform
> >
> > +        movdqu  XMMWORD[rdx],xmm0
> >
> > +
> >
> > +
> >
> > +        pxor    xmm0,xmm0
> >
> > +        pxor    xmm1,xmm1
> >
> > +        pxor    xmm2,xmm2
> >
> > +        pxor    xmm3,xmm3
> >
> > +        pxor    xmm4,xmm4
> >
> > +        pxor    xmm5,xmm5
> >
> > +        pxor    xmm6,xmm6
> >
> > +        pxor    xmm7,xmm7
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +_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
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +_vpaes_schedule_round:
> >
> > +
> >
> > +
> >
> > +        pxor    xmm1,xmm1
> >
> > +DB      102,65,15,58,15,200,15
> >
> > +DB      102,69,15,58,15,192,15
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        pshufd  xmm0,xmm0,0xFF
> >
> > +DB      102,15,58,15,192,1
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +_vpaes_schedule_low_round:
> >
> > +
> >
> > +        movdqa  xmm1,xmm7
> >
> > +        pslldq  xmm7,4
> >
> > +        pxor    xmm7,xmm1
> >
> > +        movdqa  xmm1,xmm7
> >
> > +        pslldq  xmm7,8
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm7,XMMWORD[$L$k_s63]
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm9
> >
> > +        pandn   xmm1,xmm0
> >
> > +        psrld   xmm1,4
> >
> > +        pand    xmm0,xmm9
> >
> > +        movdqa  xmm2,xmm11
> >
> > +DB      102,15,56,0,208
> >
> > +        pxor    xmm0,xmm1
> >
> > +        movdqa  xmm3,xmm10
> >
> > +DB      102,15,56,0,217
> >
> > +        pxor    xmm3,xmm2
> >
> > +        movdqa  xmm4,xmm10
> >
> > +DB      102,15,56,0,224
> >
> > +        pxor    xmm4,xmm2
> >
> > +        movdqa  xmm2,xmm10
> >
> > +DB      102,15,56,0,211
> >
> > +        pxor    xmm2,xmm0
> >
> > +        movdqa  xmm3,xmm10
> >
> > +DB      102,15,56,0,220
> >
> > +        pxor    xmm3,xmm1
> >
> > +        movdqa  xmm4,xmm13
> >
> > +DB      102,15,56,0,226
> >
> > +        movdqa  xmm0,xmm12
> >
> > +DB      102,15,56,0,195
> >
> > +        pxor    xmm0,xmm4
> >
> > +
> >
> > +
> >
> > +        pxor    xmm0,xmm7
> >
> > +        movdqa  xmm7,xmm0
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +_vpaes_schedule_transform:
> >
> > +
> >
> > +        movdqa  xmm1,xmm9
> >
> > +        pandn   xmm1,xmm0
> >
> > +        psrld   xmm1,4
> >
> > +        pand    xmm0,xmm9
> >
> > +        movdqa  xmm2,XMMWORD[r11]
> >
> > +DB      102,15,56,0,208
> >
> > +        movdqa  xmm0,XMMWORD[16+r11]
> >
> > +DB      102,15,56,0,193
> >
> > +        pxor    xmm0,xmm2
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +_vpaes_schedule_mangle:
> >
> > +
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        movdqa  xmm5,XMMWORD[$L$k_mc_forward]
> >
> > +        test    rcx,rcx
> >
> > +        jnz     NEAR $L$schedule_mangle_dec
> >
> > +
> >
> > +
> >
> > +        add     rdx,16
> >
> > +        pxor    xmm4,XMMWORD[$L$k_s63]
> >
> > +DB      102,15,56,0,229
> >
> > +        movdqa  xmm3,xmm4
> >
> > +DB      102,15,56,0,229
> >
> > +        pxor    xmm3,xmm4
> >
> > +DB      102,15,56,0,229
> >
> > +        pxor    xmm3,xmm4
> >
> > +
> >
> > +        jmp     NEAR $L$schedule_mangle_both
> >
> > +ALIGN   16
> >
> > +$L$schedule_mangle_dec:
> >
> > +
> >
> > +        lea     r11,[$L$k_dksd]
> >
> > +        movdqa  xmm1,xmm9
> >
> > +        pandn   xmm1,xmm4
> >
> > +        psrld   xmm1,4
> >
> > +        pand    xmm4,xmm9
> >
> > +
> >
> > +        movdqa  xmm2,XMMWORD[r11]
> >
> > +DB      102,15,56,0,212
> >
> > +        movdqa  xmm3,XMMWORD[16+r11]
> >
> > +DB      102,15,56,0,217
> >
> > +        pxor    xmm3,xmm2
> >
> > +DB      102,15,56,0,221
> >
> > +
> >
> > +        movdqa  xmm2,XMMWORD[32+r11]
> >
> > +DB      102,15,56,0,212
> >
> > +        pxor    xmm2,xmm3
> >
> > +        movdqa  xmm3,XMMWORD[48+r11]
> >
> > +DB      102,15,56,0,217
> >
> > +        pxor    xmm3,xmm2
> >
> > +DB      102,15,56,0,221
> >
> > +
> >
> > +        movdqa  xmm2,XMMWORD[64+r11]
> >
> > +DB      102,15,56,0,212
> >
> > +        pxor    xmm2,xmm3
> >
> > +        movdqa  xmm3,XMMWORD[80+r11]
> >
> > +DB      102,15,56,0,217
> >
> > +        pxor    xmm3,xmm2
> >
> > +DB      102,15,56,0,221
> >
> > +
> >
> > +        movdqa  xmm2,XMMWORD[96+r11]
> >
> > +DB      102,15,56,0,212
> >
> > +        pxor    xmm2,xmm3
> >
> > +        movdqa  xmm3,XMMWORD[112+r11]
> >
> > +DB      102,15,56,0,217
> >
> > +        pxor    xmm3,xmm2
> >
> > +
> >
> > +        add     rdx,-16
> >
> > +
> >
> > +$L$schedule_mangle_both:
> >
> > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> >
> > +DB      102,15,56,0,217
> >
> > +        add     r8,-16
> >
> > +        and     r8,0x30
> >
> > +        movdqu  XMMWORD[rdx],xmm3
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +global  vpaes_set_encrypt_key
> >
> > +
> >
> > +ALIGN   16
> >
> > +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:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +
> >
> > +
> >
> > +
> >
> > +        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[240+rdx],eax
> >
> > +
> >
> > +        mov     ecx,0
> >
> > +        mov     r8d,0x30
> >
> > +        call    _vpaes_schedule_core
> >
> > +        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[8+rsp]        ;WIN64 epilogue
> >
> > +        mov     rsi,QWORD[16+rsp]
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +$L$SEH_end_vpaes_set_encrypt_key:
> >
> > +
> >
> > +global  vpaes_set_decrypt_key
> >
> > +
> >
> > +ALIGN   16
> >
> > +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:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +
> >
> > +
> >
> > +
> >
> > +        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[240+rdx],eax
> >
> > +        shl     eax,4
> >
> > +        lea     rdx,[16+rax*1+rdx]
> >
> > +
> >
> > +        mov     ecx,1
> >
> > +        mov     r8d,esi
> >
> > +        shr     r8d,1
> >
> > +        and     r8d,32
> >
> > +        xor     r8d,32
> >
> > +        call    _vpaes_schedule_core
> >
> > +        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[8+rsp]        ;WIN64 epilogue
> >
> > +        mov     rsi,QWORD[16+rsp]
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +$L$SEH_end_vpaes_set_decrypt_key:
> >
> > +
> >
> > +global  vpaes_encrypt
> >
> > +
> >
> > +ALIGN   16
> >
> > +vpaes_encrypt:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_vpaes_encrypt:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +
> >
> > +
> >
> > +
> >
> > +        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[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:
> >
> > +
> >
> > +global  vpaes_decrypt
> >
> > +
> >
> > +ALIGN   16
> >
> > +vpaes_decrypt:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_vpaes_decrypt:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +
> >
> > +
> >
> > +
> >
> > +        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[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:
> >
> > +global  vpaes_cbc_encrypt
> >
> > +
> >
> > +ALIGN   16
> >
> > +vpaes_cbc_encrypt:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_vpaes_cbc_encrypt:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +        mov     rcx,r9
> >
> > +        mov     r8,QWORD[40+rsp]
> >
> > +        mov     r9,QWORD[48+rsp]
> >
> > +
> >
> > +
> >
> > +
> >
> > +        xchg    rdx,rcx
> >
> > +        sub     rcx,16
> >
> > +        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      NEAR $L$cbc_dec_loop
> >
> > +        jmp     NEAR $L$cbc_enc_loop
> >
> > +ALIGN   16
> >
> > +$L$cbc_enc_loop:
> >
> > +        movdqu  xmm0,XMMWORD[rdi]
> >
> > +        pxor    xmm0,xmm6
> >
> > +        call    _vpaes_encrypt_core
> >
> > +        movdqa  xmm6,xmm0
> >
> > +        movdqu  XMMWORD[rdi*1+rsi],xmm0
> >
> > +        lea     rdi,[16+rdi]
> >
> > +        sub     rcx,16
> >
> > +        jnc     NEAR $L$cbc_enc_loop
> >
> > +        jmp     NEAR $L$cbc_done
> >
> > +ALIGN   16
> >
> > +$L$cbc_dec_loop:
> >
> > +        movdqu  xmm0,XMMWORD[rdi]
> >
> > +        movdqa  xmm7,xmm0
> >
> > +        call    _vpaes_decrypt_core
> >
> > +        pxor    xmm0,xmm6
> >
> > +        movdqa  xmm6,xmm7
> >
> > +        movdqu  XMMWORD[rdi*1+rsi],xmm0
> >
> > +        lea     rdi,[16+rdi]
> >
> > +        sub     rcx,16
> >
> > +        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:
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +_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
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +ALIGN   64
> >
> > +_vpaes_consts:
> >
> > +$L$k_inv:
> >
> > +        DQ      0x0E05060F0D080180,0x040703090A0B0C02
> >
> > +        DQ      0x01040A060F0B0780,0x030D0E0C02050809
> >
> > +
> >
> > +$L$k_s0F:
> >
> > +        DQ      0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F
> >
> > +
> >
> > +$L$k_ipt:
> >
> > +        DQ      0xC2B2E8985A2A7000,0xCABAE09052227808
> >
> > +        DQ      0x4C01307D317C4D00,0xCD80B1FCB0FDCC81
> >
> > +
> >
> > +$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      0x0407060500030201,0x0C0F0E0D080B0A09
> >
> > +        DQ      0x080B0A0904070605,0x000302010C0F0E0D
> >
> > +        DQ      0x0C0F0E0D080B0A09,0x0407060500030201
> >
> > +        DQ      0x000302010C0F0E0D,0x080B0A0904070605
> >
> > +
> >
> > +$L$k_mc_backward:
> >
> > +        DQ      0x0605040702010003,0x0E0D0C0F0A09080B
> >
> > +        DQ      0x020100030E0D0C0F,0x0A09080B06050407
> >
> > +        DQ      0x0E0D0C0F0A09080B,0x0605040702010003
> >
> > +        DQ      0x0A09080B06050407,0x020100030E0D0C0F
> >
> > +
> >
> > +$L$k_sr:
> >
> > +        DQ      0x0706050403020100,0x0F0E0D0C0B0A0908
> >
> > +        DQ      0x030E09040F0A0500,0x0B06010C07020D08
> >
> > +        DQ      0x0F060D040B020900,0x070E050C030A0108
> >
> > +        DQ      0x0B0E0104070A0D00,0x0306090C0F020508
> >
> > +
> >
> > +$L$k_rcon:
> >
> > +        DQ      0x1F8391B9AF9DEEB6,0x702A98084D7C7D81
> >
> > +
> >
> > +$L$k_s63:
> >
> > +        DQ      0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B
> >
> > +
> >
> > +$L$k_opt:
> >
> > +        DQ      0xFF9F4929D6B66000,0xF7974121DEBE6808
> >
> > +        DQ      0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0
> >
> > +
> >
> > +$L$k_deskew:
> >
> > +        DQ      0x07E4A34047A4E300,0x1DFEB95A5DBEF91A
> >
> > +        DQ      0x5F36B5DC83EA6900,0x2841C2ABF49D1E77
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +$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      0x0F505B040B545F00,0x154A411E114E451A
> >
> > +        DQ      0x86E383E660056500,0x12771772F491F194
> >
> > +
> >
> > +$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
> >
> > +DB      109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32
> >
> > +DB      85,110,105,118,101,114,115,105,116,121,41,0
> >
> > +ALIGN   64
> >
> > +
> >
> > +EXTERN  __imp_RtlVirtualUnwind
> >
> > +
> >
> > +ALIGN   16
> >
> > +se_handler:
> >
> > +        push    rsi
> >
> > +        push    rdi
> >
> > +        push    rbx
> >
> > +        push    rbp
> >
> > +        push    r12
> >
> > +        push    r13
> >
> > +        push    r14
> >
> > +        push    r15
> >
> > +        pushfq
> >
> > +        sub     rsp,64
> >
> > +
> >
> > +        mov     rax,QWORD[120+r8]
> >
> > +        mov     rbx,QWORD[248+r8]
> >
> > +
> >
> > +        mov     rsi,QWORD[8+r9]
> >
> > +        mov     r11,QWORD[56+r9]
> >
> > +
> >
> > +        mov     r10d,DWORD[r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$in_prologue
> >
> > +
> >
> > +        mov     rax,QWORD[152+r8]
> >
> > +
> >
> > +        mov     r10d,DWORD[4+r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jae     NEAR $L$in_prologue
> >
> > +
> >
> > +        lea     rsi,[16+rax]
> >
> > +        lea     rdi,[512+r8]
> >
> > +        mov     ecx,20
> >
> > +        DD      0xa548f3fc
> >
> > +        lea     rax,[184+rax]
> >
> > +
> >
> > +$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[40+r9]
> >
> > +        mov     rsi,r8
> >
> > +        mov     ecx,154
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +        mov     rsi,r9
> >
> > +        xor     rcx,rcx
> >
> > +        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
> >
> > +        popfq
> >
> > +        pop     r15
> >
> > +        pop     r14
> >
> > +        pop     r13
> >
> > +        pop     r12
> >
> > +        pop     rbp
> >
> > +        pop     rbx
> >
> > +        pop     rdi
> >
> > +        pop     rsi
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +section .pdata rdata align=4
> >
> > +ALIGN   4
> >
> > +        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      $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      $L$SEH_begin_vpaes_encrypt wrt ..imagebase
> >
> > +        DD      $L$SEH_end_vpaes_encrypt wrt ..imagebase
> >
> > +        DD      $L$SEH_info_vpaes_encrypt wrt ..imagebase
> >
> > +
> >
> > +        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      $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
> >
> > +
> >
> > +section .xdata rdata align=8
> >
> > +ALIGN   8
> >
> > +$L$SEH_info_vpaes_set_encrypt_key:
> >
> > +DB      9,0,0,0
> >
> > +        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      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      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      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      se_handler wrt ..imagebase
> >
> > +        DD      $L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt ..imagebase
> >
> > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
> > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
> > x86_64.nasm
> > new file mode 100644
> > index 0000000000..60f283d5fb
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm
> > @@ -0,0 +1,1569 @@
> > +; WARNING: do not edit!
> >
> > +; Generated from openssl/crypto/modes/asm/ghash-x86_64.pl
> >
> > +;
> >
> > +; Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved.
> >
> > +;
> >
> > +; Licensed under the OpenSSL license (the "License").  You may not use
> >
> > +; this file except in compliance with the License.  You can obtain a copy
> >
> > +; in the file LICENSE in the source distribution or at
> >
> > +; https://www.openssl.org/source/license.html
> >
> > +
> >
> > +default rel
> >
> > +%define XMMWORD
> >
> > +%define YMMWORD
> >
> > +%define ZMMWORD
> >
> > +section .text code align=64
> >
> > +
> >
> > +EXTERN  OPENSSL_ia32cap_P
> >
> > +
> >
> > +global  gcm_gmult_4bit
> >
> > +
> >
> > +ALIGN   16
> >
> > +gcm_gmult_4bit:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_gcm_gmult_4bit:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +
> >
> > +
> >
> > +
> >
> > +        push    rbx
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        push    r12
> >
> > +
> >
> > +        push    r13
> >
> > +
> >
> > +        push    r14
> >
> > +
> >
> > +        push    r15
> >
> > +
> >
> > +        sub     rsp,280
> >
> > +
> >
> > +$L$gmult_prologue:
> >
> > +
> >
> > +        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[8+rax*1+rsi]
> >
> > +        mov     r9,QWORD[rax*1+rsi]
> >
> > +        and     bl,0xf0
> >
> > +        mov     rdx,r8
> >
> > +        jmp     NEAR $L$oop1
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$oop1:
> >
> > +        shr     r8,4
> >
> > +        and     rdx,0xf
> >
> > +        mov     r10,r9
> >
> > +        mov     al,BYTE[rcx*1+rdi]
> >
> > +        shr     r9,4
> >
> > +        xor     r8,QWORD[8+rbx*1+rsi]
> >
> > +        shl     r10,60
> >
> > +        xor     r9,QWORD[rbx*1+rsi]
> >
> > +        mov     bl,al
> >
> > +        xor     r9,QWORD[rdx*8+r11]
> >
> > +        mov     rdx,r8
> >
> > +        shl     al,4
> >
> > +        xor     r8,r10
> >
> > +        dec     rcx
> >
> > +        js      NEAR $L$break1
> >
> > +
> >
> > +        shr     r8,4
> >
> > +        and     rdx,0xf
> >
> > +        mov     r10,r9
> >
> > +        shr     r9,4
> >
> > +        xor     r8,QWORD[8+rax*1+rsi]
> >
> > +        shl     r10,60
> >
> > +        xor     r9,QWORD[rax*1+rsi]
> >
> > +        and     bl,0xf0
> >
> > +        xor     r9,QWORD[rdx*8+r11]
> >
> > +        mov     rdx,r8
> >
> > +        xor     r8,r10
> >
> > +        jmp     NEAR $L$oop1
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$break1:
> >
> > +        shr     r8,4
> >
> > +        and     rdx,0xf
> >
> > +        mov     r10,r9
> >
> > +        shr     r9,4
> >
> > +        xor     r8,QWORD[8+rax*1+rsi]
> >
> > +        shl     r10,60
> >
> > +        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,0xf
> >
> > +        mov     r10,r9
> >
> > +        shr     r9,4
> >
> > +        xor     r8,QWORD[8+rbx*1+rsi]
> >
> > +        shl     r10,60
> >
> > +        xor     r9,QWORD[rbx*1+rsi]
> >
> > +        xor     r8,r10
> >
> > +        xor     r9,QWORD[rdx*8+r11]
> >
> > +
> >
> > +        bswap   r8
> >
> > +        bswap   r9
> >
> > +        mov     QWORD[8+rdi],r8
> >
> > +        mov     QWORD[rdi],r9
> >
> > +
> >
> > +        lea     rsi,[((280+48))+rsp]
> >
> > +
> >
> > +        mov     rbx,QWORD[((-8))+rsi]
> >
> > +
> >
> > +        lea     rsp,[rsi]
> >
> > +
> >
> > +$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:
> >
> > +global  gcm_ghash_4bit
> >
> > +
> >
> > +ALIGN   16
> >
> > +gcm_ghash_4bit:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_gcm_ghash_4bit:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +        mov     rcx,r9
> >
> > +
> >
> > +
> >
> > +
> >
> > +        push    rbx
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        push    r12
> >
> > +
> >
> > +        push    r13
> >
> > +
> >
> > +        push    r14
> >
> > +
> >
> > +        push    r15
> >
> > +
> >
> > +        sub     rsp,280
> >
> > +
> >
> > +$L$ghash_prologue:
> >
> > +        mov     r14,rdx
> >
> > +        mov     r15,rcx
> >
> > +        sub     rsi,-128
> >
> > +        lea     rbp,[((16+128))+rsp]
> >
> > +        xor     edx,edx
> >
> > +        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[((16+0-128))+rsi]
> >
> > +        shl     dl,4
> >
> > +        mov     rbx,QWORD[((16+8-128))+rsi]
> >
> > +        shl     r10,60
> >
> > +        mov     BYTE[rsp],dl
> >
> > +        or      rax,r10
> >
> > +        mov     dl,bl
> >
> > +        shr     rbx,4
> >
> > +        mov     r10,r9
> >
> > +        shr     r9,4
> >
> > +        mov     QWORD[rbp],r8
> >
> > +        mov     r8,QWORD[((32+0-128))+rsi]
> >
> > +        shl     dl,4
> >
> > +        mov     QWORD[((0-128))+rbp],rax
> >
> > +        mov     rax,QWORD[((32+8-128))+rsi]
> >
> > +        shl     r10,60
> >
> > +        mov     BYTE[1+rsp],dl
> >
> > +        or      rbx,r10
> >
> > +        mov     dl,al
> >
> > +        shr     rax,4
> >
> > +        mov     r10,r8
> >
> > +        shr     r8,4
> >
> > +        mov     QWORD[8+rbp],r9
> >
> > +        mov     r9,QWORD[((48+0-128))+rsi]
> >
> > +        shl     dl,4
> >
> > +        mov     QWORD[((8-128))+rbp],rbx
> >
> > +        mov     rbx,QWORD[((48+8-128))+rsi]
> >
> > +        shl     r10,60
> >
> > +        mov     BYTE[2+rsp],dl
> >
> > +        or      rax,r10
> >
> > +        mov     dl,bl
> >
> > +        shr     rbx,4
> >
> > +        mov     r10,r9
> >
> > +        shr     r9,4
> >
> > +        mov     QWORD[16+rbp],r8
> >
> > +        mov     r8,QWORD[((64+0-128))+rsi]
> >
> > +        shl     dl,4
> >
> > +        mov     QWORD[((16-128))+rbp],rax
> >
> > +        mov     rax,QWORD[((64+8-128))+rsi]
> >
> > +        shl     r10,60
> >
> > +        mov     BYTE[3+rsp],dl
> >
> > +        or      rbx,r10
> >
> > +        mov     dl,al
> >
> > +        shr     rax,4
> >
> > +        mov     r10,r8
> >
> > +        shr     r8,4
> >
> > +        mov     QWORD[24+rbp],r9
> >
> > +        mov     r9,QWORD[((80+0-128))+rsi]
> >
> > +        shl     dl,4
> >
> > +        mov     QWORD[((24-128))+rbp],rbx
> >
> > +        mov     rbx,QWORD[((80+8-128))+rsi]
> >
> > +        shl     r10,60
> >
> > +        mov     BYTE[4+rsp],dl
> >
> > +        or      rax,r10
> >
> > +        mov     dl,bl
> >
> > +        shr     rbx,4
> >
> > +        mov     r10,r9
> >
> > +        shr     r9,4
> >
> > +        mov     QWORD[32+rbp],r8
> >
> > +        mov     r8,QWORD[((96+0-128))+rsi]
> >
> > +        shl     dl,4
> >
> > +        mov     QWORD[((32-128))+rbp],rax
> >
> > +        mov     rax,QWORD[((96+8-128))+rsi]
> >
> > +        shl     r10,60
> >
> > +        mov     BYTE[5+rsp],dl
> >
> > +        or      rbx,r10
> >
> > +        mov     dl,al
> >
> > +        shr     rax,4
> >
> > +        mov     r10,r8
> >
> > +        shr     r8,4
> >
> > +        mov     QWORD[40+rbp],r9
> >
> > +        mov     r9,QWORD[((112+0-128))+rsi]
> >
> > +        shl     dl,4
> >
> > +        mov     QWORD[((40-128))+rbp],rbx
> >
> > +        mov     rbx,QWORD[((112+8-128))+rsi]
> >
> > +        shl     r10,60
> >
> > +        mov     BYTE[6+rsp],dl
> >
> > +        or      rax,r10
> >
> > +        mov     dl,bl
> >
> > +        shr     rbx,4
> >
> > +        mov     r10,r9
> >
> > +        shr     r9,4
> >
> > +        mov     QWORD[48+rbp],r8
> >
> > +        mov     r8,QWORD[((128+0-128))+rsi]
> >
> > +        shl     dl,4
> >
> > +        mov     QWORD[((48-128))+rbp],rax
> >
> > +        mov     rax,QWORD[((128+8-128))+rsi]
> >
> > +        shl     r10,60
> >
> > +        mov     BYTE[7+rsp],dl
> >
> > +        or      rbx,r10
> >
> > +        mov     dl,al
> >
> > +        shr     rax,4
> >
> > +        mov     r10,r8
> >
> > +        shr     r8,4
> >
> > +        mov     QWORD[56+rbp],r9
> >
> > +        mov     r9,QWORD[((144+0-128))+rsi]
> >
> > +        shl     dl,4
> >
> > +        mov     QWORD[((56-128))+rbp],rbx
> >
> > +        mov     rbx,QWORD[((144+8-128))+rsi]
> >
> > +        shl     r10,60
> >
> > +        mov     BYTE[8+rsp],dl
> >
> > +        or      rax,r10
> >
> > +        mov     dl,bl
> >
> > +        shr     rbx,4
> >
> > +        mov     r10,r9
> >
> > +        shr     r9,4
> >
> > +        mov     QWORD[64+rbp],r8
> >
> > +        mov     r8,QWORD[((160+0-128))+rsi]
> >
> > +        shl     dl,4
> >
> > +        mov     QWORD[((64-128))+rbp],rax
> >
> > +        mov     rax,QWORD[((160+8-128))+rsi]
> >
> > +        shl     r10,60
> >
> > +        mov     BYTE[9+rsp],dl
> >
> > +        or      rbx,r10
> >
> > +        mov     dl,al
> >
> > +        shr     rax,4
> >
> > +        mov     r10,r8
> >
> > +        shr     r8,4
> >
> > +        mov     QWORD[72+rbp],r9
> >
> > +        mov     r9,QWORD[((176+0-128))+rsi]
> >
> > +        shl     dl,4
> >
> > +        mov     QWORD[((72-128))+rbp],rbx
> >
> > +        mov     rbx,QWORD[((176+8-128))+rsi]
> >
> > +        shl     r10,60
> >
> > +        mov     BYTE[10+rsp],dl
> >
> > +        or      rax,r10
> >
> > +        mov     dl,bl
> >
> > +        shr     rbx,4
> >
> > +        mov     r10,r9
> >
> > +        shr     r9,4
> >
> > +        mov     QWORD[80+rbp],r8
> >
> > +        mov     r8,QWORD[((192+0-128))+rsi]
> >
> > +        shl     dl,4
> >
> > +        mov     QWORD[((80-128))+rbp],rax
> >
> > +        mov     rax,QWORD[((192+8-128))+rsi]
> >
> > +        shl     r10,60
> >
> > +        mov     BYTE[11+rsp],dl
> >
> > +        or      rbx,r10
> >
> > +        mov     dl,al
> >
> > +        shr     rax,4
> >
> > +        mov     r10,r8
> >
> > +        shr     r8,4
> >
> > +        mov     QWORD[88+rbp],r9
> >
> > +        mov     r9,QWORD[((208+0-128))+rsi]
> >
> > +        shl     dl,4
> >
> > +        mov     QWORD[((88-128))+rbp],rbx
> >
> > +        mov     rbx,QWORD[((208+8-128))+rsi]
> >
> > +        shl     r10,60
> >
> > +        mov     BYTE[12+rsp],dl
> >
> > +        or      rax,r10
> >
> > +        mov     dl,bl
> >
> > +        shr     rbx,4
> >
> > +        mov     r10,r9
> >
> > +        shr     r9,4
> >
> > +        mov     QWORD[96+rbp],r8
> >
> > +        mov     r8,QWORD[((224+0-128))+rsi]
> >
> > +        shl     dl,4
> >
> > +        mov     QWORD[((96-128))+rbp],rax
> >
> > +        mov     rax,QWORD[((224+8-128))+rsi]
> >
> > +        shl     r10,60
> >
> > +        mov     BYTE[13+rsp],dl
> >
> > +        or      rbx,r10
> >
> > +        mov     dl,al
> >
> > +        shr     rax,4
> >
> > +        mov     r10,r8
> >
> > +        shr     r8,4
> >
> > +        mov     QWORD[104+rbp],r9
> >
> > +        mov     r9,QWORD[((240+0-128))+rsi]
> >
> > +        shl     dl,4
> >
> > +        mov     QWORD[((104-128))+rbp],rbx
> >
> > +        mov     rbx,QWORD[((240+8-128))+rsi]
> >
> > +        shl     r10,60
> >
> > +        mov     BYTE[14+rsp],dl
> >
> > +        or      rax,r10
> >
> > +        mov     dl,bl
> >
> > +        shr     rbx,4
> >
> > +        mov     r10,r9
> >
> > +        shr     r9,4
> >
> > +        mov     QWORD[112+rbp],r8
> >
> > +        shl     dl,4
> >
> > +        mov     QWORD[((112-128))+rbp],rax
> >
> > +        shl     r10,60
> >
> > +        mov     BYTE[15+rsp],dl
> >
> > +        or      rbx,r10
> >
> > +        mov     QWORD[120+rbp],r9
> >
> > +        mov     QWORD[((120-128))+rbp],rbx
> >
> > +        add     rsi,-128
> >
> > +        mov     r8,QWORD[8+rdi]
> >
> > +        mov     r9,QWORD[rdi]
> >
> > +        add     r15,r14
> >
> > +        lea     r11,[$L$rem_8bit]
> >
> > +        jmp     NEAR $L$outer_loop
> >
> > +ALIGN   16
> >
> > +$L$outer_loop:
> >
> > +        xor     r9,QWORD[r14]
> >
> > +        mov     rdx,QWORD[8+r14]
> >
> > +        lea     r14,[16+r14]
> >
> > +        xor     rdx,r8
> >
> > +        mov     QWORD[rdi],r9
> >
> > +        mov     QWORD[8+rdi],rdx
> >
> > +        shr     rdx,32
> >
> > +        xor     rax,rax
> >
> > +        rol     edx,8
> >
> > +        mov     al,dl
> >
> > +        movzx   ebx,dl
> >
> > +        shl     al,4
> >
> > +        shr     ebx,4
> >
> > +        rol     edx,8
> >
> > +        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[rbx*1+rsp]
> >
> > +        shr     ecx,4
> >
> > +        xor     r12,r8
> >
> > +        mov     r10,r9
> >
> > +        shr     r8,8
> >
> > +        movzx   r12,r12b
> >
> > +        shr     r9,8
> >
> > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> >
> > +        shl     r10,56
> >
> > +        xor     r9,QWORD[rbx*8+rbp]
> >
> > +        rol     edx,8
> >
> > +        xor     r8,QWORD[8+rax*1+rsi]
> >
> > +        xor     r9,QWORD[rax*1+rsi]
> >
> > +        mov     al,dl
> >
> > +        xor     r8,r10
> >
> > +        movzx   r12,WORD[r12*2+r11]
> >
> > +        movzx   ebx,dl
> >
> > +        shl     al,4
> >
> > +        movzx   r13,BYTE[rcx*1+rsp]
> >
> > +        shr     ebx,4
> >
> > +        shl     r12,48
> >
> > +        xor     r13,r8
> >
> > +        mov     r10,r9
> >
> > +        xor     r9,r12
> >
> > +        shr     r8,8
> >
> > +        movzx   r13,r13b
> >
> > +        shr     r9,8
> >
> > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> >
> > +        shl     r10,56
> >
> > +        xor     r9,QWORD[rcx*8+rbp]
> >
> > +        rol     edx,8
> >
> > +        xor     r8,QWORD[8+rax*1+rsi]
> >
> > +        xor     r9,QWORD[rax*1+rsi]
> >
> > +        mov     al,dl
> >
> > +        xor     r8,r10
> >
> > +        movzx   r13,WORD[r13*2+r11]
> >
> > +        movzx   ecx,dl
> >
> > +        shl     al,4
> >
> > +        movzx   r12,BYTE[rbx*1+rsp]
> >
> > +        shr     ecx,4
> >
> > +        shl     r13,48
> >
> > +        xor     r12,r8
> >
> > +        mov     r10,r9
> >
> > +        xor     r9,r13
> >
> > +        shr     r8,8
> >
> > +        movzx   r12,r12b
> >
> > +        mov     edx,DWORD[8+rdi]
> >
> > +        shr     r9,8
> >
> > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> >
> > +        shl     r10,56
> >
> > +        xor     r9,QWORD[rbx*8+rbp]
> >
> > +        rol     edx,8
> >
> > +        xor     r8,QWORD[8+rax*1+rsi]
> >
> > +        xor     r9,QWORD[rax*1+rsi]
> >
> > +        mov     al,dl
> >
> > +        xor     r8,r10
> >
> > +        movzx   r12,WORD[r12*2+r11]
> >
> > +        movzx   ebx,dl
> >
> > +        shl     al,4
> >
> > +        movzx   r13,BYTE[rcx*1+rsp]
> >
> > +        shr     ebx,4
> >
> > +        shl     r12,48
> >
> > +        xor     r13,r8
> >
> > +        mov     r10,r9
> >
> > +        xor     r9,r12
> >
> > +        shr     r8,8
> >
> > +        movzx   r13,r13b
> >
> > +        shr     r9,8
> >
> > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> >
> > +        shl     r10,56
> >
> > +        xor     r9,QWORD[rcx*8+rbp]
> >
> > +        rol     edx,8
> >
> > +        xor     r8,QWORD[8+rax*1+rsi]
> >
> > +        xor     r9,QWORD[rax*1+rsi]
> >
> > +        mov     al,dl
> >
> > +        xor     r8,r10
> >
> > +        movzx   r13,WORD[r13*2+r11]
> >
> > +        movzx   ecx,dl
> >
> > +        shl     al,4
> >
> > +        movzx   r12,BYTE[rbx*1+rsp]
> >
> > +        shr     ecx,4
> >
> > +        shl     r13,48
> >
> > +        xor     r12,r8
> >
> > +        mov     r10,r9
> >
> > +        xor     r9,r13
> >
> > +        shr     r8,8
> >
> > +        movzx   r12,r12b
> >
> > +        shr     r9,8
> >
> > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> >
> > +        shl     r10,56
> >
> > +        xor     r9,QWORD[rbx*8+rbp]
> >
> > +        rol     edx,8
> >
> > +        xor     r8,QWORD[8+rax*1+rsi]
> >
> > +        xor     r9,QWORD[rax*1+rsi]
> >
> > +        mov     al,dl
> >
> > +        xor     r8,r10
> >
> > +        movzx   r12,WORD[r12*2+r11]
> >
> > +        movzx   ebx,dl
> >
> > +        shl     al,4
> >
> > +        movzx   r13,BYTE[rcx*1+rsp]
> >
> > +        shr     ebx,4
> >
> > +        shl     r12,48
> >
> > +        xor     r13,r8
> >
> > +        mov     r10,r9
> >
> > +        xor     r9,r12
> >
> > +        shr     r8,8
> >
> > +        movzx   r13,r13b
> >
> > +        shr     r9,8
> >
> > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> >
> > +        shl     r10,56
> >
> > +        xor     r9,QWORD[rcx*8+rbp]
> >
> > +        rol     edx,8
> >
> > +        xor     r8,QWORD[8+rax*1+rsi]
> >
> > +        xor     r9,QWORD[rax*1+rsi]
> >
> > +        mov     al,dl
> >
> > +        xor     r8,r10
> >
> > +        movzx   r13,WORD[r13*2+r11]
> >
> > +        movzx   ecx,dl
> >
> > +        shl     al,4
> >
> > +        movzx   r12,BYTE[rbx*1+rsp]
> >
> > +        shr     ecx,4
> >
> > +        shl     r13,48
> >
> > +        xor     r12,r8
> >
> > +        mov     r10,r9
> >
> > +        xor     r9,r13
> >
> > +        shr     r8,8
> >
> > +        movzx   r12,r12b
> >
> > +        mov     edx,DWORD[4+rdi]
> >
> > +        shr     r9,8
> >
> > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> >
> > +        shl     r10,56
> >
> > +        xor     r9,QWORD[rbx*8+rbp]
> >
> > +        rol     edx,8
> >
> > +        xor     r8,QWORD[8+rax*1+rsi]
> >
> > +        xor     r9,QWORD[rax*1+rsi]
> >
> > +        mov     al,dl
> >
> > +        xor     r8,r10
> >
> > +        movzx   r12,WORD[r12*2+r11]
> >
> > +        movzx   ebx,dl
> >
> > +        shl     al,4
> >
> > +        movzx   r13,BYTE[rcx*1+rsp]
> >
> > +        shr     ebx,4
> >
> > +        shl     r12,48
> >
> > +        xor     r13,r8
> >
> > +        mov     r10,r9
> >
> > +        xor     r9,r12
> >
> > +        shr     r8,8
> >
> > +        movzx   r13,r13b
> >
> > +        shr     r9,8
> >
> > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> >
> > +        shl     r10,56
> >
> > +        xor     r9,QWORD[rcx*8+rbp]
> >
> > +        rol     edx,8
> >
> > +        xor     r8,QWORD[8+rax*1+rsi]
> >
> > +        xor     r9,QWORD[rax*1+rsi]
> >
> > +        mov     al,dl
> >
> > +        xor     r8,r10
> >
> > +        movzx   r13,WORD[r13*2+r11]
> >
> > +        movzx   ecx,dl
> >
> > +        shl     al,4
> >
> > +        movzx   r12,BYTE[rbx*1+rsp]
> >
> > +        shr     ecx,4
> >
> > +        shl     r13,48
> >
> > +        xor     r12,r8
> >
> > +        mov     r10,r9
> >
> > +        xor     r9,r13
> >
> > +        shr     r8,8
> >
> > +        movzx   r12,r12b
> >
> > +        shr     r9,8
> >
> > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> >
> > +        shl     r10,56
> >
> > +        xor     r9,QWORD[rbx*8+rbp]
> >
> > +        rol     edx,8
> >
> > +        xor     r8,QWORD[8+rax*1+rsi]
> >
> > +        xor     r9,QWORD[rax*1+rsi]
> >
> > +        mov     al,dl
> >
> > +        xor     r8,r10
> >
> > +        movzx   r12,WORD[r12*2+r11]
> >
> > +        movzx   ebx,dl
> >
> > +        shl     al,4
> >
> > +        movzx   r13,BYTE[rcx*1+rsp]
> >
> > +        shr     ebx,4
> >
> > +        shl     r12,48
> >
> > +        xor     r13,r8
> >
> > +        mov     r10,r9
> >
> > +        xor     r9,r12
> >
> > +        shr     r8,8
> >
> > +        movzx   r13,r13b
> >
> > +        shr     r9,8
> >
> > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> >
> > +        shl     r10,56
> >
> > +        xor     r9,QWORD[rcx*8+rbp]
> >
> > +        rol     edx,8
> >
> > +        xor     r8,QWORD[8+rax*1+rsi]
> >
> > +        xor     r9,QWORD[rax*1+rsi]
> >
> > +        mov     al,dl
> >
> > +        xor     r8,r10
> >
> > +        movzx   r13,WORD[r13*2+r11]
> >
> > +        movzx   ecx,dl
> >
> > +        shl     al,4
> >
> > +        movzx   r12,BYTE[rbx*1+rsp]
> >
> > +        shr     ecx,4
> >
> > +        shl     r13,48
> >
> > +        xor     r12,r8
> >
> > +        mov     r10,r9
> >
> > +        xor     r9,r13
> >
> > +        shr     r8,8
> >
> > +        movzx   r12,r12b
> >
> > +        mov     edx,DWORD[rdi]
> >
> > +        shr     r9,8
> >
> > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> >
> > +        shl     r10,56
> >
> > +        xor     r9,QWORD[rbx*8+rbp]
> >
> > +        rol     edx,8
> >
> > +        xor     r8,QWORD[8+rax*1+rsi]
> >
> > +        xor     r9,QWORD[rax*1+rsi]
> >
> > +        mov     al,dl
> >
> > +        xor     r8,r10
> >
> > +        movzx   r12,WORD[r12*2+r11]
> >
> > +        movzx   ebx,dl
> >
> > +        shl     al,4
> >
> > +        movzx   r13,BYTE[rcx*1+rsp]
> >
> > +        shr     ebx,4
> >
> > +        shl     r12,48
> >
> > +        xor     r13,r8
> >
> > +        mov     r10,r9
> >
> > +        xor     r9,r12
> >
> > +        shr     r8,8
> >
> > +        movzx   r13,r13b
> >
> > +        shr     r9,8
> >
> > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> >
> > +        shl     r10,56
> >
> > +        xor     r9,QWORD[rcx*8+rbp]
> >
> > +        rol     edx,8
> >
> > +        xor     r8,QWORD[8+rax*1+rsi]
> >
> > +        xor     r9,QWORD[rax*1+rsi]
> >
> > +        mov     al,dl
> >
> > +        xor     r8,r10
> >
> > +        movzx   r13,WORD[r13*2+r11]
> >
> > +        movzx   ecx,dl
> >
> > +        shl     al,4
> >
> > +        movzx   r12,BYTE[rbx*1+rsp]
> >
> > +        shr     ecx,4
> >
> > +        shl     r13,48
> >
> > +        xor     r12,r8
> >
> > +        mov     r10,r9
> >
> > +        xor     r9,r13
> >
> > +        shr     r8,8
> >
> > +        movzx   r12,r12b
> >
> > +        shr     r9,8
> >
> > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> >
> > +        shl     r10,56
> >
> > +        xor     r9,QWORD[rbx*8+rbp]
> >
> > +        rol     edx,8
> >
> > +        xor     r8,QWORD[8+rax*1+rsi]
> >
> > +        xor     r9,QWORD[rax*1+rsi]
> >
> > +        mov     al,dl
> >
> > +        xor     r8,r10
> >
> > +        movzx   r12,WORD[r12*2+r11]
> >
> > +        movzx   ebx,dl
> >
> > +        shl     al,4
> >
> > +        movzx   r13,BYTE[rcx*1+rsp]
> >
> > +        shr     ebx,4
> >
> > +        shl     r12,48
> >
> > +        xor     r13,r8
> >
> > +        mov     r10,r9
> >
> > +        xor     r9,r12
> >
> > +        shr     r8,8
> >
> > +        movzx   r13,r13b
> >
> > +        shr     r9,8
> >
> > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> >
> > +        shl     r10,56
> >
> > +        xor     r9,QWORD[rcx*8+rbp]
> >
> > +        rol     edx,8
> >
> > +        xor     r8,QWORD[8+rax*1+rsi]
> >
> > +        xor     r9,QWORD[rax*1+rsi]
> >
> > +        mov     al,dl
> >
> > +        xor     r8,r10
> >
> > +        movzx   r13,WORD[r13*2+r11]
> >
> > +        movzx   ecx,dl
> >
> > +        shl     al,4
> >
> > +        movzx   r12,BYTE[rbx*1+rsp]
> >
> > +        and     ecx,240
> >
> > +        shl     r13,48
> >
> > +        xor     r12,r8
> >
> > +        mov     r10,r9
> >
> > +        xor     r9,r13
> >
> > +        shr     r8,8
> >
> > +        movzx   r12,r12b
> >
> > +        mov     edx,DWORD[((-4))+rdi]
> >
> > +        shr     r9,8
> >
> > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> >
> > +        shl     r10,56
> >
> > +        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
> >
> > +        movzx   r13,r8b
> >
> > +        shr     r8,4
> >
> > +        mov     r10,r9
> >
> > +        shl     r13b,4
> >
> > +        shr     r9,4
> >
> > +        xor     r8,QWORD[8+rcx*1+rsi]
> >
> > +        movzx   r13,WORD[r13*2+r11]
> >
> > +        shl     r10,60
> >
> > +        xor     r9,QWORD[rcx*1+rsi]
> >
> > +        xor     r8,r10
> >
> > +        shl     r13,48
> >
> > +        bswap   r8
> >
> > +        xor     r9,r13
> >
> > +        bswap   r9
> >
> > +        cmp     r14,r15
> >
> > +        jb      NEAR $L$outer_loop
> >
> > +        mov     QWORD[8+rdi],r8
> >
> > +        mov     QWORD[rdi],r9
> >
> > +
> >
> > +        lea     rsi,[((280+48))+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$ghash_epilogue:
> >
> > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> >
> > +        mov     rsi,QWORD[16+rsp]
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +$L$SEH_end_gcm_ghash_4bit:
> >
> > +global  gcm_init_clmul
> >
> > +
> >
> > +ALIGN   16
> >
> > +gcm_init_clmul:
> >
> > +
> >
> > +$L$_init_clmul:
> >
> > +$L$SEH_begin_gcm_init_clmul:
> >
> > +
> >
> > +DB      0x48,0x83,0xec,0x18
> >
> > +DB      0x0f,0x29,0x34,0x24
> >
> > +        movdqu  xmm2,XMMWORD[rdx]
> >
> > +        pshufd  xmm2,xmm2,78
> >
> > +
> >
> > +
> >
> > +        pshufd  xmm4,xmm2,255
> >
> > +        movdqa  xmm3,xmm2
> >
> > +        psllq   xmm2,1
> >
> > +        pxor    xmm5,xmm5
> >
> > +        psrlq   xmm3,63
> >
> > +        pcmpgtd xmm5,xmm4
> >
> > +        pslldq  xmm3,8
> >
> > +        por     xmm2,xmm3
> >
> > +
> >
> > +
> >
> > +        pand    xmm5,XMMWORD[$L$0x1c2_polynomial]
> >
> > +        pxor    xmm2,xmm5
> >
> > +
> >
> > +
> >
> > +        pshufd  xmm6,xmm2,78
> >
> > +        movdqa  xmm0,xmm2
> >
> > +        pxor    xmm6,xmm2
> >
> > +        movdqa  xmm1,xmm0
> >
> > +        pshufd  xmm3,xmm0,78
> >
> > +        pxor    xmm3,xmm0
> >
> > +DB      102,15,58,68,194,0
> >
> > +DB      102,15,58,68,202,17
> >
> > +DB      102,15,58,68,222,0
> >
> > +        pxor    xmm3,xmm0
> >
> > +        pxor    xmm3,xmm1
> >
> > +
> >
> > +        movdqa  xmm4,xmm3
> >
> > +        psrldq  xmm3,8
> >
> > +        pslldq  xmm4,8
> >
> > +        pxor    xmm1,xmm3
> >
> > +        pxor    xmm0,xmm4
> >
> > +
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        psllq   xmm0,5
> >
> > +        pxor    xmm3,xmm0
> >
> > +        psllq   xmm0,1
> >
> > +        pxor    xmm0,xmm3
> >
> > +        psllq   xmm0,57
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        pslldq  xmm0,8
> >
> > +        psrldq  xmm3,8
> >
> > +        pxor    xmm0,xmm4
> >
> > +        pxor    xmm1,xmm3
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        psrlq   xmm0,1
> >
> > +        pxor    xmm1,xmm4
> >
> > +        pxor    xmm4,xmm0
> >
> > +        psrlq   xmm0,5
> >
> > +        pxor    xmm0,xmm4
> >
> > +        psrlq   xmm0,1
> >
> > +        pxor    xmm0,xmm1
> >
> > +        pshufd  xmm3,xmm2,78
> >
> > +        pshufd  xmm4,xmm0,78
> >
> > +        pxor    xmm3,xmm2
> >
> > +        movdqu  XMMWORD[rcx],xmm2
> >
> > +        pxor    xmm4,xmm0
> >
> > +        movdqu  XMMWORD[16+rcx],xmm0
> >
> > +DB      102,15,58,15,227,8
> >
> > +        movdqu  XMMWORD[32+rcx],xmm4
> >
> > +        movdqa  xmm1,xmm0
> >
> > +        pshufd  xmm3,xmm0,78
> >
> > +        pxor    xmm3,xmm0
> >
> > +DB      102,15,58,68,194,0
> >
> > +DB      102,15,58,68,202,17
> >
> > +DB      102,15,58,68,222,0
> >
> > +        pxor    xmm3,xmm0
> >
> > +        pxor    xmm3,xmm1
> >
> > +
> >
> > +        movdqa  xmm4,xmm3
> >
> > +        psrldq  xmm3,8
> >
> > +        pslldq  xmm4,8
> >
> > +        pxor    xmm1,xmm3
> >
> > +        pxor    xmm0,xmm4
> >
> > +
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        psllq   xmm0,5
> >
> > +        pxor    xmm3,xmm0
> >
> > +        psllq   xmm0,1
> >
> > +        pxor    xmm0,xmm3
> >
> > +        psllq   xmm0,57
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        pslldq  xmm0,8
> >
> > +        psrldq  xmm3,8
> >
> > +        pxor    xmm0,xmm4
> >
> > +        pxor    xmm1,xmm3
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        psrlq   xmm0,1
> >
> > +        pxor    xmm1,xmm4
> >
> > +        pxor    xmm4,xmm0
> >
> > +        psrlq   xmm0,5
> >
> > +        pxor    xmm0,xmm4
> >
> > +        psrlq   xmm0,1
> >
> > +        pxor    xmm0,xmm1
> >
> > +        movdqa  xmm5,xmm0
> >
> > +        movdqa  xmm1,xmm0
> >
> > +        pshufd  xmm3,xmm0,78
> >
> > +        pxor    xmm3,xmm0
> >
> > +DB      102,15,58,68,194,0
> >
> > +DB      102,15,58,68,202,17
> >
> > +DB      102,15,58,68,222,0
> >
> > +        pxor    xmm3,xmm0
> >
> > +        pxor    xmm3,xmm1
> >
> > +
> >
> > +        movdqa  xmm4,xmm3
> >
> > +        psrldq  xmm3,8
> >
> > +        pslldq  xmm4,8
> >
> > +        pxor    xmm1,xmm3
> >
> > +        pxor    xmm0,xmm4
> >
> > +
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        psllq   xmm0,5
> >
> > +        pxor    xmm3,xmm0
> >
> > +        psllq   xmm0,1
> >
> > +        pxor    xmm0,xmm3
> >
> > +        psllq   xmm0,57
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        pslldq  xmm0,8
> >
> > +        psrldq  xmm3,8
> >
> > +        pxor    xmm0,xmm4
> >
> > +        pxor    xmm1,xmm3
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        psrlq   xmm0,1
> >
> > +        pxor    xmm1,xmm4
> >
> > +        pxor    xmm4,xmm0
> >
> > +        psrlq   xmm0,5
> >
> > +        pxor    xmm0,xmm4
> >
> > +        psrlq   xmm0,1
> >
> > +        pxor    xmm0,xmm1
> >
> > +        pshufd  xmm3,xmm5,78
> >
> > +        pshufd  xmm4,xmm0,78
> >
> > +        pxor    xmm3,xmm5
> >
> > +        movdqu  XMMWORD[48+rcx],xmm5
> >
> > +        pxor    xmm4,xmm0
> >
> > +        movdqu  XMMWORD[64+rcx],xmm0
> >
> > +DB      102,15,58,15,227,8
> >
> > +        movdqu  XMMWORD[80+rcx],xmm4
> >
> > +        movaps  xmm6,XMMWORD[rsp]
> >
> > +        lea     rsp,[24+rsp]
> >
> > +$L$SEH_end_gcm_init_clmul:
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +global  gcm_gmult_clmul
> >
> > +
> >
> > +ALIGN   16
> >
> > +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
> >
> > +        pxor    xmm3,xmm0
> >
> > +DB      102,15,58,68,194,0
> >
> > +DB      102,15,58,68,202,17
> >
> > +DB      102,15,58,68,220,0
> >
> > +        pxor    xmm3,xmm0
> >
> > +        pxor    xmm3,xmm1
> >
> > +
> >
> > +        movdqa  xmm4,xmm3
> >
> > +        psrldq  xmm3,8
> >
> > +        pslldq  xmm4,8
> >
> > +        pxor    xmm1,xmm3
> >
> > +        pxor    xmm0,xmm4
> >
> > +
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        psllq   xmm0,5
> >
> > +        pxor    xmm3,xmm0
> >
> > +        psllq   xmm0,1
> >
> > +        pxor    xmm0,xmm3
> >
> > +        psllq   xmm0,57
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        pslldq  xmm0,8
> >
> > +        psrldq  xmm3,8
> >
> > +        pxor    xmm0,xmm4
> >
> > +        pxor    xmm1,xmm3
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        psrlq   xmm0,1
> >
> > +        pxor    xmm1,xmm4
> >
> > +        pxor    xmm4,xmm0
> >
> > +        psrlq   xmm0,5
> >
> > +        pxor    xmm0,xmm4
> >
> > +        psrlq   xmm0,1
> >
> > +        pxor    xmm0,xmm1
> >
> > +DB      102,15,56,0,197
> >
> > +        movdqu  XMMWORD[rcx],xmm0
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +global  gcm_ghash_clmul
> >
> > +
> >
> > +ALIGN   32
> >
> > +gcm_ghash_clmul:
> >
> > +
> >
> > +$L$_ghash_clmul:
> >
> > +        lea     rax,[((-136))+rsp]
> >
> > +$L$SEH_begin_gcm_ghash_clmul:
> >
> > +
> >
> > +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[rcx]
> >
> > +        movdqu  xmm2,XMMWORD[rdx]
> >
> > +        movdqu  xmm7,XMMWORD[32+rdx]
> >
> > +DB      102,65,15,56,0,194
> >
> > +
> >
> > +        sub     r9,0x10
> >
> > +        jz      NEAR $L$odd_tail
> >
> > +
> >
> > +        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      NEAR $L$skip4x
> >
> > +
> >
> > +        sub     r9,0x30
> >
> > +        mov     rax,0xA040608020C0E000
> >
> > +        movdqu  xmm14,XMMWORD[48+rdx]
> >
> > +        movdqu  xmm15,XMMWORD[64+rdx]
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +        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
> >
> > +        pshufd  xmm4,xmm3,78
> >
> > +        pxor    xmm4,xmm3
> >
> > +DB      102,15,58,68,218,0
> >
> > +DB      102,15,58,68,234,17
> >
> > +DB      102,15,58,68,231,0
> >
> > +
> >
> > +        movdqa  xmm13,xmm11
> >
> > +        pshufd  xmm12,xmm11,78
> >
> > +        pxor    xmm12,xmm11
> >
> > +DB      102,68,15,58,68,222,0
> >
> > +DB      102,68,15,58,68,238,17
> >
> > +DB      102,68,15,58,68,231,16
> >
> > +        xorps   xmm3,xmm11
> >
> > +        xorps   xmm5,xmm13
> >
> > +        movups  xmm7,XMMWORD[80+rdx]
> >
> > +        xorps   xmm4,xmm12
> >
> > +
> >
> > +        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
> >
> > +        pshufd  xmm12,xmm11,78
> >
> > +        pxor    xmm0,xmm8
> >
> > +        pxor    xmm12,xmm11
> >
> > +DB      102,69,15,58,68,222,0
> >
> > +        movdqa  xmm1,xmm0
> >
> > +        pshufd  xmm8,xmm0,78
> >
> > +        pxor    xmm8,xmm0
> >
> > +DB      102,69,15,58,68,238,17
> >
> > +DB      102,68,15,58,68,231,0
> >
> > +        xorps   xmm3,xmm11
> >
> > +        xorps   xmm5,xmm13
> >
> > +
> >
> > +        lea     r8,[64+r8]
> >
> > +        sub     r9,0x40
> >
> > +        jc      NEAR $L$tail4x
> >
> > +
> >
> > +        jmp     NEAR $L$mod4_loop
> >
> > +ALIGN   32
> >
> > +$L$mod4_loop:
> >
> > +DB      102,65,15,58,68,199,0
> >
> > +        xorps   xmm4,xmm12
> >
> > +        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[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[32+rdx]
> >
> > +        xorps   xmm8,xmm4
> >
> > +DB      102,68,15,58,68,218,0
> >
> > +        pshufd  xmm4,xmm3,78
> >
> > +
> >
> > +        pxor    xmm8,xmm0
> >
> > +        movdqa  xmm5,xmm3
> >
> > +        pxor    xmm8,xmm1
> >
> > +        pxor    xmm4,xmm3
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      102,68,15,58,68,234,17
> >
> > +        pslldq  xmm8,8
> >
> > +        psrldq  xmm9,8
> >
> > +        pxor    xmm0,xmm8
> >
> > +        movdqa  xmm8,XMMWORD[$L$7_mask]
> >
> > +        pxor    xmm1,xmm9
> >
> > +DB      102,76,15,110,200
> >
> > +
> >
> > +        pand    xmm8,xmm0
> >
> > +DB      102,69,15,56,0,200
> >
> > +        pxor    xmm9,xmm0
> >
> > +DB      102,68,15,58,68,231,0
> >
> > +        psllq   xmm9,57
> >
> > +        movdqa  xmm8,xmm9
> >
> > +        pslldq  xmm9,8
> >
> > +DB      102,15,58,68,222,0
> >
> > +        psrldq  xmm8,8
> >
> > +        pxor    xmm0,xmm9
> >
> > +        pxor    xmm1,xmm8
> >
> > +        movdqu  xmm8,XMMWORD[r8]
> >
> > +
> >
> > +        movdqa  xmm9,xmm0
> >
> > +        psrlq   xmm0,1
> >
> > +DB      102,15,58,68,238,17
> >
> > +        xorps   xmm3,xmm11
> >
> > +        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[80+rdx]
> >
> > +DB      102,69,15,56,0,194
> >
> > +        pxor    xmm1,xmm9
> >
> > +        pxor    xmm9,xmm0
> >
> > +        psrlq   xmm0,5
> >
> > +
> >
> > +        movdqa  xmm13,xmm11
> >
> > +        pxor    xmm4,xmm12
> >
> > +        pshufd  xmm12,xmm11,78
> >
> > +        pxor    xmm0,xmm9
> >
> > +        pxor    xmm1,xmm8
> >
> > +        pxor    xmm12,xmm11
> >
> > +DB      102,69,15,58,68,222,0
> >
> > +        psrlq   xmm0,1
> >
> > +        pxor    xmm0,xmm1
> >
> > +        movdqa  xmm1,xmm0
> >
> > +DB      102,69,15,58,68,238,17
> >
> > +        xorps   xmm3,xmm11
> >
> > +        pshufd  xmm8,xmm0,78
> >
> > +        pxor    xmm8,xmm0
> >
> > +
> >
> > +DB      102,68,15,58,68,231,0
> >
> > +        xorps   xmm5,xmm13
> >
> > +
> >
> > +        lea     r8,[64+r8]
> >
> > +        sub     r9,0x40
> >
> > +        jnc     NEAR $L$mod4_loop
> >
> > +
> >
> > +$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
> >
> > +        xorps   xmm4,xmm12
> >
> > +        xorps   xmm0,xmm3
> >
> > +        xorps   xmm1,xmm5
> >
> > +        pxor    xmm1,xmm0
> >
> > +        pxor    xmm8,xmm4
> >
> > +
> >
> > +        pxor    xmm8,xmm1
> >
> > +        pxor    xmm1,xmm0
> >
> > +
> >
> > +        movdqa  xmm9,xmm8
> >
> > +        psrldq  xmm8,8
> >
> > +        pslldq  xmm9,8
> >
> > +        pxor    xmm1,xmm8
> >
> > +        pxor    xmm0,xmm9
> >
> > +
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        psllq   xmm0,5
> >
> > +        pxor    xmm3,xmm0
> >
> > +        psllq   xmm0,1
> >
> > +        pxor    xmm0,xmm3
> >
> > +        psllq   xmm0,57
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        pslldq  xmm0,8
> >
> > +        psrldq  xmm3,8
> >
> > +        pxor    xmm0,xmm4
> >
> > +        pxor    xmm1,xmm3
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        psrlq   xmm0,1
> >
> > +        pxor    xmm1,xmm4
> >
> > +        pxor    xmm4,xmm0
> >
> > +        psrlq   xmm0,5
> >
> > +        pxor    xmm0,xmm4
> >
> > +        psrlq   xmm0,1
> >
> > +        pxor    xmm0,xmm1
> >
> > +        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[r8]
> >
> > +        movdqu  xmm3,XMMWORD[16+r8]
> >
> > +DB      102,69,15,56,0,194
> >
> > +DB      102,65,15,56,0,218
> >
> > +        pxor    xmm0,xmm8
> >
> > +
> >
> > +        movdqa  xmm5,xmm3
> >
> > +        pshufd  xmm4,xmm3,78
> >
> > +        pxor    xmm4,xmm3
> >
> > +DB      102,15,58,68,218,0
> >
> > +DB      102,15,58,68,234,17
> >
> > +DB      102,15,58,68,231,0
> >
> > +
> >
> > +        lea     r8,[32+r8]
> >
> > +        nop
> >
> > +        sub     r9,0x20
> >
> > +        jbe     NEAR $L$even_tail
> >
> > +        nop
> >
> > +        jmp     NEAR $L$mod_loop
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$mod_loop:
> >
> > +        movdqa  xmm1,xmm0
> >
> > +        movdqa  xmm8,xmm4
> >
> > +        pshufd  xmm4,xmm0,78
> >
> > +        pxor    xmm4,xmm0
> >
> > +
> >
> > +DB      102,15,58,68,198,0
> >
> > +DB      102,15,58,68,206,17
> >
> > +DB      102,15,58,68,231,16
> >
> > +
> >
> > +        pxor    xmm0,xmm3
> >
> > +        pxor    xmm1,xmm5
> >
> > +        movdqu  xmm9,XMMWORD[r8]
> >
> > +        pxor    xmm8,xmm0
> >
> > +DB      102,69,15,56,0,202
> >
> > +        movdqu  xmm3,XMMWORD[16+r8]
> >
> > +
> >
> > +        pxor    xmm8,xmm1
> >
> > +        pxor    xmm1,xmm9
> >
> > +        pxor    xmm4,xmm8
> >
> > +DB      102,65,15,56,0,218
> >
> > +        movdqa  xmm8,xmm4
> >
> > +        psrldq  xmm8,8
> >
> > +        pslldq  xmm4,8
> >
> > +        pxor    xmm1,xmm8
> >
> > +        pxor    xmm0,xmm4
> >
> > +
> >
> > +        movdqa  xmm5,xmm3
> >
> > +
> >
> > +        movdqa  xmm9,xmm0
> >
> > +        movdqa  xmm8,xmm0
> >
> > +        psllq   xmm0,5
> >
> > +        pxor    xmm8,xmm0
> >
> > +DB      102,15,58,68,218,0
> >
> > +        psllq   xmm0,1
> >
> > +        pxor    xmm0,xmm8
> >
> > +        psllq   xmm0,57
> >
> > +        movdqa  xmm8,xmm0
> >
> > +        pslldq  xmm0,8
> >
> > +        psrldq  xmm8,8
> >
> > +        pxor    xmm0,xmm9
> >
> > +        pshufd  xmm4,xmm5,78
> >
> > +        pxor    xmm1,xmm8
> >
> > +        pxor    xmm4,xmm5
> >
> > +
> >
> > +        movdqa  xmm9,xmm0
> >
> > +        psrlq   xmm0,1
> >
> > +DB      102,15,58,68,234,17
> >
> > +        pxor    xmm1,xmm9
> >
> > +        pxor    xmm9,xmm0
> >
> > +        psrlq   xmm0,5
> >
> > +        pxor    xmm0,xmm9
> >
> > +        lea     r8,[32+r8]
> >
> > +        psrlq   xmm0,1
> >
> > +DB      102,15,58,68,231,0
> >
> > +        pxor    xmm0,xmm1
> >
> > +
> >
> > +        sub     r9,0x20
> >
> > +        ja      NEAR $L$mod_loop
> >
> > +
> >
> > +$L$even_tail:
> >
> > +        movdqa  xmm1,xmm0
> >
> > +        movdqa  xmm8,xmm4
> >
> > +        pshufd  xmm4,xmm0,78
> >
> > +        pxor    xmm4,xmm0
> >
> > +
> >
> > +DB      102,15,58,68,198,0
> >
> > +DB      102,15,58,68,206,17
> >
> > +DB      102,15,58,68,231,16
> >
> > +
> >
> > +        pxor    xmm0,xmm3
> >
> > +        pxor    xmm1,xmm5
> >
> > +        pxor    xmm8,xmm0
> >
> > +        pxor    xmm8,xmm1
> >
> > +        pxor    xmm4,xmm8
> >
> > +        movdqa  xmm8,xmm4
> >
> > +        psrldq  xmm8,8
> >
> > +        pslldq  xmm4,8
> >
> > +        pxor    xmm1,xmm8
> >
> > +        pxor    xmm0,xmm4
> >
> > +
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        psllq   xmm0,5
> >
> > +        pxor    xmm3,xmm0
> >
> > +        psllq   xmm0,1
> >
> > +        pxor    xmm0,xmm3
> >
> > +        psllq   xmm0,57
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        pslldq  xmm0,8
> >
> > +        psrldq  xmm3,8
> >
> > +        pxor    xmm0,xmm4
> >
> > +        pxor    xmm1,xmm3
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        psrlq   xmm0,1
> >
> > +        pxor    xmm1,xmm4
> >
> > +        pxor    xmm4,xmm0
> >
> > +        psrlq   xmm0,5
> >
> > +        pxor    xmm0,xmm4
> >
> > +        psrlq   xmm0,1
> >
> > +        pxor    xmm0,xmm1
> >
> > +        test    r9,r9
> >
> > +        jnz     NEAR $L$done
> >
> > +
> >
> > +$L$odd_tail:
> >
> > +        movdqu  xmm8,XMMWORD[r8]
> >
> > +DB      102,69,15,56,0,194
> >
> > +        pxor    xmm0,xmm8
> >
> > +        movdqa  xmm1,xmm0
> >
> > +        pshufd  xmm3,xmm0,78
> >
> > +        pxor    xmm3,xmm0
> >
> > +DB      102,15,58,68,194,0
> >
> > +DB      102,15,58,68,202,17
> >
> > +DB      102,15,58,68,223,0
> >
> > +        pxor    xmm3,xmm0
> >
> > +        pxor    xmm3,xmm1
> >
> > +
> >
> > +        movdqa  xmm4,xmm3
> >
> > +        psrldq  xmm3,8
> >
> > +        pslldq  xmm4,8
> >
> > +        pxor    xmm1,xmm3
> >
> > +        pxor    xmm0,xmm4
> >
> > +
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        psllq   xmm0,5
> >
> > +        pxor    xmm3,xmm0
> >
> > +        psllq   xmm0,1
> >
> > +        pxor    xmm0,xmm3
> >
> > +        psllq   xmm0,57
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        pslldq  xmm0,8
> >
> > +        psrldq  xmm3,8
> >
> > +        pxor    xmm0,xmm4
> >
> > +        pxor    xmm1,xmm3
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        psrlq   xmm0,1
> >
> > +        pxor    xmm1,xmm4
> >
> > +        pxor    xmm4,xmm0
> >
> > +        psrlq   xmm0,5
> >
> > +        pxor    xmm0,xmm4
> >
> > +        psrlq   xmm0,1
> >
> > +        pxor    xmm0,xmm1
> >
> > +$L$done:
> >
> > +DB      102,65,15,56,0,194
> >
> > +        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
> >
> > +
> >
> > +
> >
> > +global  gcm_init_avx
> >
> > +
> >
> > +ALIGN   32
> >
> > +gcm_init_avx:
> >
> > +
> >
> > +        jmp     NEAR $L$_init_clmul
> >
> > +
> >
> > +
> >
> > +global  gcm_gmult_avx
> >
> > +
> >
> > +ALIGN   32
> >
> > +gcm_gmult_avx:
> >
> > +
> >
> > +        jmp     NEAR $L$_gmult_clmul
> >
> > +
> >
> > +
> >
> > +global  gcm_ghash_avx
> >
> > +
> >
> > +ALIGN   32
> >
> > +gcm_ghash_avx:
> >
> > +
> >
> > +        jmp     NEAR $L$_ghash_clmul
> >
> > +
> >
> > +
> >
> > +ALIGN   64
> >
> > +$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,0xc2
> >
> > +$L$7_mask:
> >
> > +        DD      7,0,7,0
> >
> > +$L$7_mask_poly:
> >
> > +        DD      7,0,450,0
> >
> > +ALIGN   64
> >
> > +
> >
> > +$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      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
> >
> > +
> >
> > +ALIGN   16
> >
> > +se_handler:
> >
> > +        push    rsi
> >
> > +        push    rdi
> >
> > +        push    rbx
> >
> > +        push    rbp
> >
> > +        push    r12
> >
> > +        push    r13
> >
> > +        push    r14
> >
> > +        push    r15
> >
> > +        pushfq
> >
> > +        sub     rsp,64
> >
> > +
> >
> > +        mov     rax,QWORD[120+r8]
> >
> > +        mov     rbx,QWORD[248+r8]
> >
> > +
> >
> > +        mov     rsi,QWORD[8+r9]
> >
> > +        mov     r11,QWORD[56+r9]
> >
> > +
> >
> > +        mov     r10d,DWORD[r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$in_prologue
> >
> > +
> >
> > +        mov     rax,QWORD[152+r8]
> >
> > +
> >
> > +        mov     r10d,DWORD[4+r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jae     NEAR $L$in_prologue
> >
> > +
> >
> > +        lea     rax,[((48+280))+rax]
> >
> > +
> >
> > +        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_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[40+r9]
> >
> > +        mov     rsi,r8
> >
> > +        mov     ecx,154
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +        mov     rsi,r9
> >
> > +        xor     rcx,rcx
> >
> > +        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
> >
> > +        popfq
> >
> > +        pop     r15
> >
> > +        pop     r14
> >
> > +        pop     r13
> >
> > +        pop     r12
> >
> > +        pop     rbp
> >
> > +        pop     rbx
> >
> > +        pop     rdi
> >
> > +        pop     rsi
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +section .pdata rdata align=4
> >
> > +ALIGN   4
> >
> > +        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      $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      $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      $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:
> >
> > +DB      9,0,0,0
> >
> > +        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      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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
> > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
> > x86_64.nasm
> > new file mode 100644
> > index 0000000000..f3b7b0e35e
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm
> > @@ -0,0 +1,3137 @@
> > +; WARNING: do not edit!
> >
> > +; Generated from openssl/crypto/sha/asm/sha1-mb-x86_64.pl
> >
> > +;
> >
> > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
> >
> > +;
> >
> > +; Licensed under the OpenSSL license (the "License").  You may not use
> >
> > +; this file except in compliance with the License.  You can obtain a copy
> >
> > +; in the file LICENSE in the source distribution or at
> >
> > +; https://www.openssl.org/source/license.html
> >
> > +
> >
> > +default rel
> >
> > +%define XMMWORD
> >
> > +%define YMMWORD
> >
> > +%define ZMMWORD
> >
> > +section .text code align=64
> >
> > +
> >
> > +
> >
> > +EXTERN  OPENSSL_ia32cap_P
> >
> > +
> >
> > +global  sha1_multi_block
> >
> > +
> >
> > +ALIGN   32
> >
> > +sha1_multi_block:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_sha1_multi_block:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +
> >
> > +
> >
> > +
> >
> > +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
> >
> > +        bt      rcx,61
> >
> > +        jc      NEAR _shaext_shortcut
> >
> > +        mov     rax,rsp
> >
> > +
> >
> > +        push    rbx
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        lea     rsp,[((-168))+rsp]
> >
> > +        movaps  XMMWORD[rsp],xmm6
> >
> > +        movaps  XMMWORD[16+rsp],xmm7
> >
> > +        movaps  XMMWORD[32+rsp],xmm8
> >
> > +        movaps  XMMWORD[48+rsp],xmm9
> >
> > +        movaps  XMMWORD[(-120)+rax],xmm10
> >
> > +        movaps  XMMWORD[(-104)+rax],xmm11
> >
> > +        movaps  XMMWORD[(-88)+rax],xmm12
> >
> > +        movaps  XMMWORD[(-72)+rax],xmm13
> >
> > +        movaps  XMMWORD[(-56)+rax],xmm14
> >
> > +        movaps  XMMWORD[(-40)+rax],xmm15
> >
> > +        sub     rsp,288
> >
> > +        and     rsp,-256
> >
> > +        mov     QWORD[272+rsp],rax
> >
> > +
> >
> > +$L$body:
> >
> > +        lea     rbp,[K_XX_XX]
> >
> > +        lea     rbx,[256+rsp]
> >
> > +
> >
> > +$L$oop_grande:
> >
> > +        mov     DWORD[280+rsp],edx
> >
> > +        xor     edx,edx
> >
> > +        mov     r8,QWORD[rsi]
> >
> > +        mov     ecx,DWORD[8+rsi]
> >
> > +        cmp     ecx,edx
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        mov     DWORD[rbx],ecx
> >
> > +        cmovle  r8,rbp
> >
> > +        mov     r9,QWORD[16+rsi]
> >
> > +        mov     ecx,DWORD[24+rsi]
> >
> > +        cmp     ecx,edx
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        mov     DWORD[4+rbx],ecx
> >
> > +        cmovle  r9,rbp
> >
> > +        mov     r10,QWORD[32+rsi]
> >
> > +        mov     ecx,DWORD[40+rsi]
> >
> > +        cmp     ecx,edx
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        mov     DWORD[8+rbx],ecx
> >
> > +        cmovle  r10,rbp
> >
> > +        mov     r11,QWORD[48+rsi]
> >
> > +        mov     ecx,DWORD[56+rsi]
> >
> > +        cmp     ecx,edx
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        mov     DWORD[12+rbx],ecx
> >
> > +        cmovle  r11,rbp
> >
> > +        test    edx,edx
> >
> > +        jz      NEAR $L$done
> >
> > +
> >
> > +        movdqu  xmm10,XMMWORD[rdi]
> >
> > +        lea     rax,[128+rsp]
> >
> > +        movdqu  xmm11,XMMWORD[32+rdi]
> >
> > +        movdqu  xmm12,XMMWORD[64+rdi]
> >
> > +        movdqu  xmm13,XMMWORD[96+rdi]
> >
> > +        movdqu  xmm14,XMMWORD[128+rdi]
> >
> > +        movdqa  xmm5,XMMWORD[96+rbp]
> >
> > +        movdqa  xmm15,XMMWORD[((-32))+rbp]
> >
> > +        jmp     NEAR $L$oop
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$oop:
> >
> > +        movd    xmm0,DWORD[r8]
> >
> > +        lea     r8,[64+r8]
> >
> > +        movd    xmm2,DWORD[r9]
> >
> > +        lea     r9,[64+r9]
> >
> > +        movd    xmm3,DWORD[r10]
> >
> > +        lea     r10,[64+r10]
> >
> > +        movd    xmm4,DWORD[r11]
> >
> > +        lea     r11,[64+r11]
> >
> > +        punpckldq       xmm0,xmm3
> >
> > +        movd    xmm1,DWORD[((-60))+r8]
> >
> > +        punpckldq       xmm2,xmm4
> >
> > +        movd    xmm9,DWORD[((-60))+r9]
> >
> > +        punpckldq       xmm0,xmm2
> >
> > +        movd    xmm8,DWORD[((-60))+r10]
> >
> > +DB      102,15,56,0,197
> >
> > +        movd    xmm7,DWORD[((-60))+r11]
> >
> > +        punpckldq       xmm1,xmm8
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        paddd   xmm14,xmm15
> >
> > +        punpckldq       xmm9,xmm7
> >
> > +        movdqa  xmm7,xmm11
> >
> > +        movdqa  xmm6,xmm11
> >
> > +        pslld   xmm8,5
> >
> > +        pandn   xmm7,xmm13
> >
> > +        pand    xmm6,xmm12
> >
> > +        punpckldq       xmm1,xmm9
> >
> > +        movdqa  xmm9,xmm10
> >
> > +
> >
> > +        movdqa  XMMWORD[(0-128)+rax],xmm0
> >
> > +        paddd   xmm14,xmm0
> >
> > +        movd    xmm2,DWORD[((-56))+r8]
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +        movdqa  xmm7,xmm11
> >
> > +
> >
> > +        por     xmm8,xmm9
> >
> > +        movd    xmm9,DWORD[((-56))+r9]
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm14,xmm6
> >
> > +
> >
> > +        psrld   xmm11,2
> >
> > +        paddd   xmm14,xmm8
> >
> > +DB      102,15,56,0,205
> >
> > +        movd    xmm8,DWORD[((-56))+r10]
> >
> > +        por     xmm11,xmm7
> >
> > +        movd    xmm7,DWORD[((-56))+r11]
> >
> > +        punpckldq       xmm2,xmm8
> >
> > +        movdqa  xmm8,xmm14
> >
> > +        paddd   xmm13,xmm15
> >
> > +        punpckldq       xmm9,xmm7
> >
> > +        movdqa  xmm7,xmm10
> >
> > +        movdqa  xmm6,xmm10
> >
> > +        pslld   xmm8,5
> >
> > +        pandn   xmm7,xmm12
> >
> > +        pand    xmm6,xmm11
> >
> > +        punpckldq       xmm2,xmm9
> >
> > +        movdqa  xmm9,xmm14
> >
> > +
> >
> > +        movdqa  XMMWORD[(16-128)+rax],xmm1
> >
> > +        paddd   xmm13,xmm1
> >
> > +        movd    xmm3,DWORD[((-52))+r8]
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +        movdqa  xmm7,xmm10
> >
> > +
> >
> > +        por     xmm8,xmm9
> >
> > +        movd    xmm9,DWORD[((-52))+r9]
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm13,xmm6
> >
> > +
> >
> > +        psrld   xmm10,2
> >
> > +        paddd   xmm13,xmm8
> >
> > +DB      102,15,56,0,213
> >
> > +        movd    xmm8,DWORD[((-52))+r10]
> >
> > +        por     xmm10,xmm7
> >
> > +        movd    xmm7,DWORD[((-52))+r11]
> >
> > +        punpckldq       xmm3,xmm8
> >
> > +        movdqa  xmm8,xmm13
> >
> > +        paddd   xmm12,xmm15
> >
> > +        punpckldq       xmm9,xmm7
> >
> > +        movdqa  xmm7,xmm14
> >
> > +        movdqa  xmm6,xmm14
> >
> > +        pslld   xmm8,5
> >
> > +        pandn   xmm7,xmm11
> >
> > +        pand    xmm6,xmm10
> >
> > +        punpckldq       xmm3,xmm9
> >
> > +        movdqa  xmm9,xmm13
> >
> > +
> >
> > +        movdqa  XMMWORD[(32-128)+rax],xmm2
> >
> > +        paddd   xmm12,xmm2
> >
> > +        movd    xmm4,DWORD[((-48))+r8]
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +        movdqa  xmm7,xmm14
> >
> > +
> >
> > +        por     xmm8,xmm9
> >
> > +        movd    xmm9,DWORD[((-48))+r9]
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm12,xmm6
> >
> > +
> >
> > +        psrld   xmm14,2
> >
> > +        paddd   xmm12,xmm8
> >
> > +DB      102,15,56,0,221
> >
> > +        movd    xmm8,DWORD[((-48))+r10]
> >
> > +        por     xmm14,xmm7
> >
> > +        movd    xmm7,DWORD[((-48))+r11]
> >
> > +        punpckldq       xmm4,xmm8
> >
> > +        movdqa  xmm8,xmm12
> >
> > +        paddd   xmm11,xmm15
> >
> > +        punpckldq       xmm9,xmm7
> >
> > +        movdqa  xmm7,xmm13
> >
> > +        movdqa  xmm6,xmm13
> >
> > +        pslld   xmm8,5
> >
> > +        pandn   xmm7,xmm10
> >
> > +        pand    xmm6,xmm14
> >
> > +        punpckldq       xmm4,xmm9
> >
> > +        movdqa  xmm9,xmm12
> >
> > +
> >
> > +        movdqa  XMMWORD[(48-128)+rax],xmm3
> >
> > +        paddd   xmm11,xmm3
> >
> > +        movd    xmm0,DWORD[((-44))+r8]
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +        movdqa  xmm7,xmm13
> >
> > +
> >
> > +        por     xmm8,xmm9
> >
> > +        movd    xmm9,DWORD[((-44))+r9]
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm11,xmm6
> >
> > +
> >
> > +        psrld   xmm13,2
> >
> > +        paddd   xmm11,xmm8
> >
> > +DB      102,15,56,0,229
> >
> > +        movd    xmm8,DWORD[((-44))+r10]
> >
> > +        por     xmm13,xmm7
> >
> > +        movd    xmm7,DWORD[((-44))+r11]
> >
> > +        punpckldq       xmm0,xmm8
> >
> > +        movdqa  xmm8,xmm11
> >
> > +        paddd   xmm10,xmm15
> >
> > +        punpckldq       xmm9,xmm7
> >
> > +        movdqa  xmm7,xmm12
> >
> > +        movdqa  xmm6,xmm12
> >
> > +        pslld   xmm8,5
> >
> > +        pandn   xmm7,xmm14
> >
> > +        pand    xmm6,xmm13
> >
> > +        punpckldq       xmm0,xmm9
> >
> > +        movdqa  xmm9,xmm11
> >
> > +
> >
> > +        movdqa  XMMWORD[(64-128)+rax],xmm4
> >
> > +        paddd   xmm10,xmm4
> >
> > +        movd    xmm1,DWORD[((-40))+r8]
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +        movdqa  xmm7,xmm12
> >
> > +
> >
> > +        por     xmm8,xmm9
> >
> > +        movd    xmm9,DWORD[((-40))+r9]
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm10,xmm6
> >
> > +
> >
> > +        psrld   xmm12,2
> >
> > +        paddd   xmm10,xmm8
> >
> > +DB      102,15,56,0,197
> >
> > +        movd    xmm8,DWORD[((-40))+r10]
> >
> > +        por     xmm12,xmm7
> >
> > +        movd    xmm7,DWORD[((-40))+r11]
> >
> > +        punpckldq       xmm1,xmm8
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        paddd   xmm14,xmm15
> >
> > +        punpckldq       xmm9,xmm7
> >
> > +        movdqa  xmm7,xmm11
> >
> > +        movdqa  xmm6,xmm11
> >
> > +        pslld   xmm8,5
> >
> > +        pandn   xmm7,xmm13
> >
> > +        pand    xmm6,xmm12
> >
> > +        punpckldq       xmm1,xmm9
> >
> > +        movdqa  xmm9,xmm10
> >
> > +
> >
> > +        movdqa  XMMWORD[(80-128)+rax],xmm0
> >
> > +        paddd   xmm14,xmm0
> >
> > +        movd    xmm2,DWORD[((-36))+r8]
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +        movdqa  xmm7,xmm11
> >
> > +
> >
> > +        por     xmm8,xmm9
> >
> > +        movd    xmm9,DWORD[((-36))+r9]
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm14,xmm6
> >
> > +
> >
> > +        psrld   xmm11,2
> >
> > +        paddd   xmm14,xmm8
> >
> > +DB      102,15,56,0,205
> >
> > +        movd    xmm8,DWORD[((-36))+r10]
> >
> > +        por     xmm11,xmm7
> >
> > +        movd    xmm7,DWORD[((-36))+r11]
> >
> > +        punpckldq       xmm2,xmm8
> >
> > +        movdqa  xmm8,xmm14
> >
> > +        paddd   xmm13,xmm15
> >
> > +        punpckldq       xmm9,xmm7
> >
> > +        movdqa  xmm7,xmm10
> >
> > +        movdqa  xmm6,xmm10
> >
> > +        pslld   xmm8,5
> >
> > +        pandn   xmm7,xmm12
> >
> > +        pand    xmm6,xmm11
> >
> > +        punpckldq       xmm2,xmm9
> >
> > +        movdqa  xmm9,xmm14
> >
> > +
> >
> > +        movdqa  XMMWORD[(96-128)+rax],xmm1
> >
> > +        paddd   xmm13,xmm1
> >
> > +        movd    xmm3,DWORD[((-32))+r8]
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +        movdqa  xmm7,xmm10
> >
> > +
> >
> > +        por     xmm8,xmm9
> >
> > +        movd    xmm9,DWORD[((-32))+r9]
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm13,xmm6
> >
> > +
> >
> > +        psrld   xmm10,2
> >
> > +        paddd   xmm13,xmm8
> >
> > +DB      102,15,56,0,213
> >
> > +        movd    xmm8,DWORD[((-32))+r10]
> >
> > +        por     xmm10,xmm7
> >
> > +        movd    xmm7,DWORD[((-32))+r11]
> >
> > +        punpckldq       xmm3,xmm8
> >
> > +        movdqa  xmm8,xmm13
> >
> > +        paddd   xmm12,xmm15
> >
> > +        punpckldq       xmm9,xmm7
> >
> > +        movdqa  xmm7,xmm14
> >
> > +        movdqa  xmm6,xmm14
> >
> > +        pslld   xmm8,5
> >
> > +        pandn   xmm7,xmm11
> >
> > +        pand    xmm6,xmm10
> >
> > +        punpckldq       xmm3,xmm9
> >
> > +        movdqa  xmm9,xmm13
> >
> > +
> >
> > +        movdqa  XMMWORD[(112-128)+rax],xmm2
> >
> > +        paddd   xmm12,xmm2
> >
> > +        movd    xmm4,DWORD[((-28))+r8]
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +        movdqa  xmm7,xmm14
> >
> > +
> >
> > +        por     xmm8,xmm9
> >
> > +        movd    xmm9,DWORD[((-28))+r9]
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm12,xmm6
> >
> > +
> >
> > +        psrld   xmm14,2
> >
> > +        paddd   xmm12,xmm8
> >
> > +DB      102,15,56,0,221
> >
> > +        movd    xmm8,DWORD[((-28))+r10]
> >
> > +        por     xmm14,xmm7
> >
> > +        movd    xmm7,DWORD[((-28))+r11]
> >
> > +        punpckldq       xmm4,xmm8
> >
> > +        movdqa  xmm8,xmm12
> >
> > +        paddd   xmm11,xmm15
> >
> > +        punpckldq       xmm9,xmm7
> >
> > +        movdqa  xmm7,xmm13
> >
> > +        movdqa  xmm6,xmm13
> >
> > +        pslld   xmm8,5
> >
> > +        pandn   xmm7,xmm10
> >
> > +        pand    xmm6,xmm14
> >
> > +        punpckldq       xmm4,xmm9
> >
> > +        movdqa  xmm9,xmm12
> >
> > +
> >
> > +        movdqa  XMMWORD[(128-128)+rax],xmm3
> >
> > +        paddd   xmm11,xmm3
> >
> > +        movd    xmm0,DWORD[((-24))+r8]
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +        movdqa  xmm7,xmm13
> >
> > +
> >
> > +        por     xmm8,xmm9
> >
> > +        movd    xmm9,DWORD[((-24))+r9]
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm11,xmm6
> >
> > +
> >
> > +        psrld   xmm13,2
> >
> > +        paddd   xmm11,xmm8
> >
> > +DB      102,15,56,0,229
> >
> > +        movd    xmm8,DWORD[((-24))+r10]
> >
> > +        por     xmm13,xmm7
> >
> > +        movd    xmm7,DWORD[((-24))+r11]
> >
> > +        punpckldq       xmm0,xmm8
> >
> > +        movdqa  xmm8,xmm11
> >
> > +        paddd   xmm10,xmm15
> >
> > +        punpckldq       xmm9,xmm7
> >
> > +        movdqa  xmm7,xmm12
> >
> > +        movdqa  xmm6,xmm12
> >
> > +        pslld   xmm8,5
> >
> > +        pandn   xmm7,xmm14
> >
> > +        pand    xmm6,xmm13
> >
> > +        punpckldq       xmm0,xmm9
> >
> > +        movdqa  xmm9,xmm11
> >
> > +
> >
> > +        movdqa  XMMWORD[(144-128)+rax],xmm4
> >
> > +        paddd   xmm10,xmm4
> >
> > +        movd    xmm1,DWORD[((-20))+r8]
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +        movdqa  xmm7,xmm12
> >
> > +
> >
> > +        por     xmm8,xmm9
> >
> > +        movd    xmm9,DWORD[((-20))+r9]
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm10,xmm6
> >
> > +
> >
> > +        psrld   xmm12,2
> >
> > +        paddd   xmm10,xmm8
> >
> > +DB      102,15,56,0,197
> >
> > +        movd    xmm8,DWORD[((-20))+r10]
> >
> > +        por     xmm12,xmm7
> >
> > +        movd    xmm7,DWORD[((-20))+r11]
> >
> > +        punpckldq       xmm1,xmm8
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        paddd   xmm14,xmm15
> >
> > +        punpckldq       xmm9,xmm7
> >
> > +        movdqa  xmm7,xmm11
> >
> > +        movdqa  xmm6,xmm11
> >
> > +        pslld   xmm8,5
> >
> > +        pandn   xmm7,xmm13
> >
> > +        pand    xmm6,xmm12
> >
> > +        punpckldq       xmm1,xmm9
> >
> > +        movdqa  xmm9,xmm10
> >
> > +
> >
> > +        movdqa  XMMWORD[(160-128)+rax],xmm0
> >
> > +        paddd   xmm14,xmm0
> >
> > +        movd    xmm2,DWORD[((-16))+r8]
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +        movdqa  xmm7,xmm11
> >
> > +
> >
> > +        por     xmm8,xmm9
> >
> > +        movd    xmm9,DWORD[((-16))+r9]
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm14,xmm6
> >
> > +
> >
> > +        psrld   xmm11,2
> >
> > +        paddd   xmm14,xmm8
> >
> > +DB      102,15,56,0,205
> >
> > +        movd    xmm8,DWORD[((-16))+r10]
> >
> > +        por     xmm11,xmm7
> >
> > +        movd    xmm7,DWORD[((-16))+r11]
> >
> > +        punpckldq       xmm2,xmm8
> >
> > +        movdqa  xmm8,xmm14
> >
> > +        paddd   xmm13,xmm15
> >
> > +        punpckldq       xmm9,xmm7
> >
> > +        movdqa  xmm7,xmm10
> >
> > +        movdqa  xmm6,xmm10
> >
> > +        pslld   xmm8,5
> >
> > +        pandn   xmm7,xmm12
> >
> > +        pand    xmm6,xmm11
> >
> > +        punpckldq       xmm2,xmm9
> >
> > +        movdqa  xmm9,xmm14
> >
> > +
> >
> > +        movdqa  XMMWORD[(176-128)+rax],xmm1
> >
> > +        paddd   xmm13,xmm1
> >
> > +        movd    xmm3,DWORD[((-12))+r8]
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +        movdqa  xmm7,xmm10
> >
> > +
> >
> > +        por     xmm8,xmm9
> >
> > +        movd    xmm9,DWORD[((-12))+r9]
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm13,xmm6
> >
> > +
> >
> > +        psrld   xmm10,2
> >
> > +        paddd   xmm13,xmm8
> >
> > +DB      102,15,56,0,213
> >
> > +        movd    xmm8,DWORD[((-12))+r10]
> >
> > +        por     xmm10,xmm7
> >
> > +        movd    xmm7,DWORD[((-12))+r11]
> >
> > +        punpckldq       xmm3,xmm8
> >
> > +        movdqa  xmm8,xmm13
> >
> > +        paddd   xmm12,xmm15
> >
> > +        punpckldq       xmm9,xmm7
> >
> > +        movdqa  xmm7,xmm14
> >
> > +        movdqa  xmm6,xmm14
> >
> > +        pslld   xmm8,5
> >
> > +        pandn   xmm7,xmm11
> >
> > +        pand    xmm6,xmm10
> >
> > +        punpckldq       xmm3,xmm9
> >
> > +        movdqa  xmm9,xmm13
> >
> > +
> >
> > +        movdqa  XMMWORD[(192-128)+rax],xmm2
> >
> > +        paddd   xmm12,xmm2
> >
> > +        movd    xmm4,DWORD[((-8))+r8]
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +        movdqa  xmm7,xmm14
> >
> > +
> >
> > +        por     xmm8,xmm9
> >
> > +        movd    xmm9,DWORD[((-8))+r9]
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm12,xmm6
> >
> > +
> >
> > +        psrld   xmm14,2
> >
> > +        paddd   xmm12,xmm8
> >
> > +DB      102,15,56,0,221
> >
> > +        movd    xmm8,DWORD[((-8))+r10]
> >
> > +        por     xmm14,xmm7
> >
> > +        movd    xmm7,DWORD[((-8))+r11]
> >
> > +        punpckldq       xmm4,xmm8
> >
> > +        movdqa  xmm8,xmm12
> >
> > +        paddd   xmm11,xmm15
> >
> > +        punpckldq       xmm9,xmm7
> >
> > +        movdqa  xmm7,xmm13
> >
> > +        movdqa  xmm6,xmm13
> >
> > +        pslld   xmm8,5
> >
> > +        pandn   xmm7,xmm10
> >
> > +        pand    xmm6,xmm14
> >
> > +        punpckldq       xmm4,xmm9
> >
> > +        movdqa  xmm9,xmm12
> >
> > +
> >
> > +        movdqa  XMMWORD[(208-128)+rax],xmm3
> >
> > +        paddd   xmm11,xmm3
> >
> > +        movd    xmm0,DWORD[((-4))+r8]
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +        movdqa  xmm7,xmm13
> >
> > +
> >
> > +        por     xmm8,xmm9
> >
> > +        movd    xmm9,DWORD[((-4))+r9]
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm11,xmm6
> >
> > +
> >
> > +        psrld   xmm13,2
> >
> > +        paddd   xmm11,xmm8
> >
> > +DB      102,15,56,0,229
> >
> > +        movd    xmm8,DWORD[((-4))+r10]
> >
> > +        por     xmm13,xmm7
> >
> > +        movdqa  xmm1,XMMWORD[((0-128))+rax]
> >
> > +        movd    xmm7,DWORD[((-4))+r11]
> >
> > +        punpckldq       xmm0,xmm8
> >
> > +        movdqa  xmm8,xmm11
> >
> > +        paddd   xmm10,xmm15
> >
> > +        punpckldq       xmm9,xmm7
> >
> > +        movdqa  xmm7,xmm12
> >
> > +        movdqa  xmm6,xmm12
> >
> > +        pslld   xmm8,5
> >
> > +        prefetcht0      [63+r8]
> >
> > +        pandn   xmm7,xmm14
> >
> > +        pand    xmm6,xmm13
> >
> > +        punpckldq       xmm0,xmm9
> >
> > +        movdqa  xmm9,xmm11
> >
> > +
> >
> > +        movdqa  XMMWORD[(224-128)+rax],xmm4
> >
> > +        paddd   xmm10,xmm4
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +        movdqa  xmm7,xmm12
> >
> > +        prefetcht0      [63+r9]
> >
> > +
> >
> > +        por     xmm8,xmm9
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm10,xmm6
> >
> > +        prefetcht0      [63+r10]
> >
> > +
> >
> > +        psrld   xmm12,2
> >
> > +        paddd   xmm10,xmm8
> >
> > +DB      102,15,56,0,197
> >
> > +        prefetcht0      [63+r11]
> >
> > +        por     xmm12,xmm7
> >
> > +        movdqa  xmm2,XMMWORD[((16-128))+rax]
> >
> > +        pxor    xmm1,xmm3
> >
> > +        movdqa  xmm3,XMMWORD[((32-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        pxor    xmm1,XMMWORD[((128-128))+rax]
> >
> > +        paddd   xmm14,xmm15
> >
> > +        movdqa  xmm7,xmm11
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm1,xmm3
> >
> > +        movdqa  xmm6,xmm11
> >
> > +        pandn   xmm7,xmm13
> >
> > +        movdqa  xmm5,xmm1
> >
> > +        pand    xmm6,xmm12
> >
> > +        movdqa  xmm9,xmm10
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm1,xmm1
> >
> > +
> >
> > +        movdqa  XMMWORD[(240-128)+rax],xmm0
> >
> > +        paddd   xmm14,xmm0
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +
> >
> > +        movdqa  xmm7,xmm11
> >
> > +        por     xmm8,xmm9
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm14,xmm6
> >
> > +
> >
> > +        psrld   xmm11,2
> >
> > +        paddd   xmm14,xmm8
> >
> > +        por     xmm1,xmm5
> >
> > +        por     xmm11,xmm7
> >
> > +        pxor    xmm2,xmm4
> >
> > +        movdqa  xmm4,XMMWORD[((48-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm14
> >
> > +        pxor    xmm2,XMMWORD[((144-128))+rax]
> >
> > +        paddd   xmm13,xmm15
> >
> > +        movdqa  xmm7,xmm10
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm2,xmm4
> >
> > +        movdqa  xmm6,xmm10
> >
> > +        pandn   xmm7,xmm12
> >
> > +        movdqa  xmm5,xmm2
> >
> > +        pand    xmm6,xmm11
> >
> > +        movdqa  xmm9,xmm14
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm2,xmm2
> >
> > +
> >
> > +        movdqa  XMMWORD[(0-128)+rax],xmm1
> >
> > +        paddd   xmm13,xmm1
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +
> >
> > +        movdqa  xmm7,xmm10
> >
> > +        por     xmm8,xmm9
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm13,xmm6
> >
> > +
> >
> > +        psrld   xmm10,2
> >
> > +        paddd   xmm13,xmm8
> >
> > +        por     xmm2,xmm5
> >
> > +        por     xmm10,xmm7
> >
> > +        pxor    xmm3,xmm0
> >
> > +        movdqa  xmm0,XMMWORD[((64-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm13
> >
> > +        pxor    xmm3,XMMWORD[((160-128))+rax]
> >
> > +        paddd   xmm12,xmm15
> >
> > +        movdqa  xmm7,xmm14
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm3,xmm0
> >
> > +        movdqa  xmm6,xmm14
> >
> > +        pandn   xmm7,xmm11
> >
> > +        movdqa  xmm5,xmm3
> >
> > +        pand    xmm6,xmm10
> >
> > +        movdqa  xmm9,xmm13
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm3,xmm3
> >
> > +
> >
> > +        movdqa  XMMWORD[(16-128)+rax],xmm2
> >
> > +        paddd   xmm12,xmm2
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +
> >
> > +        movdqa  xmm7,xmm14
> >
> > +        por     xmm8,xmm9
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm12,xmm6
> >
> > +
> >
> > +        psrld   xmm14,2
> >
> > +        paddd   xmm12,xmm8
> >
> > +        por     xmm3,xmm5
> >
> > +        por     xmm14,xmm7
> >
> > +        pxor    xmm4,xmm1
> >
> > +        movdqa  xmm1,XMMWORD[((80-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm12
> >
> > +        pxor    xmm4,XMMWORD[((176-128))+rax]
> >
> > +        paddd   xmm11,xmm15
> >
> > +        movdqa  xmm7,xmm13
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm4,xmm1
> >
> > +        movdqa  xmm6,xmm13
> >
> > +        pandn   xmm7,xmm10
> >
> > +        movdqa  xmm5,xmm4
> >
> > +        pand    xmm6,xmm14
> >
> > +        movdqa  xmm9,xmm12
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm4,xmm4
> >
> > +
> >
> > +        movdqa  XMMWORD[(32-128)+rax],xmm3
> >
> > +        paddd   xmm11,xmm3
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +
> >
> > +        movdqa  xmm7,xmm13
> >
> > +        por     xmm8,xmm9
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm11,xmm6
> >
> > +
> >
> > +        psrld   xmm13,2
> >
> > +        paddd   xmm11,xmm8
> >
> > +        por     xmm4,xmm5
> >
> > +        por     xmm13,xmm7
> >
> > +        pxor    xmm0,xmm2
> >
> > +        movdqa  xmm2,XMMWORD[((96-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm11
> >
> > +        pxor    xmm0,XMMWORD[((192-128))+rax]
> >
> > +        paddd   xmm10,xmm15
> >
> > +        movdqa  xmm7,xmm12
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm0,xmm2
> >
> > +        movdqa  xmm6,xmm12
> >
> > +        pandn   xmm7,xmm14
> >
> > +        movdqa  xmm5,xmm0
> >
> > +        pand    xmm6,xmm13
> >
> > +        movdqa  xmm9,xmm11
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm0,xmm0
> >
> > +
> >
> > +        movdqa  XMMWORD[(48-128)+rax],xmm4
> >
> > +        paddd   xmm10,xmm4
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm7
> >
> > +
> >
> > +        movdqa  xmm7,xmm12
> >
> > +        por     xmm8,xmm9
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm10,xmm6
> >
> > +
> >
> > +        psrld   xmm12,2
> >
> > +        paddd   xmm10,xmm8
> >
> > +        por     xmm0,xmm5
> >
> > +        por     xmm12,xmm7
> >
> > +        movdqa  xmm15,XMMWORD[rbp]
> >
> > +        pxor    xmm1,xmm3
> >
> > +        movdqa  xmm3,XMMWORD[((112-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        movdqa  xmm6,xmm13
> >
> > +        pxor    xmm1,XMMWORD[((208-128))+rax]
> >
> > +        paddd   xmm14,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm11
> >
> > +
> >
> > +        movdqa  xmm9,xmm10
> >
> > +        movdqa  XMMWORD[(64-128)+rax],xmm0
> >
> > +        paddd   xmm14,xmm0
> >
> > +        pxor    xmm1,xmm3
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm12
> >
> > +        movdqa  xmm7,xmm11
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm1
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm14,xmm6
> >
> > +        paddd   xmm1,xmm1
> >
> > +
> >
> > +        psrld   xmm11,2
> >
> > +        paddd   xmm14,xmm8
> >
> > +        por     xmm1,xmm5
> >
> > +        por     xmm11,xmm7
> >
> > +        pxor    xmm2,xmm4
> >
> > +        movdqa  xmm4,XMMWORD[((128-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm14
> >
> > +        movdqa  xmm6,xmm12
> >
> > +        pxor    xmm2,XMMWORD[((224-128))+rax]
> >
> > +        paddd   xmm13,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm10
> >
> > +
> >
> > +        movdqa  xmm9,xmm14
> >
> > +        movdqa  XMMWORD[(80-128)+rax],xmm1
> >
> > +        paddd   xmm13,xmm1
> >
> > +        pxor    xmm2,xmm4
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm11
> >
> > +        movdqa  xmm7,xmm10
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm2
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm13,xmm6
> >
> > +        paddd   xmm2,xmm2
> >
> > +
> >
> > +        psrld   xmm10,2
> >
> > +        paddd   xmm13,xmm8
> >
> > +        por     xmm2,xmm5
> >
> > +        por     xmm10,xmm7
> >
> > +        pxor    xmm3,xmm0
> >
> > +        movdqa  xmm0,XMMWORD[((144-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm13
> >
> > +        movdqa  xmm6,xmm11
> >
> > +        pxor    xmm3,XMMWORD[((240-128))+rax]
> >
> > +        paddd   xmm12,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm14
> >
> > +
> >
> > +        movdqa  xmm9,xmm13
> >
> > +        movdqa  XMMWORD[(96-128)+rax],xmm2
> >
> > +        paddd   xmm12,xmm2
> >
> > +        pxor    xmm3,xmm0
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm10
> >
> > +        movdqa  xmm7,xmm14
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm3
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm12,xmm6
> >
> > +        paddd   xmm3,xmm3
> >
> > +
> >
> > +        psrld   xmm14,2
> >
> > +        paddd   xmm12,xmm8
> >
> > +        por     xmm3,xmm5
> >
> > +        por     xmm14,xmm7
> >
> > +        pxor    xmm4,xmm1
> >
> > +        movdqa  xmm1,XMMWORD[((160-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm12
> >
> > +        movdqa  xmm6,xmm10
> >
> > +        pxor    xmm4,XMMWORD[((0-128))+rax]
> >
> > +        paddd   xmm11,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm13
> >
> > +
> >
> > +        movdqa  xmm9,xmm12
> >
> > +        movdqa  XMMWORD[(112-128)+rax],xmm3
> >
> > +        paddd   xmm11,xmm3
> >
> > +        pxor    xmm4,xmm1
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm14
> >
> > +        movdqa  xmm7,xmm13
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm4
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm11,xmm6
> >
> > +        paddd   xmm4,xmm4
> >
> > +
> >
> > +        psrld   xmm13,2
> >
> > +        paddd   xmm11,xmm8
> >
> > +        por     xmm4,xmm5
> >
> > +        por     xmm13,xmm7
> >
> > +        pxor    xmm0,xmm2
> >
> > +        movdqa  xmm2,XMMWORD[((176-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm11
> >
> > +        movdqa  xmm6,xmm14
> >
> > +        pxor    xmm0,XMMWORD[((16-128))+rax]
> >
> > +        paddd   xmm10,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm12
> >
> > +
> >
> > +        movdqa  xmm9,xmm11
> >
> > +        movdqa  XMMWORD[(128-128)+rax],xmm4
> >
> > +        paddd   xmm10,xmm4
> >
> > +        pxor    xmm0,xmm2
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm13
> >
> > +        movdqa  xmm7,xmm12
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm0
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm10,xmm6
> >
> > +        paddd   xmm0,xmm0
> >
> > +
> >
> > +        psrld   xmm12,2
> >
> > +        paddd   xmm10,xmm8
> >
> > +        por     xmm0,xmm5
> >
> > +        por     xmm12,xmm7
> >
> > +        pxor    xmm1,xmm3
> >
> > +        movdqa  xmm3,XMMWORD[((192-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        movdqa  xmm6,xmm13
> >
> > +        pxor    xmm1,XMMWORD[((32-128))+rax]
> >
> > +        paddd   xmm14,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm11
> >
> > +
> >
> > +        movdqa  xmm9,xmm10
> >
> > +        movdqa  XMMWORD[(144-128)+rax],xmm0
> >
> > +        paddd   xmm14,xmm0
> >
> > +        pxor    xmm1,xmm3
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm12
> >
> > +        movdqa  xmm7,xmm11
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm1
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm14,xmm6
> >
> > +        paddd   xmm1,xmm1
> >
> > +
> >
> > +        psrld   xmm11,2
> >
> > +        paddd   xmm14,xmm8
> >
> > +        por     xmm1,xmm5
> >
> > +        por     xmm11,xmm7
> >
> > +        pxor    xmm2,xmm4
> >
> > +        movdqa  xmm4,XMMWORD[((208-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm14
> >
> > +        movdqa  xmm6,xmm12
> >
> > +        pxor    xmm2,XMMWORD[((48-128))+rax]
> >
> > +        paddd   xmm13,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm10
> >
> > +
> >
> > +        movdqa  xmm9,xmm14
> >
> > +        movdqa  XMMWORD[(160-128)+rax],xmm1
> >
> > +        paddd   xmm13,xmm1
> >
> > +        pxor    xmm2,xmm4
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm11
> >
> > +        movdqa  xmm7,xmm10
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm2
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm13,xmm6
> >
> > +        paddd   xmm2,xmm2
> >
> > +
> >
> > +        psrld   xmm10,2
> >
> > +        paddd   xmm13,xmm8
> >
> > +        por     xmm2,xmm5
> >
> > +        por     xmm10,xmm7
> >
> > +        pxor    xmm3,xmm0
> >
> > +        movdqa  xmm0,XMMWORD[((224-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm13
> >
> > +        movdqa  xmm6,xmm11
> >
> > +        pxor    xmm3,XMMWORD[((64-128))+rax]
> >
> > +        paddd   xmm12,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm14
> >
> > +
> >
> > +        movdqa  xmm9,xmm13
> >
> > +        movdqa  XMMWORD[(176-128)+rax],xmm2
> >
> > +        paddd   xmm12,xmm2
> >
> > +        pxor    xmm3,xmm0
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm10
> >
> > +        movdqa  xmm7,xmm14
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm3
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm12,xmm6
> >
> > +        paddd   xmm3,xmm3
> >
> > +
> >
> > +        psrld   xmm14,2
> >
> > +        paddd   xmm12,xmm8
> >
> > +        por     xmm3,xmm5
> >
> > +        por     xmm14,xmm7
> >
> > +        pxor    xmm4,xmm1
> >
> > +        movdqa  xmm1,XMMWORD[((240-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm12
> >
> > +        movdqa  xmm6,xmm10
> >
> > +        pxor    xmm4,XMMWORD[((80-128))+rax]
> >
> > +        paddd   xmm11,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm13
> >
> > +
> >
> > +        movdqa  xmm9,xmm12
> >
> > +        movdqa  XMMWORD[(192-128)+rax],xmm3
> >
> > +        paddd   xmm11,xmm3
> >
> > +        pxor    xmm4,xmm1
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm14
> >
> > +        movdqa  xmm7,xmm13
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm4
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm11,xmm6
> >
> > +        paddd   xmm4,xmm4
> >
> > +
> >
> > +        psrld   xmm13,2
> >
> > +        paddd   xmm11,xmm8
> >
> > +        por     xmm4,xmm5
> >
> > +        por     xmm13,xmm7
> >
> > +        pxor    xmm0,xmm2
> >
> > +        movdqa  xmm2,XMMWORD[((0-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm11
> >
> > +        movdqa  xmm6,xmm14
> >
> > +        pxor    xmm0,XMMWORD[((96-128))+rax]
> >
> > +        paddd   xmm10,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm12
> >
> > +
> >
> > +        movdqa  xmm9,xmm11
> >
> > +        movdqa  XMMWORD[(208-128)+rax],xmm4
> >
> > +        paddd   xmm10,xmm4
> >
> > +        pxor    xmm0,xmm2
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm13
> >
> > +        movdqa  xmm7,xmm12
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm0
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm10,xmm6
> >
> > +        paddd   xmm0,xmm0
> >
> > +
> >
> > +        psrld   xmm12,2
> >
> > +        paddd   xmm10,xmm8
> >
> > +        por     xmm0,xmm5
> >
> > +        por     xmm12,xmm7
> >
> > +        pxor    xmm1,xmm3
> >
> > +        movdqa  xmm3,XMMWORD[((16-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        movdqa  xmm6,xmm13
> >
> > +        pxor    xmm1,XMMWORD[((112-128))+rax]
> >
> > +        paddd   xmm14,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm11
> >
> > +
> >
> > +        movdqa  xmm9,xmm10
> >
> > +        movdqa  XMMWORD[(224-128)+rax],xmm0
> >
> > +        paddd   xmm14,xmm0
> >
> > +        pxor    xmm1,xmm3
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm12
> >
> > +        movdqa  xmm7,xmm11
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm1
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm14,xmm6
> >
> > +        paddd   xmm1,xmm1
> >
> > +
> >
> > +        psrld   xmm11,2
> >
> > +        paddd   xmm14,xmm8
> >
> > +        por     xmm1,xmm5
> >
> > +        por     xmm11,xmm7
> >
> > +        pxor    xmm2,xmm4
> >
> > +        movdqa  xmm4,XMMWORD[((32-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm14
> >
> > +        movdqa  xmm6,xmm12
> >
> > +        pxor    xmm2,XMMWORD[((128-128))+rax]
> >
> > +        paddd   xmm13,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm10
> >
> > +
> >
> > +        movdqa  xmm9,xmm14
> >
> > +        movdqa  XMMWORD[(240-128)+rax],xmm1
> >
> > +        paddd   xmm13,xmm1
> >
> > +        pxor    xmm2,xmm4
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm11
> >
> > +        movdqa  xmm7,xmm10
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm2
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm13,xmm6
> >
> > +        paddd   xmm2,xmm2
> >
> > +
> >
> > +        psrld   xmm10,2
> >
> > +        paddd   xmm13,xmm8
> >
> > +        por     xmm2,xmm5
> >
> > +        por     xmm10,xmm7
> >
> > +        pxor    xmm3,xmm0
> >
> > +        movdqa  xmm0,XMMWORD[((48-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm13
> >
> > +        movdqa  xmm6,xmm11
> >
> > +        pxor    xmm3,XMMWORD[((144-128))+rax]
> >
> > +        paddd   xmm12,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm14
> >
> > +
> >
> > +        movdqa  xmm9,xmm13
> >
> > +        movdqa  XMMWORD[(0-128)+rax],xmm2
> >
> > +        paddd   xmm12,xmm2
> >
> > +        pxor    xmm3,xmm0
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm10
> >
> > +        movdqa  xmm7,xmm14
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm3
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm12,xmm6
> >
> > +        paddd   xmm3,xmm3
> >
> > +
> >
> > +        psrld   xmm14,2
> >
> > +        paddd   xmm12,xmm8
> >
> > +        por     xmm3,xmm5
> >
> > +        por     xmm14,xmm7
> >
> > +        pxor    xmm4,xmm1
> >
> > +        movdqa  xmm1,XMMWORD[((64-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm12
> >
> > +        movdqa  xmm6,xmm10
> >
> > +        pxor    xmm4,XMMWORD[((160-128))+rax]
> >
> > +        paddd   xmm11,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm13
> >
> > +
> >
> > +        movdqa  xmm9,xmm12
> >
> > +        movdqa  XMMWORD[(16-128)+rax],xmm3
> >
> > +        paddd   xmm11,xmm3
> >
> > +        pxor    xmm4,xmm1
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm14
> >
> > +        movdqa  xmm7,xmm13
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm4
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm11,xmm6
> >
> > +        paddd   xmm4,xmm4
> >
> > +
> >
> > +        psrld   xmm13,2
> >
> > +        paddd   xmm11,xmm8
> >
> > +        por     xmm4,xmm5
> >
> > +        por     xmm13,xmm7
> >
> > +        pxor    xmm0,xmm2
> >
> > +        movdqa  xmm2,XMMWORD[((80-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm11
> >
> > +        movdqa  xmm6,xmm14
> >
> > +        pxor    xmm0,XMMWORD[((176-128))+rax]
> >
> > +        paddd   xmm10,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm12
> >
> > +
> >
> > +        movdqa  xmm9,xmm11
> >
> > +        movdqa  XMMWORD[(32-128)+rax],xmm4
> >
> > +        paddd   xmm10,xmm4
> >
> > +        pxor    xmm0,xmm2
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm13
> >
> > +        movdqa  xmm7,xmm12
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm0
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm10,xmm6
> >
> > +        paddd   xmm0,xmm0
> >
> > +
> >
> > +        psrld   xmm12,2
> >
> > +        paddd   xmm10,xmm8
> >
> > +        por     xmm0,xmm5
> >
> > +        por     xmm12,xmm7
> >
> > +        pxor    xmm1,xmm3
> >
> > +        movdqa  xmm3,XMMWORD[((96-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        movdqa  xmm6,xmm13
> >
> > +        pxor    xmm1,XMMWORD[((192-128))+rax]
> >
> > +        paddd   xmm14,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm11
> >
> > +
> >
> > +        movdqa  xmm9,xmm10
> >
> > +        movdqa  XMMWORD[(48-128)+rax],xmm0
> >
> > +        paddd   xmm14,xmm0
> >
> > +        pxor    xmm1,xmm3
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm12
> >
> > +        movdqa  xmm7,xmm11
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm1
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm14,xmm6
> >
> > +        paddd   xmm1,xmm1
> >
> > +
> >
> > +        psrld   xmm11,2
> >
> > +        paddd   xmm14,xmm8
> >
> > +        por     xmm1,xmm5
> >
> > +        por     xmm11,xmm7
> >
> > +        pxor    xmm2,xmm4
> >
> > +        movdqa  xmm4,XMMWORD[((112-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm14
> >
> > +        movdqa  xmm6,xmm12
> >
> > +        pxor    xmm2,XMMWORD[((208-128))+rax]
> >
> > +        paddd   xmm13,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm10
> >
> > +
> >
> > +        movdqa  xmm9,xmm14
> >
> > +        movdqa  XMMWORD[(64-128)+rax],xmm1
> >
> > +        paddd   xmm13,xmm1
> >
> > +        pxor    xmm2,xmm4
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm11
> >
> > +        movdqa  xmm7,xmm10
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm2
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm13,xmm6
> >
> > +        paddd   xmm2,xmm2
> >
> > +
> >
> > +        psrld   xmm10,2
> >
> > +        paddd   xmm13,xmm8
> >
> > +        por     xmm2,xmm5
> >
> > +        por     xmm10,xmm7
> >
> > +        pxor    xmm3,xmm0
> >
> > +        movdqa  xmm0,XMMWORD[((128-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm13
> >
> > +        movdqa  xmm6,xmm11
> >
> > +        pxor    xmm3,XMMWORD[((224-128))+rax]
> >
> > +        paddd   xmm12,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm14
> >
> > +
> >
> > +        movdqa  xmm9,xmm13
> >
> > +        movdqa  XMMWORD[(80-128)+rax],xmm2
> >
> > +        paddd   xmm12,xmm2
> >
> > +        pxor    xmm3,xmm0
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm10
> >
> > +        movdqa  xmm7,xmm14
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm3
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm12,xmm6
> >
> > +        paddd   xmm3,xmm3
> >
> > +
> >
> > +        psrld   xmm14,2
> >
> > +        paddd   xmm12,xmm8
> >
> > +        por     xmm3,xmm5
> >
> > +        por     xmm14,xmm7
> >
> > +        pxor    xmm4,xmm1
> >
> > +        movdqa  xmm1,XMMWORD[((144-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm12
> >
> > +        movdqa  xmm6,xmm10
> >
> > +        pxor    xmm4,XMMWORD[((240-128))+rax]
> >
> > +        paddd   xmm11,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm13
> >
> > +
> >
> > +        movdqa  xmm9,xmm12
> >
> > +        movdqa  XMMWORD[(96-128)+rax],xmm3
> >
> > +        paddd   xmm11,xmm3
> >
> > +        pxor    xmm4,xmm1
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm14
> >
> > +        movdqa  xmm7,xmm13
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm4
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm11,xmm6
> >
> > +        paddd   xmm4,xmm4
> >
> > +
> >
> > +        psrld   xmm13,2
> >
> > +        paddd   xmm11,xmm8
> >
> > +        por     xmm4,xmm5
> >
> > +        por     xmm13,xmm7
> >
> > +        pxor    xmm0,xmm2
> >
> > +        movdqa  xmm2,XMMWORD[((160-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm11
> >
> > +        movdqa  xmm6,xmm14
> >
> > +        pxor    xmm0,XMMWORD[((0-128))+rax]
> >
> > +        paddd   xmm10,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm12
> >
> > +
> >
> > +        movdqa  xmm9,xmm11
> >
> > +        movdqa  XMMWORD[(112-128)+rax],xmm4
> >
> > +        paddd   xmm10,xmm4
> >
> > +        pxor    xmm0,xmm2
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm13
> >
> > +        movdqa  xmm7,xmm12
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm0
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm10,xmm6
> >
> > +        paddd   xmm0,xmm0
> >
> > +
> >
> > +        psrld   xmm12,2
> >
> > +        paddd   xmm10,xmm8
> >
> > +        por     xmm0,xmm5
> >
> > +        por     xmm12,xmm7
> >
> > +        movdqa  xmm15,XMMWORD[32+rbp]
> >
> > +        pxor    xmm1,xmm3
> >
> > +        movdqa  xmm3,XMMWORD[((176-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        movdqa  xmm7,xmm13
> >
> > +        pxor    xmm1,XMMWORD[((16-128))+rax]
> >
> > +        pxor    xmm1,xmm3
> >
> > +        paddd   xmm14,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm10
> >
> > +        pand    xmm7,xmm12
> >
> > +
> >
> > +        movdqa  xmm6,xmm13
> >
> > +        movdqa  xmm5,xmm1
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm14,xmm7
> >
> > +        pxor    xmm6,xmm12
> >
> > +
> >
> > +        movdqa  XMMWORD[(128-128)+rax],xmm0
> >
> > +        paddd   xmm14,xmm0
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm11
> >
> > +        movdqa  xmm7,xmm11
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm1,xmm1
> >
> > +        paddd   xmm14,xmm6
> >
> > +
> >
> > +        psrld   xmm11,2
> >
> > +        paddd   xmm14,xmm8
> >
> > +        por     xmm1,xmm5
> >
> > +        por     xmm11,xmm7
> >
> > +        pxor    xmm2,xmm4
> >
> > +        movdqa  xmm4,XMMWORD[((192-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm14
> >
> > +        movdqa  xmm7,xmm12
> >
> > +        pxor    xmm2,XMMWORD[((32-128))+rax]
> >
> > +        pxor    xmm2,xmm4
> >
> > +        paddd   xmm13,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm14
> >
> > +        pand    xmm7,xmm11
> >
> > +
> >
> > +        movdqa  xmm6,xmm12
> >
> > +        movdqa  xmm5,xmm2
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm13,xmm7
> >
> > +        pxor    xmm6,xmm11
> >
> > +
> >
> > +        movdqa  XMMWORD[(144-128)+rax],xmm1
> >
> > +        paddd   xmm13,xmm1
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm10
> >
> > +        movdqa  xmm7,xmm10
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm2,xmm2
> >
> > +        paddd   xmm13,xmm6
> >
> > +
> >
> > +        psrld   xmm10,2
> >
> > +        paddd   xmm13,xmm8
> >
> > +        por     xmm2,xmm5
> >
> > +        por     xmm10,xmm7
> >
> > +        pxor    xmm3,xmm0
> >
> > +        movdqa  xmm0,XMMWORD[((208-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm13
> >
> > +        movdqa  xmm7,xmm11
> >
> > +        pxor    xmm3,XMMWORD[((48-128))+rax]
> >
> > +        pxor    xmm3,xmm0
> >
> > +        paddd   xmm12,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm13
> >
> > +        pand    xmm7,xmm10
> >
> > +
> >
> > +        movdqa  xmm6,xmm11
> >
> > +        movdqa  xmm5,xmm3
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm12,xmm7
> >
> > +        pxor    xmm6,xmm10
> >
> > +
> >
> > +        movdqa  XMMWORD[(160-128)+rax],xmm2
> >
> > +        paddd   xmm12,xmm2
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm14
> >
> > +        movdqa  xmm7,xmm14
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm3,xmm3
> >
> > +        paddd   xmm12,xmm6
> >
> > +
> >
> > +        psrld   xmm14,2
> >
> > +        paddd   xmm12,xmm8
> >
> > +        por     xmm3,xmm5
> >
> > +        por     xmm14,xmm7
> >
> > +        pxor    xmm4,xmm1
> >
> > +        movdqa  xmm1,XMMWORD[((224-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm12
> >
> > +        movdqa  xmm7,xmm10
> >
> > +        pxor    xmm4,XMMWORD[((64-128))+rax]
> >
> > +        pxor    xmm4,xmm1
> >
> > +        paddd   xmm11,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm12
> >
> > +        pand    xmm7,xmm14
> >
> > +
> >
> > +        movdqa  xmm6,xmm10
> >
> > +        movdqa  xmm5,xmm4
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm11,xmm7
> >
> > +        pxor    xmm6,xmm14
> >
> > +
> >
> > +        movdqa  XMMWORD[(176-128)+rax],xmm3
> >
> > +        paddd   xmm11,xmm3
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm13
> >
> > +        movdqa  xmm7,xmm13
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm4,xmm4
> >
> > +        paddd   xmm11,xmm6
> >
> > +
> >
> > +        psrld   xmm13,2
> >
> > +        paddd   xmm11,xmm8
> >
> > +        por     xmm4,xmm5
> >
> > +        por     xmm13,xmm7
> >
> > +        pxor    xmm0,xmm2
> >
> > +        movdqa  xmm2,XMMWORD[((240-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm11
> >
> > +        movdqa  xmm7,xmm14
> >
> > +        pxor    xmm0,XMMWORD[((80-128))+rax]
> >
> > +        pxor    xmm0,xmm2
> >
> > +        paddd   xmm10,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm11
> >
> > +        pand    xmm7,xmm13
> >
> > +
> >
> > +        movdqa  xmm6,xmm14
> >
> > +        movdqa  xmm5,xmm0
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm10,xmm7
> >
> > +        pxor    xmm6,xmm13
> >
> > +
> >
> > +        movdqa  XMMWORD[(192-128)+rax],xmm4
> >
> > +        paddd   xmm10,xmm4
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm12
> >
> > +        movdqa  xmm7,xmm12
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm0,xmm0
> >
> > +        paddd   xmm10,xmm6
> >
> > +
> >
> > +        psrld   xmm12,2
> >
> > +        paddd   xmm10,xmm8
> >
> > +        por     xmm0,xmm5
> >
> > +        por     xmm12,xmm7
> >
> > +        pxor    xmm1,xmm3
> >
> > +        movdqa  xmm3,XMMWORD[((0-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        movdqa  xmm7,xmm13
> >
> > +        pxor    xmm1,XMMWORD[((96-128))+rax]
> >
> > +        pxor    xmm1,xmm3
> >
> > +        paddd   xmm14,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm10
> >
> > +        pand    xmm7,xmm12
> >
> > +
> >
> > +        movdqa  xmm6,xmm13
> >
> > +        movdqa  xmm5,xmm1
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm14,xmm7
> >
> > +        pxor    xmm6,xmm12
> >
> > +
> >
> > +        movdqa  XMMWORD[(208-128)+rax],xmm0
> >
> > +        paddd   xmm14,xmm0
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm11
> >
> > +        movdqa  xmm7,xmm11
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm1,xmm1
> >
> > +        paddd   xmm14,xmm6
> >
> > +
> >
> > +        psrld   xmm11,2
> >
> > +        paddd   xmm14,xmm8
> >
> > +        por     xmm1,xmm5
> >
> > +        por     xmm11,xmm7
> >
> > +        pxor    xmm2,xmm4
> >
> > +        movdqa  xmm4,XMMWORD[((16-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm14
> >
> > +        movdqa  xmm7,xmm12
> >
> > +        pxor    xmm2,XMMWORD[((112-128))+rax]
> >
> > +        pxor    xmm2,xmm4
> >
> > +        paddd   xmm13,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm14
> >
> > +        pand    xmm7,xmm11
> >
> > +
> >
> > +        movdqa  xmm6,xmm12
> >
> > +        movdqa  xmm5,xmm2
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm13,xmm7
> >
> > +        pxor    xmm6,xmm11
> >
> > +
> >
> > +        movdqa  XMMWORD[(224-128)+rax],xmm1
> >
> > +        paddd   xmm13,xmm1
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm10
> >
> > +        movdqa  xmm7,xmm10
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm2,xmm2
> >
> > +        paddd   xmm13,xmm6
> >
> > +
> >
> > +        psrld   xmm10,2
> >
> > +        paddd   xmm13,xmm8
> >
> > +        por     xmm2,xmm5
> >
> > +        por     xmm10,xmm7
> >
> > +        pxor    xmm3,xmm0
> >
> > +        movdqa  xmm0,XMMWORD[((32-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm13
> >
> > +        movdqa  xmm7,xmm11
> >
> > +        pxor    xmm3,XMMWORD[((128-128))+rax]
> >
> > +        pxor    xmm3,xmm0
> >
> > +        paddd   xmm12,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm13
> >
> > +        pand    xmm7,xmm10
> >
> > +
> >
> > +        movdqa  xmm6,xmm11
> >
> > +        movdqa  xmm5,xmm3
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm12,xmm7
> >
> > +        pxor    xmm6,xmm10
> >
> > +
> >
> > +        movdqa  XMMWORD[(240-128)+rax],xmm2
> >
> > +        paddd   xmm12,xmm2
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm14
> >
> > +        movdqa  xmm7,xmm14
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm3,xmm3
> >
> > +        paddd   xmm12,xmm6
> >
> > +
> >
> > +        psrld   xmm14,2
> >
> > +        paddd   xmm12,xmm8
> >
> > +        por     xmm3,xmm5
> >
> > +        por     xmm14,xmm7
> >
> > +        pxor    xmm4,xmm1
> >
> > +        movdqa  xmm1,XMMWORD[((48-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm12
> >
> > +        movdqa  xmm7,xmm10
> >
> > +        pxor    xmm4,XMMWORD[((144-128))+rax]
> >
> > +        pxor    xmm4,xmm1
> >
> > +        paddd   xmm11,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm12
> >
> > +        pand    xmm7,xmm14
> >
> > +
> >
> > +        movdqa  xmm6,xmm10
> >
> > +        movdqa  xmm5,xmm4
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm11,xmm7
> >
> > +        pxor    xmm6,xmm14
> >
> > +
> >
> > +        movdqa  XMMWORD[(0-128)+rax],xmm3
> >
> > +        paddd   xmm11,xmm3
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm13
> >
> > +        movdqa  xmm7,xmm13
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm4,xmm4
> >
> > +        paddd   xmm11,xmm6
> >
> > +
> >
> > +        psrld   xmm13,2
> >
> > +        paddd   xmm11,xmm8
> >
> > +        por     xmm4,xmm5
> >
> > +        por     xmm13,xmm7
> >
> > +        pxor    xmm0,xmm2
> >
> > +        movdqa  xmm2,XMMWORD[((64-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm11
> >
> > +        movdqa  xmm7,xmm14
> >
> > +        pxor    xmm0,XMMWORD[((160-128))+rax]
> >
> > +        pxor    xmm0,xmm2
> >
> > +        paddd   xmm10,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm11
> >
> > +        pand    xmm7,xmm13
> >
> > +
> >
> > +        movdqa  xmm6,xmm14
> >
> > +        movdqa  xmm5,xmm0
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm10,xmm7
> >
> > +        pxor    xmm6,xmm13
> >
> > +
> >
> > +        movdqa  XMMWORD[(16-128)+rax],xmm4
> >
> > +        paddd   xmm10,xmm4
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm12
> >
> > +        movdqa  xmm7,xmm12
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm0,xmm0
> >
> > +        paddd   xmm10,xmm6
> >
> > +
> >
> > +        psrld   xmm12,2
> >
> > +        paddd   xmm10,xmm8
> >
> > +        por     xmm0,xmm5
> >
> > +        por     xmm12,xmm7
> >
> > +        pxor    xmm1,xmm3
> >
> > +        movdqa  xmm3,XMMWORD[((80-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        movdqa  xmm7,xmm13
> >
> > +        pxor    xmm1,XMMWORD[((176-128))+rax]
> >
> > +        pxor    xmm1,xmm3
> >
> > +        paddd   xmm14,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm10
> >
> > +        pand    xmm7,xmm12
> >
> > +
> >
> > +        movdqa  xmm6,xmm13
> >
> > +        movdqa  xmm5,xmm1
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm14,xmm7
> >
> > +        pxor    xmm6,xmm12
> >
> > +
> >
> > +        movdqa  XMMWORD[(32-128)+rax],xmm0
> >
> > +        paddd   xmm14,xmm0
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm11
> >
> > +        movdqa  xmm7,xmm11
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm1,xmm1
> >
> > +        paddd   xmm14,xmm6
> >
> > +
> >
> > +        psrld   xmm11,2
> >
> > +        paddd   xmm14,xmm8
> >
> > +        por     xmm1,xmm5
> >
> > +        por     xmm11,xmm7
> >
> > +        pxor    xmm2,xmm4
> >
> > +        movdqa  xmm4,XMMWORD[((96-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm14
> >
> > +        movdqa  xmm7,xmm12
> >
> > +        pxor    xmm2,XMMWORD[((192-128))+rax]
> >
> > +        pxor    xmm2,xmm4
> >
> > +        paddd   xmm13,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm14
> >
> > +        pand    xmm7,xmm11
> >
> > +
> >
> > +        movdqa  xmm6,xmm12
> >
> > +        movdqa  xmm5,xmm2
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm13,xmm7
> >
> > +        pxor    xmm6,xmm11
> >
> > +
> >
> > +        movdqa  XMMWORD[(48-128)+rax],xmm1
> >
> > +        paddd   xmm13,xmm1
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm10
> >
> > +        movdqa  xmm7,xmm10
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm2,xmm2
> >
> > +        paddd   xmm13,xmm6
> >
> > +
> >
> > +        psrld   xmm10,2
> >
> > +        paddd   xmm13,xmm8
> >
> > +        por     xmm2,xmm5
> >
> > +        por     xmm10,xmm7
> >
> > +        pxor    xmm3,xmm0
> >
> > +        movdqa  xmm0,XMMWORD[((112-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm13
> >
> > +        movdqa  xmm7,xmm11
> >
> > +        pxor    xmm3,XMMWORD[((208-128))+rax]
> >
> > +        pxor    xmm3,xmm0
> >
> > +        paddd   xmm12,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm13
> >
> > +        pand    xmm7,xmm10
> >
> > +
> >
> > +        movdqa  xmm6,xmm11
> >
> > +        movdqa  xmm5,xmm3
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm12,xmm7
> >
> > +        pxor    xmm6,xmm10
> >
> > +
> >
> > +        movdqa  XMMWORD[(64-128)+rax],xmm2
> >
> > +        paddd   xmm12,xmm2
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm14
> >
> > +        movdqa  xmm7,xmm14
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm3,xmm3
> >
> > +        paddd   xmm12,xmm6
> >
> > +
> >
> > +        psrld   xmm14,2
> >
> > +        paddd   xmm12,xmm8
> >
> > +        por     xmm3,xmm5
> >
> > +        por     xmm14,xmm7
> >
> > +        pxor    xmm4,xmm1
> >
> > +        movdqa  xmm1,XMMWORD[((128-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm12
> >
> > +        movdqa  xmm7,xmm10
> >
> > +        pxor    xmm4,XMMWORD[((224-128))+rax]
> >
> > +        pxor    xmm4,xmm1
> >
> > +        paddd   xmm11,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm12
> >
> > +        pand    xmm7,xmm14
> >
> > +
> >
> > +        movdqa  xmm6,xmm10
> >
> > +        movdqa  xmm5,xmm4
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm11,xmm7
> >
> > +        pxor    xmm6,xmm14
> >
> > +
> >
> > +        movdqa  XMMWORD[(80-128)+rax],xmm3
> >
> > +        paddd   xmm11,xmm3
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm13
> >
> > +        movdqa  xmm7,xmm13
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm4,xmm4
> >
> > +        paddd   xmm11,xmm6
> >
> > +
> >
> > +        psrld   xmm13,2
> >
> > +        paddd   xmm11,xmm8
> >
> > +        por     xmm4,xmm5
> >
> > +        por     xmm13,xmm7
> >
> > +        pxor    xmm0,xmm2
> >
> > +        movdqa  xmm2,XMMWORD[((144-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm11
> >
> > +        movdqa  xmm7,xmm14
> >
> > +        pxor    xmm0,XMMWORD[((240-128))+rax]
> >
> > +        pxor    xmm0,xmm2
> >
> > +        paddd   xmm10,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm11
> >
> > +        pand    xmm7,xmm13
> >
> > +
> >
> > +        movdqa  xmm6,xmm14
> >
> > +        movdqa  xmm5,xmm0
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm10,xmm7
> >
> > +        pxor    xmm6,xmm13
> >
> > +
> >
> > +        movdqa  XMMWORD[(96-128)+rax],xmm4
> >
> > +        paddd   xmm10,xmm4
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm12
> >
> > +        movdqa  xmm7,xmm12
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm0,xmm0
> >
> > +        paddd   xmm10,xmm6
> >
> > +
> >
> > +        psrld   xmm12,2
> >
> > +        paddd   xmm10,xmm8
> >
> > +        por     xmm0,xmm5
> >
> > +        por     xmm12,xmm7
> >
> > +        pxor    xmm1,xmm3
> >
> > +        movdqa  xmm3,XMMWORD[((160-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        movdqa  xmm7,xmm13
> >
> > +        pxor    xmm1,XMMWORD[((0-128))+rax]
> >
> > +        pxor    xmm1,xmm3
> >
> > +        paddd   xmm14,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm10
> >
> > +        pand    xmm7,xmm12
> >
> > +
> >
> > +        movdqa  xmm6,xmm13
> >
> > +        movdqa  xmm5,xmm1
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm14,xmm7
> >
> > +        pxor    xmm6,xmm12
> >
> > +
> >
> > +        movdqa  XMMWORD[(112-128)+rax],xmm0
> >
> > +        paddd   xmm14,xmm0
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm11
> >
> > +        movdqa  xmm7,xmm11
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm1,xmm1
> >
> > +        paddd   xmm14,xmm6
> >
> > +
> >
> > +        psrld   xmm11,2
> >
> > +        paddd   xmm14,xmm8
> >
> > +        por     xmm1,xmm5
> >
> > +        por     xmm11,xmm7
> >
> > +        pxor    xmm2,xmm4
> >
> > +        movdqa  xmm4,XMMWORD[((176-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm14
> >
> > +        movdqa  xmm7,xmm12
> >
> > +        pxor    xmm2,XMMWORD[((16-128))+rax]
> >
> > +        pxor    xmm2,xmm4
> >
> > +        paddd   xmm13,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm14
> >
> > +        pand    xmm7,xmm11
> >
> > +
> >
> > +        movdqa  xmm6,xmm12
> >
> > +        movdqa  xmm5,xmm2
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm13,xmm7
> >
> > +        pxor    xmm6,xmm11
> >
> > +
> >
> > +        movdqa  XMMWORD[(128-128)+rax],xmm1
> >
> > +        paddd   xmm13,xmm1
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm10
> >
> > +        movdqa  xmm7,xmm10
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm2,xmm2
> >
> > +        paddd   xmm13,xmm6
> >
> > +
> >
> > +        psrld   xmm10,2
> >
> > +        paddd   xmm13,xmm8
> >
> > +        por     xmm2,xmm5
> >
> > +        por     xmm10,xmm7
> >
> > +        pxor    xmm3,xmm0
> >
> > +        movdqa  xmm0,XMMWORD[((192-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm13
> >
> > +        movdqa  xmm7,xmm11
> >
> > +        pxor    xmm3,XMMWORD[((32-128))+rax]
> >
> > +        pxor    xmm3,xmm0
> >
> > +        paddd   xmm12,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm13
> >
> > +        pand    xmm7,xmm10
> >
> > +
> >
> > +        movdqa  xmm6,xmm11
> >
> > +        movdqa  xmm5,xmm3
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm12,xmm7
> >
> > +        pxor    xmm6,xmm10
> >
> > +
> >
> > +        movdqa  XMMWORD[(144-128)+rax],xmm2
> >
> > +        paddd   xmm12,xmm2
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm14
> >
> > +        movdqa  xmm7,xmm14
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm3,xmm3
> >
> > +        paddd   xmm12,xmm6
> >
> > +
> >
> > +        psrld   xmm14,2
> >
> > +        paddd   xmm12,xmm8
> >
> > +        por     xmm3,xmm5
> >
> > +        por     xmm14,xmm7
> >
> > +        pxor    xmm4,xmm1
> >
> > +        movdqa  xmm1,XMMWORD[((208-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm12
> >
> > +        movdqa  xmm7,xmm10
> >
> > +        pxor    xmm4,XMMWORD[((48-128))+rax]
> >
> > +        pxor    xmm4,xmm1
> >
> > +        paddd   xmm11,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm12
> >
> > +        pand    xmm7,xmm14
> >
> > +
> >
> > +        movdqa  xmm6,xmm10
> >
> > +        movdqa  xmm5,xmm4
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm11,xmm7
> >
> > +        pxor    xmm6,xmm14
> >
> > +
> >
> > +        movdqa  XMMWORD[(160-128)+rax],xmm3
> >
> > +        paddd   xmm11,xmm3
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm13
> >
> > +        movdqa  xmm7,xmm13
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm4,xmm4
> >
> > +        paddd   xmm11,xmm6
> >
> > +
> >
> > +        psrld   xmm13,2
> >
> > +        paddd   xmm11,xmm8
> >
> > +        por     xmm4,xmm5
> >
> > +        por     xmm13,xmm7
> >
> > +        pxor    xmm0,xmm2
> >
> > +        movdqa  xmm2,XMMWORD[((224-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm11
> >
> > +        movdqa  xmm7,xmm14
> >
> > +        pxor    xmm0,XMMWORD[((64-128))+rax]
> >
> > +        pxor    xmm0,xmm2
> >
> > +        paddd   xmm10,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        movdqa  xmm9,xmm11
> >
> > +        pand    xmm7,xmm13
> >
> > +
> >
> > +        movdqa  xmm6,xmm14
> >
> > +        movdqa  xmm5,xmm0
> >
> > +        psrld   xmm9,27
> >
> > +        paddd   xmm10,xmm7
> >
> > +        pxor    xmm6,xmm13
> >
> > +
> >
> > +        movdqa  XMMWORD[(176-128)+rax],xmm4
> >
> > +        paddd   xmm10,xmm4
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        pand    xmm6,xmm12
> >
> > +        movdqa  xmm7,xmm12
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        paddd   xmm0,xmm0
> >
> > +        paddd   xmm10,xmm6
> >
> > +
> >
> > +        psrld   xmm12,2
> >
> > +        paddd   xmm10,xmm8
> >
> > +        por     xmm0,xmm5
> >
> > +        por     xmm12,xmm7
> >
> > +        movdqa  xmm15,XMMWORD[64+rbp]
> >
> > +        pxor    xmm1,xmm3
> >
> > +        movdqa  xmm3,XMMWORD[((240-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        movdqa  xmm6,xmm13
> >
> > +        pxor    xmm1,XMMWORD[((80-128))+rax]
> >
> > +        paddd   xmm14,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm11
> >
> > +
> >
> > +        movdqa  xmm9,xmm10
> >
> > +        movdqa  XMMWORD[(192-128)+rax],xmm0
> >
> > +        paddd   xmm14,xmm0
> >
> > +        pxor    xmm1,xmm3
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm12
> >
> > +        movdqa  xmm7,xmm11
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm1
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm14,xmm6
> >
> > +        paddd   xmm1,xmm1
> >
> > +
> >
> > +        psrld   xmm11,2
> >
> > +        paddd   xmm14,xmm8
> >
> > +        por     xmm1,xmm5
> >
> > +        por     xmm11,xmm7
> >
> > +        pxor    xmm2,xmm4
> >
> > +        movdqa  xmm4,XMMWORD[((0-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm14
> >
> > +        movdqa  xmm6,xmm12
> >
> > +        pxor    xmm2,XMMWORD[((96-128))+rax]
> >
> > +        paddd   xmm13,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm10
> >
> > +
> >
> > +        movdqa  xmm9,xmm14
> >
> > +        movdqa  XMMWORD[(208-128)+rax],xmm1
> >
> > +        paddd   xmm13,xmm1
> >
> > +        pxor    xmm2,xmm4
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm11
> >
> > +        movdqa  xmm7,xmm10
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm2
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm13,xmm6
> >
> > +        paddd   xmm2,xmm2
> >
> > +
> >
> > +        psrld   xmm10,2
> >
> > +        paddd   xmm13,xmm8
> >
> > +        por     xmm2,xmm5
> >
> > +        por     xmm10,xmm7
> >
> > +        pxor    xmm3,xmm0
> >
> > +        movdqa  xmm0,XMMWORD[((16-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm13
> >
> > +        movdqa  xmm6,xmm11
> >
> > +        pxor    xmm3,XMMWORD[((112-128))+rax]
> >
> > +        paddd   xmm12,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm14
> >
> > +
> >
> > +        movdqa  xmm9,xmm13
> >
> > +        movdqa  XMMWORD[(224-128)+rax],xmm2
> >
> > +        paddd   xmm12,xmm2
> >
> > +        pxor    xmm3,xmm0
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm10
> >
> > +        movdqa  xmm7,xmm14
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm3
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm12,xmm6
> >
> > +        paddd   xmm3,xmm3
> >
> > +
> >
> > +        psrld   xmm14,2
> >
> > +        paddd   xmm12,xmm8
> >
> > +        por     xmm3,xmm5
> >
> > +        por     xmm14,xmm7
> >
> > +        pxor    xmm4,xmm1
> >
> > +        movdqa  xmm1,XMMWORD[((32-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm12
> >
> > +        movdqa  xmm6,xmm10
> >
> > +        pxor    xmm4,XMMWORD[((128-128))+rax]
> >
> > +        paddd   xmm11,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm13
> >
> > +
> >
> > +        movdqa  xmm9,xmm12
> >
> > +        movdqa  XMMWORD[(240-128)+rax],xmm3
> >
> > +        paddd   xmm11,xmm3
> >
> > +        pxor    xmm4,xmm1
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm14
> >
> > +        movdqa  xmm7,xmm13
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm4
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm11,xmm6
> >
> > +        paddd   xmm4,xmm4
> >
> > +
> >
> > +        psrld   xmm13,2
> >
> > +        paddd   xmm11,xmm8
> >
> > +        por     xmm4,xmm5
> >
> > +        por     xmm13,xmm7
> >
> > +        pxor    xmm0,xmm2
> >
> > +        movdqa  xmm2,XMMWORD[((48-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm11
> >
> > +        movdqa  xmm6,xmm14
> >
> > +        pxor    xmm0,XMMWORD[((144-128))+rax]
> >
> > +        paddd   xmm10,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm12
> >
> > +
> >
> > +        movdqa  xmm9,xmm11
> >
> > +        movdqa  XMMWORD[(0-128)+rax],xmm4
> >
> > +        paddd   xmm10,xmm4
> >
> > +        pxor    xmm0,xmm2
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm13
> >
> > +        movdqa  xmm7,xmm12
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm0
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm10,xmm6
> >
> > +        paddd   xmm0,xmm0
> >
> > +
> >
> > +        psrld   xmm12,2
> >
> > +        paddd   xmm10,xmm8
> >
> > +        por     xmm0,xmm5
> >
> > +        por     xmm12,xmm7
> >
> > +        pxor    xmm1,xmm3
> >
> > +        movdqa  xmm3,XMMWORD[((64-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        movdqa  xmm6,xmm13
> >
> > +        pxor    xmm1,XMMWORD[((160-128))+rax]
> >
> > +        paddd   xmm14,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm11
> >
> > +
> >
> > +        movdqa  xmm9,xmm10
> >
> > +        movdqa  XMMWORD[(16-128)+rax],xmm0
> >
> > +        paddd   xmm14,xmm0
> >
> > +        pxor    xmm1,xmm3
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm12
> >
> > +        movdqa  xmm7,xmm11
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm1
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm14,xmm6
> >
> > +        paddd   xmm1,xmm1
> >
> > +
> >
> > +        psrld   xmm11,2
> >
> > +        paddd   xmm14,xmm8
> >
> > +        por     xmm1,xmm5
> >
> > +        por     xmm11,xmm7
> >
> > +        pxor    xmm2,xmm4
> >
> > +        movdqa  xmm4,XMMWORD[((80-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm14
> >
> > +        movdqa  xmm6,xmm12
> >
> > +        pxor    xmm2,XMMWORD[((176-128))+rax]
> >
> > +        paddd   xmm13,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm10
> >
> > +
> >
> > +        movdqa  xmm9,xmm14
> >
> > +        movdqa  XMMWORD[(32-128)+rax],xmm1
> >
> > +        paddd   xmm13,xmm1
> >
> > +        pxor    xmm2,xmm4
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm11
> >
> > +        movdqa  xmm7,xmm10
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm2
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm13,xmm6
> >
> > +        paddd   xmm2,xmm2
> >
> > +
> >
> > +        psrld   xmm10,2
> >
> > +        paddd   xmm13,xmm8
> >
> > +        por     xmm2,xmm5
> >
> > +        por     xmm10,xmm7
> >
> > +        pxor    xmm3,xmm0
> >
> > +        movdqa  xmm0,XMMWORD[((96-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm13
> >
> > +        movdqa  xmm6,xmm11
> >
> > +        pxor    xmm3,XMMWORD[((192-128))+rax]
> >
> > +        paddd   xmm12,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm14
> >
> > +
> >
> > +        movdqa  xmm9,xmm13
> >
> > +        movdqa  XMMWORD[(48-128)+rax],xmm2
> >
> > +        paddd   xmm12,xmm2
> >
> > +        pxor    xmm3,xmm0
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm10
> >
> > +        movdqa  xmm7,xmm14
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm3
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm12,xmm6
> >
> > +        paddd   xmm3,xmm3
> >
> > +
> >
> > +        psrld   xmm14,2
> >
> > +        paddd   xmm12,xmm8
> >
> > +        por     xmm3,xmm5
> >
> > +        por     xmm14,xmm7
> >
> > +        pxor    xmm4,xmm1
> >
> > +        movdqa  xmm1,XMMWORD[((112-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm12
> >
> > +        movdqa  xmm6,xmm10
> >
> > +        pxor    xmm4,XMMWORD[((208-128))+rax]
> >
> > +        paddd   xmm11,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm13
> >
> > +
> >
> > +        movdqa  xmm9,xmm12
> >
> > +        movdqa  XMMWORD[(64-128)+rax],xmm3
> >
> > +        paddd   xmm11,xmm3
> >
> > +        pxor    xmm4,xmm1
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm14
> >
> > +        movdqa  xmm7,xmm13
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm4
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm11,xmm6
> >
> > +        paddd   xmm4,xmm4
> >
> > +
> >
> > +        psrld   xmm13,2
> >
> > +        paddd   xmm11,xmm8
> >
> > +        por     xmm4,xmm5
> >
> > +        por     xmm13,xmm7
> >
> > +        pxor    xmm0,xmm2
> >
> > +        movdqa  xmm2,XMMWORD[((128-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm11
> >
> > +        movdqa  xmm6,xmm14
> >
> > +        pxor    xmm0,XMMWORD[((224-128))+rax]
> >
> > +        paddd   xmm10,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm12
> >
> > +
> >
> > +        movdqa  xmm9,xmm11
> >
> > +        movdqa  XMMWORD[(80-128)+rax],xmm4
> >
> > +        paddd   xmm10,xmm4
> >
> > +        pxor    xmm0,xmm2
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm13
> >
> > +        movdqa  xmm7,xmm12
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm0
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm10,xmm6
> >
> > +        paddd   xmm0,xmm0
> >
> > +
> >
> > +        psrld   xmm12,2
> >
> > +        paddd   xmm10,xmm8
> >
> > +        por     xmm0,xmm5
> >
> > +        por     xmm12,xmm7
> >
> > +        pxor    xmm1,xmm3
> >
> > +        movdqa  xmm3,XMMWORD[((144-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        movdqa  xmm6,xmm13
> >
> > +        pxor    xmm1,XMMWORD[((240-128))+rax]
> >
> > +        paddd   xmm14,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm11
> >
> > +
> >
> > +        movdqa  xmm9,xmm10
> >
> > +        movdqa  XMMWORD[(96-128)+rax],xmm0
> >
> > +        paddd   xmm14,xmm0
> >
> > +        pxor    xmm1,xmm3
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm12
> >
> > +        movdqa  xmm7,xmm11
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm1
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm14,xmm6
> >
> > +        paddd   xmm1,xmm1
> >
> > +
> >
> > +        psrld   xmm11,2
> >
> > +        paddd   xmm14,xmm8
> >
> > +        por     xmm1,xmm5
> >
> > +        por     xmm11,xmm7
> >
> > +        pxor    xmm2,xmm4
> >
> > +        movdqa  xmm4,XMMWORD[((160-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm14
> >
> > +        movdqa  xmm6,xmm12
> >
> > +        pxor    xmm2,XMMWORD[((0-128))+rax]
> >
> > +        paddd   xmm13,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm10
> >
> > +
> >
> > +        movdqa  xmm9,xmm14
> >
> > +        movdqa  XMMWORD[(112-128)+rax],xmm1
> >
> > +        paddd   xmm13,xmm1
> >
> > +        pxor    xmm2,xmm4
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm11
> >
> > +        movdqa  xmm7,xmm10
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm2
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm13,xmm6
> >
> > +        paddd   xmm2,xmm2
> >
> > +
> >
> > +        psrld   xmm10,2
> >
> > +        paddd   xmm13,xmm8
> >
> > +        por     xmm2,xmm5
> >
> > +        por     xmm10,xmm7
> >
> > +        pxor    xmm3,xmm0
> >
> > +        movdqa  xmm0,XMMWORD[((176-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm13
> >
> > +        movdqa  xmm6,xmm11
> >
> > +        pxor    xmm3,XMMWORD[((16-128))+rax]
> >
> > +        paddd   xmm12,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm14
> >
> > +
> >
> > +        movdqa  xmm9,xmm13
> >
> > +        paddd   xmm12,xmm2
> >
> > +        pxor    xmm3,xmm0
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm10
> >
> > +        movdqa  xmm7,xmm14
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm3
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm12,xmm6
> >
> > +        paddd   xmm3,xmm3
> >
> > +
> >
> > +        psrld   xmm14,2
> >
> > +        paddd   xmm12,xmm8
> >
> > +        por     xmm3,xmm5
> >
> > +        por     xmm14,xmm7
> >
> > +        pxor    xmm4,xmm1
> >
> > +        movdqa  xmm1,XMMWORD[((192-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm12
> >
> > +        movdqa  xmm6,xmm10
> >
> > +        pxor    xmm4,XMMWORD[((32-128))+rax]
> >
> > +        paddd   xmm11,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm13
> >
> > +
> >
> > +        movdqa  xmm9,xmm12
> >
> > +        paddd   xmm11,xmm3
> >
> > +        pxor    xmm4,xmm1
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm14
> >
> > +        movdqa  xmm7,xmm13
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm4
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm11,xmm6
> >
> > +        paddd   xmm4,xmm4
> >
> > +
> >
> > +        psrld   xmm13,2
> >
> > +        paddd   xmm11,xmm8
> >
> > +        por     xmm4,xmm5
> >
> > +        por     xmm13,xmm7
> >
> > +        pxor    xmm0,xmm2
> >
> > +        movdqa  xmm2,XMMWORD[((208-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm11
> >
> > +        movdqa  xmm6,xmm14
> >
> > +        pxor    xmm0,XMMWORD[((48-128))+rax]
> >
> > +        paddd   xmm10,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm12
> >
> > +
> >
> > +        movdqa  xmm9,xmm11
> >
> > +        paddd   xmm10,xmm4
> >
> > +        pxor    xmm0,xmm2
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm13
> >
> > +        movdqa  xmm7,xmm12
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm0
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm10,xmm6
> >
> > +        paddd   xmm0,xmm0
> >
> > +
> >
> > +        psrld   xmm12,2
> >
> > +        paddd   xmm10,xmm8
> >
> > +        por     xmm0,xmm5
> >
> > +        por     xmm12,xmm7
> >
> > +        pxor    xmm1,xmm3
> >
> > +        movdqa  xmm3,XMMWORD[((224-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        movdqa  xmm6,xmm13
> >
> > +        pxor    xmm1,XMMWORD[((64-128))+rax]
> >
> > +        paddd   xmm14,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm11
> >
> > +
> >
> > +        movdqa  xmm9,xmm10
> >
> > +        paddd   xmm14,xmm0
> >
> > +        pxor    xmm1,xmm3
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm12
> >
> > +        movdqa  xmm7,xmm11
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm1
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm14,xmm6
> >
> > +        paddd   xmm1,xmm1
> >
> > +
> >
> > +        psrld   xmm11,2
> >
> > +        paddd   xmm14,xmm8
> >
> > +        por     xmm1,xmm5
> >
> > +        por     xmm11,xmm7
> >
> > +        pxor    xmm2,xmm4
> >
> > +        movdqa  xmm4,XMMWORD[((240-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm14
> >
> > +        movdqa  xmm6,xmm12
> >
> > +        pxor    xmm2,XMMWORD[((80-128))+rax]
> >
> > +        paddd   xmm13,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm10
> >
> > +
> >
> > +        movdqa  xmm9,xmm14
> >
> > +        paddd   xmm13,xmm1
> >
> > +        pxor    xmm2,xmm4
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm11
> >
> > +        movdqa  xmm7,xmm10
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm2
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm13,xmm6
> >
> > +        paddd   xmm2,xmm2
> >
> > +
> >
> > +        psrld   xmm10,2
> >
> > +        paddd   xmm13,xmm8
> >
> > +        por     xmm2,xmm5
> >
> > +        por     xmm10,xmm7
> >
> > +        pxor    xmm3,xmm0
> >
> > +        movdqa  xmm0,XMMWORD[((0-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm13
> >
> > +        movdqa  xmm6,xmm11
> >
> > +        pxor    xmm3,XMMWORD[((96-128))+rax]
> >
> > +        paddd   xmm12,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm14
> >
> > +
> >
> > +        movdqa  xmm9,xmm13
> >
> > +        paddd   xmm12,xmm2
> >
> > +        pxor    xmm3,xmm0
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm10
> >
> > +        movdqa  xmm7,xmm14
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm3
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm12,xmm6
> >
> > +        paddd   xmm3,xmm3
> >
> > +
> >
> > +        psrld   xmm14,2
> >
> > +        paddd   xmm12,xmm8
> >
> > +        por     xmm3,xmm5
> >
> > +        por     xmm14,xmm7
> >
> > +        pxor    xmm4,xmm1
> >
> > +        movdqa  xmm1,XMMWORD[((16-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm8,xmm12
> >
> > +        movdqa  xmm6,xmm10
> >
> > +        pxor    xmm4,XMMWORD[((112-128))+rax]
> >
> > +        paddd   xmm11,xmm15
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm13
> >
> > +
> >
> > +        movdqa  xmm9,xmm12
> >
> > +        paddd   xmm11,xmm3
> >
> > +        pxor    xmm4,xmm1
> >
> > +        psrld   xmm9,27
> >
> > +        pxor    xmm6,xmm14
> >
> > +        movdqa  xmm7,xmm13
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        movdqa  xmm5,xmm4
> >
> > +        por     xmm8,xmm9
> >
> > +        psrld   xmm5,31
> >
> > +        paddd   xmm11,xmm6
> >
> > +        paddd   xmm4,xmm4
> >
> > +
> >
> > +        psrld   xmm13,2
> >
> > +        paddd   xmm11,xmm8
> >
> > +        por     xmm4,xmm5
> >
> > +        por     xmm13,xmm7
> >
> > +        movdqa  xmm8,xmm11
> >
> > +        paddd   xmm10,xmm15
> >
> > +        movdqa  xmm6,xmm14
> >
> > +        pslld   xmm8,5
> >
> > +        pxor    xmm6,xmm12
> >
> > +
> >
> > +        movdqa  xmm9,xmm11
> >
> > +        paddd   xmm10,xmm4
> >
> > +        psrld   xmm9,27
> >
> > +        movdqa  xmm7,xmm12
> >
> > +        pxor    xmm6,xmm13
> >
> > +
> >
> > +        pslld   xmm7,30
> >
> > +        por     xmm8,xmm9
> >
> > +        paddd   xmm10,xmm6
> >
> > +
> >
> > +        psrld   xmm12,2
> >
> > +        paddd   xmm10,xmm8
> >
> > +        por     xmm12,xmm7
> >
> > +        movdqa  xmm0,XMMWORD[rbx]
> >
> > +        mov     ecx,1
> >
> > +        cmp     ecx,DWORD[rbx]
> >
> > +        pxor    xmm8,xmm8
> >
> > +        cmovge  r8,rbp
> >
> > +        cmp     ecx,DWORD[4+rbx]
> >
> > +        movdqa  xmm1,xmm0
> >
> > +        cmovge  r9,rbp
> >
> > +        cmp     ecx,DWORD[8+rbx]
> >
> > +        pcmpgtd xmm1,xmm8
> >
> > +        cmovge  r10,rbp
> >
> > +        cmp     ecx,DWORD[12+rbx]
> >
> > +        paddd   xmm0,xmm1
> >
> > +        cmovge  r11,rbp
> >
> > +
> >
> > +        movdqu  xmm6,XMMWORD[rdi]
> >
> > +        pand    xmm10,xmm1
> >
> > +        movdqu  xmm7,XMMWORD[32+rdi]
> >
> > +        pand    xmm11,xmm1
> >
> > +        paddd   xmm10,xmm6
> >
> > +        movdqu  xmm8,XMMWORD[64+rdi]
> >
> > +        pand    xmm12,xmm1
> >
> > +        paddd   xmm11,xmm7
> >
> > +        movdqu  xmm9,XMMWORD[96+rdi]
> >
> > +        pand    xmm13,xmm1
> >
> > +        paddd   xmm12,xmm8
> >
> > +        movdqu  xmm5,XMMWORD[128+rdi]
> >
> > +        pand    xmm14,xmm1
> >
> > +        movdqu  XMMWORD[rdi],xmm10
> >
> > +        paddd   xmm13,xmm9
> >
> > +        movdqu  XMMWORD[32+rdi],xmm11
> >
> > +        paddd   xmm14,xmm5
> >
> > +        movdqu  XMMWORD[64+rdi],xmm12
> >
> > +        movdqu  XMMWORD[96+rdi],xmm13
> >
> > +        movdqu  XMMWORD[128+rdi],xmm14
> >
> > +
> >
> > +        movdqa  XMMWORD[rbx],xmm0
> >
> > +        movdqa  xmm5,XMMWORD[96+rbp]
> >
> > +        movdqa  xmm15,XMMWORD[((-32))+rbp]
> >
> > +        dec     edx
> >
> > +        jnz     NEAR $L$oop
> >
> > +
> >
> > +        mov     edx,DWORD[280+rsp]
> >
> > +        lea     rdi,[16+rdi]
> >
> > +        lea     rsi,[64+rsi]
> >
> > +        dec     edx
> >
> > +        jnz     NEAR $L$oop_grande
> >
> > +
> >
> > +$L$done:
> >
> > +        mov     rax,QWORD[272+rsp]
> >
> > +
> >
> > +        movaps  xmm6,XMMWORD[((-184))+rax]
> >
> > +        movaps  xmm7,XMMWORD[((-168))+rax]
> >
> > +        movaps  xmm8,XMMWORD[((-152))+rax]
> >
> > +        movaps  xmm9,XMMWORD[((-136))+rax]
> >
> > +        movaps  xmm10,XMMWORD[((-120))+rax]
> >
> > +        movaps  xmm11,XMMWORD[((-104))+rax]
> >
> > +        movaps  xmm12,XMMWORD[((-88))+rax]
> >
> > +        movaps  xmm13,XMMWORD[((-72))+rax]
> >
> > +        movaps  xmm14,XMMWORD[((-56))+rax]
> >
> > +        movaps  xmm15,XMMWORD[((-40))+rax]
> >
> > +        mov     rbp,QWORD[((-16))+rax]
> >
> > +
> >
> > +        mov     rbx,QWORD[((-8))+rax]
> >
> > +
> >
> > +        lea     rsp,[rax]
> >
> > +
> >
> > +$L$epilogue:
> >
> > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> >
> > +        mov     rsi,QWORD[16+rsp]
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +$L$SEH_end_sha1_multi_block:
> >
> > +
> >
> > +ALIGN   32
> >
> > +sha1_multi_block_shaext:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_sha1_multi_block_shaext:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +
> >
> > +
> >
> > +
> >
> > +_shaext_shortcut:
> >
> > +        mov     rax,rsp
> >
> > +
> >
> > +        push    rbx
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        lea     rsp,[((-168))+rsp]
> >
> > +        movaps  XMMWORD[rsp],xmm6
> >
> > +        movaps  XMMWORD[16+rsp],xmm7
> >
> > +        movaps  XMMWORD[32+rsp],xmm8
> >
> > +        movaps  XMMWORD[48+rsp],xmm9
> >
> > +        movaps  XMMWORD[(-120)+rax],xmm10
> >
> > +        movaps  XMMWORD[(-104)+rax],xmm11
> >
> > +        movaps  XMMWORD[(-88)+rax],xmm12
> >
> > +        movaps  XMMWORD[(-72)+rax],xmm13
> >
> > +        movaps  XMMWORD[(-56)+rax],xmm14
> >
> > +        movaps  XMMWORD[(-40)+rax],xmm15
> >
> > +        sub     rsp,288
> >
> > +        shl     edx,1
> >
> > +        and     rsp,-256
> >
> > +        lea     rdi,[64+rdi]
> >
> > +        mov     QWORD[272+rsp],rax
> >
> > +$L$body_shaext:
> >
> > +        lea     rbx,[256+rsp]
> >
> > +        movdqa  xmm3,XMMWORD[((K_XX_XX+128))]
> >
> > +
> >
> > +$L$oop_grande_shaext:
> >
> > +        mov     DWORD[280+rsp],edx
> >
> > +        xor     edx,edx
> >
> > +        mov     r8,QWORD[rsi]
> >
> > +        mov     ecx,DWORD[8+rsi]
> >
> > +        cmp     ecx,edx
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        mov     DWORD[rbx],ecx
> >
> > +        cmovle  r8,rsp
> >
> > +        mov     r9,QWORD[16+rsi]
> >
> > +        mov     ecx,DWORD[24+rsi]
> >
> > +        cmp     ecx,edx
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        mov     DWORD[4+rbx],ecx
> >
> > +        cmovle  r9,rsp
> >
> > +        test    edx,edx
> >
> > +        jz      NEAR $L$done_shaext
> >
> > +
> >
> > +        movq    xmm0,QWORD[((0-64))+rdi]
> >
> > +        movq    xmm4,QWORD[((32-64))+rdi]
> >
> > +        movq    xmm5,QWORD[((64-64))+rdi]
> >
> > +        movq    xmm6,QWORD[((96-64))+rdi]
> >
> > +        movq    xmm7,QWORD[((128-64))+rdi]
> >
> > +
> >
> > +        punpckldq       xmm0,xmm4
> >
> > +        punpckldq       xmm5,xmm6
> >
> > +
> >
> > +        movdqa  xmm8,xmm0
> >
> > +        punpcklqdq      xmm0,xmm5
> >
> > +        punpckhqdq      xmm8,xmm5
> >
> > +
> >
> > +        pshufd  xmm1,xmm7,63
> >
> > +        pshufd  xmm9,xmm7,127
> >
> > +        pshufd  xmm0,xmm0,27
> >
> > +        pshufd  xmm8,xmm8,27
> >
> > +        jmp     NEAR $L$oop_shaext
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$oop_shaext:
> >
> > +        movdqu  xmm4,XMMWORD[r8]
> >
> > +        movdqu  xmm11,XMMWORD[r9]
> >
> > +        movdqu  xmm5,XMMWORD[16+r8]
> >
> > +        movdqu  xmm12,XMMWORD[16+r9]
> >
> > +        movdqu  xmm6,XMMWORD[32+r8]
> >
> > +DB      102,15,56,0,227
> >
> > +        movdqu  xmm13,XMMWORD[32+r9]
> >
> > +DB      102,68,15,56,0,219
> >
> > +        movdqu  xmm7,XMMWORD[48+r8]
> >
> > +        lea     r8,[64+r8]
> >
> > +DB      102,15,56,0,235
> >
> > +        movdqu  xmm14,XMMWORD[48+r9]
> >
> > +        lea     r9,[64+r9]
> >
> > +DB      102,68,15,56,0,227
> >
> > +
> >
> > +        movdqa  XMMWORD[80+rsp],xmm1
> >
> > +        paddd   xmm1,xmm4
> >
> > +        movdqa  XMMWORD[112+rsp],xmm9
> >
> > +        paddd   xmm9,xmm11
> >
> > +        movdqa  XMMWORD[64+rsp],xmm0
> >
> > +        movdqa  xmm2,xmm0
> >
> > +        movdqa  XMMWORD[96+rsp],xmm8
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      15,58,204,193,0
> >
> > +DB      15,56,200,213
> >
> > +DB      69,15,58,204,193,0
> >
> > +DB      69,15,56,200,212
> >
> > +DB      102,15,56,0,243
> >
> > +        prefetcht0      [127+r8]
> >
> > +DB      15,56,201,229
> >
> > +DB      102,68,15,56,0,235
> >
> > +        prefetcht0      [127+r9]
> >
> > +DB      69,15,56,201,220
> >
> > +
> >
> > +DB      102,15,56,0,251
> >
> > +        movdqa  xmm1,xmm0
> >
> > +DB      102,68,15,56,0,243
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      15,58,204,194,0
> >
> > +DB      15,56,200,206
> >
> > +DB      69,15,58,204,194,0
> >
> > +DB      69,15,56,200,205
> >
> > +        pxor    xmm4,xmm6
> >
> > +DB      15,56,201,238
> >
> > +        pxor    xmm11,xmm13
> >
> > +DB      69,15,56,201,229
> >
> > +        movdqa  xmm2,xmm0
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      15,58,204,193,0
> >
> > +DB      15,56,200,215
> >
> > +DB      69,15,58,204,193,0
> >
> > +DB      69,15,56,200,214
> >
> > +DB      15,56,202,231
> >
> > +DB      69,15,56,202,222
> >
> > +        pxor    xmm5,xmm7
> >
> > +DB      15,56,201,247
> >
> > +        pxor    xmm12,xmm14
> >
> > +DB      69,15,56,201,238
> >
> > +        movdqa  xmm1,xmm0
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      15,58,204,194,0
> >
> > +DB      15,56,200,204
> >
> > +DB      69,15,58,204,194,0
> >
> > +DB      69,15,56,200,203
> >
> > +DB      15,56,202,236
> >
> > +DB      69,15,56,202,227
> >
> > +        pxor    xmm6,xmm4
> >
> > +DB      15,56,201,252
> >
> > +        pxor    xmm13,xmm11
> >
> > +DB      69,15,56,201,243
> >
> > +        movdqa  xmm2,xmm0
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      15,58,204,193,0
> >
> > +DB      15,56,200,213
> >
> > +DB      69,15,58,204,193,0
> >
> > +DB      69,15,56,200,212
> >
> > +DB      15,56,202,245
> >
> > +DB      69,15,56,202,236
> >
> > +        pxor    xmm7,xmm5
> >
> > +DB      15,56,201,229
> >
> > +        pxor    xmm14,xmm12
> >
> > +DB      69,15,56,201,220
> >
> > +        movdqa  xmm1,xmm0
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      15,58,204,194,1
> >
> > +DB      15,56,200,206
> >
> > +DB      69,15,58,204,194,1
> >
> > +DB      69,15,56,200,205
> >
> > +DB      15,56,202,254
> >
> > +DB      69,15,56,202,245
> >
> > +        pxor    xmm4,xmm6
> >
> > +DB      15,56,201,238
> >
> > +        pxor    xmm11,xmm13
> >
> > +DB      69,15,56,201,229
> >
> > +        movdqa  xmm2,xmm0
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      15,58,204,193,1
> >
> > +DB      15,56,200,215
> >
> > +DB      69,15,58,204,193,1
> >
> > +DB      69,15,56,200,214
> >
> > +DB      15,56,202,231
> >
> > +DB      69,15,56,202,222
> >
> > +        pxor    xmm5,xmm7
> >
> > +DB      15,56,201,247
> >
> > +        pxor    xmm12,xmm14
> >
> > +DB      69,15,56,201,238
> >
> > +        movdqa  xmm1,xmm0
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      15,58,204,194,1
> >
> > +DB      15,56,200,204
> >
> > +DB      69,15,58,204,194,1
> >
> > +DB      69,15,56,200,203
> >
> > +DB      15,56,202,236
> >
> > +DB      69,15,56,202,227
> >
> > +        pxor    xmm6,xmm4
> >
> > +DB      15,56,201,252
> >
> > +        pxor    xmm13,xmm11
> >
> > +DB      69,15,56,201,243
> >
> > +        movdqa  xmm2,xmm0
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      15,58,204,193,1
> >
> > +DB      15,56,200,213
> >
> > +DB      69,15,58,204,193,1
> >
> > +DB      69,15,56,200,212
> >
> > +DB      15,56,202,245
> >
> > +DB      69,15,56,202,236
> >
> > +        pxor    xmm7,xmm5
> >
> > +DB      15,56,201,229
> >
> > +        pxor    xmm14,xmm12
> >
> > +DB      69,15,56,201,220
> >
> > +        movdqa  xmm1,xmm0
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      15,58,204,194,1
> >
> > +DB      15,56,200,206
> >
> > +DB      69,15,58,204,194,1
> >
> > +DB      69,15,56,200,205
> >
> > +DB      15,56,202,254
> >
> > +DB      69,15,56,202,245
> >
> > +        pxor    xmm4,xmm6
> >
> > +DB      15,56,201,238
> >
> > +        pxor    xmm11,xmm13
> >
> > +DB      69,15,56,201,229
> >
> > +        movdqa  xmm2,xmm0
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      15,58,204,193,2
> >
> > +DB      15,56,200,215
> >
> > +DB      69,15,58,204,193,2
> >
> > +DB      69,15,56,200,214
> >
> > +DB      15,56,202,231
> >
> > +DB      69,15,56,202,222
> >
> > +        pxor    xmm5,xmm7
> >
> > +DB      15,56,201,247
> >
> > +        pxor    xmm12,xmm14
> >
> > +DB      69,15,56,201,238
> >
> > +        movdqa  xmm1,xmm0
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      15,58,204,194,2
> >
> > +DB      15,56,200,204
> >
> > +DB      69,15,58,204,194,2
> >
> > +DB      69,15,56,200,203
> >
> > +DB      15,56,202,236
> >
> > +DB      69,15,56,202,227
> >
> > +        pxor    xmm6,xmm4
> >
> > +DB      15,56,201,252
> >
> > +        pxor    xmm13,xmm11
> >
> > +DB      69,15,56,201,243
> >
> > +        movdqa  xmm2,xmm0
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      15,58,204,193,2
> >
> > +DB      15,56,200,213
> >
> > +DB      69,15,58,204,193,2
> >
> > +DB      69,15,56,200,212
> >
> > +DB      15,56,202,245
> >
> > +DB      69,15,56,202,236
> >
> > +        pxor    xmm7,xmm5
> >
> > +DB      15,56,201,229
> >
> > +        pxor    xmm14,xmm12
> >
> > +DB      69,15,56,201,220
> >
> > +        movdqa  xmm1,xmm0
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      15,58,204,194,2
> >
> > +DB      15,56,200,206
> >
> > +DB      69,15,58,204,194,2
> >
> > +DB      69,15,56,200,205
> >
> > +DB      15,56,202,254
> >
> > +DB      69,15,56,202,245
> >
> > +        pxor    xmm4,xmm6
> >
> > +DB      15,56,201,238
> >
> > +        pxor    xmm11,xmm13
> >
> > +DB      69,15,56,201,229
> >
> > +        movdqa  xmm2,xmm0
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      15,58,204,193,2
> >
> > +DB      15,56,200,215
> >
> > +DB      69,15,58,204,193,2
> >
> > +DB      69,15,56,200,214
> >
> > +DB      15,56,202,231
> >
> > +DB      69,15,56,202,222
> >
> > +        pxor    xmm5,xmm7
> >
> > +DB      15,56,201,247
> >
> > +        pxor    xmm12,xmm14
> >
> > +DB      69,15,56,201,238
> >
> > +        movdqa  xmm1,xmm0
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      15,58,204,194,3
> >
> > +DB      15,56,200,204
> >
> > +DB      69,15,58,204,194,3
> >
> > +DB      69,15,56,200,203
> >
> > +DB      15,56,202,236
> >
> > +DB      69,15,56,202,227
> >
> > +        pxor    xmm6,xmm4
> >
> > +DB      15,56,201,252
> >
> > +        pxor    xmm13,xmm11
> >
> > +DB      69,15,56,201,243
> >
> > +        movdqa  xmm2,xmm0
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      15,58,204,193,3
> >
> > +DB      15,56,200,213
> >
> > +DB      69,15,58,204,193,3
> >
> > +DB      69,15,56,200,212
> >
> > +DB      15,56,202,245
> >
> > +DB      69,15,56,202,236
> >
> > +        pxor    xmm7,xmm5
> >
> > +        pxor    xmm14,xmm12
> >
> > +
> >
> > +        mov     ecx,1
> >
> > +        pxor    xmm4,xmm4
> >
> > +        cmp     ecx,DWORD[rbx]
> >
> > +        cmovge  r8,rsp
> >
> > +
> >
> > +        movdqa  xmm1,xmm0
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      15,58,204,194,3
> >
> > +DB      15,56,200,206
> >
> > +DB      69,15,58,204,194,3
> >
> > +DB      69,15,56,200,205
> >
> > +DB      15,56,202,254
> >
> > +DB      69,15,56,202,245
> >
> > +
> >
> > +        cmp     ecx,DWORD[4+rbx]
> >
> > +        cmovge  r9,rsp
> >
> > +        movq    xmm6,QWORD[rbx]
> >
> > +
> >
> > +        movdqa  xmm2,xmm0
> >
> > +        movdqa  xmm10,xmm8
> >
> > +DB      15,58,204,193,3
> >
> > +DB      15,56,200,215
> >
> > +DB      69,15,58,204,193,3
> >
> > +DB      69,15,56,200,214
> >
> > +
> >
> > +        pshufd  xmm11,xmm6,0x00
> >
> > +        pshufd  xmm12,xmm6,0x55
> >
> > +        movdqa  xmm7,xmm6
> >
> > +        pcmpgtd xmm11,xmm4
> >
> > +        pcmpgtd xmm12,xmm4
> >
> > +
> >
> > +        movdqa  xmm1,xmm0
> >
> > +        movdqa  xmm9,xmm8
> >
> > +DB      15,58,204,194,3
> >
> > +DB      15,56,200,204
> >
> > +DB      69,15,58,204,194,3
> >
> > +DB      68,15,56,200,204
> >
> > +
> >
> > +        pcmpgtd xmm7,xmm4
> >
> > +        pand    xmm0,xmm11
> >
> > +        pand    xmm1,xmm11
> >
> > +        pand    xmm8,xmm12
> >
> > +        pand    xmm9,xmm12
> >
> > +        paddd   xmm6,xmm7
> >
> > +
> >
> > +        paddd   xmm0,XMMWORD[64+rsp]
> >
> > +        paddd   xmm1,XMMWORD[80+rsp]
> >
> > +        paddd   xmm8,XMMWORD[96+rsp]
> >
> > +        paddd   xmm9,XMMWORD[112+rsp]
> >
> > +
> >
> > +        movq    QWORD[rbx],xmm6
> >
> > +        dec     edx
> >
> > +        jnz     NEAR $L$oop_shaext
> >
> > +
> >
> > +        mov     edx,DWORD[280+rsp]
> >
> > +
> >
> > +        pshufd  xmm0,xmm0,27
> >
> > +        pshufd  xmm8,xmm8,27
> >
> > +
> >
> > +        movdqa  xmm6,xmm0
> >
> > +        punpckldq       xmm0,xmm8
> >
> > +        punpckhdq       xmm6,xmm8
> >
> > +        punpckhdq       xmm1,xmm9
> >
> > +        movq    QWORD[(0-64)+rdi],xmm0
> >
> > +        psrldq  xmm0,8
> >
> > +        movq    QWORD[(64-64)+rdi],xmm6
> >
> > +        psrldq  xmm6,8
> >
> > +        movq    QWORD[(32-64)+rdi],xmm0
> >
> > +        psrldq  xmm1,8
> >
> > +        movq    QWORD[(96-64)+rdi],xmm6
> >
> > +        movq    QWORD[(128-64)+rdi],xmm1
> >
> > +
> >
> > +        lea     rdi,[8+rdi]
> >
> > +        lea     rsi,[32+rsi]
> >
> > +        dec     edx
> >
> > +        jnz     NEAR $L$oop_grande_shaext
> >
> > +
> >
> > +$L$done_shaext:
> >
> > +
> >
> > +        movaps  xmm6,XMMWORD[((-184))+rax]
> >
> > +        movaps  xmm7,XMMWORD[((-168))+rax]
> >
> > +        movaps  xmm8,XMMWORD[((-152))+rax]
> >
> > +        movaps  xmm9,XMMWORD[((-136))+rax]
> >
> > +        movaps  xmm10,XMMWORD[((-120))+rax]
> >
> > +        movaps  xmm11,XMMWORD[((-104))+rax]
> >
> > +        movaps  xmm12,XMMWORD[((-88))+rax]
> >
> > +        movaps  xmm13,XMMWORD[((-72))+rax]
> >
> > +        movaps  xmm14,XMMWORD[((-56))+rax]
> >
> > +        movaps  xmm15,XMMWORD[((-40))+rax]
> >
> > +        mov     rbp,QWORD[((-16))+rax]
> >
> > +
> >
> > +        mov     rbx,QWORD[((-8))+rax]
> >
> > +
> >
> > +        lea     rsp,[rax]
> >
> > +
> >
> > +$L$epilogue_shaext:
> >
> > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> >
> > +        mov     rsi,QWORD[16+rsp]
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +$L$SEH_end_sha1_multi_block_shaext:
> >
> > +
> >
> > +ALIGN   256
> >
> > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> >
> > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> >
> > +K_XX_XX:
> >
> > +        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,109,117,108,116,105,45,98,108,111,99,107
> >
> > +DB      32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120
> >
> > +DB      56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77
> >
> > +DB      83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110
> >
> > +DB      115,115,108,46,111,114,103,62,0
> >
> > +EXTERN  __imp_RtlVirtualUnwind
> >
> > +
> >
> > +ALIGN   16
> >
> > +se_handler:
> >
> > +        push    rsi
> >
> > +        push    rdi
> >
> > +        push    rbx
> >
> > +        push    rbp
> >
> > +        push    r12
> >
> > +        push    r13
> >
> > +        push    r14
> >
> > +        push    r15
> >
> > +        pushfq
> >
> > +        sub     rsp,64
> >
> > +
> >
> > +        mov     rax,QWORD[120+r8]
> >
> > +        mov     rbx,QWORD[248+r8]
> >
> > +
> >
> > +        mov     rsi,QWORD[8+r9]
> >
> > +        mov     r11,QWORD[56+r9]
> >
> > +
> >
> > +        mov     r10d,DWORD[r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$in_prologue
> >
> > +
> >
> > +        mov     rax,QWORD[152+r8]
> >
> > +
> >
> > +        mov     r10d,DWORD[4+r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jae     NEAR $L$in_prologue
> >
> > +
> >
> > +        mov     rax,QWORD[272+rax]
> >
> > +
> >
> > +        mov     rbx,QWORD[((-8))+rax]
> >
> > +        mov     rbp,QWORD[((-16))+rax]
> >
> > +        mov     QWORD[144+r8],rbx
> >
> > +        mov     QWORD[160+r8],rbp
> >
> > +
> >
> > +        lea     rsi,[((-24-160))+rax]
> >
> > +        lea     rdi,[512+r8]
> >
> > +        mov     ecx,20
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +$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[40+r9]
> >
> > +        mov     rsi,r8
> >
> > +        mov     ecx,154
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +        mov     rsi,r9
> >
> > +        xor     rcx,rcx
> >
> > +        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
> >
> > +        popfq
> >
> > +        pop     r15
> >
> > +        pop     r14
> >
> > +        pop     r13
> >
> > +        pop     r12
> >
> > +        pop     rbp
> >
> > +        pop     rbx
> >
> > +        pop     rdi
> >
> > +        pop     rsi
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +section .pdata rdata align=4
> >
> > +ALIGN   4
> >
> > +        DD      $L$SEH_begin_sha1_multi_block wrt ..imagebase
> >
> > +        DD      $L$SEH_end_sha1_multi_block wrt ..imagebase
> >
> > +        DD      $L$SEH_info_sha1_multi_block wrt ..imagebase
> >
> > +        DD      $L$SEH_begin_sha1_multi_block_shaext wrt ..imagebase
> >
> > +        DD      $L$SEH_end_sha1_multi_block_shaext wrt ..imagebase
> >
> > +        DD      $L$SEH_info_sha1_multi_block_shaext wrt ..imagebase
> >
> > +section .xdata rdata align=8
> >
> > +ALIGN   8
> >
> > +$L$SEH_info_sha1_multi_block:
> >
> > +DB      9,0,0,0
> >
> > +        DD      se_handler wrt ..imagebase
> >
> > +        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
> >
> > +$L$SEH_info_sha1_multi_block_shaext:
> >
> > +DB      9,0,0,0
> >
> > +        DD      se_handler wrt ..imagebase
> >
> > +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
> > wrt ..imagebase
> >
> > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> > new file mode 100644
> > index 0000000000..c6d68d348f
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> > @@ -0,0 +1,2884 @@
> > +; WARNING: do not edit!
> >
> > +; Generated from openssl/crypto/sha/asm/sha1-x86_64.pl
> >
> > +;
> >
> > +; Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved.
> >
> > +;
> >
> > +; Licensed under the OpenSSL license (the "License").  You may not use
> >
> > +; this file except in compliance with the License.  You can obtain a copy
> >
> > +; in the file LICENSE in the source distribution or at
> >
> > +; https://www.openssl.org/source/license.html
> >
> > +
> >
> > +default rel
> >
> > +%define XMMWORD
> >
> > +%define YMMWORD
> >
> > +%define ZMMWORD
> >
> > +section .text code align=64
> >
> > +
> >
> > +EXTERN  OPENSSL_ia32cap_P
> >
> > +
> >
> > +global  sha1_block_data_order
> >
> > +
> >
> > +ALIGN   16
> >
> > +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:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +
> >
> > +
> >
> > +
> >
> > +        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      NEAR $L$ialu
> >
> > +        test    r10d,536870912
> >
> > +        jnz     NEAR _shaext_shortcut
> >
> > +        jmp     NEAR _ssse3_shortcut
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$ialu:
> >
> > +        mov     rax,rsp
> >
> > +
> >
> > +        push    rbx
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        push    r12
> >
> > +
> >
> > +        push    r13
> >
> > +
> >
> > +        push    r14
> >
> > +
> >
> > +        mov     r8,rdi
> >
> > +        sub     rsp,72
> >
> > +        mov     r9,rsi
> >
> > +        and     rsp,-64
> >
> > +        mov     r10,rdx
> >
> > +        mov     QWORD[64+rsp],rax
> >
> > +
> >
> > +$L$prologue:
> >
> > +
> >
> > +        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[r9]
> >
> > +        bswap   edx
> >
> > +        mov     ebp,DWORD[4+r9]
> >
> > +        mov     eax,r12d
> >
> > +        mov     DWORD[rsp],edx
> >
> > +        mov     ecx,esi
> >
> > +        bswap   ebp
> >
> > +        xor     eax,r11d
> >
> > +        rol     ecx,5
> >
> > +        and     eax,edi
> >
> > +        lea     r13d,[1518500249+r13*1+rdx]
> >
> > +        add     r13d,ecx
> >
> > +        xor     eax,r12d
> >
> > +        rol     edi,30
> >
> > +        add     r13d,eax
> >
> > +        mov     r14d,DWORD[8+r9]
> >
> > +        mov     eax,r11d
> >
> > +        mov     DWORD[4+rsp],ebp
> >
> > +        mov     ecx,r13d
> >
> > +        bswap   r14d
> >
> > +        xor     eax,edi
> >
> > +        rol     ecx,5
> >
> > +        and     eax,esi
> >
> > +        lea     r12d,[1518500249+r12*1+rbp]
> >
> > +        add     r12d,ecx
> >
> > +        xor     eax,r11d
> >
> > +        rol     esi,30
> >
> > +        add     r12d,eax
> >
> > +        mov     edx,DWORD[12+r9]
> >
> > +        mov     eax,edi
> >
> > +        mov     DWORD[8+rsp],r14d
> >
> > +        mov     ecx,r12d
> >
> > +        bswap   edx
> >
> > +        xor     eax,esi
> >
> > +        rol     ecx,5
> >
> > +        and     eax,r13d
> >
> > +        lea     r11d,[1518500249+r11*1+r14]
> >
> > +        add     r11d,ecx
> >
> > +        xor     eax,edi
> >
> > +        rol     r13d,30
> >
> > +        add     r11d,eax
> >
> > +        mov     ebp,DWORD[16+r9]
> >
> > +        mov     eax,esi
> >
> > +        mov     DWORD[12+rsp],edx
> >
> > +        mov     ecx,r11d
> >
> > +        bswap   ebp
> >
> > +        xor     eax,r13d
> >
> > +        rol     ecx,5
> >
> > +        and     eax,r12d
> >
> > +        lea     edi,[1518500249+rdi*1+rdx]
> >
> > +        add     edi,ecx
> >
> > +        xor     eax,esi
> >
> > +        rol     r12d,30
> >
> > +        add     edi,eax
> >
> > +        mov     r14d,DWORD[20+r9]
> >
> > +        mov     eax,r13d
> >
> > +        mov     DWORD[16+rsp],ebp
> >
> > +        mov     ecx,edi
> >
> > +        bswap   r14d
> >
> > +        xor     eax,r12d
> >
> > +        rol     ecx,5
> >
> > +        and     eax,r11d
> >
> > +        lea     esi,[1518500249+rsi*1+rbp]
> >
> > +        add     esi,ecx
> >
> > +        xor     eax,r13d
> >
> > +        rol     r11d,30
> >
> > +        add     esi,eax
> >
> > +        mov     edx,DWORD[24+r9]
> >
> > +        mov     eax,r12d
> >
> > +        mov     DWORD[20+rsp],r14d
> >
> > +        mov     ecx,esi
> >
> > +        bswap   edx
> >
> > +        xor     eax,r11d
> >
> > +        rol     ecx,5
> >
> > +        and     eax,edi
> >
> > +        lea     r13d,[1518500249+r13*1+r14]
> >
> > +        add     r13d,ecx
> >
> > +        xor     eax,r12d
> >
> > +        rol     edi,30
> >
> > +        add     r13d,eax
> >
> > +        mov     ebp,DWORD[28+r9]
> >
> > +        mov     eax,r11d
> >
> > +        mov     DWORD[24+rsp],edx
> >
> > +        mov     ecx,r13d
> >
> > +        bswap   ebp
> >
> > +        xor     eax,edi
> >
> > +        rol     ecx,5
> >
> > +        and     eax,esi
> >
> > +        lea     r12d,[1518500249+r12*1+rdx]
> >
> > +        add     r12d,ecx
> >
> > +        xor     eax,r11d
> >
> > +        rol     esi,30
> >
> > +        add     r12d,eax
> >
> > +        mov     r14d,DWORD[32+r9]
> >
> > +        mov     eax,edi
> >
> > +        mov     DWORD[28+rsp],ebp
> >
> > +        mov     ecx,r12d
> >
> > +        bswap   r14d
> >
> > +        xor     eax,esi
> >
> > +        rol     ecx,5
> >
> > +        and     eax,r13d
> >
> > +        lea     r11d,[1518500249+r11*1+rbp]
> >
> > +        add     r11d,ecx
> >
> > +        xor     eax,edi
> >
> > +        rol     r13d,30
> >
> > +        add     r11d,eax
> >
> > +        mov     edx,DWORD[36+r9]
> >
> > +        mov     eax,esi
> >
> > +        mov     DWORD[32+rsp],r14d
> >
> > +        mov     ecx,r11d
> >
> > +        bswap   edx
> >
> > +        xor     eax,r13d
> >
> > +        rol     ecx,5
> >
> > +        and     eax,r12d
> >
> > +        lea     edi,[1518500249+rdi*1+r14]
> >
> > +        add     edi,ecx
> >
> > +        xor     eax,esi
> >
> > +        rol     r12d,30
> >
> > +        add     edi,eax
> >
> > +        mov     ebp,DWORD[40+r9]
> >
> > +        mov     eax,r13d
> >
> > +        mov     DWORD[36+rsp],edx
> >
> > +        mov     ecx,edi
> >
> > +        bswap   ebp
> >
> > +        xor     eax,r12d
> >
> > +        rol     ecx,5
> >
> > +        and     eax,r11d
> >
> > +        lea     esi,[1518500249+rsi*1+rdx]
> >
> > +        add     esi,ecx
> >
> > +        xor     eax,r13d
> >
> > +        rol     r11d,30
> >
> > +        add     esi,eax
> >
> > +        mov     r14d,DWORD[44+r9]
> >
> > +        mov     eax,r12d
> >
> > +        mov     DWORD[40+rsp],ebp
> >
> > +        mov     ecx,esi
> >
> > +        bswap   r14d
> >
> > +        xor     eax,r11d
> >
> > +        rol     ecx,5
> >
> > +        and     eax,edi
> >
> > +        lea     r13d,[1518500249+r13*1+rbp]
> >
> > +        add     r13d,ecx
> >
> > +        xor     eax,r12d
> >
> > +        rol     edi,30
> >
> > +        add     r13d,eax
> >
> > +        mov     edx,DWORD[48+r9]
> >
> > +        mov     eax,r11d
> >
> > +        mov     DWORD[44+rsp],r14d
> >
> > +        mov     ecx,r13d
> >
> > +        bswap   edx
> >
> > +        xor     eax,edi
> >
> > +        rol     ecx,5
> >
> > +        and     eax,esi
> >
> > +        lea     r12d,[1518500249+r12*1+r14]
> >
> > +        add     r12d,ecx
> >
> > +        xor     eax,r11d
> >
> > +        rol     esi,30
> >
> > +        add     r12d,eax
> >
> > +        mov     ebp,DWORD[52+r9]
> >
> > +        mov     eax,edi
> >
> > +        mov     DWORD[48+rsp],edx
> >
> > +        mov     ecx,r12d
> >
> > +        bswap   ebp
> >
> > +        xor     eax,esi
> >
> > +        rol     ecx,5
> >
> > +        and     eax,r13d
> >
> > +        lea     r11d,[1518500249+r11*1+rdx]
> >
> > +        add     r11d,ecx
> >
> > +        xor     eax,edi
> >
> > +        rol     r13d,30
> >
> > +        add     r11d,eax
> >
> > +        mov     r14d,DWORD[56+r9]
> >
> > +        mov     eax,esi
> >
> > +        mov     DWORD[52+rsp],ebp
> >
> > +        mov     ecx,r11d
> >
> > +        bswap   r14d
> >
> > +        xor     eax,r13d
> >
> > +        rol     ecx,5
> >
> > +        and     eax,r12d
> >
> > +        lea     edi,[1518500249+rdi*1+rbp]
> >
> > +        add     edi,ecx
> >
> > +        xor     eax,esi
> >
> > +        rol     r12d,30
> >
> > +        add     edi,eax
> >
> > +        mov     edx,DWORD[60+r9]
> >
> > +        mov     eax,r13d
> >
> > +        mov     DWORD[56+rsp],r14d
> >
> > +        mov     ecx,edi
> >
> > +        bswap   edx
> >
> > +        xor     eax,r12d
> >
> > +        rol     ecx,5
> >
> > +        and     eax,r11d
> >
> > +        lea     esi,[1518500249+rsi*1+r14]
> >
> > +        add     esi,ecx
> >
> > +        xor     eax,r13d
> >
> > +        rol     r11d,30
> >
> > +        add     esi,eax
> >
> > +        xor     ebp,DWORD[rsp]
> >
> > +        mov     eax,r12d
> >
> > +        mov     DWORD[60+rsp],edx
> >
> > +        mov     ecx,esi
> >
> > +        xor     ebp,DWORD[8+rsp]
> >
> > +        xor     eax,r11d
> >
> > +        rol     ecx,5
> >
> > +        xor     ebp,DWORD[32+rsp]
> >
> > +        and     eax,edi
> >
> > +        lea     r13d,[1518500249+r13*1+rdx]
> >
> > +        rol     edi,30
> >
> > +        xor     eax,r12d
> >
> > +        add     r13d,ecx
> >
> > +        rol     ebp,1
> >
> > +        add     r13d,eax
> >
> > +        xor     r14d,DWORD[4+rsp]
> >
> > +        mov     eax,r11d
> >
> > +        mov     DWORD[rsp],ebp
> >
> > +        mov     ecx,r13d
> >
> > +        xor     r14d,DWORD[12+rsp]
> >
> > +        xor     eax,edi
> >
> > +        rol     ecx,5
> >
> > +        xor     r14d,DWORD[36+rsp]
> >
> > +        and     eax,esi
> >
> > +        lea     r12d,[1518500249+r12*1+rbp]
> >
> > +        rol     esi,30
> >
> > +        xor     eax,r11d
> >
> > +        add     r12d,ecx
> >
> > +        rol     r14d,1
> >
> > +        add     r12d,eax
> >
> > +        xor     edx,DWORD[8+rsp]
> >
> > +        mov     eax,edi
> >
> > +        mov     DWORD[4+rsp],r14d
> >
> > +        mov     ecx,r12d
> >
> > +        xor     edx,DWORD[16+rsp]
> >
> > +        xor     eax,esi
> >
> > +        rol     ecx,5
> >
> > +        xor     edx,DWORD[40+rsp]
> >
> > +        and     eax,r13d
> >
> > +        lea     r11d,[1518500249+r11*1+r14]
> >
> > +        rol     r13d,30
> >
> > +        xor     eax,edi
> >
> > +        add     r11d,ecx
> >
> > +        rol     edx,1
> >
> > +        add     r11d,eax
> >
> > +        xor     ebp,DWORD[12+rsp]
> >
> > +        mov     eax,esi
> >
> > +        mov     DWORD[8+rsp],edx
> >
> > +        mov     ecx,r11d
> >
> > +        xor     ebp,DWORD[20+rsp]
> >
> > +        xor     eax,r13d
> >
> > +        rol     ecx,5
> >
> > +        xor     ebp,DWORD[44+rsp]
> >
> > +        and     eax,r12d
> >
> > +        lea     edi,[1518500249+rdi*1+rdx]
> >
> > +        rol     r12d,30
> >
> > +        xor     eax,esi
> >
> > +        add     edi,ecx
> >
> > +        rol     ebp,1
> >
> > +        add     edi,eax
> >
> > +        xor     r14d,DWORD[16+rsp]
> >
> > +        mov     eax,r13d
> >
> > +        mov     DWORD[12+rsp],ebp
> >
> > +        mov     ecx,edi
> >
> > +        xor     r14d,DWORD[24+rsp]
> >
> > +        xor     eax,r12d
> >
> > +        rol     ecx,5
> >
> > +        xor     r14d,DWORD[48+rsp]
> >
> > +        and     eax,r11d
> >
> > +        lea     esi,[1518500249+rsi*1+rbp]
> >
> > +        rol     r11d,30
> >
> > +        xor     eax,r13d
> >
> > +        add     esi,ecx
> >
> > +        rol     r14d,1
> >
> > +        add     esi,eax
> >
> > +        xor     edx,DWORD[20+rsp]
> >
> > +        mov     eax,edi
> >
> > +        mov     DWORD[16+rsp],r14d
> >
> > +        mov     ecx,esi
> >
> > +        xor     edx,DWORD[28+rsp]
> >
> > +        xor     eax,r12d
> >
> > +        rol     ecx,5
> >
> > +        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[24+rsp]
> >
> > +        mov     eax,esi
> >
> > +        mov     DWORD[20+rsp],edx
> >
> > +        mov     ecx,r13d
> >
> > +        xor     ebp,DWORD[32+rsp]
> >
> > +        xor     eax,r11d
> >
> > +        rol     ecx,5
> >
> > +        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[28+rsp]
> >
> > +        mov     eax,r13d
> >
> > +        mov     DWORD[24+rsp],ebp
> >
> > +        mov     ecx,r12d
> >
> > +        xor     r14d,DWORD[36+rsp]
> >
> > +        xor     eax,edi
> >
> > +        rol     ecx,5
> >
> > +        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[32+rsp]
> >
> > +        mov     eax,r12d
> >
> > +        mov     DWORD[28+rsp],r14d
> >
> > +        mov     ecx,r11d
> >
> > +        xor     edx,DWORD[40+rsp]
> >
> > +        xor     eax,esi
> >
> > +        rol     ecx,5
> >
> > +        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[36+rsp]
> >
> > +        mov     eax,r11d
> >
> > +        mov     DWORD[32+rsp],edx
> >
> > +        mov     ecx,edi
> >
> > +        xor     ebp,DWORD[44+rsp]
> >
> > +        xor     eax,r13d
> >
> > +        rol     ecx,5
> >
> > +        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[40+rsp]
> >
> > +        mov     eax,edi
> >
> > +        mov     DWORD[36+rsp],ebp
> >
> > +        mov     ecx,esi
> >
> > +        xor     r14d,DWORD[48+rsp]
> >
> > +        xor     eax,r12d
> >
> > +        rol     ecx,5
> >
> > +        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[44+rsp]
> >
> > +        mov     eax,esi
> >
> > +        mov     DWORD[40+rsp],r14d
> >
> > +        mov     ecx,r13d
> >
> > +        xor     edx,DWORD[52+rsp]
> >
> > +        xor     eax,r11d
> >
> > +        rol     ecx,5
> >
> > +        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[48+rsp]
> >
> > +        mov     eax,r13d
> >
> > +        mov     DWORD[44+rsp],edx
> >
> > +        mov     ecx,r12d
> >
> > +        xor     ebp,DWORD[56+rsp]
> >
> > +        xor     eax,edi
> >
> > +        rol     ecx,5
> >
> > +        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[52+rsp]
> >
> > +        mov     eax,r12d
> >
> > +        mov     DWORD[48+rsp],ebp
> >
> > +        mov     ecx,r11d
> >
> > +        xor     r14d,DWORD[60+rsp]
> >
> > +        xor     eax,esi
> >
> > +        rol     ecx,5
> >
> > +        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[56+rsp]
> >
> > +        mov     eax,r11d
> >
> > +        mov     DWORD[52+rsp],r14d
> >
> > +        mov     ecx,edi
> >
> > +        xor     edx,DWORD[rsp]
> >
> > +        xor     eax,r13d
> >
> > +        rol     ecx,5
> >
> > +        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[60+rsp]
> >
> > +        mov     eax,edi
> >
> > +        mov     DWORD[56+rsp],edx
> >
> > +        mov     ecx,esi
> >
> > +        xor     ebp,DWORD[4+rsp]
> >
> > +        xor     eax,r12d
> >
> > +        rol     ecx,5
> >
> > +        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[rsp]
> >
> > +        mov     eax,esi
> >
> > +        mov     DWORD[60+rsp],ebp
> >
> > +        mov     ecx,r13d
> >
> > +        xor     r14d,DWORD[8+rsp]
> >
> > +        xor     eax,r11d
> >
> > +        rol     ecx,5
> >
> > +        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[4+rsp]
> >
> > +        mov     eax,r13d
> >
> > +        mov     DWORD[rsp],r14d
> >
> > +        mov     ecx,r12d
> >
> > +        xor     edx,DWORD[12+rsp]
> >
> > +        xor     eax,edi
> >
> > +        rol     ecx,5
> >
> > +        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[8+rsp]
> >
> > +        mov     eax,r12d
> >
> > +        mov     DWORD[4+rsp],edx
> >
> > +        mov     ecx,r11d
> >
> > +        xor     ebp,DWORD[16+rsp]
> >
> > +        xor     eax,esi
> >
> > +        rol     ecx,5
> >
> > +        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[12+rsp]
> >
> > +        mov     eax,r11d
> >
> > +        mov     DWORD[8+rsp],ebp
> >
> > +        mov     ecx,edi
> >
> > +        xor     r14d,DWORD[20+rsp]
> >
> > +        xor     eax,r13d
> >
> > +        rol     ecx,5
> >
> > +        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[16+rsp]
> >
> > +        mov     eax,edi
> >
> > +        mov     DWORD[12+rsp],r14d
> >
> > +        mov     ecx,esi
> >
> > +        xor     edx,DWORD[24+rsp]
> >
> > +        xor     eax,r12d
> >
> > +        rol     ecx,5
> >
> > +        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[20+rsp]
> >
> > +        mov     eax,esi
> >
> > +        mov     DWORD[16+rsp],edx
> >
> > +        mov     ecx,r13d
> >
> > +        xor     ebp,DWORD[28+rsp]
> >
> > +        xor     eax,r11d
> >
> > +        rol     ecx,5
> >
> > +        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[24+rsp]
> >
> > +        mov     eax,r13d
> >
> > +        mov     DWORD[20+rsp],ebp
> >
> > +        mov     ecx,r12d
> >
> > +        xor     r14d,DWORD[32+rsp]
> >
> > +        xor     eax,edi
> >
> > +        rol     ecx,5
> >
> > +        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[28+rsp]
> >
> > +        mov     eax,r12d
> >
> > +        mov     DWORD[24+rsp],r14d
> >
> > +        mov     ecx,r11d
> >
> > +        xor     edx,DWORD[36+rsp]
> >
> > +        xor     eax,esi
> >
> > +        rol     ecx,5
> >
> > +        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[32+rsp]
> >
> > +        mov     eax,r11d
> >
> > +        mov     DWORD[28+rsp],edx
> >
> > +        mov     ecx,edi
> >
> > +        xor     ebp,DWORD[40+rsp]
> >
> > +        xor     eax,r13d
> >
> > +        rol     ecx,5
> >
> > +        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[36+rsp]
> >
> > +        mov     eax,r12d
> >
> > +        mov     DWORD[32+rsp],ebp
> >
> > +        mov     ebx,r12d
> >
> > +        xor     r14d,DWORD[44+rsp]
> >
> > +        and     eax,r11d
> >
> > +        mov     ecx,esi
> >
> > +        xor     r14d,DWORD[4+rsp]
> >
> > +        lea     r13d,[((-1894007588))+r13*1+rbp]
> >
> > +        xor     ebx,r11d
> >
> > +        rol     ecx,5
> >
> > +        add     r13d,eax
> >
> > +        rol     r14d,1
> >
> > +        and     ebx,edi
> >
> > +        add     r13d,ecx
> >
> > +        rol     edi,30
> >
> > +        add     r13d,ebx
> >
> > +        xor     edx,DWORD[40+rsp]
> >
> > +        mov     eax,r11d
> >
> > +        mov     DWORD[36+rsp],r14d
> >
> > +        mov     ebx,r11d
> >
> > +        xor     edx,DWORD[48+rsp]
> >
> > +        and     eax,edi
> >
> > +        mov     ecx,r13d
> >
> > +        xor     edx,DWORD[8+rsp]
> >
> > +        lea     r12d,[((-1894007588))+r12*1+r14]
> >
> > +        xor     ebx,edi
> >
> > +        rol     ecx,5
> >
> > +        add     r12d,eax
> >
> > +        rol     edx,1
> >
> > +        and     ebx,esi
> >
> > +        add     r12d,ecx
> >
> > +        rol     esi,30
> >
> > +        add     r12d,ebx
> >
> > +        xor     ebp,DWORD[44+rsp]
> >
> > +        mov     eax,edi
> >
> > +        mov     DWORD[40+rsp],edx
> >
> > +        mov     ebx,edi
> >
> > +        xor     ebp,DWORD[52+rsp]
> >
> > +        and     eax,esi
> >
> > +        mov     ecx,r12d
> >
> > +        xor     ebp,DWORD[12+rsp]
> >
> > +        lea     r11d,[((-1894007588))+r11*1+rdx]
> >
> > +        xor     ebx,esi
> >
> > +        rol     ecx,5
> >
> > +        add     r11d,eax
> >
> > +        rol     ebp,1
> >
> > +        and     ebx,r13d
> >
> > +        add     r11d,ecx
> >
> > +        rol     r13d,30
> >
> > +        add     r11d,ebx
> >
> > +        xor     r14d,DWORD[48+rsp]
> >
> > +        mov     eax,esi
> >
> > +        mov     DWORD[44+rsp],ebp
> >
> > +        mov     ebx,esi
> >
> > +        xor     r14d,DWORD[56+rsp]
> >
> > +        and     eax,r13d
> >
> > +        mov     ecx,r11d
> >
> > +        xor     r14d,DWORD[16+rsp]
> >
> > +        lea     edi,[((-1894007588))+rdi*1+rbp]
> >
> > +        xor     ebx,r13d
> >
> > +        rol     ecx,5
> >
> > +        add     edi,eax
> >
> > +        rol     r14d,1
> >
> > +        and     ebx,r12d
> >
> > +        add     edi,ecx
> >
> > +        rol     r12d,30
> >
> > +        add     edi,ebx
> >
> > +        xor     edx,DWORD[52+rsp]
> >
> > +        mov     eax,r13d
> >
> > +        mov     DWORD[48+rsp],r14d
> >
> > +        mov     ebx,r13d
> >
> > +        xor     edx,DWORD[60+rsp]
> >
> > +        and     eax,r12d
> >
> > +        mov     ecx,edi
> >
> > +        xor     edx,DWORD[20+rsp]
> >
> > +        lea     esi,[((-1894007588))+rsi*1+r14]
> >
> > +        xor     ebx,r12d
> >
> > +        rol     ecx,5
> >
> > +        add     esi,eax
> >
> > +        rol     edx,1
> >
> > +        and     ebx,r11d
> >
> > +        add     esi,ecx
> >
> > +        rol     r11d,30
> >
> > +        add     esi,ebx
> >
> > +        xor     ebp,DWORD[56+rsp]
> >
> > +        mov     eax,r12d
> >
> > +        mov     DWORD[52+rsp],edx
> >
> > +        mov     ebx,r12d
> >
> > +        xor     ebp,DWORD[rsp]
> >
> > +        and     eax,r11d
> >
> > +        mov     ecx,esi
> >
> > +        xor     ebp,DWORD[24+rsp]
> >
> > +        lea     r13d,[((-1894007588))+r13*1+rdx]
> >
> > +        xor     ebx,r11d
> >
> > +        rol     ecx,5
> >
> > +        add     r13d,eax
> >
> > +        rol     ebp,1
> >
> > +        and     ebx,edi
> >
> > +        add     r13d,ecx
> >
> > +        rol     edi,30
> >
> > +        add     r13d,ebx
> >
> > +        xor     r14d,DWORD[60+rsp]
> >
> > +        mov     eax,r11d
> >
> > +        mov     DWORD[56+rsp],ebp
> >
> > +        mov     ebx,r11d
> >
> > +        xor     r14d,DWORD[4+rsp]
> >
> > +        and     eax,edi
> >
> > +        mov     ecx,r13d
> >
> > +        xor     r14d,DWORD[28+rsp]
> >
> > +        lea     r12d,[((-1894007588))+r12*1+rbp]
> >
> > +        xor     ebx,edi
> >
> > +        rol     ecx,5
> >
> > +        add     r12d,eax
> >
> > +        rol     r14d,1
> >
> > +        and     ebx,esi
> >
> > +        add     r12d,ecx
> >
> > +        rol     esi,30
> >
> > +        add     r12d,ebx
> >
> > +        xor     edx,DWORD[rsp]
> >
> > +        mov     eax,edi
> >
> > +        mov     DWORD[60+rsp],r14d
> >
> > +        mov     ebx,edi
> >
> > +        xor     edx,DWORD[8+rsp]
> >
> > +        and     eax,esi
> >
> > +        mov     ecx,r12d
> >
> > +        xor     edx,DWORD[32+rsp]
> >
> > +        lea     r11d,[((-1894007588))+r11*1+r14]
> >
> > +        xor     ebx,esi
> >
> > +        rol     ecx,5
> >
> > +        add     r11d,eax
> >
> > +        rol     edx,1
> >
> > +        and     ebx,r13d
> >
> > +        add     r11d,ecx
> >
> > +        rol     r13d,30
> >
> > +        add     r11d,ebx
> >
> > +        xor     ebp,DWORD[4+rsp]
> >
> > +        mov     eax,esi
> >
> > +        mov     DWORD[rsp],edx
> >
> > +        mov     ebx,esi
> >
> > +        xor     ebp,DWORD[12+rsp]
> >
> > +        and     eax,r13d
> >
> > +        mov     ecx,r11d
> >
> > +        xor     ebp,DWORD[36+rsp]
> >
> > +        lea     edi,[((-1894007588))+rdi*1+rdx]
> >
> > +        xor     ebx,r13d
> >
> > +        rol     ecx,5
> >
> > +        add     edi,eax
> >
> > +        rol     ebp,1
> >
> > +        and     ebx,r12d
> >
> > +        add     edi,ecx
> >
> > +        rol     r12d,30
> >
> > +        add     edi,ebx
> >
> > +        xor     r14d,DWORD[8+rsp]
> >
> > +        mov     eax,r13d
> >
> > +        mov     DWORD[4+rsp],ebp
> >
> > +        mov     ebx,r13d
> >
> > +        xor     r14d,DWORD[16+rsp]
> >
> > +        and     eax,r12d
> >
> > +        mov     ecx,edi
> >
> > +        xor     r14d,DWORD[40+rsp]
> >
> > +        lea     esi,[((-1894007588))+rsi*1+rbp]
> >
> > +        xor     ebx,r12d
> >
> > +        rol     ecx,5
> >
> > +        add     esi,eax
> >
> > +        rol     r14d,1
> >
> > +        and     ebx,r11d
> >
> > +        add     esi,ecx
> >
> > +        rol     r11d,30
> >
> > +        add     esi,ebx
> >
> > +        xor     edx,DWORD[12+rsp]
> >
> > +        mov     eax,r12d
> >
> > +        mov     DWORD[8+rsp],r14d
> >
> > +        mov     ebx,r12d
> >
> > +        xor     edx,DWORD[20+rsp]
> >
> > +        and     eax,r11d
> >
> > +        mov     ecx,esi
> >
> > +        xor     edx,DWORD[44+rsp]
> >
> > +        lea     r13d,[((-1894007588))+r13*1+r14]
> >
> > +        xor     ebx,r11d
> >
> > +        rol     ecx,5
> >
> > +        add     r13d,eax
> >
> > +        rol     edx,1
> >
> > +        and     ebx,edi
> >
> > +        add     r13d,ecx
> >
> > +        rol     edi,30
> >
> > +        add     r13d,ebx
> >
> > +        xor     ebp,DWORD[16+rsp]
> >
> > +        mov     eax,r11d
> >
> > +        mov     DWORD[12+rsp],edx
> >
> > +        mov     ebx,r11d
> >
> > +        xor     ebp,DWORD[24+rsp]
> >
> > +        and     eax,edi
> >
> > +        mov     ecx,r13d
> >
> > +        xor     ebp,DWORD[48+rsp]
> >
> > +        lea     r12d,[((-1894007588))+r12*1+rdx]
> >
> > +        xor     ebx,edi
> >
> > +        rol     ecx,5
> >
> > +        add     r12d,eax
> >
> > +        rol     ebp,1
> >
> > +        and     ebx,esi
> >
> > +        add     r12d,ecx
> >
> > +        rol     esi,30
> >
> > +        add     r12d,ebx
> >
> > +        xor     r14d,DWORD[20+rsp]
> >
> > +        mov     eax,edi
> >
> > +        mov     DWORD[16+rsp],ebp
> >
> > +        mov     ebx,edi
> >
> > +        xor     r14d,DWORD[28+rsp]
> >
> > +        and     eax,esi
> >
> > +        mov     ecx,r12d
> >
> > +        xor     r14d,DWORD[52+rsp]
> >
> > +        lea     r11d,[((-1894007588))+r11*1+rbp]
> >
> > +        xor     ebx,esi
> >
> > +        rol     ecx,5
> >
> > +        add     r11d,eax
> >
> > +        rol     r14d,1
> >
> > +        and     ebx,r13d
> >
> > +        add     r11d,ecx
> >
> > +        rol     r13d,30
> >
> > +        add     r11d,ebx
> >
> > +        xor     edx,DWORD[24+rsp]
> >
> > +        mov     eax,esi
> >
> > +        mov     DWORD[20+rsp],r14d
> >
> > +        mov     ebx,esi
> >
> > +        xor     edx,DWORD[32+rsp]
> >
> > +        and     eax,r13d
> >
> > +        mov     ecx,r11d
> >
> > +        xor     edx,DWORD[56+rsp]
> >
> > +        lea     edi,[((-1894007588))+rdi*1+r14]
> >
> > +        xor     ebx,r13d
> >
> > +        rol     ecx,5
> >
> > +        add     edi,eax
> >
> > +        rol     edx,1
> >
> > +        and     ebx,r12d
> >
> > +        add     edi,ecx
> >
> > +        rol     r12d,30
> >
> > +        add     edi,ebx
> >
> > +        xor     ebp,DWORD[28+rsp]
> >
> > +        mov     eax,r13d
> >
> > +        mov     DWORD[24+rsp],edx
> >
> > +        mov     ebx,r13d
> >
> > +        xor     ebp,DWORD[36+rsp]
> >
> > +        and     eax,r12d
> >
> > +        mov     ecx,edi
> >
> > +        xor     ebp,DWORD[60+rsp]
> >
> > +        lea     esi,[((-1894007588))+rsi*1+rdx]
> >
> > +        xor     ebx,r12d
> >
> > +        rol     ecx,5
> >
> > +        add     esi,eax
> >
> > +        rol     ebp,1
> >
> > +        and     ebx,r11d
> >
> > +        add     esi,ecx
> >
> > +        rol     r11d,30
> >
> > +        add     esi,ebx
> >
> > +        xor     r14d,DWORD[32+rsp]
> >
> > +        mov     eax,r12d
> >
> > +        mov     DWORD[28+rsp],ebp
> >
> > +        mov     ebx,r12d
> >
> > +        xor     r14d,DWORD[40+rsp]
> >
> > +        and     eax,r11d
> >
> > +        mov     ecx,esi
> >
> > +        xor     r14d,DWORD[rsp]
> >
> > +        lea     r13d,[((-1894007588))+r13*1+rbp]
> >
> > +        xor     ebx,r11d
> >
> > +        rol     ecx,5
> >
> > +        add     r13d,eax
> >
> > +        rol     r14d,1
> >
> > +        and     ebx,edi
> >
> > +        add     r13d,ecx
> >
> > +        rol     edi,30
> >
> > +        add     r13d,ebx
> >
> > +        xor     edx,DWORD[36+rsp]
> >
> > +        mov     eax,r11d
> >
> > +        mov     DWORD[32+rsp],r14d
> >
> > +        mov     ebx,r11d
> >
> > +        xor     edx,DWORD[44+rsp]
> >
> > +        and     eax,edi
> >
> > +        mov     ecx,r13d
> >
> > +        xor     edx,DWORD[4+rsp]
> >
> > +        lea     r12d,[((-1894007588))+r12*1+r14]
> >
> > +        xor     ebx,edi
> >
> > +        rol     ecx,5
> >
> > +        add     r12d,eax
> >
> > +        rol     edx,1
> >
> > +        and     ebx,esi
> >
> > +        add     r12d,ecx
> >
> > +        rol     esi,30
> >
> > +        add     r12d,ebx
> >
> > +        xor     ebp,DWORD[40+rsp]
> >
> > +        mov     eax,edi
> >
> > +        mov     DWORD[36+rsp],edx
> >
> > +        mov     ebx,edi
> >
> > +        xor     ebp,DWORD[48+rsp]
> >
> > +        and     eax,esi
> >
> > +        mov     ecx,r12d
> >
> > +        xor     ebp,DWORD[8+rsp]
> >
> > +        lea     r11d,[((-1894007588))+r11*1+rdx]
> >
> > +        xor     ebx,esi
> >
> > +        rol     ecx,5
> >
> > +        add     r11d,eax
> >
> > +        rol     ebp,1
> >
> > +        and     ebx,r13d
> >
> > +        add     r11d,ecx
> >
> > +        rol     r13d,30
> >
> > +        add     r11d,ebx
> >
> > +        xor     r14d,DWORD[44+rsp]
> >
> > +        mov     eax,esi
> >
> > +        mov     DWORD[40+rsp],ebp
> >
> > +        mov     ebx,esi
> >
> > +        xor     r14d,DWORD[52+rsp]
> >
> > +        and     eax,r13d
> >
> > +        mov     ecx,r11d
> >
> > +        xor     r14d,DWORD[12+rsp]
> >
> > +        lea     edi,[((-1894007588))+rdi*1+rbp]
> >
> > +        xor     ebx,r13d
> >
> > +        rol     ecx,5
> >
> > +        add     edi,eax
> >
> > +        rol     r14d,1
> >
> > +        and     ebx,r12d
> >
> > +        add     edi,ecx
> >
> > +        rol     r12d,30
> >
> > +        add     edi,ebx
> >
> > +        xor     edx,DWORD[48+rsp]
> >
> > +        mov     eax,r13d
> >
> > +        mov     DWORD[44+rsp],r14d
> >
> > +        mov     ebx,r13d
> >
> > +        xor     edx,DWORD[56+rsp]
> >
> > +        and     eax,r12d
> >
> > +        mov     ecx,edi
> >
> > +        xor     edx,DWORD[16+rsp]
> >
> > +        lea     esi,[((-1894007588))+rsi*1+r14]
> >
> > +        xor     ebx,r12d
> >
> > +        rol     ecx,5
> >
> > +        add     esi,eax
> >
> > +        rol     edx,1
> >
> > +        and     ebx,r11d
> >
> > +        add     esi,ecx
> >
> > +        rol     r11d,30
> >
> > +        add     esi,ebx
> >
> > +        xor     ebp,DWORD[52+rsp]
> >
> > +        mov     eax,edi
> >
> > +        mov     DWORD[48+rsp],edx
> >
> > +        mov     ecx,esi
> >
> > +        xor     ebp,DWORD[60+rsp]
> >
> > +        xor     eax,r12d
> >
> > +        rol     ecx,5
> >
> > +        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[56+rsp]
> >
> > +        mov     eax,esi
> >
> > +        mov     DWORD[52+rsp],ebp
> >
> > +        mov     ecx,r13d
> >
> > +        xor     r14d,DWORD[rsp]
> >
> > +        xor     eax,r11d
> >
> > +        rol     ecx,5
> >
> > +        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[60+rsp]
> >
> > +        mov     eax,r13d
> >
> > +        mov     DWORD[56+rsp],r14d
> >
> > +        mov     ecx,r12d
> >
> > +        xor     edx,DWORD[4+rsp]
> >
> > +        xor     eax,edi
> >
> > +        rol     ecx,5
> >
> > +        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[rsp]
> >
> > +        mov     eax,r12d
> >
> > +        mov     DWORD[60+rsp],edx
> >
> > +        mov     ecx,r11d
> >
> > +        xor     ebp,DWORD[8+rsp]
> >
> > +        xor     eax,esi
> >
> > +        rol     ecx,5
> >
> > +        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[4+rsp]
> >
> > +        mov     eax,r11d
> >
> > +        mov     DWORD[rsp],ebp
> >
> > +        mov     ecx,edi
> >
> > +        xor     r14d,DWORD[12+rsp]
> >
> > +        xor     eax,r13d
> >
> > +        rol     ecx,5
> >
> > +        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[8+rsp]
> >
> > +        mov     eax,edi
> >
> > +        mov     DWORD[4+rsp],r14d
> >
> > +        mov     ecx,esi
> >
> > +        xor     edx,DWORD[16+rsp]
> >
> > +        xor     eax,r12d
> >
> > +        rol     ecx,5
> >
> > +        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[12+rsp]
> >
> > +        mov     eax,esi
> >
> > +        mov     DWORD[8+rsp],edx
> >
> > +        mov     ecx,r13d
> >
> > +        xor     ebp,DWORD[20+rsp]
> >
> > +        xor     eax,r11d
> >
> > +        rol     ecx,5
> >
> > +        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[16+rsp]
> >
> > +        mov     eax,r13d
> >
> > +        mov     DWORD[12+rsp],ebp
> >
> > +        mov     ecx,r12d
> >
> > +        xor     r14d,DWORD[24+rsp]
> >
> > +        xor     eax,edi
> >
> > +        rol     ecx,5
> >
> > +        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[20+rsp]
> >
> > +        mov     eax,r12d
> >
> > +        mov     DWORD[16+rsp],r14d
> >
> > +        mov     ecx,r11d
> >
> > +        xor     edx,DWORD[28+rsp]
> >
> > +        xor     eax,esi
> >
> > +        rol     ecx,5
> >
> > +        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[24+rsp]
> >
> > +        mov     eax,r11d
> >
> > +        mov     DWORD[20+rsp],edx
> >
> > +        mov     ecx,edi
> >
> > +        xor     ebp,DWORD[32+rsp]
> >
> > +        xor     eax,r13d
> >
> > +        rol     ecx,5
> >
> > +        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[28+rsp]
> >
> > +        mov     eax,edi
> >
> > +        mov     DWORD[24+rsp],ebp
> >
> > +        mov     ecx,esi
> >
> > +        xor     r14d,DWORD[36+rsp]
> >
> > +        xor     eax,r12d
> >
> > +        rol     ecx,5
> >
> > +        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[32+rsp]
> >
> > +        mov     eax,esi
> >
> > +        mov     DWORD[28+rsp],r14d
> >
> > +        mov     ecx,r13d
> >
> > +        xor     edx,DWORD[40+rsp]
> >
> > +        xor     eax,r11d
> >
> > +        rol     ecx,5
> >
> > +        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[36+rsp]
> >
> > +        mov     eax,r13d
> >
> > +
> >
> > +        mov     ecx,r12d
> >
> > +        xor     ebp,DWORD[44+rsp]
> >
> > +        xor     eax,edi
> >
> > +        rol     ecx,5
> >
> > +        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[40+rsp]
> >
> > +        mov     eax,r12d
> >
> > +
> >
> > +        mov     ecx,r11d
> >
> > +        xor     r14d,DWORD[48+rsp]
> >
> > +        xor     eax,esi
> >
> > +        rol     ecx,5
> >
> > +        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[44+rsp]
> >
> > +        mov     eax,r11d
> >
> > +
> >
> > +        mov     ecx,edi
> >
> > +        xor     edx,DWORD[52+rsp]
> >
> > +        xor     eax,r13d
> >
> > +        rol     ecx,5
> >
> > +        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[48+rsp]
> >
> > +        mov     eax,edi
> >
> > +
> >
> > +        mov     ecx,esi
> >
> > +        xor     ebp,DWORD[56+rsp]
> >
> > +        xor     eax,r12d
> >
> > +        rol     ecx,5
> >
> > +        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[52+rsp]
> >
> > +        mov     eax,esi
> >
> > +
> >
> > +        mov     ecx,r13d
> >
> > +        xor     r14d,DWORD[60+rsp]
> >
> > +        xor     eax,r11d
> >
> > +        rol     ecx,5
> >
> > +        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[56+rsp]
> >
> > +        mov     eax,r13d
> >
> > +
> >
> > +        mov     ecx,r12d
> >
> > +        xor     edx,DWORD[rsp]
> >
> > +        xor     eax,edi
> >
> > +        rol     ecx,5
> >
> > +        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[60+rsp]
> >
> > +        mov     eax,r12d
> >
> > +
> >
> > +        mov     ecx,r11d
> >
> > +        xor     ebp,DWORD[4+rsp]
> >
> > +        xor     eax,esi
> >
> > +        rol     ecx,5
> >
> > +        xor     ebp,DWORD[28+rsp]
> >
> > +        lea     edi,[((-899497514))+rdi*1+rdx]
> >
> > +        xor     eax,r13d
> >
> > +        add     edi,ecx
> >
> > +        rol     r12d,30
> >
> > +        add     edi,eax
> >
> > +        rol     ebp,1
> >
> > +        mov     eax,r11d
> >
> > +        mov     ecx,edi
> >
> > +        xor     eax,r13d
> >
> > +        lea     esi,[((-899497514))+rsi*1+rbp]
> >
> > +        rol     ecx,5
> >
> > +        xor     eax,r12d
> >
> > +        add     esi,ecx
> >
> > +        rol     r11d,30
> >
> > +        add     esi,eax
> >
> > +        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,[64+r9]
> >
> > +        jnz     NEAR $L$loop
> >
> > +
> >
> > +        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:
> >
> > +
> >
> > +ALIGN   32
> >
> > +sha1_block_data_order_shaext:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_sha1_block_data_order_shaext:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +
> >
> > +
> >
> > +_shaext_shortcut:
> >
> > +
> >
> > +        lea     rsp,[((-72))+rsp]
> >
> > +        movaps  XMMWORD[(-8-64)+rax],xmm6
> >
> > +        movaps  XMMWORD[(-8-48)+rax],xmm7
> >
> > +        movaps  XMMWORD[(-8-32)+rax],xmm8
> >
> > +        movaps  XMMWORD[(-8-16)+rax],xmm9
> >
> > +$L$prologue_shaext:
> >
> > +        movdqu  xmm0,XMMWORD[rdi]
> >
> > +        movd    xmm1,DWORD[16+rdi]
> >
> > +        movdqa  xmm3,XMMWORD[((K_XX_XX+160))]
> >
> > +
> >
> > +        movdqu  xmm4,XMMWORD[rsi]
> >
> > +        pshufd  xmm0,xmm0,27
> >
> > +        movdqu  xmm5,XMMWORD[16+rsi]
> >
> > +        pshufd  xmm1,xmm1,27
> >
> > +        movdqu  xmm6,XMMWORD[32+rsi]
> >
> > +DB      102,15,56,0,227
> >
> > +        movdqu  xmm7,XMMWORD[48+rsi]
> >
> > +DB      102,15,56,0,235
> >
> > +DB      102,15,56,0,243
> >
> > +        movdqa  xmm9,xmm1
> >
> > +DB      102,15,56,0,251
> >
> > +        jmp     NEAR $L$oop_shaext
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$oop_shaext:
> >
> > +        dec     rdx
> >
> > +        lea     r8,[64+rsi]
> >
> > +        paddd   xmm1,xmm4
> >
> > +        cmovne  rsi,r8
> >
> > +        movdqa  xmm8,xmm0
> >
> > +DB      15,56,201,229
> >
> > +        movdqa  xmm2,xmm0
> >
> > +DB      15,58,204,193,0
> >
> > +DB      15,56,200,213
> >
> > +        pxor    xmm4,xmm6
> >
> > +DB      15,56,201,238
> >
> > +DB      15,56,202,231
> >
> > +
> >
> > +        movdqa  xmm1,xmm0
> >
> > +DB      15,58,204,194,0
> >
> > +DB      15,56,200,206
> >
> > +        pxor    xmm5,xmm7
> >
> > +DB      15,56,202,236
> >
> > +DB      15,56,201,247
> >
> > +        movdqa  xmm2,xmm0
> >
> > +DB      15,58,204,193,0
> >
> > +DB      15,56,200,215
> >
> > +        pxor    xmm6,xmm4
> >
> > +DB      15,56,201,252
> >
> > +DB      15,56,202,245
> >
> > +
> >
> > +        movdqa  xmm1,xmm0
> >
> > +DB      15,58,204,194,0
> >
> > +DB      15,56,200,204
> >
> > +        pxor    xmm7,xmm5
> >
> > +DB      15,56,202,254
> >
> > +DB      15,56,201,229
> >
> > +        movdqa  xmm2,xmm0
> >
> > +DB      15,58,204,193,0
> >
> > +DB      15,56,200,213
> >
> > +        pxor    xmm4,xmm6
> >
> > +DB      15,56,201,238
> >
> > +DB      15,56,202,231
> >
> > +
> >
> > +        movdqa  xmm1,xmm0
> >
> > +DB      15,58,204,194,1
> >
> > +DB      15,56,200,206
> >
> > +        pxor    xmm5,xmm7
> >
> > +DB      15,56,202,236
> >
> > +DB      15,56,201,247
> >
> > +        movdqa  xmm2,xmm0
> >
> > +DB      15,58,204,193,1
> >
> > +DB      15,56,200,215
> >
> > +        pxor    xmm6,xmm4
> >
> > +DB      15,56,201,252
> >
> > +DB      15,56,202,245
> >
> > +
> >
> > +        movdqa  xmm1,xmm0
> >
> > +DB      15,58,204,194,1
> >
> > +DB      15,56,200,204
> >
> > +        pxor    xmm7,xmm5
> >
> > +DB      15,56,202,254
> >
> > +DB      15,56,201,229
> >
> > +        movdqa  xmm2,xmm0
> >
> > +DB      15,58,204,193,1
> >
> > +DB      15,56,200,213
> >
> > +        pxor    xmm4,xmm6
> >
> > +DB      15,56,201,238
> >
> > +DB      15,56,202,231
> >
> > +
> >
> > +        movdqa  xmm1,xmm0
> >
> > +DB      15,58,204,194,1
> >
> > +DB      15,56,200,206
> >
> > +        pxor    xmm5,xmm7
> >
> > +DB      15,56,202,236
> >
> > +DB      15,56,201,247
> >
> > +        movdqa  xmm2,xmm0
> >
> > +DB      15,58,204,193,2
> >
> > +DB      15,56,200,215
> >
> > +        pxor    xmm6,xmm4
> >
> > +DB      15,56,201,252
> >
> > +DB      15,56,202,245
> >
> > +
> >
> > +        movdqa  xmm1,xmm0
> >
> > +DB      15,58,204,194,2
> >
> > +DB      15,56,200,204
> >
> > +        pxor    xmm7,xmm5
> >
> > +DB      15,56,202,254
> >
> > +DB      15,56,201,229
> >
> > +        movdqa  xmm2,xmm0
> >
> > +DB      15,58,204,193,2
> >
> > +DB      15,56,200,213
> >
> > +        pxor    xmm4,xmm6
> >
> > +DB      15,56,201,238
> >
> > +DB      15,56,202,231
> >
> > +
> >
> > +        movdqa  xmm1,xmm0
> >
> > +DB      15,58,204,194,2
> >
> > +DB      15,56,200,206
> >
> > +        pxor    xmm5,xmm7
> >
> > +DB      15,56,202,236
> >
> > +DB      15,56,201,247
> >
> > +        movdqa  xmm2,xmm0
> >
> > +DB      15,58,204,193,2
> >
> > +DB      15,56,200,215
> >
> > +        pxor    xmm6,xmm4
> >
> > +DB      15,56,201,252
> >
> > +DB      15,56,202,245
> >
> > +
> >
> > +        movdqa  xmm1,xmm0
> >
> > +DB      15,58,204,194,3
> >
> > +DB      15,56,200,204
> >
> > +        pxor    xmm7,xmm5
> >
> > +DB      15,56,202,254
> >
> > +        movdqu  xmm4,XMMWORD[rsi]
> >
> > +        movdqa  xmm2,xmm0
> >
> > +DB      15,58,204,193,3
> >
> > +DB      15,56,200,213
> >
> > +        movdqu  xmm5,XMMWORD[16+rsi]
> >
> > +DB      102,15,56,0,227
> >
> > +
> >
> > +        movdqa  xmm1,xmm0
> >
> > +DB      15,58,204,194,3
> >
> > +DB      15,56,200,206
> >
> > +        movdqu  xmm6,XMMWORD[32+rsi]
> >
> > +DB      102,15,56,0,235
> >
> > +
> >
> > +        movdqa  xmm2,xmm0
> >
> > +DB      15,58,204,193,3
> >
> > +DB      15,56,200,215
> >
> > +        movdqu  xmm7,XMMWORD[48+rsi]
> >
> > +DB      102,15,56,0,243
> >
> > +
> >
> > +        movdqa  xmm1,xmm0
> >
> > +DB      15,58,204,194,3
> >
> > +DB      65,15,56,200,201
> >
> > +DB      102,15,56,0,251
> >
> > +
> >
> > +        paddd   xmm0,xmm8
> >
> > +        movdqa  xmm9,xmm1
> >
> > +
> >
> > +        jnz     NEAR $L$oop_shaext
> >
> > +
> >
> > +        pshufd  xmm0,xmm0,27
> >
> > +        pshufd  xmm1,xmm1,27
> >
> > +        movdqu  XMMWORD[rdi],xmm0
> >
> > +        movd    DWORD[16+rdi],xmm1
> >
> > +        movaps  xmm6,XMMWORD[((-8-64))+rax]
> >
> > +        movaps  xmm7,XMMWORD[((-8-48))+rax]
> >
> > +        movaps  xmm8,XMMWORD[((-8-32))+rax]
> >
> > +        movaps  xmm9,XMMWORD[((-8-16))+rax]
> >
> > +        mov     rsp,rax
> >
> > +$L$epilogue_shaext:
> >
> > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> >
> > +        mov     rsi,QWORD[16+rsp]
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +$L$SEH_end_sha1_block_data_order_shaext:
> >
> > +
> >
> > +ALIGN   16
> >
> > +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:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +
> >
> > +
> >
> > +_ssse3_shortcut:
> >
> > +
> >
> > +        mov     r11,rsp
> >
> > +
> >
> > +        push    rbx
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        push    r12
> >
> > +
> >
> > +        push    r13
> >
> > +
> >
> > +        push    r14
> >
> > +
> >
> > +        lea     rsp,[((-160))+rsp]
> >
> > +        movaps  XMMWORD[(-40-96)+r11],xmm6
> >
> > +        movaps  XMMWORD[(-40-80)+r11],xmm7
> >
> > +        movaps  XMMWORD[(-40-64)+r11],xmm8
> >
> > +        movaps  XMMWORD[(-40-48)+r11],xmm9
> >
> > +        movaps  XMMWORD[(-40-32)+r11],xmm10
> >
> > +        movaps  XMMWORD[(-40-16)+r11],xmm11
> >
> > +$L$prologue_ssse3:
> >
> > +        and     rsp,-64
> >
> > +        mov     r8,rdi
> >
> > +        mov     r9,rsi
> >
> > +        mov     r10,rdx
> >
> > +
> >
> > +        shl     r10,6
> >
> > +        add     r10,r9
> >
> > +        lea     r14,[((K_XX_XX+64))]
> >
> > +
> >
> > +        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[16+r8]
> >
> > +        mov     edi,ecx
> >
> > +        xor     edi,edx
> >
> > +        and     esi,edi
> >
> > +
> >
> > +        movdqa  xmm6,XMMWORD[64+r14]
> >
> > +        movdqa  xmm9,XMMWORD[((-64))+r14]
> >
> > +        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
> >
> > +        add     r9,64
> >
> > +        paddd   xmm0,xmm9
> >
> > +DB      102,15,56,0,222
> >
> > +        paddd   xmm1,xmm9
> >
> > +        paddd   xmm2,xmm9
> >
> > +        movdqa  XMMWORD[rsp],xmm0
> >
> > +        psubd   xmm0,xmm9
> >
> > +        movdqa  XMMWORD[16+rsp],xmm1
> >
> > +        psubd   xmm1,xmm9
> >
> > +        movdqa  XMMWORD[32+rsp],xmm2
> >
> > +        psubd   xmm2,xmm9
> >
> > +        jmp     NEAR $L$oop_ssse3
> >
> > +ALIGN   16
> >
> > +$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[rsp]
> >
> > +        punpcklqdq      xmm4,xmm1
> >
> > +        xor     ebx,ecx
> >
> > +        rol     eax,5
> >
> > +        add     ebp,esi
> >
> > +        psrldq  xmm8,4
> >
> > +        and     edi,ebx
> >
> > +        xor     ebx,ecx
> >
> > +        pxor    xmm4,xmm0
> >
> > +        add     ebp,eax
> >
> > +        ror     eax,7
> >
> > +        pxor    xmm8,xmm2
> >
> > +        xor     edi,ecx
> >
> > +        mov     esi,ebp
> >
> > +        add     edx,DWORD[4+rsp]
> >
> > +        pxor    xmm4,xmm8
> >
> > +        xor     eax,ebx
> >
> > +        rol     ebp,5
> >
> > +        movdqa  XMMWORD[48+rsp],xmm9
> >
> > +        add     edx,edi
> >
> > +        and     esi,eax
> >
> > +        movdqa  xmm10,xmm4
> >
> > +        xor     eax,ebx
> >
> > +        add     edx,ebp
> >
> > +        ror     ebp,7
> >
> > +        movdqa  xmm8,xmm4
> >
> > +        xor     esi,ebx
> >
> > +        pslldq  xmm10,12
> >
> > +        paddd   xmm4,xmm4
> >
> > +        mov     edi,edx
> >
> > +        add     ecx,DWORD[8+rsp]
> >
> > +        psrld   xmm8,31
> >
> > +        xor     ebp,eax
> >
> > +        rol     edx,5
> >
> > +        add     ecx,esi
> >
> > +        movdqa  xmm9,xmm10
> >
> > +        and     edi,ebp
> >
> > +        xor     ebp,eax
> >
> > +        psrld   xmm10,30
> >
> > +        add     ecx,edx
> >
> > +        ror     edx,7
> >
> > +        por     xmm4,xmm8
> >
> > +        xor     edi,eax
> >
> > +        mov     esi,ecx
> >
> > +        add     ebx,DWORD[12+rsp]
> >
> > +        pslld   xmm9,2
> >
> > +        pxor    xmm4,xmm10
> >
> > +        xor     edx,ebp
> >
> > +        movdqa  xmm10,XMMWORD[((-64))+r14]
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,edi
> >
> > +        and     esi,edx
> >
> > +        pxor    xmm4,xmm9
> >
> > +        xor     edx,ebp
> >
> > +        add     ebx,ecx
> >
> > +        ror     ecx,7
> >
> > +        pshufd  xmm5,xmm1,238
> >
> > +        xor     esi,ebp
> >
> > +        movdqa  xmm9,xmm4
> >
> > +        paddd   xmm10,xmm4
> >
> > +        mov     edi,ebx
> >
> > +        add     eax,DWORD[16+rsp]
> >
> > +        punpcklqdq      xmm5,xmm2
> >
> > +        xor     ecx,edx
> >
> > +        rol     ebx,5
> >
> > +        add     eax,esi
> >
> > +        psrldq  xmm9,4
> >
> > +        and     edi,ecx
> >
> > +        xor     ecx,edx
> >
> > +        pxor    xmm5,xmm1
> >
> > +        add     eax,ebx
> >
> > +        ror     ebx,7
> >
> > +        pxor    xmm9,xmm3
> >
> > +        xor     edi,edx
> >
> > +        mov     esi,eax
> >
> > +        add     ebp,DWORD[20+rsp]
> >
> > +        pxor    xmm5,xmm9
> >
> > +        xor     ebx,ecx
> >
> > +        rol     eax,5
> >
> > +        movdqa  XMMWORD[rsp],xmm10
> >
> > +        add     ebp,edi
> >
> > +        and     esi,ebx
> >
> > +        movdqa  xmm8,xmm5
> >
> > +        xor     ebx,ecx
> >
> > +        add     ebp,eax
> >
> > +        ror     eax,7
> >
> > +        movdqa  xmm9,xmm5
> >
> > +        xor     esi,ecx
> >
> > +        pslldq  xmm8,12
> >
> > +        paddd   xmm5,xmm5
> >
> > +        mov     edi,ebp
> >
> > +        add     edx,DWORD[24+rsp]
> >
> > +        psrld   xmm9,31
> >
> > +        xor     eax,ebx
> >
> > +        rol     ebp,5
> >
> > +        add     edx,esi
> >
> > +        movdqa  xmm10,xmm8
> >
> > +        and     edi,eax
> >
> > +        xor     eax,ebx
> >
> > +        psrld   xmm8,30
> >
> > +        add     edx,ebp
> >
> > +        ror     ebp,7
> >
> > +        por     xmm5,xmm9
> >
> > +        xor     edi,ebx
> >
> > +        mov     esi,edx
> >
> > +        add     ecx,DWORD[28+rsp]
> >
> > +        pslld   xmm10,2
> >
> > +        pxor    xmm5,xmm8
> >
> > +        xor     ebp,eax
> >
> > +        movdqa  xmm8,XMMWORD[((-32))+r14]
> >
> > +        rol     edx,5
> >
> > +        add     ecx,edi
> >
> > +        and     esi,ebp
> >
> > +        pxor    xmm5,xmm10
> >
> > +        xor     ebp,eax
> >
> > +        add     ecx,edx
> >
> > +        ror     edx,7
> >
> > +        pshufd  xmm6,xmm2,238
> >
> > +        xor     esi,eax
> >
> > +        movdqa  xmm10,xmm5
> >
> > +        paddd   xmm8,xmm5
> >
> > +        mov     edi,ecx
> >
> > +        add     ebx,DWORD[32+rsp]
> >
> > +        punpcklqdq      xmm6,xmm3
> >
> > +        xor     edx,ebp
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,esi
> >
> > +        psrldq  xmm10,4
> >
> > +        and     edi,edx
> >
> > +        xor     edx,ebp
> >
> > +        pxor    xmm6,xmm2
> >
> > +        add     ebx,ecx
> >
> > +        ror     ecx,7
> >
> > +        pxor    xmm10,xmm4
> >
> > +        xor     edi,ebp
> >
> > +        mov     esi,ebx
> >
> > +        add     eax,DWORD[36+rsp]
> >
> > +        pxor    xmm6,xmm10
> >
> > +        xor     ecx,edx
> >
> > +        rol     ebx,5
> >
> > +        movdqa  XMMWORD[16+rsp],xmm8
> >
> > +        add     eax,edi
> >
> > +        and     esi,ecx
> >
> > +        movdqa  xmm9,xmm6
> >
> > +        xor     ecx,edx
> >
> > +        add     eax,ebx
> >
> > +        ror     ebx,7
> >
> > +        movdqa  xmm10,xmm6
> >
> > +        xor     esi,edx
> >
> > +        pslldq  xmm9,12
> >
> > +        paddd   xmm6,xmm6
> >
> > +        mov     edi,eax
> >
> > +        add     ebp,DWORD[40+rsp]
> >
> > +        psrld   xmm10,31
> >
> > +        xor     ebx,ecx
> >
> > +        rol     eax,5
> >
> > +        add     ebp,esi
> >
> > +        movdqa  xmm8,xmm9
> >
> > +        and     edi,ebx
> >
> > +        xor     ebx,ecx
> >
> > +        psrld   xmm9,30
> >
> > +        add     ebp,eax
> >
> > +        ror     eax,7
> >
> > +        por     xmm6,xmm10
> >
> > +        xor     edi,ecx
> >
> > +        mov     esi,ebp
> >
> > +        add     edx,DWORD[44+rsp]
> >
> > +        pslld   xmm8,2
> >
> > +        pxor    xmm6,xmm9
> >
> > +        xor     eax,ebx
> >
> > +        movdqa  xmm9,XMMWORD[((-32))+r14]
> >
> > +        rol     ebp,5
> >
> > +        add     edx,edi
> >
> > +        and     esi,eax
> >
> > +        pxor    xmm6,xmm8
> >
> > +        xor     eax,ebx
> >
> > +        add     edx,ebp
> >
> > +        ror     ebp,7
> >
> > +        pshufd  xmm7,xmm3,238
> >
> > +        xor     esi,ebx
> >
> > +        movdqa  xmm8,xmm6
> >
> > +        paddd   xmm9,xmm6
> >
> > +        mov     edi,edx
> >
> > +        add     ecx,DWORD[48+rsp]
> >
> > +        punpcklqdq      xmm7,xmm4
> >
> > +        xor     ebp,eax
> >
> > +        rol     edx,5
> >
> > +        add     ecx,esi
> >
> > +        psrldq  xmm8,4
> >
> > +        and     edi,ebp
> >
> > +        xor     ebp,eax
> >
> > +        pxor    xmm7,xmm3
> >
> > +        add     ecx,edx
> >
> > +        ror     edx,7
> >
> > +        pxor    xmm8,xmm5
> >
> > +        xor     edi,eax
> >
> > +        mov     esi,ecx
> >
> > +        add     ebx,DWORD[52+rsp]
> >
> > +        pxor    xmm7,xmm8
> >
> > +        xor     edx,ebp
> >
> > +        rol     ecx,5
> >
> > +        movdqa  XMMWORD[32+rsp],xmm9
> >
> > +        add     ebx,edi
> >
> > +        and     esi,edx
> >
> > +        movdqa  xmm10,xmm7
> >
> > +        xor     edx,ebp
> >
> > +        add     ebx,ecx
> >
> > +        ror     ecx,7
> >
> > +        movdqa  xmm8,xmm7
> >
> > +        xor     esi,ebp
> >
> > +        pslldq  xmm10,12
> >
> > +        paddd   xmm7,xmm7
> >
> > +        mov     edi,ebx
> >
> > +        add     eax,DWORD[56+rsp]
> >
> > +        psrld   xmm8,31
> >
> > +        xor     ecx,edx
> >
> > +        rol     ebx,5
> >
> > +        add     eax,esi
> >
> > +        movdqa  xmm9,xmm10
> >
> > +        and     edi,ecx
> >
> > +        xor     ecx,edx
> >
> > +        psrld   xmm10,30
> >
> > +        add     eax,ebx
> >
> > +        ror     ebx,7
> >
> > +        por     xmm7,xmm8
> >
> > +        xor     edi,edx
> >
> > +        mov     esi,eax
> >
> > +        add     ebp,DWORD[60+rsp]
> >
> > +        pslld   xmm9,2
> >
> > +        pxor    xmm7,xmm10
> >
> > +        xor     ebx,ecx
> >
> > +        movdqa  xmm10,XMMWORD[((-32))+r14]
> >
> > +        rol     eax,5
> >
> > +        add     ebp,edi
> >
> > +        and     esi,ebx
> >
> > +        pxor    xmm7,xmm9
> >
> > +        pshufd  xmm9,xmm6,238
> >
> > +        xor     ebx,ecx
> >
> > +        add     ebp,eax
> >
> > +        ror     eax,7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        xor     esi,ecx
> >
> > +        mov     edi,ebp
> >
> > +        add     edx,DWORD[rsp]
> >
> > +        punpcklqdq      xmm9,xmm7
> >
> > +        xor     eax,ebx
> >
> > +        rol     ebp,5
> >
> > +        pxor    xmm0,xmm1
> >
> > +        add     edx,esi
> >
> > +        and     edi,eax
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        xor     eax,ebx
> >
> > +        paddd   xmm10,xmm7
> >
> > +        add     edx,ebp
> >
> > +        pxor    xmm0,xmm9
> >
> > +        ror     ebp,7
> >
> > +        xor     edi,ebx
> >
> > +        mov     esi,edx
> >
> > +        add     ecx,DWORD[4+rsp]
> >
> > +        movdqa  xmm9,xmm0
> >
> > +        xor     ebp,eax
> >
> > +        rol     edx,5
> >
> > +        movdqa  XMMWORD[48+rsp],xmm10
> >
> > +        add     ecx,edi
> >
> > +        and     esi,ebp
> >
> > +        xor     ebp,eax
> >
> > +        pslld   xmm0,2
> >
> > +        add     ecx,edx
> >
> > +        ror     edx,7
> >
> > +        psrld   xmm9,30
> >
> > +        xor     esi,eax
> >
> > +        mov     edi,ecx
> >
> > +        add     ebx,DWORD[8+rsp]
> >
> > +        por     xmm0,xmm9
> >
> > +        xor     edx,ebp
> >
> > +        rol     ecx,5
> >
> > +        pshufd  xmm10,xmm7,238
> >
> > +        add     ebx,esi
> >
> > +        and     edi,edx
> >
> > +        xor     edx,ebp
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[12+rsp]
> >
> > +        xor     edi,ebp
> >
> > +        mov     esi,ebx
> >
> > +        rol     ebx,5
> >
> > +        add     eax,edi
> >
> > +        xor     esi,edx
> >
> > +        ror     ecx,7
> >
> > +        add     eax,ebx
> >
> > +        pxor    xmm1,xmm5
> >
> > +        add     ebp,DWORD[16+rsp]
> >
> > +        xor     esi,ecx
> >
> > +        punpcklqdq      xmm10,xmm0
> >
> > +        mov     edi,eax
> >
> > +        rol     eax,5
> >
> > +        pxor    xmm1,xmm2
> >
> > +        add     ebp,esi
> >
> > +        xor     edi,ecx
> >
> > +        movdqa  xmm9,xmm8
> >
> > +        ror     ebx,7
> >
> > +        paddd   xmm8,xmm0
> >
> > +        add     ebp,eax
> >
> > +        pxor    xmm1,xmm10
> >
> > +        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[rsp],xmm8
> >
> > +        ror     eax,7
> >
> > +        add     edx,ebp
> >
> > +        add     ecx,DWORD[24+rsp]
> >
> > +        pslld   xmm1,2
> >
> > +        xor     esi,eax
> >
> > +        mov     edi,edx
> >
> > +        psrld   xmm10,30
> >
> > +        rol     edx,5
> >
> > +        add     ecx,esi
> >
> > +        xor     edi,eax
> >
> > +        ror     ebp,7
> >
> > +        por     xmm1,xmm10
> >
> > +        add     ecx,edx
> >
> > +        add     ebx,DWORD[28+rsp]
> >
> > +        pshufd  xmm8,xmm0,238
> >
> > +        xor     edi,ebp
> >
> > +        mov     esi,ecx
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,edi
> >
> > +        xor     esi,ebp
> >
> > +        ror     edx,7
> >
> > +        add     ebx,ecx
> >
> > +        pxor    xmm2,xmm6
> >
> > +        add     eax,DWORD[32+rsp]
> >
> > +        xor     esi,edx
> >
> > +        punpcklqdq      xmm8,xmm1
> >
> > +        mov     edi,ebx
> >
> > +        rol     ebx,5
> >
> > +        pxor    xmm2,xmm3
> >
> > +        add     eax,esi
> >
> > +        xor     edi,edx
> >
> > +        movdqa  xmm10,XMMWORD[r14]
> >
> > +        ror     ecx,7
> >
> > +        paddd   xmm9,xmm1
> >
> > +        add     eax,ebx
> >
> > +        pxor    xmm2,xmm8
> >
> > +        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[16+rsp],xmm9
> >
> > +        ror     ebx,7
> >
> > +        add     ebp,eax
> >
> > +        add     edx,DWORD[40+rsp]
> >
> > +        pslld   xmm2,2
> >
> > +        xor     esi,ebx
> >
> > +        mov     edi,ebp
> >
> > +        psrld   xmm8,30
> >
> > +        rol     ebp,5
> >
> > +        add     edx,esi
> >
> > +        xor     edi,ebx
> >
> > +        ror     eax,7
> >
> > +        por     xmm2,xmm8
> >
> > +        add     edx,ebp
> >
> > +        add     ecx,DWORD[44+rsp]
> >
> > +        pshufd  xmm9,xmm1,238
> >
> > +        xor     edi,eax
> >
> > +        mov     esi,edx
> >
> > +        rol     edx,5
> >
> > +        add     ecx,edi
> >
> > +        xor     esi,eax
> >
> > +        ror     ebp,7
> >
> > +        add     ecx,edx
> >
> > +        pxor    xmm3,xmm7
> >
> > +        add     ebx,DWORD[48+rsp]
> >
> > +        xor     esi,ebp
> >
> > +        punpcklqdq      xmm9,xmm2
> >
> > +        mov     edi,ecx
> >
> > +        rol     ecx,5
> >
> > +        pxor    xmm3,xmm4
> >
> > +        add     ebx,esi
> >
> > +        xor     edi,ebp
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        ror     edx,7
> >
> > +        paddd   xmm10,xmm2
> >
> > +        add     ebx,ecx
> >
> > +        pxor    xmm3,xmm9
> >
> > +        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[32+rsp],xmm10
> >
> > +        ror     ecx,7
> >
> > +        add     eax,ebx
> >
> > +        add     ebp,DWORD[56+rsp]
> >
> > +        pslld   xmm3,2
> >
> > +        xor     esi,ecx
> >
> > +        mov     edi,eax
> >
> > +        psrld   xmm9,30
> >
> > +        rol     eax,5
> >
> > +        add     ebp,esi
> >
> > +        xor     edi,ecx
> >
> > +        ror     ebx,7
> >
> > +        por     xmm3,xmm9
> >
> > +        add     ebp,eax
> >
> > +        add     edx,DWORD[60+rsp]
> >
> > +        pshufd  xmm10,xmm2,238
> >
> > +        xor     edi,ebx
> >
> > +        mov     esi,ebp
> >
> > +        rol     ebp,5
> >
> > +        add     edx,edi
> >
> > +        xor     esi,ebx
> >
> > +        ror     eax,7
> >
> > +        add     edx,ebp
> >
> > +        pxor    xmm4,xmm0
> >
> > +        add     ecx,DWORD[rsp]
> >
> > +        xor     esi,eax
> >
> > +        punpcklqdq      xmm10,xmm3
> >
> > +        mov     edi,edx
> >
> > +        rol     edx,5
> >
> > +        pxor    xmm4,xmm5
> >
> > +        add     ecx,esi
> >
> > +        xor     edi,eax
> >
> > +        movdqa  xmm9,xmm8
> >
> > +        ror     ebp,7
> >
> > +        paddd   xmm8,xmm3
> >
> > +        add     ecx,edx
> >
> > +        pxor    xmm4,xmm10
> >
> > +        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[48+rsp],xmm8
> >
> > +        ror     edx,7
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[8+rsp]
> >
> > +        pslld   xmm4,2
> >
> > +        xor     esi,edx
> >
> > +        mov     edi,ebx
> >
> > +        psrld   xmm10,30
> >
> > +        rol     ebx,5
> >
> > +        add     eax,esi
> >
> > +        xor     edi,edx
> >
> > +        ror     ecx,7
> >
> > +        por     xmm4,xmm10
> >
> > +        add     eax,ebx
> >
> > +        add     ebp,DWORD[12+rsp]
> >
> > +        pshufd  xmm8,xmm3,238
> >
> > +        xor     edi,ecx
> >
> > +        mov     esi,eax
> >
> > +        rol     eax,5
> >
> > +        add     ebp,edi
> >
> > +        xor     esi,ecx
> >
> > +        ror     ebx,7
> >
> > +        add     ebp,eax
> >
> > +        pxor    xmm5,xmm1
> >
> > +        add     edx,DWORD[16+rsp]
> >
> > +        xor     esi,ebx
> >
> > +        punpcklqdq      xmm8,xmm4
> >
> > +        mov     edi,ebp
> >
> > +        rol     ebp,5
> >
> > +        pxor    xmm5,xmm6
> >
> > +        add     edx,esi
> >
> > +        xor     edi,ebx
> >
> > +        movdqa  xmm10,xmm9
> >
> > +        ror     eax,7
> >
> > +        paddd   xmm9,xmm4
> >
> > +        add     edx,ebp
> >
> > +        pxor    xmm5,xmm8
> >
> > +        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[rsp],xmm9
> >
> > +        ror     ebp,7
> >
> > +        add     ecx,edx
> >
> > +        add     ebx,DWORD[24+rsp]
> >
> > +        pslld   xmm5,2
> >
> > +        xor     esi,ebp
> >
> > +        mov     edi,ecx
> >
> > +        psrld   xmm8,30
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,esi
> >
> > +        xor     edi,ebp
> >
> > +        ror     edx,7
> >
> > +        por     xmm5,xmm8
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[28+rsp]
> >
> > +        pshufd  xmm9,xmm4,238
> >
> > +        ror     ecx,7
> >
> > +        mov     esi,ebx
> >
> > +        xor     edi,edx
> >
> > +        rol     ebx,5
> >
> > +        add     eax,edi
> >
> > +        xor     esi,ecx
> >
> > +        xor     ecx,edx
> >
> > +        add     eax,ebx
> >
> > +        pxor    xmm6,xmm2
> >
> > +        add     ebp,DWORD[32+rsp]
> >
> > +        and     esi,ecx
> >
> > +        xor     ecx,edx
> >
> > +        ror     ebx,7
> >
> > +        punpcklqdq      xmm9,xmm5
> >
> > +        mov     edi,eax
> >
> > +        xor     esi,ecx
> >
> > +        pxor    xmm6,xmm7
> >
> > +        rol     eax,5
> >
> > +        add     ebp,esi
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        xor     edi,ebx
> >
> > +        paddd   xmm10,xmm5
> >
> > +        xor     ebx,ecx
> >
> > +        pxor    xmm6,xmm9
> >
> > +        add     ebp,eax
> >
> > +        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[16+rsp],xmm10
> >
> > +        rol     ebp,5
> >
> > +        add     edx,edi
> >
> > +        xor     esi,eax
> >
> > +        pslld   xmm6,2
> >
> > +        xor     eax,ebx
> >
> > +        add     edx,ebp
> >
> > +        psrld   xmm9,30
> >
> > +        add     ecx,DWORD[40+rsp]
> >
> > +        and     esi,eax
> >
> > +        xor     eax,ebx
> >
> > +        por     xmm6,xmm9
> >
> > +        ror     ebp,7
> >
> > +        mov     edi,edx
> >
> > +        xor     esi,eax
> >
> > +        rol     edx,5
> >
> > +        pshufd  xmm10,xmm5,238
> >
> > +        add     ecx,esi
> >
> > +        xor     edi,ebp
> >
> > +        xor     ebp,eax
> >
> > +        add     ecx,edx
> >
> > +        add     ebx,DWORD[44+rsp]
> >
> > +        and     edi,ebp
> >
> > +        xor     ebp,eax
> >
> > +        ror     edx,7
> >
> > +        mov     esi,ecx
> >
> > +        xor     edi,ebp
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,edi
> >
> > +        xor     esi,edx
> >
> > +        xor     edx,ebp
> >
> > +        add     ebx,ecx
> >
> > +        pxor    xmm7,xmm3
> >
> > +        add     eax,DWORD[48+rsp]
> >
> > +        and     esi,edx
> >
> > +        xor     edx,ebp
> >
> > +        ror     ecx,7
> >
> > +        punpcklqdq      xmm10,xmm6
> >
> > +        mov     edi,ebx
> >
> > +        xor     esi,edx
> >
> > +        pxor    xmm7,xmm0
> >
> > +        rol     ebx,5
> >
> > +        add     eax,esi
> >
> > +        movdqa  xmm9,XMMWORD[32+r14]
> >
> > +        xor     edi,ecx
> >
> > +        paddd   xmm8,xmm6
> >
> > +        xor     ecx,edx
> >
> > +        pxor    xmm7,xmm10
> >
> > +        add     eax,ebx
> >
> > +        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[32+rsp],xmm8
> >
> > +        rol     eax,5
> >
> > +        add     ebp,edi
> >
> > +        xor     esi,ebx
> >
> > +        pslld   xmm7,2
> >
> > +        xor     ebx,ecx
> >
> > +        add     ebp,eax
> >
> > +        psrld   xmm10,30
> >
> > +        add     edx,DWORD[56+rsp]
> >
> > +        and     esi,ebx
> >
> > +        xor     ebx,ecx
> >
> > +        por     xmm7,xmm10
> >
> > +        ror     eax,7
> >
> > +        mov     edi,ebp
> >
> > +        xor     esi,ebx
> >
> > +        rol     ebp,5
> >
> > +        pshufd  xmm8,xmm6,238
> >
> > +        add     edx,esi
> >
> > +        xor     edi,eax
> >
> > +        xor     eax,ebx
> >
> > +        add     edx,ebp
> >
> > +        add     ecx,DWORD[60+rsp]
> >
> > +        and     edi,eax
> >
> > +        xor     eax,ebx
> >
> > +        ror     ebp,7
> >
> > +        mov     esi,edx
> >
> > +        xor     edi,eax
> >
> > +        rol     edx,5
> >
> > +        add     ecx,edi
> >
> > +        xor     esi,ebp
> >
> > +        xor     ebp,eax
> >
> > +        add     ecx,edx
> >
> > +        pxor    xmm0,xmm4
> >
> > +        add     ebx,DWORD[rsp]
> >
> > +        and     esi,ebp
> >
> > +        xor     ebp,eax
> >
> > +        ror     edx,7
> >
> > +        punpcklqdq      xmm8,xmm7
> >
> > +        mov     edi,ecx
> >
> > +        xor     esi,ebp
> >
> > +        pxor    xmm0,xmm1
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,esi
> >
> > +        movdqa  xmm10,xmm9
> >
> > +        xor     edi,edx
> >
> > +        paddd   xmm9,xmm7
> >
> > +        xor     edx,ebp
> >
> > +        pxor    xmm0,xmm8
> >
> > +        add     ebx,ecx
> >
> > +        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[48+rsp],xmm9
> >
> > +        rol     ebx,5
> >
> > +        add     eax,edi
> >
> > +        xor     esi,ecx
> >
> > +        pslld   xmm0,2
> >
> > +        xor     ecx,edx
> >
> > +        add     eax,ebx
> >
> > +        psrld   xmm8,30
> >
> > +        add     ebp,DWORD[8+rsp]
> >
> > +        and     esi,ecx
> >
> > +        xor     ecx,edx
> >
> > +        por     xmm0,xmm8
> >
> > +        ror     ebx,7
> >
> > +        mov     edi,eax
> >
> > +        xor     esi,ecx
> >
> > +        rol     eax,5
> >
> > +        pshufd  xmm9,xmm7,238
> >
> > +        add     ebp,esi
> >
> > +        xor     edi,ebx
> >
> > +        xor     ebx,ecx
> >
> > +        add     ebp,eax
> >
> > +        add     edx,DWORD[12+rsp]
> >
> > +        and     edi,ebx
> >
> > +        xor     ebx,ecx
> >
> > +        ror     eax,7
> >
> > +        mov     esi,ebp
> >
> > +        xor     edi,ebx
> >
> > +        rol     ebp,5
> >
> > +        add     edx,edi
> >
> > +        xor     esi,eax
> >
> > +        xor     eax,ebx
> >
> > +        add     edx,ebp
> >
> > +        pxor    xmm1,xmm5
> >
> > +        add     ecx,DWORD[16+rsp]
> >
> > +        and     esi,eax
> >
> > +        xor     eax,ebx
> >
> > +        ror     ebp,7
> >
> > +        punpcklqdq      xmm9,xmm0
> >
> > +        mov     edi,edx
> >
> > +        xor     esi,eax
> >
> > +        pxor    xmm1,xmm2
> >
> > +        rol     edx,5
> >
> > +        add     ecx,esi
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        xor     edi,ebp
> >
> > +        paddd   xmm10,xmm0
> >
> > +        xor     ebp,eax
> >
> > +        pxor    xmm1,xmm9
> >
> > +        add     ecx,edx
> >
> > +        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[rsp],xmm10
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,edi
> >
> > +        xor     esi,edx
> >
> > +        pslld   xmm1,2
> >
> > +        xor     edx,ebp
> >
> > +        add     ebx,ecx
> >
> > +        psrld   xmm9,30
> >
> > +        add     eax,DWORD[24+rsp]
> >
> > +        and     esi,edx
> >
> > +        xor     edx,ebp
> >
> > +        por     xmm1,xmm9
> >
> > +        ror     ecx,7
> >
> > +        mov     edi,ebx
> >
> > +        xor     esi,edx
> >
> > +        rol     ebx,5
> >
> > +        pshufd  xmm10,xmm0,238
> >
> > +        add     eax,esi
> >
> > +        xor     edi,ecx
> >
> > +        xor     ecx,edx
> >
> > +        add     eax,ebx
> >
> > +        add     ebp,DWORD[28+rsp]
> >
> > +        and     edi,ecx
> >
> > +        xor     ecx,edx
> >
> > +        ror     ebx,7
> >
> > +        mov     esi,eax
> >
> > +        xor     edi,ecx
> >
> > +        rol     eax,5
> >
> > +        add     ebp,edi
> >
> > +        xor     esi,ebx
> >
> > +        xor     ebx,ecx
> >
> > +        add     ebp,eax
> >
> > +        pxor    xmm2,xmm6
> >
> > +        add     edx,DWORD[32+rsp]
> >
> > +        and     esi,ebx
> >
> > +        xor     ebx,ecx
> >
> > +        ror     eax,7
> >
> > +        punpcklqdq      xmm10,xmm1
> >
> > +        mov     edi,ebp
> >
> > +        xor     esi,ebx
> >
> > +        pxor    xmm2,xmm3
> >
> > +        rol     ebp,5
> >
> > +        add     edx,esi
> >
> > +        movdqa  xmm9,xmm8
> >
> > +        xor     edi,eax
> >
> > +        paddd   xmm8,xmm1
> >
> > +        xor     eax,ebx
> >
> > +        pxor    xmm2,xmm10
> >
> > +        add     edx,ebp
> >
> > +        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[16+rsp],xmm8
> >
> > +        rol     edx,5
> >
> > +        add     ecx,edi
> >
> > +        xor     esi,ebp
> >
> > +        pslld   xmm2,2
> >
> > +        xor     ebp,eax
> >
> > +        add     ecx,edx
> >
> > +        psrld   xmm10,30
> >
> > +        add     ebx,DWORD[40+rsp]
> >
> > +        and     esi,ebp
> >
> > +        xor     ebp,eax
> >
> > +        por     xmm2,xmm10
> >
> > +        ror     edx,7
> >
> > +        mov     edi,ecx
> >
> > +        xor     esi,ebp
> >
> > +        rol     ecx,5
> >
> > +        pshufd  xmm8,xmm1,238
> >
> > +        add     ebx,esi
> >
> > +        xor     edi,edx
> >
> > +        xor     edx,ebp
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[44+rsp]
> >
> > +        and     edi,edx
> >
> > +        xor     edx,ebp
> >
> > +        ror     ecx,7
> >
> > +        mov     esi,ebx
> >
> > +        xor     edi,edx
> >
> > +        rol     ebx,5
> >
> > +        add     eax,edi
> >
> > +        xor     esi,edx
> >
> > +        add     eax,ebx
> >
> > +        pxor    xmm3,xmm7
> >
> > +        add     ebp,DWORD[48+rsp]
> >
> > +        xor     esi,ecx
> >
> > +        punpcklqdq      xmm8,xmm2
> >
> > +        mov     edi,eax
> >
> > +        rol     eax,5
> >
> > +        pxor    xmm3,xmm4
> >
> > +        add     ebp,esi
> >
> > +        xor     edi,ecx
> >
> > +        movdqa  xmm10,xmm9
> >
> > +        ror     ebx,7
> >
> > +        paddd   xmm9,xmm2
> >
> > +        add     ebp,eax
> >
> > +        pxor    xmm3,xmm8
> >
> > +        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[32+rsp],xmm9
> >
> > +        ror     eax,7
> >
> > +        add     edx,ebp
> >
> > +        add     ecx,DWORD[56+rsp]
> >
> > +        pslld   xmm3,2
> >
> > +        xor     esi,eax
> >
> > +        mov     edi,edx
> >
> > +        psrld   xmm8,30
> >
> > +        rol     edx,5
> >
> > +        add     ecx,esi
> >
> > +        xor     edi,eax
> >
> > +        ror     ebp,7
> >
> > +        por     xmm3,xmm8
> >
> > +        add     ecx,edx
> >
> > +        add     ebx,DWORD[60+rsp]
> >
> > +        xor     edi,ebp
> >
> > +        mov     esi,ecx
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,edi
> >
> > +        xor     esi,ebp
> >
> > +        ror     edx,7
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[rsp]
> >
> > +        xor     esi,edx
> >
> > +        mov     edi,ebx
> >
> > +        rol     ebx,5
> >
> > +        paddd   xmm10,xmm3
> >
> > +        add     eax,esi
> >
> > +        xor     edi,edx
> >
> > +        movdqa  XMMWORD[48+rsp],xmm10
> >
> > +        ror     ecx,7
> >
> > +        add     eax,ebx
> >
> > +        add     ebp,DWORD[4+rsp]
> >
> > +        xor     edi,ecx
> >
> > +        mov     esi,eax
> >
> > +        rol     eax,5
> >
> > +        add     ebp,edi
> >
> > +        xor     esi,ecx
> >
> > +        ror     ebx,7
> >
> > +        add     ebp,eax
> >
> > +        add     edx,DWORD[8+rsp]
> >
> > +        xor     esi,ebx
> >
> > +        mov     edi,ebp
> >
> > +        rol     ebp,5
> >
> > +        add     edx,esi
> >
> > +        xor     edi,ebx
> >
> > +        ror     eax,7
> >
> > +        add     edx,ebp
> >
> > +        add     ecx,DWORD[12+rsp]
> >
> > +        xor     edi,eax
> >
> > +        mov     esi,edx
> >
> > +        rol     edx,5
> >
> > +        add     ecx,edi
> >
> > +        xor     esi,eax
> >
> > +        ror     ebp,7
> >
> > +        add     ecx,edx
> >
> > +        cmp     r9,r10
> >
> > +        je      NEAR $L$done_ssse3
> >
> > +        movdqa  xmm6,XMMWORD[64+r14]
> >
> > +        movdqa  xmm9,XMMWORD[((-64))+r14]
> >
> > +        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[16+rsp]
> >
> > +        xor     esi,ebp
> >
> > +        mov     edi,ecx
> >
> > +DB      102,15,56,0,206
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,esi
> >
> > +        xor     edi,ebp
> >
> > +        ror     edx,7
> >
> > +        paddd   xmm0,xmm9
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[20+rsp]
> >
> > +        xor     edi,edx
> >
> > +        mov     esi,ebx
> >
> > +        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[24+rsp]
> >
> > +        xor     esi,ecx
> >
> > +        mov     edi,eax
> >
> > +        rol     eax,5
> >
> > +        add     ebp,esi
> >
> > +        xor     edi,ecx
> >
> > +        ror     ebx,7
> >
> > +        add     ebp,eax
> >
> > +        add     edx,DWORD[28+rsp]
> >
> > +        xor     edi,ebx
> >
> > +        mov     esi,ebp
> >
> > +        rol     ebp,5
> >
> > +        add     edx,edi
> >
> > +        xor     esi,ebx
> >
> > +        ror     eax,7
> >
> > +        add     edx,ebp
> >
> > +        add     ecx,DWORD[32+rsp]
> >
> > +        xor     esi,eax
> >
> > +        mov     edi,edx
> >
> > +DB      102,15,56,0,214
> >
> > +        rol     edx,5
> >
> > +        add     ecx,esi
> >
> > +        xor     edi,eax
> >
> > +        ror     ebp,7
> >
> > +        paddd   xmm1,xmm9
> >
> > +        add     ecx,edx
> >
> > +        add     ebx,DWORD[36+rsp]
> >
> > +        xor     edi,ebp
> >
> > +        mov     esi,ecx
> >
> > +        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[40+rsp]
> >
> > +        xor     esi,edx
> >
> > +        mov     edi,ebx
> >
> > +        rol     ebx,5
> >
> > +        add     eax,esi
> >
> > +        xor     edi,edx
> >
> > +        ror     ecx,7
> >
> > +        add     eax,ebx
> >
> > +        add     ebp,DWORD[44+rsp]
> >
> > +        xor     edi,ecx
> >
> > +        mov     esi,eax
> >
> > +        rol     eax,5
> >
> > +        add     ebp,edi
> >
> > +        xor     esi,ecx
> >
> > +        ror     ebx,7
> >
> > +        add     ebp,eax
> >
> > +        add     edx,DWORD[48+rsp]
> >
> > +        xor     esi,ebx
> >
> > +        mov     edi,ebp
> >
> > +DB      102,15,56,0,222
> >
> > +        rol     ebp,5
> >
> > +        add     edx,esi
> >
> > +        xor     edi,ebx
> >
> > +        ror     eax,7
> >
> > +        paddd   xmm2,xmm9
> >
> > +        add     edx,ebp
> >
> > +        add     ecx,DWORD[52+rsp]
> >
> > +        xor     edi,eax
> >
> > +        mov     esi,edx
> >
> > +        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[56+rsp]
> >
> > +        xor     esi,ebp
> >
> > +        mov     edi,ecx
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,esi
> >
> > +        xor     edi,ebp
> >
> > +        ror     edx,7
> >
> > +        add     ebx,ecx
> >
> > +        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[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[8+r8],ecx
> >
> > +        mov     edi,ecx
> >
> > +        mov     DWORD[12+r8],edx
> >
> > +        xor     edi,edx
> >
> > +        mov     DWORD[16+r8],ebp
> >
> > +        and     esi,edi
> >
> > +        jmp     NEAR $L$oop_ssse3
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$done_ssse3:
> >
> > +        add     ebx,DWORD[16+rsp]
> >
> > +        xor     esi,ebp
> >
> > +        mov     edi,ecx
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,esi
> >
> > +        xor     edi,ebp
> >
> > +        ror     edx,7
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[20+rsp]
> >
> > +        xor     edi,edx
> >
> > +        mov     esi,ebx
> >
> > +        rol     ebx,5
> >
> > +        add     eax,edi
> >
> > +        xor     esi,edx
> >
> > +        ror     ecx,7
> >
> > +        add     eax,ebx
> >
> > +        add     ebp,DWORD[24+rsp]
> >
> > +        xor     esi,ecx
> >
> > +        mov     edi,eax
> >
> > +        rol     eax,5
> >
> > +        add     ebp,esi
> >
> > +        xor     edi,ecx
> >
> > +        ror     ebx,7
> >
> > +        add     ebp,eax
> >
> > +        add     edx,DWORD[28+rsp]
> >
> > +        xor     edi,ebx
> >
> > +        mov     esi,ebp
> >
> > +        rol     ebp,5
> >
> > +        add     edx,edi
> >
> > +        xor     esi,ebx
> >
> > +        ror     eax,7
> >
> > +        add     edx,ebp
> >
> > +        add     ecx,DWORD[32+rsp]
> >
> > +        xor     esi,eax
> >
> > +        mov     edi,edx
> >
> > +        rol     edx,5
> >
> > +        add     ecx,esi
> >
> > +        xor     edi,eax
> >
> > +        ror     ebp,7
> >
> > +        add     ecx,edx
> >
> > +        add     ebx,DWORD[36+rsp]
> >
> > +        xor     edi,ebp
> >
> > +        mov     esi,ecx
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,edi
> >
> > +        xor     esi,ebp
> >
> > +        ror     edx,7
> >
> > +        add     ebx,ecx
> >
> > +        add     eax,DWORD[40+rsp]
> >
> > +        xor     esi,edx
> >
> > +        mov     edi,ebx
> >
> > +        rol     ebx,5
> >
> > +        add     eax,esi
> >
> > +        xor     edi,edx
> >
> > +        ror     ecx,7
> >
> > +        add     eax,ebx
> >
> > +        add     ebp,DWORD[44+rsp]
> >
> > +        xor     edi,ecx
> >
> > +        mov     esi,eax
> >
> > +        rol     eax,5
> >
> > +        add     ebp,edi
> >
> > +        xor     esi,ecx
> >
> > +        ror     ebx,7
> >
> > +        add     ebp,eax
> >
> > +        add     edx,DWORD[48+rsp]
> >
> > +        xor     esi,ebx
> >
> > +        mov     edi,ebp
> >
> > +        rol     ebp,5
> >
> > +        add     edx,esi
> >
> > +        xor     edi,ebx
> >
> > +        ror     eax,7
> >
> > +        add     edx,ebp
> >
> > +        add     ecx,DWORD[52+rsp]
> >
> > +        xor     edi,eax
> >
> > +        mov     esi,edx
> >
> > +        rol     edx,5
> >
> > +        add     ecx,edi
> >
> > +        xor     esi,eax
> >
> > +        ror     ebp,7
> >
> > +        add     ecx,edx
> >
> > +        add     ebx,DWORD[56+rsp]
> >
> > +        xor     esi,ebp
> >
> > +        mov     edi,ecx
> >
> > +        rol     ecx,5
> >
> > +        add     ebx,esi
> >
> > +        xor     edi,ebp
> >
> > +        ror     edx,7
> >
> > +        add     ebx,ecx
> >
> > +        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[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))+r11]
> >
> > +        movaps  xmm7,XMMWORD[((-40-80))+r11]
> >
> > +        movaps  xmm8,XMMWORD[((-40-64))+r11]
> >
> > +        movaps  xmm9,XMMWORD[((-40-48))+r11]
> >
> > +        movaps  xmm10,XMMWORD[((-40-32))+r11]
> >
> > +        movaps  xmm11,XMMWORD[((-40-16))+r11]
> >
> > +        mov     r14,QWORD[((-40))+r11]
> >
> > +
> >
> > +        mov     r13,QWORD[((-32))+r11]
> >
> > +
> >
> > +        mov     r12,QWORD[((-24))+r11]
> >
> > +
> >
> > +        mov     rbp,QWORD[((-16))+r11]
> >
> > +
> >
> > +        mov     rbx,QWORD[((-8))+r11]
> >
> > +
> >
> > +        lea     rsp,[r11]
> >
> > +
> >
> > +$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:
> >
> > +ALIGN   64
> >
> > +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
> >
> > +
> >
> > +ALIGN   16
> >
> > +se_handler:
> >
> > +        push    rsi
> >
> > +        push    rdi
> >
> > +        push    rbx
> >
> > +        push    rbp
> >
> > +        push    r12
> >
> > +        push    r13
> >
> > +        push    r14
> >
> > +        push    r15
> >
> > +        pushfq
> >
> > +        sub     rsp,64
> >
> > +
> >
> > +        mov     rax,QWORD[120+r8]
> >
> > +        mov     rbx,QWORD[248+r8]
> >
> > +
> >
> > +        lea     r10,[$L$prologue]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$common_seh_tail
> >
> > +
> >
> > +        mov     rax,QWORD[152+r8]
> >
> > +
> >
> > +        lea     r10,[$L$epilogue]
> >
> > +        cmp     rbx,r10
> >
> > +        jae     NEAR $L$common_seh_tail
> >
> > +
> >
> > +        mov     rax,QWORD[64+rax]
> >
> > +
> >
> > +        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     NEAR $L$common_seh_tail
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +shaext_handler:
> >
> > +        push    rsi
> >
> > +        push    rdi
> >
> > +        push    rbx
> >
> > +        push    rbp
> >
> > +        push    r12
> >
> > +        push    r13
> >
> > +        push    r14
> >
> > +        push    r15
> >
> > +        pushfq
> >
> > +        sub     rsp,64
> >
> > +
> >
> > +        mov     rax,QWORD[120+r8]
> >
> > +        mov     rbx,QWORD[248+r8]
> >
> > +
> >
> > +        lea     r10,[$L$prologue_shaext]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$common_seh_tail
> >
> > +
> >
> > +        lea     r10,[$L$epilogue_shaext]
> >
> > +        cmp     rbx,r10
> >
> > +        jae     NEAR $L$common_seh_tail
> >
> > +
> >
> > +        lea     rsi,[((-8-64))+rax]
> >
> > +        lea     rdi,[512+r8]
> >
> > +        mov     ecx,8
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +        jmp     NEAR $L$common_seh_tail
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +ssse3_handler:
> >
> > +        push    rsi
> >
> > +        push    rdi
> >
> > +        push    rbx
> >
> > +        push    rbp
> >
> > +        push    r12
> >
> > +        push    r13
> >
> > +        push    r14
> >
> > +        push    r15
> >
> > +        pushfq
> >
> > +        sub     rsp,64
> >
> > +
> >
> > +        mov     rax,QWORD[120+r8]
> >
> > +        mov     rbx,QWORD[248+r8]
> >
> > +
> >
> > +        mov     rsi,QWORD[8+r9]
> >
> > +        mov     r11,QWORD[56+r9]
> >
> > +
> >
> > +        mov     r10d,DWORD[r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$common_seh_tail
> >
> > +
> >
> > +        mov     rax,QWORD[208+r8]
> >
> > +
> >
> > +        mov     r10d,DWORD[4+r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jae     NEAR $L$common_seh_tail
> >
> > +
> >
> > +        lea     rsi,[((-40-96))+rax]
> >
> > +        lea     rdi,[512+r8]
> >
> > +        mov     ecx,12
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +        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[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[40+r9]
> >
> > +        mov     rsi,r8
> >
> > +        mov     ecx,154
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +        mov     rsi,r9
> >
> > +        xor     rcx,rcx
> >
> > +        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
> >
> > +        popfq
> >
> > +        pop     r15
> >
> > +        pop     r14
> >
> > +        pop     r13
> >
> > +        pop     r12
> >
> > +        pop     rbp
> >
> > +        pop     rbx
> >
> > +        pop     rdi
> >
> > +        pop     rsi
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +section .pdata rdata align=4
> >
> > +ALIGN   4
> >
> > +        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_shaext wrt ..imagebase
> >
> > +        DD      $L$SEH_end_sha1_block_data_order_shaext wrt ..imagebase
> >
> > +        DD      $L$SEH_info_sha1_block_data_order_shaext 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:
> >
> > +DB      9,0,0,0
> >
> > +        DD      se_handler wrt ..imagebase
> >
> > +$L$SEH_info_sha1_block_data_order_shaext:
> >
> > +DB      9,0,0,0
> >
> > +        DD      shaext_handler wrt ..imagebase
> >
> > +$L$SEH_info_sha1_block_data_order_ssse3:
> >
> > +DB      9,0,0,0
> >
> > +        DD      ssse3_handler wrt ..imagebase
> >
> > +        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
> > wrt ..imagebase
> >
> > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
> > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
> > x86_64.nasm
> > new file mode 100644
> > index 0000000000..7cd5eae85c
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm
> > @@ -0,0 +1,3461 @@
> > +; WARNING: do not edit!
> >
> > +; Generated from openssl/crypto/sha/asm/sha256-mb-x86_64.pl
> >
> > +;
> >
> > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
> >
> > +;
> >
> > +; Licensed under the OpenSSL license (the "License").  You may not use
> >
> > +; this file except in compliance with the License.  You can obtain a copy
> >
> > +; in the file LICENSE in the source distribution or at
> >
> > +; https://www.openssl.org/source/license.html
> >
> > +
> >
> > +default rel
> >
> > +%define XMMWORD
> >
> > +%define YMMWORD
> >
> > +%define ZMMWORD
> >
> > +section .text code align=64
> >
> > +
> >
> > +
> >
> > +EXTERN  OPENSSL_ia32cap_P
> >
> > +
> >
> > +global  sha256_multi_block
> >
> > +
> >
> > +ALIGN   32
> >
> > +sha256_multi_block:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_sha256_multi_block:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +
> >
> > +
> >
> > +
> >
> > +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
> >
> > +        bt      rcx,61
> >
> > +        jc      NEAR _shaext_shortcut
> >
> > +        mov     rax,rsp
> >
> > +
> >
> > +        push    rbx
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        lea     rsp,[((-168))+rsp]
> >
> > +        movaps  XMMWORD[rsp],xmm6
> >
> > +        movaps  XMMWORD[16+rsp],xmm7
> >
> > +        movaps  XMMWORD[32+rsp],xmm8
> >
> > +        movaps  XMMWORD[48+rsp],xmm9
> >
> > +        movaps  XMMWORD[(-120)+rax],xmm10
> >
> > +        movaps  XMMWORD[(-104)+rax],xmm11
> >
> > +        movaps  XMMWORD[(-88)+rax],xmm12
> >
> > +        movaps  XMMWORD[(-72)+rax],xmm13
> >
> > +        movaps  XMMWORD[(-56)+rax],xmm14
> >
> > +        movaps  XMMWORD[(-40)+rax],xmm15
> >
> > +        sub     rsp,288
> >
> > +        and     rsp,-256
> >
> > +        mov     QWORD[272+rsp],rax
> >
> > +
> >
> > +$L$body:
> >
> > +        lea     rbp,[((K256+128))]
> >
> > +        lea     rbx,[256+rsp]
> >
> > +        lea     rdi,[128+rdi]
> >
> > +
> >
> > +$L$oop_grande:
> >
> > +        mov     DWORD[280+rsp],edx
> >
> > +        xor     edx,edx
> >
> > +        mov     r8,QWORD[rsi]
> >
> > +        mov     ecx,DWORD[8+rsi]
> >
> > +        cmp     ecx,edx
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        mov     DWORD[rbx],ecx
> >
> > +        cmovle  r8,rbp
> >
> > +        mov     r9,QWORD[16+rsi]
> >
> > +        mov     ecx,DWORD[24+rsi]
> >
> > +        cmp     ecx,edx
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        mov     DWORD[4+rbx],ecx
> >
> > +        cmovle  r9,rbp
> >
> > +        mov     r10,QWORD[32+rsi]
> >
> > +        mov     ecx,DWORD[40+rsi]
> >
> > +        cmp     ecx,edx
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        mov     DWORD[8+rbx],ecx
> >
> > +        cmovle  r10,rbp
> >
> > +        mov     r11,QWORD[48+rsi]
> >
> > +        mov     ecx,DWORD[56+rsi]
> >
> > +        cmp     ecx,edx
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        mov     DWORD[12+rbx],ecx
> >
> > +        cmovle  r11,rbp
> >
> > +        test    edx,edx
> >
> > +        jz      NEAR $L$done
> >
> > +
> >
> > +        movdqu  xmm8,XMMWORD[((0-128))+rdi]
> >
> > +        lea     rax,[128+rsp]
> >
> > +        movdqu  xmm9,XMMWORD[((32-128))+rdi]
> >
> > +        movdqu  xmm10,XMMWORD[((64-128))+rdi]
> >
> > +        movdqu  xmm11,XMMWORD[((96-128))+rdi]
> >
> > +        movdqu  xmm12,XMMWORD[((128-128))+rdi]
> >
> > +        movdqu  xmm13,XMMWORD[((160-128))+rdi]
> >
> > +        movdqu  xmm14,XMMWORD[((192-128))+rdi]
> >
> > +        movdqu  xmm15,XMMWORD[((224-128))+rdi]
> >
> > +        movdqu  xmm6,XMMWORD[$L$pbswap]
> >
> > +        jmp     NEAR $L$oop
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$oop:
> >
> > +        movdqa  xmm4,xmm10
> >
> > +        pxor    xmm4,xmm9
> >
> > +        movd    xmm5,DWORD[r8]
> >
> > +        movd    xmm0,DWORD[r9]
> >
> > +        movd    xmm1,DWORD[r10]
> >
> > +        movd    xmm2,DWORD[r11]
> >
> > +        punpckldq       xmm5,xmm1
> >
> > +        punpckldq       xmm0,xmm2
> >
> > +        punpckldq       xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm12
> >
> > +DB      102,15,56,0,238
> >
> > +        movdqa  xmm2,xmm12
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm12
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(0-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm15
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm12
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm3,xmm12
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm14
> >
> > +        pand    xmm3,xmm13
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm8
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm8
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        movdqa  xmm3,xmm9
> >
> > +        movdqa  xmm7,xmm8
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm3,xmm8
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm4,xmm3
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm15,xmm9
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm15,xmm4
> >
> > +        paddd   xmm11,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm15,xmm5
> >
> > +        paddd   xmm15,xmm7
> >
> > +        movd    xmm5,DWORD[4+r8]
> >
> > +        movd    xmm0,DWORD[4+r9]
> >
> > +        movd    xmm1,DWORD[4+r10]
> >
> > +        movd    xmm2,DWORD[4+r11]
> >
> > +        punpckldq       xmm5,xmm1
> >
> > +        punpckldq       xmm0,xmm2
> >
> > +        punpckldq       xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm11
> >
> > +
> >
> > +        movdqa  xmm2,xmm11
> >
> > +DB      102,15,56,0,238
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm11
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(16-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm14
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[((-96))+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm11
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm4,xmm11
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm13
> >
> > +        pand    xmm4,xmm12
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm15
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm15
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        movdqa  xmm4,xmm8
> >
> > +        movdqa  xmm7,xmm15
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm4,xmm15
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm3,xmm4
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm14,xmm8
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm14,xmm3
> >
> > +        paddd   xmm10,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm14,xmm5
> >
> > +        paddd   xmm14,xmm7
> >
> > +        movd    xmm5,DWORD[8+r8]
> >
> > +        movd    xmm0,DWORD[8+r9]
> >
> > +        movd    xmm1,DWORD[8+r10]
> >
> > +        movd    xmm2,DWORD[8+r11]
> >
> > +        punpckldq       xmm5,xmm1
> >
> > +        punpckldq       xmm0,xmm2
> >
> > +        punpckldq       xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm10
> >
> > +DB      102,15,56,0,238
> >
> > +        movdqa  xmm2,xmm10
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm10
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(32-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm13
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm10
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm3,xmm10
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm12
> >
> > +        pand    xmm3,xmm11
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm14
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm14
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        movdqa  xmm3,xmm15
> >
> > +        movdqa  xmm7,xmm14
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm3,xmm14
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm4,xmm3
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm13,xmm15
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm13,xmm4
> >
> > +        paddd   xmm9,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm13,xmm5
> >
> > +        paddd   xmm13,xmm7
> >
> > +        movd    xmm5,DWORD[12+r8]
> >
> > +        movd    xmm0,DWORD[12+r9]
> >
> > +        movd    xmm1,DWORD[12+r10]
> >
> > +        movd    xmm2,DWORD[12+r11]
> >
> > +        punpckldq       xmm5,xmm1
> >
> > +        punpckldq       xmm0,xmm2
> >
> > +        punpckldq       xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm9
> >
> > +
> >
> > +        movdqa  xmm2,xmm9
> >
> > +DB      102,15,56,0,238
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm9
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(48-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm12
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[((-32))+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm9
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm4,xmm9
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm11
> >
> > +        pand    xmm4,xmm10
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm13
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm13
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        movdqa  xmm4,xmm14
> >
> > +        movdqa  xmm7,xmm13
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm4,xmm13
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm3,xmm4
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm12,xmm14
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm12,xmm3
> >
> > +        paddd   xmm8,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm12,xmm5
> >
> > +        paddd   xmm12,xmm7
> >
> > +        movd    xmm5,DWORD[16+r8]
> >
> > +        movd    xmm0,DWORD[16+r9]
> >
> > +        movd    xmm1,DWORD[16+r10]
> >
> > +        movd    xmm2,DWORD[16+r11]
> >
> > +        punpckldq       xmm5,xmm1
> >
> > +        punpckldq       xmm0,xmm2
> >
> > +        punpckldq       xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm8
> >
> > +DB      102,15,56,0,238
> >
> > +        movdqa  xmm2,xmm8
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm8
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(64-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm11
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm8
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm3,xmm8
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm10
> >
> > +        pand    xmm3,xmm9
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm12
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm12
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        movdqa  xmm3,xmm13
> >
> > +        movdqa  xmm7,xmm12
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm3,xmm12
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm4,xmm3
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm11,xmm13
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm11,xmm4
> >
> > +        paddd   xmm15,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm11,xmm5
> >
> > +        paddd   xmm11,xmm7
> >
> > +        movd    xmm5,DWORD[20+r8]
> >
> > +        movd    xmm0,DWORD[20+r9]
> >
> > +        movd    xmm1,DWORD[20+r10]
> >
> > +        movd    xmm2,DWORD[20+r11]
> >
> > +        punpckldq       xmm5,xmm1
> >
> > +        punpckldq       xmm0,xmm2
> >
> > +        punpckldq       xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm15
> >
> > +
> >
> > +        movdqa  xmm2,xmm15
> >
> > +DB      102,15,56,0,238
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm15
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(80-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm10
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[32+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm15
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm4,xmm15
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm9
> >
> > +        pand    xmm4,xmm8
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm11
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        movdqa  xmm4,xmm12
> >
> > +        movdqa  xmm7,xmm11
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm4,xmm11
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm3,xmm4
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm10,xmm12
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm10,xmm3
> >
> > +        paddd   xmm14,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm10,xmm5
> >
> > +        paddd   xmm10,xmm7
> >
> > +        movd    xmm5,DWORD[24+r8]
> >
> > +        movd    xmm0,DWORD[24+r9]
> >
> > +        movd    xmm1,DWORD[24+r10]
> >
> > +        movd    xmm2,DWORD[24+r11]
> >
> > +        punpckldq       xmm5,xmm1
> >
> > +        punpckldq       xmm0,xmm2
> >
> > +        punpckldq       xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm14
> >
> > +DB      102,15,56,0,238
> >
> > +        movdqa  xmm2,xmm14
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm14
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(96-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm9
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[64+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm14
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm3,xmm14
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm8
> >
> > +        pand    xmm3,xmm15
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm10
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm10
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        movdqa  xmm3,xmm11
> >
> > +        movdqa  xmm7,xmm10
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm3,xmm10
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm4,xmm3
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm9,xmm11
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm9,xmm4
> >
> > +        paddd   xmm13,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm9,xmm5
> >
> > +        paddd   xmm9,xmm7
> >
> > +        movd    xmm5,DWORD[28+r8]
> >
> > +        movd    xmm0,DWORD[28+r9]
> >
> > +        movd    xmm1,DWORD[28+r10]
> >
> > +        movd    xmm2,DWORD[28+r11]
> >
> > +        punpckldq       xmm5,xmm1
> >
> > +        punpckldq       xmm0,xmm2
> >
> > +        punpckldq       xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm13
> >
> > +
> >
> > +        movdqa  xmm2,xmm13
> >
> > +DB      102,15,56,0,238
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm13
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(112-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm8
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[96+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm13
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm4,xmm13
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm15
> >
> > +        pand    xmm4,xmm14
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm9
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm9
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        movdqa  xmm4,xmm10
> >
> > +        movdqa  xmm7,xmm9
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm4,xmm9
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm3,xmm4
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm8,xmm3
> >
> > +        paddd   xmm12,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm8,xmm5
> >
> > +        paddd   xmm8,xmm7
> >
> > +        lea     rbp,[256+rbp]
> >
> > +        movd    xmm5,DWORD[32+r8]
> >
> > +        movd    xmm0,DWORD[32+r9]
> >
> > +        movd    xmm1,DWORD[32+r10]
> >
> > +        movd    xmm2,DWORD[32+r11]
> >
> > +        punpckldq       xmm5,xmm1
> >
> > +        punpckldq       xmm0,xmm2
> >
> > +        punpckldq       xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm12
> >
> > +DB      102,15,56,0,238
> >
> > +        movdqa  xmm2,xmm12
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm12
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(128-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm15
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm12
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm3,xmm12
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm14
> >
> > +        pand    xmm3,xmm13
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm8
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm8
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        movdqa  xmm3,xmm9
> >
> > +        movdqa  xmm7,xmm8
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm3,xmm8
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm4,xmm3
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm15,xmm9
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm15,xmm4
> >
> > +        paddd   xmm11,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm15,xmm5
> >
> > +        paddd   xmm15,xmm7
> >
> > +        movd    xmm5,DWORD[36+r8]
> >
> > +        movd    xmm0,DWORD[36+r9]
> >
> > +        movd    xmm1,DWORD[36+r10]
> >
> > +        movd    xmm2,DWORD[36+r11]
> >
> > +        punpckldq       xmm5,xmm1
> >
> > +        punpckldq       xmm0,xmm2
> >
> > +        punpckldq       xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm11
> >
> > +
> >
> > +        movdqa  xmm2,xmm11
> >
> > +DB      102,15,56,0,238
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm11
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(144-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm14
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[((-96))+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm11
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm4,xmm11
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm13
> >
> > +        pand    xmm4,xmm12
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm15
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm15
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        movdqa  xmm4,xmm8
> >
> > +        movdqa  xmm7,xmm15
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm4,xmm15
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm3,xmm4
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm14,xmm8
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm14,xmm3
> >
> > +        paddd   xmm10,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm14,xmm5
> >
> > +        paddd   xmm14,xmm7
> >
> > +        movd    xmm5,DWORD[40+r8]
> >
> > +        movd    xmm0,DWORD[40+r9]
> >
> > +        movd    xmm1,DWORD[40+r10]
> >
> > +        movd    xmm2,DWORD[40+r11]
> >
> > +        punpckldq       xmm5,xmm1
> >
> > +        punpckldq       xmm0,xmm2
> >
> > +        punpckldq       xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm10
> >
> > +DB      102,15,56,0,238
> >
> > +        movdqa  xmm2,xmm10
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm10
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(160-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm13
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm10
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm3,xmm10
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm12
> >
> > +        pand    xmm3,xmm11
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm14
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm14
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        movdqa  xmm3,xmm15
> >
> > +        movdqa  xmm7,xmm14
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm3,xmm14
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm4,xmm3
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm13,xmm15
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm13,xmm4
> >
> > +        paddd   xmm9,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm13,xmm5
> >
> > +        paddd   xmm13,xmm7
> >
> > +        movd    xmm5,DWORD[44+r8]
> >
> > +        movd    xmm0,DWORD[44+r9]
> >
> > +        movd    xmm1,DWORD[44+r10]
> >
> > +        movd    xmm2,DWORD[44+r11]
> >
> > +        punpckldq       xmm5,xmm1
> >
> > +        punpckldq       xmm0,xmm2
> >
> > +        punpckldq       xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm9
> >
> > +
> >
> > +        movdqa  xmm2,xmm9
> >
> > +DB      102,15,56,0,238
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm9
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(176-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm12
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[((-32))+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm9
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm4,xmm9
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm11
> >
> > +        pand    xmm4,xmm10
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm13
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm13
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        movdqa  xmm4,xmm14
> >
> > +        movdqa  xmm7,xmm13
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm4,xmm13
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm3,xmm4
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm12,xmm14
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm12,xmm3
> >
> > +        paddd   xmm8,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm12,xmm5
> >
> > +        paddd   xmm12,xmm7
> >
> > +        movd    xmm5,DWORD[48+r8]
> >
> > +        movd    xmm0,DWORD[48+r9]
> >
> > +        movd    xmm1,DWORD[48+r10]
> >
> > +        movd    xmm2,DWORD[48+r11]
> >
> > +        punpckldq       xmm5,xmm1
> >
> > +        punpckldq       xmm0,xmm2
> >
> > +        punpckldq       xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm8
> >
> > +DB      102,15,56,0,238
> >
> > +        movdqa  xmm2,xmm8
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm8
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(192-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm11
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm8
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm3,xmm8
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm10
> >
> > +        pand    xmm3,xmm9
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm12
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm12
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        movdqa  xmm3,xmm13
> >
> > +        movdqa  xmm7,xmm12
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm3,xmm12
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm4,xmm3
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm11,xmm13
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm11,xmm4
> >
> > +        paddd   xmm15,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm11,xmm5
> >
> > +        paddd   xmm11,xmm7
> >
> > +        movd    xmm5,DWORD[52+r8]
> >
> > +        movd    xmm0,DWORD[52+r9]
> >
> > +        movd    xmm1,DWORD[52+r10]
> >
> > +        movd    xmm2,DWORD[52+r11]
> >
> > +        punpckldq       xmm5,xmm1
> >
> > +        punpckldq       xmm0,xmm2
> >
> > +        punpckldq       xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm15
> >
> > +
> >
> > +        movdqa  xmm2,xmm15
> >
> > +DB      102,15,56,0,238
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm15
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(208-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm10
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[32+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm15
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm4,xmm15
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm9
> >
> > +        pand    xmm4,xmm8
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm11
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        movdqa  xmm4,xmm12
> >
> > +        movdqa  xmm7,xmm11
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm4,xmm11
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm3,xmm4
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm10,xmm12
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm10,xmm3
> >
> > +        paddd   xmm14,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm10,xmm5
> >
> > +        paddd   xmm10,xmm7
> >
> > +        movd    xmm5,DWORD[56+r8]
> >
> > +        movd    xmm0,DWORD[56+r9]
> >
> > +        movd    xmm1,DWORD[56+r10]
> >
> > +        movd    xmm2,DWORD[56+r11]
> >
> > +        punpckldq       xmm5,xmm1
> >
> > +        punpckldq       xmm0,xmm2
> >
> > +        punpckldq       xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm14
> >
> > +DB      102,15,56,0,238
> >
> > +        movdqa  xmm2,xmm14
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm14
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(224-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm9
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[64+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm14
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm3,xmm14
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm8
> >
> > +        pand    xmm3,xmm15
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm10
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm10
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        movdqa  xmm3,xmm11
> >
> > +        movdqa  xmm7,xmm10
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm3,xmm10
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm4,xmm3
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm9,xmm11
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm9,xmm4
> >
> > +        paddd   xmm13,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm9,xmm5
> >
> > +        paddd   xmm9,xmm7
> >
> > +        movd    xmm5,DWORD[60+r8]
> >
> > +        lea     r8,[64+r8]
> >
> > +        movd    xmm0,DWORD[60+r9]
> >
> > +        lea     r9,[64+r9]
> >
> > +        movd    xmm1,DWORD[60+r10]
> >
> > +        lea     r10,[64+r10]
> >
> > +        movd    xmm2,DWORD[60+r11]
> >
> > +        lea     r11,[64+r11]
> >
> > +        punpckldq       xmm5,xmm1
> >
> > +        punpckldq       xmm0,xmm2
> >
> > +        punpckldq       xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm13
> >
> > +
> >
> > +        movdqa  xmm2,xmm13
> >
> > +DB      102,15,56,0,238
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm13
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(240-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm8
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[96+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm13
> >
> > +        prefetcht0      [63+r8]
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm4,xmm13
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm15
> >
> > +        pand    xmm4,xmm14
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        prefetcht0      [63+r9]
> >
> > +        movdqa  xmm1,xmm9
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm9
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        movdqa  xmm4,xmm10
> >
> > +        movdqa  xmm7,xmm9
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm4,xmm9
> >
> > +
> >
> > +        prefetcht0      [63+r10]
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm3,xmm4
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +        prefetcht0      [63+r11]
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm8,xmm3
> >
> > +        paddd   xmm12,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm8,xmm5
> >
> > +        paddd   xmm8,xmm7
> >
> > +        lea     rbp,[256+rbp]
> >
> > +        movdqu  xmm5,XMMWORD[((0-128))+rax]
> >
> > +        mov     ecx,3
> >
> > +        jmp     NEAR $L$oop_16_xx
> >
> > +ALIGN   32
> >
> > +$L$oop_16_xx:
> >
> > +        movdqa  xmm6,XMMWORD[((16-128))+rax]
> >
> > +        paddd   xmm5,XMMWORD[((144-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm7,xmm6
> >
> > +        movdqa  xmm1,xmm6
> >
> > +        psrld   xmm7,3
> >
> > +        movdqa  xmm2,xmm6
> >
> > +
> >
> > +        psrld   xmm1,7
> >
> > +        movdqa  xmm0,XMMWORD[((224-128))+rax]
> >
> > +        pslld   xmm2,14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm1,18-7
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,25-14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm0,10
> >
> > +        movdqa  xmm1,xmm3
> >
> > +
> >
> > +        psrld   xmm3,17
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm1,13
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        psrld   xmm3,19-17
> >
> > +        pxor    xmm0,xmm1
> >
> > +        pslld   xmm1,15-13
> >
> > +        pxor    xmm0,xmm3
> >
> > +        pxor    xmm0,xmm1
> >
> > +        paddd   xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm12
> >
> > +
> >
> > +        movdqa  xmm2,xmm12
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm12
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(0-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm15
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm12
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm3,xmm12
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm14
> >
> > +        pand    xmm3,xmm13
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm8
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm8
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        movdqa  xmm3,xmm9
> >
> > +        movdqa  xmm7,xmm8
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm3,xmm8
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm4,xmm3
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm15,xmm9
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm15,xmm4
> >
> > +        paddd   xmm11,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm15,xmm5
> >
> > +        paddd   xmm15,xmm7
> >
> > +        movdqa  xmm5,XMMWORD[((32-128))+rax]
> >
> > +        paddd   xmm6,XMMWORD[((160-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm7,xmm5
> >
> > +        movdqa  xmm1,xmm5
> >
> > +        psrld   xmm7,3
> >
> > +        movdqa  xmm2,xmm5
> >
> > +
> >
> > +        psrld   xmm1,7
> >
> > +        movdqa  xmm0,XMMWORD[((240-128))+rax]
> >
> > +        pslld   xmm2,14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm1,18-7
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,25-14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm0,10
> >
> > +        movdqa  xmm1,xmm4
> >
> > +
> >
> > +        psrld   xmm4,17
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm1,13
> >
> > +        paddd   xmm6,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        psrld   xmm4,19-17
> >
> > +        pxor    xmm0,xmm1
> >
> > +        pslld   xmm1,15-13
> >
> > +        pxor    xmm0,xmm4
> >
> > +        pxor    xmm0,xmm1
> >
> > +        paddd   xmm6,xmm0
> >
> > +        movdqa  xmm7,xmm11
> >
> > +
> >
> > +        movdqa  xmm2,xmm11
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm11
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(16-128)+rax],xmm6
> >
> > +        paddd   xmm6,xmm14
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm6,XMMWORD[((-96))+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm11
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm4,xmm11
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm13
> >
> > +        pand    xmm4,xmm12
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm15
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm15
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm6,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        movdqa  xmm4,xmm8
> >
> > +        movdqa  xmm7,xmm15
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm4,xmm15
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm6,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm3,xmm4
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm14,xmm8
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm14,xmm3
> >
> > +        paddd   xmm10,xmm6
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm14,xmm6
> >
> > +        paddd   xmm14,xmm7
> >
> > +        movdqa  xmm6,XMMWORD[((48-128))+rax]
> >
> > +        paddd   xmm5,XMMWORD[((176-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm7,xmm6
> >
> > +        movdqa  xmm1,xmm6
> >
> > +        psrld   xmm7,3
> >
> > +        movdqa  xmm2,xmm6
> >
> > +
> >
> > +        psrld   xmm1,7
> >
> > +        movdqa  xmm0,XMMWORD[((0-128))+rax]
> >
> > +        pslld   xmm2,14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm1,18-7
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,25-14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm0,10
> >
> > +        movdqa  xmm1,xmm3
> >
> > +
> >
> > +        psrld   xmm3,17
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm1,13
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        psrld   xmm3,19-17
> >
> > +        pxor    xmm0,xmm1
> >
> > +        pslld   xmm1,15-13
> >
> > +        pxor    xmm0,xmm3
> >
> > +        pxor    xmm0,xmm1
> >
> > +        paddd   xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm10
> >
> > +
> >
> > +        movdqa  xmm2,xmm10
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm10
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(32-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm13
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm10
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm3,xmm10
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm12
> >
> > +        pand    xmm3,xmm11
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm14
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm14
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        movdqa  xmm3,xmm15
> >
> > +        movdqa  xmm7,xmm14
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm3,xmm14
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm4,xmm3
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm13,xmm15
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm13,xmm4
> >
> > +        paddd   xmm9,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm13,xmm5
> >
> > +        paddd   xmm13,xmm7
> >
> > +        movdqa  xmm5,XMMWORD[((64-128))+rax]
> >
> > +        paddd   xmm6,XMMWORD[((192-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm7,xmm5
> >
> > +        movdqa  xmm1,xmm5
> >
> > +        psrld   xmm7,3
> >
> > +        movdqa  xmm2,xmm5
> >
> > +
> >
> > +        psrld   xmm1,7
> >
> > +        movdqa  xmm0,XMMWORD[((16-128))+rax]
> >
> > +        pslld   xmm2,14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm1,18-7
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,25-14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm0,10
> >
> > +        movdqa  xmm1,xmm4
> >
> > +
> >
> > +        psrld   xmm4,17
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm1,13
> >
> > +        paddd   xmm6,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        psrld   xmm4,19-17
> >
> > +        pxor    xmm0,xmm1
> >
> > +        pslld   xmm1,15-13
> >
> > +        pxor    xmm0,xmm4
> >
> > +        pxor    xmm0,xmm1
> >
> > +        paddd   xmm6,xmm0
> >
> > +        movdqa  xmm7,xmm9
> >
> > +
> >
> > +        movdqa  xmm2,xmm9
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm9
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(48-128)+rax],xmm6
> >
> > +        paddd   xmm6,xmm12
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm6,XMMWORD[((-32))+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm9
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm4,xmm9
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm11
> >
> > +        pand    xmm4,xmm10
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm13
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm13
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm6,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        movdqa  xmm4,xmm14
> >
> > +        movdqa  xmm7,xmm13
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm4,xmm13
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm6,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm3,xmm4
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm12,xmm14
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm12,xmm3
> >
> > +        paddd   xmm8,xmm6
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm12,xmm6
> >
> > +        paddd   xmm12,xmm7
> >
> > +        movdqa  xmm6,XMMWORD[((80-128))+rax]
> >
> > +        paddd   xmm5,XMMWORD[((208-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm7,xmm6
> >
> > +        movdqa  xmm1,xmm6
> >
> > +        psrld   xmm7,3
> >
> > +        movdqa  xmm2,xmm6
> >
> > +
> >
> > +        psrld   xmm1,7
> >
> > +        movdqa  xmm0,XMMWORD[((32-128))+rax]
> >
> > +        pslld   xmm2,14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm1,18-7
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,25-14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm0,10
> >
> > +        movdqa  xmm1,xmm3
> >
> > +
> >
> > +        psrld   xmm3,17
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm1,13
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        psrld   xmm3,19-17
> >
> > +        pxor    xmm0,xmm1
> >
> > +        pslld   xmm1,15-13
> >
> > +        pxor    xmm0,xmm3
> >
> > +        pxor    xmm0,xmm1
> >
> > +        paddd   xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm8
> >
> > +
> >
> > +        movdqa  xmm2,xmm8
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm8
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(64-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm11
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm8
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm3,xmm8
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm10
> >
> > +        pand    xmm3,xmm9
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm12
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm12
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        movdqa  xmm3,xmm13
> >
> > +        movdqa  xmm7,xmm12
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm3,xmm12
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm4,xmm3
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm11,xmm13
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm11,xmm4
> >
> > +        paddd   xmm15,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm11,xmm5
> >
> > +        paddd   xmm11,xmm7
> >
> > +        movdqa  xmm5,XMMWORD[((96-128))+rax]
> >
> > +        paddd   xmm6,XMMWORD[((224-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm7,xmm5
> >
> > +        movdqa  xmm1,xmm5
> >
> > +        psrld   xmm7,3
> >
> > +        movdqa  xmm2,xmm5
> >
> > +
> >
> > +        psrld   xmm1,7
> >
> > +        movdqa  xmm0,XMMWORD[((48-128))+rax]
> >
> > +        pslld   xmm2,14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm1,18-7
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,25-14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm0,10
> >
> > +        movdqa  xmm1,xmm4
> >
> > +
> >
> > +        psrld   xmm4,17
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm1,13
> >
> > +        paddd   xmm6,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        psrld   xmm4,19-17
> >
> > +        pxor    xmm0,xmm1
> >
> > +        pslld   xmm1,15-13
> >
> > +        pxor    xmm0,xmm4
> >
> > +        pxor    xmm0,xmm1
> >
> > +        paddd   xmm6,xmm0
> >
> > +        movdqa  xmm7,xmm15
> >
> > +
> >
> > +        movdqa  xmm2,xmm15
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm15
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(80-128)+rax],xmm6
> >
> > +        paddd   xmm6,xmm10
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm6,XMMWORD[32+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm15
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm4,xmm15
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm9
> >
> > +        pand    xmm4,xmm8
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm11
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm6,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        movdqa  xmm4,xmm12
> >
> > +        movdqa  xmm7,xmm11
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm4,xmm11
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm6,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm3,xmm4
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm10,xmm12
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm10,xmm3
> >
> > +        paddd   xmm14,xmm6
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm10,xmm6
> >
> > +        paddd   xmm10,xmm7
> >
> > +        movdqa  xmm6,XMMWORD[((112-128))+rax]
> >
> > +        paddd   xmm5,XMMWORD[((240-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm7,xmm6
> >
> > +        movdqa  xmm1,xmm6
> >
> > +        psrld   xmm7,3
> >
> > +        movdqa  xmm2,xmm6
> >
> > +
> >
> > +        psrld   xmm1,7
> >
> > +        movdqa  xmm0,XMMWORD[((64-128))+rax]
> >
> > +        pslld   xmm2,14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm1,18-7
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,25-14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm0,10
> >
> > +        movdqa  xmm1,xmm3
> >
> > +
> >
> > +        psrld   xmm3,17
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm1,13
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        psrld   xmm3,19-17
> >
> > +        pxor    xmm0,xmm1
> >
> > +        pslld   xmm1,15-13
> >
> > +        pxor    xmm0,xmm3
> >
> > +        pxor    xmm0,xmm1
> >
> > +        paddd   xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm14
> >
> > +
> >
> > +        movdqa  xmm2,xmm14
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm14
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(96-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm9
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[64+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm14
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm3,xmm14
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm8
> >
> > +        pand    xmm3,xmm15
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm10
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm10
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        movdqa  xmm3,xmm11
> >
> > +        movdqa  xmm7,xmm10
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm3,xmm10
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm4,xmm3
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm9,xmm11
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm9,xmm4
> >
> > +        paddd   xmm13,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm9,xmm5
> >
> > +        paddd   xmm9,xmm7
> >
> > +        movdqa  xmm5,XMMWORD[((128-128))+rax]
> >
> > +        paddd   xmm6,XMMWORD[((0-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm7,xmm5
> >
> > +        movdqa  xmm1,xmm5
> >
> > +        psrld   xmm7,3
> >
> > +        movdqa  xmm2,xmm5
> >
> > +
> >
> > +        psrld   xmm1,7
> >
> > +        movdqa  xmm0,XMMWORD[((80-128))+rax]
> >
> > +        pslld   xmm2,14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm1,18-7
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,25-14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm0,10
> >
> > +        movdqa  xmm1,xmm4
> >
> > +
> >
> > +        psrld   xmm4,17
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm1,13
> >
> > +        paddd   xmm6,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        psrld   xmm4,19-17
> >
> > +        pxor    xmm0,xmm1
> >
> > +        pslld   xmm1,15-13
> >
> > +        pxor    xmm0,xmm4
> >
> > +        pxor    xmm0,xmm1
> >
> > +        paddd   xmm6,xmm0
> >
> > +        movdqa  xmm7,xmm13
> >
> > +
> >
> > +        movdqa  xmm2,xmm13
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm13
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(112-128)+rax],xmm6
> >
> > +        paddd   xmm6,xmm8
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm6,XMMWORD[96+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm13
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm4,xmm13
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm15
> >
> > +        pand    xmm4,xmm14
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm9
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm9
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm6,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        movdqa  xmm4,xmm10
> >
> > +        movdqa  xmm7,xmm9
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm4,xmm9
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm6,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm3,xmm4
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm8,xmm3
> >
> > +        paddd   xmm12,xmm6
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm8,xmm6
> >
> > +        paddd   xmm8,xmm7
> >
> > +        lea     rbp,[256+rbp]
> >
> > +        movdqa  xmm6,XMMWORD[((144-128))+rax]
> >
> > +        paddd   xmm5,XMMWORD[((16-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm7,xmm6
> >
> > +        movdqa  xmm1,xmm6
> >
> > +        psrld   xmm7,3
> >
> > +        movdqa  xmm2,xmm6
> >
> > +
> >
> > +        psrld   xmm1,7
> >
> > +        movdqa  xmm0,XMMWORD[((96-128))+rax]
> >
> > +        pslld   xmm2,14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm1,18-7
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,25-14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm0,10
> >
> > +        movdqa  xmm1,xmm3
> >
> > +
> >
> > +        psrld   xmm3,17
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm1,13
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        psrld   xmm3,19-17
> >
> > +        pxor    xmm0,xmm1
> >
> > +        pslld   xmm1,15-13
> >
> > +        pxor    xmm0,xmm3
> >
> > +        pxor    xmm0,xmm1
> >
> > +        paddd   xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm12
> >
> > +
> >
> > +        movdqa  xmm2,xmm12
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm12
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(128-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm15
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm12
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm3,xmm12
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm14
> >
> > +        pand    xmm3,xmm13
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm8
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm8
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        movdqa  xmm3,xmm9
> >
> > +        movdqa  xmm7,xmm8
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm3,xmm8
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm4,xmm3
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm15,xmm9
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm15,xmm4
> >
> > +        paddd   xmm11,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm15,xmm5
> >
> > +        paddd   xmm15,xmm7
> >
> > +        movdqa  xmm5,XMMWORD[((160-128))+rax]
> >
> > +        paddd   xmm6,XMMWORD[((32-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm7,xmm5
> >
> > +        movdqa  xmm1,xmm5
> >
> > +        psrld   xmm7,3
> >
> > +        movdqa  xmm2,xmm5
> >
> > +
> >
> > +        psrld   xmm1,7
> >
> > +        movdqa  xmm0,XMMWORD[((112-128))+rax]
> >
> > +        pslld   xmm2,14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm1,18-7
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,25-14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm0,10
> >
> > +        movdqa  xmm1,xmm4
> >
> > +
> >
> > +        psrld   xmm4,17
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm1,13
> >
> > +        paddd   xmm6,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        psrld   xmm4,19-17
> >
> > +        pxor    xmm0,xmm1
> >
> > +        pslld   xmm1,15-13
> >
> > +        pxor    xmm0,xmm4
> >
> > +        pxor    xmm0,xmm1
> >
> > +        paddd   xmm6,xmm0
> >
> > +        movdqa  xmm7,xmm11
> >
> > +
> >
> > +        movdqa  xmm2,xmm11
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm11
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(144-128)+rax],xmm6
> >
> > +        paddd   xmm6,xmm14
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm6,XMMWORD[((-96))+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm11
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm4,xmm11
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm13
> >
> > +        pand    xmm4,xmm12
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm15
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm15
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm6,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        movdqa  xmm4,xmm8
> >
> > +        movdqa  xmm7,xmm15
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm4,xmm15
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm6,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm3,xmm4
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm14,xmm8
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm14,xmm3
> >
> > +        paddd   xmm10,xmm6
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm14,xmm6
> >
> > +        paddd   xmm14,xmm7
> >
> > +        movdqa  xmm6,XMMWORD[((176-128))+rax]
> >
> > +        paddd   xmm5,XMMWORD[((48-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm7,xmm6
> >
> > +        movdqa  xmm1,xmm6
> >
> > +        psrld   xmm7,3
> >
> > +        movdqa  xmm2,xmm6
> >
> > +
> >
> > +        psrld   xmm1,7
> >
> > +        movdqa  xmm0,XMMWORD[((128-128))+rax]
> >
> > +        pslld   xmm2,14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm1,18-7
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,25-14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm0,10
> >
> > +        movdqa  xmm1,xmm3
> >
> > +
> >
> > +        psrld   xmm3,17
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm1,13
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        psrld   xmm3,19-17
> >
> > +        pxor    xmm0,xmm1
> >
> > +        pslld   xmm1,15-13
> >
> > +        pxor    xmm0,xmm3
> >
> > +        pxor    xmm0,xmm1
> >
> > +        paddd   xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm10
> >
> > +
> >
> > +        movdqa  xmm2,xmm10
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm10
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(160-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm13
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm10
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm3,xmm10
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm12
> >
> > +        pand    xmm3,xmm11
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm14
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm14
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        movdqa  xmm3,xmm15
> >
> > +        movdqa  xmm7,xmm14
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm3,xmm14
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm4,xmm3
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm13,xmm15
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm13,xmm4
> >
> > +        paddd   xmm9,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm13,xmm5
> >
> > +        paddd   xmm13,xmm7
> >
> > +        movdqa  xmm5,XMMWORD[((192-128))+rax]
> >
> > +        paddd   xmm6,XMMWORD[((64-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm7,xmm5
> >
> > +        movdqa  xmm1,xmm5
> >
> > +        psrld   xmm7,3
> >
> > +        movdqa  xmm2,xmm5
> >
> > +
> >
> > +        psrld   xmm1,7
> >
> > +        movdqa  xmm0,XMMWORD[((144-128))+rax]
> >
> > +        pslld   xmm2,14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm1,18-7
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,25-14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm0,10
> >
> > +        movdqa  xmm1,xmm4
> >
> > +
> >
> > +        psrld   xmm4,17
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm1,13
> >
> > +        paddd   xmm6,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        psrld   xmm4,19-17
> >
> > +        pxor    xmm0,xmm1
> >
> > +        pslld   xmm1,15-13
> >
> > +        pxor    xmm0,xmm4
> >
> > +        pxor    xmm0,xmm1
> >
> > +        paddd   xmm6,xmm0
> >
> > +        movdqa  xmm7,xmm9
> >
> > +
> >
> > +        movdqa  xmm2,xmm9
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm9
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(176-128)+rax],xmm6
> >
> > +        paddd   xmm6,xmm12
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm6,XMMWORD[((-32))+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm9
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm4,xmm9
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm11
> >
> > +        pand    xmm4,xmm10
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm13
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm13
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm6,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        movdqa  xmm4,xmm14
> >
> > +        movdqa  xmm7,xmm13
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm4,xmm13
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm6,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm3,xmm4
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm12,xmm14
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm12,xmm3
> >
> > +        paddd   xmm8,xmm6
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm12,xmm6
> >
> > +        paddd   xmm12,xmm7
> >
> > +        movdqa  xmm6,XMMWORD[((208-128))+rax]
> >
> > +        paddd   xmm5,XMMWORD[((80-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm7,xmm6
> >
> > +        movdqa  xmm1,xmm6
> >
> > +        psrld   xmm7,3
> >
> > +        movdqa  xmm2,xmm6
> >
> > +
> >
> > +        psrld   xmm1,7
> >
> > +        movdqa  xmm0,XMMWORD[((160-128))+rax]
> >
> > +        pslld   xmm2,14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm1,18-7
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,25-14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm0,10
> >
> > +        movdqa  xmm1,xmm3
> >
> > +
> >
> > +        psrld   xmm3,17
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm1,13
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        psrld   xmm3,19-17
> >
> > +        pxor    xmm0,xmm1
> >
> > +        pslld   xmm1,15-13
> >
> > +        pxor    xmm0,xmm3
> >
> > +        pxor    xmm0,xmm1
> >
> > +        paddd   xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm8
> >
> > +
> >
> > +        movdqa  xmm2,xmm8
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm8
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(192-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm11
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm8
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm3,xmm8
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm10
> >
> > +        pand    xmm3,xmm9
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm12
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm12
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        movdqa  xmm3,xmm13
> >
> > +        movdqa  xmm7,xmm12
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm3,xmm12
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm4,xmm3
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm11,xmm13
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm11,xmm4
> >
> > +        paddd   xmm15,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm11,xmm5
> >
> > +        paddd   xmm11,xmm7
> >
> > +        movdqa  xmm5,XMMWORD[((224-128))+rax]
> >
> > +        paddd   xmm6,XMMWORD[((96-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm7,xmm5
> >
> > +        movdqa  xmm1,xmm5
> >
> > +        psrld   xmm7,3
> >
> > +        movdqa  xmm2,xmm5
> >
> > +
> >
> > +        psrld   xmm1,7
> >
> > +        movdqa  xmm0,XMMWORD[((176-128))+rax]
> >
> > +        pslld   xmm2,14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm1,18-7
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,25-14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm0,10
> >
> > +        movdqa  xmm1,xmm4
> >
> > +
> >
> > +        psrld   xmm4,17
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm1,13
> >
> > +        paddd   xmm6,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        psrld   xmm4,19-17
> >
> > +        pxor    xmm0,xmm1
> >
> > +        pslld   xmm1,15-13
> >
> > +        pxor    xmm0,xmm4
> >
> > +        pxor    xmm0,xmm1
> >
> > +        paddd   xmm6,xmm0
> >
> > +        movdqa  xmm7,xmm15
> >
> > +
> >
> > +        movdqa  xmm2,xmm15
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm15
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(208-128)+rax],xmm6
> >
> > +        paddd   xmm6,xmm10
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm6,XMMWORD[32+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm15
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm4,xmm15
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm9
> >
> > +        pand    xmm4,xmm8
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm11
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm6,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        movdqa  xmm4,xmm12
> >
> > +        movdqa  xmm7,xmm11
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm4,xmm11
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm6,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm3,xmm4
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm10,xmm12
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm10,xmm3
> >
> > +        paddd   xmm14,xmm6
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm10,xmm6
> >
> > +        paddd   xmm10,xmm7
> >
> > +        movdqa  xmm6,XMMWORD[((240-128))+rax]
> >
> > +        paddd   xmm5,XMMWORD[((112-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm7,xmm6
> >
> > +        movdqa  xmm1,xmm6
> >
> > +        psrld   xmm7,3
> >
> > +        movdqa  xmm2,xmm6
> >
> > +
> >
> > +        psrld   xmm1,7
> >
> > +        movdqa  xmm0,XMMWORD[((192-128))+rax]
> >
> > +        pslld   xmm2,14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm1,18-7
> >
> > +        movdqa  xmm3,xmm0
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,25-14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm0,10
> >
> > +        movdqa  xmm1,xmm3
> >
> > +
> >
> > +        psrld   xmm3,17
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm1,13
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        psrld   xmm3,19-17
> >
> > +        pxor    xmm0,xmm1
> >
> > +        pslld   xmm1,15-13
> >
> > +        pxor    xmm0,xmm3
> >
> > +        pxor    xmm0,xmm1
> >
> > +        paddd   xmm5,xmm0
> >
> > +        movdqa  xmm7,xmm14
> >
> > +
> >
> > +        movdqa  xmm2,xmm14
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm14
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(224-128)+rax],xmm5
> >
> > +        paddd   xmm5,xmm9
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm5,XMMWORD[64+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm14
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm3,xmm14
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm8
> >
> > +        pand    xmm3,xmm15
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm10
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm10
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm5,xmm7
> >
> > +        pxor    xmm0,xmm3
> >
> > +        movdqa  xmm3,xmm11
> >
> > +        movdqa  xmm7,xmm10
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm3,xmm10
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm5,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm4,xmm3
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm9,xmm11
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm9,xmm4
> >
> > +        paddd   xmm13,xmm5
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm9,xmm5
> >
> > +        paddd   xmm9,xmm7
> >
> > +        movdqa  xmm5,XMMWORD[((0-128))+rax]
> >
> > +        paddd   xmm6,XMMWORD[((128-128))+rax]
> >
> > +
> >
> > +        movdqa  xmm7,xmm5
> >
> > +        movdqa  xmm1,xmm5
> >
> > +        psrld   xmm7,3
> >
> > +        movdqa  xmm2,xmm5
> >
> > +
> >
> > +        psrld   xmm1,7
> >
> > +        movdqa  xmm0,XMMWORD[((208-128))+rax]
> >
> > +        pslld   xmm2,14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm1,18-7
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,25-14
> >
> > +        pxor    xmm7,xmm1
> >
> > +        psrld   xmm0,10
> >
> > +        movdqa  xmm1,xmm4
> >
> > +
> >
> > +        psrld   xmm4,17
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm1,13
> >
> > +        paddd   xmm6,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        psrld   xmm4,19-17
> >
> > +        pxor    xmm0,xmm1
> >
> > +        pslld   xmm1,15-13
> >
> > +        pxor    xmm0,xmm4
> >
> > +        pxor    xmm0,xmm1
> >
> > +        paddd   xmm6,xmm0
> >
> > +        movdqa  xmm7,xmm13
> >
> > +
> >
> > +        movdqa  xmm2,xmm13
> >
> > +
> >
> > +        psrld   xmm7,6
> >
> > +        movdqa  xmm1,xmm13
> >
> > +        pslld   xmm2,7
> >
> > +        movdqa  XMMWORD[(240-128)+rax],xmm6
> >
> > +        paddd   xmm6,xmm8
> >
> > +
> >
> > +        psrld   xmm1,11
> >
> > +        pxor    xmm7,xmm2
> >
> > +        pslld   xmm2,21-7
> >
> > +        paddd   xmm6,XMMWORD[96+rbp]
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +        psrld   xmm1,25-11
> >
> > +        movdqa  xmm0,xmm13
> >
> > +
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm4,xmm13
> >
> > +        pslld   xmm2,26-21
> >
> > +        pandn   xmm0,xmm15
> >
> > +        pand    xmm4,xmm14
> >
> > +        pxor    xmm7,xmm1
> >
> > +
> >
> > +
> >
> > +        movdqa  xmm1,xmm9
> >
> > +        pxor    xmm7,xmm2
> >
> > +        movdqa  xmm2,xmm9
> >
> > +        psrld   xmm1,2
> >
> > +        paddd   xmm6,xmm7
> >
> > +        pxor    xmm0,xmm4
> >
> > +        movdqa  xmm4,xmm10
> >
> > +        movdqa  xmm7,xmm9
> >
> > +        pslld   xmm2,10
> >
> > +        pxor    xmm4,xmm9
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        paddd   xmm6,xmm0
> >
> > +        pslld   xmm2,19-10
> >
> > +        pand    xmm3,xmm4
> >
> > +        pxor    xmm1,xmm7
> >
> > +
> >
> > +
> >
> > +        psrld   xmm7,22-13
> >
> > +        pxor    xmm1,xmm2
> >
> > +        movdqa  xmm8,xmm10
> >
> > +        pslld   xmm2,30-19
> >
> > +        pxor    xmm7,xmm1
> >
> > +        pxor    xmm8,xmm3
> >
> > +        paddd   xmm12,xmm6
> >
> > +        pxor    xmm7,xmm2
> >
> > +
> >
> > +        paddd   xmm8,xmm6
> >
> > +        paddd   xmm8,xmm7
> >
> > +        lea     rbp,[256+rbp]
> >
> > +        dec     ecx
> >
> > +        jnz     NEAR $L$oop_16_xx
> >
> > +
> >
> > +        mov     ecx,1
> >
> > +        lea     rbp,[((K256+128))]
> >
> > +
> >
> > +        movdqa  xmm7,XMMWORD[rbx]
> >
> > +        cmp     ecx,DWORD[rbx]
> >
> > +        pxor    xmm0,xmm0
> >
> > +        cmovge  r8,rbp
> >
> > +        cmp     ecx,DWORD[4+rbx]
> >
> > +        movdqa  xmm6,xmm7
> >
> > +        cmovge  r9,rbp
> >
> > +        cmp     ecx,DWORD[8+rbx]
> >
> > +        pcmpgtd xmm6,xmm0
> >
> > +        cmovge  r10,rbp
> >
> > +        cmp     ecx,DWORD[12+rbx]
> >
> > +        paddd   xmm7,xmm6
> >
> > +        cmovge  r11,rbp
> >
> > +
> >
> > +        movdqu  xmm0,XMMWORD[((0-128))+rdi]
> >
> > +        pand    xmm8,xmm6
> >
> > +        movdqu  xmm1,XMMWORD[((32-128))+rdi]
> >
> > +        pand    xmm9,xmm6
> >
> > +        movdqu  xmm2,XMMWORD[((64-128))+rdi]
> >
> > +        pand    xmm10,xmm6
> >
> > +        movdqu  xmm5,XMMWORD[((96-128))+rdi]
> >
> > +        pand    xmm11,xmm6
> >
> > +        paddd   xmm8,xmm0
> >
> > +        movdqu  xmm0,XMMWORD[((128-128))+rdi]
> >
> > +        pand    xmm12,xmm6
> >
> > +        paddd   xmm9,xmm1
> >
> > +        movdqu  xmm1,XMMWORD[((160-128))+rdi]
> >
> > +        pand    xmm13,xmm6
> >
> > +        paddd   xmm10,xmm2
> >
> > +        movdqu  xmm2,XMMWORD[((192-128))+rdi]
> >
> > +        pand    xmm14,xmm6
> >
> > +        paddd   xmm11,xmm5
> >
> > +        movdqu  xmm5,XMMWORD[((224-128))+rdi]
> >
> > +        pand    xmm15,xmm6
> >
> > +        paddd   xmm12,xmm0
> >
> > +        paddd   xmm13,xmm1
> >
> > +        movdqu  XMMWORD[(0-128)+rdi],xmm8
> >
> > +        paddd   xmm14,xmm2
> >
> > +        movdqu  XMMWORD[(32-128)+rdi],xmm9
> >
> > +        paddd   xmm15,xmm5
> >
> > +        movdqu  XMMWORD[(64-128)+rdi],xmm10
> >
> > +        movdqu  XMMWORD[(96-128)+rdi],xmm11
> >
> > +        movdqu  XMMWORD[(128-128)+rdi],xmm12
> >
> > +        movdqu  XMMWORD[(160-128)+rdi],xmm13
> >
> > +        movdqu  XMMWORD[(192-128)+rdi],xmm14
> >
> > +        movdqu  XMMWORD[(224-128)+rdi],xmm15
> >
> > +
> >
> > +        movdqa  XMMWORD[rbx],xmm7
> >
> > +        movdqa  xmm6,XMMWORD[$L$pbswap]
> >
> > +        dec     edx
> >
> > +        jnz     NEAR $L$oop
> >
> > +
> >
> > +        mov     edx,DWORD[280+rsp]
> >
> > +        lea     rdi,[16+rdi]
> >
> > +        lea     rsi,[64+rsi]
> >
> > +        dec     edx
> >
> > +        jnz     NEAR $L$oop_grande
> >
> > +
> >
> > +$L$done:
> >
> > +        mov     rax,QWORD[272+rsp]
> >
> > +
> >
> > +        movaps  xmm6,XMMWORD[((-184))+rax]
> >
> > +        movaps  xmm7,XMMWORD[((-168))+rax]
> >
> > +        movaps  xmm8,XMMWORD[((-152))+rax]
> >
> > +        movaps  xmm9,XMMWORD[((-136))+rax]
> >
> > +        movaps  xmm10,XMMWORD[((-120))+rax]
> >
> > +        movaps  xmm11,XMMWORD[((-104))+rax]
> >
> > +        movaps  xmm12,XMMWORD[((-88))+rax]
> >
> > +        movaps  xmm13,XMMWORD[((-72))+rax]
> >
> > +        movaps  xmm14,XMMWORD[((-56))+rax]
> >
> > +        movaps  xmm15,XMMWORD[((-40))+rax]
> >
> > +        mov     rbp,QWORD[((-16))+rax]
> >
> > +
> >
> > +        mov     rbx,QWORD[((-8))+rax]
> >
> > +
> >
> > +        lea     rsp,[rax]
> >
> > +
> >
> > +$L$epilogue:
> >
> > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> >
> > +        mov     rsi,QWORD[16+rsp]
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +$L$SEH_end_sha256_multi_block:
> >
> > +
> >
> > +ALIGN   32
> >
> > +sha256_multi_block_shaext:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_sha256_multi_block_shaext:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +
> >
> > +
> >
> > +
> >
> > +_shaext_shortcut:
> >
> > +        mov     rax,rsp
> >
> > +
> >
> > +        push    rbx
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        lea     rsp,[((-168))+rsp]
> >
> > +        movaps  XMMWORD[rsp],xmm6
> >
> > +        movaps  XMMWORD[16+rsp],xmm7
> >
> > +        movaps  XMMWORD[32+rsp],xmm8
> >
> > +        movaps  XMMWORD[48+rsp],xmm9
> >
> > +        movaps  XMMWORD[(-120)+rax],xmm10
> >
> > +        movaps  XMMWORD[(-104)+rax],xmm11
> >
> > +        movaps  XMMWORD[(-88)+rax],xmm12
> >
> > +        movaps  XMMWORD[(-72)+rax],xmm13
> >
> > +        movaps  XMMWORD[(-56)+rax],xmm14
> >
> > +        movaps  XMMWORD[(-40)+rax],xmm15
> >
> > +        sub     rsp,288
> >
> > +        shl     edx,1
> >
> > +        and     rsp,-256
> >
> > +        lea     rdi,[128+rdi]
> >
> > +        mov     QWORD[272+rsp],rax
> >
> > +$L$body_shaext:
> >
> > +        lea     rbx,[256+rsp]
> >
> > +        lea     rbp,[((K256_shaext+128))]
> >
> > +
> >
> > +$L$oop_grande_shaext:
> >
> > +        mov     DWORD[280+rsp],edx
> >
> > +        xor     edx,edx
> >
> > +        mov     r8,QWORD[rsi]
> >
> > +        mov     ecx,DWORD[8+rsi]
> >
> > +        cmp     ecx,edx
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        mov     DWORD[rbx],ecx
> >
> > +        cmovle  r8,rsp
> >
> > +        mov     r9,QWORD[16+rsi]
> >
> > +        mov     ecx,DWORD[24+rsi]
> >
> > +        cmp     ecx,edx
> >
> > +        cmovg   edx,ecx
> >
> > +        test    ecx,ecx
> >
> > +        mov     DWORD[4+rbx],ecx
> >
> > +        cmovle  r9,rsp
> >
> > +        test    edx,edx
> >
> > +        jz      NEAR $L$done_shaext
> >
> > +
> >
> > +        movq    xmm12,QWORD[((0-128))+rdi]
> >
> > +        movq    xmm4,QWORD[((32-128))+rdi]
> >
> > +        movq    xmm13,QWORD[((64-128))+rdi]
> >
> > +        movq    xmm5,QWORD[((96-128))+rdi]
> >
> > +        movq    xmm8,QWORD[((128-128))+rdi]
> >
> > +        movq    xmm9,QWORD[((160-128))+rdi]
> >
> > +        movq    xmm10,QWORD[((192-128))+rdi]
> >
> > +        movq    xmm11,QWORD[((224-128))+rdi]
> >
> > +
> >
> > +        punpckldq       xmm12,xmm4
> >
> > +        punpckldq       xmm13,xmm5
> >
> > +        punpckldq       xmm8,xmm9
> >
> > +        punpckldq       xmm10,xmm11
> >
> > +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
> >
> > +
> >
> > +        movdqa  xmm14,xmm12
> >
> > +        movdqa  xmm15,xmm13
> >
> > +        punpcklqdq      xmm12,xmm8
> >
> > +        punpcklqdq      xmm13,xmm10
> >
> > +        punpckhqdq      xmm14,xmm8
> >
> > +        punpckhqdq      xmm15,xmm10
> >
> > +
> >
> > +        pshufd  xmm12,xmm12,27
> >
> > +        pshufd  xmm13,xmm13,27
> >
> > +        pshufd  xmm14,xmm14,27
> >
> > +        pshufd  xmm15,xmm15,27
> >
> > +        jmp     NEAR $L$oop_shaext
> >
> > +
> >
> > +ALIGN   32
> >
> > +$L$oop_shaext:
> >
> > +        movdqu  xmm4,XMMWORD[r8]
> >
> > +        movdqu  xmm8,XMMWORD[r9]
> >
> > +        movdqu  xmm5,XMMWORD[16+r8]
> >
> > +        movdqu  xmm9,XMMWORD[16+r9]
> >
> > +        movdqu  xmm6,XMMWORD[32+r8]
> >
> > +DB      102,15,56,0,227
> >
> > +        movdqu  xmm10,XMMWORD[32+r9]
> >
> > +DB      102,68,15,56,0,195
> >
> > +        movdqu  xmm7,XMMWORD[48+r8]
> >
> > +        lea     r8,[64+r8]
> >
> > +        movdqu  xmm11,XMMWORD[48+r9]
> >
> > +        lea     r9,[64+r9]
> >
> > +
> >
> > +        movdqa  xmm0,XMMWORD[((0-128))+rbp]
> >
> > +DB      102,15,56,0,235
> >
> > +        paddd   xmm0,xmm4
> >
> > +        pxor    xmm4,xmm12
> >
> > +        movdqa  xmm1,xmm0
> >
> > +        movdqa  xmm2,XMMWORD[((0-128))+rbp]
> >
> > +DB      102,68,15,56,0,203
> >
> > +        paddd   xmm2,xmm8
> >
> > +        movdqa  XMMWORD[80+rsp],xmm13
> >
> > +DB      69,15,56,203,236
> >
> > +        pxor    xmm8,xmm14
> >
> > +        movdqa  xmm0,xmm2
> >
> > +        movdqa  XMMWORD[112+rsp],xmm15
> >
> > +DB      69,15,56,203,254
> >
> > +        pshufd  xmm0,xmm1,0x0e
> >
> > +        pxor    xmm4,xmm12
> >
> > +        movdqa  XMMWORD[64+rsp],xmm12
> >
> > +DB      69,15,56,203,229
> >
> > +        pshufd  xmm0,xmm2,0x0e
> >
> > +        pxor    xmm8,xmm14
> >
> > +        movdqa  XMMWORD[96+rsp],xmm14
> >
> > +        movdqa  xmm1,XMMWORD[((16-128))+rbp]
> >
> > +        paddd   xmm1,xmm5
> >
> > +DB      102,15,56,0,243
> >
> > +DB      69,15,56,203,247
> >
> > +
> >
> > +        movdqa  xmm0,xmm1
> >
> > +        movdqa  xmm2,XMMWORD[((16-128))+rbp]
> >
> > +        paddd   xmm2,xmm9
> >
> > +DB      69,15,56,203,236
> >
> > +        movdqa  xmm0,xmm2
> >
> > +        prefetcht0      [127+r8]
> >
> > +DB      102,15,56,0,251
> >
> > +DB      102,68,15,56,0,211
> >
> > +        prefetcht0      [127+r9]
> >
> > +DB      69,15,56,203,254
> >
> > +        pshufd  xmm0,xmm1,0x0e
> >
> > +DB      102,68,15,56,0,219
> >
> > +DB      15,56,204,229
> >
> > +DB      69,15,56,203,229
> >
> > +        pshufd  xmm0,xmm2,0x0e
> >
> > +        movdqa  xmm1,XMMWORD[((32-128))+rbp]
> >
> > +        paddd   xmm1,xmm6
> >
> > +DB      69,15,56,203,247
> >
> > +
> >
> > +        movdqa  xmm0,xmm1
> >
> > +        movdqa  xmm2,XMMWORD[((32-128))+rbp]
> >
> > +        paddd   xmm2,xmm10
> >
> > +DB      69,15,56,203,236
> >
> > +DB      69,15,56,204,193
> >
> > +        movdqa  xmm0,xmm2
> >
> > +        movdqa  xmm3,xmm7
> >
> > +DB      69,15,56,203,254
> >
> > +        pshufd  xmm0,xmm1,0x0e
> >
> > +DB      102,15,58,15,222,4
> >
> > +        paddd   xmm4,xmm3
> >
> > +        movdqa  xmm3,xmm11
> >
> > +DB      102,65,15,58,15,218,4
> >
> > +DB      15,56,204,238
> >
> > +DB      69,15,56,203,229
> >
> > +        pshufd  xmm0,xmm2,0x0e
> >
> > +        movdqa  xmm1,XMMWORD[((48-128))+rbp]
> >
> > +        paddd   xmm1,xmm7
> >
> > +DB      69,15,56,203,247
> >
> > +DB      69,15,56,204,202
> >
> > +
> >
> > +        movdqa  xmm0,xmm1
> >
> > +        movdqa  xmm2,XMMWORD[((48-128))+rbp]
> >
> > +        paddd   xmm8,xmm3
> >
> > +        paddd   xmm2,xmm11
> >
> > +DB      15,56,205,231
> >
> > +DB      69,15,56,203,236
> >
> > +        movdqa  xmm0,xmm2
> >
> > +        movdqa  xmm3,xmm4
> >
> > +DB      102,15,58,15,223,4
> >
> > +DB      69,15,56,203,254
> >
> > +DB      69,15,56,205,195
> >
> > +        pshufd  xmm0,xmm1,0x0e
> >
> > +        paddd   xmm5,xmm3
> >
> > +        movdqa  xmm3,xmm8
> >
> > +DB      102,65,15,58,15,219,4
> >
> > +DB      15,56,204,247
> >
> > +DB      69,15,56,203,229
> >
> > +        pshufd  xmm0,xmm2,0x0e
> >
> > +        movdqa  xmm1,XMMWORD[((64-128))+rbp]
> >
> > +        paddd   xmm1,xmm4
> >
> > +DB      69,15,56,203,247
> >
> > +DB      69,15,56,204,211
> >
> > +        movdqa  xmm0,xmm1
> >
> > +        movdqa  xmm2,XMMWORD[((64-128))+rbp]
> >
> > +        paddd   xmm9,xmm3
> >
> > +        paddd   xmm2,xmm8
> >
> > +DB      15,56,205,236
> >
> > +DB      69,15,56,203,236
> >
> > +        movdqa  xmm0,xmm2
> >
> > +        movdqa  xmm3,xmm5
> >
> > +DB      102,15,58,15,220,4
> >
> > +DB      69,15,56,203,254
> >
> > +DB      69,15,56,205,200
> >
> > +        pshufd  xmm0,xmm1,0x0e
> >
> > +        paddd   xmm6,xmm3
> >
> > +        movdqa  xmm3,xmm9
> >
> > +DB      102,65,15,58,15,216,4
> >
> > +DB      15,56,204,252
> >
> > +DB      69,15,56,203,229
> >
> > +        pshufd  xmm0,xmm2,0x0e
> >
> > +        movdqa  xmm1,XMMWORD[((80-128))+rbp]
> >
> > +        paddd   xmm1,xmm5
> >
> > +DB      69,15,56,203,247
> >
> > +DB      69,15,56,204,216
> >
> > +        movdqa  xmm0,xmm1
> >
> > +        movdqa  xmm2,XMMWORD[((80-128))+rbp]
> >
> > +        paddd   xmm10,xmm3
> >
> > +        paddd   xmm2,xmm9
> >
> > +DB      15,56,205,245
> >
> > +DB      69,15,56,203,236
> >
> > +        movdqa  xmm0,xmm2
> >
> > +        movdqa  xmm3,xmm6
> >
> > +DB      102,15,58,15,221,4
> >
> > +DB      69,15,56,203,254
> >
> > +DB      69,15,56,205,209
> >
> > +        pshufd  xmm0,xmm1,0x0e
> >
> > +        paddd   xmm7,xmm3
> >
> > +        movdqa  xmm3,xmm10
> >
> > +DB      102,65,15,58,15,217,4
> >
> > +DB      15,56,204,229
> >
> > +DB      69,15,56,203,229
> >
> > +        pshufd  xmm0,xmm2,0x0e
> >
> > +        movdqa  xmm1,XMMWORD[((96-128))+rbp]
> >
> > +        paddd   xmm1,xmm6
> >
> > +DB      69,15,56,203,247
> >
> > +DB      69,15,56,204,193
> >
> > +        movdqa  xmm0,xmm1
> >
> > +        movdqa  xmm2,XMMWORD[((96-128))+rbp]
> >
> > +        paddd   xmm11,xmm3
> >
> > +        paddd   xmm2,xmm10
> >
> > +DB      15,56,205,254
> >
> > +DB      69,15,56,203,236
> >
> > +        movdqa  xmm0,xmm2
> >
> > +        movdqa  xmm3,xmm7
> >
> > +DB      102,15,58,15,222,4
> >
> > +DB      69,15,56,203,254
> >
> > +DB      69,15,56,205,218
> >
> > +        pshufd  xmm0,xmm1,0x0e
> >
> > +        paddd   xmm4,xmm3
> >
> > +        movdqa  xmm3,xmm11
> >
> > +DB      102,65,15,58,15,218,4
> >
> > +DB      15,56,204,238
> >
> > +DB      69,15,56,203,229
> >
> > +        pshufd  xmm0,xmm2,0x0e
> >
> > +        movdqa  xmm1,XMMWORD[((112-128))+rbp]
> >
> > +        paddd   xmm1,xmm7
> >
> > +DB      69,15,56,203,247
> >
> > +DB      69,15,56,204,202
> >
> > +        movdqa  xmm0,xmm1
> >
> > +        movdqa  xmm2,XMMWORD[((112-128))+rbp]
> >
> > +        paddd   xmm8,xmm3
> >
> > +        paddd   xmm2,xmm11
> >
> > +DB      15,56,205,231
> >
> > +DB      69,15,56,203,236
> >
> > +        movdqa  xmm0,xmm2
> >
> > +        movdqa  xmm3,xmm4
> >
> > +DB      102,15,58,15,223,4
> >
> > +DB      69,15,56,203,254
> >
> > +DB      69,15,56,205,195
> >
> > +        pshufd  xmm0,xmm1,0x0e
> >
> > +        paddd   xmm5,xmm3
> >
> > +        movdqa  xmm3,xmm8
> >
> > +DB      102,65,15,58,15,219,4
> >
> > +DB      15,56,204,247
> >
> > +DB      69,15,56,203,229
> >
> > +        pshufd  xmm0,xmm2,0x0e
> >
> > +        movdqa  xmm1,XMMWORD[((128-128))+rbp]
> >
> > +        paddd   xmm1,xmm4
> >
> > +DB      69,15,56,203,247
> >
> > +DB      69,15,56,204,211
> >
> > +        movdqa  xmm0,xmm1
> >
> > +        movdqa  xmm2,XMMWORD[((128-128))+rbp]
> >
> > +        paddd   xmm9,xmm3
> >
> > +        paddd   xmm2,xmm8
> >
> > +DB      15,56,205,236
> >
> > +DB      69,15,56,203,236
> >
> > +        movdqa  xmm0,xmm2
> >
> > +        movdqa  xmm3,xmm5
> >
> > +DB      102,15,58,15,220,4
> >
> > +DB      69,15,56,203,254
> >
> > +DB      69,15,56,205,200
> >
> > +        pshufd  xmm0,xmm1,0x0e
> >
> > +        paddd   xmm6,xmm3
> >
> > +        movdqa  xmm3,xmm9
> >
> > +DB      102,65,15,58,15,216,4
> >
> > +DB      15,56,204,252
> >
> > +DB      69,15,56,203,229
> >
> > +        pshufd  xmm0,xmm2,0x0e
> >
> > +        movdqa  xmm1,XMMWORD[((144-128))+rbp]
> >
> > +        paddd   xmm1,xmm5
> >
> > +DB      69,15,56,203,247
> >
> > +DB      69,15,56,204,216
> >
> > +        movdqa  xmm0,xmm1
> >
> > +        movdqa  xmm2,XMMWORD[((144-128))+rbp]
> >
> > +        paddd   xmm10,xmm3
> >
> > +        paddd   xmm2,xmm9
> >
> > +DB      15,56,205,245
> >
> > +DB      69,15,56,203,236
> >
> > +        movdqa  xmm0,xmm2
> >
> > +        movdqa  xmm3,xmm6
> >
> > +DB      102,15,58,15,221,4
> >
> > +DB      69,15,56,203,254
> >
> > +DB      69,15,56,205,209
> >
> > +        pshufd  xmm0,xmm1,0x0e
> >
> > +        paddd   xmm7,xmm3
> >
> > +        movdqa  xmm3,xmm10
> >
> > +DB      102,65,15,58,15,217,4
> >
> > +DB      15,56,204,229
> >
> > +DB      69,15,56,203,229
> >
> > +        pshufd  xmm0,xmm2,0x0e
> >
> > +        movdqa  xmm1,XMMWORD[((160-128))+rbp]
> >
> > +        paddd   xmm1,xmm6
> >
> > +DB      69,15,56,203,247
> >
> > +DB      69,15,56,204,193
> >
> > +        movdqa  xmm0,xmm1
> >
> > +        movdqa  xmm2,XMMWORD[((160-128))+rbp]
> >
> > +        paddd   xmm11,xmm3
> >
> > +        paddd   xmm2,xmm10
> >
> > +DB      15,56,205,254
> >
> > +DB      69,15,56,203,236
> >
> > +        movdqa  xmm0,xmm2
> >
> > +        movdqa  xmm3,xmm7
> >
> > +DB      102,15,58,15,222,4
> >
> > +DB      69,15,56,203,254
> >
> > +DB      69,15,56,205,218
> >
> > +        pshufd  xmm0,xmm1,0x0e
> >
> > +        paddd   xmm4,xmm3
> >
> > +        movdqa  xmm3,xmm11
> >
> > +DB      102,65,15,58,15,218,4
> >
> > +DB      15,56,204,238
> >
> > +DB      69,15,56,203,229
> >
> > +        pshufd  xmm0,xmm2,0x0e
> >
> > +        movdqa  xmm1,XMMWORD[((176-128))+rbp]
> >
> > +        paddd   xmm1,xmm7
> >
> > +DB      69,15,56,203,247
> >
> > +DB      69,15,56,204,202
> >
> > +        movdqa  xmm0,xmm1
> >
> > +        movdqa  xmm2,XMMWORD[((176-128))+rbp]
> >
> > +        paddd   xmm8,xmm3
> >
> > +        paddd   xmm2,xmm11
> >
> > +DB      15,56,205,231
> >
> > +DB      69,15,56,203,236
> >
> > +        movdqa  xmm0,xmm2
> >
> > +        movdqa  xmm3,xmm4
> >
> > +DB      102,15,58,15,223,4
> >
> > +DB      69,15,56,203,254
> >
> > +DB      69,15,56,205,195
> >
> > +        pshufd  xmm0,xmm1,0x0e
> >
> > +        paddd   xmm5,xmm3
> >
> > +        movdqa  xmm3,xmm8
> >
> > +DB      102,65,15,58,15,219,4
> >
> > +DB      15,56,204,247
> >
> > +DB      69,15,56,203,229
> >
> > +        pshufd  xmm0,xmm2,0x0e
> >
> > +        movdqa  xmm1,XMMWORD[((192-128))+rbp]
> >
> > +        paddd   xmm1,xmm4
> >
> > +DB      69,15,56,203,247
> >
> > +DB      69,15,56,204,211
> >
> > +        movdqa  xmm0,xmm1
> >
> > +        movdqa  xmm2,XMMWORD[((192-128))+rbp]
> >
> > +        paddd   xmm9,xmm3
> >
> > +        paddd   xmm2,xmm8
> >
> > +DB      15,56,205,236
> >
> > +DB      69,15,56,203,236
> >
> > +        movdqa  xmm0,xmm2
> >
> > +        movdqa  xmm3,xmm5
> >
> > +DB      102,15,58,15,220,4
> >
> > +DB      69,15,56,203,254
> >
> > +DB      69,15,56,205,200
> >
> > +        pshufd  xmm0,xmm1,0x0e
> >
> > +        paddd   xmm6,xmm3
> >
> > +        movdqa  xmm3,xmm9
> >
> > +DB      102,65,15,58,15,216,4
> >
> > +DB      15,56,204,252
> >
> > +DB      69,15,56,203,229
> >
> > +        pshufd  xmm0,xmm2,0x0e
> >
> > +        movdqa  xmm1,XMMWORD[((208-128))+rbp]
> >
> > +        paddd   xmm1,xmm5
> >
> > +DB      69,15,56,203,247
> >
> > +DB      69,15,56,204,216
> >
> > +        movdqa  xmm0,xmm1
> >
> > +        movdqa  xmm2,XMMWORD[((208-128))+rbp]
> >
> > +        paddd   xmm10,xmm3
> >
> > +        paddd   xmm2,xmm9
> >
> > +DB      15,56,205,245
> >
> > +DB      69,15,56,203,236
> >
> > +        movdqa  xmm0,xmm2
> >
> > +        movdqa  xmm3,xmm6
> >
> > +DB      102,15,58,15,221,4
> >
> > +DB      69,15,56,203,254
> >
> > +DB      69,15,56,205,209
> >
> > +        pshufd  xmm0,xmm1,0x0e
> >
> > +        paddd   xmm7,xmm3
> >
> > +        movdqa  xmm3,xmm10
> >
> > +DB      102,65,15,58,15,217,4
> >
> > +        nop
> >
> > +DB      69,15,56,203,229
> >
> > +        pshufd  xmm0,xmm2,0x0e
> >
> > +        movdqa  xmm1,XMMWORD[((224-128))+rbp]
> >
> > +        paddd   xmm1,xmm6
> >
> > +DB      69,15,56,203,247
> >
> > +
> >
> > +        movdqa  xmm0,xmm1
> >
> > +        movdqa  xmm2,XMMWORD[((224-128))+rbp]
> >
> > +        paddd   xmm11,xmm3
> >
> > +        paddd   xmm2,xmm10
> >
> > +DB      15,56,205,254
> >
> > +        nop
> >
> > +DB      69,15,56,203,236
> >
> > +        movdqa  xmm0,xmm2
> >
> > +        mov     ecx,1
> >
> > +        pxor    xmm6,xmm6
> >
> > +DB      69,15,56,203,254
> >
> > +DB      69,15,56,205,218
> >
> > +        pshufd  xmm0,xmm1,0x0e
> >
> > +        movdqa  xmm1,XMMWORD[((240-128))+rbp]
> >
> > +        paddd   xmm1,xmm7
> >
> > +        movq    xmm7,QWORD[rbx]
> >
> > +        nop
> >
> > +DB      69,15,56,203,229
> >
> > +        pshufd  xmm0,xmm2,0x0e
> >
> > +        movdqa  xmm2,XMMWORD[((240-128))+rbp]
> >
> > +        paddd   xmm2,xmm11
> >
> > +DB      69,15,56,203,247
> >
> > +
> >
> > +        movdqa  xmm0,xmm1
> >
> > +        cmp     ecx,DWORD[rbx]
> >
> > +        cmovge  r8,rsp
> >
> > +        cmp     ecx,DWORD[4+rbx]
> >
> > +        cmovge  r9,rsp
> >
> > +        pshufd  xmm9,xmm7,0x00
> >
> > +DB      69,15,56,203,236
> >
> > +        movdqa  xmm0,xmm2
> >
> > +        pshufd  xmm10,xmm7,0x55
> >
> > +        movdqa  xmm11,xmm7
> >
> > +DB      69,15,56,203,254
> >
> > +        pshufd  xmm0,xmm1,0x0e
> >
> > +        pcmpgtd xmm9,xmm6
> >
> > +        pcmpgtd xmm10,xmm6
> >
> > +DB      69,15,56,203,229
> >
> > +        pshufd  xmm0,xmm2,0x0e
> >
> > +        pcmpgtd xmm11,xmm6
> >
> > +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
> >
> > +DB      69,15,56,203,247
> >
> > +
> >
> > +        pand    xmm13,xmm9
> >
> > +        pand    xmm15,xmm10
> >
> > +        pand    xmm12,xmm9
> >
> > +        pand    xmm14,xmm10
> >
> > +        paddd   xmm11,xmm7
> >
> > +
> >
> > +        paddd   xmm13,XMMWORD[80+rsp]
> >
> > +        paddd   xmm15,XMMWORD[112+rsp]
> >
> > +        paddd   xmm12,XMMWORD[64+rsp]
> >
> > +        paddd   xmm14,XMMWORD[96+rsp]
> >
> > +
> >
> > +        movq    QWORD[rbx],xmm11
> >
> > +        dec     edx
> >
> > +        jnz     NEAR $L$oop_shaext
> >
> > +
> >
> > +        mov     edx,DWORD[280+rsp]
> >
> > +
> >
> > +        pshufd  xmm12,xmm12,27
> >
> > +        pshufd  xmm13,xmm13,27
> >
> > +        pshufd  xmm14,xmm14,27
> >
> > +        pshufd  xmm15,xmm15,27
> >
> > +
> >
> > +        movdqa  xmm5,xmm12
> >
> > +        movdqa  xmm6,xmm13
> >
> > +        punpckldq       xmm12,xmm14
> >
> > +        punpckhdq       xmm5,xmm14
> >
> > +        punpckldq       xmm13,xmm15
> >
> > +        punpckhdq       xmm6,xmm15
> >
> > +
> >
> > +        movq    QWORD[(0-128)+rdi],xmm12
> >
> > +        psrldq  xmm12,8
> >
> > +        movq    QWORD[(128-128)+rdi],xmm5
> >
> > +        psrldq  xmm5,8
> >
> > +        movq    QWORD[(32-128)+rdi],xmm12
> >
> > +        movq    QWORD[(160-128)+rdi],xmm5
> >
> > +
> >
> > +        movq    QWORD[(64-128)+rdi],xmm13
> >
> > +        psrldq  xmm13,8
> >
> > +        movq    QWORD[(192-128)+rdi],xmm6
> >
> > +        psrldq  xmm6,8
> >
> > +        movq    QWORD[(96-128)+rdi],xmm13
> >
> > +        movq    QWORD[(224-128)+rdi],xmm6
> >
> > +
> >
> > +        lea     rdi,[8+rdi]
> >
> > +        lea     rsi,[32+rsi]
> >
> > +        dec     edx
> >
> > +        jnz     NEAR $L$oop_grande_shaext
> >
> > +
> >
> > +$L$done_shaext:
> >
> > +
> >
> > +        movaps  xmm6,XMMWORD[((-184))+rax]
> >
> > +        movaps  xmm7,XMMWORD[((-168))+rax]
> >
> > +        movaps  xmm8,XMMWORD[((-152))+rax]
> >
> > +        movaps  xmm9,XMMWORD[((-136))+rax]
> >
> > +        movaps  xmm10,XMMWORD[((-120))+rax]
> >
> > +        movaps  xmm11,XMMWORD[((-104))+rax]
> >
> > +        movaps  xmm12,XMMWORD[((-88))+rax]
> >
> > +        movaps  xmm13,XMMWORD[((-72))+rax]
> >
> > +        movaps  xmm14,XMMWORD[((-56))+rax]
> >
> > +        movaps  xmm15,XMMWORD[((-40))+rax]
> >
> > +        mov     rbp,QWORD[((-16))+rax]
> >
> > +
> >
> > +        mov     rbx,QWORD[((-8))+rax]
> >
> > +
> >
> > +        lea     rsp,[rax]
> >
> > +
> >
> > +$L$epilogue_shaext:
> >
> > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> >
> > +        mov     rsi,QWORD[16+rsp]
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +$L$SEH_end_sha256_multi_block_shaext:
> >
> > +ALIGN   256
> >
> > +K256:
> >
> > +        DD      1116352408,1116352408,1116352408,1116352408
> >
> > +        DD      1116352408,1116352408,1116352408,1116352408
> >
> > +        DD      1899447441,1899447441,1899447441,1899447441
> >
> > +        DD      1899447441,1899447441,1899447441,1899447441
> >
> > +        DD      3049323471,3049323471,3049323471,3049323471
> >
> > +        DD      3049323471,3049323471,3049323471,3049323471
> >
> > +        DD      3921009573,3921009573,3921009573,3921009573
> >
> > +        DD      3921009573,3921009573,3921009573,3921009573
> >
> > +        DD      961987163,961987163,961987163,961987163
> >
> > +        DD      961987163,961987163,961987163,961987163
> >
> > +        DD      1508970993,1508970993,1508970993,1508970993
> >
> > +        DD      1508970993,1508970993,1508970993,1508970993
> >
> > +        DD      2453635748,2453635748,2453635748,2453635748
> >
> > +        DD      2453635748,2453635748,2453635748,2453635748
> >
> > +        DD      2870763221,2870763221,2870763221,2870763221
> >
> > +        DD      2870763221,2870763221,2870763221,2870763221
> >
> > +        DD      3624381080,3624381080,3624381080,3624381080
> >
> > +        DD      3624381080,3624381080,3624381080,3624381080
> >
> > +        DD      310598401,310598401,310598401,310598401
> >
> > +        DD      310598401,310598401,310598401,310598401
> >
> > +        DD      607225278,607225278,607225278,607225278
> >
> > +        DD      607225278,607225278,607225278,607225278
> >
> > +        DD      1426881987,1426881987,1426881987,1426881987
> >
> > +        DD      1426881987,1426881987,1426881987,1426881987
> >
> > +        DD      1925078388,1925078388,1925078388,1925078388
> >
> > +        DD      1925078388,1925078388,1925078388,1925078388
> >
> > +        DD      2162078206,2162078206,2162078206,2162078206
> >
> > +        DD      2162078206,2162078206,2162078206,2162078206
> >
> > +        DD      2614888103,2614888103,2614888103,2614888103
> >
> > +        DD      2614888103,2614888103,2614888103,2614888103
> >
> > +        DD      3248222580,3248222580,3248222580,3248222580
> >
> > +        DD      3248222580,3248222580,3248222580,3248222580
> >
> > +        DD      3835390401,3835390401,3835390401,3835390401
> >
> > +        DD      3835390401,3835390401,3835390401,3835390401
> >
> > +        DD      4022224774,4022224774,4022224774,4022224774
> >
> > +        DD      4022224774,4022224774,4022224774,4022224774
> >
> > +        DD      264347078,264347078,264347078,264347078
> >
> > +        DD      264347078,264347078,264347078,264347078
> >
> > +        DD      604807628,604807628,604807628,604807628
> >
> > +        DD      604807628,604807628,604807628,604807628
> >
> > +        DD      770255983,770255983,770255983,770255983
> >
> > +        DD      770255983,770255983,770255983,770255983
> >
> > +        DD      1249150122,1249150122,1249150122,1249150122
> >
> > +        DD      1249150122,1249150122,1249150122,1249150122
> >
> > +        DD      1555081692,1555081692,1555081692,1555081692
> >
> > +        DD      1555081692,1555081692,1555081692,1555081692
> >
> > +        DD      1996064986,1996064986,1996064986,1996064986
> >
> > +        DD      1996064986,1996064986,1996064986,1996064986
> >
> > +        DD      2554220882,2554220882,2554220882,2554220882
> >
> > +        DD      2554220882,2554220882,2554220882,2554220882
> >
> > +        DD      2821834349,2821834349,2821834349,2821834349
> >
> > +        DD      2821834349,2821834349,2821834349,2821834349
> >
> > +        DD      2952996808,2952996808,2952996808,2952996808
> >
> > +        DD      2952996808,2952996808,2952996808,2952996808
> >
> > +        DD      3210313671,3210313671,3210313671,3210313671
> >
> > +        DD      3210313671,3210313671,3210313671,3210313671
> >
> > +        DD      3336571891,3336571891,3336571891,3336571891
> >
> > +        DD      3336571891,3336571891,3336571891,3336571891
> >
> > +        DD      3584528711,3584528711,3584528711,3584528711
> >
> > +        DD      3584528711,3584528711,3584528711,3584528711
> >
> > +        DD      113926993,113926993,113926993,113926993
> >
> > +        DD      113926993,113926993,113926993,113926993
> >
> > +        DD      338241895,338241895,338241895,338241895
> >
> > +        DD      338241895,338241895,338241895,338241895
> >
> > +        DD      666307205,666307205,666307205,666307205
> >
> > +        DD      666307205,666307205,666307205,666307205
> >
> > +        DD      773529912,773529912,773529912,773529912
> >
> > +        DD      773529912,773529912,773529912,773529912
> >
> > +        DD      1294757372,1294757372,1294757372,1294757372
> >
> > +        DD      1294757372,1294757372,1294757372,1294757372
> >
> > +        DD      1396182291,1396182291,1396182291,1396182291
> >
> > +        DD      1396182291,1396182291,1396182291,1396182291
> >
> > +        DD      1695183700,1695183700,1695183700,1695183700
> >
> > +        DD      1695183700,1695183700,1695183700,1695183700
> >
> > +        DD      1986661051,1986661051,1986661051,1986661051
> >
> > +        DD      1986661051,1986661051,1986661051,1986661051
> >
> > +        DD      2177026350,2177026350,2177026350,2177026350
> >
> > +        DD      2177026350,2177026350,2177026350,2177026350
> >
> > +        DD      2456956037,2456956037,2456956037,2456956037
> >
> > +        DD      2456956037,2456956037,2456956037,2456956037
> >
> > +        DD      2730485921,2730485921,2730485921,2730485921
> >
> > +        DD      2730485921,2730485921,2730485921,2730485921
> >
> > +        DD      2820302411,2820302411,2820302411,2820302411
> >
> > +        DD      2820302411,2820302411,2820302411,2820302411
> >
> > +        DD      3259730800,3259730800,3259730800,3259730800
> >
> > +        DD      3259730800,3259730800,3259730800,3259730800
> >
> > +        DD      3345764771,3345764771,3345764771,3345764771
> >
> > +        DD      3345764771,3345764771,3345764771,3345764771
> >
> > +        DD      3516065817,3516065817,3516065817,3516065817
> >
> > +        DD      3516065817,3516065817,3516065817,3516065817
> >
> > +        DD      3600352804,3600352804,3600352804,3600352804
> >
> > +        DD      3600352804,3600352804,3600352804,3600352804
> >
> > +        DD      4094571909,4094571909,4094571909,4094571909
> >
> > +        DD      4094571909,4094571909,4094571909,4094571909
> >
> > +        DD      275423344,275423344,275423344,275423344
> >
> > +        DD      275423344,275423344,275423344,275423344
> >
> > +        DD      430227734,430227734,430227734,430227734
> >
> > +        DD      430227734,430227734,430227734,430227734
> >
> > +        DD      506948616,506948616,506948616,506948616
> >
> > +        DD      506948616,506948616,506948616,506948616
> >
> > +        DD      659060556,659060556,659060556,659060556
> >
> > +        DD      659060556,659060556,659060556,659060556
> >
> > +        DD      883997877,883997877,883997877,883997877
> >
> > +        DD      883997877,883997877,883997877,883997877
> >
> > +        DD      958139571,958139571,958139571,958139571
> >
> > +        DD      958139571,958139571,958139571,958139571
> >
> > +        DD      1322822218,1322822218,1322822218,1322822218
> >
> > +        DD      1322822218,1322822218,1322822218,1322822218
> >
> > +        DD      1537002063,1537002063,1537002063,1537002063
> >
> > +        DD      1537002063,1537002063,1537002063,1537002063
> >
> > +        DD      1747873779,1747873779,1747873779,1747873779
> >
> > +        DD      1747873779,1747873779,1747873779,1747873779
> >
> > +        DD      1955562222,1955562222,1955562222,1955562222
> >
> > +        DD      1955562222,1955562222,1955562222,1955562222
> >
> > +        DD      2024104815,2024104815,2024104815,2024104815
> >
> > +        DD      2024104815,2024104815,2024104815,2024104815
> >
> > +        DD      2227730452,2227730452,2227730452,2227730452
> >
> > +        DD      2227730452,2227730452,2227730452,2227730452
> >
> > +        DD      2361852424,2361852424,2361852424,2361852424
> >
> > +        DD      2361852424,2361852424,2361852424,2361852424
> >
> > +        DD      2428436474,2428436474,2428436474,2428436474
> >
> > +        DD      2428436474,2428436474,2428436474,2428436474
> >
> > +        DD      2756734187,2756734187,2756734187,2756734187
> >
> > +        DD      2756734187,2756734187,2756734187,2756734187
> >
> > +        DD      3204031479,3204031479,3204031479,3204031479
> >
> > +        DD      3204031479,3204031479,3204031479,3204031479
> >
> > +        DD      3329325298,3329325298,3329325298,3329325298
> >
> > +        DD      3329325298,3329325298,3329325298,3329325298
> >
> > +$L$pbswap:
> >
> > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> >
> > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> >
> > +K256_shaext:
> >
> > +        DD      0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
> >
> > +        DD      0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
> >
> > +        DD      0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
> >
> > +        DD      0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
> >
> > +        DD      0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
> >
> > +        DD      0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
> >
> > +        DD      0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
> >
> > +        DD      0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
> >
> > +        DD      0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
> >
> > +        DD      0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
> >
> > +        DD      0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
> >
> > +        DD      0xd192e819,0xd6990624,0xf40e3585,0x106aa070
> >
> > +        DD      0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
> >
> > +        DD      0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
> >
> > +        DD      0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
> >
> > +        DD      0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
> >
> > +DB      83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111
> >
> > +DB      99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114
> >
> > +DB      32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71
> >
> > +DB      65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112
> >
> > +DB      101,110,115,115,108,46,111,114,103,62,0
> >
> > +EXTERN  __imp_RtlVirtualUnwind
> >
> > +
> >
> > +ALIGN   16
> >
> > +se_handler:
> >
> > +        push    rsi
> >
> > +        push    rdi
> >
> > +        push    rbx
> >
> > +        push    rbp
> >
> > +        push    r12
> >
> > +        push    r13
> >
> > +        push    r14
> >
> > +        push    r15
> >
> > +        pushfq
> >
> > +        sub     rsp,64
> >
> > +
> >
> > +        mov     rax,QWORD[120+r8]
> >
> > +        mov     rbx,QWORD[248+r8]
> >
> > +
> >
> > +        mov     rsi,QWORD[8+r9]
> >
> > +        mov     r11,QWORD[56+r9]
> >
> > +
> >
> > +        mov     r10d,DWORD[r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$in_prologue
> >
> > +
> >
> > +        mov     rax,QWORD[152+r8]
> >
> > +
> >
> > +        mov     r10d,DWORD[4+r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jae     NEAR $L$in_prologue
> >
> > +
> >
> > +        mov     rax,QWORD[272+rax]
> >
> > +
> >
> > +        mov     rbx,QWORD[((-8))+rax]
> >
> > +        mov     rbp,QWORD[((-16))+rax]
> >
> > +        mov     QWORD[144+r8],rbx
> >
> > +        mov     QWORD[160+r8],rbp
> >
> > +
> >
> > +        lea     rsi,[((-24-160))+rax]
> >
> > +        lea     rdi,[512+r8]
> >
> > +        mov     ecx,20
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +$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[40+r9]
> >
> > +        mov     rsi,r8
> >
> > +        mov     ecx,154
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +        mov     rsi,r9
> >
> > +        xor     rcx,rcx
> >
> > +        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
> >
> > +        popfq
> >
> > +        pop     r15
> >
> > +        pop     r14
> >
> > +        pop     r13
> >
> > +        pop     r12
> >
> > +        pop     rbp
> >
> > +        pop     rbx
> >
> > +        pop     rdi
> >
> > +        pop     rsi
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +section .pdata rdata align=4
> >
> > +ALIGN   4
> >
> > +        DD      $L$SEH_begin_sha256_multi_block wrt ..imagebase
> >
> > +        DD      $L$SEH_end_sha256_multi_block wrt ..imagebase
> >
> > +        DD      $L$SEH_info_sha256_multi_block wrt ..imagebase
> >
> > +        DD      $L$SEH_begin_sha256_multi_block_shaext wrt ..imagebase
> >
> > +        DD      $L$SEH_end_sha256_multi_block_shaext wrt ..imagebase
> >
> > +        DD      $L$SEH_info_sha256_multi_block_shaext wrt ..imagebase
> >
> > +section .xdata rdata align=8
> >
> > +ALIGN   8
> >
> > +$L$SEH_info_sha256_multi_block:
> >
> > +DB      9,0,0,0
> >
> > +        DD      se_handler wrt ..imagebase
> >
> > +        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
> >
> > +$L$SEH_info_sha256_multi_block_shaext:
> >
> > +DB      9,0,0,0
> >
> > +        DD      se_handler wrt ..imagebase
> >
> > +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
> > wrt ..imagebase
> >
> > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
> > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
> > new file mode 100644
> > index 0000000000..70e49862a3
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
> > @@ -0,0 +1,3313 @@
> > +; WARNING: do not edit!
> >
> > +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
> >
> > +;
> >
> > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.
> >
> > +;
> >
> > +; Licensed under the OpenSSL license (the "License").  You may not use
> >
> > +; this file except in compliance with the License.  You can obtain a copy
> >
> > +; in the file LICENSE in the source distribution or at
> >
> > +; https://www.openssl.org/source/license.html
> >
> > +
> >
> > +default rel
> >
> > +%define XMMWORD
> >
> > +%define YMMWORD
> >
> > +%define ZMMWORD
> >
> > +section .text code align=64
> >
> > +
> >
> > +
> >
> > +EXTERN  OPENSSL_ia32cap_P
> >
> > +global  sha256_block_data_order
> >
> > +
> >
> > +ALIGN   16
> >
> > +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:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +
> >
> > +
> >
> > +
> >
> > +        lea     r11,[OPENSSL_ia32cap_P]
> >
> > +        mov     r9d,DWORD[r11]
> >
> > +        mov     r10d,DWORD[4+r11]
> >
> > +        mov     r11d,DWORD[8+r11]
> >
> > +        test    r11d,536870912
> >
> > +        jnz     NEAR _shaext_shortcut
> >
> > +        test    r10d,512
> >
> > +        jnz     NEAR $L$ssse3_shortcut
> >
> > +        mov     rax,rsp
> >
> > +
> >
> > +        push    rbx
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        push    r12
> >
> > +
> >
> > +        push    r13
> >
> > +
> >
> > +        push    r14
> >
> > +
> >
> > +        push    r15
> >
> > +
> >
> > +        shl     rdx,4
> >
> > +        sub     rsp,16*4+4*8
> >
> > +        lea     rdx,[rdx*4+rsi]
> >
> > +        and     rsp,-64
> >
> > +        mov     QWORD[((64+0))+rsp],rdi
> >
> > +        mov     QWORD[((64+8))+rsp],rsi
> >
> > +        mov     QWORD[((64+16))+rsp],rdx
> >
> > +        mov     QWORD[88+rsp],rax
> >
> > +
> >
> > +$L$prologue:
> >
> > +
> >
> > +        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:
> >
> > +        mov     edi,ebx
> >
> > +        lea     rbp,[K256]
> >
> > +        xor     edi,ecx
> >
> > +        mov     r12d,DWORD[rsi]
> >
> > +        mov     r13d,r8d
> >
> > +        mov     r14d,eax
> >
> > +        bswap   r12d
> >
> > +        ror     r13d,14
> >
> > +        mov     r15d,r9d
> >
> > +
> >
> > +        xor     r13d,r8d
> >
> > +        ror     r14d,9
> >
> > +        xor     r15d,r10d
> >
> > +
> >
> > +        mov     DWORD[rsp],r12d
> >
> > +        xor     r14d,eax
> >
> > +        and     r15d,r8d
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,r11d
> >
> > +        xor     r15d,r10d
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,r8d
> >
> > +        add     r12d,r15d
> >
> > +
> >
> > +        mov     r15d,eax
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,eax
> >
> > +
> >
> > +        xor     r15d,ebx
> >
> > +        ror     r13d,6
> >
> > +        mov     r11d,ebx
> >
> > +
> >
> > +        and     edi,r15d
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     r11d,edi
> >
> > +        add     edx,r12d
> >
> > +        add     r11d,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        add     r11d,r14d
> >
> > +        mov     r12d,DWORD[4+rsi]
> >
> > +        mov     r13d,edx
> >
> > +        mov     r14d,r11d
> >
> > +        bswap   r12d
> >
> > +        ror     r13d,14
> >
> > +        mov     edi,r8d
> >
> > +
> >
> > +        xor     r13d,edx
> >
> > +        ror     r14d,9
> >
> > +        xor     edi,r9d
> >
> > +
> >
> > +        mov     DWORD[4+rsp],r12d
> >
> > +        xor     r14d,r11d
> >
> > +        and     edi,edx
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,r10d
> >
> > +        xor     edi,r9d
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,edx
> >
> > +        add     r12d,edi
> >
> > +
> >
> > +        mov     edi,r11d
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,r11d
> >
> > +
> >
> > +        xor     edi,eax
> >
> > +        ror     r13d,6
> >
> > +        mov     r10d,eax
> >
> > +
> >
> > +        and     r15d,edi
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     r10d,r15d
> >
> > +        add     ecx,r12d
> >
> > +        add     r10d,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        add     r10d,r14d
> >
> > +        mov     r12d,DWORD[8+rsi]
> >
> > +        mov     r13d,ecx
> >
> > +        mov     r14d,r10d
> >
> > +        bswap   r12d
> >
> > +        ror     r13d,14
> >
> > +        mov     r15d,edx
> >
> > +
> >
> > +        xor     r13d,ecx
> >
> > +        ror     r14d,9
> >
> > +        xor     r15d,r8d
> >
> > +
> >
> > +        mov     DWORD[8+rsp],r12d
> >
> > +        xor     r14d,r10d
> >
> > +        and     r15d,ecx
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,r9d
> >
> > +        xor     r15d,r8d
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,ecx
> >
> > +        add     r12d,r15d
> >
> > +
> >
> > +        mov     r15d,r10d
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,r10d
> >
> > +
> >
> > +        xor     r15d,r11d
> >
> > +        ror     r13d,6
> >
> > +        mov     r9d,r11d
> >
> > +
> >
> > +        and     edi,r15d
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     r9d,edi
> >
> > +        add     ebx,r12d
> >
> > +        add     r9d,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        add     r9d,r14d
> >
> > +        mov     r12d,DWORD[12+rsi]
> >
> > +        mov     r13d,ebx
> >
> > +        mov     r14d,r9d
> >
> > +        bswap   r12d
> >
> > +        ror     r13d,14
> >
> > +        mov     edi,ecx
> >
> > +
> >
> > +        xor     r13d,ebx
> >
> > +        ror     r14d,9
> >
> > +        xor     edi,edx
> >
> > +
> >
> > +        mov     DWORD[12+rsp],r12d
> >
> > +        xor     r14d,r9d
> >
> > +        and     edi,ebx
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,r8d
> >
> > +        xor     edi,edx
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,ebx
> >
> > +        add     r12d,edi
> >
> > +
> >
> > +        mov     edi,r9d
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,r9d
> >
> > +
> >
> > +        xor     edi,r10d
> >
> > +        ror     r13d,6
> >
> > +        mov     r8d,r10d
> >
> > +
> >
> > +        and     r15d,edi
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     r8d,r15d
> >
> > +        add     eax,r12d
> >
> > +        add     r8d,r12d
> >
> > +
> >
> > +        lea     rbp,[20+rbp]
> >
> > +        add     r8d,r14d
> >
> > +        mov     r12d,DWORD[16+rsi]
> >
> > +        mov     r13d,eax
> >
> > +        mov     r14d,r8d
> >
> > +        bswap   r12d
> >
> > +        ror     r13d,14
> >
> > +        mov     r15d,ebx
> >
> > +
> >
> > +        xor     r13d,eax
> >
> > +        ror     r14d,9
> >
> > +        xor     r15d,ecx
> >
> > +
> >
> > +        mov     DWORD[16+rsp],r12d
> >
> > +        xor     r14d,r8d
> >
> > +        and     r15d,eax
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,edx
> >
> > +        xor     r15d,ecx
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,eax
> >
> > +        add     r12d,r15d
> >
> > +
> >
> > +        mov     r15d,r8d
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,r8d
> >
> > +
> >
> > +        xor     r15d,r9d
> >
> > +        ror     r13d,6
> >
> > +        mov     edx,r9d
> >
> > +
> >
> > +        and     edi,r15d
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     edx,edi
> >
> > +        add     r11d,r12d
> >
> > +        add     edx,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        add     edx,r14d
> >
> > +        mov     r12d,DWORD[20+rsi]
> >
> > +        mov     r13d,r11d
> >
> > +        mov     r14d,edx
> >
> > +        bswap   r12d
> >
> > +        ror     r13d,14
> >
> > +        mov     edi,eax
> >
> > +
> >
> > +        xor     r13d,r11d
> >
> > +        ror     r14d,9
> >
> > +        xor     edi,ebx
> >
> > +
> >
> > +        mov     DWORD[20+rsp],r12d
> >
> > +        xor     r14d,edx
> >
> > +        and     edi,r11d
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,ecx
> >
> > +        xor     edi,ebx
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,r11d
> >
> > +        add     r12d,edi
> >
> > +
> >
> > +        mov     edi,edx
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,edx
> >
> > +
> >
> > +        xor     edi,r8d
> >
> > +        ror     r13d,6
> >
> > +        mov     ecx,r8d
> >
> > +
> >
> > +        and     r15d,edi
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     ecx,r15d
> >
> > +        add     r10d,r12d
> >
> > +        add     ecx,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        add     ecx,r14d
> >
> > +        mov     r12d,DWORD[24+rsi]
> >
> > +        mov     r13d,r10d
> >
> > +        mov     r14d,ecx
> >
> > +        bswap   r12d
> >
> > +        ror     r13d,14
> >
> > +        mov     r15d,r11d
> >
> > +
> >
> > +        xor     r13d,r10d
> >
> > +        ror     r14d,9
> >
> > +        xor     r15d,eax
> >
> > +
> >
> > +        mov     DWORD[24+rsp],r12d
> >
> > +        xor     r14d,ecx
> >
> > +        and     r15d,r10d
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,ebx
> >
> > +        xor     r15d,eax
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,r10d
> >
> > +        add     r12d,r15d
> >
> > +
> >
> > +        mov     r15d,ecx
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,ecx
> >
> > +
> >
> > +        xor     r15d,edx
> >
> > +        ror     r13d,6
> >
> > +        mov     ebx,edx
> >
> > +
> >
> > +        and     edi,r15d
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     ebx,edi
> >
> > +        add     r9d,r12d
> >
> > +        add     ebx,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        add     ebx,r14d
> >
> > +        mov     r12d,DWORD[28+rsi]
> >
> > +        mov     r13d,r9d
> >
> > +        mov     r14d,ebx
> >
> > +        bswap   r12d
> >
> > +        ror     r13d,14
> >
> > +        mov     edi,r10d
> >
> > +
> >
> > +        xor     r13d,r9d
> >
> > +        ror     r14d,9
> >
> > +        xor     edi,r11d
> >
> > +
> >
> > +        mov     DWORD[28+rsp],r12d
> >
> > +        xor     r14d,ebx
> >
> > +        and     edi,r9d
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,eax
> >
> > +        xor     edi,r11d
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,r9d
> >
> > +        add     r12d,edi
> >
> > +
> >
> > +        mov     edi,ebx
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,ebx
> >
> > +
> >
> > +        xor     edi,ecx
> >
> > +        ror     r13d,6
> >
> > +        mov     eax,ecx
> >
> > +
> >
> > +        and     r15d,edi
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     eax,r15d
> >
> > +        add     r8d,r12d
> >
> > +        add     eax,r12d
> >
> > +
> >
> > +        lea     rbp,[20+rbp]
> >
> > +        add     eax,r14d
> >
> > +        mov     r12d,DWORD[32+rsi]
> >
> > +        mov     r13d,r8d
> >
> > +        mov     r14d,eax
> >
> > +        bswap   r12d
> >
> > +        ror     r13d,14
> >
> > +        mov     r15d,r9d
> >
> > +
> >
> > +        xor     r13d,r8d
> >
> > +        ror     r14d,9
> >
> > +        xor     r15d,r10d
> >
> > +
> >
> > +        mov     DWORD[32+rsp],r12d
> >
> > +        xor     r14d,eax
> >
> > +        and     r15d,r8d
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,r11d
> >
> > +        xor     r15d,r10d
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,r8d
> >
> > +        add     r12d,r15d
> >
> > +
> >
> > +        mov     r15d,eax
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,eax
> >
> > +
> >
> > +        xor     r15d,ebx
> >
> > +        ror     r13d,6
> >
> > +        mov     r11d,ebx
> >
> > +
> >
> > +        and     edi,r15d
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     r11d,edi
> >
> > +        add     edx,r12d
> >
> > +        add     r11d,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        add     r11d,r14d
> >
> > +        mov     r12d,DWORD[36+rsi]
> >
> > +        mov     r13d,edx
> >
> > +        mov     r14d,r11d
> >
> > +        bswap   r12d
> >
> > +        ror     r13d,14
> >
> > +        mov     edi,r8d
> >
> > +
> >
> > +        xor     r13d,edx
> >
> > +        ror     r14d,9
> >
> > +        xor     edi,r9d
> >
> > +
> >
> > +        mov     DWORD[36+rsp],r12d
> >
> > +        xor     r14d,r11d
> >
> > +        and     edi,edx
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,r10d
> >
> > +        xor     edi,r9d
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,edx
> >
> > +        add     r12d,edi
> >
> > +
> >
> > +        mov     edi,r11d
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,r11d
> >
> > +
> >
> > +        xor     edi,eax
> >
> > +        ror     r13d,6
> >
> > +        mov     r10d,eax
> >
> > +
> >
> > +        and     r15d,edi
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     r10d,r15d
> >
> > +        add     ecx,r12d
> >
> > +        add     r10d,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        add     r10d,r14d
> >
> > +        mov     r12d,DWORD[40+rsi]
> >
> > +        mov     r13d,ecx
> >
> > +        mov     r14d,r10d
> >
> > +        bswap   r12d
> >
> > +        ror     r13d,14
> >
> > +        mov     r15d,edx
> >
> > +
> >
> > +        xor     r13d,ecx
> >
> > +        ror     r14d,9
> >
> > +        xor     r15d,r8d
> >
> > +
> >
> > +        mov     DWORD[40+rsp],r12d
> >
> > +        xor     r14d,r10d
> >
> > +        and     r15d,ecx
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,r9d
> >
> > +        xor     r15d,r8d
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,ecx
> >
> > +        add     r12d,r15d
> >
> > +
> >
> > +        mov     r15d,r10d
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,r10d
> >
> > +
> >
> > +        xor     r15d,r11d
> >
> > +        ror     r13d,6
> >
> > +        mov     r9d,r11d
> >
> > +
> >
> > +        and     edi,r15d
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     r9d,edi
> >
> > +        add     ebx,r12d
> >
> > +        add     r9d,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        add     r9d,r14d
> >
> > +        mov     r12d,DWORD[44+rsi]
> >
> > +        mov     r13d,ebx
> >
> > +        mov     r14d,r9d
> >
> > +        bswap   r12d
> >
> > +        ror     r13d,14
> >
> > +        mov     edi,ecx
> >
> > +
> >
> > +        xor     r13d,ebx
> >
> > +        ror     r14d,9
> >
> > +        xor     edi,edx
> >
> > +
> >
> > +        mov     DWORD[44+rsp],r12d
> >
> > +        xor     r14d,r9d
> >
> > +        and     edi,ebx
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,r8d
> >
> > +        xor     edi,edx
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,ebx
> >
> > +        add     r12d,edi
> >
> > +
> >
> > +        mov     edi,r9d
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,r9d
> >
> > +
> >
> > +        xor     edi,r10d
> >
> > +        ror     r13d,6
> >
> > +        mov     r8d,r10d
> >
> > +
> >
> > +        and     r15d,edi
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     r8d,r15d
> >
> > +        add     eax,r12d
> >
> > +        add     r8d,r12d
> >
> > +
> >
> > +        lea     rbp,[20+rbp]
> >
> > +        add     r8d,r14d
> >
> > +        mov     r12d,DWORD[48+rsi]
> >
> > +        mov     r13d,eax
> >
> > +        mov     r14d,r8d
> >
> > +        bswap   r12d
> >
> > +        ror     r13d,14
> >
> > +        mov     r15d,ebx
> >
> > +
> >
> > +        xor     r13d,eax
> >
> > +        ror     r14d,9
> >
> > +        xor     r15d,ecx
> >
> > +
> >
> > +        mov     DWORD[48+rsp],r12d
> >
> > +        xor     r14d,r8d
> >
> > +        and     r15d,eax
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,edx
> >
> > +        xor     r15d,ecx
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,eax
> >
> > +        add     r12d,r15d
> >
> > +
> >
> > +        mov     r15d,r8d
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,r8d
> >
> > +
> >
> > +        xor     r15d,r9d
> >
> > +        ror     r13d,6
> >
> > +        mov     edx,r9d
> >
> > +
> >
> > +        and     edi,r15d
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     edx,edi
> >
> > +        add     r11d,r12d
> >
> > +        add     edx,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        add     edx,r14d
> >
> > +        mov     r12d,DWORD[52+rsi]
> >
> > +        mov     r13d,r11d
> >
> > +        mov     r14d,edx
> >
> > +        bswap   r12d
> >
> > +        ror     r13d,14
> >
> > +        mov     edi,eax
> >
> > +
> >
> > +        xor     r13d,r11d
> >
> > +        ror     r14d,9
> >
> > +        xor     edi,ebx
> >
> > +
> >
> > +        mov     DWORD[52+rsp],r12d
> >
> > +        xor     r14d,edx
> >
> > +        and     edi,r11d
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,ecx
> >
> > +        xor     edi,ebx
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,r11d
> >
> > +        add     r12d,edi
> >
> > +
> >
> > +        mov     edi,edx
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,edx
> >
> > +
> >
> > +        xor     edi,r8d
> >
> > +        ror     r13d,6
> >
> > +        mov     ecx,r8d
> >
> > +
> >
> > +        and     r15d,edi
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     ecx,r15d
> >
> > +        add     r10d,r12d
> >
> > +        add     ecx,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        add     ecx,r14d
> >
> > +        mov     r12d,DWORD[56+rsi]
> >
> > +        mov     r13d,r10d
> >
> > +        mov     r14d,ecx
> >
> > +        bswap   r12d
> >
> > +        ror     r13d,14
> >
> > +        mov     r15d,r11d
> >
> > +
> >
> > +        xor     r13d,r10d
> >
> > +        ror     r14d,9
> >
> > +        xor     r15d,eax
> >
> > +
> >
> > +        mov     DWORD[56+rsp],r12d
> >
> > +        xor     r14d,ecx
> >
> > +        and     r15d,r10d
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,ebx
> >
> > +        xor     r15d,eax
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,r10d
> >
> > +        add     r12d,r15d
> >
> > +
> >
> > +        mov     r15d,ecx
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,ecx
> >
> > +
> >
> > +        xor     r15d,edx
> >
> > +        ror     r13d,6
> >
> > +        mov     ebx,edx
> >
> > +
> >
> > +        and     edi,r15d
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     ebx,edi
> >
> > +        add     r9d,r12d
> >
> > +        add     ebx,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        add     ebx,r14d
> >
> > +        mov     r12d,DWORD[60+rsi]
> >
> > +        mov     r13d,r9d
> >
> > +        mov     r14d,ebx
> >
> > +        bswap   r12d
> >
> > +        ror     r13d,14
> >
> > +        mov     edi,r10d
> >
> > +
> >
> > +        xor     r13d,r9d
> >
> > +        ror     r14d,9
> >
> > +        xor     edi,r11d
> >
> > +
> >
> > +        mov     DWORD[60+rsp],r12d
> >
> > +        xor     r14d,ebx
> >
> > +        and     edi,r9d
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,eax
> >
> > +        xor     edi,r11d
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,r9d
> >
> > +        add     r12d,edi
> >
> > +
> >
> > +        mov     edi,ebx
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,ebx
> >
> > +
> >
> > +        xor     edi,ecx
> >
> > +        ror     r13d,6
> >
> > +        mov     eax,ecx
> >
> > +
> >
> > +        and     r15d,edi
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     eax,r15d
> >
> > +        add     r8d,r12d
> >
> > +        add     eax,r12d
> >
> > +
> >
> > +        lea     rbp,[20+rbp]
> >
> > +        jmp     NEAR $L$rounds_16_xx
> >
> > +ALIGN   16
> >
> > +$L$rounds_16_xx:
> >
> > +        mov     r13d,DWORD[4+rsp]
> >
> > +        mov     r15d,DWORD[56+rsp]
> >
> > +
> >
> > +        mov     r12d,r13d
> >
> > +        ror     r13d,11
> >
> > +        add     eax,r14d
> >
> > +        mov     r14d,r15d
> >
> > +        ror     r15d,2
> >
> > +
> >
> > +        xor     r13d,r12d
> >
> > +        shr     r12d,3
> >
> > +        ror     r13d,7
> >
> > +        xor     r15d,r14d
> >
> > +        shr     r14d,10
> >
> > +
> >
> > +        ror     r15d,17
> >
> > +        xor     r12d,r13d
> >
> > +        xor     r15d,r14d
> >
> > +        add     r12d,DWORD[36+rsp]
> >
> > +
> >
> > +        add     r12d,DWORD[rsp]
> >
> > +        mov     r13d,r8d
> >
> > +        add     r12d,r15d
> >
> > +        mov     r14d,eax
> >
> > +        ror     r13d,14
> >
> > +        mov     r15d,r9d
> >
> > +
> >
> > +        xor     r13d,r8d
> >
> > +        ror     r14d,9
> >
> > +        xor     r15d,r10d
> >
> > +
> >
> > +        mov     DWORD[rsp],r12d
> >
> > +        xor     r14d,eax
> >
> > +        and     r15d,r8d
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,r11d
> >
> > +        xor     r15d,r10d
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,r8d
> >
> > +        add     r12d,r15d
> >
> > +
> >
> > +        mov     r15d,eax
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,eax
> >
> > +
> >
> > +        xor     r15d,ebx
> >
> > +        ror     r13d,6
> >
> > +        mov     r11d,ebx
> >
> > +
> >
> > +        and     edi,r15d
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     r11d,edi
> >
> > +        add     edx,r12d
> >
> > +        add     r11d,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        mov     r13d,DWORD[8+rsp]
> >
> > +        mov     edi,DWORD[60+rsp]
> >
> > +
> >
> > +        mov     r12d,r13d
> >
> > +        ror     r13d,11
> >
> > +        add     r11d,r14d
> >
> > +        mov     r14d,edi
> >
> > +        ror     edi,2
> >
> > +
> >
> > +        xor     r13d,r12d
> >
> > +        shr     r12d,3
> >
> > +        ror     r13d,7
> >
> > +        xor     edi,r14d
> >
> > +        shr     r14d,10
> >
> > +
> >
> > +        ror     edi,17
> >
> > +        xor     r12d,r13d
> >
> > +        xor     edi,r14d
> >
> > +        add     r12d,DWORD[40+rsp]
> >
> > +
> >
> > +        add     r12d,DWORD[4+rsp]
> >
> > +        mov     r13d,edx
> >
> > +        add     r12d,edi
> >
> > +        mov     r14d,r11d
> >
> > +        ror     r13d,14
> >
> > +        mov     edi,r8d
> >
> > +
> >
> > +        xor     r13d,edx
> >
> > +        ror     r14d,9
> >
> > +        xor     edi,r9d
> >
> > +
> >
> > +        mov     DWORD[4+rsp],r12d
> >
> > +        xor     r14d,r11d
> >
> > +        and     edi,edx
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,r10d
> >
> > +        xor     edi,r9d
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,edx
> >
> > +        add     r12d,edi
> >
> > +
> >
> > +        mov     edi,r11d
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,r11d
> >
> > +
> >
> > +        xor     edi,eax
> >
> > +        ror     r13d,6
> >
> > +        mov     r10d,eax
> >
> > +
> >
> > +        and     r15d,edi
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     r10d,r15d
> >
> > +        add     ecx,r12d
> >
> > +        add     r10d,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        mov     r13d,DWORD[12+rsp]
> >
> > +        mov     r15d,DWORD[rsp]
> >
> > +
> >
> > +        mov     r12d,r13d
> >
> > +        ror     r13d,11
> >
> > +        add     r10d,r14d
> >
> > +        mov     r14d,r15d
> >
> > +        ror     r15d,2
> >
> > +
> >
> > +        xor     r13d,r12d
> >
> > +        shr     r12d,3
> >
> > +        ror     r13d,7
> >
> > +        xor     r15d,r14d
> >
> > +        shr     r14d,10
> >
> > +
> >
> > +        ror     r15d,17
> >
> > +        xor     r12d,r13d
> >
> > +        xor     r15d,r14d
> >
> > +        add     r12d,DWORD[44+rsp]
> >
> > +
> >
> > +        add     r12d,DWORD[8+rsp]
> >
> > +        mov     r13d,ecx
> >
> > +        add     r12d,r15d
> >
> > +        mov     r14d,r10d
> >
> > +        ror     r13d,14
> >
> > +        mov     r15d,edx
> >
> > +
> >
> > +        xor     r13d,ecx
> >
> > +        ror     r14d,9
> >
> > +        xor     r15d,r8d
> >
> > +
> >
> > +        mov     DWORD[8+rsp],r12d
> >
> > +        xor     r14d,r10d
> >
> > +        and     r15d,ecx
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,r9d
> >
> > +        xor     r15d,r8d
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,ecx
> >
> > +        add     r12d,r15d
> >
> > +
> >
> > +        mov     r15d,r10d
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,r10d
> >
> > +
> >
> > +        xor     r15d,r11d
> >
> > +        ror     r13d,6
> >
> > +        mov     r9d,r11d
> >
> > +
> >
> > +        and     edi,r15d
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     r9d,edi
> >
> > +        add     ebx,r12d
> >
> > +        add     r9d,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        mov     r13d,DWORD[16+rsp]
> >
> > +        mov     edi,DWORD[4+rsp]
> >
> > +
> >
> > +        mov     r12d,r13d
> >
> > +        ror     r13d,11
> >
> > +        add     r9d,r14d
> >
> > +        mov     r14d,edi
> >
> > +        ror     edi,2
> >
> > +
> >
> > +        xor     r13d,r12d
> >
> > +        shr     r12d,3
> >
> > +        ror     r13d,7
> >
> > +        xor     edi,r14d
> >
> > +        shr     r14d,10
> >
> > +
> >
> > +        ror     edi,17
> >
> > +        xor     r12d,r13d
> >
> > +        xor     edi,r14d
> >
> > +        add     r12d,DWORD[48+rsp]
> >
> > +
> >
> > +        add     r12d,DWORD[12+rsp]
> >
> > +        mov     r13d,ebx
> >
> > +        add     r12d,edi
> >
> > +        mov     r14d,r9d
> >
> > +        ror     r13d,14
> >
> > +        mov     edi,ecx
> >
> > +
> >
> > +        xor     r13d,ebx
> >
> > +        ror     r14d,9
> >
> > +        xor     edi,edx
> >
> > +
> >
> > +        mov     DWORD[12+rsp],r12d
> >
> > +        xor     r14d,r9d
> >
> > +        and     edi,ebx
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,r8d
> >
> > +        xor     edi,edx
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,ebx
> >
> > +        add     r12d,edi
> >
> > +
> >
> > +        mov     edi,r9d
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,r9d
> >
> > +
> >
> > +        xor     edi,r10d
> >
> > +        ror     r13d,6
> >
> > +        mov     r8d,r10d
> >
> > +
> >
> > +        and     r15d,edi
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     r8d,r15d
> >
> > +        add     eax,r12d
> >
> > +        add     r8d,r12d
> >
> > +
> >
> > +        lea     rbp,[20+rbp]
> >
> > +        mov     r13d,DWORD[20+rsp]
> >
> > +        mov     r15d,DWORD[8+rsp]
> >
> > +
> >
> > +        mov     r12d,r13d
> >
> > +        ror     r13d,11
> >
> > +        add     r8d,r14d
> >
> > +        mov     r14d,r15d
> >
> > +        ror     r15d,2
> >
> > +
> >
> > +        xor     r13d,r12d
> >
> > +        shr     r12d,3
> >
> > +        ror     r13d,7
> >
> > +        xor     r15d,r14d
> >
> > +        shr     r14d,10
> >
> > +
> >
> > +        ror     r15d,17
> >
> > +        xor     r12d,r13d
> >
> > +        xor     r15d,r14d
> >
> > +        add     r12d,DWORD[52+rsp]
> >
> > +
> >
> > +        add     r12d,DWORD[16+rsp]
> >
> > +        mov     r13d,eax
> >
> > +        add     r12d,r15d
> >
> > +        mov     r14d,r8d
> >
> > +        ror     r13d,14
> >
> > +        mov     r15d,ebx
> >
> > +
> >
> > +        xor     r13d,eax
> >
> > +        ror     r14d,9
> >
> > +        xor     r15d,ecx
> >
> > +
> >
> > +        mov     DWORD[16+rsp],r12d
> >
> > +        xor     r14d,r8d
> >
> > +        and     r15d,eax
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,edx
> >
> > +        xor     r15d,ecx
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,eax
> >
> > +        add     r12d,r15d
> >
> > +
> >
> > +        mov     r15d,r8d
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,r8d
> >
> > +
> >
> > +        xor     r15d,r9d
> >
> > +        ror     r13d,6
> >
> > +        mov     edx,r9d
> >
> > +
> >
> > +        and     edi,r15d
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     edx,edi
> >
> > +        add     r11d,r12d
> >
> > +        add     edx,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        mov     r13d,DWORD[24+rsp]
> >
> > +        mov     edi,DWORD[12+rsp]
> >
> > +
> >
> > +        mov     r12d,r13d
> >
> > +        ror     r13d,11
> >
> > +        add     edx,r14d
> >
> > +        mov     r14d,edi
> >
> > +        ror     edi,2
> >
> > +
> >
> > +        xor     r13d,r12d
> >
> > +        shr     r12d,3
> >
> > +        ror     r13d,7
> >
> > +        xor     edi,r14d
> >
> > +        shr     r14d,10
> >
> > +
> >
> > +        ror     edi,17
> >
> > +        xor     r12d,r13d
> >
> > +        xor     edi,r14d
> >
> > +        add     r12d,DWORD[56+rsp]
> >
> > +
> >
> > +        add     r12d,DWORD[20+rsp]
> >
> > +        mov     r13d,r11d
> >
> > +        add     r12d,edi
> >
> > +        mov     r14d,edx
> >
> > +        ror     r13d,14
> >
> > +        mov     edi,eax
> >
> > +
> >
> > +        xor     r13d,r11d
> >
> > +        ror     r14d,9
> >
> > +        xor     edi,ebx
> >
> > +
> >
> > +        mov     DWORD[20+rsp],r12d
> >
> > +        xor     r14d,edx
> >
> > +        and     edi,r11d
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,ecx
> >
> > +        xor     edi,ebx
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,r11d
> >
> > +        add     r12d,edi
> >
> > +
> >
> > +        mov     edi,edx
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,edx
> >
> > +
> >
> > +        xor     edi,r8d
> >
> > +        ror     r13d,6
> >
> > +        mov     ecx,r8d
> >
> > +
> >
> > +        and     r15d,edi
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     ecx,r15d
> >
> > +        add     r10d,r12d
> >
> > +        add     ecx,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        mov     r13d,DWORD[28+rsp]
> >
> > +        mov     r15d,DWORD[16+rsp]
> >
> > +
> >
> > +        mov     r12d,r13d
> >
> > +        ror     r13d,11
> >
> > +        add     ecx,r14d
> >
> > +        mov     r14d,r15d
> >
> > +        ror     r15d,2
> >
> > +
> >
> > +        xor     r13d,r12d
> >
> > +        shr     r12d,3
> >
> > +        ror     r13d,7
> >
> > +        xor     r15d,r14d
> >
> > +        shr     r14d,10
> >
> > +
> >
> > +        ror     r15d,17
> >
> > +        xor     r12d,r13d
> >
> > +        xor     r15d,r14d
> >
> > +        add     r12d,DWORD[60+rsp]
> >
> > +
> >
> > +        add     r12d,DWORD[24+rsp]
> >
> > +        mov     r13d,r10d
> >
> > +        add     r12d,r15d
> >
> > +        mov     r14d,ecx
> >
> > +        ror     r13d,14
> >
> > +        mov     r15d,r11d
> >
> > +
> >
> > +        xor     r13d,r10d
> >
> > +        ror     r14d,9
> >
> > +        xor     r15d,eax
> >
> > +
> >
> > +        mov     DWORD[24+rsp],r12d
> >
> > +        xor     r14d,ecx
> >
> > +        and     r15d,r10d
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,ebx
> >
> > +        xor     r15d,eax
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,r10d
> >
> > +        add     r12d,r15d
> >
> > +
> >
> > +        mov     r15d,ecx
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,ecx
> >
> > +
> >
> > +        xor     r15d,edx
> >
> > +        ror     r13d,6
> >
> > +        mov     ebx,edx
> >
> > +
> >
> > +        and     edi,r15d
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     ebx,edi
> >
> > +        add     r9d,r12d
> >
> > +        add     ebx,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        mov     r13d,DWORD[32+rsp]
> >
> > +        mov     edi,DWORD[20+rsp]
> >
> > +
> >
> > +        mov     r12d,r13d
> >
> > +        ror     r13d,11
> >
> > +        add     ebx,r14d
> >
> > +        mov     r14d,edi
> >
> > +        ror     edi,2
> >
> > +
> >
> > +        xor     r13d,r12d
> >
> > +        shr     r12d,3
> >
> > +        ror     r13d,7
> >
> > +        xor     edi,r14d
> >
> > +        shr     r14d,10
> >
> > +
> >
> > +        ror     edi,17
> >
> > +        xor     r12d,r13d
> >
> > +        xor     edi,r14d
> >
> > +        add     r12d,DWORD[rsp]
> >
> > +
> >
> > +        add     r12d,DWORD[28+rsp]
> >
> > +        mov     r13d,r9d
> >
> > +        add     r12d,edi
> >
> > +        mov     r14d,ebx
> >
> > +        ror     r13d,14
> >
> > +        mov     edi,r10d
> >
> > +
> >
> > +        xor     r13d,r9d
> >
> > +        ror     r14d,9
> >
> > +        xor     edi,r11d
> >
> > +
> >
> > +        mov     DWORD[28+rsp],r12d
> >
> > +        xor     r14d,ebx
> >
> > +        and     edi,r9d
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,eax
> >
> > +        xor     edi,r11d
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,r9d
> >
> > +        add     r12d,edi
> >
> > +
> >
> > +        mov     edi,ebx
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,ebx
> >
> > +
> >
> > +        xor     edi,ecx
> >
> > +        ror     r13d,6
> >
> > +        mov     eax,ecx
> >
> > +
> >
> > +        and     r15d,edi
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     eax,r15d
> >
> > +        add     r8d,r12d
> >
> > +        add     eax,r12d
> >
> > +
> >
> > +        lea     rbp,[20+rbp]
> >
> > +        mov     r13d,DWORD[36+rsp]
> >
> > +        mov     r15d,DWORD[24+rsp]
> >
> > +
> >
> > +        mov     r12d,r13d
> >
> > +        ror     r13d,11
> >
> > +        add     eax,r14d
> >
> > +        mov     r14d,r15d
> >
> > +        ror     r15d,2
> >
> > +
> >
> > +        xor     r13d,r12d
> >
> > +        shr     r12d,3
> >
> > +        ror     r13d,7
> >
> > +        xor     r15d,r14d
> >
> > +        shr     r14d,10
> >
> > +
> >
> > +        ror     r15d,17
> >
> > +        xor     r12d,r13d
> >
> > +        xor     r15d,r14d
> >
> > +        add     r12d,DWORD[4+rsp]
> >
> > +
> >
> > +        add     r12d,DWORD[32+rsp]
> >
> > +        mov     r13d,r8d
> >
> > +        add     r12d,r15d
> >
> > +        mov     r14d,eax
> >
> > +        ror     r13d,14
> >
> > +        mov     r15d,r9d
> >
> > +
> >
> > +        xor     r13d,r8d
> >
> > +        ror     r14d,9
> >
> > +        xor     r15d,r10d
> >
> > +
> >
> > +        mov     DWORD[32+rsp],r12d
> >
> > +        xor     r14d,eax
> >
> > +        and     r15d,r8d
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,r11d
> >
> > +        xor     r15d,r10d
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,r8d
> >
> > +        add     r12d,r15d
> >
> > +
> >
> > +        mov     r15d,eax
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,eax
> >
> > +
> >
> > +        xor     r15d,ebx
> >
> > +        ror     r13d,6
> >
> > +        mov     r11d,ebx
> >
> > +
> >
> > +        and     edi,r15d
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     r11d,edi
> >
> > +        add     edx,r12d
> >
> > +        add     r11d,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        mov     r13d,DWORD[40+rsp]
> >
> > +        mov     edi,DWORD[28+rsp]
> >
> > +
> >
> > +        mov     r12d,r13d
> >
> > +        ror     r13d,11
> >
> > +        add     r11d,r14d
> >
> > +        mov     r14d,edi
> >
> > +        ror     edi,2
> >
> > +
> >
> > +        xor     r13d,r12d
> >
> > +        shr     r12d,3
> >
> > +        ror     r13d,7
> >
> > +        xor     edi,r14d
> >
> > +        shr     r14d,10
> >
> > +
> >
> > +        ror     edi,17
> >
> > +        xor     r12d,r13d
> >
> > +        xor     edi,r14d
> >
> > +        add     r12d,DWORD[8+rsp]
> >
> > +
> >
> > +        add     r12d,DWORD[36+rsp]
> >
> > +        mov     r13d,edx
> >
> > +        add     r12d,edi
> >
> > +        mov     r14d,r11d
> >
> > +        ror     r13d,14
> >
> > +        mov     edi,r8d
> >
> > +
> >
> > +        xor     r13d,edx
> >
> > +        ror     r14d,9
> >
> > +        xor     edi,r9d
> >
> > +
> >
> > +        mov     DWORD[36+rsp],r12d
> >
> > +        xor     r14d,r11d
> >
> > +        and     edi,edx
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,r10d
> >
> > +        xor     edi,r9d
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,edx
> >
> > +        add     r12d,edi
> >
> > +
> >
> > +        mov     edi,r11d
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,r11d
> >
> > +
> >
> > +        xor     edi,eax
> >
> > +        ror     r13d,6
> >
> > +        mov     r10d,eax
> >
> > +
> >
> > +        and     r15d,edi
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     r10d,r15d
> >
> > +        add     ecx,r12d
> >
> > +        add     r10d,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        mov     r13d,DWORD[44+rsp]
> >
> > +        mov     r15d,DWORD[32+rsp]
> >
> > +
> >
> > +        mov     r12d,r13d
> >
> > +        ror     r13d,11
> >
> > +        add     r10d,r14d
> >
> > +        mov     r14d,r15d
> >
> > +        ror     r15d,2
> >
> > +
> >
> > +        xor     r13d,r12d
> >
> > +        shr     r12d,3
> >
> > +        ror     r13d,7
> >
> > +        xor     r15d,r14d
> >
> > +        shr     r14d,10
> >
> > +
> >
> > +        ror     r15d,17
> >
> > +        xor     r12d,r13d
> >
> > +        xor     r15d,r14d
> >
> > +        add     r12d,DWORD[12+rsp]
> >
> > +
> >
> > +        add     r12d,DWORD[40+rsp]
> >
> > +        mov     r13d,ecx
> >
> > +        add     r12d,r15d
> >
> > +        mov     r14d,r10d
> >
> > +        ror     r13d,14
> >
> > +        mov     r15d,edx
> >
> > +
> >
> > +        xor     r13d,ecx
> >
> > +        ror     r14d,9
> >
> > +        xor     r15d,r8d
> >
> > +
> >
> > +        mov     DWORD[40+rsp],r12d
> >
> > +        xor     r14d,r10d
> >
> > +        and     r15d,ecx
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,r9d
> >
> > +        xor     r15d,r8d
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,ecx
> >
> > +        add     r12d,r15d
> >
> > +
> >
> > +        mov     r15d,r10d
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,r10d
> >
> > +
> >
> > +        xor     r15d,r11d
> >
> > +        ror     r13d,6
> >
> > +        mov     r9d,r11d
> >
> > +
> >
> > +        and     edi,r15d
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     r9d,edi
> >
> > +        add     ebx,r12d
> >
> > +        add     r9d,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        mov     r13d,DWORD[48+rsp]
> >
> > +        mov     edi,DWORD[36+rsp]
> >
> > +
> >
> > +        mov     r12d,r13d
> >
> > +        ror     r13d,11
> >
> > +        add     r9d,r14d
> >
> > +        mov     r14d,edi
> >
> > +        ror     edi,2
> >
> > +
> >
> > +        xor     r13d,r12d
> >
> > +        shr     r12d,3
> >
> > +        ror     r13d,7
> >
> > +        xor     edi,r14d
> >
> > +        shr     r14d,10
> >
> > +
> >
> > +        ror     edi,17
> >
> > +        xor     r12d,r13d
> >
> > +        xor     edi,r14d
> >
> > +        add     r12d,DWORD[16+rsp]
> >
> > +
> >
> > +        add     r12d,DWORD[44+rsp]
> >
> > +        mov     r13d,ebx
> >
> > +        add     r12d,edi
> >
> > +        mov     r14d,r9d
> >
> > +        ror     r13d,14
> >
> > +        mov     edi,ecx
> >
> > +
> >
> > +        xor     r13d,ebx
> >
> > +        ror     r14d,9
> >
> > +        xor     edi,edx
> >
> > +
> >
> > +        mov     DWORD[44+rsp],r12d
> >
> > +        xor     r14d,r9d
> >
> > +        and     edi,ebx
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,r8d
> >
> > +        xor     edi,edx
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,ebx
> >
> > +        add     r12d,edi
> >
> > +
> >
> > +        mov     edi,r9d
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,r9d
> >
> > +
> >
> > +        xor     edi,r10d
> >
> > +        ror     r13d,6
> >
> > +        mov     r8d,r10d
> >
> > +
> >
> > +        and     r15d,edi
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     r8d,r15d
> >
> > +        add     eax,r12d
> >
> > +        add     r8d,r12d
> >
> > +
> >
> > +        lea     rbp,[20+rbp]
> >
> > +        mov     r13d,DWORD[52+rsp]
> >
> > +        mov     r15d,DWORD[40+rsp]
> >
> > +
> >
> > +        mov     r12d,r13d
> >
> > +        ror     r13d,11
> >
> > +        add     r8d,r14d
> >
> > +        mov     r14d,r15d
> >
> > +        ror     r15d,2
> >
> > +
> >
> > +        xor     r13d,r12d
> >
> > +        shr     r12d,3
> >
> > +        ror     r13d,7
> >
> > +        xor     r15d,r14d
> >
> > +        shr     r14d,10
> >
> > +
> >
> > +        ror     r15d,17
> >
> > +        xor     r12d,r13d
> >
> > +        xor     r15d,r14d
> >
> > +        add     r12d,DWORD[20+rsp]
> >
> > +
> >
> > +        add     r12d,DWORD[48+rsp]
> >
> > +        mov     r13d,eax
> >
> > +        add     r12d,r15d
> >
> > +        mov     r14d,r8d
> >
> > +        ror     r13d,14
> >
> > +        mov     r15d,ebx
> >
> > +
> >
> > +        xor     r13d,eax
> >
> > +        ror     r14d,9
> >
> > +        xor     r15d,ecx
> >
> > +
> >
> > +        mov     DWORD[48+rsp],r12d
> >
> > +        xor     r14d,r8d
> >
> > +        and     r15d,eax
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,edx
> >
> > +        xor     r15d,ecx
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,eax
> >
> > +        add     r12d,r15d
> >
> > +
> >
> > +        mov     r15d,r8d
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,r8d
> >
> > +
> >
> > +        xor     r15d,r9d
> >
> > +        ror     r13d,6
> >
> > +        mov     edx,r9d
> >
> > +
> >
> > +        and     edi,r15d
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     edx,edi
> >
> > +        add     r11d,r12d
> >
> > +        add     edx,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        mov     r13d,DWORD[56+rsp]
> >
> > +        mov     edi,DWORD[44+rsp]
> >
> > +
> >
> > +        mov     r12d,r13d
> >
> > +        ror     r13d,11
> >
> > +        add     edx,r14d
> >
> > +        mov     r14d,edi
> >
> > +        ror     edi,2
> >
> > +
> >
> > +        xor     r13d,r12d
> >
> > +        shr     r12d,3
> >
> > +        ror     r13d,7
> >
> > +        xor     edi,r14d
> >
> > +        shr     r14d,10
> >
> > +
> >
> > +        ror     edi,17
> >
> > +        xor     r12d,r13d
> >
> > +        xor     edi,r14d
> >
> > +        add     r12d,DWORD[24+rsp]
> >
> > +
> >
> > +        add     r12d,DWORD[52+rsp]
> >
> > +        mov     r13d,r11d
> >
> > +        add     r12d,edi
> >
> > +        mov     r14d,edx
> >
> > +        ror     r13d,14
> >
> > +        mov     edi,eax
> >
> > +
> >
> > +        xor     r13d,r11d
> >
> > +        ror     r14d,9
> >
> > +        xor     edi,ebx
> >
> > +
> >
> > +        mov     DWORD[52+rsp],r12d
> >
> > +        xor     r14d,edx
> >
> > +        and     edi,r11d
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,ecx
> >
> > +        xor     edi,ebx
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,r11d
> >
> > +        add     r12d,edi
> >
> > +
> >
> > +        mov     edi,edx
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,edx
> >
> > +
> >
> > +        xor     edi,r8d
> >
> > +        ror     r13d,6
> >
> > +        mov     ecx,r8d
> >
> > +
> >
> > +        and     r15d,edi
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     ecx,r15d
> >
> > +        add     r10d,r12d
> >
> > +        add     ecx,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        mov     r13d,DWORD[60+rsp]
> >
> > +        mov     r15d,DWORD[48+rsp]
> >
> > +
> >
> > +        mov     r12d,r13d
> >
> > +        ror     r13d,11
> >
> > +        add     ecx,r14d
> >
> > +        mov     r14d,r15d
> >
> > +        ror     r15d,2
> >
> > +
> >
> > +        xor     r13d,r12d
> >
> > +        shr     r12d,3
> >
> > +        ror     r13d,7
> >
> > +        xor     r15d,r14d
> >
> > +        shr     r14d,10
> >
> > +
> >
> > +        ror     r15d,17
> >
> > +        xor     r12d,r13d
> >
> > +        xor     r15d,r14d
> >
> > +        add     r12d,DWORD[28+rsp]
> >
> > +
> >
> > +        add     r12d,DWORD[56+rsp]
> >
> > +        mov     r13d,r10d
> >
> > +        add     r12d,r15d
> >
> > +        mov     r14d,ecx
> >
> > +        ror     r13d,14
> >
> > +        mov     r15d,r11d
> >
> > +
> >
> > +        xor     r13d,r10d
> >
> > +        ror     r14d,9
> >
> > +        xor     r15d,eax
> >
> > +
> >
> > +        mov     DWORD[56+rsp],r12d
> >
> > +        xor     r14d,ecx
> >
> > +        and     r15d,r10d
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,ebx
> >
> > +        xor     r15d,eax
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,r10d
> >
> > +        add     r12d,r15d
> >
> > +
> >
> > +        mov     r15d,ecx
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,ecx
> >
> > +
> >
> > +        xor     r15d,edx
> >
> > +        ror     r13d,6
> >
> > +        mov     ebx,edx
> >
> > +
> >
> > +        and     edi,r15d
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     ebx,edi
> >
> > +        add     r9d,r12d
> >
> > +        add     ebx,r12d
> >
> > +
> >
> > +        lea     rbp,[4+rbp]
> >
> > +        mov     r13d,DWORD[rsp]
> >
> > +        mov     edi,DWORD[52+rsp]
> >
> > +
> >
> > +        mov     r12d,r13d
> >
> > +        ror     r13d,11
> >
> > +        add     ebx,r14d
> >
> > +        mov     r14d,edi
> >
> > +        ror     edi,2
> >
> > +
> >
> > +        xor     r13d,r12d
> >
> > +        shr     r12d,3
> >
> > +        ror     r13d,7
> >
> > +        xor     edi,r14d
> >
> > +        shr     r14d,10
> >
> > +
> >
> > +        ror     edi,17
> >
> > +        xor     r12d,r13d
> >
> > +        xor     edi,r14d
> >
> > +        add     r12d,DWORD[32+rsp]
> >
> > +
> >
> > +        add     r12d,DWORD[60+rsp]
> >
> > +        mov     r13d,r9d
> >
> > +        add     r12d,edi
> >
> > +        mov     r14d,ebx
> >
> > +        ror     r13d,14
> >
> > +        mov     edi,r10d
> >
> > +
> >
> > +        xor     r13d,r9d
> >
> > +        ror     r14d,9
> >
> > +        xor     edi,r11d
> >
> > +
> >
> > +        mov     DWORD[60+rsp],r12d
> >
> > +        xor     r14d,ebx
> >
> > +        and     edi,r9d
> >
> > +
> >
> > +        ror     r13d,5
> >
> > +        add     r12d,eax
> >
> > +        xor     edi,r11d
> >
> > +
> >
> > +        ror     r14d,11
> >
> > +        xor     r13d,r9d
> >
> > +        add     r12d,edi
> >
> > +
> >
> > +        mov     edi,ebx
> >
> > +        add     r12d,DWORD[rbp]
> >
> > +        xor     r14d,ebx
> >
> > +
> >
> > +        xor     edi,ecx
> >
> > +        ror     r13d,6
> >
> > +        mov     eax,ecx
> >
> > +
> >
> > +        and     r15d,edi
> >
> > +        ror     r14d,2
> >
> > +        add     r12d,r13d
> >
> > +
> >
> > +        xor     eax,r15d
> >
> > +        add     r8d,r12d
> >
> > +        add     eax,r12d
> >
> > +
> >
> > +        lea     rbp,[20+rbp]
> >
> > +        cmp     BYTE[3+rbp],0
> >
> > +        jnz     NEAR $L$rounds_16_xx
> >
> > +
> >
> > +        mov     rdi,QWORD[((64+0))+rsp]
> >
> > +        add     eax,r14d
> >
> > +        lea     rsi,[64+rsi]
> >
> > +
> >
> > +        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[((64+16))+rsp]
> >
> > +
> >
> > +        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[88+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$epilogue:
> >
> > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> >
> > +        mov     rsi,QWORD[16+rsp]
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +$L$SEH_end_sha256_block_data_order:
> >
> > +ALIGN   64
> >
> > +
> >
> > +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      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
> >
> > +DB      32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
> >
> > +DB      111,114,103,62,0
> >
> > +
> >
> > +ALIGN   64
> >
> > +sha256_block_data_order_shaext:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_sha256_block_data_order_shaext:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +
> >
> > +
> >
> > +_shaext_shortcut:
> >
> > +
> >
> > +        lea     rsp,[((-88))+rsp]
> >
> > +        movaps  XMMWORD[(-8-80)+rax],xmm6
> >
> > +        movaps  XMMWORD[(-8-64)+rax],xmm7
> >
> > +        movaps  XMMWORD[(-8-48)+rax],xmm8
> >
> > +        movaps  XMMWORD[(-8-32)+rax],xmm9
> >
> > +        movaps  XMMWORD[(-8-16)+rax],xmm10
> >
> > +$L$prologue_shaext:
> >
> > +        lea     rcx,[((K256+128))]
> >
> > +        movdqu  xmm1,XMMWORD[rdi]
> >
> > +        movdqu  xmm2,XMMWORD[16+rdi]
> >
> > +        movdqa  xmm7,XMMWORD[((512-128))+rcx]
> >
> > +
> >
> > +        pshufd  xmm0,xmm1,0x1b
> >
> > +        pshufd  xmm1,xmm1,0xb1
> >
> > +        pshufd  xmm2,xmm2,0x1b
> >
> > +        movdqa  xmm8,xmm7
> >
> > +DB      102,15,58,15,202,8
> >
> > +        punpcklqdq      xmm2,xmm0
> >
> > +        jmp     NEAR $L$oop_shaext
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$oop_shaext:
> >
> > +        movdqu  xmm3,XMMWORD[rsi]
> >
> > +        movdqu  xmm4,XMMWORD[16+rsi]
> >
> > +        movdqu  xmm5,XMMWORD[32+rsi]
> >
> > +DB      102,15,56,0,223
> >
> > +        movdqu  xmm6,XMMWORD[48+rsi]
> >
> > +
> >
> > +        movdqa  xmm0,XMMWORD[((0-128))+rcx]
> >
> > +        paddd   xmm0,xmm3
> >
> > +DB      102,15,56,0,231
> >
> > +        movdqa  xmm10,xmm2
> >
> > +DB      15,56,203,209
> >
> > +        pshufd  xmm0,xmm0,0x0e
> >
> > +        nop
> >
> > +        movdqa  xmm9,xmm1
> >
> > +DB      15,56,203,202
> >
> > +
> >
> > +        movdqa  xmm0,XMMWORD[((32-128))+rcx]
> >
> > +        paddd   xmm0,xmm4
> >
> > +DB      102,15,56,0,239
> >
> > +DB      15,56,203,209
> >
> > +        pshufd  xmm0,xmm0,0x0e
> >
> > +        lea     rsi,[64+rsi]
> >
> > +DB      15,56,204,220
> >
> > +DB      15,56,203,202
> >
> > +
> >
> > +        movdqa  xmm0,XMMWORD[((64-128))+rcx]
> >
> > +        paddd   xmm0,xmm5
> >
> > +DB      102,15,56,0,247
> >
> > +DB      15,56,203,209
> >
> > +        pshufd  xmm0,xmm0,0x0e
> >
> > +        movdqa  xmm7,xmm6
> >
> > +DB      102,15,58,15,253,4
> >
> > +        nop
> >
> > +        paddd   xmm3,xmm7
> >
> > +DB      15,56,204,229
> >
> > +DB      15,56,203,202
> >
> > +
> >
> > +        movdqa  xmm0,XMMWORD[((96-128))+rcx]
> >
> > +        paddd   xmm0,xmm6
> >
> > +DB      15,56,205,222
> >
> > +DB      15,56,203,209
> >
> > +        pshufd  xmm0,xmm0,0x0e
> >
> > +        movdqa  xmm7,xmm3
> >
> > +DB      102,15,58,15,254,4
> >
> > +        nop
> >
> > +        paddd   xmm4,xmm7
> >
> > +DB      15,56,204,238
> >
> > +DB      15,56,203,202
> >
> > +        movdqa  xmm0,XMMWORD[((128-128))+rcx]
> >
> > +        paddd   xmm0,xmm3
> >
> > +DB      15,56,205,227
> >
> > +DB      15,56,203,209
> >
> > +        pshufd  xmm0,xmm0,0x0e
> >
> > +        movdqa  xmm7,xmm4
> >
> > +DB      102,15,58,15,251,4
> >
> > +        nop
> >
> > +        paddd   xmm5,xmm7
> >
> > +DB      15,56,204,243
> >
> > +DB      15,56,203,202
> >
> > +        movdqa  xmm0,XMMWORD[((160-128))+rcx]
> >
> > +        paddd   xmm0,xmm4
> >
> > +DB      15,56,205,236
> >
> > +DB      15,56,203,209
> >
> > +        pshufd  xmm0,xmm0,0x0e
> >
> > +        movdqa  xmm7,xmm5
> >
> > +DB      102,15,58,15,252,4
> >
> > +        nop
> >
> > +        paddd   xmm6,xmm7
> >
> > +DB      15,56,204,220
> >
> > +DB      15,56,203,202
> >
> > +        movdqa  xmm0,XMMWORD[((192-128))+rcx]
> >
> > +        paddd   xmm0,xmm5
> >
> > +DB      15,56,205,245
> >
> > +DB      15,56,203,209
> >
> > +        pshufd  xmm0,xmm0,0x0e
> >
> > +        movdqa  xmm7,xmm6
> >
> > +DB      102,15,58,15,253,4
> >
> > +        nop
> >
> > +        paddd   xmm3,xmm7
> >
> > +DB      15,56,204,229
> >
> > +DB      15,56,203,202
> >
> > +        movdqa  xmm0,XMMWORD[((224-128))+rcx]
> >
> > +        paddd   xmm0,xmm6
> >
> > +DB      15,56,205,222
> >
> > +DB      15,56,203,209
> >
> > +        pshufd  xmm0,xmm0,0x0e
> >
> > +        movdqa  xmm7,xmm3
> >
> > +DB      102,15,58,15,254,4
> >
> > +        nop
> >
> > +        paddd   xmm4,xmm7
> >
> > +DB      15,56,204,238
> >
> > +DB      15,56,203,202
> >
> > +        movdqa  xmm0,XMMWORD[((256-128))+rcx]
> >
> > +        paddd   xmm0,xmm3
> >
> > +DB      15,56,205,227
> >
> > +DB      15,56,203,209
> >
> > +        pshufd  xmm0,xmm0,0x0e
> >
> > +        movdqa  xmm7,xmm4
> >
> > +DB      102,15,58,15,251,4
> >
> > +        nop
> >
> > +        paddd   xmm5,xmm7
> >
> > +DB      15,56,204,243
> >
> > +DB      15,56,203,202
> >
> > +        movdqa  xmm0,XMMWORD[((288-128))+rcx]
> >
> > +        paddd   xmm0,xmm4
> >
> > +DB      15,56,205,236
> >
> > +DB      15,56,203,209
> >
> > +        pshufd  xmm0,xmm0,0x0e
> >
> > +        movdqa  xmm7,xmm5
> >
> > +DB      102,15,58,15,252,4
> >
> > +        nop
> >
> > +        paddd   xmm6,xmm7
> >
> > +DB      15,56,204,220
> >
> > +DB      15,56,203,202
> >
> > +        movdqa  xmm0,XMMWORD[((320-128))+rcx]
> >
> > +        paddd   xmm0,xmm5
> >
> > +DB      15,56,205,245
> >
> > +DB      15,56,203,209
> >
> > +        pshufd  xmm0,xmm0,0x0e
> >
> > +        movdqa  xmm7,xmm6
> >
> > +DB      102,15,58,15,253,4
> >
> > +        nop
> >
> > +        paddd   xmm3,xmm7
> >
> > +DB      15,56,204,229
> >
> > +DB      15,56,203,202
> >
> > +        movdqa  xmm0,XMMWORD[((352-128))+rcx]
> >
> > +        paddd   xmm0,xmm6
> >
> > +DB      15,56,205,222
> >
> > +DB      15,56,203,209
> >
> > +        pshufd  xmm0,xmm0,0x0e
> >
> > +        movdqa  xmm7,xmm3
> >
> > +DB      102,15,58,15,254,4
> >
> > +        nop
> >
> > +        paddd   xmm4,xmm7
> >
> > +DB      15,56,204,238
> >
> > +DB      15,56,203,202
> >
> > +        movdqa  xmm0,XMMWORD[((384-128))+rcx]
> >
> > +        paddd   xmm0,xmm3
> >
> > +DB      15,56,205,227
> >
> > +DB      15,56,203,209
> >
> > +        pshufd  xmm0,xmm0,0x0e
> >
> > +        movdqa  xmm7,xmm4
> >
> > +DB      102,15,58,15,251,4
> >
> > +        nop
> >
> > +        paddd   xmm5,xmm7
> >
> > +DB      15,56,204,243
> >
> > +DB      15,56,203,202
> >
> > +        movdqa  xmm0,XMMWORD[((416-128))+rcx]
> >
> > +        paddd   xmm0,xmm4
> >
> > +DB      15,56,205,236
> >
> > +DB      15,56,203,209
> >
> > +        pshufd  xmm0,xmm0,0x0e
> >
> > +        movdqa  xmm7,xmm5
> >
> > +DB      102,15,58,15,252,4
> >
> > +DB      15,56,203,202
> >
> > +        paddd   xmm6,xmm7
> >
> > +
> >
> > +        movdqa  xmm0,XMMWORD[((448-128))+rcx]
> >
> > +        paddd   xmm0,xmm5
> >
> > +DB      15,56,203,209
> >
> > +        pshufd  xmm0,xmm0,0x0e
> >
> > +DB      15,56,205,245
> >
> > +        movdqa  xmm7,xmm8
> >
> > +DB      15,56,203,202
> >
> > +
> >
> > +        movdqa  xmm0,XMMWORD[((480-128))+rcx]
> >
> > +        paddd   xmm0,xmm6
> >
> > +        nop
> >
> > +DB      15,56,203,209
> >
> > +        pshufd  xmm0,xmm0,0x0e
> >
> > +        dec     rdx
> >
> > +        nop
> >
> > +DB      15,56,203,202
> >
> > +
> >
> > +        paddd   xmm2,xmm10
> >
> > +        paddd   xmm1,xmm9
> >
> > +        jnz     NEAR $L$oop_shaext
> >
> > +
> >
> > +        pshufd  xmm2,xmm2,0xb1
> >
> > +        pshufd  xmm7,xmm1,0x1b
> >
> > +        pshufd  xmm1,xmm1,0xb1
> >
> > +        punpckhqdq      xmm1,xmm2
> >
> > +DB      102,15,58,15,215,8
> >
> > +
> >
> > +        movdqu  XMMWORD[rdi],xmm1
> >
> > +        movdqu  XMMWORD[16+rdi],xmm2
> >
> > +        movaps  xmm6,XMMWORD[((-8-80))+rax]
> >
> > +        movaps  xmm7,XMMWORD[((-8-64))+rax]
> >
> > +        movaps  xmm8,XMMWORD[((-8-48))+rax]
> >
> > +        movaps  xmm9,XMMWORD[((-8-32))+rax]
> >
> > +        movaps  xmm10,XMMWORD[((-8-16))+rax]
> >
> > +        mov     rsp,rax
> >
> > +$L$epilogue_shaext:
> >
> > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> >
> > +        mov     rsi,QWORD[16+rsp]
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +$L$SEH_end_sha256_block_data_order_shaext:
> >
> > +
> >
> > +ALIGN   64
> >
> > +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:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +
> >
> > +
> >
> > +
> >
> > +$L$ssse3_shortcut:
> >
> > +        mov     rax,rsp
> >
> > +
> >
> > +        push    rbx
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        push    r12
> >
> > +
> >
> > +        push    r13
> >
> > +
> >
> > +        push    r14
> >
> > +
> >
> > +        push    r15
> >
> > +
> >
> > +        shl     rdx,4
> >
> > +        sub     rsp,160
> >
> > +        lea     rdx,[rdx*4+rsi]
> >
> > +        and     rsp,-64
> >
> > +        mov     QWORD[((64+0))+rsp],rdi
> >
> > +        mov     QWORD[((64+8))+rsp],rsi
> >
> > +        mov     QWORD[((64+16))+rsp],rdx
> >
> > +        mov     QWORD[88+rsp],rax
> >
> > +
> >
> > +        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[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_ssse3
> >
> > +ALIGN   16
> >
> > +$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[48+rsi]
> >
> > +        lea     rbp,[K256]
> >
> > +DB      102,15,56,0,207
> >
> > +        movdqa  xmm4,XMMWORD[rbp]
> >
> > +        movdqa  xmm5,XMMWORD[32+rbp]
> >
> > +DB      102,15,56,0,215
> >
> > +        paddd   xmm4,xmm0
> >
> > +        movdqa  xmm6,XMMWORD[64+rbp]
> >
> > +DB      102,15,56,0,223
> >
> > +        movdqa  xmm7,XMMWORD[96+rbp]
> >
> > +        paddd   xmm5,xmm1
> >
> > +        paddd   xmm6,xmm2
> >
> > +        paddd   xmm7,xmm3
> >
> > +        movdqa  XMMWORD[rsp],xmm4
> >
> > +        mov     r14d,eax
> >
> > +        movdqa  XMMWORD[16+rsp],xmm5
> >
> > +        mov     edi,ebx
> >
> > +        movdqa  XMMWORD[32+rsp],xmm6
> >
> > +        xor     edi,ecx
> >
> > +        movdqa  XMMWORD[48+rsp],xmm7
> >
> > +        mov     r13d,r8d
> >
> > +        jmp     NEAR $L$ssse3_00_47
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$ssse3_00_47:
> >
> > +        sub     rbp,-128
> >
> > +        ror     r13d,14
> >
> > +        movdqa  xmm4,xmm1
> >
> > +        mov     eax,r14d
> >
> > +        mov     r12d,r9d
> >
> > +        movdqa  xmm7,xmm3
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,r8d
> >
> > +        xor     r12d,r10d
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,eax
> >
> > +DB      102,15,58,15,224,4
> >
> > +        and     r12d,r8d
> >
> > +        xor     r13d,r8d
> >
> > +DB      102,15,58,15,250,4
> >
> > +        add     r11d,DWORD[rsp]
> >
> > +        mov     r15d,eax
> >
> > +        xor     r12d,r10d
> >
> > +        ror     r14d,11
> >
> > +        movdqa  xmm5,xmm4
> >
> > +        xor     r15d,ebx
> >
> > +        add     r11d,r12d
> >
> > +        movdqa  xmm6,xmm4
> >
> > +        ror     r13d,6
> >
> > +        and     edi,r15d
> >
> > +        psrld   xmm4,3
> >
> > +        xor     r14d,eax
> >
> > +        add     r11d,r13d
> >
> > +        xor     edi,ebx
> >
> > +        paddd   xmm0,xmm7
> >
> > +        ror     r14d,2
> >
> > +        add     edx,r11d
> >
> > +        psrld   xmm6,7
> >
> > +        add     r11d,edi
> >
> > +        mov     r13d,edx
> >
> > +        pshufd  xmm7,xmm3,250
> >
> > +        add     r14d,r11d
> >
> > +        ror     r13d,14
> >
> > +        pslld   xmm5,14
> >
> > +        mov     r11d,r14d
> >
> > +        mov     r12d,r8d
> >
> > +        pxor    xmm4,xmm6
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,edx
> >
> > +        xor     r12d,r9d
> >
> > +        ror     r13d,5
> >
> > +        psrld   xmm6,11
> >
> > +        xor     r14d,r11d
> >
> > +        pxor    xmm4,xmm5
> >
> > +        and     r12d,edx
> >
> > +        xor     r13d,edx
> >
> > +        pslld   xmm5,11
> >
> > +        add     r10d,DWORD[4+rsp]
> >
> > +        mov     edi,r11d
> >
> > +        pxor    xmm4,xmm6
> >
> > +        xor     r12d,r9d
> >
> > +        ror     r14d,11
> >
> > +        movdqa  xmm6,xmm7
> >
> > +        xor     edi,eax
> >
> > +        add     r10d,r12d
> >
> > +        pxor    xmm4,xmm5
> >
> > +        ror     r13d,6
> >
> > +        and     r15d,edi
> >
> > +        xor     r14d,r11d
> >
> > +        psrld   xmm7,10
> >
> > +        add     r10d,r13d
> >
> > +        xor     r15d,eax
> >
> > +        paddd   xmm0,xmm4
> >
> > +        ror     r14d,2
> >
> > +        add     ecx,r10d
> >
> > +        psrlq   xmm6,17
> >
> > +        add     r10d,r15d
> >
> > +        mov     r13d,ecx
> >
> > +        add     r14d,r10d
> >
> > +        pxor    xmm7,xmm6
> >
> > +        ror     r13d,14
> >
> > +        mov     r10d,r14d
> >
> > +        mov     r12d,edx
> >
> > +        ror     r14d,9
> >
> > +        psrlq   xmm6,2
> >
> > +        xor     r13d,ecx
> >
> > +        xor     r12d,r8d
> >
> > +        pxor    xmm7,xmm6
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,r10d
> >
> > +        and     r12d,ecx
> >
> > +        pshufd  xmm7,xmm7,128
> >
> > +        xor     r13d,ecx
> >
> > +        add     r9d,DWORD[8+rsp]
> >
> > +        mov     r15d,r10d
> >
> > +        psrldq  xmm7,8
> >
> > +        xor     r12d,r8d
> >
> > +        ror     r14d,11
> >
> > +        xor     r15d,r11d
> >
> > +        add     r9d,r12d
> >
> > +        ror     r13d,6
> >
> > +        paddd   xmm0,xmm7
> >
> > +        and     edi,r15d
> >
> > +        xor     r14d,r10d
> >
> > +        add     r9d,r13d
> >
> > +        pshufd  xmm7,xmm0,80
> >
> > +        xor     edi,r11d
> >
> > +        ror     r14d,2
> >
> > +        add     ebx,r9d
> >
> > +        movdqa  xmm6,xmm7
> >
> > +        add     r9d,edi
> >
> > +        mov     r13d,ebx
> >
> > +        psrld   xmm7,10
> >
> > +        add     r14d,r9d
> >
> > +        ror     r13d,14
> >
> > +        psrlq   xmm6,17
> >
> > +        mov     r9d,r14d
> >
> > +        mov     r12d,ecx
> >
> > +        pxor    xmm7,xmm6
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,ebx
> >
> > +        xor     r12d,edx
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,r9d
> >
> > +        psrlq   xmm6,2
> >
> > +        and     r12d,ebx
> >
> > +        xor     r13d,ebx
> >
> > +        add     r8d,DWORD[12+rsp]
> >
> > +        pxor    xmm7,xmm6
> >
> > +        mov     edi,r9d
> >
> > +        xor     r12d,edx
> >
> > +        ror     r14d,11
> >
> > +        pshufd  xmm7,xmm7,8
> >
> > +        xor     edi,r10d
> >
> > +        add     r8d,r12d
> >
> > +        movdqa  xmm6,XMMWORD[rbp]
> >
> > +        ror     r13d,6
> >
> > +        and     r15d,edi
> >
> > +        pslldq  xmm7,8
> >
> > +        xor     r14d,r9d
> >
> > +        add     r8d,r13d
> >
> > +        xor     r15d,r10d
> >
> > +        paddd   xmm0,xmm7
> >
> > +        ror     r14d,2
> >
> > +        add     eax,r8d
> >
> > +        add     r8d,r15d
> >
> > +        paddd   xmm6,xmm0
> >
> > +        mov     r13d,eax
> >
> > +        add     r14d,r8d
> >
> > +        movdqa  XMMWORD[rsp],xmm6
> >
> > +        ror     r13d,14
> >
> > +        movdqa  xmm4,xmm2
> >
> > +        mov     r8d,r14d
> >
> > +        mov     r12d,ebx
> >
> > +        movdqa  xmm7,xmm0
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,eax
> >
> > +        xor     r12d,ecx
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,r8d
> >
> > +DB      102,15,58,15,225,4
> >
> > +        and     r12d,eax
> >
> > +        xor     r13d,eax
> >
> > +DB      102,15,58,15,251,4
> >
> > +        add     edx,DWORD[16+rsp]
> >
> > +        mov     r15d,r8d
> >
> > +        xor     r12d,ecx
> >
> > +        ror     r14d,11
> >
> > +        movdqa  xmm5,xmm4
> >
> > +        xor     r15d,r9d
> >
> > +        add     edx,r12d
> >
> > +        movdqa  xmm6,xmm4
> >
> > +        ror     r13d,6
> >
> > +        and     edi,r15d
> >
> > +        psrld   xmm4,3
> >
> > +        xor     r14d,r8d
> >
> > +        add     edx,r13d
> >
> > +        xor     edi,r9d
> >
> > +        paddd   xmm1,xmm7
> >
> > +        ror     r14d,2
> >
> > +        add     r11d,edx
> >
> > +        psrld   xmm6,7
> >
> > +        add     edx,edi
> >
> > +        mov     r13d,r11d
> >
> > +        pshufd  xmm7,xmm0,250
> >
> > +        add     r14d,edx
> >
> > +        ror     r13d,14
> >
> > +        pslld   xmm5,14
> >
> > +        mov     edx,r14d
> >
> > +        mov     r12d,eax
> >
> > +        pxor    xmm4,xmm6
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,r11d
> >
> > +        xor     r12d,ebx
> >
> > +        ror     r13d,5
> >
> > +        psrld   xmm6,11
> >
> > +        xor     r14d,edx
> >
> > +        pxor    xmm4,xmm5
> >
> > +        and     r12d,r11d
> >
> > +        xor     r13d,r11d
> >
> > +        pslld   xmm5,11
> >
> > +        add     ecx,DWORD[20+rsp]
> >
> > +        mov     edi,edx
> >
> > +        pxor    xmm4,xmm6
> >
> > +        xor     r12d,ebx
> >
> > +        ror     r14d,11
> >
> > +        movdqa  xmm6,xmm7
> >
> > +        xor     edi,r8d
> >
> > +        add     ecx,r12d
> >
> > +        pxor    xmm4,xmm5
> >
> > +        ror     r13d,6
> >
> > +        and     r15d,edi
> >
> > +        xor     r14d,edx
> >
> > +        psrld   xmm7,10
> >
> > +        add     ecx,r13d
> >
> > +        xor     r15d,r8d
> >
> > +        paddd   xmm1,xmm4
> >
> > +        ror     r14d,2
> >
> > +        add     r10d,ecx
> >
> > +        psrlq   xmm6,17
> >
> > +        add     ecx,r15d
> >
> > +        mov     r13d,r10d
> >
> > +        add     r14d,ecx
> >
> > +        pxor    xmm7,xmm6
> >
> > +        ror     r13d,14
> >
> > +        mov     ecx,r14d
> >
> > +        mov     r12d,r11d
> >
> > +        ror     r14d,9
> >
> > +        psrlq   xmm6,2
> >
> > +        xor     r13d,r10d
> >
> > +        xor     r12d,eax
> >
> > +        pxor    xmm7,xmm6
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,ecx
> >
> > +        and     r12d,r10d
> >
> > +        pshufd  xmm7,xmm7,128
> >
> > +        xor     r13d,r10d
> >
> > +        add     ebx,DWORD[24+rsp]
> >
> > +        mov     r15d,ecx
> >
> > +        psrldq  xmm7,8
> >
> > +        xor     r12d,eax
> >
> > +        ror     r14d,11
> >
> > +        xor     r15d,edx
> >
> > +        add     ebx,r12d
> >
> > +        ror     r13d,6
> >
> > +        paddd   xmm1,xmm7
> >
> > +        and     edi,r15d
> >
> > +        xor     r14d,ecx
> >
> > +        add     ebx,r13d
> >
> > +        pshufd  xmm7,xmm1,80
> >
> > +        xor     edi,edx
> >
> > +        ror     r14d,2
> >
> > +        add     r9d,ebx
> >
> > +        movdqa  xmm6,xmm7
> >
> > +        add     ebx,edi
> >
> > +        mov     r13d,r9d
> >
> > +        psrld   xmm7,10
> >
> > +        add     r14d,ebx
> >
> > +        ror     r13d,14
> >
> > +        psrlq   xmm6,17
> >
> > +        mov     ebx,r14d
> >
> > +        mov     r12d,r10d
> >
> > +        pxor    xmm7,xmm6
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,r9d
> >
> > +        xor     r12d,r11d
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,ebx
> >
> > +        psrlq   xmm6,2
> >
> > +        and     r12d,r9d
> >
> > +        xor     r13d,r9d
> >
> > +        add     eax,DWORD[28+rsp]
> >
> > +        pxor    xmm7,xmm6
> >
> > +        mov     edi,ebx
> >
> > +        xor     r12d,r11d
> >
> > +        ror     r14d,11
> >
> > +        pshufd  xmm7,xmm7,8
> >
> > +        xor     edi,ecx
> >
> > +        add     eax,r12d
> >
> > +        movdqa  xmm6,XMMWORD[32+rbp]
> >
> > +        ror     r13d,6
> >
> > +        and     r15d,edi
> >
> > +        pslldq  xmm7,8
> >
> > +        xor     r14d,ebx
> >
> > +        add     eax,r13d
> >
> > +        xor     r15d,ecx
> >
> > +        paddd   xmm1,xmm7
> >
> > +        ror     r14d,2
> >
> > +        add     r8d,eax
> >
> > +        add     eax,r15d
> >
> > +        paddd   xmm6,xmm1
> >
> > +        mov     r13d,r8d
> >
> > +        add     r14d,eax
> >
> > +        movdqa  XMMWORD[16+rsp],xmm6
> >
> > +        ror     r13d,14
> >
> > +        movdqa  xmm4,xmm3
> >
> > +        mov     eax,r14d
> >
> > +        mov     r12d,r9d
> >
> > +        movdqa  xmm7,xmm1
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,r8d
> >
> > +        xor     r12d,r10d
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,eax
> >
> > +DB      102,15,58,15,226,4
> >
> > +        and     r12d,r8d
> >
> > +        xor     r13d,r8d
> >
> > +DB      102,15,58,15,248,4
> >
> > +        add     r11d,DWORD[32+rsp]
> >
> > +        mov     r15d,eax
> >
> > +        xor     r12d,r10d
> >
> > +        ror     r14d,11
> >
> > +        movdqa  xmm5,xmm4
> >
> > +        xor     r15d,ebx
> >
> > +        add     r11d,r12d
> >
> > +        movdqa  xmm6,xmm4
> >
> > +        ror     r13d,6
> >
> > +        and     edi,r15d
> >
> > +        psrld   xmm4,3
> >
> > +        xor     r14d,eax
> >
> > +        add     r11d,r13d
> >
> > +        xor     edi,ebx
> >
> > +        paddd   xmm2,xmm7
> >
> > +        ror     r14d,2
> >
> > +        add     edx,r11d
> >
> > +        psrld   xmm6,7
> >
> > +        add     r11d,edi
> >
> > +        mov     r13d,edx
> >
> > +        pshufd  xmm7,xmm1,250
> >
> > +        add     r14d,r11d
> >
> > +        ror     r13d,14
> >
> > +        pslld   xmm5,14
> >
> > +        mov     r11d,r14d
> >
> > +        mov     r12d,r8d
> >
> > +        pxor    xmm4,xmm6
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,edx
> >
> > +        xor     r12d,r9d
> >
> > +        ror     r13d,5
> >
> > +        psrld   xmm6,11
> >
> > +        xor     r14d,r11d
> >
> > +        pxor    xmm4,xmm5
> >
> > +        and     r12d,edx
> >
> > +        xor     r13d,edx
> >
> > +        pslld   xmm5,11
> >
> > +        add     r10d,DWORD[36+rsp]
> >
> > +        mov     edi,r11d
> >
> > +        pxor    xmm4,xmm6
> >
> > +        xor     r12d,r9d
> >
> > +        ror     r14d,11
> >
> > +        movdqa  xmm6,xmm7
> >
> > +        xor     edi,eax
> >
> > +        add     r10d,r12d
> >
> > +        pxor    xmm4,xmm5
> >
> > +        ror     r13d,6
> >
> > +        and     r15d,edi
> >
> > +        xor     r14d,r11d
> >
> > +        psrld   xmm7,10
> >
> > +        add     r10d,r13d
> >
> > +        xor     r15d,eax
> >
> > +        paddd   xmm2,xmm4
> >
> > +        ror     r14d,2
> >
> > +        add     ecx,r10d
> >
> > +        psrlq   xmm6,17
> >
> > +        add     r10d,r15d
> >
> > +        mov     r13d,ecx
> >
> > +        add     r14d,r10d
> >
> > +        pxor    xmm7,xmm6
> >
> > +        ror     r13d,14
> >
> > +        mov     r10d,r14d
> >
> > +        mov     r12d,edx
> >
> > +        ror     r14d,9
> >
> > +        psrlq   xmm6,2
> >
> > +        xor     r13d,ecx
> >
> > +        xor     r12d,r8d
> >
> > +        pxor    xmm7,xmm6
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,r10d
> >
> > +        and     r12d,ecx
> >
> > +        pshufd  xmm7,xmm7,128
> >
> > +        xor     r13d,ecx
> >
> > +        add     r9d,DWORD[40+rsp]
> >
> > +        mov     r15d,r10d
> >
> > +        psrldq  xmm7,8
> >
> > +        xor     r12d,r8d
> >
> > +        ror     r14d,11
> >
> > +        xor     r15d,r11d
> >
> > +        add     r9d,r12d
> >
> > +        ror     r13d,6
> >
> > +        paddd   xmm2,xmm7
> >
> > +        and     edi,r15d
> >
> > +        xor     r14d,r10d
> >
> > +        add     r9d,r13d
> >
> > +        pshufd  xmm7,xmm2,80
> >
> > +        xor     edi,r11d
> >
> > +        ror     r14d,2
> >
> > +        add     ebx,r9d
> >
> > +        movdqa  xmm6,xmm7
> >
> > +        add     r9d,edi
> >
> > +        mov     r13d,ebx
> >
> > +        psrld   xmm7,10
> >
> > +        add     r14d,r9d
> >
> > +        ror     r13d,14
> >
> > +        psrlq   xmm6,17
> >
> > +        mov     r9d,r14d
> >
> > +        mov     r12d,ecx
> >
> > +        pxor    xmm7,xmm6
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,ebx
> >
> > +        xor     r12d,edx
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,r9d
> >
> > +        psrlq   xmm6,2
> >
> > +        and     r12d,ebx
> >
> > +        xor     r13d,ebx
> >
> > +        add     r8d,DWORD[44+rsp]
> >
> > +        pxor    xmm7,xmm6
> >
> > +        mov     edi,r9d
> >
> > +        xor     r12d,edx
> >
> > +        ror     r14d,11
> >
> > +        pshufd  xmm7,xmm7,8
> >
> > +        xor     edi,r10d
> >
> > +        add     r8d,r12d
> >
> > +        movdqa  xmm6,XMMWORD[64+rbp]
> >
> > +        ror     r13d,6
> >
> > +        and     r15d,edi
> >
> > +        pslldq  xmm7,8
> >
> > +        xor     r14d,r9d
> >
> > +        add     r8d,r13d
> >
> > +        xor     r15d,r10d
> >
> > +        paddd   xmm2,xmm7
> >
> > +        ror     r14d,2
> >
> > +        add     eax,r8d
> >
> > +        add     r8d,r15d
> >
> > +        paddd   xmm6,xmm2
> >
> > +        mov     r13d,eax
> >
> > +        add     r14d,r8d
> >
> > +        movdqa  XMMWORD[32+rsp],xmm6
> >
> > +        ror     r13d,14
> >
> > +        movdqa  xmm4,xmm0
> >
> > +        mov     r8d,r14d
> >
> > +        mov     r12d,ebx
> >
> > +        movdqa  xmm7,xmm2
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,eax
> >
> > +        xor     r12d,ecx
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,r8d
> >
> > +DB      102,15,58,15,227,4
> >
> > +        and     r12d,eax
> >
> > +        xor     r13d,eax
> >
> > +DB      102,15,58,15,249,4
> >
> > +        add     edx,DWORD[48+rsp]
> >
> > +        mov     r15d,r8d
> >
> > +        xor     r12d,ecx
> >
> > +        ror     r14d,11
> >
> > +        movdqa  xmm5,xmm4
> >
> > +        xor     r15d,r9d
> >
> > +        add     edx,r12d
> >
> > +        movdqa  xmm6,xmm4
> >
> > +        ror     r13d,6
> >
> > +        and     edi,r15d
> >
> > +        psrld   xmm4,3
> >
> > +        xor     r14d,r8d
> >
> > +        add     edx,r13d
> >
> > +        xor     edi,r9d
> >
> > +        paddd   xmm3,xmm7
> >
> > +        ror     r14d,2
> >
> > +        add     r11d,edx
> >
> > +        psrld   xmm6,7
> >
> > +        add     edx,edi
> >
> > +        mov     r13d,r11d
> >
> > +        pshufd  xmm7,xmm2,250
> >
> > +        add     r14d,edx
> >
> > +        ror     r13d,14
> >
> > +        pslld   xmm5,14
> >
> > +        mov     edx,r14d
> >
> > +        mov     r12d,eax
> >
> > +        pxor    xmm4,xmm6
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,r11d
> >
> > +        xor     r12d,ebx
> >
> > +        ror     r13d,5
> >
> > +        psrld   xmm6,11
> >
> > +        xor     r14d,edx
> >
> > +        pxor    xmm4,xmm5
> >
> > +        and     r12d,r11d
> >
> > +        xor     r13d,r11d
> >
> > +        pslld   xmm5,11
> >
> > +        add     ecx,DWORD[52+rsp]
> >
> > +        mov     edi,edx
> >
> > +        pxor    xmm4,xmm6
> >
> > +        xor     r12d,ebx
> >
> > +        ror     r14d,11
> >
> > +        movdqa  xmm6,xmm7
> >
> > +        xor     edi,r8d
> >
> > +        add     ecx,r12d
> >
> > +        pxor    xmm4,xmm5
> >
> > +        ror     r13d,6
> >
> > +        and     r15d,edi
> >
> > +        xor     r14d,edx
> >
> > +        psrld   xmm7,10
> >
> > +        add     ecx,r13d
> >
> > +        xor     r15d,r8d
> >
> > +        paddd   xmm3,xmm4
> >
> > +        ror     r14d,2
> >
> > +        add     r10d,ecx
> >
> > +        psrlq   xmm6,17
> >
> > +        add     ecx,r15d
> >
> > +        mov     r13d,r10d
> >
> > +        add     r14d,ecx
> >
> > +        pxor    xmm7,xmm6
> >
> > +        ror     r13d,14
> >
> > +        mov     ecx,r14d
> >
> > +        mov     r12d,r11d
> >
> > +        ror     r14d,9
> >
> > +        psrlq   xmm6,2
> >
> > +        xor     r13d,r10d
> >
> > +        xor     r12d,eax
> >
> > +        pxor    xmm7,xmm6
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,ecx
> >
> > +        and     r12d,r10d
> >
> > +        pshufd  xmm7,xmm7,128
> >
> > +        xor     r13d,r10d
> >
> > +        add     ebx,DWORD[56+rsp]
> >
> > +        mov     r15d,ecx
> >
> > +        psrldq  xmm7,8
> >
> > +        xor     r12d,eax
> >
> > +        ror     r14d,11
> >
> > +        xor     r15d,edx
> >
> > +        add     ebx,r12d
> >
> > +        ror     r13d,6
> >
> > +        paddd   xmm3,xmm7
> >
> > +        and     edi,r15d
> >
> > +        xor     r14d,ecx
> >
> > +        add     ebx,r13d
> >
> > +        pshufd  xmm7,xmm3,80
> >
> > +        xor     edi,edx
> >
> > +        ror     r14d,2
> >
> > +        add     r9d,ebx
> >
> > +        movdqa  xmm6,xmm7
> >
> > +        add     ebx,edi
> >
> > +        mov     r13d,r9d
> >
> > +        psrld   xmm7,10
> >
> > +        add     r14d,ebx
> >
> > +        ror     r13d,14
> >
> > +        psrlq   xmm6,17
> >
> > +        mov     ebx,r14d
> >
> > +        mov     r12d,r10d
> >
> > +        pxor    xmm7,xmm6
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,r9d
> >
> > +        xor     r12d,r11d
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,ebx
> >
> > +        psrlq   xmm6,2
> >
> > +        and     r12d,r9d
> >
> > +        xor     r13d,r9d
> >
> > +        add     eax,DWORD[60+rsp]
> >
> > +        pxor    xmm7,xmm6
> >
> > +        mov     edi,ebx
> >
> > +        xor     r12d,r11d
> >
> > +        ror     r14d,11
> >
> > +        pshufd  xmm7,xmm7,8
> >
> > +        xor     edi,ecx
> >
> > +        add     eax,r12d
> >
> > +        movdqa  xmm6,XMMWORD[96+rbp]
> >
> > +        ror     r13d,6
> >
> > +        and     r15d,edi
> >
> > +        pslldq  xmm7,8
> >
> > +        xor     r14d,ebx
> >
> > +        add     eax,r13d
> >
> > +        xor     r15d,ecx
> >
> > +        paddd   xmm3,xmm7
> >
> > +        ror     r14d,2
> >
> > +        add     r8d,eax
> >
> > +        add     eax,r15d
> >
> > +        paddd   xmm6,xmm3
> >
> > +        mov     r13d,r8d
> >
> > +        add     r14d,eax
> >
> > +        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
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,r8d
> >
> > +        xor     r12d,r10d
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,eax
> >
> > +        and     r12d,r8d
> >
> > +        xor     r13d,r8d
> >
> > +        add     r11d,DWORD[rsp]
> >
> > +        mov     r15d,eax
> >
> > +        xor     r12d,r10d
> >
> > +        ror     r14d,11
> >
> > +        xor     r15d,ebx
> >
> > +        add     r11d,r12d
> >
> > +        ror     r13d,6
> >
> > +        and     edi,r15d
> >
> > +        xor     r14d,eax
> >
> > +        add     r11d,r13d
> >
> > +        xor     edi,ebx
> >
> > +        ror     r14d,2
> >
> > +        add     edx,r11d
> >
> > +        add     r11d,edi
> >
> > +        mov     r13d,edx
> >
> > +        add     r14d,r11d
> >
> > +        ror     r13d,14
> >
> > +        mov     r11d,r14d
> >
> > +        mov     r12d,r8d
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,edx
> >
> > +        xor     r12d,r9d
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,r11d
> >
> > +        and     r12d,edx
> >
> > +        xor     r13d,edx
> >
> > +        add     r10d,DWORD[4+rsp]
> >
> > +        mov     edi,r11d
> >
> > +        xor     r12d,r9d
> >
> > +        ror     r14d,11
> >
> > +        xor     edi,eax
> >
> > +        add     r10d,r12d
> >
> > +        ror     r13d,6
> >
> > +        and     r15d,edi
> >
> > +        xor     r14d,r11d
> >
> > +        add     r10d,r13d
> >
> > +        xor     r15d,eax
> >
> > +        ror     r14d,2
> >
> > +        add     ecx,r10d
> >
> > +        add     r10d,r15d
> >
> > +        mov     r13d,ecx
> >
> > +        add     r14d,r10d
> >
> > +        ror     r13d,14
> >
> > +        mov     r10d,r14d
> >
> > +        mov     r12d,edx
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,ecx
> >
> > +        xor     r12d,r8d
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,r10d
> >
> > +        and     r12d,ecx
> >
> > +        xor     r13d,ecx
> >
> > +        add     r9d,DWORD[8+rsp]
> >
> > +        mov     r15d,r10d
> >
> > +        xor     r12d,r8d
> >
> > +        ror     r14d,11
> >
> > +        xor     r15d,r11d
> >
> > +        add     r9d,r12d
> >
> > +        ror     r13d,6
> >
> > +        and     edi,r15d
> >
> > +        xor     r14d,r10d
> >
> > +        add     r9d,r13d
> >
> > +        xor     edi,r11d
> >
> > +        ror     r14d,2
> >
> > +        add     ebx,r9d
> >
> > +        add     r9d,edi
> >
> > +        mov     r13d,ebx
> >
> > +        add     r14d,r9d
> >
> > +        ror     r13d,14
> >
> > +        mov     r9d,r14d
> >
> > +        mov     r12d,ecx
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,ebx
> >
> > +        xor     r12d,edx
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,r9d
> >
> > +        and     r12d,ebx
> >
> > +        xor     r13d,ebx
> >
> > +        add     r8d,DWORD[12+rsp]
> >
> > +        mov     edi,r9d
> >
> > +        xor     r12d,edx
> >
> > +        ror     r14d,11
> >
> > +        xor     edi,r10d
> >
> > +        add     r8d,r12d
> >
> > +        ror     r13d,6
> >
> > +        and     r15d,edi
> >
> > +        xor     r14d,r9d
> >
> > +        add     r8d,r13d
> >
> > +        xor     r15d,r10d
> >
> > +        ror     r14d,2
> >
> > +        add     eax,r8d
> >
> > +        add     r8d,r15d
> >
> > +        mov     r13d,eax
> >
> > +        add     r14d,r8d
> >
> > +        ror     r13d,14
> >
> > +        mov     r8d,r14d
> >
> > +        mov     r12d,ebx
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,eax
> >
> > +        xor     r12d,ecx
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,r8d
> >
> > +        and     r12d,eax
> >
> > +        xor     r13d,eax
> >
> > +        add     edx,DWORD[16+rsp]
> >
> > +        mov     r15d,r8d
> >
> > +        xor     r12d,ecx
> >
> > +        ror     r14d,11
> >
> > +        xor     r15d,r9d
> >
> > +        add     edx,r12d
> >
> > +        ror     r13d,6
> >
> > +        and     edi,r15d
> >
> > +        xor     r14d,r8d
> >
> > +        add     edx,r13d
> >
> > +        xor     edi,r9d
> >
> > +        ror     r14d,2
> >
> > +        add     r11d,edx
> >
> > +        add     edx,edi
> >
> > +        mov     r13d,r11d
> >
> > +        add     r14d,edx
> >
> > +        ror     r13d,14
> >
> > +        mov     edx,r14d
> >
> > +        mov     r12d,eax
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,r11d
> >
> > +        xor     r12d,ebx
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,edx
> >
> > +        and     r12d,r11d
> >
> > +        xor     r13d,r11d
> >
> > +        add     ecx,DWORD[20+rsp]
> >
> > +        mov     edi,edx
> >
> > +        xor     r12d,ebx
> >
> > +        ror     r14d,11
> >
> > +        xor     edi,r8d
> >
> > +        add     ecx,r12d
> >
> > +        ror     r13d,6
> >
> > +        and     r15d,edi
> >
> > +        xor     r14d,edx
> >
> > +        add     ecx,r13d
> >
> > +        xor     r15d,r8d
> >
> > +        ror     r14d,2
> >
> > +        add     r10d,ecx
> >
> > +        add     ecx,r15d
> >
> > +        mov     r13d,r10d
> >
> > +        add     r14d,ecx
> >
> > +        ror     r13d,14
> >
> > +        mov     ecx,r14d
> >
> > +        mov     r12d,r11d
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,r10d
> >
> > +        xor     r12d,eax
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,ecx
> >
> > +        and     r12d,r10d
> >
> > +        xor     r13d,r10d
> >
> > +        add     ebx,DWORD[24+rsp]
> >
> > +        mov     r15d,ecx
> >
> > +        xor     r12d,eax
> >
> > +        ror     r14d,11
> >
> > +        xor     r15d,edx
> >
> > +        add     ebx,r12d
> >
> > +        ror     r13d,6
> >
> > +        and     edi,r15d
> >
> > +        xor     r14d,ecx
> >
> > +        add     ebx,r13d
> >
> > +        xor     edi,edx
> >
> > +        ror     r14d,2
> >
> > +        add     r9d,ebx
> >
> > +        add     ebx,edi
> >
> > +        mov     r13d,r9d
> >
> > +        add     r14d,ebx
> >
> > +        ror     r13d,14
> >
> > +        mov     ebx,r14d
> >
> > +        mov     r12d,r10d
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,r9d
> >
> > +        xor     r12d,r11d
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,ebx
> >
> > +        and     r12d,r9d
> >
> > +        xor     r13d,r9d
> >
> > +        add     eax,DWORD[28+rsp]
> >
> > +        mov     edi,ebx
> >
> > +        xor     r12d,r11d
> >
> > +        ror     r14d,11
> >
> > +        xor     edi,ecx
> >
> > +        add     eax,r12d
> >
> > +        ror     r13d,6
> >
> > +        and     r15d,edi
> >
> > +        xor     r14d,ebx
> >
> > +        add     eax,r13d
> >
> > +        xor     r15d,ecx
> >
> > +        ror     r14d,2
> >
> > +        add     r8d,eax
> >
> > +        add     eax,r15d
> >
> > +        mov     r13d,r8d
> >
> > +        add     r14d,eax
> >
> > +        ror     r13d,14
> >
> > +        mov     eax,r14d
> >
> > +        mov     r12d,r9d
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,r8d
> >
> > +        xor     r12d,r10d
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,eax
> >
> > +        and     r12d,r8d
> >
> > +        xor     r13d,r8d
> >
> > +        add     r11d,DWORD[32+rsp]
> >
> > +        mov     r15d,eax
> >
> > +        xor     r12d,r10d
> >
> > +        ror     r14d,11
> >
> > +        xor     r15d,ebx
> >
> > +        add     r11d,r12d
> >
> > +        ror     r13d,6
> >
> > +        and     edi,r15d
> >
> > +        xor     r14d,eax
> >
> > +        add     r11d,r13d
> >
> > +        xor     edi,ebx
> >
> > +        ror     r14d,2
> >
> > +        add     edx,r11d
> >
> > +        add     r11d,edi
> >
> > +        mov     r13d,edx
> >
> > +        add     r14d,r11d
> >
> > +        ror     r13d,14
> >
> > +        mov     r11d,r14d
> >
> > +        mov     r12d,r8d
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,edx
> >
> > +        xor     r12d,r9d
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,r11d
> >
> > +        and     r12d,edx
> >
> > +        xor     r13d,edx
> >
> > +        add     r10d,DWORD[36+rsp]
> >
> > +        mov     edi,r11d
> >
> > +        xor     r12d,r9d
> >
> > +        ror     r14d,11
> >
> > +        xor     edi,eax
> >
> > +        add     r10d,r12d
> >
> > +        ror     r13d,6
> >
> > +        and     r15d,edi
> >
> > +        xor     r14d,r11d
> >
> > +        add     r10d,r13d
> >
> > +        xor     r15d,eax
> >
> > +        ror     r14d,2
> >
> > +        add     ecx,r10d
> >
> > +        add     r10d,r15d
> >
> > +        mov     r13d,ecx
> >
> > +        add     r14d,r10d
> >
> > +        ror     r13d,14
> >
> > +        mov     r10d,r14d
> >
> > +        mov     r12d,edx
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,ecx
> >
> > +        xor     r12d,r8d
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,r10d
> >
> > +        and     r12d,ecx
> >
> > +        xor     r13d,ecx
> >
> > +        add     r9d,DWORD[40+rsp]
> >
> > +        mov     r15d,r10d
> >
> > +        xor     r12d,r8d
> >
> > +        ror     r14d,11
> >
> > +        xor     r15d,r11d
> >
> > +        add     r9d,r12d
> >
> > +        ror     r13d,6
> >
> > +        and     edi,r15d
> >
> > +        xor     r14d,r10d
> >
> > +        add     r9d,r13d
> >
> > +        xor     edi,r11d
> >
> > +        ror     r14d,2
> >
> > +        add     ebx,r9d
> >
> > +        add     r9d,edi
> >
> > +        mov     r13d,ebx
> >
> > +        add     r14d,r9d
> >
> > +        ror     r13d,14
> >
> > +        mov     r9d,r14d
> >
> > +        mov     r12d,ecx
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,ebx
> >
> > +        xor     r12d,edx
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,r9d
> >
> > +        and     r12d,ebx
> >
> > +        xor     r13d,ebx
> >
> > +        add     r8d,DWORD[44+rsp]
> >
> > +        mov     edi,r9d
> >
> > +        xor     r12d,edx
> >
> > +        ror     r14d,11
> >
> > +        xor     edi,r10d
> >
> > +        add     r8d,r12d
> >
> > +        ror     r13d,6
> >
> > +        and     r15d,edi
> >
> > +        xor     r14d,r9d
> >
> > +        add     r8d,r13d
> >
> > +        xor     r15d,r10d
> >
> > +        ror     r14d,2
> >
> > +        add     eax,r8d
> >
> > +        add     r8d,r15d
> >
> > +        mov     r13d,eax
> >
> > +        add     r14d,r8d
> >
> > +        ror     r13d,14
> >
> > +        mov     r8d,r14d
> >
> > +        mov     r12d,ebx
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,eax
> >
> > +        xor     r12d,ecx
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,r8d
> >
> > +        and     r12d,eax
> >
> > +        xor     r13d,eax
> >
> > +        add     edx,DWORD[48+rsp]
> >
> > +        mov     r15d,r8d
> >
> > +        xor     r12d,ecx
> >
> > +        ror     r14d,11
> >
> > +        xor     r15d,r9d
> >
> > +        add     edx,r12d
> >
> > +        ror     r13d,6
> >
> > +        and     edi,r15d
> >
> > +        xor     r14d,r8d
> >
> > +        add     edx,r13d
> >
> > +        xor     edi,r9d
> >
> > +        ror     r14d,2
> >
> > +        add     r11d,edx
> >
> > +        add     edx,edi
> >
> > +        mov     r13d,r11d
> >
> > +        add     r14d,edx
> >
> > +        ror     r13d,14
> >
> > +        mov     edx,r14d
> >
> > +        mov     r12d,eax
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,r11d
> >
> > +        xor     r12d,ebx
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,edx
> >
> > +        and     r12d,r11d
> >
> > +        xor     r13d,r11d
> >
> > +        add     ecx,DWORD[52+rsp]
> >
> > +        mov     edi,edx
> >
> > +        xor     r12d,ebx
> >
> > +        ror     r14d,11
> >
> > +        xor     edi,r8d
> >
> > +        add     ecx,r12d
> >
> > +        ror     r13d,6
> >
> > +        and     r15d,edi
> >
> > +        xor     r14d,edx
> >
> > +        add     ecx,r13d
> >
> > +        xor     r15d,r8d
> >
> > +        ror     r14d,2
> >
> > +        add     r10d,ecx
> >
> > +        add     ecx,r15d
> >
> > +        mov     r13d,r10d
> >
> > +        add     r14d,ecx
> >
> > +        ror     r13d,14
> >
> > +        mov     ecx,r14d
> >
> > +        mov     r12d,r11d
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,r10d
> >
> > +        xor     r12d,eax
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,ecx
> >
> > +        and     r12d,r10d
> >
> > +        xor     r13d,r10d
> >
> > +        add     ebx,DWORD[56+rsp]
> >
> > +        mov     r15d,ecx
> >
> > +        xor     r12d,eax
> >
> > +        ror     r14d,11
> >
> > +        xor     r15d,edx
> >
> > +        add     ebx,r12d
> >
> > +        ror     r13d,6
> >
> > +        and     edi,r15d
> >
> > +        xor     r14d,ecx
> >
> > +        add     ebx,r13d
> >
> > +        xor     edi,edx
> >
> > +        ror     r14d,2
> >
> > +        add     r9d,ebx
> >
> > +        add     ebx,edi
> >
> > +        mov     r13d,r9d
> >
> > +        add     r14d,ebx
> >
> > +        ror     r13d,14
> >
> > +        mov     ebx,r14d
> >
> > +        mov     r12d,r10d
> >
> > +        ror     r14d,9
> >
> > +        xor     r13d,r9d
> >
> > +        xor     r12d,r11d
> >
> > +        ror     r13d,5
> >
> > +        xor     r14d,ebx
> >
> > +        and     r12d,r9d
> >
> > +        xor     r13d,r9d
> >
> > +        add     eax,DWORD[60+rsp]
> >
> > +        mov     edi,ebx
> >
> > +        xor     r12d,r11d
> >
> > +        ror     r14d,11
> >
> > +        xor     edi,ecx
> >
> > +        add     eax,r12d
> >
> > +        ror     r13d,6
> >
> > +        and     r15d,edi
> >
> > +        xor     r14d,ebx
> >
> > +        add     eax,r13d
> >
> > +        xor     r15d,ecx
> >
> > +        ror     r14d,2
> >
> > +        add     r8d,eax
> >
> > +        add     eax,r15d
> >
> > +        mov     r13d,r8d
> >
> > +        add     r14d,eax
> >
> > +        mov     rdi,QWORD[((64+0))+rsp]
> >
> > +        mov     eax,r14d
> >
> > +
> >
> > +        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[((64+16))+rsp]
> >
> > +
> >
> > +        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[88+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[((-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$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:
> >
> > +EXTERN  __imp_RtlVirtualUnwind
> >
> > +
> >
> > +ALIGN   16
> >
> > +se_handler:
> >
> > +        push    rsi
> >
> > +        push    rdi
> >
> > +        push    rbx
> >
> > +        push    rbp
> >
> > +        push    r12
> >
> > +        push    r13
> >
> > +        push    r14
> >
> > +        push    r15
> >
> > +        pushfq
> >
> > +        sub     rsp,64
> >
> > +
> >
> > +        mov     rax,QWORD[120+r8]
> >
> > +        mov     rbx,QWORD[248+r8]
> >
> > +
> >
> > +        mov     rsi,QWORD[8+r9]
> >
> > +        mov     r11,QWORD[56+r9]
> >
> > +
> >
> > +        mov     r10d,DWORD[r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$in_prologue
> >
> > +
> >
> > +        mov     rax,QWORD[152+r8]
> >
> > +
> >
> > +        mov     r10d,DWORD[4+r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jae     NEAR $L$in_prologue
> >
> > +        mov     rsi,rax
> >
> > +        mov     rax,QWORD[((64+24))+rax]
> >
> > +
> >
> > +        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,[$L$epilogue]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$in_prologue
> >
> > +
> >
> > +        lea     rsi,[((64+32))+rsi]
> >
> > +        lea     rdi,[512+r8]
> >
> > +        mov     ecx,8
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +$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[40+r9]
> >
> > +        mov     rsi,r8
> >
> > +        mov     ecx,154
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +        mov     rsi,r9
> >
> > +        xor     rcx,rcx
> >
> > +        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
> >
> > +        popfq
> >
> > +        pop     r15
> >
> > +        pop     r14
> >
> > +        pop     r13
> >
> > +        pop     r12
> >
> > +        pop     rbp
> >
> > +        pop     rbx
> >
> > +        pop     rdi
> >
> > +        pop     rsi
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +ALIGN   16
> >
> > +shaext_handler:
> >
> > +        push    rsi
> >
> > +        push    rdi
> >
> > +        push    rbx
> >
> > +        push    rbp
> >
> > +        push    r12
> >
> > +        push    r13
> >
> > +        push    r14
> >
> > +        push    r15
> >
> > +        pushfq
> >
> > +        sub     rsp,64
> >
> > +
> >
> > +        mov     rax,QWORD[120+r8]
> >
> > +        mov     rbx,QWORD[248+r8]
> >
> > +
> >
> > +        lea     r10,[$L$prologue_shaext]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$in_prologue
> >
> > +
> >
> > +        lea     r10,[$L$epilogue_shaext]
> >
> > +        cmp     rbx,r10
> >
> > +        jae     NEAR $L$in_prologue
> >
> > +
> >
> > +        lea     rsi,[((-8-80))+rax]
> >
> > +        lea     rdi,[512+r8]
> >
> > +        mov     ecx,10
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +        jmp     NEAR $L$in_prologue
> >
> > +
> >
> > +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_shaext wrt ..imagebase
> >
> > +        DD      $L$SEH_end_sha256_block_data_order_shaext wrt ..imagebase
> >
> > +        DD      $L$SEH_info_sha256_block_data_order_shaext 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_shaext:
> >
> > +DB      9,0,0,0
> >
> > +        DD      shaext_handler 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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
> > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
> > new file mode 100644
> > index 0000000000..c6397d4393
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
> > @@ -0,0 +1,1938 @@
> > +; WARNING: do not edit!
> >
> > +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
> >
> > +;
> >
> > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.
> >
> > +;
> >
> > +; Licensed under the OpenSSL license (the "License").  You may not use
> >
> > +; this file except in compliance with the License.  You can obtain a copy
> >
> > +; in the file LICENSE in the source distribution or at
> >
> > +; https://www.openssl.org/source/license.html
> >
> > +
> >
> > +default rel
> >
> > +%define XMMWORD
> >
> > +%define YMMWORD
> >
> > +%define ZMMWORD
> >
> > +section .text code align=64
> >
> > +
> >
> > +
> >
> > +EXTERN  OPENSSL_ia32cap_P
> >
> > +global  sha512_block_data_order
> >
> > +
> >
> > +ALIGN   16
> >
> > +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:
> >
> > +        mov     rdi,rcx
> >
> > +        mov     rsi,rdx
> >
> > +        mov     rdx,r8
> >
> > +
> >
> > +
> >
> > +
> >
> > +        mov     rax,rsp
> >
> > +
> >
> > +        push    rbx
> >
> > +
> >
> > +        push    rbp
> >
> > +
> >
> > +        push    r12
> >
> > +
> >
> > +        push    r13
> >
> > +
> >
> > +        push    r14
> >
> > +
> >
> > +        push    r15
> >
> > +
> >
> > +        shl     rdx,4
> >
> > +        sub     rsp,16*8+4*8
> >
> > +        lea     rdx,[rdx*8+rsi]
> >
> > +        and     rsp,-64
> >
> > +        mov     QWORD[((128+0))+rsp],rdi
> >
> > +        mov     QWORD[((128+8))+rsp],rsi
> >
> > +        mov     QWORD[((128+16))+rsp],rdx
> >
> > +        mov     QWORD[152+rsp],rax
> >
> > +
> >
> > +$L$prologue:
> >
> > +
> >
> > +        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:
> >
> > +        mov     rdi,rbx
> >
> > +        lea     rbp,[K512]
> >
> > +        xor     rdi,rcx
> >
> > +        mov     r12,QWORD[rsi]
> >
> > +        mov     r13,r8
> >
> > +        mov     r14,rax
> >
> > +        bswap   r12
> >
> > +        ror     r13,23
> >
> > +        mov     r15,r9
> >
> > +
> >
> > +        xor     r13,r8
> >
> > +        ror     r14,5
> >
> > +        xor     r15,r10
> >
> > +
> >
> > +        mov     QWORD[rsp],r12
> >
> > +        xor     r14,rax
> >
> > +        and     r15,r8
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,r11
> >
> > +        xor     r15,r10
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,r8
> >
> > +        add     r12,r15
> >
> > +
> >
> > +        mov     r15,rax
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,rax
> >
> > +
> >
> > +        xor     r15,rbx
> >
> > +        ror     r13,14
> >
> > +        mov     r11,rbx
> >
> > +
> >
> > +        and     rdi,r15
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     r11,rdi
> >
> > +        add     rdx,r12
> >
> > +        add     r11,r12
> >
> > +
> >
> > +        lea     rbp,[8+rbp]
> >
> > +        add     r11,r14
> >
> > +        mov     r12,QWORD[8+rsi]
> >
> > +        mov     r13,rdx
> >
> > +        mov     r14,r11
> >
> > +        bswap   r12
> >
> > +        ror     r13,23
> >
> > +        mov     rdi,r8
> >
> > +
> >
> > +        xor     r13,rdx
> >
> > +        ror     r14,5
> >
> > +        xor     rdi,r9
> >
> > +
> >
> > +        mov     QWORD[8+rsp],r12
> >
> > +        xor     r14,r11
> >
> > +        and     rdi,rdx
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,r10
> >
> > +        xor     rdi,r9
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,rdx
> >
> > +        add     r12,rdi
> >
> > +
> >
> > +        mov     rdi,r11
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,r11
> >
> > +
> >
> > +        xor     rdi,rax
> >
> > +        ror     r13,14
> >
> > +        mov     r10,rax
> >
> > +
> >
> > +        and     r15,rdi
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     r10,r15
> >
> > +        add     rcx,r12
> >
> > +        add     r10,r12
> >
> > +
> >
> > +        lea     rbp,[24+rbp]
> >
> > +        add     r10,r14
> >
> > +        mov     r12,QWORD[16+rsi]
> >
> > +        mov     r13,rcx
> >
> > +        mov     r14,r10
> >
> > +        bswap   r12
> >
> > +        ror     r13,23
> >
> > +        mov     r15,rdx
> >
> > +
> >
> > +        xor     r13,rcx
> >
> > +        ror     r14,5
> >
> > +        xor     r15,r8
> >
> > +
> >
> > +        mov     QWORD[16+rsp],r12
> >
> > +        xor     r14,r10
> >
> > +        and     r15,rcx
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,r9
> >
> > +        xor     r15,r8
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,rcx
> >
> > +        add     r12,r15
> >
> > +
> >
> > +        mov     r15,r10
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,r10
> >
> > +
> >
> > +        xor     r15,r11
> >
> > +        ror     r13,14
> >
> > +        mov     r9,r11
> >
> > +
> >
> > +        and     rdi,r15
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     r9,rdi
> >
> > +        add     rbx,r12
> >
> > +        add     r9,r12
> >
> > +
> >
> > +        lea     rbp,[8+rbp]
> >
> > +        add     r9,r14
> >
> > +        mov     r12,QWORD[24+rsi]
> >
> > +        mov     r13,rbx
> >
> > +        mov     r14,r9
> >
> > +        bswap   r12
> >
> > +        ror     r13,23
> >
> > +        mov     rdi,rcx
> >
> > +
> >
> > +        xor     r13,rbx
> >
> > +        ror     r14,5
> >
> > +        xor     rdi,rdx
> >
> > +
> >
> > +        mov     QWORD[24+rsp],r12
> >
> > +        xor     r14,r9
> >
> > +        and     rdi,rbx
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,r8
> >
> > +        xor     rdi,rdx
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,rbx
> >
> > +        add     r12,rdi
> >
> > +
> >
> > +        mov     rdi,r9
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,r9
> >
> > +
> >
> > +        xor     rdi,r10
> >
> > +        ror     r13,14
> >
> > +        mov     r8,r10
> >
> > +
> >
> > +        and     r15,rdi
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     r8,r15
> >
> > +        add     rax,r12
> >
> > +        add     r8,r12
> >
> > +
> >
> > +        lea     rbp,[24+rbp]
> >
> > +        add     r8,r14
> >
> > +        mov     r12,QWORD[32+rsi]
> >
> > +        mov     r13,rax
> >
> > +        mov     r14,r8
> >
> > +        bswap   r12
> >
> > +        ror     r13,23
> >
> > +        mov     r15,rbx
> >
> > +
> >
> > +        xor     r13,rax
> >
> > +        ror     r14,5
> >
> > +        xor     r15,rcx
> >
> > +
> >
> > +        mov     QWORD[32+rsp],r12
> >
> > +        xor     r14,r8
> >
> > +        and     r15,rax
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,rdx
> >
> > +        xor     r15,rcx
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,rax
> >
> > +        add     r12,r15
> >
> > +
> >
> > +        mov     r15,r8
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,r8
> >
> > +
> >
> > +        xor     r15,r9
> >
> > +        ror     r13,14
> >
> > +        mov     rdx,r9
> >
> > +
> >
> > +        and     rdi,r15
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     rdx,rdi
> >
> > +        add     r11,r12
> >
> > +        add     rdx,r12
> >
> > +
> >
> > +        lea     rbp,[8+rbp]
> >
> > +        add     rdx,r14
> >
> > +        mov     r12,QWORD[40+rsi]
> >
> > +        mov     r13,r11
> >
> > +        mov     r14,rdx
> >
> > +        bswap   r12
> >
> > +        ror     r13,23
> >
> > +        mov     rdi,rax
> >
> > +
> >
> > +        xor     r13,r11
> >
> > +        ror     r14,5
> >
> > +        xor     rdi,rbx
> >
> > +
> >
> > +        mov     QWORD[40+rsp],r12
> >
> > +        xor     r14,rdx
> >
> > +        and     rdi,r11
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,rcx
> >
> > +        xor     rdi,rbx
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,r11
> >
> > +        add     r12,rdi
> >
> > +
> >
> > +        mov     rdi,rdx
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,rdx
> >
> > +
> >
> > +        xor     rdi,r8
> >
> > +        ror     r13,14
> >
> > +        mov     rcx,r8
> >
> > +
> >
> > +        and     r15,rdi
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     rcx,r15
> >
> > +        add     r10,r12
> >
> > +        add     rcx,r12
> >
> > +
> >
> > +        lea     rbp,[24+rbp]
> >
> > +        add     rcx,r14
> >
> > +        mov     r12,QWORD[48+rsi]
> >
> > +        mov     r13,r10
> >
> > +        mov     r14,rcx
> >
> > +        bswap   r12
> >
> > +        ror     r13,23
> >
> > +        mov     r15,r11
> >
> > +
> >
> > +        xor     r13,r10
> >
> > +        ror     r14,5
> >
> > +        xor     r15,rax
> >
> > +
> >
> > +        mov     QWORD[48+rsp],r12
> >
> > +        xor     r14,rcx
> >
> > +        and     r15,r10
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,rbx
> >
> > +        xor     r15,rax
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,r10
> >
> > +        add     r12,r15
> >
> > +
> >
> > +        mov     r15,rcx
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,rcx
> >
> > +
> >
> > +        xor     r15,rdx
> >
> > +        ror     r13,14
> >
> > +        mov     rbx,rdx
> >
> > +
> >
> > +        and     rdi,r15
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     rbx,rdi
> >
> > +        add     r9,r12
> >
> > +        add     rbx,r12
> >
> > +
> >
> > +        lea     rbp,[8+rbp]
> >
> > +        add     rbx,r14
> >
> > +        mov     r12,QWORD[56+rsi]
> >
> > +        mov     r13,r9
> >
> > +        mov     r14,rbx
> >
> > +        bswap   r12
> >
> > +        ror     r13,23
> >
> > +        mov     rdi,r10
> >
> > +
> >
> > +        xor     r13,r9
> >
> > +        ror     r14,5
> >
> > +        xor     rdi,r11
> >
> > +
> >
> > +        mov     QWORD[56+rsp],r12
> >
> > +        xor     r14,rbx
> >
> > +        and     rdi,r9
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,rax
> >
> > +        xor     rdi,r11
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,r9
> >
> > +        add     r12,rdi
> >
> > +
> >
> > +        mov     rdi,rbx
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,rbx
> >
> > +
> >
> > +        xor     rdi,rcx
> >
> > +        ror     r13,14
> >
> > +        mov     rax,rcx
> >
> > +
> >
> > +        and     r15,rdi
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     rax,r15
> >
> > +        add     r8,r12
> >
> > +        add     rax,r12
> >
> > +
> >
> > +        lea     rbp,[24+rbp]
> >
> > +        add     rax,r14
> >
> > +        mov     r12,QWORD[64+rsi]
> >
> > +        mov     r13,r8
> >
> > +        mov     r14,rax
> >
> > +        bswap   r12
> >
> > +        ror     r13,23
> >
> > +        mov     r15,r9
> >
> > +
> >
> > +        xor     r13,r8
> >
> > +        ror     r14,5
> >
> > +        xor     r15,r10
> >
> > +
> >
> > +        mov     QWORD[64+rsp],r12
> >
> > +        xor     r14,rax
> >
> > +        and     r15,r8
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,r11
> >
> > +        xor     r15,r10
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,r8
> >
> > +        add     r12,r15
> >
> > +
> >
> > +        mov     r15,rax
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,rax
> >
> > +
> >
> > +        xor     r15,rbx
> >
> > +        ror     r13,14
> >
> > +        mov     r11,rbx
> >
> > +
> >
> > +        and     rdi,r15
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     r11,rdi
> >
> > +        add     rdx,r12
> >
> > +        add     r11,r12
> >
> > +
> >
> > +        lea     rbp,[8+rbp]
> >
> > +        add     r11,r14
> >
> > +        mov     r12,QWORD[72+rsi]
> >
> > +        mov     r13,rdx
> >
> > +        mov     r14,r11
> >
> > +        bswap   r12
> >
> > +        ror     r13,23
> >
> > +        mov     rdi,r8
> >
> > +
> >
> > +        xor     r13,rdx
> >
> > +        ror     r14,5
> >
> > +        xor     rdi,r9
> >
> > +
> >
> > +        mov     QWORD[72+rsp],r12
> >
> > +        xor     r14,r11
> >
> > +        and     rdi,rdx
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,r10
> >
> > +        xor     rdi,r9
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,rdx
> >
> > +        add     r12,rdi
> >
> > +
> >
> > +        mov     rdi,r11
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,r11
> >
> > +
> >
> > +        xor     rdi,rax
> >
> > +        ror     r13,14
> >
> > +        mov     r10,rax
> >
> > +
> >
> > +        and     r15,rdi
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     r10,r15
> >
> > +        add     rcx,r12
> >
> > +        add     r10,r12
> >
> > +
> >
> > +        lea     rbp,[24+rbp]
> >
> > +        add     r10,r14
> >
> > +        mov     r12,QWORD[80+rsi]
> >
> > +        mov     r13,rcx
> >
> > +        mov     r14,r10
> >
> > +        bswap   r12
> >
> > +        ror     r13,23
> >
> > +        mov     r15,rdx
> >
> > +
> >
> > +        xor     r13,rcx
> >
> > +        ror     r14,5
> >
> > +        xor     r15,r8
> >
> > +
> >
> > +        mov     QWORD[80+rsp],r12
> >
> > +        xor     r14,r10
> >
> > +        and     r15,rcx
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,r9
> >
> > +        xor     r15,r8
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,rcx
> >
> > +        add     r12,r15
> >
> > +
> >
> > +        mov     r15,r10
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,r10
> >
> > +
> >
> > +        xor     r15,r11
> >
> > +        ror     r13,14
> >
> > +        mov     r9,r11
> >
> > +
> >
> > +        and     rdi,r15
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     r9,rdi
> >
> > +        add     rbx,r12
> >
> > +        add     r9,r12
> >
> > +
> >
> > +        lea     rbp,[8+rbp]
> >
> > +        add     r9,r14
> >
> > +        mov     r12,QWORD[88+rsi]
> >
> > +        mov     r13,rbx
> >
> > +        mov     r14,r9
> >
> > +        bswap   r12
> >
> > +        ror     r13,23
> >
> > +        mov     rdi,rcx
> >
> > +
> >
> > +        xor     r13,rbx
> >
> > +        ror     r14,5
> >
> > +        xor     rdi,rdx
> >
> > +
> >
> > +        mov     QWORD[88+rsp],r12
> >
> > +        xor     r14,r9
> >
> > +        and     rdi,rbx
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,r8
> >
> > +        xor     rdi,rdx
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,rbx
> >
> > +        add     r12,rdi
> >
> > +
> >
> > +        mov     rdi,r9
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,r9
> >
> > +
> >
> > +        xor     rdi,r10
> >
> > +        ror     r13,14
> >
> > +        mov     r8,r10
> >
> > +
> >
> > +        and     r15,rdi
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     r8,r15
> >
> > +        add     rax,r12
> >
> > +        add     r8,r12
> >
> > +
> >
> > +        lea     rbp,[24+rbp]
> >
> > +        add     r8,r14
> >
> > +        mov     r12,QWORD[96+rsi]
> >
> > +        mov     r13,rax
> >
> > +        mov     r14,r8
> >
> > +        bswap   r12
> >
> > +        ror     r13,23
> >
> > +        mov     r15,rbx
> >
> > +
> >
> > +        xor     r13,rax
> >
> > +        ror     r14,5
> >
> > +        xor     r15,rcx
> >
> > +
> >
> > +        mov     QWORD[96+rsp],r12
> >
> > +        xor     r14,r8
> >
> > +        and     r15,rax
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,rdx
> >
> > +        xor     r15,rcx
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,rax
> >
> > +        add     r12,r15
> >
> > +
> >
> > +        mov     r15,r8
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,r8
> >
> > +
> >
> > +        xor     r15,r9
> >
> > +        ror     r13,14
> >
> > +        mov     rdx,r9
> >
> > +
> >
> > +        and     rdi,r15
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     rdx,rdi
> >
> > +        add     r11,r12
> >
> > +        add     rdx,r12
> >
> > +
> >
> > +        lea     rbp,[8+rbp]
> >
> > +        add     rdx,r14
> >
> > +        mov     r12,QWORD[104+rsi]
> >
> > +        mov     r13,r11
> >
> > +        mov     r14,rdx
> >
> > +        bswap   r12
> >
> > +        ror     r13,23
> >
> > +        mov     rdi,rax
> >
> > +
> >
> > +        xor     r13,r11
> >
> > +        ror     r14,5
> >
> > +        xor     rdi,rbx
> >
> > +
> >
> > +        mov     QWORD[104+rsp],r12
> >
> > +        xor     r14,rdx
> >
> > +        and     rdi,r11
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,rcx
> >
> > +        xor     rdi,rbx
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,r11
> >
> > +        add     r12,rdi
> >
> > +
> >
> > +        mov     rdi,rdx
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,rdx
> >
> > +
> >
> > +        xor     rdi,r8
> >
> > +        ror     r13,14
> >
> > +        mov     rcx,r8
> >
> > +
> >
> > +        and     r15,rdi
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     rcx,r15
> >
> > +        add     r10,r12
> >
> > +        add     rcx,r12
> >
> > +
> >
> > +        lea     rbp,[24+rbp]
> >
> > +        add     rcx,r14
> >
> > +        mov     r12,QWORD[112+rsi]
> >
> > +        mov     r13,r10
> >
> > +        mov     r14,rcx
> >
> > +        bswap   r12
> >
> > +        ror     r13,23
> >
> > +        mov     r15,r11
> >
> > +
> >
> > +        xor     r13,r10
> >
> > +        ror     r14,5
> >
> > +        xor     r15,rax
> >
> > +
> >
> > +        mov     QWORD[112+rsp],r12
> >
> > +        xor     r14,rcx
> >
> > +        and     r15,r10
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,rbx
> >
> > +        xor     r15,rax
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,r10
> >
> > +        add     r12,r15
> >
> > +
> >
> > +        mov     r15,rcx
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,rcx
> >
> > +
> >
> > +        xor     r15,rdx
> >
> > +        ror     r13,14
> >
> > +        mov     rbx,rdx
> >
> > +
> >
> > +        and     rdi,r15
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     rbx,rdi
> >
> > +        add     r9,r12
> >
> > +        add     rbx,r12
> >
> > +
> >
> > +        lea     rbp,[8+rbp]
> >
> > +        add     rbx,r14
> >
> > +        mov     r12,QWORD[120+rsi]
> >
> > +        mov     r13,r9
> >
> > +        mov     r14,rbx
> >
> > +        bswap   r12
> >
> > +        ror     r13,23
> >
> > +        mov     rdi,r10
> >
> > +
> >
> > +        xor     r13,r9
> >
> > +        ror     r14,5
> >
> > +        xor     rdi,r11
> >
> > +
> >
> > +        mov     QWORD[120+rsp],r12
> >
> > +        xor     r14,rbx
> >
> > +        and     rdi,r9
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,rax
> >
> > +        xor     rdi,r11
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,r9
> >
> > +        add     r12,rdi
> >
> > +
> >
> > +        mov     rdi,rbx
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,rbx
> >
> > +
> >
> > +        xor     rdi,rcx
> >
> > +        ror     r13,14
> >
> > +        mov     rax,rcx
> >
> > +
> >
> > +        and     r15,rdi
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     rax,r15
> >
> > +        add     r8,r12
> >
> > +        add     rax,r12
> >
> > +
> >
> > +        lea     rbp,[24+rbp]
> >
> > +        jmp     NEAR $L$rounds_16_xx
> >
> > +ALIGN   16
> >
> > +$L$rounds_16_xx:
> >
> > +        mov     r13,QWORD[8+rsp]
> >
> > +        mov     r15,QWORD[112+rsp]
> >
> > +
> >
> > +        mov     r12,r13
> >
> > +        ror     r13,7
> >
> > +        add     rax,r14
> >
> > +        mov     r14,r15
> >
> > +        ror     r15,42
> >
> > +
> >
> > +        xor     r13,r12
> >
> > +        shr     r12,7
> >
> > +        ror     r13,1
> >
> > +        xor     r15,r14
> >
> > +        shr     r14,6
> >
> > +
> >
> > +        ror     r15,19
> >
> > +        xor     r12,r13
> >
> > +        xor     r15,r14
> >
> > +        add     r12,QWORD[72+rsp]
> >
> > +
> >
> > +        add     r12,QWORD[rsp]
> >
> > +        mov     r13,r8
> >
> > +        add     r12,r15
> >
> > +        mov     r14,rax
> >
> > +        ror     r13,23
> >
> > +        mov     r15,r9
> >
> > +
> >
> > +        xor     r13,r8
> >
> > +        ror     r14,5
> >
> > +        xor     r15,r10
> >
> > +
> >
> > +        mov     QWORD[rsp],r12
> >
> > +        xor     r14,rax
> >
> > +        and     r15,r8
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,r11
> >
> > +        xor     r15,r10
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,r8
> >
> > +        add     r12,r15
> >
> > +
> >
> > +        mov     r15,rax
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,rax
> >
> > +
> >
> > +        xor     r15,rbx
> >
> > +        ror     r13,14
> >
> > +        mov     r11,rbx
> >
> > +
> >
> > +        and     rdi,r15
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     r11,rdi
> >
> > +        add     rdx,r12
> >
> > +        add     r11,r12
> >
> > +
> >
> > +        lea     rbp,[8+rbp]
> >
> > +        mov     r13,QWORD[16+rsp]
> >
> > +        mov     rdi,QWORD[120+rsp]
> >
> > +
> >
> > +        mov     r12,r13
> >
> > +        ror     r13,7
> >
> > +        add     r11,r14
> >
> > +        mov     r14,rdi
> >
> > +        ror     rdi,42
> >
> > +
> >
> > +        xor     r13,r12
> >
> > +        shr     r12,7
> >
> > +        ror     r13,1
> >
> > +        xor     rdi,r14
> >
> > +        shr     r14,6
> >
> > +
> >
> > +        ror     rdi,19
> >
> > +        xor     r12,r13
> >
> > +        xor     rdi,r14
> >
> > +        add     r12,QWORD[80+rsp]
> >
> > +
> >
> > +        add     r12,QWORD[8+rsp]
> >
> > +        mov     r13,rdx
> >
> > +        add     r12,rdi
> >
> > +        mov     r14,r11
> >
> > +        ror     r13,23
> >
> > +        mov     rdi,r8
> >
> > +
> >
> > +        xor     r13,rdx
> >
> > +        ror     r14,5
> >
> > +        xor     rdi,r9
> >
> > +
> >
> > +        mov     QWORD[8+rsp],r12
> >
> > +        xor     r14,r11
> >
> > +        and     rdi,rdx
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,r10
> >
> > +        xor     rdi,r9
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,rdx
> >
> > +        add     r12,rdi
> >
> > +
> >
> > +        mov     rdi,r11
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,r11
> >
> > +
> >
> > +        xor     rdi,rax
> >
> > +        ror     r13,14
> >
> > +        mov     r10,rax
> >
> > +
> >
> > +        and     r15,rdi
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     r10,r15
> >
> > +        add     rcx,r12
> >
> > +        add     r10,r12
> >
> > +
> >
> > +        lea     rbp,[24+rbp]
> >
> > +        mov     r13,QWORD[24+rsp]
> >
> > +        mov     r15,QWORD[rsp]
> >
> > +
> >
> > +        mov     r12,r13
> >
> > +        ror     r13,7
> >
> > +        add     r10,r14
> >
> > +        mov     r14,r15
> >
> > +        ror     r15,42
> >
> > +
> >
> > +        xor     r13,r12
> >
> > +        shr     r12,7
> >
> > +        ror     r13,1
> >
> > +        xor     r15,r14
> >
> > +        shr     r14,6
> >
> > +
> >
> > +        ror     r15,19
> >
> > +        xor     r12,r13
> >
> > +        xor     r15,r14
> >
> > +        add     r12,QWORD[88+rsp]
> >
> > +
> >
> > +        add     r12,QWORD[16+rsp]
> >
> > +        mov     r13,rcx
> >
> > +        add     r12,r15
> >
> > +        mov     r14,r10
> >
> > +        ror     r13,23
> >
> > +        mov     r15,rdx
> >
> > +
> >
> > +        xor     r13,rcx
> >
> > +        ror     r14,5
> >
> > +        xor     r15,r8
> >
> > +
> >
> > +        mov     QWORD[16+rsp],r12
> >
> > +        xor     r14,r10
> >
> > +        and     r15,rcx
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,r9
> >
> > +        xor     r15,r8
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,rcx
> >
> > +        add     r12,r15
> >
> > +
> >
> > +        mov     r15,r10
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,r10
> >
> > +
> >
> > +        xor     r15,r11
> >
> > +        ror     r13,14
> >
> > +        mov     r9,r11
> >
> > +
> >
> > +        and     rdi,r15
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     r9,rdi
> >
> > +        add     rbx,r12
> >
> > +        add     r9,r12
> >
> > +
> >
> > +        lea     rbp,[8+rbp]
> >
> > +        mov     r13,QWORD[32+rsp]
> >
> > +        mov     rdi,QWORD[8+rsp]
> >
> > +
> >
> > +        mov     r12,r13
> >
> > +        ror     r13,7
> >
> > +        add     r9,r14
> >
> > +        mov     r14,rdi
> >
> > +        ror     rdi,42
> >
> > +
> >
> > +        xor     r13,r12
> >
> > +        shr     r12,7
> >
> > +        ror     r13,1
> >
> > +        xor     rdi,r14
> >
> > +        shr     r14,6
> >
> > +
> >
> > +        ror     rdi,19
> >
> > +        xor     r12,r13
> >
> > +        xor     rdi,r14
> >
> > +        add     r12,QWORD[96+rsp]
> >
> > +
> >
> > +        add     r12,QWORD[24+rsp]
> >
> > +        mov     r13,rbx
> >
> > +        add     r12,rdi
> >
> > +        mov     r14,r9
> >
> > +        ror     r13,23
> >
> > +        mov     rdi,rcx
> >
> > +
> >
> > +        xor     r13,rbx
> >
> > +        ror     r14,5
> >
> > +        xor     rdi,rdx
> >
> > +
> >
> > +        mov     QWORD[24+rsp],r12
> >
> > +        xor     r14,r9
> >
> > +        and     rdi,rbx
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,r8
> >
> > +        xor     rdi,rdx
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,rbx
> >
> > +        add     r12,rdi
> >
> > +
> >
> > +        mov     rdi,r9
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,r9
> >
> > +
> >
> > +        xor     rdi,r10
> >
> > +        ror     r13,14
> >
> > +        mov     r8,r10
> >
> > +
> >
> > +        and     r15,rdi
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     r8,r15
> >
> > +        add     rax,r12
> >
> > +        add     r8,r12
> >
> > +
> >
> > +        lea     rbp,[24+rbp]
> >
> > +        mov     r13,QWORD[40+rsp]
> >
> > +        mov     r15,QWORD[16+rsp]
> >
> > +
> >
> > +        mov     r12,r13
> >
> > +        ror     r13,7
> >
> > +        add     r8,r14
> >
> > +        mov     r14,r15
> >
> > +        ror     r15,42
> >
> > +
> >
> > +        xor     r13,r12
> >
> > +        shr     r12,7
> >
> > +        ror     r13,1
> >
> > +        xor     r15,r14
> >
> > +        shr     r14,6
> >
> > +
> >
> > +        ror     r15,19
> >
> > +        xor     r12,r13
> >
> > +        xor     r15,r14
> >
> > +        add     r12,QWORD[104+rsp]
> >
> > +
> >
> > +        add     r12,QWORD[32+rsp]
> >
> > +        mov     r13,rax
> >
> > +        add     r12,r15
> >
> > +        mov     r14,r8
> >
> > +        ror     r13,23
> >
> > +        mov     r15,rbx
> >
> > +
> >
> > +        xor     r13,rax
> >
> > +        ror     r14,5
> >
> > +        xor     r15,rcx
> >
> > +
> >
> > +        mov     QWORD[32+rsp],r12
> >
> > +        xor     r14,r8
> >
> > +        and     r15,rax
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,rdx
> >
> > +        xor     r15,rcx
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,rax
> >
> > +        add     r12,r15
> >
> > +
> >
> > +        mov     r15,r8
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,r8
> >
> > +
> >
> > +        xor     r15,r9
> >
> > +        ror     r13,14
> >
> > +        mov     rdx,r9
> >
> > +
> >
> > +        and     rdi,r15
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     rdx,rdi
> >
> > +        add     r11,r12
> >
> > +        add     rdx,r12
> >
> > +
> >
> > +        lea     rbp,[8+rbp]
> >
> > +        mov     r13,QWORD[48+rsp]
> >
> > +        mov     rdi,QWORD[24+rsp]
> >
> > +
> >
> > +        mov     r12,r13
> >
> > +        ror     r13,7
> >
> > +        add     rdx,r14
> >
> > +        mov     r14,rdi
> >
> > +        ror     rdi,42
> >
> > +
> >
> > +        xor     r13,r12
> >
> > +        shr     r12,7
> >
> > +        ror     r13,1
> >
> > +        xor     rdi,r14
> >
> > +        shr     r14,6
> >
> > +
> >
> > +        ror     rdi,19
> >
> > +        xor     r12,r13
> >
> > +        xor     rdi,r14
> >
> > +        add     r12,QWORD[112+rsp]
> >
> > +
> >
> > +        add     r12,QWORD[40+rsp]
> >
> > +        mov     r13,r11
> >
> > +        add     r12,rdi
> >
> > +        mov     r14,rdx
> >
> > +        ror     r13,23
> >
> > +        mov     rdi,rax
> >
> > +
> >
> > +        xor     r13,r11
> >
> > +        ror     r14,5
> >
> > +        xor     rdi,rbx
> >
> > +
> >
> > +        mov     QWORD[40+rsp],r12
> >
> > +        xor     r14,rdx
> >
> > +        and     rdi,r11
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,rcx
> >
> > +        xor     rdi,rbx
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,r11
> >
> > +        add     r12,rdi
> >
> > +
> >
> > +        mov     rdi,rdx
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,rdx
> >
> > +
> >
> > +        xor     rdi,r8
> >
> > +        ror     r13,14
> >
> > +        mov     rcx,r8
> >
> > +
> >
> > +        and     r15,rdi
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     rcx,r15
> >
> > +        add     r10,r12
> >
> > +        add     rcx,r12
> >
> > +
> >
> > +        lea     rbp,[24+rbp]
> >
> > +        mov     r13,QWORD[56+rsp]
> >
> > +        mov     r15,QWORD[32+rsp]
> >
> > +
> >
> > +        mov     r12,r13
> >
> > +        ror     r13,7
> >
> > +        add     rcx,r14
> >
> > +        mov     r14,r15
> >
> > +        ror     r15,42
> >
> > +
> >
> > +        xor     r13,r12
> >
> > +        shr     r12,7
> >
> > +        ror     r13,1
> >
> > +        xor     r15,r14
> >
> > +        shr     r14,6
> >
> > +
> >
> > +        ror     r15,19
> >
> > +        xor     r12,r13
> >
> > +        xor     r15,r14
> >
> > +        add     r12,QWORD[120+rsp]
> >
> > +
> >
> > +        add     r12,QWORD[48+rsp]
> >
> > +        mov     r13,r10
> >
> > +        add     r12,r15
> >
> > +        mov     r14,rcx
> >
> > +        ror     r13,23
> >
> > +        mov     r15,r11
> >
> > +
> >
> > +        xor     r13,r10
> >
> > +        ror     r14,5
> >
> > +        xor     r15,rax
> >
> > +
> >
> > +        mov     QWORD[48+rsp],r12
> >
> > +        xor     r14,rcx
> >
> > +        and     r15,r10
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,rbx
> >
> > +        xor     r15,rax
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,r10
> >
> > +        add     r12,r15
> >
> > +
> >
> > +        mov     r15,rcx
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,rcx
> >
> > +
> >
> > +        xor     r15,rdx
> >
> > +        ror     r13,14
> >
> > +        mov     rbx,rdx
> >
> > +
> >
> > +        and     rdi,r15
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     rbx,rdi
> >
> > +        add     r9,r12
> >
> > +        add     rbx,r12
> >
> > +
> >
> > +        lea     rbp,[8+rbp]
> >
> > +        mov     r13,QWORD[64+rsp]
> >
> > +        mov     rdi,QWORD[40+rsp]
> >
> > +
> >
> > +        mov     r12,r13
> >
> > +        ror     r13,7
> >
> > +        add     rbx,r14
> >
> > +        mov     r14,rdi
> >
> > +        ror     rdi,42
> >
> > +
> >
> > +        xor     r13,r12
> >
> > +        shr     r12,7
> >
> > +        ror     r13,1
> >
> > +        xor     rdi,r14
> >
> > +        shr     r14,6
> >
> > +
> >
> > +        ror     rdi,19
> >
> > +        xor     r12,r13
> >
> > +        xor     rdi,r14
> >
> > +        add     r12,QWORD[rsp]
> >
> > +
> >
> > +        add     r12,QWORD[56+rsp]
> >
> > +        mov     r13,r9
> >
> > +        add     r12,rdi
> >
> > +        mov     r14,rbx
> >
> > +        ror     r13,23
> >
> > +        mov     rdi,r10
> >
> > +
> >
> > +        xor     r13,r9
> >
> > +        ror     r14,5
> >
> > +        xor     rdi,r11
> >
> > +
> >
> > +        mov     QWORD[56+rsp],r12
> >
> > +        xor     r14,rbx
> >
> > +        and     rdi,r9
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,rax
> >
> > +        xor     rdi,r11
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,r9
> >
> > +        add     r12,rdi
> >
> > +
> >
> > +        mov     rdi,rbx
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,rbx
> >
> > +
> >
> > +        xor     rdi,rcx
> >
> > +        ror     r13,14
> >
> > +        mov     rax,rcx
> >
> > +
> >
> > +        and     r15,rdi
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     rax,r15
> >
> > +        add     r8,r12
> >
> > +        add     rax,r12
> >
> > +
> >
> > +        lea     rbp,[24+rbp]
> >
> > +        mov     r13,QWORD[72+rsp]
> >
> > +        mov     r15,QWORD[48+rsp]
> >
> > +
> >
> > +        mov     r12,r13
> >
> > +        ror     r13,7
> >
> > +        add     rax,r14
> >
> > +        mov     r14,r15
> >
> > +        ror     r15,42
> >
> > +
> >
> > +        xor     r13,r12
> >
> > +        shr     r12,7
> >
> > +        ror     r13,1
> >
> > +        xor     r15,r14
> >
> > +        shr     r14,6
> >
> > +
> >
> > +        ror     r15,19
> >
> > +        xor     r12,r13
> >
> > +        xor     r15,r14
> >
> > +        add     r12,QWORD[8+rsp]
> >
> > +
> >
> > +        add     r12,QWORD[64+rsp]
> >
> > +        mov     r13,r8
> >
> > +        add     r12,r15
> >
> > +        mov     r14,rax
> >
> > +        ror     r13,23
> >
> > +        mov     r15,r9
> >
> > +
> >
> > +        xor     r13,r8
> >
> > +        ror     r14,5
> >
> > +        xor     r15,r10
> >
> > +
> >
> > +        mov     QWORD[64+rsp],r12
> >
> > +        xor     r14,rax
> >
> > +        and     r15,r8
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,r11
> >
> > +        xor     r15,r10
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,r8
> >
> > +        add     r12,r15
> >
> > +
> >
> > +        mov     r15,rax
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,rax
> >
> > +
> >
> > +        xor     r15,rbx
> >
> > +        ror     r13,14
> >
> > +        mov     r11,rbx
> >
> > +
> >
> > +        and     rdi,r15
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     r11,rdi
> >
> > +        add     rdx,r12
> >
> > +        add     r11,r12
> >
> > +
> >
> > +        lea     rbp,[8+rbp]
> >
> > +        mov     r13,QWORD[80+rsp]
> >
> > +        mov     rdi,QWORD[56+rsp]
> >
> > +
> >
> > +        mov     r12,r13
> >
> > +        ror     r13,7
> >
> > +        add     r11,r14
> >
> > +        mov     r14,rdi
> >
> > +        ror     rdi,42
> >
> > +
> >
> > +        xor     r13,r12
> >
> > +        shr     r12,7
> >
> > +        ror     r13,1
> >
> > +        xor     rdi,r14
> >
> > +        shr     r14,6
> >
> > +
> >
> > +        ror     rdi,19
> >
> > +        xor     r12,r13
> >
> > +        xor     rdi,r14
> >
> > +        add     r12,QWORD[16+rsp]
> >
> > +
> >
> > +        add     r12,QWORD[72+rsp]
> >
> > +        mov     r13,rdx
> >
> > +        add     r12,rdi
> >
> > +        mov     r14,r11
> >
> > +        ror     r13,23
> >
> > +        mov     rdi,r8
> >
> > +
> >
> > +        xor     r13,rdx
> >
> > +        ror     r14,5
> >
> > +        xor     rdi,r9
> >
> > +
> >
> > +        mov     QWORD[72+rsp],r12
> >
> > +        xor     r14,r11
> >
> > +        and     rdi,rdx
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,r10
> >
> > +        xor     rdi,r9
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,rdx
> >
> > +        add     r12,rdi
> >
> > +
> >
> > +        mov     rdi,r11
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,r11
> >
> > +
> >
> > +        xor     rdi,rax
> >
> > +        ror     r13,14
> >
> > +        mov     r10,rax
> >
> > +
> >
> > +        and     r15,rdi
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     r10,r15
> >
> > +        add     rcx,r12
> >
> > +        add     r10,r12
> >
> > +
> >
> > +        lea     rbp,[24+rbp]
> >
> > +        mov     r13,QWORD[88+rsp]
> >
> > +        mov     r15,QWORD[64+rsp]
> >
> > +
> >
> > +        mov     r12,r13
> >
> > +        ror     r13,7
> >
> > +        add     r10,r14
> >
> > +        mov     r14,r15
> >
> > +        ror     r15,42
> >
> > +
> >
> > +        xor     r13,r12
> >
> > +        shr     r12,7
> >
> > +        ror     r13,1
> >
> > +        xor     r15,r14
> >
> > +        shr     r14,6
> >
> > +
> >
> > +        ror     r15,19
> >
> > +        xor     r12,r13
> >
> > +        xor     r15,r14
> >
> > +        add     r12,QWORD[24+rsp]
> >
> > +
> >
> > +        add     r12,QWORD[80+rsp]
> >
> > +        mov     r13,rcx
> >
> > +        add     r12,r15
> >
> > +        mov     r14,r10
> >
> > +        ror     r13,23
> >
> > +        mov     r15,rdx
> >
> > +
> >
> > +        xor     r13,rcx
> >
> > +        ror     r14,5
> >
> > +        xor     r15,r8
> >
> > +
> >
> > +        mov     QWORD[80+rsp],r12
> >
> > +        xor     r14,r10
> >
> > +        and     r15,rcx
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,r9
> >
> > +        xor     r15,r8
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,rcx
> >
> > +        add     r12,r15
> >
> > +
> >
> > +        mov     r15,r10
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,r10
> >
> > +
> >
> > +        xor     r15,r11
> >
> > +        ror     r13,14
> >
> > +        mov     r9,r11
> >
> > +
> >
> > +        and     rdi,r15
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     r9,rdi
> >
> > +        add     rbx,r12
> >
> > +        add     r9,r12
> >
> > +
> >
> > +        lea     rbp,[8+rbp]
> >
> > +        mov     r13,QWORD[96+rsp]
> >
> > +        mov     rdi,QWORD[72+rsp]
> >
> > +
> >
> > +        mov     r12,r13
> >
> > +        ror     r13,7
> >
> > +        add     r9,r14
> >
> > +        mov     r14,rdi
> >
> > +        ror     rdi,42
> >
> > +
> >
> > +        xor     r13,r12
> >
> > +        shr     r12,7
> >
> > +        ror     r13,1
> >
> > +        xor     rdi,r14
> >
> > +        shr     r14,6
> >
> > +
> >
> > +        ror     rdi,19
> >
> > +        xor     r12,r13
> >
> > +        xor     rdi,r14
> >
> > +        add     r12,QWORD[32+rsp]
> >
> > +
> >
> > +        add     r12,QWORD[88+rsp]
> >
> > +        mov     r13,rbx
> >
> > +        add     r12,rdi
> >
> > +        mov     r14,r9
> >
> > +        ror     r13,23
> >
> > +        mov     rdi,rcx
> >
> > +
> >
> > +        xor     r13,rbx
> >
> > +        ror     r14,5
> >
> > +        xor     rdi,rdx
> >
> > +
> >
> > +        mov     QWORD[88+rsp],r12
> >
> > +        xor     r14,r9
> >
> > +        and     rdi,rbx
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,r8
> >
> > +        xor     rdi,rdx
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,rbx
> >
> > +        add     r12,rdi
> >
> > +
> >
> > +        mov     rdi,r9
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,r9
> >
> > +
> >
> > +        xor     rdi,r10
> >
> > +        ror     r13,14
> >
> > +        mov     r8,r10
> >
> > +
> >
> > +        and     r15,rdi
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     r8,r15
> >
> > +        add     rax,r12
> >
> > +        add     r8,r12
> >
> > +
> >
> > +        lea     rbp,[24+rbp]
> >
> > +        mov     r13,QWORD[104+rsp]
> >
> > +        mov     r15,QWORD[80+rsp]
> >
> > +
> >
> > +        mov     r12,r13
> >
> > +        ror     r13,7
> >
> > +        add     r8,r14
> >
> > +        mov     r14,r15
> >
> > +        ror     r15,42
> >
> > +
> >
> > +        xor     r13,r12
> >
> > +        shr     r12,7
> >
> > +        ror     r13,1
> >
> > +        xor     r15,r14
> >
> > +        shr     r14,6
> >
> > +
> >
> > +        ror     r15,19
> >
> > +        xor     r12,r13
> >
> > +        xor     r15,r14
> >
> > +        add     r12,QWORD[40+rsp]
> >
> > +
> >
> > +        add     r12,QWORD[96+rsp]
> >
> > +        mov     r13,rax
> >
> > +        add     r12,r15
> >
> > +        mov     r14,r8
> >
> > +        ror     r13,23
> >
> > +        mov     r15,rbx
> >
> > +
> >
> > +        xor     r13,rax
> >
> > +        ror     r14,5
> >
> > +        xor     r15,rcx
> >
> > +
> >
> > +        mov     QWORD[96+rsp],r12
> >
> > +        xor     r14,r8
> >
> > +        and     r15,rax
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,rdx
> >
> > +        xor     r15,rcx
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,rax
> >
> > +        add     r12,r15
> >
> > +
> >
> > +        mov     r15,r8
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,r8
> >
> > +
> >
> > +        xor     r15,r9
> >
> > +        ror     r13,14
> >
> > +        mov     rdx,r9
> >
> > +
> >
> > +        and     rdi,r15
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     rdx,rdi
> >
> > +        add     r11,r12
> >
> > +        add     rdx,r12
> >
> > +
> >
> > +        lea     rbp,[8+rbp]
> >
> > +        mov     r13,QWORD[112+rsp]
> >
> > +        mov     rdi,QWORD[88+rsp]
> >
> > +
> >
> > +        mov     r12,r13
> >
> > +        ror     r13,7
> >
> > +        add     rdx,r14
> >
> > +        mov     r14,rdi
> >
> > +        ror     rdi,42
> >
> > +
> >
> > +        xor     r13,r12
> >
> > +        shr     r12,7
> >
> > +        ror     r13,1
> >
> > +        xor     rdi,r14
> >
> > +        shr     r14,6
> >
> > +
> >
> > +        ror     rdi,19
> >
> > +        xor     r12,r13
> >
> > +        xor     rdi,r14
> >
> > +        add     r12,QWORD[48+rsp]
> >
> > +
> >
> > +        add     r12,QWORD[104+rsp]
> >
> > +        mov     r13,r11
> >
> > +        add     r12,rdi
> >
> > +        mov     r14,rdx
> >
> > +        ror     r13,23
> >
> > +        mov     rdi,rax
> >
> > +
> >
> > +        xor     r13,r11
> >
> > +        ror     r14,5
> >
> > +        xor     rdi,rbx
> >
> > +
> >
> > +        mov     QWORD[104+rsp],r12
> >
> > +        xor     r14,rdx
> >
> > +        and     rdi,r11
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,rcx
> >
> > +        xor     rdi,rbx
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,r11
> >
> > +        add     r12,rdi
> >
> > +
> >
> > +        mov     rdi,rdx
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,rdx
> >
> > +
> >
> > +        xor     rdi,r8
> >
> > +        ror     r13,14
> >
> > +        mov     rcx,r8
> >
> > +
> >
> > +        and     r15,rdi
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     rcx,r15
> >
> > +        add     r10,r12
> >
> > +        add     rcx,r12
> >
> > +
> >
> > +        lea     rbp,[24+rbp]
> >
> > +        mov     r13,QWORD[120+rsp]
> >
> > +        mov     r15,QWORD[96+rsp]
> >
> > +
> >
> > +        mov     r12,r13
> >
> > +        ror     r13,7
> >
> > +        add     rcx,r14
> >
> > +        mov     r14,r15
> >
> > +        ror     r15,42
> >
> > +
> >
> > +        xor     r13,r12
> >
> > +        shr     r12,7
> >
> > +        ror     r13,1
> >
> > +        xor     r15,r14
> >
> > +        shr     r14,6
> >
> > +
> >
> > +        ror     r15,19
> >
> > +        xor     r12,r13
> >
> > +        xor     r15,r14
> >
> > +        add     r12,QWORD[56+rsp]
> >
> > +
> >
> > +        add     r12,QWORD[112+rsp]
> >
> > +        mov     r13,r10
> >
> > +        add     r12,r15
> >
> > +        mov     r14,rcx
> >
> > +        ror     r13,23
> >
> > +        mov     r15,r11
> >
> > +
> >
> > +        xor     r13,r10
> >
> > +        ror     r14,5
> >
> > +        xor     r15,rax
> >
> > +
> >
> > +        mov     QWORD[112+rsp],r12
> >
> > +        xor     r14,rcx
> >
> > +        and     r15,r10
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,rbx
> >
> > +        xor     r15,rax
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,r10
> >
> > +        add     r12,r15
> >
> > +
> >
> > +        mov     r15,rcx
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,rcx
> >
> > +
> >
> > +        xor     r15,rdx
> >
> > +        ror     r13,14
> >
> > +        mov     rbx,rdx
> >
> > +
> >
> > +        and     rdi,r15
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     rbx,rdi
> >
> > +        add     r9,r12
> >
> > +        add     rbx,r12
> >
> > +
> >
> > +        lea     rbp,[8+rbp]
> >
> > +        mov     r13,QWORD[rsp]
> >
> > +        mov     rdi,QWORD[104+rsp]
> >
> > +
> >
> > +        mov     r12,r13
> >
> > +        ror     r13,7
> >
> > +        add     rbx,r14
> >
> > +        mov     r14,rdi
> >
> > +        ror     rdi,42
> >
> > +
> >
> > +        xor     r13,r12
> >
> > +        shr     r12,7
> >
> > +        ror     r13,1
> >
> > +        xor     rdi,r14
> >
> > +        shr     r14,6
> >
> > +
> >
> > +        ror     rdi,19
> >
> > +        xor     r12,r13
> >
> > +        xor     rdi,r14
> >
> > +        add     r12,QWORD[64+rsp]
> >
> > +
> >
> > +        add     r12,QWORD[120+rsp]
> >
> > +        mov     r13,r9
> >
> > +        add     r12,rdi
> >
> > +        mov     r14,rbx
> >
> > +        ror     r13,23
> >
> > +        mov     rdi,r10
> >
> > +
> >
> > +        xor     r13,r9
> >
> > +        ror     r14,5
> >
> > +        xor     rdi,r11
> >
> > +
> >
> > +        mov     QWORD[120+rsp],r12
> >
> > +        xor     r14,rbx
> >
> > +        and     rdi,r9
> >
> > +
> >
> > +        ror     r13,4
> >
> > +        add     r12,rax
> >
> > +        xor     rdi,r11
> >
> > +
> >
> > +        ror     r14,6
> >
> > +        xor     r13,r9
> >
> > +        add     r12,rdi
> >
> > +
> >
> > +        mov     rdi,rbx
> >
> > +        add     r12,QWORD[rbp]
> >
> > +        xor     r14,rbx
> >
> > +
> >
> > +        xor     rdi,rcx
> >
> > +        ror     r13,14
> >
> > +        mov     rax,rcx
> >
> > +
> >
> > +        and     r15,rdi
> >
> > +        ror     r14,28
> >
> > +        add     r12,r13
> >
> > +
> >
> > +        xor     rax,r15
> >
> > +        add     r8,r12
> >
> > +        add     rax,r12
> >
> > +
> >
> > +        lea     rbp,[24+rbp]
> >
> > +        cmp     BYTE[7+rbp],0
> >
> > +        jnz     NEAR $L$rounds_16_xx
> >
> > +
> >
> > +        mov     rdi,QWORD[((128+0))+rsp]
> >
> > +        add     rax,r14
> >
> > +        lea     rsi,[128+rsi]
> >
> > +
> >
> > +        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[((128+16))+rsp]
> >
> > +
> >
> > +        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[152+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$epilogue:
> >
> > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> >
> > +        mov     rsi,QWORD[16+rsp]
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +$L$SEH_end_sha512_block_data_order:
> >
> > +ALIGN   64
> >
> > +
> >
> > +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      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
> >
> > +
> >
> > +ALIGN   16
> >
> > +se_handler:
> >
> > +        push    rsi
> >
> > +        push    rdi
> >
> > +        push    rbx
> >
> > +        push    rbp
> >
> > +        push    r12
> >
> > +        push    r13
> >
> > +        push    r14
> >
> > +        push    r15
> >
> > +        pushfq
> >
> > +        sub     rsp,64
> >
> > +
> >
> > +        mov     rax,QWORD[120+r8]
> >
> > +        mov     rbx,QWORD[248+r8]
> >
> > +
> >
> > +        mov     rsi,QWORD[8+r9]
> >
> > +        mov     r11,QWORD[56+r9]
> >
> > +
> >
> > +        mov     r10d,DWORD[r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$in_prologue
> >
> > +
> >
> > +        mov     rax,QWORD[152+r8]
> >
> > +
> >
> > +        mov     r10d,DWORD[4+r11]
> >
> > +        lea     r10,[r10*1+rsi]
> >
> > +        cmp     rbx,r10
> >
> > +        jae     NEAR $L$in_prologue
> >
> > +        mov     rsi,rax
> >
> > +        mov     rax,QWORD[((128+24))+rax]
> >
> > +
> >
> > +        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,[$L$epilogue]
> >
> > +        cmp     rbx,r10
> >
> > +        jb      NEAR $L$in_prologue
> >
> > +
> >
> > +        lea     rsi,[((128+32))+rsi]
> >
> > +        lea     rdi,[512+r8]
> >
> > +        mov     ecx,12
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +$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[40+r9]
> >
> > +        mov     rsi,r8
> >
> > +        mov     ecx,154
> >
> > +        DD      0xa548f3fc
> >
> > +
> >
> > +        mov     rsi,r9
> >
> > +        xor     rcx,rcx
> >
> > +        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
> >
> > +        popfq
> >
> > +        pop     r15
> >
> > +        pop     r14
> >
> > +        pop     r13
> >
> > +        pop     r12
> >
> > +        pop     rbp
> >
> > +        pop     rbx
> >
> > +        pop     rdi
> >
> > +        pop     rsi
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +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/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > new file mode 100644
> > index 0000000000..2a3d5bcf72
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > @@ -0,0 +1,491 @@
> > +; WARNING: do not edit!
> >
> > +; Generated from openssl/crypto/x86_64cpuid.pl
> >
> > +;
> >
> > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.
> >
> > +;
> >
> > +; Licensed under the OpenSSL license (the "License").  You may not use
> >
> > +; this file except in compliance with the License.  You can obtain a copy
> >
> > +; in the file LICENSE in the source distribution or at
> >
> > +; https://www.openssl.org/source/license.html
> >
> > +
> >
> > +default rel
> >
> > +%define XMMWORD
> >
> > +%define YMMWORD
> >
> > +%define ZMMWORD
> >
> > +EXTERN  OPENSSL_cpuid_setup
> >
> > +
> >
> > +section .CRT$XCU rdata align=8
> >
> > +                DQ      OPENSSL_cpuid_setup
> >
> > +
> >
> > +
> >
> > +common  OPENSSL_ia32cap_P 16
> >
> > +
> >
> > +section .text code align=64
> >
> > +
> >
> > +
> >
> > +global  OPENSSL_atomic_add
> >
> > +
> >
> > +ALIGN   16
> >
> > +OPENSSL_atomic_add:
> >
> > +
> >
> > +        mov     eax,DWORD[rcx]
> >
> > +$L$spin:        lea     r8,[rax*1+rdx]
> >
> > +DB      0xf0
> >
> > +        cmpxchg DWORD[rcx],r8d
> >
> > +        jne     NEAR $L$spin
> >
> > +        mov     eax,r8d
> >
> > +DB      0x48,0x98
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +global  OPENSSL_rdtsc
> >
> > +
> >
> > +ALIGN   16
> >
> > +OPENSSL_rdtsc:
> >
> > +
> >
> > +        rdtsc
> >
> > +        shl     rdx,32
> >
> > +        or      rax,rdx
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +global  OPENSSL_ia32_cpuid
> >
> > +
> >
> > +ALIGN   16
> >
> > +OPENSSL_ia32_cpuid:
> >
> > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> >
> > +        mov     QWORD[16+rsp],rsi
> >
> > +        mov     rax,rsp
> >
> > +$L$SEH_begin_OPENSSL_ia32_cpuid:
> >
> > +        mov     rdi,rcx
> >
> > +
> >
> > +
> >
> > +
> >
> > +        mov     r8,rbx
> >
> > +
> >
> > +
> >
> > +        xor     eax,eax
> >
> > +        mov     QWORD[8+rdi],rax
> >
> > +        cpuid
> >
> > +        mov     r11d,eax
> >
> > +
> >
> > +        xor     eax,eax
> >
> > +        cmp     ebx,0x756e6547
> >
> > +        setne   al
> >
> > +        mov     r9d,eax
> >
> > +        cmp     edx,0x49656e69
> >
> > +        setne   al
> >
> > +        or      r9d,eax
> >
> > +        cmp     ecx,0x6c65746e
> >
> > +        setne   al
> >
> > +        or      r9d,eax
> >
> > +        jz      NEAR $L$intel
> >
> > +
> >
> > +        cmp     ebx,0x68747541
> >
> > +        setne   al
> >
> > +        mov     r10d,eax
> >
> > +        cmp     edx,0x69746E65
> >
> > +        setne   al
> >
> > +        or      r10d,eax
> >
> > +        cmp     ecx,0x444D4163
> >
> > +        setne   al
> >
> > +        or      r10d,eax
> >
> > +        jnz     NEAR $L$intel
> >
> > +
> >
> > +
> >
> > +        mov     eax,0x80000000
> >
> > +        cpuid
> >
> > +        cmp     eax,0x80000001
> >
> > +        jb      NEAR $L$intel
> >
> > +        mov     r10d,eax
> >
> > +        mov     eax,0x80000001
> >
> > +        cpuid
> >
> > +        or      r9d,ecx
> >
> > +        and     r9d,0x00000801
> >
> > +
> >
> > +        cmp     r10d,0x80000008
> >
> > +        jb      NEAR $L$intel
> >
> > +
> >
> > +        mov     eax,0x80000008
> >
> > +        cpuid
> >
> > +        movzx   r10,cl
> >
> > +        inc     r10
> >
> > +
> >
> > +        mov     eax,1
> >
> > +        cpuid
> >
> > +        bt      edx,28
> >
> > +        jnc     NEAR $L$generic
> >
> > +        shr     ebx,16
> >
> > +        cmp     bl,r10b
> >
> > +        ja      NEAR $L$generic
> >
> > +        and     edx,0xefffffff
> >
> > +        jmp     NEAR $L$generic
> >
> > +
> >
> > +$L$intel:
> >
> > +        cmp     r11d,4
> >
> > +        mov     r10d,-1
> >
> > +        jb      NEAR $L$nocacheinfo
> >
> > +
> >
> > +        mov     eax,4
> >
> > +        mov     ecx,0
> >
> > +        cpuid
> >
> > +        mov     r10d,eax
> >
> > +        shr     r10d,14
> >
> > +        and     r10d,0xfff
> >
> > +
> >
> > +$L$nocacheinfo:
> >
> > +        mov     eax,1
> >
> > +        cpuid
> >
> > +        movd    xmm0,eax
> >
> > +        and     edx,0xbfefffff
> >
> > +        cmp     r9d,0
> >
> > +        jne     NEAR $L$notintel
> >
> > +        or      edx,0x40000000
> >
> > +        and     ah,15
> >
> > +        cmp     ah,15
> >
> > +        jne     NEAR $L$notP4
> >
> > +        or      edx,0x00100000
> >
> > +$L$notP4:
> >
> > +        cmp     ah,6
> >
> > +        jne     NEAR $L$notintel
> >
> > +        and     eax,0x0fff0ff0
> >
> > +        cmp     eax,0x00050670
> >
> > +        je      NEAR $L$knights
> >
> > +        cmp     eax,0x00080650
> >
> > +        jne     NEAR $L$notintel
> >
> > +$L$knights:
> >
> > +        and     ecx,0xfbffffff
> >
> > +
> >
> > +$L$notintel:
> >
> > +        bt      edx,28
> >
> > +        jnc     NEAR $L$generic
> >
> > +        and     edx,0xefffffff
> >
> > +        cmp     r10d,0
> >
> > +        je      NEAR $L$generic
> >
> > +
> >
> > +        or      edx,0x10000000
> >
> > +        shr     ebx,16
> >
> > +        cmp     bl,1
> >
> > +        ja      NEAR $L$generic
> >
> > +        and     edx,0xefffffff
> >
> > +$L$generic:
> >
> > +        and     r9d,0x00000800
> >
> > +        and     ecx,0xfffff7ff
> >
> > +        or      r9d,ecx
> >
> > +
> >
> > +        mov     r10d,edx
> >
> > +
> >
> > +        cmp     r11d,7
> >
> > +        jb      NEAR $L$no_extended_info
> >
> > +        mov     eax,7
> >
> > +        xor     ecx,ecx
> >
> > +        cpuid
> >
> > +        bt      r9d,26
> >
> > +        jc      NEAR $L$notknights
> >
> > +        and     ebx,0xfff7ffff
> >
> > +$L$notknights:
> >
> > +        movd    eax,xmm0
> >
> > +        and     eax,0x0fff0ff0
> >
> > +        cmp     eax,0x00050650
> >
> > +        jne     NEAR $L$notskylakex
> >
> > +        and     ebx,0xfffeffff
> >
> > +
> >
> > +$L$notskylakex:
> >
> > +        mov     DWORD[8+rdi],ebx
> >
> > +        mov     DWORD[12+rdi],ecx
> >
> > +$L$no_extended_info:
> >
> > +
> >
> > +        bt      r9d,27
> >
> > +        jnc     NEAR $L$clear_avx
> >
> > +        xor     ecx,ecx
> >
> > +DB      0x0f,0x01,0xd0
> >
> > +        and     eax,0xe6
> >
> > +        cmp     eax,0xe6
> >
> > +        je      NEAR $L$done
> >
> > +        and     DWORD[8+rdi],0x3fdeffff
> >
> > +
> >
> > +
> >
> > +
> >
> > +
> >
> > +        and     eax,6
> >
> > +        cmp     eax,6
> >
> > +        je      NEAR $L$done
> >
> > +$L$clear_avx:
> >
> > +        mov     eax,0xefffe7ff
> >
> > +        and     r9d,eax
> >
> > +        mov     eax,0x3fdeffdf
> >
> > +        and     DWORD[8+rdi],eax
> >
> > +$L$done:
> >
> > +        shl     r9,32
> >
> > +        mov     eax,r10d
> >
> > +        mov     rbx,r8
> >
> > +
> >
> > +        or      rax,r9
> >
> > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> >
> > +        mov     rsi,QWORD[16+rsp]
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +$L$SEH_end_OPENSSL_ia32_cpuid:
> >
> > +
> >
> > +global  OPENSSL_cleanse
> >
> > +
> >
> > +ALIGN   16
> >
> > +OPENSSL_cleanse:
> >
> > +
> >
> > +        xor     rax,rax
> >
> > +        cmp     rdx,15
> >
> > +        jae     NEAR $L$ot
> >
> > +        cmp     rdx,0
> >
> > +        je      NEAR $L$ret
> >
> > +$L$ittle:
> >
> > +        mov     BYTE[rcx],al
> >
> > +        sub     rdx,1
> >
> > +        lea     rcx,[1+rcx]
> >
> > +        jnz     NEAR $L$ittle
> >
> > +$L$ret:
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +ALIGN   16
> >
> > +$L$ot:
> >
> > +        test    rcx,7
> >
> > +        jz      NEAR $L$aligned
> >
> > +        mov     BYTE[rcx],al
> >
> > +        lea     rdx,[((-1))+rdx]
> >
> > +        lea     rcx,[1+rcx]
> >
> > +        jmp     NEAR $L$ot
> >
> > +$L$aligned:
> >
> > +        mov     QWORD[rcx],rax
> >
> > +        lea     rdx,[((-8))+rdx]
> >
> > +        test    rdx,-8
> >
> > +        lea     rcx,[8+rcx]
> >
> > +        jnz     NEAR $L$aligned
> >
> > +        cmp     rdx,0
> >
> > +        jne     NEAR $L$ittle
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +global  CRYPTO_memcmp
> >
> > +
> >
> > +ALIGN   16
> >
> > +CRYPTO_memcmp:
> >
> > +
> >
> > +        xor     rax,rax
> >
> > +        xor     r10,r10
> >
> > +        cmp     r8,0
> >
> > +        je      NEAR $L$no_data
> >
> > +        cmp     r8,16
> >
> > +        jne     NEAR $L$oop_cmp
> >
> > +        mov     r10,QWORD[rcx]
> >
> > +        mov     r11,QWORD[8+rcx]
> >
> > +        mov     r8,1
> >
> > +        xor     r10,QWORD[rdx]
> >
> > +        xor     r11,QWORD[8+rdx]
> >
> > +        or      r10,r11
> >
> > +        cmovnz  rax,r8
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$oop_cmp:
> >
> > +        mov     r10b,BYTE[rcx]
> >
> > +        lea     rcx,[1+rcx]
> >
> > +        xor     r10b,BYTE[rdx]
> >
> > +        lea     rdx,[1+rdx]
> >
> > +        or      al,r10b
> >
> > +        dec     r8
> >
> > +        jnz     NEAR $L$oop_cmp
> >
> > +        neg     rax
> >
> > +        shr     rax,63
> >
> > +$L$no_data:
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +global  OPENSSL_wipe_cpu
> >
> > +
> >
> > +ALIGN   16
> >
> > +OPENSSL_wipe_cpu:
> >
> > +        pxor    xmm0,xmm0
> >
> > +        pxor    xmm1,xmm1
> >
> > +        pxor    xmm2,xmm2
> >
> > +        pxor    xmm3,xmm3
> >
> > +        pxor    xmm4,xmm4
> >
> > +        pxor    xmm5,xmm5
> >
> > +        xor     rcx,rcx
> >
> > +        xor     rdx,rdx
> >
> > +        xor     r8,r8
> >
> > +        xor     r9,r9
> >
> > +        xor     r10,r10
> >
> > +        xor     r11,r11
> >
> > +        lea     rax,[8+rsp]
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +global  OPENSSL_instrument_bus
> >
> > +
> >
> > +ALIGN   16
> >
> > +OPENSSL_instrument_bus:
> >
> > +
> >
> > +        mov     r10,rcx
> >
> > +        mov     rcx,rdx
> >
> > +        mov     r11,rdx
> >
> > +
> >
> > +        rdtsc
> >
> > +        mov     r8d,eax
> >
> > +        mov     r9d,0
> >
> > +        clflush [r10]
> >
> > +DB      0xf0
> >
> > +        add     DWORD[r10],r9d
> >
> > +        jmp     NEAR $L$oop
> >
> > +ALIGN   16
> >
> > +$L$oop: rdtsc
> >
> > +        mov     edx,eax
> >
> > +        sub     eax,r8d
> >
> > +        mov     r8d,edx
> >
> > +        mov     r9d,eax
> >
> > +        clflush [r10]
> >
> > +DB      0xf0
> >
> > +        add     DWORD[r10],eax
> >
> > +        lea     r10,[4+r10]
> >
> > +        sub     rcx,1
> >
> > +        jnz     NEAR $L$oop
> >
> > +
> >
> > +        mov     rax,r11
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +
> >
> > +global  OPENSSL_instrument_bus2
> >
> > +
> >
> > +ALIGN   16
> >
> > +OPENSSL_instrument_bus2:
> >
> > +
> >
> > +        mov     r10,rcx
> >
> > +        mov     rcx,rdx
> >
> > +        mov     r11,r8
> >
> > +        mov     QWORD[8+rsp],rcx
> >
> > +
> >
> > +        rdtsc
> >
> > +        mov     r8d,eax
> >
> > +        mov     r9d,0
> >
> > +
> >
> > +        clflush [r10]
> >
> > +DB      0xf0
> >
> > +        add     DWORD[r10],r9d
> >
> > +
> >
> > +        rdtsc
> >
> > +        mov     edx,eax
> >
> > +        sub     eax,r8d
> >
> > +        mov     r8d,edx
> >
> > +        mov     r9d,eax
> >
> > +$L$oop2:
> >
> > +        clflush [r10]
> >
> > +DB      0xf0
> >
> > +        add     DWORD[r10],eax
> >
> > +
> >
> > +        sub     r11,1
> >
> > +        jz      NEAR $L$done2
> >
> > +
> >
> > +        rdtsc
> >
> > +        mov     edx,eax
> >
> > +        sub     eax,r8d
> >
> > +        mov     r8d,edx
> >
> > +        cmp     eax,r9d
> >
> > +        mov     r9d,eax
> >
> > +        mov     edx,0
> >
> > +        setne   dl
> >
> > +        sub     rcx,rdx
> >
> > +        lea     r10,[rdx*4+r10]
> >
> > +        jnz     NEAR $L$oop2
> >
> > +
> >
> > +$L$done2:
> >
> > +        mov     rax,QWORD[8+rsp]
> >
> > +        sub     rax,rcx
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +global  OPENSSL_ia32_rdrand_bytes
> >
> > +
> >
> > +ALIGN   16
> >
> > +OPENSSL_ia32_rdrand_bytes:
> >
> > +
> >
> > +        xor     rax,rax
> >
> > +        cmp     rdx,0
> >
> > +        je      NEAR $L$done_rdrand_bytes
> >
> > +
> >
> > +        mov     r11,8
> >
> > +$L$oop_rdrand_bytes:
> >
> > +DB      73,15,199,242
> >
> > +        jc      NEAR $L$break_rdrand_bytes
> >
> > +        dec     r11
> >
> > +        jnz     NEAR $L$oop_rdrand_bytes
> >
> > +        jmp     NEAR $L$done_rdrand_bytes
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$break_rdrand_bytes:
> >
> > +        cmp     rdx,8
> >
> > +        jb      NEAR $L$tail_rdrand_bytes
> >
> > +        mov     QWORD[rcx],r10
> >
> > +        lea     rcx,[8+rcx]
> >
> > +        add     rax,8
> >
> > +        sub     rdx,8
> >
> > +        jz      NEAR $L$done_rdrand_bytes
> >
> > +        mov     r11,8
> >
> > +        jmp     NEAR $L$oop_rdrand_bytes
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$tail_rdrand_bytes:
> >
> > +        mov     BYTE[rcx],r10b
> >
> > +        lea     rcx,[1+rcx]
> >
> > +        inc     rax
> >
> > +        shr     r10,8
> >
> > +        dec     rdx
> >
> > +        jnz     NEAR $L$tail_rdrand_bytes
> >
> > +
> >
> > +$L$done_rdrand_bytes:
> >
> > +        xor     r10,r10
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > +global  OPENSSL_ia32_rdseed_bytes
> >
> > +
> >
> > +ALIGN   16
> >
> > +OPENSSL_ia32_rdseed_bytes:
> >
> > +
> >
> > +        xor     rax,rax
> >
> > +        cmp     rdx,0
> >
> > +        je      NEAR $L$done_rdseed_bytes
> >
> > +
> >
> > +        mov     r11,8
> >
> > +$L$oop_rdseed_bytes:
> >
> > +DB      73,15,199,250
> >
> > +        jc      NEAR $L$break_rdseed_bytes
> >
> > +        dec     r11
> >
> > +        jnz     NEAR $L$oop_rdseed_bytes
> >
> > +        jmp     NEAR $L$done_rdseed_bytes
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$break_rdseed_bytes:
> >
> > +        cmp     rdx,8
> >
> > +        jb      NEAR $L$tail_rdseed_bytes
> >
> > +        mov     QWORD[rcx],r10
> >
> > +        lea     rcx,[8+rcx]
> >
> > +        add     rax,8
> >
> > +        sub     rdx,8
> >
> > +        jz      NEAR $L$done_rdseed_bytes
> >
> > +        mov     r11,8
> >
> > +        jmp     NEAR $L$oop_rdseed_bytes
> >
> > +
> >
> > +ALIGN   16
> >
> > +$L$tail_rdseed_bytes:
> >
> > +        mov     BYTE[rcx],r10b
> >
> > +        lea     rcx,[1+rcx]
> >
> > +        inc     rax
> >
> > +        shr     r10,8
> >
> > +        dec     rdx
> >
> > +        jnz     NEAR $L$tail_rdseed_bytes
> >
> > +
> >
> > +$L$done_rdseed_bytes:
> >
> > +        xor     r10,r10
> >
> > +        DB      0F3h,0C3h               ;repret
> >
> > +
> >
> > +
> >
> > --
> > 2.28.0.windows.1


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

* Re: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
  2020-08-13 15:37     ` Michael D Kinney
@ 2020-08-13 15:45       ` Yao, Jiewen
  2020-08-14 19:34         ` Zurcher, Christopher J
  0 siblings, 1 reply; 42+ messages in thread
From: Yao, Jiewen @ 2020-08-13 15:45 UTC (permalink / raw)
  To: Kinney, Michael D, Zurcher, Christopher J, devel@edk2.groups.io
  Cc: Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel

Thank you Mike to help on this.

I also believe that the best option is to integrate the auto-gen process in base tool.



> -----Original Message-----
> From: Kinney, Michael D <michael.d.kinney@intel.com>
> Sent: Thursday, August 13, 2020 11:38 PM
> To: Yao, Jiewen <jiewen.yao@intel.com>; Zurcher, Christopher J
> <christopher.j.zurcher@intel.com>; devel@edk2.groups.io; Kinney, Michael D
> <michael.d.kinney@intel.com>
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated
> assembly files for X64
> 
> Hi Jiewen,
> 
> For this use case, generating the files as part of the build process would add
> a dependency in pearl.
> 
> Based on other recent CryptoPkg changes and some being discussed in BZ, I am
> seeing more changes to the OpenSLL .pl configuration files, and I am concerned
> that based on platform requirements, we may need to build OpenSSL with
> different .pl config file settings which would also add a pearl dependency
> to the build.
> 
> So exploring what it would take to add the pearl dependency to the build system
> is worth exploring and if successful would eliminate the need to checkin these
> types of autogenerated files.  This would also reduce maintenance of the
> auto-genererated files when EDK II moves to a new version of OpenSSL.
> 
> @Cristopher - Can you please share a branch that uses pearl to generate the
> files
> instead of checking them in?  I would like the BaseTools maintainers to review
> that and evaluate adding the pearl dependency.  Hopefully, we can make the
> pearl dependency detectable so it is only required if the build requires it.
> 
> Thanks,
> 
> Mike
> 
> > -----Original Message-----
> > From: Yao, Jiewen <jiewen.yao@intel.com>
> > Sent: Thursday, August 13, 2020 8:25 AM
> > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> devel@edk2.groups.io
> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>; Kinney, Michael D
> > <michael.d.kinney@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
> generated assembly files for X64
> >
> > + Mike Kinney
> >
> > I am not sure if it is a right way to check in auto-generated file.
> > That means, whenever we upgrade the openssl, we need manually generate
> them again.
> > Any step by step, or readme to tell us how to do that?
> >
> > Mike, would you please double confirm what is the right way for auto-
> generated file in EDKII?
> >
> >
> > > -----Original Message-----
> > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > Sent: Tuesday, August 4, 2020 8:24 AM
> > > To: devel@edk2.groups.io
> > > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> <jian.j.wang@intel.com>;
> > > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> <ard.biesheuvel@linaro.org>
> > > Subject: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated
> > > assembly files for X64
> > >
> > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> > >
> > > Adding the auto-generated assembly files for the X64 architecture.
> > >
> > > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > Signed-off-by: Christopher J Zurcher <christopher.j.zurcher@intel.com>
> > > ---
> > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm     |
> 732
> > > +++
> > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm   |
> > > 1916 ++++++++
> > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-x86_64.nasm |
> > > 78 +
> > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm        |
> 5103
> > > ++++++++++++++++++++
> > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm        |
> 1173
> > > +++++
> > >  CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm      |
> > > 1569 ++++++
> > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm      |
> 3137
> > > ++++++++++++
> > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm         |
> 2884
> > > +++++++++++
> > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm    |
> > > 3461 +++++++++++++
> > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm       |
> 3313
> > > +++++++++++++
> > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm       |
> 1938
> > > ++++++++
> > >  CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm             |  491
> ++
> > >  12 files changed, 25795 insertions(+)
> > >
> > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
> > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
> > > x86_64.nasm
> > > new file mode 100644
> > > index 0000000000..1a3ed1dd35
> > > --- /dev/null
> > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm
> > > @@ -0,0 +1,732 @@
> > > +; WARNING: do not edit!
> > >
> > > +; Generated from openssl/crypto/aes/asm/aesni-mb-x86_64.pl
> > >
> > > +;
> > >
> > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
> > >
> > > +;
> > >
> > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > >
> > > +; this file except in compliance with the License.  You can obtain a copy
> > >
> > > +; in the file LICENSE in the source distribution or at
> > >
> > > +; https://www.openssl.org/source/license.html
> > >
> > > +
> > >
> > > +default rel
> > >
> > > +%define XMMWORD
> > >
> > > +%define YMMWORD
> > >
> > > +%define ZMMWORD
> > >
> > > +section .text code align=64
> > >
> > > +
> > >
> > > +
> > >
> > > +EXTERN  OPENSSL_ia32cap_P
> > >
> > > +
> > >
> > > +global  aesni_multi_cbc_encrypt
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +aesni_multi_cbc_encrypt:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_aesni_multi_cbc_encrypt:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        mov     rax,rsp
> > >
> > > +
> > >
> > > +        push    rbx
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        push    r12
> > >
> > > +
> > >
> > > +        push    r13
> > >
> > > +
> > >
> > > +        push    r14
> > >
> > > +
> > >
> > > +        push    r15
> > >
> > > +
> > >
> > > +        lea     rsp,[((-168))+rsp]
> > >
> > > +        movaps  XMMWORD[rsp],xmm6
> > >
> > > +        movaps  XMMWORD[16+rsp],xmm7
> > >
> > > +        movaps  XMMWORD[32+rsp],xmm8
> > >
> > > +        movaps  XMMWORD[48+rsp],xmm9
> > >
> > > +        movaps  XMMWORD[64+rsp],xmm10
> > >
> > > +        movaps  XMMWORD[80+rsp],xmm11
> > >
> > > +        movaps  XMMWORD[96+rsp],xmm12
> > >
> > > +        movaps  XMMWORD[(-104)+rax],xmm13
> > >
> > > +        movaps  XMMWORD[(-88)+rax],xmm14
> > >
> > > +        movaps  XMMWORD[(-72)+rax],xmm15
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        sub     rsp,48
> > >
> > > +        and     rsp,-64
> > >
> > > +        mov     QWORD[16+rsp],rax
> > >
> > > +
> > >
> > > +
> > >
> > > +$L$enc4x_body:
> > >
> > > +        movdqu  xmm12,XMMWORD[rsi]
> > >
> > > +        lea     rsi,[120+rsi]
> > >
> > > +        lea     rdi,[80+rdi]
> > >
> > > +
> > >
> > > +$L$enc4x_loop_grande:
> > >
> > > +        mov     DWORD[24+rsp],edx
> > >
> > > +        xor     edx,edx
> > >
> > > +        mov     ecx,DWORD[((-64))+rdi]
> > >
> > > +        mov     r8,QWORD[((-80))+rdi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        mov     r12,QWORD[((-72))+rdi]
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        movdqu  xmm2,XMMWORD[((-56))+rdi]
> > >
> > > +        mov     DWORD[32+rsp],ecx
> > >
> > > +        cmovle  r8,rsp
> > >
> > > +        mov     ecx,DWORD[((-24))+rdi]
> > >
> > > +        mov     r9,QWORD[((-40))+rdi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        mov     r13,QWORD[((-32))+rdi]
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        movdqu  xmm3,XMMWORD[((-16))+rdi]
> > >
> > > +        mov     DWORD[36+rsp],ecx
> > >
> > > +        cmovle  r9,rsp
> > >
> > > +        mov     ecx,DWORD[16+rdi]
> > >
> > > +        mov     r10,QWORD[rdi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        mov     r14,QWORD[8+rdi]
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        movdqu  xmm4,XMMWORD[24+rdi]
> > >
> > > +        mov     DWORD[40+rsp],ecx
> > >
> > > +        cmovle  r10,rsp
> > >
> > > +        mov     ecx,DWORD[56+rdi]
> > >
> > > +        mov     r11,QWORD[40+rdi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        mov     r15,QWORD[48+rdi]
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        movdqu  xmm5,XMMWORD[64+rdi]
> > >
> > > +        mov     DWORD[44+rsp],ecx
> > >
> > > +        cmovle  r11,rsp
> > >
> > > +        test    edx,edx
> > >
> > > +        jz      NEAR $L$enc4x_done
> > >
> > > +
> > >
> > > +        movups  xmm1,XMMWORD[((16-120))+rsi]
> > >
> > > +        pxor    xmm2,xmm12
> > >
> > > +        movups  xmm0,XMMWORD[((32-120))+rsi]
> > >
> > > +        pxor    xmm3,xmm12
> > >
> > > +        mov     eax,DWORD[((240-120))+rsi]
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        movdqu  xmm6,XMMWORD[r8]
> > >
> > > +        pxor    xmm5,xmm12
> > >
> > > +        movdqu  xmm7,XMMWORD[r9]
> > >
> > > +        pxor    xmm2,xmm6
> > >
> > > +        movdqu  xmm8,XMMWORD[r10]
> > >
> > > +        pxor    xmm3,xmm7
> > >
> > > +        movdqu  xmm9,XMMWORD[r11]
> > >
> > > +        pxor    xmm4,xmm8
> > >
> > > +        pxor    xmm5,xmm9
> > >
> > > +        movdqa  xmm10,XMMWORD[32+rsp]
> > >
> > > +        xor     rbx,rbx
> > >
> > > +        jmp     NEAR $L$oop_enc4x
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$oop_enc4x:
> > >
> > > +        add     rbx,16
> > >
> > > +        lea     rbp,[16+rsp]
> > >
> > > +        mov     ecx,1
> > >
> > > +        sub     rbp,rbx
> > >
> > > +
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        prefetcht0      [31+rbx*1+r8]
> > >
> > > +        prefetcht0      [31+rbx*1+r9]
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +        prefetcht0      [31+rbx*1+r10]
> > >
> > > +        prefetcht0      [31+rbx*1+r10]
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +DB      102,15,56,220,233
> > >
> > > +        movups  xmm1,XMMWORD[((48-120))+rsi]
> > >
> > > +        cmp     ecx,DWORD[32+rsp]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      102,15,56,220,216
> > >
> > > +DB      102,15,56,220,224
> > >
> > > +        cmovge  r8,rbp
> > >
> > > +        cmovg   r12,rbp
> > >
> > > +DB      102,15,56,220,232
> > >
> > > +        movups  xmm0,XMMWORD[((-56))+rsi]
> > >
> > > +        cmp     ecx,DWORD[36+rsp]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +        cmovge  r9,rbp
> > >
> > > +        cmovg   r13,rbp
> > >
> > > +DB      102,15,56,220,233
> > >
> > > +        movups  xmm1,XMMWORD[((-40))+rsi]
> > >
> > > +        cmp     ecx,DWORD[40+rsp]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      102,15,56,220,216
> > >
> > > +DB      102,15,56,220,224
> > >
> > > +        cmovge  r10,rbp
> > >
> > > +        cmovg   r14,rbp
> > >
> > > +DB      102,15,56,220,232
> > >
> > > +        movups  xmm0,XMMWORD[((-24))+rsi]
> > >
> > > +        cmp     ecx,DWORD[44+rsp]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +        cmovge  r11,rbp
> > >
> > > +        cmovg   r15,rbp
> > >
> > > +DB      102,15,56,220,233
> > >
> > > +        movups  xmm1,XMMWORD[((-8))+rsi]
> > >
> > > +        movdqa  xmm11,xmm10
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        prefetcht0      [15+rbx*1+r12]
> > >
> > > +        prefetcht0      [15+rbx*1+r13]
> > >
> > > +DB      102,15,56,220,216
> > >
> > > +        prefetcht0      [15+rbx*1+r14]
> > >
> > > +        prefetcht0      [15+rbx*1+r15]
> > >
> > > +DB      102,15,56,220,224
> > >
> > > +DB      102,15,56,220,232
> > >
> > > +        movups  xmm0,XMMWORD[((128-120))+rsi]
> > >
> > > +        pxor    xmm12,xmm12
> > >
> > > +
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        pcmpgtd xmm11,xmm12
> > >
> > > +        movdqu  xmm12,XMMWORD[((-120))+rsi]
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +        paddd   xmm10,xmm11
> > >
> > > +        movdqa  XMMWORD[32+rsp],xmm10
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +DB      102,15,56,220,233
> > >
> > > +        movups  xmm1,XMMWORD[((144-120))+rsi]
> > >
> > > +
> > >
> > > +        cmp     eax,11
> > >
> > > +
> > >
> > > +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[((160-120))+rsi]
> > >
> > > +
> > >
> > > +        jb      NEAR $L$enc4x_tail
> > >
> > > +
> > >
> > > +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[((176-120))+rsi]
> > >
> > > +
> > >
> > > +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[((192-120))+rsi]
> > >
> > > +
> > >
> > > +        je      NEAR $L$enc4x_tail
> > >
> > > +
> > >
> > > +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[((208-120))+rsi]
> > >
> > > +
> > >
> > > +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[((224-120))+rsi]
> > >
> > > +        jmp     NEAR $L$enc4x_tail
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$enc4x_tail:
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +DB      102,15,56,220,233
> > >
> > > +        movdqu  xmm6,XMMWORD[rbx*1+r8]
> > >
> > > +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
> > >
> > > +
> > >
> > > +DB      102,15,56,221,208
> > >
> > > +        movdqu  xmm7,XMMWORD[rbx*1+r9]
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +DB      102,15,56,221,216
> > >
> > > +        movdqu  xmm8,XMMWORD[rbx*1+r10]
> > >
> > > +        pxor    xmm7,xmm12
> > >
> > > +DB      102,15,56,221,224
> > >
> > > +        movdqu  xmm9,XMMWORD[rbx*1+r11]
> > >
> > > +        pxor    xmm8,xmm12
> > >
> > > +DB      102,15,56,221,232
> > >
> > > +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
> > >
> > > +        pxor    xmm9,xmm12
> > >
> > > +
> > >
> > > +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
> > >
> > > +        pxor    xmm2,xmm6
> > >
> > > +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
> > >
> > > +        pxor    xmm3,xmm7
> > >
> > > +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
> > >
> > > +        pxor    xmm4,xmm8
> > >
> > > +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
> > >
> > > +        pxor    xmm5,xmm9
> > >
> > > +
> > >
> > > +        dec     edx
> > >
> > > +        jnz     NEAR $L$oop_enc4x
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[16+rsp]
> > >
> > > +
> > >
> > > +        mov     edx,DWORD[24+rsp]
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        lea     rdi,[160+rdi]
> > >
> > > +        dec     edx
> > >
> > > +        jnz     NEAR $L$enc4x_loop_grande
> > >
> > > +
> > >
> > > +$L$enc4x_done:
> > >
> > > +        movaps  xmm6,XMMWORD[((-216))+rax]
> > >
> > > +        movaps  xmm7,XMMWORD[((-200))+rax]
> > >
> > > +        movaps  xmm8,XMMWORD[((-184))+rax]
> > >
> > > +        movaps  xmm9,XMMWORD[((-168))+rax]
> > >
> > > +        movaps  xmm10,XMMWORD[((-152))+rax]
> > >
> > > +        movaps  xmm11,XMMWORD[((-136))+rax]
> > >
> > > +        movaps  xmm12,XMMWORD[((-120))+rax]
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        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$enc4x_epilogue:
> > >
> > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > >
> > > +        mov     rsi,QWORD[16+rsp]
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +$L$SEH_end_aesni_multi_cbc_encrypt:
> > >
> > > +
> > >
> > > +global  aesni_multi_cbc_decrypt
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +aesni_multi_cbc_decrypt:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_aesni_multi_cbc_decrypt:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        mov     rax,rsp
> > >
> > > +
> > >
> > > +        push    rbx
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        push    r12
> > >
> > > +
> > >
> > > +        push    r13
> > >
> > > +
> > >
> > > +        push    r14
> > >
> > > +
> > >
> > > +        push    r15
> > >
> > > +
> > >
> > > +        lea     rsp,[((-168))+rsp]
> > >
> > > +        movaps  XMMWORD[rsp],xmm6
> > >
> > > +        movaps  XMMWORD[16+rsp],xmm7
> > >
> > > +        movaps  XMMWORD[32+rsp],xmm8
> > >
> > > +        movaps  XMMWORD[48+rsp],xmm9
> > >
> > > +        movaps  XMMWORD[64+rsp],xmm10
> > >
> > > +        movaps  XMMWORD[80+rsp],xmm11
> > >
> > > +        movaps  XMMWORD[96+rsp],xmm12
> > >
> > > +        movaps  XMMWORD[(-104)+rax],xmm13
> > >
> > > +        movaps  XMMWORD[(-88)+rax],xmm14
> > >
> > > +        movaps  XMMWORD[(-72)+rax],xmm15
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        sub     rsp,48
> > >
> > > +        and     rsp,-64
> > >
> > > +        mov     QWORD[16+rsp],rax
> > >
> > > +
> > >
> > > +
> > >
> > > +$L$dec4x_body:
> > >
> > > +        movdqu  xmm12,XMMWORD[rsi]
> > >
> > > +        lea     rsi,[120+rsi]
> > >
> > > +        lea     rdi,[80+rdi]
> > >
> > > +
> > >
> > > +$L$dec4x_loop_grande:
> > >
> > > +        mov     DWORD[24+rsp],edx
> > >
> > > +        xor     edx,edx
> > >
> > > +        mov     ecx,DWORD[((-64))+rdi]
> > >
> > > +        mov     r8,QWORD[((-80))+rdi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        mov     r12,QWORD[((-72))+rdi]
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        movdqu  xmm6,XMMWORD[((-56))+rdi]
> > >
> > > +        mov     DWORD[32+rsp],ecx
> > >
> > > +        cmovle  r8,rsp
> > >
> > > +        mov     ecx,DWORD[((-24))+rdi]
> > >
> > > +        mov     r9,QWORD[((-40))+rdi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        mov     r13,QWORD[((-32))+rdi]
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        movdqu  xmm7,XMMWORD[((-16))+rdi]
> > >
> > > +        mov     DWORD[36+rsp],ecx
> > >
> > > +        cmovle  r9,rsp
> > >
> > > +        mov     ecx,DWORD[16+rdi]
> > >
> > > +        mov     r10,QWORD[rdi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        mov     r14,QWORD[8+rdi]
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        movdqu  xmm8,XMMWORD[24+rdi]
> > >
> > > +        mov     DWORD[40+rsp],ecx
> > >
> > > +        cmovle  r10,rsp
> > >
> > > +        mov     ecx,DWORD[56+rdi]
> > >
> > > +        mov     r11,QWORD[40+rdi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        mov     r15,QWORD[48+rdi]
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        movdqu  xmm9,XMMWORD[64+rdi]
> > >
> > > +        mov     DWORD[44+rsp],ecx
> > >
> > > +        cmovle  r11,rsp
> > >
> > > +        test    edx,edx
> > >
> > > +        jz      NEAR $L$dec4x_done
> > >
> > > +
> > >
> > > +        movups  xmm1,XMMWORD[((16-120))+rsi]
> > >
> > > +        movups  xmm0,XMMWORD[((32-120))+rsi]
> > >
> > > +        mov     eax,DWORD[((240-120))+rsi]
> > >
> > > +        movdqu  xmm2,XMMWORD[r8]
> > >
> > > +        movdqu  xmm3,XMMWORD[r9]
> > >
> > > +        pxor    xmm2,xmm12
> > >
> > > +        movdqu  xmm4,XMMWORD[r10]
> > >
> > > +        pxor    xmm3,xmm12
> > >
> > > +        movdqu  xmm5,XMMWORD[r11]
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        pxor    xmm5,xmm12
> > >
> > > +        movdqa  xmm10,XMMWORD[32+rsp]
> > >
> > > +        xor     rbx,rbx
> > >
> > > +        jmp     NEAR $L$oop_dec4x
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$oop_dec4x:
> > >
> > > +        add     rbx,16
> > >
> > > +        lea     rbp,[16+rsp]
> > >
> > > +        mov     ecx,1
> > >
> > > +        sub     rbp,rbx
> > >
> > > +
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +        prefetcht0      [31+rbx*1+r8]
> > >
> > > +        prefetcht0      [31+rbx*1+r9]
> > >
> > > +DB      102,15,56,222,217
> > >
> > > +        prefetcht0      [31+rbx*1+r10]
> > >
> > > +        prefetcht0      [31+rbx*1+r11]
> > >
> > > +DB      102,15,56,222,225
> > >
> > > +DB      102,15,56,222,233
> > >
> > > +        movups  xmm1,XMMWORD[((48-120))+rsi]
> > >
> > > +        cmp     ecx,DWORD[32+rsp]
> > >
> > > +DB      102,15,56,222,208
> > >
> > > +DB      102,15,56,222,216
> > >
> > > +DB      102,15,56,222,224
> > >
> > > +        cmovge  r8,rbp
> > >
> > > +        cmovg   r12,rbp
> > >
> > > +DB      102,15,56,222,232
> > >
> > > +        movups  xmm0,XMMWORD[((-56))+rsi]
> > >
> > > +        cmp     ecx,DWORD[36+rsp]
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +DB      102,15,56,222,217
> > >
> > > +DB      102,15,56,222,225
> > >
> > > +        cmovge  r9,rbp
> > >
> > > +        cmovg   r13,rbp
> > >
> > > +DB      102,15,56,222,233
> > >
> > > +        movups  xmm1,XMMWORD[((-40))+rsi]
> > >
> > > +        cmp     ecx,DWORD[40+rsp]
> > >
> > > +DB      102,15,56,222,208
> > >
> > > +DB      102,15,56,222,216
> > >
> > > +DB      102,15,56,222,224
> > >
> > > +        cmovge  r10,rbp
> > >
> > > +        cmovg   r14,rbp
> > >
> > > +DB      102,15,56,222,232
> > >
> > > +        movups  xmm0,XMMWORD[((-24))+rsi]
> > >
> > > +        cmp     ecx,DWORD[44+rsp]
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +DB      102,15,56,222,217
> > >
> > > +DB      102,15,56,222,225
> > >
> > > +        cmovge  r11,rbp
> > >
> > > +        cmovg   r15,rbp
> > >
> > > +DB      102,15,56,222,233
> > >
> > > +        movups  xmm1,XMMWORD[((-8))+rsi]
> > >
> > > +        movdqa  xmm11,xmm10
> > >
> > > +DB      102,15,56,222,208
> > >
> > > +        prefetcht0      [15+rbx*1+r12]
> > >
> > > +        prefetcht0      [15+rbx*1+r13]
> > >
> > > +DB      102,15,56,222,216
> > >
> > > +        prefetcht0      [15+rbx*1+r14]
> > >
> > > +        prefetcht0      [15+rbx*1+r15]
> > >
> > > +DB      102,15,56,222,224
> > >
> > > +DB      102,15,56,222,232
> > >
> > > +        movups  xmm0,XMMWORD[((128-120))+rsi]
> > >
> > > +        pxor    xmm12,xmm12
> > >
> > > +
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +        pcmpgtd xmm11,xmm12
> > >
> > > +        movdqu  xmm12,XMMWORD[((-120))+rsi]
> > >
> > > +DB      102,15,56,222,217
> > >
> > > +        paddd   xmm10,xmm11
> > >
> > > +        movdqa  XMMWORD[32+rsp],xmm10
> > >
> > > +DB      102,15,56,222,225
> > >
> > > +DB      102,15,56,222,233
> > >
> > > +        movups  xmm1,XMMWORD[((144-120))+rsi]
> > >
> > > +
> > >
> > > +        cmp     eax,11
> > >
> > > +
> > >
> > > +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[((160-120))+rsi]
> > >
> > > +
> > >
> > > +        jb      NEAR $L$dec4x_tail
> > >
> > > +
> > >
> > > +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[((176-120))+rsi]
> > >
> > > +
> > >
> > > +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[((192-120))+rsi]
> > >
> > > +
> > >
> > > +        je      NEAR $L$dec4x_tail
> > >
> > > +
> > >
> > > +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[((208-120))+rsi]
> > >
> > > +
> > >
> > > +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[((224-120))+rsi]
> > >
> > > +        jmp     NEAR $L$dec4x_tail
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$dec4x_tail:
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +DB      102,15,56,222,217
> > >
> > > +DB      102,15,56,222,225
> > >
> > > +        pxor    xmm6,xmm0
> > >
> > > +        pxor    xmm7,xmm0
> > >
> > > +DB      102,15,56,222,233
> > >
> > > +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
> > >
> > > +        pxor    xmm8,xmm0
> > >
> > > +        pxor    xmm9,xmm0
> > >
> > > +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
> > >
> > > +
> > >
> > > +DB      102,15,56,223,214
> > >
> > > +DB      102,15,56,223,223
> > >
> > > +        movdqu  xmm6,XMMWORD[((-16))+rbx*1+r8]
> > >
> > > +        movdqu  xmm7,XMMWORD[((-16))+rbx*1+r9]
> > >
> > > +DB      102,65,15,56,223,224
> > >
> > > +DB      102,65,15,56,223,233
> > >
> > > +        movdqu  xmm8,XMMWORD[((-16))+rbx*1+r10]
> > >
> > > +        movdqu  xmm9,XMMWORD[((-16))+rbx*1+r11]
> > >
> > > +
> > >
> > > +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
> > >
> > > +        movdqu  xmm2,XMMWORD[rbx*1+r8]
> > >
> > > +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
> > >
> > > +        movdqu  xmm3,XMMWORD[rbx*1+r9]
> > >
> > > +        pxor    xmm2,xmm12
> > >
> > > +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
> > >
> > > +        movdqu  xmm4,XMMWORD[rbx*1+r10]
> > >
> > > +        pxor    xmm3,xmm12
> > >
> > > +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
> > >
> > > +        movdqu  xmm5,XMMWORD[rbx*1+r11]
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        pxor    xmm5,xmm12
> > >
> > > +
> > >
> > > +        dec     edx
> > >
> > > +        jnz     NEAR $L$oop_dec4x
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[16+rsp]
> > >
> > > +
> > >
> > > +        mov     edx,DWORD[24+rsp]
> > >
> > > +
> > >
> > > +        lea     rdi,[160+rdi]
> > >
> > > +        dec     edx
> > >
> > > +        jnz     NEAR $L$dec4x_loop_grande
> > >
> > > +
> > >
> > > +$L$dec4x_done:
> > >
> > > +        movaps  xmm6,XMMWORD[((-216))+rax]
> > >
> > > +        movaps  xmm7,XMMWORD[((-200))+rax]
> > >
> > > +        movaps  xmm8,XMMWORD[((-184))+rax]
> > >
> > > +        movaps  xmm9,XMMWORD[((-168))+rax]
> > >
> > > +        movaps  xmm10,XMMWORD[((-152))+rax]
> > >
> > > +        movaps  xmm11,XMMWORD[((-136))+rax]
> > >
> > > +        movaps  xmm12,XMMWORD[((-120))+rax]
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        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$dec4x_epilogue:
> > >
> > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > >
> > > +        mov     rsi,QWORD[16+rsp]
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +$L$SEH_end_aesni_multi_cbc_decrypt:
> > >
> > > +EXTERN  __imp_RtlVirtualUnwind
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +se_handler:
> > >
> > > +        push    rsi
> > >
> > > +        push    rdi
> > >
> > > +        push    rbx
> > >
> > > +        push    rbp
> > >
> > > +        push    r12
> > >
> > > +        push    r13
> > >
> > > +        push    r14
> > >
> > > +        push    r15
> > >
> > > +        pushfq
> > >
> > > +        sub     rsp,64
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[120+r8]
> > >
> > > +        mov     rbx,QWORD[248+r8]
> > >
> > > +
> > >
> > > +        mov     rsi,QWORD[8+r9]
> > >
> > > +        mov     r11,QWORD[56+r9]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$in_prologue
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[152+r8]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[4+r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jae     NEAR $L$in_prologue
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[16+rax]
> > >
> > > +
> > >
> > > +        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     rsi,[((-56-160))+rax]
> > >
> > > +        lea     rdi,[512+r8]
> > >
> > > +        mov     ecx,20
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +$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[40+r9]
> > >
> > > +        mov     rsi,r8
> > >
> > > +        mov     ecx,154
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +        mov     rsi,r9
> > >
> > > +        xor     rcx,rcx
> > >
> > > +        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
> > >
> > > +        popfq
> > >
> > > +        pop     r15
> > >
> > > +        pop     r14
> > >
> > > +        pop     r13
> > >
> > > +        pop     r12
> > >
> > > +        pop     rbp
> > >
> > > +        pop     rbx
> > >
> > > +        pop     rdi
> > >
> > > +        pop     rsi
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +section .pdata rdata align=4
> > >
> > > +ALIGN   4
> > >
> > > +        DD      $L$SEH_begin_aesni_multi_cbc_encrypt wrt ..imagebase
> > >
> > > +        DD      $L$SEH_end_aesni_multi_cbc_encrypt wrt ..imagebase
> > >
> > > +        DD      $L$SEH_info_aesni_multi_cbc_encrypt wrt ..imagebase
> > >
> > > +        DD      $L$SEH_begin_aesni_multi_cbc_decrypt wrt ..imagebase
> > >
> > > +        DD      $L$SEH_end_aesni_multi_cbc_decrypt wrt ..imagebase
> > >
> > > +        DD      $L$SEH_info_aesni_multi_cbc_decrypt wrt ..imagebase
> > >
> > > +section .xdata rdata align=8
> > >
> > > +ALIGN   8
> > >
> > > +$L$SEH_info_aesni_multi_cbc_encrypt:
> > >
> > > +DB      9,0,0,0
> > >
> > > +        DD      se_handler wrt ..imagebase
> > >
> > > +        DD      $L$enc4x_body wrt ..imagebase,$L$enc4x_epilogue
> > > wrt ..imagebase
> > >
> > > +$L$SEH_info_aesni_multi_cbc_decrypt:
> > >
> > > +DB      9,0,0,0
> > >
> > > +        DD      se_handler wrt ..imagebase
> > >
> > > +        DD      $L$dec4x_body wrt ..imagebase,$L$dec4x_epilogue
> > > wrt ..imagebase
> > >
> > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
> > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
> > > x86_64.nasm
> > > new file mode 100644
> > > index 0000000000..f4fd9ca50d
> > > --- /dev/null
> > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
> x86_64.nasm
> > > @@ -0,0 +1,1916 @@
> > > +; WARNING: do not edit!
> > >
> > > +; Generated from openssl/crypto/aes/asm/aesni-sha1-x86_64.pl
> > >
> > > +;
> > >
> > > +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved.
> > >
> > > +;
> > >
> > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > >
> > > +; this file except in compliance with the License.  You can obtain a copy
> > >
> > > +; in the file LICENSE in the source distribution or at
> > >
> > > +; https://www.openssl.org/source/license.html
> > >
> > > +
> > >
> > > +default rel
> > >
> > > +%define XMMWORD
> > >
> > > +%define YMMWORD
> > >
> > > +%define ZMMWORD
> > >
> > > +section .text code align=64
> > >
> > > +
> > >
> > > +EXTERN  OPENSSL_ia32cap_P
> > >
> > > +
> > >
> > > +global  aesni_cbc_sha1_enc
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +aesni_cbc_sha1_enc:
> > >
> > > +
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+0))]
> > >
> > > +        mov     r11,QWORD[((OPENSSL_ia32cap_P+4))]
> > >
> > > +        bt      r11,61
> > >
> > > +        jc      NEAR aesni_cbc_sha1_enc_shaext
> > >
> > > +        jmp     NEAR aesni_cbc_sha1_enc_ssse3
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +aesni_cbc_sha1_enc_ssse3:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_aesni_cbc_sha1_enc_ssse3:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +        mov     rcx,r9
> > >
> > > +        mov     r8,QWORD[40+rsp]
> > >
> > > +        mov     r9,QWORD[48+rsp]
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        mov     r10,QWORD[56+rsp]
> > >
> > > +
> > >
> > > +
> > >
> > > +        push    rbx
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        push    r12
> > >
> > > +
> > >
> > > +        push    r13
> > >
> > > +
> > >
> > > +        push    r14
> > >
> > > +
> > >
> > > +        push    r15
> > >
> > > +
> > >
> > > +        lea     rsp,[((-264))+rsp]
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        movaps  XMMWORD[(96+0)+rsp],xmm6
> > >
> > > +        movaps  XMMWORD[(96+16)+rsp],xmm7
> > >
> > > +        movaps  XMMWORD[(96+32)+rsp],xmm8
> > >
> > > +        movaps  XMMWORD[(96+48)+rsp],xmm9
> > >
> > > +        movaps  XMMWORD[(96+64)+rsp],xmm10
> > >
> > > +        movaps  XMMWORD[(96+80)+rsp],xmm11
> > >
> > > +        movaps  XMMWORD[(96+96)+rsp],xmm12
> > >
> > > +        movaps  XMMWORD[(96+112)+rsp],xmm13
> > >
> > > +        movaps  XMMWORD[(96+128)+rsp],xmm14
> > >
> > > +        movaps  XMMWORD[(96+144)+rsp],xmm15
> > >
> > > +$L$prologue_ssse3:
> > >
> > > +        mov     r12,rdi
> > >
> > > +        mov     r13,rsi
> > >
> > > +        mov     r14,rdx
> > >
> > > +        lea     r15,[112+rcx]
> > >
> > > +        movdqu  xmm2,XMMWORD[r8]
> > >
> > > +        mov     QWORD[88+rsp],r8
> > >
> > > +        shl     r14,6
> > >
> > > +        sub     r13,r12
> > >
> > > +        mov     r8d,DWORD[((240-112))+r15]
> > >
> > > +        add     r14,r10
> > >
> > > +
> > >
> > > +        lea     r11,[K_XX_XX]
> > >
> > > +        mov     eax,DWORD[r9]
> > >
> > > +        mov     ebx,DWORD[4+r9]
> > >
> > > +        mov     ecx,DWORD[8+r9]
> > >
> > > +        mov     edx,DWORD[12+r9]
> > >
> > > +        mov     esi,ebx
> > >
> > > +        mov     ebp,DWORD[16+r9]
> > >
> > > +        mov     edi,ecx
> > >
> > > +        xor     edi,edx
> > >
> > > +        and     esi,edi
> > >
> > > +
> > >
> > > +        movdqa  xmm3,XMMWORD[64+r11]
> > >
> > > +        movdqa  xmm13,XMMWORD[r11]
> > >
> > > +        movdqu  xmm4,XMMWORD[r10]
> > >
> > > +        movdqu  xmm5,XMMWORD[16+r10]
> > >
> > > +        movdqu  xmm6,XMMWORD[32+r10]
> > >
> > > +        movdqu  xmm7,XMMWORD[48+r10]
> > >
> > > +DB      102,15,56,0,227
> > >
> > > +DB      102,15,56,0,235
> > >
> > > +DB      102,15,56,0,243
> > >
> > > +        add     r10,64
> > >
> > > +        paddd   xmm4,xmm13
> > >
> > > +DB      102,15,56,0,251
> > >
> > > +        paddd   xmm5,xmm13
> > >
> > > +        paddd   xmm6,xmm13
> > >
> > > +        movdqa  XMMWORD[rsp],xmm4
> > >
> > > +        psubd   xmm4,xmm13
> > >
> > > +        movdqa  XMMWORD[16+rsp],xmm5
> > >
> > > +        psubd   xmm5,xmm13
> > >
> > > +        movdqa  XMMWORD[32+rsp],xmm6
> > >
> > > +        psubd   xmm6,xmm13
> > >
> > > +        movups  xmm15,XMMWORD[((-112))+r15]
> > >
> > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > >
> > > +        jmp     NEAR $L$oop_ssse3
> > >
> > > +ALIGN   32
> > >
> > > +$L$oop_ssse3:
> > >
> > > +        ror     ebx,2
> > >
> > > +        movups  xmm14,XMMWORD[r12]
> > >
> > > +        xorps   xmm14,xmm15
> > >
> > > +        xorps   xmm2,xmm14
> > >
> > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        pshufd  xmm8,xmm4,238
> > >
> > > +        xor     esi,edx
> > >
> > > +        movdqa  xmm12,xmm7
> > >
> > > +        paddd   xmm13,xmm7
> > >
> > > +        mov     edi,eax
> > >
> > > +        add     ebp,DWORD[rsp]
> > >
> > > +        punpcklqdq      xmm8,xmm5
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,esi
> > >
> > > +        psrldq  xmm12,4
> > >
> > > +        and     edi,ebx
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        pxor    xmm8,xmm4
> > >
> > > +        add     ebp,eax
> > >
> > > +        ror     eax,7
> > >
> > > +        pxor    xmm12,xmm6
> > >
> > > +        xor     edi,ecx
> > >
> > > +        mov     esi,ebp
> > >
> > > +        add     edx,DWORD[4+rsp]
> > >
> > > +        pxor    xmm8,xmm12
> > >
> > > +        xor     eax,ebx
> > >
> > > +        rol     ebp,5
> > >
> > > +        movdqa  XMMWORD[48+rsp],xmm13
> > >
> > > +        add     edx,edi
> > >
> > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        and     esi,eax
> > >
> > > +        movdqa  xmm3,xmm8
> > >
> > > +        xor     eax,ebx
> > >
> > > +        add     edx,ebp
> > >
> > > +        ror     ebp,7
> > >
> > > +        movdqa  xmm12,xmm8
> > >
> > > +        xor     esi,ebx
> > >
> > > +        pslldq  xmm3,12
> > >
> > > +        paddd   xmm8,xmm8
> > >
> > > +        mov     edi,edx
> > >
> > > +        add     ecx,DWORD[8+rsp]
> > >
> > > +        psrld   xmm12,31
> > >
> > > +        xor     ebp,eax
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,esi
> > >
> > > +        movdqa  xmm13,xmm3
> > >
> > > +        and     edi,ebp
> > >
> > > +        xor     ebp,eax
> > >
> > > +        psrld   xmm3,30
> > >
> > > +        add     ecx,edx
> > >
> > > +        ror     edx,7
> > >
> > > +        por     xmm8,xmm12
> > >
> > > +        xor     edi,eax
> > >
> > > +        mov     esi,ecx
> > >
> > > +        add     ebx,DWORD[12+rsp]
> > >
> > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        pslld   xmm13,2
> > >
> > > +        pxor    xmm8,xmm3
> > >
> > > +        xor     edx,ebp
> > >
> > > +        movdqa  xmm3,XMMWORD[r11]
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,edi
> > >
> > > +        and     esi,edx
> > >
> > > +        pxor    xmm8,xmm13
> > >
> > > +        xor     edx,ebp
> > >
> > > +        add     ebx,ecx
> > >
> > > +        ror     ecx,7
> > >
> > > +        pshufd  xmm9,xmm5,238
> > >
> > > +        xor     esi,ebp
> > >
> > > +        movdqa  xmm13,xmm8
> > >
> > > +        paddd   xmm3,xmm8
> > >
> > > +        mov     edi,ebx
> > >
> > > +        add     eax,DWORD[16+rsp]
> > >
> > > +        punpcklqdq      xmm9,xmm6
> > >
> > > +        xor     ecx,edx
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,esi
> > >
> > > +        psrldq  xmm13,4
> > >
> > > +        and     edi,ecx
> > >
> > > +        xor     ecx,edx
> > >
> > > +        pxor    xmm9,xmm5
> > >
> > > +        add     eax,ebx
> > >
> > > +        ror     ebx,7
> > >
> > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        pxor    xmm13,xmm7
> > >
> > > +        xor     edi,edx
> > >
> > > +        mov     esi,eax
> > >
> > > +        add     ebp,DWORD[20+rsp]
> > >
> > > +        pxor    xmm9,xmm13
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        rol     eax,5
> > >
> > > +        movdqa  XMMWORD[rsp],xmm3
> > >
> > > +        add     ebp,edi
> > >
> > > +        and     esi,ebx
> > >
> > > +        movdqa  xmm12,xmm9
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        add     ebp,eax
> > >
> > > +        ror     eax,7
> > >
> > > +        movdqa  xmm13,xmm9
> > >
> > > +        xor     esi,ecx
> > >
> > > +        pslldq  xmm12,12
> > >
> > > +        paddd   xmm9,xmm9
> > >
> > > +        mov     edi,ebp
> > >
> > > +        add     edx,DWORD[24+rsp]
> > >
> > > +        psrld   xmm13,31
> > >
> > > +        xor     eax,ebx
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,esi
> > >
> > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        movdqa  xmm3,xmm12
> > >
> > > +        and     edi,eax
> > >
> > > +        xor     eax,ebx
> > >
> > > +        psrld   xmm12,30
> > >
> > > +        add     edx,ebp
> > >
> > > +        ror     ebp,7
> > >
> > > +        por     xmm9,xmm13
> > >
> > > +        xor     edi,ebx
> > >
> > > +        mov     esi,edx
> > >
> > > +        add     ecx,DWORD[28+rsp]
> > >
> > > +        pslld   xmm3,2
> > >
> > > +        pxor    xmm9,xmm12
> > >
> > > +        xor     ebp,eax
> > >
> > > +        movdqa  xmm12,XMMWORD[16+r11]
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,edi
> > >
> > > +        and     esi,ebp
> > >
> > > +        pxor    xmm9,xmm3
> > >
> > > +        xor     ebp,eax
> > >
> > > +        add     ecx,edx
> > >
> > > +        ror     edx,7
> > >
> > > +        pshufd  xmm10,xmm6,238
> > >
> > > +        xor     esi,eax
> > >
> > > +        movdqa  xmm3,xmm9
> > >
> > > +        paddd   xmm12,xmm9
> > >
> > > +        mov     edi,ecx
> > >
> > > +        add     ebx,DWORD[32+rsp]
> > >
> > > +        movups  xmm0,XMMWORD[r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        punpcklqdq      xmm10,xmm7
> > >
> > > +        xor     edx,ebp
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,esi
> > >
> > > +        psrldq  xmm3,4
> > >
> > > +        and     edi,edx
> > >
> > > +        xor     edx,ebp
> > >
> > > +        pxor    xmm10,xmm6
> > >
> > > +        add     ebx,ecx
> > >
> > > +        ror     ecx,7
> > >
> > > +        pxor    xmm3,xmm8
> > >
> > > +        xor     edi,ebp
> > >
> > > +        mov     esi,ebx
> > >
> > > +        add     eax,DWORD[36+rsp]
> > >
> > > +        pxor    xmm10,xmm3
> > >
> > > +        xor     ecx,edx
> > >
> > > +        rol     ebx,5
> > >
> > > +        movdqa  XMMWORD[16+rsp],xmm12
> > >
> > > +        add     eax,edi
> > >
> > > +        and     esi,ecx
> > >
> > > +        movdqa  xmm13,xmm10
> > >
> > > +        xor     ecx,edx
> > >
> > > +        add     eax,ebx
> > >
> > > +        ror     ebx,7
> > >
> > > +        movups  xmm1,XMMWORD[16+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        movdqa  xmm3,xmm10
> > >
> > > +        xor     esi,edx
> > >
> > > +        pslldq  xmm13,12
> > >
> > > +        paddd   xmm10,xmm10
> > >
> > > +        mov     edi,eax
> > >
> > > +        add     ebp,DWORD[40+rsp]
> > >
> > > +        psrld   xmm3,31
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,esi
> > >
> > > +        movdqa  xmm12,xmm13
> > >
> > > +        and     edi,ebx
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        psrld   xmm13,30
> > >
> > > +        add     ebp,eax
> > >
> > > +        ror     eax,7
> > >
> > > +        por     xmm10,xmm3
> > >
> > > +        xor     edi,ecx
> > >
> > > +        mov     esi,ebp
> > >
> > > +        add     edx,DWORD[44+rsp]
> > >
> > > +        pslld   xmm12,2
> > >
> > > +        pxor    xmm10,xmm13
> > >
> > > +        xor     eax,ebx
> > >
> > > +        movdqa  xmm13,XMMWORD[16+r11]
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,edi
> > >
> > > +        movups  xmm0,XMMWORD[32+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        and     esi,eax
> > >
> > > +        pxor    xmm10,xmm12
> > >
> > > +        xor     eax,ebx
> > >
> > > +        add     edx,ebp
> > >
> > > +        ror     ebp,7
> > >
> > > +        pshufd  xmm11,xmm7,238
> > >
> > > +        xor     esi,ebx
> > >
> > > +        movdqa  xmm12,xmm10
> > >
> > > +        paddd   xmm13,xmm10
> > >
> > > +        mov     edi,edx
> > >
> > > +        add     ecx,DWORD[48+rsp]
> > >
> > > +        punpcklqdq      xmm11,xmm8
> > >
> > > +        xor     ebp,eax
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,esi
> > >
> > > +        psrldq  xmm12,4
> > >
> > > +        and     edi,ebp
> > >
> > > +        xor     ebp,eax
> > >
> > > +        pxor    xmm11,xmm7
> > >
> > > +        add     ecx,edx
> > >
> > > +        ror     edx,7
> > >
> > > +        pxor    xmm12,xmm9
> > >
> > > +        xor     edi,eax
> > >
> > > +        mov     esi,ecx
> > >
> > > +        add     ebx,DWORD[52+rsp]
> > >
> > > +        movups  xmm1,XMMWORD[48+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        pxor    xmm11,xmm12
> > >
> > > +        xor     edx,ebp
> > >
> > > +        rol     ecx,5
> > >
> > > +        movdqa  XMMWORD[32+rsp],xmm13
> > >
> > > +        add     ebx,edi
> > >
> > > +        and     esi,edx
> > >
> > > +        movdqa  xmm3,xmm11
> > >
> > > +        xor     edx,ebp
> > >
> > > +        add     ebx,ecx
> > >
> > > +        ror     ecx,7
> > >
> > > +        movdqa  xmm12,xmm11
> > >
> > > +        xor     esi,ebp
> > >
> > > +        pslldq  xmm3,12
> > >
> > > +        paddd   xmm11,xmm11
> > >
> > > +        mov     edi,ebx
> > >
> > > +        add     eax,DWORD[56+rsp]
> > >
> > > +        psrld   xmm12,31
> > >
> > > +        xor     ecx,edx
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,esi
> > >
> > > +        movdqa  xmm13,xmm3
> > >
> > > +        and     edi,ecx
> > >
> > > +        xor     ecx,edx
> > >
> > > +        psrld   xmm3,30
> > >
> > > +        add     eax,ebx
> > >
> > > +        ror     ebx,7
> > >
> > > +        cmp     r8d,11
> > >
> > > +        jb      NEAR $L$aesenclast1
> > >
> > > +        movups  xmm0,XMMWORD[64+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[80+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        je      NEAR $L$aesenclast1
> > >
> > > +        movups  xmm0,XMMWORD[96+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[112+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +$L$aesenclast1:
> > >
> > > +DB      102,15,56,221,209
> > >
> > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > >
> > > +        por     xmm11,xmm12
> > >
> > > +        xor     edi,edx
> > >
> > > +        mov     esi,eax
> > >
> > > +        add     ebp,DWORD[60+rsp]
> > >
> > > +        pslld   xmm13,2
> > >
> > > +        pxor    xmm11,xmm3
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        movdqa  xmm3,XMMWORD[16+r11]
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,edi
> > >
> > > +        and     esi,ebx
> > >
> > > +        pxor    xmm11,xmm13
> > >
> > > +        pshufd  xmm13,xmm10,238
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        add     ebp,eax
> > >
> > > +        ror     eax,7
> > >
> > > +        pxor    xmm4,xmm8
> > >
> > > +        xor     esi,ecx
> > >
> > > +        mov     edi,ebp
> > >
> > > +        add     edx,DWORD[rsp]
> > >
> > > +        punpcklqdq      xmm13,xmm11
> > >
> > > +        xor     eax,ebx
> > >
> > > +        rol     ebp,5
> > >
> > > +        pxor    xmm4,xmm5
> > >
> > > +        add     edx,esi
> > >
> > > +        movups  xmm14,XMMWORD[16+r12]
> > >
> > > +        xorps   xmm14,xmm15
> > >
> > > +        movups  XMMWORD[r13*1+r12],xmm2
> > >
> > > +        xorps   xmm2,xmm14
> > >
> > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        and     edi,eax
> > >
> > > +        movdqa  xmm12,xmm3
> > >
> > > +        xor     eax,ebx
> > >
> > > +        paddd   xmm3,xmm11
> > >
> > > +        add     edx,ebp
> > >
> > > +        pxor    xmm4,xmm13
> > >
> > > +        ror     ebp,7
> > >
> > > +        xor     edi,ebx
> > >
> > > +        mov     esi,edx
> > >
> > > +        add     ecx,DWORD[4+rsp]
> > >
> > > +        movdqa  xmm13,xmm4
> > >
> > > +        xor     ebp,eax
> > >
> > > +        rol     edx,5
> > >
> > > +        movdqa  XMMWORD[48+rsp],xmm3
> > >
> > > +        add     ecx,edi
> > >
> > > +        and     esi,ebp
> > >
> > > +        xor     ebp,eax
> > >
> > > +        pslld   xmm4,2
> > >
> > > +        add     ecx,edx
> > >
> > > +        ror     edx,7
> > >
> > > +        psrld   xmm13,30
> > >
> > > +        xor     esi,eax
> > >
> > > +        mov     edi,ecx
> > >
> > > +        add     ebx,DWORD[8+rsp]
> > >
> > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        por     xmm4,xmm13
> > >
> > > +        xor     edx,ebp
> > >
> > > +        rol     ecx,5
> > >
> > > +        pshufd  xmm3,xmm11,238
> > >
> > > +        add     ebx,esi
> > >
> > > +        and     edi,edx
> > >
> > > +        xor     edx,ebp
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[12+rsp]
> > >
> > > +        xor     edi,ebp
> > >
> > > +        mov     esi,ebx
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,edi
> > >
> > > +        xor     esi,edx
> > >
> > > +        ror     ecx,7
> > >
> > > +        add     eax,ebx
> > >
> > > +        pxor    xmm5,xmm9
> > >
> > > +        add     ebp,DWORD[16+rsp]
> > >
> > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        xor     esi,ecx
> > >
> > > +        punpcklqdq      xmm3,xmm4
> > >
> > > +        mov     edi,eax
> > >
> > > +        rol     eax,5
> > >
> > > +        pxor    xmm5,xmm6
> > >
> > > +        add     ebp,esi
> > >
> > > +        xor     edi,ecx
> > >
> > > +        movdqa  xmm13,xmm12
> > >
> > > +        ror     ebx,7
> > >
> > > +        paddd   xmm12,xmm4
> > >
> > > +        add     ebp,eax
> > >
> > > +        pxor    xmm5,xmm3
> > >
> > > +        add     edx,DWORD[20+rsp]
> > >
> > > +        xor     edi,ebx
> > >
> > > +        mov     esi,ebp
> > >
> > > +        rol     ebp,5
> > >
> > > +        movdqa  xmm3,xmm5
> > >
> > > +        add     edx,edi
> > >
> > > +        xor     esi,ebx
> > >
> > > +        movdqa  XMMWORD[rsp],xmm12
> > >
> > > +        ror     eax,7
> > >
> > > +        add     edx,ebp
> > >
> > > +        add     ecx,DWORD[24+rsp]
> > >
> > > +        pslld   xmm5,2
> > >
> > > +        xor     esi,eax
> > >
> > > +        mov     edi,edx
> > >
> > > +        psrld   xmm3,30
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,esi
> > >
> > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        xor     edi,eax
> > >
> > > +        ror     ebp,7
> > >
> > > +        por     xmm5,xmm3
> > >
> > > +        add     ecx,edx
> > >
> > > +        add     ebx,DWORD[28+rsp]
> > >
> > > +        pshufd  xmm12,xmm4,238
> > >
> > > +        xor     edi,ebp
> > >
> > > +        mov     esi,ecx
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,edi
> > >
> > > +        xor     esi,ebp
> > >
> > > +        ror     edx,7
> > >
> > > +        add     ebx,ecx
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +        add     eax,DWORD[32+rsp]
> > >
> > > +        xor     esi,edx
> > >
> > > +        punpcklqdq      xmm12,xmm5
> > >
> > > +        mov     edi,ebx
> > >
> > > +        rol     ebx,5
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +        add     eax,esi
> > >
> > > +        xor     edi,edx
> > >
> > > +        movdqa  xmm3,XMMWORD[32+r11]
> > >
> > > +        ror     ecx,7
> > >
> > > +        paddd   xmm13,xmm5
> > >
> > > +        add     eax,ebx
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +        add     ebp,DWORD[36+rsp]
> > >
> > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        xor     edi,ecx
> > >
> > > +        mov     esi,eax
> > >
> > > +        rol     eax,5
> > >
> > > +        movdqa  xmm12,xmm6
> > >
> > > +        add     ebp,edi
> > >
> > > +        xor     esi,ecx
> > >
> > > +        movdqa  XMMWORD[16+rsp],xmm13
> > >
> > > +        ror     ebx,7
> > >
> > > +        add     ebp,eax
> > >
> > > +        add     edx,DWORD[40+rsp]
> > >
> > > +        pslld   xmm6,2
> > >
> > > +        xor     esi,ebx
> > >
> > > +        mov     edi,ebp
> > >
> > > +        psrld   xmm12,30
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,esi
> > >
> > > +        xor     edi,ebx
> > >
> > > +        ror     eax,7
> > >
> > > +        por     xmm6,xmm12
> > >
> > > +        add     edx,ebp
> > >
> > > +        add     ecx,DWORD[44+rsp]
> > >
> > > +        pshufd  xmm13,xmm5,238
> > >
> > > +        xor     edi,eax
> > >
> > > +        mov     esi,edx
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,edi
> > >
> > > +        movups  xmm0,XMMWORD[r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        xor     esi,eax
> > >
> > > +        ror     ebp,7
> > >
> > > +        add     ecx,edx
> > >
> > > +        pxor    xmm7,xmm11
> > >
> > > +        add     ebx,DWORD[48+rsp]
> > >
> > > +        xor     esi,ebp
> > >
> > > +        punpcklqdq      xmm13,xmm6
> > >
> > > +        mov     edi,ecx
> > >
> > > +        rol     ecx,5
> > >
> > > +        pxor    xmm7,xmm8
> > >
> > > +        add     ebx,esi
> > >
> > > +        xor     edi,ebp
> > >
> > > +        movdqa  xmm12,xmm3
> > >
> > > +        ror     edx,7
> > >
> > > +        paddd   xmm3,xmm6
> > >
> > > +        add     ebx,ecx
> > >
> > > +        pxor    xmm7,xmm13
> > >
> > > +        add     eax,DWORD[52+rsp]
> > >
> > > +        xor     edi,edx
> > >
> > > +        mov     esi,ebx
> > >
> > > +        rol     ebx,5
> > >
> > > +        movdqa  xmm13,xmm7
> > >
> > > +        add     eax,edi
> > >
> > > +        xor     esi,edx
> > >
> > > +        movdqa  XMMWORD[32+rsp],xmm3
> > >
> > > +        ror     ecx,7
> > >
> > > +        add     eax,ebx
> > >
> > > +        add     ebp,DWORD[56+rsp]
> > >
> > > +        movups  xmm1,XMMWORD[16+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        pslld   xmm7,2
> > >
> > > +        xor     esi,ecx
> > >
> > > +        mov     edi,eax
> > >
> > > +        psrld   xmm13,30
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,esi
> > >
> > > +        xor     edi,ecx
> > >
> > > +        ror     ebx,7
> > >
> > > +        por     xmm7,xmm13
> > >
> > > +        add     ebp,eax
> > >
> > > +        add     edx,DWORD[60+rsp]
> > >
> > > +        pshufd  xmm3,xmm6,238
> > >
> > > +        xor     edi,ebx
> > >
> > > +        mov     esi,ebp
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,edi
> > >
> > > +        xor     esi,ebx
> > >
> > > +        ror     eax,7
> > >
> > > +        add     edx,ebp
> > >
> > > +        pxor    xmm8,xmm4
> > >
> > > +        add     ecx,DWORD[rsp]
> > >
> > > +        xor     esi,eax
> > >
> > > +        punpcklqdq      xmm3,xmm7
> > >
> > > +        mov     edi,edx
> > >
> > > +        rol     edx,5
> > >
> > > +        pxor    xmm8,xmm9
> > >
> > > +        add     ecx,esi
> > >
> > > +        movups  xmm0,XMMWORD[32+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        xor     edi,eax
> > >
> > > +        movdqa  xmm13,xmm12
> > >
> > > +        ror     ebp,7
> > >
> > > +        paddd   xmm12,xmm7
> > >
> > > +        add     ecx,edx
> > >
> > > +        pxor    xmm8,xmm3
> > >
> > > +        add     ebx,DWORD[4+rsp]
> > >
> > > +        xor     edi,ebp
> > >
> > > +        mov     esi,ecx
> > >
> > > +        rol     ecx,5
> > >
> > > +        movdqa  xmm3,xmm8
> > >
> > > +        add     ebx,edi
> > >
> > > +        xor     esi,ebp
> > >
> > > +        movdqa  XMMWORD[48+rsp],xmm12
> > >
> > > +        ror     edx,7
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[8+rsp]
> > >
> > > +        pslld   xmm8,2
> > >
> > > +        xor     esi,edx
> > >
> > > +        mov     edi,ebx
> > >
> > > +        psrld   xmm3,30
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,esi
> > >
> > > +        xor     edi,edx
> > >
> > > +        ror     ecx,7
> > >
> > > +        por     xmm8,xmm3
> > >
> > > +        add     eax,ebx
> > >
> > > +        add     ebp,DWORD[12+rsp]
> > >
> > > +        movups  xmm1,XMMWORD[48+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        pshufd  xmm12,xmm7,238
> > >
> > > +        xor     edi,ecx
> > >
> > > +        mov     esi,eax
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,edi
> > >
> > > +        xor     esi,ecx
> > >
> > > +        ror     ebx,7
> > >
> > > +        add     ebp,eax
> > >
> > > +        pxor    xmm9,xmm5
> > >
> > > +        add     edx,DWORD[16+rsp]
> > >
> > > +        xor     esi,ebx
> > >
> > > +        punpcklqdq      xmm12,xmm8
> > >
> > > +        mov     edi,ebp
> > >
> > > +        rol     ebp,5
> > >
> > > +        pxor    xmm9,xmm10
> > >
> > > +        add     edx,esi
> > >
> > > +        xor     edi,ebx
> > >
> > > +        movdqa  xmm3,xmm13
> > >
> > > +        ror     eax,7
> > >
> > > +        paddd   xmm13,xmm8
> > >
> > > +        add     edx,ebp
> > >
> > > +        pxor    xmm9,xmm12
> > >
> > > +        add     ecx,DWORD[20+rsp]
> > >
> > > +        xor     edi,eax
> > >
> > > +        mov     esi,edx
> > >
> > > +        rol     edx,5
> > >
> > > +        movdqa  xmm12,xmm9
> > >
> > > +        add     ecx,edi
> > >
> > > +        cmp     r8d,11
> > >
> > > +        jb      NEAR $L$aesenclast2
> > >
> > > +        movups  xmm0,XMMWORD[64+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[80+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        je      NEAR $L$aesenclast2
> > >
> > > +        movups  xmm0,XMMWORD[96+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[112+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +$L$aesenclast2:
> > >
> > > +DB      102,15,56,221,209
> > >
> > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > >
> > > +        xor     esi,eax
> > >
> > > +        movdqa  XMMWORD[rsp],xmm13
> > >
> > > +        ror     ebp,7
> > >
> > > +        add     ecx,edx
> > >
> > > +        add     ebx,DWORD[24+rsp]
> > >
> > > +        pslld   xmm9,2
> > >
> > > +        xor     esi,ebp
> > >
> > > +        mov     edi,ecx
> > >
> > > +        psrld   xmm12,30
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,esi
> > >
> > > +        xor     edi,ebp
> > >
> > > +        ror     edx,7
> > >
> > > +        por     xmm9,xmm12
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[28+rsp]
> > >
> > > +        pshufd  xmm13,xmm8,238
> > >
> > > +        ror     ecx,7
> > >
> > > +        mov     esi,ebx
> > >
> > > +        xor     edi,edx
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,edi
> > >
> > > +        xor     esi,ecx
> > >
> > > +        xor     ecx,edx
> > >
> > > +        add     eax,ebx
> > >
> > > +        pxor    xmm10,xmm6
> > >
> > > +        add     ebp,DWORD[32+rsp]
> > >
> > > +        movups  xmm14,XMMWORD[32+r12]
> > >
> > > +        xorps   xmm14,xmm15
> > >
> > > +        movups  XMMWORD[16+r12*1+r13],xmm2
> > >
> > > +        xorps   xmm2,xmm14
> > >
> > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        and     esi,ecx
> > >
> > > +        xor     ecx,edx
> > >
> > > +        ror     ebx,7
> > >
> > > +        punpcklqdq      xmm13,xmm9
> > >
> > > +        mov     edi,eax
> > >
> > > +        xor     esi,ecx
> > >
> > > +        pxor    xmm10,xmm11
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,esi
> > >
> > > +        movdqa  xmm12,xmm3
> > >
> > > +        xor     edi,ebx
> > >
> > > +        paddd   xmm3,xmm9
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        pxor    xmm10,xmm13
> > >
> > > +        add     ebp,eax
> > >
> > > +        add     edx,DWORD[36+rsp]
> > >
> > > +        and     edi,ebx
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        ror     eax,7
> > >
> > > +        movdqa  xmm13,xmm10
> > >
> > > +        mov     esi,ebp
> > >
> > > +        xor     edi,ebx
> > >
> > > +        movdqa  XMMWORD[16+rsp],xmm3
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,edi
> > >
> > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        xor     esi,eax
> > >
> > > +        pslld   xmm10,2
> > >
> > > +        xor     eax,ebx
> > >
> > > +        add     edx,ebp
> > >
> > > +        psrld   xmm13,30
> > >
> > > +        add     ecx,DWORD[40+rsp]
> > >
> > > +        and     esi,eax
> > >
> > > +        xor     eax,ebx
> > >
> > > +        por     xmm10,xmm13
> > >
> > > +        ror     ebp,7
> > >
> > > +        mov     edi,edx
> > >
> > > +        xor     esi,eax
> > >
> > > +        rol     edx,5
> > >
> > > +        pshufd  xmm3,xmm9,238
> > >
> > > +        add     ecx,esi
> > >
> > > +        xor     edi,ebp
> > >
> > > +        xor     ebp,eax
> > >
> > > +        add     ecx,edx
> > >
> > > +        add     ebx,DWORD[44+rsp]
> > >
> > > +        and     edi,ebp
> > >
> > > +        xor     ebp,eax
> > >
> > > +        ror     edx,7
> > >
> > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        mov     esi,ecx
> > >
> > > +        xor     edi,ebp
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,edi
> > >
> > > +        xor     esi,edx
> > >
> > > +        xor     edx,ebp
> > >
> > > +        add     ebx,ecx
> > >
> > > +        pxor    xmm11,xmm7
> > >
> > > +        add     eax,DWORD[48+rsp]
> > >
> > > +        and     esi,edx
> > >
> > > +        xor     edx,ebp
> > >
> > > +        ror     ecx,7
> > >
> > > +        punpcklqdq      xmm3,xmm10
> > >
> > > +        mov     edi,ebx
> > >
> > > +        xor     esi,edx
> > >
> > > +        pxor    xmm11,xmm4
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,esi
> > >
> > > +        movdqa  xmm13,XMMWORD[48+r11]
> > >
> > > +        xor     edi,ecx
> > >
> > > +        paddd   xmm12,xmm10
> > >
> > > +        xor     ecx,edx
> > >
> > > +        pxor    xmm11,xmm3
> > >
> > > +        add     eax,ebx
> > >
> > > +        add     ebp,DWORD[52+rsp]
> > >
> > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        and     edi,ecx
> > >
> > > +        xor     ecx,edx
> > >
> > > +        ror     ebx,7
> > >
> > > +        movdqa  xmm3,xmm11
> > >
> > > +        mov     esi,eax
> > >
> > > +        xor     edi,ecx
> > >
> > > +        movdqa  XMMWORD[32+rsp],xmm12
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,edi
> > >
> > > +        xor     esi,ebx
> > >
> > > +        pslld   xmm11,2
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        add     ebp,eax
> > >
> > > +        psrld   xmm3,30
> > >
> > > +        add     edx,DWORD[56+rsp]
> > >
> > > +        and     esi,ebx
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        por     xmm11,xmm3
> > >
> > > +        ror     eax,7
> > >
> > > +        mov     edi,ebp
> > >
> > > +        xor     esi,ebx
> > >
> > > +        rol     ebp,5
> > >
> > > +        pshufd  xmm12,xmm10,238
> > >
> > > +        add     edx,esi
> > >
> > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        xor     edi,eax
> > >
> > > +        xor     eax,ebx
> > >
> > > +        add     edx,ebp
> > >
> > > +        add     ecx,DWORD[60+rsp]
> > >
> > > +        and     edi,eax
> > >
> > > +        xor     eax,ebx
> > >
> > > +        ror     ebp,7
> > >
> > > +        mov     esi,edx
> > >
> > > +        xor     edi,eax
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,edi
> > >
> > > +        xor     esi,ebp
> > >
> > > +        xor     ebp,eax
> > >
> > > +        add     ecx,edx
> > >
> > > +        pxor    xmm4,xmm8
> > >
> > > +        add     ebx,DWORD[rsp]
> > >
> > > +        and     esi,ebp
> > >
> > > +        xor     ebp,eax
> > >
> > > +        ror     edx,7
> > >
> > > +        movups  xmm0,XMMWORD[r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        punpcklqdq      xmm12,xmm11
> > >
> > > +        mov     edi,ecx
> > >
> > > +        xor     esi,ebp
> > >
> > > +        pxor    xmm4,xmm5
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,esi
> > >
> > > +        movdqa  xmm3,xmm13
> > >
> > > +        xor     edi,edx
> > >
> > > +        paddd   xmm13,xmm11
> > >
> > > +        xor     edx,ebp
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[4+rsp]
> > >
> > > +        and     edi,edx
> > >
> > > +        xor     edx,ebp
> > >
> > > +        ror     ecx,7
> > >
> > > +        movdqa  xmm12,xmm4
> > >
> > > +        mov     esi,ebx
> > >
> > > +        xor     edi,edx
> > >
> > > +        movdqa  XMMWORD[48+rsp],xmm13
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,edi
> > >
> > > +        xor     esi,ecx
> > >
> > > +        pslld   xmm4,2
> > >
> > > +        xor     ecx,edx
> > >
> > > +        add     eax,ebx
> > >
> > > +        psrld   xmm12,30
> > >
> > > +        add     ebp,DWORD[8+rsp]
> > >
> > > +        movups  xmm1,XMMWORD[16+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        and     esi,ecx
> > >
> > > +        xor     ecx,edx
> > >
> > > +        por     xmm4,xmm12
> > >
> > > +        ror     ebx,7
> > >
> > > +        mov     edi,eax
> > >
> > > +        xor     esi,ecx
> > >
> > > +        rol     eax,5
> > >
> > > +        pshufd  xmm13,xmm11,238
> > >
> > > +        add     ebp,esi
> > >
> > > +        xor     edi,ebx
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        add     ebp,eax
> > >
> > > +        add     edx,DWORD[12+rsp]
> > >
> > > +        and     edi,ebx
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        ror     eax,7
> > >
> > > +        mov     esi,ebp
> > >
> > > +        xor     edi,ebx
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,edi
> > >
> > > +        movups  xmm0,XMMWORD[32+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        xor     esi,eax
> > >
> > > +        xor     eax,ebx
> > >
> > > +        add     edx,ebp
> > >
> > > +        pxor    xmm5,xmm9
> > >
> > > +        add     ecx,DWORD[16+rsp]
> > >
> > > +        and     esi,eax
> > >
> > > +        xor     eax,ebx
> > >
> > > +        ror     ebp,7
> > >
> > > +        punpcklqdq      xmm13,xmm4
> > >
> > > +        mov     edi,edx
> > >
> > > +        xor     esi,eax
> > >
> > > +        pxor    xmm5,xmm6
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,esi
> > >
> > > +        movdqa  xmm12,xmm3
> > >
> > > +        xor     edi,ebp
> > >
> > > +        paddd   xmm3,xmm4
> > >
> > > +        xor     ebp,eax
> > >
> > > +        pxor    xmm5,xmm13
> > >
> > > +        add     ecx,edx
> > >
> > > +        add     ebx,DWORD[20+rsp]
> > >
> > > +        and     edi,ebp
> > >
> > > +        xor     ebp,eax
> > >
> > > +        ror     edx,7
> > >
> > > +        movups  xmm1,XMMWORD[48+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        movdqa  xmm13,xmm5
> > >
> > > +        mov     esi,ecx
> > >
> > > +        xor     edi,ebp
> > >
> > > +        movdqa  XMMWORD[rsp],xmm3
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,edi
> > >
> > > +        xor     esi,edx
> > >
> > > +        pslld   xmm5,2
> > >
> > > +        xor     edx,ebp
> > >
> > > +        add     ebx,ecx
> > >
> > > +        psrld   xmm13,30
> > >
> > > +        add     eax,DWORD[24+rsp]
> > >
> > > +        and     esi,edx
> > >
> > > +        xor     edx,ebp
> > >
> > > +        por     xmm5,xmm13
> > >
> > > +        ror     ecx,7
> > >
> > > +        mov     edi,ebx
> > >
> > > +        xor     esi,edx
> > >
> > > +        rol     ebx,5
> > >
> > > +        pshufd  xmm3,xmm4,238
> > >
> > > +        add     eax,esi
> > >
> > > +        xor     edi,ecx
> > >
> > > +        xor     ecx,edx
> > >
> > > +        add     eax,ebx
> > >
> > > +        add     ebp,DWORD[28+rsp]
> > >
> > > +        cmp     r8d,11
> > >
> > > +        jb      NEAR $L$aesenclast3
> > >
> > > +        movups  xmm0,XMMWORD[64+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[80+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        je      NEAR $L$aesenclast3
> > >
> > > +        movups  xmm0,XMMWORD[96+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[112+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +$L$aesenclast3:
> > >
> > > +DB      102,15,56,221,209
> > >
> > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > >
> > > +        and     edi,ecx
> > >
> > > +        xor     ecx,edx
> > >
> > > +        ror     ebx,7
> > >
> > > +        mov     esi,eax
> > >
> > > +        xor     edi,ecx
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,edi
> > >
> > > +        xor     esi,ebx
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        add     ebp,eax
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +        add     edx,DWORD[32+rsp]
> > >
> > > +        and     esi,ebx
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        ror     eax,7
> > >
> > > +        punpcklqdq      xmm3,xmm5
> > >
> > > +        mov     edi,ebp
> > >
> > > +        xor     esi,ebx
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,esi
> > >
> > > +        movups  xmm14,XMMWORD[48+r12]
> > >
> > > +        xorps   xmm14,xmm15
> > >
> > > +        movups  XMMWORD[32+r12*1+r13],xmm2
> > >
> > > +        xorps   xmm2,xmm14
> > >
> > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        movdqa  xmm13,xmm12
> > >
> > > +        xor     edi,eax
> > >
> > > +        paddd   xmm12,xmm5
> > >
> > > +        xor     eax,ebx
> > >
> > > +        pxor    xmm6,xmm3
> > >
> > > +        add     edx,ebp
> > >
> > > +        add     ecx,DWORD[36+rsp]
> > >
> > > +        and     edi,eax
> > >
> > > +        xor     eax,ebx
> > >
> > > +        ror     ebp,7
> > >
> > > +        movdqa  xmm3,xmm6
> > >
> > > +        mov     esi,edx
> > >
> > > +        xor     edi,eax
> > >
> > > +        movdqa  XMMWORD[16+rsp],xmm12
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,edi
> > >
> > > +        xor     esi,ebp
> > >
> > > +        pslld   xmm6,2
> > >
> > > +        xor     ebp,eax
> > >
> > > +        add     ecx,edx
> > >
> > > +        psrld   xmm3,30
> > >
> > > +        add     ebx,DWORD[40+rsp]
> > >
> > > +        and     esi,ebp
> > >
> > > +        xor     ebp,eax
> > >
> > > +        por     xmm6,xmm3
> > >
> > > +        ror     edx,7
> > >
> > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        mov     edi,ecx
> > >
> > > +        xor     esi,ebp
> > >
> > > +        rol     ecx,5
> > >
> > > +        pshufd  xmm12,xmm5,238
> > >
> > > +        add     ebx,esi
> > >
> > > +        xor     edi,edx
> > >
> > > +        xor     edx,ebp
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[44+rsp]
> > >
> > > +        and     edi,edx
> > >
> > > +        xor     edx,ebp
> > >
> > > +        ror     ecx,7
> > >
> > > +        mov     esi,ebx
> > >
> > > +        xor     edi,edx
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,edi
> > >
> > > +        xor     esi,edx
> > >
> > > +        add     eax,ebx
> > >
> > > +        pxor    xmm7,xmm11
> > >
> > > +        add     ebp,DWORD[48+rsp]
> > >
> > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        xor     esi,ecx
> > >
> > > +        punpcklqdq      xmm12,xmm6
> > >
> > > +        mov     edi,eax
> > >
> > > +        rol     eax,5
> > >
> > > +        pxor    xmm7,xmm8
> > >
> > > +        add     ebp,esi
> > >
> > > +        xor     edi,ecx
> > >
> > > +        movdqa  xmm3,xmm13
> > >
> > > +        ror     ebx,7
> > >
> > > +        paddd   xmm13,xmm6
> > >
> > > +        add     ebp,eax
> > >
> > > +        pxor    xmm7,xmm12
> > >
> > > +        add     edx,DWORD[52+rsp]
> > >
> > > +        xor     edi,ebx
> > >
> > > +        mov     esi,ebp
> > >
> > > +        rol     ebp,5
> > >
> > > +        movdqa  xmm12,xmm7
> > >
> > > +        add     edx,edi
> > >
> > > +        xor     esi,ebx
> > >
> > > +        movdqa  XMMWORD[32+rsp],xmm13
> > >
> > > +        ror     eax,7
> > >
> > > +        add     edx,ebp
> > >
> > > +        add     ecx,DWORD[56+rsp]
> > >
> > > +        pslld   xmm7,2
> > >
> > > +        xor     esi,eax
> > >
> > > +        mov     edi,edx
> > >
> > > +        psrld   xmm12,30
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,esi
> > >
> > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        xor     edi,eax
> > >
> > > +        ror     ebp,7
> > >
> > > +        por     xmm7,xmm12
> > >
> > > +        add     ecx,edx
> > >
> > > +        add     ebx,DWORD[60+rsp]
> > >
> > > +        xor     edi,ebp
> > >
> > > +        mov     esi,ecx
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,edi
> > >
> > > +        xor     esi,ebp
> > >
> > > +        ror     edx,7
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[rsp]
> > >
> > > +        xor     esi,edx
> > >
> > > +        mov     edi,ebx
> > >
> > > +        rol     ebx,5
> > >
> > > +        paddd   xmm3,xmm7
> > >
> > > +        add     eax,esi
> > >
> > > +        xor     edi,edx
> > >
> > > +        movdqa  XMMWORD[48+rsp],xmm3
> > >
> > > +        ror     ecx,7
> > >
> > > +        add     eax,ebx
> > >
> > > +        add     ebp,DWORD[4+rsp]
> > >
> > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        xor     edi,ecx
> > >
> > > +        mov     esi,eax
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,edi
> > >
> > > +        xor     esi,ecx
> > >
> > > +        ror     ebx,7
> > >
> > > +        add     ebp,eax
> > >
> > > +        add     edx,DWORD[8+rsp]
> > >
> > > +        xor     esi,ebx
> > >
> > > +        mov     edi,ebp
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,esi
> > >
> > > +        xor     edi,ebx
> > >
> > > +        ror     eax,7
> > >
> > > +        add     edx,ebp
> > >
> > > +        add     ecx,DWORD[12+rsp]
> > >
> > > +        xor     edi,eax
> > >
> > > +        mov     esi,edx
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,edi
> > >
> > > +        movups  xmm0,XMMWORD[r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        xor     esi,eax
> > >
> > > +        ror     ebp,7
> > >
> > > +        add     ecx,edx
> > >
> > > +        cmp     r10,r14
> > >
> > > +        je      NEAR $L$done_ssse3
> > >
> > > +        movdqa  xmm3,XMMWORD[64+r11]
> > >
> > > +        movdqa  xmm13,XMMWORD[r11]
> > >
> > > +        movdqu  xmm4,XMMWORD[r10]
> > >
> > > +        movdqu  xmm5,XMMWORD[16+r10]
> > >
> > > +        movdqu  xmm6,XMMWORD[32+r10]
> > >
> > > +        movdqu  xmm7,XMMWORD[48+r10]
> > >
> > > +DB      102,15,56,0,227
> > >
> > > +        add     r10,64
> > >
> > > +        add     ebx,DWORD[16+rsp]
> > >
> > > +        xor     esi,ebp
> > >
> > > +        mov     edi,ecx
> > >
> > > +DB      102,15,56,0,235
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,esi
> > >
> > > +        xor     edi,ebp
> > >
> > > +        ror     edx,7
> > >
> > > +        paddd   xmm4,xmm13
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[20+rsp]
> > >
> > > +        xor     edi,edx
> > >
> > > +        mov     esi,ebx
> > >
> > > +        movdqa  XMMWORD[rsp],xmm4
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,edi
> > >
> > > +        xor     esi,edx
> > >
> > > +        ror     ecx,7
> > >
> > > +        psubd   xmm4,xmm13
> > >
> > > +        add     eax,ebx
> > >
> > > +        add     ebp,DWORD[24+rsp]
> > >
> > > +        movups  xmm1,XMMWORD[16+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        xor     esi,ecx
> > >
> > > +        mov     edi,eax
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,esi
> > >
> > > +        xor     edi,ecx
> > >
> > > +        ror     ebx,7
> > >
> > > +        add     ebp,eax
> > >
> > > +        add     edx,DWORD[28+rsp]
> > >
> > > +        xor     edi,ebx
> > >
> > > +        mov     esi,ebp
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,edi
> > >
> > > +        xor     esi,ebx
> > >
> > > +        ror     eax,7
> > >
> > > +        add     edx,ebp
> > >
> > > +        add     ecx,DWORD[32+rsp]
> > >
> > > +        xor     esi,eax
> > >
> > > +        mov     edi,edx
> > >
> > > +DB      102,15,56,0,243
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,esi
> > >
> > > +        movups  xmm0,XMMWORD[32+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        xor     edi,eax
> > >
> > > +        ror     ebp,7
> > >
> > > +        paddd   xmm5,xmm13
> > >
> > > +        add     ecx,edx
> > >
> > > +        add     ebx,DWORD[36+rsp]
> > >
> > > +        xor     edi,ebp
> > >
> > > +        mov     esi,ecx
> > >
> > > +        movdqa  XMMWORD[16+rsp],xmm5
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,edi
> > >
> > > +        xor     esi,ebp
> > >
> > > +        ror     edx,7
> > >
> > > +        psubd   xmm5,xmm13
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[40+rsp]
> > >
> > > +        xor     esi,edx
> > >
> > > +        mov     edi,ebx
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,esi
> > >
> > > +        xor     edi,edx
> > >
> > > +        ror     ecx,7
> > >
> > > +        add     eax,ebx
> > >
> > > +        add     ebp,DWORD[44+rsp]
> > >
> > > +        movups  xmm1,XMMWORD[48+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        xor     edi,ecx
> > >
> > > +        mov     esi,eax
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,edi
> > >
> > > +        xor     esi,ecx
> > >
> > > +        ror     ebx,7
> > >
> > > +        add     ebp,eax
> > >
> > > +        add     edx,DWORD[48+rsp]
> > >
> > > +        xor     esi,ebx
> > >
> > > +        mov     edi,ebp
> > >
> > > +DB      102,15,56,0,251
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,esi
> > >
> > > +        xor     edi,ebx
> > >
> > > +        ror     eax,7
> > >
> > > +        paddd   xmm6,xmm13
> > >
> > > +        add     edx,ebp
> > >
> > > +        add     ecx,DWORD[52+rsp]
> > >
> > > +        xor     edi,eax
> > >
> > > +        mov     esi,edx
> > >
> > > +        movdqa  XMMWORD[32+rsp],xmm6
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,edi
> > >
> > > +        cmp     r8d,11
> > >
> > > +        jb      NEAR $L$aesenclast4
> > >
> > > +        movups  xmm0,XMMWORD[64+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[80+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        je      NEAR $L$aesenclast4
> > >
> > > +        movups  xmm0,XMMWORD[96+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[112+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +$L$aesenclast4:
> > >
> > > +DB      102,15,56,221,209
> > >
> > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > >
> > > +        xor     esi,eax
> > >
> > > +        ror     ebp,7
> > >
> > > +        psubd   xmm6,xmm13
> > >
> > > +        add     ecx,edx
> > >
> > > +        add     ebx,DWORD[56+rsp]
> > >
> > > +        xor     esi,ebp
> > >
> > > +        mov     edi,ecx
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,esi
> > >
> > > +        xor     edi,ebp
> > >
> > > +        ror     edx,7
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[60+rsp]
> > >
> > > +        xor     edi,edx
> > >
> > > +        mov     esi,ebx
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,edi
> > >
> > > +        ror     ecx,7
> > >
> > > +        add     eax,ebx
> > >
> > > +        movups  XMMWORD[48+r12*1+r13],xmm2
> > >
> > > +        lea     r12,[64+r12]
> > >
> > > +
> > >
> > > +        add     eax,DWORD[r9]
> > >
> > > +        add     esi,DWORD[4+r9]
> > >
> > > +        add     ecx,DWORD[8+r9]
> > >
> > > +        add     edx,DWORD[12+r9]
> > >
> > > +        mov     DWORD[r9],eax
> > >
> > > +        add     ebp,DWORD[16+r9]
> > >
> > > +        mov     DWORD[4+r9],esi
> > >
> > > +        mov     ebx,esi
> > >
> > > +        mov     DWORD[8+r9],ecx
> > >
> > > +        mov     edi,ecx
> > >
> > > +        mov     DWORD[12+r9],edx
> > >
> > > +        xor     edi,edx
> > >
> > > +        mov     DWORD[16+r9],ebp
> > >
> > > +        and     esi,edi
> > >
> > > +        jmp     NEAR $L$oop_ssse3
> > >
> > > +
> > >
> > > +$L$done_ssse3:
> > >
> > > +        add     ebx,DWORD[16+rsp]
> > >
> > > +        xor     esi,ebp
> > >
> > > +        mov     edi,ecx
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,esi
> > >
> > > +        xor     edi,ebp
> > >
> > > +        ror     edx,7
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[20+rsp]
> > >
> > > +        xor     edi,edx
> > >
> > > +        mov     esi,ebx
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,edi
> > >
> > > +        xor     esi,edx
> > >
> > > +        ror     ecx,7
> > >
> > > +        add     eax,ebx
> > >
> > > +        add     ebp,DWORD[24+rsp]
> > >
> > > +        movups  xmm1,XMMWORD[16+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        xor     esi,ecx
> > >
> > > +        mov     edi,eax
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,esi
> > >
> > > +        xor     edi,ecx
> > >
> > > +        ror     ebx,7
> > >
> > > +        add     ebp,eax
> > >
> > > +        add     edx,DWORD[28+rsp]
> > >
> > > +        xor     edi,ebx
> > >
> > > +        mov     esi,ebp
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,edi
> > >
> > > +        xor     esi,ebx
> > >
> > > +        ror     eax,7
> > >
> > > +        add     edx,ebp
> > >
> > > +        add     ecx,DWORD[32+rsp]
> > >
> > > +        xor     esi,eax
> > >
> > > +        mov     edi,edx
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,esi
> > >
> > > +        movups  xmm0,XMMWORD[32+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        xor     edi,eax
> > >
> > > +        ror     ebp,7
> > >
> > > +        add     ecx,edx
> > >
> > > +        add     ebx,DWORD[36+rsp]
> > >
> > > +        xor     edi,ebp
> > >
> > > +        mov     esi,ecx
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,edi
> > >
> > > +        xor     esi,ebp
> > >
> > > +        ror     edx,7
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[40+rsp]
> > >
> > > +        xor     esi,edx
> > >
> > > +        mov     edi,ebx
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,esi
> > >
> > > +        xor     edi,edx
> > >
> > > +        ror     ecx,7
> > >
> > > +        add     eax,ebx
> > >
> > > +        add     ebp,DWORD[44+rsp]
> > >
> > > +        movups  xmm1,XMMWORD[48+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        xor     edi,ecx
> > >
> > > +        mov     esi,eax
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,edi
> > >
> > > +        xor     esi,ecx
> > >
> > > +        ror     ebx,7
> > >
> > > +        add     ebp,eax
> > >
> > > +        add     edx,DWORD[48+rsp]
> > >
> > > +        xor     esi,ebx
> > >
> > > +        mov     edi,ebp
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,esi
> > >
> > > +        xor     edi,ebx
> > >
> > > +        ror     eax,7
> > >
> > > +        add     edx,ebp
> > >
> > > +        add     ecx,DWORD[52+rsp]
> > >
> > > +        xor     edi,eax
> > >
> > > +        mov     esi,edx
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,edi
> > >
> > > +        cmp     r8d,11
> > >
> > > +        jb      NEAR $L$aesenclast5
> > >
> > > +        movups  xmm0,XMMWORD[64+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[80+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        je      NEAR $L$aesenclast5
> > >
> > > +        movups  xmm0,XMMWORD[96+r15]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[112+r15]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +$L$aesenclast5:
> > >
> > > +DB      102,15,56,221,209
> > >
> > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > >
> > > +        xor     esi,eax
> > >
> > > +        ror     ebp,7
> > >
> > > +        add     ecx,edx
> > >
> > > +        add     ebx,DWORD[56+rsp]
> > >
> > > +        xor     esi,ebp
> > >
> > > +        mov     edi,ecx
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,esi
> > >
> > > +        xor     edi,ebp
> > >
> > > +        ror     edx,7
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[60+rsp]
> > >
> > > +        xor     edi,edx
> > >
> > > +        mov     esi,ebx
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,edi
> > >
> > > +        ror     ecx,7
> > >
> > > +        add     eax,ebx
> > >
> > > +        movups  XMMWORD[48+r12*1+r13],xmm2
> > >
> > > +        mov     r8,QWORD[88+rsp]
> > >
> > > +
> > >
> > > +        add     eax,DWORD[r9]
> > >
> > > +        add     esi,DWORD[4+r9]
> > >
> > > +        add     ecx,DWORD[8+r9]
> > >
> > > +        mov     DWORD[r9],eax
> > >
> > > +        add     edx,DWORD[12+r9]
> > >
> > > +        mov     DWORD[4+r9],esi
> > >
> > > +        add     ebp,DWORD[16+r9]
> > >
> > > +        mov     DWORD[8+r9],ecx
> > >
> > > +        mov     DWORD[12+r9],edx
> > >
> > > +        mov     DWORD[16+r9],ebp
> > >
> > > +        movups  XMMWORD[r8],xmm2
> > >
> > > +        movaps  xmm6,XMMWORD[((96+0))+rsp]
> > >
> > > +        movaps  xmm7,XMMWORD[((96+16))+rsp]
> > >
> > > +        movaps  xmm8,XMMWORD[((96+32))+rsp]
> > >
> > > +        movaps  xmm9,XMMWORD[((96+48))+rsp]
> > >
> > > +        movaps  xmm10,XMMWORD[((96+64))+rsp]
> > >
> > > +        movaps  xmm11,XMMWORD[((96+80))+rsp]
> > >
> > > +        movaps  xmm12,XMMWORD[((96+96))+rsp]
> > >
> > > +        movaps  xmm13,XMMWORD[((96+112))+rsp]
> > >
> > > +        movaps  xmm14,XMMWORD[((96+128))+rsp]
> > >
> > > +        movaps  xmm15,XMMWORD[((96+144))+rsp]
> > >
> > > +        lea     rsi,[264+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_aesni_cbc_sha1_enc_ssse3:
> > >
> > > +ALIGN   64
> > >
> > > +K_XX_XX:
> > >
> > > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > >
> > > +        DD      0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
> > >
> > > +        DD      0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
> > >
> > > +        DD      0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
> > >
> > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > >
> > > +DB      0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
> > >
> > > +
> > >
> > > +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115
> > >
> > > +DB      116,105,116,99,104,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
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +aesni_cbc_sha1_enc_shaext:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_aesni_cbc_sha1_enc_shaext:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +        mov     rcx,r9
> > >
> > > +        mov     r8,QWORD[40+rsp]
> > >
> > > +        mov     r9,QWORD[48+rsp]
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        mov     r10,QWORD[56+rsp]
> > >
> > > +        lea     rsp,[((-168))+rsp]
> > >
> > > +        movaps  XMMWORD[(-8-160)+rax],xmm6
> > >
> > > +        movaps  XMMWORD[(-8-144)+rax],xmm7
> > >
> > > +        movaps  XMMWORD[(-8-128)+rax],xmm8
> > >
> > > +        movaps  XMMWORD[(-8-112)+rax],xmm9
> > >
> > > +        movaps  XMMWORD[(-8-96)+rax],xmm10
> > >
> > > +        movaps  XMMWORD[(-8-80)+rax],xmm11
> > >
> > > +        movaps  XMMWORD[(-8-64)+rax],xmm12
> > >
> > > +        movaps  XMMWORD[(-8-48)+rax],xmm13
> > >
> > > +        movaps  XMMWORD[(-8-32)+rax],xmm14
> > >
> > > +        movaps  XMMWORD[(-8-16)+rax],xmm15
> > >
> > > +$L$prologue_shaext:
> > >
> > > +        movdqu  xmm8,XMMWORD[r9]
> > >
> > > +        movd    xmm9,DWORD[16+r9]
> > >
> > > +        movdqa  xmm7,XMMWORD[((K_XX_XX+80))]
> > >
> > > +
> > >
> > > +        mov     r11d,DWORD[240+rcx]
> > >
> > > +        sub     rsi,rdi
> > >
> > > +        movups  xmm15,XMMWORD[rcx]
> > >
> > > +        movups  xmm2,XMMWORD[r8]
> > >
> > > +        movups  xmm0,XMMWORD[16+rcx]
> > >
> > > +        lea     rcx,[112+rcx]
> > >
> > > +
> > >
> > > +        pshufd  xmm8,xmm8,27
> > >
> > > +        pshufd  xmm9,xmm9,27
> > >
> > > +        jmp     NEAR $L$oop_shaext
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$oop_shaext:
> > >
> > > +        movups  xmm14,XMMWORD[rdi]
> > >
> > > +        xorps   xmm14,xmm15
> > >
> > > +        xorps   xmm2,xmm14
> > >
> > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        movdqu  xmm3,XMMWORD[r10]
> > >
> > > +        movdqa  xmm12,xmm9
> > >
> > > +DB      102,15,56,0,223
> > >
> > > +        movdqu  xmm4,XMMWORD[16+r10]
> > >
> > > +        movdqa  xmm11,xmm8
> > >
> > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +DB      102,15,56,0,231
> > >
> > > +
> > >
> > > +        paddd   xmm9,xmm3
> > >
> > > +        movdqu  xmm5,XMMWORD[32+r10]
> > >
> > > +        lea     r10,[64+r10]
> > >
> > > +        pxor    xmm3,xmm12
> > >
> > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        pxor    xmm3,xmm12
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      102,15,56,0,239
> > >
> > > +DB      69,15,58,204,193,0
> > >
> > > +DB      68,15,56,200,212
> > >
> > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +DB      15,56,201,220
> > >
> > > +        movdqu  xmm6,XMMWORD[((-16))+r10]
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      102,15,56,0,247
> > >
> > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      69,15,58,204,194,0
> > >
> > > +DB      68,15,56,200,205
> > >
> > > +        pxor    xmm3,xmm5
> > >
> > > +DB      15,56,201,229
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      69,15,58,204,193,0
> > >
> > > +DB      68,15,56,200,214
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      15,56,202,222
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +DB      15,56,201,238
> > >
> > > +        movups  xmm0,XMMWORD[32+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      69,15,58,204,194,0
> > >
> > > +DB      68,15,56,200,203
> > >
> > > +        movups  xmm1,XMMWORD[48+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      15,56,202,227
> > >
> > > +        pxor    xmm5,xmm3
> > >
> > > +DB      15,56,201,243
> > >
> > > +        cmp     r11d,11
> > >
> > > +        jb      NEAR $L$aesenclast6
> > >
> > > +        movups  xmm0,XMMWORD[64+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[80+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        je      NEAR $L$aesenclast6
> > >
> > > +        movups  xmm0,XMMWORD[96+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[112+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +$L$aesenclast6:
> > >
> > > +DB      102,15,56,221,209
> > >
> > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      69,15,58,204,193,0
> > >
> > > +DB      68,15,56,200,212
> > >
> > > +        movups  xmm14,XMMWORD[16+rdi]
> > >
> > > +        xorps   xmm14,xmm15
> > >
> > > +        movups  XMMWORD[rdi*1+rsi],xmm2
> > >
> > > +        xorps   xmm2,xmm14
> > >
> > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      15,56,202,236
> > >
> > > +        pxor    xmm6,xmm4
> > >
> > > +DB      15,56,201,220
> > >
> > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      69,15,58,204,194,1
> > >
> > > +DB      68,15,56,200,205
> > >
> > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      15,56,202,245
> > >
> > > +        pxor    xmm3,xmm5
> > >
> > > +DB      15,56,201,229
> > >
> > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      69,15,58,204,193,1
> > >
> > > +DB      68,15,56,200,214
> > >
> > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      15,56,202,222
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +DB      15,56,201,238
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      69,15,58,204,194,1
> > >
> > > +DB      68,15,56,200,203
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      15,56,202,227
> > >
> > > +        pxor    xmm5,xmm3
> > >
> > > +DB      15,56,201,243
> > >
> > > +        movups  xmm0,XMMWORD[32+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      69,15,58,204,193,1
> > >
> > > +DB      68,15,56,200,212
> > >
> > > +        movups  xmm1,XMMWORD[48+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      15,56,202,236
> > >
> > > +        pxor    xmm6,xmm4
> > >
> > > +DB      15,56,201,220
> > >
> > > +        cmp     r11d,11
> > >
> > > +        jb      NEAR $L$aesenclast7
> > >
> > > +        movups  xmm0,XMMWORD[64+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[80+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        je      NEAR $L$aesenclast7
> > >
> > > +        movups  xmm0,XMMWORD[96+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[112+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +$L$aesenclast7:
> > >
> > > +DB      102,15,56,221,209
> > >
> > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      69,15,58,204,194,1
> > >
> > > +DB      68,15,56,200,205
> > >
> > > +        movups  xmm14,XMMWORD[32+rdi]
> > >
> > > +        xorps   xmm14,xmm15
> > >
> > > +        movups  XMMWORD[16+rdi*1+rsi],xmm2
> > >
> > > +        xorps   xmm2,xmm14
> > >
> > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      15,56,202,245
> > >
> > > +        pxor    xmm3,xmm5
> > >
> > > +DB      15,56,201,229
> > >
> > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      69,15,58,204,193,2
> > >
> > > +DB      68,15,56,200,214
> > >
> > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      15,56,202,222
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +DB      15,56,201,238
> > >
> > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      69,15,58,204,194,2
> > >
> > > +DB      68,15,56,200,203
> > >
> > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      15,56,202,227
> > >
> > > +        pxor    xmm5,xmm3
> > >
> > > +DB      15,56,201,243
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      69,15,58,204,193,2
> > >
> > > +DB      68,15,56,200,212
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      15,56,202,236
> > >
> > > +        pxor    xmm6,xmm4
> > >
> > > +DB      15,56,201,220
> > >
> > > +        movups  xmm0,XMMWORD[32+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      69,15,58,204,194,2
> > >
> > > +DB      68,15,56,200,205
> > >
> > > +        movups  xmm1,XMMWORD[48+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      15,56,202,245
> > >
> > > +        pxor    xmm3,xmm5
> > >
> > > +DB      15,56,201,229
> > >
> > > +        cmp     r11d,11
> > >
> > > +        jb      NEAR $L$aesenclast8
> > >
> > > +        movups  xmm0,XMMWORD[64+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[80+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        je      NEAR $L$aesenclast8
> > >
> > > +        movups  xmm0,XMMWORD[96+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[112+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +$L$aesenclast8:
> > >
> > > +DB      102,15,56,221,209
> > >
> > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      69,15,58,204,193,2
> > >
> > > +DB      68,15,56,200,214
> > >
> > > +        movups  xmm14,XMMWORD[48+rdi]
> > >
> > > +        xorps   xmm14,xmm15
> > >
> > > +        movups  XMMWORD[32+rdi*1+rsi],xmm2
> > >
> > > +        xorps   xmm2,xmm14
> > >
> > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      15,56,202,222
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +DB      15,56,201,238
> > >
> > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      69,15,58,204,194,3
> > >
> > > +DB      68,15,56,200,203
> > >
> > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      15,56,202,227
> > >
> > > +        pxor    xmm5,xmm3
> > >
> > > +DB      15,56,201,243
> > >
> > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      69,15,58,204,193,3
> > >
> > > +DB      68,15,56,200,212
> > >
> > > +DB      15,56,202,236
> > >
> > > +        pxor    xmm6,xmm4
> > >
> > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      69,15,58,204,194,3
> > >
> > > +DB      68,15,56,200,205
> > >
> > > +DB      15,56,202,245
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movdqa  xmm5,xmm12
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      69,15,58,204,193,3
> > >
> > > +DB      68,15,56,200,214
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      69,15,58,204,194,3
> > >
> > > +DB      68,15,56,200,205
> > >
> > > +        movups  xmm0,XMMWORD[32+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[48+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        cmp     r11d,11
> > >
> > > +        jb      NEAR $L$aesenclast9
> > >
> > > +        movups  xmm0,XMMWORD[64+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[80+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        je      NEAR $L$aesenclast9
> > >
> > > +        movups  xmm0,XMMWORD[96+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[112+rcx]
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +$L$aesenclast9:
> > >
> > > +DB      102,15,56,221,209
> > >
> > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > >
> > > +        dec     rdx
> > >
> > > +
> > >
> > > +        paddd   xmm8,xmm11
> > >
> > > +        movups  XMMWORD[48+rdi*1+rsi],xmm2
> > >
> > > +        lea     rdi,[64+rdi]
> > >
> > > +        jnz     NEAR $L$oop_shaext
> > >
> > > +
> > >
> > > +        pshufd  xmm8,xmm8,27
> > >
> > > +        pshufd  xmm9,xmm9,27
> > >
> > > +        movups  XMMWORD[r8],xmm2
> > >
> > > +        movdqu  XMMWORD[r9],xmm8
> > >
> > > +        movd    DWORD[16+r9],xmm9
> > >
> > > +        movaps  xmm6,XMMWORD[((-8-160))+rax]
> > >
> > > +        movaps  xmm7,XMMWORD[((-8-144))+rax]
> > >
> > > +        movaps  xmm8,XMMWORD[((-8-128))+rax]
> > >
> > > +        movaps  xmm9,XMMWORD[((-8-112))+rax]
> > >
> > > +        movaps  xmm10,XMMWORD[((-8-96))+rax]
> > >
> > > +        movaps  xmm11,XMMWORD[((-8-80))+rax]
> > >
> > > +        movaps  xmm12,XMMWORD[((-8-64))+rax]
> > >
> > > +        movaps  xmm13,XMMWORD[((-8-48))+rax]
> > >
> > > +        movaps  xmm14,XMMWORD[((-8-32))+rax]
> > >
> > > +        movaps  xmm15,XMMWORD[((-8-16))+rax]
> > >
> > > +        mov     rsp,rax
> > >
> > > +$L$epilogue_shaext:
> > >
> > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > >
> > > +        mov     rsi,QWORD[16+rsp]
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +$L$SEH_end_aesni_cbc_sha1_enc_shaext:
> > >
> > > +EXTERN  __imp_RtlVirtualUnwind
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +ssse3_handler:
> > >
> > > +        push    rsi
> > >
> > > +        push    rdi
> > >
> > > +        push    rbx
> > >
> > > +        push    rbp
> > >
> > > +        push    r12
> > >
> > > +        push    r13
> > >
> > > +        push    r14
> > >
> > > +        push    r15
> > >
> > > +        pushfq
> > >
> > > +        sub     rsp,64
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[120+r8]
> > >
> > > +        mov     rbx,QWORD[248+r8]
> > >
> > > +
> > >
> > > +        mov     rsi,QWORD[8+r9]
> > >
> > > +        mov     r11,QWORD[56+r9]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[152+r8]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[4+r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jae     NEAR $L$common_seh_tail
> > >
> > > +        lea     r10,[aesni_cbc_sha1_enc_shaext]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$seh_no_shaext
> > >
> > > +
> > >
> > > +        lea     rsi,[rax]
> > >
> > > +        lea     rdi,[512+r8]
> > >
> > > +        mov     ecx,20
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +        lea     rax,[168+rax]
> > >
> > > +        jmp     NEAR $L$common_seh_tail
> > >
> > > +$L$seh_no_shaext:
> > >
> > > +        lea     rsi,[96+rax]
> > >
> > > +        lea     rdi,[512+r8]
> > >
> > > +        mov     ecx,20
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +        lea     rax,[264+rax]
> > >
> > > +
> > >
> > > +        mov     r15,QWORD[rax]
> > >
> > > +        mov     r14,QWORD[8+rax]
> > >
> > > +        mov     r13,QWORD[16+rax]
> > >
> > > +        mov     r12,QWORD[24+rax]
> > >
> > > +        mov     rbp,QWORD[32+rax]
> > >
> > > +        mov     rbx,QWORD[40+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$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[40+r9]
> > >
> > > +        mov     rsi,r8
> > >
> > > +        mov     ecx,154
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +        mov     rsi,r9
> > >
> > > +        xor     rcx,rcx
> > >
> > > +        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
> > >
> > > +        popfq
> > >
> > > +        pop     r15
> > >
> > > +        pop     r14
> > >
> > > +        pop     r13
> > >
> > > +        pop     r12
> > >
> > > +        pop     rbp
> > >
> > > +        pop     rbx
> > >
> > > +        pop     rdi
> > >
> > > +        pop     rsi
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +section .pdata rdata align=4
> > >
> > > +ALIGN   4
> > >
> > > +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> > >
> > > +        DD      $L$SEH_end_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> > >
> > > +        DD      $L$SEH_info_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> > >
> > > +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> > >
> > > +        DD      $L$SEH_end_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> > >
> > > +        DD      $L$SEH_info_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> > >
> > > +section .xdata rdata align=8
> > >
> > > +ALIGN   8
> > >
> > > +$L$SEH_info_aesni_cbc_sha1_enc_ssse3:
> > >
> > > +DB      9,0,0,0
> > >
> > > +        DD      ssse3_handler wrt ..imagebase
> > >
> > > +        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
> > > wrt ..imagebase
> > >
> > > +$L$SEH_info_aesni_cbc_sha1_enc_shaext:
> > >
> > > +DB      9,0,0,0
> > >
> > > +        DD      ssse3_handler wrt ..imagebase
> > >
> > > +        DD      $L$prologue_shaext wrt ..imagebase,$L$epilogue_shaext
> > > wrt ..imagebase
> > >
> > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
> sha256-
> > > x86_64.nasm
> > > new file mode 100644
> > > index 0000000000..f5c250b904
> > > --- /dev/null
> > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> > > x86_64.nasm
> > > @@ -0,0 +1,78 @@
> > > +; WARNING: do not edit!
> > >
> > > +; Generated from openssl/crypto/aes/asm/aesni-sha256-x86_64.pl
> > >
> > > +;
> > >
> > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
> > >
> > > +;
> > >
> > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > >
> > > +; this file except in compliance with the License.  You can obtain a copy
> > >
> > > +; in the file LICENSE in the source distribution or at
> > >
> > > +; https://www.openssl.org/source/license.html
> > >
> > > +
> > >
> > > +default rel
> > >
> > > +%define XMMWORD
> > >
> > > +%define YMMWORD
> > >
> > > +%define ZMMWORD
> > >
> > > +section .text code align=64
> > >
> > > +
> > >
> > > +
> > >
> > > +EXTERN  OPENSSL_ia32cap_P
> > >
> > > +global  aesni_cbc_sha256_enc
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +aesni_cbc_sha256_enc:
> > >
> > > +
> > >
> > > +        xor     eax,eax
> > >
> > > +        cmp     rcx,0
> > >
> > > +        je      NEAR $L$probe
> > >
> > > +        ud2
> > >
> > > +$L$probe:
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   64
> > >
> > > +
> > >
> > > +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      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > >
> > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > >
> > > +        DD      0,0,0,0,0,0,0,0,-1,-1,-1,-1
> > >
> > > +        DD      0,0,0,0,0,0,0,0
> > >
> > > +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54
> > >
> > > +DB      32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95
> > >
> > > +DB      54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98
> > >
> > > +DB      121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108
> > >
> > > +DB      46,111,114,103,62,0
> > >
> > > +ALIGN   64
> > >
> > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
> x86_64.nasm
> > > b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
> > > new file mode 100644
> > > index 0000000000..57ee23ea8c
> > > --- /dev/null
> > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
> > > @@ -0,0 +1,5103 @@
> > > +; WARNING: do not edit!
> > >
> > > +; Generated from openssl/crypto/aes/asm/aesni-x86_64.pl
> > >
> > > +;
> > >
> > > +; Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved.
> > >
> > > +;
> > >
> > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > >
> > > +; this file except in compliance with the License.  You can obtain a copy
> > >
> > > +; in the file LICENSE in the source distribution or at
> > >
> > > +; https://www.openssl.org/source/license.html
> > >
> > > +
> > >
> > > +default rel
> > >
> > > +%define XMMWORD
> > >
> > > +%define YMMWORD
> > >
> > > +%define ZMMWORD
> > >
> > > +section .text code align=64
> > >
> > > +
> > >
> > > +EXTERN  OPENSSL_ia32cap_P
> > >
> > > +global  aesni_encrypt
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +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:
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        dec     eax
> > >
> > > +        movups  xmm1,XMMWORD[r8]
> > >
> > > +        lea     r8,[16+r8]
> > >
> > > +        jnz     NEAR $L$oop_enc1_1
> > >
> > > +DB      102,15,56,221,209
> > >
> > > +        pxor    xmm0,xmm0
> > >
> > > +        pxor    xmm1,xmm1
> > >
> > > +        movups  XMMWORD[rdx],xmm2
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +global  aesni_decrypt
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +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:
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +        dec     eax
> > >
> > > +        movups  xmm1,XMMWORD[r8]
> > >
> > > +        lea     r8,[16+r8]
> > >
> > > +        jnz     NEAR $L$oop_dec1_2
> > >
> > > +DB      102,15,56,223,209
> > >
> > > +        pxor    xmm0,xmm0
> > >
> > > +        pxor    xmm1,xmm1
> > >
> > > +        movups  XMMWORD[rdx],xmm2
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +_aesni_encrypt2:
> > >
> > > +
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        shl     eax,4
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +        xorps   xmm3,xmm0
> > >
> > > +        movups  xmm0,XMMWORD[32+rcx]
> > >
> > > +        lea     rcx,[32+rax*1+rcx]
> > >
> > > +        neg     rax
> > >
> > > +        add     rax,16
> > >
> > > +
> > >
> > > +$L$enc_loop2:
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > >
> > > +        add     rax,32
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      102,15,56,220,216
> > >
> > > +        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
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +_aesni_decrypt2:
> > >
> > > +
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        shl     eax,4
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +        xorps   xmm3,xmm0
> > >
> > > +        movups  xmm0,XMMWORD[32+rcx]
> > >
> > > +        lea     rcx,[32+rax*1+rcx]
> > >
> > > +        neg     rax
> > >
> > > +        add     rax,16
> > >
> > > +
> > >
> > > +$L$dec_loop2:
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +DB      102,15,56,222,217
> > >
> > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > >
> > > +        add     rax,32
> > >
> > > +DB      102,15,56,222,208
> > >
> > > +DB      102,15,56,222,216
> > >
> > > +        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
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +_aesni_encrypt3:
> > >
> > > +
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        shl     eax,4
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +        xorps   xmm3,xmm0
> > >
> > > +        xorps   xmm4,xmm0
> > >
> > > +        movups  xmm0,XMMWORD[32+rcx]
> > >
> > > +        lea     rcx,[32+rax*1+rcx]
> > >
> > > +        neg     rax
> > >
> > > +        add     rax,16
> > >
> > > +
> > >
> > > +$L$enc_loop3:
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +        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[((-16))+rax*1+rcx]
> > >
> > > +        jnz     NEAR $L$enc_loop3
> > >
> > > +
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +DB      102,15,56,221,208
> > >
> > > +DB      102,15,56,221,216
> > >
> > > +DB      102,15,56,221,224
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +_aesni_decrypt3:
> > >
> > > +
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        shl     eax,4
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +        xorps   xmm3,xmm0
> > >
> > > +        xorps   xmm4,xmm0
> > >
> > > +        movups  xmm0,XMMWORD[32+rcx]
> > >
> > > +        lea     rcx,[32+rax*1+rcx]
> > >
> > > +        neg     rax
> > >
> > > +        add     rax,16
> > >
> > > +
> > >
> > > +$L$dec_loop3:
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +DB      102,15,56,222,217
> > >
> > > +DB      102,15,56,222,225
> > >
> > > +        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[((-16))+rax*1+rcx]
> > >
> > > +        jnz     NEAR $L$dec_loop3
> > >
> > > +
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +DB      102,15,56,222,217
> > >
> > > +DB      102,15,56,222,225
> > >
> > > +DB      102,15,56,223,208
> > >
> > > +DB      102,15,56,223,216
> > >
> > > +DB      102,15,56,223,224
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +_aesni_encrypt4:
> > >
> > > +
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        shl     eax,4
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +        xorps   xmm3,xmm0
> > >
> > > +        xorps   xmm4,xmm0
> > >
> > > +        xorps   xmm5,xmm0
> > >
> > > +        movups  xmm0,XMMWORD[32+rcx]
> > >
> > > +        lea     rcx,[32+rax*1+rcx]
> > >
> > > +        neg     rax
> > >
> > > +DB      0x0f,0x1f,0x00
> > >
> > > +        add     rax,16
> > >
> > > +
> > >
> > > +$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[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[((-16))+rax*1+rcx]
> > >
> > > +        jnz     NEAR $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
> > >
> > > +DB      102,15,56,221,208
> > >
> > > +DB      102,15,56,221,216
> > >
> > > +DB      102,15,56,221,224
> > >
> > > +DB      102,15,56,221,232
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +_aesni_decrypt4:
> > >
> > > +
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        shl     eax,4
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +        xorps   xmm3,xmm0
> > >
> > > +        xorps   xmm4,xmm0
> > >
> > > +        xorps   xmm5,xmm0
> > >
> > > +        movups  xmm0,XMMWORD[32+rcx]
> > >
> > > +        lea     rcx,[32+rax*1+rcx]
> > >
> > > +        neg     rax
> > >
> > > +DB      0x0f,0x1f,0x00
> > >
> > > +        add     rax,16
> > >
> > > +
> > >
> > > +$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[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[((-16))+rax*1+rcx]
> > >
> > > +        jnz     NEAR $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
> > >
> > > +DB      102,15,56,223,208
> > >
> > > +DB      102,15,56,223,216
> > >
> > > +DB      102,15,56,223,224
> > >
> > > +DB      102,15,56,223,232
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +_aesni_encrypt6:
> > >
> > > +
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        shl     eax,4
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        pxor    xmm4,xmm0
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        lea     rcx,[32+rax*1+rcx]
> > >
> > > +        neg     rax
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +        pxor    xmm5,xmm0
> > >
> > > +        pxor    xmm6,xmm0
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +        pxor    xmm7,xmm0
> > >
> > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > >
> > > +        add     rax,16
> > >
> > > +        jmp     NEAR $L$enc_loop6_enter
> > >
> > > +ALIGN   16
> > >
> > > +$L$enc_loop6:
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +$L$enc_loop6_enter:
> > >
> > > +DB      102,15,56,220,233
> > >
> > > +DB      102,15,56,220,241
> > >
> > > +DB      102,15,56,220,249
> > >
> > > +        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
> > >
> > > +DB      102,15,56,220,240
> > >
> > > +DB      102,15,56,220,248
> > >
> > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > >
> > > +        jnz     NEAR $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
> > >
> > > +DB      102,15,56,221,208
> > >
> > > +DB      102,15,56,221,216
> > >
> > > +DB      102,15,56,221,224
> > >
> > > +DB      102,15,56,221,232
> > >
> > > +DB      102,15,56,221,240
> > >
> > > +DB      102,15,56,221,248
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +_aesni_decrypt6:
> > >
> > > +
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        shl     eax,4
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        pxor    xmm4,xmm0
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +        lea     rcx,[32+rax*1+rcx]
> > >
> > > +        neg     rax
> > >
> > > +DB      102,15,56,222,217
> > >
> > > +        pxor    xmm5,xmm0
> > >
> > > +        pxor    xmm6,xmm0
> > >
> > > +DB      102,15,56,222,225
> > >
> > > +        pxor    xmm7,xmm0
> > >
> > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > >
> > > +        add     rax,16
> > >
> > > +        jmp     NEAR $L$dec_loop6_enter
> > >
> > > +ALIGN   16
> > >
> > > +$L$dec_loop6:
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +DB      102,15,56,222,217
> > >
> > > +DB      102,15,56,222,225
> > >
> > > +$L$dec_loop6_enter:
> > >
> > > +DB      102,15,56,222,233
> > >
> > > +DB      102,15,56,222,241
> > >
> > > +DB      102,15,56,222,249
> > >
> > > +        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
> > >
> > > +DB      102,15,56,222,240
> > >
> > > +DB      102,15,56,222,248
> > >
> > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > >
> > > +        jnz     NEAR $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
> > >
> > > +DB      102,15,56,223,208
> > >
> > > +DB      102,15,56,223,216
> > >
> > > +DB      102,15,56,223,224
> > >
> > > +DB      102,15,56,223,232
> > >
> > > +DB      102,15,56,223,240
> > >
> > > +DB      102,15,56,223,248
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +_aesni_encrypt8:
> > >
> > > +
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        shl     eax,4
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +        xorps   xmm3,xmm0
> > >
> > > +        pxor    xmm4,xmm0
> > >
> > > +        pxor    xmm5,xmm0
> > >
> > > +        pxor    xmm6,xmm0
> > >
> > > +        lea     rcx,[32+rax*1+rcx]
> > >
> > > +        neg     rax
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        pxor    xmm7,xmm0
> > >
> > > +        pxor    xmm8,xmm0
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +        pxor    xmm9,xmm0
> > >
> > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > >
> > > +        add     rax,16
> > >
> > > +        jmp     NEAR $L$enc_loop8_inner
> > >
> > > +ALIGN   16
> > >
> > > +$L$enc_loop8:
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +$L$enc_loop8_inner:
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +DB      102,15,56,220,233
> > >
> > > +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
> > >
> > > +$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
> > >
> > > +DB      102,15,56,220,224
> > >
> > > +DB      102,15,56,220,232
> > >
> > > +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[((-16))+rax*1+rcx]
> > >
> > > +        jnz     NEAR $L$enc_loop8
> > >
> > > +
> > >
> > > +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
> > >
> > > +DB      102,68,15,56,220,193
> > >
> > > +DB      102,68,15,56,220,201
> > >
> > > +DB      102,15,56,221,208
> > >
> > > +DB      102,15,56,221,216
> > >
> > > +DB      102,15,56,221,224
> > >
> > > +DB      102,15,56,221,232
> > >
> > > +DB      102,15,56,221,240
> > >
> > > +DB      102,15,56,221,248
> > >
> > > +DB      102,68,15,56,221,192
> > >
> > > +DB      102,68,15,56,221,200
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +_aesni_decrypt8:
> > >
> > > +
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        shl     eax,4
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +        xorps   xmm3,xmm0
> > >
> > > +        pxor    xmm4,xmm0
> > >
> > > +        pxor    xmm5,xmm0
> > >
> > > +        pxor    xmm6,xmm0
> > >
> > > +        lea     rcx,[32+rax*1+rcx]
> > >
> > > +        neg     rax
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +        pxor    xmm7,xmm0
> > >
> > > +        pxor    xmm8,xmm0
> > >
> > > +DB      102,15,56,222,217
> > >
> > > +        pxor    xmm9,xmm0
> > >
> > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > >
> > > +        add     rax,16
> > >
> > > +        jmp     NEAR $L$dec_loop8_inner
> > >
> > > +ALIGN   16
> > >
> > > +$L$dec_loop8:
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +DB      102,15,56,222,217
> > >
> > > +$L$dec_loop8_inner:
> > >
> > > +DB      102,15,56,222,225
> > >
> > > +DB      102,15,56,222,233
> > >
> > > +DB      102,15,56,222,241
> > >
> > > +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[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
> > >
> > > +DB      102,15,56,222,240
> > >
> > > +DB      102,15,56,222,248
> > >
> > > +DB      102,68,15,56,222,192
> > >
> > > +DB      102,68,15,56,222,200
> > >
> > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > >
> > > +        jnz     NEAR $L$dec_loop8
> > >
> > > +
> > >
> > > +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
> > >
> > > +DB      102,68,15,56,222,193
> > >
> > > +DB      102,68,15,56,222,201
> > >
> > > +DB      102,15,56,223,208
> > >
> > > +DB      102,15,56,223,216
> > >
> > > +DB      102,15,56,223,224
> > >
> > > +DB      102,15,56,223,232
> > >
> > > +DB      102,15,56,223,240
> > >
> > > +DB      102,15,56,223,248
> > >
> > > +DB      102,68,15,56,223,192
> > >
> > > +DB      102,68,15,56,223,200
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +global  aesni_ecb_encrypt
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +aesni_ecb_encrypt:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_aesni_ecb_encrypt:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +        mov     rcx,r9
> > >
> > > +        mov     r8,QWORD[40+rsp]
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        lea     rsp,[((-88))+rsp]
> > >
> > > +        movaps  XMMWORD[rsp],xmm6
> > >
> > > +        movaps  XMMWORD[16+rsp],xmm7
> > >
> > > +        movaps  XMMWORD[32+rsp],xmm8
> > >
> > > +        movaps  XMMWORD[48+rsp],xmm9
> > >
> > > +$L$ecb_enc_body:
> > >
> > > +        and     rdx,-16
> > >
> > > +        jz      NEAR $L$ecb_ret
> > >
> > > +
> > >
> > > +        mov     eax,DWORD[240+rcx]
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        mov     r11,rcx
> > >
> > > +        mov     r10d,eax
> > >
> > > +        test    r8d,r8d
> > >
> > > +        jz      NEAR $L$ecb_decrypt
> > >
> > > +
> > >
> > > +        cmp     rdx,0x80
> > >
> > > +        jb      NEAR $L$ecb_enc_tail
> > >
> > > +
> > >
> > > +        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[rsi],xmm2
> > >
> > > +        mov     rcx,r11
> > >
> > > +        movdqu  xmm2,XMMWORD[rdi]
> > >
> > > +        mov     eax,r10d
> > >
> > > +        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,0x80
> > >
> > > +        jnc     NEAR $L$ecb_enc_loop8
> > >
> > > +
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        mov     rcx,r11
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        mov     eax,r10d
> > >
> > > +        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[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]
> > >
> > > +        xorps   xmm9,xmm9
> > >
> > > +        call    _aesni_encrypt8
> > >
> > > +        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[rcx]
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        lea     rcx,[32+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +$L$oop_enc1_3:
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        dec     eax
> > >
> > > +        movups  xmm1,XMMWORD[rcx]
> > >
> > > +        lea     rcx,[16+rcx]
> > >
> > > +        jnz     NEAR $L$oop_enc1_3
> > >
> > > +DB      102,15,56,221,209
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        jmp     NEAR $L$ecb_ret
> > >
> > > +ALIGN   16
> > >
> > > +$L$ecb_enc_two:
> > >
> > > +        call    _aesni_encrypt2
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        jmp     NEAR $L$ecb_ret
> > >
> > > +ALIGN   16
> > >
> > > +$L$ecb_enc_three:
> > >
> > > +        call    _aesni_encrypt3
> > >
> > > +        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:
> > >
> > > +        call    _aesni_encrypt4
> > >
> > > +        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:
> > >
> > > +        xorps   xmm7,xmm7
> > >
> > > +        call    _aesni_encrypt6
> > >
> > > +        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:
> > >
> > > +        call    _aesni_encrypt6
> > >
> > > +        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,0x80
> > >
> > > +        jb      NEAR $L$ecb_dec_tail
> > >
> > > +
> > >
> > > +        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[rsi],xmm2
> > >
> > > +        mov     rcx,r11
> > >
> > > +        movdqu  xmm2,XMMWORD[rdi]
> > >
> > > +        mov     eax,r10d
> > >
> > > +        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[r11]
> > >
> > > +        sub     rdx,0x80
> > >
> > > +        jnc     NEAR $L$ecb_dec_loop8
> > >
> > > +
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        mov     rcx,r11
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        mov     eax,r10d
> > >
> > > +        movups  XMMWORD[32+rsi],xmm4
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        movups  XMMWORD[48+rsi],xmm5
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +        movups  XMMWORD[64+rsi],xmm6
> > >
> > > +        pxor    xmm6,xmm6
> > >
> > > +        movups  XMMWORD[80+rsi],xmm7
> > >
> > > +        pxor    xmm7,xmm7
> > >
> > > +        movups  XMMWORD[96+rsi],xmm8
> > >
> > > +        pxor    xmm8,xmm8
> > >
> > > +        movups  XMMWORD[112+rsi],xmm9
> > >
> > > +        pxor    xmm9,xmm9
> > >
> > > +        lea     rsi,[128+rsi]
> > >
> > > +        add     rdx,0x80
> > >
> > > +        jz      NEAR $L$ecb_ret
> > >
> > > +
> > >
> > > +$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]
> > >
> > > +        xorps   xmm9,xmm9
> > >
> > > +        call    _aesni_decrypt8
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        movups  XMMWORD[32+rsi],xmm4
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        movups  XMMWORD[48+rsi],xmm5
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +        movups  XMMWORD[64+rsi],xmm6
> > >
> > > +        pxor    xmm6,xmm6
> > >
> > > +        movups  XMMWORD[80+rsi],xmm7
> > >
> > > +        pxor    xmm7,xmm7
> > >
> > > +        movups  XMMWORD[96+rsi],xmm8
> > >
> > > +        pxor    xmm8,xmm8
> > >
> > > +        pxor    xmm9,xmm9
> > >
> > > +        jmp     NEAR $L$ecb_ret
> > >
> > > +ALIGN   16
> > >
> > > +$L$ecb_dec_one:
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        lea     rcx,[32+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +$L$oop_dec1_4:
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +        dec     eax
> > >
> > > +        movups  xmm1,XMMWORD[rcx]
> > >
> > > +        lea     rcx,[16+rcx]
> > >
> > > +        jnz     NEAR $L$oop_dec1_4
> > >
> > > +DB      102,15,56,223,209
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        jmp     NEAR $L$ecb_ret
> > >
> > > +ALIGN   16
> > >
> > > +$L$ecb_dec_two:
> > >
> > > +        call    _aesni_decrypt2
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        jmp     NEAR $L$ecb_ret
> > >
> > > +ALIGN   16
> > >
> > > +$L$ecb_dec_three:
> > >
> > > +        call    _aesni_decrypt3
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        movups  XMMWORD[32+rsi],xmm4
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        jmp     NEAR $L$ecb_ret
> > >
> > > +ALIGN   16
> > >
> > > +$L$ecb_dec_four:
> > >
> > > +        call    _aesni_decrypt4
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        movups  XMMWORD[32+rsi],xmm4
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        movups  XMMWORD[48+rsi],xmm5
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +        jmp     NEAR $L$ecb_ret
> > >
> > > +ALIGN   16
> > >
> > > +$L$ecb_dec_five:
> > >
> > > +        xorps   xmm7,xmm7
> > >
> > > +        call    _aesni_decrypt6
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        movups  XMMWORD[32+rsi],xmm4
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        movups  XMMWORD[48+rsi],xmm5
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +        movups  XMMWORD[64+rsi],xmm6
> > >
> > > +        pxor    xmm6,xmm6
> > >
> > > +        pxor    xmm7,xmm7
> > >
> > > +        jmp     NEAR $L$ecb_ret
> > >
> > > +ALIGN   16
> > >
> > > +$L$ecb_dec_six:
> > >
> > > +        call    _aesni_decrypt6
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        movups  XMMWORD[32+rsi],xmm4
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        movups  XMMWORD[48+rsi],xmm5
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +        movups  XMMWORD[64+rsi],xmm6
> > >
> > > +        pxor    xmm6,xmm6
> > >
> > > +        movups  XMMWORD[80+rsi],xmm7
> > >
> > > +        pxor    xmm7,xmm7
> > >
> > > +
> > >
> > > +$L$ecb_ret:
> > >
> > > +        xorps   xmm0,xmm0
> > >
> > > +        pxor    xmm1,xmm1
> > >
> > > +        movaps  xmm6,XMMWORD[rsp]
> > >
> > > +        movaps  XMMWORD[rsp],xmm0
> > >
> > > +        movaps  xmm7,XMMWORD[16+rsp]
> > >
> > > +        movaps  XMMWORD[16+rsp],xmm0
> > >
> > > +        movaps  xmm8,XMMWORD[32+rsp]
> > >
> > > +        movaps  XMMWORD[32+rsp],xmm0
> > >
> > > +        movaps  xmm9,XMMWORD[48+rsp]
> > >
> > > +        movaps  XMMWORD[48+rsp],xmm0
> > >
> > > +        lea     rsp,[88+rsp]
> > >
> > > +$L$ecb_enc_ret:
> > >
> > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > >
> > > +        mov     rsi,QWORD[16+rsp]
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +$L$SEH_end_aesni_ecb_encrypt:
> > >
> > > +global  aesni_ccm64_encrypt_blocks
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +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:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +        mov     rcx,r9
> > >
> > > +        mov     r8,QWORD[40+rsp]
> > >
> > > +        mov     r9,QWORD[48+rsp]
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        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,[rcx]
> > >
> > > +        movdqu  xmm3,XMMWORD[r9]
> > >
> > > +        movdqa  xmm2,xmm6
> > >
> > > +        lea     rcx,[32+rax*1+rcx]
> > >
> > > +DB      102,15,56,0,247
> > >
> > > +        sub     r10,rax
> > >
> > > +        jmp     NEAR $L$ccm64_enc_outer
> > >
> > > +ALIGN   16
> > >
> > > +$L$ccm64_enc_outer:
> > >
> > > +        movups  xmm0,XMMWORD[r11]
> > >
> > > +        mov     rax,r10
> > >
> > > +        movups  xmm8,XMMWORD[rdi]
> > >
> > > +
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +        movups  xmm1,XMMWORD[16+r11]
> > >
> > > +        xorps   xmm0,xmm8
> > >
> > > +        xorps   xmm3,xmm0
> > >
> > > +        movups  xmm0,XMMWORD[32+r11]
> > >
> > > +
> > >
> > > +$L$ccm64_enc2_loop:
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > >
> > > +        add     rax,32
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      102,15,56,220,216
> > >
> > > +        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
> > >
> > > +        dec     rdx
> > >
> > > +DB      102,15,56,221,208
> > >
> > > +DB      102,15,56,221,216
> > >
> > > +
> > >
> > > +        lea     rdi,[16+rdi]
> > >
> > > +        xorps   xmm8,xmm2
> > >
> > > +        movdqa  xmm2,xmm6
> > >
> > > +        movups  XMMWORD[rsi],xmm8
> > >
> > > +DB      102,15,56,0,215
> > >
> > > +        lea     rsi,[16+rsi]
> > >
> > > +        jnz     NEAR $L$ccm64_enc_outer
> > >
> > > +
> > >
> > > +        pxor    xmm0,xmm0
> > >
> > > +        pxor    xmm1,xmm1
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        movups  XMMWORD[r9],xmm3
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        pxor    xmm8,xmm8
> > >
> > > +        pxor    xmm6,xmm6
> > >
> > > +        movaps  xmm6,XMMWORD[rsp]
> > >
> > > +        movaps  XMMWORD[rsp],xmm0
> > >
> > > +        movaps  xmm7,XMMWORD[16+rsp]
> > >
> > > +        movaps  XMMWORD[16+rsp],xmm0
> > >
> > > +        movaps  xmm8,XMMWORD[32+rsp]
> > >
> > > +        movaps  XMMWORD[32+rsp],xmm0
> > >
> > > +        movaps  xmm9,XMMWORD[48+rsp]
> > >
> > > +        movaps  XMMWORD[48+rsp],xmm0
> > >
> > > +        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:
> > >
> > > +global  aesni_ccm64_decrypt_blocks
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +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:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +        mov     rcx,r9
> > >
> > > +        mov     r8,QWORD[40+rsp]
> > >
> > > +        mov     r9,QWORD[48+rsp]
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        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[rcx]
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        lea     rcx,[32+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +$L$oop_enc1_5:
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        dec     eax
> > >
> > > +        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[rdi]
> > >
> > > +        paddq   xmm6,xmm9
> > >
> > > +        lea     rdi,[16+rdi]
> > >
> > > +        sub     rax,r10
> > >
> > > +        lea     rcx,[32+r10*1+r11]
> > >
> > > +        mov     r10,rax
> > >
> > > +        jmp     NEAR $L$ccm64_dec_outer
> > >
> > > +ALIGN   16
> > >
> > > +$L$ccm64_dec_outer:
> > >
> > > +        xorps   xmm8,xmm2
> > >
> > > +        movdqa  xmm2,xmm6
> > >
> > > +        movups  XMMWORD[rsi],xmm8
> > >
> > > +        lea     rsi,[16+rsi]
> > >
> > > +DB      102,15,56,0,215
> > >
> > > +
> > >
> > > +        sub     rdx,1
> > >
> > > +        jz      NEAR $L$ccm64_dec_break
> > >
> > > +
> > >
> > > +        movups  xmm0,XMMWORD[r11]
> > >
> > > +        mov     rax,r10
> > >
> > > +        movups  xmm1,XMMWORD[16+r11]
> > >
> > > +        xorps   xmm8,xmm0
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +        xorps   xmm3,xmm8
> > >
> > > +        movups  xmm0,XMMWORD[32+r11]
> > >
> > > +        jmp     NEAR $L$ccm64_dec2_loop
> > >
> > > +ALIGN   16
> > >
> > > +$L$ccm64_dec2_loop:
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > >
> > > +        add     rax,32
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      102,15,56,220,216
> > >
> > > +        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,[16+rdi]
> > >
> > > +        jmp     NEAR $L$ccm64_dec_outer
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$ccm64_dec_break:
> > >
> > > +
> > >
> > > +        mov     eax,DWORD[240+r11]
> > >
> > > +        movups  xmm0,XMMWORD[r11]
> > >
> > > +        movups  xmm1,XMMWORD[16+r11]
> > >
> > > +        xorps   xmm8,xmm0
> > >
> > > +        lea     r11,[32+r11]
> > >
> > > +        xorps   xmm3,xmm8
> > >
> > > +$L$oop_enc1_6:
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +        dec     eax
> > >
> > > +        movups  xmm1,XMMWORD[r11]
> > >
> > > +        lea     r11,[16+r11]
> > >
> > > +        jnz     NEAR $L$oop_enc1_6
> > >
> > > +DB      102,15,56,221,217
> > >
> > > +        pxor    xmm0,xmm0
> > >
> > > +        pxor    xmm1,xmm1
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        movups  XMMWORD[r9],xmm3
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        pxor    xmm8,xmm8
> > >
> > > +        pxor    xmm6,xmm6
> > >
> > > +        movaps  xmm6,XMMWORD[rsp]
> > >
> > > +        movaps  XMMWORD[rsp],xmm0
> > >
> > > +        movaps  xmm7,XMMWORD[16+rsp]
> > >
> > > +        movaps  XMMWORD[16+rsp],xmm0
> > >
> > > +        movaps  xmm8,XMMWORD[32+rsp]
> > >
> > > +        movaps  XMMWORD[32+rsp],xmm0
> > >
> > > +        movaps  xmm9,XMMWORD[48+rsp]
> > >
> > > +        movaps  XMMWORD[48+rsp],xmm0
> > >
> > > +        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:
> > >
> > > +global  aesni_ctr32_encrypt_blocks
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +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:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +        mov     rcx,r9
> > >
> > > +        mov     r8,QWORD[40+rsp]
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        cmp     rdx,1
> > >
> > > +        jne     NEAR $L$ctr32_bulk
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        movups  xmm2,XMMWORD[r8]
> > >
> > > +        movups  xmm3,XMMWORD[rdi]
> > >
> > > +        mov     edx,DWORD[240+rcx]
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        lea     rcx,[32+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +$L$oop_enc1_7:
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        dec     edx
> > >
> > > +        movups  xmm1,XMMWORD[rcx]
> > >
> > > +        lea     rcx,[16+rcx]
> > >
> > > +        jnz     NEAR $L$oop_enc1_7
> > >
> > > +DB      102,15,56,221,209
> > >
> > > +        pxor    xmm0,xmm0
> > >
> > > +        pxor    xmm1,xmm1
> > >
> > > +        xorps   xmm2,xmm3
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        xorps   xmm2,xmm2
> > >
> > > +        jmp     NEAR $L$ctr32_epilogue
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$ctr32_bulk:
> > >
> > > +        lea     r11,[rsp]
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        sub     rsp,288
> > >
> > > +        and     rsp,-16
> > >
> > > +        movaps  XMMWORD[(-168)+r11],xmm6
> > >
> > > +        movaps  XMMWORD[(-152)+r11],xmm7
> > >
> > > +        movaps  XMMWORD[(-136)+r11],xmm8
> > >
> > > +        movaps  XMMWORD[(-120)+r11],xmm9
> > >
> > > +        movaps  XMMWORD[(-104)+r11],xmm10
> > >
> > > +        movaps  XMMWORD[(-88)+r11],xmm11
> > >
> > > +        movaps  XMMWORD[(-72)+r11],xmm12
> > >
> > > +        movaps  XMMWORD[(-56)+r11],xmm13
> > >
> > > +        movaps  XMMWORD[(-40)+r11],xmm14
> > >
> > > +        movaps  XMMWORD[(-24)+r11],xmm15
> > >
> > > +$L$ctr32_body:
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqu  xmm2,XMMWORD[r8]
> > >
> > > +        movdqu  xmm0,XMMWORD[rcx]
> > >
> > > +        mov     r8d,DWORD[12+r8]
> > >
> > > +        pxor    xmm2,xmm0
> > >
> > > +        mov     ebp,DWORD[12+rcx]
> > >
> > > +        movdqa  XMMWORD[rsp],xmm2
> > >
> > > +        bswap   r8d
> > >
> > > +        movdqa  xmm3,xmm2
> > >
> > > +        movdqa  xmm4,xmm2
> > >
> > > +        movdqa  xmm5,xmm2
> > >
> > > +        movdqa  XMMWORD[64+rsp],xmm2
> > >
> > > +        movdqa  XMMWORD[80+rsp],xmm2
> > >
> > > +        movdqa  XMMWORD[96+rsp],xmm2
> > >
> > > +        mov     r10,rdx
> > >
> > > +        movdqa  XMMWORD[112+rsp],xmm2
> > >
> > > +
> > >
> > > +        lea     rax,[1+r8]
> > >
> > > +        lea     rdx,[2+r8]
> > >
> > > +        bswap   eax
> > >
> > > +        bswap   edx
> > >
> > > +        xor     eax,ebp
> > >
> > > +        xor     edx,ebp
> > >
> > > +DB      102,15,58,34,216,3
> > >
> > > +        lea     rax,[3+r8]
> > >
> > > +        movdqa  XMMWORD[16+rsp],xmm3
> > >
> > > +DB      102,15,58,34,226,3
> > >
> > > +        bswap   eax
> > >
> > > +        mov     rdx,r10
> > >
> > > +        lea     r10,[4+r8]
> > >
> > > +        movdqa  XMMWORD[32+rsp],xmm4
> > >
> > > +        xor     eax,ebp
> > >
> > > +        bswap   r10d
> > >
> > > +DB      102,15,58,34,232,3
> > >
> > > +        xor     r10d,ebp
> > >
> > > +        movdqa  XMMWORD[48+rsp],xmm5
> > >
> > > +        lea     r9,[5+r8]
> > >
> > > +        mov     DWORD[((64+12))+rsp],r10d
> > >
> > > +        bswap   r9d
> > >
> > > +        lea     r10,[6+r8]
> > >
> > > +        mov     eax,DWORD[240+rcx]
> > >
> > > +        xor     r9d,ebp
> > >
> > > +        bswap   r10d
> > >
> > > +        mov     DWORD[((80+12))+rsp],r9d
> > >
> > > +        xor     r10d,ebp
> > >
> > > +        lea     r9,[7+r8]
> > >
> > > +        mov     DWORD[((96+12))+rsp],r10d
> > >
> > > +        bswap   r9d
> > >
> > > +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
> > >
> > > +        xor     r9d,ebp
> > >
> > > +        and     r10d,71303168
> > >
> > > +        mov     DWORD[((112+12))+rsp],r9d
> > >
> > > +
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +
> > >
> > > +        movdqa  xmm6,XMMWORD[64+rsp]
> > >
> > > +        movdqa  xmm7,XMMWORD[80+rsp]
> > >
> > > +
> > >
> > > +        cmp     rdx,8
> > >
> > > +        jb      NEAR $L$ctr32_tail
> > >
> > > +
> > >
> > > +        sub     rdx,6
> > >
> > > +        cmp     r10d,4194304
> > >
> > > +        je      NEAR $L$ctr32_6x
> > >
> > > +
> > >
> > > +        lea     rcx,[128+rcx]
> > >
> > > +        sub     rdx,2
> > >
> > > +        jmp     NEAR $L$ctr32_loop8
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$ctr32_6x:
> > >
> > > +        shl     eax,4
> > >
> > > +        mov     r10d,48
> > >
> > > +        bswap   ebp
> > >
> > > +        lea     rcx,[32+rax*1+rcx]
> > >
> > > +        sub     r10,rax
> > >
> > > +        jmp     NEAR $L$ctr32_loop6
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$ctr32_loop6:
> > >
> > > +        add     r8d,6
> > >
> > > +        movups  xmm0,XMMWORD[((-48))+r10*1+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        mov     eax,r8d
> > >
> > > +        xor     eax,ebp
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +DB      0x0f,0x38,0xf1,0x44,0x24,12
> > >
> > > +        lea     eax,[1+r8]
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +        xor     eax,ebp
> > >
> > > +DB      0x0f,0x38,0xf1,0x44,0x24,28
> > >
> > > +DB      102,15,56,220,233
> > >
> > > +        lea     eax,[2+r8]
> > >
> > > +        xor     eax,ebp
> > >
> > > +DB      102,15,56,220,241
> > >
> > > +DB      0x0f,0x38,0xf1,0x44,0x24,44
> > >
> > > +        lea     eax,[3+r8]
> > >
> > > +DB      102,15,56,220,249
> > >
> > > +        movups  xmm1,XMMWORD[((-32))+r10*1+rcx]
> > >
> > > +        xor     eax,ebp
> > >
> > > +
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      0x0f,0x38,0xf1,0x44,0x24,60
> > >
> > > +        lea     eax,[4+r8]
> > >
> > > +DB      102,15,56,220,216
> > >
> > > +        xor     eax,ebp
> > >
> > > +DB      0x0f,0x38,0xf1,0x44,0x24,76
> > >
> > > +DB      102,15,56,220,224
> > >
> > > +        lea     eax,[5+r8]
> > >
> > > +        xor     eax,ebp
> > >
> > > +DB      102,15,56,220,232
> > >
> > > +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[((-16))+r10*1+rcx]
> > >
> > > +
> > >
> > > +        call    $L$enc_loop6
> > >
> > > +
> > >
> > > +        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[rsp]
> > >
> > > +        pxor    xmm9,xmm3
> > >
> > > +        movaps  xmm3,XMMWORD[16+rsp]
> > >
> > > +        pxor    xmm10,xmm4
> > >
> > > +        movaps  xmm4,XMMWORD[32+rsp]
> > >
> > > +        pxor    xmm11,xmm5
> > >
> > > +        movaps  xmm5,XMMWORD[48+rsp]
> > >
> > > +        pxor    xmm12,xmm6
> > >
> > > +        movaps  xmm6,XMMWORD[64+rsp]
> > >
> > > +        pxor    xmm13,xmm7
> > >
> > > +        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     NEAR $L$ctr32_loop6
> > >
> > > +
> > >
> > > +        add     rdx,6
> > >
> > > +        jz      NEAR $L$ctr32_done
> > >
> > > +
> > >
> > > +        lea     eax,[((-48))+r10]
> > >
> > > +        lea     rcx,[((-80))+r10*1+rcx]
> > >
> > > +        neg     eax
> > >
> > > +        shr     eax,4
> > >
> > > +        jmp     NEAR $L$ctr32_tail
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$ctr32_loop8:
> > >
> > > +        add     r8d,8
> > >
> > > +        movdqa  xmm8,XMMWORD[96+rsp]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        mov     r9d,r8d
> > >
> > > +        movdqa  xmm9,XMMWORD[112+rsp]
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +        bswap   r9d
> > >
> > > +        movups  xmm0,XMMWORD[((32-128))+rcx]
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +        xor     r9d,ebp
> > >
> > > +        nop
> > >
> > > +DB      102,15,56,220,233
> > >
> > > +        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[((48-128))+rcx]
> > >
> > > +        bswap   r9d
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      102,15,56,220,216
> > >
> > > +        xor     r9d,ebp
> > >
> > > +DB      0x66,0x90
> > >
> > > +DB      102,15,56,220,224
> > >
> > > +DB      102,15,56,220,232
> > >
> > > +        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[((64-128))+rcx]
> > >
> > > +        bswap   r9d
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +        xor     r9d,ebp
> > >
> > > +DB      0x66,0x90
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +DB      102,15,56,220,233
> > >
> > > +        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[((80-128))+rcx]
> > >
> > > +        bswap   r9d
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      102,15,56,220,216
> > >
> > > +        xor     r9d,ebp
> > >
> > > +DB      0x66,0x90
> > >
> > > +DB      102,15,56,220,224
> > >
> > > +DB      102,15,56,220,232
> > >
> > > +        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[((96-128))+rcx]
> > >
> > > +        bswap   r9d
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +        xor     r9d,ebp
> > >
> > > +DB      0x66,0x90
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +DB      102,15,56,220,233
> > >
> > > +        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[((112-128))+rcx]
> > >
> > > +        bswap   r9d
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      102,15,56,220,216
> > >
> > > +        xor     r9d,ebp
> > >
> > > +DB      0x66,0x90
> > >
> > > +DB      102,15,56,220,224
> > >
> > > +DB      102,15,56,220,232
> > >
> > > +        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[((128-128))+rcx]
> > >
> > > +        bswap   r9d
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +        xor     r9d,ebp
> > >
> > > +DB      0x66,0x90
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +DB      102,15,56,220,233
> > >
> > > +        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[((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,ebp
> > >
> > > +        movdqu  xmm10,XMMWORD[rdi]
> > >
> > > +DB      102,15,56,220,232
> > >
> > > +        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[((160-128))+rcx]
> > >
> > > +
> > >
> > > +        jb      NEAR $L$ctr32_enc_done
> > >
> > > +
> > >
> > > +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
> > >
> > > +DB      102,68,15,56,220,193
> > >
> > > +DB      102,68,15,56,220,201
> > >
> > > +        movups  xmm1,XMMWORD[((176-128))+rcx]
> > >
> > > +
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      102,15,56,220,216
> > >
> > > +DB      102,15,56,220,224
> > >
> > > +DB      102,15,56,220,232
> > >
> > > +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[((192-128))+rcx]
> > >
> > > +        je      NEAR $L$ctr32_enc_done
> > >
> > > +
> > >
> > > +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
> > >
> > > +DB      102,68,15,56,220,193
> > >
> > > +DB      102,68,15,56,220,201
> > >
> > > +        movups  xmm1,XMMWORD[((208-128))+rcx]
> > >
> > > +
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      102,15,56,220,216
> > >
> > > +DB      102,15,56,220,224
> > >
> > > +DB      102,15,56,220,232
> > >
> > > +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[((224-128))+rcx]
> > >
> > > +        jmp     NEAR $L$ctr32_enc_done
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$ctr32_enc_done:
> > >
> > > +        movdqu  xmm11,XMMWORD[16+rdi]
> > >
> > > +        pxor    xmm10,xmm0
> > >
> > > +        movdqu  xmm12,XMMWORD[32+rdi]
> > >
> > > +        pxor    xmm11,xmm0
> > >
> > > +        movdqu  xmm13,XMMWORD[48+rdi]
> > >
> > > +        pxor    xmm12,xmm0
> > >
> > > +        movdqu  xmm14,XMMWORD[64+rdi]
> > >
> > > +        pxor    xmm13,xmm0
> > >
> > > +        movdqu  xmm15,XMMWORD[80+rdi]
> > >
> > > +        pxor    xmm14,xmm0
> > >
> > > +        pxor    xmm15,xmm0
> > >
> > > +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
> > >
> > > +DB      102,68,15,56,220,193
> > >
> > > +DB      102,68,15,56,220,201
> > >
> > > +        movdqu  xmm1,XMMWORD[96+rdi]
> > >
> > > +        lea     rdi,[128+rdi]
> > >
> > > +
> > >
> > > +DB      102,65,15,56,221,210
> > >
> > > +        pxor    xmm1,xmm0
> > >
> > > +        movdqu  xmm10,XMMWORD[((112-128))+rdi]
> > >
> > > +DB      102,65,15,56,221,219
> > >
> > > +        pxor    xmm10,xmm0
> > >
> > > +        movdqa  xmm11,XMMWORD[rsp]
> > >
> > > +DB      102,65,15,56,221,228
> > >
> > > +DB      102,65,15,56,221,237
> > >
> > > +        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[48+rsp]
> > >
> > > +        movdqa  xmm15,XMMWORD[64+rsp]
> > >
> > > +DB      102,68,15,56,221,193
> > >
> > > +        movdqa  xmm0,XMMWORD[80+rsp]
> > >
> > > +        movups  xmm1,XMMWORD[((16-128))+rcx]
> > >
> > > +DB      102,69,15,56,221,202
> > >
> > > +
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        movdqa  xmm2,xmm11
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        movdqa  xmm3,xmm12
> > >
> > > +        movups  XMMWORD[32+rsi],xmm4
> > >
> > > +        movdqa  xmm4,xmm13
> > >
> > > +        movups  XMMWORD[48+rsi],xmm5
> > >
> > > +        movdqa  xmm5,xmm14
> > >
> > > +        movups  XMMWORD[64+rsi],xmm6
> > >
> > > +        movdqa  xmm6,xmm15
> > >
> > > +        movups  XMMWORD[80+rsi],xmm7
> > >
> > > +        movdqa  xmm7,xmm0
> > >
> > > +        movups  XMMWORD[96+rsi],xmm8
> > >
> > > +        movups  XMMWORD[112+rsi],xmm9
> > >
> > > +        lea     rsi,[128+rsi]
> > >
> > > +
> > >
> > > +        sub     rdx,8
> > >
> > > +        jnc     NEAR $L$ctr32_loop8
> > >
> > > +
> > >
> > > +        add     rdx,8
> > >
> > > +        jz      NEAR $L$ctr32_done
> > >
> > > +        lea     rcx,[((-128))+rcx]
> > >
> > > +
> > >
> > > +$L$ctr32_tail:
> > >
> > > +
> > >
> > > +
> > >
> > > +        lea     rcx,[16+rcx]
> > >
> > > +        cmp     rdx,4
> > >
> > > +        jb      NEAR $L$ctr32_loop3
> > >
> > > +        je      NEAR $L$ctr32_loop4
> > >
> > > +
> > >
> > > +
> > >
> > > +        shl     eax,4
> > >
> > > +        movdqa  xmm8,XMMWORD[96+rsp]
> > >
> > > +        pxor    xmm9,xmm9
> > >
> > > +
> > >
> > > +        movups  xmm0,XMMWORD[16+rcx]
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +        lea     rcx,[((32-16))+rax*1+rcx]
> > >
> > > +        neg     rax
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +        add     rax,16
> > >
> > > +        movups  xmm10,XMMWORD[rdi]
> > >
> > > +DB      102,15,56,220,233
> > >
> > > +DB      102,15,56,220,241
> > >
> > > +        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[48+rdi]
> > >
> > > +        pxor    xmm2,xmm10
> > >
> > > +        movdqu  xmm10,XMMWORD[64+rdi]
> > >
> > > +        pxor    xmm3,xmm11
> > >
> > > +        movdqu  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        movdqu  XMMWORD[16+rsi],xmm3
> > >
> > > +        pxor    xmm5,xmm13
> > >
> > > +        movdqu  XMMWORD[32+rsi],xmm4
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +        movdqu  XMMWORD[48+rsi],xmm5
> > >
> > > +        movdqu  XMMWORD[64+rsi],xmm6
> > >
> > > +        cmp     rdx,6
> > >
> > > +        jb      NEAR $L$ctr32_done
> > >
> > > +
> > >
> > > +        movups  xmm11,XMMWORD[80+rdi]
> > >
> > > +        xorps   xmm7,xmm11
> > >
> > > +        movups  XMMWORD[80+rsi],xmm7
> > >
> > > +        je      NEAR $L$ctr32_done
> > >
> > > +
> > >
> > > +        movups  xmm12,XMMWORD[96+rdi]
> > >
> > > +        xorps   xmm8,xmm12
> > >
> > > +        movups  XMMWORD[96+rsi],xmm8
> > >
> > > +        jmp     NEAR $L$ctr32_done
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$ctr32_loop4:
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        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[rcx]
> > >
> > > +        jnz     NEAR $L$ctr32_loop4
> > >
> > > +DB      102,15,56,221,209
> > >
> > > +DB      102,15,56,221,217
> > >
> > > +        movups  xmm10,XMMWORD[rdi]
> > >
> > > +        movups  xmm11,XMMWORD[16+rdi]
> > >
> > > +DB      102,15,56,221,225
> > >
> > > +DB      102,15,56,221,233
> > >
> > > +        movups  xmm12,XMMWORD[32+rdi]
> > >
> > > +        movups  xmm13,XMMWORD[48+rdi]
> > >
> > > +
> > >
> > > +        xorps   xmm2,xmm10
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        xorps   xmm3,xmm11
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        movdqu  XMMWORD[32+rsi],xmm4
> > >
> > > +        pxor    xmm5,xmm13
> > >
> > > +        movdqu  XMMWORD[48+rsi],xmm5
> > >
> > > +        jmp     NEAR $L$ctr32_done
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$ctr32_loop3:
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        lea     rcx,[16+rcx]
> > >
> > > +        dec     eax
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +        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[rdi]
> > >
> > > +        xorps   xmm2,xmm10
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        cmp     rdx,2
> > >
> > > +        jb      NEAR $L$ctr32_done
> > >
> > > +
> > >
> > > +        movups  xmm11,XMMWORD[16+rdi]
> > >
> > > +        xorps   xmm3,xmm11
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        je      NEAR $L$ctr32_done
> > >
> > > +
> > >
> > > +        movups  xmm12,XMMWORD[32+rdi]
> > >
> > > +        xorps   xmm4,xmm12
> > >
> > > +        movups  XMMWORD[32+rsi],xmm4
> > >
> > > +
> > >
> > > +$L$ctr32_done:
> > >
> > > +        xorps   xmm0,xmm0
> > >
> > > +        xor     ebp,ebp
> > >
> > > +        pxor    xmm1,xmm1
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +        movaps  xmm6,XMMWORD[((-168))+r11]
> > >
> > > +        movaps  XMMWORD[(-168)+r11],xmm0
> > >
> > > +        movaps  xmm7,XMMWORD[((-152))+r11]
> > >
> > > +        movaps  XMMWORD[(-152)+r11],xmm0
> > >
> > > +        movaps  xmm8,XMMWORD[((-136))+r11]
> > >
> > > +        movaps  XMMWORD[(-136)+r11],xmm0
> > >
> > > +        movaps  xmm9,XMMWORD[((-120))+r11]
> > >
> > > +        movaps  XMMWORD[(-120)+r11],xmm0
> > >
> > > +        movaps  xmm10,XMMWORD[((-104))+r11]
> > >
> > > +        movaps  XMMWORD[(-104)+r11],xmm0
> > >
> > > +        movaps  xmm11,XMMWORD[((-88))+r11]
> > >
> > > +        movaps  XMMWORD[(-88)+r11],xmm0
> > >
> > > +        movaps  xmm12,XMMWORD[((-72))+r11]
> > >
> > > +        movaps  XMMWORD[(-72)+r11],xmm0
> > >
> > > +        movaps  xmm13,XMMWORD[((-56))+r11]
> > >
> > > +        movaps  XMMWORD[(-56)+r11],xmm0
> > >
> > > +        movaps  xmm14,XMMWORD[((-40))+r11]
> > >
> > > +        movaps  XMMWORD[(-40)+r11],xmm0
> > >
> > > +        movaps  xmm15,XMMWORD[((-24))+r11]
> > >
> > > +        movaps  XMMWORD[(-24)+r11],xmm0
> > >
> > > +        movaps  XMMWORD[rsp],xmm0
> > >
> > > +        movaps  XMMWORD[16+rsp],xmm0
> > >
> > > +        movaps  XMMWORD[32+rsp],xmm0
> > >
> > > +        movaps  XMMWORD[48+rsp],xmm0
> > >
> > > +        movaps  XMMWORD[64+rsp],xmm0
> > >
> > > +        movaps  XMMWORD[80+rsp],xmm0
> > >
> > > +        movaps  XMMWORD[96+rsp],xmm0
> > >
> > > +        movaps  XMMWORD[112+rsp],xmm0
> > >
> > > +        mov     rbp,QWORD[((-8))+r11]
> > >
> > > +
> > >
> > > +        lea     rsp,[r11]
> > >
> > > +
> > >
> > > +$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:
> > >
> > > +global  aesni_xts_encrypt
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +aesni_xts_encrypt:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_aesni_xts_encrypt:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +        mov     rcx,r9
> > >
> > > +        mov     r8,QWORD[40+rsp]
> > >
> > > +        mov     r9,QWORD[48+rsp]
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        lea     r11,[rsp]
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        sub     rsp,272
> > >
> > > +        and     rsp,-16
> > >
> > > +        movaps  XMMWORD[(-168)+r11],xmm6
> > >
> > > +        movaps  XMMWORD[(-152)+r11],xmm7
> > >
> > > +        movaps  XMMWORD[(-136)+r11],xmm8
> > >
> > > +        movaps  XMMWORD[(-120)+r11],xmm9
> > >
> > > +        movaps  XMMWORD[(-104)+r11],xmm10
> > >
> > > +        movaps  XMMWORD[(-88)+r11],xmm11
> > >
> > > +        movaps  XMMWORD[(-72)+r11],xmm12
> > >
> > > +        movaps  XMMWORD[(-56)+r11],xmm13
> > >
> > > +        movaps  XMMWORD[(-40)+r11],xmm14
> > >
> > > +        movaps  XMMWORD[(-24)+r11],xmm15
> > >
> > > +$L$xts_enc_body:
> > >
> > > +        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:
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        dec     eax
> > >
> > > +        movups  xmm1,XMMWORD[r8]
> > >
> > > +        lea     r8,[16+r8]
> > >
> > > +        jnz     NEAR $L$oop_enc1_8
> > >
> > > +DB      102,15,56,221,209
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        mov     rbp,rcx
> > >
> > > +        mov     eax,r10d
> > >
> > > +        shl     r10d,4
> > >
> > > +        mov     r9,rdx
> > >
> > > +        and     rdx,-16
> > >
> > > +
> > >
> > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,XMMWORD[$L$xts_magic]
> > >
> > > +        movdqa  xmm15,xmm2
> > >
> > > +        pshufd  xmm9,xmm2,0x5f
> > >
> > > +        pxor    xmm1,xmm0
> > >
> > > +        movdqa  xmm14,xmm9
> > >
> > > +        paddd   xmm9,xmm9
> > >
> > > +        movdqa  xmm10,xmm15
> > >
> > > +        psrad   xmm14,31
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +        pand    xmm14,xmm8
> > >
> > > +        pxor    xmm10,xmm0
> > >
> > > +        pxor    xmm15,xmm14
> > >
> > > +        movdqa  xmm14,xmm9
> > >
> > > +        paddd   xmm9,xmm9
> > >
> > > +        movdqa  xmm11,xmm15
> > >
> > > +        psrad   xmm14,31
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +        pand    xmm14,xmm8
> > >
> > > +        pxor    xmm11,xmm0
> > >
> > > +        pxor    xmm15,xmm14
> > >
> > > +        movdqa  xmm14,xmm9
> > >
> > > +        paddd   xmm9,xmm9
> > >
> > > +        movdqa  xmm12,xmm15
> > >
> > > +        psrad   xmm14,31
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +        pand    xmm14,xmm8
> > >
> > > +        pxor    xmm12,xmm0
> > >
> > > +        pxor    xmm15,xmm14
> > >
> > > +        movdqa  xmm14,xmm9
> > >
> > > +        paddd   xmm9,xmm9
> > >
> > > +        movdqa  xmm13,xmm15
> > >
> > > +        psrad   xmm14,31
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +        pand    xmm14,xmm8
> > >
> > > +        pxor    xmm13,xmm0
> > >
> > > +        pxor    xmm15,xmm14
> > >
> > > +        movdqa  xmm14,xmm15
> > >
> > > +        psrad   xmm9,31
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +        pand    xmm9,xmm8
> > >
> > > +        pxor    xmm14,xmm0
> > >
> > > +        pxor    xmm15,xmm9
> > >
> > > +        movaps  XMMWORD[96+rsp],xmm1
> > >
> > > +
> > >
> > > +        sub     rdx,16*6
> > >
> > > +        jc      NEAR $L$xts_enc_short
> > >
> > > +
> > >
> > > +        mov     eax,16+96
> > >
> > > +        lea     rcx,[32+r10*1+rbp]
> > >
> > > +        sub     rax,r10
> > >
> > > +        movups  xmm1,XMMWORD[16+rbp]
> > >
> > > +        mov     r10,rax
> > >
> > > +        lea     r8,[$L$xts_magic]
> > >
> > > +        jmp     NEAR $L$xts_enc_grandloop
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$xts_enc_grandloop:
> > >
> > > +        movdqu  xmm2,XMMWORD[rdi]
> > >
> > > +        movdqa  xmm8,xmm0
> > >
> > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > >
> > > +        pxor    xmm2,xmm10
> > >
> > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > >
> > > +        pxor    xmm3,xmm11
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > >
> > > +        pxor    xmm5,xmm13
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > >
> > > +        pxor    xmm8,xmm15
> > >
> > > +        movdqa  xmm9,XMMWORD[96+rsp]
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +DB      102,15,56,220,233
> > >
> > > +        movups  xmm0,XMMWORD[32+rbp]
> > >
> > > +        lea     rdi,[96+rdi]
> > >
> > > +        pxor    xmm7,xmm8
> > >
> > > +
> > >
> > > +        pxor    xmm10,xmm9
> > >
> > > +DB      102,15,56,220,241
> > >
> > > +        pxor    xmm11,xmm9
> > >
> > > +        movdqa  XMMWORD[rsp],xmm10
> > >
> > > +DB      102,15,56,220,249
> > >
> > > +        movups  xmm1,XMMWORD[48+rbp]
> > >
> > > +        pxor    xmm12,xmm9
> > >
> > > +
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        pxor    xmm13,xmm9
> > >
> > > +        movdqa  XMMWORD[16+rsp],xmm11
> > >
> > > +DB      102,15,56,220,216
> > >
> > > +        pxor    xmm14,xmm9
> > >
> > > +        movdqa  XMMWORD[32+rsp],xmm12
> > >
> > > +DB      102,15,56,220,224
> > >
> > > +DB      102,15,56,220,232
> > >
> > > +        pxor    xmm8,xmm9
> > >
> > > +        movdqa  XMMWORD[64+rsp],xmm14
> > >
> > > +DB      102,15,56,220,240
> > >
> > > +DB      102,15,56,220,248
> > >
> > > +        movups  xmm0,XMMWORD[64+rbp]
> > >
> > > +        movdqa  XMMWORD[80+rsp],xmm8
> > >
> > > +        pshufd  xmm9,xmm15,0x5f
> > >
> > > +        jmp     NEAR $L$xts_enc_loop6
> > >
> > > +ALIGN   32
> > >
> > > +$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[((-64))+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
> > >
> > > +DB      102,15,56,220,240
> > >
> > > +DB      102,15,56,220,248
> > >
> > > +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
> > >
> > > +        jnz     NEAR $L$xts_enc_loop6
> > >
> > > +
> > >
> > > +        movdqa  xmm8,XMMWORD[r8]
> > >
> > > +        movdqa  xmm14,xmm9
> > >
> > > +        paddd   xmm9,xmm9
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +        psrad   xmm14,31
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +        pand    xmm14,xmm8
> > >
> > > +        movups  xmm10,XMMWORD[rbp]
> > >
> > > +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[((-64))+rcx]
> > >
> > > +
> > >
> > > +        movdqa  xmm14,xmm9
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        paddd   xmm9,xmm9
> > >
> > > +        pxor    xmm10,xmm15
> > >
> > > +DB      102,15,56,220,216
> > >
> > > +        psrad   xmm14,31
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +DB      102,15,56,220,224
> > >
> > > +DB      102,15,56,220,232
> > >
> > > +        pand    xmm14,xmm8
> > >
> > > +        movaps  xmm12,xmm11
> > >
> > > +DB      102,15,56,220,240
> > >
> > > +        pxor    xmm15,xmm14
> > >
> > > +        movdqa  xmm14,xmm9
> > >
> > > +DB      102,15,56,220,248
> > >
> > > +        movups  xmm0,XMMWORD[((-48))+rcx]
> > >
> > > +
> > >
> > > +        paddd   xmm9,xmm9
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        pxor    xmm11,xmm15
> > >
> > > +        psrad   xmm14,31
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +        pand    xmm14,xmm8
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +DB      102,15,56,220,233
> > >
> > > +        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[((-32))+rcx]
> > >
> > > +
> > >
> > > +        paddd   xmm9,xmm9
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        pxor    xmm12,xmm15
> > >
> > > +        psrad   xmm14,31
> > >
> > > +DB      102,15,56,220,216
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +        pand    xmm14,xmm8
> > >
> > > +DB      102,15,56,220,224
> > >
> > > +DB      102,15,56,220,232
> > >
> > > +DB      102,15,56,220,240
> > >
> > > +        pxor    xmm15,xmm14
> > >
> > > +        movaps  xmm14,xmm13
> > >
> > > +DB      102,15,56,220,248
> > >
> > > +
> > >
> > > +        movdqa  xmm0,xmm9
> > >
> > > +        paddd   xmm9,xmm9
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        pxor    xmm13,xmm15
> > >
> > > +        psrad   xmm0,31
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +        pand    xmm0,xmm8
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +DB      102,15,56,220,233
> > >
> > > +        pxor    xmm15,xmm0
> > >
> > > +        movups  xmm0,XMMWORD[rbp]
> > >
> > > +DB      102,15,56,220,241
> > >
> > > +DB      102,15,56,220,249
> > >
> > > +        movups  xmm1,XMMWORD[16+rbp]
> > >
> > > +
> > >
> > > +        pxor    xmm14,xmm15
> > >
> > > +DB      102,15,56,221,84,36,0
> > >
> > > +        psrad   xmm9,31
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +DB      102,15,56,221,92,36,16
> > >
> > > +DB      102,15,56,221,100,36,32
> > >
> > > +        pand    xmm9,xmm8
> > >
> > > +        mov     rax,r10
> > >
> > > +DB      102,15,56,221,108,36,48
> > >
> > > +DB      102,15,56,221,116,36,64
> > >
> > > +DB      102,15,56,221,124,36,80
> > >
> > > +        pxor    xmm15,xmm9
> > >
> > > +
> > >
> > > +        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     NEAR $L$xts_enc_grandloop
> > >
> > > +
> > >
> > > +        mov     eax,16+96
> > >
> > > +        sub     eax,r10d
> > >
> > > +        mov     rcx,rbp
> > >
> > > +        shr     eax,4
> > >
> > > +
> > >
> > > +$L$xts_enc_short:
> > >
> > > +
> > >
> > > +        mov     r10d,eax
> > >
> > > +        pxor    xmm10,xmm0
> > >
> > > +        add     rdx,16*6
> > >
> > > +        jz      NEAR $L$xts_enc_done
> > >
> > > +
> > >
> > > +        pxor    xmm11,xmm0
> > >
> > > +        cmp     rdx,0x20
> > >
> > > +        jb      NEAR $L$xts_enc_one
> > >
> > > +        pxor    xmm12,xmm0
> > >
> > > +        je      NEAR $L$xts_enc_two
> > >
> > > +
> > >
> > > +        pxor    xmm13,xmm0
> > >
> > > +        cmp     rdx,0x40
> > >
> > > +        jb      NEAR $L$xts_enc_three
> > >
> > > +        pxor    xmm14,xmm0
> > >
> > > +        je      NEAR $L$xts_enc_four
> > >
> > > +
> > >
> > > +        movdqu  xmm2,XMMWORD[rdi]
> > >
> > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > >
> > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > >
> > > +        pxor    xmm2,xmm10
> > >
> > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > >
> > > +        pxor    xmm3,xmm11
> > >
> > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > >
> > > +        lea     rdi,[80+rdi]
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        pxor    xmm5,xmm13
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +        pxor    xmm7,xmm7
> > >
> > > +
> > >
> > > +        call    _aesni_encrypt6
> > >
> > > +
> > >
> > > +        xorps   xmm2,xmm10
> > >
> > > +        movdqa  xmm10,xmm15
> > >
> > > +        xorps   xmm3,xmm11
> > >
> > > +        xorps   xmm4,xmm12
> > >
> > > +        movdqu  XMMWORD[rsi],xmm2
> > >
> > > +        xorps   xmm5,xmm13
> > >
> > > +        movdqu  XMMWORD[16+rsi],xmm3
> > >
> > > +        xorps   xmm6,xmm14
> > >
> > > +        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[rdi]
> > >
> > > +        lea     rdi,[16+rdi]
> > >
> > > +        xorps   xmm2,xmm10
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        lea     rcx,[32+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +$L$oop_enc1_9:
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        dec     eax
> > >
> > > +        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[rsi],xmm2
> > >
> > > +        lea     rsi,[16+rsi]
> > >
> > > +        jmp     NEAR $L$xts_enc_done
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$xts_enc_two:
> > >
> > > +        movups  xmm2,XMMWORD[rdi]
> > >
> > > +        movups  xmm3,XMMWORD[16+rdi]
> > >
> > > +        lea     rdi,[32+rdi]
> > >
> > > +        xorps   xmm2,xmm10
> > >
> > > +        xorps   xmm3,xmm11
> > >
> > > +
> > >
> > > +        call    _aesni_encrypt2
> > >
> > > +
> > >
> > > +        xorps   xmm2,xmm10
> > >
> > > +        movdqa  xmm10,xmm12
> > >
> > > +        xorps   xmm3,xmm11
> > >
> > > +        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[rdi]
> > >
> > > +        movups  xmm3,XMMWORD[16+rdi]
> > >
> > > +        movups  xmm4,XMMWORD[32+rdi]
> > >
> > > +        lea     rdi,[48+rdi]
> > >
> > > +        xorps   xmm2,xmm10
> > >
> > > +        xorps   xmm3,xmm11
> > >
> > > +        xorps   xmm4,xmm12
> > >
> > > +
> > >
> > > +        call    _aesni_encrypt3
> > >
> > > +
> > >
> > > +        xorps   xmm2,xmm10
> > >
> > > +        movdqa  xmm10,xmm13
> > >
> > > +        xorps   xmm3,xmm11
> > >
> > > +        xorps   xmm4,xmm12
> > >
> > > +        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[rdi]
> > >
> > > +        movups  xmm3,XMMWORD[16+rdi]
> > >
> > > +        movups  xmm4,XMMWORD[32+rdi]
> > >
> > > +        xorps   xmm2,xmm10
> > >
> > > +        movups  xmm5,XMMWORD[48+rdi]
> > >
> > > +        lea     rdi,[64+rdi]
> > >
> > > +        xorps   xmm3,xmm11
> > >
> > > +        xorps   xmm4,xmm12
> > >
> > > +        xorps   xmm5,xmm13
> > >
> > > +
> > >
> > > +        call    _aesni_encrypt4
> > >
> > > +
> > >
> > > +        pxor    xmm2,xmm10
> > >
> > > +        movdqa  xmm10,xmm14
> > >
> > > +        pxor    xmm3,xmm11
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        movdqu  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm5,xmm13
> > >
> > > +        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:
> > >
> > > +        and     r9,15
> > >
> > > +        jz      NEAR $L$xts_enc_ret
> > >
> > > +        mov     rdx,r9
> > >
> > > +
> > >
> > > +$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     NEAR $L$xts_enc_steal
> > >
> > > +
> > >
> > > +        sub     rsi,r9
> > >
> > > +        mov     rcx,rbp
> > >
> > > +        mov     eax,r10d
> > >
> > > +
> > >
> > > +        movups  xmm2,XMMWORD[((-16))+rsi]
> > >
> > > +        xorps   xmm2,xmm10
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        lea     rcx,[32+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +$L$oop_enc1_10:
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        dec     eax
> > >
> > > +        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[(-16)+rsi],xmm2
> > >
> > > +
> > >
> > > +$L$xts_enc_ret:
> > >
> > > +        xorps   xmm0,xmm0
> > >
> > > +        pxor    xmm1,xmm1
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +        movaps  xmm6,XMMWORD[((-168))+r11]
> > >
> > > +        movaps  XMMWORD[(-168)+r11],xmm0
> > >
> > > +        movaps  xmm7,XMMWORD[((-152))+r11]
> > >
> > > +        movaps  XMMWORD[(-152)+r11],xmm0
> > >
> > > +        movaps  xmm8,XMMWORD[((-136))+r11]
> > >
> > > +        movaps  XMMWORD[(-136)+r11],xmm0
> > >
> > > +        movaps  xmm9,XMMWORD[((-120))+r11]
> > >
> > > +        movaps  XMMWORD[(-120)+r11],xmm0
> > >
> > > +        movaps  xmm10,XMMWORD[((-104))+r11]
> > >
> > > +        movaps  XMMWORD[(-104)+r11],xmm0
> > >
> > > +        movaps  xmm11,XMMWORD[((-88))+r11]
> > >
> > > +        movaps  XMMWORD[(-88)+r11],xmm0
> > >
> > > +        movaps  xmm12,XMMWORD[((-72))+r11]
> > >
> > > +        movaps  XMMWORD[(-72)+r11],xmm0
> > >
> > > +        movaps  xmm13,XMMWORD[((-56))+r11]
> > >
> > > +        movaps  XMMWORD[(-56)+r11],xmm0
> > >
> > > +        movaps  xmm14,XMMWORD[((-40))+r11]
> > >
> > > +        movaps  XMMWORD[(-40)+r11],xmm0
> > >
> > > +        movaps  xmm15,XMMWORD[((-24))+r11]
> > >
> > > +        movaps  XMMWORD[(-24)+r11],xmm0
> > >
> > > +        movaps  XMMWORD[rsp],xmm0
> > >
> > > +        movaps  XMMWORD[16+rsp],xmm0
> > >
> > > +        movaps  XMMWORD[32+rsp],xmm0
> > >
> > > +        movaps  XMMWORD[48+rsp],xmm0
> > >
> > > +        movaps  XMMWORD[64+rsp],xmm0
> > >
> > > +        movaps  XMMWORD[80+rsp],xmm0
> > >
> > > +        movaps  XMMWORD[96+rsp],xmm0
> > >
> > > +        mov     rbp,QWORD[((-8))+r11]
> > >
> > > +
> > >
> > > +        lea     rsp,[r11]
> > >
> > > +
> > >
> > > +$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:
> > >
> > > +global  aesni_xts_decrypt
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +aesni_xts_decrypt:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_aesni_xts_decrypt:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +        mov     rcx,r9
> > >
> > > +        mov     r8,QWORD[40+rsp]
> > >
> > > +        mov     r9,QWORD[48+rsp]
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        lea     r11,[rsp]
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        sub     rsp,272
> > >
> > > +        and     rsp,-16
> > >
> > > +        movaps  XMMWORD[(-168)+r11],xmm6
> > >
> > > +        movaps  XMMWORD[(-152)+r11],xmm7
> > >
> > > +        movaps  XMMWORD[(-136)+r11],xmm8
> > >
> > > +        movaps  XMMWORD[(-120)+r11],xmm9
> > >
> > > +        movaps  XMMWORD[(-104)+r11],xmm10
> > >
> > > +        movaps  XMMWORD[(-88)+r11],xmm11
> > >
> > > +        movaps  XMMWORD[(-72)+r11],xmm12
> > >
> > > +        movaps  XMMWORD[(-56)+r11],xmm13
> > >
> > > +        movaps  XMMWORD[(-40)+r11],xmm14
> > >
> > > +        movaps  XMMWORD[(-24)+r11],xmm15
> > >
> > > +$L$xts_dec_body:
> > >
> > > +        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:
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        dec     eax
> > >
> > > +        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
> > >
> > > +        setnz   al
> > >
> > > +        shl     rax,4
> > >
> > > +        sub     rdx,rax
> > >
> > > +
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        mov     rbp,rcx
> > >
> > > +        mov     eax,r10d
> > >
> > > +        shl     r10d,4
> > >
> > > +        mov     r9,rdx
> > >
> > > +        and     rdx,-16
> > >
> > > +
> > >
> > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,XMMWORD[$L$xts_magic]
> > >
> > > +        movdqa  xmm15,xmm2
> > >
> > > +        pshufd  xmm9,xmm2,0x5f
> > >
> > > +        pxor    xmm1,xmm0
> > >
> > > +        movdqa  xmm14,xmm9
> > >
> > > +        paddd   xmm9,xmm9
> > >
> > > +        movdqa  xmm10,xmm15
> > >
> > > +        psrad   xmm14,31
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +        pand    xmm14,xmm8
> > >
> > > +        pxor    xmm10,xmm0
> > >
> > > +        pxor    xmm15,xmm14
> > >
> > > +        movdqa  xmm14,xmm9
> > >
> > > +        paddd   xmm9,xmm9
> > >
> > > +        movdqa  xmm11,xmm15
> > >
> > > +        psrad   xmm14,31
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +        pand    xmm14,xmm8
> > >
> > > +        pxor    xmm11,xmm0
> > >
> > > +        pxor    xmm15,xmm14
> > >
> > > +        movdqa  xmm14,xmm9
> > >
> > > +        paddd   xmm9,xmm9
> > >
> > > +        movdqa  xmm12,xmm15
> > >
> > > +        psrad   xmm14,31
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +        pand    xmm14,xmm8
> > >
> > > +        pxor    xmm12,xmm0
> > >
> > > +        pxor    xmm15,xmm14
> > >
> > > +        movdqa  xmm14,xmm9
> > >
> > > +        paddd   xmm9,xmm9
> > >
> > > +        movdqa  xmm13,xmm15
> > >
> > > +        psrad   xmm14,31
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +        pand    xmm14,xmm8
> > >
> > > +        pxor    xmm13,xmm0
> > >
> > > +        pxor    xmm15,xmm14
> > >
> > > +        movdqa  xmm14,xmm15
> > >
> > > +        psrad   xmm9,31
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +        pand    xmm9,xmm8
> > >
> > > +        pxor    xmm14,xmm0
> > >
> > > +        pxor    xmm15,xmm9
> > >
> > > +        movaps  XMMWORD[96+rsp],xmm1
> > >
> > > +
> > >
> > > +        sub     rdx,16*6
> > >
> > > +        jc      NEAR $L$xts_dec_short
> > >
> > > +
> > >
> > > +        mov     eax,16+96
> > >
> > > +        lea     rcx,[32+r10*1+rbp]
> > >
> > > +        sub     rax,r10
> > >
> > > +        movups  xmm1,XMMWORD[16+rbp]
> > >
> > > +        mov     r10,rax
> > >
> > > +        lea     r8,[$L$xts_magic]
> > >
> > > +        jmp     NEAR $L$xts_dec_grandloop
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$xts_dec_grandloop:
> > >
> > > +        movdqu  xmm2,XMMWORD[rdi]
> > >
> > > +        movdqa  xmm8,xmm0
> > >
> > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > >
> > > +        pxor    xmm2,xmm10
> > >
> > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > >
> > > +        pxor    xmm3,xmm11
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +DB      102,15,56,222,217
> > >
> > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > >
> > > +        pxor    xmm5,xmm13
> > >
> > > +DB      102,15,56,222,225
> > >
> > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > >
> > > +        pxor    xmm8,xmm15
> > >
> > > +        movdqa  xmm9,XMMWORD[96+rsp]
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +DB      102,15,56,222,233
> > >
> > > +        movups  xmm0,XMMWORD[32+rbp]
> > >
> > > +        lea     rdi,[96+rdi]
> > >
> > > +        pxor    xmm7,xmm8
> > >
> > > +
> > >
> > > +        pxor    xmm10,xmm9
> > >
> > > +DB      102,15,56,222,241
> > >
> > > +        pxor    xmm11,xmm9
> > >
> > > +        movdqa  XMMWORD[rsp],xmm10
> > >
> > > +DB      102,15,56,222,249
> > >
> > > +        movups  xmm1,XMMWORD[48+rbp]
> > >
> > > +        pxor    xmm12,xmm9
> > >
> > > +
> > >
> > > +DB      102,15,56,222,208
> > >
> > > +        pxor    xmm13,xmm9
> > >
> > > +        movdqa  XMMWORD[16+rsp],xmm11
> > >
> > > +DB      102,15,56,222,216
> > >
> > > +        pxor    xmm14,xmm9
> > >
> > > +        movdqa  XMMWORD[32+rsp],xmm12
> > >
> > > +DB      102,15,56,222,224
> > >
> > > +DB      102,15,56,222,232
> > >
> > > +        pxor    xmm8,xmm9
> > >
> > > +        movdqa  XMMWORD[64+rsp],xmm14
> > >
> > > +DB      102,15,56,222,240
> > >
> > > +DB      102,15,56,222,248
> > >
> > > +        movups  xmm0,XMMWORD[64+rbp]
> > >
> > > +        movdqa  XMMWORD[80+rsp],xmm8
> > >
> > > +        pshufd  xmm9,xmm15,0x5f
> > >
> > > +        jmp     NEAR $L$xts_dec_loop6
> > >
> > > +ALIGN   32
> > >
> > > +$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[((-64))+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
> > >
> > > +DB      102,15,56,222,240
> > >
> > > +DB      102,15,56,222,248
> > >
> > > +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
> > >
> > > +        jnz     NEAR $L$xts_dec_loop6
> > >
> > > +
> > >
> > > +        movdqa  xmm8,XMMWORD[r8]
> > >
> > > +        movdqa  xmm14,xmm9
> > >
> > > +        paddd   xmm9,xmm9
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +        psrad   xmm14,31
> > >
> > > +DB      102,15,56,222,217
> > >
> > > +        pand    xmm14,xmm8
> > >
> > > +        movups  xmm10,XMMWORD[rbp]
> > >
> > > +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[((-64))+rcx]
> > >
> > > +
> > >
> > > +        movdqa  xmm14,xmm9
> > >
> > > +DB      102,15,56,222,208
> > >
> > > +        paddd   xmm9,xmm9
> > >
> > > +        pxor    xmm10,xmm15
> > >
> > > +DB      102,15,56,222,216
> > >
> > > +        psrad   xmm14,31
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +DB      102,15,56,222,224
> > >
> > > +DB      102,15,56,222,232
> > >
> > > +        pand    xmm14,xmm8
> > >
> > > +        movaps  xmm12,xmm11
> > >
> > > +DB      102,15,56,222,240
> > >
> > > +        pxor    xmm15,xmm14
> > >
> > > +        movdqa  xmm14,xmm9
> > >
> > > +DB      102,15,56,222,248
> > >
> > > +        movups  xmm0,XMMWORD[((-48))+rcx]
> > >
> > > +
> > >
> > > +        paddd   xmm9,xmm9
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +        pxor    xmm11,xmm15
> > >
> > > +        psrad   xmm14,31
> > >
> > > +DB      102,15,56,222,217
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +        pand    xmm14,xmm8
> > >
> > > +DB      102,15,56,222,225
> > >
> > > +DB      102,15,56,222,233
> > >
> > > +        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[((-32))+rcx]
> > >
> > > +
> > >
> > > +        paddd   xmm9,xmm9
> > >
> > > +DB      102,15,56,222,208
> > >
> > > +        pxor    xmm12,xmm15
> > >
> > > +        psrad   xmm14,31
> > >
> > > +DB      102,15,56,222,216
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +        pand    xmm14,xmm8
> > >
> > > +DB      102,15,56,222,224
> > >
> > > +DB      102,15,56,222,232
> > >
> > > +DB      102,15,56,222,240
> > >
> > > +        pxor    xmm15,xmm14
> > >
> > > +        movaps  xmm14,xmm13
> > >
> > > +DB      102,15,56,222,248
> > >
> > > +
> > >
> > > +        movdqa  xmm0,xmm9
> > >
> > > +        paddd   xmm9,xmm9
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +        pxor    xmm13,xmm15
> > >
> > > +        psrad   xmm0,31
> > >
> > > +DB      102,15,56,222,217
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +        pand    xmm0,xmm8
> > >
> > > +DB      102,15,56,222,225
> > >
> > > +DB      102,15,56,222,233
> > >
> > > +        pxor    xmm15,xmm0
> > >
> > > +        movups  xmm0,XMMWORD[rbp]
> > >
> > > +DB      102,15,56,222,241
> > >
> > > +DB      102,15,56,222,249
> > >
> > > +        movups  xmm1,XMMWORD[16+rbp]
> > >
> > > +
> > >
> > > +        pxor    xmm14,xmm15
> > >
> > > +DB      102,15,56,223,84,36,0
> > >
> > > +        psrad   xmm9,31
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +DB      102,15,56,223,92,36,16
> > >
> > > +DB      102,15,56,223,100,36,32
> > >
> > > +        pand    xmm9,xmm8
> > >
> > > +        mov     rax,r10
> > >
> > > +DB      102,15,56,223,108,36,48
> > >
> > > +DB      102,15,56,223,116,36,64
> > >
> > > +DB      102,15,56,223,124,36,80
> > >
> > > +        pxor    xmm15,xmm9
> > >
> > > +
> > >
> > > +        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     NEAR $L$xts_dec_grandloop
> > >
> > > +
> > >
> > > +        mov     eax,16+96
> > >
> > > +        sub     eax,r10d
> > >
> > > +        mov     rcx,rbp
> > >
> > > +        shr     eax,4
> > >
> > > +
> > >
> > > +$L$xts_dec_short:
> > >
> > > +
> > >
> > > +        mov     r10d,eax
> > >
> > > +        pxor    xmm10,xmm0
> > >
> > > +        pxor    xmm11,xmm0
> > >
> > > +        add     rdx,16*6
> > >
> > > +        jz      NEAR $L$xts_dec_done
> > >
> > > +
> > >
> > > +        pxor    xmm12,xmm0
> > >
> > > +        cmp     rdx,0x20
> > >
> > > +        jb      NEAR $L$xts_dec_one
> > >
> > > +        pxor    xmm13,xmm0
> > >
> > > +        je      NEAR $L$xts_dec_two
> > >
> > > +
> > >
> > > +        pxor    xmm14,xmm0
> > >
> > > +        cmp     rdx,0x40
> > >
> > > +        jb      NEAR $L$xts_dec_three
> > >
> > > +        je      NEAR $L$xts_dec_four
> > >
> > > +
> > >
> > > +        movdqu  xmm2,XMMWORD[rdi]
> > >
> > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > >
> > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > >
> > > +        pxor    xmm2,xmm10
> > >
> > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > >
> > > +        pxor    xmm3,xmm11
> > >
> > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > >
> > > +        lea     rdi,[80+rdi]
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        pxor    xmm5,xmm13
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +
> > >
> > > +        call    _aesni_decrypt6
> > >
> > > +
> > >
> > > +        xorps   xmm2,xmm10
> > >
> > > +        xorps   xmm3,xmm11
> > >
> > > +        xorps   xmm4,xmm12
> > >
> > > +        movdqu  XMMWORD[rsi],xmm2
> > >
> > > +        xorps   xmm5,xmm13
> > >
> > > +        movdqu  XMMWORD[16+rsi],xmm3
> > >
> > > +        xorps   xmm6,xmm14
> > >
> > > +        movdqu  XMMWORD[32+rsi],xmm4
> > >
> > > +        pxor    xmm14,xmm14
> > >
> > > +        movdqu  XMMWORD[48+rsi],xmm5
> > >
> > > +        pcmpgtd xmm14,xmm15
> > >
> > > +        movdqu  XMMWORD[64+rsi],xmm6
> > >
> > > +        lea     rsi,[80+rsi]
> > >
> > > +        pshufd  xmm11,xmm14,0x13
> > >
> > > +        and     r9,15
> > >
> > > +        jz      NEAR $L$xts_dec_ret
> > >
> > > +
> > >
> > > +        movdqa  xmm10,xmm15
> > >
> > > +        paddq   xmm15,xmm15
> > >
> > > +        pand    xmm11,xmm8
> > >
> > > +        pxor    xmm11,xmm15
> > >
> > > +        jmp     NEAR $L$xts_dec_done2
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$xts_dec_one:
> > >
> > > +        movups  xmm2,XMMWORD[rdi]
> > >
> > > +        lea     rdi,[16+rdi]
> > >
> > > +        xorps   xmm2,xmm10
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        lea     rcx,[32+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +$L$oop_dec1_12:
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +        dec     eax
> > >
> > > +        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[rsi],xmm2
> > >
> > > +        movdqa  xmm11,xmm12
> > >
> > > +        lea     rsi,[16+rsi]
> > >
> > > +        jmp     NEAR $L$xts_dec_done
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$xts_dec_two:
> > >
> > > +        movups  xmm2,XMMWORD[rdi]
> > >
> > > +        movups  xmm3,XMMWORD[16+rdi]
> > >
> > > +        lea     rdi,[32+rdi]
> > >
> > > +        xorps   xmm2,xmm10
> > >
> > > +        xorps   xmm3,xmm11
> > >
> > > +
> > >
> > > +        call    _aesni_decrypt2
> > >
> > > +
> > >
> > > +        xorps   xmm2,xmm10
> > >
> > > +        movdqa  xmm10,xmm12
> > >
> > > +        xorps   xmm3,xmm11
> > >
> > > +        movdqa  xmm11,xmm13
> > >
> > > +        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[rdi]
> > >
> > > +        movups  xmm3,XMMWORD[16+rdi]
> > >
> > > +        movups  xmm4,XMMWORD[32+rdi]
> > >
> > > +        lea     rdi,[48+rdi]
> > >
> > > +        xorps   xmm2,xmm10
> > >
> > > +        xorps   xmm3,xmm11
> > >
> > > +        xorps   xmm4,xmm12
> > >
> > > +
> > >
> > > +        call    _aesni_decrypt3
> > >
> > > +
> > >
> > > +        xorps   xmm2,xmm10
> > >
> > > +        movdqa  xmm10,xmm13
> > >
> > > +        xorps   xmm3,xmm11
> > >
> > > +        movdqa  xmm11,xmm14
> > >
> > > +        xorps   xmm4,xmm12
> > >
> > > +        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[rdi]
> > >
> > > +        movups  xmm3,XMMWORD[16+rdi]
> > >
> > > +        movups  xmm4,XMMWORD[32+rdi]
> > >
> > > +        xorps   xmm2,xmm10
> > >
> > > +        movups  xmm5,XMMWORD[48+rdi]
> > >
> > > +        lea     rdi,[64+rdi]
> > >
> > > +        xorps   xmm3,xmm11
> > >
> > > +        xorps   xmm4,xmm12
> > >
> > > +        xorps   xmm5,xmm13
> > >
> > > +
> > >
> > > +        call    _aesni_decrypt4
> > >
> > > +
> > >
> > > +        pxor    xmm2,xmm10
> > >
> > > +        movdqa  xmm10,xmm14
> > >
> > > +        pxor    xmm3,xmm11
> > >
> > > +        movdqa  xmm11,xmm15
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        movdqu  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm5,xmm13
> > >
> > > +        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:
> > >
> > > +        and     r9,15
> > >
> > > +        jz      NEAR $L$xts_dec_ret
> > >
> > > +$L$xts_dec_done2:
> > >
> > > +        mov     rdx,r9
> > >
> > > +        mov     rcx,rbp
> > >
> > > +        mov     eax,r10d
> > >
> > > +
> > >
> > > +        movups  xmm2,XMMWORD[rdi]
> > >
> > > +        xorps   xmm2,xmm11
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        lea     rcx,[32+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +$L$oop_dec1_13:
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +        dec     eax
> > >
> > > +        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[rsi],xmm2
> > >
> > > +
> > >
> > > +$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     NEAR $L$xts_dec_steal
> > >
> > > +
> > >
> > > +        sub     rsi,r9
> > >
> > > +        mov     rcx,rbp
> > >
> > > +        mov     eax,r10d
> > >
> > > +
> > >
> > > +        movups  xmm2,XMMWORD[rsi]
> > >
> > > +        xorps   xmm2,xmm10
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        lea     rcx,[32+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +$L$oop_dec1_14:
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +        dec     eax
> > >
> > > +        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[rsi],xmm2
> > >
> > > +
> > >
> > > +$L$xts_dec_ret:
> > >
> > > +        xorps   xmm0,xmm0
> > >
> > > +        pxor    xmm1,xmm1
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +        movaps  xmm6,XMMWORD[((-168))+r11]
> > >
> > > +        movaps  XMMWORD[(-168)+r11],xmm0
> > >
> > > +        movaps  xmm7,XMMWORD[((-152))+r11]
> > >
> > > +        movaps  XMMWORD[(-152)+r11],xmm0
> > >
> > > +        movaps  xmm8,XMMWORD[((-136))+r11]
> > >
> > > +        movaps  XMMWORD[(-136)+r11],xmm0
> > >
> > > +        movaps  xmm9,XMMWORD[((-120))+r11]
> > >
> > > +        movaps  XMMWORD[(-120)+r11],xmm0
> > >
> > > +        movaps  xmm10,XMMWORD[((-104))+r11]
> > >
> > > +        movaps  XMMWORD[(-104)+r11],xmm0
> > >
> > > +        movaps  xmm11,XMMWORD[((-88))+r11]
> > >
> > > +        movaps  XMMWORD[(-88)+r11],xmm0
> > >
> > > +        movaps  xmm12,XMMWORD[((-72))+r11]
> > >
> > > +        movaps  XMMWORD[(-72)+r11],xmm0
> > >
> > > +        movaps  xmm13,XMMWORD[((-56))+r11]
> > >
> > > +        movaps  XMMWORD[(-56)+r11],xmm0
> > >
> > > +        movaps  xmm14,XMMWORD[((-40))+r11]
> > >
> > > +        movaps  XMMWORD[(-40)+r11],xmm0
> > >
> > > +        movaps  xmm15,XMMWORD[((-24))+r11]
> > >
> > > +        movaps  XMMWORD[(-24)+r11],xmm0
> > >
> > > +        movaps  XMMWORD[rsp],xmm0
> > >
> > > +        movaps  XMMWORD[16+rsp],xmm0
> > >
> > > +        movaps  XMMWORD[32+rsp],xmm0
> > >
> > > +        movaps  XMMWORD[48+rsp],xmm0
> > >
> > > +        movaps  XMMWORD[64+rsp],xmm0
> > >
> > > +        movaps  XMMWORD[80+rsp],xmm0
> > >
> > > +        movaps  XMMWORD[96+rsp],xmm0
> > >
> > > +        mov     rbp,QWORD[((-8))+r11]
> > >
> > > +
> > >
> > > +        lea     rsp,[r11]
> > >
> > > +
> > >
> > > +$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:
> > >
> > > +global  aesni_ocb_encrypt
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +aesni_ocb_encrypt:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_aesni_ocb_encrypt:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +        mov     rcx,r9
> > >
> > > +        mov     r8,QWORD[40+rsp]
> > >
> > > +        mov     r9,QWORD[48+rsp]
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        lea     rax,[rsp]
> > >
> > > +        push    rbx
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        push    r12
> > >
> > > +
> > >
> > > +        push    r13
> > >
> > > +
> > >
> > > +        push    r14
> > >
> > > +
> > >
> > > +        lea     rsp,[((-160))+rsp]
> > >
> > > +        movaps  XMMWORD[rsp],xmm6
> > >
> > > +        movaps  XMMWORD[16+rsp],xmm7
> > >
> > > +        movaps  XMMWORD[32+rsp],xmm8
> > >
> > > +        movaps  XMMWORD[48+rsp],xmm9
> > >
> > > +        movaps  XMMWORD[64+rsp],xmm10
> > >
> > > +        movaps  XMMWORD[80+rsp],xmm11
> > >
> > > +        movaps  XMMWORD[96+rsp],xmm12
> > >
> > > +        movaps  XMMWORD[112+rsp],xmm13
> > >
> > > +        movaps  XMMWORD[128+rsp],xmm14
> > >
> > > +        movaps  XMMWORD[144+rsp],xmm15
> > >
> > > +$L$ocb_enc_body:
> > >
> > > +        mov     rbx,QWORD[56+rax]
> > >
> > > +        mov     rbp,QWORD[((56+8))+rax]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[240+rcx]
> > >
> > > +        mov     r11,rcx
> > >
> > > +        shl     r10d,4
> > >
> > > +        movups  xmm9,XMMWORD[rcx]
> > >
> > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > >
> > > +
> > >
> > > +        movdqu  xmm15,XMMWORD[r9]
> > >
> > > +        pxor    xmm9,xmm1
> > >
> > > +        pxor    xmm15,xmm1
> > >
> > > +
> > >
> > > +        mov     eax,16+32
> > >
> > > +        lea     rcx,[32+r10*1+r11]
> > >
> > > +        movups  xmm1,XMMWORD[16+r11]
> > >
> > > +        sub     rax,r10
> > >
> > > +        mov     r10,rax
> > >
> > > +
> > >
> > > +        movdqu  xmm10,XMMWORD[rbx]
> > >
> > > +        movdqu  xmm8,XMMWORD[rbp]
> > >
> > > +
> > >
> > > +        test    r8,1
> > >
> > > +        jnz     NEAR $L$ocb_enc_odd
> > >
> > > +
> > >
> > > +        bsf     r12,r8
> > >
> > > +        add     r8,1
> > >
> > > +        shl     r12,4
> > >
> > > +        movdqu  xmm7,XMMWORD[r12*1+rbx]
> > >
> > > +        movdqu  xmm2,XMMWORD[rdi]
> > >
> > > +        lea     rdi,[16+rdi]
> > >
> > > +
> > >
> > > +        call    __ocb_encrypt1
> > >
> > > +
> > >
> > > +        movdqa  xmm15,xmm7
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        lea     rsi,[16+rsi]
> > >
> > > +        sub     rdx,1
> > >
> > > +        jz      NEAR $L$ocb_enc_done
> > >
> > > +
> > >
> > > +$L$ocb_enc_odd:
> > >
> > > +        lea     r12,[1+r8]
> > >
> > > +        lea     r13,[3+r8]
> > >
> > > +        lea     r14,[5+r8]
> > >
> > > +        lea     r8,[6+r8]
> > >
> > > +        bsf     r12,r12
> > >
> > > +        bsf     r13,r13
> > >
> > > +        bsf     r14,r14
> > >
> > > +        shl     r12,4
> > >
> > > +        shl     r13,4
> > >
> > > +        shl     r14,4
> > >
> > > +
> > >
> > > +        sub     rdx,6
> > >
> > > +        jc      NEAR $L$ocb_enc_short
> > >
> > > +        jmp     NEAR $L$ocb_enc_grandloop
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$ocb_enc_grandloop:
> > >
> > > +        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]
> > >
> > > +        lea     rdi,[96+rdi]
> > >
> > > +
> > >
> > > +        call    __ocb_encrypt6
> > >
> > > +
> > >
> > > +        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
> > >
> > > +        lea     rsi,[96+rsi]
> > >
> > > +        sub     rdx,6
> > >
> > > +        jnc     NEAR $L$ocb_enc_grandloop
> > >
> > > +
> > >
> > > +$L$ocb_enc_short:
> > >
> > > +        add     rdx,6
> > >
> > > +        jz      NEAR $L$ocb_enc_done
> > >
> > > +
> > >
> > > +        movdqu  xmm2,XMMWORD[rdi]
> > >
> > > +        cmp     rdx,2
> > >
> > > +        jb      NEAR $L$ocb_enc_one
> > >
> > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > >
> > > +        je      NEAR $L$ocb_enc_two
> > >
> > > +
> > >
> > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > >
> > > +        cmp     rdx,4
> > >
> > > +        jb      NEAR $L$ocb_enc_three
> > >
> > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > >
> > > +        je      NEAR $L$ocb_enc_four
> > >
> > > +
> > >
> > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > >
> > > +        pxor    xmm7,xmm7
> > >
> > > +
> > >
> > > +        call    __ocb_encrypt6
> > >
> > > +
> > >
> > > +        movdqa  xmm15,xmm14
> > >
> > > +        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$ocb_enc_done
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$ocb_enc_one:
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +
> > >
> > > +        call    __ocb_encrypt1
> > >
> > > +
> > >
> > > +        movdqa  xmm15,xmm7
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        jmp     NEAR $L$ocb_enc_done
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$ocb_enc_two:
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +
> > >
> > > +        call    __ocb_encrypt4
> > >
> > > +
> > >
> > > +        movdqa  xmm15,xmm11
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +
> > >
> > > +        jmp     NEAR $L$ocb_enc_done
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$ocb_enc_three:
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +
> > >
> > > +        call    __ocb_encrypt4
> > >
> > > +
> > >
> > > +        movdqa  xmm15,xmm12
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        movups  XMMWORD[32+rsi],xmm4
> > >
> > > +
> > >
> > > +        jmp     NEAR $L$ocb_enc_done
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$ocb_enc_four:
> > >
> > > +        call    __ocb_encrypt4
> > >
> > > +
> > >
> > > +        movdqa  xmm15,xmm13
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        movups  XMMWORD[32+rsi],xmm4
> > >
> > > +        movups  XMMWORD[48+rsi],xmm5
> > >
> > > +
> > >
> > > +$L$ocb_enc_done:
> > >
> > > +        pxor    xmm15,xmm0
> > >
> > > +        movdqu  XMMWORD[rbp],xmm8
> > >
> > > +        movdqu  XMMWORD[r9],xmm15
> > >
> > > +
> > >
> > > +        xorps   xmm0,xmm0
> > >
> > > +        pxor    xmm1,xmm1
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +        movaps  xmm6,XMMWORD[rsp]
> > >
> > > +        movaps  XMMWORD[rsp],xmm0
> > >
> > > +        movaps  xmm7,XMMWORD[16+rsp]
> > >
> > > +        movaps  XMMWORD[16+rsp],xmm0
> > >
> > > +        movaps  xmm8,XMMWORD[32+rsp]
> > >
> > > +        movaps  XMMWORD[32+rsp],xmm0
> > >
> > > +        movaps  xmm9,XMMWORD[48+rsp]
> > >
> > > +        movaps  XMMWORD[48+rsp],xmm0
> > >
> > > +        movaps  xmm10,XMMWORD[64+rsp]
> > >
> > > +        movaps  XMMWORD[64+rsp],xmm0
> > >
> > > +        movaps  xmm11,XMMWORD[80+rsp]
> > >
> > > +        movaps  XMMWORD[80+rsp],xmm0
> > >
> > > +        movaps  xmm12,XMMWORD[96+rsp]
> > >
> > > +        movaps  XMMWORD[96+rsp],xmm0
> > >
> > > +        movaps  xmm13,XMMWORD[112+rsp]
> > >
> > > +        movaps  XMMWORD[112+rsp],xmm0
> > >
> > > +        movaps  xmm14,XMMWORD[128+rsp]
> > >
> > > +        movaps  XMMWORD[128+rsp],xmm0
> > >
> > > +        movaps  xmm15,XMMWORD[144+rsp]
> > >
> > > +        movaps  XMMWORD[144+rsp],xmm0
> > >
> > > +        lea     rax,[((160+40))+rsp]
> > >
> > > +$L$ocb_enc_pop:
> > >
> > > +        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$ocb_enc_epilogue:
> > >
> > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > >
> > > +        mov     rsi,QWORD[16+rsp]
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +$L$SEH_end_aesni_ocb_encrypt:
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +__ocb_encrypt6:
> > >
> > > +
> > >
> > > +        pxor    xmm15,xmm9
> > >
> > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > >
> > > +        movdqa  xmm12,xmm10
> > >
> > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > >
> > > +        movdqa  xmm14,xmm10
> > >
> > > +        pxor    xmm10,xmm15
> > >
> > > +        movdqu  xmm15,XMMWORD[r14*1+rbx]
> > >
> > > +        pxor    xmm11,xmm10
> > >
> > > +        pxor    xmm8,xmm2
> > >
> > > +        pxor    xmm2,xmm10
> > >
> > > +        pxor    xmm12,xmm11
> > >
> > > +        pxor    xmm8,xmm3
> > >
> > > +        pxor    xmm3,xmm11
> > >
> > > +        pxor    xmm13,xmm12
> > >
> > > +        pxor    xmm8,xmm4
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        pxor    xmm14,xmm13
> > >
> > > +        pxor    xmm8,xmm5
> > >
> > > +        pxor    xmm5,xmm13
> > >
> > > +        pxor    xmm15,xmm14
> > >
> > > +        pxor    xmm8,xmm6
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +        pxor    xmm8,xmm7
> > >
> > > +        pxor    xmm7,xmm15
> > >
> > > +        movups  xmm0,XMMWORD[32+r11]
> > >
> > > +
> > >
> > > +        lea     r12,[1+r8]
> > >
> > > +        lea     r13,[3+r8]
> > >
> > > +        lea     r14,[5+r8]
> > >
> > > +        add     r8,6
> > >
> > > +        pxor    xmm10,xmm9
> > >
> > > +        bsf     r12,r12
> > >
> > > +        bsf     r13,r13
> > >
> > > +        bsf     r14,r14
> > >
> > > +
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +DB      102,15,56,220,217
> > >
> > > +DB      102,15,56,220,225
> > >
> > > +DB      102,15,56,220,233
> > >
> > > +        pxor    xmm11,xmm9
> > >
> > > +        pxor    xmm12,xmm9
> > >
> > > +DB      102,15,56,220,241
> > >
> > > +        pxor    xmm13,xmm9
> > >
> > > +        pxor    xmm14,xmm9
> > >
> > > +DB      102,15,56,220,249
> > >
> > > +        movups  xmm1,XMMWORD[48+r11]
> > >
> > > +        pxor    xmm15,xmm9
> > >
> > > +
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +DB      102,15,56,220,216
> > >
> > > +DB      102,15,56,220,224
> > >
> > > +DB      102,15,56,220,232
> > >
> > > +DB      102,15,56,220,240
> > >
> > > +DB      102,15,56,220,248
> > >
> > > +        movups  xmm0,XMMWORD[64+r11]
> > >
> > > +        shl     r12,4
> > >
> > > +        shl     r13,4
> > >
> > > +        jmp     NEAR $L$ocb_enc_loop6
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$ocb_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[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
> > >
> > > +DB      102,15,56,220,240
> > >
> > > +DB      102,15,56,220,248
> > >
> > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > >
> > > +        jnz     NEAR $L$ocb_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[16+r11]
> > >
> > > +        shl     r14,4
> > >
> > > +
> > >
> > > +DB      102,65,15,56,221,210
> > >
> > > +        movdqu  xmm10,XMMWORD[rbx]
> > >
> > > +        mov     rax,r10
> > >
> > > +DB      102,65,15,56,221,219
> > >
> > > +DB      102,65,15,56,221,228
> > >
> > > +DB      102,65,15,56,221,237
> > >
> > > +DB      102,65,15,56,221,246
> > >
> > > +DB      102,65,15,56,221,255
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +__ocb_encrypt4:
> > >
> > > +
> > >
> > > +        pxor    xmm15,xmm9
> > >
> > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > >
> > > +        movdqa  xmm12,xmm10
> > >
> > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > >
> > > +        pxor    xmm10,xmm15
> > >
> > > +        pxor    xmm11,xmm10
> > >
> > > +        pxor    xmm8,xmm2
> > >
> > > +        pxor    xmm2,xmm10
> > >
> > > +        pxor    xmm12,xmm11
> > >
> > > +        pxor    xmm8,xmm3
> > >
> > > +        pxor    xmm3,xmm11
> > >
> > > +        pxor    xmm13,xmm12
> > >
> > > +        pxor    xmm8,xmm4
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        pxor    xmm8,xmm5
> > >
> > > +        pxor    xmm5,xmm13
> > >
> > > +        movups  xmm0,XMMWORD[32+r11]
> > >
> > > +
> > >
> > > +        pxor    xmm10,xmm9
> > >
> > > +        pxor    xmm11,xmm9
> > >
> > > +        pxor    xmm12,xmm9
> > >
> > > +        pxor    xmm13,xmm9
> > >
> > > +
> > >
> > > +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[48+r11]
> > >
> > > +
> > >
> > > +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[64+r11]
> > >
> > > +        jmp     NEAR $L$ocb_enc_loop4
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$ocb_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[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[((-16))+rax*1+rcx]
> > >
> > > +        jnz     NEAR $L$ocb_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[16+r11]
> > >
> > > +        mov     rax,r10
> > >
> > > +
> > >
> > > +DB      102,65,15,56,221,210
> > >
> > > +DB      102,65,15,56,221,219
> > >
> > > +DB      102,65,15,56,221,228
> > >
> > > +DB      102,65,15,56,221,237
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +__ocb_encrypt1:
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm15
> > >
> > > +        pxor    xmm7,xmm9
> > >
> > > +        pxor    xmm8,xmm2
> > >
> > > +        pxor    xmm2,xmm7
> > >
> > > +        movups  xmm0,XMMWORD[32+r11]
> > >
> > > +
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[48+r11]
> > >
> > > +        pxor    xmm7,xmm9
> > >
> > > +
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        movups  xmm0,XMMWORD[64+r11]
> > >
> > > +        jmp     NEAR $L$ocb_enc_loop1
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$ocb_enc_loop1:
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > >
> > > +        add     rax,32
> > >
> > > +
> > >
> > > +DB      102,15,56,220,208
> > >
> > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > >
> > > +        jnz     NEAR $L$ocb_enc_loop1
> > >
> > > +
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        movups  xmm1,XMMWORD[16+r11]
> > >
> > > +        mov     rax,r10
> > >
> > > +
> > >
> > > +DB      102,15,56,221,215
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +global  aesni_ocb_decrypt
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +aesni_ocb_decrypt:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_aesni_ocb_decrypt:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +        mov     rcx,r9
> > >
> > > +        mov     r8,QWORD[40+rsp]
> > >
> > > +        mov     r9,QWORD[48+rsp]
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        lea     rax,[rsp]
> > >
> > > +        push    rbx
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        push    r12
> > >
> > > +
> > >
> > > +        push    r13
> > >
> > > +
> > >
> > > +        push    r14
> > >
> > > +
> > >
> > > +        lea     rsp,[((-160))+rsp]
> > >
> > > +        movaps  XMMWORD[rsp],xmm6
> > >
> > > +        movaps  XMMWORD[16+rsp],xmm7
> > >
> > > +        movaps  XMMWORD[32+rsp],xmm8
> > >
> > > +        movaps  XMMWORD[48+rsp],xmm9
> > >
> > > +        movaps  XMMWORD[64+rsp],xmm10
> > >
> > > +        movaps  XMMWORD[80+rsp],xmm11
> > >
> > > +        movaps  XMMWORD[96+rsp],xmm12
> > >
> > > +        movaps  XMMWORD[112+rsp],xmm13
> > >
> > > +        movaps  XMMWORD[128+rsp],xmm14
> > >
> > > +        movaps  XMMWORD[144+rsp],xmm15
> > >
> > > +$L$ocb_dec_body:
> > >
> > > +        mov     rbx,QWORD[56+rax]
> > >
> > > +        mov     rbp,QWORD[((56+8))+rax]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[240+rcx]
> > >
> > > +        mov     r11,rcx
> > >
> > > +        shl     r10d,4
> > >
> > > +        movups  xmm9,XMMWORD[rcx]
> > >
> > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > >
> > > +
> > >
> > > +        movdqu  xmm15,XMMWORD[r9]
> > >
> > > +        pxor    xmm9,xmm1
> > >
> > > +        pxor    xmm15,xmm1
> > >
> > > +
> > >
> > > +        mov     eax,16+32
> > >
> > > +        lea     rcx,[32+r10*1+r11]
> > >
> > > +        movups  xmm1,XMMWORD[16+r11]
> > >
> > > +        sub     rax,r10
> > >
> > > +        mov     r10,rax
> > >
> > > +
> > >
> > > +        movdqu  xmm10,XMMWORD[rbx]
> > >
> > > +        movdqu  xmm8,XMMWORD[rbp]
> > >
> > > +
> > >
> > > +        test    r8,1
> > >
> > > +        jnz     NEAR $L$ocb_dec_odd
> > >
> > > +
> > >
> > > +        bsf     r12,r8
> > >
> > > +        add     r8,1
> > >
> > > +        shl     r12,4
> > >
> > > +        movdqu  xmm7,XMMWORD[r12*1+rbx]
> > >
> > > +        movdqu  xmm2,XMMWORD[rdi]
> > >
> > > +        lea     rdi,[16+rdi]
> > >
> > > +
> > >
> > > +        call    __ocb_decrypt1
> > >
> > > +
> > >
> > > +        movdqa  xmm15,xmm7
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        xorps   xmm8,xmm2
> > >
> > > +        lea     rsi,[16+rsi]
> > >
> > > +        sub     rdx,1
> > >
> > > +        jz      NEAR $L$ocb_dec_done
> > >
> > > +
> > >
> > > +$L$ocb_dec_odd:
> > >
> > > +        lea     r12,[1+r8]
> > >
> > > +        lea     r13,[3+r8]
> > >
> > > +        lea     r14,[5+r8]
> > >
> > > +        lea     r8,[6+r8]
> > >
> > > +        bsf     r12,r12
> > >
> > > +        bsf     r13,r13
> > >
> > > +        bsf     r14,r14
> > >
> > > +        shl     r12,4
> > >
> > > +        shl     r13,4
> > >
> > > +        shl     r14,4
> > >
> > > +
> > >
> > > +        sub     rdx,6
> > >
> > > +        jc      NEAR $L$ocb_dec_short
> > >
> > > +        jmp     NEAR $L$ocb_dec_grandloop
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$ocb_dec_grandloop:
> > >
> > > +        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]
> > >
> > > +        lea     rdi,[96+rdi]
> > >
> > > +
> > >
> > > +        call    __ocb_decrypt6
> > >
> > > +
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm8,xmm2
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        pxor    xmm8,xmm3
> > >
> > > +        movups  XMMWORD[32+rsi],xmm4
> > >
> > > +        pxor    xmm8,xmm4
> > >
> > > +        movups  XMMWORD[48+rsi],xmm5
> > >
> > > +        pxor    xmm8,xmm5
> > >
> > > +        movups  XMMWORD[64+rsi],xmm6
> > >
> > > +        pxor    xmm8,xmm6
> > >
> > > +        movups  XMMWORD[80+rsi],xmm7
> > >
> > > +        pxor    xmm8,xmm7
> > >
> > > +        lea     rsi,[96+rsi]
> > >
> > > +        sub     rdx,6
> > >
> > > +        jnc     NEAR $L$ocb_dec_grandloop
> > >
> > > +
> > >
> > > +$L$ocb_dec_short:
> > >
> > > +        add     rdx,6
> > >
> > > +        jz      NEAR $L$ocb_dec_done
> > >
> > > +
> > >
> > > +        movdqu  xmm2,XMMWORD[rdi]
> > >
> > > +        cmp     rdx,2
> > >
> > > +        jb      NEAR $L$ocb_dec_one
> > >
> > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > >
> > > +        je      NEAR $L$ocb_dec_two
> > >
> > > +
> > >
> > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > >
> > > +        cmp     rdx,4
> > >
> > > +        jb      NEAR $L$ocb_dec_three
> > >
> > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > >
> > > +        je      NEAR $L$ocb_dec_four
> > >
> > > +
> > >
> > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > >
> > > +        pxor    xmm7,xmm7
> > >
> > > +
> > >
> > > +        call    __ocb_decrypt6
> > >
> > > +
> > >
> > > +        movdqa  xmm15,xmm14
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm8,xmm2
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        pxor    xmm8,xmm3
> > >
> > > +        movups  XMMWORD[32+rsi],xmm4
> > >
> > > +        pxor    xmm8,xmm4
> > >
> > > +        movups  XMMWORD[48+rsi],xmm5
> > >
> > > +        pxor    xmm8,xmm5
> > >
> > > +        movups  XMMWORD[64+rsi],xmm6
> > >
> > > +        pxor    xmm8,xmm6
> > >
> > > +
> > >
> > > +        jmp     NEAR $L$ocb_dec_done
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$ocb_dec_one:
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +
> > >
> > > +        call    __ocb_decrypt1
> > >
> > > +
> > >
> > > +        movdqa  xmm15,xmm7
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        xorps   xmm8,xmm2
> > >
> > > +        jmp     NEAR $L$ocb_dec_done
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$ocb_dec_two:
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +
> > >
> > > +        call    __ocb_decrypt4
> > >
> > > +
> > >
> > > +        movdqa  xmm15,xmm11
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        xorps   xmm8,xmm2
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        xorps   xmm8,xmm3
> > >
> > > +
> > >
> > > +        jmp     NEAR $L$ocb_dec_done
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$ocb_dec_three:
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +
> > >
> > > +        call    __ocb_decrypt4
> > >
> > > +
> > >
> > > +        movdqa  xmm15,xmm12
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        xorps   xmm8,xmm2
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        xorps   xmm8,xmm3
> > >
> > > +        movups  XMMWORD[32+rsi],xmm4
> > >
> > > +        xorps   xmm8,xmm4
> > >
> > > +
> > >
> > > +        jmp     NEAR $L$ocb_dec_done
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$ocb_dec_four:
> > >
> > > +        call    __ocb_decrypt4
> > >
> > > +
> > >
> > > +        movdqa  xmm15,xmm13
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm8,xmm2
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        pxor    xmm8,xmm3
> > >
> > > +        movups  XMMWORD[32+rsi],xmm4
> > >
> > > +        pxor    xmm8,xmm4
> > >
> > > +        movups  XMMWORD[48+rsi],xmm5
> > >
> > > +        pxor    xmm8,xmm5
> > >
> > > +
> > >
> > > +$L$ocb_dec_done:
> > >
> > > +        pxor    xmm15,xmm0
> > >
> > > +        movdqu  XMMWORD[rbp],xmm8
> > >
> > > +        movdqu  XMMWORD[r9],xmm15
> > >
> > > +
> > >
> > > +        xorps   xmm0,xmm0
> > >
> > > +        pxor    xmm1,xmm1
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +        movaps  xmm6,XMMWORD[rsp]
> > >
> > > +        movaps  XMMWORD[rsp],xmm0
> > >
> > > +        movaps  xmm7,XMMWORD[16+rsp]
> > >
> > > +        movaps  XMMWORD[16+rsp],xmm0
> > >
> > > +        movaps  xmm8,XMMWORD[32+rsp]
> > >
> > > +        movaps  XMMWORD[32+rsp],xmm0
> > >
> > > +        movaps  xmm9,XMMWORD[48+rsp]
> > >
> > > +        movaps  XMMWORD[48+rsp],xmm0
> > >
> > > +        movaps  xmm10,XMMWORD[64+rsp]
> > >
> > > +        movaps  XMMWORD[64+rsp],xmm0
> > >
> > > +        movaps  xmm11,XMMWORD[80+rsp]
> > >
> > > +        movaps  XMMWORD[80+rsp],xmm0
> > >
> > > +        movaps  xmm12,XMMWORD[96+rsp]
> > >
> > > +        movaps  XMMWORD[96+rsp],xmm0
> > >
> > > +        movaps  xmm13,XMMWORD[112+rsp]
> > >
> > > +        movaps  XMMWORD[112+rsp],xmm0
> > >
> > > +        movaps  xmm14,XMMWORD[128+rsp]
> > >
> > > +        movaps  XMMWORD[128+rsp],xmm0
> > >
> > > +        movaps  xmm15,XMMWORD[144+rsp]
> > >
> > > +        movaps  XMMWORD[144+rsp],xmm0
> > >
> > > +        lea     rax,[((160+40))+rsp]
> > >
> > > +$L$ocb_dec_pop:
> > >
> > > +        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$ocb_dec_epilogue:
> > >
> > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > >
> > > +        mov     rsi,QWORD[16+rsp]
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +$L$SEH_end_aesni_ocb_decrypt:
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +__ocb_decrypt6:
> > >
> > > +
> > >
> > > +        pxor    xmm15,xmm9
> > >
> > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > >
> > > +        movdqa  xmm12,xmm10
> > >
> > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > >
> > > +        movdqa  xmm14,xmm10
> > >
> > > +        pxor    xmm10,xmm15
> > >
> > > +        movdqu  xmm15,XMMWORD[r14*1+rbx]
> > >
> > > +        pxor    xmm11,xmm10
> > >
> > > +        pxor    xmm2,xmm10
> > >
> > > +        pxor    xmm12,xmm11
> > >
> > > +        pxor    xmm3,xmm11
> > >
> > > +        pxor    xmm13,xmm12
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        pxor    xmm14,xmm13
> > >
> > > +        pxor    xmm5,xmm13
> > >
> > > +        pxor    xmm15,xmm14
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +        pxor    xmm7,xmm15
> > >
> > > +        movups  xmm0,XMMWORD[32+r11]
> > >
> > > +
> > >
> > > +        lea     r12,[1+r8]
> > >
> > > +        lea     r13,[3+r8]
> > >
> > > +        lea     r14,[5+r8]
> > >
> > > +        add     r8,6
> > >
> > > +        pxor    xmm10,xmm9
> > >
> > > +        bsf     r12,r12
> > >
> > > +        bsf     r13,r13
> > >
> > > +        bsf     r14,r14
> > >
> > > +
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +DB      102,15,56,222,217
> > >
> > > +DB      102,15,56,222,225
> > >
> > > +DB      102,15,56,222,233
> > >
> > > +        pxor    xmm11,xmm9
> > >
> > > +        pxor    xmm12,xmm9
> > >
> > > +DB      102,15,56,222,241
> > >
> > > +        pxor    xmm13,xmm9
> > >
> > > +        pxor    xmm14,xmm9
> > >
> > > +DB      102,15,56,222,249
> > >
> > > +        movups  xmm1,XMMWORD[48+r11]
> > >
> > > +        pxor    xmm15,xmm9
> > >
> > > +
> > >
> > > +DB      102,15,56,222,208
> > >
> > > +DB      102,15,56,222,216
> > >
> > > +DB      102,15,56,222,224
> > >
> > > +DB      102,15,56,222,232
> > >
> > > +DB      102,15,56,222,240
> > >
> > > +DB      102,15,56,222,248
> > >
> > > +        movups  xmm0,XMMWORD[64+r11]
> > >
> > > +        shl     r12,4
> > >
> > > +        shl     r13,4
> > >
> > > +        jmp     NEAR $L$ocb_dec_loop6
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$ocb_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[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
> > >
> > > +DB      102,15,56,222,240
> > >
> > > +DB      102,15,56,222,248
> > >
> > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > >
> > > +        jnz     NEAR $L$ocb_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[16+r11]
> > >
> > > +        shl     r14,4
> > >
> > > +
> > >
> > > +DB      102,65,15,56,223,210
> > >
> > > +        movdqu  xmm10,XMMWORD[rbx]
> > >
> > > +        mov     rax,r10
> > >
> > > +DB      102,65,15,56,223,219
> > >
> > > +DB      102,65,15,56,223,228
> > >
> > > +DB      102,65,15,56,223,237
> > >
> > > +DB      102,65,15,56,223,246
> > >
> > > +DB      102,65,15,56,223,255
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +__ocb_decrypt4:
> > >
> > > +
> > >
> > > +        pxor    xmm15,xmm9
> > >
> > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > >
> > > +        movdqa  xmm12,xmm10
> > >
> > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > >
> > > +        pxor    xmm10,xmm15
> > >
> > > +        pxor    xmm11,xmm10
> > >
> > > +        pxor    xmm2,xmm10
> > >
> > > +        pxor    xmm12,xmm11
> > >
> > > +        pxor    xmm3,xmm11
> > >
> > > +        pxor    xmm13,xmm12
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        pxor    xmm5,xmm13
> > >
> > > +        movups  xmm0,XMMWORD[32+r11]
> > >
> > > +
> > >
> > > +        pxor    xmm10,xmm9
> > >
> > > +        pxor    xmm11,xmm9
> > >
> > > +        pxor    xmm12,xmm9
> > >
> > > +        pxor    xmm13,xmm9
> > >
> > > +
> > >
> > > +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[48+r11]
> > >
> > > +
> > >
> > > +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[64+r11]
> > >
> > > +        jmp     NEAR $L$ocb_dec_loop4
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$ocb_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[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[((-16))+rax*1+rcx]
> > >
> > > +        jnz     NEAR $L$ocb_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[16+r11]
> > >
> > > +        mov     rax,r10
> > >
> > > +
> > >
> > > +DB      102,65,15,56,223,210
> > >
> > > +DB      102,65,15,56,223,219
> > >
> > > +DB      102,65,15,56,223,228
> > >
> > > +DB      102,65,15,56,223,237
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +__ocb_decrypt1:
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm15
> > >
> > > +        pxor    xmm7,xmm9
> > >
> > > +        pxor    xmm2,xmm7
> > >
> > > +        movups  xmm0,XMMWORD[32+r11]
> > >
> > > +
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +        movups  xmm1,XMMWORD[48+r11]
> > >
> > > +        pxor    xmm7,xmm9
> > >
> > > +
> > >
> > > +DB      102,15,56,222,208
> > >
> > > +        movups  xmm0,XMMWORD[64+r11]
> > >
> > > +        jmp     NEAR $L$ocb_dec_loop1
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$ocb_dec_loop1:
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > >
> > > +        add     rax,32
> > >
> > > +
> > >
> > > +DB      102,15,56,222,208
> > >
> > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > >
> > > +        jnz     NEAR $L$ocb_dec_loop1
> > >
> > > +
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +        movups  xmm1,XMMWORD[16+r11]
> > >
> > > +        mov     rax,r10
> > >
> > > +
> > >
> > > +DB      102,15,56,223,215
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +global  aesni_cbc_encrypt
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +aesni_cbc_encrypt:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_aesni_cbc_encrypt:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +        mov     rcx,r9
> > >
> > > +        mov     r8,QWORD[40+rsp]
> > >
> > > +        mov     r9,QWORD[48+rsp]
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        test    rdx,rdx
> > >
> > > +        jz      NEAR $L$cbc_ret
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[240+rcx]
> > >
> > > +        mov     r11,rcx
> > >
> > > +        test    r9d,r9d
> > >
> > > +        jz      NEAR $L$cbc_decrypt
> > >
> > > +
> > >
> > > +        movups  xmm2,XMMWORD[r8]
> > >
> > > +        mov     eax,r10d
> > >
> > > +        cmp     rdx,16
> > >
> > > +        jb      NEAR $L$cbc_enc_tail
> > >
> > > +        sub     rdx,16
> > >
> > > +        jmp     NEAR $L$cbc_enc_loop
> > >
> > > +ALIGN   16
> > >
> > > +$L$cbc_enc_loop:
> > >
> > > +        movups  xmm3,XMMWORD[rdi]
> > >
> > > +        lea     rdi,[16+rdi]
> > >
> > > +
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        xorps   xmm3,xmm0
> > >
> > > +        lea     rcx,[32+rcx]
> > >
> > > +        xorps   xmm2,xmm3
> > >
> > > +$L$oop_enc1_15:
> > >
> > > +DB      102,15,56,220,209
> > >
> > > +        dec     eax
> > >
> > > +        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[rsi],xmm2
> > >
> > > +        lea     rsi,[16+rsi]
> > >
> > > +        sub     rdx,16
> > >
> > > +        jnc     NEAR $L$cbc_enc_loop
> > >
> > > +        add     rdx,16
> > >
> > > +        jnz     NEAR $L$cbc_enc_tail
> > >
> > > +        pxor    xmm0,xmm0
> > >
> > > +        pxor    xmm1,xmm1
> > >
> > > +        movups  XMMWORD[r8],xmm2
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        jmp     NEAR $L$cbc_ret
> > >
> > > +
> > >
> > > +$L$cbc_enc_tail:
> > >
> > > +        mov     rcx,rdx
> > >
> > > +        xchg    rsi,rdi
> > >
> > > +        DD      0x9066A4F3
> > >
> > > +        mov     ecx,16
> > >
> > > +        sub     rcx,rdx
> > >
> > > +        xor     eax,eax
> > >
> > > +        DD      0x9066AAF3
> > >
> > > +        lea     rdi,[((-16))+rdi]
> > >
> > > +        mov     eax,r10d
> > >
> > > +        mov     rsi,rdi
> > >
> > > +        mov     rcx,r11
> > >
> > > +        xor     rdx,rdx
> > >
> > > +        jmp     NEAR $L$cbc_enc_loop
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$cbc_decrypt:
> > >
> > > +        cmp     rdx,16
> > >
> > > +        jne     NEAR $L$cbc_decrypt_bulk
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqu  xmm2,XMMWORD[rdi]
> > >
> > > +        movdqu  xmm3,XMMWORD[r8]
> > >
> > > +        movdqa  xmm4,xmm2
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        lea     rcx,[32+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +$L$oop_dec1_16:
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +        dec     r10d
> > >
> > > +        movups  xmm1,XMMWORD[rcx]
> > >
> > > +        lea     rcx,[16+rcx]
> > >
> > > +        jnz     NEAR $L$oop_dec1_16
> > >
> > > +DB      102,15,56,223,209
> > >
> > > +        pxor    xmm0,xmm0
> > >
> > > +        pxor    xmm1,xmm1
> > >
> > > +        movdqu  XMMWORD[r8],xmm4
> > >
> > > +        xorps   xmm2,xmm3
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        jmp     NEAR $L$cbc_ret
> > >
> > > +ALIGN   16
> > >
> > > +$L$cbc_decrypt_bulk:
> > >
> > > +        lea     r11,[rsp]
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        sub     rsp,176
> > >
> > > +        and     rsp,-16
> > >
> > > +        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:
> > >
> > > +        mov     rbp,rcx
> > >
> > > +        movups  xmm10,XMMWORD[r8]
> > >
> > > +        mov     eax,r10d
> > >
> > > +        cmp     rdx,0x50
> > >
> > > +        jbe     NEAR $L$cbc_dec_tail
> > >
> > > +
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        movdqu  xmm2,XMMWORD[rdi]
> > >
> > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > >
> > > +        movdqa  xmm11,xmm2
> > >
> > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > >
> > > +        movdqa  xmm12,xmm3
> > >
> > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > >
> > > +        movdqa  xmm13,xmm4
> > >
> > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > >
> > > +        movdqa  xmm14,xmm5
> > >
> > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > >
> > > +        movdqa  xmm15,xmm6
> > >
> > > +        mov     r9d,DWORD[((OPENSSL_ia32cap_P+4))]
> > >
> > > +        cmp     rdx,0x70
> > >
> > > +        jbe     NEAR $L$cbc_dec_six_or_seven
> > >
> > > +
> > >
> > > +        and     r9d,71303168
> > >
> > > +        sub     rdx,0x50
> > >
> > > +        cmp     r9d,4194304
> > >
> > > +        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[rsi],xmm9
> > >
> > > +        lea     rsi,[16+rsi]
> > >
> > > +$L$cbc_dec_loop8_enter:
> > >
> > > +        movdqu  xmm8,XMMWORD[96+rdi]
> > >
> > > +        pxor    xmm2,xmm0
> > >
> > > +        movdqu  xmm9,XMMWORD[112+rdi]
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        movups  xmm1,XMMWORD[((16-112))+rcx]
> > >
> > > +        pxor    xmm4,xmm0
> > >
> > > +        mov     rbp,-1
> > >
> > > +        cmp     rdx,0x70
> > >
> > > +        pxor    xmm5,xmm0
> > >
> > > +        pxor    xmm6,xmm0
> > >
> > > +        pxor    xmm7,xmm0
> > >
> > > +        pxor    xmm8,xmm0
> > >
> > > +
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +        pxor    xmm9,xmm0
> > >
> > > +        movups  xmm0,XMMWORD[((32-112))+rcx]
> > >
> > > +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
> > >
> > > +DB      102,68,15,56,222,193
> > >
> > > +        adc     rbp,0
> > >
> > > +        and     rbp,128
> > >
> > > +DB      102,68,15,56,222,201
> > >
> > > +        add     rbp,rdi
> > >
> > > +        movups  xmm1,XMMWORD[((48-112))+rcx]
> > >
> > > +DB      102,15,56,222,208
> > >
> > > +DB      102,15,56,222,216
> > >
> > > +DB      102,15,56,222,224
> > >
> > > +DB      102,15,56,222,232
> > >
> > > +DB      102,15,56,222,240
> > >
> > > +DB      102,15,56,222,248
> > >
> > > +DB      102,68,15,56,222,192
> > >
> > > +DB      102,68,15,56,222,200
> > >
> > > +        movups  xmm0,XMMWORD[((64-112))+rcx]
> > >
> > > +        nop
> > >
> > > +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
> > >
> > > +DB      102,68,15,56,222,193
> > >
> > > +DB      102,68,15,56,222,201
> > >
> > > +        movups  xmm1,XMMWORD[((80-112))+rcx]
> > >
> > > +        nop
> > >
> > > +DB      102,15,56,222,208
> > >
> > > +DB      102,15,56,222,216
> > >
> > > +DB      102,15,56,222,224
> > >
> > > +DB      102,15,56,222,232
> > >
> > > +DB      102,15,56,222,240
> > >
> > > +DB      102,15,56,222,248
> > >
> > > +DB      102,68,15,56,222,192
> > >
> > > +DB      102,68,15,56,222,200
> > >
> > > +        movups  xmm0,XMMWORD[((96-112))+rcx]
> > >
> > > +        nop
> > >
> > > +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
> > >
> > > +DB      102,68,15,56,222,193
> > >
> > > +DB      102,68,15,56,222,201
> > >
> > > +        movups  xmm1,XMMWORD[((112-112))+rcx]
> > >
> > > +        nop
> > >
> > > +DB      102,15,56,222,208
> > >
> > > +DB      102,15,56,222,216
> > >
> > > +DB      102,15,56,222,224
> > >
> > > +DB      102,15,56,222,232
> > >
> > > +DB      102,15,56,222,240
> > >
> > > +DB      102,15,56,222,248
> > >
> > > +DB      102,68,15,56,222,192
> > >
> > > +DB      102,68,15,56,222,200
> > >
> > > +        movups  xmm0,XMMWORD[((128-112))+rcx]
> > >
> > > +        nop
> > >
> > > +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
> > >
> > > +DB      102,68,15,56,222,193
> > >
> > > +DB      102,68,15,56,222,201
> > >
> > > +        movups  xmm1,XMMWORD[((144-112))+rcx]
> > >
> > > +        cmp     eax,11
> > >
> > > +DB      102,15,56,222,208
> > >
> > > +DB      102,15,56,222,216
> > >
> > > +DB      102,15,56,222,224
> > >
> > > +DB      102,15,56,222,232
> > >
> > > +DB      102,15,56,222,240
> > >
> > > +DB      102,15,56,222,248
> > >
> > > +DB      102,68,15,56,222,192
> > >
> > > +DB      102,68,15,56,222,200
> > >
> > > +        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
> > >
> > > +DB      102,15,56,222,233
> > >
> > > +DB      102,15,56,222,241
> > >
> > > +DB      102,15,56,222,249
> > >
> > > +DB      102,68,15,56,222,193
> > >
> > > +DB      102,68,15,56,222,201
> > >
> > > +        movups  xmm1,XMMWORD[((176-112))+rcx]
> > >
> > > +        nop
> > >
> > > +DB      102,15,56,222,208
> > >
> > > +DB      102,15,56,222,216
> > >
> > > +DB      102,15,56,222,224
> > >
> > > +DB      102,15,56,222,232
> > >
> > > +DB      102,15,56,222,240
> > >
> > > +DB      102,15,56,222,248
> > >
> > > +DB      102,68,15,56,222,192
> > >
> > > +DB      102,68,15,56,222,200
> > >
> > > +        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
> > >
> > > +DB      102,15,56,222,233
> > >
> > > +DB      102,15,56,222,241
> > >
> > > +DB      102,15,56,222,249
> > >
> > > +DB      102,68,15,56,222,193
> > >
> > > +DB      102,68,15,56,222,201
> > >
> > > +        movups  xmm1,XMMWORD[((208-112))+rcx]
> > >
> > > +        nop
> > >
> > > +DB      102,15,56,222,208
> > >
> > > +DB      102,15,56,222,216
> > >
> > > +DB      102,15,56,222,224
> > >
> > > +DB      102,15,56,222,232
> > >
> > > +DB      102,15,56,222,240
> > >
> > > +DB      102,15,56,222,248
> > >
> > > +DB      102,68,15,56,222,192
> > >
> > > +DB      102,68,15,56,222,200
> > >
> > > +        movups  xmm0,XMMWORD[((224-112))+rcx]
> > >
> > > +        jmp     NEAR $L$cbc_dec_done
> > >
> > > +ALIGN   16
> > >
> > > +$L$cbc_dec_done:
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +DB      102,15,56,222,217
> > >
> > > +        pxor    xmm10,xmm0
> > >
> > > +        pxor    xmm11,xmm0
> > >
> > > +DB      102,15,56,222,225
> > >
> > > +DB      102,15,56,222,233
> > >
> > > +        pxor    xmm12,xmm0
> > >
> > > +        pxor    xmm13,xmm0
> > >
> > > +DB      102,15,56,222,241
> > >
> > > +DB      102,15,56,222,249
> > >
> > > +        pxor    xmm14,xmm0
> > >
> > > +        pxor    xmm15,xmm0
> > >
> > > +DB      102,68,15,56,222,193
> > >
> > > +DB      102,68,15,56,222,201
> > >
> > > +        movdqu  xmm1,XMMWORD[80+rdi]
> > >
> > > +
> > >
> > > +DB      102,65,15,56,223,210
> > >
> > > +        movdqu  xmm10,XMMWORD[96+rdi]
> > >
> > > +        pxor    xmm1,xmm0
> > >
> > > +DB      102,65,15,56,223,219
> > >
> > > +        pxor    xmm10,xmm0
> > >
> > > +        movdqu  xmm0,XMMWORD[112+rdi]
> > >
> > > +DB      102,65,15,56,223,228
> > >
> > > +        lea     rdi,[128+rdi]
> > >
> > > +        movdqu  xmm11,XMMWORD[rbp]
> > >
> > > +DB      102,65,15,56,223,237
> > >
> > > +DB      102,65,15,56,223,246
> > >
> > > +        movdqu  xmm12,XMMWORD[16+rbp]
> > >
> > > +        movdqu  xmm13,XMMWORD[32+rbp]
> > >
> > > +DB      102,65,15,56,223,255
> > >
> > > +DB      102,68,15,56,223,193
> > >
> > > +        movdqu  xmm14,XMMWORD[48+rbp]
> > >
> > > +        movdqu  xmm15,XMMWORD[64+rbp]
> > >
> > > +DB      102,69,15,56,223,202
> > >
> > > +        movdqa  xmm10,xmm0
> > >
> > > +        movdqu  xmm1,XMMWORD[80+rbp]
> > >
> > > +        movups  xmm0,XMMWORD[((-112))+rcx]
> > >
> > > +
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        movdqa  xmm2,xmm11
> > >
> > > +        movups  XMMWORD[16+rsi],xmm3
> > >
> > > +        movdqa  xmm3,xmm12
> > >
> > > +        movups  XMMWORD[32+rsi],xmm4
> > >
> > > +        movdqa  xmm4,xmm13
> > >
> > > +        movups  XMMWORD[48+rsi],xmm5
> > >
> > > +        movdqa  xmm5,xmm14
> > >
> > > +        movups  XMMWORD[64+rsi],xmm6
> > >
> > > +        movdqa  xmm6,xmm15
> > >
> > > +        movups  XMMWORD[80+rsi],xmm7
> > >
> > > +        movdqa  xmm7,xmm1
> > >
> > > +        movups  XMMWORD[96+rsi],xmm8
> > >
> > > +        lea     rsi,[112+rsi]
> > >
> > > +
> > >
> > > +        sub     rdx,0x80
> > >
> > > +        ja      NEAR $L$cbc_dec_loop8
> > >
> > > +
> > >
> > > +        movaps  xmm2,xmm9
> > >
> > > +        lea     rcx,[((-112))+rcx]
> > >
> > > +        add     rdx,0x70
> > >
> > > +        jle     NEAR $L$cbc_dec_clear_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,0x60
> > >
> > > +        ja      NEAR $L$cbc_dec_seven
> > >
> > > +
> > >
> > > +        movaps  xmm8,xmm7
> > >
> > > +        call    _aesni_decrypt6
> > >
> > > +        pxor    xmm2,xmm10
> > >
> > > +        movaps  xmm10,xmm8
> > >
> > > +        pxor    xmm3,xmm11
> > >
> > > +        movdqu  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        movdqu  XMMWORD[16+rsi],xmm3
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        pxor    xmm5,xmm13
> > >
> > > +        movdqu  XMMWORD[32+rsi],xmm4
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +        movdqu  XMMWORD[48+rsi],xmm5
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +        pxor    xmm7,xmm15
> > >
> > > +        movdqu  XMMWORD[64+rsi],xmm6
> > >
> > > +        pxor    xmm6,xmm6
> > >
> > > +        lea     rsi,[80+rsi]
> > >
> > > +        movdqa  xmm2,xmm7
> > >
> > > +        pxor    xmm7,xmm7
> > >
> > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$cbc_dec_seven:
> > >
> > > +        movups  xmm8,XMMWORD[96+rdi]
> > >
> > > +        xorps   xmm9,xmm9
> > >
> > > +        call    _aesni_decrypt8
> > >
> > > +        movups  xmm9,XMMWORD[80+rdi]
> > >
> > > +        pxor    xmm2,xmm10
> > >
> > > +        movups  xmm10,XMMWORD[96+rdi]
> > >
> > > +        pxor    xmm3,xmm11
> > >
> > > +        movdqu  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        movdqu  XMMWORD[16+rsi],xmm3
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        pxor    xmm5,xmm13
> > >
> > > +        movdqu  XMMWORD[32+rsi],xmm4
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +        movdqu  XMMWORD[48+rsi],xmm5
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +        pxor    xmm7,xmm15
> > >
> > > +        movdqu  XMMWORD[64+rsi],xmm6
> > >
> > > +        pxor    xmm6,xmm6
> > >
> > > +        pxor    xmm8,xmm9
> > >
> > > +        movdqu  XMMWORD[80+rsi],xmm7
> > >
> > > +        pxor    xmm7,xmm7
> > >
> > > +        lea     rsi,[96+rsi]
> > >
> > > +        movdqa  xmm2,xmm8
> > >
> > > +        pxor    xmm8,xmm8
> > >
> > > +        pxor    xmm9,xmm9
> > >
> > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$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[32+rdi]
> > >
> > > +        movdqa  xmm12,xmm3
> > >
> > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > >
> > > +        movdqa  xmm13,xmm4
> > >
> > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > >
> > > +        movdqa  xmm14,xmm5
> > >
> > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > >
> > > +        movdqa  xmm15,xmm6
> > >
> > > +$L$cbc_dec_loop6_enter:
> > >
> > > +        lea     rdi,[96+rdi]
> > >
> > > +        movdqa  xmm8,xmm7
> > >
> > > +
> > >
> > > +        call    _aesni_decrypt6
> > >
> > > +
> > >
> > > +        pxor    xmm2,xmm10
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +        pxor    xmm3,xmm11
> > >
> > > +        movdqu  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        movdqu  XMMWORD[16+rsi],xmm3
> > >
> > > +        pxor    xmm5,xmm13
> > >
> > > +        movdqu  XMMWORD[32+rsi],xmm4
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +        mov     rcx,rbp
> > >
> > > +        movdqu  XMMWORD[48+rsi],xmm5
> > >
> > > +        pxor    xmm7,xmm15
> > >
> > > +        mov     eax,r10d
> > >
> > > +        movdqu  XMMWORD[64+rsi],xmm6
> > >
> > > +        lea     rsi,[80+rsi]
> > >
> > > +        sub     rdx,0x60
> > >
> > > +        ja      NEAR $L$cbc_dec_loop6
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm7
> > >
> > > +        add     rdx,0x50
> > >
> > > +        jle     NEAR $L$cbc_dec_clear_tail_collected
> > >
> > > +        movups  XMMWORD[rsi],xmm7
> > >
> > > +        lea     rsi,[16+rsi]
> > >
> > > +
> > >
> > > +$L$cbc_dec_tail:
> > >
> > > +        movups  xmm2,XMMWORD[rdi]
> > >
> > > +        sub     rdx,0x10
> > >
> > > +        jbe     NEAR $L$cbc_dec_one
> > >
> > > +
> > >
> > > +        movups  xmm3,XMMWORD[16+rdi]
> > >
> > > +        movaps  xmm11,xmm2
> > >
> > > +        sub     rdx,0x10
> > >
> > > +        jbe     NEAR $L$cbc_dec_two
> > >
> > > +
> > >
> > > +        movups  xmm4,XMMWORD[32+rdi]
> > >
> > > +        movaps  xmm12,xmm3
> > >
> > > +        sub     rdx,0x10
> > >
> > > +        jbe     NEAR $L$cbc_dec_three
> > >
> > > +
> > >
> > > +        movups  xmm5,XMMWORD[48+rdi]
> > >
> > > +        movaps  xmm13,xmm4
> > >
> > > +        sub     rdx,0x10
> > >
> > > +        jbe     NEAR $L$cbc_dec_four
> > >
> > > +
> > >
> > > +        movups  xmm6,XMMWORD[64+rdi]
> > >
> > > +        movaps  xmm14,xmm5
> > >
> > > +        movaps  xmm15,xmm6
> > >
> > > +        xorps   xmm7,xmm7
> > >
> > > +        call    _aesni_decrypt6
> > >
> > > +        pxor    xmm2,xmm10
> > >
> > > +        movaps  xmm10,xmm15
> > >
> > > +        pxor    xmm3,xmm11
> > >
> > > +        movdqu  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        movdqu  XMMWORD[16+rsi],xmm3
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        pxor    xmm5,xmm13
> > >
> > > +        movdqu  XMMWORD[32+rsi],xmm4
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +        movdqu  XMMWORD[48+rsi],xmm5
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +        lea     rsi,[64+rsi]
> > >
> > > +        movdqa  xmm2,xmm6
> > >
> > > +        pxor    xmm6,xmm6
> > >
> > > +        pxor    xmm7,xmm7
> > >
> > > +        sub     rdx,0x10
> > >
> > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$cbc_dec_one:
> > >
> > > +        movaps  xmm11,xmm2
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        movups  xmm1,XMMWORD[16+rcx]
> > >
> > > +        lea     rcx,[32+rcx]
> > >
> > > +        xorps   xmm2,xmm0
> > >
> > > +$L$oop_dec1_17:
> > >
> > > +DB      102,15,56,222,209
> > >
> > > +        dec     eax
> > >
> > > +        movups  xmm1,XMMWORD[rcx]
> > >
> > > +        lea     rcx,[16+rcx]
> > >
> > > +        jnz     NEAR $L$oop_dec1_17
> > >
> > > +DB      102,15,56,223,209
> > >
> > > +        xorps   xmm2,xmm10
> > >
> > > +        movaps  xmm10,xmm11
> > >
> > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > >
> > > +ALIGN   16
> > >
> > > +$L$cbc_dec_two:
> > >
> > > +        movaps  xmm12,xmm3
> > >
> > > +        call    _aesni_decrypt2
> > >
> > > +        pxor    xmm2,xmm10
> > >
> > > +        movaps  xmm10,xmm12
> > >
> > > +        pxor    xmm3,xmm11
> > >
> > > +        movdqu  XMMWORD[rsi],xmm2
> > >
> > > +        movdqa  xmm2,xmm3
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        lea     rsi,[16+rsi]
> > >
> > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > >
> > > +ALIGN   16
> > >
> > > +$L$cbc_dec_three:
> > >
> > > +        movaps  xmm13,xmm4
> > >
> > > +        call    _aesni_decrypt3
> > >
> > > +        pxor    xmm2,xmm10
> > >
> > > +        movaps  xmm10,xmm13
> > >
> > > +        pxor    xmm3,xmm11
> > >
> > > +        movdqu  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        movdqu  XMMWORD[16+rsi],xmm3
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        movdqa  xmm2,xmm4
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        lea     rsi,[32+rsi]
> > >
> > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > >
> > > +ALIGN   16
> > >
> > > +$L$cbc_dec_four:
> > >
> > > +        movaps  xmm14,xmm5
> > >
> > > +        call    _aesni_decrypt4
> > >
> > > +        pxor    xmm2,xmm10
> > >
> > > +        movaps  xmm10,xmm14
> > >
> > > +        pxor    xmm3,xmm11
> > >
> > > +        movdqu  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        movdqu  XMMWORD[16+rsi],xmm3
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        pxor    xmm5,xmm13
> > >
> > > +        movdqu  XMMWORD[32+rsi],xmm4
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        movdqa  xmm2,xmm5
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +        lea     rsi,[48+rsi]
> > >
> > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$cbc_dec_clear_tail_collected:
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +$L$cbc_dec_tail_collected:
> > >
> > > +        movups  XMMWORD[r8],xmm10
> > >
> > > +        and     rdx,15
> > >
> > > +        jnz     NEAR $L$cbc_dec_tail_partial
> > >
> > > +        movups  XMMWORD[rsi],xmm2
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        jmp     NEAR $L$cbc_dec_ret
> > >
> > > +ALIGN   16
> > >
> > > +$L$cbc_dec_tail_partial:
> > >
> > > +        movaps  XMMWORD[rsp],xmm2
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        mov     rcx,16
> > >
> > > +        mov     rdi,rsi
> > >
> > > +        sub     rcx,rdx
> > >
> > > +        lea     rsi,[rsp]
> > >
> > > +        DD      0x9066A4F3
> > >
> > > +        movdqa  XMMWORD[rsp],xmm2
> > >
> > > +
> > >
> > > +$L$cbc_dec_ret:
> > >
> > > +        xorps   xmm0,xmm0
> > >
> > > +        pxor    xmm1,xmm1
> > >
> > > +        movaps  xmm6,XMMWORD[16+rsp]
> > >
> > > +        movaps  XMMWORD[16+rsp],xmm0
> > >
> > > +        movaps  xmm7,XMMWORD[32+rsp]
> > >
> > > +        movaps  XMMWORD[32+rsp],xmm0
> > >
> > > +        movaps  xmm8,XMMWORD[48+rsp]
> > >
> > > +        movaps  XMMWORD[48+rsp],xmm0
> > >
> > > +        movaps  xmm9,XMMWORD[64+rsp]
> > >
> > > +        movaps  XMMWORD[64+rsp],xmm0
> > >
> > > +        movaps  xmm10,XMMWORD[80+rsp]
> > >
> > > +        movaps  XMMWORD[80+rsp],xmm0
> > >
> > > +        movaps  xmm11,XMMWORD[96+rsp]
> > >
> > > +        movaps  XMMWORD[96+rsp],xmm0
> > >
> > > +        movaps  xmm12,XMMWORD[112+rsp]
> > >
> > > +        movaps  XMMWORD[112+rsp],xmm0
> > >
> > > +        movaps  xmm13,XMMWORD[128+rsp]
> > >
> > > +        movaps  XMMWORD[128+rsp],xmm0
> > >
> > > +        movaps  xmm14,XMMWORD[144+rsp]
> > >
> > > +        movaps  XMMWORD[144+rsp],xmm0
> > >
> > > +        movaps  xmm15,XMMWORD[160+rsp]
> > >
> > > +        movaps  XMMWORD[160+rsp],xmm0
> > >
> > > +        mov     rbp,QWORD[((-8))+r11]
> > >
> > > +
> > >
> > > +        lea     rsp,[r11]
> > >
> > > +
> > >
> > > +$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:
> > >
> > > +global  aesni_set_decrypt_key
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +aesni_set_decrypt_key:
> > >
> > > +
> > >
> > > +DB      0x48,0x83,0xEC,0x08
> > >
> > > +
> > >
> > > +        call    __aesni_set_encrypt_key
> > >
> > > +        shl     edx,4
> > >
> > > +        test    eax,eax
> > >
> > > +        jnz     NEAR $L$dec_key_ret
> > >
> > > +        lea     rcx,[16+rdx*1+r8]
> > >
> > > +
> > >
> > > +        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[r8]
> > >
> > > +        movups  xmm1,XMMWORD[rcx]
> > >
> > > +DB      102,15,56,219,192
> > >
> > > +DB      102,15,56,219,201
> > >
> > > +        lea     r8,[16+r8]
> > >
> > > +        lea     rcx,[((-16))+rcx]
> > >
> > > +        movups  XMMWORD[16+rcx],xmm0
> > >
> > > +        movups  XMMWORD[(-16)+r8],xmm1
> > >
> > > +        cmp     rcx,r8
> > >
> > > +        ja      NEAR $L$dec_key_inverse
> > >
> > > +
> > >
> > > +        movups  xmm0,XMMWORD[r8]
> > >
> > > +DB      102,15,56,219,192
> > >
> > > +        pxor    xmm1,xmm1
> > >
> > > +        movups  XMMWORD[rcx],xmm0
> > >
> > > +        pxor    xmm0,xmm0
> > >
> > > +$L$dec_key_ret:
> > >
> > > +        add     rsp,8
> > >
> > > +
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +$L$SEH_end_set_decrypt_key:
> > >
> > > +
> > >
> > > +global  aesni_set_encrypt_key
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +aesni_set_encrypt_key:
> > >
> > > +__aesni_set_encrypt_key:
> > >
> > > +
> > >
> > > +DB      0x48,0x83,0xEC,0x08
> > >
> > > +
> > >
> > > +        mov     rax,-1
> > >
> > > +        test    rcx,rcx
> > >
> > > +        jz      NEAR $L$enc_key_ret
> > >
> > > +        test    r8,r8
> > >
> > > +        jz      NEAR $L$enc_key_ret
> > >
> > > +
> > >
> > > +        mov     r10d,268437504
> > >
> > > +        movups  xmm0,XMMWORD[rcx]
> > >
> > > +        xorps   xmm4,xmm4
> > >
> > > +        and     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
> > >
> > > +        lea     rax,[16+r8]
> > >
> > > +        cmp     edx,256
> > >
> > > +        je      NEAR $L$14rounds
> > >
> > > +        cmp     edx,192
> > >
> > > +        je      NEAR $L$12rounds
> > >
> > > +        cmp     edx,128
> > >
> > > +        jne     NEAR $L$bad_keybits
> > >
> > > +
> > >
> > > +$L$10rounds:
> > >
> > > +        mov     edx,9
> > >
> > > +        cmp     r10d,268435456
> > >
> > > +        je      NEAR $L$10rounds_alt
> > >
> > > +
> > >
> > > +        movups  XMMWORD[r8],xmm0
> > >
> > > +DB      102,15,58,223,200,1
> > >
> > > +        call    $L$key_expansion_128_cold
> > >
> > > +DB      102,15,58,223,200,2
> > >
> > > +        call    $L$key_expansion_128
> > >
> > > +DB      102,15,58,223,200,4
> > >
> > > +        call    $L$key_expansion_128
> > >
> > > +DB      102,15,58,223,200,8
> > >
> > > +        call    $L$key_expansion_128
> > >
> > > +DB      102,15,58,223,200,16
> > >
> > > +        call    $L$key_expansion_128
> > >
> > > +DB      102,15,58,223,200,32
> > >
> > > +        call    $L$key_expansion_128
> > >
> > > +DB      102,15,58,223,200,64
> > >
> > > +        call    $L$key_expansion_128
> > >
> > > +DB      102,15,58,223,200,128
> > >
> > > +        call    $L$key_expansion_128
> > >
> > > +DB      102,15,58,223,200,27
> > >
> > > +        call    $L$key_expansion_128
> > >
> > > +DB      102,15,58,223,200,54
> > >
> > > +        call    $L$key_expansion_128
> > >
> > > +        movups  XMMWORD[rax],xmm0
> > >
> > > +        mov     DWORD[80+rax],edx
> > >
> > > +        xor     eax,eax
> > >
> > > +        jmp     NEAR $L$enc_key_ret
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$10rounds_alt:
> > >
> > > +        movdqa  xmm5,XMMWORD[$L$key_rotate]
> > >
> > > +        mov     r10d,8
> > >
> > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +        movdqu  XMMWORD[r8],xmm0
> > >
> > > +        jmp     NEAR $L$oop_key128
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$oop_key128:
> > >
> > > +DB      102,15,56,0,197
> > >
> > > +DB      102,15,56,221,196
> > >
> > > +        pslld   xmm4,1
> > >
> > > +        lea     rax,[16+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm3,xmm2
> > >
> > > +        pslldq  xmm2,4
> > >
> > > +        pxor    xmm3,xmm2
> > >
> > > +        pslldq  xmm2,4
> > >
> > > +        pxor    xmm3,xmm2
> > >
> > > +        pslldq  xmm2,4
> > >
> > > +        pxor    xmm2,xmm3
> > >
> > > +
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        movdqu  XMMWORD[(-16)+rax],xmm0
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +
> > >
> > > +        dec     r10d
> > >
> > > +        jnz     NEAR $L$oop_key128
> > >
> > > +
> > >
> > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1b]
> > >
> > > +
> > >
> > > +DB      102,15,56,0,197
> > >
> > > +DB      102,15,56,221,196
> > >
> > > +        pslld   xmm4,1
> > >
> > > +
> > >
> > > +        movdqa  xmm3,xmm2
> > >
> > > +        pslldq  xmm2,4
> > >
> > > +        pxor    xmm3,xmm2
> > >
> > > +        pslldq  xmm2,4
> > >
> > > +        pxor    xmm3,xmm2
> > >
> > > +        pslldq  xmm2,4
> > >
> > > +        pxor    xmm2,xmm3
> > >
> > > +
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        movdqu  XMMWORD[rax],xmm0
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +DB      102,15,56,0,197
> > >
> > > +DB      102,15,56,221,196
> > >
> > > +
> > >
> > > +        movdqa  xmm3,xmm2
> > >
> > > +        pslldq  xmm2,4
> > >
> > > +        pxor    xmm3,xmm2
> > >
> > > +        pslldq  xmm2,4
> > >
> > > +        pxor    xmm3,xmm2
> > >
> > > +        pslldq  xmm2,4
> > >
> > > +        pxor    xmm2,xmm3
> > >
> > > +
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        movdqu  XMMWORD[16+rax],xmm0
> > >
> > > +
> > >
> > > +        mov     DWORD[96+rax],edx
> > >
> > > +        xor     eax,eax
> > >
> > > +        jmp     NEAR $L$enc_key_ret
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$12rounds:
> > >
> > > +        movq    xmm2,QWORD[16+rcx]
> > >
> > > +        mov     edx,11
> > >
> > > +        cmp     r10d,268435456
> > >
> > > +        je      NEAR $L$12rounds_alt
> > >
> > > +
> > >
> > > +        movups  XMMWORD[r8],xmm0
> > >
> > > +DB      102,15,58,223,202,1
> > >
> > > +        call    $L$key_expansion_192a_cold
> > >
> > > +DB      102,15,58,223,202,2
> > >
> > > +        call    $L$key_expansion_192b
> > >
> > > +DB      102,15,58,223,202,4
> > >
> > > +        call    $L$key_expansion_192a
> > >
> > > +DB      102,15,58,223,202,8
> > >
> > > +        call    $L$key_expansion_192b
> > >
> > > +DB      102,15,58,223,202,16
> > >
> > > +        call    $L$key_expansion_192a
> > >
> > > +DB      102,15,58,223,202,32
> > >
> > > +        call    $L$key_expansion_192b
> > >
> > > +DB      102,15,58,223,202,64
> > >
> > > +        call    $L$key_expansion_192a
> > >
> > > +DB      102,15,58,223,202,128
> > >
> > > +        call    $L$key_expansion_192b
> > >
> > > +        movups  XMMWORD[rax],xmm0
> > >
> > > +        mov     DWORD[48+rax],edx
> > >
> > > +        xor     rax,rax
> > >
> > > +        jmp     NEAR $L$enc_key_ret
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$12rounds_alt:
> > >
> > > +        movdqa  xmm5,XMMWORD[$L$key_rotate192]
> > >
> > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> > >
> > > +        mov     r10d,8
> > >
> > > +        movdqu  XMMWORD[r8],xmm0
> > >
> > > +        jmp     NEAR $L$oop_key192
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$oop_key192:
> > >
> > > +        movq    QWORD[rax],xmm2
> > >
> > > +        movdqa  xmm1,xmm2
> > >
> > > +DB      102,15,56,0,213
> > >
> > > +DB      102,15,56,221,212
> > >
> > > +        pslld   xmm4,1
> > >
> > > +        lea     rax,[24+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        pslldq  xmm0,4
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        pslldq  xmm0,4
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        pslldq  xmm0,4
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +
> > >
> > > +        pshufd  xmm3,xmm0,0xff
> > >
> > > +        pxor    xmm3,xmm1
> > >
> > > +        pslldq  xmm1,4
> > >
> > > +        pxor    xmm3,xmm1
> > >
> > > +
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        pxor    xmm2,xmm3
> > >
> > > +        movdqu  XMMWORD[(-16)+rax],xmm0
> > >
> > > +
> > >
> > > +        dec     r10d
> > >
> > > +        jnz     NEAR $L$oop_key192
> > >
> > > +
> > >
> > > +        mov     DWORD[32+rax],edx
> > >
> > > +        xor     eax,eax
> > >
> > > +        jmp     NEAR $L$enc_key_ret
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$14rounds:
> > >
> > > +        movups  xmm2,XMMWORD[16+rcx]
> > >
> > > +        mov     edx,13
> > >
> > > +        lea     rax,[16+rax]
> > >
> > > +        cmp     r10d,268435456
> > >
> > > +        je      NEAR $L$14rounds_alt
> > >
> > > +
> > >
> > > +        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
> > >
> > > +        call    $L$key_expansion_256b
> > >
> > > +DB      102,15,58,223,202,2
> > >
> > > +        call    $L$key_expansion_256a
> > >
> > > +DB      102,15,58,223,200,2
> > >
> > > +        call    $L$key_expansion_256b
> > >
> > > +DB      102,15,58,223,202,4
> > >
> > > +        call    $L$key_expansion_256a
> > >
> > > +DB      102,15,58,223,200,4
> > >
> > > +        call    $L$key_expansion_256b
> > >
> > > +DB      102,15,58,223,202,8
> > >
> > > +        call    $L$key_expansion_256a
> > >
> > > +DB      102,15,58,223,200,8
> > >
> > > +        call    $L$key_expansion_256b
> > >
> > > +DB      102,15,58,223,202,16
> > >
> > > +        call    $L$key_expansion_256a
> > >
> > > +DB      102,15,58,223,200,16
> > >
> > > +        call    $L$key_expansion_256b
> > >
> > > +DB      102,15,58,223,202,32
> > >
> > > +        call    $L$key_expansion_256a
> > >
> > > +DB      102,15,58,223,200,32
> > >
> > > +        call    $L$key_expansion_256b
> > >
> > > +DB      102,15,58,223,202,64
> > >
> > > +        call    $L$key_expansion_256a
> > >
> > > +        movups  XMMWORD[rax],xmm0
> > >
> > > +        mov     DWORD[16+rax],edx
> > >
> > > +        xor     rax,rax
> > >
> > > +        jmp     NEAR $L$enc_key_ret
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$14rounds_alt:
> > >
> > > +        movdqa  xmm5,XMMWORD[$L$key_rotate]
> > >
> > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> > >
> > > +        mov     r10d,7
> > >
> > > +        movdqu  XMMWORD[r8],xmm0
> > >
> > > +        movdqa  xmm1,xmm2
> > >
> > > +        movdqu  XMMWORD[16+r8],xmm2
> > >
> > > +        jmp     NEAR $L$oop_key256
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$oop_key256:
> > >
> > > +DB      102,15,56,0,213
> > >
> > > +DB      102,15,56,221,212
> > >
> > > +
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        pslldq  xmm0,4
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        pslldq  xmm0,4
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        pslldq  xmm0,4
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        pslld   xmm4,1
> > >
> > > +
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        movdqu  XMMWORD[rax],xmm0
> > >
> > > +
> > >
> > > +        dec     r10d
> > >
> > > +        jz      NEAR $L$done_key256
> > >
> > > +
> > >
> > > +        pshufd  xmm2,xmm0,0xff
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +DB      102,15,56,221,211
> > >
> > > +
> > >
> > > +        movdqa  xmm3,xmm1
> > >
> > > +        pslldq  xmm1,4
> > >
> > > +        pxor    xmm3,xmm1
> > >
> > > +        pslldq  xmm1,4
> > >
> > > +        pxor    xmm3,xmm1
> > >
> > > +        pslldq  xmm1,4
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +
> > >
> > > +        pxor    xmm2,xmm1
> > >
> > > +        movdqu  XMMWORD[16+rax],xmm2
> > >
> > > +        lea     rax,[32+rax]
> > >
> > > +        movdqa  xmm1,xmm2
> > >
> > > +
> > >
> > > +        jmp     NEAR $L$oop_key256
> > >
> > > +
> > >
> > > +$L$done_key256:
> > >
> > > +        mov     DWORD[16+rax],edx
> > >
> > > +        xor     eax,eax
> > >
> > > +        jmp     NEAR $L$enc_key_ret
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$bad_keybits:
> > >
> > > +        mov     rax,-2
> > >
> > > +$L$enc_key_ret:
> > >
> > > +        pxor    xmm0,xmm0
> > >
> > > +        pxor    xmm1,xmm1
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +        add     rsp,8
> > >
> > > +
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +$L$SEH_end_set_encrypt_key:
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$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
> > >
> > > +        xorps   xmm0,xmm4
> > >
> > > +        shufps  xmm1,xmm1,255
> > >
> > > +        xorps   xmm0,xmm1
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$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:
> > >
> > > +        shufps  xmm4,xmm0,16
> > >
> > > +        movdqa  xmm3,xmm2
> > >
> > > +        xorps   xmm0,xmm4
> > >
> > > +        shufps  xmm4,xmm0,140
> > >
> > > +        pslldq  xmm3,4
> > >
> > > +        xorps   xmm0,xmm4
> > >
> > > +        pshufd  xmm1,xmm1,85
> > >
> > > +        pxor    xmm2,xmm3
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        pshufd  xmm3,xmm0,255
> > >
> > > +        pxor    xmm2,xmm3
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$key_expansion_192b:
> > >
> > > +        movaps  xmm3,xmm0
> > >
> > > +        shufps  xmm5,xmm0,68
> > >
> > > +        movups  XMMWORD[rax],xmm5
> > >
> > > +        shufps  xmm3,xmm2,78
> > >
> > > +        movups  XMMWORD[16+rax],xmm3
> > >
> > > +        lea     rax,[32+rax]
> > >
> > > +        jmp     NEAR $L$key_expansion_192b_warm
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$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
> > >
> > > +        xorps   xmm0,xmm4
> > >
> > > +        shufps  xmm1,xmm1,255
> > >
> > > +        xorps   xmm0,xmm1
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$key_expansion_256b:
> > >
> > > +        movups  XMMWORD[rax],xmm0
> > >
> > > +        lea     rax,[16+rax]
> > >
> > > +
> > >
> > > +        shufps  xmm4,xmm2,16
> > >
> > > +        xorps   xmm2,xmm4
> > >
> > > +        shufps  xmm4,xmm2,140
> > >
> > > +        xorps   xmm2,xmm4
> > >
> > > +        shufps  xmm1,xmm1,170
> > >
> > > +        xorps   xmm2,xmm1
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   64
> > >
> > > +$L$bswap_mask:
> > >
> > > +DB      15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
> > >
> > > +$L$increment32:
> > >
> > > +        DD      6,6,6,0
> > >
> > > +$L$increment64:
> > >
> > > +        DD      1,0,0,0
> > >
> > > +$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
> > >
> > > +$L$key_rotate:
> > >
> > > +        DD      0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
> > >
> > > +$L$key_rotate192:
> > >
> > > +        DD      0x04070605,0x04070605,0x04070605,0x04070605
> > >
> > > +$L$key_rcon1:
> > >
> > > +        DD      1,1,1,1
> > >
> > > +$L$key_rcon1b:
> > >
> > > +        DD      0x1b,0x1b,0x1b,0x1b
> > >
> > > +
> > >
> > > +DB      65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
> > >
> > > +DB      83,45,78,73,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   64
> > >
> > > +EXTERN  __imp_RtlVirtualUnwind
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +ecb_ccm64_se_handler:
> > >
> > > +        push    rsi
> > >
> > > +        push    rdi
> > >
> > > +        push    rbx
> > >
> > > +        push    rbp
> > >
> > > +        push    r12
> > >
> > > +        push    r13
> > >
> > > +        push    r14
> > >
> > > +        push    r15
> > >
> > > +        pushfq
> > >
> > > +        sub     rsp,64
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[120+r8]
> > >
> > > +        mov     rbx,QWORD[248+r8]
> > >
> > > +
> > >
> > > +        mov     rsi,QWORD[8+r9]
> > >
> > > +        mov     r11,QWORD[56+r9]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[152+r8]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[4+r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jae     NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +        lea     rsi,[rax]
> > >
> > > +        lea     rdi,[512+r8]
> > >
> > > +        mov     ecx,8
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +        lea     rax,[88+rax]
> > >
> > > +
> > >
> > > +        jmp     NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +ctr_xts_se_handler:
> > >
> > > +        push    rsi
> > >
> > > +        push    rdi
> > >
> > > +        push    rbx
> > >
> > > +        push    rbp
> > >
> > > +        push    r12
> > >
> > > +        push    r13
> > >
> > > +        push    r14
> > >
> > > +        push    r15
> > >
> > > +        pushfq
> > >
> > > +        sub     rsp,64
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[120+r8]
> > >
> > > +        mov     rbx,QWORD[248+r8]
> > >
> > > +
> > >
> > > +        mov     rsi,QWORD[8+r9]
> > >
> > > +        mov     r11,QWORD[56+r9]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[152+r8]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[4+r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jae     NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[208+r8]
> > >
> > > +
> > >
> > > +        lea     rsi,[((-168))+rax]
> > >
> > > +        lea     rdi,[512+r8]
> > >
> > > +        mov     ecx,20
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +        mov     rbp,QWORD[((-8))+rax]
> > >
> > > +        mov     QWORD[160+r8],rbp
> > >
> > > +        jmp     NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +ocb_se_handler:
> > >
> > > +        push    rsi
> > >
> > > +        push    rdi
> > >
> > > +        push    rbx
> > >
> > > +        push    rbp
> > >
> > > +        push    r12
> > >
> > > +        push    r13
> > >
> > > +        push    r14
> > >
> > > +        push    r15
> > >
> > > +        pushfq
> > >
> > > +        sub     rsp,64
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[120+r8]
> > >
> > > +        mov     rbx,QWORD[248+r8]
> > >
> > > +
> > >
> > > +        mov     rsi,QWORD[8+r9]
> > >
> > > +        mov     r11,QWORD[56+r9]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[4+r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jae     NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[8+r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jae     NEAR $L$ocb_no_xmm
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[152+r8]
> > >
> > > +
> > >
> > > +        lea     rsi,[rax]
> > >
> > > +        lea     rdi,[512+r8]
> > >
> > > +        mov     ecx,20
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +        lea     rax,[((160+40))+rax]
> > >
> > > +
> > >
> > > +$L$ocb_no_xmm:
> > >
> > > +        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     NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +cbc_se_handler:
> > >
> > > +        push    rsi
> > >
> > > +        push    rdi
> > >
> > > +        push    rbx
> > >
> > > +        push    rbp
> > >
> > > +        push    r12
> > >
> > > +        push    r13
> > >
> > > +        push    r14
> > >
> > > +        push    r15
> > >
> > > +        pushfq
> > >
> > > +        sub     rsp,64
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[152+r8]
> > >
> > > +        mov     rbx,QWORD[248+r8]
> > >
> > > +
> > >
> > > +        lea     r10,[$L$cbc_decrypt_bulk]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[120+r8]
> > >
> > > +
> > >
> > > +        lea     r10,[$L$cbc_decrypt_body]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[152+r8]
> > >
> > > +
> > >
> > > +        lea     r10,[$L$cbc_ret]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jae     NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +        lea     rsi,[16+rax]
> > >
> > > +        lea     rdi,[512+r8]
> > >
> > > +        mov     ecx,20
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[208+r8]
> > >
> > > +
> > >
> > > +        mov     rbp,QWORD[((-8))+rax]
> > >
> > > +        mov     QWORD[160+r8],rbp
> > >
> > > +
> > >
> > > +$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[40+r9]
> > >
> > > +        mov     rsi,r8
> > >
> > > +        mov     ecx,154
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +        mov     rsi,r9
> > >
> > > +        xor     rcx,rcx
> > >
> > > +        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
> > >
> > > +        popfq
> > >
> > > +        pop     r15
> > >
> > > +        pop     r14
> > >
> > > +        pop     r13
> > >
> > > +        pop     r12
> > >
> > > +        pop     rbp
> > >
> > > +        pop     rbx
> > >
> > > +        pop     rdi
> > >
> > > +        pop     rsi
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +section .pdata rdata align=4
> > >
> > > +ALIGN   4
> > >
> > > +        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      $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      $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      $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      $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      $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_ocb_encrypt wrt ..imagebase
> > >
> > > +        DD      $L$SEH_end_aesni_ocb_encrypt wrt ..imagebase
> > >
> > > +        DD      $L$SEH_info_ocb_enc wrt ..imagebase
> > >
> > > +
> > >
> > > +        DD      $L$SEH_begin_aesni_ocb_decrypt wrt ..imagebase
> > >
> > > +        DD      $L$SEH_end_aesni_ocb_decrypt wrt ..imagebase
> > >
> > > +        DD      $L$SEH_info_ocb_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      aesni_set_decrypt_key wrt ..imagebase
> > >
> > > +        DD      $L$SEH_end_set_decrypt_key wrt ..imagebase
> > >
> > > +        DD      $L$SEH_info_key wrt ..imagebase
> > >
> > > +
> > >
> > > +        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:
> > >
> > > +DB      9,0,0,0
> > >
> > > +        DD      ecb_ccm64_se_handler wrt ..imagebase
> > >
> > > +        DD      $L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret
> wrt ..imagebase
> > >
> > > +$L$SEH_info_ccm64_enc:
> > >
> > > +DB      9,0,0,0
> > >
> > > +        DD      ecb_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      ecb_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      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      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      ctr_xts_se_handler wrt ..imagebase
> > >
> > > +        DD      $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue
> > > wrt ..imagebase
> > >
> > > +$L$SEH_info_ocb_enc:
> > >
> > > +DB      9,0,0,0
> > >
> > > +        DD      ocb_se_handler wrt ..imagebase
> > >
> > > +        DD      $L$ocb_enc_body wrt ..imagebase,$L$ocb_enc_epilogue
> > > wrt ..imagebase
> > >
> > > +        DD      $L$ocb_enc_pop wrt ..imagebase
> > >
> > > +        DD      0
> > >
> > > +$L$SEH_info_ocb_dec:
> > >
> > > +DB      9,0,0,0
> > >
> > > +        DD      ocb_se_handler wrt ..imagebase
> > >
> > > +        DD      $L$ocb_dec_body wrt ..imagebase,$L$ocb_dec_epilogue
> > > wrt ..imagebase
> > >
> > > +        DD      $L$ocb_dec_pop wrt ..imagebase
> > >
> > > +        DD      0
> > >
> > > +$L$SEH_info_cbc:
> > >
> > > +DB      9,0,0,0
> > >
> > > +        DD      cbc_se_handler wrt ..imagebase
> > >
> > > +$L$SEH_info_key:
> > >
> > > +DB      0x01,0x04,0x01,0x00
> > >
> > > +DB      0x04,0x02,0x00,0x00
> > >
> > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-
> x86_64.nasm
> > > b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
> > > new file mode 100644
> > > index 0000000000..1c911fa294
> > > --- /dev/null
> > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
> > > @@ -0,0 +1,1173 @@
> > > +; WARNING: do not edit!
> > >
> > > +; Generated from openssl/crypto/aes/asm/vpaes-x86_64.pl
> > >
> > > +;
> > >
> > > +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved.
> > >
> > > +;
> > >
> > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > >
> > > +; this file except in compliance with the License.  You can obtain a copy
> > >
> > > +; in the file LICENSE in the source distribution or at
> > >
> > > +; https://www.openssl.org/source/license.html
> > >
> > > +
> > >
> > > +default rel
> > >
> > > +%define XMMWORD
> > >
> > > +%define YMMWORD
> > >
> > > +%define ZMMWORD
> > >
> > > +section .text code align=64
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +_vpaes_encrypt_core:
> > >
> > > +
> > >
> > > +        mov     r9,rdx
> > >
> > > +        mov     r11,16
> > >
> > > +        mov     eax,DWORD[240+rdx]
> > >
> > > +        movdqa  xmm1,xmm9
> > >
> > > +        movdqa  xmm2,XMMWORD[$L$k_ipt]
> > >
> > > +        pandn   xmm1,xmm0
> > >
> > > +        movdqu  xmm5,XMMWORD[r9]
> > >
> > > +        psrld   xmm1,4
> > >
> > > +        pand    xmm0,xmm9
> > >
> > > +DB      102,15,56,0,208
> > >
> > > +        movdqa  xmm0,XMMWORD[(($L$k_ipt+16))]
> > >
> > > +DB      102,15,56,0,193
> > >
> > > +        pxor    xmm2,xmm5
> > >
> > > +        add     r9,16
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        lea     r10,[$L$k_mc_backward]
> > >
> > > +        jmp     NEAR $L$enc_entry
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$enc_loop:
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm13
> > >
> > > +        movdqa  xmm0,xmm12
> > >
> > > +DB      102,15,56,0,226
> > >
> > > +DB      102,15,56,0,195
> > >
> > > +        pxor    xmm4,xmm5
> > >
> > > +        movdqa  xmm5,xmm15
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        movdqa  xmm1,XMMWORD[((-64))+r10*1+r11]
> > >
> > > +DB      102,15,56,0,234
> > >
> > > +        movdqa  xmm4,XMMWORD[r10*1+r11]
> > >
> > > +        movdqa  xmm2,xmm14
> > >
> > > +DB      102,15,56,0,211
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        pxor    xmm2,xmm5
> > >
> > > +DB      102,15,56,0,193
> > >
> > > +        add     r9,16
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +DB      102,15,56,0,220
> > >
> > > +        add     r11,16
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +DB      102,15,56,0,193
> > >
> > > +        and     r11,0x30
> > >
> > > +        sub     rax,1
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +
> > >
> > > +$L$enc_entry:
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm9
> > >
> > > +        movdqa  xmm5,xmm11
> > >
> > > +        pandn   xmm1,xmm0
> > >
> > > +        psrld   xmm1,4
> > >
> > > +        pand    xmm0,xmm9
> > >
> > > +DB      102,15,56,0,232
> > >
> > > +        movdqa  xmm3,xmm10
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +DB      102,15,56,0,217
> > >
> > > +        movdqa  xmm4,xmm10
> > >
> > > +        pxor    xmm3,xmm5
> > >
> > > +DB      102,15,56,0,224
> > >
> > > +        movdqa  xmm2,xmm10
> > >
> > > +        pxor    xmm4,xmm5
> > >
> > > +DB      102,15,56,0,211
> > >
> > > +        movdqa  xmm3,xmm10
> > >
> > > +        pxor    xmm2,xmm0
> > >
> > > +DB      102,15,56,0,220
> > >
> > > +        movdqu  xmm5,XMMWORD[r9]
> > >
> > > +        pxor    xmm3,xmm1
> > >
> > > +        jnz     NEAR $L$enc_loop
> > >
> > > +
> > >
> > > +
> > >
> > > +        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[64+r10*1+r11]
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +DB      102,15,56,0,193
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +_vpaes_decrypt_core:
> > >
> > > +
> > >
> > > +        mov     r9,rdx
> > >
> > > +        mov     eax,DWORD[240+rdx]
> > >
> > > +        movdqa  xmm1,xmm9
> > >
> > > +        movdqa  xmm2,XMMWORD[$L$k_dipt]
> > >
> > > +        pandn   xmm1,xmm0
> > >
> > > +        mov     r11,rax
> > >
> > > +        psrld   xmm1,4
> > >
> > > +        movdqu  xmm5,XMMWORD[r9]
> > >
> > > +        shl     r11,4
> > >
> > > +        pand    xmm0,xmm9
> > >
> > > +DB      102,15,56,0,208
> > >
> > > +        movdqa  xmm0,XMMWORD[(($L$k_dipt+16))]
> > >
> > > +        xor     r11,0x30
> > >
> > > +        lea     r10,[$L$k_dsbd]
> > >
> > > +DB      102,15,56,0,193
> > >
> > > +        and     r11,0x30
> > >
> > > +        pxor    xmm2,xmm5
> > >
> > > +        movdqa  xmm5,XMMWORD[(($L$k_mc_forward+48))]
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        add     r9,16
> > >
> > > +        add     r11,r10
> > >
> > > +        jmp     NEAR $L$dec_entry
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$dec_loop:
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        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[r10]
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        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[32+r10]
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        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[64+r10]
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        movdqa  xmm1,XMMWORD[80+r10]
> > >
> > > +
> > >
> > > +DB      102,15,56,0,226
> > >
> > > +DB      102,15,56,0,197
> > >
> > > +DB      102,15,56,0,203
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        add     r9,16
> > >
> > > +DB      102,15,58,15,237,12
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        sub     rax,1
> > >
> > > +
> > >
> > > +$L$dec_entry:
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm9
> > >
> > > +        pandn   xmm1,xmm0
> > >
> > > +        movdqa  xmm2,xmm11
> > >
> > > +        psrld   xmm1,4
> > >
> > > +        pand    xmm0,xmm9
> > >
> > > +DB      102,15,56,0,208
> > >
> > > +        movdqa  xmm3,xmm10
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +DB      102,15,56,0,217
> > >
> > > +        movdqa  xmm4,xmm10
> > >
> > > +        pxor    xmm3,xmm2
> > >
> > > +DB      102,15,56,0,224
> > >
> > > +        pxor    xmm4,xmm2
> > >
> > > +        movdqa  xmm2,xmm10
> > >
> > > +DB      102,15,56,0,211
> > >
> > > +        movdqa  xmm3,xmm10
> > >
> > > +        pxor    xmm2,xmm0
> > >
> > > +DB      102,15,56,0,220
> > >
> > > +        movdqu  xmm0,XMMWORD[r9]
> > >
> > > +        pxor    xmm3,xmm1
> > >
> > > +        jnz     NEAR $L$dec_loop
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm4,XMMWORD[96+r10]
> > >
> > > +DB      102,15,56,0,226
> > >
> > > +        pxor    xmm4,xmm0
> > >
> > > +        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
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +_vpaes_schedule_core:
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        call    _vpaes_preheat
> > >
> > > +        movdqa  xmm8,XMMWORD[$L$k_rcon]
> > >
> > > +        movdqu  xmm0,XMMWORD[rdi]
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        lea     r11,[$L$k_ipt]
> > >
> > > +        call    _vpaes_schedule_transform
> > >
> > > +        movdqa  xmm7,xmm0
> > >
> > > +
> > >
> > > +        lea     r10,[$L$k_sr]
> > >
> > > +        test    rcx,rcx
> > >
> > > +        jnz     NEAR $L$schedule_am_decrypting
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqu  XMMWORD[rdx],xmm0
> > >
> > > +        jmp     NEAR $L$schedule_go
> > >
> > > +
> > >
> > > +$L$schedule_am_decrypting:
> > >
> > > +
> > >
> > > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> > >
> > > +DB      102,15,56,0,217
> > >
> > > +        movdqu  XMMWORD[rdx],xmm3
> > >
> > > +        xor     r8,0x30
> > >
> > > +
> > >
> > > +$L$schedule_go:
> > >
> > > +        cmp     esi,192
> > >
> > > +        ja      NEAR $L$schedule_256
> > >
> > > +        je      NEAR $L$schedule_192
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +$L$schedule_128:
> > >
> > > +        mov     esi,10
> > >
> > > +
> > >
> > > +$L$oop_schedule_128:
> > >
> > > +        call    _vpaes_schedule_round
> > >
> > > +        dec     rsi
> > >
> > > +        jz      NEAR $L$schedule_mangle_last
> > >
> > > +        call    _vpaes_schedule_mangle
> > >
> > > +        jmp     NEAR $L$oop_schedule_128
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$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:
> > >
> > > +        call    _vpaes_schedule_round
> > >
> > > +DB      102,15,58,15,198,8
> > >
> > > +        call    _vpaes_schedule_mangle
> > >
> > > +        call    _vpaes_schedule_192_smear
> > >
> > > +        call    _vpaes_schedule_mangle
> > >
> > > +        call    _vpaes_schedule_round
> > >
> > > +        dec     rsi
> > >
> > > +        jz      NEAR $L$schedule_mangle_last
> > >
> > > +        call    _vpaes_schedule_mangle
> > >
> > > +        call    _vpaes_schedule_192_smear
> > >
> > > +        jmp     NEAR $L$oop_schedule_192
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$schedule_256:
> > >
> > > +        movdqu  xmm0,XMMWORD[16+rdi]
> > >
> > > +        call    _vpaes_schedule_transform
> > >
> > > +        mov     esi,7
> > >
> > > +
> > >
> > > +$L$oop_schedule_256:
> > >
> > > +        call    _vpaes_schedule_mangle
> > >
> > > +        movdqa  xmm6,xmm0
> > >
> > > +
> > >
> > > +
> > >
> > > +        call    _vpaes_schedule_round
> > >
> > > +        dec     rsi
> > >
> > > +        jz      NEAR $L$schedule_mangle_last
> > >
> > > +        call    _vpaes_schedule_mangle
> > >
> > > +
> > >
> > > +
> > >
> > > +        pshufd  xmm0,xmm0,0xFF
> > >
> > > +        movdqa  xmm5,xmm7
> > >
> > > +        movdqa  xmm7,xmm6
> > >
> > > +        call    _vpaes_schedule_low_round
> > >
> > > +        movdqa  xmm7,xmm5
> > >
> > > +
> > >
> > > +        jmp     NEAR $L$oop_schedule_256
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$schedule_mangle_last:
> > >
> > > +
> > >
> > > +        lea     r11,[$L$k_deskew]
> > >
> > > +        test    rcx,rcx
> > >
> > > +        jnz     NEAR $L$schedule_mangle_last_dec
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> > >
> > > +DB      102,15,56,0,193
> > >
> > > +        lea     r11,[$L$k_opt]
> > >
> > > +        add     rdx,32
> > >
> > > +
> > >
> > > +$L$schedule_mangle_last_dec:
> > >
> > > +        add     rdx,-16
> > >
> > > +        pxor    xmm0,XMMWORD[$L$k_s63]
> > >
> > > +        call    _vpaes_schedule_transform
> > >
> > > +        movdqu  XMMWORD[rdx],xmm0
> > >
> > > +
> > >
> > > +
> > >
> > > +        pxor    xmm0,xmm0
> > >
> > > +        pxor    xmm1,xmm1
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +        pxor    xmm6,xmm6
> > >
> > > +        pxor    xmm7,xmm7
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +_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
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +_vpaes_schedule_round:
> > >
> > > +
> > >
> > > +
> > >
> > > +        pxor    xmm1,xmm1
> > >
> > > +DB      102,65,15,58,15,200,15
> > >
> > > +DB      102,69,15,58,15,192,15
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        pshufd  xmm0,xmm0,0xFF
> > >
> > > +DB      102,15,58,15,192,1
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +_vpaes_schedule_low_round:
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm7
> > >
> > > +        pslldq  xmm7,4
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        movdqa  xmm1,xmm7
> > >
> > > +        pslldq  xmm7,8
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm7,XMMWORD[$L$k_s63]
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm9
> > >
> > > +        pandn   xmm1,xmm0
> > >
> > > +        psrld   xmm1,4
> > >
> > > +        pand    xmm0,xmm9
> > >
> > > +        movdqa  xmm2,xmm11
> > >
> > > +DB      102,15,56,0,208
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        movdqa  xmm3,xmm10
> > >
> > > +DB      102,15,56,0,217
> > >
> > > +        pxor    xmm3,xmm2
> > >
> > > +        movdqa  xmm4,xmm10
> > >
> > > +DB      102,15,56,0,224
> > >
> > > +        pxor    xmm4,xmm2
> > >
> > > +        movdqa  xmm2,xmm10
> > >
> > > +DB      102,15,56,0,211
> > >
> > > +        pxor    xmm2,xmm0
> > >
> > > +        movdqa  xmm3,xmm10
> > >
> > > +DB      102,15,56,0,220
> > >
> > > +        pxor    xmm3,xmm1
> > >
> > > +        movdqa  xmm4,xmm13
> > >
> > > +DB      102,15,56,0,226
> > >
> > > +        movdqa  xmm0,xmm12
> > >
> > > +DB      102,15,56,0,195
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +
> > >
> > > +
> > >
> > > +        pxor    xmm0,xmm7
> > >
> > > +        movdqa  xmm7,xmm0
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +_vpaes_schedule_transform:
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm9
> > >
> > > +        pandn   xmm1,xmm0
> > >
> > > +        psrld   xmm1,4
> > >
> > > +        pand    xmm0,xmm9
> > >
> > > +        movdqa  xmm2,XMMWORD[r11]
> > >
> > > +DB      102,15,56,0,208
> > >
> > > +        movdqa  xmm0,XMMWORD[16+r11]
> > >
> > > +DB      102,15,56,0,193
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +_vpaes_schedule_mangle:
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        movdqa  xmm5,XMMWORD[$L$k_mc_forward]
> > >
> > > +        test    rcx,rcx
> > >
> > > +        jnz     NEAR $L$schedule_mangle_dec
> > >
> > > +
> > >
> > > +
> > >
> > > +        add     rdx,16
> > >
> > > +        pxor    xmm4,XMMWORD[$L$k_s63]
> > >
> > > +DB      102,15,56,0,229
> > >
> > > +        movdqa  xmm3,xmm4
> > >
> > > +DB      102,15,56,0,229
> > >
> > > +        pxor    xmm3,xmm4
> > >
> > > +DB      102,15,56,0,229
> > >
> > > +        pxor    xmm3,xmm4
> > >
> > > +
> > >
> > > +        jmp     NEAR $L$schedule_mangle_both
> > >
> > > +ALIGN   16
> > >
> > > +$L$schedule_mangle_dec:
> > >
> > > +
> > >
> > > +        lea     r11,[$L$k_dksd]
> > >
> > > +        movdqa  xmm1,xmm9
> > >
> > > +        pandn   xmm1,xmm4
> > >
> > > +        psrld   xmm1,4
> > >
> > > +        pand    xmm4,xmm9
> > >
> > > +
> > >
> > > +        movdqa  xmm2,XMMWORD[r11]
> > >
> > > +DB      102,15,56,0,212
> > >
> > > +        movdqa  xmm3,XMMWORD[16+r11]
> > >
> > > +DB      102,15,56,0,217
> > >
> > > +        pxor    xmm3,xmm2
> > >
> > > +DB      102,15,56,0,221
> > >
> > > +
> > >
> > > +        movdqa  xmm2,XMMWORD[32+r11]
> > >
> > > +DB      102,15,56,0,212
> > >
> > > +        pxor    xmm2,xmm3
> > >
> > > +        movdqa  xmm3,XMMWORD[48+r11]
> > >
> > > +DB      102,15,56,0,217
> > >
> > > +        pxor    xmm3,xmm2
> > >
> > > +DB      102,15,56,0,221
> > >
> > > +
> > >
> > > +        movdqa  xmm2,XMMWORD[64+r11]
> > >
> > > +DB      102,15,56,0,212
> > >
> > > +        pxor    xmm2,xmm3
> > >
> > > +        movdqa  xmm3,XMMWORD[80+r11]
> > >
> > > +DB      102,15,56,0,217
> > >
> > > +        pxor    xmm3,xmm2
> > >
> > > +DB      102,15,56,0,221
> > >
> > > +
> > >
> > > +        movdqa  xmm2,XMMWORD[96+r11]
> > >
> > > +DB      102,15,56,0,212
> > >
> > > +        pxor    xmm2,xmm3
> > >
> > > +        movdqa  xmm3,XMMWORD[112+r11]
> > >
> > > +DB      102,15,56,0,217
> > >
> > > +        pxor    xmm3,xmm2
> > >
> > > +
> > >
> > > +        add     rdx,-16
> > >
> > > +
> > >
> > > +$L$schedule_mangle_both:
> > >
> > > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> > >
> > > +DB      102,15,56,0,217
> > >
> > > +        add     r8,-16
> > >
> > > +        and     r8,0x30
> > >
> > > +        movdqu  XMMWORD[rdx],xmm3
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +global  vpaes_set_encrypt_key
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +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:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        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[240+rdx],eax
> > >
> > > +
> > >
> > > +        mov     ecx,0
> > >
> > > +        mov     r8d,0x30
> > >
> > > +        call    _vpaes_schedule_core
> > >
> > > +        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[8+rsp]        ;WIN64 epilogue
> > >
> > > +        mov     rsi,QWORD[16+rsp]
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +$L$SEH_end_vpaes_set_encrypt_key:
> > >
> > > +
> > >
> > > +global  vpaes_set_decrypt_key
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +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:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        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[240+rdx],eax
> > >
> > > +        shl     eax,4
> > >
> > > +        lea     rdx,[16+rax*1+rdx]
> > >
> > > +
> > >
> > > +        mov     ecx,1
> > >
> > > +        mov     r8d,esi
> > >
> > > +        shr     r8d,1
> > >
> > > +        and     r8d,32
> > >
> > > +        xor     r8d,32
> > >
> > > +        call    _vpaes_schedule_core
> > >
> > > +        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[8+rsp]        ;WIN64 epilogue
> > >
> > > +        mov     rsi,QWORD[16+rsp]
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +$L$SEH_end_vpaes_set_decrypt_key:
> > >
> > > +
> > >
> > > +global  vpaes_encrypt
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +vpaes_encrypt:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_vpaes_encrypt:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        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[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:
> > >
> > > +
> > >
> > > +global  vpaes_decrypt
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +vpaes_decrypt:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_vpaes_decrypt:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        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[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:
> > >
> > > +global  vpaes_cbc_encrypt
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +vpaes_cbc_encrypt:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_vpaes_cbc_encrypt:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +        mov     rcx,r9
> > >
> > > +        mov     r8,QWORD[40+rsp]
> > >
> > > +        mov     r9,QWORD[48+rsp]
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        xchg    rdx,rcx
> > >
> > > +        sub     rcx,16
> > >
> > > +        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      NEAR $L$cbc_dec_loop
> > >
> > > +        jmp     NEAR $L$cbc_enc_loop
> > >
> > > +ALIGN   16
> > >
> > > +$L$cbc_enc_loop:
> > >
> > > +        movdqu  xmm0,XMMWORD[rdi]
> > >
> > > +        pxor    xmm0,xmm6
> > >
> > > +        call    _vpaes_encrypt_core
> > >
> > > +        movdqa  xmm6,xmm0
> > >
> > > +        movdqu  XMMWORD[rdi*1+rsi],xmm0
> > >
> > > +        lea     rdi,[16+rdi]
> > >
> > > +        sub     rcx,16
> > >
> > > +        jnc     NEAR $L$cbc_enc_loop
> > >
> > > +        jmp     NEAR $L$cbc_done
> > >
> > > +ALIGN   16
> > >
> > > +$L$cbc_dec_loop:
> > >
> > > +        movdqu  xmm0,XMMWORD[rdi]
> > >
> > > +        movdqa  xmm7,xmm0
> > >
> > > +        call    _vpaes_decrypt_core
> > >
> > > +        pxor    xmm0,xmm6
> > >
> > > +        movdqa  xmm6,xmm7
> > >
> > > +        movdqu  XMMWORD[rdi*1+rsi],xmm0
> > >
> > > +        lea     rdi,[16+rdi]
> > >
> > > +        sub     rcx,16
> > >
> > > +        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:
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +_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
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   64
> > >
> > > +_vpaes_consts:
> > >
> > > +$L$k_inv:
> > >
> > > +        DQ      0x0E05060F0D080180,0x040703090A0B0C02
> > >
> > > +        DQ      0x01040A060F0B0780,0x030D0E0C02050809
> > >
> > > +
> > >
> > > +$L$k_s0F:
> > >
> > > +        DQ      0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F
> > >
> > > +
> > >
> > > +$L$k_ipt:
> > >
> > > +        DQ      0xC2B2E8985A2A7000,0xCABAE09052227808
> > >
> > > +        DQ      0x4C01307D317C4D00,0xCD80B1FCB0FDCC81
> > >
> > > +
> > >
> > > +$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      0x0407060500030201,0x0C0F0E0D080B0A09
> > >
> > > +        DQ      0x080B0A0904070605,0x000302010C0F0E0D
> > >
> > > +        DQ      0x0C0F0E0D080B0A09,0x0407060500030201
> > >
> > > +        DQ      0x000302010C0F0E0D,0x080B0A0904070605
> > >
> > > +
> > >
> > > +$L$k_mc_backward:
> > >
> > > +        DQ      0x0605040702010003,0x0E0D0C0F0A09080B
> > >
> > > +        DQ      0x020100030E0D0C0F,0x0A09080B06050407
> > >
> > > +        DQ      0x0E0D0C0F0A09080B,0x0605040702010003
> > >
> > > +        DQ      0x0A09080B06050407,0x020100030E0D0C0F
> > >
> > > +
> > >
> > > +$L$k_sr:
> > >
> > > +        DQ      0x0706050403020100,0x0F0E0D0C0B0A0908
> > >
> > > +        DQ      0x030E09040F0A0500,0x0B06010C07020D08
> > >
> > > +        DQ      0x0F060D040B020900,0x070E050C030A0108
> > >
> > > +        DQ      0x0B0E0104070A0D00,0x0306090C0F020508
> > >
> > > +
> > >
> > > +$L$k_rcon:
> > >
> > > +        DQ      0x1F8391B9AF9DEEB6,0x702A98084D7C7D81
> > >
> > > +
> > >
> > > +$L$k_s63:
> > >
> > > +        DQ      0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B
> > >
> > > +
> > >
> > > +$L$k_opt:
> > >
> > > +        DQ      0xFF9F4929D6B66000,0xF7974121DEBE6808
> > >
> > > +        DQ      0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0
> > >
> > > +
> > >
> > > +$L$k_deskew:
> > >
> > > +        DQ      0x07E4A34047A4E300,0x1DFEB95A5DBEF91A
> > >
> > > +        DQ      0x5F36B5DC83EA6900,0x2841C2ABF49D1E77
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +$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      0x0F505B040B545F00,0x154A411E114E451A
> > >
> > > +        DQ      0x86E383E660056500,0x12771772F491F194
> > >
> > > +
> > >
> > > +$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
> > >
> > > +DB      109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32
> > >
> > > +DB      85,110,105,118,101,114,115,105,116,121,41,0
> > >
> > > +ALIGN   64
> > >
> > > +
> > >
> > > +EXTERN  __imp_RtlVirtualUnwind
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +se_handler:
> > >
> > > +        push    rsi
> > >
> > > +        push    rdi
> > >
> > > +        push    rbx
> > >
> > > +        push    rbp
> > >
> > > +        push    r12
> > >
> > > +        push    r13
> > >
> > > +        push    r14
> > >
> > > +        push    r15
> > >
> > > +        pushfq
> > >
> > > +        sub     rsp,64
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[120+r8]
> > >
> > > +        mov     rbx,QWORD[248+r8]
> > >
> > > +
> > >
> > > +        mov     rsi,QWORD[8+r9]
> > >
> > > +        mov     r11,QWORD[56+r9]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$in_prologue
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[152+r8]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[4+r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jae     NEAR $L$in_prologue
> > >
> > > +
> > >
> > > +        lea     rsi,[16+rax]
> > >
> > > +        lea     rdi,[512+r8]
> > >
> > > +        mov     ecx,20
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +        lea     rax,[184+rax]
> > >
> > > +
> > >
> > > +$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[40+r9]
> > >
> > > +        mov     rsi,r8
> > >
> > > +        mov     ecx,154
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +        mov     rsi,r9
> > >
> > > +        xor     rcx,rcx
> > >
> > > +        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
> > >
> > > +        popfq
> > >
> > > +        pop     r15
> > >
> > > +        pop     r14
> > >
> > > +        pop     r13
> > >
> > > +        pop     r12
> > >
> > > +        pop     rbp
> > >
> > > +        pop     rbx
> > >
> > > +        pop     rdi
> > >
> > > +        pop     rsi
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +section .pdata rdata align=4
> > >
> > > +ALIGN   4
> > >
> > > +        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      $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      $L$SEH_begin_vpaes_encrypt wrt ..imagebase
> > >
> > > +        DD      $L$SEH_end_vpaes_encrypt wrt ..imagebase
> > >
> > > +        DD      $L$SEH_info_vpaes_encrypt wrt ..imagebase
> > >
> > > +
> > >
> > > +        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      $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
> > >
> > > +
> > >
> > > +section .xdata rdata align=8
> > >
> > > +ALIGN   8
> > >
> > > +$L$SEH_info_vpaes_set_encrypt_key:
> > >
> > > +DB      9,0,0,0
> > >
> > > +        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      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      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      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      se_handler wrt ..imagebase
> > >
> > > +        DD      $L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt ..imagebase
> > >
> > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
> > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
> > > x86_64.nasm
> > > new file mode 100644
> > > index 0000000000..60f283d5fb
> > > --- /dev/null
> > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm
> > > @@ -0,0 +1,1569 @@
> > > +; WARNING: do not edit!
> > >
> > > +; Generated from openssl/crypto/modes/asm/ghash-x86_64.pl
> > >
> > > +;
> > >
> > > +; Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved.
> > >
> > > +;
> > >
> > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > >
> > > +; this file except in compliance with the License.  You can obtain a copy
> > >
> > > +; in the file LICENSE in the source distribution or at
> > >
> > > +; https://www.openssl.org/source/license.html
> > >
> > > +
> > >
> > > +default rel
> > >
> > > +%define XMMWORD
> > >
> > > +%define YMMWORD
> > >
> > > +%define ZMMWORD
> > >
> > > +section .text code align=64
> > >
> > > +
> > >
> > > +EXTERN  OPENSSL_ia32cap_P
> > >
> > > +
> > >
> > > +global  gcm_gmult_4bit
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +gcm_gmult_4bit:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_gcm_gmult_4bit:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        push    rbx
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        push    r12
> > >
> > > +
> > >
> > > +        push    r13
> > >
> > > +
> > >
> > > +        push    r14
> > >
> > > +
> > >
> > > +        push    r15
> > >
> > > +
> > >
> > > +        sub     rsp,280
> > >
> > > +
> > >
> > > +$L$gmult_prologue:
> > >
> > > +
> > >
> > > +        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[8+rax*1+rsi]
> > >
> > > +        mov     r9,QWORD[rax*1+rsi]
> > >
> > > +        and     bl,0xf0
> > >
> > > +        mov     rdx,r8
> > >
> > > +        jmp     NEAR $L$oop1
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$oop1:
> > >
> > > +        shr     r8,4
> > >
> > > +        and     rdx,0xf
> > >
> > > +        mov     r10,r9
> > >
> > > +        mov     al,BYTE[rcx*1+rdi]
> > >
> > > +        shr     r9,4
> > >
> > > +        xor     r8,QWORD[8+rbx*1+rsi]
> > >
> > > +        shl     r10,60
> > >
> > > +        xor     r9,QWORD[rbx*1+rsi]
> > >
> > > +        mov     bl,al
> > >
> > > +        xor     r9,QWORD[rdx*8+r11]
> > >
> > > +        mov     rdx,r8
> > >
> > > +        shl     al,4
> > >
> > > +        xor     r8,r10
> > >
> > > +        dec     rcx
> > >
> > > +        js      NEAR $L$break1
> > >
> > > +
> > >
> > > +        shr     r8,4
> > >
> > > +        and     rdx,0xf
> > >
> > > +        mov     r10,r9
> > >
> > > +        shr     r9,4
> > >
> > > +        xor     r8,QWORD[8+rax*1+rsi]
> > >
> > > +        shl     r10,60
> > >
> > > +        xor     r9,QWORD[rax*1+rsi]
> > >
> > > +        and     bl,0xf0
> > >
> > > +        xor     r9,QWORD[rdx*8+r11]
> > >
> > > +        mov     rdx,r8
> > >
> > > +        xor     r8,r10
> > >
> > > +        jmp     NEAR $L$oop1
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$break1:
> > >
> > > +        shr     r8,4
> > >
> > > +        and     rdx,0xf
> > >
> > > +        mov     r10,r9
> > >
> > > +        shr     r9,4
> > >
> > > +        xor     r8,QWORD[8+rax*1+rsi]
> > >
> > > +        shl     r10,60
> > >
> > > +        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,0xf
> > >
> > > +        mov     r10,r9
> > >
> > > +        shr     r9,4
> > >
> > > +        xor     r8,QWORD[8+rbx*1+rsi]
> > >
> > > +        shl     r10,60
> > >
> > > +        xor     r9,QWORD[rbx*1+rsi]
> > >
> > > +        xor     r8,r10
> > >
> > > +        xor     r9,QWORD[rdx*8+r11]
> > >
> > > +
> > >
> > > +        bswap   r8
> > >
> > > +        bswap   r9
> > >
> > > +        mov     QWORD[8+rdi],r8
> > >
> > > +        mov     QWORD[rdi],r9
> > >
> > > +
> > >
> > > +        lea     rsi,[((280+48))+rsp]
> > >
> > > +
> > >
> > > +        mov     rbx,QWORD[((-8))+rsi]
> > >
> > > +
> > >
> > > +        lea     rsp,[rsi]
> > >
> > > +
> > >
> > > +$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:
> > >
> > > +global  gcm_ghash_4bit
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +gcm_ghash_4bit:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_gcm_ghash_4bit:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +        mov     rcx,r9
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        push    rbx
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        push    r12
> > >
> > > +
> > >
> > > +        push    r13
> > >
> > > +
> > >
> > > +        push    r14
> > >
> > > +
> > >
> > > +        push    r15
> > >
> > > +
> > >
> > > +        sub     rsp,280
> > >
> > > +
> > >
> > > +$L$ghash_prologue:
> > >
> > > +        mov     r14,rdx
> > >
> > > +        mov     r15,rcx
> > >
> > > +        sub     rsi,-128
> > >
> > > +        lea     rbp,[((16+128))+rsp]
> > >
> > > +        xor     edx,edx
> > >
> > > +        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[((16+0-128))+rsi]
> > >
> > > +        shl     dl,4
> > >
> > > +        mov     rbx,QWORD[((16+8-128))+rsi]
> > >
> > > +        shl     r10,60
> > >
> > > +        mov     BYTE[rsp],dl
> > >
> > > +        or      rax,r10
> > >
> > > +        mov     dl,bl
> > >
> > > +        shr     rbx,4
> > >
> > > +        mov     r10,r9
> > >
> > > +        shr     r9,4
> > >
> > > +        mov     QWORD[rbp],r8
> > >
> > > +        mov     r8,QWORD[((32+0-128))+rsi]
> > >
> > > +        shl     dl,4
> > >
> > > +        mov     QWORD[((0-128))+rbp],rax
> > >
> > > +        mov     rax,QWORD[((32+8-128))+rsi]
> > >
> > > +        shl     r10,60
> > >
> > > +        mov     BYTE[1+rsp],dl
> > >
> > > +        or      rbx,r10
> > >
> > > +        mov     dl,al
> > >
> > > +        shr     rax,4
> > >
> > > +        mov     r10,r8
> > >
> > > +        shr     r8,4
> > >
> > > +        mov     QWORD[8+rbp],r9
> > >
> > > +        mov     r9,QWORD[((48+0-128))+rsi]
> > >
> > > +        shl     dl,4
> > >
> > > +        mov     QWORD[((8-128))+rbp],rbx
> > >
> > > +        mov     rbx,QWORD[((48+8-128))+rsi]
> > >
> > > +        shl     r10,60
> > >
> > > +        mov     BYTE[2+rsp],dl
> > >
> > > +        or      rax,r10
> > >
> > > +        mov     dl,bl
> > >
> > > +        shr     rbx,4
> > >
> > > +        mov     r10,r9
> > >
> > > +        shr     r9,4
> > >
> > > +        mov     QWORD[16+rbp],r8
> > >
> > > +        mov     r8,QWORD[((64+0-128))+rsi]
> > >
> > > +        shl     dl,4
> > >
> > > +        mov     QWORD[((16-128))+rbp],rax
> > >
> > > +        mov     rax,QWORD[((64+8-128))+rsi]
> > >
> > > +        shl     r10,60
> > >
> > > +        mov     BYTE[3+rsp],dl
> > >
> > > +        or      rbx,r10
> > >
> > > +        mov     dl,al
> > >
> > > +        shr     rax,4
> > >
> > > +        mov     r10,r8
> > >
> > > +        shr     r8,4
> > >
> > > +        mov     QWORD[24+rbp],r9
> > >
> > > +        mov     r9,QWORD[((80+0-128))+rsi]
> > >
> > > +        shl     dl,4
> > >
> > > +        mov     QWORD[((24-128))+rbp],rbx
> > >
> > > +        mov     rbx,QWORD[((80+8-128))+rsi]
> > >
> > > +        shl     r10,60
> > >
> > > +        mov     BYTE[4+rsp],dl
> > >
> > > +        or      rax,r10
> > >
> > > +        mov     dl,bl
> > >
> > > +        shr     rbx,4
> > >
> > > +        mov     r10,r9
> > >
> > > +        shr     r9,4
> > >
> > > +        mov     QWORD[32+rbp],r8
> > >
> > > +        mov     r8,QWORD[((96+0-128))+rsi]
> > >
> > > +        shl     dl,4
> > >
> > > +        mov     QWORD[((32-128))+rbp],rax
> > >
> > > +        mov     rax,QWORD[((96+8-128))+rsi]
> > >
> > > +        shl     r10,60
> > >
> > > +        mov     BYTE[5+rsp],dl
> > >
> > > +        or      rbx,r10
> > >
> > > +        mov     dl,al
> > >
> > > +        shr     rax,4
> > >
> > > +        mov     r10,r8
> > >
> > > +        shr     r8,4
> > >
> > > +        mov     QWORD[40+rbp],r9
> > >
> > > +        mov     r9,QWORD[((112+0-128))+rsi]
> > >
> > > +        shl     dl,4
> > >
> > > +        mov     QWORD[((40-128))+rbp],rbx
> > >
> > > +        mov     rbx,QWORD[((112+8-128))+rsi]
> > >
> > > +        shl     r10,60
> > >
> > > +        mov     BYTE[6+rsp],dl
> > >
> > > +        or      rax,r10
> > >
> > > +        mov     dl,bl
> > >
> > > +        shr     rbx,4
> > >
> > > +        mov     r10,r9
> > >
> > > +        shr     r9,4
> > >
> > > +        mov     QWORD[48+rbp],r8
> > >
> > > +        mov     r8,QWORD[((128+0-128))+rsi]
> > >
> > > +        shl     dl,4
> > >
> > > +        mov     QWORD[((48-128))+rbp],rax
> > >
> > > +        mov     rax,QWORD[((128+8-128))+rsi]
> > >
> > > +        shl     r10,60
> > >
> > > +        mov     BYTE[7+rsp],dl
> > >
> > > +        or      rbx,r10
> > >
> > > +        mov     dl,al
> > >
> > > +        shr     rax,4
> > >
> > > +        mov     r10,r8
> > >
> > > +        shr     r8,4
> > >
> > > +        mov     QWORD[56+rbp],r9
> > >
> > > +        mov     r9,QWORD[((144+0-128))+rsi]
> > >
> > > +        shl     dl,4
> > >
> > > +        mov     QWORD[((56-128))+rbp],rbx
> > >
> > > +        mov     rbx,QWORD[((144+8-128))+rsi]
> > >
> > > +        shl     r10,60
> > >
> > > +        mov     BYTE[8+rsp],dl
> > >
> > > +        or      rax,r10
> > >
> > > +        mov     dl,bl
> > >
> > > +        shr     rbx,4
> > >
> > > +        mov     r10,r9
> > >
> > > +        shr     r9,4
> > >
> > > +        mov     QWORD[64+rbp],r8
> > >
> > > +        mov     r8,QWORD[((160+0-128))+rsi]
> > >
> > > +        shl     dl,4
> > >
> > > +        mov     QWORD[((64-128))+rbp],rax
> > >
> > > +        mov     rax,QWORD[((160+8-128))+rsi]
> > >
> > > +        shl     r10,60
> > >
> > > +        mov     BYTE[9+rsp],dl
> > >
> > > +        or      rbx,r10
> > >
> > > +        mov     dl,al
> > >
> > > +        shr     rax,4
> > >
> > > +        mov     r10,r8
> > >
> > > +        shr     r8,4
> > >
> > > +        mov     QWORD[72+rbp],r9
> > >
> > > +        mov     r9,QWORD[((176+0-128))+rsi]
> > >
> > > +        shl     dl,4
> > >
> > > +        mov     QWORD[((72-128))+rbp],rbx
> > >
> > > +        mov     rbx,QWORD[((176+8-128))+rsi]
> > >
> > > +        shl     r10,60
> > >
> > > +        mov     BYTE[10+rsp],dl
> > >
> > > +        or      rax,r10
> > >
> > > +        mov     dl,bl
> > >
> > > +        shr     rbx,4
> > >
> > > +        mov     r10,r9
> > >
> > > +        shr     r9,4
> > >
> > > +        mov     QWORD[80+rbp],r8
> > >
> > > +        mov     r8,QWORD[((192+0-128))+rsi]
> > >
> > > +        shl     dl,4
> > >
> > > +        mov     QWORD[((80-128))+rbp],rax
> > >
> > > +        mov     rax,QWORD[((192+8-128))+rsi]
> > >
> > > +        shl     r10,60
> > >
> > > +        mov     BYTE[11+rsp],dl
> > >
> > > +        or      rbx,r10
> > >
> > > +        mov     dl,al
> > >
> > > +        shr     rax,4
> > >
> > > +        mov     r10,r8
> > >
> > > +        shr     r8,4
> > >
> > > +        mov     QWORD[88+rbp],r9
> > >
> > > +        mov     r9,QWORD[((208+0-128))+rsi]
> > >
> > > +        shl     dl,4
> > >
> > > +        mov     QWORD[((88-128))+rbp],rbx
> > >
> > > +        mov     rbx,QWORD[((208+8-128))+rsi]
> > >
> > > +        shl     r10,60
> > >
> > > +        mov     BYTE[12+rsp],dl
> > >
> > > +        or      rax,r10
> > >
> > > +        mov     dl,bl
> > >
> > > +        shr     rbx,4
> > >
> > > +        mov     r10,r9
> > >
> > > +        shr     r9,4
> > >
> > > +        mov     QWORD[96+rbp],r8
> > >
> > > +        mov     r8,QWORD[((224+0-128))+rsi]
> > >
> > > +        shl     dl,4
> > >
> > > +        mov     QWORD[((96-128))+rbp],rax
> > >
> > > +        mov     rax,QWORD[((224+8-128))+rsi]
> > >
> > > +        shl     r10,60
> > >
> > > +        mov     BYTE[13+rsp],dl
> > >
> > > +        or      rbx,r10
> > >
> > > +        mov     dl,al
> > >
> > > +        shr     rax,4
> > >
> > > +        mov     r10,r8
> > >
> > > +        shr     r8,4
> > >
> > > +        mov     QWORD[104+rbp],r9
> > >
> > > +        mov     r9,QWORD[((240+0-128))+rsi]
> > >
> > > +        shl     dl,4
> > >
> > > +        mov     QWORD[((104-128))+rbp],rbx
> > >
> > > +        mov     rbx,QWORD[((240+8-128))+rsi]
> > >
> > > +        shl     r10,60
> > >
> > > +        mov     BYTE[14+rsp],dl
> > >
> > > +        or      rax,r10
> > >
> > > +        mov     dl,bl
> > >
> > > +        shr     rbx,4
> > >
> > > +        mov     r10,r9
> > >
> > > +        shr     r9,4
> > >
> > > +        mov     QWORD[112+rbp],r8
> > >
> > > +        shl     dl,4
> > >
> > > +        mov     QWORD[((112-128))+rbp],rax
> > >
> > > +        shl     r10,60
> > >
> > > +        mov     BYTE[15+rsp],dl
> > >
> > > +        or      rbx,r10
> > >
> > > +        mov     QWORD[120+rbp],r9
> > >
> > > +        mov     QWORD[((120-128))+rbp],rbx
> > >
> > > +        add     rsi,-128
> > >
> > > +        mov     r8,QWORD[8+rdi]
> > >
> > > +        mov     r9,QWORD[rdi]
> > >
> > > +        add     r15,r14
> > >
> > > +        lea     r11,[$L$rem_8bit]
> > >
> > > +        jmp     NEAR $L$outer_loop
> > >
> > > +ALIGN   16
> > >
> > > +$L$outer_loop:
> > >
> > > +        xor     r9,QWORD[r14]
> > >
> > > +        mov     rdx,QWORD[8+r14]
> > >
> > > +        lea     r14,[16+r14]
> > >
> > > +        xor     rdx,r8
> > >
> > > +        mov     QWORD[rdi],r9
> > >
> > > +        mov     QWORD[8+rdi],rdx
> > >
> > > +        shr     rdx,32
> > >
> > > +        xor     rax,rax
> > >
> > > +        rol     edx,8
> > >
> > > +        mov     al,dl
> > >
> > > +        movzx   ebx,dl
> > >
> > > +        shl     al,4
> > >
> > > +        shr     ebx,4
> > >
> > > +        rol     edx,8
> > >
> > > +        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[rbx*1+rsp]
> > >
> > > +        shr     ecx,4
> > >
> > > +        xor     r12,r8
> > >
> > > +        mov     r10,r9
> > >
> > > +        shr     r8,8
> > >
> > > +        movzx   r12,r12b
> > >
> > > +        shr     r9,8
> > >
> > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > >
> > > +        shl     r10,56
> > >
> > > +        xor     r9,QWORD[rbx*8+rbp]
> > >
> > > +        rol     edx,8
> > >
> > > +        xor     r8,QWORD[8+rax*1+rsi]
> > >
> > > +        xor     r9,QWORD[rax*1+rsi]
> > >
> > > +        mov     al,dl
> > >
> > > +        xor     r8,r10
> > >
> > > +        movzx   r12,WORD[r12*2+r11]
> > >
> > > +        movzx   ebx,dl
> > >
> > > +        shl     al,4
> > >
> > > +        movzx   r13,BYTE[rcx*1+rsp]
> > >
> > > +        shr     ebx,4
> > >
> > > +        shl     r12,48
> > >
> > > +        xor     r13,r8
> > >
> > > +        mov     r10,r9
> > >
> > > +        xor     r9,r12
> > >
> > > +        shr     r8,8
> > >
> > > +        movzx   r13,r13b
> > >
> > > +        shr     r9,8
> > >
> > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > >
> > > +        shl     r10,56
> > >
> > > +        xor     r9,QWORD[rcx*8+rbp]
> > >
> > > +        rol     edx,8
> > >
> > > +        xor     r8,QWORD[8+rax*1+rsi]
> > >
> > > +        xor     r9,QWORD[rax*1+rsi]
> > >
> > > +        mov     al,dl
> > >
> > > +        xor     r8,r10
> > >
> > > +        movzx   r13,WORD[r13*2+r11]
> > >
> > > +        movzx   ecx,dl
> > >
> > > +        shl     al,4
> > >
> > > +        movzx   r12,BYTE[rbx*1+rsp]
> > >
> > > +        shr     ecx,4
> > >
> > > +        shl     r13,48
> > >
> > > +        xor     r12,r8
> > >
> > > +        mov     r10,r9
> > >
> > > +        xor     r9,r13
> > >
> > > +        shr     r8,8
> > >
> > > +        movzx   r12,r12b
> > >
> > > +        mov     edx,DWORD[8+rdi]
> > >
> > > +        shr     r9,8
> > >
> > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > >
> > > +        shl     r10,56
> > >
> > > +        xor     r9,QWORD[rbx*8+rbp]
> > >
> > > +        rol     edx,8
> > >
> > > +        xor     r8,QWORD[8+rax*1+rsi]
> > >
> > > +        xor     r9,QWORD[rax*1+rsi]
> > >
> > > +        mov     al,dl
> > >
> > > +        xor     r8,r10
> > >
> > > +        movzx   r12,WORD[r12*2+r11]
> > >
> > > +        movzx   ebx,dl
> > >
> > > +        shl     al,4
> > >
> > > +        movzx   r13,BYTE[rcx*1+rsp]
> > >
> > > +        shr     ebx,4
> > >
> > > +        shl     r12,48
> > >
> > > +        xor     r13,r8
> > >
> > > +        mov     r10,r9
> > >
> > > +        xor     r9,r12
> > >
> > > +        shr     r8,8
> > >
> > > +        movzx   r13,r13b
> > >
> > > +        shr     r9,8
> > >
> > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > >
> > > +        shl     r10,56
> > >
> > > +        xor     r9,QWORD[rcx*8+rbp]
> > >
> > > +        rol     edx,8
> > >
> > > +        xor     r8,QWORD[8+rax*1+rsi]
> > >
> > > +        xor     r9,QWORD[rax*1+rsi]
> > >
> > > +        mov     al,dl
> > >
> > > +        xor     r8,r10
> > >
> > > +        movzx   r13,WORD[r13*2+r11]
> > >
> > > +        movzx   ecx,dl
> > >
> > > +        shl     al,4
> > >
> > > +        movzx   r12,BYTE[rbx*1+rsp]
> > >
> > > +        shr     ecx,4
> > >
> > > +        shl     r13,48
> > >
> > > +        xor     r12,r8
> > >
> > > +        mov     r10,r9
> > >
> > > +        xor     r9,r13
> > >
> > > +        shr     r8,8
> > >
> > > +        movzx   r12,r12b
> > >
> > > +        shr     r9,8
> > >
> > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > >
> > > +        shl     r10,56
> > >
> > > +        xor     r9,QWORD[rbx*8+rbp]
> > >
> > > +        rol     edx,8
> > >
> > > +        xor     r8,QWORD[8+rax*1+rsi]
> > >
> > > +        xor     r9,QWORD[rax*1+rsi]
> > >
> > > +        mov     al,dl
> > >
> > > +        xor     r8,r10
> > >
> > > +        movzx   r12,WORD[r12*2+r11]
> > >
> > > +        movzx   ebx,dl
> > >
> > > +        shl     al,4
> > >
> > > +        movzx   r13,BYTE[rcx*1+rsp]
> > >
> > > +        shr     ebx,4
> > >
> > > +        shl     r12,48
> > >
> > > +        xor     r13,r8
> > >
> > > +        mov     r10,r9
> > >
> > > +        xor     r9,r12
> > >
> > > +        shr     r8,8
> > >
> > > +        movzx   r13,r13b
> > >
> > > +        shr     r9,8
> > >
> > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > >
> > > +        shl     r10,56
> > >
> > > +        xor     r9,QWORD[rcx*8+rbp]
> > >
> > > +        rol     edx,8
> > >
> > > +        xor     r8,QWORD[8+rax*1+rsi]
> > >
> > > +        xor     r9,QWORD[rax*1+rsi]
> > >
> > > +        mov     al,dl
> > >
> > > +        xor     r8,r10
> > >
> > > +        movzx   r13,WORD[r13*2+r11]
> > >
> > > +        movzx   ecx,dl
> > >
> > > +        shl     al,4
> > >
> > > +        movzx   r12,BYTE[rbx*1+rsp]
> > >
> > > +        shr     ecx,4
> > >
> > > +        shl     r13,48
> > >
> > > +        xor     r12,r8
> > >
> > > +        mov     r10,r9
> > >
> > > +        xor     r9,r13
> > >
> > > +        shr     r8,8
> > >
> > > +        movzx   r12,r12b
> > >
> > > +        mov     edx,DWORD[4+rdi]
> > >
> > > +        shr     r9,8
> > >
> > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > >
> > > +        shl     r10,56
> > >
> > > +        xor     r9,QWORD[rbx*8+rbp]
> > >
> > > +        rol     edx,8
> > >
> > > +        xor     r8,QWORD[8+rax*1+rsi]
> > >
> > > +        xor     r9,QWORD[rax*1+rsi]
> > >
> > > +        mov     al,dl
> > >
> > > +        xor     r8,r10
> > >
> > > +        movzx   r12,WORD[r12*2+r11]
> > >
> > > +        movzx   ebx,dl
> > >
> > > +        shl     al,4
> > >
> > > +        movzx   r13,BYTE[rcx*1+rsp]
> > >
> > > +        shr     ebx,4
> > >
> > > +        shl     r12,48
> > >
> > > +        xor     r13,r8
> > >
> > > +        mov     r10,r9
> > >
> > > +        xor     r9,r12
> > >
> > > +        shr     r8,8
> > >
> > > +        movzx   r13,r13b
> > >
> > > +        shr     r9,8
> > >
> > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > >
> > > +        shl     r10,56
> > >
> > > +        xor     r9,QWORD[rcx*8+rbp]
> > >
> > > +        rol     edx,8
> > >
> > > +        xor     r8,QWORD[8+rax*1+rsi]
> > >
> > > +        xor     r9,QWORD[rax*1+rsi]
> > >
> > > +        mov     al,dl
> > >
> > > +        xor     r8,r10
> > >
> > > +        movzx   r13,WORD[r13*2+r11]
> > >
> > > +        movzx   ecx,dl
> > >
> > > +        shl     al,4
> > >
> > > +        movzx   r12,BYTE[rbx*1+rsp]
> > >
> > > +        shr     ecx,4
> > >
> > > +        shl     r13,48
> > >
> > > +        xor     r12,r8
> > >
> > > +        mov     r10,r9
> > >
> > > +        xor     r9,r13
> > >
> > > +        shr     r8,8
> > >
> > > +        movzx   r12,r12b
> > >
> > > +        shr     r9,8
> > >
> > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > >
> > > +        shl     r10,56
> > >
> > > +        xor     r9,QWORD[rbx*8+rbp]
> > >
> > > +        rol     edx,8
> > >
> > > +        xor     r8,QWORD[8+rax*1+rsi]
> > >
> > > +        xor     r9,QWORD[rax*1+rsi]
> > >
> > > +        mov     al,dl
> > >
> > > +        xor     r8,r10
> > >
> > > +        movzx   r12,WORD[r12*2+r11]
> > >
> > > +        movzx   ebx,dl
> > >
> > > +        shl     al,4
> > >
> > > +        movzx   r13,BYTE[rcx*1+rsp]
> > >
> > > +        shr     ebx,4
> > >
> > > +        shl     r12,48
> > >
> > > +        xor     r13,r8
> > >
> > > +        mov     r10,r9
> > >
> > > +        xor     r9,r12
> > >
> > > +        shr     r8,8
> > >
> > > +        movzx   r13,r13b
> > >
> > > +        shr     r9,8
> > >
> > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > >
> > > +        shl     r10,56
> > >
> > > +        xor     r9,QWORD[rcx*8+rbp]
> > >
> > > +        rol     edx,8
> > >
> > > +        xor     r8,QWORD[8+rax*1+rsi]
> > >
> > > +        xor     r9,QWORD[rax*1+rsi]
> > >
> > > +        mov     al,dl
> > >
> > > +        xor     r8,r10
> > >
> > > +        movzx   r13,WORD[r13*2+r11]
> > >
> > > +        movzx   ecx,dl
> > >
> > > +        shl     al,4
> > >
> > > +        movzx   r12,BYTE[rbx*1+rsp]
> > >
> > > +        shr     ecx,4
> > >
> > > +        shl     r13,48
> > >
> > > +        xor     r12,r8
> > >
> > > +        mov     r10,r9
> > >
> > > +        xor     r9,r13
> > >
> > > +        shr     r8,8
> > >
> > > +        movzx   r12,r12b
> > >
> > > +        mov     edx,DWORD[rdi]
> > >
> > > +        shr     r9,8
> > >
> > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > >
> > > +        shl     r10,56
> > >
> > > +        xor     r9,QWORD[rbx*8+rbp]
> > >
> > > +        rol     edx,8
> > >
> > > +        xor     r8,QWORD[8+rax*1+rsi]
> > >
> > > +        xor     r9,QWORD[rax*1+rsi]
> > >
> > > +        mov     al,dl
> > >
> > > +        xor     r8,r10
> > >
> > > +        movzx   r12,WORD[r12*2+r11]
> > >
> > > +        movzx   ebx,dl
> > >
> > > +        shl     al,4
> > >
> > > +        movzx   r13,BYTE[rcx*1+rsp]
> > >
> > > +        shr     ebx,4
> > >
> > > +        shl     r12,48
> > >
> > > +        xor     r13,r8
> > >
> > > +        mov     r10,r9
> > >
> > > +        xor     r9,r12
> > >
> > > +        shr     r8,8
> > >
> > > +        movzx   r13,r13b
> > >
> > > +        shr     r9,8
> > >
> > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > >
> > > +        shl     r10,56
> > >
> > > +        xor     r9,QWORD[rcx*8+rbp]
> > >
> > > +        rol     edx,8
> > >
> > > +        xor     r8,QWORD[8+rax*1+rsi]
> > >
> > > +        xor     r9,QWORD[rax*1+rsi]
> > >
> > > +        mov     al,dl
> > >
> > > +        xor     r8,r10
> > >
> > > +        movzx   r13,WORD[r13*2+r11]
> > >
> > > +        movzx   ecx,dl
> > >
> > > +        shl     al,4
> > >
> > > +        movzx   r12,BYTE[rbx*1+rsp]
> > >
> > > +        shr     ecx,4
> > >
> > > +        shl     r13,48
> > >
> > > +        xor     r12,r8
> > >
> > > +        mov     r10,r9
> > >
> > > +        xor     r9,r13
> > >
> > > +        shr     r8,8
> > >
> > > +        movzx   r12,r12b
> > >
> > > +        shr     r9,8
> > >
> > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > >
> > > +        shl     r10,56
> > >
> > > +        xor     r9,QWORD[rbx*8+rbp]
> > >
> > > +        rol     edx,8
> > >
> > > +        xor     r8,QWORD[8+rax*1+rsi]
> > >
> > > +        xor     r9,QWORD[rax*1+rsi]
> > >
> > > +        mov     al,dl
> > >
> > > +        xor     r8,r10
> > >
> > > +        movzx   r12,WORD[r12*2+r11]
> > >
> > > +        movzx   ebx,dl
> > >
> > > +        shl     al,4
> > >
> > > +        movzx   r13,BYTE[rcx*1+rsp]
> > >
> > > +        shr     ebx,4
> > >
> > > +        shl     r12,48
> > >
> > > +        xor     r13,r8
> > >
> > > +        mov     r10,r9
> > >
> > > +        xor     r9,r12
> > >
> > > +        shr     r8,8
> > >
> > > +        movzx   r13,r13b
> > >
> > > +        shr     r9,8
> > >
> > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > >
> > > +        shl     r10,56
> > >
> > > +        xor     r9,QWORD[rcx*8+rbp]
> > >
> > > +        rol     edx,8
> > >
> > > +        xor     r8,QWORD[8+rax*1+rsi]
> > >
> > > +        xor     r9,QWORD[rax*1+rsi]
> > >
> > > +        mov     al,dl
> > >
> > > +        xor     r8,r10
> > >
> > > +        movzx   r13,WORD[r13*2+r11]
> > >
> > > +        movzx   ecx,dl
> > >
> > > +        shl     al,4
> > >
> > > +        movzx   r12,BYTE[rbx*1+rsp]
> > >
> > > +        and     ecx,240
> > >
> > > +        shl     r13,48
> > >
> > > +        xor     r12,r8
> > >
> > > +        mov     r10,r9
> > >
> > > +        xor     r9,r13
> > >
> > > +        shr     r8,8
> > >
> > > +        movzx   r12,r12b
> > >
> > > +        mov     edx,DWORD[((-4))+rdi]
> > >
> > > +        shr     r9,8
> > >
> > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > >
> > > +        shl     r10,56
> > >
> > > +        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
> > >
> > > +        movzx   r13,r8b
> > >
> > > +        shr     r8,4
> > >
> > > +        mov     r10,r9
> > >
> > > +        shl     r13b,4
> > >
> > > +        shr     r9,4
> > >
> > > +        xor     r8,QWORD[8+rcx*1+rsi]
> > >
> > > +        movzx   r13,WORD[r13*2+r11]
> > >
> > > +        shl     r10,60
> > >
> > > +        xor     r9,QWORD[rcx*1+rsi]
> > >
> > > +        xor     r8,r10
> > >
> > > +        shl     r13,48
> > >
> > > +        bswap   r8
> > >
> > > +        xor     r9,r13
> > >
> > > +        bswap   r9
> > >
> > > +        cmp     r14,r15
> > >
> > > +        jb      NEAR $L$outer_loop
> > >
> > > +        mov     QWORD[8+rdi],r8
> > >
> > > +        mov     QWORD[rdi],r9
> > >
> > > +
> > >
> > > +        lea     rsi,[((280+48))+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$ghash_epilogue:
> > >
> > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > >
> > > +        mov     rsi,QWORD[16+rsp]
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +$L$SEH_end_gcm_ghash_4bit:
> > >
> > > +global  gcm_init_clmul
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +gcm_init_clmul:
> > >
> > > +
> > >
> > > +$L$_init_clmul:
> > >
> > > +$L$SEH_begin_gcm_init_clmul:
> > >
> > > +
> > >
> > > +DB      0x48,0x83,0xec,0x18
> > >
> > > +DB      0x0f,0x29,0x34,0x24
> > >
> > > +        movdqu  xmm2,XMMWORD[rdx]
> > >
> > > +        pshufd  xmm2,xmm2,78
> > >
> > > +
> > >
> > > +
> > >
> > > +        pshufd  xmm4,xmm2,255
> > >
> > > +        movdqa  xmm3,xmm2
> > >
> > > +        psllq   xmm2,1
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +        psrlq   xmm3,63
> > >
> > > +        pcmpgtd xmm5,xmm4
> > >
> > > +        pslldq  xmm3,8
> > >
> > > +        por     xmm2,xmm3
> > >
> > > +
> > >
> > > +
> > >
> > > +        pand    xmm5,XMMWORD[$L$0x1c2_polynomial]
> > >
> > > +        pxor    xmm2,xmm5
> > >
> > > +
> > >
> > > +
> > >
> > > +        pshufd  xmm6,xmm2,78
> > >
> > > +        movdqa  xmm0,xmm2
> > >
> > > +        pxor    xmm6,xmm2
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +        pshufd  xmm3,xmm0,78
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +DB      102,15,58,68,194,0
> > >
> > > +DB      102,15,58,68,202,17
> > >
> > > +DB      102,15,58,68,222,0
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        pxor    xmm3,xmm1
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm3
> > >
> > > +        psrldq  xmm3,8
> > >
> > > +        pslldq  xmm4,8
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        psllq   xmm0,5
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        psllq   xmm0,1
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        psllq   xmm0,57
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        pslldq  xmm0,8
> > >
> > > +        psrldq  xmm3,8
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        psrlq   xmm0,1
> > >
> > > +        pxor    xmm1,xmm4
> > >
> > > +        pxor    xmm4,xmm0
> > >
> > > +        psrlq   xmm0,5
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        psrlq   xmm0,1
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        pshufd  xmm3,xmm2,78
> > >
> > > +        pshufd  xmm4,xmm0,78
> > >
> > > +        pxor    xmm3,xmm2
> > >
> > > +        movdqu  XMMWORD[rcx],xmm2
> > >
> > > +        pxor    xmm4,xmm0
> > >
> > > +        movdqu  XMMWORD[16+rcx],xmm0
> > >
> > > +DB      102,15,58,15,227,8
> > >
> > > +        movdqu  XMMWORD[32+rcx],xmm4
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +        pshufd  xmm3,xmm0,78
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +DB      102,15,58,68,194,0
> > >
> > > +DB      102,15,58,68,202,17
> > >
> > > +DB      102,15,58,68,222,0
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        pxor    xmm3,xmm1
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm3
> > >
> > > +        psrldq  xmm3,8
> > >
> > > +        pslldq  xmm4,8
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        psllq   xmm0,5
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        psllq   xmm0,1
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        psllq   xmm0,57
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        pslldq  xmm0,8
> > >
> > > +        psrldq  xmm3,8
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        psrlq   xmm0,1
> > >
> > > +        pxor    xmm1,xmm4
> > >
> > > +        pxor    xmm4,xmm0
> > >
> > > +        psrlq   xmm0,5
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        psrlq   xmm0,1
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        movdqa  xmm5,xmm0
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +        pshufd  xmm3,xmm0,78
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +DB      102,15,58,68,194,0
> > >
> > > +DB      102,15,58,68,202,17
> > >
> > > +DB      102,15,58,68,222,0
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        pxor    xmm3,xmm1
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm3
> > >
> > > +        psrldq  xmm3,8
> > >
> > > +        pslldq  xmm4,8
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        psllq   xmm0,5
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        psllq   xmm0,1
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        psllq   xmm0,57
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        pslldq  xmm0,8
> > >
> > > +        psrldq  xmm3,8
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        psrlq   xmm0,1
> > >
> > > +        pxor    xmm1,xmm4
> > >
> > > +        pxor    xmm4,xmm0
> > >
> > > +        psrlq   xmm0,5
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        psrlq   xmm0,1
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        pshufd  xmm3,xmm5,78
> > >
> > > +        pshufd  xmm4,xmm0,78
> > >
> > > +        pxor    xmm3,xmm5
> > >
> > > +        movdqu  XMMWORD[48+rcx],xmm5
> > >
> > > +        pxor    xmm4,xmm0
> > >
> > > +        movdqu  XMMWORD[64+rcx],xmm0
> > >
> > > +DB      102,15,58,15,227,8
> > >
> > > +        movdqu  XMMWORD[80+rcx],xmm4
> > >
> > > +        movaps  xmm6,XMMWORD[rsp]
> > >
> > > +        lea     rsp,[24+rsp]
> > >
> > > +$L$SEH_end_gcm_init_clmul:
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +global  gcm_gmult_clmul
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +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
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +DB      102,15,58,68,194,0
> > >
> > > +DB      102,15,58,68,202,17
> > >
> > > +DB      102,15,58,68,220,0
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        pxor    xmm3,xmm1
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm3
> > >
> > > +        psrldq  xmm3,8
> > >
> > > +        pslldq  xmm4,8
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        psllq   xmm0,5
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        psllq   xmm0,1
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        psllq   xmm0,57
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        pslldq  xmm0,8
> > >
> > > +        psrldq  xmm3,8
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        psrlq   xmm0,1
> > >
> > > +        pxor    xmm1,xmm4
> > >
> > > +        pxor    xmm4,xmm0
> > >
> > > +        psrlq   xmm0,5
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        psrlq   xmm0,1
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +DB      102,15,56,0,197
> > >
> > > +        movdqu  XMMWORD[rcx],xmm0
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +global  gcm_ghash_clmul
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +gcm_ghash_clmul:
> > >
> > > +
> > >
> > > +$L$_ghash_clmul:
> > >
> > > +        lea     rax,[((-136))+rsp]
> > >
> > > +$L$SEH_begin_gcm_ghash_clmul:
> > >
> > > +
> > >
> > > +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[rcx]
> > >
> > > +        movdqu  xmm2,XMMWORD[rdx]
> > >
> > > +        movdqu  xmm7,XMMWORD[32+rdx]
> > >
> > > +DB      102,65,15,56,0,194
> > >
> > > +
> > >
> > > +        sub     r9,0x10
> > >
> > > +        jz      NEAR $L$odd_tail
> > >
> > > +
> > >
> > > +        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      NEAR $L$skip4x
> > >
> > > +
> > >
> > > +        sub     r9,0x30
> > >
> > > +        mov     rax,0xA040608020C0E000
> > >
> > > +        movdqu  xmm14,XMMWORD[48+rdx]
> > >
> > > +        movdqu  xmm15,XMMWORD[64+rdx]
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        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
> > >
> > > +        pshufd  xmm4,xmm3,78
> > >
> > > +        pxor    xmm4,xmm3
> > >
> > > +DB      102,15,58,68,218,0
> > >
> > > +DB      102,15,58,68,234,17
> > >
> > > +DB      102,15,58,68,231,0
> > >
> > > +
> > >
> > > +        movdqa  xmm13,xmm11
> > >
> > > +        pshufd  xmm12,xmm11,78
> > >
> > > +        pxor    xmm12,xmm11
> > >
> > > +DB      102,68,15,58,68,222,0
> > >
> > > +DB      102,68,15,58,68,238,17
> > >
> > > +DB      102,68,15,58,68,231,16
> > >
> > > +        xorps   xmm3,xmm11
> > >
> > > +        xorps   xmm5,xmm13
> > >
> > > +        movups  xmm7,XMMWORD[80+rdx]
> > >
> > > +        xorps   xmm4,xmm12
> > >
> > > +
> > >
> > > +        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
> > >
> > > +        pshufd  xmm12,xmm11,78
> > >
> > > +        pxor    xmm0,xmm8
> > >
> > > +        pxor    xmm12,xmm11
> > >
> > > +DB      102,69,15,58,68,222,0
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +        pshufd  xmm8,xmm0,78
> > >
> > > +        pxor    xmm8,xmm0
> > >
> > > +DB      102,69,15,58,68,238,17
> > >
> > > +DB      102,68,15,58,68,231,0
> > >
> > > +        xorps   xmm3,xmm11
> > >
> > > +        xorps   xmm5,xmm13
> > >
> > > +
> > >
> > > +        lea     r8,[64+r8]
> > >
> > > +        sub     r9,0x40
> > >
> > > +        jc      NEAR $L$tail4x
> > >
> > > +
> > >
> > > +        jmp     NEAR $L$mod4_loop
> > >
> > > +ALIGN   32
> > >
> > > +$L$mod4_loop:
> > >
> > > +DB      102,65,15,58,68,199,0
> > >
> > > +        xorps   xmm4,xmm12
> > >
> > > +        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[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[32+rdx]
> > >
> > > +        xorps   xmm8,xmm4
> > >
> > > +DB      102,68,15,58,68,218,0
> > >
> > > +        pshufd  xmm4,xmm3,78
> > >
> > > +
> > >
> > > +        pxor    xmm8,xmm0
> > >
> > > +        movdqa  xmm5,xmm3
> > >
> > > +        pxor    xmm8,xmm1
> > >
> > > +        pxor    xmm4,xmm3
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      102,68,15,58,68,234,17
> > >
> > > +        pslldq  xmm8,8
> > >
> > > +        psrldq  xmm9,8
> > >
> > > +        pxor    xmm0,xmm8
> > >
> > > +        movdqa  xmm8,XMMWORD[$L$7_mask]
> > >
> > > +        pxor    xmm1,xmm9
> > >
> > > +DB      102,76,15,110,200
> > >
> > > +
> > >
> > > +        pand    xmm8,xmm0
> > >
> > > +DB      102,69,15,56,0,200
> > >
> > > +        pxor    xmm9,xmm0
> > >
> > > +DB      102,68,15,58,68,231,0
> > >
> > > +        psllq   xmm9,57
> > >
> > > +        movdqa  xmm8,xmm9
> > >
> > > +        pslldq  xmm9,8
> > >
> > > +DB      102,15,58,68,222,0
> > >
> > > +        psrldq  xmm8,8
> > >
> > > +        pxor    xmm0,xmm9
> > >
> > > +        pxor    xmm1,xmm8
> > >
> > > +        movdqu  xmm8,XMMWORD[r8]
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm0
> > >
> > > +        psrlq   xmm0,1
> > >
> > > +DB      102,15,58,68,238,17
> > >
> > > +        xorps   xmm3,xmm11
> > >
> > > +        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[80+rdx]
> > >
> > > +DB      102,69,15,56,0,194
> > >
> > > +        pxor    xmm1,xmm9
> > >
> > > +        pxor    xmm9,xmm0
> > >
> > > +        psrlq   xmm0,5
> > >
> > > +
> > >
> > > +        movdqa  xmm13,xmm11
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        pshufd  xmm12,xmm11,78
> > >
> > > +        pxor    xmm0,xmm9
> > >
> > > +        pxor    xmm1,xmm8
> > >
> > > +        pxor    xmm12,xmm11
> > >
> > > +DB      102,69,15,58,68,222,0
> > >
> > > +        psrlq   xmm0,1
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +DB      102,69,15,58,68,238,17
> > >
> > > +        xorps   xmm3,xmm11
> > >
> > > +        pshufd  xmm8,xmm0,78
> > >
> > > +        pxor    xmm8,xmm0
> > >
> > > +
> > >
> > > +DB      102,68,15,58,68,231,0
> > >
> > > +        xorps   xmm5,xmm13
> > >
> > > +
> > >
> > > +        lea     r8,[64+r8]
> > >
> > > +        sub     r9,0x40
> > >
> > > +        jnc     NEAR $L$mod4_loop
> > >
> > > +
> > >
> > > +$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
> > >
> > > +        xorps   xmm4,xmm12
> > >
> > > +        xorps   xmm0,xmm3
> > >
> > > +        xorps   xmm1,xmm5
> > >
> > > +        pxor    xmm1,xmm0
> > >
> > > +        pxor    xmm8,xmm4
> > >
> > > +
> > >
> > > +        pxor    xmm8,xmm1
> > >
> > > +        pxor    xmm1,xmm0
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +        psrldq  xmm8,8
> > >
> > > +        pslldq  xmm9,8
> > >
> > > +        pxor    xmm1,xmm8
> > >
> > > +        pxor    xmm0,xmm9
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        psllq   xmm0,5
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        psllq   xmm0,1
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        psllq   xmm0,57
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        pslldq  xmm0,8
> > >
> > > +        psrldq  xmm3,8
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        psrlq   xmm0,1
> > >
> > > +        pxor    xmm1,xmm4
> > >
> > > +        pxor    xmm4,xmm0
> > >
> > > +        psrlq   xmm0,5
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        psrlq   xmm0,1
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        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[r8]
> > >
> > > +        movdqu  xmm3,XMMWORD[16+r8]
> > >
> > > +DB      102,69,15,56,0,194
> > >
> > > +DB      102,65,15,56,0,218
> > >
> > > +        pxor    xmm0,xmm8
> > >
> > > +
> > >
> > > +        movdqa  xmm5,xmm3
> > >
> > > +        pshufd  xmm4,xmm3,78
> > >
> > > +        pxor    xmm4,xmm3
> > >
> > > +DB      102,15,58,68,218,0
> > >
> > > +DB      102,15,58,68,234,17
> > >
> > > +DB      102,15,58,68,231,0
> > >
> > > +
> > >
> > > +        lea     r8,[32+r8]
> > >
> > > +        nop
> > >
> > > +        sub     r9,0x20
> > >
> > > +        jbe     NEAR $L$even_tail
> > >
> > > +        nop
> > >
> > > +        jmp     NEAR $L$mod_loop
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$mod_loop:
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +        movdqa  xmm8,xmm4
> > >
> > > +        pshufd  xmm4,xmm0,78
> > >
> > > +        pxor    xmm4,xmm0
> > >
> > > +
> > >
> > > +DB      102,15,58,68,198,0
> > >
> > > +DB      102,15,58,68,206,17
> > >
> > > +DB      102,15,58,68,231,16
> > >
> > > +
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        pxor    xmm1,xmm5
> > >
> > > +        movdqu  xmm9,XMMWORD[r8]
> > >
> > > +        pxor    xmm8,xmm0
> > >
> > > +DB      102,69,15,56,0,202
> > >
> > > +        movdqu  xmm3,XMMWORD[16+r8]
> > >
> > > +
> > >
> > > +        pxor    xmm8,xmm1
> > >
> > > +        pxor    xmm1,xmm9
> > >
> > > +        pxor    xmm4,xmm8
> > >
> > > +DB      102,65,15,56,0,218
> > >
> > > +        movdqa  xmm8,xmm4
> > >
> > > +        psrldq  xmm8,8
> > >
> > > +        pslldq  xmm4,8
> > >
> > > +        pxor    xmm1,xmm8
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +
> > >
> > > +        movdqa  xmm5,xmm3
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm0
> > >
> > > +        movdqa  xmm8,xmm0
> > >
> > > +        psllq   xmm0,5
> > >
> > > +        pxor    xmm8,xmm0
> > >
> > > +DB      102,15,58,68,218,0
> > >
> > > +        psllq   xmm0,1
> > >
> > > +        pxor    xmm0,xmm8
> > >
> > > +        psllq   xmm0,57
> > >
> > > +        movdqa  xmm8,xmm0
> > >
> > > +        pslldq  xmm0,8
> > >
> > > +        psrldq  xmm8,8
> > >
> > > +        pxor    xmm0,xmm9
> > >
> > > +        pshufd  xmm4,xmm5,78
> > >
> > > +        pxor    xmm1,xmm8
> > >
> > > +        pxor    xmm4,xmm5
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm0
> > >
> > > +        psrlq   xmm0,1
> > >
> > > +DB      102,15,58,68,234,17
> > >
> > > +        pxor    xmm1,xmm9
> > >
> > > +        pxor    xmm9,xmm0
> > >
> > > +        psrlq   xmm0,5
> > >
> > > +        pxor    xmm0,xmm9
> > >
> > > +        lea     r8,[32+r8]
> > >
> > > +        psrlq   xmm0,1
> > >
> > > +DB      102,15,58,68,231,0
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +
> > >
> > > +        sub     r9,0x20
> > >
> > > +        ja      NEAR $L$mod_loop
> > >
> > > +
> > >
> > > +$L$even_tail:
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +        movdqa  xmm8,xmm4
> > >
> > > +        pshufd  xmm4,xmm0,78
> > >
> > > +        pxor    xmm4,xmm0
> > >
> > > +
> > >
> > > +DB      102,15,58,68,198,0
> > >
> > > +DB      102,15,58,68,206,17
> > >
> > > +DB      102,15,58,68,231,16
> > >
> > > +
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        pxor    xmm1,xmm5
> > >
> > > +        pxor    xmm8,xmm0
> > >
> > > +        pxor    xmm8,xmm1
> > >
> > > +        pxor    xmm4,xmm8
> > >
> > > +        movdqa  xmm8,xmm4
> > >
> > > +        psrldq  xmm8,8
> > >
> > > +        pslldq  xmm4,8
> > >
> > > +        pxor    xmm1,xmm8
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        psllq   xmm0,5
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        psllq   xmm0,1
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        psllq   xmm0,57
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        pslldq  xmm0,8
> > >
> > > +        psrldq  xmm3,8
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        psrlq   xmm0,1
> > >
> > > +        pxor    xmm1,xmm4
> > >
> > > +        pxor    xmm4,xmm0
> > >
> > > +        psrlq   xmm0,5
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        psrlq   xmm0,1
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        test    r9,r9
> > >
> > > +        jnz     NEAR $L$done
> > >
> > > +
> > >
> > > +$L$odd_tail:
> > >
> > > +        movdqu  xmm8,XMMWORD[r8]
> > >
> > > +DB      102,69,15,56,0,194
> > >
> > > +        pxor    xmm0,xmm8
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +        pshufd  xmm3,xmm0,78
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +DB      102,15,58,68,194,0
> > >
> > > +DB      102,15,58,68,202,17
> > >
> > > +DB      102,15,58,68,223,0
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        pxor    xmm3,xmm1
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm3
> > >
> > > +        psrldq  xmm3,8
> > >
> > > +        pslldq  xmm4,8
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        psllq   xmm0,5
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        psllq   xmm0,1
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        psllq   xmm0,57
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        pslldq  xmm0,8
> > >
> > > +        psrldq  xmm3,8
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        psrlq   xmm0,1
> > >
> > > +        pxor    xmm1,xmm4
> > >
> > > +        pxor    xmm4,xmm0
> > >
> > > +        psrlq   xmm0,5
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        psrlq   xmm0,1
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +$L$done:
> > >
> > > +DB      102,65,15,56,0,194
> > >
> > > +        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
> > >
> > > +
> > >
> > > +
> > >
> > > +global  gcm_init_avx
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +gcm_init_avx:
> > >
> > > +
> > >
> > > +        jmp     NEAR $L$_init_clmul
> > >
> > > +
> > >
> > > +
> > >
> > > +global  gcm_gmult_avx
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +gcm_gmult_avx:
> > >
> > > +
> > >
> > > +        jmp     NEAR $L$_gmult_clmul
> > >
> > > +
> > >
> > > +
> > >
> > > +global  gcm_ghash_avx
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +gcm_ghash_avx:
> > >
> > > +
> > >
> > > +        jmp     NEAR $L$_ghash_clmul
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   64
> > >
> > > +$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,0xc2
> > >
> > > +$L$7_mask:
> > >
> > > +        DD      7,0,7,0
> > >
> > > +$L$7_mask_poly:
> > >
> > > +        DD      7,0,450,0
> > >
> > > +ALIGN   64
> > >
> > > +
> > >
> > > +$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      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
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +se_handler:
> > >
> > > +        push    rsi
> > >
> > > +        push    rdi
> > >
> > > +        push    rbx
> > >
> > > +        push    rbp
> > >
> > > +        push    r12
> > >
> > > +        push    r13
> > >
> > > +        push    r14
> > >
> > > +        push    r15
> > >
> > > +        pushfq
> > >
> > > +        sub     rsp,64
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[120+r8]
> > >
> > > +        mov     rbx,QWORD[248+r8]
> > >
> > > +
> > >
> > > +        mov     rsi,QWORD[8+r9]
> > >
> > > +        mov     r11,QWORD[56+r9]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$in_prologue
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[152+r8]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[4+r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jae     NEAR $L$in_prologue
> > >
> > > +
> > >
> > > +        lea     rax,[((48+280))+rax]
> > >
> > > +
> > >
> > > +        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_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[40+r9]
> > >
> > > +        mov     rsi,r8
> > >
> > > +        mov     ecx,154
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +        mov     rsi,r9
> > >
> > > +        xor     rcx,rcx
> > >
> > > +        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
> > >
> > > +        popfq
> > >
> > > +        pop     r15
> > >
> > > +        pop     r14
> > >
> > > +        pop     r13
> > >
> > > +        pop     r12
> > >
> > > +        pop     rbp
> > >
> > > +        pop     rbx
> > >
> > > +        pop     rdi
> > >
> > > +        pop     rsi
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +section .pdata rdata align=4
> > >
> > > +ALIGN   4
> > >
> > > +        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      $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      $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      $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:
> > >
> > > +DB      9,0,0,0
> > >
> > > +        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      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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
> > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
> > > x86_64.nasm
> > > new file mode 100644
> > > index 0000000000..f3b7b0e35e
> > > --- /dev/null
> > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm
> > > @@ -0,0 +1,3137 @@
> > > +; WARNING: do not edit!
> > >
> > > +; Generated from openssl/crypto/sha/asm/sha1-mb-x86_64.pl
> > >
> > > +;
> > >
> > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
> > >
> > > +;
> > >
> > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > >
> > > +; this file except in compliance with the License.  You can obtain a copy
> > >
> > > +; in the file LICENSE in the source distribution or at
> > >
> > > +; https://www.openssl.org/source/license.html
> > >
> > > +
> > >
> > > +default rel
> > >
> > > +%define XMMWORD
> > >
> > > +%define YMMWORD
> > >
> > > +%define ZMMWORD
> > >
> > > +section .text code align=64
> > >
> > > +
> > >
> > > +
> > >
> > > +EXTERN  OPENSSL_ia32cap_P
> > >
> > > +
> > >
> > > +global  sha1_multi_block
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +sha1_multi_block:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_sha1_multi_block:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
> > >
> > > +        bt      rcx,61
> > >
> > > +        jc      NEAR _shaext_shortcut
> > >
> > > +        mov     rax,rsp
> > >
> > > +
> > >
> > > +        push    rbx
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        lea     rsp,[((-168))+rsp]
> > >
> > > +        movaps  XMMWORD[rsp],xmm6
> > >
> > > +        movaps  XMMWORD[16+rsp],xmm7
> > >
> > > +        movaps  XMMWORD[32+rsp],xmm8
> > >
> > > +        movaps  XMMWORD[48+rsp],xmm9
> > >
> > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > >
> > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > >
> > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > >
> > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > >
> > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > >
> > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > >
> > > +        sub     rsp,288
> > >
> > > +        and     rsp,-256
> > >
> > > +        mov     QWORD[272+rsp],rax
> > >
> > > +
> > >
> > > +$L$body:
> > >
> > > +        lea     rbp,[K_XX_XX]
> > >
> > > +        lea     rbx,[256+rsp]
> > >
> > > +
> > >
> > > +$L$oop_grande:
> > >
> > > +        mov     DWORD[280+rsp],edx
> > >
> > > +        xor     edx,edx
> > >
> > > +        mov     r8,QWORD[rsi]
> > >
> > > +        mov     ecx,DWORD[8+rsi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        mov     DWORD[rbx],ecx
> > >
> > > +        cmovle  r8,rbp
> > >
> > > +        mov     r9,QWORD[16+rsi]
> > >
> > > +        mov     ecx,DWORD[24+rsi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        mov     DWORD[4+rbx],ecx
> > >
> > > +        cmovle  r9,rbp
> > >
> > > +        mov     r10,QWORD[32+rsi]
> > >
> > > +        mov     ecx,DWORD[40+rsi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        mov     DWORD[8+rbx],ecx
> > >
> > > +        cmovle  r10,rbp
> > >
> > > +        mov     r11,QWORD[48+rsi]
> > >
> > > +        mov     ecx,DWORD[56+rsi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        mov     DWORD[12+rbx],ecx
> > >
> > > +        cmovle  r11,rbp
> > >
> > > +        test    edx,edx
> > >
> > > +        jz      NEAR $L$done
> > >
> > > +
> > >
> > > +        movdqu  xmm10,XMMWORD[rdi]
> > >
> > > +        lea     rax,[128+rsp]
> > >
> > > +        movdqu  xmm11,XMMWORD[32+rdi]
> > >
> > > +        movdqu  xmm12,XMMWORD[64+rdi]
> > >
> > > +        movdqu  xmm13,XMMWORD[96+rdi]
> > >
> > > +        movdqu  xmm14,XMMWORD[128+rdi]
> > >
> > > +        movdqa  xmm5,XMMWORD[96+rbp]
> > >
> > > +        movdqa  xmm15,XMMWORD[((-32))+rbp]
> > >
> > > +        jmp     NEAR $L$oop
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$oop:
> > >
> > > +        movd    xmm0,DWORD[r8]
> > >
> > > +        lea     r8,[64+r8]
> > >
> > > +        movd    xmm2,DWORD[r9]
> > >
> > > +        lea     r9,[64+r9]
> > >
> > > +        movd    xmm3,DWORD[r10]
> > >
> > > +        lea     r10,[64+r10]
> > >
> > > +        movd    xmm4,DWORD[r11]
> > >
> > > +        lea     r11,[64+r11]
> > >
> > > +        punpckldq       xmm0,xmm3
> > >
> > > +        movd    xmm1,DWORD[((-60))+r8]
> > >
> > > +        punpckldq       xmm2,xmm4
> > >
> > > +        movd    xmm9,DWORD[((-60))+r9]
> > >
> > > +        punpckldq       xmm0,xmm2
> > >
> > > +        movd    xmm8,DWORD[((-60))+r10]
> > >
> > > +DB      102,15,56,0,197
> > >
> > > +        movd    xmm7,DWORD[((-60))+r11]
> > >
> > > +        punpckldq       xmm1,xmm8
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        paddd   xmm14,xmm15
> > >
> > > +        punpckldq       xmm9,xmm7
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +        movdqa  xmm6,xmm11
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pandn   xmm7,xmm13
> > >
> > > +        pand    xmm6,xmm12
> > >
> > > +        punpckldq       xmm1,xmm9
> > >
> > > +        movdqa  xmm9,xmm10
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(0-128)+rax],xmm0
> > >
> > > +        paddd   xmm14,xmm0
> > >
> > > +        movd    xmm2,DWORD[((-56))+r8]
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        movd    xmm9,DWORD[((-56))+r9]
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm11,2
> > >
> > > +        paddd   xmm14,xmm8
> > >
> > > +DB      102,15,56,0,205
> > >
> > > +        movd    xmm8,DWORD[((-56))+r10]
> > >
> > > +        por     xmm11,xmm7
> > >
> > > +        movd    xmm7,DWORD[((-56))+r11]
> > >
> > > +        punpckldq       xmm2,xmm8
> > >
> > > +        movdqa  xmm8,xmm14
> > >
> > > +        paddd   xmm13,xmm15
> > >
> > > +        punpckldq       xmm9,xmm7
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +        movdqa  xmm6,xmm10
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pandn   xmm7,xmm12
> > >
> > > +        pand    xmm6,xmm11
> > >
> > > +        punpckldq       xmm2,xmm9
> > >
> > > +        movdqa  xmm9,xmm14
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(16-128)+rax],xmm1
> > >
> > > +        paddd   xmm13,xmm1
> > >
> > > +        movd    xmm3,DWORD[((-52))+r8]
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        movd    xmm9,DWORD[((-52))+r9]
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm13,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm10,2
> > >
> > > +        paddd   xmm13,xmm8
> > >
> > > +DB      102,15,56,0,213
> > >
> > > +        movd    xmm8,DWORD[((-52))+r10]
> > >
> > > +        por     xmm10,xmm7
> > >
> > > +        movd    xmm7,DWORD[((-52))+r11]
> > >
> > > +        punpckldq       xmm3,xmm8
> > >
> > > +        movdqa  xmm8,xmm13
> > >
> > > +        paddd   xmm12,xmm15
> > >
> > > +        punpckldq       xmm9,xmm7
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +        movdqa  xmm6,xmm14
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pandn   xmm7,xmm11
> > >
> > > +        pand    xmm6,xmm10
> > >
> > > +        punpckldq       xmm3,xmm9
> > >
> > > +        movdqa  xmm9,xmm13
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(32-128)+rax],xmm2
> > >
> > > +        paddd   xmm12,xmm2
> > >
> > > +        movd    xmm4,DWORD[((-48))+r8]
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        movd    xmm9,DWORD[((-48))+r9]
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm14,2
> > >
> > > +        paddd   xmm12,xmm8
> > >
> > > +DB      102,15,56,0,221
> > >
> > > +        movd    xmm8,DWORD[((-48))+r10]
> > >
> > > +        por     xmm14,xmm7
> > >
> > > +        movd    xmm7,DWORD[((-48))+r11]
> > >
> > > +        punpckldq       xmm4,xmm8
> > >
> > > +        movdqa  xmm8,xmm12
> > >
> > > +        paddd   xmm11,xmm15
> > >
> > > +        punpckldq       xmm9,xmm7
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +        movdqa  xmm6,xmm13
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pandn   xmm7,xmm10
> > >
> > > +        pand    xmm6,xmm14
> > >
> > > +        punpckldq       xmm4,xmm9
> > >
> > > +        movdqa  xmm9,xmm12
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(48-128)+rax],xmm3
> > >
> > > +        paddd   xmm11,xmm3
> > >
> > > +        movd    xmm0,DWORD[((-44))+r8]
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        movd    xmm9,DWORD[((-44))+r9]
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm11,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm13,2
> > >
> > > +        paddd   xmm11,xmm8
> > >
> > > +DB      102,15,56,0,229
> > >
> > > +        movd    xmm8,DWORD[((-44))+r10]
> > >
> > > +        por     xmm13,xmm7
> > >
> > > +        movd    xmm7,DWORD[((-44))+r11]
> > >
> > > +        punpckldq       xmm0,xmm8
> > >
> > > +        movdqa  xmm8,xmm11
> > >
> > > +        paddd   xmm10,xmm15
> > >
> > > +        punpckldq       xmm9,xmm7
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +        movdqa  xmm6,xmm12
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pandn   xmm7,xmm14
> > >
> > > +        pand    xmm6,xmm13
> > >
> > > +        punpckldq       xmm0,xmm9
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(64-128)+rax],xmm4
> > >
> > > +        paddd   xmm10,xmm4
> > >
> > > +        movd    xmm1,DWORD[((-40))+r8]
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        movd    xmm9,DWORD[((-40))+r9]
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm12,2
> > >
> > > +        paddd   xmm10,xmm8
> > >
> > > +DB      102,15,56,0,197
> > >
> > > +        movd    xmm8,DWORD[((-40))+r10]
> > >
> > > +        por     xmm12,xmm7
> > >
> > > +        movd    xmm7,DWORD[((-40))+r11]
> > >
> > > +        punpckldq       xmm1,xmm8
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        paddd   xmm14,xmm15
> > >
> > > +        punpckldq       xmm9,xmm7
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +        movdqa  xmm6,xmm11
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pandn   xmm7,xmm13
> > >
> > > +        pand    xmm6,xmm12
> > >
> > > +        punpckldq       xmm1,xmm9
> > >
> > > +        movdqa  xmm9,xmm10
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(80-128)+rax],xmm0
> > >
> > > +        paddd   xmm14,xmm0
> > >
> > > +        movd    xmm2,DWORD[((-36))+r8]
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        movd    xmm9,DWORD[((-36))+r9]
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm11,2
> > >
> > > +        paddd   xmm14,xmm8
> > >
> > > +DB      102,15,56,0,205
> > >
> > > +        movd    xmm8,DWORD[((-36))+r10]
> > >
> > > +        por     xmm11,xmm7
> > >
> > > +        movd    xmm7,DWORD[((-36))+r11]
> > >
> > > +        punpckldq       xmm2,xmm8
> > >
> > > +        movdqa  xmm8,xmm14
> > >
> > > +        paddd   xmm13,xmm15
> > >
> > > +        punpckldq       xmm9,xmm7
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +        movdqa  xmm6,xmm10
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pandn   xmm7,xmm12
> > >
> > > +        pand    xmm6,xmm11
> > >
> > > +        punpckldq       xmm2,xmm9
> > >
> > > +        movdqa  xmm9,xmm14
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(96-128)+rax],xmm1
> > >
> > > +        paddd   xmm13,xmm1
> > >
> > > +        movd    xmm3,DWORD[((-32))+r8]
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        movd    xmm9,DWORD[((-32))+r9]
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm13,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm10,2
> > >
> > > +        paddd   xmm13,xmm8
> > >
> > > +DB      102,15,56,0,213
> > >
> > > +        movd    xmm8,DWORD[((-32))+r10]
> > >
> > > +        por     xmm10,xmm7
> > >
> > > +        movd    xmm7,DWORD[((-32))+r11]
> > >
> > > +        punpckldq       xmm3,xmm8
> > >
> > > +        movdqa  xmm8,xmm13
> > >
> > > +        paddd   xmm12,xmm15
> > >
> > > +        punpckldq       xmm9,xmm7
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +        movdqa  xmm6,xmm14
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pandn   xmm7,xmm11
> > >
> > > +        pand    xmm6,xmm10
> > >
> > > +        punpckldq       xmm3,xmm9
> > >
> > > +        movdqa  xmm9,xmm13
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(112-128)+rax],xmm2
> > >
> > > +        paddd   xmm12,xmm2
> > >
> > > +        movd    xmm4,DWORD[((-28))+r8]
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        movd    xmm9,DWORD[((-28))+r9]
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm14,2
> > >
> > > +        paddd   xmm12,xmm8
> > >
> > > +DB      102,15,56,0,221
> > >
> > > +        movd    xmm8,DWORD[((-28))+r10]
> > >
> > > +        por     xmm14,xmm7
> > >
> > > +        movd    xmm7,DWORD[((-28))+r11]
> > >
> > > +        punpckldq       xmm4,xmm8
> > >
> > > +        movdqa  xmm8,xmm12
> > >
> > > +        paddd   xmm11,xmm15
> > >
> > > +        punpckldq       xmm9,xmm7
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +        movdqa  xmm6,xmm13
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pandn   xmm7,xmm10
> > >
> > > +        pand    xmm6,xmm14
> > >
> > > +        punpckldq       xmm4,xmm9
> > >
> > > +        movdqa  xmm9,xmm12
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(128-128)+rax],xmm3
> > >
> > > +        paddd   xmm11,xmm3
> > >
> > > +        movd    xmm0,DWORD[((-24))+r8]
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        movd    xmm9,DWORD[((-24))+r9]
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm11,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm13,2
> > >
> > > +        paddd   xmm11,xmm8
> > >
> > > +DB      102,15,56,0,229
> > >
> > > +        movd    xmm8,DWORD[((-24))+r10]
> > >
> > > +        por     xmm13,xmm7
> > >
> > > +        movd    xmm7,DWORD[((-24))+r11]
> > >
> > > +        punpckldq       xmm0,xmm8
> > >
> > > +        movdqa  xmm8,xmm11
> > >
> > > +        paddd   xmm10,xmm15
> > >
> > > +        punpckldq       xmm9,xmm7
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +        movdqa  xmm6,xmm12
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pandn   xmm7,xmm14
> > >
> > > +        pand    xmm6,xmm13
> > >
> > > +        punpckldq       xmm0,xmm9
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(144-128)+rax],xmm4
> > >
> > > +        paddd   xmm10,xmm4
> > >
> > > +        movd    xmm1,DWORD[((-20))+r8]
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        movd    xmm9,DWORD[((-20))+r9]
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm12,2
> > >
> > > +        paddd   xmm10,xmm8
> > >
> > > +DB      102,15,56,0,197
> > >
> > > +        movd    xmm8,DWORD[((-20))+r10]
> > >
> > > +        por     xmm12,xmm7
> > >
> > > +        movd    xmm7,DWORD[((-20))+r11]
> > >
> > > +        punpckldq       xmm1,xmm8
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        paddd   xmm14,xmm15
> > >
> > > +        punpckldq       xmm9,xmm7
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +        movdqa  xmm6,xmm11
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pandn   xmm7,xmm13
> > >
> > > +        pand    xmm6,xmm12
> > >
> > > +        punpckldq       xmm1,xmm9
> > >
> > > +        movdqa  xmm9,xmm10
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(160-128)+rax],xmm0
> > >
> > > +        paddd   xmm14,xmm0
> > >
> > > +        movd    xmm2,DWORD[((-16))+r8]
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        movd    xmm9,DWORD[((-16))+r9]
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm11,2
> > >
> > > +        paddd   xmm14,xmm8
> > >
> > > +DB      102,15,56,0,205
> > >
> > > +        movd    xmm8,DWORD[((-16))+r10]
> > >
> > > +        por     xmm11,xmm7
> > >
> > > +        movd    xmm7,DWORD[((-16))+r11]
> > >
> > > +        punpckldq       xmm2,xmm8
> > >
> > > +        movdqa  xmm8,xmm14
> > >
> > > +        paddd   xmm13,xmm15
> > >
> > > +        punpckldq       xmm9,xmm7
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +        movdqa  xmm6,xmm10
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pandn   xmm7,xmm12
> > >
> > > +        pand    xmm6,xmm11
> > >
> > > +        punpckldq       xmm2,xmm9
> > >
> > > +        movdqa  xmm9,xmm14
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(176-128)+rax],xmm1
> > >
> > > +        paddd   xmm13,xmm1
> > >
> > > +        movd    xmm3,DWORD[((-12))+r8]
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        movd    xmm9,DWORD[((-12))+r9]
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm13,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm10,2
> > >
> > > +        paddd   xmm13,xmm8
> > >
> > > +DB      102,15,56,0,213
> > >
> > > +        movd    xmm8,DWORD[((-12))+r10]
> > >
> > > +        por     xmm10,xmm7
> > >
> > > +        movd    xmm7,DWORD[((-12))+r11]
> > >
> > > +        punpckldq       xmm3,xmm8
> > >
> > > +        movdqa  xmm8,xmm13
> > >
> > > +        paddd   xmm12,xmm15
> > >
> > > +        punpckldq       xmm9,xmm7
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +        movdqa  xmm6,xmm14
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pandn   xmm7,xmm11
> > >
> > > +        pand    xmm6,xmm10
> > >
> > > +        punpckldq       xmm3,xmm9
> > >
> > > +        movdqa  xmm9,xmm13
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(192-128)+rax],xmm2
> > >
> > > +        paddd   xmm12,xmm2
> > >
> > > +        movd    xmm4,DWORD[((-8))+r8]
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        movd    xmm9,DWORD[((-8))+r9]
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm14,2
> > >
> > > +        paddd   xmm12,xmm8
> > >
> > > +DB      102,15,56,0,221
> > >
> > > +        movd    xmm8,DWORD[((-8))+r10]
> > >
> > > +        por     xmm14,xmm7
> > >
> > > +        movd    xmm7,DWORD[((-8))+r11]
> > >
> > > +        punpckldq       xmm4,xmm8
> > >
> > > +        movdqa  xmm8,xmm12
> > >
> > > +        paddd   xmm11,xmm15
> > >
> > > +        punpckldq       xmm9,xmm7
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +        movdqa  xmm6,xmm13
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pandn   xmm7,xmm10
> > >
> > > +        pand    xmm6,xmm14
> > >
> > > +        punpckldq       xmm4,xmm9
> > >
> > > +        movdqa  xmm9,xmm12
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(208-128)+rax],xmm3
> > >
> > > +        paddd   xmm11,xmm3
> > >
> > > +        movd    xmm0,DWORD[((-4))+r8]
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        movd    xmm9,DWORD[((-4))+r9]
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm11,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm13,2
> > >
> > > +        paddd   xmm11,xmm8
> > >
> > > +DB      102,15,56,0,229
> > >
> > > +        movd    xmm8,DWORD[((-4))+r10]
> > >
> > > +        por     xmm13,xmm7
> > >
> > > +        movdqa  xmm1,XMMWORD[((0-128))+rax]
> > >
> > > +        movd    xmm7,DWORD[((-4))+r11]
> > >
> > > +        punpckldq       xmm0,xmm8
> > >
> > > +        movdqa  xmm8,xmm11
> > >
> > > +        paddd   xmm10,xmm15
> > >
> > > +        punpckldq       xmm9,xmm7
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +        movdqa  xmm6,xmm12
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        prefetcht0      [63+r8]
> > >
> > > +        pandn   xmm7,xmm14
> > >
> > > +        pand    xmm6,xmm13
> > >
> > > +        punpckldq       xmm0,xmm9
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(224-128)+rax],xmm4
> > >
> > > +        paddd   xmm10,xmm4
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +        prefetcht0      [63+r9]
> > >
> > > +
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +        prefetcht0      [63+r10]
> > >
> > > +
> > >
> > > +        psrld   xmm12,2
> > >
> > > +        paddd   xmm10,xmm8
> > >
> > > +DB      102,15,56,0,197
> > >
> > > +        prefetcht0      [63+r11]
> > >
> > > +        por     xmm12,xmm7
> > >
> > > +        movdqa  xmm2,XMMWORD[((16-128))+rax]
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        movdqa  xmm3,XMMWORD[((32-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        pxor    xmm1,XMMWORD[((128-128))+rax]
> > >
> > > +        paddd   xmm14,xmm15
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        movdqa  xmm6,xmm11
> > >
> > > +        pandn   xmm7,xmm13
> > >
> > > +        movdqa  xmm5,xmm1
> > >
> > > +        pand    xmm6,xmm12
> > >
> > > +        movdqa  xmm9,xmm10
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm1,xmm1
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(240-128)+rax],xmm0
> > >
> > > +        paddd   xmm14,xmm0
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm11,2
> > >
> > > +        paddd   xmm14,xmm8
> > >
> > > +        por     xmm1,xmm5
> > >
> > > +        por     xmm11,xmm7
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        movdqa  xmm4,XMMWORD[((48-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm14
> > >
> > > +        pxor    xmm2,XMMWORD[((144-128))+rax]
> > >
> > > +        paddd   xmm13,xmm15
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        movdqa  xmm6,xmm10
> > >
> > > +        pandn   xmm7,xmm12
> > >
> > > +        movdqa  xmm5,xmm2
> > >
> > > +        pand    xmm6,xmm11
> > >
> > > +        movdqa  xmm9,xmm14
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm2,xmm2
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(0-128)+rax],xmm1
> > >
> > > +        paddd   xmm13,xmm1
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm13,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm10,2
> > >
> > > +        paddd   xmm13,xmm8
> > >
> > > +        por     xmm2,xmm5
> > >
> > > +        por     xmm10,xmm7
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        movdqa  xmm0,XMMWORD[((64-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm13
> > >
> > > +        pxor    xmm3,XMMWORD[((160-128))+rax]
> > >
> > > +        paddd   xmm12,xmm15
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        movdqa  xmm6,xmm14
> > >
> > > +        pandn   xmm7,xmm11
> > >
> > > +        movdqa  xmm5,xmm3
> > >
> > > +        pand    xmm6,xmm10
> > >
> > > +        movdqa  xmm9,xmm13
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm3,xmm3
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(16-128)+rax],xmm2
> > >
> > > +        paddd   xmm12,xmm2
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm14,2
> > >
> > > +        paddd   xmm12,xmm8
> > >
> > > +        por     xmm3,xmm5
> > >
> > > +        por     xmm14,xmm7
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        movdqa  xmm1,XMMWORD[((80-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm12
> > >
> > > +        pxor    xmm4,XMMWORD[((176-128))+rax]
> > >
> > > +        paddd   xmm11,xmm15
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        movdqa  xmm6,xmm13
> > >
> > > +        pandn   xmm7,xmm10
> > >
> > > +        movdqa  xmm5,xmm4
> > >
> > > +        pand    xmm6,xmm14
> > >
> > > +        movdqa  xmm9,xmm12
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm4,xmm4
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(32-128)+rax],xmm3
> > >
> > > +        paddd   xmm11,xmm3
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm11,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm13,2
> > >
> > > +        paddd   xmm11,xmm8
> > >
> > > +        por     xmm4,xmm5
> > >
> > > +        por     xmm13,xmm7
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        movdqa  xmm2,XMMWORD[((96-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm11
> > >
> > > +        pxor    xmm0,XMMWORD[((192-128))+rax]
> > >
> > > +        paddd   xmm10,xmm15
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        movdqa  xmm6,xmm12
> > >
> > > +        pandn   xmm7,xmm14
> > >
> > > +        movdqa  xmm5,xmm0
> > >
> > > +        pand    xmm6,xmm13
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm0,xmm0
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(48-128)+rax],xmm4
> > >
> > > +        paddd   xmm10,xmm4
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm12,2
> > >
> > > +        paddd   xmm10,xmm8
> > >
> > > +        por     xmm0,xmm5
> > >
> > > +        por     xmm12,xmm7
> > >
> > > +        movdqa  xmm15,XMMWORD[rbp]
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        movdqa  xmm3,XMMWORD[((112-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        movdqa  xmm6,xmm13
> > >
> > > +        pxor    xmm1,XMMWORD[((208-128))+rax]
> > >
> > > +        paddd   xmm14,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm10
> > >
> > > +        movdqa  XMMWORD[(64-128)+rax],xmm0
> > >
> > > +        paddd   xmm14,xmm0
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm1
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +        paddd   xmm1,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm11,2
> > >
> > > +        paddd   xmm14,xmm8
> > >
> > > +        por     xmm1,xmm5
> > >
> > > +        por     xmm11,xmm7
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        movdqa  xmm4,XMMWORD[((128-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm14
> > >
> > > +        movdqa  xmm6,xmm12
> > >
> > > +        pxor    xmm2,XMMWORD[((224-128))+rax]
> > >
> > > +        paddd   xmm13,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm14
> > >
> > > +        movdqa  XMMWORD[(80-128)+rax],xmm1
> > >
> > > +        paddd   xmm13,xmm1
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm2
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm13,xmm6
> > >
> > > +        paddd   xmm2,xmm2
> > >
> > > +
> > >
> > > +        psrld   xmm10,2
> > >
> > > +        paddd   xmm13,xmm8
> > >
> > > +        por     xmm2,xmm5
> > >
> > > +        por     xmm10,xmm7
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        movdqa  xmm0,XMMWORD[((144-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm13
> > >
> > > +        movdqa  xmm6,xmm11
> > >
> > > +        pxor    xmm3,XMMWORD[((240-128))+rax]
> > >
> > > +        paddd   xmm12,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm13
> > >
> > > +        movdqa  XMMWORD[(96-128)+rax],xmm2
> > >
> > > +        paddd   xmm12,xmm2
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm3
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +        paddd   xmm3,xmm3
> > >
> > > +
> > >
> > > +        psrld   xmm14,2
> > >
> > > +        paddd   xmm12,xmm8
> > >
> > > +        por     xmm3,xmm5
> > >
> > > +        por     xmm14,xmm7
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        movdqa  xmm1,XMMWORD[((160-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm12
> > >
> > > +        movdqa  xmm6,xmm10
> > >
> > > +        pxor    xmm4,XMMWORD[((0-128))+rax]
> > >
> > > +        paddd   xmm11,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm12
> > >
> > > +        movdqa  XMMWORD[(112-128)+rax],xmm3
> > >
> > > +        paddd   xmm11,xmm3
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm4
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm11,xmm6
> > >
> > > +        paddd   xmm4,xmm4
> > >
> > > +
> > >
> > > +        psrld   xmm13,2
> > >
> > > +        paddd   xmm11,xmm8
> > >
> > > +        por     xmm4,xmm5
> > >
> > > +        por     xmm13,xmm7
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        movdqa  xmm2,XMMWORD[((176-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm11
> > >
> > > +        movdqa  xmm6,xmm14
> > >
> > > +        pxor    xmm0,XMMWORD[((16-128))+rax]
> > >
> > > +        paddd   xmm10,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +        movdqa  XMMWORD[(128-128)+rax],xmm4
> > >
> > > +        paddd   xmm10,xmm4
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm0
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +        paddd   xmm0,xmm0
> > >
> > > +
> > >
> > > +        psrld   xmm12,2
> > >
> > > +        paddd   xmm10,xmm8
> > >
> > > +        por     xmm0,xmm5
> > >
> > > +        por     xmm12,xmm7
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        movdqa  xmm3,XMMWORD[((192-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        movdqa  xmm6,xmm13
> > >
> > > +        pxor    xmm1,XMMWORD[((32-128))+rax]
> > >
> > > +        paddd   xmm14,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm10
> > >
> > > +        movdqa  XMMWORD[(144-128)+rax],xmm0
> > >
> > > +        paddd   xmm14,xmm0
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm1
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +        paddd   xmm1,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm11,2
> > >
> > > +        paddd   xmm14,xmm8
> > >
> > > +        por     xmm1,xmm5
> > >
> > > +        por     xmm11,xmm7
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        movdqa  xmm4,XMMWORD[((208-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm14
> > >
> > > +        movdqa  xmm6,xmm12
> > >
> > > +        pxor    xmm2,XMMWORD[((48-128))+rax]
> > >
> > > +        paddd   xmm13,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm14
> > >
> > > +        movdqa  XMMWORD[(160-128)+rax],xmm1
> > >
> > > +        paddd   xmm13,xmm1
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm2
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm13,xmm6
> > >
> > > +        paddd   xmm2,xmm2
> > >
> > > +
> > >
> > > +        psrld   xmm10,2
> > >
> > > +        paddd   xmm13,xmm8
> > >
> > > +        por     xmm2,xmm5
> > >
> > > +        por     xmm10,xmm7
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        movdqa  xmm0,XMMWORD[((224-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm13
> > >
> > > +        movdqa  xmm6,xmm11
> > >
> > > +        pxor    xmm3,XMMWORD[((64-128))+rax]
> > >
> > > +        paddd   xmm12,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm13
> > >
> > > +        movdqa  XMMWORD[(176-128)+rax],xmm2
> > >
> > > +        paddd   xmm12,xmm2
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm3
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +        paddd   xmm3,xmm3
> > >
> > > +
> > >
> > > +        psrld   xmm14,2
> > >
> > > +        paddd   xmm12,xmm8
> > >
> > > +        por     xmm3,xmm5
> > >
> > > +        por     xmm14,xmm7
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        movdqa  xmm1,XMMWORD[((240-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm12
> > >
> > > +        movdqa  xmm6,xmm10
> > >
> > > +        pxor    xmm4,XMMWORD[((80-128))+rax]
> > >
> > > +        paddd   xmm11,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm12
> > >
> > > +        movdqa  XMMWORD[(192-128)+rax],xmm3
> > >
> > > +        paddd   xmm11,xmm3
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm4
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm11,xmm6
> > >
> > > +        paddd   xmm4,xmm4
> > >
> > > +
> > >
> > > +        psrld   xmm13,2
> > >
> > > +        paddd   xmm11,xmm8
> > >
> > > +        por     xmm4,xmm5
> > >
> > > +        por     xmm13,xmm7
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        movdqa  xmm2,XMMWORD[((0-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm11
> > >
> > > +        movdqa  xmm6,xmm14
> > >
> > > +        pxor    xmm0,XMMWORD[((96-128))+rax]
> > >
> > > +        paddd   xmm10,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +        movdqa  XMMWORD[(208-128)+rax],xmm4
> > >
> > > +        paddd   xmm10,xmm4
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm0
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +        paddd   xmm0,xmm0
> > >
> > > +
> > >
> > > +        psrld   xmm12,2
> > >
> > > +        paddd   xmm10,xmm8
> > >
> > > +        por     xmm0,xmm5
> > >
> > > +        por     xmm12,xmm7
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        movdqa  xmm3,XMMWORD[((16-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        movdqa  xmm6,xmm13
> > >
> > > +        pxor    xmm1,XMMWORD[((112-128))+rax]
> > >
> > > +        paddd   xmm14,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm10
> > >
> > > +        movdqa  XMMWORD[(224-128)+rax],xmm0
> > >
> > > +        paddd   xmm14,xmm0
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm1
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +        paddd   xmm1,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm11,2
> > >
> > > +        paddd   xmm14,xmm8
> > >
> > > +        por     xmm1,xmm5
> > >
> > > +        por     xmm11,xmm7
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        movdqa  xmm4,XMMWORD[((32-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm14
> > >
> > > +        movdqa  xmm6,xmm12
> > >
> > > +        pxor    xmm2,XMMWORD[((128-128))+rax]
> > >
> > > +        paddd   xmm13,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm14
> > >
> > > +        movdqa  XMMWORD[(240-128)+rax],xmm1
> > >
> > > +        paddd   xmm13,xmm1
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm2
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm13,xmm6
> > >
> > > +        paddd   xmm2,xmm2
> > >
> > > +
> > >
> > > +        psrld   xmm10,2
> > >
> > > +        paddd   xmm13,xmm8
> > >
> > > +        por     xmm2,xmm5
> > >
> > > +        por     xmm10,xmm7
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        movdqa  xmm0,XMMWORD[((48-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm13
> > >
> > > +        movdqa  xmm6,xmm11
> > >
> > > +        pxor    xmm3,XMMWORD[((144-128))+rax]
> > >
> > > +        paddd   xmm12,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm13
> > >
> > > +        movdqa  XMMWORD[(0-128)+rax],xmm2
> > >
> > > +        paddd   xmm12,xmm2
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm3
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +        paddd   xmm3,xmm3
> > >
> > > +
> > >
> > > +        psrld   xmm14,2
> > >
> > > +        paddd   xmm12,xmm8
> > >
> > > +        por     xmm3,xmm5
> > >
> > > +        por     xmm14,xmm7
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        movdqa  xmm1,XMMWORD[((64-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm12
> > >
> > > +        movdqa  xmm6,xmm10
> > >
> > > +        pxor    xmm4,XMMWORD[((160-128))+rax]
> > >
> > > +        paddd   xmm11,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm12
> > >
> > > +        movdqa  XMMWORD[(16-128)+rax],xmm3
> > >
> > > +        paddd   xmm11,xmm3
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm4
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm11,xmm6
> > >
> > > +        paddd   xmm4,xmm4
> > >
> > > +
> > >
> > > +        psrld   xmm13,2
> > >
> > > +        paddd   xmm11,xmm8
> > >
> > > +        por     xmm4,xmm5
> > >
> > > +        por     xmm13,xmm7
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        movdqa  xmm2,XMMWORD[((80-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm11
> > >
> > > +        movdqa  xmm6,xmm14
> > >
> > > +        pxor    xmm0,XMMWORD[((176-128))+rax]
> > >
> > > +        paddd   xmm10,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +        movdqa  XMMWORD[(32-128)+rax],xmm4
> > >
> > > +        paddd   xmm10,xmm4
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm0
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +        paddd   xmm0,xmm0
> > >
> > > +
> > >
> > > +        psrld   xmm12,2
> > >
> > > +        paddd   xmm10,xmm8
> > >
> > > +        por     xmm0,xmm5
> > >
> > > +        por     xmm12,xmm7
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        movdqa  xmm3,XMMWORD[((96-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        movdqa  xmm6,xmm13
> > >
> > > +        pxor    xmm1,XMMWORD[((192-128))+rax]
> > >
> > > +        paddd   xmm14,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm10
> > >
> > > +        movdqa  XMMWORD[(48-128)+rax],xmm0
> > >
> > > +        paddd   xmm14,xmm0
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm1
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +        paddd   xmm1,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm11,2
> > >
> > > +        paddd   xmm14,xmm8
> > >
> > > +        por     xmm1,xmm5
> > >
> > > +        por     xmm11,xmm7
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        movdqa  xmm4,XMMWORD[((112-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm14
> > >
> > > +        movdqa  xmm6,xmm12
> > >
> > > +        pxor    xmm2,XMMWORD[((208-128))+rax]
> > >
> > > +        paddd   xmm13,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm14
> > >
> > > +        movdqa  XMMWORD[(64-128)+rax],xmm1
> > >
> > > +        paddd   xmm13,xmm1
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm2
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm13,xmm6
> > >
> > > +        paddd   xmm2,xmm2
> > >
> > > +
> > >
> > > +        psrld   xmm10,2
> > >
> > > +        paddd   xmm13,xmm8
> > >
> > > +        por     xmm2,xmm5
> > >
> > > +        por     xmm10,xmm7
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        movdqa  xmm0,XMMWORD[((128-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm13
> > >
> > > +        movdqa  xmm6,xmm11
> > >
> > > +        pxor    xmm3,XMMWORD[((224-128))+rax]
> > >
> > > +        paddd   xmm12,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm13
> > >
> > > +        movdqa  XMMWORD[(80-128)+rax],xmm2
> > >
> > > +        paddd   xmm12,xmm2
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm3
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +        paddd   xmm3,xmm3
> > >
> > > +
> > >
> > > +        psrld   xmm14,2
> > >
> > > +        paddd   xmm12,xmm8
> > >
> > > +        por     xmm3,xmm5
> > >
> > > +        por     xmm14,xmm7
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        movdqa  xmm1,XMMWORD[((144-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm12
> > >
> > > +        movdqa  xmm6,xmm10
> > >
> > > +        pxor    xmm4,XMMWORD[((240-128))+rax]
> > >
> > > +        paddd   xmm11,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm12
> > >
> > > +        movdqa  XMMWORD[(96-128)+rax],xmm3
> > >
> > > +        paddd   xmm11,xmm3
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm4
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm11,xmm6
> > >
> > > +        paddd   xmm4,xmm4
> > >
> > > +
> > >
> > > +        psrld   xmm13,2
> > >
> > > +        paddd   xmm11,xmm8
> > >
> > > +        por     xmm4,xmm5
> > >
> > > +        por     xmm13,xmm7
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        movdqa  xmm2,XMMWORD[((160-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm11
> > >
> > > +        movdqa  xmm6,xmm14
> > >
> > > +        pxor    xmm0,XMMWORD[((0-128))+rax]
> > >
> > > +        paddd   xmm10,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +        movdqa  XMMWORD[(112-128)+rax],xmm4
> > >
> > > +        paddd   xmm10,xmm4
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm0
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +        paddd   xmm0,xmm0
> > >
> > > +
> > >
> > > +        psrld   xmm12,2
> > >
> > > +        paddd   xmm10,xmm8
> > >
> > > +        por     xmm0,xmm5
> > >
> > > +        por     xmm12,xmm7
> > >
> > > +        movdqa  xmm15,XMMWORD[32+rbp]
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        movdqa  xmm3,XMMWORD[((176-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +        pxor    xmm1,XMMWORD[((16-128))+rax]
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        paddd   xmm14,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm10
> > >
> > > +        pand    xmm7,xmm12
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm13
> > >
> > > +        movdqa  xmm5,xmm1
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm14,xmm7
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(128-128)+rax],xmm0
> > >
> > > +        paddd   xmm14,xmm0
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm11
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm1,xmm1
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm11,2
> > >
> > > +        paddd   xmm14,xmm8
> > >
> > > +        por     xmm1,xmm5
> > >
> > > +        por     xmm11,xmm7
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        movdqa  xmm4,XMMWORD[((192-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm14
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +        pxor    xmm2,XMMWORD[((32-128))+rax]
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        paddd   xmm13,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm14
> > >
> > > +        pand    xmm7,xmm11
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm12
> > >
> > > +        movdqa  xmm5,xmm2
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm13,xmm7
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(144-128)+rax],xmm1
> > >
> > > +        paddd   xmm13,xmm1
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm10
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm2,xmm2
> > >
> > > +        paddd   xmm13,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm10,2
> > >
> > > +        paddd   xmm13,xmm8
> > >
> > > +        por     xmm2,xmm5
> > >
> > > +        por     xmm10,xmm7
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        movdqa  xmm0,XMMWORD[((208-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm13
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +        pxor    xmm3,XMMWORD[((48-128))+rax]
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        paddd   xmm12,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm13
> > >
> > > +        pand    xmm7,xmm10
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm11
> > >
> > > +        movdqa  xmm5,xmm3
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm12,xmm7
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(160-128)+rax],xmm2
> > >
> > > +        paddd   xmm12,xmm2
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm14
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm3,xmm3
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm14,2
> > >
> > > +        paddd   xmm12,xmm8
> > >
> > > +        por     xmm3,xmm5
> > >
> > > +        por     xmm14,xmm7
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        movdqa  xmm1,XMMWORD[((224-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm12
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +        pxor    xmm4,XMMWORD[((64-128))+rax]
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        paddd   xmm11,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm12
> > >
> > > +        pand    xmm7,xmm14
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm10
> > >
> > > +        movdqa  xmm5,xmm4
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm11,xmm7
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(176-128)+rax],xmm3
> > >
> > > +        paddd   xmm11,xmm3
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm13
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm4,xmm4
> > >
> > > +        paddd   xmm11,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm13,2
> > >
> > > +        paddd   xmm11,xmm8
> > >
> > > +        por     xmm4,xmm5
> > >
> > > +        por     xmm13,xmm7
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        movdqa  xmm2,XMMWORD[((240-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm11
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +        pxor    xmm0,XMMWORD[((80-128))+rax]
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        paddd   xmm10,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +        pand    xmm7,xmm13
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm14
> > >
> > > +        movdqa  xmm5,xmm0
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm10,xmm7
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(192-128)+rax],xmm4
> > >
> > > +        paddd   xmm10,xmm4
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm12
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm0,xmm0
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm12,2
> > >
> > > +        paddd   xmm10,xmm8
> > >
> > > +        por     xmm0,xmm5
> > >
> > > +        por     xmm12,xmm7
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        movdqa  xmm3,XMMWORD[((0-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +        pxor    xmm1,XMMWORD[((96-128))+rax]
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        paddd   xmm14,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm10
> > >
> > > +        pand    xmm7,xmm12
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm13
> > >
> > > +        movdqa  xmm5,xmm1
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm14,xmm7
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(208-128)+rax],xmm0
> > >
> > > +        paddd   xmm14,xmm0
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm11
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm1,xmm1
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm11,2
> > >
> > > +        paddd   xmm14,xmm8
> > >
> > > +        por     xmm1,xmm5
> > >
> > > +        por     xmm11,xmm7
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        movdqa  xmm4,XMMWORD[((16-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm14
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +        pxor    xmm2,XMMWORD[((112-128))+rax]
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        paddd   xmm13,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm14
> > >
> > > +        pand    xmm7,xmm11
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm12
> > >
> > > +        movdqa  xmm5,xmm2
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm13,xmm7
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(224-128)+rax],xmm1
> > >
> > > +        paddd   xmm13,xmm1
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm10
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm2,xmm2
> > >
> > > +        paddd   xmm13,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm10,2
> > >
> > > +        paddd   xmm13,xmm8
> > >
> > > +        por     xmm2,xmm5
> > >
> > > +        por     xmm10,xmm7
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        movdqa  xmm0,XMMWORD[((32-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm13
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +        pxor    xmm3,XMMWORD[((128-128))+rax]
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        paddd   xmm12,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm13
> > >
> > > +        pand    xmm7,xmm10
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm11
> > >
> > > +        movdqa  xmm5,xmm3
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm12,xmm7
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(240-128)+rax],xmm2
> > >
> > > +        paddd   xmm12,xmm2
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm14
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm3,xmm3
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm14,2
> > >
> > > +        paddd   xmm12,xmm8
> > >
> > > +        por     xmm3,xmm5
> > >
> > > +        por     xmm14,xmm7
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        movdqa  xmm1,XMMWORD[((48-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm12
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +        pxor    xmm4,XMMWORD[((144-128))+rax]
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        paddd   xmm11,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm12
> > >
> > > +        pand    xmm7,xmm14
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm10
> > >
> > > +        movdqa  xmm5,xmm4
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm11,xmm7
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(0-128)+rax],xmm3
> > >
> > > +        paddd   xmm11,xmm3
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm13
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm4,xmm4
> > >
> > > +        paddd   xmm11,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm13,2
> > >
> > > +        paddd   xmm11,xmm8
> > >
> > > +        por     xmm4,xmm5
> > >
> > > +        por     xmm13,xmm7
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        movdqa  xmm2,XMMWORD[((64-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm11
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +        pxor    xmm0,XMMWORD[((160-128))+rax]
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        paddd   xmm10,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +        pand    xmm7,xmm13
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm14
> > >
> > > +        movdqa  xmm5,xmm0
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm10,xmm7
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(16-128)+rax],xmm4
> > >
> > > +        paddd   xmm10,xmm4
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm12
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm0,xmm0
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm12,2
> > >
> > > +        paddd   xmm10,xmm8
> > >
> > > +        por     xmm0,xmm5
> > >
> > > +        por     xmm12,xmm7
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        movdqa  xmm3,XMMWORD[((80-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +        pxor    xmm1,XMMWORD[((176-128))+rax]
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        paddd   xmm14,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm10
> > >
> > > +        pand    xmm7,xmm12
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm13
> > >
> > > +        movdqa  xmm5,xmm1
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm14,xmm7
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(32-128)+rax],xmm0
> > >
> > > +        paddd   xmm14,xmm0
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm11
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm1,xmm1
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm11,2
> > >
> > > +        paddd   xmm14,xmm8
> > >
> > > +        por     xmm1,xmm5
> > >
> > > +        por     xmm11,xmm7
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        movdqa  xmm4,XMMWORD[((96-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm14
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +        pxor    xmm2,XMMWORD[((192-128))+rax]
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        paddd   xmm13,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm14
> > >
> > > +        pand    xmm7,xmm11
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm12
> > >
> > > +        movdqa  xmm5,xmm2
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm13,xmm7
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(48-128)+rax],xmm1
> > >
> > > +        paddd   xmm13,xmm1
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm10
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm2,xmm2
> > >
> > > +        paddd   xmm13,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm10,2
> > >
> > > +        paddd   xmm13,xmm8
> > >
> > > +        por     xmm2,xmm5
> > >
> > > +        por     xmm10,xmm7
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        movdqa  xmm0,XMMWORD[((112-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm13
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +        pxor    xmm3,XMMWORD[((208-128))+rax]
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        paddd   xmm12,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm13
> > >
> > > +        pand    xmm7,xmm10
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm11
> > >
> > > +        movdqa  xmm5,xmm3
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm12,xmm7
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(64-128)+rax],xmm2
> > >
> > > +        paddd   xmm12,xmm2
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm14
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm3,xmm3
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm14,2
> > >
> > > +        paddd   xmm12,xmm8
> > >
> > > +        por     xmm3,xmm5
> > >
> > > +        por     xmm14,xmm7
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        movdqa  xmm1,XMMWORD[((128-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm12
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +        pxor    xmm4,XMMWORD[((224-128))+rax]
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        paddd   xmm11,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm12
> > >
> > > +        pand    xmm7,xmm14
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm10
> > >
> > > +        movdqa  xmm5,xmm4
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm11,xmm7
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(80-128)+rax],xmm3
> > >
> > > +        paddd   xmm11,xmm3
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm13
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm4,xmm4
> > >
> > > +        paddd   xmm11,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm13,2
> > >
> > > +        paddd   xmm11,xmm8
> > >
> > > +        por     xmm4,xmm5
> > >
> > > +        por     xmm13,xmm7
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        movdqa  xmm2,XMMWORD[((144-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm11
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +        pxor    xmm0,XMMWORD[((240-128))+rax]
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        paddd   xmm10,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +        pand    xmm7,xmm13
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm14
> > >
> > > +        movdqa  xmm5,xmm0
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm10,xmm7
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(96-128)+rax],xmm4
> > >
> > > +        paddd   xmm10,xmm4
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm12
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm0,xmm0
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm12,2
> > >
> > > +        paddd   xmm10,xmm8
> > >
> > > +        por     xmm0,xmm5
> > >
> > > +        por     xmm12,xmm7
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        movdqa  xmm3,XMMWORD[((160-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +        pxor    xmm1,XMMWORD[((0-128))+rax]
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        paddd   xmm14,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm10
> > >
> > > +        pand    xmm7,xmm12
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm13
> > >
> > > +        movdqa  xmm5,xmm1
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm14,xmm7
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(112-128)+rax],xmm0
> > >
> > > +        paddd   xmm14,xmm0
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm11
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm1,xmm1
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm11,2
> > >
> > > +        paddd   xmm14,xmm8
> > >
> > > +        por     xmm1,xmm5
> > >
> > > +        por     xmm11,xmm7
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        movdqa  xmm4,XMMWORD[((176-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm14
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +        pxor    xmm2,XMMWORD[((16-128))+rax]
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        paddd   xmm13,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm14
> > >
> > > +        pand    xmm7,xmm11
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm12
> > >
> > > +        movdqa  xmm5,xmm2
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm13,xmm7
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(128-128)+rax],xmm1
> > >
> > > +        paddd   xmm13,xmm1
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm10
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm2,xmm2
> > >
> > > +        paddd   xmm13,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm10,2
> > >
> > > +        paddd   xmm13,xmm8
> > >
> > > +        por     xmm2,xmm5
> > >
> > > +        por     xmm10,xmm7
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        movdqa  xmm0,XMMWORD[((192-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm13
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +        pxor    xmm3,XMMWORD[((32-128))+rax]
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        paddd   xmm12,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm13
> > >
> > > +        pand    xmm7,xmm10
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm11
> > >
> > > +        movdqa  xmm5,xmm3
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm12,xmm7
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(144-128)+rax],xmm2
> > >
> > > +        paddd   xmm12,xmm2
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm14
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm3,xmm3
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm14,2
> > >
> > > +        paddd   xmm12,xmm8
> > >
> > > +        por     xmm3,xmm5
> > >
> > > +        por     xmm14,xmm7
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        movdqa  xmm1,XMMWORD[((208-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm12
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +        pxor    xmm4,XMMWORD[((48-128))+rax]
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        paddd   xmm11,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm12
> > >
> > > +        pand    xmm7,xmm14
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm10
> > >
> > > +        movdqa  xmm5,xmm4
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm11,xmm7
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(160-128)+rax],xmm3
> > >
> > > +        paddd   xmm11,xmm3
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm13
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm4,xmm4
> > >
> > > +        paddd   xmm11,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm13,2
> > >
> > > +        paddd   xmm11,xmm8
> > >
> > > +        por     xmm4,xmm5
> > >
> > > +        por     xmm13,xmm7
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        movdqa  xmm2,XMMWORD[((224-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm11
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +        pxor    xmm0,XMMWORD[((64-128))+rax]
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        paddd   xmm10,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +        pand    xmm7,xmm13
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm14
> > >
> > > +        movdqa  xmm5,xmm0
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        paddd   xmm10,xmm7
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[(176-128)+rax],xmm4
> > >
> > > +        paddd   xmm10,xmm4
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        pand    xmm6,xmm12
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        paddd   xmm0,xmm0
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm12,2
> > >
> > > +        paddd   xmm10,xmm8
> > >
> > > +        por     xmm0,xmm5
> > >
> > > +        por     xmm12,xmm7
> > >
> > > +        movdqa  xmm15,XMMWORD[64+rbp]
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        movdqa  xmm3,XMMWORD[((240-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        movdqa  xmm6,xmm13
> > >
> > > +        pxor    xmm1,XMMWORD[((80-128))+rax]
> > >
> > > +        paddd   xmm14,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm10
> > >
> > > +        movdqa  XMMWORD[(192-128)+rax],xmm0
> > >
> > > +        paddd   xmm14,xmm0
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm1
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +        paddd   xmm1,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm11,2
> > >
> > > +        paddd   xmm14,xmm8
> > >
> > > +        por     xmm1,xmm5
> > >
> > > +        por     xmm11,xmm7
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        movdqa  xmm4,XMMWORD[((0-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm14
> > >
> > > +        movdqa  xmm6,xmm12
> > >
> > > +        pxor    xmm2,XMMWORD[((96-128))+rax]
> > >
> > > +        paddd   xmm13,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm14
> > >
> > > +        movdqa  XMMWORD[(208-128)+rax],xmm1
> > >
> > > +        paddd   xmm13,xmm1
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm2
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm13,xmm6
> > >
> > > +        paddd   xmm2,xmm2
> > >
> > > +
> > >
> > > +        psrld   xmm10,2
> > >
> > > +        paddd   xmm13,xmm8
> > >
> > > +        por     xmm2,xmm5
> > >
> > > +        por     xmm10,xmm7
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        movdqa  xmm0,XMMWORD[((16-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm13
> > >
> > > +        movdqa  xmm6,xmm11
> > >
> > > +        pxor    xmm3,XMMWORD[((112-128))+rax]
> > >
> > > +        paddd   xmm12,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm13
> > >
> > > +        movdqa  XMMWORD[(224-128)+rax],xmm2
> > >
> > > +        paddd   xmm12,xmm2
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm3
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +        paddd   xmm3,xmm3
> > >
> > > +
> > >
> > > +        psrld   xmm14,2
> > >
> > > +        paddd   xmm12,xmm8
> > >
> > > +        por     xmm3,xmm5
> > >
> > > +        por     xmm14,xmm7
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        movdqa  xmm1,XMMWORD[((32-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm12
> > >
> > > +        movdqa  xmm6,xmm10
> > >
> > > +        pxor    xmm4,XMMWORD[((128-128))+rax]
> > >
> > > +        paddd   xmm11,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm12
> > >
> > > +        movdqa  XMMWORD[(240-128)+rax],xmm3
> > >
> > > +        paddd   xmm11,xmm3
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm4
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm11,xmm6
> > >
> > > +        paddd   xmm4,xmm4
> > >
> > > +
> > >
> > > +        psrld   xmm13,2
> > >
> > > +        paddd   xmm11,xmm8
> > >
> > > +        por     xmm4,xmm5
> > >
> > > +        por     xmm13,xmm7
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        movdqa  xmm2,XMMWORD[((48-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm11
> > >
> > > +        movdqa  xmm6,xmm14
> > >
> > > +        pxor    xmm0,XMMWORD[((144-128))+rax]
> > >
> > > +        paddd   xmm10,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +        movdqa  XMMWORD[(0-128)+rax],xmm4
> > >
> > > +        paddd   xmm10,xmm4
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm0
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +        paddd   xmm0,xmm0
> > >
> > > +
> > >
> > > +        psrld   xmm12,2
> > >
> > > +        paddd   xmm10,xmm8
> > >
> > > +        por     xmm0,xmm5
> > >
> > > +        por     xmm12,xmm7
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        movdqa  xmm3,XMMWORD[((64-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        movdqa  xmm6,xmm13
> > >
> > > +        pxor    xmm1,XMMWORD[((160-128))+rax]
> > >
> > > +        paddd   xmm14,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm10
> > >
> > > +        movdqa  XMMWORD[(16-128)+rax],xmm0
> > >
> > > +        paddd   xmm14,xmm0
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm1
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +        paddd   xmm1,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm11,2
> > >
> > > +        paddd   xmm14,xmm8
> > >
> > > +        por     xmm1,xmm5
> > >
> > > +        por     xmm11,xmm7
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        movdqa  xmm4,XMMWORD[((80-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm14
> > >
> > > +        movdqa  xmm6,xmm12
> > >
> > > +        pxor    xmm2,XMMWORD[((176-128))+rax]
> > >
> > > +        paddd   xmm13,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm14
> > >
> > > +        movdqa  XMMWORD[(32-128)+rax],xmm1
> > >
> > > +        paddd   xmm13,xmm1
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm2
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm13,xmm6
> > >
> > > +        paddd   xmm2,xmm2
> > >
> > > +
> > >
> > > +        psrld   xmm10,2
> > >
> > > +        paddd   xmm13,xmm8
> > >
> > > +        por     xmm2,xmm5
> > >
> > > +        por     xmm10,xmm7
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        movdqa  xmm0,XMMWORD[((96-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm13
> > >
> > > +        movdqa  xmm6,xmm11
> > >
> > > +        pxor    xmm3,XMMWORD[((192-128))+rax]
> > >
> > > +        paddd   xmm12,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm13
> > >
> > > +        movdqa  XMMWORD[(48-128)+rax],xmm2
> > >
> > > +        paddd   xmm12,xmm2
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm3
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +        paddd   xmm3,xmm3
> > >
> > > +
> > >
> > > +        psrld   xmm14,2
> > >
> > > +        paddd   xmm12,xmm8
> > >
> > > +        por     xmm3,xmm5
> > >
> > > +        por     xmm14,xmm7
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        movdqa  xmm1,XMMWORD[((112-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm12
> > >
> > > +        movdqa  xmm6,xmm10
> > >
> > > +        pxor    xmm4,XMMWORD[((208-128))+rax]
> > >
> > > +        paddd   xmm11,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm12
> > >
> > > +        movdqa  XMMWORD[(64-128)+rax],xmm3
> > >
> > > +        paddd   xmm11,xmm3
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm4
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm11,xmm6
> > >
> > > +        paddd   xmm4,xmm4
> > >
> > > +
> > >
> > > +        psrld   xmm13,2
> > >
> > > +        paddd   xmm11,xmm8
> > >
> > > +        por     xmm4,xmm5
> > >
> > > +        por     xmm13,xmm7
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        movdqa  xmm2,XMMWORD[((128-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm11
> > >
> > > +        movdqa  xmm6,xmm14
> > >
> > > +        pxor    xmm0,XMMWORD[((224-128))+rax]
> > >
> > > +        paddd   xmm10,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +        movdqa  XMMWORD[(80-128)+rax],xmm4
> > >
> > > +        paddd   xmm10,xmm4
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm0
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +        paddd   xmm0,xmm0
> > >
> > > +
> > >
> > > +        psrld   xmm12,2
> > >
> > > +        paddd   xmm10,xmm8
> > >
> > > +        por     xmm0,xmm5
> > >
> > > +        por     xmm12,xmm7
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        movdqa  xmm3,XMMWORD[((144-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        movdqa  xmm6,xmm13
> > >
> > > +        pxor    xmm1,XMMWORD[((240-128))+rax]
> > >
> > > +        paddd   xmm14,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm10
> > >
> > > +        movdqa  XMMWORD[(96-128)+rax],xmm0
> > >
> > > +        paddd   xmm14,xmm0
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm1
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +        paddd   xmm1,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm11,2
> > >
> > > +        paddd   xmm14,xmm8
> > >
> > > +        por     xmm1,xmm5
> > >
> > > +        por     xmm11,xmm7
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        movdqa  xmm4,XMMWORD[((160-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm14
> > >
> > > +        movdqa  xmm6,xmm12
> > >
> > > +        pxor    xmm2,XMMWORD[((0-128))+rax]
> > >
> > > +        paddd   xmm13,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm14
> > >
> > > +        movdqa  XMMWORD[(112-128)+rax],xmm1
> > >
> > > +        paddd   xmm13,xmm1
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm2
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm13,xmm6
> > >
> > > +        paddd   xmm2,xmm2
> > >
> > > +
> > >
> > > +        psrld   xmm10,2
> > >
> > > +        paddd   xmm13,xmm8
> > >
> > > +        por     xmm2,xmm5
> > >
> > > +        por     xmm10,xmm7
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        movdqa  xmm0,XMMWORD[((176-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm13
> > >
> > > +        movdqa  xmm6,xmm11
> > >
> > > +        pxor    xmm3,XMMWORD[((16-128))+rax]
> > >
> > > +        paddd   xmm12,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm13
> > >
> > > +        paddd   xmm12,xmm2
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm3
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +        paddd   xmm3,xmm3
> > >
> > > +
> > >
> > > +        psrld   xmm14,2
> > >
> > > +        paddd   xmm12,xmm8
> > >
> > > +        por     xmm3,xmm5
> > >
> > > +        por     xmm14,xmm7
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        movdqa  xmm1,XMMWORD[((192-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm12
> > >
> > > +        movdqa  xmm6,xmm10
> > >
> > > +        pxor    xmm4,XMMWORD[((32-128))+rax]
> > >
> > > +        paddd   xmm11,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm12
> > >
> > > +        paddd   xmm11,xmm3
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm4
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm11,xmm6
> > >
> > > +        paddd   xmm4,xmm4
> > >
> > > +
> > >
> > > +        psrld   xmm13,2
> > >
> > > +        paddd   xmm11,xmm8
> > >
> > > +        por     xmm4,xmm5
> > >
> > > +        por     xmm13,xmm7
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        movdqa  xmm2,XMMWORD[((208-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm11
> > >
> > > +        movdqa  xmm6,xmm14
> > >
> > > +        pxor    xmm0,XMMWORD[((48-128))+rax]
> > >
> > > +        paddd   xmm10,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +        paddd   xmm10,xmm4
> > >
> > > +        pxor    xmm0,xmm2
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm0
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +        paddd   xmm0,xmm0
> > >
> > > +
> > >
> > > +        psrld   xmm12,2
> > >
> > > +        paddd   xmm10,xmm8
> > >
> > > +        por     xmm0,xmm5
> > >
> > > +        por     xmm12,xmm7
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        movdqa  xmm3,XMMWORD[((224-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        movdqa  xmm6,xmm13
> > >
> > > +        pxor    xmm1,XMMWORD[((64-128))+rax]
> > >
> > > +        paddd   xmm14,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm10
> > >
> > > +        paddd   xmm14,xmm0
> > >
> > > +        pxor    xmm1,xmm3
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm1
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +        paddd   xmm1,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm11,2
> > >
> > > +        paddd   xmm14,xmm8
> > >
> > > +        por     xmm1,xmm5
> > >
> > > +        por     xmm11,xmm7
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        movdqa  xmm4,XMMWORD[((240-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm14
> > >
> > > +        movdqa  xmm6,xmm12
> > >
> > > +        pxor    xmm2,XMMWORD[((80-128))+rax]
> > >
> > > +        paddd   xmm13,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm14
> > >
> > > +        paddd   xmm13,xmm1
> > >
> > > +        pxor    xmm2,xmm4
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm11
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm2
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm13,xmm6
> > >
> > > +        paddd   xmm2,xmm2
> > >
> > > +
> > >
> > > +        psrld   xmm10,2
> > >
> > > +        paddd   xmm13,xmm8
> > >
> > > +        por     xmm2,xmm5
> > >
> > > +        por     xmm10,xmm7
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        movdqa  xmm0,XMMWORD[((0-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm13
> > >
> > > +        movdqa  xmm6,xmm11
> > >
> > > +        pxor    xmm3,XMMWORD[((96-128))+rax]
> > >
> > > +        paddd   xmm12,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm13
> > >
> > > +        paddd   xmm12,xmm2
> > >
> > > +        pxor    xmm3,xmm0
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm3
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +        paddd   xmm3,xmm3
> > >
> > > +
> > >
> > > +        psrld   xmm14,2
> > >
> > > +        paddd   xmm12,xmm8
> > >
> > > +        por     xmm3,xmm5
> > >
> > > +        por     xmm14,xmm7
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        movdqa  xmm1,XMMWORD[((16-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm12
> > >
> > > +        movdqa  xmm6,xmm10
> > >
> > > +        pxor    xmm4,XMMWORD[((112-128))+rax]
> > >
> > > +        paddd   xmm11,xmm15
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm12
> > >
> > > +        paddd   xmm11,xmm3
> > >
> > > +        pxor    xmm4,xmm1
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        pxor    xmm6,xmm14
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        movdqa  xmm5,xmm4
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        psrld   xmm5,31
> > >
> > > +        paddd   xmm11,xmm6
> > >
> > > +        paddd   xmm4,xmm4
> > >
> > > +
> > >
> > > +        psrld   xmm13,2
> > >
> > > +        paddd   xmm11,xmm8
> > >
> > > +        por     xmm4,xmm5
> > >
> > > +        por     xmm13,xmm7
> > >
> > > +        movdqa  xmm8,xmm11
> > >
> > > +        paddd   xmm10,xmm15
> > >
> > > +        movdqa  xmm6,xmm14
> > >
> > > +        pslld   xmm8,5
> > >
> > > +        pxor    xmm6,xmm12
> > >
> > > +
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +        paddd   xmm10,xmm4
> > >
> > > +        psrld   xmm9,27
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +        pxor    xmm6,xmm13
> > >
> > > +
> > >
> > > +        pslld   xmm7,30
> > >
> > > +        por     xmm8,xmm9
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm12,2
> > >
> > > +        paddd   xmm10,xmm8
> > >
> > > +        por     xmm12,xmm7
> > >
> > > +        movdqa  xmm0,XMMWORD[rbx]
> > >
> > > +        mov     ecx,1
> > >
> > > +        cmp     ecx,DWORD[rbx]
> > >
> > > +        pxor    xmm8,xmm8
> > >
> > > +        cmovge  r8,rbp
> > >
> > > +        cmp     ecx,DWORD[4+rbx]
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +        cmovge  r9,rbp
> > >
> > > +        cmp     ecx,DWORD[8+rbx]
> > >
> > > +        pcmpgtd xmm1,xmm8
> > >
> > > +        cmovge  r10,rbp
> > >
> > > +        cmp     ecx,DWORD[12+rbx]
> > >
> > > +        paddd   xmm0,xmm1
> > >
> > > +        cmovge  r11,rbp
> > >
> > > +
> > >
> > > +        movdqu  xmm6,XMMWORD[rdi]
> > >
> > > +        pand    xmm10,xmm1
> > >
> > > +        movdqu  xmm7,XMMWORD[32+rdi]
> > >
> > > +        pand    xmm11,xmm1
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +        movdqu  xmm8,XMMWORD[64+rdi]
> > >
> > > +        pand    xmm12,xmm1
> > >
> > > +        paddd   xmm11,xmm7
> > >
> > > +        movdqu  xmm9,XMMWORD[96+rdi]
> > >
> > > +        pand    xmm13,xmm1
> > >
> > > +        paddd   xmm12,xmm8
> > >
> > > +        movdqu  xmm5,XMMWORD[128+rdi]
> > >
> > > +        pand    xmm14,xmm1
> > >
> > > +        movdqu  XMMWORD[rdi],xmm10
> > >
> > > +        paddd   xmm13,xmm9
> > >
> > > +        movdqu  XMMWORD[32+rdi],xmm11
> > >
> > > +        paddd   xmm14,xmm5
> > >
> > > +        movdqu  XMMWORD[64+rdi],xmm12
> > >
> > > +        movdqu  XMMWORD[96+rdi],xmm13
> > >
> > > +        movdqu  XMMWORD[128+rdi],xmm14
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[rbx],xmm0
> > >
> > > +        movdqa  xmm5,XMMWORD[96+rbp]
> > >
> > > +        movdqa  xmm15,XMMWORD[((-32))+rbp]
> > >
> > > +        dec     edx
> > >
> > > +        jnz     NEAR $L$oop
> > >
> > > +
> > >
> > > +        mov     edx,DWORD[280+rsp]
> > >
> > > +        lea     rdi,[16+rdi]
> > >
> > > +        lea     rsi,[64+rsi]
> > >
> > > +        dec     edx
> > >
> > > +        jnz     NEAR $L$oop_grande
> > >
> > > +
> > >
> > > +$L$done:
> > >
> > > +        mov     rax,QWORD[272+rsp]
> > >
> > > +
> > >
> > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > >
> > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > >
> > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > >
> > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > >
> > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > >
> > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > >
> > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > >
> > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > >
> > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > >
> > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > >
> > > +        mov     rbp,QWORD[((-16))+rax]
> > >
> > > +
> > >
> > > +        mov     rbx,QWORD[((-8))+rax]
> > >
> > > +
> > >
> > > +        lea     rsp,[rax]
> > >
> > > +
> > >
> > > +$L$epilogue:
> > >
> > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > >
> > > +        mov     rsi,QWORD[16+rsp]
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +$L$SEH_end_sha1_multi_block:
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +sha1_multi_block_shaext:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_sha1_multi_block_shaext:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +_shaext_shortcut:
> > >
> > > +        mov     rax,rsp
> > >
> > > +
> > >
> > > +        push    rbx
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        lea     rsp,[((-168))+rsp]
> > >
> > > +        movaps  XMMWORD[rsp],xmm6
> > >
> > > +        movaps  XMMWORD[16+rsp],xmm7
> > >
> > > +        movaps  XMMWORD[32+rsp],xmm8
> > >
> > > +        movaps  XMMWORD[48+rsp],xmm9
> > >
> > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > >
> > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > >
> > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > >
> > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > >
> > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > >
> > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > >
> > > +        sub     rsp,288
> > >
> > > +        shl     edx,1
> > >
> > > +        and     rsp,-256
> > >
> > > +        lea     rdi,[64+rdi]
> > >
> > > +        mov     QWORD[272+rsp],rax
> > >
> > > +$L$body_shaext:
> > >
> > > +        lea     rbx,[256+rsp]
> > >
> > > +        movdqa  xmm3,XMMWORD[((K_XX_XX+128))]
> > >
> > > +
> > >
> > > +$L$oop_grande_shaext:
> > >
> > > +        mov     DWORD[280+rsp],edx
> > >
> > > +        xor     edx,edx
> > >
> > > +        mov     r8,QWORD[rsi]
> > >
> > > +        mov     ecx,DWORD[8+rsi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        mov     DWORD[rbx],ecx
> > >
> > > +        cmovle  r8,rsp
> > >
> > > +        mov     r9,QWORD[16+rsi]
> > >
> > > +        mov     ecx,DWORD[24+rsi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        mov     DWORD[4+rbx],ecx
> > >
> > > +        cmovle  r9,rsp
> > >
> > > +        test    edx,edx
> > >
> > > +        jz      NEAR $L$done_shaext
> > >
> > > +
> > >
> > > +        movq    xmm0,QWORD[((0-64))+rdi]
> > >
> > > +        movq    xmm4,QWORD[((32-64))+rdi]
> > >
> > > +        movq    xmm5,QWORD[((64-64))+rdi]
> > >
> > > +        movq    xmm6,QWORD[((96-64))+rdi]
> > >
> > > +        movq    xmm7,QWORD[((128-64))+rdi]
> > >
> > > +
> > >
> > > +        punpckldq       xmm0,xmm4
> > >
> > > +        punpckldq       xmm5,xmm6
> > >
> > > +
> > >
> > > +        movdqa  xmm8,xmm0
> > >
> > > +        punpcklqdq      xmm0,xmm5
> > >
> > > +        punpckhqdq      xmm8,xmm5
> > >
> > > +
> > >
> > > +        pshufd  xmm1,xmm7,63
> > >
> > > +        pshufd  xmm9,xmm7,127
> > >
> > > +        pshufd  xmm0,xmm0,27
> > >
> > > +        pshufd  xmm8,xmm8,27
> > >
> > > +        jmp     NEAR $L$oop_shaext
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$oop_shaext:
> > >
> > > +        movdqu  xmm4,XMMWORD[r8]
> > >
> > > +        movdqu  xmm11,XMMWORD[r9]
> > >
> > > +        movdqu  xmm5,XMMWORD[16+r8]
> > >
> > > +        movdqu  xmm12,XMMWORD[16+r9]
> > >
> > > +        movdqu  xmm6,XMMWORD[32+r8]
> > >
> > > +DB      102,15,56,0,227
> > >
> > > +        movdqu  xmm13,XMMWORD[32+r9]
> > >
> > > +DB      102,68,15,56,0,219
> > >
> > > +        movdqu  xmm7,XMMWORD[48+r8]
> > >
> > > +        lea     r8,[64+r8]
> > >
> > > +DB      102,15,56,0,235
> > >
> > > +        movdqu  xmm14,XMMWORD[48+r9]
> > >
> > > +        lea     r9,[64+r9]
> > >
> > > +DB      102,68,15,56,0,227
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[80+rsp],xmm1
> > >
> > > +        paddd   xmm1,xmm4
> > >
> > > +        movdqa  XMMWORD[112+rsp],xmm9
> > >
> > > +        paddd   xmm9,xmm11
> > >
> > > +        movdqa  XMMWORD[64+rsp],xmm0
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +        movdqa  XMMWORD[96+rsp],xmm8
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      15,58,204,193,0
> > >
> > > +DB      15,56,200,213
> > >
> > > +DB      69,15,58,204,193,0
> > >
> > > +DB      69,15,56,200,212
> > >
> > > +DB      102,15,56,0,243
> > >
> > > +        prefetcht0      [127+r8]
> > >
> > > +DB      15,56,201,229
> > >
> > > +DB      102,68,15,56,0,235
> > >
> > > +        prefetcht0      [127+r9]
> > >
> > > +DB      69,15,56,201,220
> > >
> > > +
> > >
> > > +DB      102,15,56,0,251
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +DB      102,68,15,56,0,243
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      15,58,204,194,0
> > >
> > > +DB      15,56,200,206
> > >
> > > +DB      69,15,58,204,194,0
> > >
> > > +DB      69,15,56,200,205
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +DB      15,56,201,238
> > >
> > > +        pxor    xmm11,xmm13
> > >
> > > +DB      69,15,56,201,229
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      15,58,204,193,0
> > >
> > > +DB      15,56,200,215
> > >
> > > +DB      69,15,58,204,193,0
> > >
> > > +DB      69,15,56,200,214
> > >
> > > +DB      15,56,202,231
> > >
> > > +DB      69,15,56,202,222
> > >
> > > +        pxor    xmm5,xmm7
> > >
> > > +DB      15,56,201,247
> > >
> > > +        pxor    xmm12,xmm14
> > >
> > > +DB      69,15,56,201,238
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      15,58,204,194,0
> > >
> > > +DB      15,56,200,204
> > >
> > > +DB      69,15,58,204,194,0
> > >
> > > +DB      69,15,56,200,203
> > >
> > > +DB      15,56,202,236
> > >
> > > +DB      69,15,56,202,227
> > >
> > > +        pxor    xmm6,xmm4
> > >
> > > +DB      15,56,201,252
> > >
> > > +        pxor    xmm13,xmm11
> > >
> > > +DB      69,15,56,201,243
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      15,58,204,193,0
> > >
> > > +DB      15,56,200,213
> > >
> > > +DB      69,15,58,204,193,0
> > >
> > > +DB      69,15,56,200,212
> > >
> > > +DB      15,56,202,245
> > >
> > > +DB      69,15,56,202,236
> > >
> > > +        pxor    xmm7,xmm5
> > >
> > > +DB      15,56,201,229
> > >
> > > +        pxor    xmm14,xmm12
> > >
> > > +DB      69,15,56,201,220
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      15,58,204,194,1
> > >
> > > +DB      15,56,200,206
> > >
> > > +DB      69,15,58,204,194,1
> > >
> > > +DB      69,15,56,200,205
> > >
> > > +DB      15,56,202,254
> > >
> > > +DB      69,15,56,202,245
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +DB      15,56,201,238
> > >
> > > +        pxor    xmm11,xmm13
> > >
> > > +DB      69,15,56,201,229
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      15,58,204,193,1
> > >
> > > +DB      15,56,200,215
> > >
> > > +DB      69,15,58,204,193,1
> > >
> > > +DB      69,15,56,200,214
> > >
> > > +DB      15,56,202,231
> > >
> > > +DB      69,15,56,202,222
> > >
> > > +        pxor    xmm5,xmm7
> > >
> > > +DB      15,56,201,247
> > >
> > > +        pxor    xmm12,xmm14
> > >
> > > +DB      69,15,56,201,238
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      15,58,204,194,1
> > >
> > > +DB      15,56,200,204
> > >
> > > +DB      69,15,58,204,194,1
> > >
> > > +DB      69,15,56,200,203
> > >
> > > +DB      15,56,202,236
> > >
> > > +DB      69,15,56,202,227
> > >
> > > +        pxor    xmm6,xmm4
> > >
> > > +DB      15,56,201,252
> > >
> > > +        pxor    xmm13,xmm11
> > >
> > > +DB      69,15,56,201,243
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      15,58,204,193,1
> > >
> > > +DB      15,56,200,213
> > >
> > > +DB      69,15,58,204,193,1
> > >
> > > +DB      69,15,56,200,212
> > >
> > > +DB      15,56,202,245
> > >
> > > +DB      69,15,56,202,236
> > >
> > > +        pxor    xmm7,xmm5
> > >
> > > +DB      15,56,201,229
> > >
> > > +        pxor    xmm14,xmm12
> > >
> > > +DB      69,15,56,201,220
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      15,58,204,194,1
> > >
> > > +DB      15,56,200,206
> > >
> > > +DB      69,15,58,204,194,1
> > >
> > > +DB      69,15,56,200,205
> > >
> > > +DB      15,56,202,254
> > >
> > > +DB      69,15,56,202,245
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +DB      15,56,201,238
> > >
> > > +        pxor    xmm11,xmm13
> > >
> > > +DB      69,15,56,201,229
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      15,58,204,193,2
> > >
> > > +DB      15,56,200,215
> > >
> > > +DB      69,15,58,204,193,2
> > >
> > > +DB      69,15,56,200,214
> > >
> > > +DB      15,56,202,231
> > >
> > > +DB      69,15,56,202,222
> > >
> > > +        pxor    xmm5,xmm7
> > >
> > > +DB      15,56,201,247
> > >
> > > +        pxor    xmm12,xmm14
> > >
> > > +DB      69,15,56,201,238
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      15,58,204,194,2
> > >
> > > +DB      15,56,200,204
> > >
> > > +DB      69,15,58,204,194,2
> > >
> > > +DB      69,15,56,200,203
> > >
> > > +DB      15,56,202,236
> > >
> > > +DB      69,15,56,202,227
> > >
> > > +        pxor    xmm6,xmm4
> > >
> > > +DB      15,56,201,252
> > >
> > > +        pxor    xmm13,xmm11
> > >
> > > +DB      69,15,56,201,243
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      15,58,204,193,2
> > >
> > > +DB      15,56,200,213
> > >
> > > +DB      69,15,58,204,193,2
> > >
> > > +DB      69,15,56,200,212
> > >
> > > +DB      15,56,202,245
> > >
> > > +DB      69,15,56,202,236
> > >
> > > +        pxor    xmm7,xmm5
> > >
> > > +DB      15,56,201,229
> > >
> > > +        pxor    xmm14,xmm12
> > >
> > > +DB      69,15,56,201,220
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      15,58,204,194,2
> > >
> > > +DB      15,56,200,206
> > >
> > > +DB      69,15,58,204,194,2
> > >
> > > +DB      69,15,56,200,205
> > >
> > > +DB      15,56,202,254
> > >
> > > +DB      69,15,56,202,245
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +DB      15,56,201,238
> > >
> > > +        pxor    xmm11,xmm13
> > >
> > > +DB      69,15,56,201,229
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      15,58,204,193,2
> > >
> > > +DB      15,56,200,215
> > >
> > > +DB      69,15,58,204,193,2
> > >
> > > +DB      69,15,56,200,214
> > >
> > > +DB      15,56,202,231
> > >
> > > +DB      69,15,56,202,222
> > >
> > > +        pxor    xmm5,xmm7
> > >
> > > +DB      15,56,201,247
> > >
> > > +        pxor    xmm12,xmm14
> > >
> > > +DB      69,15,56,201,238
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      15,58,204,194,3
> > >
> > > +DB      15,56,200,204
> > >
> > > +DB      69,15,58,204,194,3
> > >
> > > +DB      69,15,56,200,203
> > >
> > > +DB      15,56,202,236
> > >
> > > +DB      69,15,56,202,227
> > >
> > > +        pxor    xmm6,xmm4
> > >
> > > +DB      15,56,201,252
> > >
> > > +        pxor    xmm13,xmm11
> > >
> > > +DB      69,15,56,201,243
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      15,58,204,193,3
> > >
> > > +DB      15,56,200,213
> > >
> > > +DB      69,15,58,204,193,3
> > >
> > > +DB      69,15,56,200,212
> > >
> > > +DB      15,56,202,245
> > >
> > > +DB      69,15,56,202,236
> > >
> > > +        pxor    xmm7,xmm5
> > >
> > > +        pxor    xmm14,xmm12
> > >
> > > +
> > >
> > > +        mov     ecx,1
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        cmp     ecx,DWORD[rbx]
> > >
> > > +        cmovge  r8,rsp
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      15,58,204,194,3
> > >
> > > +DB      15,56,200,206
> > >
> > > +DB      69,15,58,204,194,3
> > >
> > > +DB      69,15,56,200,205
> > >
> > > +DB      15,56,202,254
> > >
> > > +DB      69,15,56,202,245
> > >
> > > +
> > >
> > > +        cmp     ecx,DWORD[4+rbx]
> > >
> > > +        cmovge  r9,rsp
> > >
> > > +        movq    xmm6,QWORD[rbx]
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +DB      15,58,204,193,3
> > >
> > > +DB      15,56,200,215
> > >
> > > +DB      69,15,58,204,193,3
> > >
> > > +DB      69,15,56,200,214
> > >
> > > +
> > >
> > > +        pshufd  xmm11,xmm6,0x00
> > >
> > > +        pshufd  xmm12,xmm6,0x55
> > >
> > > +        movdqa  xmm7,xmm6
> > >
> > > +        pcmpgtd xmm11,xmm4
> > >
> > > +        pcmpgtd xmm12,xmm4
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +DB      15,58,204,194,3
> > >
> > > +DB      15,56,200,204
> > >
> > > +DB      69,15,58,204,194,3
> > >
> > > +DB      68,15,56,200,204
> > >
> > > +
> > >
> > > +        pcmpgtd xmm7,xmm4
> > >
> > > +        pand    xmm0,xmm11
> > >
> > > +        pand    xmm1,xmm11
> > >
> > > +        pand    xmm8,xmm12
> > >
> > > +        pand    xmm9,xmm12
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +
> > >
> > > +        paddd   xmm0,XMMWORD[64+rsp]
> > >
> > > +        paddd   xmm1,XMMWORD[80+rsp]
> > >
> > > +        paddd   xmm8,XMMWORD[96+rsp]
> > >
> > > +        paddd   xmm9,XMMWORD[112+rsp]
> > >
> > > +
> > >
> > > +        movq    QWORD[rbx],xmm6
> > >
> > > +        dec     edx
> > >
> > > +        jnz     NEAR $L$oop_shaext
> > >
> > > +
> > >
> > > +        mov     edx,DWORD[280+rsp]
> > >
> > > +
> > >
> > > +        pshufd  xmm0,xmm0,27
> > >
> > > +        pshufd  xmm8,xmm8,27
> > >
> > > +
> > >
> > > +        movdqa  xmm6,xmm0
> > >
> > > +        punpckldq       xmm0,xmm8
> > >
> > > +        punpckhdq       xmm6,xmm8
> > >
> > > +        punpckhdq       xmm1,xmm9
> > >
> > > +        movq    QWORD[(0-64)+rdi],xmm0
> > >
> > > +        psrldq  xmm0,8
> > >
> > > +        movq    QWORD[(64-64)+rdi],xmm6
> > >
> > > +        psrldq  xmm6,8
> > >
> > > +        movq    QWORD[(32-64)+rdi],xmm0
> > >
> > > +        psrldq  xmm1,8
> > >
> > > +        movq    QWORD[(96-64)+rdi],xmm6
> > >
> > > +        movq    QWORD[(128-64)+rdi],xmm1
> > >
> > > +
> > >
> > > +        lea     rdi,[8+rdi]
> > >
> > > +        lea     rsi,[32+rsi]
> > >
> > > +        dec     edx
> > >
> > > +        jnz     NEAR $L$oop_grande_shaext
> > >
> > > +
> > >
> > > +$L$done_shaext:
> > >
> > > +
> > >
> > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > >
> > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > >
> > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > >
> > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > >
> > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > >
> > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > >
> > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > >
> > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > >
> > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > >
> > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > >
> > > +        mov     rbp,QWORD[((-16))+rax]
> > >
> > > +
> > >
> > > +        mov     rbx,QWORD[((-8))+rax]
> > >
> > > +
> > >
> > > +        lea     rsp,[rax]
> > >
> > > +
> > >
> > > +$L$epilogue_shaext:
> > >
> > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > >
> > > +        mov     rsi,QWORD[16+rsp]
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +$L$SEH_end_sha1_multi_block_shaext:
> > >
> > > +
> > >
> > > +ALIGN   256
> > >
> > > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > >
> > > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > >
> > > +K_XX_XX:
> > >
> > > +        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,109,117,108,116,105,45,98,108,111,99,107
> > >
> > > +DB      32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120
> > >
> > > +DB      56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77
> > >
> > > +DB      83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110
> > >
> > > +DB      115,115,108,46,111,114,103,62,0
> > >
> > > +EXTERN  __imp_RtlVirtualUnwind
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +se_handler:
> > >
> > > +        push    rsi
> > >
> > > +        push    rdi
> > >
> > > +        push    rbx
> > >
> > > +        push    rbp
> > >
> > > +        push    r12
> > >
> > > +        push    r13
> > >
> > > +        push    r14
> > >
> > > +        push    r15
> > >
> > > +        pushfq
> > >
> > > +        sub     rsp,64
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[120+r8]
> > >
> > > +        mov     rbx,QWORD[248+r8]
> > >
> > > +
> > >
> > > +        mov     rsi,QWORD[8+r9]
> > >
> > > +        mov     r11,QWORD[56+r9]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$in_prologue
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[152+r8]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[4+r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jae     NEAR $L$in_prologue
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[272+rax]
> > >
> > > +
> > >
> > > +        mov     rbx,QWORD[((-8))+rax]
> > >
> > > +        mov     rbp,QWORD[((-16))+rax]
> > >
> > > +        mov     QWORD[144+r8],rbx
> > >
> > > +        mov     QWORD[160+r8],rbp
> > >
> > > +
> > >
> > > +        lea     rsi,[((-24-160))+rax]
> > >
> > > +        lea     rdi,[512+r8]
> > >
> > > +        mov     ecx,20
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +$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[40+r9]
> > >
> > > +        mov     rsi,r8
> > >
> > > +        mov     ecx,154
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +        mov     rsi,r9
> > >
> > > +        xor     rcx,rcx
> > >
> > > +        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
> > >
> > > +        popfq
> > >
> > > +        pop     r15
> > >
> > > +        pop     r14
> > >
> > > +        pop     r13
> > >
> > > +        pop     r12
> > >
> > > +        pop     rbp
> > >
> > > +        pop     rbx
> > >
> > > +        pop     rdi
> > >
> > > +        pop     rsi
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +section .pdata rdata align=4
> > >
> > > +ALIGN   4
> > >
> > > +        DD      $L$SEH_begin_sha1_multi_block wrt ..imagebase
> > >
> > > +        DD      $L$SEH_end_sha1_multi_block wrt ..imagebase
> > >
> > > +        DD      $L$SEH_info_sha1_multi_block wrt ..imagebase
> > >
> > > +        DD      $L$SEH_begin_sha1_multi_block_shaext wrt ..imagebase
> > >
> > > +        DD      $L$SEH_end_sha1_multi_block_shaext wrt ..imagebase
> > >
> > > +        DD      $L$SEH_info_sha1_multi_block_shaext wrt ..imagebase
> > >
> > > +section .xdata rdata align=8
> > >
> > > +ALIGN   8
> > >
> > > +$L$SEH_info_sha1_multi_block:
> > >
> > > +DB      9,0,0,0
> > >
> > > +        DD      se_handler wrt ..imagebase
> > >
> > > +        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
> > >
> > > +$L$SEH_info_sha1_multi_block_shaext:
> > >
> > > +DB      9,0,0,0
> > >
> > > +        DD      se_handler wrt ..imagebase
> > >
> > > +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
> > > wrt ..imagebase
> > >
> > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> > > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> > > new file mode 100644
> > > index 0000000000..c6d68d348f
> > > --- /dev/null
> > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> > > @@ -0,0 +1,2884 @@
> > > +; WARNING: do not edit!
> > >
> > > +; Generated from openssl/crypto/sha/asm/sha1-x86_64.pl
> > >
> > > +;
> > >
> > > +; Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved.
> > >
> > > +;
> > >
> > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > >
> > > +; this file except in compliance with the License.  You can obtain a copy
> > >
> > > +; in the file LICENSE in the source distribution or at
> > >
> > > +; https://www.openssl.org/source/license.html
> > >
> > > +
> > >
> > > +default rel
> > >
> > > +%define XMMWORD
> > >
> > > +%define YMMWORD
> > >
> > > +%define ZMMWORD
> > >
> > > +section .text code align=64
> > >
> > > +
> > >
> > > +EXTERN  OPENSSL_ia32cap_P
> > >
> > > +
> > >
> > > +global  sha1_block_data_order
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +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:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        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      NEAR $L$ialu
> > >
> > > +        test    r10d,536870912
> > >
> > > +        jnz     NEAR _shaext_shortcut
> > >
> > > +        jmp     NEAR _ssse3_shortcut
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$ialu:
> > >
> > > +        mov     rax,rsp
> > >
> > > +
> > >
> > > +        push    rbx
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        push    r12
> > >
> > > +
> > >
> > > +        push    r13
> > >
> > > +
> > >
> > > +        push    r14
> > >
> > > +
> > >
> > > +        mov     r8,rdi
> > >
> > > +        sub     rsp,72
> > >
> > > +        mov     r9,rsi
> > >
> > > +        and     rsp,-64
> > >
> > > +        mov     r10,rdx
> > >
> > > +        mov     QWORD[64+rsp],rax
> > >
> > > +
> > >
> > > +$L$prologue:
> > >
> > > +
> > >
> > > +        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[r9]
> > >
> > > +        bswap   edx
> > >
> > > +        mov     ebp,DWORD[4+r9]
> > >
> > > +        mov     eax,r12d
> > >
> > > +        mov     DWORD[rsp],edx
> > >
> > > +        mov     ecx,esi
> > >
> > > +        bswap   ebp
> > >
> > > +        xor     eax,r11d
> > >
> > > +        rol     ecx,5
> > >
> > > +        and     eax,edi
> > >
> > > +        lea     r13d,[1518500249+r13*1+rdx]
> > >
> > > +        add     r13d,ecx
> > >
> > > +        xor     eax,r12d
> > >
> > > +        rol     edi,30
> > >
> > > +        add     r13d,eax
> > >
> > > +        mov     r14d,DWORD[8+r9]
> > >
> > > +        mov     eax,r11d
> > >
> > > +        mov     DWORD[4+rsp],ebp
> > >
> > > +        mov     ecx,r13d
> > >
> > > +        bswap   r14d
> > >
> > > +        xor     eax,edi
> > >
> > > +        rol     ecx,5
> > >
> > > +        and     eax,esi
> > >
> > > +        lea     r12d,[1518500249+r12*1+rbp]
> > >
> > > +        add     r12d,ecx
> > >
> > > +        xor     eax,r11d
> > >
> > > +        rol     esi,30
> > >
> > > +        add     r12d,eax
> > >
> > > +        mov     edx,DWORD[12+r9]
> > >
> > > +        mov     eax,edi
> > >
> > > +        mov     DWORD[8+rsp],r14d
> > >
> > > +        mov     ecx,r12d
> > >
> > > +        bswap   edx
> > >
> > > +        xor     eax,esi
> > >
> > > +        rol     ecx,5
> > >
> > > +        and     eax,r13d
> > >
> > > +        lea     r11d,[1518500249+r11*1+r14]
> > >
> > > +        add     r11d,ecx
> > >
> > > +        xor     eax,edi
> > >
> > > +        rol     r13d,30
> > >
> > > +        add     r11d,eax
> > >
> > > +        mov     ebp,DWORD[16+r9]
> > >
> > > +        mov     eax,esi
> > >
> > > +        mov     DWORD[12+rsp],edx
> > >
> > > +        mov     ecx,r11d
> > >
> > > +        bswap   ebp
> > >
> > > +        xor     eax,r13d
> > >
> > > +        rol     ecx,5
> > >
> > > +        and     eax,r12d
> > >
> > > +        lea     edi,[1518500249+rdi*1+rdx]
> > >
> > > +        add     edi,ecx
> > >
> > > +        xor     eax,esi
> > >
> > > +        rol     r12d,30
> > >
> > > +        add     edi,eax
> > >
> > > +        mov     r14d,DWORD[20+r9]
> > >
> > > +        mov     eax,r13d
> > >
> > > +        mov     DWORD[16+rsp],ebp
> > >
> > > +        mov     ecx,edi
> > >
> > > +        bswap   r14d
> > >
> > > +        xor     eax,r12d
> > >
> > > +        rol     ecx,5
> > >
> > > +        and     eax,r11d
> > >
> > > +        lea     esi,[1518500249+rsi*1+rbp]
> > >
> > > +        add     esi,ecx
> > >
> > > +        xor     eax,r13d
> > >
> > > +        rol     r11d,30
> > >
> > > +        add     esi,eax
> > >
> > > +        mov     edx,DWORD[24+r9]
> > >
> > > +        mov     eax,r12d
> > >
> > > +        mov     DWORD[20+rsp],r14d
> > >
> > > +        mov     ecx,esi
> > >
> > > +        bswap   edx
> > >
> > > +        xor     eax,r11d
> > >
> > > +        rol     ecx,5
> > >
> > > +        and     eax,edi
> > >
> > > +        lea     r13d,[1518500249+r13*1+r14]
> > >
> > > +        add     r13d,ecx
> > >
> > > +        xor     eax,r12d
> > >
> > > +        rol     edi,30
> > >
> > > +        add     r13d,eax
> > >
> > > +        mov     ebp,DWORD[28+r9]
> > >
> > > +        mov     eax,r11d
> > >
> > > +        mov     DWORD[24+rsp],edx
> > >
> > > +        mov     ecx,r13d
> > >
> > > +        bswap   ebp
> > >
> > > +        xor     eax,edi
> > >
> > > +        rol     ecx,5
> > >
> > > +        and     eax,esi
> > >
> > > +        lea     r12d,[1518500249+r12*1+rdx]
> > >
> > > +        add     r12d,ecx
> > >
> > > +        xor     eax,r11d
> > >
> > > +        rol     esi,30
> > >
> > > +        add     r12d,eax
> > >
> > > +        mov     r14d,DWORD[32+r9]
> > >
> > > +        mov     eax,edi
> > >
> > > +        mov     DWORD[28+rsp],ebp
> > >
> > > +        mov     ecx,r12d
> > >
> > > +        bswap   r14d
> > >
> > > +        xor     eax,esi
> > >
> > > +        rol     ecx,5
> > >
> > > +        and     eax,r13d
> > >
> > > +        lea     r11d,[1518500249+r11*1+rbp]
> > >
> > > +        add     r11d,ecx
> > >
> > > +        xor     eax,edi
> > >
> > > +        rol     r13d,30
> > >
> > > +        add     r11d,eax
> > >
> > > +        mov     edx,DWORD[36+r9]
> > >
> > > +        mov     eax,esi
> > >
> > > +        mov     DWORD[32+rsp],r14d
> > >
> > > +        mov     ecx,r11d
> > >
> > > +        bswap   edx
> > >
> > > +        xor     eax,r13d
> > >
> > > +        rol     ecx,5
> > >
> > > +        and     eax,r12d
> > >
> > > +        lea     edi,[1518500249+rdi*1+r14]
> > >
> > > +        add     edi,ecx
> > >
> > > +        xor     eax,esi
> > >
> > > +        rol     r12d,30
> > >
> > > +        add     edi,eax
> > >
> > > +        mov     ebp,DWORD[40+r9]
> > >
> > > +        mov     eax,r13d
> > >
> > > +        mov     DWORD[36+rsp],edx
> > >
> > > +        mov     ecx,edi
> > >
> > > +        bswap   ebp
> > >
> > > +        xor     eax,r12d
> > >
> > > +        rol     ecx,5
> > >
> > > +        and     eax,r11d
> > >
> > > +        lea     esi,[1518500249+rsi*1+rdx]
> > >
> > > +        add     esi,ecx
> > >
> > > +        xor     eax,r13d
> > >
> > > +        rol     r11d,30
> > >
> > > +        add     esi,eax
> > >
> > > +        mov     r14d,DWORD[44+r9]
> > >
> > > +        mov     eax,r12d
> > >
> > > +        mov     DWORD[40+rsp],ebp
> > >
> > > +        mov     ecx,esi
> > >
> > > +        bswap   r14d
> > >
> > > +        xor     eax,r11d
> > >
> > > +        rol     ecx,5
> > >
> > > +        and     eax,edi
> > >
> > > +        lea     r13d,[1518500249+r13*1+rbp]
> > >
> > > +        add     r13d,ecx
> > >
> > > +        xor     eax,r12d
> > >
> > > +        rol     edi,30
> > >
> > > +        add     r13d,eax
> > >
> > > +        mov     edx,DWORD[48+r9]
> > >
> > > +        mov     eax,r11d
> > >
> > > +        mov     DWORD[44+rsp],r14d
> > >
> > > +        mov     ecx,r13d
> > >
> > > +        bswap   edx
> > >
> > > +        xor     eax,edi
> > >
> > > +        rol     ecx,5
> > >
> > > +        and     eax,esi
> > >
> > > +        lea     r12d,[1518500249+r12*1+r14]
> > >
> > > +        add     r12d,ecx
> > >
> > > +        xor     eax,r11d
> > >
> > > +        rol     esi,30
> > >
> > > +        add     r12d,eax
> > >
> > > +        mov     ebp,DWORD[52+r9]
> > >
> > > +        mov     eax,edi
> > >
> > > +        mov     DWORD[48+rsp],edx
> > >
> > > +        mov     ecx,r12d
> > >
> > > +        bswap   ebp
> > >
> > > +        xor     eax,esi
> > >
> > > +        rol     ecx,5
> > >
> > > +        and     eax,r13d
> > >
> > > +        lea     r11d,[1518500249+r11*1+rdx]
> > >
> > > +        add     r11d,ecx
> > >
> > > +        xor     eax,edi
> > >
> > > +        rol     r13d,30
> > >
> > > +        add     r11d,eax
> > >
> > > +        mov     r14d,DWORD[56+r9]
> > >
> > > +        mov     eax,esi
> > >
> > > +        mov     DWORD[52+rsp],ebp
> > >
> > > +        mov     ecx,r11d
> > >
> > > +        bswap   r14d
> > >
> > > +        xor     eax,r13d
> > >
> > > +        rol     ecx,5
> > >
> > > +        and     eax,r12d
> > >
> > > +        lea     edi,[1518500249+rdi*1+rbp]
> > >
> > > +        add     edi,ecx
> > >
> > > +        xor     eax,esi
> > >
> > > +        rol     r12d,30
> > >
> > > +        add     edi,eax
> > >
> > > +        mov     edx,DWORD[60+r9]
> > >
> > > +        mov     eax,r13d
> > >
> > > +        mov     DWORD[56+rsp],r14d
> > >
> > > +        mov     ecx,edi
> > >
> > > +        bswap   edx
> > >
> > > +        xor     eax,r12d
> > >
> > > +        rol     ecx,5
> > >
> > > +        and     eax,r11d
> > >
> > > +        lea     esi,[1518500249+rsi*1+r14]
> > >
> > > +        add     esi,ecx
> > >
> > > +        xor     eax,r13d
> > >
> > > +        rol     r11d,30
> > >
> > > +        add     esi,eax
> > >
> > > +        xor     ebp,DWORD[rsp]
> > >
> > > +        mov     eax,r12d
> > >
> > > +        mov     DWORD[60+rsp],edx
> > >
> > > +        mov     ecx,esi
> > >
> > > +        xor     ebp,DWORD[8+rsp]
> > >
> > > +        xor     eax,r11d
> > >
> > > +        rol     ecx,5
> > >
> > > +        xor     ebp,DWORD[32+rsp]
> > >
> > > +        and     eax,edi
> > >
> > > +        lea     r13d,[1518500249+r13*1+rdx]
> > >
> > > +        rol     edi,30
> > >
> > > +        xor     eax,r12d
> > >
> > > +        add     r13d,ecx
> > >
> > > +        rol     ebp,1
> > >
> > > +        add     r13d,eax
> > >
> > > +        xor     r14d,DWORD[4+rsp]
> > >
> > > +        mov     eax,r11d
> > >
> > > +        mov     DWORD[rsp],ebp
> > >
> > > +        mov     ecx,r13d
> > >
> > > +        xor     r14d,DWORD[12+rsp]
> > >
> > > +        xor     eax,edi
> > >
> > > +        rol     ecx,5
> > >
> > > +        xor     r14d,DWORD[36+rsp]
> > >
> > > +        and     eax,esi
> > >
> > > +        lea     r12d,[1518500249+r12*1+rbp]
> > >
> > > +        rol     esi,30
> > >
> > > +        xor     eax,r11d
> > >
> > > +        add     r12d,ecx
> > >
> > > +        rol     r14d,1
> > >
> > > +        add     r12d,eax
> > >
> > > +        xor     edx,DWORD[8+rsp]
> > >
> > > +        mov     eax,edi
> > >
> > > +        mov     DWORD[4+rsp],r14d
> > >
> > > +        mov     ecx,r12d
> > >
> > > +        xor     edx,DWORD[16+rsp]
> > >
> > > +        xor     eax,esi
> > >
> > > +        rol     ecx,5
> > >
> > > +        xor     edx,DWORD[40+rsp]
> > >
> > > +        and     eax,r13d
> > >
> > > +        lea     r11d,[1518500249+r11*1+r14]
> > >
> > > +        rol     r13d,30
> > >
> > > +        xor     eax,edi
> > >
> > > +        add     r11d,ecx
> > >
> > > +        rol     edx,1
> > >
> > > +        add     r11d,eax
> > >
> > > +        xor     ebp,DWORD[12+rsp]
> > >
> > > +        mov     eax,esi
> > >
> > > +        mov     DWORD[8+rsp],edx
> > >
> > > +        mov     ecx,r11d
> > >
> > > +        xor     ebp,DWORD[20+rsp]
> > >
> > > +        xor     eax,r13d
> > >
> > > +        rol     ecx,5
> > >
> > > +        xor     ebp,DWORD[44+rsp]
> > >
> > > +        and     eax,r12d
> > >
> > > +        lea     edi,[1518500249+rdi*1+rdx]
> > >
> > > +        rol     r12d,30
> > >
> > > +        xor     eax,esi
> > >
> > > +        add     edi,ecx
> > >
> > > +        rol     ebp,1
> > >
> > > +        add     edi,eax
> > >
> > > +        xor     r14d,DWORD[16+rsp]
> > >
> > > +        mov     eax,r13d
> > >
> > > +        mov     DWORD[12+rsp],ebp
> > >
> > > +        mov     ecx,edi
> > >
> > > +        xor     r14d,DWORD[24+rsp]
> > >
> > > +        xor     eax,r12d
> > >
> > > +        rol     ecx,5
> > >
> > > +        xor     r14d,DWORD[48+rsp]
> > >
> > > +        and     eax,r11d
> > >
> > > +        lea     esi,[1518500249+rsi*1+rbp]
> > >
> > > +        rol     r11d,30
> > >
> > > +        xor     eax,r13d
> > >
> > > +        add     esi,ecx
> > >
> > > +        rol     r14d,1
> > >
> > > +        add     esi,eax
> > >
> > > +        xor     edx,DWORD[20+rsp]
> > >
> > > +        mov     eax,edi
> > >
> > > +        mov     DWORD[16+rsp],r14d
> > >
> > > +        mov     ecx,esi
> > >
> > > +        xor     edx,DWORD[28+rsp]
> > >
> > > +        xor     eax,r12d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[24+rsp]
> > >
> > > +        mov     eax,esi
> > >
> > > +        mov     DWORD[20+rsp],edx
> > >
> > > +        mov     ecx,r13d
> > >
> > > +        xor     ebp,DWORD[32+rsp]
> > >
> > > +        xor     eax,r11d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[28+rsp]
> > >
> > > +        mov     eax,r13d
> > >
> > > +        mov     DWORD[24+rsp],ebp
> > >
> > > +        mov     ecx,r12d
> > >
> > > +        xor     r14d,DWORD[36+rsp]
> > >
> > > +        xor     eax,edi
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[32+rsp]
> > >
> > > +        mov     eax,r12d
> > >
> > > +        mov     DWORD[28+rsp],r14d
> > >
> > > +        mov     ecx,r11d
> > >
> > > +        xor     edx,DWORD[40+rsp]
> > >
> > > +        xor     eax,esi
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[36+rsp]
> > >
> > > +        mov     eax,r11d
> > >
> > > +        mov     DWORD[32+rsp],edx
> > >
> > > +        mov     ecx,edi
> > >
> > > +        xor     ebp,DWORD[44+rsp]
> > >
> > > +        xor     eax,r13d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[40+rsp]
> > >
> > > +        mov     eax,edi
> > >
> > > +        mov     DWORD[36+rsp],ebp
> > >
> > > +        mov     ecx,esi
> > >
> > > +        xor     r14d,DWORD[48+rsp]
> > >
> > > +        xor     eax,r12d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[44+rsp]
> > >
> > > +        mov     eax,esi
> > >
> > > +        mov     DWORD[40+rsp],r14d
> > >
> > > +        mov     ecx,r13d
> > >
> > > +        xor     edx,DWORD[52+rsp]
> > >
> > > +        xor     eax,r11d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[48+rsp]
> > >
> > > +        mov     eax,r13d
> > >
> > > +        mov     DWORD[44+rsp],edx
> > >
> > > +        mov     ecx,r12d
> > >
> > > +        xor     ebp,DWORD[56+rsp]
> > >
> > > +        xor     eax,edi
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[52+rsp]
> > >
> > > +        mov     eax,r12d
> > >
> > > +        mov     DWORD[48+rsp],ebp
> > >
> > > +        mov     ecx,r11d
> > >
> > > +        xor     r14d,DWORD[60+rsp]
> > >
> > > +        xor     eax,esi
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[56+rsp]
> > >
> > > +        mov     eax,r11d
> > >
> > > +        mov     DWORD[52+rsp],r14d
> > >
> > > +        mov     ecx,edi
> > >
> > > +        xor     edx,DWORD[rsp]
> > >
> > > +        xor     eax,r13d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[60+rsp]
> > >
> > > +        mov     eax,edi
> > >
> > > +        mov     DWORD[56+rsp],edx
> > >
> > > +        mov     ecx,esi
> > >
> > > +        xor     ebp,DWORD[4+rsp]
> > >
> > > +        xor     eax,r12d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[rsp]
> > >
> > > +        mov     eax,esi
> > >
> > > +        mov     DWORD[60+rsp],ebp
> > >
> > > +        mov     ecx,r13d
> > >
> > > +        xor     r14d,DWORD[8+rsp]
> > >
> > > +        xor     eax,r11d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[4+rsp]
> > >
> > > +        mov     eax,r13d
> > >
> > > +        mov     DWORD[rsp],r14d
> > >
> > > +        mov     ecx,r12d
> > >
> > > +        xor     edx,DWORD[12+rsp]
> > >
> > > +        xor     eax,edi
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[8+rsp]
> > >
> > > +        mov     eax,r12d
> > >
> > > +        mov     DWORD[4+rsp],edx
> > >
> > > +        mov     ecx,r11d
> > >
> > > +        xor     ebp,DWORD[16+rsp]
> > >
> > > +        xor     eax,esi
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[12+rsp]
> > >
> > > +        mov     eax,r11d
> > >
> > > +        mov     DWORD[8+rsp],ebp
> > >
> > > +        mov     ecx,edi
> > >
> > > +        xor     r14d,DWORD[20+rsp]
> > >
> > > +        xor     eax,r13d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[16+rsp]
> > >
> > > +        mov     eax,edi
> > >
> > > +        mov     DWORD[12+rsp],r14d
> > >
> > > +        mov     ecx,esi
> > >
> > > +        xor     edx,DWORD[24+rsp]
> > >
> > > +        xor     eax,r12d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[20+rsp]
> > >
> > > +        mov     eax,esi
> > >
> > > +        mov     DWORD[16+rsp],edx
> > >
> > > +        mov     ecx,r13d
> > >
> > > +        xor     ebp,DWORD[28+rsp]
> > >
> > > +        xor     eax,r11d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[24+rsp]
> > >
> > > +        mov     eax,r13d
> > >
> > > +        mov     DWORD[20+rsp],ebp
> > >
> > > +        mov     ecx,r12d
> > >
> > > +        xor     r14d,DWORD[32+rsp]
> > >
> > > +        xor     eax,edi
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[28+rsp]
> > >
> > > +        mov     eax,r12d
> > >
> > > +        mov     DWORD[24+rsp],r14d
> > >
> > > +        mov     ecx,r11d
> > >
> > > +        xor     edx,DWORD[36+rsp]
> > >
> > > +        xor     eax,esi
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[32+rsp]
> > >
> > > +        mov     eax,r11d
> > >
> > > +        mov     DWORD[28+rsp],edx
> > >
> > > +        mov     ecx,edi
> > >
> > > +        xor     ebp,DWORD[40+rsp]
> > >
> > > +        xor     eax,r13d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[36+rsp]
> > >
> > > +        mov     eax,r12d
> > >
> > > +        mov     DWORD[32+rsp],ebp
> > >
> > > +        mov     ebx,r12d
> > >
> > > +        xor     r14d,DWORD[44+rsp]
> > >
> > > +        and     eax,r11d
> > >
> > > +        mov     ecx,esi
> > >
> > > +        xor     r14d,DWORD[4+rsp]
> > >
> > > +        lea     r13d,[((-1894007588))+r13*1+rbp]
> > >
> > > +        xor     ebx,r11d
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     r13d,eax
> > >
> > > +        rol     r14d,1
> > >
> > > +        and     ebx,edi
> > >
> > > +        add     r13d,ecx
> > >
> > > +        rol     edi,30
> > >
> > > +        add     r13d,ebx
> > >
> > > +        xor     edx,DWORD[40+rsp]
> > >
> > > +        mov     eax,r11d
> > >
> > > +        mov     DWORD[36+rsp],r14d
> > >
> > > +        mov     ebx,r11d
> > >
> > > +        xor     edx,DWORD[48+rsp]
> > >
> > > +        and     eax,edi
> > >
> > > +        mov     ecx,r13d
> > >
> > > +        xor     edx,DWORD[8+rsp]
> > >
> > > +        lea     r12d,[((-1894007588))+r12*1+r14]
> > >
> > > +        xor     ebx,edi
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     r12d,eax
> > >
> > > +        rol     edx,1
> > >
> > > +        and     ebx,esi
> > >
> > > +        add     r12d,ecx
> > >
> > > +        rol     esi,30
> > >
> > > +        add     r12d,ebx
> > >
> > > +        xor     ebp,DWORD[44+rsp]
> > >
> > > +        mov     eax,edi
> > >
> > > +        mov     DWORD[40+rsp],edx
> > >
> > > +        mov     ebx,edi
> > >
> > > +        xor     ebp,DWORD[52+rsp]
> > >
> > > +        and     eax,esi
> > >
> > > +        mov     ecx,r12d
> > >
> > > +        xor     ebp,DWORD[12+rsp]
> > >
> > > +        lea     r11d,[((-1894007588))+r11*1+rdx]
> > >
> > > +        xor     ebx,esi
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     r11d,eax
> > >
> > > +        rol     ebp,1
> > >
> > > +        and     ebx,r13d
> > >
> > > +        add     r11d,ecx
> > >
> > > +        rol     r13d,30
> > >
> > > +        add     r11d,ebx
> > >
> > > +        xor     r14d,DWORD[48+rsp]
> > >
> > > +        mov     eax,esi
> > >
> > > +        mov     DWORD[44+rsp],ebp
> > >
> > > +        mov     ebx,esi
> > >
> > > +        xor     r14d,DWORD[56+rsp]
> > >
> > > +        and     eax,r13d
> > >
> > > +        mov     ecx,r11d
> > >
> > > +        xor     r14d,DWORD[16+rsp]
> > >
> > > +        lea     edi,[((-1894007588))+rdi*1+rbp]
> > >
> > > +        xor     ebx,r13d
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     edi,eax
> > >
> > > +        rol     r14d,1
> > >
> > > +        and     ebx,r12d
> > >
> > > +        add     edi,ecx
> > >
> > > +        rol     r12d,30
> > >
> > > +        add     edi,ebx
> > >
> > > +        xor     edx,DWORD[52+rsp]
> > >
> > > +        mov     eax,r13d
> > >
> > > +        mov     DWORD[48+rsp],r14d
> > >
> > > +        mov     ebx,r13d
> > >
> > > +        xor     edx,DWORD[60+rsp]
> > >
> > > +        and     eax,r12d
> > >
> > > +        mov     ecx,edi
> > >
> > > +        xor     edx,DWORD[20+rsp]
> > >
> > > +        lea     esi,[((-1894007588))+rsi*1+r14]
> > >
> > > +        xor     ebx,r12d
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     esi,eax
> > >
> > > +        rol     edx,1
> > >
> > > +        and     ebx,r11d
> > >
> > > +        add     esi,ecx
> > >
> > > +        rol     r11d,30
> > >
> > > +        add     esi,ebx
> > >
> > > +        xor     ebp,DWORD[56+rsp]
> > >
> > > +        mov     eax,r12d
> > >
> > > +        mov     DWORD[52+rsp],edx
> > >
> > > +        mov     ebx,r12d
> > >
> > > +        xor     ebp,DWORD[rsp]
> > >
> > > +        and     eax,r11d
> > >
> > > +        mov     ecx,esi
> > >
> > > +        xor     ebp,DWORD[24+rsp]
> > >
> > > +        lea     r13d,[((-1894007588))+r13*1+rdx]
> > >
> > > +        xor     ebx,r11d
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     r13d,eax
> > >
> > > +        rol     ebp,1
> > >
> > > +        and     ebx,edi
> > >
> > > +        add     r13d,ecx
> > >
> > > +        rol     edi,30
> > >
> > > +        add     r13d,ebx
> > >
> > > +        xor     r14d,DWORD[60+rsp]
> > >
> > > +        mov     eax,r11d
> > >
> > > +        mov     DWORD[56+rsp],ebp
> > >
> > > +        mov     ebx,r11d
> > >
> > > +        xor     r14d,DWORD[4+rsp]
> > >
> > > +        and     eax,edi
> > >
> > > +        mov     ecx,r13d
> > >
> > > +        xor     r14d,DWORD[28+rsp]
> > >
> > > +        lea     r12d,[((-1894007588))+r12*1+rbp]
> > >
> > > +        xor     ebx,edi
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     r12d,eax
> > >
> > > +        rol     r14d,1
> > >
> > > +        and     ebx,esi
> > >
> > > +        add     r12d,ecx
> > >
> > > +        rol     esi,30
> > >
> > > +        add     r12d,ebx
> > >
> > > +        xor     edx,DWORD[rsp]
> > >
> > > +        mov     eax,edi
> > >
> > > +        mov     DWORD[60+rsp],r14d
> > >
> > > +        mov     ebx,edi
> > >
> > > +        xor     edx,DWORD[8+rsp]
> > >
> > > +        and     eax,esi
> > >
> > > +        mov     ecx,r12d
> > >
> > > +        xor     edx,DWORD[32+rsp]
> > >
> > > +        lea     r11d,[((-1894007588))+r11*1+r14]
> > >
> > > +        xor     ebx,esi
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     r11d,eax
> > >
> > > +        rol     edx,1
> > >
> > > +        and     ebx,r13d
> > >
> > > +        add     r11d,ecx
> > >
> > > +        rol     r13d,30
> > >
> > > +        add     r11d,ebx
> > >
> > > +        xor     ebp,DWORD[4+rsp]
> > >
> > > +        mov     eax,esi
> > >
> > > +        mov     DWORD[rsp],edx
> > >
> > > +        mov     ebx,esi
> > >
> > > +        xor     ebp,DWORD[12+rsp]
> > >
> > > +        and     eax,r13d
> > >
> > > +        mov     ecx,r11d
> > >
> > > +        xor     ebp,DWORD[36+rsp]
> > >
> > > +        lea     edi,[((-1894007588))+rdi*1+rdx]
> > >
> > > +        xor     ebx,r13d
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     edi,eax
> > >
> > > +        rol     ebp,1
> > >
> > > +        and     ebx,r12d
> > >
> > > +        add     edi,ecx
> > >
> > > +        rol     r12d,30
> > >
> > > +        add     edi,ebx
> > >
> > > +        xor     r14d,DWORD[8+rsp]
> > >
> > > +        mov     eax,r13d
> > >
> > > +        mov     DWORD[4+rsp],ebp
> > >
> > > +        mov     ebx,r13d
> > >
> > > +        xor     r14d,DWORD[16+rsp]
> > >
> > > +        and     eax,r12d
> > >
> > > +        mov     ecx,edi
> > >
> > > +        xor     r14d,DWORD[40+rsp]
> > >
> > > +        lea     esi,[((-1894007588))+rsi*1+rbp]
> > >
> > > +        xor     ebx,r12d
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     esi,eax
> > >
> > > +        rol     r14d,1
> > >
> > > +        and     ebx,r11d
> > >
> > > +        add     esi,ecx
> > >
> > > +        rol     r11d,30
> > >
> > > +        add     esi,ebx
> > >
> > > +        xor     edx,DWORD[12+rsp]
> > >
> > > +        mov     eax,r12d
> > >
> > > +        mov     DWORD[8+rsp],r14d
> > >
> > > +        mov     ebx,r12d
> > >
> > > +        xor     edx,DWORD[20+rsp]
> > >
> > > +        and     eax,r11d
> > >
> > > +        mov     ecx,esi
> > >
> > > +        xor     edx,DWORD[44+rsp]
> > >
> > > +        lea     r13d,[((-1894007588))+r13*1+r14]
> > >
> > > +        xor     ebx,r11d
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     r13d,eax
> > >
> > > +        rol     edx,1
> > >
> > > +        and     ebx,edi
> > >
> > > +        add     r13d,ecx
> > >
> > > +        rol     edi,30
> > >
> > > +        add     r13d,ebx
> > >
> > > +        xor     ebp,DWORD[16+rsp]
> > >
> > > +        mov     eax,r11d
> > >
> > > +        mov     DWORD[12+rsp],edx
> > >
> > > +        mov     ebx,r11d
> > >
> > > +        xor     ebp,DWORD[24+rsp]
> > >
> > > +        and     eax,edi
> > >
> > > +        mov     ecx,r13d
> > >
> > > +        xor     ebp,DWORD[48+rsp]
> > >
> > > +        lea     r12d,[((-1894007588))+r12*1+rdx]
> > >
> > > +        xor     ebx,edi
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     r12d,eax
> > >
> > > +        rol     ebp,1
> > >
> > > +        and     ebx,esi
> > >
> > > +        add     r12d,ecx
> > >
> > > +        rol     esi,30
> > >
> > > +        add     r12d,ebx
> > >
> > > +        xor     r14d,DWORD[20+rsp]
> > >
> > > +        mov     eax,edi
> > >
> > > +        mov     DWORD[16+rsp],ebp
> > >
> > > +        mov     ebx,edi
> > >
> > > +        xor     r14d,DWORD[28+rsp]
> > >
> > > +        and     eax,esi
> > >
> > > +        mov     ecx,r12d
> > >
> > > +        xor     r14d,DWORD[52+rsp]
> > >
> > > +        lea     r11d,[((-1894007588))+r11*1+rbp]
> > >
> > > +        xor     ebx,esi
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     r11d,eax
> > >
> > > +        rol     r14d,1
> > >
> > > +        and     ebx,r13d
> > >
> > > +        add     r11d,ecx
> > >
> > > +        rol     r13d,30
> > >
> > > +        add     r11d,ebx
> > >
> > > +        xor     edx,DWORD[24+rsp]
> > >
> > > +        mov     eax,esi
> > >
> > > +        mov     DWORD[20+rsp],r14d
> > >
> > > +        mov     ebx,esi
> > >
> > > +        xor     edx,DWORD[32+rsp]
> > >
> > > +        and     eax,r13d
> > >
> > > +        mov     ecx,r11d
> > >
> > > +        xor     edx,DWORD[56+rsp]
> > >
> > > +        lea     edi,[((-1894007588))+rdi*1+r14]
> > >
> > > +        xor     ebx,r13d
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     edi,eax
> > >
> > > +        rol     edx,1
> > >
> > > +        and     ebx,r12d
> > >
> > > +        add     edi,ecx
> > >
> > > +        rol     r12d,30
> > >
> > > +        add     edi,ebx
> > >
> > > +        xor     ebp,DWORD[28+rsp]
> > >
> > > +        mov     eax,r13d
> > >
> > > +        mov     DWORD[24+rsp],edx
> > >
> > > +        mov     ebx,r13d
> > >
> > > +        xor     ebp,DWORD[36+rsp]
> > >
> > > +        and     eax,r12d
> > >
> > > +        mov     ecx,edi
> > >
> > > +        xor     ebp,DWORD[60+rsp]
> > >
> > > +        lea     esi,[((-1894007588))+rsi*1+rdx]
> > >
> > > +        xor     ebx,r12d
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     esi,eax
> > >
> > > +        rol     ebp,1
> > >
> > > +        and     ebx,r11d
> > >
> > > +        add     esi,ecx
> > >
> > > +        rol     r11d,30
> > >
> > > +        add     esi,ebx
> > >
> > > +        xor     r14d,DWORD[32+rsp]
> > >
> > > +        mov     eax,r12d
> > >
> > > +        mov     DWORD[28+rsp],ebp
> > >
> > > +        mov     ebx,r12d
> > >
> > > +        xor     r14d,DWORD[40+rsp]
> > >
> > > +        and     eax,r11d
> > >
> > > +        mov     ecx,esi
> > >
> > > +        xor     r14d,DWORD[rsp]
> > >
> > > +        lea     r13d,[((-1894007588))+r13*1+rbp]
> > >
> > > +        xor     ebx,r11d
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     r13d,eax
> > >
> > > +        rol     r14d,1
> > >
> > > +        and     ebx,edi
> > >
> > > +        add     r13d,ecx
> > >
> > > +        rol     edi,30
> > >
> > > +        add     r13d,ebx
> > >
> > > +        xor     edx,DWORD[36+rsp]
> > >
> > > +        mov     eax,r11d
> > >
> > > +        mov     DWORD[32+rsp],r14d
> > >
> > > +        mov     ebx,r11d
> > >
> > > +        xor     edx,DWORD[44+rsp]
> > >
> > > +        and     eax,edi
> > >
> > > +        mov     ecx,r13d
> > >
> > > +        xor     edx,DWORD[4+rsp]
> > >
> > > +        lea     r12d,[((-1894007588))+r12*1+r14]
> > >
> > > +        xor     ebx,edi
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     r12d,eax
> > >
> > > +        rol     edx,1
> > >
> > > +        and     ebx,esi
> > >
> > > +        add     r12d,ecx
> > >
> > > +        rol     esi,30
> > >
> > > +        add     r12d,ebx
> > >
> > > +        xor     ebp,DWORD[40+rsp]
> > >
> > > +        mov     eax,edi
> > >
> > > +        mov     DWORD[36+rsp],edx
> > >
> > > +        mov     ebx,edi
> > >
> > > +        xor     ebp,DWORD[48+rsp]
> > >
> > > +        and     eax,esi
> > >
> > > +        mov     ecx,r12d
> > >
> > > +        xor     ebp,DWORD[8+rsp]
> > >
> > > +        lea     r11d,[((-1894007588))+r11*1+rdx]
> > >
> > > +        xor     ebx,esi
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     r11d,eax
> > >
> > > +        rol     ebp,1
> > >
> > > +        and     ebx,r13d
> > >
> > > +        add     r11d,ecx
> > >
> > > +        rol     r13d,30
> > >
> > > +        add     r11d,ebx
> > >
> > > +        xor     r14d,DWORD[44+rsp]
> > >
> > > +        mov     eax,esi
> > >
> > > +        mov     DWORD[40+rsp],ebp
> > >
> > > +        mov     ebx,esi
> > >
> > > +        xor     r14d,DWORD[52+rsp]
> > >
> > > +        and     eax,r13d
> > >
> > > +        mov     ecx,r11d
> > >
> > > +        xor     r14d,DWORD[12+rsp]
> > >
> > > +        lea     edi,[((-1894007588))+rdi*1+rbp]
> > >
> > > +        xor     ebx,r13d
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     edi,eax
> > >
> > > +        rol     r14d,1
> > >
> > > +        and     ebx,r12d
> > >
> > > +        add     edi,ecx
> > >
> > > +        rol     r12d,30
> > >
> > > +        add     edi,ebx
> > >
> > > +        xor     edx,DWORD[48+rsp]
> > >
> > > +        mov     eax,r13d
> > >
> > > +        mov     DWORD[44+rsp],r14d
> > >
> > > +        mov     ebx,r13d
> > >
> > > +        xor     edx,DWORD[56+rsp]
> > >
> > > +        and     eax,r12d
> > >
> > > +        mov     ecx,edi
> > >
> > > +        xor     edx,DWORD[16+rsp]
> > >
> > > +        lea     esi,[((-1894007588))+rsi*1+r14]
> > >
> > > +        xor     ebx,r12d
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     esi,eax
> > >
> > > +        rol     edx,1
> > >
> > > +        and     ebx,r11d
> > >
> > > +        add     esi,ecx
> > >
> > > +        rol     r11d,30
> > >
> > > +        add     esi,ebx
> > >
> > > +        xor     ebp,DWORD[52+rsp]
> > >
> > > +        mov     eax,edi
> > >
> > > +        mov     DWORD[48+rsp],edx
> > >
> > > +        mov     ecx,esi
> > >
> > > +        xor     ebp,DWORD[60+rsp]
> > >
> > > +        xor     eax,r12d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[56+rsp]
> > >
> > > +        mov     eax,esi
> > >
> > > +        mov     DWORD[52+rsp],ebp
> > >
> > > +        mov     ecx,r13d
> > >
> > > +        xor     r14d,DWORD[rsp]
> > >
> > > +        xor     eax,r11d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[60+rsp]
> > >
> > > +        mov     eax,r13d
> > >
> > > +        mov     DWORD[56+rsp],r14d
> > >
> > > +        mov     ecx,r12d
> > >
> > > +        xor     edx,DWORD[4+rsp]
> > >
> > > +        xor     eax,edi
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[rsp]
> > >
> > > +        mov     eax,r12d
> > >
> > > +        mov     DWORD[60+rsp],edx
> > >
> > > +        mov     ecx,r11d
> > >
> > > +        xor     ebp,DWORD[8+rsp]
> > >
> > > +        xor     eax,esi
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[4+rsp]
> > >
> > > +        mov     eax,r11d
> > >
> > > +        mov     DWORD[rsp],ebp
> > >
> > > +        mov     ecx,edi
> > >
> > > +        xor     r14d,DWORD[12+rsp]
> > >
> > > +        xor     eax,r13d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[8+rsp]
> > >
> > > +        mov     eax,edi
> > >
> > > +        mov     DWORD[4+rsp],r14d
> > >
> > > +        mov     ecx,esi
> > >
> > > +        xor     edx,DWORD[16+rsp]
> > >
> > > +        xor     eax,r12d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[12+rsp]
> > >
> > > +        mov     eax,esi
> > >
> > > +        mov     DWORD[8+rsp],edx
> > >
> > > +        mov     ecx,r13d
> > >
> > > +        xor     ebp,DWORD[20+rsp]
> > >
> > > +        xor     eax,r11d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[16+rsp]
> > >
> > > +        mov     eax,r13d
> > >
> > > +        mov     DWORD[12+rsp],ebp
> > >
> > > +        mov     ecx,r12d
> > >
> > > +        xor     r14d,DWORD[24+rsp]
> > >
> > > +        xor     eax,edi
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[20+rsp]
> > >
> > > +        mov     eax,r12d
> > >
> > > +        mov     DWORD[16+rsp],r14d
> > >
> > > +        mov     ecx,r11d
> > >
> > > +        xor     edx,DWORD[28+rsp]
> > >
> > > +        xor     eax,esi
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[24+rsp]
> > >
> > > +        mov     eax,r11d
> > >
> > > +        mov     DWORD[20+rsp],edx
> > >
> > > +        mov     ecx,edi
> > >
> > > +        xor     ebp,DWORD[32+rsp]
> > >
> > > +        xor     eax,r13d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[28+rsp]
> > >
> > > +        mov     eax,edi
> > >
> > > +        mov     DWORD[24+rsp],ebp
> > >
> > > +        mov     ecx,esi
> > >
> > > +        xor     r14d,DWORD[36+rsp]
> > >
> > > +        xor     eax,r12d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[32+rsp]
> > >
> > > +        mov     eax,esi
> > >
> > > +        mov     DWORD[28+rsp],r14d
> > >
> > > +        mov     ecx,r13d
> > >
> > > +        xor     edx,DWORD[40+rsp]
> > >
> > > +        xor     eax,r11d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[36+rsp]
> > >
> > > +        mov     eax,r13d
> > >
> > > +
> > >
> > > +        mov     ecx,r12d
> > >
> > > +        xor     ebp,DWORD[44+rsp]
> > >
> > > +        xor     eax,edi
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[40+rsp]
> > >
> > > +        mov     eax,r12d
> > >
> > > +
> > >
> > > +        mov     ecx,r11d
> > >
> > > +        xor     r14d,DWORD[48+rsp]
> > >
> > > +        xor     eax,esi
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[44+rsp]
> > >
> > > +        mov     eax,r11d
> > >
> > > +
> > >
> > > +        mov     ecx,edi
> > >
> > > +        xor     edx,DWORD[52+rsp]
> > >
> > > +        xor     eax,r13d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[48+rsp]
> > >
> > > +        mov     eax,edi
> > >
> > > +
> > >
> > > +        mov     ecx,esi
> > >
> > > +        xor     ebp,DWORD[56+rsp]
> > >
> > > +        xor     eax,r12d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[52+rsp]
> > >
> > > +        mov     eax,esi
> > >
> > > +
> > >
> > > +        mov     ecx,r13d
> > >
> > > +        xor     r14d,DWORD[60+rsp]
> > >
> > > +        xor     eax,r11d
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[56+rsp]
> > >
> > > +        mov     eax,r13d
> > >
> > > +
> > >
> > > +        mov     ecx,r12d
> > >
> > > +        xor     edx,DWORD[rsp]
> > >
> > > +        xor     eax,edi
> > >
> > > +        rol     ecx,5
> > >
> > > +        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[60+rsp]
> > >
> > > +        mov     eax,r12d
> > >
> > > +
> > >
> > > +        mov     ecx,r11d
> > >
> > > +        xor     ebp,DWORD[4+rsp]
> > >
> > > +        xor     eax,esi
> > >
> > > +        rol     ecx,5
> > >
> > > +        xor     ebp,DWORD[28+rsp]
> > >
> > > +        lea     edi,[((-899497514))+rdi*1+rdx]
> > >
> > > +        xor     eax,r13d
> > >
> > > +        add     edi,ecx
> > >
> > > +        rol     r12d,30
> > >
> > > +        add     edi,eax
> > >
> > > +        rol     ebp,1
> > >
> > > +        mov     eax,r11d
> > >
> > > +        mov     ecx,edi
> > >
> > > +        xor     eax,r13d
> > >
> > > +        lea     esi,[((-899497514))+rsi*1+rbp]
> > >
> > > +        rol     ecx,5
> > >
> > > +        xor     eax,r12d
> > >
> > > +        add     esi,ecx
> > >
> > > +        rol     r11d,30
> > >
> > > +        add     esi,eax
> > >
> > > +        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,[64+r9]
> > >
> > > +        jnz     NEAR $L$loop
> > >
> > > +
> > >
> > > +        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:
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +sha1_block_data_order_shaext:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_sha1_block_data_order_shaext:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +
> > >
> > > +
> > >
> > > +_shaext_shortcut:
> > >
> > > +
> > >
> > > +        lea     rsp,[((-72))+rsp]
> > >
> > > +        movaps  XMMWORD[(-8-64)+rax],xmm6
> > >
> > > +        movaps  XMMWORD[(-8-48)+rax],xmm7
> > >
> > > +        movaps  XMMWORD[(-8-32)+rax],xmm8
> > >
> > > +        movaps  XMMWORD[(-8-16)+rax],xmm9
> > >
> > > +$L$prologue_shaext:
> > >
> > > +        movdqu  xmm0,XMMWORD[rdi]
> > >
> > > +        movd    xmm1,DWORD[16+rdi]
> > >
> > > +        movdqa  xmm3,XMMWORD[((K_XX_XX+160))]
> > >
> > > +
> > >
> > > +        movdqu  xmm4,XMMWORD[rsi]
> > >
> > > +        pshufd  xmm0,xmm0,27
> > >
> > > +        movdqu  xmm5,XMMWORD[16+rsi]
> > >
> > > +        pshufd  xmm1,xmm1,27
> > >
> > > +        movdqu  xmm6,XMMWORD[32+rsi]
> > >
> > > +DB      102,15,56,0,227
> > >
> > > +        movdqu  xmm7,XMMWORD[48+rsi]
> > >
> > > +DB      102,15,56,0,235
> > >
> > > +DB      102,15,56,0,243
> > >
> > > +        movdqa  xmm9,xmm1
> > >
> > > +DB      102,15,56,0,251
> > >
> > > +        jmp     NEAR $L$oop_shaext
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$oop_shaext:
> > >
> > > +        dec     rdx
> > >
> > > +        lea     r8,[64+rsi]
> > >
> > > +        paddd   xmm1,xmm4
> > >
> > > +        cmovne  rsi,r8
> > >
> > > +        movdqa  xmm8,xmm0
> > >
> > > +DB      15,56,201,229
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +DB      15,58,204,193,0
> > >
> > > +DB      15,56,200,213
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +DB      15,56,201,238
> > >
> > > +DB      15,56,202,231
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +DB      15,58,204,194,0
> > >
> > > +DB      15,56,200,206
> > >
> > > +        pxor    xmm5,xmm7
> > >
> > > +DB      15,56,202,236
> > >
> > > +DB      15,56,201,247
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +DB      15,58,204,193,0
> > >
> > > +DB      15,56,200,215
> > >
> > > +        pxor    xmm6,xmm4
> > >
> > > +DB      15,56,201,252
> > >
> > > +DB      15,56,202,245
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +DB      15,58,204,194,0
> > >
> > > +DB      15,56,200,204
> > >
> > > +        pxor    xmm7,xmm5
> > >
> > > +DB      15,56,202,254
> > >
> > > +DB      15,56,201,229
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +DB      15,58,204,193,0
> > >
> > > +DB      15,56,200,213
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +DB      15,56,201,238
> > >
> > > +DB      15,56,202,231
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +DB      15,58,204,194,1
> > >
> > > +DB      15,56,200,206
> > >
> > > +        pxor    xmm5,xmm7
> > >
> > > +DB      15,56,202,236
> > >
> > > +DB      15,56,201,247
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +DB      15,58,204,193,1
> > >
> > > +DB      15,56,200,215
> > >
> > > +        pxor    xmm6,xmm4
> > >
> > > +DB      15,56,201,252
> > >
> > > +DB      15,56,202,245
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +DB      15,58,204,194,1
> > >
> > > +DB      15,56,200,204
> > >
> > > +        pxor    xmm7,xmm5
> > >
> > > +DB      15,56,202,254
> > >
> > > +DB      15,56,201,229
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +DB      15,58,204,193,1
> > >
> > > +DB      15,56,200,213
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +DB      15,56,201,238
> > >
> > > +DB      15,56,202,231
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +DB      15,58,204,194,1
> > >
> > > +DB      15,56,200,206
> > >
> > > +        pxor    xmm5,xmm7
> > >
> > > +DB      15,56,202,236
> > >
> > > +DB      15,56,201,247
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +DB      15,58,204,193,2
> > >
> > > +DB      15,56,200,215
> > >
> > > +        pxor    xmm6,xmm4
> > >
> > > +DB      15,56,201,252
> > >
> > > +DB      15,56,202,245
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +DB      15,58,204,194,2
> > >
> > > +DB      15,56,200,204
> > >
> > > +        pxor    xmm7,xmm5
> > >
> > > +DB      15,56,202,254
> > >
> > > +DB      15,56,201,229
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +DB      15,58,204,193,2
> > >
> > > +DB      15,56,200,213
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +DB      15,56,201,238
> > >
> > > +DB      15,56,202,231
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +DB      15,58,204,194,2
> > >
> > > +DB      15,56,200,206
> > >
> > > +        pxor    xmm5,xmm7
> > >
> > > +DB      15,56,202,236
> > >
> > > +DB      15,56,201,247
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +DB      15,58,204,193,2
> > >
> > > +DB      15,56,200,215
> > >
> > > +        pxor    xmm6,xmm4
> > >
> > > +DB      15,56,201,252
> > >
> > > +DB      15,56,202,245
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +DB      15,58,204,194,3
> > >
> > > +DB      15,56,200,204
> > >
> > > +        pxor    xmm7,xmm5
> > >
> > > +DB      15,56,202,254
> > >
> > > +        movdqu  xmm4,XMMWORD[rsi]
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +DB      15,58,204,193,3
> > >
> > > +DB      15,56,200,213
> > >
> > > +        movdqu  xmm5,XMMWORD[16+rsi]
> > >
> > > +DB      102,15,56,0,227
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +DB      15,58,204,194,3
> > >
> > > +DB      15,56,200,206
> > >
> > > +        movdqu  xmm6,XMMWORD[32+rsi]
> > >
> > > +DB      102,15,56,0,235
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm0
> > >
> > > +DB      15,58,204,193,3
> > >
> > > +DB      15,56,200,215
> > >
> > > +        movdqu  xmm7,XMMWORD[48+rsi]
> > >
> > > +DB      102,15,56,0,243
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +DB      15,58,204,194,3
> > >
> > > +DB      65,15,56,200,201
> > >
> > > +DB      102,15,56,0,251
> > >
> > > +
> > >
> > > +        paddd   xmm0,xmm8
> > >
> > > +        movdqa  xmm9,xmm1
> > >
> > > +
> > >
> > > +        jnz     NEAR $L$oop_shaext
> > >
> > > +
> > >
> > > +        pshufd  xmm0,xmm0,27
> > >
> > > +        pshufd  xmm1,xmm1,27
> > >
> > > +        movdqu  XMMWORD[rdi],xmm0
> > >
> > > +        movd    DWORD[16+rdi],xmm1
> > >
> > > +        movaps  xmm6,XMMWORD[((-8-64))+rax]
> > >
> > > +        movaps  xmm7,XMMWORD[((-8-48))+rax]
> > >
> > > +        movaps  xmm8,XMMWORD[((-8-32))+rax]
> > >
> > > +        movaps  xmm9,XMMWORD[((-8-16))+rax]
> > >
> > > +        mov     rsp,rax
> > >
> > > +$L$epilogue_shaext:
> > >
> > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > >
> > > +        mov     rsi,QWORD[16+rsp]
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +$L$SEH_end_sha1_block_data_order_shaext:
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +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:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +
> > >
> > > +
> > >
> > > +_ssse3_shortcut:
> > >
> > > +
> > >
> > > +        mov     r11,rsp
> > >
> > > +
> > >
> > > +        push    rbx
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        push    r12
> > >
> > > +
> > >
> > > +        push    r13
> > >
> > > +
> > >
> > > +        push    r14
> > >
> > > +
> > >
> > > +        lea     rsp,[((-160))+rsp]
> > >
> > > +        movaps  XMMWORD[(-40-96)+r11],xmm6
> > >
> > > +        movaps  XMMWORD[(-40-80)+r11],xmm7
> > >
> > > +        movaps  XMMWORD[(-40-64)+r11],xmm8
> > >
> > > +        movaps  XMMWORD[(-40-48)+r11],xmm9
> > >
> > > +        movaps  XMMWORD[(-40-32)+r11],xmm10
> > >
> > > +        movaps  XMMWORD[(-40-16)+r11],xmm11
> > >
> > > +$L$prologue_ssse3:
> > >
> > > +        and     rsp,-64
> > >
> > > +        mov     r8,rdi
> > >
> > > +        mov     r9,rsi
> > >
> > > +        mov     r10,rdx
> > >
> > > +
> > >
> > > +        shl     r10,6
> > >
> > > +        add     r10,r9
> > >
> > > +        lea     r14,[((K_XX_XX+64))]
> > >
> > > +
> > >
> > > +        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[16+r8]
> > >
> > > +        mov     edi,ecx
> > >
> > > +        xor     edi,edx
> > >
> > > +        and     esi,edi
> > >
> > > +
> > >
> > > +        movdqa  xmm6,XMMWORD[64+r14]
> > >
> > > +        movdqa  xmm9,XMMWORD[((-64))+r14]
> > >
> > > +        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
> > >
> > > +        add     r9,64
> > >
> > > +        paddd   xmm0,xmm9
> > >
> > > +DB      102,15,56,0,222
> > >
> > > +        paddd   xmm1,xmm9
> > >
> > > +        paddd   xmm2,xmm9
> > >
> > > +        movdqa  XMMWORD[rsp],xmm0
> > >
> > > +        psubd   xmm0,xmm9
> > >
> > > +        movdqa  XMMWORD[16+rsp],xmm1
> > >
> > > +        psubd   xmm1,xmm9
> > >
> > > +        movdqa  XMMWORD[32+rsp],xmm2
> > >
> > > +        psubd   xmm2,xmm9
> > >
> > > +        jmp     NEAR $L$oop_ssse3
> > >
> > > +ALIGN   16
> > >
> > > +$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[rsp]
> > >
> > > +        punpcklqdq      xmm4,xmm1
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,esi
> > >
> > > +        psrldq  xmm8,4
> > >
> > > +        and     edi,ebx
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        pxor    xmm4,xmm0
> > >
> > > +        add     ebp,eax
> > >
> > > +        ror     eax,7
> > >
> > > +        pxor    xmm8,xmm2
> > >
> > > +        xor     edi,ecx
> > >
> > > +        mov     esi,ebp
> > >
> > > +        add     edx,DWORD[4+rsp]
> > >
> > > +        pxor    xmm4,xmm8
> > >
> > > +        xor     eax,ebx
> > >
> > > +        rol     ebp,5
> > >
> > > +        movdqa  XMMWORD[48+rsp],xmm9
> > >
> > > +        add     edx,edi
> > >
> > > +        and     esi,eax
> > >
> > > +        movdqa  xmm10,xmm4
> > >
> > > +        xor     eax,ebx
> > >
> > > +        add     edx,ebp
> > >
> > > +        ror     ebp,7
> > >
> > > +        movdqa  xmm8,xmm4
> > >
> > > +        xor     esi,ebx
> > >
> > > +        pslldq  xmm10,12
> > >
> > > +        paddd   xmm4,xmm4
> > >
> > > +        mov     edi,edx
> > >
> > > +        add     ecx,DWORD[8+rsp]
> > >
> > > +        psrld   xmm8,31
> > >
> > > +        xor     ebp,eax
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,esi
> > >
> > > +        movdqa  xmm9,xmm10
> > >
> > > +        and     edi,ebp
> > >
> > > +        xor     ebp,eax
> > >
> > > +        psrld   xmm10,30
> > >
> > > +        add     ecx,edx
> > >
> > > +        ror     edx,7
> > >
> > > +        por     xmm4,xmm8
> > >
> > > +        xor     edi,eax
> > >
> > > +        mov     esi,ecx
> > >
> > > +        add     ebx,DWORD[12+rsp]
> > >
> > > +        pslld   xmm9,2
> > >
> > > +        pxor    xmm4,xmm10
> > >
> > > +        xor     edx,ebp
> > >
> > > +        movdqa  xmm10,XMMWORD[((-64))+r14]
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,edi
> > >
> > > +        and     esi,edx
> > >
> > > +        pxor    xmm4,xmm9
> > >
> > > +        xor     edx,ebp
> > >
> > > +        add     ebx,ecx
> > >
> > > +        ror     ecx,7
> > >
> > > +        pshufd  xmm5,xmm1,238
> > >
> > > +        xor     esi,ebp
> > >
> > > +        movdqa  xmm9,xmm4
> > >
> > > +        paddd   xmm10,xmm4
> > >
> > > +        mov     edi,ebx
> > >
> > > +        add     eax,DWORD[16+rsp]
> > >
> > > +        punpcklqdq      xmm5,xmm2
> > >
> > > +        xor     ecx,edx
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,esi
> > >
> > > +        psrldq  xmm9,4
> > >
> > > +        and     edi,ecx
> > >
> > > +        xor     ecx,edx
> > >
> > > +        pxor    xmm5,xmm1
> > >
> > > +        add     eax,ebx
> > >
> > > +        ror     ebx,7
> > >
> > > +        pxor    xmm9,xmm3
> > >
> > > +        xor     edi,edx
> > >
> > > +        mov     esi,eax
> > >
> > > +        add     ebp,DWORD[20+rsp]
> > >
> > > +        pxor    xmm5,xmm9
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        rol     eax,5
> > >
> > > +        movdqa  XMMWORD[rsp],xmm10
> > >
> > > +        add     ebp,edi
> > >
> > > +        and     esi,ebx
> > >
> > > +        movdqa  xmm8,xmm5
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        add     ebp,eax
> > >
> > > +        ror     eax,7
> > >
> > > +        movdqa  xmm9,xmm5
> > >
> > > +        xor     esi,ecx
> > >
> > > +        pslldq  xmm8,12
> > >
> > > +        paddd   xmm5,xmm5
> > >
> > > +        mov     edi,ebp
> > >
> > > +        add     edx,DWORD[24+rsp]
> > >
> > > +        psrld   xmm9,31
> > >
> > > +        xor     eax,ebx
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,esi
> > >
> > > +        movdqa  xmm10,xmm8
> > >
> > > +        and     edi,eax
> > >
> > > +        xor     eax,ebx
> > >
> > > +        psrld   xmm8,30
> > >
> > > +        add     edx,ebp
> > >
> > > +        ror     ebp,7
> > >
> > > +        por     xmm5,xmm9
> > >
> > > +        xor     edi,ebx
> > >
> > > +        mov     esi,edx
> > >
> > > +        add     ecx,DWORD[28+rsp]
> > >
> > > +        pslld   xmm10,2
> > >
> > > +        pxor    xmm5,xmm8
> > >
> > > +        xor     ebp,eax
> > >
> > > +        movdqa  xmm8,XMMWORD[((-32))+r14]
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,edi
> > >
> > > +        and     esi,ebp
> > >
> > > +        pxor    xmm5,xmm10
> > >
> > > +        xor     ebp,eax
> > >
> > > +        add     ecx,edx
> > >
> > > +        ror     edx,7
> > >
> > > +        pshufd  xmm6,xmm2,238
> > >
> > > +        xor     esi,eax
> > >
> > > +        movdqa  xmm10,xmm5
> > >
> > > +        paddd   xmm8,xmm5
> > >
> > > +        mov     edi,ecx
> > >
> > > +        add     ebx,DWORD[32+rsp]
> > >
> > > +        punpcklqdq      xmm6,xmm3
> > >
> > > +        xor     edx,ebp
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,esi
> > >
> > > +        psrldq  xmm10,4
> > >
> > > +        and     edi,edx
> > >
> > > +        xor     edx,ebp
> > >
> > > +        pxor    xmm6,xmm2
> > >
> > > +        add     ebx,ecx
> > >
> > > +        ror     ecx,7
> > >
> > > +        pxor    xmm10,xmm4
> > >
> > > +        xor     edi,ebp
> > >
> > > +        mov     esi,ebx
> > >
> > > +        add     eax,DWORD[36+rsp]
> > >
> > > +        pxor    xmm6,xmm10
> > >
> > > +        xor     ecx,edx
> > >
> > > +        rol     ebx,5
> > >
> > > +        movdqa  XMMWORD[16+rsp],xmm8
> > >
> > > +        add     eax,edi
> > >
> > > +        and     esi,ecx
> > >
> > > +        movdqa  xmm9,xmm6
> > >
> > > +        xor     ecx,edx
> > >
> > > +        add     eax,ebx
> > >
> > > +        ror     ebx,7
> > >
> > > +        movdqa  xmm10,xmm6
> > >
> > > +        xor     esi,edx
> > >
> > > +        pslldq  xmm9,12
> > >
> > > +        paddd   xmm6,xmm6
> > >
> > > +        mov     edi,eax
> > >
> > > +        add     ebp,DWORD[40+rsp]
> > >
> > > +        psrld   xmm10,31
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,esi
> > >
> > > +        movdqa  xmm8,xmm9
> > >
> > > +        and     edi,ebx
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        psrld   xmm9,30
> > >
> > > +        add     ebp,eax
> > >
> > > +        ror     eax,7
> > >
> > > +        por     xmm6,xmm10
> > >
> > > +        xor     edi,ecx
> > >
> > > +        mov     esi,ebp
> > >
> > > +        add     edx,DWORD[44+rsp]
> > >
> > > +        pslld   xmm8,2
> > >
> > > +        pxor    xmm6,xmm9
> > >
> > > +        xor     eax,ebx
> > >
> > > +        movdqa  xmm9,XMMWORD[((-32))+r14]
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,edi
> > >
> > > +        and     esi,eax
> > >
> > > +        pxor    xmm6,xmm8
> > >
> > > +        xor     eax,ebx
> > >
> > > +        add     edx,ebp
> > >
> > > +        ror     ebp,7
> > >
> > > +        pshufd  xmm7,xmm3,238
> > >
> > > +        xor     esi,ebx
> > >
> > > +        movdqa  xmm8,xmm6
> > >
> > > +        paddd   xmm9,xmm6
> > >
> > > +        mov     edi,edx
> > >
> > > +        add     ecx,DWORD[48+rsp]
> > >
> > > +        punpcklqdq      xmm7,xmm4
> > >
> > > +        xor     ebp,eax
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,esi
> > >
> > > +        psrldq  xmm8,4
> > >
> > > +        and     edi,ebp
> > >
> > > +        xor     ebp,eax
> > >
> > > +        pxor    xmm7,xmm3
> > >
> > > +        add     ecx,edx
> > >
> > > +        ror     edx,7
> > >
> > > +        pxor    xmm8,xmm5
> > >
> > > +        xor     edi,eax
> > >
> > > +        mov     esi,ecx
> > >
> > > +        add     ebx,DWORD[52+rsp]
> > >
> > > +        pxor    xmm7,xmm8
> > >
> > > +        xor     edx,ebp
> > >
> > > +        rol     ecx,5
> > >
> > > +        movdqa  XMMWORD[32+rsp],xmm9
> > >
> > > +        add     ebx,edi
> > >
> > > +        and     esi,edx
> > >
> > > +        movdqa  xmm10,xmm7
> > >
> > > +        xor     edx,ebp
> > >
> > > +        add     ebx,ecx
> > >
> > > +        ror     ecx,7
> > >
> > > +        movdqa  xmm8,xmm7
> > >
> > > +        xor     esi,ebp
> > >
> > > +        pslldq  xmm10,12
> > >
> > > +        paddd   xmm7,xmm7
> > >
> > > +        mov     edi,ebx
> > >
> > > +        add     eax,DWORD[56+rsp]
> > >
> > > +        psrld   xmm8,31
> > >
> > > +        xor     ecx,edx
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,esi
> > >
> > > +        movdqa  xmm9,xmm10
> > >
> > > +        and     edi,ecx
> > >
> > > +        xor     ecx,edx
> > >
> > > +        psrld   xmm10,30
> > >
> > > +        add     eax,ebx
> > >
> > > +        ror     ebx,7
> > >
> > > +        por     xmm7,xmm8
> > >
> > > +        xor     edi,edx
> > >
> > > +        mov     esi,eax
> > >
> > > +        add     ebp,DWORD[60+rsp]
> > >
> > > +        pslld   xmm9,2
> > >
> > > +        pxor    xmm7,xmm10
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        movdqa  xmm10,XMMWORD[((-32))+r14]
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,edi
> > >
> > > +        and     esi,ebx
> > >
> > > +        pxor    xmm7,xmm9
> > >
> > > +        pshufd  xmm9,xmm6,238
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        add     ebp,eax
> > >
> > > +        ror     eax,7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        xor     esi,ecx
> > >
> > > +        mov     edi,ebp
> > >
> > > +        add     edx,DWORD[rsp]
> > >
> > > +        punpcklqdq      xmm9,xmm7
> > >
> > > +        xor     eax,ebx
> > >
> > > +        rol     ebp,5
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        add     edx,esi
> > >
> > > +        and     edi,eax
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        xor     eax,ebx
> > >
> > > +        paddd   xmm10,xmm7
> > >
> > > +        add     edx,ebp
> > >
> > > +        pxor    xmm0,xmm9
> > >
> > > +        ror     ebp,7
> > >
> > > +        xor     edi,ebx
> > >
> > > +        mov     esi,edx
> > >
> > > +        add     ecx,DWORD[4+rsp]
> > >
> > > +        movdqa  xmm9,xmm0
> > >
> > > +        xor     ebp,eax
> > >
> > > +        rol     edx,5
> > >
> > > +        movdqa  XMMWORD[48+rsp],xmm10
> > >
> > > +        add     ecx,edi
> > >
> > > +        and     esi,ebp
> > >
> > > +        xor     ebp,eax
> > >
> > > +        pslld   xmm0,2
> > >
> > > +        add     ecx,edx
> > >
> > > +        ror     edx,7
> > >
> > > +        psrld   xmm9,30
> > >
> > > +        xor     esi,eax
> > >
> > > +        mov     edi,ecx
> > >
> > > +        add     ebx,DWORD[8+rsp]
> > >
> > > +        por     xmm0,xmm9
> > >
> > > +        xor     edx,ebp
> > >
> > > +        rol     ecx,5
> > >
> > > +        pshufd  xmm10,xmm7,238
> > >
> > > +        add     ebx,esi
> > >
> > > +        and     edi,edx
> > >
> > > +        xor     edx,ebp
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[12+rsp]
> > >
> > > +        xor     edi,ebp
> > >
> > > +        mov     esi,ebx
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,edi
> > >
> > > +        xor     esi,edx
> > >
> > > +        ror     ecx,7
> > >
> > > +        add     eax,ebx
> > >
> > > +        pxor    xmm1,xmm5
> > >
> > > +        add     ebp,DWORD[16+rsp]
> > >
> > > +        xor     esi,ecx
> > >
> > > +        punpcklqdq      xmm10,xmm0
> > >
> > > +        mov     edi,eax
> > >
> > > +        rol     eax,5
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        add     ebp,esi
> > >
> > > +        xor     edi,ecx
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +        ror     ebx,7
> > >
> > > +        paddd   xmm8,xmm0
> > >
> > > +        add     ebp,eax
> > >
> > > +        pxor    xmm1,xmm10
> > >
> > > +        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[rsp],xmm8
> > >
> > > +        ror     eax,7
> > >
> > > +        add     edx,ebp
> > >
> > > +        add     ecx,DWORD[24+rsp]
> > >
> > > +        pslld   xmm1,2
> > >
> > > +        xor     esi,eax
> > >
> > > +        mov     edi,edx
> > >
> > > +        psrld   xmm10,30
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,esi
> > >
> > > +        xor     edi,eax
> > >
> > > +        ror     ebp,7
> > >
> > > +        por     xmm1,xmm10
> > >
> > > +        add     ecx,edx
> > >
> > > +        add     ebx,DWORD[28+rsp]
> > >
> > > +        pshufd  xmm8,xmm0,238
> > >
> > > +        xor     edi,ebp
> > >
> > > +        mov     esi,ecx
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,edi
> > >
> > > +        xor     esi,ebp
> > >
> > > +        ror     edx,7
> > >
> > > +        add     ebx,ecx
> > >
> > > +        pxor    xmm2,xmm6
> > >
> > > +        add     eax,DWORD[32+rsp]
> > >
> > > +        xor     esi,edx
> > >
> > > +        punpcklqdq      xmm8,xmm1
> > >
> > > +        mov     edi,ebx
> > >
> > > +        rol     ebx,5
> > >
> > > +        pxor    xmm2,xmm3
> > >
> > > +        add     eax,esi
> > >
> > > +        xor     edi,edx
> > >
> > > +        movdqa  xmm10,XMMWORD[r14]
> > >
> > > +        ror     ecx,7
> > >
> > > +        paddd   xmm9,xmm1
> > >
> > > +        add     eax,ebx
> > >
> > > +        pxor    xmm2,xmm8
> > >
> > > +        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[16+rsp],xmm9
> > >
> > > +        ror     ebx,7
> > >
> > > +        add     ebp,eax
> > >
> > > +        add     edx,DWORD[40+rsp]
> > >
> > > +        pslld   xmm2,2
> > >
> > > +        xor     esi,ebx
> > >
> > > +        mov     edi,ebp
> > >
> > > +        psrld   xmm8,30
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,esi
> > >
> > > +        xor     edi,ebx
> > >
> > > +        ror     eax,7
> > >
> > > +        por     xmm2,xmm8
> > >
> > > +        add     edx,ebp
> > >
> > > +        add     ecx,DWORD[44+rsp]
> > >
> > > +        pshufd  xmm9,xmm1,238
> > >
> > > +        xor     edi,eax
> > >
> > > +        mov     esi,edx
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,edi
> > >
> > > +        xor     esi,eax
> > >
> > > +        ror     ebp,7
> > >
> > > +        add     ecx,edx
> > >
> > > +        pxor    xmm3,xmm7
> > >
> > > +        add     ebx,DWORD[48+rsp]
> > >
> > > +        xor     esi,ebp
> > >
> > > +        punpcklqdq      xmm9,xmm2
> > >
> > > +        mov     edi,ecx
> > >
> > > +        rol     ecx,5
> > >
> > > +        pxor    xmm3,xmm4
> > >
> > > +        add     ebx,esi
> > >
> > > +        xor     edi,ebp
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        ror     edx,7
> > >
> > > +        paddd   xmm10,xmm2
> > >
> > > +        add     ebx,ecx
> > >
> > > +        pxor    xmm3,xmm9
> > >
> > > +        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[32+rsp],xmm10
> > >
> > > +        ror     ecx,7
> > >
> > > +        add     eax,ebx
> > >
> > > +        add     ebp,DWORD[56+rsp]
> > >
> > > +        pslld   xmm3,2
> > >
> > > +        xor     esi,ecx
> > >
> > > +        mov     edi,eax
> > >
> > > +        psrld   xmm9,30
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,esi
> > >
> > > +        xor     edi,ecx
> > >
> > > +        ror     ebx,7
> > >
> > > +        por     xmm3,xmm9
> > >
> > > +        add     ebp,eax
> > >
> > > +        add     edx,DWORD[60+rsp]
> > >
> > > +        pshufd  xmm10,xmm2,238
> > >
> > > +        xor     edi,ebx
> > >
> > > +        mov     esi,ebp
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,edi
> > >
> > > +        xor     esi,ebx
> > >
> > > +        ror     eax,7
> > >
> > > +        add     edx,ebp
> > >
> > > +        pxor    xmm4,xmm0
> > >
> > > +        add     ecx,DWORD[rsp]
> > >
> > > +        xor     esi,eax
> > >
> > > +        punpcklqdq      xmm10,xmm3
> > >
> > > +        mov     edi,edx
> > >
> > > +        rol     edx,5
> > >
> > > +        pxor    xmm4,xmm5
> > >
> > > +        add     ecx,esi
> > >
> > > +        xor     edi,eax
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +        ror     ebp,7
> > >
> > > +        paddd   xmm8,xmm3
> > >
> > > +        add     ecx,edx
> > >
> > > +        pxor    xmm4,xmm10
> > >
> > > +        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[48+rsp],xmm8
> > >
> > > +        ror     edx,7
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[8+rsp]
> > >
> > > +        pslld   xmm4,2
> > >
> > > +        xor     esi,edx
> > >
> > > +        mov     edi,ebx
> > >
> > > +        psrld   xmm10,30
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,esi
> > >
> > > +        xor     edi,edx
> > >
> > > +        ror     ecx,7
> > >
> > > +        por     xmm4,xmm10
> > >
> > > +        add     eax,ebx
> > >
> > > +        add     ebp,DWORD[12+rsp]
> > >
> > > +        pshufd  xmm8,xmm3,238
> > >
> > > +        xor     edi,ecx
> > >
> > > +        mov     esi,eax
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,edi
> > >
> > > +        xor     esi,ecx
> > >
> > > +        ror     ebx,7
> > >
> > > +        add     ebp,eax
> > >
> > > +        pxor    xmm5,xmm1
> > >
> > > +        add     edx,DWORD[16+rsp]
> > >
> > > +        xor     esi,ebx
> > >
> > > +        punpcklqdq      xmm8,xmm4
> > >
> > > +        mov     edi,ebp
> > >
> > > +        rol     ebp,5
> > >
> > > +        pxor    xmm5,xmm6
> > >
> > > +        add     edx,esi
> > >
> > > +        xor     edi,ebx
> > >
> > > +        movdqa  xmm10,xmm9
> > >
> > > +        ror     eax,7
> > >
> > > +        paddd   xmm9,xmm4
> > >
> > > +        add     edx,ebp
> > >
> > > +        pxor    xmm5,xmm8
> > >
> > > +        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[rsp],xmm9
> > >
> > > +        ror     ebp,7
> > >
> > > +        add     ecx,edx
> > >
> > > +        add     ebx,DWORD[24+rsp]
> > >
> > > +        pslld   xmm5,2
> > >
> > > +        xor     esi,ebp
> > >
> > > +        mov     edi,ecx
> > >
> > > +        psrld   xmm8,30
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,esi
> > >
> > > +        xor     edi,ebp
> > >
> > > +        ror     edx,7
> > >
> > > +        por     xmm5,xmm8
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[28+rsp]
> > >
> > > +        pshufd  xmm9,xmm4,238
> > >
> > > +        ror     ecx,7
> > >
> > > +        mov     esi,ebx
> > >
> > > +        xor     edi,edx
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,edi
> > >
> > > +        xor     esi,ecx
> > >
> > > +        xor     ecx,edx
> > >
> > > +        add     eax,ebx
> > >
> > > +        pxor    xmm6,xmm2
> > >
> > > +        add     ebp,DWORD[32+rsp]
> > >
> > > +        and     esi,ecx
> > >
> > > +        xor     ecx,edx
> > >
> > > +        ror     ebx,7
> > >
> > > +        punpcklqdq      xmm9,xmm5
> > >
> > > +        mov     edi,eax
> > >
> > > +        xor     esi,ecx
> > >
> > > +        pxor    xmm6,xmm7
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,esi
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        xor     edi,ebx
> > >
> > > +        paddd   xmm10,xmm5
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        pxor    xmm6,xmm9
> > >
> > > +        add     ebp,eax
> > >
> > > +        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[16+rsp],xmm10
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,edi
> > >
> > > +        xor     esi,eax
> > >
> > > +        pslld   xmm6,2
> > >
> > > +        xor     eax,ebx
> > >
> > > +        add     edx,ebp
> > >
> > > +        psrld   xmm9,30
> > >
> > > +        add     ecx,DWORD[40+rsp]
> > >
> > > +        and     esi,eax
> > >
> > > +        xor     eax,ebx
> > >
> > > +        por     xmm6,xmm9
> > >
> > > +        ror     ebp,7
> > >
> > > +        mov     edi,edx
> > >
> > > +        xor     esi,eax
> > >
> > > +        rol     edx,5
> > >
> > > +        pshufd  xmm10,xmm5,238
> > >
> > > +        add     ecx,esi
> > >
> > > +        xor     edi,ebp
> > >
> > > +        xor     ebp,eax
> > >
> > > +        add     ecx,edx
> > >
> > > +        add     ebx,DWORD[44+rsp]
> > >
> > > +        and     edi,ebp
> > >
> > > +        xor     ebp,eax
> > >
> > > +        ror     edx,7
> > >
> > > +        mov     esi,ecx
> > >
> > > +        xor     edi,ebp
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,edi
> > >
> > > +        xor     esi,edx
> > >
> > > +        xor     edx,ebp
> > >
> > > +        add     ebx,ecx
> > >
> > > +        pxor    xmm7,xmm3
> > >
> > > +        add     eax,DWORD[48+rsp]
> > >
> > > +        and     esi,edx
> > >
> > > +        xor     edx,ebp
> > >
> > > +        ror     ecx,7
> > >
> > > +        punpcklqdq      xmm10,xmm6
> > >
> > > +        mov     edi,ebx
> > >
> > > +        xor     esi,edx
> > >
> > > +        pxor    xmm7,xmm0
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,esi
> > >
> > > +        movdqa  xmm9,XMMWORD[32+r14]
> > >
> > > +        xor     edi,ecx
> > >
> > > +        paddd   xmm8,xmm6
> > >
> > > +        xor     ecx,edx
> > >
> > > +        pxor    xmm7,xmm10
> > >
> > > +        add     eax,ebx
> > >
> > > +        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[32+rsp],xmm8
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,edi
> > >
> > > +        xor     esi,ebx
> > >
> > > +        pslld   xmm7,2
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        add     ebp,eax
> > >
> > > +        psrld   xmm10,30
> > >
> > > +        add     edx,DWORD[56+rsp]
> > >
> > > +        and     esi,ebx
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        por     xmm7,xmm10
> > >
> > > +        ror     eax,7
> > >
> > > +        mov     edi,ebp
> > >
> > > +        xor     esi,ebx
> > >
> > > +        rol     ebp,5
> > >
> > > +        pshufd  xmm8,xmm6,238
> > >
> > > +        add     edx,esi
> > >
> > > +        xor     edi,eax
> > >
> > > +        xor     eax,ebx
> > >
> > > +        add     edx,ebp
> > >
> > > +        add     ecx,DWORD[60+rsp]
> > >
> > > +        and     edi,eax
> > >
> > > +        xor     eax,ebx
> > >
> > > +        ror     ebp,7
> > >
> > > +        mov     esi,edx
> > >
> > > +        xor     edi,eax
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,edi
> > >
> > > +        xor     esi,ebp
> > >
> > > +        xor     ebp,eax
> > >
> > > +        add     ecx,edx
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        add     ebx,DWORD[rsp]
> > >
> > > +        and     esi,ebp
> > >
> > > +        xor     ebp,eax
> > >
> > > +        ror     edx,7
> > >
> > > +        punpcklqdq      xmm8,xmm7
> > >
> > > +        mov     edi,ecx
> > >
> > > +        xor     esi,ebp
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,esi
> > >
> > > +        movdqa  xmm10,xmm9
> > >
> > > +        xor     edi,edx
> > >
> > > +        paddd   xmm9,xmm7
> > >
> > > +        xor     edx,ebp
> > >
> > > +        pxor    xmm0,xmm8
> > >
> > > +        add     ebx,ecx
> > >
> > > +        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[48+rsp],xmm9
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,edi
> > >
> > > +        xor     esi,ecx
> > >
> > > +        pslld   xmm0,2
> > >
> > > +        xor     ecx,edx
> > >
> > > +        add     eax,ebx
> > >
> > > +        psrld   xmm8,30
> > >
> > > +        add     ebp,DWORD[8+rsp]
> > >
> > > +        and     esi,ecx
> > >
> > > +        xor     ecx,edx
> > >
> > > +        por     xmm0,xmm8
> > >
> > > +        ror     ebx,7
> > >
> > > +        mov     edi,eax
> > >
> > > +        xor     esi,ecx
> > >
> > > +        rol     eax,5
> > >
> > > +        pshufd  xmm9,xmm7,238
> > >
> > > +        add     ebp,esi
> > >
> > > +        xor     edi,ebx
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        add     ebp,eax
> > >
> > > +        add     edx,DWORD[12+rsp]
> > >
> > > +        and     edi,ebx
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        ror     eax,7
> > >
> > > +        mov     esi,ebp
> > >
> > > +        xor     edi,ebx
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,edi
> > >
> > > +        xor     esi,eax
> > >
> > > +        xor     eax,ebx
> > >
> > > +        add     edx,ebp
> > >
> > > +        pxor    xmm1,xmm5
> > >
> > > +        add     ecx,DWORD[16+rsp]
> > >
> > > +        and     esi,eax
> > >
> > > +        xor     eax,ebx
> > >
> > > +        ror     ebp,7
> > >
> > > +        punpcklqdq      xmm9,xmm0
> > >
> > > +        mov     edi,edx
> > >
> > > +        xor     esi,eax
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,esi
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        xor     edi,ebp
> > >
> > > +        paddd   xmm10,xmm0
> > >
> > > +        xor     ebp,eax
> > >
> > > +        pxor    xmm1,xmm9
> > >
> > > +        add     ecx,edx
> > >
> > > +        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[rsp],xmm10
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,edi
> > >
> > > +        xor     esi,edx
> > >
> > > +        pslld   xmm1,2
> > >
> > > +        xor     edx,ebp
> > >
> > > +        add     ebx,ecx
> > >
> > > +        psrld   xmm9,30
> > >
> > > +        add     eax,DWORD[24+rsp]
> > >
> > > +        and     esi,edx
> > >
> > > +        xor     edx,ebp
> > >
> > > +        por     xmm1,xmm9
> > >
> > > +        ror     ecx,7
> > >
> > > +        mov     edi,ebx
> > >
> > > +        xor     esi,edx
> > >
> > > +        rol     ebx,5
> > >
> > > +        pshufd  xmm10,xmm0,238
> > >
> > > +        add     eax,esi
> > >
> > > +        xor     edi,ecx
> > >
> > > +        xor     ecx,edx
> > >
> > > +        add     eax,ebx
> > >
> > > +        add     ebp,DWORD[28+rsp]
> > >
> > > +        and     edi,ecx
> > >
> > > +        xor     ecx,edx
> > >
> > > +        ror     ebx,7
> > >
> > > +        mov     esi,eax
> > >
> > > +        xor     edi,ecx
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,edi
> > >
> > > +        xor     esi,ebx
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        add     ebp,eax
> > >
> > > +        pxor    xmm2,xmm6
> > >
> > > +        add     edx,DWORD[32+rsp]
> > >
> > > +        and     esi,ebx
> > >
> > > +        xor     ebx,ecx
> > >
> > > +        ror     eax,7
> > >
> > > +        punpcklqdq      xmm10,xmm1
> > >
> > > +        mov     edi,ebp
> > >
> > > +        xor     esi,ebx
> > >
> > > +        pxor    xmm2,xmm3
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,esi
> > >
> > > +        movdqa  xmm9,xmm8
> > >
> > > +        xor     edi,eax
> > >
> > > +        paddd   xmm8,xmm1
> > >
> > > +        xor     eax,ebx
> > >
> > > +        pxor    xmm2,xmm10
> > >
> > > +        add     edx,ebp
> > >
> > > +        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[16+rsp],xmm8
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,edi
> > >
> > > +        xor     esi,ebp
> > >
> > > +        pslld   xmm2,2
> > >
> > > +        xor     ebp,eax
> > >
> > > +        add     ecx,edx
> > >
> > > +        psrld   xmm10,30
> > >
> > > +        add     ebx,DWORD[40+rsp]
> > >
> > > +        and     esi,ebp
> > >
> > > +        xor     ebp,eax
> > >
> > > +        por     xmm2,xmm10
> > >
> > > +        ror     edx,7
> > >
> > > +        mov     edi,ecx
> > >
> > > +        xor     esi,ebp
> > >
> > > +        rol     ecx,5
> > >
> > > +        pshufd  xmm8,xmm1,238
> > >
> > > +        add     ebx,esi
> > >
> > > +        xor     edi,edx
> > >
> > > +        xor     edx,ebp
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[44+rsp]
> > >
> > > +        and     edi,edx
> > >
> > > +        xor     edx,ebp
> > >
> > > +        ror     ecx,7
> > >
> > > +        mov     esi,ebx
> > >
> > > +        xor     edi,edx
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,edi
> > >
> > > +        xor     esi,edx
> > >
> > > +        add     eax,ebx
> > >
> > > +        pxor    xmm3,xmm7
> > >
> > > +        add     ebp,DWORD[48+rsp]
> > >
> > > +        xor     esi,ecx
> > >
> > > +        punpcklqdq      xmm8,xmm2
> > >
> > > +        mov     edi,eax
> > >
> > > +        rol     eax,5
> > >
> > > +        pxor    xmm3,xmm4
> > >
> > > +        add     ebp,esi
> > >
> > > +        xor     edi,ecx
> > >
> > > +        movdqa  xmm10,xmm9
> > >
> > > +        ror     ebx,7
> > >
> > > +        paddd   xmm9,xmm2
> > >
> > > +        add     ebp,eax
> > >
> > > +        pxor    xmm3,xmm8
> > >
> > > +        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[32+rsp],xmm9
> > >
> > > +        ror     eax,7
> > >
> > > +        add     edx,ebp
> > >
> > > +        add     ecx,DWORD[56+rsp]
> > >
> > > +        pslld   xmm3,2
> > >
> > > +        xor     esi,eax
> > >
> > > +        mov     edi,edx
> > >
> > > +        psrld   xmm8,30
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,esi
> > >
> > > +        xor     edi,eax
> > >
> > > +        ror     ebp,7
> > >
> > > +        por     xmm3,xmm8
> > >
> > > +        add     ecx,edx
> > >
> > > +        add     ebx,DWORD[60+rsp]
> > >
> > > +        xor     edi,ebp
> > >
> > > +        mov     esi,ecx
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,edi
> > >
> > > +        xor     esi,ebp
> > >
> > > +        ror     edx,7
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[rsp]
> > >
> > > +        xor     esi,edx
> > >
> > > +        mov     edi,ebx
> > >
> > > +        rol     ebx,5
> > >
> > > +        paddd   xmm10,xmm3
> > >
> > > +        add     eax,esi
> > >
> > > +        xor     edi,edx
> > >
> > > +        movdqa  XMMWORD[48+rsp],xmm10
> > >
> > > +        ror     ecx,7
> > >
> > > +        add     eax,ebx
> > >
> > > +        add     ebp,DWORD[4+rsp]
> > >
> > > +        xor     edi,ecx
> > >
> > > +        mov     esi,eax
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,edi
> > >
> > > +        xor     esi,ecx
> > >
> > > +        ror     ebx,7
> > >
> > > +        add     ebp,eax
> > >
> > > +        add     edx,DWORD[8+rsp]
> > >
> > > +        xor     esi,ebx
> > >
> > > +        mov     edi,ebp
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,esi
> > >
> > > +        xor     edi,ebx
> > >
> > > +        ror     eax,7
> > >
> > > +        add     edx,ebp
> > >
> > > +        add     ecx,DWORD[12+rsp]
> > >
> > > +        xor     edi,eax
> > >
> > > +        mov     esi,edx
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,edi
> > >
> > > +        xor     esi,eax
> > >
> > > +        ror     ebp,7
> > >
> > > +        add     ecx,edx
> > >
> > > +        cmp     r9,r10
> > >
> > > +        je      NEAR $L$done_ssse3
> > >
> > > +        movdqa  xmm6,XMMWORD[64+r14]
> > >
> > > +        movdqa  xmm9,XMMWORD[((-64))+r14]
> > >
> > > +        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[16+rsp]
> > >
> > > +        xor     esi,ebp
> > >
> > > +        mov     edi,ecx
> > >
> > > +DB      102,15,56,0,206
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,esi
> > >
> > > +        xor     edi,ebp
> > >
> > > +        ror     edx,7
> > >
> > > +        paddd   xmm0,xmm9
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[20+rsp]
> > >
> > > +        xor     edi,edx
> > >
> > > +        mov     esi,ebx
> > >
> > > +        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[24+rsp]
> > >
> > > +        xor     esi,ecx
> > >
> > > +        mov     edi,eax
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,esi
> > >
> > > +        xor     edi,ecx
> > >
> > > +        ror     ebx,7
> > >
> > > +        add     ebp,eax
> > >
> > > +        add     edx,DWORD[28+rsp]
> > >
> > > +        xor     edi,ebx
> > >
> > > +        mov     esi,ebp
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,edi
> > >
> > > +        xor     esi,ebx
> > >
> > > +        ror     eax,7
> > >
> > > +        add     edx,ebp
> > >
> > > +        add     ecx,DWORD[32+rsp]
> > >
> > > +        xor     esi,eax
> > >
> > > +        mov     edi,edx
> > >
> > > +DB      102,15,56,0,214
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,esi
> > >
> > > +        xor     edi,eax
> > >
> > > +        ror     ebp,7
> > >
> > > +        paddd   xmm1,xmm9
> > >
> > > +        add     ecx,edx
> > >
> > > +        add     ebx,DWORD[36+rsp]
> > >
> > > +        xor     edi,ebp
> > >
> > > +        mov     esi,ecx
> > >
> > > +        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[40+rsp]
> > >
> > > +        xor     esi,edx
> > >
> > > +        mov     edi,ebx
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,esi
> > >
> > > +        xor     edi,edx
> > >
> > > +        ror     ecx,7
> > >
> > > +        add     eax,ebx
> > >
> > > +        add     ebp,DWORD[44+rsp]
> > >
> > > +        xor     edi,ecx
> > >
> > > +        mov     esi,eax
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,edi
> > >
> > > +        xor     esi,ecx
> > >
> > > +        ror     ebx,7
> > >
> > > +        add     ebp,eax
> > >
> > > +        add     edx,DWORD[48+rsp]
> > >
> > > +        xor     esi,ebx
> > >
> > > +        mov     edi,ebp
> > >
> > > +DB      102,15,56,0,222
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,esi
> > >
> > > +        xor     edi,ebx
> > >
> > > +        ror     eax,7
> > >
> > > +        paddd   xmm2,xmm9
> > >
> > > +        add     edx,ebp
> > >
> > > +        add     ecx,DWORD[52+rsp]
> > >
> > > +        xor     edi,eax
> > >
> > > +        mov     esi,edx
> > >
> > > +        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[56+rsp]
> > >
> > > +        xor     esi,ebp
> > >
> > > +        mov     edi,ecx
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,esi
> > >
> > > +        xor     edi,ebp
> > >
> > > +        ror     edx,7
> > >
> > > +        add     ebx,ecx
> > >
> > > +        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[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[8+r8],ecx
> > >
> > > +        mov     edi,ecx
> > >
> > > +        mov     DWORD[12+r8],edx
> > >
> > > +        xor     edi,edx
> > >
> > > +        mov     DWORD[16+r8],ebp
> > >
> > > +        and     esi,edi
> > >
> > > +        jmp     NEAR $L$oop_ssse3
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$done_ssse3:
> > >
> > > +        add     ebx,DWORD[16+rsp]
> > >
> > > +        xor     esi,ebp
> > >
> > > +        mov     edi,ecx
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,esi
> > >
> > > +        xor     edi,ebp
> > >
> > > +        ror     edx,7
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[20+rsp]
> > >
> > > +        xor     edi,edx
> > >
> > > +        mov     esi,ebx
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,edi
> > >
> > > +        xor     esi,edx
> > >
> > > +        ror     ecx,7
> > >
> > > +        add     eax,ebx
> > >
> > > +        add     ebp,DWORD[24+rsp]
> > >
> > > +        xor     esi,ecx
> > >
> > > +        mov     edi,eax
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,esi
> > >
> > > +        xor     edi,ecx
> > >
> > > +        ror     ebx,7
> > >
> > > +        add     ebp,eax
> > >
> > > +        add     edx,DWORD[28+rsp]
> > >
> > > +        xor     edi,ebx
> > >
> > > +        mov     esi,ebp
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,edi
> > >
> > > +        xor     esi,ebx
> > >
> > > +        ror     eax,7
> > >
> > > +        add     edx,ebp
> > >
> > > +        add     ecx,DWORD[32+rsp]
> > >
> > > +        xor     esi,eax
> > >
> > > +        mov     edi,edx
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,esi
> > >
> > > +        xor     edi,eax
> > >
> > > +        ror     ebp,7
> > >
> > > +        add     ecx,edx
> > >
> > > +        add     ebx,DWORD[36+rsp]
> > >
> > > +        xor     edi,ebp
> > >
> > > +        mov     esi,ecx
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,edi
> > >
> > > +        xor     esi,ebp
> > >
> > > +        ror     edx,7
> > >
> > > +        add     ebx,ecx
> > >
> > > +        add     eax,DWORD[40+rsp]
> > >
> > > +        xor     esi,edx
> > >
> > > +        mov     edi,ebx
> > >
> > > +        rol     ebx,5
> > >
> > > +        add     eax,esi
> > >
> > > +        xor     edi,edx
> > >
> > > +        ror     ecx,7
> > >
> > > +        add     eax,ebx
> > >
> > > +        add     ebp,DWORD[44+rsp]
> > >
> > > +        xor     edi,ecx
> > >
> > > +        mov     esi,eax
> > >
> > > +        rol     eax,5
> > >
> > > +        add     ebp,edi
> > >
> > > +        xor     esi,ecx
> > >
> > > +        ror     ebx,7
> > >
> > > +        add     ebp,eax
> > >
> > > +        add     edx,DWORD[48+rsp]
> > >
> > > +        xor     esi,ebx
> > >
> > > +        mov     edi,ebp
> > >
> > > +        rol     ebp,5
> > >
> > > +        add     edx,esi
> > >
> > > +        xor     edi,ebx
> > >
> > > +        ror     eax,7
> > >
> > > +        add     edx,ebp
> > >
> > > +        add     ecx,DWORD[52+rsp]
> > >
> > > +        xor     edi,eax
> > >
> > > +        mov     esi,edx
> > >
> > > +        rol     edx,5
> > >
> > > +        add     ecx,edi
> > >
> > > +        xor     esi,eax
> > >
> > > +        ror     ebp,7
> > >
> > > +        add     ecx,edx
> > >
> > > +        add     ebx,DWORD[56+rsp]
> > >
> > > +        xor     esi,ebp
> > >
> > > +        mov     edi,ecx
> > >
> > > +        rol     ecx,5
> > >
> > > +        add     ebx,esi
> > >
> > > +        xor     edi,ebp
> > >
> > > +        ror     edx,7
> > >
> > > +        add     ebx,ecx
> > >
> > > +        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[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))+r11]
> > >
> > > +        movaps  xmm7,XMMWORD[((-40-80))+r11]
> > >
> > > +        movaps  xmm8,XMMWORD[((-40-64))+r11]
> > >
> > > +        movaps  xmm9,XMMWORD[((-40-48))+r11]
> > >
> > > +        movaps  xmm10,XMMWORD[((-40-32))+r11]
> > >
> > > +        movaps  xmm11,XMMWORD[((-40-16))+r11]
> > >
> > > +        mov     r14,QWORD[((-40))+r11]
> > >
> > > +
> > >
> > > +        mov     r13,QWORD[((-32))+r11]
> > >
> > > +
> > >
> > > +        mov     r12,QWORD[((-24))+r11]
> > >
> > > +
> > >
> > > +        mov     rbp,QWORD[((-16))+r11]
> > >
> > > +
> > >
> > > +        mov     rbx,QWORD[((-8))+r11]
> > >
> > > +
> > >
> > > +        lea     rsp,[r11]
> > >
> > > +
> > >
> > > +$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:
> > >
> > > +ALIGN   64
> > >
> > > +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
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +se_handler:
> > >
> > > +        push    rsi
> > >
> > > +        push    rdi
> > >
> > > +        push    rbx
> > >
> > > +        push    rbp
> > >
> > > +        push    r12
> > >
> > > +        push    r13
> > >
> > > +        push    r14
> > >
> > > +        push    r15
> > >
> > > +        pushfq
> > >
> > > +        sub     rsp,64
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[120+r8]
> > >
> > > +        mov     rbx,QWORD[248+r8]
> > >
> > > +
> > >
> > > +        lea     r10,[$L$prologue]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[152+r8]
> > >
> > > +
> > >
> > > +        lea     r10,[$L$epilogue]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jae     NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[64+rax]
> > >
> > > +
> > >
> > > +        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     NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +shaext_handler:
> > >
> > > +        push    rsi
> > >
> > > +        push    rdi
> > >
> > > +        push    rbx
> > >
> > > +        push    rbp
> > >
> > > +        push    r12
> > >
> > > +        push    r13
> > >
> > > +        push    r14
> > >
> > > +        push    r15
> > >
> > > +        pushfq
> > >
> > > +        sub     rsp,64
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[120+r8]
> > >
> > > +        mov     rbx,QWORD[248+r8]
> > >
> > > +
> > >
> > > +        lea     r10,[$L$prologue_shaext]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +        lea     r10,[$L$epilogue_shaext]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jae     NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +        lea     rsi,[((-8-64))+rax]
> > >
> > > +        lea     rdi,[512+r8]
> > >
> > > +        mov     ecx,8
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +        jmp     NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +ssse3_handler:
> > >
> > > +        push    rsi
> > >
> > > +        push    rdi
> > >
> > > +        push    rbx
> > >
> > > +        push    rbp
> > >
> > > +        push    r12
> > >
> > > +        push    r13
> > >
> > > +        push    r14
> > >
> > > +        push    r15
> > >
> > > +        pushfq
> > >
> > > +        sub     rsp,64
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[120+r8]
> > >
> > > +        mov     rbx,QWORD[248+r8]
> > >
> > > +
> > >
> > > +        mov     rsi,QWORD[8+r9]
> > >
> > > +        mov     r11,QWORD[56+r9]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[208+r8]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[4+r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jae     NEAR $L$common_seh_tail
> > >
> > > +
> > >
> > > +        lea     rsi,[((-40-96))+rax]
> > >
> > > +        lea     rdi,[512+r8]
> > >
> > > +        mov     ecx,12
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +        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[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[40+r9]
> > >
> > > +        mov     rsi,r8
> > >
> > > +        mov     ecx,154
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +        mov     rsi,r9
> > >
> > > +        xor     rcx,rcx
> > >
> > > +        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
> > >
> > > +        popfq
> > >
> > > +        pop     r15
> > >
> > > +        pop     r14
> > >
> > > +        pop     r13
> > >
> > > +        pop     r12
> > >
> > > +        pop     rbp
> > >
> > > +        pop     rbx
> > >
> > > +        pop     rdi
> > >
> > > +        pop     rsi
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +section .pdata rdata align=4
> > >
> > > +ALIGN   4
> > >
> > > +        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_shaext wrt ..imagebase
> > >
> > > +        DD      $L$SEH_end_sha1_block_data_order_shaext wrt ..imagebase
> > >
> > > +        DD      $L$SEH_info_sha1_block_data_order_shaext 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:
> > >
> > > +DB      9,0,0,0
> > >
> > > +        DD      se_handler wrt ..imagebase
> > >
> > > +$L$SEH_info_sha1_block_data_order_shaext:
> > >
> > > +DB      9,0,0,0
> > >
> > > +        DD      shaext_handler wrt ..imagebase
> > >
> > > +$L$SEH_info_sha1_block_data_order_ssse3:
> > >
> > > +DB      9,0,0,0
> > >
> > > +        DD      ssse3_handler wrt ..imagebase
> > >
> > > +        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
> > > wrt ..imagebase
> > >
> > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
> > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
> > > x86_64.nasm
> > > new file mode 100644
> > > index 0000000000..7cd5eae85c
> > > --- /dev/null
> > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
> x86_64.nasm
> > > @@ -0,0 +1,3461 @@
> > > +; WARNING: do not edit!
> > >
> > > +; Generated from openssl/crypto/sha/asm/sha256-mb-x86_64.pl
> > >
> > > +;
> > >
> > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
> > >
> > > +;
> > >
> > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > >
> > > +; this file except in compliance with the License.  You can obtain a copy
> > >
> > > +; in the file LICENSE in the source distribution or at
> > >
> > > +; https://www.openssl.org/source/license.html
> > >
> > > +
> > >
> > > +default rel
> > >
> > > +%define XMMWORD
> > >
> > > +%define YMMWORD
> > >
> > > +%define ZMMWORD
> > >
> > > +section .text code align=64
> > >
> > > +
> > >
> > > +
> > >
> > > +EXTERN  OPENSSL_ia32cap_P
> > >
> > > +
> > >
> > > +global  sha256_multi_block
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +sha256_multi_block:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_sha256_multi_block:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
> > >
> > > +        bt      rcx,61
> > >
> > > +        jc      NEAR _shaext_shortcut
> > >
> > > +        mov     rax,rsp
> > >
> > > +
> > >
> > > +        push    rbx
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        lea     rsp,[((-168))+rsp]
> > >
> > > +        movaps  XMMWORD[rsp],xmm6
> > >
> > > +        movaps  XMMWORD[16+rsp],xmm7
> > >
> > > +        movaps  XMMWORD[32+rsp],xmm8
> > >
> > > +        movaps  XMMWORD[48+rsp],xmm9
> > >
> > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > >
> > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > >
> > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > >
> > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > >
> > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > >
> > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > >
> > > +        sub     rsp,288
> > >
> > > +        and     rsp,-256
> > >
> > > +        mov     QWORD[272+rsp],rax
> > >
> > > +
> > >
> > > +$L$body:
> > >
> > > +        lea     rbp,[((K256+128))]
> > >
> > > +        lea     rbx,[256+rsp]
> > >
> > > +        lea     rdi,[128+rdi]
> > >
> > > +
> > >
> > > +$L$oop_grande:
> > >
> > > +        mov     DWORD[280+rsp],edx
> > >
> > > +        xor     edx,edx
> > >
> > > +        mov     r8,QWORD[rsi]
> > >
> > > +        mov     ecx,DWORD[8+rsi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        mov     DWORD[rbx],ecx
> > >
> > > +        cmovle  r8,rbp
> > >
> > > +        mov     r9,QWORD[16+rsi]
> > >
> > > +        mov     ecx,DWORD[24+rsi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        mov     DWORD[4+rbx],ecx
> > >
> > > +        cmovle  r9,rbp
> > >
> > > +        mov     r10,QWORD[32+rsi]
> > >
> > > +        mov     ecx,DWORD[40+rsi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        mov     DWORD[8+rbx],ecx
> > >
> > > +        cmovle  r10,rbp
> > >
> > > +        mov     r11,QWORD[48+rsi]
> > >
> > > +        mov     ecx,DWORD[56+rsi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        mov     DWORD[12+rbx],ecx
> > >
> > > +        cmovle  r11,rbp
> > >
> > > +        test    edx,edx
> > >
> > > +        jz      NEAR $L$done
> > >
> > > +
> > >
> > > +        movdqu  xmm8,XMMWORD[((0-128))+rdi]
> > >
> > > +        lea     rax,[128+rsp]
> > >
> > > +        movdqu  xmm9,XMMWORD[((32-128))+rdi]
> > >
> > > +        movdqu  xmm10,XMMWORD[((64-128))+rdi]
> > >
> > > +        movdqu  xmm11,XMMWORD[((96-128))+rdi]
> > >
> > > +        movdqu  xmm12,XMMWORD[((128-128))+rdi]
> > >
> > > +        movdqu  xmm13,XMMWORD[((160-128))+rdi]
> > >
> > > +        movdqu  xmm14,XMMWORD[((192-128))+rdi]
> > >
> > > +        movdqu  xmm15,XMMWORD[((224-128))+rdi]
> > >
> > > +        movdqu  xmm6,XMMWORD[$L$pbswap]
> > >
> > > +        jmp     NEAR $L$oop
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$oop:
> > >
> > > +        movdqa  xmm4,xmm10
> > >
> > > +        pxor    xmm4,xmm9
> > >
> > > +        movd    xmm5,DWORD[r8]
> > >
> > > +        movd    xmm0,DWORD[r9]
> > >
> > > +        movd    xmm1,DWORD[r10]
> > >
> > > +        movd    xmm2,DWORD[r11]
> > >
> > > +        punpckldq       xmm5,xmm1
> > >
> > > +        punpckldq       xmm0,xmm2
> > >
> > > +        punpckldq       xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +DB      102,15,56,0,238
> > >
> > > +        movdqa  xmm2,xmm12
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm12
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(0-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm15
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm12
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm3,xmm12
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm14
> > >
> > > +        pand    xmm3,xmm13
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm8
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm8
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        movdqa  xmm3,xmm9
> > >
> > > +        movdqa  xmm7,xmm8
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm3,xmm8
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm4,xmm3
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm15,xmm9
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm15,xmm4
> > >
> > > +        paddd   xmm11,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm15,xmm5
> > >
> > > +        paddd   xmm15,xmm7
> > >
> > > +        movd    xmm5,DWORD[4+r8]
> > >
> > > +        movd    xmm0,DWORD[4+r9]
> > >
> > > +        movd    xmm1,DWORD[4+r10]
> > >
> > > +        movd    xmm2,DWORD[4+r11]
> > >
> > > +        punpckldq       xmm5,xmm1
> > >
> > > +        punpckldq       xmm0,xmm2
> > >
> > > +        punpckldq       xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm11
> > >
> > > +DB      102,15,56,0,238
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm11
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(16-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm14
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[((-96))+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm11
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm4,xmm11
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm13
> > >
> > > +        pand    xmm4,xmm12
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm15
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm15
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        movdqa  xmm4,xmm8
> > >
> > > +        movdqa  xmm7,xmm15
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm4,xmm15
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm3,xmm4
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm14,xmm8
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm14,xmm3
> > >
> > > +        paddd   xmm10,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm14,xmm5
> > >
> > > +        paddd   xmm14,xmm7
> > >
> > > +        movd    xmm5,DWORD[8+r8]
> > >
> > > +        movd    xmm0,DWORD[8+r9]
> > >
> > > +        movd    xmm1,DWORD[8+r10]
> > >
> > > +        movd    xmm2,DWORD[8+r11]
> > >
> > > +        punpckldq       xmm5,xmm1
> > >
> > > +        punpckldq       xmm0,xmm2
> > >
> > > +        punpckldq       xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +DB      102,15,56,0,238
> > >
> > > +        movdqa  xmm2,xmm10
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm10
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(32-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm13
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm10
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm3,xmm10
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm12
> > >
> > > +        pand    xmm3,xmm11
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm14
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm14
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        movdqa  xmm3,xmm15
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm3,xmm14
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm4,xmm3
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm13,xmm15
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm13,xmm4
> > >
> > > +        paddd   xmm9,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm13,xmm5
> > >
> > > +        paddd   xmm13,xmm7
> > >
> > > +        movd    xmm5,DWORD[12+r8]
> > >
> > > +        movd    xmm0,DWORD[12+r9]
> > >
> > > +        movd    xmm1,DWORD[12+r10]
> > >
> > > +        movd    xmm2,DWORD[12+r11]
> > >
> > > +        punpckldq       xmm5,xmm1
> > >
> > > +        punpckldq       xmm0,xmm2
> > >
> > > +        punpckldq       xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm9
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm9
> > >
> > > +DB      102,15,56,0,238
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm9
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(48-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm12
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[((-32))+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm9
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm4,xmm9
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm11
> > >
> > > +        pand    xmm4,xmm10
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm13
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm13
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        movdqa  xmm4,xmm14
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm4,xmm13
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm3,xmm4
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm12,xmm14
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm12,xmm3
> > >
> > > +        paddd   xmm8,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm12,xmm5
> > >
> > > +        paddd   xmm12,xmm7
> > >
> > > +        movd    xmm5,DWORD[16+r8]
> > >
> > > +        movd    xmm0,DWORD[16+r9]
> > >
> > > +        movd    xmm1,DWORD[16+r10]
> > >
> > > +        movd    xmm2,DWORD[16+r11]
> > >
> > > +        punpckldq       xmm5,xmm1
> > >
> > > +        punpckldq       xmm0,xmm2
> > >
> > > +        punpckldq       xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm8
> > >
> > > +DB      102,15,56,0,238
> > >
> > > +        movdqa  xmm2,xmm8
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm8
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(64-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm11
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm8
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm3,xmm8
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm10
> > >
> > > +        pand    xmm3,xmm9
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm12
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm12
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        movdqa  xmm3,xmm13
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm3,xmm12
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm4,xmm3
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm11,xmm13
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm11,xmm4
> > >
> > > +        paddd   xmm15,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm11,xmm5
> > >
> > > +        paddd   xmm11,xmm7
> > >
> > > +        movd    xmm5,DWORD[20+r8]
> > >
> > > +        movd    xmm0,DWORD[20+r9]
> > >
> > > +        movd    xmm1,DWORD[20+r10]
> > >
> > > +        movd    xmm2,DWORD[20+r11]
> > >
> > > +        punpckldq       xmm5,xmm1
> > >
> > > +        punpckldq       xmm0,xmm2
> > >
> > > +        punpckldq       xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm15
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm15
> > >
> > > +DB      102,15,56,0,238
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm15
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(80-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm10
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[32+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm15
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm4,xmm15
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm9
> > >
> > > +        pand    xmm4,xmm8
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm11
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        movdqa  xmm4,xmm12
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm4,xmm11
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm3,xmm4
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm10,xmm12
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm10,xmm3
> > >
> > > +        paddd   xmm14,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm10,xmm5
> > >
> > > +        paddd   xmm10,xmm7
> > >
> > > +        movd    xmm5,DWORD[24+r8]
> > >
> > > +        movd    xmm0,DWORD[24+r9]
> > >
> > > +        movd    xmm1,DWORD[24+r10]
> > >
> > > +        movd    xmm2,DWORD[24+r11]
> > >
> > > +        punpckldq       xmm5,xmm1
> > >
> > > +        punpckldq       xmm0,xmm2
> > >
> > > +        punpckldq       xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +DB      102,15,56,0,238
> > >
> > > +        movdqa  xmm2,xmm14
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm14
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(96-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm9
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[64+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm14
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm3,xmm14
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm8
> > >
> > > +        pand    xmm3,xmm15
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm10
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm10
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        movdqa  xmm3,xmm11
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm3,xmm10
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm4,xmm3
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm9,xmm4
> > >
> > > +        paddd   xmm13,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm9,xmm5
> > >
> > > +        paddd   xmm9,xmm7
> > >
> > > +        movd    xmm5,DWORD[28+r8]
> > >
> > > +        movd    xmm0,DWORD[28+r9]
> > >
> > > +        movd    xmm1,DWORD[28+r10]
> > >
> > > +        movd    xmm2,DWORD[28+r11]
> > >
> > > +        punpckldq       xmm5,xmm1
> > >
> > > +        punpckldq       xmm0,xmm2
> > >
> > > +        punpckldq       xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm13
> > >
> > > +DB      102,15,56,0,238
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm13
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(112-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm8
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[96+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm13
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm4,xmm13
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm15
> > >
> > > +        pand    xmm4,xmm14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm9
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm9
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        movdqa  xmm4,xmm10
> > >
> > > +        movdqa  xmm7,xmm9
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm4,xmm9
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm3,xmm4
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm8,xmm3
> > >
> > > +        paddd   xmm12,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm8,xmm5
> > >
> > > +        paddd   xmm8,xmm7
> > >
> > > +        lea     rbp,[256+rbp]
> > >
> > > +        movd    xmm5,DWORD[32+r8]
> > >
> > > +        movd    xmm0,DWORD[32+r9]
> > >
> > > +        movd    xmm1,DWORD[32+r10]
> > >
> > > +        movd    xmm2,DWORD[32+r11]
> > >
> > > +        punpckldq       xmm5,xmm1
> > >
> > > +        punpckldq       xmm0,xmm2
> > >
> > > +        punpckldq       xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +DB      102,15,56,0,238
> > >
> > > +        movdqa  xmm2,xmm12
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm12
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(128-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm15
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm12
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm3,xmm12
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm14
> > >
> > > +        pand    xmm3,xmm13
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm8
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm8
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        movdqa  xmm3,xmm9
> > >
> > > +        movdqa  xmm7,xmm8
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm3,xmm8
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm4,xmm3
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm15,xmm9
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm15,xmm4
> > >
> > > +        paddd   xmm11,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm15,xmm5
> > >
> > > +        paddd   xmm15,xmm7
> > >
> > > +        movd    xmm5,DWORD[36+r8]
> > >
> > > +        movd    xmm0,DWORD[36+r9]
> > >
> > > +        movd    xmm1,DWORD[36+r10]
> > >
> > > +        movd    xmm2,DWORD[36+r11]
> > >
> > > +        punpckldq       xmm5,xmm1
> > >
> > > +        punpckldq       xmm0,xmm2
> > >
> > > +        punpckldq       xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm11
> > >
> > > +DB      102,15,56,0,238
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm11
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(144-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm14
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[((-96))+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm11
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm4,xmm11
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm13
> > >
> > > +        pand    xmm4,xmm12
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm15
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm15
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        movdqa  xmm4,xmm8
> > >
> > > +        movdqa  xmm7,xmm15
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm4,xmm15
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm3,xmm4
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm14,xmm8
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm14,xmm3
> > >
> > > +        paddd   xmm10,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm14,xmm5
> > >
> > > +        paddd   xmm14,xmm7
> > >
> > > +        movd    xmm5,DWORD[40+r8]
> > >
> > > +        movd    xmm0,DWORD[40+r9]
> > >
> > > +        movd    xmm1,DWORD[40+r10]
> > >
> > > +        movd    xmm2,DWORD[40+r11]
> > >
> > > +        punpckldq       xmm5,xmm1
> > >
> > > +        punpckldq       xmm0,xmm2
> > >
> > > +        punpckldq       xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +DB      102,15,56,0,238
> > >
> > > +        movdqa  xmm2,xmm10
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm10
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(160-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm13
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm10
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm3,xmm10
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm12
> > >
> > > +        pand    xmm3,xmm11
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm14
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm14
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        movdqa  xmm3,xmm15
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm3,xmm14
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm4,xmm3
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm13,xmm15
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm13,xmm4
> > >
> > > +        paddd   xmm9,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm13,xmm5
> > >
> > > +        paddd   xmm13,xmm7
> > >
> > > +        movd    xmm5,DWORD[44+r8]
> > >
> > > +        movd    xmm0,DWORD[44+r9]
> > >
> > > +        movd    xmm1,DWORD[44+r10]
> > >
> > > +        movd    xmm2,DWORD[44+r11]
> > >
> > > +        punpckldq       xmm5,xmm1
> > >
> > > +        punpckldq       xmm0,xmm2
> > >
> > > +        punpckldq       xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm9
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm9
> > >
> > > +DB      102,15,56,0,238
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm9
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(176-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm12
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[((-32))+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm9
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm4,xmm9
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm11
> > >
> > > +        pand    xmm4,xmm10
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm13
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm13
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        movdqa  xmm4,xmm14
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm4,xmm13
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm3,xmm4
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm12,xmm14
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm12,xmm3
> > >
> > > +        paddd   xmm8,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm12,xmm5
> > >
> > > +        paddd   xmm12,xmm7
> > >
> > > +        movd    xmm5,DWORD[48+r8]
> > >
> > > +        movd    xmm0,DWORD[48+r9]
> > >
> > > +        movd    xmm1,DWORD[48+r10]
> > >
> > > +        movd    xmm2,DWORD[48+r11]
> > >
> > > +        punpckldq       xmm5,xmm1
> > >
> > > +        punpckldq       xmm0,xmm2
> > >
> > > +        punpckldq       xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm8
> > >
> > > +DB      102,15,56,0,238
> > >
> > > +        movdqa  xmm2,xmm8
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm8
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(192-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm11
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm8
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm3,xmm8
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm10
> > >
> > > +        pand    xmm3,xmm9
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm12
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm12
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        movdqa  xmm3,xmm13
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm3,xmm12
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm4,xmm3
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm11,xmm13
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm11,xmm4
> > >
> > > +        paddd   xmm15,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm11,xmm5
> > >
> > > +        paddd   xmm11,xmm7
> > >
> > > +        movd    xmm5,DWORD[52+r8]
> > >
> > > +        movd    xmm0,DWORD[52+r9]
> > >
> > > +        movd    xmm1,DWORD[52+r10]
> > >
> > > +        movd    xmm2,DWORD[52+r11]
> > >
> > > +        punpckldq       xmm5,xmm1
> > >
> > > +        punpckldq       xmm0,xmm2
> > >
> > > +        punpckldq       xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm15
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm15
> > >
> > > +DB      102,15,56,0,238
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm15
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(208-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm10
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[32+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm15
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm4,xmm15
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm9
> > >
> > > +        pand    xmm4,xmm8
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm11
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        movdqa  xmm4,xmm12
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm4,xmm11
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm3,xmm4
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm10,xmm12
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm10,xmm3
> > >
> > > +        paddd   xmm14,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm10,xmm5
> > >
> > > +        paddd   xmm10,xmm7
> > >
> > > +        movd    xmm5,DWORD[56+r8]
> > >
> > > +        movd    xmm0,DWORD[56+r9]
> > >
> > > +        movd    xmm1,DWORD[56+r10]
> > >
> > > +        movd    xmm2,DWORD[56+r11]
> > >
> > > +        punpckldq       xmm5,xmm1
> > >
> > > +        punpckldq       xmm0,xmm2
> > >
> > > +        punpckldq       xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +DB      102,15,56,0,238
> > >
> > > +        movdqa  xmm2,xmm14
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm14
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(224-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm9
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[64+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm14
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm3,xmm14
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm8
> > >
> > > +        pand    xmm3,xmm15
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm10
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm10
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        movdqa  xmm3,xmm11
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm3,xmm10
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm4,xmm3
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm9,xmm4
> > >
> > > +        paddd   xmm13,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm9,xmm5
> > >
> > > +        paddd   xmm9,xmm7
> > >
> > > +        movd    xmm5,DWORD[60+r8]
> > >
> > > +        lea     r8,[64+r8]
> > >
> > > +        movd    xmm0,DWORD[60+r9]
> > >
> > > +        lea     r9,[64+r9]
> > >
> > > +        movd    xmm1,DWORD[60+r10]
> > >
> > > +        lea     r10,[64+r10]
> > >
> > > +        movd    xmm2,DWORD[60+r11]
> > >
> > > +        lea     r11,[64+r11]
> > >
> > > +        punpckldq       xmm5,xmm1
> > >
> > > +        punpckldq       xmm0,xmm2
> > >
> > > +        punpckldq       xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm13
> > >
> > > +DB      102,15,56,0,238
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm13
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(240-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm8
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[96+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm13
> > >
> > > +        prefetcht0      [63+r8]
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm4,xmm13
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm15
> > >
> > > +        pand    xmm4,xmm14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        prefetcht0      [63+r9]
> > >
> > > +        movdqa  xmm1,xmm9
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm9
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        movdqa  xmm4,xmm10
> > >
> > > +        movdqa  xmm7,xmm9
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm4,xmm9
> > >
> > > +
> > >
> > > +        prefetcht0      [63+r10]
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm3,xmm4
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +        prefetcht0      [63+r11]
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm8,xmm3
> > >
> > > +        paddd   xmm12,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm8,xmm5
> > >
> > > +        paddd   xmm8,xmm7
> > >
> > > +        lea     rbp,[256+rbp]
> > >
> > > +        movdqu  xmm5,XMMWORD[((0-128))+rax]
> > >
> > > +        mov     ecx,3
> > >
> > > +        jmp     NEAR $L$oop_16_xx
> > >
> > > +ALIGN   32
> > >
> > > +$L$oop_16_xx:
> > >
> > > +        movdqa  xmm6,XMMWORD[((16-128))+rax]
> > >
> > > +        paddd   xmm5,XMMWORD[((144-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm6
> > >
> > > +        movdqa  xmm1,xmm6
> > >
> > > +        psrld   xmm7,3
> > >
> > > +        movdqa  xmm2,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm1,7
> > >
> > > +        movdqa  xmm0,XMMWORD[((224-128))+rax]
> > >
> > > +        pslld   xmm2,14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm1,18-7
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,25-14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm0,10
> > >
> > > +        movdqa  xmm1,xmm3
> > >
> > > +
> > >
> > > +        psrld   xmm3,17
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm1,13
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        psrld   xmm3,19-17
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        pslld   xmm1,15-13
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm12
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm12
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(0-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm15
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm12
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm3,xmm12
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm14
> > >
> > > +        pand    xmm3,xmm13
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm8
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm8
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        movdqa  xmm3,xmm9
> > >
> > > +        movdqa  xmm7,xmm8
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm3,xmm8
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm4,xmm3
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm15,xmm9
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm15,xmm4
> > >
> > > +        paddd   xmm11,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm15,xmm5
> > >
> > > +        paddd   xmm15,xmm7
> > >
> > > +        movdqa  xmm5,XMMWORD[((32-128))+rax]
> > >
> > > +        paddd   xmm6,XMMWORD[((160-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm5
> > >
> > > +        movdqa  xmm1,xmm5
> > >
> > > +        psrld   xmm7,3
> > >
> > > +        movdqa  xmm2,xmm5
> > >
> > > +
> > >
> > > +        psrld   xmm1,7
> > >
> > > +        movdqa  xmm0,XMMWORD[((240-128))+rax]
> > >
> > > +        pslld   xmm2,14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm1,18-7
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,25-14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm0,10
> > >
> > > +        movdqa  xmm1,xmm4
> > >
> > > +
> > >
> > > +        psrld   xmm4,17
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm1,13
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        psrld   xmm4,19-17
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        pslld   xmm1,15-13
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        paddd   xmm6,xmm0
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm11
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm11
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(16-128)+rax],xmm6
> > >
> > > +        paddd   xmm6,xmm14
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm6,XMMWORD[((-96))+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm11
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm4,xmm11
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm13
> > >
> > > +        pand    xmm4,xmm12
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm15
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm15
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        movdqa  xmm4,xmm8
> > >
> > > +        movdqa  xmm7,xmm15
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm4,xmm15
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm6,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm3,xmm4
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm14,xmm8
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm14,xmm3
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +        paddd   xmm14,xmm7
> > >
> > > +        movdqa  xmm6,XMMWORD[((48-128))+rax]
> > >
> > > +        paddd   xmm5,XMMWORD[((176-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm6
> > >
> > > +        movdqa  xmm1,xmm6
> > >
> > > +        psrld   xmm7,3
> > >
> > > +        movdqa  xmm2,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm1,7
> > >
> > > +        movdqa  xmm0,XMMWORD[((0-128))+rax]
> > >
> > > +        pslld   xmm2,14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm1,18-7
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,25-14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm0,10
> > >
> > > +        movdqa  xmm1,xmm3
> > >
> > > +
> > >
> > > +        psrld   xmm3,17
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm1,13
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        psrld   xmm3,19-17
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        pslld   xmm1,15-13
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm10
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm10
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(32-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm13
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm10
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm3,xmm10
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm12
> > >
> > > +        pand    xmm3,xmm11
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm14
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm14
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        movdqa  xmm3,xmm15
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm3,xmm14
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm4,xmm3
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm13,xmm15
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm13,xmm4
> > >
> > > +        paddd   xmm9,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm13,xmm5
> > >
> > > +        paddd   xmm13,xmm7
> > >
> > > +        movdqa  xmm5,XMMWORD[((64-128))+rax]
> > >
> > > +        paddd   xmm6,XMMWORD[((192-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm5
> > >
> > > +        movdqa  xmm1,xmm5
> > >
> > > +        psrld   xmm7,3
> > >
> > > +        movdqa  xmm2,xmm5
> > >
> > > +
> > >
> > > +        psrld   xmm1,7
> > >
> > > +        movdqa  xmm0,XMMWORD[((16-128))+rax]
> > >
> > > +        pslld   xmm2,14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm1,18-7
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,25-14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm0,10
> > >
> > > +        movdqa  xmm1,xmm4
> > >
> > > +
> > >
> > > +        psrld   xmm4,17
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm1,13
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        psrld   xmm4,19-17
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        pslld   xmm1,15-13
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        paddd   xmm6,xmm0
> > >
> > > +        movdqa  xmm7,xmm9
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm9
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm9
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(48-128)+rax],xmm6
> > >
> > > +        paddd   xmm6,xmm12
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm6,XMMWORD[((-32))+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm9
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm4,xmm9
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm11
> > >
> > > +        pand    xmm4,xmm10
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm13
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm13
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        movdqa  xmm4,xmm14
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm4,xmm13
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm6,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm3,xmm4
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm12,xmm14
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm12,xmm3
> > >
> > > +        paddd   xmm8,xmm6
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +        paddd   xmm12,xmm7
> > >
> > > +        movdqa  xmm6,XMMWORD[((80-128))+rax]
> > >
> > > +        paddd   xmm5,XMMWORD[((208-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm6
> > >
> > > +        movdqa  xmm1,xmm6
> > >
> > > +        psrld   xmm7,3
> > >
> > > +        movdqa  xmm2,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm1,7
> > >
> > > +        movdqa  xmm0,XMMWORD[((32-128))+rax]
> > >
> > > +        pslld   xmm2,14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm1,18-7
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,25-14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm0,10
> > >
> > > +        movdqa  xmm1,xmm3
> > >
> > > +
> > >
> > > +        psrld   xmm3,17
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm1,13
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        psrld   xmm3,19-17
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        pslld   xmm1,15-13
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm8
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm8
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm8
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(64-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm11
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm8
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm3,xmm8
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm10
> > >
> > > +        pand    xmm3,xmm9
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm12
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm12
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        movdqa  xmm3,xmm13
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm3,xmm12
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm4,xmm3
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm11,xmm13
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm11,xmm4
> > >
> > > +        paddd   xmm15,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm11,xmm5
> > >
> > > +        paddd   xmm11,xmm7
> > >
> > > +        movdqa  xmm5,XMMWORD[((96-128))+rax]
> > >
> > > +        paddd   xmm6,XMMWORD[((224-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm5
> > >
> > > +        movdqa  xmm1,xmm5
> > >
> > > +        psrld   xmm7,3
> > >
> > > +        movdqa  xmm2,xmm5
> > >
> > > +
> > >
> > > +        psrld   xmm1,7
> > >
> > > +        movdqa  xmm0,XMMWORD[((48-128))+rax]
> > >
> > > +        pslld   xmm2,14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm1,18-7
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,25-14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm0,10
> > >
> > > +        movdqa  xmm1,xmm4
> > >
> > > +
> > >
> > > +        psrld   xmm4,17
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm1,13
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        psrld   xmm4,19-17
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        pslld   xmm1,15-13
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        paddd   xmm6,xmm0
> > >
> > > +        movdqa  xmm7,xmm15
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm15
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm15
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(80-128)+rax],xmm6
> > >
> > > +        paddd   xmm6,xmm10
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm6,XMMWORD[32+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm15
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm4,xmm15
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm9
> > >
> > > +        pand    xmm4,xmm8
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm11
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        movdqa  xmm4,xmm12
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm4,xmm11
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm6,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm3,xmm4
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm10,xmm12
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm10,xmm3
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +        paddd   xmm10,xmm7
> > >
> > > +        movdqa  xmm6,XMMWORD[((112-128))+rax]
> > >
> > > +        paddd   xmm5,XMMWORD[((240-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm6
> > >
> > > +        movdqa  xmm1,xmm6
> > >
> > > +        psrld   xmm7,3
> > >
> > > +        movdqa  xmm2,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm1,7
> > >
> > > +        movdqa  xmm0,XMMWORD[((64-128))+rax]
> > >
> > > +        pslld   xmm2,14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm1,18-7
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,25-14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm0,10
> > >
> > > +        movdqa  xmm1,xmm3
> > >
> > > +
> > >
> > > +        psrld   xmm3,17
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm1,13
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        psrld   xmm3,19-17
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        pslld   xmm1,15-13
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm14
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm14
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(96-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm9
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[64+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm14
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm3,xmm14
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm8
> > >
> > > +        pand    xmm3,xmm15
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm10
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm10
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        movdqa  xmm3,xmm11
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm3,xmm10
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm4,xmm3
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm9,xmm4
> > >
> > > +        paddd   xmm13,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm9,xmm5
> > >
> > > +        paddd   xmm9,xmm7
> > >
> > > +        movdqa  xmm5,XMMWORD[((128-128))+rax]
> > >
> > > +        paddd   xmm6,XMMWORD[((0-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm5
> > >
> > > +        movdqa  xmm1,xmm5
> > >
> > > +        psrld   xmm7,3
> > >
> > > +        movdqa  xmm2,xmm5
> > >
> > > +
> > >
> > > +        psrld   xmm1,7
> > >
> > > +        movdqa  xmm0,XMMWORD[((80-128))+rax]
> > >
> > > +        pslld   xmm2,14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm1,18-7
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,25-14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm0,10
> > >
> > > +        movdqa  xmm1,xmm4
> > >
> > > +
> > >
> > > +        psrld   xmm4,17
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm1,13
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        psrld   xmm4,19-17
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        pslld   xmm1,15-13
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        paddd   xmm6,xmm0
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm13
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm13
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(112-128)+rax],xmm6
> > >
> > > +        paddd   xmm6,xmm8
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm6,XMMWORD[96+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm13
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm4,xmm13
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm15
> > >
> > > +        pand    xmm4,xmm14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm9
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm9
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        movdqa  xmm4,xmm10
> > >
> > > +        movdqa  xmm7,xmm9
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm4,xmm9
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm6,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm3,xmm4
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm8,xmm3
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm8,xmm6
> > >
> > > +        paddd   xmm8,xmm7
> > >
> > > +        lea     rbp,[256+rbp]
> > >
> > > +        movdqa  xmm6,XMMWORD[((144-128))+rax]
> > >
> > > +        paddd   xmm5,XMMWORD[((16-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm6
> > >
> > > +        movdqa  xmm1,xmm6
> > >
> > > +        psrld   xmm7,3
> > >
> > > +        movdqa  xmm2,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm1,7
> > >
> > > +        movdqa  xmm0,XMMWORD[((96-128))+rax]
> > >
> > > +        pslld   xmm2,14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm1,18-7
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,25-14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm0,10
> > >
> > > +        movdqa  xmm1,xmm3
> > >
> > > +
> > >
> > > +        psrld   xmm3,17
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm1,13
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        psrld   xmm3,19-17
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        pslld   xmm1,15-13
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm12
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm12
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(128-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm15
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm12
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm3,xmm12
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm14
> > >
> > > +        pand    xmm3,xmm13
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm8
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm8
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        movdqa  xmm3,xmm9
> > >
> > > +        movdqa  xmm7,xmm8
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm3,xmm8
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm4,xmm3
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm15,xmm9
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm15,xmm4
> > >
> > > +        paddd   xmm11,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm15,xmm5
> > >
> > > +        paddd   xmm15,xmm7
> > >
> > > +        movdqa  xmm5,XMMWORD[((160-128))+rax]
> > >
> > > +        paddd   xmm6,XMMWORD[((32-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm5
> > >
> > > +        movdqa  xmm1,xmm5
> > >
> > > +        psrld   xmm7,3
> > >
> > > +        movdqa  xmm2,xmm5
> > >
> > > +
> > >
> > > +        psrld   xmm1,7
> > >
> > > +        movdqa  xmm0,XMMWORD[((112-128))+rax]
> > >
> > > +        pslld   xmm2,14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm1,18-7
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,25-14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm0,10
> > >
> > > +        movdqa  xmm1,xmm4
> > >
> > > +
> > >
> > > +        psrld   xmm4,17
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm1,13
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        psrld   xmm4,19-17
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        pslld   xmm1,15-13
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        paddd   xmm6,xmm0
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm11
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm11
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(144-128)+rax],xmm6
> > >
> > > +        paddd   xmm6,xmm14
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm6,XMMWORD[((-96))+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm11
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm4,xmm11
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm13
> > >
> > > +        pand    xmm4,xmm12
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm15
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm15
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        movdqa  xmm4,xmm8
> > >
> > > +        movdqa  xmm7,xmm15
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm4,xmm15
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm6,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm3,xmm4
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm14,xmm8
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm14,xmm3
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +        paddd   xmm14,xmm7
> > >
> > > +        movdqa  xmm6,XMMWORD[((176-128))+rax]
> > >
> > > +        paddd   xmm5,XMMWORD[((48-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm6
> > >
> > > +        movdqa  xmm1,xmm6
> > >
> > > +        psrld   xmm7,3
> > >
> > > +        movdqa  xmm2,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm1,7
> > >
> > > +        movdqa  xmm0,XMMWORD[((128-128))+rax]
> > >
> > > +        pslld   xmm2,14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm1,18-7
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,25-14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm0,10
> > >
> > > +        movdqa  xmm1,xmm3
> > >
> > > +
> > >
> > > +        psrld   xmm3,17
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm1,13
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        psrld   xmm3,19-17
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        pslld   xmm1,15-13
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm10
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm10
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(160-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm13
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm10
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm3,xmm10
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm12
> > >
> > > +        pand    xmm3,xmm11
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm14
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm14
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        movdqa  xmm3,xmm15
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm3,xmm14
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm4,xmm3
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm13,xmm15
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm13,xmm4
> > >
> > > +        paddd   xmm9,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm13,xmm5
> > >
> > > +        paddd   xmm13,xmm7
> > >
> > > +        movdqa  xmm5,XMMWORD[((192-128))+rax]
> > >
> > > +        paddd   xmm6,XMMWORD[((64-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm5
> > >
> > > +        movdqa  xmm1,xmm5
> > >
> > > +        psrld   xmm7,3
> > >
> > > +        movdqa  xmm2,xmm5
> > >
> > > +
> > >
> > > +        psrld   xmm1,7
> > >
> > > +        movdqa  xmm0,XMMWORD[((144-128))+rax]
> > >
> > > +        pslld   xmm2,14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm1,18-7
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,25-14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm0,10
> > >
> > > +        movdqa  xmm1,xmm4
> > >
> > > +
> > >
> > > +        psrld   xmm4,17
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm1,13
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        psrld   xmm4,19-17
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        pslld   xmm1,15-13
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        paddd   xmm6,xmm0
> > >
> > > +        movdqa  xmm7,xmm9
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm9
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm9
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(176-128)+rax],xmm6
> > >
> > > +        paddd   xmm6,xmm12
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm6,XMMWORD[((-32))+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm9
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm4,xmm9
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm11
> > >
> > > +        pand    xmm4,xmm10
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm13
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm13
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        movdqa  xmm4,xmm14
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm4,xmm13
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm6,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm3,xmm4
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm12,xmm14
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm12,xmm3
> > >
> > > +        paddd   xmm8,xmm6
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +        paddd   xmm12,xmm7
> > >
> > > +        movdqa  xmm6,XMMWORD[((208-128))+rax]
> > >
> > > +        paddd   xmm5,XMMWORD[((80-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm6
> > >
> > > +        movdqa  xmm1,xmm6
> > >
> > > +        psrld   xmm7,3
> > >
> > > +        movdqa  xmm2,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm1,7
> > >
> > > +        movdqa  xmm0,XMMWORD[((160-128))+rax]
> > >
> > > +        pslld   xmm2,14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm1,18-7
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,25-14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm0,10
> > >
> > > +        movdqa  xmm1,xmm3
> > >
> > > +
> > >
> > > +        psrld   xmm3,17
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm1,13
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        psrld   xmm3,19-17
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        pslld   xmm1,15-13
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm8
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm8
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm8
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(192-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm11
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm8
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm3,xmm8
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm10
> > >
> > > +        pand    xmm3,xmm9
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm12
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm12
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        movdqa  xmm3,xmm13
> > >
> > > +        movdqa  xmm7,xmm12
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm3,xmm12
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm4,xmm3
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm11,xmm13
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm11,xmm4
> > >
> > > +        paddd   xmm15,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm11,xmm5
> > >
> > > +        paddd   xmm11,xmm7
> > >
> > > +        movdqa  xmm5,XMMWORD[((224-128))+rax]
> > >
> > > +        paddd   xmm6,XMMWORD[((96-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm5
> > >
> > > +        movdqa  xmm1,xmm5
> > >
> > > +        psrld   xmm7,3
> > >
> > > +        movdqa  xmm2,xmm5
> > >
> > > +
> > >
> > > +        psrld   xmm1,7
> > >
> > > +        movdqa  xmm0,XMMWORD[((176-128))+rax]
> > >
> > > +        pslld   xmm2,14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm1,18-7
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,25-14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm0,10
> > >
> > > +        movdqa  xmm1,xmm4
> > >
> > > +
> > >
> > > +        psrld   xmm4,17
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm1,13
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        psrld   xmm4,19-17
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        pslld   xmm1,15-13
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        paddd   xmm6,xmm0
> > >
> > > +        movdqa  xmm7,xmm15
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm15
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm15
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(208-128)+rax],xmm6
> > >
> > > +        paddd   xmm6,xmm10
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm6,XMMWORD[32+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm15
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm4,xmm15
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm9
> > >
> > > +        pand    xmm4,xmm8
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm11
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        movdqa  xmm4,xmm12
> > >
> > > +        movdqa  xmm7,xmm11
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm4,xmm11
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm6,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm3,xmm4
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm10,xmm12
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm10,xmm3
> > >
> > > +        paddd   xmm14,xmm6
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm10,xmm6
> > >
> > > +        paddd   xmm10,xmm7
> > >
> > > +        movdqa  xmm6,XMMWORD[((240-128))+rax]
> > >
> > > +        paddd   xmm5,XMMWORD[((112-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm6
> > >
> > > +        movdqa  xmm1,xmm6
> > >
> > > +        psrld   xmm7,3
> > >
> > > +        movdqa  xmm2,xmm6
> > >
> > > +
> > >
> > > +        psrld   xmm1,7
> > >
> > > +        movdqa  xmm0,XMMWORD[((192-128))+rax]
> > >
> > > +        pslld   xmm2,14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm1,18-7
> > >
> > > +        movdqa  xmm3,xmm0
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,25-14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm0,10
> > >
> > > +        movdqa  xmm1,xmm3
> > >
> > > +
> > >
> > > +        psrld   xmm3,17
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm1,13
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        psrld   xmm3,19-17
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        pslld   xmm1,15-13
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        movdqa  xmm7,xmm14
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm14
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm14
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(224-128)+rax],xmm5
> > >
> > > +        paddd   xmm5,xmm9
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm5,XMMWORD[64+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm14
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm3,xmm14
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm8
> > >
> > > +        pand    xmm3,xmm15
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm10
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm10
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +        pxor    xmm0,xmm3
> > >
> > > +        movdqa  xmm3,xmm11
> > >
> > > +        movdqa  xmm7,xmm10
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm3,xmm10
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm5,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm4,xmm3
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm9,xmm11
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm9,xmm4
> > >
> > > +        paddd   xmm13,xmm5
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm9,xmm5
> > >
> > > +        paddd   xmm9,xmm7
> > >
> > > +        movdqa  xmm5,XMMWORD[((0-128))+rax]
> > >
> > > +        paddd   xmm6,XMMWORD[((128-128))+rax]
> > >
> > > +
> > >
> > > +        movdqa  xmm7,xmm5
> > >
> > > +        movdqa  xmm1,xmm5
> > >
> > > +        psrld   xmm7,3
> > >
> > > +        movdqa  xmm2,xmm5
> > >
> > > +
> > >
> > > +        psrld   xmm1,7
> > >
> > > +        movdqa  xmm0,XMMWORD[((208-128))+rax]
> > >
> > > +        pslld   xmm2,14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm1,18-7
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,25-14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        psrld   xmm0,10
> > >
> > > +        movdqa  xmm1,xmm4
> > >
> > > +
> > >
> > > +        psrld   xmm4,17
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm1,13
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        psrld   xmm4,19-17
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        pslld   xmm1,15-13
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        pxor    xmm0,xmm1
> > >
> > > +        paddd   xmm6,xmm0
> > >
> > > +        movdqa  xmm7,xmm13
> > >
> > > +
> > >
> > > +        movdqa  xmm2,xmm13
> > >
> > > +
> > >
> > > +        psrld   xmm7,6
> > >
> > > +        movdqa  xmm1,xmm13
> > >
> > > +        pslld   xmm2,7
> > >
> > > +        movdqa  XMMWORD[(240-128)+rax],xmm6
> > >
> > > +        paddd   xmm6,xmm8
> > >
> > > +
> > >
> > > +        psrld   xmm1,11
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        pslld   xmm2,21-7
> > >
> > > +        paddd   xmm6,XMMWORD[96+rbp]
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +        psrld   xmm1,25-11
> > >
> > > +        movdqa  xmm0,xmm13
> > >
> > > +
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm4,xmm13
> > >
> > > +        pslld   xmm2,26-21
> > >
> > > +        pandn   xmm0,xmm15
> > >
> > > +        pand    xmm4,xmm14
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +
> > >
> > > +
> > >
> > > +        movdqa  xmm1,xmm9
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +        movdqa  xmm2,xmm9
> > >
> > > +        psrld   xmm1,2
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +        pxor    xmm0,xmm4
> > >
> > > +        movdqa  xmm4,xmm10
> > >
> > > +        movdqa  xmm7,xmm9
> > >
> > > +        pslld   xmm2,10
> > >
> > > +        pxor    xmm4,xmm9
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        paddd   xmm6,xmm0
> > >
> > > +        pslld   xmm2,19-10
> > >
> > > +        pand    xmm3,xmm4
> > >
> > > +        pxor    xmm1,xmm7
> > >
> > > +
> > >
> > > +
> > >
> > > +        psrld   xmm7,22-13
> > >
> > > +        pxor    xmm1,xmm2
> > >
> > > +        movdqa  xmm8,xmm10
> > >
> > > +        pslld   xmm2,30-19
> > >
> > > +        pxor    xmm7,xmm1
> > >
> > > +        pxor    xmm8,xmm3
> > >
> > > +        paddd   xmm12,xmm6
> > >
> > > +        pxor    xmm7,xmm2
> > >
> > > +
> > >
> > > +        paddd   xmm8,xmm6
> > >
> > > +        paddd   xmm8,xmm7
> > >
> > > +        lea     rbp,[256+rbp]
> > >
> > > +        dec     ecx
> > >
> > > +        jnz     NEAR $L$oop_16_xx
> > >
> > > +
> > >
> > > +        mov     ecx,1
> > >
> > > +        lea     rbp,[((K256+128))]
> > >
> > > +
> > >
> > > +        movdqa  xmm7,XMMWORD[rbx]
> > >
> > > +        cmp     ecx,DWORD[rbx]
> > >
> > > +        pxor    xmm0,xmm0
> > >
> > > +        cmovge  r8,rbp
> > >
> > > +        cmp     ecx,DWORD[4+rbx]
> > >
> > > +        movdqa  xmm6,xmm7
> > >
> > > +        cmovge  r9,rbp
> > >
> > > +        cmp     ecx,DWORD[8+rbx]
> > >
> > > +        pcmpgtd xmm6,xmm0
> > >
> > > +        cmovge  r10,rbp
> > >
> > > +        cmp     ecx,DWORD[12+rbx]
> > >
> > > +        paddd   xmm7,xmm6
> > >
> > > +        cmovge  r11,rbp
> > >
> > > +
> > >
> > > +        movdqu  xmm0,XMMWORD[((0-128))+rdi]
> > >
> > > +        pand    xmm8,xmm6
> > >
> > > +        movdqu  xmm1,XMMWORD[((32-128))+rdi]
> > >
> > > +        pand    xmm9,xmm6
> > >
> > > +        movdqu  xmm2,XMMWORD[((64-128))+rdi]
> > >
> > > +        pand    xmm10,xmm6
> > >
> > > +        movdqu  xmm5,XMMWORD[((96-128))+rdi]
> > >
> > > +        pand    xmm11,xmm6
> > >
> > > +        paddd   xmm8,xmm0
> > >
> > > +        movdqu  xmm0,XMMWORD[((128-128))+rdi]
> > >
> > > +        pand    xmm12,xmm6
> > >
> > > +        paddd   xmm9,xmm1
> > >
> > > +        movdqu  xmm1,XMMWORD[((160-128))+rdi]
> > >
> > > +        pand    xmm13,xmm6
> > >
> > > +        paddd   xmm10,xmm2
> > >
> > > +        movdqu  xmm2,XMMWORD[((192-128))+rdi]
> > >
> > > +        pand    xmm14,xmm6
> > >
> > > +        paddd   xmm11,xmm5
> > >
> > > +        movdqu  xmm5,XMMWORD[((224-128))+rdi]
> > >
> > > +        pand    xmm15,xmm6
> > >
> > > +        paddd   xmm12,xmm0
> > >
> > > +        paddd   xmm13,xmm1
> > >
> > > +        movdqu  XMMWORD[(0-128)+rdi],xmm8
> > >
> > > +        paddd   xmm14,xmm2
> > >
> > > +        movdqu  XMMWORD[(32-128)+rdi],xmm9
> > >
> > > +        paddd   xmm15,xmm5
> > >
> > > +        movdqu  XMMWORD[(64-128)+rdi],xmm10
> > >
> > > +        movdqu  XMMWORD[(96-128)+rdi],xmm11
> > >
> > > +        movdqu  XMMWORD[(128-128)+rdi],xmm12
> > >
> > > +        movdqu  XMMWORD[(160-128)+rdi],xmm13
> > >
> > > +        movdqu  XMMWORD[(192-128)+rdi],xmm14
> > >
> > > +        movdqu  XMMWORD[(224-128)+rdi],xmm15
> > >
> > > +
> > >
> > > +        movdqa  XMMWORD[rbx],xmm7
> > >
> > > +        movdqa  xmm6,XMMWORD[$L$pbswap]
> > >
> > > +        dec     edx
> > >
> > > +        jnz     NEAR $L$oop
> > >
> > > +
> > >
> > > +        mov     edx,DWORD[280+rsp]
> > >
> > > +        lea     rdi,[16+rdi]
> > >
> > > +        lea     rsi,[64+rsi]
> > >
> > > +        dec     edx
> > >
> > > +        jnz     NEAR $L$oop_grande
> > >
> > > +
> > >
> > > +$L$done:
> > >
> > > +        mov     rax,QWORD[272+rsp]
> > >
> > > +
> > >
> > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > >
> > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > >
> > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > >
> > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > >
> > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > >
> > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > >
> > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > >
> > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > >
> > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > >
> > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > >
> > > +        mov     rbp,QWORD[((-16))+rax]
> > >
> > > +
> > >
> > > +        mov     rbx,QWORD[((-8))+rax]
> > >
> > > +
> > >
> > > +        lea     rsp,[rax]
> > >
> > > +
> > >
> > > +$L$epilogue:
> > >
> > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > >
> > > +        mov     rsi,QWORD[16+rsp]
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +$L$SEH_end_sha256_multi_block:
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +sha256_multi_block_shaext:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_sha256_multi_block_shaext:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +_shaext_shortcut:
> > >
> > > +        mov     rax,rsp
> > >
> > > +
> > >
> > > +        push    rbx
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        lea     rsp,[((-168))+rsp]
> > >
> > > +        movaps  XMMWORD[rsp],xmm6
> > >
> > > +        movaps  XMMWORD[16+rsp],xmm7
> > >
> > > +        movaps  XMMWORD[32+rsp],xmm8
> > >
> > > +        movaps  XMMWORD[48+rsp],xmm9
> > >
> > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > >
> > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > >
> > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > >
> > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > >
> > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > >
> > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > >
> > > +        sub     rsp,288
> > >
> > > +        shl     edx,1
> > >
> > > +        and     rsp,-256
> > >
> > > +        lea     rdi,[128+rdi]
> > >
> > > +        mov     QWORD[272+rsp],rax
> > >
> > > +$L$body_shaext:
> > >
> > > +        lea     rbx,[256+rsp]
> > >
> > > +        lea     rbp,[((K256_shaext+128))]
> > >
> > > +
> > >
> > > +$L$oop_grande_shaext:
> > >
> > > +        mov     DWORD[280+rsp],edx
> > >
> > > +        xor     edx,edx
> > >
> > > +        mov     r8,QWORD[rsi]
> > >
> > > +        mov     ecx,DWORD[8+rsi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        mov     DWORD[rbx],ecx
> > >
> > > +        cmovle  r8,rsp
> > >
> > > +        mov     r9,QWORD[16+rsi]
> > >
> > > +        mov     ecx,DWORD[24+rsi]
> > >
> > > +        cmp     ecx,edx
> > >
> > > +        cmovg   edx,ecx
> > >
> > > +        test    ecx,ecx
> > >
> > > +        mov     DWORD[4+rbx],ecx
> > >
> > > +        cmovle  r9,rsp
> > >
> > > +        test    edx,edx
> > >
> > > +        jz      NEAR $L$done_shaext
> > >
> > > +
> > >
> > > +        movq    xmm12,QWORD[((0-128))+rdi]
> > >
> > > +        movq    xmm4,QWORD[((32-128))+rdi]
> > >
> > > +        movq    xmm13,QWORD[((64-128))+rdi]
> > >
> > > +        movq    xmm5,QWORD[((96-128))+rdi]
> > >
> > > +        movq    xmm8,QWORD[((128-128))+rdi]
> > >
> > > +        movq    xmm9,QWORD[((160-128))+rdi]
> > >
> > > +        movq    xmm10,QWORD[((192-128))+rdi]
> > >
> > > +        movq    xmm11,QWORD[((224-128))+rdi]
> > >
> > > +
> > >
> > > +        punpckldq       xmm12,xmm4
> > >
> > > +        punpckldq       xmm13,xmm5
> > >
> > > +        punpckldq       xmm8,xmm9
> > >
> > > +        punpckldq       xmm10,xmm11
> > >
> > > +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
> > >
> > > +
> > >
> > > +        movdqa  xmm14,xmm12
> > >
> > > +        movdqa  xmm15,xmm13
> > >
> > > +        punpcklqdq      xmm12,xmm8
> > >
> > > +        punpcklqdq      xmm13,xmm10
> > >
> > > +        punpckhqdq      xmm14,xmm8
> > >
> > > +        punpckhqdq      xmm15,xmm10
> > >
> > > +
> > >
> > > +        pshufd  xmm12,xmm12,27
> > >
> > > +        pshufd  xmm13,xmm13,27
> > >
> > > +        pshufd  xmm14,xmm14,27
> > >
> > > +        pshufd  xmm15,xmm15,27
> > >
> > > +        jmp     NEAR $L$oop_shaext
> > >
> > > +
> > >
> > > +ALIGN   32
> > >
> > > +$L$oop_shaext:
> > >
> > > +        movdqu  xmm4,XMMWORD[r8]
> > >
> > > +        movdqu  xmm8,XMMWORD[r9]
> > >
> > > +        movdqu  xmm5,XMMWORD[16+r8]
> > >
> > > +        movdqu  xmm9,XMMWORD[16+r9]
> > >
> > > +        movdqu  xmm6,XMMWORD[32+r8]
> > >
> > > +DB      102,15,56,0,227
> > >
> > > +        movdqu  xmm10,XMMWORD[32+r9]
> > >
> > > +DB      102,68,15,56,0,195
> > >
> > > +        movdqu  xmm7,XMMWORD[48+r8]
> > >
> > > +        lea     r8,[64+r8]
> > >
> > > +        movdqu  xmm11,XMMWORD[48+r9]
> > >
> > > +        lea     r9,[64+r9]
> > >
> > > +
> > >
> > > +        movdqa  xmm0,XMMWORD[((0-128))+rbp]
> > >
> > > +DB      102,15,56,0,235
> > >
> > > +        paddd   xmm0,xmm4
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        movdqa  xmm1,xmm0
> > >
> > > +        movdqa  xmm2,XMMWORD[((0-128))+rbp]
> > >
> > > +DB      102,68,15,56,0,203
> > >
> > > +        paddd   xmm2,xmm8
> > >
> > > +        movdqa  XMMWORD[80+rsp],xmm13
> > >
> > > +DB      69,15,56,203,236
> > >
> > > +        pxor    xmm8,xmm14
> > >
> > > +        movdqa  xmm0,xmm2
> > >
> > > +        movdqa  XMMWORD[112+rsp],xmm15
> > >
> > > +DB      69,15,56,203,254
> > >
> > > +        pshufd  xmm0,xmm1,0x0e
> > >
> > > +        pxor    xmm4,xmm12
> > >
> > > +        movdqa  XMMWORD[64+rsp],xmm12
> > >
> > > +DB      69,15,56,203,229
> > >
> > > +        pshufd  xmm0,xmm2,0x0e
> > >
> > > +        pxor    xmm8,xmm14
> > >
> > > +        movdqa  XMMWORD[96+rsp],xmm14
> > >
> > > +        movdqa  xmm1,XMMWORD[((16-128))+rbp]
> > >
> > > +        paddd   xmm1,xmm5
> > >
> > > +DB      102,15,56,0,243
> > >
> > > +DB      69,15,56,203,247
> > >
> > > +
> > >
> > > +        movdqa  xmm0,xmm1
> > >
> > > +        movdqa  xmm2,XMMWORD[((16-128))+rbp]
> > >
> > > +        paddd   xmm2,xmm9
> > >
> > > +DB      69,15,56,203,236
> > >
> > > +        movdqa  xmm0,xmm2
> > >
> > > +        prefetcht0      [127+r8]
> > >
> > > +DB      102,15,56,0,251
> > >
> > > +DB      102,68,15,56,0,211
> > >
> > > +        prefetcht0      [127+r9]
> > >
> > > +DB      69,15,56,203,254
> > >
> > > +        pshufd  xmm0,xmm1,0x0e
> > >
> > > +DB      102,68,15,56,0,219
> > >
> > > +DB      15,56,204,229
> > >
> > > +DB      69,15,56,203,229
> > >
> > > +        pshufd  xmm0,xmm2,0x0e
> > >
> > > +        movdqa  xmm1,XMMWORD[((32-128))+rbp]
> > >
> > > +        paddd   xmm1,xmm6
> > >
> > > +DB      69,15,56,203,247
> > >
> > > +
> > >
> > > +        movdqa  xmm0,xmm1
> > >
> > > +        movdqa  xmm2,XMMWORD[((32-128))+rbp]
> > >
> > > +        paddd   xmm2,xmm10
> > >
> > > +DB      69,15,56,203,236
> > >
> > > +DB      69,15,56,204,193
> > >
> > > +        movdqa  xmm0,xmm2
> > >
> > > +        movdqa  xmm3,xmm7
> > >
> > > +DB      69,15,56,203,254
> > >
> > > +        pshufd  xmm0,xmm1,0x0e
> > >
> > > +DB      102,15,58,15,222,4
> > >
> > > +        paddd   xmm4,xmm3
> > >
> > > +        movdqa  xmm3,xmm11
> > >
> > > +DB      102,65,15,58,15,218,4
> > >
> > > +DB      15,56,204,238
> > >
> > > +DB      69,15,56,203,229
> > >
> > > +        pshufd  xmm0,xmm2,0x0e
> > >
> > > +        movdqa  xmm1,XMMWORD[((48-128))+rbp]
> > >
> > > +        paddd   xmm1,xmm7
> > >
> > > +DB      69,15,56,203,247
> > >
> > > +DB      69,15,56,204,202
> > >
> > > +
> > >
> > > +        movdqa  xmm0,xmm1
> > >
> > > +        movdqa  xmm2,XMMWORD[((48-128))+rbp]
> > >
> > > +        paddd   xmm8,xmm3
> > >
> > > +        paddd   xmm2,xmm11
> > >
> > > +DB      15,56,205,231
> > >
> > > +DB      69,15,56,203,236
> > >
> > > +        movdqa  xmm0,xmm2
> > >
> > > +        movdqa  xmm3,xmm4
> > >
> > > +DB      102,15,58,15,223,4
> > >
> > > +DB      69,15,56,203,254
> > >
> > > +DB      69,15,56,205,195
> > >
> > > +        pshufd  xmm0,xmm1,0x0e
> > >
> > > +        paddd   xmm5,xmm3
> > >
> > > +        movdqa  xmm3,xmm8
> > >
> > > +DB      102,65,15,58,15,219,4
> > >
> > > +DB      15,56,204,247
> > >
> > > +DB      69,15,56,203,229
> > >
> > > +        pshufd  xmm0,xmm2,0x0e
> > >
> > > +        movdqa  xmm1,XMMWORD[((64-128))+rbp]
> > >
> > > +        paddd   xmm1,xmm4
> > >
> > > +DB      69,15,56,203,247
> > >
> > > +DB      69,15,56,204,211
> > >
> > > +        movdqa  xmm0,xmm1
> > >
> > > +        movdqa  xmm2,XMMWORD[((64-128))+rbp]
> > >
> > > +        paddd   xmm9,xmm3
> > >
> > > +        paddd   xmm2,xmm8
> > >
> > > +DB      15,56,205,236
> > >
> > > +DB      69,15,56,203,236
> > >
> > > +        movdqa  xmm0,xmm2
> > >
> > > +        movdqa  xmm3,xmm5
> > >
> > > +DB      102,15,58,15,220,4
> > >
> > > +DB      69,15,56,203,254
> > >
> > > +DB      69,15,56,205,200
> > >
> > > +        pshufd  xmm0,xmm1,0x0e
> > >
> > > +        paddd   xmm6,xmm3
> > >
> > > +        movdqa  xmm3,xmm9
> > >
> > > +DB      102,65,15,58,15,216,4
> > >
> > > +DB      15,56,204,252
> > >
> > > +DB      69,15,56,203,229
> > >
> > > +        pshufd  xmm0,xmm2,0x0e
> > >
> > > +        movdqa  xmm1,XMMWORD[((80-128))+rbp]
> > >
> > > +        paddd   xmm1,xmm5
> > >
> > > +DB      69,15,56,203,247
> > >
> > > +DB      69,15,56,204,216
> > >
> > > +        movdqa  xmm0,xmm1
> > >
> > > +        movdqa  xmm2,XMMWORD[((80-128))+rbp]
> > >
> > > +        paddd   xmm10,xmm3
> > >
> > > +        paddd   xmm2,xmm9
> > >
> > > +DB      15,56,205,245
> > >
> > > +DB      69,15,56,203,236
> > >
> > > +        movdqa  xmm0,xmm2
> > >
> > > +        movdqa  xmm3,xmm6
> > >
> > > +DB      102,15,58,15,221,4
> > >
> > > +DB      69,15,56,203,254
> > >
> > > +DB      69,15,56,205,209
> > >
> > > +        pshufd  xmm0,xmm1,0x0e
> > >
> > > +        paddd   xmm7,xmm3
> > >
> > > +        movdqa  xmm3,xmm10
> > >
> > > +DB      102,65,15,58,15,217,4
> > >
> > > +DB      15,56,204,229
> > >
> > > +DB      69,15,56,203,229
> > >
> > > +        pshufd  xmm0,xmm2,0x0e
> > >
> > > +        movdqa  xmm1,XMMWORD[((96-128))+rbp]
> > >
> > > +        paddd   xmm1,xmm6
> > >
> > > +DB      69,15,56,203,247
> > >
> > > +DB      69,15,56,204,193
> > >
> > > +        movdqa  xmm0,xmm1
> > >
> > > +        movdqa  xmm2,XMMWORD[((96-128))+rbp]
> > >
> > > +        paddd   xmm11,xmm3
> > >
> > > +        paddd   xmm2,xmm10
> > >
> > > +DB      15,56,205,254
> > >
> > > +DB      69,15,56,203,236
> > >
> > > +        movdqa  xmm0,xmm2
> > >
> > > +        movdqa  xmm3,xmm7
> > >
> > > +DB      102,15,58,15,222,4
> > >
> > > +DB      69,15,56,203,254
> > >
> > > +DB      69,15,56,205,218
> > >
> > > +        pshufd  xmm0,xmm1,0x0e
> > >
> > > +        paddd   xmm4,xmm3
> > >
> > > +        movdqa  xmm3,xmm11
> > >
> > > +DB      102,65,15,58,15,218,4
> > >
> > > +DB      15,56,204,238
> > >
> > > +DB      69,15,56,203,229
> > >
> > > +        pshufd  xmm0,xmm2,0x0e
> > >
> > > +        movdqa  xmm1,XMMWORD[((112-128))+rbp]
> > >
> > > +        paddd   xmm1,xmm7
> > >
> > > +DB      69,15,56,203,247
> > >
> > > +DB      69,15,56,204,202
> > >
> > > +        movdqa  xmm0,xmm1
> > >
> > > +        movdqa  xmm2,XMMWORD[((112-128))+rbp]
> > >
> > > +        paddd   xmm8,xmm3
> > >
> > > +        paddd   xmm2,xmm11
> > >
> > > +DB      15,56,205,231
> > >
> > > +DB      69,15,56,203,236
> > >
> > > +        movdqa  xmm0,xmm2
> > >
> > > +        movdqa  xmm3,xmm4
> > >
> > > +DB      102,15,58,15,223,4
> > >
> > > +DB      69,15,56,203,254
> > >
> > > +DB      69,15,56,205,195
> > >
> > > +        pshufd  xmm0,xmm1,0x0e
> > >
> > > +        paddd   xmm5,xmm3
> > >
> > > +        movdqa  xmm3,xmm8
> > >
> > > +DB      102,65,15,58,15,219,4
> > >
> > > +DB      15,56,204,247
> > >
> > > +DB      69,15,56,203,229
> > >
> > > +        pshufd  xmm0,xmm2,0x0e
> > >
> > > +        movdqa  xmm1,XMMWORD[((128-128))+rbp]
> > >
> > > +        paddd   xmm1,xmm4
> > >
> > > +DB      69,15,56,203,247
> > >
> > > +DB      69,15,56,204,211
> > >
> > > +        movdqa  xmm0,xmm1
> > >
> > > +        movdqa  xmm2,XMMWORD[((128-128))+rbp]
> > >
> > > +        paddd   xmm9,xmm3
> > >
> > > +        paddd   xmm2,xmm8
> > >
> > > +DB      15,56,205,236
> > >
> > > +DB      69,15,56,203,236
> > >
> > > +        movdqa  xmm0,xmm2
> > >
> > > +        movdqa  xmm3,xmm5
> > >
> > > +DB      102,15,58,15,220,4
> > >
> > > +DB      69,15,56,203,254
> > >
> > > +DB      69,15,56,205,200
> > >
> > > +        pshufd  xmm0,xmm1,0x0e
> > >
> > > +        paddd   xmm6,xmm3
> > >
> > > +        movdqa  xmm3,xmm9
> > >
> > > +DB      102,65,15,58,15,216,4
> > >
> > > +DB      15,56,204,252
> > >
> > > +DB      69,15,56,203,229
> > >
> > > +        pshufd  xmm0,xmm2,0x0e
> > >
> > > +        movdqa  xmm1,XMMWORD[((144-128))+rbp]
> > >
> > > +        paddd   xmm1,xmm5
> > >
> > > +DB      69,15,56,203,247
> > >
> > > +DB      69,15,56,204,216
> > >
> > > +        movdqa  xmm0,xmm1
> > >
> > > +        movdqa  xmm2,XMMWORD[((144-128))+rbp]
> > >
> > > +        paddd   xmm10,xmm3
> > >
> > > +        paddd   xmm2,xmm9
> > >
> > > +DB      15,56,205,245
> > >
> > > +DB      69,15,56,203,236
> > >
> > > +        movdqa  xmm0,xmm2
> > >
> > > +        movdqa  xmm3,xmm6
> > >
> > > +DB      102,15,58,15,221,4
> > >
> > > +DB      69,15,56,203,254
> > >
> > > +DB      69,15,56,205,209
> > >
> > > +        pshufd  xmm0,xmm1,0x0e
> > >
> > > +        paddd   xmm7,xmm3
> > >
> > > +        movdqa  xmm3,xmm10
> > >
> > > +DB      102,65,15,58,15,217,4
> > >
> > > +DB      15,56,204,229
> > >
> > > +DB      69,15,56,203,229
> > >
> > > +        pshufd  xmm0,xmm2,0x0e
> > >
> > > +        movdqa  xmm1,XMMWORD[((160-128))+rbp]
> > >
> > > +        paddd   xmm1,xmm6
> > >
> > > +DB      69,15,56,203,247
> > >
> > > +DB      69,15,56,204,193
> > >
> > > +        movdqa  xmm0,xmm1
> > >
> > > +        movdqa  xmm2,XMMWORD[((160-128))+rbp]
> > >
> > > +        paddd   xmm11,xmm3
> > >
> > > +        paddd   xmm2,xmm10
> > >
> > > +DB      15,56,205,254
> > >
> > > +DB      69,15,56,203,236
> > >
> > > +        movdqa  xmm0,xmm2
> > >
> > > +        movdqa  xmm3,xmm7
> > >
> > > +DB      102,15,58,15,222,4
> > >
> > > +DB      69,15,56,203,254
> > >
> > > +DB      69,15,56,205,218
> > >
> > > +        pshufd  xmm0,xmm1,0x0e
> > >
> > > +        paddd   xmm4,xmm3
> > >
> > > +        movdqa  xmm3,xmm11
> > >
> > > +DB      102,65,15,58,15,218,4
> > >
> > > +DB      15,56,204,238
> > >
> > > +DB      69,15,56,203,229
> > >
> > > +        pshufd  xmm0,xmm2,0x0e
> > >
> > > +        movdqa  xmm1,XMMWORD[((176-128))+rbp]
> > >
> > > +        paddd   xmm1,xmm7
> > >
> > > +DB      69,15,56,203,247
> > >
> > > +DB      69,15,56,204,202
> > >
> > > +        movdqa  xmm0,xmm1
> > >
> > > +        movdqa  xmm2,XMMWORD[((176-128))+rbp]
> > >
> > > +        paddd   xmm8,xmm3
> > >
> > > +        paddd   xmm2,xmm11
> > >
> > > +DB      15,56,205,231
> > >
> > > +DB      69,15,56,203,236
> > >
> > > +        movdqa  xmm0,xmm2
> > >
> > > +        movdqa  xmm3,xmm4
> > >
> > > +DB      102,15,58,15,223,4
> > >
> > > +DB      69,15,56,203,254
> > >
> > > +DB      69,15,56,205,195
> > >
> > > +        pshufd  xmm0,xmm1,0x0e
> > >
> > > +        paddd   xmm5,xmm3
> > >
> > > +        movdqa  xmm3,xmm8
> > >
> > > +DB      102,65,15,58,15,219,4
> > >
> > > +DB      15,56,204,247
> > >
> > > +DB      69,15,56,203,229
> > >
> > > +        pshufd  xmm0,xmm2,0x0e
> > >
> > > +        movdqa  xmm1,XMMWORD[((192-128))+rbp]
> > >
> > > +        paddd   xmm1,xmm4
> > >
> > > +DB      69,15,56,203,247
> > >
> > > +DB      69,15,56,204,211
> > >
> > > +        movdqa  xmm0,xmm1
> > >
> > > +        movdqa  xmm2,XMMWORD[((192-128))+rbp]
> > >
> > > +        paddd   xmm9,xmm3
> > >
> > > +        paddd   xmm2,xmm8
> > >
> > > +DB      15,56,205,236
> > >
> > > +DB      69,15,56,203,236
> > >
> > > +        movdqa  xmm0,xmm2
> > >
> > > +        movdqa  xmm3,xmm5
> > >
> > > +DB      102,15,58,15,220,4
> > >
> > > +DB      69,15,56,203,254
> > >
> > > +DB      69,15,56,205,200
> > >
> > > +        pshufd  xmm0,xmm1,0x0e
> > >
> > > +        paddd   xmm6,xmm3
> > >
> > > +        movdqa  xmm3,xmm9
> > >
> > > +DB      102,65,15,58,15,216,4
> > >
> > > +DB      15,56,204,252
> > >
> > > +DB      69,15,56,203,229
> > >
> > > +        pshufd  xmm0,xmm2,0x0e
> > >
> > > +        movdqa  xmm1,XMMWORD[((208-128))+rbp]
> > >
> > > +        paddd   xmm1,xmm5
> > >
> > > +DB      69,15,56,203,247
> > >
> > > +DB      69,15,56,204,216
> > >
> > > +        movdqa  xmm0,xmm1
> > >
> > > +        movdqa  xmm2,XMMWORD[((208-128))+rbp]
> > >
> > > +        paddd   xmm10,xmm3
> > >
> > > +        paddd   xmm2,xmm9
> > >
> > > +DB      15,56,205,245
> > >
> > > +DB      69,15,56,203,236
> > >
> > > +        movdqa  xmm0,xmm2
> > >
> > > +        movdqa  xmm3,xmm6
> > >
> > > +DB      102,15,58,15,221,4
> > >
> > > +DB      69,15,56,203,254
> > >
> > > +DB      69,15,56,205,209
> > >
> > > +        pshufd  xmm0,xmm1,0x0e
> > >
> > > +        paddd   xmm7,xmm3
> > >
> > > +        movdqa  xmm3,xmm10
> > >
> > > +DB      102,65,15,58,15,217,4
> > >
> > > +        nop
> > >
> > > +DB      69,15,56,203,229
> > >
> > > +        pshufd  xmm0,xmm2,0x0e
> > >
> > > +        movdqa  xmm1,XMMWORD[((224-128))+rbp]
> > >
> > > +        paddd   xmm1,xmm6
> > >
> > > +DB      69,15,56,203,247
> > >
> > > +
> > >
> > > +        movdqa  xmm0,xmm1
> > >
> > > +        movdqa  xmm2,XMMWORD[((224-128))+rbp]
> > >
> > > +        paddd   xmm11,xmm3
> > >
> > > +        paddd   xmm2,xmm10
> > >
> > > +DB      15,56,205,254
> > >
> > > +        nop
> > >
> > > +DB      69,15,56,203,236
> > >
> > > +        movdqa  xmm0,xmm2
> > >
> > > +        mov     ecx,1
> > >
> > > +        pxor    xmm6,xmm6
> > >
> > > +DB      69,15,56,203,254
> > >
> > > +DB      69,15,56,205,218
> > >
> > > +        pshufd  xmm0,xmm1,0x0e
> > >
> > > +        movdqa  xmm1,XMMWORD[((240-128))+rbp]
> > >
> > > +        paddd   xmm1,xmm7
> > >
> > > +        movq    xmm7,QWORD[rbx]
> > >
> > > +        nop
> > >
> > > +DB      69,15,56,203,229
> > >
> > > +        pshufd  xmm0,xmm2,0x0e
> > >
> > > +        movdqa  xmm2,XMMWORD[((240-128))+rbp]
> > >
> > > +        paddd   xmm2,xmm11
> > >
> > > +DB      69,15,56,203,247
> > >
> > > +
> > >
> > > +        movdqa  xmm0,xmm1
> > >
> > > +        cmp     ecx,DWORD[rbx]
> > >
> > > +        cmovge  r8,rsp
> > >
> > > +        cmp     ecx,DWORD[4+rbx]
> > >
> > > +        cmovge  r9,rsp
> > >
> > > +        pshufd  xmm9,xmm7,0x00
> > >
> > > +DB      69,15,56,203,236
> > >
> > > +        movdqa  xmm0,xmm2
> > >
> > > +        pshufd  xmm10,xmm7,0x55
> > >
> > > +        movdqa  xmm11,xmm7
> > >
> > > +DB      69,15,56,203,254
> > >
> > > +        pshufd  xmm0,xmm1,0x0e
> > >
> > > +        pcmpgtd xmm9,xmm6
> > >
> > > +        pcmpgtd xmm10,xmm6
> > >
> > > +DB      69,15,56,203,229
> > >
> > > +        pshufd  xmm0,xmm2,0x0e
> > >
> > > +        pcmpgtd xmm11,xmm6
> > >
> > > +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
> > >
> > > +DB      69,15,56,203,247
> > >
> > > +
> > >
> > > +        pand    xmm13,xmm9
> > >
> > > +        pand    xmm15,xmm10
> > >
> > > +        pand    xmm12,xmm9
> > >
> > > +        pand    xmm14,xmm10
> > >
> > > +        paddd   xmm11,xmm7
> > >
> > > +
> > >
> > > +        paddd   xmm13,XMMWORD[80+rsp]
> > >
> > > +        paddd   xmm15,XMMWORD[112+rsp]
> > >
> > > +        paddd   xmm12,XMMWORD[64+rsp]
> > >
> > > +        paddd   xmm14,XMMWORD[96+rsp]
> > >
> > > +
> > >
> > > +        movq    QWORD[rbx],xmm11
> > >
> > > +        dec     edx
> > >
> > > +        jnz     NEAR $L$oop_shaext
> > >
> > > +
> > >
> > > +        mov     edx,DWORD[280+rsp]
> > >
> > > +
> > >
> > > +        pshufd  xmm12,xmm12,27
> > >
> > > +        pshufd  xmm13,xmm13,27
> > >
> > > +        pshufd  xmm14,xmm14,27
> > >
> > > +        pshufd  xmm15,xmm15,27
> > >
> > > +
> > >
> > > +        movdqa  xmm5,xmm12
> > >
> > > +        movdqa  xmm6,xmm13
> > >
> > > +        punpckldq       xmm12,xmm14
> > >
> > > +        punpckhdq       xmm5,xmm14
> > >
> > > +        punpckldq       xmm13,xmm15
> > >
> > > +        punpckhdq       xmm6,xmm15
> > >
> > > +
> > >
> > > +        movq    QWORD[(0-128)+rdi],xmm12
> > >
> > > +        psrldq  xmm12,8
> > >
> > > +        movq    QWORD[(128-128)+rdi],xmm5
> > >
> > > +        psrldq  xmm5,8
> > >
> > > +        movq    QWORD[(32-128)+rdi],xmm12
> > >
> > > +        movq    QWORD[(160-128)+rdi],xmm5
> > >
> > > +
> > >
> > > +        movq    QWORD[(64-128)+rdi],xmm13
> > >
> > > +        psrldq  xmm13,8
> > >
> > > +        movq    QWORD[(192-128)+rdi],xmm6
> > >
> > > +        psrldq  xmm6,8
> > >
> > > +        movq    QWORD[(96-128)+rdi],xmm13
> > >
> > > +        movq    QWORD[(224-128)+rdi],xmm6
> > >
> > > +
> > >
> > > +        lea     rdi,[8+rdi]
> > >
> > > +        lea     rsi,[32+rsi]
> > >
> > > +        dec     edx
> > >
> > > +        jnz     NEAR $L$oop_grande_shaext
> > >
> > > +
> > >
> > > +$L$done_shaext:
> > >
> > > +
> > >
> > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > >
> > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > >
> > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > >
> > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > >
> > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > >
> > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > >
> > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > >
> > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > >
> > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > >
> > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > >
> > > +        mov     rbp,QWORD[((-16))+rax]
> > >
> > > +
> > >
> > > +        mov     rbx,QWORD[((-8))+rax]
> > >
> > > +
> > >
> > > +        lea     rsp,[rax]
> > >
> > > +
> > >
> > > +$L$epilogue_shaext:
> > >
> > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > >
> > > +        mov     rsi,QWORD[16+rsp]
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +$L$SEH_end_sha256_multi_block_shaext:
> > >
> > > +ALIGN   256
> > >
> > > +K256:
> > >
> > > +        DD      1116352408,1116352408,1116352408,1116352408
> > >
> > > +        DD      1116352408,1116352408,1116352408,1116352408
> > >
> > > +        DD      1899447441,1899447441,1899447441,1899447441
> > >
> > > +        DD      1899447441,1899447441,1899447441,1899447441
> > >
> > > +        DD      3049323471,3049323471,3049323471,3049323471
> > >
> > > +        DD      3049323471,3049323471,3049323471,3049323471
> > >
> > > +        DD      3921009573,3921009573,3921009573,3921009573
> > >
> > > +        DD      3921009573,3921009573,3921009573,3921009573
> > >
> > > +        DD      961987163,961987163,961987163,961987163
> > >
> > > +        DD      961987163,961987163,961987163,961987163
> > >
> > > +        DD      1508970993,1508970993,1508970993,1508970993
> > >
> > > +        DD      1508970993,1508970993,1508970993,1508970993
> > >
> > > +        DD      2453635748,2453635748,2453635748,2453635748
> > >
> > > +        DD      2453635748,2453635748,2453635748,2453635748
> > >
> > > +        DD      2870763221,2870763221,2870763221,2870763221
> > >
> > > +        DD      2870763221,2870763221,2870763221,2870763221
> > >
> > > +        DD      3624381080,3624381080,3624381080,3624381080
> > >
> > > +        DD      3624381080,3624381080,3624381080,3624381080
> > >
> > > +        DD      310598401,310598401,310598401,310598401
> > >
> > > +        DD      310598401,310598401,310598401,310598401
> > >
> > > +        DD      607225278,607225278,607225278,607225278
> > >
> > > +        DD      607225278,607225278,607225278,607225278
> > >
> > > +        DD      1426881987,1426881987,1426881987,1426881987
> > >
> > > +        DD      1426881987,1426881987,1426881987,1426881987
> > >
> > > +        DD      1925078388,1925078388,1925078388,1925078388
> > >
> > > +        DD      1925078388,1925078388,1925078388,1925078388
> > >
> > > +        DD      2162078206,2162078206,2162078206,2162078206
> > >
> > > +        DD      2162078206,2162078206,2162078206,2162078206
> > >
> > > +        DD      2614888103,2614888103,2614888103,2614888103
> > >
> > > +        DD      2614888103,2614888103,2614888103,2614888103
> > >
> > > +        DD      3248222580,3248222580,3248222580,3248222580
> > >
> > > +        DD      3248222580,3248222580,3248222580,3248222580
> > >
> > > +        DD      3835390401,3835390401,3835390401,3835390401
> > >
> > > +        DD      3835390401,3835390401,3835390401,3835390401
> > >
> > > +        DD      4022224774,4022224774,4022224774,4022224774
> > >
> > > +        DD      4022224774,4022224774,4022224774,4022224774
> > >
> > > +        DD      264347078,264347078,264347078,264347078
> > >
> > > +        DD      264347078,264347078,264347078,264347078
> > >
> > > +        DD      604807628,604807628,604807628,604807628
> > >
> > > +        DD      604807628,604807628,604807628,604807628
> > >
> > > +        DD      770255983,770255983,770255983,770255983
> > >
> > > +        DD      770255983,770255983,770255983,770255983
> > >
> > > +        DD      1249150122,1249150122,1249150122,1249150122
> > >
> > > +        DD      1249150122,1249150122,1249150122,1249150122
> > >
> > > +        DD      1555081692,1555081692,1555081692,1555081692
> > >
> > > +        DD      1555081692,1555081692,1555081692,1555081692
> > >
> > > +        DD      1996064986,1996064986,1996064986,1996064986
> > >
> > > +        DD      1996064986,1996064986,1996064986,1996064986
> > >
> > > +        DD      2554220882,2554220882,2554220882,2554220882
> > >
> > > +        DD      2554220882,2554220882,2554220882,2554220882
> > >
> > > +        DD      2821834349,2821834349,2821834349,2821834349
> > >
> > > +        DD      2821834349,2821834349,2821834349,2821834349
> > >
> > > +        DD      2952996808,2952996808,2952996808,2952996808
> > >
> > > +        DD      2952996808,2952996808,2952996808,2952996808
> > >
> > > +        DD      3210313671,3210313671,3210313671,3210313671
> > >
> > > +        DD      3210313671,3210313671,3210313671,3210313671
> > >
> > > +        DD      3336571891,3336571891,3336571891,3336571891
> > >
> > > +        DD      3336571891,3336571891,3336571891,3336571891
> > >
> > > +        DD      3584528711,3584528711,3584528711,3584528711
> > >
> > > +        DD      3584528711,3584528711,3584528711,3584528711
> > >
> > > +        DD      113926993,113926993,113926993,113926993
> > >
> > > +        DD      113926993,113926993,113926993,113926993
> > >
> > > +        DD      338241895,338241895,338241895,338241895
> > >
> > > +        DD      338241895,338241895,338241895,338241895
> > >
> > > +        DD      666307205,666307205,666307205,666307205
> > >
> > > +        DD      666307205,666307205,666307205,666307205
> > >
> > > +        DD      773529912,773529912,773529912,773529912
> > >
> > > +        DD      773529912,773529912,773529912,773529912
> > >
> > > +        DD      1294757372,1294757372,1294757372,1294757372
> > >
> > > +        DD      1294757372,1294757372,1294757372,1294757372
> > >
> > > +        DD      1396182291,1396182291,1396182291,1396182291
> > >
> > > +        DD      1396182291,1396182291,1396182291,1396182291
> > >
> > > +        DD      1695183700,1695183700,1695183700,1695183700
> > >
> > > +        DD      1695183700,1695183700,1695183700,1695183700
> > >
> > > +        DD      1986661051,1986661051,1986661051,1986661051
> > >
> > > +        DD      1986661051,1986661051,1986661051,1986661051
> > >
> > > +        DD      2177026350,2177026350,2177026350,2177026350
> > >
> > > +        DD      2177026350,2177026350,2177026350,2177026350
> > >
> > > +        DD      2456956037,2456956037,2456956037,2456956037
> > >
> > > +        DD      2456956037,2456956037,2456956037,2456956037
> > >
> > > +        DD      2730485921,2730485921,2730485921,2730485921
> > >
> > > +        DD      2730485921,2730485921,2730485921,2730485921
> > >
> > > +        DD      2820302411,2820302411,2820302411,2820302411
> > >
> > > +        DD      2820302411,2820302411,2820302411,2820302411
> > >
> > > +        DD      3259730800,3259730800,3259730800,3259730800
> > >
> > > +        DD      3259730800,3259730800,3259730800,3259730800
> > >
> > > +        DD      3345764771,3345764771,3345764771,3345764771
> > >
> > > +        DD      3345764771,3345764771,3345764771,3345764771
> > >
> > > +        DD      3516065817,3516065817,3516065817,3516065817
> > >
> > > +        DD      3516065817,3516065817,3516065817,3516065817
> > >
> > > +        DD      3600352804,3600352804,3600352804,3600352804
> > >
> > > +        DD      3600352804,3600352804,3600352804,3600352804
> > >
> > > +        DD      4094571909,4094571909,4094571909,4094571909
> > >
> > > +        DD      4094571909,4094571909,4094571909,4094571909
> > >
> > > +        DD      275423344,275423344,275423344,275423344
> > >
> > > +        DD      275423344,275423344,275423344,275423344
> > >
> > > +        DD      430227734,430227734,430227734,430227734
> > >
> > > +        DD      430227734,430227734,430227734,430227734
> > >
> > > +        DD      506948616,506948616,506948616,506948616
> > >
> > > +        DD      506948616,506948616,506948616,506948616
> > >
> > > +        DD      659060556,659060556,659060556,659060556
> > >
> > > +        DD      659060556,659060556,659060556,659060556
> > >
> > > +        DD      883997877,883997877,883997877,883997877
> > >
> > > +        DD      883997877,883997877,883997877,883997877
> > >
> > > +        DD      958139571,958139571,958139571,958139571
> > >
> > > +        DD      958139571,958139571,958139571,958139571
> > >
> > > +        DD      1322822218,1322822218,1322822218,1322822218
> > >
> > > +        DD      1322822218,1322822218,1322822218,1322822218
> > >
> > > +        DD      1537002063,1537002063,1537002063,1537002063
> > >
> > > +        DD      1537002063,1537002063,1537002063,1537002063
> > >
> > > +        DD      1747873779,1747873779,1747873779,1747873779
> > >
> > > +        DD      1747873779,1747873779,1747873779,1747873779
> > >
> > > +        DD      1955562222,1955562222,1955562222,1955562222
> > >
> > > +        DD      1955562222,1955562222,1955562222,1955562222
> > >
> > > +        DD      2024104815,2024104815,2024104815,2024104815
> > >
> > > +        DD      2024104815,2024104815,2024104815,2024104815
> > >
> > > +        DD      2227730452,2227730452,2227730452,2227730452
> > >
> > > +        DD      2227730452,2227730452,2227730452,2227730452
> > >
> > > +        DD      2361852424,2361852424,2361852424,2361852424
> > >
> > > +        DD      2361852424,2361852424,2361852424,2361852424
> > >
> > > +        DD      2428436474,2428436474,2428436474,2428436474
> > >
> > > +        DD      2428436474,2428436474,2428436474,2428436474
> > >
> > > +        DD      2756734187,2756734187,2756734187,2756734187
> > >
> > > +        DD      2756734187,2756734187,2756734187,2756734187
> > >
> > > +        DD      3204031479,3204031479,3204031479,3204031479
> > >
> > > +        DD      3204031479,3204031479,3204031479,3204031479
> > >
> > > +        DD      3329325298,3329325298,3329325298,3329325298
> > >
> > > +        DD      3329325298,3329325298,3329325298,3329325298
> > >
> > > +$L$pbswap:
> > >
> > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > >
> > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > >
> > > +K256_shaext:
> > >
> > > +        DD      0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
> > >
> > > +        DD      0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
> > >
> > > +        DD      0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
> > >
> > > +        DD      0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
> > >
> > > +        DD      0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
> > >
> > > +        DD      0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
> > >
> > > +        DD      0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
> > >
> > > +        DD      0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
> > >
> > > +        DD      0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
> > >
> > > +        DD      0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
> > >
> > > +        DD      0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
> > >
> > > +        DD      0xd192e819,0xd6990624,0xf40e3585,0x106aa070
> > >
> > > +        DD      0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
> > >
> > > +        DD      0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
> > >
> > > +        DD      0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
> > >
> > > +        DD      0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
> > >
> > > +DB      83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111
> > >
> > > +DB      99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114
> > >
> > > +DB      32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71
> > >
> > > +DB      65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112
> > >
> > > +DB      101,110,115,115,108,46,111,114,103,62,0
> > >
> > > +EXTERN  __imp_RtlVirtualUnwind
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +se_handler:
> > >
> > > +        push    rsi
> > >
> > > +        push    rdi
> > >
> > > +        push    rbx
> > >
> > > +        push    rbp
> > >
> > > +        push    r12
> > >
> > > +        push    r13
> > >
> > > +        push    r14
> > >
> > > +        push    r15
> > >
> > > +        pushfq
> > >
> > > +        sub     rsp,64
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[120+r8]
> > >
> > > +        mov     rbx,QWORD[248+r8]
> > >
> > > +
> > >
> > > +        mov     rsi,QWORD[8+r9]
> > >
> > > +        mov     r11,QWORD[56+r9]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$in_prologue
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[152+r8]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[4+r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jae     NEAR $L$in_prologue
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[272+rax]
> > >
> > > +
> > >
> > > +        mov     rbx,QWORD[((-8))+rax]
> > >
> > > +        mov     rbp,QWORD[((-16))+rax]
> > >
> > > +        mov     QWORD[144+r8],rbx
> > >
> > > +        mov     QWORD[160+r8],rbp
> > >
> > > +
> > >
> > > +        lea     rsi,[((-24-160))+rax]
> > >
> > > +        lea     rdi,[512+r8]
> > >
> > > +        mov     ecx,20
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +$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[40+r9]
> > >
> > > +        mov     rsi,r8
> > >
> > > +        mov     ecx,154
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +        mov     rsi,r9
> > >
> > > +        xor     rcx,rcx
> > >
> > > +        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
> > >
> > > +        popfq
> > >
> > > +        pop     r15
> > >
> > > +        pop     r14
> > >
> > > +        pop     r13
> > >
> > > +        pop     r12
> > >
> > > +        pop     rbp
> > >
> > > +        pop     rbx
> > >
> > > +        pop     rdi
> > >
> > > +        pop     rsi
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +section .pdata rdata align=4
> > >
> > > +ALIGN   4
> > >
> > > +        DD      $L$SEH_begin_sha256_multi_block wrt ..imagebase
> > >
> > > +        DD      $L$SEH_end_sha256_multi_block wrt ..imagebase
> > >
> > > +        DD      $L$SEH_info_sha256_multi_block wrt ..imagebase
> > >
> > > +        DD      $L$SEH_begin_sha256_multi_block_shaext wrt ..imagebase
> > >
> > > +        DD      $L$SEH_end_sha256_multi_block_shaext wrt ..imagebase
> > >
> > > +        DD      $L$SEH_info_sha256_multi_block_shaext wrt ..imagebase
> > >
> > > +section .xdata rdata align=8
> > >
> > > +ALIGN   8
> > >
> > > +$L$SEH_info_sha256_multi_block:
> > >
> > > +DB      9,0,0,0
> > >
> > > +        DD      se_handler wrt ..imagebase
> > >
> > > +        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
> > >
> > > +$L$SEH_info_sha256_multi_block_shaext:
> > >
> > > +DB      9,0,0,0
> > >
> > > +        DD      se_handler wrt ..imagebase
> > >
> > > +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
> > > wrt ..imagebase
> > >
> > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
> x86_64.nasm
> > > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
> > > new file mode 100644
> > > index 0000000000..70e49862a3
> > > --- /dev/null
> > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
> > > @@ -0,0 +1,3313 @@
> > > +; WARNING: do not edit!
> > >
> > > +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
> > >
> > > +;
> > >
> > > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.
> > >
> > > +;
> > >
> > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > >
> > > +; this file except in compliance with the License.  You can obtain a copy
> > >
> > > +; in the file LICENSE in the source distribution or at
> > >
> > > +; https://www.openssl.org/source/license.html
> > >
> > > +
> > >
> > > +default rel
> > >
> > > +%define XMMWORD
> > >
> > > +%define YMMWORD
> > >
> > > +%define ZMMWORD
> > >
> > > +section .text code align=64
> > >
> > > +
> > >
> > > +
> > >
> > > +EXTERN  OPENSSL_ia32cap_P
> > >
> > > +global  sha256_block_data_order
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +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:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        lea     r11,[OPENSSL_ia32cap_P]
> > >
> > > +        mov     r9d,DWORD[r11]
> > >
> > > +        mov     r10d,DWORD[4+r11]
> > >
> > > +        mov     r11d,DWORD[8+r11]
> > >
> > > +        test    r11d,536870912
> > >
> > > +        jnz     NEAR _shaext_shortcut
> > >
> > > +        test    r10d,512
> > >
> > > +        jnz     NEAR $L$ssse3_shortcut
> > >
> > > +        mov     rax,rsp
> > >
> > > +
> > >
> > > +        push    rbx
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        push    r12
> > >
> > > +
> > >
> > > +        push    r13
> > >
> > > +
> > >
> > > +        push    r14
> > >
> > > +
> > >
> > > +        push    r15
> > >
> > > +
> > >
> > > +        shl     rdx,4
> > >
> > > +        sub     rsp,16*4+4*8
> > >
> > > +        lea     rdx,[rdx*4+rsi]
> > >
> > > +        and     rsp,-64
> > >
> > > +        mov     QWORD[((64+0))+rsp],rdi
> > >
> > > +        mov     QWORD[((64+8))+rsp],rsi
> > >
> > > +        mov     QWORD[((64+16))+rsp],rdx
> > >
> > > +        mov     QWORD[88+rsp],rax
> > >
> > > +
> > >
> > > +$L$prologue:
> > >
> > > +
> > >
> > > +        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:
> > >
> > > +        mov     edi,ebx
> > >
> > > +        lea     rbp,[K256]
> > >
> > > +        xor     edi,ecx
> > >
> > > +        mov     r12d,DWORD[rsi]
> > >
> > > +        mov     r13d,r8d
> > >
> > > +        mov     r14d,eax
> > >
> > > +        bswap   r12d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r15d,r9d
> > >
> > > +
> > >
> > > +        xor     r13d,r8d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r15d,r10d
> > >
> > > +
> > >
> > > +        mov     DWORD[rsp],r12d
> > >
> > > +        xor     r14d,eax
> > >
> > > +        and     r15d,r8d
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,r11d
> > >
> > > +        xor     r15d,r10d
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,r8d
> > >
> > > +        add     r12d,r15d
> > >
> > > +
> > >
> > > +        mov     r15d,eax
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,eax
> > >
> > > +
> > >
> > > +        xor     r15d,ebx
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     r11d,ebx
> > >
> > > +
> > >
> > > +        and     edi,r15d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     r11d,edi
> > >
> > > +        add     edx,r12d
> > >
> > > +        add     r11d,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        add     r11d,r14d
> > >
> > > +        mov     r12d,DWORD[4+rsi]
> > >
> > > +        mov     r13d,edx
> > >
> > > +        mov     r14d,r11d
> > >
> > > +        bswap   r12d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     edi,r8d
> > >
> > > +
> > >
> > > +        xor     r13d,edx
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     edi,r9d
> > >
> > > +
> > >
> > > +        mov     DWORD[4+rsp],r12d
> > >
> > > +        xor     r14d,r11d
> > >
> > > +        and     edi,edx
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,r10d
> > >
> > > +        xor     edi,r9d
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,edx
> > >
> > > +        add     r12d,edi
> > >
> > > +
> > >
> > > +        mov     edi,r11d
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,r11d
> > >
> > > +
> > >
> > > +        xor     edi,eax
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     r10d,eax
> > >
> > > +
> > >
> > > +        and     r15d,edi
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     r10d,r15d
> > >
> > > +        add     ecx,r12d
> > >
> > > +        add     r10d,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        add     r10d,r14d
> > >
> > > +        mov     r12d,DWORD[8+rsi]
> > >
> > > +        mov     r13d,ecx
> > >
> > > +        mov     r14d,r10d
> > >
> > > +        bswap   r12d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r15d,edx
> > >
> > > +
> > >
> > > +        xor     r13d,ecx
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r15d,r8d
> > >
> > > +
> > >
> > > +        mov     DWORD[8+rsp],r12d
> > >
> > > +        xor     r14d,r10d
> > >
> > > +        and     r15d,ecx
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,r9d
> > >
> > > +        xor     r15d,r8d
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,ecx
> > >
> > > +        add     r12d,r15d
> > >
> > > +
> > >
> > > +        mov     r15d,r10d
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,r10d
> > >
> > > +
> > >
> > > +        xor     r15d,r11d
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     r9d,r11d
> > >
> > > +
> > >
> > > +        and     edi,r15d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     r9d,edi
> > >
> > > +        add     ebx,r12d
> > >
> > > +        add     r9d,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        add     r9d,r14d
> > >
> > > +        mov     r12d,DWORD[12+rsi]
> > >
> > > +        mov     r13d,ebx
> > >
> > > +        mov     r14d,r9d
> > >
> > > +        bswap   r12d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     edi,ecx
> > >
> > > +
> > >
> > > +        xor     r13d,ebx
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     edi,edx
> > >
> > > +
> > >
> > > +        mov     DWORD[12+rsp],r12d
> > >
> > > +        xor     r14d,r9d
> > >
> > > +        and     edi,ebx
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,r8d
> > >
> > > +        xor     edi,edx
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,ebx
> > >
> > > +        add     r12d,edi
> > >
> > > +
> > >
> > > +        mov     edi,r9d
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,r9d
> > >
> > > +
> > >
> > > +        xor     edi,r10d
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     r8d,r10d
> > >
> > > +
> > >
> > > +        and     r15d,edi
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     r8d,r15d
> > >
> > > +        add     eax,r12d
> > >
> > > +        add     r8d,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[20+rbp]
> > >
> > > +        add     r8d,r14d
> > >
> > > +        mov     r12d,DWORD[16+rsi]
> > >
> > > +        mov     r13d,eax
> > >
> > > +        mov     r14d,r8d
> > >
> > > +        bswap   r12d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r15d,ebx
> > >
> > > +
> > >
> > > +        xor     r13d,eax
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r15d,ecx
> > >
> > > +
> > >
> > > +        mov     DWORD[16+rsp],r12d
> > >
> > > +        xor     r14d,r8d
> > >
> > > +        and     r15d,eax
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,edx
> > >
> > > +        xor     r15d,ecx
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,eax
> > >
> > > +        add     r12d,r15d
> > >
> > > +
> > >
> > > +        mov     r15d,r8d
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,r8d
> > >
> > > +
> > >
> > > +        xor     r15d,r9d
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     edx,r9d
> > >
> > > +
> > >
> > > +        and     edi,r15d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     edx,edi
> > >
> > > +        add     r11d,r12d
> > >
> > > +        add     edx,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        add     edx,r14d
> > >
> > > +        mov     r12d,DWORD[20+rsi]
> > >
> > > +        mov     r13d,r11d
> > >
> > > +        mov     r14d,edx
> > >
> > > +        bswap   r12d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     edi,eax
> > >
> > > +
> > >
> > > +        xor     r13d,r11d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     edi,ebx
> > >
> > > +
> > >
> > > +        mov     DWORD[20+rsp],r12d
> > >
> > > +        xor     r14d,edx
> > >
> > > +        and     edi,r11d
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,ecx
> > >
> > > +        xor     edi,ebx
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,r11d
> > >
> > > +        add     r12d,edi
> > >
> > > +
> > >
> > > +        mov     edi,edx
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,edx
> > >
> > > +
> > >
> > > +        xor     edi,r8d
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     ecx,r8d
> > >
> > > +
> > >
> > > +        and     r15d,edi
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     ecx,r15d
> > >
> > > +        add     r10d,r12d
> > >
> > > +        add     ecx,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        add     ecx,r14d
> > >
> > > +        mov     r12d,DWORD[24+rsi]
> > >
> > > +        mov     r13d,r10d
> > >
> > > +        mov     r14d,ecx
> > >
> > > +        bswap   r12d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r15d,r11d
> > >
> > > +
> > >
> > > +        xor     r13d,r10d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r15d,eax
> > >
> > > +
> > >
> > > +        mov     DWORD[24+rsp],r12d
> > >
> > > +        xor     r14d,ecx
> > >
> > > +        and     r15d,r10d
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,ebx
> > >
> > > +        xor     r15d,eax
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,r10d
> > >
> > > +        add     r12d,r15d
> > >
> > > +
> > >
> > > +        mov     r15d,ecx
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,ecx
> > >
> > > +
> > >
> > > +        xor     r15d,edx
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     ebx,edx
> > >
> > > +
> > >
> > > +        and     edi,r15d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     ebx,edi
> > >
> > > +        add     r9d,r12d
> > >
> > > +        add     ebx,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        add     ebx,r14d
> > >
> > > +        mov     r12d,DWORD[28+rsi]
> > >
> > > +        mov     r13d,r9d
> > >
> > > +        mov     r14d,ebx
> > >
> > > +        bswap   r12d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     edi,r10d
> > >
> > > +
> > >
> > > +        xor     r13d,r9d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     edi,r11d
> > >
> > > +
> > >
> > > +        mov     DWORD[28+rsp],r12d
> > >
> > > +        xor     r14d,ebx
> > >
> > > +        and     edi,r9d
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,eax
> > >
> > > +        xor     edi,r11d
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,r9d
> > >
> > > +        add     r12d,edi
> > >
> > > +
> > >
> > > +        mov     edi,ebx
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,ebx
> > >
> > > +
> > >
> > > +        xor     edi,ecx
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     eax,ecx
> > >
> > > +
> > >
> > > +        and     r15d,edi
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     eax,r15d
> > >
> > > +        add     r8d,r12d
> > >
> > > +        add     eax,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[20+rbp]
> > >
> > > +        add     eax,r14d
> > >
> > > +        mov     r12d,DWORD[32+rsi]
> > >
> > > +        mov     r13d,r8d
> > >
> > > +        mov     r14d,eax
> > >
> > > +        bswap   r12d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r15d,r9d
> > >
> > > +
> > >
> > > +        xor     r13d,r8d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r15d,r10d
> > >
> > > +
> > >
> > > +        mov     DWORD[32+rsp],r12d
> > >
> > > +        xor     r14d,eax
> > >
> > > +        and     r15d,r8d
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,r11d
> > >
> > > +        xor     r15d,r10d
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,r8d
> > >
> > > +        add     r12d,r15d
> > >
> > > +
> > >
> > > +        mov     r15d,eax
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,eax
> > >
> > > +
> > >
> > > +        xor     r15d,ebx
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     r11d,ebx
> > >
> > > +
> > >
> > > +        and     edi,r15d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     r11d,edi
> > >
> > > +        add     edx,r12d
> > >
> > > +        add     r11d,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        add     r11d,r14d
> > >
> > > +        mov     r12d,DWORD[36+rsi]
> > >
> > > +        mov     r13d,edx
> > >
> > > +        mov     r14d,r11d
> > >
> > > +        bswap   r12d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     edi,r8d
> > >
> > > +
> > >
> > > +        xor     r13d,edx
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     edi,r9d
> > >
> > > +
> > >
> > > +        mov     DWORD[36+rsp],r12d
> > >
> > > +        xor     r14d,r11d
> > >
> > > +        and     edi,edx
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,r10d
> > >
> > > +        xor     edi,r9d
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,edx
> > >
> > > +        add     r12d,edi
> > >
> > > +
> > >
> > > +        mov     edi,r11d
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,r11d
> > >
> > > +
> > >
> > > +        xor     edi,eax
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     r10d,eax
> > >
> > > +
> > >
> > > +        and     r15d,edi
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     r10d,r15d
> > >
> > > +        add     ecx,r12d
> > >
> > > +        add     r10d,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        add     r10d,r14d
> > >
> > > +        mov     r12d,DWORD[40+rsi]
> > >
> > > +        mov     r13d,ecx
> > >
> > > +        mov     r14d,r10d
> > >
> > > +        bswap   r12d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r15d,edx
> > >
> > > +
> > >
> > > +        xor     r13d,ecx
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r15d,r8d
> > >
> > > +
> > >
> > > +        mov     DWORD[40+rsp],r12d
> > >
> > > +        xor     r14d,r10d
> > >
> > > +        and     r15d,ecx
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,r9d
> > >
> > > +        xor     r15d,r8d
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,ecx
> > >
> > > +        add     r12d,r15d
> > >
> > > +
> > >
> > > +        mov     r15d,r10d
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,r10d
> > >
> > > +
> > >
> > > +        xor     r15d,r11d
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     r9d,r11d
> > >
> > > +
> > >
> > > +        and     edi,r15d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     r9d,edi
> > >
> > > +        add     ebx,r12d
> > >
> > > +        add     r9d,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        add     r9d,r14d
> > >
> > > +        mov     r12d,DWORD[44+rsi]
> > >
> > > +        mov     r13d,ebx
> > >
> > > +        mov     r14d,r9d
> > >
> > > +        bswap   r12d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     edi,ecx
> > >
> > > +
> > >
> > > +        xor     r13d,ebx
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     edi,edx
> > >
> > > +
> > >
> > > +        mov     DWORD[44+rsp],r12d
> > >
> > > +        xor     r14d,r9d
> > >
> > > +        and     edi,ebx
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,r8d
> > >
> > > +        xor     edi,edx
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,ebx
> > >
> > > +        add     r12d,edi
> > >
> > > +
> > >
> > > +        mov     edi,r9d
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,r9d
> > >
> > > +
> > >
> > > +        xor     edi,r10d
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     r8d,r10d
> > >
> > > +
> > >
> > > +        and     r15d,edi
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     r8d,r15d
> > >
> > > +        add     eax,r12d
> > >
> > > +        add     r8d,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[20+rbp]
> > >
> > > +        add     r8d,r14d
> > >
> > > +        mov     r12d,DWORD[48+rsi]
> > >
> > > +        mov     r13d,eax
> > >
> > > +        mov     r14d,r8d
> > >
> > > +        bswap   r12d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r15d,ebx
> > >
> > > +
> > >
> > > +        xor     r13d,eax
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r15d,ecx
> > >
> > > +
> > >
> > > +        mov     DWORD[48+rsp],r12d
> > >
> > > +        xor     r14d,r8d
> > >
> > > +        and     r15d,eax
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,edx
> > >
> > > +        xor     r15d,ecx
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,eax
> > >
> > > +        add     r12d,r15d
> > >
> > > +
> > >
> > > +        mov     r15d,r8d
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,r8d
> > >
> > > +
> > >
> > > +        xor     r15d,r9d
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     edx,r9d
> > >
> > > +
> > >
> > > +        and     edi,r15d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     edx,edi
> > >
> > > +        add     r11d,r12d
> > >
> > > +        add     edx,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        add     edx,r14d
> > >
> > > +        mov     r12d,DWORD[52+rsi]
> > >
> > > +        mov     r13d,r11d
> > >
> > > +        mov     r14d,edx
> > >
> > > +        bswap   r12d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     edi,eax
> > >
> > > +
> > >
> > > +        xor     r13d,r11d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     edi,ebx
> > >
> > > +
> > >
> > > +        mov     DWORD[52+rsp],r12d
> > >
> > > +        xor     r14d,edx
> > >
> > > +        and     edi,r11d
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,ecx
> > >
> > > +        xor     edi,ebx
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,r11d
> > >
> > > +        add     r12d,edi
> > >
> > > +
> > >
> > > +        mov     edi,edx
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,edx
> > >
> > > +
> > >
> > > +        xor     edi,r8d
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     ecx,r8d
> > >
> > > +
> > >
> > > +        and     r15d,edi
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     ecx,r15d
> > >
> > > +        add     r10d,r12d
> > >
> > > +        add     ecx,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        add     ecx,r14d
> > >
> > > +        mov     r12d,DWORD[56+rsi]
> > >
> > > +        mov     r13d,r10d
> > >
> > > +        mov     r14d,ecx
> > >
> > > +        bswap   r12d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r15d,r11d
> > >
> > > +
> > >
> > > +        xor     r13d,r10d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r15d,eax
> > >
> > > +
> > >
> > > +        mov     DWORD[56+rsp],r12d
> > >
> > > +        xor     r14d,ecx
> > >
> > > +        and     r15d,r10d
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,ebx
> > >
> > > +        xor     r15d,eax
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,r10d
> > >
> > > +        add     r12d,r15d
> > >
> > > +
> > >
> > > +        mov     r15d,ecx
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,ecx
> > >
> > > +
> > >
> > > +        xor     r15d,edx
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     ebx,edx
> > >
> > > +
> > >
> > > +        and     edi,r15d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     ebx,edi
> > >
> > > +        add     r9d,r12d
> > >
> > > +        add     ebx,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        add     ebx,r14d
> > >
> > > +        mov     r12d,DWORD[60+rsi]
> > >
> > > +        mov     r13d,r9d
> > >
> > > +        mov     r14d,ebx
> > >
> > > +        bswap   r12d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     edi,r10d
> > >
> > > +
> > >
> > > +        xor     r13d,r9d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     edi,r11d
> > >
> > > +
> > >
> > > +        mov     DWORD[60+rsp],r12d
> > >
> > > +        xor     r14d,ebx
> > >
> > > +        and     edi,r9d
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,eax
> > >
> > > +        xor     edi,r11d
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,r9d
> > >
> > > +        add     r12d,edi
> > >
> > > +
> > >
> > > +        mov     edi,ebx
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,ebx
> > >
> > > +
> > >
> > > +        xor     edi,ecx
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     eax,ecx
> > >
> > > +
> > >
> > > +        and     r15d,edi
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     eax,r15d
> > >
> > > +        add     r8d,r12d
> > >
> > > +        add     eax,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[20+rbp]
> > >
> > > +        jmp     NEAR $L$rounds_16_xx
> > >
> > > +ALIGN   16
> > >
> > > +$L$rounds_16_xx:
> > >
> > > +        mov     r13d,DWORD[4+rsp]
> > >
> > > +        mov     r15d,DWORD[56+rsp]
> > >
> > > +
> > >
> > > +        mov     r12d,r13d
> > >
> > > +        ror     r13d,11
> > >
> > > +        add     eax,r14d
> > >
> > > +        mov     r14d,r15d
> > >
> > > +        ror     r15d,2
> > >
> > > +
> > >
> > > +        xor     r13d,r12d
> > >
> > > +        shr     r12d,3
> > >
> > > +        ror     r13d,7
> > >
> > > +        xor     r15d,r14d
> > >
> > > +        shr     r14d,10
> > >
> > > +
> > >
> > > +        ror     r15d,17
> > >
> > > +        xor     r12d,r13d
> > >
> > > +        xor     r15d,r14d
> > >
> > > +        add     r12d,DWORD[36+rsp]
> > >
> > > +
> > >
> > > +        add     r12d,DWORD[rsp]
> > >
> > > +        mov     r13d,r8d
> > >
> > > +        add     r12d,r15d
> > >
> > > +        mov     r14d,eax
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r15d,r9d
> > >
> > > +
> > >
> > > +        xor     r13d,r8d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r15d,r10d
> > >
> > > +
> > >
> > > +        mov     DWORD[rsp],r12d
> > >
> > > +        xor     r14d,eax
> > >
> > > +        and     r15d,r8d
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,r11d
> > >
> > > +        xor     r15d,r10d
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,r8d
> > >
> > > +        add     r12d,r15d
> > >
> > > +
> > >
> > > +        mov     r15d,eax
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,eax
> > >
> > > +
> > >
> > > +        xor     r15d,ebx
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     r11d,ebx
> > >
> > > +
> > >
> > > +        and     edi,r15d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     r11d,edi
> > >
> > > +        add     edx,r12d
> > >
> > > +        add     r11d,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        mov     r13d,DWORD[8+rsp]
> > >
> > > +        mov     edi,DWORD[60+rsp]
> > >
> > > +
> > >
> > > +        mov     r12d,r13d
> > >
> > > +        ror     r13d,11
> > >
> > > +        add     r11d,r14d
> > >
> > > +        mov     r14d,edi
> > >
> > > +        ror     edi,2
> > >
> > > +
> > >
> > > +        xor     r13d,r12d
> > >
> > > +        shr     r12d,3
> > >
> > > +        ror     r13d,7
> > >
> > > +        xor     edi,r14d
> > >
> > > +        shr     r14d,10
> > >
> > > +
> > >
> > > +        ror     edi,17
> > >
> > > +        xor     r12d,r13d
> > >
> > > +        xor     edi,r14d
> > >
> > > +        add     r12d,DWORD[40+rsp]
> > >
> > > +
> > >
> > > +        add     r12d,DWORD[4+rsp]
> > >
> > > +        mov     r13d,edx
> > >
> > > +        add     r12d,edi
> > >
> > > +        mov     r14d,r11d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     edi,r8d
> > >
> > > +
> > >
> > > +        xor     r13d,edx
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     edi,r9d
> > >
> > > +
> > >
> > > +        mov     DWORD[4+rsp],r12d
> > >
> > > +        xor     r14d,r11d
> > >
> > > +        and     edi,edx
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,r10d
> > >
> > > +        xor     edi,r9d
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,edx
> > >
> > > +        add     r12d,edi
> > >
> > > +
> > >
> > > +        mov     edi,r11d
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,r11d
> > >
> > > +
> > >
> > > +        xor     edi,eax
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     r10d,eax
> > >
> > > +
> > >
> > > +        and     r15d,edi
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     r10d,r15d
> > >
> > > +        add     ecx,r12d
> > >
> > > +        add     r10d,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        mov     r13d,DWORD[12+rsp]
> > >
> > > +        mov     r15d,DWORD[rsp]
> > >
> > > +
> > >
> > > +        mov     r12d,r13d
> > >
> > > +        ror     r13d,11
> > >
> > > +        add     r10d,r14d
> > >
> > > +        mov     r14d,r15d
> > >
> > > +        ror     r15d,2
> > >
> > > +
> > >
> > > +        xor     r13d,r12d
> > >
> > > +        shr     r12d,3
> > >
> > > +        ror     r13d,7
> > >
> > > +        xor     r15d,r14d
> > >
> > > +        shr     r14d,10
> > >
> > > +
> > >
> > > +        ror     r15d,17
> > >
> > > +        xor     r12d,r13d
> > >
> > > +        xor     r15d,r14d
> > >
> > > +        add     r12d,DWORD[44+rsp]
> > >
> > > +
> > >
> > > +        add     r12d,DWORD[8+rsp]
> > >
> > > +        mov     r13d,ecx
> > >
> > > +        add     r12d,r15d
> > >
> > > +        mov     r14d,r10d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r15d,edx
> > >
> > > +
> > >
> > > +        xor     r13d,ecx
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r15d,r8d
> > >
> > > +
> > >
> > > +        mov     DWORD[8+rsp],r12d
> > >
> > > +        xor     r14d,r10d
> > >
> > > +        and     r15d,ecx
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,r9d
> > >
> > > +        xor     r15d,r8d
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,ecx
> > >
> > > +        add     r12d,r15d
> > >
> > > +
> > >
> > > +        mov     r15d,r10d
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,r10d
> > >
> > > +
> > >
> > > +        xor     r15d,r11d
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     r9d,r11d
> > >
> > > +
> > >
> > > +        and     edi,r15d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     r9d,edi
> > >
> > > +        add     ebx,r12d
> > >
> > > +        add     r9d,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        mov     r13d,DWORD[16+rsp]
> > >
> > > +        mov     edi,DWORD[4+rsp]
> > >
> > > +
> > >
> > > +        mov     r12d,r13d
> > >
> > > +        ror     r13d,11
> > >
> > > +        add     r9d,r14d
> > >
> > > +        mov     r14d,edi
> > >
> > > +        ror     edi,2
> > >
> > > +
> > >
> > > +        xor     r13d,r12d
> > >
> > > +        shr     r12d,3
> > >
> > > +        ror     r13d,7
> > >
> > > +        xor     edi,r14d
> > >
> > > +        shr     r14d,10
> > >
> > > +
> > >
> > > +        ror     edi,17
> > >
> > > +        xor     r12d,r13d
> > >
> > > +        xor     edi,r14d
> > >
> > > +        add     r12d,DWORD[48+rsp]
> > >
> > > +
> > >
> > > +        add     r12d,DWORD[12+rsp]
> > >
> > > +        mov     r13d,ebx
> > >
> > > +        add     r12d,edi
> > >
> > > +        mov     r14d,r9d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     edi,ecx
> > >
> > > +
> > >
> > > +        xor     r13d,ebx
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     edi,edx
> > >
> > > +
> > >
> > > +        mov     DWORD[12+rsp],r12d
> > >
> > > +        xor     r14d,r9d
> > >
> > > +        and     edi,ebx
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,r8d
> > >
> > > +        xor     edi,edx
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,ebx
> > >
> > > +        add     r12d,edi
> > >
> > > +
> > >
> > > +        mov     edi,r9d
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,r9d
> > >
> > > +
> > >
> > > +        xor     edi,r10d
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     r8d,r10d
> > >
> > > +
> > >
> > > +        and     r15d,edi
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     r8d,r15d
> > >
> > > +        add     eax,r12d
> > >
> > > +        add     r8d,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[20+rbp]
> > >
> > > +        mov     r13d,DWORD[20+rsp]
> > >
> > > +        mov     r15d,DWORD[8+rsp]
> > >
> > > +
> > >
> > > +        mov     r12d,r13d
> > >
> > > +        ror     r13d,11
> > >
> > > +        add     r8d,r14d
> > >
> > > +        mov     r14d,r15d
> > >
> > > +        ror     r15d,2
> > >
> > > +
> > >
> > > +        xor     r13d,r12d
> > >
> > > +        shr     r12d,3
> > >
> > > +        ror     r13d,7
> > >
> > > +        xor     r15d,r14d
> > >
> > > +        shr     r14d,10
> > >
> > > +
> > >
> > > +        ror     r15d,17
> > >
> > > +        xor     r12d,r13d
> > >
> > > +        xor     r15d,r14d
> > >
> > > +        add     r12d,DWORD[52+rsp]
> > >
> > > +
> > >
> > > +        add     r12d,DWORD[16+rsp]
> > >
> > > +        mov     r13d,eax
> > >
> > > +        add     r12d,r15d
> > >
> > > +        mov     r14d,r8d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r15d,ebx
> > >
> > > +
> > >
> > > +        xor     r13d,eax
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r15d,ecx
> > >
> > > +
> > >
> > > +        mov     DWORD[16+rsp],r12d
> > >
> > > +        xor     r14d,r8d
> > >
> > > +        and     r15d,eax
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,edx
> > >
> > > +        xor     r15d,ecx
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,eax
> > >
> > > +        add     r12d,r15d
> > >
> > > +
> > >
> > > +        mov     r15d,r8d
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,r8d
> > >
> > > +
> > >
> > > +        xor     r15d,r9d
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     edx,r9d
> > >
> > > +
> > >
> > > +        and     edi,r15d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     edx,edi
> > >
> > > +        add     r11d,r12d
> > >
> > > +        add     edx,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        mov     r13d,DWORD[24+rsp]
> > >
> > > +        mov     edi,DWORD[12+rsp]
> > >
> > > +
> > >
> > > +        mov     r12d,r13d
> > >
> > > +        ror     r13d,11
> > >
> > > +        add     edx,r14d
> > >
> > > +        mov     r14d,edi
> > >
> > > +        ror     edi,2
> > >
> > > +
> > >
> > > +        xor     r13d,r12d
> > >
> > > +        shr     r12d,3
> > >
> > > +        ror     r13d,7
> > >
> > > +        xor     edi,r14d
> > >
> > > +        shr     r14d,10
> > >
> > > +
> > >
> > > +        ror     edi,17
> > >
> > > +        xor     r12d,r13d
> > >
> > > +        xor     edi,r14d
> > >
> > > +        add     r12d,DWORD[56+rsp]
> > >
> > > +
> > >
> > > +        add     r12d,DWORD[20+rsp]
> > >
> > > +        mov     r13d,r11d
> > >
> > > +        add     r12d,edi
> > >
> > > +        mov     r14d,edx
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     edi,eax
> > >
> > > +
> > >
> > > +        xor     r13d,r11d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     edi,ebx
> > >
> > > +
> > >
> > > +        mov     DWORD[20+rsp],r12d
> > >
> > > +        xor     r14d,edx
> > >
> > > +        and     edi,r11d
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,ecx
> > >
> > > +        xor     edi,ebx
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,r11d
> > >
> > > +        add     r12d,edi
> > >
> > > +
> > >
> > > +        mov     edi,edx
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,edx
> > >
> > > +
> > >
> > > +        xor     edi,r8d
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     ecx,r8d
> > >
> > > +
> > >
> > > +        and     r15d,edi
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     ecx,r15d
> > >
> > > +        add     r10d,r12d
> > >
> > > +        add     ecx,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        mov     r13d,DWORD[28+rsp]
> > >
> > > +        mov     r15d,DWORD[16+rsp]
> > >
> > > +
> > >
> > > +        mov     r12d,r13d
> > >
> > > +        ror     r13d,11
> > >
> > > +        add     ecx,r14d
> > >
> > > +        mov     r14d,r15d
> > >
> > > +        ror     r15d,2
> > >
> > > +
> > >
> > > +        xor     r13d,r12d
> > >
> > > +        shr     r12d,3
> > >
> > > +        ror     r13d,7
> > >
> > > +        xor     r15d,r14d
> > >
> > > +        shr     r14d,10
> > >
> > > +
> > >
> > > +        ror     r15d,17
> > >
> > > +        xor     r12d,r13d
> > >
> > > +        xor     r15d,r14d
> > >
> > > +        add     r12d,DWORD[60+rsp]
> > >
> > > +
> > >
> > > +        add     r12d,DWORD[24+rsp]
> > >
> > > +        mov     r13d,r10d
> > >
> > > +        add     r12d,r15d
> > >
> > > +        mov     r14d,ecx
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r15d,r11d
> > >
> > > +
> > >
> > > +        xor     r13d,r10d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r15d,eax
> > >
> > > +
> > >
> > > +        mov     DWORD[24+rsp],r12d
> > >
> > > +        xor     r14d,ecx
> > >
> > > +        and     r15d,r10d
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,ebx
> > >
> > > +        xor     r15d,eax
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,r10d
> > >
> > > +        add     r12d,r15d
> > >
> > > +
> > >
> > > +        mov     r15d,ecx
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,ecx
> > >
> > > +
> > >
> > > +        xor     r15d,edx
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     ebx,edx
> > >
> > > +
> > >
> > > +        and     edi,r15d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     ebx,edi
> > >
> > > +        add     r9d,r12d
> > >
> > > +        add     ebx,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        mov     r13d,DWORD[32+rsp]
> > >
> > > +        mov     edi,DWORD[20+rsp]
> > >
> > > +
> > >
> > > +        mov     r12d,r13d
> > >
> > > +        ror     r13d,11
> > >
> > > +        add     ebx,r14d
> > >
> > > +        mov     r14d,edi
> > >
> > > +        ror     edi,2
> > >
> > > +
> > >
> > > +        xor     r13d,r12d
> > >
> > > +        shr     r12d,3
> > >
> > > +        ror     r13d,7
> > >
> > > +        xor     edi,r14d
> > >
> > > +        shr     r14d,10
> > >
> > > +
> > >
> > > +        ror     edi,17
> > >
> > > +        xor     r12d,r13d
> > >
> > > +        xor     edi,r14d
> > >
> > > +        add     r12d,DWORD[rsp]
> > >
> > > +
> > >
> > > +        add     r12d,DWORD[28+rsp]
> > >
> > > +        mov     r13d,r9d
> > >
> > > +        add     r12d,edi
> > >
> > > +        mov     r14d,ebx
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     edi,r10d
> > >
> > > +
> > >
> > > +        xor     r13d,r9d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     edi,r11d
> > >
> > > +
> > >
> > > +        mov     DWORD[28+rsp],r12d
> > >
> > > +        xor     r14d,ebx
> > >
> > > +        and     edi,r9d
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,eax
> > >
> > > +        xor     edi,r11d
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,r9d
> > >
> > > +        add     r12d,edi
> > >
> > > +
> > >
> > > +        mov     edi,ebx
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,ebx
> > >
> > > +
> > >
> > > +        xor     edi,ecx
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     eax,ecx
> > >
> > > +
> > >
> > > +        and     r15d,edi
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     eax,r15d
> > >
> > > +        add     r8d,r12d
> > >
> > > +        add     eax,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[20+rbp]
> > >
> > > +        mov     r13d,DWORD[36+rsp]
> > >
> > > +        mov     r15d,DWORD[24+rsp]
> > >
> > > +
> > >
> > > +        mov     r12d,r13d
> > >
> > > +        ror     r13d,11
> > >
> > > +        add     eax,r14d
> > >
> > > +        mov     r14d,r15d
> > >
> > > +        ror     r15d,2
> > >
> > > +
> > >
> > > +        xor     r13d,r12d
> > >
> > > +        shr     r12d,3
> > >
> > > +        ror     r13d,7
> > >
> > > +        xor     r15d,r14d
> > >
> > > +        shr     r14d,10
> > >
> > > +
> > >
> > > +        ror     r15d,17
> > >
> > > +        xor     r12d,r13d
> > >
> > > +        xor     r15d,r14d
> > >
> > > +        add     r12d,DWORD[4+rsp]
> > >
> > > +
> > >
> > > +        add     r12d,DWORD[32+rsp]
> > >
> > > +        mov     r13d,r8d
> > >
> > > +        add     r12d,r15d
> > >
> > > +        mov     r14d,eax
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r15d,r9d
> > >
> > > +
> > >
> > > +        xor     r13d,r8d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r15d,r10d
> > >
> > > +
> > >
> > > +        mov     DWORD[32+rsp],r12d
> > >
> > > +        xor     r14d,eax
> > >
> > > +        and     r15d,r8d
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,r11d
> > >
> > > +        xor     r15d,r10d
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,r8d
> > >
> > > +        add     r12d,r15d
> > >
> > > +
> > >
> > > +        mov     r15d,eax
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,eax
> > >
> > > +
> > >
> > > +        xor     r15d,ebx
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     r11d,ebx
> > >
> > > +
> > >
> > > +        and     edi,r15d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     r11d,edi
> > >
> > > +        add     edx,r12d
> > >
> > > +        add     r11d,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        mov     r13d,DWORD[40+rsp]
> > >
> > > +        mov     edi,DWORD[28+rsp]
> > >
> > > +
> > >
> > > +        mov     r12d,r13d
> > >
> > > +        ror     r13d,11
> > >
> > > +        add     r11d,r14d
> > >
> > > +        mov     r14d,edi
> > >
> > > +        ror     edi,2
> > >
> > > +
> > >
> > > +        xor     r13d,r12d
> > >
> > > +        shr     r12d,3
> > >
> > > +        ror     r13d,7
> > >
> > > +        xor     edi,r14d
> > >
> > > +        shr     r14d,10
> > >
> > > +
> > >
> > > +        ror     edi,17
> > >
> > > +        xor     r12d,r13d
> > >
> > > +        xor     edi,r14d
> > >
> > > +        add     r12d,DWORD[8+rsp]
> > >
> > > +
> > >
> > > +        add     r12d,DWORD[36+rsp]
> > >
> > > +        mov     r13d,edx
> > >
> > > +        add     r12d,edi
> > >
> > > +        mov     r14d,r11d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     edi,r8d
> > >
> > > +
> > >
> > > +        xor     r13d,edx
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     edi,r9d
> > >
> > > +
> > >
> > > +        mov     DWORD[36+rsp],r12d
> > >
> > > +        xor     r14d,r11d
> > >
> > > +        and     edi,edx
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,r10d
> > >
> > > +        xor     edi,r9d
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,edx
> > >
> > > +        add     r12d,edi
> > >
> > > +
> > >
> > > +        mov     edi,r11d
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,r11d
> > >
> > > +
> > >
> > > +        xor     edi,eax
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     r10d,eax
> > >
> > > +
> > >
> > > +        and     r15d,edi
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     r10d,r15d
> > >
> > > +        add     ecx,r12d
> > >
> > > +        add     r10d,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        mov     r13d,DWORD[44+rsp]
> > >
> > > +        mov     r15d,DWORD[32+rsp]
> > >
> > > +
> > >
> > > +        mov     r12d,r13d
> > >
> > > +        ror     r13d,11
> > >
> > > +        add     r10d,r14d
> > >
> > > +        mov     r14d,r15d
> > >
> > > +        ror     r15d,2
> > >
> > > +
> > >
> > > +        xor     r13d,r12d
> > >
> > > +        shr     r12d,3
> > >
> > > +        ror     r13d,7
> > >
> > > +        xor     r15d,r14d
> > >
> > > +        shr     r14d,10
> > >
> > > +
> > >
> > > +        ror     r15d,17
> > >
> > > +        xor     r12d,r13d
> > >
> > > +        xor     r15d,r14d
> > >
> > > +        add     r12d,DWORD[12+rsp]
> > >
> > > +
> > >
> > > +        add     r12d,DWORD[40+rsp]
> > >
> > > +        mov     r13d,ecx
> > >
> > > +        add     r12d,r15d
> > >
> > > +        mov     r14d,r10d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r15d,edx
> > >
> > > +
> > >
> > > +        xor     r13d,ecx
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r15d,r8d
> > >
> > > +
> > >
> > > +        mov     DWORD[40+rsp],r12d
> > >
> > > +        xor     r14d,r10d
> > >
> > > +        and     r15d,ecx
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,r9d
> > >
> > > +        xor     r15d,r8d
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,ecx
> > >
> > > +        add     r12d,r15d
> > >
> > > +
> > >
> > > +        mov     r15d,r10d
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,r10d
> > >
> > > +
> > >
> > > +        xor     r15d,r11d
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     r9d,r11d
> > >
> > > +
> > >
> > > +        and     edi,r15d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     r9d,edi
> > >
> > > +        add     ebx,r12d
> > >
> > > +        add     r9d,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        mov     r13d,DWORD[48+rsp]
> > >
> > > +        mov     edi,DWORD[36+rsp]
> > >
> > > +
> > >
> > > +        mov     r12d,r13d
> > >
> > > +        ror     r13d,11
> > >
> > > +        add     r9d,r14d
> > >
> > > +        mov     r14d,edi
> > >
> > > +        ror     edi,2
> > >
> > > +
> > >
> > > +        xor     r13d,r12d
> > >
> > > +        shr     r12d,3
> > >
> > > +        ror     r13d,7
> > >
> > > +        xor     edi,r14d
> > >
> > > +        shr     r14d,10
> > >
> > > +
> > >
> > > +        ror     edi,17
> > >
> > > +        xor     r12d,r13d
> > >
> > > +        xor     edi,r14d
> > >
> > > +        add     r12d,DWORD[16+rsp]
> > >
> > > +
> > >
> > > +        add     r12d,DWORD[44+rsp]
> > >
> > > +        mov     r13d,ebx
> > >
> > > +        add     r12d,edi
> > >
> > > +        mov     r14d,r9d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     edi,ecx
> > >
> > > +
> > >
> > > +        xor     r13d,ebx
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     edi,edx
> > >
> > > +
> > >
> > > +        mov     DWORD[44+rsp],r12d
> > >
> > > +        xor     r14d,r9d
> > >
> > > +        and     edi,ebx
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,r8d
> > >
> > > +        xor     edi,edx
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,ebx
> > >
> > > +        add     r12d,edi
> > >
> > > +
> > >
> > > +        mov     edi,r9d
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,r9d
> > >
> > > +
> > >
> > > +        xor     edi,r10d
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     r8d,r10d
> > >
> > > +
> > >
> > > +        and     r15d,edi
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     r8d,r15d
> > >
> > > +        add     eax,r12d
> > >
> > > +        add     r8d,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[20+rbp]
> > >
> > > +        mov     r13d,DWORD[52+rsp]
> > >
> > > +        mov     r15d,DWORD[40+rsp]
> > >
> > > +
> > >
> > > +        mov     r12d,r13d
> > >
> > > +        ror     r13d,11
> > >
> > > +        add     r8d,r14d
> > >
> > > +        mov     r14d,r15d
> > >
> > > +        ror     r15d,2
> > >
> > > +
> > >
> > > +        xor     r13d,r12d
> > >
> > > +        shr     r12d,3
> > >
> > > +        ror     r13d,7
> > >
> > > +        xor     r15d,r14d
> > >
> > > +        shr     r14d,10
> > >
> > > +
> > >
> > > +        ror     r15d,17
> > >
> > > +        xor     r12d,r13d
> > >
> > > +        xor     r15d,r14d
> > >
> > > +        add     r12d,DWORD[20+rsp]
> > >
> > > +
> > >
> > > +        add     r12d,DWORD[48+rsp]
> > >
> > > +        mov     r13d,eax
> > >
> > > +        add     r12d,r15d
> > >
> > > +        mov     r14d,r8d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r15d,ebx
> > >
> > > +
> > >
> > > +        xor     r13d,eax
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r15d,ecx
> > >
> > > +
> > >
> > > +        mov     DWORD[48+rsp],r12d
> > >
> > > +        xor     r14d,r8d
> > >
> > > +        and     r15d,eax
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,edx
> > >
> > > +        xor     r15d,ecx
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,eax
> > >
> > > +        add     r12d,r15d
> > >
> > > +
> > >
> > > +        mov     r15d,r8d
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,r8d
> > >
> > > +
> > >
> > > +        xor     r15d,r9d
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     edx,r9d
> > >
> > > +
> > >
> > > +        and     edi,r15d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     edx,edi
> > >
> > > +        add     r11d,r12d
> > >
> > > +        add     edx,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        mov     r13d,DWORD[56+rsp]
> > >
> > > +        mov     edi,DWORD[44+rsp]
> > >
> > > +
> > >
> > > +        mov     r12d,r13d
> > >
> > > +        ror     r13d,11
> > >
> > > +        add     edx,r14d
> > >
> > > +        mov     r14d,edi
> > >
> > > +        ror     edi,2
> > >
> > > +
> > >
> > > +        xor     r13d,r12d
> > >
> > > +        shr     r12d,3
> > >
> > > +        ror     r13d,7
> > >
> > > +        xor     edi,r14d
> > >
> > > +        shr     r14d,10
> > >
> > > +
> > >
> > > +        ror     edi,17
> > >
> > > +        xor     r12d,r13d
> > >
> > > +        xor     edi,r14d
> > >
> > > +        add     r12d,DWORD[24+rsp]
> > >
> > > +
> > >
> > > +        add     r12d,DWORD[52+rsp]
> > >
> > > +        mov     r13d,r11d
> > >
> > > +        add     r12d,edi
> > >
> > > +        mov     r14d,edx
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     edi,eax
> > >
> > > +
> > >
> > > +        xor     r13d,r11d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     edi,ebx
> > >
> > > +
> > >
> > > +        mov     DWORD[52+rsp],r12d
> > >
> > > +        xor     r14d,edx
> > >
> > > +        and     edi,r11d
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,ecx
> > >
> > > +        xor     edi,ebx
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,r11d
> > >
> > > +        add     r12d,edi
> > >
> > > +
> > >
> > > +        mov     edi,edx
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,edx
> > >
> > > +
> > >
> > > +        xor     edi,r8d
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     ecx,r8d
> > >
> > > +
> > >
> > > +        and     r15d,edi
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     ecx,r15d
> > >
> > > +        add     r10d,r12d
> > >
> > > +        add     ecx,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        mov     r13d,DWORD[60+rsp]
> > >
> > > +        mov     r15d,DWORD[48+rsp]
> > >
> > > +
> > >
> > > +        mov     r12d,r13d
> > >
> > > +        ror     r13d,11
> > >
> > > +        add     ecx,r14d
> > >
> > > +        mov     r14d,r15d
> > >
> > > +        ror     r15d,2
> > >
> > > +
> > >
> > > +        xor     r13d,r12d
> > >
> > > +        shr     r12d,3
> > >
> > > +        ror     r13d,7
> > >
> > > +        xor     r15d,r14d
> > >
> > > +        shr     r14d,10
> > >
> > > +
> > >
> > > +        ror     r15d,17
> > >
> > > +        xor     r12d,r13d
> > >
> > > +        xor     r15d,r14d
> > >
> > > +        add     r12d,DWORD[28+rsp]
> > >
> > > +
> > >
> > > +        add     r12d,DWORD[56+rsp]
> > >
> > > +        mov     r13d,r10d
> > >
> > > +        add     r12d,r15d
> > >
> > > +        mov     r14d,ecx
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r15d,r11d
> > >
> > > +
> > >
> > > +        xor     r13d,r10d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r15d,eax
> > >
> > > +
> > >
> > > +        mov     DWORD[56+rsp],r12d
> > >
> > > +        xor     r14d,ecx
> > >
> > > +        and     r15d,r10d
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,ebx
> > >
> > > +        xor     r15d,eax
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,r10d
> > >
> > > +        add     r12d,r15d
> > >
> > > +
> > >
> > > +        mov     r15d,ecx
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,ecx
> > >
> > > +
> > >
> > > +        xor     r15d,edx
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     ebx,edx
> > >
> > > +
> > >
> > > +        and     edi,r15d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     ebx,edi
> > >
> > > +        add     r9d,r12d
> > >
> > > +        add     ebx,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[4+rbp]
> > >
> > > +        mov     r13d,DWORD[rsp]
> > >
> > > +        mov     edi,DWORD[52+rsp]
> > >
> > > +
> > >
> > > +        mov     r12d,r13d
> > >
> > > +        ror     r13d,11
> > >
> > > +        add     ebx,r14d
> > >
> > > +        mov     r14d,edi
> > >
> > > +        ror     edi,2
> > >
> > > +
> > >
> > > +        xor     r13d,r12d
> > >
> > > +        shr     r12d,3
> > >
> > > +        ror     r13d,7
> > >
> > > +        xor     edi,r14d
> > >
> > > +        shr     r14d,10
> > >
> > > +
> > >
> > > +        ror     edi,17
> > >
> > > +        xor     r12d,r13d
> > >
> > > +        xor     edi,r14d
> > >
> > > +        add     r12d,DWORD[32+rsp]
> > >
> > > +
> > >
> > > +        add     r12d,DWORD[60+rsp]
> > >
> > > +        mov     r13d,r9d
> > >
> > > +        add     r12d,edi
> > >
> > > +        mov     r14d,ebx
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     edi,r10d
> > >
> > > +
> > >
> > > +        xor     r13d,r9d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     edi,r11d
> > >
> > > +
> > >
> > > +        mov     DWORD[60+rsp],r12d
> > >
> > > +        xor     r14d,ebx
> > >
> > > +        and     edi,r9d
> > >
> > > +
> > >
> > > +        ror     r13d,5
> > >
> > > +        add     r12d,eax
> > >
> > > +        xor     edi,r11d
> > >
> > > +
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r13d,r9d
> > >
> > > +        add     r12d,edi
> > >
> > > +
> > >
> > > +        mov     edi,ebx
> > >
> > > +        add     r12d,DWORD[rbp]
> > >
> > > +        xor     r14d,ebx
> > >
> > > +
> > >
> > > +        xor     edi,ecx
> > >
> > > +        ror     r13d,6
> > >
> > > +        mov     eax,ecx
> > >
> > > +
> > >
> > > +        and     r15d,edi
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r12d,r13d
> > >
> > > +
> > >
> > > +        xor     eax,r15d
> > >
> > > +        add     r8d,r12d
> > >
> > > +        add     eax,r12d
> > >
> > > +
> > >
> > > +        lea     rbp,[20+rbp]
> > >
> > > +        cmp     BYTE[3+rbp],0
> > >
> > > +        jnz     NEAR $L$rounds_16_xx
> > >
> > > +
> > >
> > > +        mov     rdi,QWORD[((64+0))+rsp]
> > >
> > > +        add     eax,r14d
> > >
> > > +        lea     rsi,[64+rsi]
> > >
> > > +
> > >
> > > +        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[((64+16))+rsp]
> > >
> > > +
> > >
> > > +        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[88+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$epilogue:
> > >
> > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > >
> > > +        mov     rsi,QWORD[16+rsp]
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +$L$SEH_end_sha256_block_data_order:
> > >
> > > +ALIGN   64
> > >
> > > +
> > >
> > > +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      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
> > >
> > > +DB      32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
> > >
> > > +DB      111,114,103,62,0
> > >
> > > +
> > >
> > > +ALIGN   64
> > >
> > > +sha256_block_data_order_shaext:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_sha256_block_data_order_shaext:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +
> > >
> > > +
> > >
> > > +_shaext_shortcut:
> > >
> > > +
> > >
> > > +        lea     rsp,[((-88))+rsp]
> > >
> > > +        movaps  XMMWORD[(-8-80)+rax],xmm6
> > >
> > > +        movaps  XMMWORD[(-8-64)+rax],xmm7
> > >
> > > +        movaps  XMMWORD[(-8-48)+rax],xmm8
> > >
> > > +        movaps  XMMWORD[(-8-32)+rax],xmm9
> > >
> > > +        movaps  XMMWORD[(-8-16)+rax],xmm10
> > >
> > > +$L$prologue_shaext:
> > >
> > > +        lea     rcx,[((K256+128))]
> > >
> > > +        movdqu  xmm1,XMMWORD[rdi]
> > >
> > > +        movdqu  xmm2,XMMWORD[16+rdi]
> > >
> > > +        movdqa  xmm7,XMMWORD[((512-128))+rcx]
> > >
> > > +
> > >
> > > +        pshufd  xmm0,xmm1,0x1b
> > >
> > > +        pshufd  xmm1,xmm1,0xb1
> > >
> > > +        pshufd  xmm2,xmm2,0x1b
> > >
> > > +        movdqa  xmm8,xmm7
> > >
> > > +DB      102,15,58,15,202,8
> > >
> > > +        punpcklqdq      xmm2,xmm0
> > >
> > > +        jmp     NEAR $L$oop_shaext
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$oop_shaext:
> > >
> > > +        movdqu  xmm3,XMMWORD[rsi]
> > >
> > > +        movdqu  xmm4,XMMWORD[16+rsi]
> > >
> > > +        movdqu  xmm5,XMMWORD[32+rsi]
> > >
> > > +DB      102,15,56,0,223
> > >
> > > +        movdqu  xmm6,XMMWORD[48+rsi]
> > >
> > > +
> > >
> > > +        movdqa  xmm0,XMMWORD[((0-128))+rcx]
> > >
> > > +        paddd   xmm0,xmm3
> > >
> > > +DB      102,15,56,0,231
> > >
> > > +        movdqa  xmm10,xmm2
> > >
> > > +DB      15,56,203,209
> > >
> > > +        pshufd  xmm0,xmm0,0x0e
> > >
> > > +        nop
> > >
> > > +        movdqa  xmm9,xmm1
> > >
> > > +DB      15,56,203,202
> > >
> > > +
> > >
> > > +        movdqa  xmm0,XMMWORD[((32-128))+rcx]
> > >
> > > +        paddd   xmm0,xmm4
> > >
> > > +DB      102,15,56,0,239
> > >
> > > +DB      15,56,203,209
> > >
> > > +        pshufd  xmm0,xmm0,0x0e
> > >
> > > +        lea     rsi,[64+rsi]
> > >
> > > +DB      15,56,204,220
> > >
> > > +DB      15,56,203,202
> > >
> > > +
> > >
> > > +        movdqa  xmm0,XMMWORD[((64-128))+rcx]
> > >
> > > +        paddd   xmm0,xmm5
> > >
> > > +DB      102,15,56,0,247
> > >
> > > +DB      15,56,203,209
> > >
> > > +        pshufd  xmm0,xmm0,0x0e
> > >
> > > +        movdqa  xmm7,xmm6
> > >
> > > +DB      102,15,58,15,253,4
> > >
> > > +        nop
> > >
> > > +        paddd   xmm3,xmm7
> > >
> > > +DB      15,56,204,229
> > >
> > > +DB      15,56,203,202
> > >
> > > +
> > >
> > > +        movdqa  xmm0,XMMWORD[((96-128))+rcx]
> > >
> > > +        paddd   xmm0,xmm6
> > >
> > > +DB      15,56,205,222
> > >
> > > +DB      15,56,203,209
> > >
> > > +        pshufd  xmm0,xmm0,0x0e
> > >
> > > +        movdqa  xmm7,xmm3
> > >
> > > +DB      102,15,58,15,254,4
> > >
> > > +        nop
> > >
> > > +        paddd   xmm4,xmm7
> > >
> > > +DB      15,56,204,238
> > >
> > > +DB      15,56,203,202
> > >
> > > +        movdqa  xmm0,XMMWORD[((128-128))+rcx]
> > >
> > > +        paddd   xmm0,xmm3
> > >
> > > +DB      15,56,205,227
> > >
> > > +DB      15,56,203,209
> > >
> > > +        pshufd  xmm0,xmm0,0x0e
> > >
> > > +        movdqa  xmm7,xmm4
> > >
> > > +DB      102,15,58,15,251,4
> > >
> > > +        nop
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +DB      15,56,204,243
> > >
> > > +DB      15,56,203,202
> > >
> > > +        movdqa  xmm0,XMMWORD[((160-128))+rcx]
> > >
> > > +        paddd   xmm0,xmm4
> > >
> > > +DB      15,56,205,236
> > >
> > > +DB      15,56,203,209
> > >
> > > +        pshufd  xmm0,xmm0,0x0e
> > >
> > > +        movdqa  xmm7,xmm5
> > >
> > > +DB      102,15,58,15,252,4
> > >
> > > +        nop
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +DB      15,56,204,220
> > >
> > > +DB      15,56,203,202
> > >
> > > +        movdqa  xmm0,XMMWORD[((192-128))+rcx]
> > >
> > > +        paddd   xmm0,xmm5
> > >
> > > +DB      15,56,205,245
> > >
> > > +DB      15,56,203,209
> > >
> > > +        pshufd  xmm0,xmm0,0x0e
> > >
> > > +        movdqa  xmm7,xmm6
> > >
> > > +DB      102,15,58,15,253,4
> > >
> > > +        nop
> > >
> > > +        paddd   xmm3,xmm7
> > >
> > > +DB      15,56,204,229
> > >
> > > +DB      15,56,203,202
> > >
> > > +        movdqa  xmm0,XMMWORD[((224-128))+rcx]
> > >
> > > +        paddd   xmm0,xmm6
> > >
> > > +DB      15,56,205,222
> > >
> > > +DB      15,56,203,209
> > >
> > > +        pshufd  xmm0,xmm0,0x0e
> > >
> > > +        movdqa  xmm7,xmm3
> > >
> > > +DB      102,15,58,15,254,4
> > >
> > > +        nop
> > >
> > > +        paddd   xmm4,xmm7
> > >
> > > +DB      15,56,204,238
> > >
> > > +DB      15,56,203,202
> > >
> > > +        movdqa  xmm0,XMMWORD[((256-128))+rcx]
> > >
> > > +        paddd   xmm0,xmm3
> > >
> > > +DB      15,56,205,227
> > >
> > > +DB      15,56,203,209
> > >
> > > +        pshufd  xmm0,xmm0,0x0e
> > >
> > > +        movdqa  xmm7,xmm4
> > >
> > > +DB      102,15,58,15,251,4
> > >
> > > +        nop
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +DB      15,56,204,243
> > >
> > > +DB      15,56,203,202
> > >
> > > +        movdqa  xmm0,XMMWORD[((288-128))+rcx]
> > >
> > > +        paddd   xmm0,xmm4
> > >
> > > +DB      15,56,205,236
> > >
> > > +DB      15,56,203,209
> > >
> > > +        pshufd  xmm0,xmm0,0x0e
> > >
> > > +        movdqa  xmm7,xmm5
> > >
> > > +DB      102,15,58,15,252,4
> > >
> > > +        nop
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +DB      15,56,204,220
> > >
> > > +DB      15,56,203,202
> > >
> > > +        movdqa  xmm0,XMMWORD[((320-128))+rcx]
> > >
> > > +        paddd   xmm0,xmm5
> > >
> > > +DB      15,56,205,245
> > >
> > > +DB      15,56,203,209
> > >
> > > +        pshufd  xmm0,xmm0,0x0e
> > >
> > > +        movdqa  xmm7,xmm6
> > >
> > > +DB      102,15,58,15,253,4
> > >
> > > +        nop
> > >
> > > +        paddd   xmm3,xmm7
> > >
> > > +DB      15,56,204,229
> > >
> > > +DB      15,56,203,202
> > >
> > > +        movdqa  xmm0,XMMWORD[((352-128))+rcx]
> > >
> > > +        paddd   xmm0,xmm6
> > >
> > > +DB      15,56,205,222
> > >
> > > +DB      15,56,203,209
> > >
> > > +        pshufd  xmm0,xmm0,0x0e
> > >
> > > +        movdqa  xmm7,xmm3
> > >
> > > +DB      102,15,58,15,254,4
> > >
> > > +        nop
> > >
> > > +        paddd   xmm4,xmm7
> > >
> > > +DB      15,56,204,238
> > >
> > > +DB      15,56,203,202
> > >
> > > +        movdqa  xmm0,XMMWORD[((384-128))+rcx]
> > >
> > > +        paddd   xmm0,xmm3
> > >
> > > +DB      15,56,205,227
> > >
> > > +DB      15,56,203,209
> > >
> > > +        pshufd  xmm0,xmm0,0x0e
> > >
> > > +        movdqa  xmm7,xmm4
> > >
> > > +DB      102,15,58,15,251,4
> > >
> > > +        nop
> > >
> > > +        paddd   xmm5,xmm7
> > >
> > > +DB      15,56,204,243
> > >
> > > +DB      15,56,203,202
> > >
> > > +        movdqa  xmm0,XMMWORD[((416-128))+rcx]
> > >
> > > +        paddd   xmm0,xmm4
> > >
> > > +DB      15,56,205,236
> > >
> > > +DB      15,56,203,209
> > >
> > > +        pshufd  xmm0,xmm0,0x0e
> > >
> > > +        movdqa  xmm7,xmm5
> > >
> > > +DB      102,15,58,15,252,4
> > >
> > > +DB      15,56,203,202
> > >
> > > +        paddd   xmm6,xmm7
> > >
> > > +
> > >
> > > +        movdqa  xmm0,XMMWORD[((448-128))+rcx]
> > >
> > > +        paddd   xmm0,xmm5
> > >
> > > +DB      15,56,203,209
> > >
> > > +        pshufd  xmm0,xmm0,0x0e
> > >
> > > +DB      15,56,205,245
> > >
> > > +        movdqa  xmm7,xmm8
> > >
> > > +DB      15,56,203,202
> > >
> > > +
> > >
> > > +        movdqa  xmm0,XMMWORD[((480-128))+rcx]
> > >
> > > +        paddd   xmm0,xmm6
> > >
> > > +        nop
> > >
> > > +DB      15,56,203,209
> > >
> > > +        pshufd  xmm0,xmm0,0x0e
> > >
> > > +        dec     rdx
> > >
> > > +        nop
> > >
> > > +DB      15,56,203,202
> > >
> > > +
> > >
> > > +        paddd   xmm2,xmm10
> > >
> > > +        paddd   xmm1,xmm9
> > >
> > > +        jnz     NEAR $L$oop_shaext
> > >
> > > +
> > >
> > > +        pshufd  xmm2,xmm2,0xb1
> > >
> > > +        pshufd  xmm7,xmm1,0x1b
> > >
> > > +        pshufd  xmm1,xmm1,0xb1
> > >
> > > +        punpckhqdq      xmm1,xmm2
> > >
> > > +DB      102,15,58,15,215,8
> > >
> > > +
> > >
> > > +        movdqu  XMMWORD[rdi],xmm1
> > >
> > > +        movdqu  XMMWORD[16+rdi],xmm2
> > >
> > > +        movaps  xmm6,XMMWORD[((-8-80))+rax]
> > >
> > > +        movaps  xmm7,XMMWORD[((-8-64))+rax]
> > >
> > > +        movaps  xmm8,XMMWORD[((-8-48))+rax]
> > >
> > > +        movaps  xmm9,XMMWORD[((-8-32))+rax]
> > >
> > > +        movaps  xmm10,XMMWORD[((-8-16))+rax]
> > >
> > > +        mov     rsp,rax
> > >
> > > +$L$epilogue_shaext:
> > >
> > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > >
> > > +        mov     rsi,QWORD[16+rsp]
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +$L$SEH_end_sha256_block_data_order_shaext:
> > >
> > > +
> > >
> > > +ALIGN   64
> > >
> > > +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:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +$L$ssse3_shortcut:
> > >
> > > +        mov     rax,rsp
> > >
> > > +
> > >
> > > +        push    rbx
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        push    r12
> > >
> > > +
> > >
> > > +        push    r13
> > >
> > > +
> > >
> > > +        push    r14
> > >
> > > +
> > >
> > > +        push    r15
> > >
> > > +
> > >
> > > +        shl     rdx,4
> > >
> > > +        sub     rsp,160
> > >
> > > +        lea     rdx,[rdx*4+rsi]
> > >
> > > +        and     rsp,-64
> > >
> > > +        mov     QWORD[((64+0))+rsp],rdi
> > >
> > > +        mov     QWORD[((64+8))+rsp],rsi
> > >
> > > +        mov     QWORD[((64+16))+rsp],rdx
> > >
> > > +        mov     QWORD[88+rsp],rax
> > >
> > > +
> > >
> > > +        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[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_ssse3
> > >
> > > +ALIGN   16
> > >
> > > +$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[48+rsi]
> > >
> > > +        lea     rbp,[K256]
> > >
> > > +DB      102,15,56,0,207
> > >
> > > +        movdqa  xmm4,XMMWORD[rbp]
> > >
> > > +        movdqa  xmm5,XMMWORD[32+rbp]
> > >
> > > +DB      102,15,56,0,215
> > >
> > > +        paddd   xmm4,xmm0
> > >
> > > +        movdqa  xmm6,XMMWORD[64+rbp]
> > >
> > > +DB      102,15,56,0,223
> > >
> > > +        movdqa  xmm7,XMMWORD[96+rbp]
> > >
> > > +        paddd   xmm5,xmm1
> > >
> > > +        paddd   xmm6,xmm2
> > >
> > > +        paddd   xmm7,xmm3
> > >
> > > +        movdqa  XMMWORD[rsp],xmm4
> > >
> > > +        mov     r14d,eax
> > >
> > > +        movdqa  XMMWORD[16+rsp],xmm5
> > >
> > > +        mov     edi,ebx
> > >
> > > +        movdqa  XMMWORD[32+rsp],xmm6
> > >
> > > +        xor     edi,ecx
> > >
> > > +        movdqa  XMMWORD[48+rsp],xmm7
> > >
> > > +        mov     r13d,r8d
> > >
> > > +        jmp     NEAR $L$ssse3_00_47
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$ssse3_00_47:
> > >
> > > +        sub     rbp,-128
> > >
> > > +        ror     r13d,14
> > >
> > > +        movdqa  xmm4,xmm1
> > >
> > > +        mov     eax,r14d
> > >
> > > +        mov     r12d,r9d
> > >
> > > +        movdqa  xmm7,xmm3
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,r8d
> > >
> > > +        xor     r12d,r10d
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,eax
> > >
> > > +DB      102,15,58,15,224,4
> > >
> > > +        and     r12d,r8d
> > >
> > > +        xor     r13d,r8d
> > >
> > > +DB      102,15,58,15,250,4
> > >
> > > +        add     r11d,DWORD[rsp]
> > >
> > > +        mov     r15d,eax
> > >
> > > +        xor     r12d,r10d
> > >
> > > +        ror     r14d,11
> > >
> > > +        movdqa  xmm5,xmm4
> > >
> > > +        xor     r15d,ebx
> > >
> > > +        add     r11d,r12d
> > >
> > > +        movdqa  xmm6,xmm4
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     edi,r15d
> > >
> > > +        psrld   xmm4,3
> > >
> > > +        xor     r14d,eax
> > >
> > > +        add     r11d,r13d
> > >
> > > +        xor     edi,ebx
> > >
> > > +        paddd   xmm0,xmm7
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     edx,r11d
> > >
> > > +        psrld   xmm6,7
> > >
> > > +        add     r11d,edi
> > >
> > > +        mov     r13d,edx
> > >
> > > +        pshufd  xmm7,xmm3,250
> > >
> > > +        add     r14d,r11d
> > >
> > > +        ror     r13d,14
> > >
> > > +        pslld   xmm5,14
> > >
> > > +        mov     r11d,r14d
> > >
> > > +        mov     r12d,r8d
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,edx
> > >
> > > +        xor     r12d,r9d
> > >
> > > +        ror     r13d,5
> > >
> > > +        psrld   xmm6,11
> > >
> > > +        xor     r14d,r11d
> > >
> > > +        pxor    xmm4,xmm5
> > >
> > > +        and     r12d,edx
> > >
> > > +        xor     r13d,edx
> > >
> > > +        pslld   xmm5,11
> > >
> > > +        add     r10d,DWORD[4+rsp]
> > >
> > > +        mov     edi,r11d
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +        xor     r12d,r9d
> > >
> > > +        ror     r14d,11
> > >
> > > +        movdqa  xmm6,xmm7
> > >
> > > +        xor     edi,eax
> > >
> > > +        add     r10d,r12d
> > >
> > > +        pxor    xmm4,xmm5
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     r15d,edi
> > >
> > > +        xor     r14d,r11d
> > >
> > > +        psrld   xmm7,10
> > >
> > > +        add     r10d,r13d
> > >
> > > +        xor     r15d,eax
> > >
> > > +        paddd   xmm0,xmm4
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     ecx,r10d
> > >
> > > +        psrlq   xmm6,17
> > >
> > > +        add     r10d,r15d
> > >
> > > +        mov     r13d,ecx
> > >
> > > +        add     r14d,r10d
> > >
> > > +        pxor    xmm7,xmm6
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r10d,r14d
> > >
> > > +        mov     r12d,edx
> > >
> > > +        ror     r14d,9
> > >
> > > +        psrlq   xmm6,2
> > >
> > > +        xor     r13d,ecx
> > >
> > > +        xor     r12d,r8d
> > >
> > > +        pxor    xmm7,xmm6
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,r10d
> > >
> > > +        and     r12d,ecx
> > >
> > > +        pshufd  xmm7,xmm7,128
> > >
> > > +        xor     r13d,ecx
> > >
> > > +        add     r9d,DWORD[8+rsp]
> > >
> > > +        mov     r15d,r10d
> > >
> > > +        psrldq  xmm7,8
> > >
> > > +        xor     r12d,r8d
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r15d,r11d
> > >
> > > +        add     r9d,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        paddd   xmm0,xmm7
> > >
> > > +        and     edi,r15d
> > >
> > > +        xor     r14d,r10d
> > >
> > > +        add     r9d,r13d
> > >
> > > +        pshufd  xmm7,xmm0,80
> > >
> > > +        xor     edi,r11d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     ebx,r9d
> > >
> > > +        movdqa  xmm6,xmm7
> > >
> > > +        add     r9d,edi
> > >
> > > +        mov     r13d,ebx
> > >
> > > +        psrld   xmm7,10
> > >
> > > +        add     r14d,r9d
> > >
> > > +        ror     r13d,14
> > >
> > > +        psrlq   xmm6,17
> > >
> > > +        mov     r9d,r14d
> > >
> > > +        mov     r12d,ecx
> > >
> > > +        pxor    xmm7,xmm6
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,ebx
> > >
> > > +        xor     r12d,edx
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,r9d
> > >
> > > +        psrlq   xmm6,2
> > >
> > > +        and     r12d,ebx
> > >
> > > +        xor     r13d,ebx
> > >
> > > +        add     r8d,DWORD[12+rsp]
> > >
> > > +        pxor    xmm7,xmm6
> > >
> > > +        mov     edi,r9d
> > >
> > > +        xor     r12d,edx
> > >
> > > +        ror     r14d,11
> > >
> > > +        pshufd  xmm7,xmm7,8
> > >
> > > +        xor     edi,r10d
> > >
> > > +        add     r8d,r12d
> > >
> > > +        movdqa  xmm6,XMMWORD[rbp]
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     r15d,edi
> > >
> > > +        pslldq  xmm7,8
> > >
> > > +        xor     r14d,r9d
> > >
> > > +        add     r8d,r13d
> > >
> > > +        xor     r15d,r10d
> > >
> > > +        paddd   xmm0,xmm7
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     eax,r8d
> > >
> > > +        add     r8d,r15d
> > >
> > > +        paddd   xmm6,xmm0
> > >
> > > +        mov     r13d,eax
> > >
> > > +        add     r14d,r8d
> > >
> > > +        movdqa  XMMWORD[rsp],xmm6
> > >
> > > +        ror     r13d,14
> > >
> > > +        movdqa  xmm4,xmm2
> > >
> > > +        mov     r8d,r14d
> > >
> > > +        mov     r12d,ebx
> > >
> > > +        movdqa  xmm7,xmm0
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,eax
> > >
> > > +        xor     r12d,ecx
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,r8d
> > >
> > > +DB      102,15,58,15,225,4
> > >
> > > +        and     r12d,eax
> > >
> > > +        xor     r13d,eax
> > >
> > > +DB      102,15,58,15,251,4
> > >
> > > +        add     edx,DWORD[16+rsp]
> > >
> > > +        mov     r15d,r8d
> > >
> > > +        xor     r12d,ecx
> > >
> > > +        ror     r14d,11
> > >
> > > +        movdqa  xmm5,xmm4
> > >
> > > +        xor     r15d,r9d
> > >
> > > +        add     edx,r12d
> > >
> > > +        movdqa  xmm6,xmm4
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     edi,r15d
> > >
> > > +        psrld   xmm4,3
> > >
> > > +        xor     r14d,r8d
> > >
> > > +        add     edx,r13d
> > >
> > > +        xor     edi,r9d
> > >
> > > +        paddd   xmm1,xmm7
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r11d,edx
> > >
> > > +        psrld   xmm6,7
> > >
> > > +        add     edx,edi
> > >
> > > +        mov     r13d,r11d
> > >
> > > +        pshufd  xmm7,xmm0,250
> > >
> > > +        add     r14d,edx
> > >
> > > +        ror     r13d,14
> > >
> > > +        pslld   xmm5,14
> > >
> > > +        mov     edx,r14d
> > >
> > > +        mov     r12d,eax
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,r11d
> > >
> > > +        xor     r12d,ebx
> > >
> > > +        ror     r13d,5
> > >
> > > +        psrld   xmm6,11
> > >
> > > +        xor     r14d,edx
> > >
> > > +        pxor    xmm4,xmm5
> > >
> > > +        and     r12d,r11d
> > >
> > > +        xor     r13d,r11d
> > >
> > > +        pslld   xmm5,11
> > >
> > > +        add     ecx,DWORD[20+rsp]
> > >
> > > +        mov     edi,edx
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +        xor     r12d,ebx
> > >
> > > +        ror     r14d,11
> > >
> > > +        movdqa  xmm6,xmm7
> > >
> > > +        xor     edi,r8d
> > >
> > > +        add     ecx,r12d
> > >
> > > +        pxor    xmm4,xmm5
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     r15d,edi
> > >
> > > +        xor     r14d,edx
> > >
> > > +        psrld   xmm7,10
> > >
> > > +        add     ecx,r13d
> > >
> > > +        xor     r15d,r8d
> > >
> > > +        paddd   xmm1,xmm4
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r10d,ecx
> > >
> > > +        psrlq   xmm6,17
> > >
> > > +        add     ecx,r15d
> > >
> > > +        mov     r13d,r10d
> > >
> > > +        add     r14d,ecx
> > >
> > > +        pxor    xmm7,xmm6
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     ecx,r14d
> > >
> > > +        mov     r12d,r11d
> > >
> > > +        ror     r14d,9
> > >
> > > +        psrlq   xmm6,2
> > >
> > > +        xor     r13d,r10d
> > >
> > > +        xor     r12d,eax
> > >
> > > +        pxor    xmm7,xmm6
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,ecx
> > >
> > > +        and     r12d,r10d
> > >
> > > +        pshufd  xmm7,xmm7,128
> > >
> > > +        xor     r13d,r10d
> > >
> > > +        add     ebx,DWORD[24+rsp]
> > >
> > > +        mov     r15d,ecx
> > >
> > > +        psrldq  xmm7,8
> > >
> > > +        xor     r12d,eax
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r15d,edx
> > >
> > > +        add     ebx,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        paddd   xmm1,xmm7
> > >
> > > +        and     edi,r15d
> > >
> > > +        xor     r14d,ecx
> > >
> > > +        add     ebx,r13d
> > >
> > > +        pshufd  xmm7,xmm1,80
> > >
> > > +        xor     edi,edx
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r9d,ebx
> > >
> > > +        movdqa  xmm6,xmm7
> > >
> > > +        add     ebx,edi
> > >
> > > +        mov     r13d,r9d
> > >
> > > +        psrld   xmm7,10
> > >
> > > +        add     r14d,ebx
> > >
> > > +        ror     r13d,14
> > >
> > > +        psrlq   xmm6,17
> > >
> > > +        mov     ebx,r14d
> > >
> > > +        mov     r12d,r10d
> > >
> > > +        pxor    xmm7,xmm6
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,r9d
> > >
> > > +        xor     r12d,r11d
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,ebx
> > >
> > > +        psrlq   xmm6,2
> > >
> > > +        and     r12d,r9d
> > >
> > > +        xor     r13d,r9d
> > >
> > > +        add     eax,DWORD[28+rsp]
> > >
> > > +        pxor    xmm7,xmm6
> > >
> > > +        mov     edi,ebx
> > >
> > > +        xor     r12d,r11d
> > >
> > > +        ror     r14d,11
> > >
> > > +        pshufd  xmm7,xmm7,8
> > >
> > > +        xor     edi,ecx
> > >
> > > +        add     eax,r12d
> > >
> > > +        movdqa  xmm6,XMMWORD[32+rbp]
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     r15d,edi
> > >
> > > +        pslldq  xmm7,8
> > >
> > > +        xor     r14d,ebx
> > >
> > > +        add     eax,r13d
> > >
> > > +        xor     r15d,ecx
> > >
> > > +        paddd   xmm1,xmm7
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r8d,eax
> > >
> > > +        add     eax,r15d
> > >
> > > +        paddd   xmm6,xmm1
> > >
> > > +        mov     r13d,r8d
> > >
> > > +        add     r14d,eax
> > >
> > > +        movdqa  XMMWORD[16+rsp],xmm6
> > >
> > > +        ror     r13d,14
> > >
> > > +        movdqa  xmm4,xmm3
> > >
> > > +        mov     eax,r14d
> > >
> > > +        mov     r12d,r9d
> > >
> > > +        movdqa  xmm7,xmm1
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,r8d
> > >
> > > +        xor     r12d,r10d
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,eax
> > >
> > > +DB      102,15,58,15,226,4
> > >
> > > +        and     r12d,r8d
> > >
> > > +        xor     r13d,r8d
> > >
> > > +DB      102,15,58,15,248,4
> > >
> > > +        add     r11d,DWORD[32+rsp]
> > >
> > > +        mov     r15d,eax
> > >
> > > +        xor     r12d,r10d
> > >
> > > +        ror     r14d,11
> > >
> > > +        movdqa  xmm5,xmm4
> > >
> > > +        xor     r15d,ebx
> > >
> > > +        add     r11d,r12d
> > >
> > > +        movdqa  xmm6,xmm4
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     edi,r15d
> > >
> > > +        psrld   xmm4,3
> > >
> > > +        xor     r14d,eax
> > >
> > > +        add     r11d,r13d
> > >
> > > +        xor     edi,ebx
> > >
> > > +        paddd   xmm2,xmm7
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     edx,r11d
> > >
> > > +        psrld   xmm6,7
> > >
> > > +        add     r11d,edi
> > >
> > > +        mov     r13d,edx
> > >
> > > +        pshufd  xmm7,xmm1,250
> > >
> > > +        add     r14d,r11d
> > >
> > > +        ror     r13d,14
> > >
> > > +        pslld   xmm5,14
> > >
> > > +        mov     r11d,r14d
> > >
> > > +        mov     r12d,r8d
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,edx
> > >
> > > +        xor     r12d,r9d
> > >
> > > +        ror     r13d,5
> > >
> > > +        psrld   xmm6,11
> > >
> > > +        xor     r14d,r11d
> > >
> > > +        pxor    xmm4,xmm5
> > >
> > > +        and     r12d,edx
> > >
> > > +        xor     r13d,edx
> > >
> > > +        pslld   xmm5,11
> > >
> > > +        add     r10d,DWORD[36+rsp]
> > >
> > > +        mov     edi,r11d
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +        xor     r12d,r9d
> > >
> > > +        ror     r14d,11
> > >
> > > +        movdqa  xmm6,xmm7
> > >
> > > +        xor     edi,eax
> > >
> > > +        add     r10d,r12d
> > >
> > > +        pxor    xmm4,xmm5
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     r15d,edi
> > >
> > > +        xor     r14d,r11d
> > >
> > > +        psrld   xmm7,10
> > >
> > > +        add     r10d,r13d
> > >
> > > +        xor     r15d,eax
> > >
> > > +        paddd   xmm2,xmm4
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     ecx,r10d
> > >
> > > +        psrlq   xmm6,17
> > >
> > > +        add     r10d,r15d
> > >
> > > +        mov     r13d,ecx
> > >
> > > +        add     r14d,r10d
> > >
> > > +        pxor    xmm7,xmm6
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r10d,r14d
> > >
> > > +        mov     r12d,edx
> > >
> > > +        ror     r14d,9
> > >
> > > +        psrlq   xmm6,2
> > >
> > > +        xor     r13d,ecx
> > >
> > > +        xor     r12d,r8d
> > >
> > > +        pxor    xmm7,xmm6
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,r10d
> > >
> > > +        and     r12d,ecx
> > >
> > > +        pshufd  xmm7,xmm7,128
> > >
> > > +        xor     r13d,ecx
> > >
> > > +        add     r9d,DWORD[40+rsp]
> > >
> > > +        mov     r15d,r10d
> > >
> > > +        psrldq  xmm7,8
> > >
> > > +        xor     r12d,r8d
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r15d,r11d
> > >
> > > +        add     r9d,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        paddd   xmm2,xmm7
> > >
> > > +        and     edi,r15d
> > >
> > > +        xor     r14d,r10d
> > >
> > > +        add     r9d,r13d
> > >
> > > +        pshufd  xmm7,xmm2,80
> > >
> > > +        xor     edi,r11d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     ebx,r9d
> > >
> > > +        movdqa  xmm6,xmm7
> > >
> > > +        add     r9d,edi
> > >
> > > +        mov     r13d,ebx
> > >
> > > +        psrld   xmm7,10
> > >
> > > +        add     r14d,r9d
> > >
> > > +        ror     r13d,14
> > >
> > > +        psrlq   xmm6,17
> > >
> > > +        mov     r9d,r14d
> > >
> > > +        mov     r12d,ecx
> > >
> > > +        pxor    xmm7,xmm6
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,ebx
> > >
> > > +        xor     r12d,edx
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,r9d
> > >
> > > +        psrlq   xmm6,2
> > >
> > > +        and     r12d,ebx
> > >
> > > +        xor     r13d,ebx
> > >
> > > +        add     r8d,DWORD[44+rsp]
> > >
> > > +        pxor    xmm7,xmm6
> > >
> > > +        mov     edi,r9d
> > >
> > > +        xor     r12d,edx
> > >
> > > +        ror     r14d,11
> > >
> > > +        pshufd  xmm7,xmm7,8
> > >
> > > +        xor     edi,r10d
> > >
> > > +        add     r8d,r12d
> > >
> > > +        movdqa  xmm6,XMMWORD[64+rbp]
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     r15d,edi
> > >
> > > +        pslldq  xmm7,8
> > >
> > > +        xor     r14d,r9d
> > >
> > > +        add     r8d,r13d
> > >
> > > +        xor     r15d,r10d
> > >
> > > +        paddd   xmm2,xmm7
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     eax,r8d
> > >
> > > +        add     r8d,r15d
> > >
> > > +        paddd   xmm6,xmm2
> > >
> > > +        mov     r13d,eax
> > >
> > > +        add     r14d,r8d
> > >
> > > +        movdqa  XMMWORD[32+rsp],xmm6
> > >
> > > +        ror     r13d,14
> > >
> > > +        movdqa  xmm4,xmm0
> > >
> > > +        mov     r8d,r14d
> > >
> > > +        mov     r12d,ebx
> > >
> > > +        movdqa  xmm7,xmm2
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,eax
> > >
> > > +        xor     r12d,ecx
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,r8d
> > >
> > > +DB      102,15,58,15,227,4
> > >
> > > +        and     r12d,eax
> > >
> > > +        xor     r13d,eax
> > >
> > > +DB      102,15,58,15,249,4
> > >
> > > +        add     edx,DWORD[48+rsp]
> > >
> > > +        mov     r15d,r8d
> > >
> > > +        xor     r12d,ecx
> > >
> > > +        ror     r14d,11
> > >
> > > +        movdqa  xmm5,xmm4
> > >
> > > +        xor     r15d,r9d
> > >
> > > +        add     edx,r12d
> > >
> > > +        movdqa  xmm6,xmm4
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     edi,r15d
> > >
> > > +        psrld   xmm4,3
> > >
> > > +        xor     r14d,r8d
> > >
> > > +        add     edx,r13d
> > >
> > > +        xor     edi,r9d
> > >
> > > +        paddd   xmm3,xmm7
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r11d,edx
> > >
> > > +        psrld   xmm6,7
> > >
> > > +        add     edx,edi
> > >
> > > +        mov     r13d,r11d
> > >
> > > +        pshufd  xmm7,xmm2,250
> > >
> > > +        add     r14d,edx
> > >
> > > +        ror     r13d,14
> > >
> > > +        pslld   xmm5,14
> > >
> > > +        mov     edx,r14d
> > >
> > > +        mov     r12d,eax
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,r11d
> > >
> > > +        xor     r12d,ebx
> > >
> > > +        ror     r13d,5
> > >
> > > +        psrld   xmm6,11
> > >
> > > +        xor     r14d,edx
> > >
> > > +        pxor    xmm4,xmm5
> > >
> > > +        and     r12d,r11d
> > >
> > > +        xor     r13d,r11d
> > >
> > > +        pslld   xmm5,11
> > >
> > > +        add     ecx,DWORD[52+rsp]
> > >
> > > +        mov     edi,edx
> > >
> > > +        pxor    xmm4,xmm6
> > >
> > > +        xor     r12d,ebx
> > >
> > > +        ror     r14d,11
> > >
> > > +        movdqa  xmm6,xmm7
> > >
> > > +        xor     edi,r8d
> > >
> > > +        add     ecx,r12d
> > >
> > > +        pxor    xmm4,xmm5
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     r15d,edi
> > >
> > > +        xor     r14d,edx
> > >
> > > +        psrld   xmm7,10
> > >
> > > +        add     ecx,r13d
> > >
> > > +        xor     r15d,r8d
> > >
> > > +        paddd   xmm3,xmm4
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r10d,ecx
> > >
> > > +        psrlq   xmm6,17
> > >
> > > +        add     ecx,r15d
> > >
> > > +        mov     r13d,r10d
> > >
> > > +        add     r14d,ecx
> > >
> > > +        pxor    xmm7,xmm6
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     ecx,r14d
> > >
> > > +        mov     r12d,r11d
> > >
> > > +        ror     r14d,9
> > >
> > > +        psrlq   xmm6,2
> > >
> > > +        xor     r13d,r10d
> > >
> > > +        xor     r12d,eax
> > >
> > > +        pxor    xmm7,xmm6
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,ecx
> > >
> > > +        and     r12d,r10d
> > >
> > > +        pshufd  xmm7,xmm7,128
> > >
> > > +        xor     r13d,r10d
> > >
> > > +        add     ebx,DWORD[56+rsp]
> > >
> > > +        mov     r15d,ecx
> > >
> > > +        psrldq  xmm7,8
> > >
> > > +        xor     r12d,eax
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r15d,edx
> > >
> > > +        add     ebx,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        paddd   xmm3,xmm7
> > >
> > > +        and     edi,r15d
> > >
> > > +        xor     r14d,ecx
> > >
> > > +        add     ebx,r13d
> > >
> > > +        pshufd  xmm7,xmm3,80
> > >
> > > +        xor     edi,edx
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r9d,ebx
> > >
> > > +        movdqa  xmm6,xmm7
> > >
> > > +        add     ebx,edi
> > >
> > > +        mov     r13d,r9d
> > >
> > > +        psrld   xmm7,10
> > >
> > > +        add     r14d,ebx
> > >
> > > +        ror     r13d,14
> > >
> > > +        psrlq   xmm6,17
> > >
> > > +        mov     ebx,r14d
> > >
> > > +        mov     r12d,r10d
> > >
> > > +        pxor    xmm7,xmm6
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,r9d
> > >
> > > +        xor     r12d,r11d
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,ebx
> > >
> > > +        psrlq   xmm6,2
> > >
> > > +        and     r12d,r9d
> > >
> > > +        xor     r13d,r9d
> > >
> > > +        add     eax,DWORD[60+rsp]
> > >
> > > +        pxor    xmm7,xmm6
> > >
> > > +        mov     edi,ebx
> > >
> > > +        xor     r12d,r11d
> > >
> > > +        ror     r14d,11
> > >
> > > +        pshufd  xmm7,xmm7,8
> > >
> > > +        xor     edi,ecx
> > >
> > > +        add     eax,r12d
> > >
> > > +        movdqa  xmm6,XMMWORD[96+rbp]
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     r15d,edi
> > >
> > > +        pslldq  xmm7,8
> > >
> > > +        xor     r14d,ebx
> > >
> > > +        add     eax,r13d
> > >
> > > +        xor     r15d,ecx
> > >
> > > +        paddd   xmm3,xmm7
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r8d,eax
> > >
> > > +        add     eax,r15d
> > >
> > > +        paddd   xmm6,xmm3
> > >
> > > +        mov     r13d,r8d
> > >
> > > +        add     r14d,eax
> > >
> > > +        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
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,r8d
> > >
> > > +        xor     r12d,r10d
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,eax
> > >
> > > +        and     r12d,r8d
> > >
> > > +        xor     r13d,r8d
> > >
> > > +        add     r11d,DWORD[rsp]
> > >
> > > +        mov     r15d,eax
> > >
> > > +        xor     r12d,r10d
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r15d,ebx
> > >
> > > +        add     r11d,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     edi,r15d
> > >
> > > +        xor     r14d,eax
> > >
> > > +        add     r11d,r13d
> > >
> > > +        xor     edi,ebx
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     edx,r11d
> > >
> > > +        add     r11d,edi
> > >
> > > +        mov     r13d,edx
> > >
> > > +        add     r14d,r11d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r11d,r14d
> > >
> > > +        mov     r12d,r8d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,edx
> > >
> > > +        xor     r12d,r9d
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,r11d
> > >
> > > +        and     r12d,edx
> > >
> > > +        xor     r13d,edx
> > >
> > > +        add     r10d,DWORD[4+rsp]
> > >
> > > +        mov     edi,r11d
> > >
> > > +        xor     r12d,r9d
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     edi,eax
> > >
> > > +        add     r10d,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     r15d,edi
> > >
> > > +        xor     r14d,r11d
> > >
> > > +        add     r10d,r13d
> > >
> > > +        xor     r15d,eax
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     ecx,r10d
> > >
> > > +        add     r10d,r15d
> > >
> > > +        mov     r13d,ecx
> > >
> > > +        add     r14d,r10d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r10d,r14d
> > >
> > > +        mov     r12d,edx
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,ecx
> > >
> > > +        xor     r12d,r8d
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,r10d
> > >
> > > +        and     r12d,ecx
> > >
> > > +        xor     r13d,ecx
> > >
> > > +        add     r9d,DWORD[8+rsp]
> > >
> > > +        mov     r15d,r10d
> > >
> > > +        xor     r12d,r8d
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r15d,r11d
> > >
> > > +        add     r9d,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     edi,r15d
> > >
> > > +        xor     r14d,r10d
> > >
> > > +        add     r9d,r13d
> > >
> > > +        xor     edi,r11d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     ebx,r9d
> > >
> > > +        add     r9d,edi
> > >
> > > +        mov     r13d,ebx
> > >
> > > +        add     r14d,r9d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r9d,r14d
> > >
> > > +        mov     r12d,ecx
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,ebx
> > >
> > > +        xor     r12d,edx
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,r9d
> > >
> > > +        and     r12d,ebx
> > >
> > > +        xor     r13d,ebx
> > >
> > > +        add     r8d,DWORD[12+rsp]
> > >
> > > +        mov     edi,r9d
> > >
> > > +        xor     r12d,edx
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     edi,r10d
> > >
> > > +        add     r8d,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     r15d,edi
> > >
> > > +        xor     r14d,r9d
> > >
> > > +        add     r8d,r13d
> > >
> > > +        xor     r15d,r10d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     eax,r8d
> > >
> > > +        add     r8d,r15d
> > >
> > > +        mov     r13d,eax
> > >
> > > +        add     r14d,r8d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r8d,r14d
> > >
> > > +        mov     r12d,ebx
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,eax
> > >
> > > +        xor     r12d,ecx
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,r8d
> > >
> > > +        and     r12d,eax
> > >
> > > +        xor     r13d,eax
> > >
> > > +        add     edx,DWORD[16+rsp]
> > >
> > > +        mov     r15d,r8d
> > >
> > > +        xor     r12d,ecx
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r15d,r9d
> > >
> > > +        add     edx,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     edi,r15d
> > >
> > > +        xor     r14d,r8d
> > >
> > > +        add     edx,r13d
> > >
> > > +        xor     edi,r9d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r11d,edx
> > >
> > > +        add     edx,edi
> > >
> > > +        mov     r13d,r11d
> > >
> > > +        add     r14d,edx
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     edx,r14d
> > >
> > > +        mov     r12d,eax
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,r11d
> > >
> > > +        xor     r12d,ebx
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,edx
> > >
> > > +        and     r12d,r11d
> > >
> > > +        xor     r13d,r11d
> > >
> > > +        add     ecx,DWORD[20+rsp]
> > >
> > > +        mov     edi,edx
> > >
> > > +        xor     r12d,ebx
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     edi,r8d
> > >
> > > +        add     ecx,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     r15d,edi
> > >
> > > +        xor     r14d,edx
> > >
> > > +        add     ecx,r13d
> > >
> > > +        xor     r15d,r8d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r10d,ecx
> > >
> > > +        add     ecx,r15d
> > >
> > > +        mov     r13d,r10d
> > >
> > > +        add     r14d,ecx
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     ecx,r14d
> > >
> > > +        mov     r12d,r11d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,r10d
> > >
> > > +        xor     r12d,eax
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,ecx
> > >
> > > +        and     r12d,r10d
> > >
> > > +        xor     r13d,r10d
> > >
> > > +        add     ebx,DWORD[24+rsp]
> > >
> > > +        mov     r15d,ecx
> > >
> > > +        xor     r12d,eax
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r15d,edx
> > >
> > > +        add     ebx,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     edi,r15d
> > >
> > > +        xor     r14d,ecx
> > >
> > > +        add     ebx,r13d
> > >
> > > +        xor     edi,edx
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r9d,ebx
> > >
> > > +        add     ebx,edi
> > >
> > > +        mov     r13d,r9d
> > >
> > > +        add     r14d,ebx
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     ebx,r14d
> > >
> > > +        mov     r12d,r10d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,r9d
> > >
> > > +        xor     r12d,r11d
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,ebx
> > >
> > > +        and     r12d,r9d
> > >
> > > +        xor     r13d,r9d
> > >
> > > +        add     eax,DWORD[28+rsp]
> > >
> > > +        mov     edi,ebx
> > >
> > > +        xor     r12d,r11d
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     edi,ecx
> > >
> > > +        add     eax,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     r15d,edi
> > >
> > > +        xor     r14d,ebx
> > >
> > > +        add     eax,r13d
> > >
> > > +        xor     r15d,ecx
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r8d,eax
> > >
> > > +        add     eax,r15d
> > >
> > > +        mov     r13d,r8d
> > >
> > > +        add     r14d,eax
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     eax,r14d
> > >
> > > +        mov     r12d,r9d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,r8d
> > >
> > > +        xor     r12d,r10d
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,eax
> > >
> > > +        and     r12d,r8d
> > >
> > > +        xor     r13d,r8d
> > >
> > > +        add     r11d,DWORD[32+rsp]
> > >
> > > +        mov     r15d,eax
> > >
> > > +        xor     r12d,r10d
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r15d,ebx
> > >
> > > +        add     r11d,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     edi,r15d
> > >
> > > +        xor     r14d,eax
> > >
> > > +        add     r11d,r13d
> > >
> > > +        xor     edi,ebx
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     edx,r11d
> > >
> > > +        add     r11d,edi
> > >
> > > +        mov     r13d,edx
> > >
> > > +        add     r14d,r11d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r11d,r14d
> > >
> > > +        mov     r12d,r8d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,edx
> > >
> > > +        xor     r12d,r9d
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,r11d
> > >
> > > +        and     r12d,edx
> > >
> > > +        xor     r13d,edx
> > >
> > > +        add     r10d,DWORD[36+rsp]
> > >
> > > +        mov     edi,r11d
> > >
> > > +        xor     r12d,r9d
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     edi,eax
> > >
> > > +        add     r10d,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     r15d,edi
> > >
> > > +        xor     r14d,r11d
> > >
> > > +        add     r10d,r13d
> > >
> > > +        xor     r15d,eax
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     ecx,r10d
> > >
> > > +        add     r10d,r15d
> > >
> > > +        mov     r13d,ecx
> > >
> > > +        add     r14d,r10d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r10d,r14d
> > >
> > > +        mov     r12d,edx
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,ecx
> > >
> > > +        xor     r12d,r8d
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,r10d
> > >
> > > +        and     r12d,ecx
> > >
> > > +        xor     r13d,ecx
> > >
> > > +        add     r9d,DWORD[40+rsp]
> > >
> > > +        mov     r15d,r10d
> > >
> > > +        xor     r12d,r8d
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r15d,r11d
> > >
> > > +        add     r9d,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     edi,r15d
> > >
> > > +        xor     r14d,r10d
> > >
> > > +        add     r9d,r13d
> > >
> > > +        xor     edi,r11d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     ebx,r9d
> > >
> > > +        add     r9d,edi
> > >
> > > +        mov     r13d,ebx
> > >
> > > +        add     r14d,r9d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r9d,r14d
> > >
> > > +        mov     r12d,ecx
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,ebx
> > >
> > > +        xor     r12d,edx
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,r9d
> > >
> > > +        and     r12d,ebx
> > >
> > > +        xor     r13d,ebx
> > >
> > > +        add     r8d,DWORD[44+rsp]
> > >
> > > +        mov     edi,r9d
> > >
> > > +        xor     r12d,edx
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     edi,r10d
> > >
> > > +        add     r8d,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     r15d,edi
> > >
> > > +        xor     r14d,r9d
> > >
> > > +        add     r8d,r13d
> > >
> > > +        xor     r15d,r10d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     eax,r8d
> > >
> > > +        add     r8d,r15d
> > >
> > > +        mov     r13d,eax
> > >
> > > +        add     r14d,r8d
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     r8d,r14d
> > >
> > > +        mov     r12d,ebx
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,eax
> > >
> > > +        xor     r12d,ecx
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,r8d
> > >
> > > +        and     r12d,eax
> > >
> > > +        xor     r13d,eax
> > >
> > > +        add     edx,DWORD[48+rsp]
> > >
> > > +        mov     r15d,r8d
> > >
> > > +        xor     r12d,ecx
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r15d,r9d
> > >
> > > +        add     edx,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     edi,r15d
> > >
> > > +        xor     r14d,r8d
> > >
> > > +        add     edx,r13d
> > >
> > > +        xor     edi,r9d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r11d,edx
> > >
> > > +        add     edx,edi
> > >
> > > +        mov     r13d,r11d
> > >
> > > +        add     r14d,edx
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     edx,r14d
> > >
> > > +        mov     r12d,eax
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,r11d
> > >
> > > +        xor     r12d,ebx
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,edx
> > >
> > > +        and     r12d,r11d
> > >
> > > +        xor     r13d,r11d
> > >
> > > +        add     ecx,DWORD[52+rsp]
> > >
> > > +        mov     edi,edx
> > >
> > > +        xor     r12d,ebx
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     edi,r8d
> > >
> > > +        add     ecx,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     r15d,edi
> > >
> > > +        xor     r14d,edx
> > >
> > > +        add     ecx,r13d
> > >
> > > +        xor     r15d,r8d
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r10d,ecx
> > >
> > > +        add     ecx,r15d
> > >
> > > +        mov     r13d,r10d
> > >
> > > +        add     r14d,ecx
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     ecx,r14d
> > >
> > > +        mov     r12d,r11d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,r10d
> > >
> > > +        xor     r12d,eax
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,ecx
> > >
> > > +        and     r12d,r10d
> > >
> > > +        xor     r13d,r10d
> > >
> > > +        add     ebx,DWORD[56+rsp]
> > >
> > > +        mov     r15d,ecx
> > >
> > > +        xor     r12d,eax
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     r15d,edx
> > >
> > > +        add     ebx,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     edi,r15d
> > >
> > > +        xor     r14d,ecx
> > >
> > > +        add     ebx,r13d
> > >
> > > +        xor     edi,edx
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r9d,ebx
> > >
> > > +        add     ebx,edi
> > >
> > > +        mov     r13d,r9d
> > >
> > > +        add     r14d,ebx
> > >
> > > +        ror     r13d,14
> > >
> > > +        mov     ebx,r14d
> > >
> > > +        mov     r12d,r10d
> > >
> > > +        ror     r14d,9
> > >
> > > +        xor     r13d,r9d
> > >
> > > +        xor     r12d,r11d
> > >
> > > +        ror     r13d,5
> > >
> > > +        xor     r14d,ebx
> > >
> > > +        and     r12d,r9d
> > >
> > > +        xor     r13d,r9d
> > >
> > > +        add     eax,DWORD[60+rsp]
> > >
> > > +        mov     edi,ebx
> > >
> > > +        xor     r12d,r11d
> > >
> > > +        ror     r14d,11
> > >
> > > +        xor     edi,ecx
> > >
> > > +        add     eax,r12d
> > >
> > > +        ror     r13d,6
> > >
> > > +        and     r15d,edi
> > >
> > > +        xor     r14d,ebx
> > >
> > > +        add     eax,r13d
> > >
> > > +        xor     r15d,ecx
> > >
> > > +        ror     r14d,2
> > >
> > > +        add     r8d,eax
> > >
> > > +        add     eax,r15d
> > >
> > > +        mov     r13d,r8d
> > >
> > > +        add     r14d,eax
> > >
> > > +        mov     rdi,QWORD[((64+0))+rsp]
> > >
> > > +        mov     eax,r14d
> > >
> > > +
> > >
> > > +        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[((64+16))+rsp]
> > >
> > > +
> > >
> > > +        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[88+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[((-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$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:
> > >
> > > +EXTERN  __imp_RtlVirtualUnwind
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +se_handler:
> > >
> > > +        push    rsi
> > >
> > > +        push    rdi
> > >
> > > +        push    rbx
> > >
> > > +        push    rbp
> > >
> > > +        push    r12
> > >
> > > +        push    r13
> > >
> > > +        push    r14
> > >
> > > +        push    r15
> > >
> > > +        pushfq
> > >
> > > +        sub     rsp,64
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[120+r8]
> > >
> > > +        mov     rbx,QWORD[248+r8]
> > >
> > > +
> > >
> > > +        mov     rsi,QWORD[8+r9]
> > >
> > > +        mov     r11,QWORD[56+r9]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$in_prologue
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[152+r8]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[4+r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jae     NEAR $L$in_prologue
> > >
> > > +        mov     rsi,rax
> > >
> > > +        mov     rax,QWORD[((64+24))+rax]
> > >
> > > +
> > >
> > > +        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,[$L$epilogue]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$in_prologue
> > >
> > > +
> > >
> > > +        lea     rsi,[((64+32))+rsi]
> > >
> > > +        lea     rdi,[512+r8]
> > >
> > > +        mov     ecx,8
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +$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[40+r9]
> > >
> > > +        mov     rsi,r8
> > >
> > > +        mov     ecx,154
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +        mov     rsi,r9
> > >
> > > +        xor     rcx,rcx
> > >
> > > +        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
> > >
> > > +        popfq
> > >
> > > +        pop     r15
> > >
> > > +        pop     r14
> > >
> > > +        pop     r13
> > >
> > > +        pop     r12
> > >
> > > +        pop     rbp
> > >
> > > +        pop     rbx
> > >
> > > +        pop     rdi
> > >
> > > +        pop     rsi
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +shaext_handler:
> > >
> > > +        push    rsi
> > >
> > > +        push    rdi
> > >
> > > +        push    rbx
> > >
> > > +        push    rbp
> > >
> > > +        push    r12
> > >
> > > +        push    r13
> > >
> > > +        push    r14
> > >
> > > +        push    r15
> > >
> > > +        pushfq
> > >
> > > +        sub     rsp,64
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[120+r8]
> > >
> > > +        mov     rbx,QWORD[248+r8]
> > >
> > > +
> > >
> > > +        lea     r10,[$L$prologue_shaext]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$in_prologue
> > >
> > > +
> > >
> > > +        lea     r10,[$L$epilogue_shaext]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jae     NEAR $L$in_prologue
> > >
> > > +
> > >
> > > +        lea     rsi,[((-8-80))+rax]
> > >
> > > +        lea     rdi,[512+r8]
> > >
> > > +        mov     ecx,10
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +        jmp     NEAR $L$in_prologue
> > >
> > > +
> > >
> > > +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_shaext
> wrt ..imagebase
> > >
> > > +        DD      $L$SEH_end_sha256_block_data_order_shaext wrt ..imagebase
> > >
> > > +        DD      $L$SEH_info_sha256_block_data_order_shaext 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_shaext:
> > >
> > > +DB      9,0,0,0
> > >
> > > +        DD      shaext_handler 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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-
> x86_64.nasm
> > > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
> > > new file mode 100644
> > > index 0000000000..c6397d4393
> > > --- /dev/null
> > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
> > > @@ -0,0 +1,1938 @@
> > > +; WARNING: do not edit!
> > >
> > > +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
> > >
> > > +;
> > >
> > > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.
> > >
> > > +;
> > >
> > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > >
> > > +; this file except in compliance with the License.  You can obtain a copy
> > >
> > > +; in the file LICENSE in the source distribution or at
> > >
> > > +; https://www.openssl.org/source/license.html
> > >
> > > +
> > >
> > > +default rel
> > >
> > > +%define XMMWORD
> > >
> > > +%define YMMWORD
> > >
> > > +%define ZMMWORD
> > >
> > > +section .text code align=64
> > >
> > > +
> > >
> > > +
> > >
> > > +EXTERN  OPENSSL_ia32cap_P
> > >
> > > +global  sha512_block_data_order
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +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:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +        mov     rsi,rdx
> > >
> > > +        mov     rdx,r8
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        mov     rax,rsp
> > >
> > > +
> > >
> > > +        push    rbx
> > >
> > > +
> > >
> > > +        push    rbp
> > >
> > > +
> > >
> > > +        push    r12
> > >
> > > +
> > >
> > > +        push    r13
> > >
> > > +
> > >
> > > +        push    r14
> > >
> > > +
> > >
> > > +        push    r15
> > >
> > > +
> > >
> > > +        shl     rdx,4
> > >
> > > +        sub     rsp,16*8+4*8
> > >
> > > +        lea     rdx,[rdx*8+rsi]
> > >
> > > +        and     rsp,-64
> > >
> > > +        mov     QWORD[((128+0))+rsp],rdi
> > >
> > > +        mov     QWORD[((128+8))+rsp],rsi
> > >
> > > +        mov     QWORD[((128+16))+rsp],rdx
> > >
> > > +        mov     QWORD[152+rsp],rax
> > >
> > > +
> > >
> > > +$L$prologue:
> > >
> > > +
> > >
> > > +        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:
> > >
> > > +        mov     rdi,rbx
> > >
> > > +        lea     rbp,[K512]
> > >
> > > +        xor     rdi,rcx
> > >
> > > +        mov     r12,QWORD[rsi]
> > >
> > > +        mov     r13,r8
> > >
> > > +        mov     r14,rax
> > >
> > > +        bswap   r12
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     r15,r9
> > >
> > > +
> > >
> > > +        xor     r13,r8
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     r15,r10
> > >
> > > +
> > >
> > > +        mov     QWORD[rsp],r12
> > >
> > > +        xor     r14,rax
> > >
> > > +        and     r15,r8
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,r11
> > >
> > > +        xor     r15,r10
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,r8
> > >
> > > +        add     r12,r15
> > >
> > > +
> > >
> > > +        mov     r15,rax
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,rax
> > >
> > > +
> > >
> > > +        xor     r15,rbx
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     r11,rbx
> > >
> > > +
> > >
> > > +        and     rdi,r15
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     r11,rdi
> > >
> > > +        add     rdx,r12
> > >
> > > +        add     r11,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[8+rbp]
> > >
> > > +        add     r11,r14
> > >
> > > +        mov     r12,QWORD[8+rsi]
> > >
> > > +        mov     r13,rdx
> > >
> > > +        mov     r14,r11
> > >
> > > +        bswap   r12
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     rdi,r8
> > >
> > > +
> > >
> > > +        xor     r13,rdx
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     rdi,r9
> > >
> > > +
> > >
> > > +        mov     QWORD[8+rsp],r12
> > >
> > > +        xor     r14,r11
> > >
> > > +        and     rdi,rdx
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,r10
> > >
> > > +        xor     rdi,r9
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,rdx
> > >
> > > +        add     r12,rdi
> > >
> > > +
> > >
> > > +        mov     rdi,r11
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,r11
> > >
> > > +
> > >
> > > +        xor     rdi,rax
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     r10,rax
> > >
> > > +
> > >
> > > +        and     r15,rdi
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     r10,r15
> > >
> > > +        add     rcx,r12
> > >
> > > +        add     r10,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[24+rbp]
> > >
> > > +        add     r10,r14
> > >
> > > +        mov     r12,QWORD[16+rsi]
> > >
> > > +        mov     r13,rcx
> > >
> > > +        mov     r14,r10
> > >
> > > +        bswap   r12
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     r15,rdx
> > >
> > > +
> > >
> > > +        xor     r13,rcx
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     r15,r8
> > >
> > > +
> > >
> > > +        mov     QWORD[16+rsp],r12
> > >
> > > +        xor     r14,r10
> > >
> > > +        and     r15,rcx
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,r9
> > >
> > > +        xor     r15,r8
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,rcx
> > >
> > > +        add     r12,r15
> > >
> > > +
> > >
> > > +        mov     r15,r10
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,r10
> > >
> > > +
> > >
> > > +        xor     r15,r11
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     r9,r11
> > >
> > > +
> > >
> > > +        and     rdi,r15
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     r9,rdi
> > >
> > > +        add     rbx,r12
> > >
> > > +        add     r9,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[8+rbp]
> > >
> > > +        add     r9,r14
> > >
> > > +        mov     r12,QWORD[24+rsi]
> > >
> > > +        mov     r13,rbx
> > >
> > > +        mov     r14,r9
> > >
> > > +        bswap   r12
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     rdi,rcx
> > >
> > > +
> > >
> > > +        xor     r13,rbx
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     rdi,rdx
> > >
> > > +
> > >
> > > +        mov     QWORD[24+rsp],r12
> > >
> > > +        xor     r14,r9
> > >
> > > +        and     rdi,rbx
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,r8
> > >
> > > +        xor     rdi,rdx
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,rbx
> > >
> > > +        add     r12,rdi
> > >
> > > +
> > >
> > > +        mov     rdi,r9
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,r9
> > >
> > > +
> > >
> > > +        xor     rdi,r10
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     r8,r10
> > >
> > > +
> > >
> > > +        and     r15,rdi
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     r8,r15
> > >
> > > +        add     rax,r12
> > >
> > > +        add     r8,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[24+rbp]
> > >
> > > +        add     r8,r14
> > >
> > > +        mov     r12,QWORD[32+rsi]
> > >
> > > +        mov     r13,rax
> > >
> > > +        mov     r14,r8
> > >
> > > +        bswap   r12
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     r15,rbx
> > >
> > > +
> > >
> > > +        xor     r13,rax
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     r15,rcx
> > >
> > > +
> > >
> > > +        mov     QWORD[32+rsp],r12
> > >
> > > +        xor     r14,r8
> > >
> > > +        and     r15,rax
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,rdx
> > >
> > > +        xor     r15,rcx
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,rax
> > >
> > > +        add     r12,r15
> > >
> > > +
> > >
> > > +        mov     r15,r8
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,r8
> > >
> > > +
> > >
> > > +        xor     r15,r9
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     rdx,r9
> > >
> > > +
> > >
> > > +        and     rdi,r15
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     rdx,rdi
> > >
> > > +        add     r11,r12
> > >
> > > +        add     rdx,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[8+rbp]
> > >
> > > +        add     rdx,r14
> > >
> > > +        mov     r12,QWORD[40+rsi]
> > >
> > > +        mov     r13,r11
> > >
> > > +        mov     r14,rdx
> > >
> > > +        bswap   r12
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     rdi,rax
> > >
> > > +
> > >
> > > +        xor     r13,r11
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     rdi,rbx
> > >
> > > +
> > >
> > > +        mov     QWORD[40+rsp],r12
> > >
> > > +        xor     r14,rdx
> > >
> > > +        and     rdi,r11
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,rcx
> > >
> > > +        xor     rdi,rbx
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,r11
> > >
> > > +        add     r12,rdi
> > >
> > > +
> > >
> > > +        mov     rdi,rdx
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,rdx
> > >
> > > +
> > >
> > > +        xor     rdi,r8
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     rcx,r8
> > >
> > > +
> > >
> > > +        and     r15,rdi
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     rcx,r15
> > >
> > > +        add     r10,r12
> > >
> > > +        add     rcx,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[24+rbp]
> > >
> > > +        add     rcx,r14
> > >
> > > +        mov     r12,QWORD[48+rsi]
> > >
> > > +        mov     r13,r10
> > >
> > > +        mov     r14,rcx
> > >
> > > +        bswap   r12
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     r15,r11
> > >
> > > +
> > >
> > > +        xor     r13,r10
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     r15,rax
> > >
> > > +
> > >
> > > +        mov     QWORD[48+rsp],r12
> > >
> > > +        xor     r14,rcx
> > >
> > > +        and     r15,r10
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,rbx
> > >
> > > +        xor     r15,rax
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,r10
> > >
> > > +        add     r12,r15
> > >
> > > +
> > >
> > > +        mov     r15,rcx
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,rcx
> > >
> > > +
> > >
> > > +        xor     r15,rdx
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     rbx,rdx
> > >
> > > +
> > >
> > > +        and     rdi,r15
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     rbx,rdi
> > >
> > > +        add     r9,r12
> > >
> > > +        add     rbx,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[8+rbp]
> > >
> > > +        add     rbx,r14
> > >
> > > +        mov     r12,QWORD[56+rsi]
> > >
> > > +        mov     r13,r9
> > >
> > > +        mov     r14,rbx
> > >
> > > +        bswap   r12
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     rdi,r10
> > >
> > > +
> > >
> > > +        xor     r13,r9
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     rdi,r11
> > >
> > > +
> > >
> > > +        mov     QWORD[56+rsp],r12
> > >
> > > +        xor     r14,rbx
> > >
> > > +        and     rdi,r9
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,rax
> > >
> > > +        xor     rdi,r11
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,r9
> > >
> > > +        add     r12,rdi
> > >
> > > +
> > >
> > > +        mov     rdi,rbx
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,rbx
> > >
> > > +
> > >
> > > +        xor     rdi,rcx
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     rax,rcx
> > >
> > > +
> > >
> > > +        and     r15,rdi
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     rax,r15
> > >
> > > +        add     r8,r12
> > >
> > > +        add     rax,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[24+rbp]
> > >
> > > +        add     rax,r14
> > >
> > > +        mov     r12,QWORD[64+rsi]
> > >
> > > +        mov     r13,r8
> > >
> > > +        mov     r14,rax
> > >
> > > +        bswap   r12
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     r15,r9
> > >
> > > +
> > >
> > > +        xor     r13,r8
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     r15,r10
> > >
> > > +
> > >
> > > +        mov     QWORD[64+rsp],r12
> > >
> > > +        xor     r14,rax
> > >
> > > +        and     r15,r8
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,r11
> > >
> > > +        xor     r15,r10
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,r8
> > >
> > > +        add     r12,r15
> > >
> > > +
> > >
> > > +        mov     r15,rax
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,rax
> > >
> > > +
> > >
> > > +        xor     r15,rbx
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     r11,rbx
> > >
> > > +
> > >
> > > +        and     rdi,r15
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     r11,rdi
> > >
> > > +        add     rdx,r12
> > >
> > > +        add     r11,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[8+rbp]
> > >
> > > +        add     r11,r14
> > >
> > > +        mov     r12,QWORD[72+rsi]
> > >
> > > +        mov     r13,rdx
> > >
> > > +        mov     r14,r11
> > >
> > > +        bswap   r12
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     rdi,r8
> > >
> > > +
> > >
> > > +        xor     r13,rdx
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     rdi,r9
> > >
> > > +
> > >
> > > +        mov     QWORD[72+rsp],r12
> > >
> > > +        xor     r14,r11
> > >
> > > +        and     rdi,rdx
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,r10
> > >
> > > +        xor     rdi,r9
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,rdx
> > >
> > > +        add     r12,rdi
> > >
> > > +
> > >
> > > +        mov     rdi,r11
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,r11
> > >
> > > +
> > >
> > > +        xor     rdi,rax
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     r10,rax
> > >
> > > +
> > >
> > > +        and     r15,rdi
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     r10,r15
> > >
> > > +        add     rcx,r12
> > >
> > > +        add     r10,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[24+rbp]
> > >
> > > +        add     r10,r14
> > >
> > > +        mov     r12,QWORD[80+rsi]
> > >
> > > +        mov     r13,rcx
> > >
> > > +        mov     r14,r10
> > >
> > > +        bswap   r12
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     r15,rdx
> > >
> > > +
> > >
> > > +        xor     r13,rcx
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     r15,r8
> > >
> > > +
> > >
> > > +        mov     QWORD[80+rsp],r12
> > >
> > > +        xor     r14,r10
> > >
> > > +        and     r15,rcx
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,r9
> > >
> > > +        xor     r15,r8
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,rcx
> > >
> > > +        add     r12,r15
> > >
> > > +
> > >
> > > +        mov     r15,r10
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,r10
> > >
> > > +
> > >
> > > +        xor     r15,r11
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     r9,r11
> > >
> > > +
> > >
> > > +        and     rdi,r15
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     r9,rdi
> > >
> > > +        add     rbx,r12
> > >
> > > +        add     r9,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[8+rbp]
> > >
> > > +        add     r9,r14
> > >
> > > +        mov     r12,QWORD[88+rsi]
> > >
> > > +        mov     r13,rbx
> > >
> > > +        mov     r14,r9
> > >
> > > +        bswap   r12
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     rdi,rcx
> > >
> > > +
> > >
> > > +        xor     r13,rbx
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     rdi,rdx
> > >
> > > +
> > >
> > > +        mov     QWORD[88+rsp],r12
> > >
> > > +        xor     r14,r9
> > >
> > > +        and     rdi,rbx
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,r8
> > >
> > > +        xor     rdi,rdx
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,rbx
> > >
> > > +        add     r12,rdi
> > >
> > > +
> > >
> > > +        mov     rdi,r9
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,r9
> > >
> > > +
> > >
> > > +        xor     rdi,r10
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     r8,r10
> > >
> > > +
> > >
> > > +        and     r15,rdi
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     r8,r15
> > >
> > > +        add     rax,r12
> > >
> > > +        add     r8,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[24+rbp]
> > >
> > > +        add     r8,r14
> > >
> > > +        mov     r12,QWORD[96+rsi]
> > >
> > > +        mov     r13,rax
> > >
> > > +        mov     r14,r8
> > >
> > > +        bswap   r12
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     r15,rbx
> > >
> > > +
> > >
> > > +        xor     r13,rax
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     r15,rcx
> > >
> > > +
> > >
> > > +        mov     QWORD[96+rsp],r12
> > >
> > > +        xor     r14,r8
> > >
> > > +        and     r15,rax
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,rdx
> > >
> > > +        xor     r15,rcx
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,rax
> > >
> > > +        add     r12,r15
> > >
> > > +
> > >
> > > +        mov     r15,r8
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,r8
> > >
> > > +
> > >
> > > +        xor     r15,r9
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     rdx,r9
> > >
> > > +
> > >
> > > +        and     rdi,r15
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     rdx,rdi
> > >
> > > +        add     r11,r12
> > >
> > > +        add     rdx,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[8+rbp]
> > >
> > > +        add     rdx,r14
> > >
> > > +        mov     r12,QWORD[104+rsi]
> > >
> > > +        mov     r13,r11
> > >
> > > +        mov     r14,rdx
> > >
> > > +        bswap   r12
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     rdi,rax
> > >
> > > +
> > >
> > > +        xor     r13,r11
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     rdi,rbx
> > >
> > > +
> > >
> > > +        mov     QWORD[104+rsp],r12
> > >
> > > +        xor     r14,rdx
> > >
> > > +        and     rdi,r11
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,rcx
> > >
> > > +        xor     rdi,rbx
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,r11
> > >
> > > +        add     r12,rdi
> > >
> > > +
> > >
> > > +        mov     rdi,rdx
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,rdx
> > >
> > > +
> > >
> > > +        xor     rdi,r8
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     rcx,r8
> > >
> > > +
> > >
> > > +        and     r15,rdi
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     rcx,r15
> > >
> > > +        add     r10,r12
> > >
> > > +        add     rcx,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[24+rbp]
> > >
> > > +        add     rcx,r14
> > >
> > > +        mov     r12,QWORD[112+rsi]
> > >
> > > +        mov     r13,r10
> > >
> > > +        mov     r14,rcx
> > >
> > > +        bswap   r12
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     r15,r11
> > >
> > > +
> > >
> > > +        xor     r13,r10
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     r15,rax
> > >
> > > +
> > >
> > > +        mov     QWORD[112+rsp],r12
> > >
> > > +        xor     r14,rcx
> > >
> > > +        and     r15,r10
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,rbx
> > >
> > > +        xor     r15,rax
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,r10
> > >
> > > +        add     r12,r15
> > >
> > > +
> > >
> > > +        mov     r15,rcx
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,rcx
> > >
> > > +
> > >
> > > +        xor     r15,rdx
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     rbx,rdx
> > >
> > > +
> > >
> > > +        and     rdi,r15
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     rbx,rdi
> > >
> > > +        add     r9,r12
> > >
> > > +        add     rbx,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[8+rbp]
> > >
> > > +        add     rbx,r14
> > >
> > > +        mov     r12,QWORD[120+rsi]
> > >
> > > +        mov     r13,r9
> > >
> > > +        mov     r14,rbx
> > >
> > > +        bswap   r12
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     rdi,r10
> > >
> > > +
> > >
> > > +        xor     r13,r9
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     rdi,r11
> > >
> > > +
> > >
> > > +        mov     QWORD[120+rsp],r12
> > >
> > > +        xor     r14,rbx
> > >
> > > +        and     rdi,r9
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,rax
> > >
> > > +        xor     rdi,r11
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,r9
> > >
> > > +        add     r12,rdi
> > >
> > > +
> > >
> > > +        mov     rdi,rbx
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,rbx
> > >
> > > +
> > >
> > > +        xor     rdi,rcx
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     rax,rcx
> > >
> > > +
> > >
> > > +        and     r15,rdi
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     rax,r15
> > >
> > > +        add     r8,r12
> > >
> > > +        add     rax,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[24+rbp]
> > >
> > > +        jmp     NEAR $L$rounds_16_xx
> > >
> > > +ALIGN   16
> > >
> > > +$L$rounds_16_xx:
> > >
> > > +        mov     r13,QWORD[8+rsp]
> > >
> > > +        mov     r15,QWORD[112+rsp]
> > >
> > > +
> > >
> > > +        mov     r12,r13
> > >
> > > +        ror     r13,7
> > >
> > > +        add     rax,r14
> > >
> > > +        mov     r14,r15
> > >
> > > +        ror     r15,42
> > >
> > > +
> > >
> > > +        xor     r13,r12
> > >
> > > +        shr     r12,7
> > >
> > > +        ror     r13,1
> > >
> > > +        xor     r15,r14
> > >
> > > +        shr     r14,6
> > >
> > > +
> > >
> > > +        ror     r15,19
> > >
> > > +        xor     r12,r13
> > >
> > > +        xor     r15,r14
> > >
> > > +        add     r12,QWORD[72+rsp]
> > >
> > > +
> > >
> > > +        add     r12,QWORD[rsp]
> > >
> > > +        mov     r13,r8
> > >
> > > +        add     r12,r15
> > >
> > > +        mov     r14,rax
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     r15,r9
> > >
> > > +
> > >
> > > +        xor     r13,r8
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     r15,r10
> > >
> > > +
> > >
> > > +        mov     QWORD[rsp],r12
> > >
> > > +        xor     r14,rax
> > >
> > > +        and     r15,r8
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,r11
> > >
> > > +        xor     r15,r10
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,r8
> > >
> > > +        add     r12,r15
> > >
> > > +
> > >
> > > +        mov     r15,rax
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,rax
> > >
> > > +
> > >
> > > +        xor     r15,rbx
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     r11,rbx
> > >
> > > +
> > >
> > > +        and     rdi,r15
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     r11,rdi
> > >
> > > +        add     rdx,r12
> > >
> > > +        add     r11,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[8+rbp]
> > >
> > > +        mov     r13,QWORD[16+rsp]
> > >
> > > +        mov     rdi,QWORD[120+rsp]
> > >
> > > +
> > >
> > > +        mov     r12,r13
> > >
> > > +        ror     r13,7
> > >
> > > +        add     r11,r14
> > >
> > > +        mov     r14,rdi
> > >
> > > +        ror     rdi,42
> > >
> > > +
> > >
> > > +        xor     r13,r12
> > >
> > > +        shr     r12,7
> > >
> > > +        ror     r13,1
> > >
> > > +        xor     rdi,r14
> > >
> > > +        shr     r14,6
> > >
> > > +
> > >
> > > +        ror     rdi,19
> > >
> > > +        xor     r12,r13
> > >
> > > +        xor     rdi,r14
> > >
> > > +        add     r12,QWORD[80+rsp]
> > >
> > > +
> > >
> > > +        add     r12,QWORD[8+rsp]
> > >
> > > +        mov     r13,rdx
> > >
> > > +        add     r12,rdi
> > >
> > > +        mov     r14,r11
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     rdi,r8
> > >
> > > +
> > >
> > > +        xor     r13,rdx
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     rdi,r9
> > >
> > > +
> > >
> > > +        mov     QWORD[8+rsp],r12
> > >
> > > +        xor     r14,r11
> > >
> > > +        and     rdi,rdx
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,r10
> > >
> > > +        xor     rdi,r9
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,rdx
> > >
> > > +        add     r12,rdi
> > >
> > > +
> > >
> > > +        mov     rdi,r11
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,r11
> > >
> > > +
> > >
> > > +        xor     rdi,rax
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     r10,rax
> > >
> > > +
> > >
> > > +        and     r15,rdi
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     r10,r15
> > >
> > > +        add     rcx,r12
> > >
> > > +        add     r10,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[24+rbp]
> > >
> > > +        mov     r13,QWORD[24+rsp]
> > >
> > > +        mov     r15,QWORD[rsp]
> > >
> > > +
> > >
> > > +        mov     r12,r13
> > >
> > > +        ror     r13,7
> > >
> > > +        add     r10,r14
> > >
> > > +        mov     r14,r15
> > >
> > > +        ror     r15,42
> > >
> > > +
> > >
> > > +        xor     r13,r12
> > >
> > > +        shr     r12,7
> > >
> > > +        ror     r13,1
> > >
> > > +        xor     r15,r14
> > >
> > > +        shr     r14,6
> > >
> > > +
> > >
> > > +        ror     r15,19
> > >
> > > +        xor     r12,r13
> > >
> > > +        xor     r15,r14
> > >
> > > +        add     r12,QWORD[88+rsp]
> > >
> > > +
> > >
> > > +        add     r12,QWORD[16+rsp]
> > >
> > > +        mov     r13,rcx
> > >
> > > +        add     r12,r15
> > >
> > > +        mov     r14,r10
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     r15,rdx
> > >
> > > +
> > >
> > > +        xor     r13,rcx
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     r15,r8
> > >
> > > +
> > >
> > > +        mov     QWORD[16+rsp],r12
> > >
> > > +        xor     r14,r10
> > >
> > > +        and     r15,rcx
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,r9
> > >
> > > +        xor     r15,r8
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,rcx
> > >
> > > +        add     r12,r15
> > >
> > > +
> > >
> > > +        mov     r15,r10
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,r10
> > >
> > > +
> > >
> > > +        xor     r15,r11
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     r9,r11
> > >
> > > +
> > >
> > > +        and     rdi,r15
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     r9,rdi
> > >
> > > +        add     rbx,r12
> > >
> > > +        add     r9,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[8+rbp]
> > >
> > > +        mov     r13,QWORD[32+rsp]
> > >
> > > +        mov     rdi,QWORD[8+rsp]
> > >
> > > +
> > >
> > > +        mov     r12,r13
> > >
> > > +        ror     r13,7
> > >
> > > +        add     r9,r14
> > >
> > > +        mov     r14,rdi
> > >
> > > +        ror     rdi,42
> > >
> > > +
> > >
> > > +        xor     r13,r12
> > >
> > > +        shr     r12,7
> > >
> > > +        ror     r13,1
> > >
> > > +        xor     rdi,r14
> > >
> > > +        shr     r14,6
> > >
> > > +
> > >
> > > +        ror     rdi,19
> > >
> > > +        xor     r12,r13
> > >
> > > +        xor     rdi,r14
> > >
> > > +        add     r12,QWORD[96+rsp]
> > >
> > > +
> > >
> > > +        add     r12,QWORD[24+rsp]
> > >
> > > +        mov     r13,rbx
> > >
> > > +        add     r12,rdi
> > >
> > > +        mov     r14,r9
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     rdi,rcx
> > >
> > > +
> > >
> > > +        xor     r13,rbx
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     rdi,rdx
> > >
> > > +
> > >
> > > +        mov     QWORD[24+rsp],r12
> > >
> > > +        xor     r14,r9
> > >
> > > +        and     rdi,rbx
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,r8
> > >
> > > +        xor     rdi,rdx
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,rbx
> > >
> > > +        add     r12,rdi
> > >
> > > +
> > >
> > > +        mov     rdi,r9
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,r9
> > >
> > > +
> > >
> > > +        xor     rdi,r10
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     r8,r10
> > >
> > > +
> > >
> > > +        and     r15,rdi
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     r8,r15
> > >
> > > +        add     rax,r12
> > >
> > > +        add     r8,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[24+rbp]
> > >
> > > +        mov     r13,QWORD[40+rsp]
> > >
> > > +        mov     r15,QWORD[16+rsp]
> > >
> > > +
> > >
> > > +        mov     r12,r13
> > >
> > > +        ror     r13,7
> > >
> > > +        add     r8,r14
> > >
> > > +        mov     r14,r15
> > >
> > > +        ror     r15,42
> > >
> > > +
> > >
> > > +        xor     r13,r12
> > >
> > > +        shr     r12,7
> > >
> > > +        ror     r13,1
> > >
> > > +        xor     r15,r14
> > >
> > > +        shr     r14,6
> > >
> > > +
> > >
> > > +        ror     r15,19
> > >
> > > +        xor     r12,r13
> > >
> > > +        xor     r15,r14
> > >
> > > +        add     r12,QWORD[104+rsp]
> > >
> > > +
> > >
> > > +        add     r12,QWORD[32+rsp]
> > >
> > > +        mov     r13,rax
> > >
> > > +        add     r12,r15
> > >
> > > +        mov     r14,r8
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     r15,rbx
> > >
> > > +
> > >
> > > +        xor     r13,rax
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     r15,rcx
> > >
> > > +
> > >
> > > +        mov     QWORD[32+rsp],r12
> > >
> > > +        xor     r14,r8
> > >
> > > +        and     r15,rax
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,rdx
> > >
> > > +        xor     r15,rcx
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,rax
> > >
> > > +        add     r12,r15
> > >
> > > +
> > >
> > > +        mov     r15,r8
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,r8
> > >
> > > +
> > >
> > > +        xor     r15,r9
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     rdx,r9
> > >
> > > +
> > >
> > > +        and     rdi,r15
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     rdx,rdi
> > >
> > > +        add     r11,r12
> > >
> > > +        add     rdx,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[8+rbp]
> > >
> > > +        mov     r13,QWORD[48+rsp]
> > >
> > > +        mov     rdi,QWORD[24+rsp]
> > >
> > > +
> > >
> > > +        mov     r12,r13
> > >
> > > +        ror     r13,7
> > >
> > > +        add     rdx,r14
> > >
> > > +        mov     r14,rdi
> > >
> > > +        ror     rdi,42
> > >
> > > +
> > >
> > > +        xor     r13,r12
> > >
> > > +        shr     r12,7
> > >
> > > +        ror     r13,1
> > >
> > > +        xor     rdi,r14
> > >
> > > +        shr     r14,6
> > >
> > > +
> > >
> > > +        ror     rdi,19
> > >
> > > +        xor     r12,r13
> > >
> > > +        xor     rdi,r14
> > >
> > > +        add     r12,QWORD[112+rsp]
> > >
> > > +
> > >
> > > +        add     r12,QWORD[40+rsp]
> > >
> > > +        mov     r13,r11
> > >
> > > +        add     r12,rdi
> > >
> > > +        mov     r14,rdx
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     rdi,rax
> > >
> > > +
> > >
> > > +        xor     r13,r11
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     rdi,rbx
> > >
> > > +
> > >
> > > +        mov     QWORD[40+rsp],r12
> > >
> > > +        xor     r14,rdx
> > >
> > > +        and     rdi,r11
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,rcx
> > >
> > > +        xor     rdi,rbx
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,r11
> > >
> > > +        add     r12,rdi
> > >
> > > +
> > >
> > > +        mov     rdi,rdx
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,rdx
> > >
> > > +
> > >
> > > +        xor     rdi,r8
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     rcx,r8
> > >
> > > +
> > >
> > > +        and     r15,rdi
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     rcx,r15
> > >
> > > +        add     r10,r12
> > >
> > > +        add     rcx,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[24+rbp]
> > >
> > > +        mov     r13,QWORD[56+rsp]
> > >
> > > +        mov     r15,QWORD[32+rsp]
> > >
> > > +
> > >
> > > +        mov     r12,r13
> > >
> > > +        ror     r13,7
> > >
> > > +        add     rcx,r14
> > >
> > > +        mov     r14,r15
> > >
> > > +        ror     r15,42
> > >
> > > +
> > >
> > > +        xor     r13,r12
> > >
> > > +        shr     r12,7
> > >
> > > +        ror     r13,1
> > >
> > > +        xor     r15,r14
> > >
> > > +        shr     r14,6
> > >
> > > +
> > >
> > > +        ror     r15,19
> > >
> > > +        xor     r12,r13
> > >
> > > +        xor     r15,r14
> > >
> > > +        add     r12,QWORD[120+rsp]
> > >
> > > +
> > >
> > > +        add     r12,QWORD[48+rsp]
> > >
> > > +        mov     r13,r10
> > >
> > > +        add     r12,r15
> > >
> > > +        mov     r14,rcx
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     r15,r11
> > >
> > > +
> > >
> > > +        xor     r13,r10
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     r15,rax
> > >
> > > +
> > >
> > > +        mov     QWORD[48+rsp],r12
> > >
> > > +        xor     r14,rcx
> > >
> > > +        and     r15,r10
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,rbx
> > >
> > > +        xor     r15,rax
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,r10
> > >
> > > +        add     r12,r15
> > >
> > > +
> > >
> > > +        mov     r15,rcx
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,rcx
> > >
> > > +
> > >
> > > +        xor     r15,rdx
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     rbx,rdx
> > >
> > > +
> > >
> > > +        and     rdi,r15
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     rbx,rdi
> > >
> > > +        add     r9,r12
> > >
> > > +        add     rbx,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[8+rbp]
> > >
> > > +        mov     r13,QWORD[64+rsp]
> > >
> > > +        mov     rdi,QWORD[40+rsp]
> > >
> > > +
> > >
> > > +        mov     r12,r13
> > >
> > > +        ror     r13,7
> > >
> > > +        add     rbx,r14
> > >
> > > +        mov     r14,rdi
> > >
> > > +        ror     rdi,42
> > >
> > > +
> > >
> > > +        xor     r13,r12
> > >
> > > +        shr     r12,7
> > >
> > > +        ror     r13,1
> > >
> > > +        xor     rdi,r14
> > >
> > > +        shr     r14,6
> > >
> > > +
> > >
> > > +        ror     rdi,19
> > >
> > > +        xor     r12,r13
> > >
> > > +        xor     rdi,r14
> > >
> > > +        add     r12,QWORD[rsp]
> > >
> > > +
> > >
> > > +        add     r12,QWORD[56+rsp]
> > >
> > > +        mov     r13,r9
> > >
> > > +        add     r12,rdi
> > >
> > > +        mov     r14,rbx
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     rdi,r10
> > >
> > > +
> > >
> > > +        xor     r13,r9
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     rdi,r11
> > >
> > > +
> > >
> > > +        mov     QWORD[56+rsp],r12
> > >
> > > +        xor     r14,rbx
> > >
> > > +        and     rdi,r9
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,rax
> > >
> > > +        xor     rdi,r11
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,r9
> > >
> > > +        add     r12,rdi
> > >
> > > +
> > >
> > > +        mov     rdi,rbx
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,rbx
> > >
> > > +
> > >
> > > +        xor     rdi,rcx
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     rax,rcx
> > >
> > > +
> > >
> > > +        and     r15,rdi
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     rax,r15
> > >
> > > +        add     r8,r12
> > >
> > > +        add     rax,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[24+rbp]
> > >
> > > +        mov     r13,QWORD[72+rsp]
> > >
> > > +        mov     r15,QWORD[48+rsp]
> > >
> > > +
> > >
> > > +        mov     r12,r13
> > >
> > > +        ror     r13,7
> > >
> > > +        add     rax,r14
> > >
> > > +        mov     r14,r15
> > >
> > > +        ror     r15,42
> > >
> > > +
> > >
> > > +        xor     r13,r12
> > >
> > > +        shr     r12,7
> > >
> > > +        ror     r13,1
> > >
> > > +        xor     r15,r14
> > >
> > > +        shr     r14,6
> > >
> > > +
> > >
> > > +        ror     r15,19
> > >
> > > +        xor     r12,r13
> > >
> > > +        xor     r15,r14
> > >
> > > +        add     r12,QWORD[8+rsp]
> > >
> > > +
> > >
> > > +        add     r12,QWORD[64+rsp]
> > >
> > > +        mov     r13,r8
> > >
> > > +        add     r12,r15
> > >
> > > +        mov     r14,rax
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     r15,r9
> > >
> > > +
> > >
> > > +        xor     r13,r8
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     r15,r10
> > >
> > > +
> > >
> > > +        mov     QWORD[64+rsp],r12
> > >
> > > +        xor     r14,rax
> > >
> > > +        and     r15,r8
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,r11
> > >
> > > +        xor     r15,r10
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,r8
> > >
> > > +        add     r12,r15
> > >
> > > +
> > >
> > > +        mov     r15,rax
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,rax
> > >
> > > +
> > >
> > > +        xor     r15,rbx
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     r11,rbx
> > >
> > > +
> > >
> > > +        and     rdi,r15
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     r11,rdi
> > >
> > > +        add     rdx,r12
> > >
> > > +        add     r11,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[8+rbp]
> > >
> > > +        mov     r13,QWORD[80+rsp]
> > >
> > > +        mov     rdi,QWORD[56+rsp]
> > >
> > > +
> > >
> > > +        mov     r12,r13
> > >
> > > +        ror     r13,7
> > >
> > > +        add     r11,r14
> > >
> > > +        mov     r14,rdi
> > >
> > > +        ror     rdi,42
> > >
> > > +
> > >
> > > +        xor     r13,r12
> > >
> > > +        shr     r12,7
> > >
> > > +        ror     r13,1
> > >
> > > +        xor     rdi,r14
> > >
> > > +        shr     r14,6
> > >
> > > +
> > >
> > > +        ror     rdi,19
> > >
> > > +        xor     r12,r13
> > >
> > > +        xor     rdi,r14
> > >
> > > +        add     r12,QWORD[16+rsp]
> > >
> > > +
> > >
> > > +        add     r12,QWORD[72+rsp]
> > >
> > > +        mov     r13,rdx
> > >
> > > +        add     r12,rdi
> > >
> > > +        mov     r14,r11
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     rdi,r8
> > >
> > > +
> > >
> > > +        xor     r13,rdx
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     rdi,r9
> > >
> > > +
> > >
> > > +        mov     QWORD[72+rsp],r12
> > >
> > > +        xor     r14,r11
> > >
> > > +        and     rdi,rdx
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,r10
> > >
> > > +        xor     rdi,r9
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,rdx
> > >
> > > +        add     r12,rdi
> > >
> > > +
> > >
> > > +        mov     rdi,r11
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,r11
> > >
> > > +
> > >
> > > +        xor     rdi,rax
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     r10,rax
> > >
> > > +
> > >
> > > +        and     r15,rdi
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     r10,r15
> > >
> > > +        add     rcx,r12
> > >
> > > +        add     r10,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[24+rbp]
> > >
> > > +        mov     r13,QWORD[88+rsp]
> > >
> > > +        mov     r15,QWORD[64+rsp]
> > >
> > > +
> > >
> > > +        mov     r12,r13
> > >
> > > +        ror     r13,7
> > >
> > > +        add     r10,r14
> > >
> > > +        mov     r14,r15
> > >
> > > +        ror     r15,42
> > >
> > > +
> > >
> > > +        xor     r13,r12
> > >
> > > +        shr     r12,7
> > >
> > > +        ror     r13,1
> > >
> > > +        xor     r15,r14
> > >
> > > +        shr     r14,6
> > >
> > > +
> > >
> > > +        ror     r15,19
> > >
> > > +        xor     r12,r13
> > >
> > > +        xor     r15,r14
> > >
> > > +        add     r12,QWORD[24+rsp]
> > >
> > > +
> > >
> > > +        add     r12,QWORD[80+rsp]
> > >
> > > +        mov     r13,rcx
> > >
> > > +        add     r12,r15
> > >
> > > +        mov     r14,r10
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     r15,rdx
> > >
> > > +
> > >
> > > +        xor     r13,rcx
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     r15,r8
> > >
> > > +
> > >
> > > +        mov     QWORD[80+rsp],r12
> > >
> > > +        xor     r14,r10
> > >
> > > +        and     r15,rcx
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,r9
> > >
> > > +        xor     r15,r8
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,rcx
> > >
> > > +        add     r12,r15
> > >
> > > +
> > >
> > > +        mov     r15,r10
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,r10
> > >
> > > +
> > >
> > > +        xor     r15,r11
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     r9,r11
> > >
> > > +
> > >
> > > +        and     rdi,r15
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     r9,rdi
> > >
> > > +        add     rbx,r12
> > >
> > > +        add     r9,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[8+rbp]
> > >
> > > +        mov     r13,QWORD[96+rsp]
> > >
> > > +        mov     rdi,QWORD[72+rsp]
> > >
> > > +
> > >
> > > +        mov     r12,r13
> > >
> > > +        ror     r13,7
> > >
> > > +        add     r9,r14
> > >
> > > +        mov     r14,rdi
> > >
> > > +        ror     rdi,42
> > >
> > > +
> > >
> > > +        xor     r13,r12
> > >
> > > +        shr     r12,7
> > >
> > > +        ror     r13,1
> > >
> > > +        xor     rdi,r14
> > >
> > > +        shr     r14,6
> > >
> > > +
> > >
> > > +        ror     rdi,19
> > >
> > > +        xor     r12,r13
> > >
> > > +        xor     rdi,r14
> > >
> > > +        add     r12,QWORD[32+rsp]
> > >
> > > +
> > >
> > > +        add     r12,QWORD[88+rsp]
> > >
> > > +        mov     r13,rbx
> > >
> > > +        add     r12,rdi
> > >
> > > +        mov     r14,r9
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     rdi,rcx
> > >
> > > +
> > >
> > > +        xor     r13,rbx
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     rdi,rdx
> > >
> > > +
> > >
> > > +        mov     QWORD[88+rsp],r12
> > >
> > > +        xor     r14,r9
> > >
> > > +        and     rdi,rbx
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,r8
> > >
> > > +        xor     rdi,rdx
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,rbx
> > >
> > > +        add     r12,rdi
> > >
> > > +
> > >
> > > +        mov     rdi,r9
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,r9
> > >
> > > +
> > >
> > > +        xor     rdi,r10
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     r8,r10
> > >
> > > +
> > >
> > > +        and     r15,rdi
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     r8,r15
> > >
> > > +        add     rax,r12
> > >
> > > +        add     r8,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[24+rbp]
> > >
> > > +        mov     r13,QWORD[104+rsp]
> > >
> > > +        mov     r15,QWORD[80+rsp]
> > >
> > > +
> > >
> > > +        mov     r12,r13
> > >
> > > +        ror     r13,7
> > >
> > > +        add     r8,r14
> > >
> > > +        mov     r14,r15
> > >
> > > +        ror     r15,42
> > >
> > > +
> > >
> > > +        xor     r13,r12
> > >
> > > +        shr     r12,7
> > >
> > > +        ror     r13,1
> > >
> > > +        xor     r15,r14
> > >
> > > +        shr     r14,6
> > >
> > > +
> > >
> > > +        ror     r15,19
> > >
> > > +        xor     r12,r13
> > >
> > > +        xor     r15,r14
> > >
> > > +        add     r12,QWORD[40+rsp]
> > >
> > > +
> > >
> > > +        add     r12,QWORD[96+rsp]
> > >
> > > +        mov     r13,rax
> > >
> > > +        add     r12,r15
> > >
> > > +        mov     r14,r8
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     r15,rbx
> > >
> > > +
> > >
> > > +        xor     r13,rax
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     r15,rcx
> > >
> > > +
> > >
> > > +        mov     QWORD[96+rsp],r12
> > >
> > > +        xor     r14,r8
> > >
> > > +        and     r15,rax
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,rdx
> > >
> > > +        xor     r15,rcx
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,rax
> > >
> > > +        add     r12,r15
> > >
> > > +
> > >
> > > +        mov     r15,r8
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,r8
> > >
> > > +
> > >
> > > +        xor     r15,r9
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     rdx,r9
> > >
> > > +
> > >
> > > +        and     rdi,r15
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     rdx,rdi
> > >
> > > +        add     r11,r12
> > >
> > > +        add     rdx,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[8+rbp]
> > >
> > > +        mov     r13,QWORD[112+rsp]
> > >
> > > +        mov     rdi,QWORD[88+rsp]
> > >
> > > +
> > >
> > > +        mov     r12,r13
> > >
> > > +        ror     r13,7
> > >
> > > +        add     rdx,r14
> > >
> > > +        mov     r14,rdi
> > >
> > > +        ror     rdi,42
> > >
> > > +
> > >
> > > +        xor     r13,r12
> > >
> > > +        shr     r12,7
> > >
> > > +        ror     r13,1
> > >
> > > +        xor     rdi,r14
> > >
> > > +        shr     r14,6
> > >
> > > +
> > >
> > > +        ror     rdi,19
> > >
> > > +        xor     r12,r13
> > >
> > > +        xor     rdi,r14
> > >
> > > +        add     r12,QWORD[48+rsp]
> > >
> > > +
> > >
> > > +        add     r12,QWORD[104+rsp]
> > >
> > > +        mov     r13,r11
> > >
> > > +        add     r12,rdi
> > >
> > > +        mov     r14,rdx
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     rdi,rax
> > >
> > > +
> > >
> > > +        xor     r13,r11
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     rdi,rbx
> > >
> > > +
> > >
> > > +        mov     QWORD[104+rsp],r12
> > >
> > > +        xor     r14,rdx
> > >
> > > +        and     rdi,r11
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,rcx
> > >
> > > +        xor     rdi,rbx
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,r11
> > >
> > > +        add     r12,rdi
> > >
> > > +
> > >
> > > +        mov     rdi,rdx
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,rdx
> > >
> > > +
> > >
> > > +        xor     rdi,r8
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     rcx,r8
> > >
> > > +
> > >
> > > +        and     r15,rdi
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     rcx,r15
> > >
> > > +        add     r10,r12
> > >
> > > +        add     rcx,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[24+rbp]
> > >
> > > +        mov     r13,QWORD[120+rsp]
> > >
> > > +        mov     r15,QWORD[96+rsp]
> > >
> > > +
> > >
> > > +        mov     r12,r13
> > >
> > > +        ror     r13,7
> > >
> > > +        add     rcx,r14
> > >
> > > +        mov     r14,r15
> > >
> > > +        ror     r15,42
> > >
> > > +
> > >
> > > +        xor     r13,r12
> > >
> > > +        shr     r12,7
> > >
> > > +        ror     r13,1
> > >
> > > +        xor     r15,r14
> > >
> > > +        shr     r14,6
> > >
> > > +
> > >
> > > +        ror     r15,19
> > >
> > > +        xor     r12,r13
> > >
> > > +        xor     r15,r14
> > >
> > > +        add     r12,QWORD[56+rsp]
> > >
> > > +
> > >
> > > +        add     r12,QWORD[112+rsp]
> > >
> > > +        mov     r13,r10
> > >
> > > +        add     r12,r15
> > >
> > > +        mov     r14,rcx
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     r15,r11
> > >
> > > +
> > >
> > > +        xor     r13,r10
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     r15,rax
> > >
> > > +
> > >
> > > +        mov     QWORD[112+rsp],r12
> > >
> > > +        xor     r14,rcx
> > >
> > > +        and     r15,r10
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,rbx
> > >
> > > +        xor     r15,rax
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,r10
> > >
> > > +        add     r12,r15
> > >
> > > +
> > >
> > > +        mov     r15,rcx
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,rcx
> > >
> > > +
> > >
> > > +        xor     r15,rdx
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     rbx,rdx
> > >
> > > +
> > >
> > > +        and     rdi,r15
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     rbx,rdi
> > >
> > > +        add     r9,r12
> > >
> > > +        add     rbx,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[8+rbp]
> > >
> > > +        mov     r13,QWORD[rsp]
> > >
> > > +        mov     rdi,QWORD[104+rsp]
> > >
> > > +
> > >
> > > +        mov     r12,r13
> > >
> > > +        ror     r13,7
> > >
> > > +        add     rbx,r14
> > >
> > > +        mov     r14,rdi
> > >
> > > +        ror     rdi,42
> > >
> > > +
> > >
> > > +        xor     r13,r12
> > >
> > > +        shr     r12,7
> > >
> > > +        ror     r13,1
> > >
> > > +        xor     rdi,r14
> > >
> > > +        shr     r14,6
> > >
> > > +
> > >
> > > +        ror     rdi,19
> > >
> > > +        xor     r12,r13
> > >
> > > +        xor     rdi,r14
> > >
> > > +        add     r12,QWORD[64+rsp]
> > >
> > > +
> > >
> > > +        add     r12,QWORD[120+rsp]
> > >
> > > +        mov     r13,r9
> > >
> > > +        add     r12,rdi
> > >
> > > +        mov     r14,rbx
> > >
> > > +        ror     r13,23
> > >
> > > +        mov     rdi,r10
> > >
> > > +
> > >
> > > +        xor     r13,r9
> > >
> > > +        ror     r14,5
> > >
> > > +        xor     rdi,r11
> > >
> > > +
> > >
> > > +        mov     QWORD[120+rsp],r12
> > >
> > > +        xor     r14,rbx
> > >
> > > +        and     rdi,r9
> > >
> > > +
> > >
> > > +        ror     r13,4
> > >
> > > +        add     r12,rax
> > >
> > > +        xor     rdi,r11
> > >
> > > +
> > >
> > > +        ror     r14,6
> > >
> > > +        xor     r13,r9
> > >
> > > +        add     r12,rdi
> > >
> > > +
> > >
> > > +        mov     rdi,rbx
> > >
> > > +        add     r12,QWORD[rbp]
> > >
> > > +        xor     r14,rbx
> > >
> > > +
> > >
> > > +        xor     rdi,rcx
> > >
> > > +        ror     r13,14
> > >
> > > +        mov     rax,rcx
> > >
> > > +
> > >
> > > +        and     r15,rdi
> > >
> > > +        ror     r14,28
> > >
> > > +        add     r12,r13
> > >
> > > +
> > >
> > > +        xor     rax,r15
> > >
> > > +        add     r8,r12
> > >
> > > +        add     rax,r12
> > >
> > > +
> > >
> > > +        lea     rbp,[24+rbp]
> > >
> > > +        cmp     BYTE[7+rbp],0
> > >
> > > +        jnz     NEAR $L$rounds_16_xx
> > >
> > > +
> > >
> > > +        mov     rdi,QWORD[((128+0))+rsp]
> > >
> > > +        add     rax,r14
> > >
> > > +        lea     rsi,[128+rsi]
> > >
> > > +
> > >
> > > +        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[((128+16))+rsp]
> > >
> > > +
> > >
> > > +        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[152+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$epilogue:
> > >
> > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > >
> > > +        mov     rsi,QWORD[16+rsp]
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +$L$SEH_end_sha512_block_data_order:
> > >
> > > +ALIGN   64
> > >
> > > +
> > >
> > > +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      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
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +se_handler:
> > >
> > > +        push    rsi
> > >
> > > +        push    rdi
> > >
> > > +        push    rbx
> > >
> > > +        push    rbp
> > >
> > > +        push    r12
> > >
> > > +        push    r13
> > >
> > > +        push    r14
> > >
> > > +        push    r15
> > >
> > > +        pushfq
> > >
> > > +        sub     rsp,64
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[120+r8]
> > >
> > > +        mov     rbx,QWORD[248+r8]
> > >
> > > +
> > >
> > > +        mov     rsi,QWORD[8+r9]
> > >
> > > +        mov     r11,QWORD[56+r9]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$in_prologue
> > >
> > > +
> > >
> > > +        mov     rax,QWORD[152+r8]
> > >
> > > +
> > >
> > > +        mov     r10d,DWORD[4+r11]
> > >
> > > +        lea     r10,[r10*1+rsi]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jae     NEAR $L$in_prologue
> > >
> > > +        mov     rsi,rax
> > >
> > > +        mov     rax,QWORD[((128+24))+rax]
> > >
> > > +
> > >
> > > +        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,[$L$epilogue]
> > >
> > > +        cmp     rbx,r10
> > >
> > > +        jb      NEAR $L$in_prologue
> > >
> > > +
> > >
> > > +        lea     rsi,[((128+32))+rsi]
> > >
> > > +        lea     rdi,[512+r8]
> > >
> > > +        mov     ecx,12
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +$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[40+r9]
> > >
> > > +        mov     rsi,r8
> > >
> > > +        mov     ecx,154
> > >
> > > +        DD      0xa548f3fc
> > >
> > > +
> > >
> > > +        mov     rsi,r9
> > >
> > > +        xor     rcx,rcx
> > >
> > > +        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
> > >
> > > +        popfq
> > >
> > > +        pop     r15
> > >
> > > +        pop     r14
> > >
> > > +        pop     r13
> > >
> > > +        pop     r12
> > >
> > > +        pop     rbp
> > >
> > > +        pop     rbx
> > >
> > > +        pop     rdi
> > >
> > > +        pop     rsi
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +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/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > > b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > > new file mode 100644
> > > index 0000000000..2a3d5bcf72
> > > --- /dev/null
> > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > > @@ -0,0 +1,491 @@
> > > +; WARNING: do not edit!
> > >
> > > +; Generated from openssl/crypto/x86_64cpuid.pl
> > >
> > > +;
> > >
> > > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.
> > >
> > > +;
> > >
> > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > >
> > > +; this file except in compliance with the License.  You can obtain a copy
> > >
> > > +; in the file LICENSE in the source distribution or at
> > >
> > > +; https://www.openssl.org/source/license.html
> > >
> > > +
> > >
> > > +default rel
> > >
> > > +%define XMMWORD
> > >
> > > +%define YMMWORD
> > >
> > > +%define ZMMWORD
> > >
> > > +EXTERN  OPENSSL_cpuid_setup
> > >
> > > +
> > >
> > > +section .CRT$XCU rdata align=8
> > >
> > > +                DQ      OPENSSL_cpuid_setup
> > >
> > > +
> > >
> > > +
> > >
> > > +common  OPENSSL_ia32cap_P 16
> > >
> > > +
> > >
> > > +section .text code align=64
> > >
> > > +
> > >
> > > +
> > >
> > > +global  OPENSSL_atomic_add
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +OPENSSL_atomic_add:
> > >
> > > +
> > >
> > > +        mov     eax,DWORD[rcx]
> > >
> > > +$L$spin:        lea     r8,[rax*1+rdx]
> > >
> > > +DB      0xf0
> > >
> > > +        cmpxchg DWORD[rcx],r8d
> > >
> > > +        jne     NEAR $L$spin
> > >
> > > +        mov     eax,r8d
> > >
> > > +DB      0x48,0x98
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +global  OPENSSL_rdtsc
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +OPENSSL_rdtsc:
> > >
> > > +
> > >
> > > +        rdtsc
> > >
> > > +        shl     rdx,32
> > >
> > > +        or      rax,rdx
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +global  OPENSSL_ia32_cpuid
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +OPENSSL_ia32_cpuid:
> > >
> > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > >
> > > +        mov     QWORD[16+rsp],rsi
> > >
> > > +        mov     rax,rsp
> > >
> > > +$L$SEH_begin_OPENSSL_ia32_cpuid:
> > >
> > > +        mov     rdi,rcx
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        mov     r8,rbx
> > >
> > > +
> > >
> > > +
> > >
> > > +        xor     eax,eax
> > >
> > > +        mov     QWORD[8+rdi],rax
> > >
> > > +        cpuid
> > >
> > > +        mov     r11d,eax
> > >
> > > +
> > >
> > > +        xor     eax,eax
> > >
> > > +        cmp     ebx,0x756e6547
> > >
> > > +        setne   al
> > >
> > > +        mov     r9d,eax
> > >
> > > +        cmp     edx,0x49656e69
> > >
> > > +        setne   al
> > >
> > > +        or      r9d,eax
> > >
> > > +        cmp     ecx,0x6c65746e
> > >
> > > +        setne   al
> > >
> > > +        or      r9d,eax
> > >
> > > +        jz      NEAR $L$intel
> > >
> > > +
> > >
> > > +        cmp     ebx,0x68747541
> > >
> > > +        setne   al
> > >
> > > +        mov     r10d,eax
> > >
> > > +        cmp     edx,0x69746E65
> > >
> > > +        setne   al
> > >
> > > +        or      r10d,eax
> > >
> > > +        cmp     ecx,0x444D4163
> > >
> > > +        setne   al
> > >
> > > +        or      r10d,eax
> > >
> > > +        jnz     NEAR $L$intel
> > >
> > > +
> > >
> > > +
> > >
> > > +        mov     eax,0x80000000
> > >
> > > +        cpuid
> > >
> > > +        cmp     eax,0x80000001
> > >
> > > +        jb      NEAR $L$intel
> > >
> > > +        mov     r10d,eax
> > >
> > > +        mov     eax,0x80000001
> > >
> > > +        cpuid
> > >
> > > +        or      r9d,ecx
> > >
> > > +        and     r9d,0x00000801
> > >
> > > +
> > >
> > > +        cmp     r10d,0x80000008
> > >
> > > +        jb      NEAR $L$intel
> > >
> > > +
> > >
> > > +        mov     eax,0x80000008
> > >
> > > +        cpuid
> > >
> > > +        movzx   r10,cl
> > >
> > > +        inc     r10
> > >
> > > +
> > >
> > > +        mov     eax,1
> > >
> > > +        cpuid
> > >
> > > +        bt      edx,28
> > >
> > > +        jnc     NEAR $L$generic
> > >
> > > +        shr     ebx,16
> > >
> > > +        cmp     bl,r10b
> > >
> > > +        ja      NEAR $L$generic
> > >
> > > +        and     edx,0xefffffff
> > >
> > > +        jmp     NEAR $L$generic
> > >
> > > +
> > >
> > > +$L$intel:
> > >
> > > +        cmp     r11d,4
> > >
> > > +        mov     r10d,-1
> > >
> > > +        jb      NEAR $L$nocacheinfo
> > >
> > > +
> > >
> > > +        mov     eax,4
> > >
> > > +        mov     ecx,0
> > >
> > > +        cpuid
> > >
> > > +        mov     r10d,eax
> > >
> > > +        shr     r10d,14
> > >
> > > +        and     r10d,0xfff
> > >
> > > +
> > >
> > > +$L$nocacheinfo:
> > >
> > > +        mov     eax,1
> > >
> > > +        cpuid
> > >
> > > +        movd    xmm0,eax
> > >
> > > +        and     edx,0xbfefffff
> > >
> > > +        cmp     r9d,0
> > >
> > > +        jne     NEAR $L$notintel
> > >
> > > +        or      edx,0x40000000
> > >
> > > +        and     ah,15
> > >
> > > +        cmp     ah,15
> > >
> > > +        jne     NEAR $L$notP4
> > >
> > > +        or      edx,0x00100000
> > >
> > > +$L$notP4:
> > >
> > > +        cmp     ah,6
> > >
> > > +        jne     NEAR $L$notintel
> > >
> > > +        and     eax,0x0fff0ff0
> > >
> > > +        cmp     eax,0x00050670
> > >
> > > +        je      NEAR $L$knights
> > >
> > > +        cmp     eax,0x00080650
> > >
> > > +        jne     NEAR $L$notintel
> > >
> > > +$L$knights:
> > >
> > > +        and     ecx,0xfbffffff
> > >
> > > +
> > >
> > > +$L$notintel:
> > >
> > > +        bt      edx,28
> > >
> > > +        jnc     NEAR $L$generic
> > >
> > > +        and     edx,0xefffffff
> > >
> > > +        cmp     r10d,0
> > >
> > > +        je      NEAR $L$generic
> > >
> > > +
> > >
> > > +        or      edx,0x10000000
> > >
> > > +        shr     ebx,16
> > >
> > > +        cmp     bl,1
> > >
> > > +        ja      NEAR $L$generic
> > >
> > > +        and     edx,0xefffffff
> > >
> > > +$L$generic:
> > >
> > > +        and     r9d,0x00000800
> > >
> > > +        and     ecx,0xfffff7ff
> > >
> > > +        or      r9d,ecx
> > >
> > > +
> > >
> > > +        mov     r10d,edx
> > >
> > > +
> > >
> > > +        cmp     r11d,7
> > >
> > > +        jb      NEAR $L$no_extended_info
> > >
> > > +        mov     eax,7
> > >
> > > +        xor     ecx,ecx
> > >
> > > +        cpuid
> > >
> > > +        bt      r9d,26
> > >
> > > +        jc      NEAR $L$notknights
> > >
> > > +        and     ebx,0xfff7ffff
> > >
> > > +$L$notknights:
> > >
> > > +        movd    eax,xmm0
> > >
> > > +        and     eax,0x0fff0ff0
> > >
> > > +        cmp     eax,0x00050650
> > >
> > > +        jne     NEAR $L$notskylakex
> > >
> > > +        and     ebx,0xfffeffff
> > >
> > > +
> > >
> > > +$L$notskylakex:
> > >
> > > +        mov     DWORD[8+rdi],ebx
> > >
> > > +        mov     DWORD[12+rdi],ecx
> > >
> > > +$L$no_extended_info:
> > >
> > > +
> > >
> > > +        bt      r9d,27
> > >
> > > +        jnc     NEAR $L$clear_avx
> > >
> > > +        xor     ecx,ecx
> > >
> > > +DB      0x0f,0x01,0xd0
> > >
> > > +        and     eax,0xe6
> > >
> > > +        cmp     eax,0xe6
> > >
> > > +        je      NEAR $L$done
> > >
> > > +        and     DWORD[8+rdi],0x3fdeffff
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +        and     eax,6
> > >
> > > +        cmp     eax,6
> > >
> > > +        je      NEAR $L$done
> > >
> > > +$L$clear_avx:
> > >
> > > +        mov     eax,0xefffe7ff
> > >
> > > +        and     r9d,eax
> > >
> > > +        mov     eax,0x3fdeffdf
> > >
> > > +        and     DWORD[8+rdi],eax
> > >
> > > +$L$done:
> > >
> > > +        shl     r9,32
> > >
> > > +        mov     eax,r10d
> > >
> > > +        mov     rbx,r8
> > >
> > > +
> > >
> > > +        or      rax,r9
> > >
> > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > >
> > > +        mov     rsi,QWORD[16+rsp]
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +$L$SEH_end_OPENSSL_ia32_cpuid:
> > >
> > > +
> > >
> > > +global  OPENSSL_cleanse
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +OPENSSL_cleanse:
> > >
> > > +
> > >
> > > +        xor     rax,rax
> > >
> > > +        cmp     rdx,15
> > >
> > > +        jae     NEAR $L$ot
> > >
> > > +        cmp     rdx,0
> > >
> > > +        je      NEAR $L$ret
> > >
> > > +$L$ittle:
> > >
> > > +        mov     BYTE[rcx],al
> > >
> > > +        sub     rdx,1
> > >
> > > +        lea     rcx,[1+rcx]
> > >
> > > +        jnz     NEAR $L$ittle
> > >
> > > +$L$ret:
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +ALIGN   16
> > >
> > > +$L$ot:
> > >
> > > +        test    rcx,7
> > >
> > > +        jz      NEAR $L$aligned
> > >
> > > +        mov     BYTE[rcx],al
> > >
> > > +        lea     rdx,[((-1))+rdx]
> > >
> > > +        lea     rcx,[1+rcx]
> > >
> > > +        jmp     NEAR $L$ot
> > >
> > > +$L$aligned:
> > >
> > > +        mov     QWORD[rcx],rax
> > >
> > > +        lea     rdx,[((-8))+rdx]
> > >
> > > +        test    rdx,-8
> > >
> > > +        lea     rcx,[8+rcx]
> > >
> > > +        jnz     NEAR $L$aligned
> > >
> > > +        cmp     rdx,0
> > >
> > > +        jne     NEAR $L$ittle
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +global  CRYPTO_memcmp
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +CRYPTO_memcmp:
> > >
> > > +
> > >
> > > +        xor     rax,rax
> > >
> > > +        xor     r10,r10
> > >
> > > +        cmp     r8,0
> > >
> > > +        je      NEAR $L$no_data
> > >
> > > +        cmp     r8,16
> > >
> > > +        jne     NEAR $L$oop_cmp
> > >
> > > +        mov     r10,QWORD[rcx]
> > >
> > > +        mov     r11,QWORD[8+rcx]
> > >
> > > +        mov     r8,1
> > >
> > > +        xor     r10,QWORD[rdx]
> > >
> > > +        xor     r11,QWORD[8+rdx]
> > >
> > > +        or      r10,r11
> > >
> > > +        cmovnz  rax,r8
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$oop_cmp:
> > >
> > > +        mov     r10b,BYTE[rcx]
> > >
> > > +        lea     rcx,[1+rcx]
> > >
> > > +        xor     r10b,BYTE[rdx]
> > >
> > > +        lea     rdx,[1+rdx]
> > >
> > > +        or      al,r10b
> > >
> > > +        dec     r8
> > >
> > > +        jnz     NEAR $L$oop_cmp
> > >
> > > +        neg     rax
> > >
> > > +        shr     rax,63
> > >
> > > +$L$no_data:
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +global  OPENSSL_wipe_cpu
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +OPENSSL_wipe_cpu:
> > >
> > > +        pxor    xmm0,xmm0
> > >
> > > +        pxor    xmm1,xmm1
> > >
> > > +        pxor    xmm2,xmm2
> > >
> > > +        pxor    xmm3,xmm3
> > >
> > > +        pxor    xmm4,xmm4
> > >
> > > +        pxor    xmm5,xmm5
> > >
> > > +        xor     rcx,rcx
> > >
> > > +        xor     rdx,rdx
> > >
> > > +        xor     r8,r8
> > >
> > > +        xor     r9,r9
> > >
> > > +        xor     r10,r10
> > >
> > > +        xor     r11,r11
> > >
> > > +        lea     rax,[8+rsp]
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +global  OPENSSL_instrument_bus
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +OPENSSL_instrument_bus:
> > >
> > > +
> > >
> > > +        mov     r10,rcx
> > >
> > > +        mov     rcx,rdx
> > >
> > > +        mov     r11,rdx
> > >
> > > +
> > >
> > > +        rdtsc
> > >
> > > +        mov     r8d,eax
> > >
> > > +        mov     r9d,0
> > >
> > > +        clflush [r10]
> > >
> > > +DB      0xf0
> > >
> > > +        add     DWORD[r10],r9d
> > >
> > > +        jmp     NEAR $L$oop
> > >
> > > +ALIGN   16
> > >
> > > +$L$oop: rdtsc
> > >
> > > +        mov     edx,eax
> > >
> > > +        sub     eax,r8d
> > >
> > > +        mov     r8d,edx
> > >
> > > +        mov     r9d,eax
> > >
> > > +        clflush [r10]
> > >
> > > +DB      0xf0
> > >
> > > +        add     DWORD[r10],eax
> > >
> > > +        lea     r10,[4+r10]
> > >
> > > +        sub     rcx,1
> > >
> > > +        jnz     NEAR $L$oop
> > >
> > > +
> > >
> > > +        mov     rax,r11
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +
> > >
> > > +global  OPENSSL_instrument_bus2
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +OPENSSL_instrument_bus2:
> > >
> > > +
> > >
> > > +        mov     r10,rcx
> > >
> > > +        mov     rcx,rdx
> > >
> > > +        mov     r11,r8
> > >
> > > +        mov     QWORD[8+rsp],rcx
> > >
> > > +
> > >
> > > +        rdtsc
> > >
> > > +        mov     r8d,eax
> > >
> > > +        mov     r9d,0
> > >
> > > +
> > >
> > > +        clflush [r10]
> > >
> > > +DB      0xf0
> > >
> > > +        add     DWORD[r10],r9d
> > >
> > > +
> > >
> > > +        rdtsc
> > >
> > > +        mov     edx,eax
> > >
> > > +        sub     eax,r8d
> > >
> > > +        mov     r8d,edx
> > >
> > > +        mov     r9d,eax
> > >
> > > +$L$oop2:
> > >
> > > +        clflush [r10]
> > >
> > > +DB      0xf0
> > >
> > > +        add     DWORD[r10],eax
> > >
> > > +
> > >
> > > +        sub     r11,1
> > >
> > > +        jz      NEAR $L$done2
> > >
> > > +
> > >
> > > +        rdtsc
> > >
> > > +        mov     edx,eax
> > >
> > > +        sub     eax,r8d
> > >
> > > +        mov     r8d,edx
> > >
> > > +        cmp     eax,r9d
> > >
> > > +        mov     r9d,eax
> > >
> > > +        mov     edx,0
> > >
> > > +        setne   dl
> > >
> > > +        sub     rcx,rdx
> > >
> > > +        lea     r10,[rdx*4+r10]
> > >
> > > +        jnz     NEAR $L$oop2
> > >
> > > +
> > >
> > > +$L$done2:
> > >
> > > +        mov     rax,QWORD[8+rsp]
> > >
> > > +        sub     rax,rcx
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +global  OPENSSL_ia32_rdrand_bytes
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +OPENSSL_ia32_rdrand_bytes:
> > >
> > > +
> > >
> > > +        xor     rax,rax
> > >
> > > +        cmp     rdx,0
> > >
> > > +        je      NEAR $L$done_rdrand_bytes
> > >
> > > +
> > >
> > > +        mov     r11,8
> > >
> > > +$L$oop_rdrand_bytes:
> > >
> > > +DB      73,15,199,242
> > >
> > > +        jc      NEAR $L$break_rdrand_bytes
> > >
> > > +        dec     r11
> > >
> > > +        jnz     NEAR $L$oop_rdrand_bytes
> > >
> > > +        jmp     NEAR $L$done_rdrand_bytes
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$break_rdrand_bytes:
> > >
> > > +        cmp     rdx,8
> > >
> > > +        jb      NEAR $L$tail_rdrand_bytes
> > >
> > > +        mov     QWORD[rcx],r10
> > >
> > > +        lea     rcx,[8+rcx]
> > >
> > > +        add     rax,8
> > >
> > > +        sub     rdx,8
> > >
> > > +        jz      NEAR $L$done_rdrand_bytes
> > >
> > > +        mov     r11,8
> > >
> > > +        jmp     NEAR $L$oop_rdrand_bytes
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$tail_rdrand_bytes:
> > >
> > > +        mov     BYTE[rcx],r10b
> > >
> > > +        lea     rcx,[1+rcx]
> > >
> > > +        inc     rax
> > >
> > > +        shr     r10,8
> > >
> > > +        dec     rdx
> > >
> > > +        jnz     NEAR $L$tail_rdrand_bytes
> > >
> > > +
> > >
> > > +$L$done_rdrand_bytes:
> > >
> > > +        xor     r10,r10
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > +global  OPENSSL_ia32_rdseed_bytes
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +OPENSSL_ia32_rdseed_bytes:
> > >
> > > +
> > >
> > > +        xor     rax,rax
> > >
> > > +        cmp     rdx,0
> > >
> > > +        je      NEAR $L$done_rdseed_bytes
> > >
> > > +
> > >
> > > +        mov     r11,8
> > >
> > > +$L$oop_rdseed_bytes:
> > >
> > > +DB      73,15,199,250
> > >
> > > +        jc      NEAR $L$break_rdseed_bytes
> > >
> > > +        dec     r11
> > >
> > > +        jnz     NEAR $L$oop_rdseed_bytes
> > >
> > > +        jmp     NEAR $L$done_rdseed_bytes
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$break_rdseed_bytes:
> > >
> > > +        cmp     rdx,8
> > >
> > > +        jb      NEAR $L$tail_rdseed_bytes
> > >
> > > +        mov     QWORD[rcx],r10
> > >
> > > +        lea     rcx,[8+rcx]
> > >
> > > +        add     rax,8
> > >
> > > +        sub     rdx,8
> > >
> > > +        jz      NEAR $L$done_rdseed_bytes
> > >
> > > +        mov     r11,8
> > >
> > > +        jmp     NEAR $L$oop_rdseed_bytes
> > >
> > > +
> > >
> > > +ALIGN   16
> > >
> > > +$L$tail_rdseed_bytes:
> > >
> > > +        mov     BYTE[rcx],r10b
> > >
> > > +        lea     rcx,[1+rcx]
> > >
> > > +        inc     rax
> > >
> > > +        shr     r10,8
> > >
> > > +        dec     rdx
> > >
> > > +        jnz     NEAR $L$tail_rdseed_bytes
> > >
> > > +
> > >
> > > +$L$done_rdseed_bytes:
> > >
> > > +        xor     r10,r10
> > >
> > > +        DB      0F3h,0C3h               ;repret
> > >
> > > +
> > >
> > > +
> > >
> > > --
> > > 2.28.0.windows.1


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

* Re: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
  2020-08-13 15:45       ` Yao, Jiewen
@ 2020-08-14 19:34         ` Zurcher, Christopher J
  2020-08-18  2:36           ` Wang, Jian J
  2020-08-18 16:15           ` Michael D Kinney
  0 siblings, 2 replies; 42+ messages in thread
From: Zurcher, Christopher J @ 2020-08-14 19:34 UTC (permalink / raw)
  To: Yao, Jiewen, Kinney, Michael D, devel@edk2.groups.io
  Cc: Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel

The current OpenSSL "UEFI" configuration depends on the OpenSSL build happening in a Unix-like environment. For a Windows-based build, this must be done in a wrapper such as Cygwin/git bash or WSL. Integrating the OpenSSL config step into the build process is a non-trivial change.

> > > That means, whenever we upgrade the openssl, we need manually generate
> > > them again.
> > > Any step by step, or readme to tell us how to do that?

The process for generating these X64 files is virtually identical to the already-existing maintainer process for OpensslLib, with only one additional argument required to process_files.pl.

OpensslLib as it exists today in EDK2 already includes auto-generated files from the Perl configure process. If we want to re-architect how we include OpenSSL into EDK2, I think that should be done in a different patch set. Additionally, such a large task might be a waste of time with the release of OpenSSL 3 happening later this year. They are making changes to their build system, and I think that if we are going to re-architect our side of it, we should wait until we are adopting OpenSSL 3.

--
Christopher Zurcher

> -----Original Message-----
> From: Yao, Jiewen <jiewen.yao@intel.com>
> Sent: Thursday, August 13, 2020 08:46
> To: Kinney, Michael D <michael.d.kinney@intel.com>; Zurcher, Christopher J
> <christopher.j.zurcher@intel.com>; devel@edk2.groups.io
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated
> assembly files for X64
> 
> Thank you Mike to help on this.
> 
> I also believe that the best option is to integrate the auto-gen process in
> base tool.
> 
> 
> 
> > -----Original Message-----
> > From: Kinney, Michael D <michael.d.kinney@intel.com>
> > Sent: Thursday, August 13, 2020 11:38 PM
> > To: Yao, Jiewen <jiewen.yao@intel.com>; Zurcher, Christopher J
> > <christopher.j.zurcher@intel.com>; devel@edk2.groups.io; Kinney, Michael D
> > <michael.d.kinney@intel.com>
> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>;
> > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated
> > assembly files for X64
> >
> > Hi Jiewen,
> >
> > For this use case, generating the files as part of the build process would
> add
> > a dependency in pearl.
> >
> > Based on other recent CryptoPkg changes and some being discussed in BZ, I
> am
> > seeing more changes to the OpenSLL .pl configuration files, and I am
> concerned
> > that based on platform requirements, we may need to build OpenSSL with
> > different .pl config file settings which would also add a pearl dependency
> > to the build.
> >
> > So exploring what it would take to add the pearl dependency to the build
> system
> > is worth exploring and if successful would eliminate the need to checkin
> these
> > types of autogenerated files.  This would also reduce maintenance of the
> > auto-genererated files when EDK II moves to a new version of OpenSSL.
> >
> > @Cristopher - Can you please share a branch that uses pearl to generate the
> > files
> > instead of checking them in?  I would like the BaseTools maintainers to
> review
> > that and evaluate adding the pearl dependency.  Hopefully, we can make the
> > pearl dependency detectable so it is only required if the build requires
> it.
> >
> > Thanks,
> >
> > Mike
> >
> > > -----Original Message-----
> > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > Sent: Thursday, August 13, 2020 8:25 AM
> > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > devel@edk2.groups.io
> > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > <xiaoyux.lu@intel.com>; Kinney, Michael D
> > > <michael.d.kinney@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
> > generated assembly files for X64
> > >
> > > + Mike Kinney
> > >
> > > I am not sure if it is a right way to check in auto-generated file.
> > > That means, whenever we upgrade the openssl, we need manually generate
> > them again.
> > > Any step by step, or readme to tell us how to do that?
> > >
> > > Mike, would you please double confirm what is the right way for auto-
> > generated file in EDKII?
> > >
> > >
> > > > -----Original Message-----
> > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > Sent: Tuesday, August 4, 2020 8:24 AM
> > > > To: devel@edk2.groups.io
> > > > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> > <jian.j.wang@intel.com>;
> > > > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > <ard.biesheuvel@linaro.org>
> > > > Subject: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated
> > > > assembly files for X64
> > > >
> > > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> > > >
> > > > Adding the auto-generated assembly files for the X64 architecture.
> > > >
> > > > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > > > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > Signed-off-by: Christopher J Zurcher <christopher.j.zurcher@intel.com>
> > > > ---
> > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm     |
> > 732
> > > > +++
> > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm   |
> > > > 1916 ++++++++
> > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-x86_64.nasm |
> > > > 78 +
> > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm        |
> > 5103
> > > > ++++++++++++++++++++
> > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm        |
> > 1173
> > > > +++++
> > > >  CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm      |
> > > > 1569 ++++++
> > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm      |
> > 3137
> > > > ++++++++++++
> > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm         |
> > 2884
> > > > +++++++++++
> > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm    |
> > > > 3461 +++++++++++++
> > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm       |
> > 3313
> > > > +++++++++++++
> > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm       |
> > 1938
> > > > ++++++++
> > > >  CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm             |
> 491
> > ++
> > > >  12 files changed, 25795 insertions(+)
> > > >
> > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
> > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
> > > > x86_64.nasm
> > > > new file mode 100644
> > > > index 0000000000..1a3ed1dd35
> > > > --- /dev/null
> > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm
> > > > @@ -0,0 +1,732 @@
> > > > +; WARNING: do not edit!
> > > >
> > > > +; Generated from openssl/crypto/aes/asm/aesni-mb-x86_64.pl
> > > >
> > > > +;
> > > >
> > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> Reserved.
> > > >
> > > > +;
> > > >
> > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > >
> > > > +; this file except in compliance with the License.  You can obtain a
> copy
> > > >
> > > > +; in the file LICENSE in the source distribution or at
> > > >
> > > > +; https://www.openssl.org/source/license.html
> > > >
> > > > +
> > > >
> > > > +default rel
> > > >
> > > > +%define XMMWORD
> > > >
> > > > +%define YMMWORD
> > > >
> > > > +%define ZMMWORD
> > > >
> > > > +section .text code align=64
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +EXTERN  OPENSSL_ia32cap_P
> > > >
> > > > +
> > > >
> > > > +global  aesni_multi_cbc_encrypt
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +aesni_multi_cbc_encrypt:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_aesni_multi_cbc_encrypt:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +
> > > >
> > > > +        push    rbx
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        push    r12
> > > >
> > > > +
> > > >
> > > > +        push    r13
> > > >
> > > > +
> > > >
> > > > +        push    r14
> > > >
> > > > +
> > > >
> > > > +        push    r15
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[((-168))+rsp]
> > > >
> > > > +        movaps  XMMWORD[rsp],xmm6
> > > >
> > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > >
> > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > >
> > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > >
> > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > >
> > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > >
> > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > >
> > > > +        movaps  XMMWORD[(-104)+rax],xmm13
> > > >
> > > > +        movaps  XMMWORD[(-88)+rax],xmm14
> > > >
> > > > +        movaps  XMMWORD[(-72)+rax],xmm15
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        sub     rsp,48
> > > >
> > > > +        and     rsp,-64
> > > >
> > > > +        mov     QWORD[16+rsp],rax
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +$L$enc4x_body:
> > > >
> > > > +        movdqu  xmm12,XMMWORD[rsi]
> > > >
> > > > +        lea     rsi,[120+rsi]
> > > >
> > > > +        lea     rdi,[80+rdi]
> > > >
> > > > +
> > > >
> > > > +$L$enc4x_loop_grande:
> > > >
> > > > +        mov     DWORD[24+rsp],edx
> > > >
> > > > +        xor     edx,edx
> > > >
> > > > +        mov     ecx,DWORD[((-64))+rdi]
> > > >
> > > > +        mov     r8,QWORD[((-80))+rdi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        mov     r12,QWORD[((-72))+rdi]
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        movdqu  xmm2,XMMWORD[((-56))+rdi]
> > > >
> > > > +        mov     DWORD[32+rsp],ecx
> > > >
> > > > +        cmovle  r8,rsp
> > > >
> > > > +        mov     ecx,DWORD[((-24))+rdi]
> > > >
> > > > +        mov     r9,QWORD[((-40))+rdi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        mov     r13,QWORD[((-32))+rdi]
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        movdqu  xmm3,XMMWORD[((-16))+rdi]
> > > >
> > > > +        mov     DWORD[36+rsp],ecx
> > > >
> > > > +        cmovle  r9,rsp
> > > >
> > > > +        mov     ecx,DWORD[16+rdi]
> > > >
> > > > +        mov     r10,QWORD[rdi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        mov     r14,QWORD[8+rdi]
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        movdqu  xmm4,XMMWORD[24+rdi]
> > > >
> > > > +        mov     DWORD[40+rsp],ecx
> > > >
> > > > +        cmovle  r10,rsp
> > > >
> > > > +        mov     ecx,DWORD[56+rdi]
> > > >
> > > > +        mov     r11,QWORD[40+rdi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        mov     r15,QWORD[48+rdi]
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        movdqu  xmm5,XMMWORD[64+rdi]
> > > >
> > > > +        mov     DWORD[44+rsp],ecx
> > > >
> > > > +        cmovle  r11,rsp
> > > >
> > > > +        test    edx,edx
> > > >
> > > > +        jz      NEAR $L$enc4x_done
> > > >
> > > > +
> > > >
> > > > +        movups  xmm1,XMMWORD[((16-120))+rsi]
> > > >
> > > > +        pxor    xmm2,xmm12
> > > >
> > > > +        movups  xmm0,XMMWORD[((32-120))+rsi]
> > > >
> > > > +        pxor    xmm3,xmm12
> > > >
> > > > +        mov     eax,DWORD[((240-120))+rsi]
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        movdqu  xmm6,XMMWORD[r8]
> > > >
> > > > +        pxor    xmm5,xmm12
> > > >
> > > > +        movdqu  xmm7,XMMWORD[r9]
> > > >
> > > > +        pxor    xmm2,xmm6
> > > >
> > > > +        movdqu  xmm8,XMMWORD[r10]
> > > >
> > > > +        pxor    xmm3,xmm7
> > > >
> > > > +        movdqu  xmm9,XMMWORD[r11]
> > > >
> > > > +        pxor    xmm4,xmm8
> > > >
> > > > +        pxor    xmm5,xmm9
> > > >
> > > > +        movdqa  xmm10,XMMWORD[32+rsp]
> > > >
> > > > +        xor     rbx,rbx
> > > >
> > > > +        jmp     NEAR $L$oop_enc4x
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$oop_enc4x:
> > > >
> > > > +        add     rbx,16
> > > >
> > > > +        lea     rbp,[16+rsp]
> > > >
> > > > +        mov     ecx,1
> > > >
> > > > +        sub     rbp,rbx
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        prefetcht0      [31+rbx*1+r8]
> > > >
> > > > +        prefetcht0      [31+rbx*1+r9]
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +        prefetcht0      [31+rbx*1+r10]
> > > >
> > > > +        prefetcht0      [31+rbx*1+r10]
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +DB      102,15,56,220,233
> > > >
> > > > +        movups  xmm1,XMMWORD[((48-120))+rsi]
> > > >
> > > > +        cmp     ecx,DWORD[32+rsp]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      102,15,56,220,216
> > > >
> > > > +DB      102,15,56,220,224
> > > >
> > > > +        cmovge  r8,rbp
> > > >
> > > > +        cmovg   r12,rbp
> > > >
> > > > +DB      102,15,56,220,232
> > > >
> > > > +        movups  xmm0,XMMWORD[((-56))+rsi]
> > > >
> > > > +        cmp     ecx,DWORD[36+rsp]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +        cmovge  r9,rbp
> > > >
> > > > +        cmovg   r13,rbp
> > > >
> > > > +DB      102,15,56,220,233
> > > >
> > > > +        movups  xmm1,XMMWORD[((-40))+rsi]
> > > >
> > > > +        cmp     ecx,DWORD[40+rsp]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      102,15,56,220,216
> > > >
> > > > +DB      102,15,56,220,224
> > > >
> > > > +        cmovge  r10,rbp
> > > >
> > > > +        cmovg   r14,rbp
> > > >
> > > > +DB      102,15,56,220,232
> > > >
> > > > +        movups  xmm0,XMMWORD[((-24))+rsi]
> > > >
> > > > +        cmp     ecx,DWORD[44+rsp]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +        cmovge  r11,rbp
> > > >
> > > > +        cmovg   r15,rbp
> > > >
> > > > +DB      102,15,56,220,233
> > > >
> > > > +        movups  xmm1,XMMWORD[((-8))+rsi]
> > > >
> > > > +        movdqa  xmm11,xmm10
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        prefetcht0      [15+rbx*1+r12]
> > > >
> > > > +        prefetcht0      [15+rbx*1+r13]
> > > >
> > > > +DB      102,15,56,220,216
> > > >
> > > > +        prefetcht0      [15+rbx*1+r14]
> > > >
> > > > +        prefetcht0      [15+rbx*1+r15]
> > > >
> > > > +DB      102,15,56,220,224
> > > >
> > > > +DB      102,15,56,220,232
> > > >
> > > > +        movups  xmm0,XMMWORD[((128-120))+rsi]
> > > >
> > > > +        pxor    xmm12,xmm12
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        pcmpgtd xmm11,xmm12
> > > >
> > > > +        movdqu  xmm12,XMMWORD[((-120))+rsi]
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +        paddd   xmm10,xmm11
> > > >
> > > > +        movdqa  XMMWORD[32+rsp],xmm10
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +DB      102,15,56,220,233
> > > >
> > > > +        movups  xmm1,XMMWORD[((144-120))+rsi]
> > > >
> > > > +
> > > >
> > > > +        cmp     eax,11
> > > >
> > > > +
> > > >
> > > > +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[((160-120))+rsi]
> > > >
> > > > +
> > > >
> > > > +        jb      NEAR $L$enc4x_tail
> > > >
> > > > +
> > > >
> > > > +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[((176-120))+rsi]
> > > >
> > > > +
> > > >
> > > > +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[((192-120))+rsi]
> > > >
> > > > +
> > > >
> > > > +        je      NEAR $L$enc4x_tail
> > > >
> > > > +
> > > >
> > > > +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[((208-120))+rsi]
> > > >
> > > > +
> > > >
> > > > +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[((224-120))+rsi]
> > > >
> > > > +        jmp     NEAR $L$enc4x_tail
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$enc4x_tail:
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +DB      102,15,56,220,233
> > > >
> > > > +        movdqu  xmm6,XMMWORD[rbx*1+r8]
> > > >
> > > > +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,221,208
> > > >
> > > > +        movdqu  xmm7,XMMWORD[rbx*1+r9]
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +DB      102,15,56,221,216
> > > >
> > > > +        movdqu  xmm8,XMMWORD[rbx*1+r10]
> > > >
> > > > +        pxor    xmm7,xmm12
> > > >
> > > > +DB      102,15,56,221,224
> > > >
> > > > +        movdqu  xmm9,XMMWORD[rbx*1+r11]
> > > >
> > > > +        pxor    xmm8,xmm12
> > > >
> > > > +DB      102,15,56,221,232
> > > >
> > > > +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
> > > >
> > > > +        pxor    xmm9,xmm12
> > > >
> > > > +
> > > >
> > > > +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
> > > >
> > > > +        pxor    xmm2,xmm6
> > > >
> > > > +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
> > > >
> > > > +        pxor    xmm3,xmm7
> > > >
> > > > +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
> > > >
> > > > +        pxor    xmm4,xmm8
> > > >
> > > > +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
> > > >
> > > > +        pxor    xmm5,xmm9
> > > >
> > > > +
> > > >
> > > > +        dec     edx
> > > >
> > > > +        jnz     NEAR $L$oop_enc4x
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[16+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     edx,DWORD[24+rsp]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        lea     rdi,[160+rdi]
> > > >
> > > > +        dec     edx
> > > >
> > > > +        jnz     NEAR $L$enc4x_loop_grande
> > > >
> > > > +
> > > >
> > > > +$L$enc4x_done:
> > > >
> > > > +        movaps  xmm6,XMMWORD[((-216))+rax]
> > > >
> > > > +        movaps  xmm7,XMMWORD[((-200))+rax]
> > > >
> > > > +        movaps  xmm8,XMMWORD[((-184))+rax]
> > > >
> > > > +        movaps  xmm9,XMMWORD[((-168))+rax]
> > > >
> > > > +        movaps  xmm10,XMMWORD[((-152))+rax]
> > > >
> > > > +        movaps  xmm11,XMMWORD[((-136))+rax]
> > > >
> > > > +        movaps  xmm12,XMMWORD[((-120))+rax]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        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$enc4x_epilogue:
> > > >
> > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > >
> > > > +        mov     rsi,QWORD[16+rsp]
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +$L$SEH_end_aesni_multi_cbc_encrypt:
> > > >
> > > > +
> > > >
> > > > +global  aesni_multi_cbc_decrypt
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +aesni_multi_cbc_decrypt:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_aesni_multi_cbc_decrypt:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +
> > > >
> > > > +        push    rbx
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        push    r12
> > > >
> > > > +
> > > >
> > > > +        push    r13
> > > >
> > > > +
> > > >
> > > > +        push    r14
> > > >
> > > > +
> > > >
> > > > +        push    r15
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[((-168))+rsp]
> > > >
> > > > +        movaps  XMMWORD[rsp],xmm6
> > > >
> > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > >
> > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > >
> > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > >
> > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > >
> > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > >
> > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > >
> > > > +        movaps  XMMWORD[(-104)+rax],xmm13
> > > >
> > > > +        movaps  XMMWORD[(-88)+rax],xmm14
> > > >
> > > > +        movaps  XMMWORD[(-72)+rax],xmm15
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        sub     rsp,48
> > > >
> > > > +        and     rsp,-64
> > > >
> > > > +        mov     QWORD[16+rsp],rax
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +$L$dec4x_body:
> > > >
> > > > +        movdqu  xmm12,XMMWORD[rsi]
> > > >
> > > > +        lea     rsi,[120+rsi]
> > > >
> > > > +        lea     rdi,[80+rdi]
> > > >
> > > > +
> > > >
> > > > +$L$dec4x_loop_grande:
> > > >
> > > > +        mov     DWORD[24+rsp],edx
> > > >
> > > > +        xor     edx,edx
> > > >
> > > > +        mov     ecx,DWORD[((-64))+rdi]
> > > >
> > > > +        mov     r8,QWORD[((-80))+rdi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        mov     r12,QWORD[((-72))+rdi]
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        movdqu  xmm6,XMMWORD[((-56))+rdi]
> > > >
> > > > +        mov     DWORD[32+rsp],ecx
> > > >
> > > > +        cmovle  r8,rsp
> > > >
> > > > +        mov     ecx,DWORD[((-24))+rdi]
> > > >
> > > > +        mov     r9,QWORD[((-40))+rdi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        mov     r13,QWORD[((-32))+rdi]
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        movdqu  xmm7,XMMWORD[((-16))+rdi]
> > > >
> > > > +        mov     DWORD[36+rsp],ecx
> > > >
> > > > +        cmovle  r9,rsp
> > > >
> > > > +        mov     ecx,DWORD[16+rdi]
> > > >
> > > > +        mov     r10,QWORD[rdi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        mov     r14,QWORD[8+rdi]
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        movdqu  xmm8,XMMWORD[24+rdi]
> > > >
> > > > +        mov     DWORD[40+rsp],ecx
> > > >
> > > > +        cmovle  r10,rsp
> > > >
> > > > +        mov     ecx,DWORD[56+rdi]
> > > >
> > > > +        mov     r11,QWORD[40+rdi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        mov     r15,QWORD[48+rdi]
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        movdqu  xmm9,XMMWORD[64+rdi]
> > > >
> > > > +        mov     DWORD[44+rsp],ecx
> > > >
> > > > +        cmovle  r11,rsp
> > > >
> > > > +        test    edx,edx
> > > >
> > > > +        jz      NEAR $L$dec4x_done
> > > >
> > > > +
> > > >
> > > > +        movups  xmm1,XMMWORD[((16-120))+rsi]
> > > >
> > > > +        movups  xmm0,XMMWORD[((32-120))+rsi]
> > > >
> > > > +        mov     eax,DWORD[((240-120))+rsi]
> > > >
> > > > +        movdqu  xmm2,XMMWORD[r8]
> > > >
> > > > +        movdqu  xmm3,XMMWORD[r9]
> > > >
> > > > +        pxor    xmm2,xmm12
> > > >
> > > > +        movdqu  xmm4,XMMWORD[r10]
> > > >
> > > > +        pxor    xmm3,xmm12
> > > >
> > > > +        movdqu  xmm5,XMMWORD[r11]
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        pxor    xmm5,xmm12
> > > >
> > > > +        movdqa  xmm10,XMMWORD[32+rsp]
> > > >
> > > > +        xor     rbx,rbx
> > > >
> > > > +        jmp     NEAR $L$oop_dec4x
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$oop_dec4x:
> > > >
> > > > +        add     rbx,16
> > > >
> > > > +        lea     rbp,[16+rsp]
> > > >
> > > > +        mov     ecx,1
> > > >
> > > > +        sub     rbp,rbx
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +        prefetcht0      [31+rbx*1+r8]
> > > >
> > > > +        prefetcht0      [31+rbx*1+r9]
> > > >
> > > > +DB      102,15,56,222,217
> > > >
> > > > +        prefetcht0      [31+rbx*1+r10]
> > > >
> > > > +        prefetcht0      [31+rbx*1+r11]
> > > >
> > > > +DB      102,15,56,222,225
> > > >
> > > > +DB      102,15,56,222,233
> > > >
> > > > +        movups  xmm1,XMMWORD[((48-120))+rsi]
> > > >
> > > > +        cmp     ecx,DWORD[32+rsp]
> > > >
> > > > +DB      102,15,56,222,208
> > > >
> > > > +DB      102,15,56,222,216
> > > >
> > > > +DB      102,15,56,222,224
> > > >
> > > > +        cmovge  r8,rbp
> > > >
> > > > +        cmovg   r12,rbp
> > > >
> > > > +DB      102,15,56,222,232
> > > >
> > > > +        movups  xmm0,XMMWORD[((-56))+rsi]
> > > >
> > > > +        cmp     ecx,DWORD[36+rsp]
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +DB      102,15,56,222,217
> > > >
> > > > +DB      102,15,56,222,225
> > > >
> > > > +        cmovge  r9,rbp
> > > >
> > > > +        cmovg   r13,rbp
> > > >
> > > > +DB      102,15,56,222,233
> > > >
> > > > +        movups  xmm1,XMMWORD[((-40))+rsi]
> > > >
> > > > +        cmp     ecx,DWORD[40+rsp]
> > > >
> > > > +DB      102,15,56,222,208
> > > >
> > > > +DB      102,15,56,222,216
> > > >
> > > > +DB      102,15,56,222,224
> > > >
> > > > +        cmovge  r10,rbp
> > > >
> > > > +        cmovg   r14,rbp
> > > >
> > > > +DB      102,15,56,222,232
> > > >
> > > > +        movups  xmm0,XMMWORD[((-24))+rsi]
> > > >
> > > > +        cmp     ecx,DWORD[44+rsp]
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +DB      102,15,56,222,217
> > > >
> > > > +DB      102,15,56,222,225
> > > >
> > > > +        cmovge  r11,rbp
> > > >
> > > > +        cmovg   r15,rbp
> > > >
> > > > +DB      102,15,56,222,233
> > > >
> > > > +        movups  xmm1,XMMWORD[((-8))+rsi]
> > > >
> > > > +        movdqa  xmm11,xmm10
> > > >
> > > > +DB      102,15,56,222,208
> > > >
> > > > +        prefetcht0      [15+rbx*1+r12]
> > > >
> > > > +        prefetcht0      [15+rbx*1+r13]
> > > >
> > > > +DB      102,15,56,222,216
> > > >
> > > > +        prefetcht0      [15+rbx*1+r14]
> > > >
> > > > +        prefetcht0      [15+rbx*1+r15]
> > > >
> > > > +DB      102,15,56,222,224
> > > >
> > > > +DB      102,15,56,222,232
> > > >
> > > > +        movups  xmm0,XMMWORD[((128-120))+rsi]
> > > >
> > > > +        pxor    xmm12,xmm12
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +        pcmpgtd xmm11,xmm12
> > > >
> > > > +        movdqu  xmm12,XMMWORD[((-120))+rsi]
> > > >
> > > > +DB      102,15,56,222,217
> > > >
> > > > +        paddd   xmm10,xmm11
> > > >
> > > > +        movdqa  XMMWORD[32+rsp],xmm10
> > > >
> > > > +DB      102,15,56,222,225
> > > >
> > > > +DB      102,15,56,222,233
> > > >
> > > > +        movups  xmm1,XMMWORD[((144-120))+rsi]
> > > >
> > > > +
> > > >
> > > > +        cmp     eax,11
> > > >
> > > > +
> > > >
> > > > +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[((160-120))+rsi]
> > > >
> > > > +
> > > >
> > > > +        jb      NEAR $L$dec4x_tail
> > > >
> > > > +
> > > >
> > > > +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[((176-120))+rsi]
> > > >
> > > > +
> > > >
> > > > +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[((192-120))+rsi]
> > > >
> > > > +
> > > >
> > > > +        je      NEAR $L$dec4x_tail
> > > >
> > > > +
> > > >
> > > > +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[((208-120))+rsi]
> > > >
> > > > +
> > > >
> > > > +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[((224-120))+rsi]
> > > >
> > > > +        jmp     NEAR $L$dec4x_tail
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$dec4x_tail:
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +DB      102,15,56,222,217
> > > >
> > > > +DB      102,15,56,222,225
> > > >
> > > > +        pxor    xmm6,xmm0
> > > >
> > > > +        pxor    xmm7,xmm0
> > > >
> > > > +DB      102,15,56,222,233
> > > >
> > > > +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
> > > >
> > > > +        pxor    xmm8,xmm0
> > > >
> > > > +        pxor    xmm9,xmm0
> > > >
> > > > +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,223,214
> > > >
> > > > +DB      102,15,56,223,223
> > > >
> > > > +        movdqu  xmm6,XMMWORD[((-16))+rbx*1+r8]
> > > >
> > > > +        movdqu  xmm7,XMMWORD[((-16))+rbx*1+r9]
> > > >
> > > > +DB      102,65,15,56,223,224
> > > >
> > > > +DB      102,65,15,56,223,233
> > > >
> > > > +        movdqu  xmm8,XMMWORD[((-16))+rbx*1+r10]
> > > >
> > > > +        movdqu  xmm9,XMMWORD[((-16))+rbx*1+r11]
> > > >
> > > > +
> > > >
> > > > +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
> > > >
> > > > +        movdqu  xmm2,XMMWORD[rbx*1+r8]
> > > >
> > > > +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
> > > >
> > > > +        movdqu  xmm3,XMMWORD[rbx*1+r9]
> > > >
> > > > +        pxor    xmm2,xmm12
> > > >
> > > > +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
> > > >
> > > > +        movdqu  xmm4,XMMWORD[rbx*1+r10]
> > > >
> > > > +        pxor    xmm3,xmm12
> > > >
> > > > +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
> > > >
> > > > +        movdqu  xmm5,XMMWORD[rbx*1+r11]
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        pxor    xmm5,xmm12
> > > >
> > > > +
> > > >
> > > > +        dec     edx
> > > >
> > > > +        jnz     NEAR $L$oop_dec4x
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[16+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     edx,DWORD[24+rsp]
> > > >
> > > > +
> > > >
> > > > +        lea     rdi,[160+rdi]
> > > >
> > > > +        dec     edx
> > > >
> > > > +        jnz     NEAR $L$dec4x_loop_grande
> > > >
> > > > +
> > > >
> > > > +$L$dec4x_done:
> > > >
> > > > +        movaps  xmm6,XMMWORD[((-216))+rax]
> > > >
> > > > +        movaps  xmm7,XMMWORD[((-200))+rax]
> > > >
> > > > +        movaps  xmm8,XMMWORD[((-184))+rax]
> > > >
> > > > +        movaps  xmm9,XMMWORD[((-168))+rax]
> > > >
> > > > +        movaps  xmm10,XMMWORD[((-152))+rax]
> > > >
> > > > +        movaps  xmm11,XMMWORD[((-136))+rax]
> > > >
> > > > +        movaps  xmm12,XMMWORD[((-120))+rax]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        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$dec4x_epilogue:
> > > >
> > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > >
> > > > +        mov     rsi,QWORD[16+rsp]
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +$L$SEH_end_aesni_multi_cbc_decrypt:
> > > >
> > > > +EXTERN  __imp_RtlVirtualUnwind
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +se_handler:
> > > >
> > > > +        push    rsi
> > > >
> > > > +        push    rdi
> > > >
> > > > +        push    rbx
> > > >
> > > > +        push    rbp
> > > >
> > > > +        push    r12
> > > >
> > > > +        push    r13
> > > >
> > > > +        push    r14
> > > >
> > > > +        push    r15
> > > >
> > > > +        pushfq
> > > >
> > > > +        sub     rsp,64
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[120+r8]
> > > >
> > > > +        mov     rbx,QWORD[248+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,QWORD[8+r9]
> > > >
> > > > +        mov     r11,QWORD[56+r9]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$in_prologue
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[152+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[4+r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jae     NEAR $L$in_prologue
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[16+rax]
> > > >
> > > > +
> > > >
> > > > +        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     rsi,[((-56-160))+rax]
> > > >
> > > > +        lea     rdi,[512+r8]
> > > >
> > > > +        mov     ecx,20
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +$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[40+r9]
> > > >
> > > > +        mov     rsi,r8
> > > >
> > > > +        mov     ecx,154
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,r9
> > > >
> > > > +        xor     rcx,rcx
> > > >
> > > > +        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
> > > >
> > > > +        popfq
> > > >
> > > > +        pop     r15
> > > >
> > > > +        pop     r14
> > > >
> > > > +        pop     r13
> > > >
> > > > +        pop     r12
> > > >
> > > > +        pop     rbp
> > > >
> > > > +        pop     rbx
> > > >
> > > > +        pop     rdi
> > > >
> > > > +        pop     rsi
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +section .pdata rdata align=4
> > > >
> > > > +ALIGN   4
> > > >
> > > > +        DD      $L$SEH_begin_aesni_multi_cbc_encrypt wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_end_aesni_multi_cbc_encrypt wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_info_aesni_multi_cbc_encrypt wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_begin_aesni_multi_cbc_decrypt wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_end_aesni_multi_cbc_decrypt wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_info_aesni_multi_cbc_decrypt wrt ..imagebase
> > > >
> > > > +section .xdata rdata align=8
> > > >
> > > > +ALIGN   8
> > > >
> > > > +$L$SEH_info_aesni_multi_cbc_encrypt:
> > > >
> > > > +DB      9,0,0,0
> > > >
> > > > +        DD      se_handler wrt ..imagebase
> > > >
> > > > +        DD      $L$enc4x_body wrt ..imagebase,$L$enc4x_epilogue
> > > > wrt ..imagebase
> > > >
> > > > +$L$SEH_info_aesni_multi_cbc_decrypt:
> > > >
> > > > +DB      9,0,0,0
> > > >
> > > > +        DD      se_handler wrt ..imagebase
> > > >
> > > > +        DD      $L$dec4x_body wrt ..imagebase,$L$dec4x_epilogue
> > > > wrt ..imagebase
> > > >
> > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
> > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
> > > > x86_64.nasm
> > > > new file mode 100644
> > > > index 0000000000..f4fd9ca50d
> > > > --- /dev/null
> > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
> > x86_64.nasm
> > > > @@ -0,0 +1,1916 @@
> > > > +; WARNING: do not edit!
> > > >
> > > > +; Generated from openssl/crypto/aes/asm/aesni-sha1-x86_64.pl
> > > >
> > > > +;
> > > >
> > > > +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights
> Reserved.
> > > >
> > > > +;
> > > >
> > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > >
> > > > +; this file except in compliance with the License.  You can obtain a
> copy
> > > >
> > > > +; in the file LICENSE in the source distribution or at
> > > >
> > > > +; https://www.openssl.org/source/license.html
> > > >
> > > > +
> > > >
> > > > +default rel
> > > >
> > > > +%define XMMWORD
> > > >
> > > > +%define YMMWORD
> > > >
> > > > +%define ZMMWORD
> > > >
> > > > +section .text code align=64
> > > >
> > > > +
> > > >
> > > > +EXTERN  OPENSSL_ia32cap_P
> > > >
> > > > +
> > > >
> > > > +global  aesni_cbc_sha1_enc
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +aesni_cbc_sha1_enc:
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+0))]
> > > >
> > > > +        mov     r11,QWORD[((OPENSSL_ia32cap_P+4))]
> > > >
> > > > +        bt      r11,61
> > > >
> > > > +        jc      NEAR aesni_cbc_sha1_enc_shaext
> > > >
> > > > +        jmp     NEAR aesni_cbc_sha1_enc_ssse3
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +aesni_cbc_sha1_enc_ssse3:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_aesni_cbc_sha1_enc_ssse3:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +        mov     rcx,r9
> > > >
> > > > +        mov     r8,QWORD[40+rsp]
> > > >
> > > > +        mov     r9,QWORD[48+rsp]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        mov     r10,QWORD[56+rsp]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        push    rbx
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        push    r12
> > > >
> > > > +
> > > >
> > > > +        push    r13
> > > >
> > > > +
> > > >
> > > > +        push    r14
> > > >
> > > > +
> > > >
> > > > +        push    r15
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[((-264))+rsp]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movaps  XMMWORD[(96+0)+rsp],xmm6
> > > >
> > > > +        movaps  XMMWORD[(96+16)+rsp],xmm7
> > > >
> > > > +        movaps  XMMWORD[(96+32)+rsp],xmm8
> > > >
> > > > +        movaps  XMMWORD[(96+48)+rsp],xmm9
> > > >
> > > > +        movaps  XMMWORD[(96+64)+rsp],xmm10
> > > >
> > > > +        movaps  XMMWORD[(96+80)+rsp],xmm11
> > > >
> > > > +        movaps  XMMWORD[(96+96)+rsp],xmm12
> > > >
> > > > +        movaps  XMMWORD[(96+112)+rsp],xmm13
> > > >
> > > > +        movaps  XMMWORD[(96+128)+rsp],xmm14
> > > >
> > > > +        movaps  XMMWORD[(96+144)+rsp],xmm15
> > > >
> > > > +$L$prologue_ssse3:
> > > >
> > > > +        mov     r12,rdi
> > > >
> > > > +        mov     r13,rsi
> > > >
> > > > +        mov     r14,rdx
> > > >
> > > > +        lea     r15,[112+rcx]
> > > >
> > > > +        movdqu  xmm2,XMMWORD[r8]
> > > >
> > > > +        mov     QWORD[88+rsp],r8
> > > >
> > > > +        shl     r14,6
> > > >
> > > > +        sub     r13,r12
> > > >
> > > > +        mov     r8d,DWORD[((240-112))+r15]
> > > >
> > > > +        add     r14,r10
> > > >
> > > > +
> > > >
> > > > +        lea     r11,[K_XX_XX]
> > > >
> > > > +        mov     eax,DWORD[r9]
> > > >
> > > > +        mov     ebx,DWORD[4+r9]
> > > >
> > > > +        mov     ecx,DWORD[8+r9]
> > > >
> > > > +        mov     edx,DWORD[12+r9]
> > > >
> > > > +        mov     esi,ebx
> > > >
> > > > +        mov     ebp,DWORD[16+r9]
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        and     esi,edi
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm3,XMMWORD[64+r11]
> > > >
> > > > +        movdqa  xmm13,XMMWORD[r11]
> > > >
> > > > +        movdqu  xmm4,XMMWORD[r10]
> > > >
> > > > +        movdqu  xmm5,XMMWORD[16+r10]
> > > >
> > > > +        movdqu  xmm6,XMMWORD[32+r10]
> > > >
> > > > +        movdqu  xmm7,XMMWORD[48+r10]
> > > >
> > > > +DB      102,15,56,0,227
> > > >
> > > > +DB      102,15,56,0,235
> > > >
> > > > +DB      102,15,56,0,243
> > > >
> > > > +        add     r10,64
> > > >
> > > > +        paddd   xmm4,xmm13
> > > >
> > > > +DB      102,15,56,0,251
> > > >
> > > > +        paddd   xmm5,xmm13
> > > >
> > > > +        paddd   xmm6,xmm13
> > > >
> > > > +        movdqa  XMMWORD[rsp],xmm4
> > > >
> > > > +        psubd   xmm4,xmm13
> > > >
> > > > +        movdqa  XMMWORD[16+rsp],xmm5
> > > >
> > > > +        psubd   xmm5,xmm13
> > > >
> > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > >
> > > > +        psubd   xmm6,xmm13
> > > >
> > > > +        movups  xmm15,XMMWORD[((-112))+r15]
> > > >
> > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > >
> > > > +        jmp     NEAR $L$oop_ssse3
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$oop_ssse3:
> > > >
> > > > +        ror     ebx,2
> > > >
> > > > +        movups  xmm14,XMMWORD[r12]
> > > >
> > > > +        xorps   xmm14,xmm15
> > > >
> > > > +        xorps   xmm2,xmm14
> > > >
> > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        pshufd  xmm8,xmm4,238
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        movdqa  xmm12,xmm7
> > > >
> > > > +        paddd   xmm13,xmm7
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +        add     ebp,DWORD[rsp]
> > > >
> > > > +        punpcklqdq      xmm8,xmm5
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,esi
> > > >
> > > > +        psrldq  xmm12,4
> > > >
> > > > +        and     edi,ebx
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        pxor    xmm8,xmm4
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        pxor    xmm12,xmm6
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        mov     esi,ebp
> > > >
> > > > +        add     edx,DWORD[4+rsp]
> > > >
> > > > +        pxor    xmm8,xmm12
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        movdqa  XMMWORD[48+rsp],xmm13
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        and     esi,eax
> > > >
> > > > +        movdqa  xmm3,xmm8
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        movdqa  xmm12,xmm8
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        pslldq  xmm3,12
> > > >
> > > > +        paddd   xmm8,xmm8
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        add     ecx,DWORD[8+rsp]
> > > >
> > > > +        psrld   xmm12,31
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,esi
> > > >
> > > > +        movdqa  xmm13,xmm3
> > > >
> > > > +        and     edi,ebp
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        psrld   xmm3,30
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        por     xmm8,xmm12
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        mov     esi,ecx
> > > >
> > > > +        add     ebx,DWORD[12+rsp]
> > > >
> > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        pslld   xmm13,2
> > > >
> > > > +        pxor    xmm8,xmm3
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        movdqa  xmm3,XMMWORD[r11]
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        and     esi,edx
> > > >
> > > > +        pxor    xmm8,xmm13
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        pshufd  xmm9,xmm5,238
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        movdqa  xmm13,xmm8
> > > >
> > > > +        paddd   xmm3,xmm8
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        add     eax,DWORD[16+rsp]
> > > >
> > > > +        punpcklqdq      xmm9,xmm6
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,esi
> > > >
> > > > +        psrldq  xmm13,4
> > > >
> > > > +        and     edi,ecx
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        pxor    xmm9,xmm5
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        pxor    xmm13,xmm7
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        mov     esi,eax
> > > >
> > > > +        add     ebp,DWORD[20+rsp]
> > > >
> > > > +        pxor    xmm9,xmm13
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        movdqa  XMMWORD[rsp],xmm3
> > > >
> > > > +        add     ebp,edi
> > > >
> > > > +        and     esi,ebx
> > > >
> > > > +        movdqa  xmm12,xmm9
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        movdqa  xmm13,xmm9
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        pslldq  xmm12,12
> > > >
> > > > +        paddd   xmm9,xmm9
> > > >
> > > > +        mov     edi,ebp
> > > >
> > > > +        add     edx,DWORD[24+rsp]
> > > >
> > > > +        psrld   xmm13,31
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,esi
> > > >
> > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        movdqa  xmm3,xmm12
> > > >
> > > > +        and     edi,eax
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        psrld   xmm12,30
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        por     xmm9,xmm13
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        mov     esi,edx
> > > >
> > > > +        add     ecx,DWORD[28+rsp]
> > > >
> > > > +        pslld   xmm3,2
> > > >
> > > > +        pxor    xmm9,xmm12
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        movdqa  xmm12,XMMWORD[16+r11]
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,edi
> > > >
> > > > +        and     esi,ebp
> > > >
> > > > +        pxor    xmm9,xmm3
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        pshufd  xmm10,xmm6,238
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        movdqa  xmm3,xmm9
> > > >
> > > > +        paddd   xmm12,xmm9
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        add     ebx,DWORD[32+rsp]
> > > >
> > > > +        movups  xmm0,XMMWORD[r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        punpcklqdq      xmm10,xmm7
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        psrldq  xmm3,4
> > > >
> > > > +        and     edi,edx
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        pxor    xmm10,xmm6
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        pxor    xmm3,xmm8
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        mov     esi,ebx
> > > >
> > > > +        add     eax,DWORD[36+rsp]
> > > >
> > > > +        pxor    xmm10,xmm3
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        movdqa  XMMWORD[16+rsp],xmm12
> > > >
> > > > +        add     eax,edi
> > > >
> > > > +        and     esi,ecx
> > > >
> > > > +        movdqa  xmm13,xmm10
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        movups  xmm1,XMMWORD[16+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        movdqa  xmm3,xmm10
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        pslldq  xmm13,12
> > > >
> > > > +        paddd   xmm10,xmm10
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +        add     ebp,DWORD[40+rsp]
> > > >
> > > > +        psrld   xmm3,31
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,esi
> > > >
> > > > +        movdqa  xmm12,xmm13
> > > >
> > > > +        and     edi,ebx
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        psrld   xmm13,30
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        por     xmm10,xmm3
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        mov     esi,ebp
> > > >
> > > > +        add     edx,DWORD[44+rsp]
> > > >
> > > > +        pslld   xmm12,2
> > > >
> > > > +        pxor    xmm10,xmm13
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        movdqa  xmm13,XMMWORD[16+r11]
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        movups  xmm0,XMMWORD[32+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        and     esi,eax
> > > >
> > > > +        pxor    xmm10,xmm12
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        pshufd  xmm11,xmm7,238
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        movdqa  xmm12,xmm10
> > > >
> > > > +        paddd   xmm13,xmm10
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        add     ecx,DWORD[48+rsp]
> > > >
> > > > +        punpcklqdq      xmm11,xmm8
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,esi
> > > >
> > > > +        psrldq  xmm12,4
> > > >
> > > > +        and     edi,ebp
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        pxor    xmm11,xmm7
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        pxor    xmm12,xmm9
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        mov     esi,ecx
> > > >
> > > > +        add     ebx,DWORD[52+rsp]
> > > >
> > > > +        movups  xmm1,XMMWORD[48+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        pxor    xmm11,xmm12
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        movdqa  XMMWORD[32+rsp],xmm13
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        and     esi,edx
> > > >
> > > > +        movdqa  xmm3,xmm11
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        movdqa  xmm12,xmm11
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        pslldq  xmm3,12
> > > >
> > > > +        paddd   xmm11,xmm11
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        add     eax,DWORD[56+rsp]
> > > >
> > > > +        psrld   xmm12,31
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,esi
> > > >
> > > > +        movdqa  xmm13,xmm3
> > > >
> > > > +        and     edi,ecx
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        psrld   xmm3,30
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        cmp     r8d,11
> > > >
> > > > +        jb      NEAR $L$aesenclast1
> > > >
> > > > +        movups  xmm0,XMMWORD[64+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[80+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        je      NEAR $L$aesenclast1
> > > >
> > > > +        movups  xmm0,XMMWORD[96+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[112+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +$L$aesenclast1:
> > > >
> > > > +DB      102,15,56,221,209
> > > >
> > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > >
> > > > +        por     xmm11,xmm12
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        mov     esi,eax
> > > >
> > > > +        add     ebp,DWORD[60+rsp]
> > > >
> > > > +        pslld   xmm13,2
> > > >
> > > > +        pxor    xmm11,xmm3
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        movdqa  xmm3,XMMWORD[16+r11]
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,edi
> > > >
> > > > +        and     esi,ebx
> > > >
> > > > +        pxor    xmm11,xmm13
> > > >
> > > > +        pshufd  xmm13,xmm10,238
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        pxor    xmm4,xmm8
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        mov     edi,ebp
> > > >
> > > > +        add     edx,DWORD[rsp]
> > > >
> > > > +        punpcklqdq      xmm13,xmm11
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        pxor    xmm4,xmm5
> > > >
> > > > +        add     edx,esi
> > > >
> > > > +        movups  xmm14,XMMWORD[16+r12]
> > > >
> > > > +        xorps   xmm14,xmm15
> > > >
> > > > +        movups  XMMWORD[r13*1+r12],xmm2
> > > >
> > > > +        xorps   xmm2,xmm14
> > > >
> > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        and     edi,eax
> > > >
> > > > +        movdqa  xmm12,xmm3
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        paddd   xmm3,xmm11
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        pxor    xmm4,xmm13
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        mov     esi,edx
> > > >
> > > > +        add     ecx,DWORD[4+rsp]
> > > >
> > > > +        movdqa  xmm13,xmm4
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        movdqa  XMMWORD[48+rsp],xmm3
> > > >
> > > > +        add     ecx,edi
> > > >
> > > > +        and     esi,ebp
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        pslld   xmm4,2
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        psrld   xmm13,30
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        add     ebx,DWORD[8+rsp]
> > > >
> > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        por     xmm4,xmm13
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        pshufd  xmm3,xmm11,238
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        and     edi,edx
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[12+rsp]
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        mov     esi,ebx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,edi
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        pxor    xmm5,xmm9
> > > >
> > > > +        add     ebp,DWORD[16+rsp]
> > > >
> > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        punpcklqdq      xmm3,xmm4
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        pxor    xmm5,xmm6
> > > >
> > > > +        add     ebp,esi
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        movdqa  xmm13,xmm12
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        paddd   xmm12,xmm4
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        pxor    xmm5,xmm3
> > > >
> > > > +        add     edx,DWORD[20+rsp]
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        mov     esi,ebp
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        movdqa  xmm3,xmm5
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        movdqa  XMMWORD[rsp],xmm12
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        add     ecx,DWORD[24+rsp]
> > > >
> > > > +        pslld   xmm5,2
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        psrld   xmm3,30
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,esi
> > > >
> > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        por     xmm5,xmm3
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        add     ebx,DWORD[28+rsp]
> > > >
> > > > +        pshufd  xmm12,xmm4,238
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        mov     esi,ecx
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +        add     eax,DWORD[32+rsp]
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        punpcklqdq      xmm12,xmm5
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +        add     eax,esi
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        movdqa  xmm3,XMMWORD[32+r11]
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        paddd   xmm13,xmm5
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +        add     ebp,DWORD[36+rsp]
> > > >
> > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        mov     esi,eax
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        movdqa  xmm12,xmm6
> > > >
> > > > +        add     ebp,edi
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        movdqa  XMMWORD[16+rsp],xmm13
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        add     edx,DWORD[40+rsp]
> > > >
> > > > +        pslld   xmm6,2
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        mov     edi,ebp
> > > >
> > > > +        psrld   xmm12,30
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,esi
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        por     xmm6,xmm12
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        add     ecx,DWORD[44+rsp]
> > > >
> > > > +        pshufd  xmm13,xmm5,238
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        mov     esi,edx
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,edi
> > > >
> > > > +        movups  xmm0,XMMWORD[r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        pxor    xmm7,xmm11
> > > >
> > > > +        add     ebx,DWORD[48+rsp]
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        punpcklqdq      xmm13,xmm6
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        pxor    xmm7,xmm8
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        movdqa  xmm12,xmm3
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        paddd   xmm3,xmm6
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        pxor    xmm7,xmm13
> > > >
> > > > +        add     eax,DWORD[52+rsp]
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        mov     esi,ebx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        movdqa  xmm13,xmm7
> > > >
> > > > +        add     eax,edi
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        movdqa  XMMWORD[32+rsp],xmm3
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        add     ebp,DWORD[56+rsp]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        pslld   xmm7,2
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +        psrld   xmm13,30
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,esi
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        por     xmm7,xmm13
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        add     edx,DWORD[60+rsp]
> > > >
> > > > +        pshufd  xmm3,xmm6,238
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        mov     esi,ebp
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        pxor    xmm8,xmm4
> > > >
> > > > +        add     ecx,DWORD[rsp]
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        punpcklqdq      xmm3,xmm7
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        pxor    xmm8,xmm9
> > > >
> > > > +        add     ecx,esi
> > > >
> > > > +        movups  xmm0,XMMWORD[32+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        movdqa  xmm13,xmm12
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        paddd   xmm12,xmm7
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        pxor    xmm8,xmm3
> > > >
> > > > +        add     ebx,DWORD[4+rsp]
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        mov     esi,ecx
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        movdqa  xmm3,xmm8
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        movdqa  XMMWORD[48+rsp],xmm12
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[8+rsp]
> > > >
> > > > +        pslld   xmm8,2
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        psrld   xmm3,30
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,esi
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        por     xmm8,xmm3
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        add     ebp,DWORD[12+rsp]
> > > >
> > > > +        movups  xmm1,XMMWORD[48+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        pshufd  xmm12,xmm7,238
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        mov     esi,eax
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,edi
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        pxor    xmm9,xmm5
> > > >
> > > > +        add     edx,DWORD[16+rsp]
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        punpcklqdq      xmm12,xmm8
> > > >
> > > > +        mov     edi,ebp
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        pxor    xmm9,xmm10
> > > >
> > > > +        add     edx,esi
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        movdqa  xmm3,xmm13
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        paddd   xmm13,xmm8
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        pxor    xmm9,xmm12
> > > >
> > > > +        add     ecx,DWORD[20+rsp]
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        mov     esi,edx
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        movdqa  xmm12,xmm9
> > > >
> > > > +        add     ecx,edi
> > > >
> > > > +        cmp     r8d,11
> > > >
> > > > +        jb      NEAR $L$aesenclast2
> > > >
> > > > +        movups  xmm0,XMMWORD[64+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[80+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        je      NEAR $L$aesenclast2
> > > >
> > > > +        movups  xmm0,XMMWORD[96+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[112+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +$L$aesenclast2:
> > > >
> > > > +DB      102,15,56,221,209
> > > >
> > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        movdqa  XMMWORD[rsp],xmm13
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        add     ebx,DWORD[24+rsp]
> > > >
> > > > +        pslld   xmm9,2
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        psrld   xmm12,30
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        por     xmm9,xmm12
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[28+rsp]
> > > >
> > > > +        pshufd  xmm13,xmm8,238
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        mov     esi,ebx
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,edi
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        pxor    xmm10,xmm6
> > > >
> > > > +        add     ebp,DWORD[32+rsp]
> > > >
> > > > +        movups  xmm14,XMMWORD[32+r12]
> > > >
> > > > +        xorps   xmm14,xmm15
> > > >
> > > > +        movups  XMMWORD[16+r12*1+r13],xmm2
> > > >
> > > > +        xorps   xmm2,xmm14
> > > >
> > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        and     esi,ecx
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        punpcklqdq      xmm13,xmm9
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        pxor    xmm10,xmm11
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,esi
> > > >
> > > > +        movdqa  xmm12,xmm3
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        paddd   xmm3,xmm9
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        pxor    xmm10,xmm13
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        add     edx,DWORD[36+rsp]
> > > >
> > > > +        and     edi,ebx
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        movdqa  xmm13,xmm10
> > > >
> > > > +        mov     esi,ebp
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        movdqa  XMMWORD[16+rsp],xmm3
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        pslld   xmm10,2
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        psrld   xmm13,30
> > > >
> > > > +        add     ecx,DWORD[40+rsp]
> > > >
> > > > +        and     esi,eax
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        por     xmm10,xmm13
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        pshufd  xmm3,xmm9,238
> > > >
> > > > +        add     ecx,esi
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        add     ebx,DWORD[44+rsp]
> > > >
> > > > +        and     edi,ebp
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        mov     esi,ecx
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        pxor    xmm11,xmm7
> > > >
> > > > +        add     eax,DWORD[48+rsp]
> > > >
> > > > +        and     esi,edx
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        punpcklqdq      xmm3,xmm10
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        pxor    xmm11,xmm4
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,esi
> > > >
> > > > +        movdqa  xmm13,XMMWORD[48+r11]
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        paddd   xmm12,xmm10
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        pxor    xmm11,xmm3
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        add     ebp,DWORD[52+rsp]
> > > >
> > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        and     edi,ecx
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        movdqa  xmm3,xmm11
> > > >
> > > > +        mov     esi,eax
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        movdqa  XMMWORD[32+rsp],xmm12
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,edi
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        pslld   xmm11,2
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        psrld   xmm3,30
> > > >
> > > > +        add     edx,DWORD[56+rsp]
> > > >
> > > > +        and     esi,ebx
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        por     xmm11,xmm3
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        mov     edi,ebp
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        pshufd  xmm12,xmm10,238
> > > >
> > > > +        add     edx,esi
> > > >
> > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        add     ecx,DWORD[60+rsp]
> > > >
> > > > +        and     edi,eax
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        mov     esi,edx
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,edi
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        pxor    xmm4,xmm8
> > > >
> > > > +        add     ebx,DWORD[rsp]
> > > >
> > > > +        and     esi,ebp
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        movups  xmm0,XMMWORD[r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        punpcklqdq      xmm12,xmm11
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        pxor    xmm4,xmm5
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        movdqa  xmm3,xmm13
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        paddd   xmm13,xmm11
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[4+rsp]
> > > >
> > > > +        and     edi,edx
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        movdqa  xmm12,xmm4
> > > >
> > > > +        mov     esi,ebx
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        movdqa  XMMWORD[48+rsp],xmm13
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,edi
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        pslld   xmm4,2
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        psrld   xmm12,30
> > > >
> > > > +        add     ebp,DWORD[8+rsp]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        and     esi,ecx
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        por     xmm4,xmm12
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        pshufd  xmm13,xmm11,238
> > > >
> > > > +        add     ebp,esi
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        add     edx,DWORD[12+rsp]
> > > >
> > > > +        and     edi,ebx
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        mov     esi,ebp
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        movups  xmm0,XMMWORD[32+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        pxor    xmm5,xmm9
> > > >
> > > > +        add     ecx,DWORD[16+rsp]
> > > >
> > > > +        and     esi,eax
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        punpcklqdq      xmm13,xmm4
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        pxor    xmm5,xmm6
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,esi
> > > >
> > > > +        movdqa  xmm12,xmm3
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        paddd   xmm3,xmm4
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        pxor    xmm5,xmm13
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        add     ebx,DWORD[20+rsp]
> > > >
> > > > +        and     edi,ebp
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        movups  xmm1,XMMWORD[48+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        movdqa  xmm13,xmm5
> > > >
> > > > +        mov     esi,ecx
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        movdqa  XMMWORD[rsp],xmm3
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        pslld   xmm5,2
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        psrld   xmm13,30
> > > >
> > > > +        add     eax,DWORD[24+rsp]
> > > >
> > > > +        and     esi,edx
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        por     xmm5,xmm13
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        pshufd  xmm3,xmm4,238
> > > >
> > > > +        add     eax,esi
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        add     ebp,DWORD[28+rsp]
> > > >
> > > > +        cmp     r8d,11
> > > >
> > > > +        jb      NEAR $L$aesenclast3
> > > >
> > > > +        movups  xmm0,XMMWORD[64+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[80+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        je      NEAR $L$aesenclast3
> > > >
> > > > +        movups  xmm0,XMMWORD[96+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[112+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +$L$aesenclast3:
> > > >
> > > > +DB      102,15,56,221,209
> > > >
> > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > >
> > > > +        and     edi,ecx
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        mov     esi,eax
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,edi
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +        add     edx,DWORD[32+rsp]
> > > >
> > > > +        and     esi,ebx
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        punpcklqdq      xmm3,xmm5
> > > >
> > > > +        mov     edi,ebp
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,esi
> > > >
> > > > +        movups  xmm14,XMMWORD[48+r12]
> > > >
> > > > +        xorps   xmm14,xmm15
> > > >
> > > > +        movups  XMMWORD[32+r12*1+r13],xmm2
> > > >
> > > > +        xorps   xmm2,xmm14
> > > >
> > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        movdqa  xmm13,xmm12
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        paddd   xmm12,xmm5
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        pxor    xmm6,xmm3
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        add     ecx,DWORD[36+rsp]
> > > >
> > > > +        and     edi,eax
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        movdqa  xmm3,xmm6
> > > >
> > > > +        mov     esi,edx
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        movdqa  XMMWORD[16+rsp],xmm12
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,edi
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        pslld   xmm6,2
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        psrld   xmm3,30
> > > >
> > > > +        add     ebx,DWORD[40+rsp]
> > > >
> > > > +        and     esi,ebp
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        por     xmm6,xmm3
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        pshufd  xmm12,xmm5,238
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[44+rsp]
> > > >
> > > > +        and     edi,edx
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        mov     esi,ebx
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,edi
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        pxor    xmm7,xmm11
> > > >
> > > > +        add     ebp,DWORD[48+rsp]
> > > >
> > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        punpcklqdq      xmm12,xmm6
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        pxor    xmm7,xmm8
> > > >
> > > > +        add     ebp,esi
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        movdqa  xmm3,xmm13
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        paddd   xmm13,xmm6
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        pxor    xmm7,xmm12
> > > >
> > > > +        add     edx,DWORD[52+rsp]
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        mov     esi,ebp
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        movdqa  xmm12,xmm7
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        movdqa  XMMWORD[32+rsp],xmm13
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        add     ecx,DWORD[56+rsp]
> > > >
> > > > +        pslld   xmm7,2
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        psrld   xmm12,30
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,esi
> > > >
> > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        por     xmm7,xmm12
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        add     ebx,DWORD[60+rsp]
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        mov     esi,ecx
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[rsp]
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        paddd   xmm3,xmm7
> > > >
> > > > +        add     eax,esi
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        movdqa  XMMWORD[48+rsp],xmm3
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        add     ebp,DWORD[4+rsp]
> > > >
> > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        mov     esi,eax
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,edi
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        add     edx,DWORD[8+rsp]
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        mov     edi,ebp
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,esi
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        add     ecx,DWORD[12+rsp]
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        mov     esi,edx
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,edi
> > > >
> > > > +        movups  xmm0,XMMWORD[r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        cmp     r10,r14
> > > >
> > > > +        je      NEAR $L$done_ssse3
> > > >
> > > > +        movdqa  xmm3,XMMWORD[64+r11]
> > > >
> > > > +        movdqa  xmm13,XMMWORD[r11]
> > > >
> > > > +        movdqu  xmm4,XMMWORD[r10]
> > > >
> > > > +        movdqu  xmm5,XMMWORD[16+r10]
> > > >
> > > > +        movdqu  xmm6,XMMWORD[32+r10]
> > > >
> > > > +        movdqu  xmm7,XMMWORD[48+r10]
> > > >
> > > > +DB      102,15,56,0,227
> > > >
> > > > +        add     r10,64
> > > >
> > > > +        add     ebx,DWORD[16+rsp]
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +DB      102,15,56,0,235
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        paddd   xmm4,xmm13
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[20+rsp]
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        mov     esi,ebx
> > > >
> > > > +        movdqa  XMMWORD[rsp],xmm4
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,edi
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        psubd   xmm4,xmm13
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        add     ebp,DWORD[24+rsp]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,esi
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        add     edx,DWORD[28+rsp]
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        mov     esi,ebp
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        add     ecx,DWORD[32+rsp]
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +DB      102,15,56,0,243
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,esi
> > > >
> > > > +        movups  xmm0,XMMWORD[32+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        paddd   xmm5,xmm13
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        add     ebx,DWORD[36+rsp]
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        mov     esi,ecx
> > > >
> > > > +        movdqa  XMMWORD[16+rsp],xmm5
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        psubd   xmm5,xmm13
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[40+rsp]
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,esi
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        add     ebp,DWORD[44+rsp]
> > > >
> > > > +        movups  xmm1,XMMWORD[48+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        mov     esi,eax
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,edi
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        add     edx,DWORD[48+rsp]
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        mov     edi,ebp
> > > >
> > > > +DB      102,15,56,0,251
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,esi
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        paddd   xmm6,xmm13
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        add     ecx,DWORD[52+rsp]
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        mov     esi,edx
> > > >
> > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,edi
> > > >
> > > > +        cmp     r8d,11
> > > >
> > > > +        jb      NEAR $L$aesenclast4
> > > >
> > > > +        movups  xmm0,XMMWORD[64+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[80+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        je      NEAR $L$aesenclast4
> > > >
> > > > +        movups  xmm0,XMMWORD[96+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[112+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +$L$aesenclast4:
> > > >
> > > > +DB      102,15,56,221,209
> > > >
> > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        psubd   xmm6,xmm13
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        add     ebx,DWORD[56+rsp]
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[60+rsp]
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        mov     esi,ebx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,edi
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        movups  XMMWORD[48+r12*1+r13],xmm2
> > > >
> > > > +        lea     r12,[64+r12]
> > > >
> > > > +
> > > >
> > > > +        add     eax,DWORD[r9]
> > > >
> > > > +        add     esi,DWORD[4+r9]
> > > >
> > > > +        add     ecx,DWORD[8+r9]
> > > >
> > > > +        add     edx,DWORD[12+r9]
> > > >
> > > > +        mov     DWORD[r9],eax
> > > >
> > > > +        add     ebp,DWORD[16+r9]
> > > >
> > > > +        mov     DWORD[4+r9],esi
> > > >
> > > > +        mov     ebx,esi
> > > >
> > > > +        mov     DWORD[8+r9],ecx
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        mov     DWORD[12+r9],edx
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        mov     DWORD[16+r9],ebp
> > > >
> > > > +        and     esi,edi
> > > >
> > > > +        jmp     NEAR $L$oop_ssse3
> > > >
> > > > +
> > > >
> > > > +$L$done_ssse3:
> > > >
> > > > +        add     ebx,DWORD[16+rsp]
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[20+rsp]
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        mov     esi,ebx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,edi
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        add     ebp,DWORD[24+rsp]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,esi
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        add     edx,DWORD[28+rsp]
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        mov     esi,ebp
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        add     ecx,DWORD[32+rsp]
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,esi
> > > >
> > > > +        movups  xmm0,XMMWORD[32+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        add     ebx,DWORD[36+rsp]
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        mov     esi,ecx
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[40+rsp]
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,esi
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        add     ebp,DWORD[44+rsp]
> > > >
> > > > +        movups  xmm1,XMMWORD[48+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        mov     esi,eax
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,edi
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        add     edx,DWORD[48+rsp]
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        mov     edi,ebp
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,esi
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        add     ecx,DWORD[52+rsp]
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        mov     esi,edx
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,edi
> > > >
> > > > +        cmp     r8d,11
> > > >
> > > > +        jb      NEAR $L$aesenclast5
> > > >
> > > > +        movups  xmm0,XMMWORD[64+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[80+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        je      NEAR $L$aesenclast5
> > > >
> > > > +        movups  xmm0,XMMWORD[96+r15]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[112+r15]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +$L$aesenclast5:
> > > >
> > > > +DB      102,15,56,221,209
> > > >
> > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        add     ebx,DWORD[56+rsp]
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[60+rsp]
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        mov     esi,ebx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,edi
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        movups  XMMWORD[48+r12*1+r13],xmm2
> > > >
> > > > +        mov     r8,QWORD[88+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     eax,DWORD[r9]
> > > >
> > > > +        add     esi,DWORD[4+r9]
> > > >
> > > > +        add     ecx,DWORD[8+r9]
> > > >
> > > > +        mov     DWORD[r9],eax
> > > >
> > > > +        add     edx,DWORD[12+r9]
> > > >
> > > > +        mov     DWORD[4+r9],esi
> > > >
> > > > +        add     ebp,DWORD[16+r9]
> > > >
> > > > +        mov     DWORD[8+r9],ecx
> > > >
> > > > +        mov     DWORD[12+r9],edx
> > > >
> > > > +        mov     DWORD[16+r9],ebp
> > > >
> > > > +        movups  XMMWORD[r8],xmm2
> > > >
> > > > +        movaps  xmm6,XMMWORD[((96+0))+rsp]
> > > >
> > > > +        movaps  xmm7,XMMWORD[((96+16))+rsp]
> > > >
> > > > +        movaps  xmm8,XMMWORD[((96+32))+rsp]
> > > >
> > > > +        movaps  xmm9,XMMWORD[((96+48))+rsp]
> > > >
> > > > +        movaps  xmm10,XMMWORD[((96+64))+rsp]
> > > >
> > > > +        movaps  xmm11,XMMWORD[((96+80))+rsp]
> > > >
> > > > +        movaps  xmm12,XMMWORD[((96+96))+rsp]
> > > >
> > > > +        movaps  xmm13,XMMWORD[((96+112))+rsp]
> > > >
> > > > +        movaps  xmm14,XMMWORD[((96+128))+rsp]
> > > >
> > > > +        movaps  xmm15,XMMWORD[((96+144))+rsp]
> > > >
> > > > +        lea     rsi,[264+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_aesni_cbc_sha1_enc_ssse3:
> > > >
> > > > +ALIGN   64
> > > >
> > > > +K_XX_XX:
> > > >
> > > > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > > >
> > > > +        DD      0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
> > > >
> > > > +        DD      0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
> > > >
> > > > +        DD      0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
> > > >
> > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > >
> > > > +DB
> 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
> > > >
> > > > +
> > > >
> > > > +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115
> > > >
> > > > +DB      116,105,116,99,104,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
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +aesni_cbc_sha1_enc_shaext:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_aesni_cbc_sha1_enc_shaext:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +        mov     rcx,r9
> > > >
> > > > +        mov     r8,QWORD[40+rsp]
> > > >
> > > > +        mov     r9,QWORD[48+rsp]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        mov     r10,QWORD[56+rsp]
> > > >
> > > > +        lea     rsp,[((-168))+rsp]
> > > >
> > > > +        movaps  XMMWORD[(-8-160)+rax],xmm6
> > > >
> > > > +        movaps  XMMWORD[(-8-144)+rax],xmm7
> > > >
> > > > +        movaps  XMMWORD[(-8-128)+rax],xmm8
> > > >
> > > > +        movaps  XMMWORD[(-8-112)+rax],xmm9
> > > >
> > > > +        movaps  XMMWORD[(-8-96)+rax],xmm10
> > > >
> > > > +        movaps  XMMWORD[(-8-80)+rax],xmm11
> > > >
> > > > +        movaps  XMMWORD[(-8-64)+rax],xmm12
> > > >
> > > > +        movaps  XMMWORD[(-8-48)+rax],xmm13
> > > >
> > > > +        movaps  XMMWORD[(-8-32)+rax],xmm14
> > > >
> > > > +        movaps  XMMWORD[(-8-16)+rax],xmm15
> > > >
> > > > +$L$prologue_shaext:
> > > >
> > > > +        movdqu  xmm8,XMMWORD[r9]
> > > >
> > > > +        movd    xmm9,DWORD[16+r9]
> > > >
> > > > +        movdqa  xmm7,XMMWORD[((K_XX_XX+80))]
> > > >
> > > > +
> > > >
> > > > +        mov     r11d,DWORD[240+rcx]
> > > >
> > > > +        sub     rsi,rdi
> > > >
> > > > +        movups  xmm15,XMMWORD[rcx]
> > > >
> > > > +        movups  xmm2,XMMWORD[r8]
> > > >
> > > > +        movups  xmm0,XMMWORD[16+rcx]
> > > >
> > > > +        lea     rcx,[112+rcx]
> > > >
> > > > +
> > > >
> > > > +        pshufd  xmm8,xmm8,27
> > > >
> > > > +        pshufd  xmm9,xmm9,27
> > > >
> > > > +        jmp     NEAR $L$oop_shaext
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$oop_shaext:
> > > >
> > > > +        movups  xmm14,XMMWORD[rdi]
> > > >
> > > > +        xorps   xmm14,xmm15
> > > >
> > > > +        xorps   xmm2,xmm14
> > > >
> > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        movdqu  xmm3,XMMWORD[r10]
> > > >
> > > > +        movdqa  xmm12,xmm9
> > > >
> > > > +DB      102,15,56,0,223
> > > >
> > > > +        movdqu  xmm4,XMMWORD[16+r10]
> > > >
> > > > +        movdqa  xmm11,xmm8
> > > >
> > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +DB      102,15,56,0,231
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm9,xmm3
> > > >
> > > > +        movdqu  xmm5,XMMWORD[32+r10]
> > > >
> > > > +        lea     r10,[64+r10]
> > > >
> > > > +        pxor    xmm3,xmm12
> > > >
> > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        pxor    xmm3,xmm12
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      102,15,56,0,239
> > > >
> > > > +DB      69,15,58,204,193,0
> > > >
> > > > +DB      68,15,56,200,212
> > > >
> > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +DB      15,56,201,220
> > > >
> > > > +        movdqu  xmm6,XMMWORD[((-16))+r10]
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      102,15,56,0,247
> > > >
> > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      69,15,58,204,194,0
> > > >
> > > > +DB      68,15,56,200,205
> > > >
> > > > +        pxor    xmm3,xmm5
> > > >
> > > > +DB      15,56,201,229
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      69,15,58,204,193,0
> > > >
> > > > +DB      68,15,56,200,214
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      15,56,202,222
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +DB      15,56,201,238
> > > >
> > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      69,15,58,204,194,0
> > > >
> > > > +DB      68,15,56,200,203
> > > >
> > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      15,56,202,227
> > > >
> > > > +        pxor    xmm5,xmm3
> > > >
> > > > +DB      15,56,201,243
> > > >
> > > > +        cmp     r11d,11
> > > >
> > > > +        jb      NEAR $L$aesenclast6
> > > >
> > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        je      NEAR $L$aesenclast6
> > > >
> > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +$L$aesenclast6:
> > > >
> > > > +DB      102,15,56,221,209
> > > >
> > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      69,15,58,204,193,0
> > > >
> > > > +DB      68,15,56,200,212
> > > >
> > > > +        movups  xmm14,XMMWORD[16+rdi]
> > > >
> > > > +        xorps   xmm14,xmm15
> > > >
> > > > +        movups  XMMWORD[rdi*1+rsi],xmm2
> > > >
> > > > +        xorps   xmm2,xmm14
> > > >
> > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      15,56,202,236
> > > >
> > > > +        pxor    xmm6,xmm4
> > > >
> > > > +DB      15,56,201,220
> > > >
> > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      69,15,58,204,194,1
> > > >
> > > > +DB      68,15,56,200,205
> > > >
> > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      15,56,202,245
> > > >
> > > > +        pxor    xmm3,xmm5
> > > >
> > > > +DB      15,56,201,229
> > > >
> > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      69,15,58,204,193,1
> > > >
> > > > +DB      68,15,56,200,214
> > > >
> > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      15,56,202,222
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +DB      15,56,201,238
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      69,15,58,204,194,1
> > > >
> > > > +DB      68,15,56,200,203
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      15,56,202,227
> > > >
> > > > +        pxor    xmm5,xmm3
> > > >
> > > > +DB      15,56,201,243
> > > >
> > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      69,15,58,204,193,1
> > > >
> > > > +DB      68,15,56,200,212
> > > >
> > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      15,56,202,236
> > > >
> > > > +        pxor    xmm6,xmm4
> > > >
> > > > +DB      15,56,201,220
> > > >
> > > > +        cmp     r11d,11
> > > >
> > > > +        jb      NEAR $L$aesenclast7
> > > >
> > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        je      NEAR $L$aesenclast7
> > > >
> > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +$L$aesenclast7:
> > > >
> > > > +DB      102,15,56,221,209
> > > >
> > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      69,15,58,204,194,1
> > > >
> > > > +DB      68,15,56,200,205
> > > >
> > > > +        movups  xmm14,XMMWORD[32+rdi]
> > > >
> > > > +        xorps   xmm14,xmm15
> > > >
> > > > +        movups  XMMWORD[16+rdi*1+rsi],xmm2
> > > >
> > > > +        xorps   xmm2,xmm14
> > > >
> > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      15,56,202,245
> > > >
> > > > +        pxor    xmm3,xmm5
> > > >
> > > > +DB      15,56,201,229
> > > >
> > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      69,15,58,204,193,2
> > > >
> > > > +DB      68,15,56,200,214
> > > >
> > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      15,56,202,222
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +DB      15,56,201,238
> > > >
> > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      69,15,58,204,194,2
> > > >
> > > > +DB      68,15,56,200,203
> > > >
> > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      15,56,202,227
> > > >
> > > > +        pxor    xmm5,xmm3
> > > >
> > > > +DB      15,56,201,243
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      69,15,58,204,193,2
> > > >
> > > > +DB      68,15,56,200,212
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      15,56,202,236
> > > >
> > > > +        pxor    xmm6,xmm4
> > > >
> > > > +DB      15,56,201,220
> > > >
> > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      69,15,58,204,194,2
> > > >
> > > > +DB      68,15,56,200,205
> > > >
> > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      15,56,202,245
> > > >
> > > > +        pxor    xmm3,xmm5
> > > >
> > > > +DB      15,56,201,229
> > > >
> > > > +        cmp     r11d,11
> > > >
> > > > +        jb      NEAR $L$aesenclast8
> > > >
> > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        je      NEAR $L$aesenclast8
> > > >
> > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +$L$aesenclast8:
> > > >
> > > > +DB      102,15,56,221,209
> > > >
> > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      69,15,58,204,193,2
> > > >
> > > > +DB      68,15,56,200,214
> > > >
> > > > +        movups  xmm14,XMMWORD[48+rdi]
> > > >
> > > > +        xorps   xmm14,xmm15
> > > >
> > > > +        movups  XMMWORD[32+rdi*1+rsi],xmm2
> > > >
> > > > +        xorps   xmm2,xmm14
> > > >
> > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      15,56,202,222
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +DB      15,56,201,238
> > > >
> > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      69,15,58,204,194,3
> > > >
> > > > +DB      68,15,56,200,203
> > > >
> > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      15,56,202,227
> > > >
> > > > +        pxor    xmm5,xmm3
> > > >
> > > > +DB      15,56,201,243
> > > >
> > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      69,15,58,204,193,3
> > > >
> > > > +DB      68,15,56,200,212
> > > >
> > > > +DB      15,56,202,236
> > > >
> > > > +        pxor    xmm6,xmm4
> > > >
> > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      69,15,58,204,194,3
> > > >
> > > > +DB      68,15,56,200,205
> > > >
> > > > +DB      15,56,202,245
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movdqa  xmm5,xmm12
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      69,15,58,204,193,3
> > > >
> > > > +DB      68,15,56,200,214
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      69,15,58,204,194,3
> > > >
> > > > +DB      68,15,56,200,205
> > > >
> > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        cmp     r11d,11
> > > >
> > > > +        jb      NEAR $L$aesenclast9
> > > >
> > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        je      NEAR $L$aesenclast9
> > > >
> > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +$L$aesenclast9:
> > > >
> > > > +DB      102,15,56,221,209
> > > >
> > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > >
> > > > +        dec     rdx
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm8,xmm11
> > > >
> > > > +        movups  XMMWORD[48+rdi*1+rsi],xmm2
> > > >
> > > > +        lea     rdi,[64+rdi]
> > > >
> > > > +        jnz     NEAR $L$oop_shaext
> > > >
> > > > +
> > > >
> > > > +        pshufd  xmm8,xmm8,27
> > > >
> > > > +        pshufd  xmm9,xmm9,27
> > > >
> > > > +        movups  XMMWORD[r8],xmm2
> > > >
> > > > +        movdqu  XMMWORD[r9],xmm8
> > > >
> > > > +        movd    DWORD[16+r9],xmm9
> > > >
> > > > +        movaps  xmm6,XMMWORD[((-8-160))+rax]
> > > >
> > > > +        movaps  xmm7,XMMWORD[((-8-144))+rax]
> > > >
> > > > +        movaps  xmm8,XMMWORD[((-8-128))+rax]
> > > >
> > > > +        movaps  xmm9,XMMWORD[((-8-112))+rax]
> > > >
> > > > +        movaps  xmm10,XMMWORD[((-8-96))+rax]
> > > >
> > > > +        movaps  xmm11,XMMWORD[((-8-80))+rax]
> > > >
> > > > +        movaps  xmm12,XMMWORD[((-8-64))+rax]
> > > >
> > > > +        movaps  xmm13,XMMWORD[((-8-48))+rax]
> > > >
> > > > +        movaps  xmm14,XMMWORD[((-8-32))+rax]
> > > >
> > > > +        movaps  xmm15,XMMWORD[((-8-16))+rax]
> > > >
> > > > +        mov     rsp,rax
> > > >
> > > > +$L$epilogue_shaext:
> > > >
> > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > >
> > > > +        mov     rsi,QWORD[16+rsp]
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +$L$SEH_end_aesni_cbc_sha1_enc_shaext:
> > > >
> > > > +EXTERN  __imp_RtlVirtualUnwind
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +ssse3_handler:
> > > >
> > > > +        push    rsi
> > > >
> > > > +        push    rdi
> > > >
> > > > +        push    rbx
> > > >
> > > > +        push    rbp
> > > >
> > > > +        push    r12
> > > >
> > > > +        push    r13
> > > >
> > > > +        push    r14
> > > >
> > > > +        push    r15
> > > >
> > > > +        pushfq
> > > >
> > > > +        sub     rsp,64
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[120+r8]
> > > >
> > > > +        mov     rbx,QWORD[248+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,QWORD[8+r9]
> > > >
> > > > +        mov     r11,QWORD[56+r9]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[152+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[4+r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jae     NEAR $L$common_seh_tail
> > > >
> > > > +        lea     r10,[aesni_cbc_sha1_enc_shaext]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$seh_no_shaext
> > > >
> > > > +
> > > >
> > > > +        lea     rsi,[rax]
> > > >
> > > > +        lea     rdi,[512+r8]
> > > >
> > > > +        mov     ecx,20
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +        lea     rax,[168+rax]
> > > >
> > > > +        jmp     NEAR $L$common_seh_tail
> > > >
> > > > +$L$seh_no_shaext:
> > > >
> > > > +        lea     rsi,[96+rax]
> > > >
> > > > +        lea     rdi,[512+r8]
> > > >
> > > > +        mov     ecx,20
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +        lea     rax,[264+rax]
> > > >
> > > > +
> > > >
> > > > +        mov     r15,QWORD[rax]
> > > >
> > > > +        mov     r14,QWORD[8+rax]
> > > >
> > > > +        mov     r13,QWORD[16+rax]
> > > >
> > > > +        mov     r12,QWORD[24+rax]
> > > >
> > > > +        mov     rbp,QWORD[32+rax]
> > > >
> > > > +        mov     rbx,QWORD[40+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$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[40+r9]
> > > >
> > > > +        mov     rsi,r8
> > > >
> > > > +        mov     ecx,154
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,r9
> > > >
> > > > +        xor     rcx,rcx
> > > >
> > > > +        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
> > > >
> > > > +        popfq
> > > >
> > > > +        pop     r15
> > > >
> > > > +        pop     r14
> > > >
> > > > +        pop     r13
> > > >
> > > > +        pop     r12
> > > >
> > > > +        pop     rbp
> > > >
> > > > +        pop     rbx
> > > >
> > > > +        pop     rdi
> > > >
> > > > +        pop     rsi
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +section .pdata rdata align=4
> > > >
> > > > +ALIGN   4
> > > >
> > > > +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_end_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_info_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_end_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_info_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> > > >
> > > > +section .xdata rdata align=8
> > > >
> > > > +ALIGN   8
> > > >
> > > > +$L$SEH_info_aesni_cbc_sha1_enc_ssse3:
> > > >
> > > > +DB      9,0,0,0
> > > >
> > > > +        DD      ssse3_handler wrt ..imagebase
> > > >
> > > > +        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
> > > > wrt ..imagebase
> > > >
> > > > +$L$SEH_info_aesni_cbc_sha1_enc_shaext:
> > > >
> > > > +DB      9,0,0,0
> > > >
> > > > +        DD      ssse3_handler wrt ..imagebase
> > > >
> > > > +        DD      $L$prologue_shaext wrt ..imagebase,$L$epilogue_shaext
> > > > wrt ..imagebase
> > > >
> > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
> > sha256-
> > > > x86_64.nasm
> > > > new file mode 100644
> > > > index 0000000000..f5c250b904
> > > > --- /dev/null
> > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> > > > x86_64.nasm
> > > > @@ -0,0 +1,78 @@
> > > > +; WARNING: do not edit!
> > > >
> > > > +; Generated from openssl/crypto/aes/asm/aesni-sha256-x86_64.pl
> > > >
> > > > +;
> > > >
> > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> Reserved.
> > > >
> > > > +;
> > > >
> > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > >
> > > > +; this file except in compliance with the License.  You can obtain a
> copy
> > > >
> > > > +; in the file LICENSE in the source distribution or at
> > > >
> > > > +; https://www.openssl.org/source/license.html
> > > >
> > > > +
> > > >
> > > > +default rel
> > > >
> > > > +%define XMMWORD
> > > >
> > > > +%define YMMWORD
> > > >
> > > > +%define ZMMWORD
> > > >
> > > > +section .text code align=64
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +EXTERN  OPENSSL_ia32cap_P
> > > >
> > > > +global  aesni_cbc_sha256_enc
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +aesni_cbc_sha256_enc:
> > > >
> > > > +
> > > >
> > > > +        xor     eax,eax
> > > >
> > > > +        cmp     rcx,0
> > > >
> > > > +        je      NEAR $L$probe
> > > >
> > > > +        ud2
> > > >
> > > > +$L$probe:
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   64
> > > >
> > > > +
> > > >
> > > > +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      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > >
> > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > >
> > > > +        DD      0,0,0,0,0,0,0,0,-1,-1,-1,-1
> > > >
> > > > +        DD      0,0,0,0,0,0,0,0
> > > >
> > > > +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54
> > > >
> > > > +DB      32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95
> > > >
> > > > +DB      54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98
> > > >
> > > > +DB      121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108
> > > >
> > > > +DB      46,111,114,103,62,0
> > > >
> > > > +ALIGN   64
> > > >
> > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
> > x86_64.nasm
> > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
> > > > new file mode 100644
> > > > index 0000000000..57ee23ea8c
> > > > --- /dev/null
> > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
> > > > @@ -0,0 +1,5103 @@
> > > > +; WARNING: do not edit!
> > > >
> > > > +; Generated from openssl/crypto/aes/asm/aesni-x86_64.pl
> > > >
> > > > +;
> > > >
> > > > +; Copyright 2009-2020 The OpenSSL Project Authors. All Rights
> Reserved.
> > > >
> > > > +;
> > > >
> > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > >
> > > > +; this file except in compliance with the License.  You can obtain a
> copy
> > > >
> > > > +; in the file LICENSE in the source distribution or at
> > > >
> > > > +; https://www.openssl.org/source/license.html
> > > >
> > > > +
> > > >
> > > > +default rel
> > > >
> > > > +%define XMMWORD
> > > >
> > > > +%define YMMWORD
> > > >
> > > > +%define ZMMWORD
> > > >
> > > > +section .text code align=64
> > > >
> > > > +
> > > >
> > > > +EXTERN  OPENSSL_ia32cap_P
> > > >
> > > > +global  aesni_encrypt
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +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:
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        dec     eax
> > > >
> > > > +        movups  xmm1,XMMWORD[r8]
> > > >
> > > > +        lea     r8,[16+r8]
> > > >
> > > > +        jnz     NEAR $L$oop_enc1_1
> > > >
> > > > +DB      102,15,56,221,209
> > > >
> > > > +        pxor    xmm0,xmm0
> > > >
> > > > +        pxor    xmm1,xmm1
> > > >
> > > > +        movups  XMMWORD[rdx],xmm2
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +global  aesni_decrypt
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +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:
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +        dec     eax
> > > >
> > > > +        movups  xmm1,XMMWORD[r8]
> > > >
> > > > +        lea     r8,[16+r8]
> > > >
> > > > +        jnz     NEAR $L$oop_dec1_2
> > > >
> > > > +DB      102,15,56,223,209
> > > >
> > > > +        pxor    xmm0,xmm0
> > > >
> > > > +        pxor    xmm1,xmm1
> > > >
> > > > +        movups  XMMWORD[rdx],xmm2
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +_aesni_encrypt2:
> > > >
> > > > +
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        shl     eax,4
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +        xorps   xmm3,xmm0
> > > >
> > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > >
> > > > +        lea     rcx,[32+rax*1+rcx]
> > > >
> > > > +        neg     rax
> > > >
> > > > +        add     rax,16
> > > >
> > > > +
> > > >
> > > > +$L$enc_loop2:
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > >
> > > > +        add     rax,32
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      102,15,56,220,216
> > > >
> > > > +        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
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +_aesni_decrypt2:
> > > >
> > > > +
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        shl     eax,4
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +        xorps   xmm3,xmm0
> > > >
> > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > >
> > > > +        lea     rcx,[32+rax*1+rcx]
> > > >
> > > > +        neg     rax
> > > >
> > > > +        add     rax,16
> > > >
> > > > +
> > > >
> > > > +$L$dec_loop2:
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +DB      102,15,56,222,217
> > > >
> > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > >
> > > > +        add     rax,32
> > > >
> > > > +DB      102,15,56,222,208
> > > >
> > > > +DB      102,15,56,222,216
> > > >
> > > > +        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
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +_aesni_encrypt3:
> > > >
> > > > +
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        shl     eax,4
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +        xorps   xmm3,xmm0
> > > >
> > > > +        xorps   xmm4,xmm0
> > > >
> > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > >
> > > > +        lea     rcx,[32+rax*1+rcx]
> > > >
> > > > +        neg     rax
> > > >
> > > > +        add     rax,16
> > > >
> > > > +
> > > >
> > > > +$L$enc_loop3:
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +        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[((-16))+rax*1+rcx]
> > > >
> > > > +        jnz     NEAR $L$enc_loop3
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +DB      102,15,56,221,208
> > > >
> > > > +DB      102,15,56,221,216
> > > >
> > > > +DB      102,15,56,221,224
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +_aesni_decrypt3:
> > > >
> > > > +
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        shl     eax,4
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +        xorps   xmm3,xmm0
> > > >
> > > > +        xorps   xmm4,xmm0
> > > >
> > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > >
> > > > +        lea     rcx,[32+rax*1+rcx]
> > > >
> > > > +        neg     rax
> > > >
> > > > +        add     rax,16
> > > >
> > > > +
> > > >
> > > > +$L$dec_loop3:
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +DB      102,15,56,222,217
> > > >
> > > > +DB      102,15,56,222,225
> > > >
> > > > +        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[((-16))+rax*1+rcx]
> > > >
> > > > +        jnz     NEAR $L$dec_loop3
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +DB      102,15,56,222,217
> > > >
> > > > +DB      102,15,56,222,225
> > > >
> > > > +DB      102,15,56,223,208
> > > >
> > > > +DB      102,15,56,223,216
> > > >
> > > > +DB      102,15,56,223,224
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +_aesni_encrypt4:
> > > >
> > > > +
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        shl     eax,4
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +        xorps   xmm3,xmm0
> > > >
> > > > +        xorps   xmm4,xmm0
> > > >
> > > > +        xorps   xmm5,xmm0
> > > >
> > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > >
> > > > +        lea     rcx,[32+rax*1+rcx]
> > > >
> > > > +        neg     rax
> > > >
> > > > +DB      0x0f,0x1f,0x00
> > > >
> > > > +        add     rax,16
> > > >
> > > > +
> > > >
> > > > +$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[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[((-16))+rax*1+rcx]
> > > >
> > > > +        jnz     NEAR $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
> > > >
> > > > +DB      102,15,56,221,208
> > > >
> > > > +DB      102,15,56,221,216
> > > >
> > > > +DB      102,15,56,221,224
> > > >
> > > > +DB      102,15,56,221,232
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +_aesni_decrypt4:
> > > >
> > > > +
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        shl     eax,4
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +        xorps   xmm3,xmm0
> > > >
> > > > +        xorps   xmm4,xmm0
> > > >
> > > > +        xorps   xmm5,xmm0
> > > >
> > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > >
> > > > +        lea     rcx,[32+rax*1+rcx]
> > > >
> > > > +        neg     rax
> > > >
> > > > +DB      0x0f,0x1f,0x00
> > > >
> > > > +        add     rax,16
> > > >
> > > > +
> > > >
> > > > +$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[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[((-16))+rax*1+rcx]
> > > >
> > > > +        jnz     NEAR $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
> > > >
> > > > +DB      102,15,56,223,208
> > > >
> > > > +DB      102,15,56,223,216
> > > >
> > > > +DB      102,15,56,223,224
> > > >
> > > > +DB      102,15,56,223,232
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +_aesni_encrypt6:
> > > >
> > > > +
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        shl     eax,4
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        pxor    xmm4,xmm0
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        lea     rcx,[32+rax*1+rcx]
> > > >
> > > > +        neg     rax
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +        pxor    xmm5,xmm0
> > > >
> > > > +        pxor    xmm6,xmm0
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +        pxor    xmm7,xmm0
> > > >
> > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > >
> > > > +        add     rax,16
> > > >
> > > > +        jmp     NEAR $L$enc_loop6_enter
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$enc_loop6:
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +$L$enc_loop6_enter:
> > > >
> > > > +DB      102,15,56,220,233
> > > >
> > > > +DB      102,15,56,220,241
> > > >
> > > > +DB      102,15,56,220,249
> > > >
> > > > +        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
> > > >
> > > > +DB      102,15,56,220,240
> > > >
> > > > +DB      102,15,56,220,248
> > > >
> > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > >
> > > > +        jnz     NEAR $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
> > > >
> > > > +DB      102,15,56,221,208
> > > >
> > > > +DB      102,15,56,221,216
> > > >
> > > > +DB      102,15,56,221,224
> > > >
> > > > +DB      102,15,56,221,232
> > > >
> > > > +DB      102,15,56,221,240
> > > >
> > > > +DB      102,15,56,221,248
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +_aesni_decrypt6:
> > > >
> > > > +
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        shl     eax,4
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        pxor    xmm4,xmm0
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +        lea     rcx,[32+rax*1+rcx]
> > > >
> > > > +        neg     rax
> > > >
> > > > +DB      102,15,56,222,217
> > > >
> > > > +        pxor    xmm5,xmm0
> > > >
> > > > +        pxor    xmm6,xmm0
> > > >
> > > > +DB      102,15,56,222,225
> > > >
> > > > +        pxor    xmm7,xmm0
> > > >
> > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > >
> > > > +        add     rax,16
> > > >
> > > > +        jmp     NEAR $L$dec_loop6_enter
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$dec_loop6:
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +DB      102,15,56,222,217
> > > >
> > > > +DB      102,15,56,222,225
> > > >
> > > > +$L$dec_loop6_enter:
> > > >
> > > > +DB      102,15,56,222,233
> > > >
> > > > +DB      102,15,56,222,241
> > > >
> > > > +DB      102,15,56,222,249
> > > >
> > > > +        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
> > > >
> > > > +DB      102,15,56,222,240
> > > >
> > > > +DB      102,15,56,222,248
> > > >
> > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > >
> > > > +        jnz     NEAR $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
> > > >
> > > > +DB      102,15,56,223,208
> > > >
> > > > +DB      102,15,56,223,216
> > > >
> > > > +DB      102,15,56,223,224
> > > >
> > > > +DB      102,15,56,223,232
> > > >
> > > > +DB      102,15,56,223,240
> > > >
> > > > +DB      102,15,56,223,248
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +_aesni_encrypt8:
> > > >
> > > > +
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        shl     eax,4
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +        xorps   xmm3,xmm0
> > > >
> > > > +        pxor    xmm4,xmm0
> > > >
> > > > +        pxor    xmm5,xmm0
> > > >
> > > > +        pxor    xmm6,xmm0
> > > >
> > > > +        lea     rcx,[32+rax*1+rcx]
> > > >
> > > > +        neg     rax
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        pxor    xmm7,xmm0
> > > >
> > > > +        pxor    xmm8,xmm0
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +        pxor    xmm9,xmm0
> > > >
> > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > >
> > > > +        add     rax,16
> > > >
> > > > +        jmp     NEAR $L$enc_loop8_inner
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$enc_loop8:
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +$L$enc_loop8_inner:
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +DB      102,15,56,220,233
> > > >
> > > > +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
> > > >
> > > > +$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
> > > >
> > > > +DB      102,15,56,220,224
> > > >
> > > > +DB      102,15,56,220,232
> > > >
> > > > +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[((-16))+rax*1+rcx]
> > > >
> > > > +        jnz     NEAR $L$enc_loop8
> > > >
> > > > +
> > > >
> > > > +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
> > > >
> > > > +DB      102,68,15,56,220,193
> > > >
> > > > +DB      102,68,15,56,220,201
> > > >
> > > > +DB      102,15,56,221,208
> > > >
> > > > +DB      102,15,56,221,216
> > > >
> > > > +DB      102,15,56,221,224
> > > >
> > > > +DB      102,15,56,221,232
> > > >
> > > > +DB      102,15,56,221,240
> > > >
> > > > +DB      102,15,56,221,248
> > > >
> > > > +DB      102,68,15,56,221,192
> > > >
> > > > +DB      102,68,15,56,221,200
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +_aesni_decrypt8:
> > > >
> > > > +
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        shl     eax,4
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +        xorps   xmm3,xmm0
> > > >
> > > > +        pxor    xmm4,xmm0
> > > >
> > > > +        pxor    xmm5,xmm0
> > > >
> > > > +        pxor    xmm6,xmm0
> > > >
> > > > +        lea     rcx,[32+rax*1+rcx]
> > > >
> > > > +        neg     rax
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +        pxor    xmm7,xmm0
> > > >
> > > > +        pxor    xmm8,xmm0
> > > >
> > > > +DB      102,15,56,222,217
> > > >
> > > > +        pxor    xmm9,xmm0
> > > >
> > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > >
> > > > +        add     rax,16
> > > >
> > > > +        jmp     NEAR $L$dec_loop8_inner
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$dec_loop8:
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +DB      102,15,56,222,217
> > > >
> > > > +$L$dec_loop8_inner:
> > > >
> > > > +DB      102,15,56,222,225
> > > >
> > > > +DB      102,15,56,222,233
> > > >
> > > > +DB      102,15,56,222,241
> > > >
> > > > +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[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
> > > >
> > > > +DB      102,15,56,222,240
> > > >
> > > > +DB      102,15,56,222,248
> > > >
> > > > +DB      102,68,15,56,222,192
> > > >
> > > > +DB      102,68,15,56,222,200
> > > >
> > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > >
> > > > +        jnz     NEAR $L$dec_loop8
> > > >
> > > > +
> > > >
> > > > +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
> > > >
> > > > +DB      102,68,15,56,222,193
> > > >
> > > > +DB      102,68,15,56,222,201
> > > >
> > > > +DB      102,15,56,223,208
> > > >
> > > > +DB      102,15,56,223,216
> > > >
> > > > +DB      102,15,56,223,224
> > > >
> > > > +DB      102,15,56,223,232
> > > >
> > > > +DB      102,15,56,223,240
> > > >
> > > > +DB      102,15,56,223,248
> > > >
> > > > +DB      102,68,15,56,223,192
> > > >
> > > > +DB      102,68,15,56,223,200
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +global  aesni_ecb_encrypt
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +aesni_ecb_encrypt:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_aesni_ecb_encrypt:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +        mov     rcx,r9
> > > >
> > > > +        mov     r8,QWORD[40+rsp]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[((-88))+rsp]
> > > >
> > > > +        movaps  XMMWORD[rsp],xmm6
> > > >
> > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > >
> > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > >
> > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > >
> > > > +$L$ecb_enc_body:
> > > >
> > > > +        and     rdx,-16
> > > >
> > > > +        jz      NEAR $L$ecb_ret
> > > >
> > > > +
> > > >
> > > > +        mov     eax,DWORD[240+rcx]
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        mov     r11,rcx
> > > >
> > > > +        mov     r10d,eax
> > > >
> > > > +        test    r8d,r8d
> > > >
> > > > +        jz      NEAR $L$ecb_decrypt
> > > >
> > > > +
> > > >
> > > > +        cmp     rdx,0x80
> > > >
> > > > +        jb      NEAR $L$ecb_enc_tail
> > > >
> > > > +
> > > >
> > > > +        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[rsi],xmm2
> > > >
> > > > +        mov     rcx,r11
> > > >
> > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > >
> > > > +        mov     eax,r10d
> > > >
> > > > +        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,0x80
> > > >
> > > > +        jnc     NEAR $L$ecb_enc_loop8
> > > >
> > > > +
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        mov     rcx,r11
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        mov     eax,r10d
> > > >
> > > > +        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[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]
> > > >
> > > > +        xorps   xmm9,xmm9
> > > >
> > > > +        call    _aesni_encrypt8
> > > >
> > > > +        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[rcx]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        lea     rcx,[32+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +$L$oop_enc1_3:
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        dec     eax
> > > >
> > > > +        movups  xmm1,XMMWORD[rcx]
> > > >
> > > > +        lea     rcx,[16+rcx]
> > > >
> > > > +        jnz     NEAR $L$oop_enc1_3
> > > >
> > > > +DB      102,15,56,221,209
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        jmp     NEAR $L$ecb_ret
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ecb_enc_two:
> > > >
> > > > +        call    _aesni_encrypt2
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        jmp     NEAR $L$ecb_ret
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ecb_enc_three:
> > > >
> > > > +        call    _aesni_encrypt3
> > > >
> > > > +        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:
> > > >
> > > > +        call    _aesni_encrypt4
> > > >
> > > > +        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:
> > > >
> > > > +        xorps   xmm7,xmm7
> > > >
> > > > +        call    _aesni_encrypt6
> > > >
> > > > +        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:
> > > >
> > > > +        call    _aesni_encrypt6
> > > >
> > > > +        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,0x80
> > > >
> > > > +        jb      NEAR $L$ecb_dec_tail
> > > >
> > > > +
> > > >
> > > > +        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[rsi],xmm2
> > > >
> > > > +        mov     rcx,r11
> > > >
> > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > >
> > > > +        mov     eax,r10d
> > > >
> > > > +        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[r11]
> > > >
> > > > +        sub     rdx,0x80
> > > >
> > > > +        jnc     NEAR $L$ecb_dec_loop8
> > > >
> > > > +
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        mov     rcx,r11
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        mov     eax,r10d
> > > >
> > > > +        movups  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        movups  XMMWORD[48+rsi],xmm5
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +        movups  XMMWORD[64+rsi],xmm6
> > > >
> > > > +        pxor    xmm6,xmm6
> > > >
> > > > +        movups  XMMWORD[80+rsi],xmm7
> > > >
> > > > +        pxor    xmm7,xmm7
> > > >
> > > > +        movups  XMMWORD[96+rsi],xmm8
> > > >
> > > > +        pxor    xmm8,xmm8
> > > >
> > > > +        movups  XMMWORD[112+rsi],xmm9
> > > >
> > > > +        pxor    xmm9,xmm9
> > > >
> > > > +        lea     rsi,[128+rsi]
> > > >
> > > > +        add     rdx,0x80
> > > >
> > > > +        jz      NEAR $L$ecb_ret
> > > >
> > > > +
> > > >
> > > > +$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]
> > > >
> > > > +        xorps   xmm9,xmm9
> > > >
> > > > +        call    _aesni_decrypt8
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        movups  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        movups  XMMWORD[48+rsi],xmm5
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +        movups  XMMWORD[64+rsi],xmm6
> > > >
> > > > +        pxor    xmm6,xmm6
> > > >
> > > > +        movups  XMMWORD[80+rsi],xmm7
> > > >
> > > > +        pxor    xmm7,xmm7
> > > >
> > > > +        movups  XMMWORD[96+rsi],xmm8
> > > >
> > > > +        pxor    xmm8,xmm8
> > > >
> > > > +        pxor    xmm9,xmm9
> > > >
> > > > +        jmp     NEAR $L$ecb_ret
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ecb_dec_one:
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        lea     rcx,[32+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +$L$oop_dec1_4:
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +        dec     eax
> > > >
> > > > +        movups  xmm1,XMMWORD[rcx]
> > > >
> > > > +        lea     rcx,[16+rcx]
> > > >
> > > > +        jnz     NEAR $L$oop_dec1_4
> > > >
> > > > +DB      102,15,56,223,209
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        jmp     NEAR $L$ecb_ret
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ecb_dec_two:
> > > >
> > > > +        call    _aesni_decrypt2
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        jmp     NEAR $L$ecb_ret
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ecb_dec_three:
> > > >
> > > > +        call    _aesni_decrypt3
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        movups  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        jmp     NEAR $L$ecb_ret
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ecb_dec_four:
> > > >
> > > > +        call    _aesni_decrypt4
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        movups  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        movups  XMMWORD[48+rsi],xmm5
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +        jmp     NEAR $L$ecb_ret
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ecb_dec_five:
> > > >
> > > > +        xorps   xmm7,xmm7
> > > >
> > > > +        call    _aesni_decrypt6
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        movups  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        movups  XMMWORD[48+rsi],xmm5
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +        movups  XMMWORD[64+rsi],xmm6
> > > >
> > > > +        pxor    xmm6,xmm6
> > > >
> > > > +        pxor    xmm7,xmm7
> > > >
> > > > +        jmp     NEAR $L$ecb_ret
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ecb_dec_six:
> > > >
> > > > +        call    _aesni_decrypt6
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        movups  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        movups  XMMWORD[48+rsi],xmm5
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +        movups  XMMWORD[64+rsi],xmm6
> > > >
> > > > +        pxor    xmm6,xmm6
> > > >
> > > > +        movups  XMMWORD[80+rsi],xmm7
> > > >
> > > > +        pxor    xmm7,xmm7
> > > >
> > > > +
> > > >
> > > > +$L$ecb_ret:
> > > >
> > > > +        xorps   xmm0,xmm0
> > > >
> > > > +        pxor    xmm1,xmm1
> > > >
> > > > +        movaps  xmm6,XMMWORD[rsp]
> > > >
> > > > +        movaps  XMMWORD[rsp],xmm0
> > > >
> > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > >
> > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > >
> > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > >
> > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > >
> > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > >
> > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > >
> > > > +        lea     rsp,[88+rsp]
> > > >
> > > > +$L$ecb_enc_ret:
> > > >
> > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > >
> > > > +        mov     rsi,QWORD[16+rsp]
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +$L$SEH_end_aesni_ecb_encrypt:
> > > >
> > > > +global  aesni_ccm64_encrypt_blocks
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +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:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +        mov     rcx,r9
> > > >
> > > > +        mov     r8,QWORD[40+rsp]
> > > >
> > > > +        mov     r9,QWORD[48+rsp]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        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,[rcx]
> > > >
> > > > +        movdqu  xmm3,XMMWORD[r9]
> > > >
> > > > +        movdqa  xmm2,xmm6
> > > >
> > > > +        lea     rcx,[32+rax*1+rcx]
> > > >
> > > > +DB      102,15,56,0,247
> > > >
> > > > +        sub     r10,rax
> > > >
> > > > +        jmp     NEAR $L$ccm64_enc_outer
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ccm64_enc_outer:
> > > >
> > > > +        movups  xmm0,XMMWORD[r11]
> > > >
> > > > +        mov     rax,r10
> > > >
> > > > +        movups  xmm8,XMMWORD[rdi]
> > > >
> > > > +
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +        movups  xmm1,XMMWORD[16+r11]
> > > >
> > > > +        xorps   xmm0,xmm8
> > > >
> > > > +        xorps   xmm3,xmm0
> > > >
> > > > +        movups  xmm0,XMMWORD[32+r11]
> > > >
> > > > +
> > > >
> > > > +$L$ccm64_enc2_loop:
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > >
> > > > +        add     rax,32
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      102,15,56,220,216
> > > >
> > > > +        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
> > > >
> > > > +        dec     rdx
> > > >
> > > > +DB      102,15,56,221,208
> > > >
> > > > +DB      102,15,56,221,216
> > > >
> > > > +
> > > >
> > > > +        lea     rdi,[16+rdi]
> > > >
> > > > +        xorps   xmm8,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm6
> > > >
> > > > +        movups  XMMWORD[rsi],xmm8
> > > >
> > > > +DB      102,15,56,0,215
> > > >
> > > > +        lea     rsi,[16+rsi]
> > > >
> > > > +        jnz     NEAR $L$ccm64_enc_outer
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm0,xmm0
> > > >
> > > > +        pxor    xmm1,xmm1
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        movups  XMMWORD[r9],xmm3
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        pxor    xmm8,xmm8
> > > >
> > > > +        pxor    xmm6,xmm6
> > > >
> > > > +        movaps  xmm6,XMMWORD[rsp]
> > > >
> > > > +        movaps  XMMWORD[rsp],xmm0
> > > >
> > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > >
> > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > >
> > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > >
> > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > >
> > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > >
> > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > >
> > > > +        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:
> > > >
> > > > +global  aesni_ccm64_decrypt_blocks
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +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:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +        mov     rcx,r9
> > > >
> > > > +        mov     r8,QWORD[40+rsp]
> > > >
> > > > +        mov     r9,QWORD[48+rsp]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        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[rcx]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        lea     rcx,[32+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +$L$oop_enc1_5:
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        dec     eax
> > > >
> > > > +        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[rdi]
> > > >
> > > > +        paddq   xmm6,xmm9
> > > >
> > > > +        lea     rdi,[16+rdi]
> > > >
> > > > +        sub     rax,r10
> > > >
> > > > +        lea     rcx,[32+r10*1+r11]
> > > >
> > > > +        mov     r10,rax
> > > >
> > > > +        jmp     NEAR $L$ccm64_dec_outer
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ccm64_dec_outer:
> > > >
> > > > +        xorps   xmm8,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm6
> > > >
> > > > +        movups  XMMWORD[rsi],xmm8
> > > >
> > > > +        lea     rsi,[16+rsi]
> > > >
> > > > +DB      102,15,56,0,215
> > > >
> > > > +
> > > >
> > > > +        sub     rdx,1
> > > >
> > > > +        jz      NEAR $L$ccm64_dec_break
> > > >
> > > > +
> > > >
> > > > +        movups  xmm0,XMMWORD[r11]
> > > >
> > > > +        mov     rax,r10
> > > >
> > > > +        movups  xmm1,XMMWORD[16+r11]
> > > >
> > > > +        xorps   xmm8,xmm0
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +        xorps   xmm3,xmm8
> > > >
> > > > +        movups  xmm0,XMMWORD[32+r11]
> > > >
> > > > +        jmp     NEAR $L$ccm64_dec2_loop
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ccm64_dec2_loop:
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > >
> > > > +        add     rax,32
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      102,15,56,220,216
> > > >
> > > > +        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,[16+rdi]
> > > >
> > > > +        jmp     NEAR $L$ccm64_dec_outer
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ccm64_dec_break:
> > > >
> > > > +
> > > >
> > > > +        mov     eax,DWORD[240+r11]
> > > >
> > > > +        movups  xmm0,XMMWORD[r11]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+r11]
> > > >
> > > > +        xorps   xmm8,xmm0
> > > >
> > > > +        lea     r11,[32+r11]
> > > >
> > > > +        xorps   xmm3,xmm8
> > > >
> > > > +$L$oop_enc1_6:
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +        dec     eax
> > > >
> > > > +        movups  xmm1,XMMWORD[r11]
> > > >
> > > > +        lea     r11,[16+r11]
> > > >
> > > > +        jnz     NEAR $L$oop_enc1_6
> > > >
> > > > +DB      102,15,56,221,217
> > > >
> > > > +        pxor    xmm0,xmm0
> > > >
> > > > +        pxor    xmm1,xmm1
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        movups  XMMWORD[r9],xmm3
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        pxor    xmm8,xmm8
> > > >
> > > > +        pxor    xmm6,xmm6
> > > >
> > > > +        movaps  xmm6,XMMWORD[rsp]
> > > >
> > > > +        movaps  XMMWORD[rsp],xmm0
> > > >
> > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > >
> > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > >
> > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > >
> > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > >
> > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > >
> > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > >
> > > > +        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:
> > > >
> > > > +global  aesni_ctr32_encrypt_blocks
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +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:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +        mov     rcx,r9
> > > >
> > > > +        mov     r8,QWORD[40+rsp]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        cmp     rdx,1
> > > >
> > > > +        jne     NEAR $L$ctr32_bulk
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movups  xmm2,XMMWORD[r8]
> > > >
> > > > +        movups  xmm3,XMMWORD[rdi]
> > > >
> > > > +        mov     edx,DWORD[240+rcx]
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        lea     rcx,[32+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +$L$oop_enc1_7:
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        dec     edx
> > > >
> > > > +        movups  xmm1,XMMWORD[rcx]
> > > >
> > > > +        lea     rcx,[16+rcx]
> > > >
> > > > +        jnz     NEAR $L$oop_enc1_7
> > > >
> > > > +DB      102,15,56,221,209
> > > >
> > > > +        pxor    xmm0,xmm0
> > > >
> > > > +        pxor    xmm1,xmm1
> > > >
> > > > +        xorps   xmm2,xmm3
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        xorps   xmm2,xmm2
> > > >
> > > > +        jmp     NEAR $L$ctr32_epilogue
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ctr32_bulk:
> > > >
> > > > +        lea     r11,[rsp]
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        sub     rsp,288
> > > >
> > > > +        and     rsp,-16
> > > >
> > > > +        movaps  XMMWORD[(-168)+r11],xmm6
> > > >
> > > > +        movaps  XMMWORD[(-152)+r11],xmm7
> > > >
> > > > +        movaps  XMMWORD[(-136)+r11],xmm8
> > > >
> > > > +        movaps  XMMWORD[(-120)+r11],xmm9
> > > >
> > > > +        movaps  XMMWORD[(-104)+r11],xmm10
> > > >
> > > > +        movaps  XMMWORD[(-88)+r11],xmm11
> > > >
> > > > +        movaps  XMMWORD[(-72)+r11],xmm12
> > > >
> > > > +        movaps  XMMWORD[(-56)+r11],xmm13
> > > >
> > > > +        movaps  XMMWORD[(-40)+r11],xmm14
> > > >
> > > > +        movaps  XMMWORD[(-24)+r11],xmm15
> > > >
> > > > +$L$ctr32_body:
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqu  xmm2,XMMWORD[r8]
> > > >
> > > > +        movdqu  xmm0,XMMWORD[rcx]
> > > >
> > > > +        mov     r8d,DWORD[12+r8]
> > > >
> > > > +        pxor    xmm2,xmm0
> > > >
> > > > +        mov     ebp,DWORD[12+rcx]
> > > >
> > > > +        movdqa  XMMWORD[rsp],xmm2
> > > >
> > > > +        bswap   r8d
> > > >
> > > > +        movdqa  xmm3,xmm2
> > > >
> > > > +        movdqa  xmm4,xmm2
> > > >
> > > > +        movdqa  xmm5,xmm2
> > > >
> > > > +        movdqa  XMMWORD[64+rsp],xmm2
> > > >
> > > > +        movdqa  XMMWORD[80+rsp],xmm2
> > > >
> > > > +        movdqa  XMMWORD[96+rsp],xmm2
> > > >
> > > > +        mov     r10,rdx
> > > >
> > > > +        movdqa  XMMWORD[112+rsp],xmm2
> > > >
> > > > +
> > > >
> > > > +        lea     rax,[1+r8]
> > > >
> > > > +        lea     rdx,[2+r8]
> > > >
> > > > +        bswap   eax
> > > >
> > > > +        bswap   edx
> > > >
> > > > +        xor     eax,ebp
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +DB      102,15,58,34,216,3
> > > >
> > > > +        lea     rax,[3+r8]
> > > >
> > > > +        movdqa  XMMWORD[16+rsp],xmm3
> > > >
> > > > +DB      102,15,58,34,226,3
> > > >
> > > > +        bswap   eax
> > > >
> > > > +        mov     rdx,r10
> > > >
> > > > +        lea     r10,[4+r8]
> > > >
> > > > +        movdqa  XMMWORD[32+rsp],xmm4
> > > >
> > > > +        xor     eax,ebp
> > > >
> > > > +        bswap   r10d
> > > >
> > > > +DB      102,15,58,34,232,3
> > > >
> > > > +        xor     r10d,ebp
> > > >
> > > > +        movdqa  XMMWORD[48+rsp],xmm5
> > > >
> > > > +        lea     r9,[5+r8]
> > > >
> > > > +        mov     DWORD[((64+12))+rsp],r10d
> > > >
> > > > +        bswap   r9d
> > > >
> > > > +        lea     r10,[6+r8]
> > > >
> > > > +        mov     eax,DWORD[240+rcx]
> > > >
> > > > +        xor     r9d,ebp
> > > >
> > > > +        bswap   r10d
> > > >
> > > > +        mov     DWORD[((80+12))+rsp],r9d
> > > >
> > > > +        xor     r10d,ebp
> > > >
> > > > +        lea     r9,[7+r8]
> > > >
> > > > +        mov     DWORD[((96+12))+rsp],r10d
> > > >
> > > > +        bswap   r9d
> > > >
> > > > +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
> > > >
> > > > +        xor     r9d,ebp
> > > >
> > > > +        and     r10d,71303168
> > > >
> > > > +        mov     DWORD[((112+12))+rsp],r9d
> > > >
> > > > +
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,XMMWORD[64+rsp]
> > > >
> > > > +        movdqa  xmm7,XMMWORD[80+rsp]
> > > >
> > > > +
> > > >
> > > > +        cmp     rdx,8
> > > >
> > > > +        jb      NEAR $L$ctr32_tail
> > > >
> > > > +
> > > >
> > > > +        sub     rdx,6
> > > >
> > > > +        cmp     r10d,4194304
> > > >
> > > > +        je      NEAR $L$ctr32_6x
> > > >
> > > > +
> > > >
> > > > +        lea     rcx,[128+rcx]
> > > >
> > > > +        sub     rdx,2
> > > >
> > > > +        jmp     NEAR $L$ctr32_loop8
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ctr32_6x:
> > > >
> > > > +        shl     eax,4
> > > >
> > > > +        mov     r10d,48
> > > >
> > > > +        bswap   ebp
> > > >
> > > > +        lea     rcx,[32+rax*1+rcx]
> > > >
> > > > +        sub     r10,rax
> > > >
> > > > +        jmp     NEAR $L$ctr32_loop6
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ctr32_loop6:
> > > >
> > > > +        add     r8d,6
> > > >
> > > > +        movups  xmm0,XMMWORD[((-48))+r10*1+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        mov     eax,r8d
> > > >
> > > > +        xor     eax,ebp
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +DB      0x0f,0x38,0xf1,0x44,0x24,12
> > > >
> > > > +        lea     eax,[1+r8]
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +        xor     eax,ebp
> > > >
> > > > +DB      0x0f,0x38,0xf1,0x44,0x24,28
> > > >
> > > > +DB      102,15,56,220,233
> > > >
> > > > +        lea     eax,[2+r8]
> > > >
> > > > +        xor     eax,ebp
> > > >
> > > > +DB      102,15,56,220,241
> > > >
> > > > +DB      0x0f,0x38,0xf1,0x44,0x24,44
> > > >
> > > > +        lea     eax,[3+r8]
> > > >
> > > > +DB      102,15,56,220,249
> > > >
> > > > +        movups  xmm1,XMMWORD[((-32))+r10*1+rcx]
> > > >
> > > > +        xor     eax,ebp
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      0x0f,0x38,0xf1,0x44,0x24,60
> > > >
> > > > +        lea     eax,[4+r8]
> > > >
> > > > +DB      102,15,56,220,216
> > > >
> > > > +        xor     eax,ebp
> > > >
> > > > +DB      0x0f,0x38,0xf1,0x44,0x24,76
> > > >
> > > > +DB      102,15,56,220,224
> > > >
> > > > +        lea     eax,[5+r8]
> > > >
> > > > +        xor     eax,ebp
> > > >
> > > > +DB      102,15,56,220,232
> > > >
> > > > +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[((-16))+r10*1+rcx]
> > > >
> > > > +
> > > >
> > > > +        call    $L$enc_loop6
> > > >
> > > > +
> > > >
> > > > +        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[rsp]
> > > >
> > > > +        pxor    xmm9,xmm3
> > > >
> > > > +        movaps  xmm3,XMMWORD[16+rsp]
> > > >
> > > > +        pxor    xmm10,xmm4
> > > >
> > > > +        movaps  xmm4,XMMWORD[32+rsp]
> > > >
> > > > +        pxor    xmm11,xmm5
> > > >
> > > > +        movaps  xmm5,XMMWORD[48+rsp]
> > > >
> > > > +        pxor    xmm12,xmm6
> > > >
> > > > +        movaps  xmm6,XMMWORD[64+rsp]
> > > >
> > > > +        pxor    xmm13,xmm7
> > > >
> > > > +        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     NEAR $L$ctr32_loop6
> > > >
> > > > +
> > > >
> > > > +        add     rdx,6
> > > >
> > > > +        jz      NEAR $L$ctr32_done
> > > >
> > > > +
> > > >
> > > > +        lea     eax,[((-48))+r10]
> > > >
> > > > +        lea     rcx,[((-80))+r10*1+rcx]
> > > >
> > > > +        neg     eax
> > > >
> > > > +        shr     eax,4
> > > >
> > > > +        jmp     NEAR $L$ctr32_tail
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$ctr32_loop8:
> > > >
> > > > +        add     r8d,8
> > > >
> > > > +        movdqa  xmm8,XMMWORD[96+rsp]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        mov     r9d,r8d
> > > >
> > > > +        movdqa  xmm9,XMMWORD[112+rsp]
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +        bswap   r9d
> > > >
> > > > +        movups  xmm0,XMMWORD[((32-128))+rcx]
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +        xor     r9d,ebp
> > > >
> > > > +        nop
> > > >
> > > > +DB      102,15,56,220,233
> > > >
> > > > +        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[((48-128))+rcx]
> > > >
> > > > +        bswap   r9d
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      102,15,56,220,216
> > > >
> > > > +        xor     r9d,ebp
> > > >
> > > > +DB      0x66,0x90
> > > >
> > > > +DB      102,15,56,220,224
> > > >
> > > > +DB      102,15,56,220,232
> > > >
> > > > +        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[((64-128))+rcx]
> > > >
> > > > +        bswap   r9d
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +        xor     r9d,ebp
> > > >
> > > > +DB      0x66,0x90
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +DB      102,15,56,220,233
> > > >
> > > > +        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[((80-128))+rcx]
> > > >
> > > > +        bswap   r9d
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      102,15,56,220,216
> > > >
> > > > +        xor     r9d,ebp
> > > >
> > > > +DB      0x66,0x90
> > > >
> > > > +DB      102,15,56,220,224
> > > >
> > > > +DB      102,15,56,220,232
> > > >
> > > > +        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[((96-128))+rcx]
> > > >
> > > > +        bswap   r9d
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +        xor     r9d,ebp
> > > >
> > > > +DB      0x66,0x90
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +DB      102,15,56,220,233
> > > >
> > > > +        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[((112-128))+rcx]
> > > >
> > > > +        bswap   r9d
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      102,15,56,220,216
> > > >
> > > > +        xor     r9d,ebp
> > > >
> > > > +DB      0x66,0x90
> > > >
> > > > +DB      102,15,56,220,224
> > > >
> > > > +DB      102,15,56,220,232
> > > >
> > > > +        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[((128-128))+rcx]
> > > >
> > > > +        bswap   r9d
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +        xor     r9d,ebp
> > > >
> > > > +DB      0x66,0x90
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +DB      102,15,56,220,233
> > > >
> > > > +        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[((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,ebp
> > > >
> > > > +        movdqu  xmm10,XMMWORD[rdi]
> > > >
> > > > +DB      102,15,56,220,232
> > > >
> > > > +        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[((160-128))+rcx]
> > > >
> > > > +
> > > >
> > > > +        jb      NEAR $L$ctr32_enc_done
> > > >
> > > > +
> > > >
> > > > +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
> > > >
> > > > +DB      102,68,15,56,220,193
> > > >
> > > > +DB      102,68,15,56,220,201
> > > >
> > > > +        movups  xmm1,XMMWORD[((176-128))+rcx]
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      102,15,56,220,216
> > > >
> > > > +DB      102,15,56,220,224
> > > >
> > > > +DB      102,15,56,220,232
> > > >
> > > > +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[((192-128))+rcx]
> > > >
> > > > +        je      NEAR $L$ctr32_enc_done
> > > >
> > > > +
> > > >
> > > > +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
> > > >
> > > > +DB      102,68,15,56,220,193
> > > >
> > > > +DB      102,68,15,56,220,201
> > > >
> > > > +        movups  xmm1,XMMWORD[((208-128))+rcx]
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      102,15,56,220,216
> > > >
> > > > +DB      102,15,56,220,224
> > > >
> > > > +DB      102,15,56,220,232
> > > >
> > > > +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[((224-128))+rcx]
> > > >
> > > > +        jmp     NEAR $L$ctr32_enc_done
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ctr32_enc_done:
> > > >
> > > > +        movdqu  xmm11,XMMWORD[16+rdi]
> > > >
> > > > +        pxor    xmm10,xmm0
> > > >
> > > > +        movdqu  xmm12,XMMWORD[32+rdi]
> > > >
> > > > +        pxor    xmm11,xmm0
> > > >
> > > > +        movdqu  xmm13,XMMWORD[48+rdi]
> > > >
> > > > +        pxor    xmm12,xmm0
> > > >
> > > > +        movdqu  xmm14,XMMWORD[64+rdi]
> > > >
> > > > +        pxor    xmm13,xmm0
> > > >
> > > > +        movdqu  xmm15,XMMWORD[80+rdi]
> > > >
> > > > +        pxor    xmm14,xmm0
> > > >
> > > > +        pxor    xmm15,xmm0
> > > >
> > > > +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
> > > >
> > > > +DB      102,68,15,56,220,193
> > > >
> > > > +DB      102,68,15,56,220,201
> > > >
> > > > +        movdqu  xmm1,XMMWORD[96+rdi]
> > > >
> > > > +        lea     rdi,[128+rdi]
> > > >
> > > > +
> > > >
> > > > +DB      102,65,15,56,221,210
> > > >
> > > > +        pxor    xmm1,xmm0
> > > >
> > > > +        movdqu  xmm10,XMMWORD[((112-128))+rdi]
> > > >
> > > > +DB      102,65,15,56,221,219
> > > >
> > > > +        pxor    xmm10,xmm0
> > > >
> > > > +        movdqa  xmm11,XMMWORD[rsp]
> > > >
> > > > +DB      102,65,15,56,221,228
> > > >
> > > > +DB      102,65,15,56,221,237
> > > >
> > > > +        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[48+rsp]
> > > >
> > > > +        movdqa  xmm15,XMMWORD[64+rsp]
> > > >
> > > > +DB      102,68,15,56,221,193
> > > >
> > > > +        movdqa  xmm0,XMMWORD[80+rsp]
> > > >
> > > > +        movups  xmm1,XMMWORD[((16-128))+rcx]
> > > >
> > > > +DB      102,69,15,56,221,202
> > > >
> > > > +
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        movdqa  xmm2,xmm11
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        movdqa  xmm3,xmm12
> > > >
> > > > +        movups  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        movdqa  xmm4,xmm13
> > > >
> > > > +        movups  XMMWORD[48+rsi],xmm5
> > > >
> > > > +        movdqa  xmm5,xmm14
> > > >
> > > > +        movups  XMMWORD[64+rsi],xmm6
> > > >
> > > > +        movdqa  xmm6,xmm15
> > > >
> > > > +        movups  XMMWORD[80+rsi],xmm7
> > > >
> > > > +        movdqa  xmm7,xmm0
> > > >
> > > > +        movups  XMMWORD[96+rsi],xmm8
> > > >
> > > > +        movups  XMMWORD[112+rsi],xmm9
> > > >
> > > > +        lea     rsi,[128+rsi]
> > > >
> > > > +
> > > >
> > > > +        sub     rdx,8
> > > >
> > > > +        jnc     NEAR $L$ctr32_loop8
> > > >
> > > > +
> > > >
> > > > +        add     rdx,8
> > > >
> > > > +        jz      NEAR $L$ctr32_done
> > > >
> > > > +        lea     rcx,[((-128))+rcx]
> > > >
> > > > +
> > > >
> > > > +$L$ctr32_tail:
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        lea     rcx,[16+rcx]
> > > >
> > > > +        cmp     rdx,4
> > > >
> > > > +        jb      NEAR $L$ctr32_loop3
> > > >
> > > > +        je      NEAR $L$ctr32_loop4
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        shl     eax,4
> > > >
> > > > +        movdqa  xmm8,XMMWORD[96+rsp]
> > > >
> > > > +        pxor    xmm9,xmm9
> > > >
> > > > +
> > > >
> > > > +        movups  xmm0,XMMWORD[16+rcx]
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +        lea     rcx,[((32-16))+rax*1+rcx]
> > > >
> > > > +        neg     rax
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +        add     rax,16
> > > >
> > > > +        movups  xmm10,XMMWORD[rdi]
> > > >
> > > > +DB      102,15,56,220,233
> > > >
> > > > +DB      102,15,56,220,241
> > > >
> > > > +        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[48+rdi]
> > > >
> > > > +        pxor    xmm2,xmm10
> > > >
> > > > +        movdqu  xmm10,XMMWORD[64+rdi]
> > > >
> > > > +        pxor    xmm3,xmm11
> > > >
> > > > +        movdqu  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        pxor    xmm5,xmm13
> > > >
> > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > >
> > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > >
> > > > +        cmp     rdx,6
> > > >
> > > > +        jb      NEAR $L$ctr32_done
> > > >
> > > > +
> > > >
> > > > +        movups  xmm11,XMMWORD[80+rdi]
> > > >
> > > > +        xorps   xmm7,xmm11
> > > >
> > > > +        movups  XMMWORD[80+rsi],xmm7
> > > >
> > > > +        je      NEAR $L$ctr32_done
> > > >
> > > > +
> > > >
> > > > +        movups  xmm12,XMMWORD[96+rdi]
> > > >
> > > > +        xorps   xmm8,xmm12
> > > >
> > > > +        movups  XMMWORD[96+rsi],xmm8
> > > >
> > > > +        jmp     NEAR $L$ctr32_done
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$ctr32_loop4:
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        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[rcx]
> > > >
> > > > +        jnz     NEAR $L$ctr32_loop4
> > > >
> > > > +DB      102,15,56,221,209
> > > >
> > > > +DB      102,15,56,221,217
> > > >
> > > > +        movups  xmm10,XMMWORD[rdi]
> > > >
> > > > +        movups  xmm11,XMMWORD[16+rdi]
> > > >
> > > > +DB      102,15,56,221,225
> > > >
> > > > +DB      102,15,56,221,233
> > > >
> > > > +        movups  xmm12,XMMWORD[32+rdi]
> > > >
> > > > +        movups  xmm13,XMMWORD[48+rdi]
> > > >
> > > > +
> > > >
> > > > +        xorps   xmm2,xmm10
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        xorps   xmm3,xmm11
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        pxor    xmm5,xmm13
> > > >
> > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > >
> > > > +        jmp     NEAR $L$ctr32_done
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$ctr32_loop3:
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        lea     rcx,[16+rcx]
> > > >
> > > > +        dec     eax
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +        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[rdi]
> > > >
> > > > +        xorps   xmm2,xmm10
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        cmp     rdx,2
> > > >
> > > > +        jb      NEAR $L$ctr32_done
> > > >
> > > > +
> > > >
> > > > +        movups  xmm11,XMMWORD[16+rdi]
> > > >
> > > > +        xorps   xmm3,xmm11
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        je      NEAR $L$ctr32_done
> > > >
> > > > +
> > > >
> > > > +        movups  xmm12,XMMWORD[32+rdi]
> > > >
> > > > +        xorps   xmm4,xmm12
> > > >
> > > > +        movups  XMMWORD[32+rsi],xmm4
> > > >
> > > > +
> > > >
> > > > +$L$ctr32_done:
> > > >
> > > > +        xorps   xmm0,xmm0
> > > >
> > > > +        xor     ebp,ebp
> > > >
> > > > +        pxor    xmm1,xmm1
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +        movaps  xmm6,XMMWORD[((-168))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-168)+r11],xmm0
> > > >
> > > > +        movaps  xmm7,XMMWORD[((-152))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-152)+r11],xmm0
> > > >
> > > > +        movaps  xmm8,XMMWORD[((-136))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-136)+r11],xmm0
> > > >
> > > > +        movaps  xmm9,XMMWORD[((-120))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-120)+r11],xmm0
> > > >
> > > > +        movaps  xmm10,XMMWORD[((-104))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-104)+r11],xmm0
> > > >
> > > > +        movaps  xmm11,XMMWORD[((-88))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-88)+r11],xmm0
> > > >
> > > > +        movaps  xmm12,XMMWORD[((-72))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-72)+r11],xmm0
> > > >
> > > > +        movaps  xmm13,XMMWORD[((-56))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-56)+r11],xmm0
> > > >
> > > > +        movaps  xmm14,XMMWORD[((-40))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-40)+r11],xmm0
> > > >
> > > > +        movaps  xmm15,XMMWORD[((-24))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-24)+r11],xmm0
> > > >
> > > > +        movaps  XMMWORD[rsp],xmm0
> > > >
> > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > >
> > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > >
> > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > >
> > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > >
> > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > >
> > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > >
> > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > >
> > > > +        mov     rbp,QWORD[((-8))+r11]
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[r11]
> > > >
> > > > +
> > > >
> > > > +$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:
> > > >
> > > > +global  aesni_xts_encrypt
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +aesni_xts_encrypt:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_aesni_xts_encrypt:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +        mov     rcx,r9
> > > >
> > > > +        mov     r8,QWORD[40+rsp]
> > > >
> > > > +        mov     r9,QWORD[48+rsp]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        lea     r11,[rsp]
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        sub     rsp,272
> > > >
> > > > +        and     rsp,-16
> > > >
> > > > +        movaps  XMMWORD[(-168)+r11],xmm6
> > > >
> > > > +        movaps  XMMWORD[(-152)+r11],xmm7
> > > >
> > > > +        movaps  XMMWORD[(-136)+r11],xmm8
> > > >
> > > > +        movaps  XMMWORD[(-120)+r11],xmm9
> > > >
> > > > +        movaps  XMMWORD[(-104)+r11],xmm10
> > > >
> > > > +        movaps  XMMWORD[(-88)+r11],xmm11
> > > >
> > > > +        movaps  XMMWORD[(-72)+r11],xmm12
> > > >
> > > > +        movaps  XMMWORD[(-56)+r11],xmm13
> > > >
> > > > +        movaps  XMMWORD[(-40)+r11],xmm14
> > > >
> > > > +        movaps  XMMWORD[(-24)+r11],xmm15
> > > >
> > > > +$L$xts_enc_body:
> > > >
> > > > +        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:
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        dec     eax
> > > >
> > > > +        movups  xmm1,XMMWORD[r8]
> > > >
> > > > +        lea     r8,[16+r8]
> > > >
> > > > +        jnz     NEAR $L$oop_enc1_8
> > > >
> > > > +DB      102,15,56,221,209
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        mov     rbp,rcx
> > > >
> > > > +        mov     eax,r10d
> > > >
> > > > +        shl     r10d,4
> > > >
> > > > +        mov     r9,rdx
> > > >
> > > > +        and     rdx,-16
> > > >
> > > > +
> > > >
> > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,XMMWORD[$L$xts_magic]
> > > >
> > > > +        movdqa  xmm15,xmm2
> > > >
> > > > +        pshufd  xmm9,xmm2,0x5f
> > > >
> > > > +        pxor    xmm1,xmm0
> > > >
> > > > +        movdqa  xmm14,xmm9
> > > >
> > > > +        paddd   xmm9,xmm9
> > > >
> > > > +        movdqa  xmm10,xmm15
> > > >
> > > > +        psrad   xmm14,31
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +        pand    xmm14,xmm8
> > > >
> > > > +        pxor    xmm10,xmm0
> > > >
> > > > +        pxor    xmm15,xmm14
> > > >
> > > > +        movdqa  xmm14,xmm9
> > > >
> > > > +        paddd   xmm9,xmm9
> > > >
> > > > +        movdqa  xmm11,xmm15
> > > >
> > > > +        psrad   xmm14,31
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +        pand    xmm14,xmm8
> > > >
> > > > +        pxor    xmm11,xmm0
> > > >
> > > > +        pxor    xmm15,xmm14
> > > >
> > > > +        movdqa  xmm14,xmm9
> > > >
> > > > +        paddd   xmm9,xmm9
> > > >
> > > > +        movdqa  xmm12,xmm15
> > > >
> > > > +        psrad   xmm14,31
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +        pand    xmm14,xmm8
> > > >
> > > > +        pxor    xmm12,xmm0
> > > >
> > > > +        pxor    xmm15,xmm14
> > > >
> > > > +        movdqa  xmm14,xmm9
> > > >
> > > > +        paddd   xmm9,xmm9
> > > >
> > > > +        movdqa  xmm13,xmm15
> > > >
> > > > +        psrad   xmm14,31
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +        pand    xmm14,xmm8
> > > >
> > > > +        pxor    xmm13,xmm0
> > > >
> > > > +        pxor    xmm15,xmm14
> > > >
> > > > +        movdqa  xmm14,xmm15
> > > >
> > > > +        psrad   xmm9,31
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +        pand    xmm9,xmm8
> > > >
> > > > +        pxor    xmm14,xmm0
> > > >
> > > > +        pxor    xmm15,xmm9
> > > >
> > > > +        movaps  XMMWORD[96+rsp],xmm1
> > > >
> > > > +
> > > >
> > > > +        sub     rdx,16*6
> > > >
> > > > +        jc      NEAR $L$xts_enc_short
> > > >
> > > > +
> > > >
> > > > +        mov     eax,16+96
> > > >
> > > > +        lea     rcx,[32+r10*1+rbp]
> > > >
> > > > +        sub     rax,r10
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > >
> > > > +        mov     r10,rax
> > > >
> > > > +        lea     r8,[$L$xts_magic]
> > > >
> > > > +        jmp     NEAR $L$xts_enc_grandloop
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$xts_enc_grandloop:
> > > >
> > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > >
> > > > +        movdqa  xmm8,xmm0
> > > >
> > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > >
> > > > +        pxor    xmm2,xmm10
> > > >
> > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > >
> > > > +        pxor    xmm3,xmm11
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > >
> > > > +        pxor    xmm5,xmm13
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > >
> > > > +        pxor    xmm8,xmm15
> > > >
> > > > +        movdqa  xmm9,XMMWORD[96+rsp]
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +DB      102,15,56,220,233
> > > >
> > > > +        movups  xmm0,XMMWORD[32+rbp]
> > > >
> > > > +        lea     rdi,[96+rdi]
> > > >
> > > > +        pxor    xmm7,xmm8
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm10,xmm9
> > > >
> > > > +DB      102,15,56,220,241
> > > >
> > > > +        pxor    xmm11,xmm9
> > > >
> > > > +        movdqa  XMMWORD[rsp],xmm10
> > > >
> > > > +DB      102,15,56,220,249
> > > >
> > > > +        movups  xmm1,XMMWORD[48+rbp]
> > > >
> > > > +        pxor    xmm12,xmm9
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        pxor    xmm13,xmm9
> > > >
> > > > +        movdqa  XMMWORD[16+rsp],xmm11
> > > >
> > > > +DB      102,15,56,220,216
> > > >
> > > > +        pxor    xmm14,xmm9
> > > >
> > > > +        movdqa  XMMWORD[32+rsp],xmm12
> > > >
> > > > +DB      102,15,56,220,224
> > > >
> > > > +DB      102,15,56,220,232
> > > >
> > > > +        pxor    xmm8,xmm9
> > > >
> > > > +        movdqa  XMMWORD[64+rsp],xmm14
> > > >
> > > > +DB      102,15,56,220,240
> > > >
> > > > +DB      102,15,56,220,248
> > > >
> > > > +        movups  xmm0,XMMWORD[64+rbp]
> > > >
> > > > +        movdqa  XMMWORD[80+rsp],xmm8
> > > >
> > > > +        pshufd  xmm9,xmm15,0x5f
> > > >
> > > > +        jmp     NEAR $L$xts_enc_loop6
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$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[((-64))+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
> > > >
> > > > +DB      102,15,56,220,240
> > > >
> > > > +DB      102,15,56,220,248
> > > >
> > > > +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
> > > >
> > > > +        jnz     NEAR $L$xts_enc_loop6
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,XMMWORD[r8]
> > > >
> > > > +        movdqa  xmm14,xmm9
> > > >
> > > > +        paddd   xmm9,xmm9
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +        psrad   xmm14,31
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +        pand    xmm14,xmm8
> > > >
> > > > +        movups  xmm10,XMMWORD[rbp]
> > > >
> > > > +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[((-64))+rcx]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm14,xmm9
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        paddd   xmm9,xmm9
> > > >
> > > > +        pxor    xmm10,xmm15
> > > >
> > > > +DB      102,15,56,220,216
> > > >
> > > > +        psrad   xmm14,31
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +DB      102,15,56,220,224
> > > >
> > > > +DB      102,15,56,220,232
> > > >
> > > > +        pand    xmm14,xmm8
> > > >
> > > > +        movaps  xmm12,xmm11
> > > >
> > > > +DB      102,15,56,220,240
> > > >
> > > > +        pxor    xmm15,xmm14
> > > >
> > > > +        movdqa  xmm14,xmm9
> > > >
> > > > +DB      102,15,56,220,248
> > > >
> > > > +        movups  xmm0,XMMWORD[((-48))+rcx]
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm9,xmm9
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        pxor    xmm11,xmm15
> > > >
> > > > +        psrad   xmm14,31
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +        pand    xmm14,xmm8
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +DB      102,15,56,220,233
> > > >
> > > > +        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[((-32))+rcx]
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm9,xmm9
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        pxor    xmm12,xmm15
> > > >
> > > > +        psrad   xmm14,31
> > > >
> > > > +DB      102,15,56,220,216
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +        pand    xmm14,xmm8
> > > >
> > > > +DB      102,15,56,220,224
> > > >
> > > > +DB      102,15,56,220,232
> > > >
> > > > +DB      102,15,56,220,240
> > > >
> > > > +        pxor    xmm15,xmm14
> > > >
> > > > +        movaps  xmm14,xmm13
> > > >
> > > > +DB      102,15,56,220,248
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm0,xmm9
> > > >
> > > > +        paddd   xmm9,xmm9
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        pxor    xmm13,xmm15
> > > >
> > > > +        psrad   xmm0,31
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +        pand    xmm0,xmm8
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +DB      102,15,56,220,233
> > > >
> > > > +        pxor    xmm15,xmm0
> > > >
> > > > +        movups  xmm0,XMMWORD[rbp]
> > > >
> > > > +DB      102,15,56,220,241
> > > >
> > > > +DB      102,15,56,220,249
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm14,xmm15
> > > >
> > > > +DB      102,15,56,221,84,36,0
> > > >
> > > > +        psrad   xmm9,31
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +DB      102,15,56,221,92,36,16
> > > >
> > > > +DB      102,15,56,221,100,36,32
> > > >
> > > > +        pand    xmm9,xmm8
> > > >
> > > > +        mov     rax,r10
> > > >
> > > > +DB      102,15,56,221,108,36,48
> > > >
> > > > +DB      102,15,56,221,116,36,64
> > > >
> > > > +DB      102,15,56,221,124,36,80
> > > >
> > > > +        pxor    xmm15,xmm9
> > > >
> > > > +
> > > >
> > > > +        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     NEAR $L$xts_enc_grandloop
> > > >
> > > > +
> > > >
> > > > +        mov     eax,16+96
> > > >
> > > > +        sub     eax,r10d
> > > >
> > > > +        mov     rcx,rbp
> > > >
> > > > +        shr     eax,4
> > > >
> > > > +
> > > >
> > > > +$L$xts_enc_short:
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,eax
> > > >
> > > > +        pxor    xmm10,xmm0
> > > >
> > > > +        add     rdx,16*6
> > > >
> > > > +        jz      NEAR $L$xts_enc_done
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm11,xmm0
> > > >
> > > > +        cmp     rdx,0x20
> > > >
> > > > +        jb      NEAR $L$xts_enc_one
> > > >
> > > > +        pxor    xmm12,xmm0
> > > >
> > > > +        je      NEAR $L$xts_enc_two
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm13,xmm0
> > > >
> > > > +        cmp     rdx,0x40
> > > >
> > > > +        jb      NEAR $L$xts_enc_three
> > > >
> > > > +        pxor    xmm14,xmm0
> > > >
> > > > +        je      NEAR $L$xts_enc_four
> > > >
> > > > +
> > > >
> > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > >
> > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > >
> > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > >
> > > > +        pxor    xmm2,xmm10
> > > >
> > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > >
> > > > +        pxor    xmm3,xmm11
> > > >
> > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > >
> > > > +        lea     rdi,[80+rdi]
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        pxor    xmm5,xmm13
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +        pxor    xmm7,xmm7
> > > >
> > > > +
> > > >
> > > > +        call    _aesni_encrypt6
> > > >
> > > > +
> > > >
> > > > +        xorps   xmm2,xmm10
> > > >
> > > > +        movdqa  xmm10,xmm15
> > > >
> > > > +        xorps   xmm3,xmm11
> > > >
> > > > +        xorps   xmm4,xmm12
> > > >
> > > > +        movdqu  XMMWORD[rsi],xmm2
> > > >
> > > > +        xorps   xmm5,xmm13
> > > >
> > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        xorps   xmm6,xmm14
> > > >
> > > > +        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[rdi]
> > > >
> > > > +        lea     rdi,[16+rdi]
> > > >
> > > > +        xorps   xmm2,xmm10
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        lea     rcx,[32+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +$L$oop_enc1_9:
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        dec     eax
> > > >
> > > > +        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[rsi],xmm2
> > > >
> > > > +        lea     rsi,[16+rsi]
> > > >
> > > > +        jmp     NEAR $L$xts_enc_done
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$xts_enc_two:
> > > >
> > > > +        movups  xmm2,XMMWORD[rdi]
> > > >
> > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > >
> > > > +        lea     rdi,[32+rdi]
> > > >
> > > > +        xorps   xmm2,xmm10
> > > >
> > > > +        xorps   xmm3,xmm11
> > > >
> > > > +
> > > >
> > > > +        call    _aesni_encrypt2
> > > >
> > > > +
> > > >
> > > > +        xorps   xmm2,xmm10
> > > >
> > > > +        movdqa  xmm10,xmm12
> > > >
> > > > +        xorps   xmm3,xmm11
> > > >
> > > > +        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[rdi]
> > > >
> > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > >
> > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > >
> > > > +        lea     rdi,[48+rdi]
> > > >
> > > > +        xorps   xmm2,xmm10
> > > >
> > > > +        xorps   xmm3,xmm11
> > > >
> > > > +        xorps   xmm4,xmm12
> > > >
> > > > +
> > > >
> > > > +        call    _aesni_encrypt3
> > > >
> > > > +
> > > >
> > > > +        xorps   xmm2,xmm10
> > > >
> > > > +        movdqa  xmm10,xmm13
> > > >
> > > > +        xorps   xmm3,xmm11
> > > >
> > > > +        xorps   xmm4,xmm12
> > > >
> > > > +        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[rdi]
> > > >
> > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > >
> > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > >
> > > > +        xorps   xmm2,xmm10
> > > >
> > > > +        movups  xmm5,XMMWORD[48+rdi]
> > > >
> > > > +        lea     rdi,[64+rdi]
> > > >
> > > > +        xorps   xmm3,xmm11
> > > >
> > > > +        xorps   xmm4,xmm12
> > > >
> > > > +        xorps   xmm5,xmm13
> > > >
> > > > +
> > > >
> > > > +        call    _aesni_encrypt4
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm2,xmm10
> > > >
> > > > +        movdqa  xmm10,xmm14
> > > >
> > > > +        pxor    xmm3,xmm11
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        movdqu  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm5,xmm13
> > > >
> > > > +        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:
> > > >
> > > > +        and     r9,15
> > > >
> > > > +        jz      NEAR $L$xts_enc_ret
> > > >
> > > > +        mov     rdx,r9
> > > >
> > > > +
> > > >
> > > > +$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     NEAR $L$xts_enc_steal
> > > >
> > > > +
> > > >
> > > > +        sub     rsi,r9
> > > >
> > > > +        mov     rcx,rbp
> > > >
> > > > +        mov     eax,r10d
> > > >
> > > > +
> > > >
> > > > +        movups  xmm2,XMMWORD[((-16))+rsi]
> > > >
> > > > +        xorps   xmm2,xmm10
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        lea     rcx,[32+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +$L$oop_enc1_10:
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        dec     eax
> > > >
> > > > +        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[(-16)+rsi],xmm2
> > > >
> > > > +
> > > >
> > > > +$L$xts_enc_ret:
> > > >
> > > > +        xorps   xmm0,xmm0
> > > >
> > > > +        pxor    xmm1,xmm1
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +        movaps  xmm6,XMMWORD[((-168))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-168)+r11],xmm0
> > > >
> > > > +        movaps  xmm7,XMMWORD[((-152))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-152)+r11],xmm0
> > > >
> > > > +        movaps  xmm8,XMMWORD[((-136))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-136)+r11],xmm0
> > > >
> > > > +        movaps  xmm9,XMMWORD[((-120))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-120)+r11],xmm0
> > > >
> > > > +        movaps  xmm10,XMMWORD[((-104))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-104)+r11],xmm0
> > > >
> > > > +        movaps  xmm11,XMMWORD[((-88))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-88)+r11],xmm0
> > > >
> > > > +        movaps  xmm12,XMMWORD[((-72))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-72)+r11],xmm0
> > > >
> > > > +        movaps  xmm13,XMMWORD[((-56))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-56)+r11],xmm0
> > > >
> > > > +        movaps  xmm14,XMMWORD[((-40))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-40)+r11],xmm0
> > > >
> > > > +        movaps  xmm15,XMMWORD[((-24))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-24)+r11],xmm0
> > > >
> > > > +        movaps  XMMWORD[rsp],xmm0
> > > >
> > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > >
> > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > >
> > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > >
> > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > >
> > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > >
> > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > >
> > > > +        mov     rbp,QWORD[((-8))+r11]
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[r11]
> > > >
> > > > +
> > > >
> > > > +$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:
> > > >
> > > > +global  aesni_xts_decrypt
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +aesni_xts_decrypt:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_aesni_xts_decrypt:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +        mov     rcx,r9
> > > >
> > > > +        mov     r8,QWORD[40+rsp]
> > > >
> > > > +        mov     r9,QWORD[48+rsp]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        lea     r11,[rsp]
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        sub     rsp,272
> > > >
> > > > +        and     rsp,-16
> > > >
> > > > +        movaps  XMMWORD[(-168)+r11],xmm6
> > > >
> > > > +        movaps  XMMWORD[(-152)+r11],xmm7
> > > >
> > > > +        movaps  XMMWORD[(-136)+r11],xmm8
> > > >
> > > > +        movaps  XMMWORD[(-120)+r11],xmm9
> > > >
> > > > +        movaps  XMMWORD[(-104)+r11],xmm10
> > > >
> > > > +        movaps  XMMWORD[(-88)+r11],xmm11
> > > >
> > > > +        movaps  XMMWORD[(-72)+r11],xmm12
> > > >
> > > > +        movaps  XMMWORD[(-56)+r11],xmm13
> > > >
> > > > +        movaps  XMMWORD[(-40)+r11],xmm14
> > > >
> > > > +        movaps  XMMWORD[(-24)+r11],xmm15
> > > >
> > > > +$L$xts_dec_body:
> > > >
> > > > +        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:
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        dec     eax
> > > >
> > > > +        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
> > > >
> > > > +        setnz   al
> > > >
> > > > +        shl     rax,4
> > > >
> > > > +        sub     rdx,rax
> > > >
> > > > +
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        mov     rbp,rcx
> > > >
> > > > +        mov     eax,r10d
> > > >
> > > > +        shl     r10d,4
> > > >
> > > > +        mov     r9,rdx
> > > >
> > > > +        and     rdx,-16
> > > >
> > > > +
> > > >
> > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,XMMWORD[$L$xts_magic]
> > > >
> > > > +        movdqa  xmm15,xmm2
> > > >
> > > > +        pshufd  xmm9,xmm2,0x5f
> > > >
> > > > +        pxor    xmm1,xmm0
> > > >
> > > > +        movdqa  xmm14,xmm9
> > > >
> > > > +        paddd   xmm9,xmm9
> > > >
> > > > +        movdqa  xmm10,xmm15
> > > >
> > > > +        psrad   xmm14,31
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +        pand    xmm14,xmm8
> > > >
> > > > +        pxor    xmm10,xmm0
> > > >
> > > > +        pxor    xmm15,xmm14
> > > >
> > > > +        movdqa  xmm14,xmm9
> > > >
> > > > +        paddd   xmm9,xmm9
> > > >
> > > > +        movdqa  xmm11,xmm15
> > > >
> > > > +        psrad   xmm14,31
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +        pand    xmm14,xmm8
> > > >
> > > > +        pxor    xmm11,xmm0
> > > >
> > > > +        pxor    xmm15,xmm14
> > > >
> > > > +        movdqa  xmm14,xmm9
> > > >
> > > > +        paddd   xmm9,xmm9
> > > >
> > > > +        movdqa  xmm12,xmm15
> > > >
> > > > +        psrad   xmm14,31
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +        pand    xmm14,xmm8
> > > >
> > > > +        pxor    xmm12,xmm0
> > > >
> > > > +        pxor    xmm15,xmm14
> > > >
> > > > +        movdqa  xmm14,xmm9
> > > >
> > > > +        paddd   xmm9,xmm9
> > > >
> > > > +        movdqa  xmm13,xmm15
> > > >
> > > > +        psrad   xmm14,31
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +        pand    xmm14,xmm8
> > > >
> > > > +        pxor    xmm13,xmm0
> > > >
> > > > +        pxor    xmm15,xmm14
> > > >
> > > > +        movdqa  xmm14,xmm15
> > > >
> > > > +        psrad   xmm9,31
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +        pand    xmm9,xmm8
> > > >
> > > > +        pxor    xmm14,xmm0
> > > >
> > > > +        pxor    xmm15,xmm9
> > > >
> > > > +        movaps  XMMWORD[96+rsp],xmm1
> > > >
> > > > +
> > > >
> > > > +        sub     rdx,16*6
> > > >
> > > > +        jc      NEAR $L$xts_dec_short
> > > >
> > > > +
> > > >
> > > > +        mov     eax,16+96
> > > >
> > > > +        lea     rcx,[32+r10*1+rbp]
> > > >
> > > > +        sub     rax,r10
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > >
> > > > +        mov     r10,rax
> > > >
> > > > +        lea     r8,[$L$xts_magic]
> > > >
> > > > +        jmp     NEAR $L$xts_dec_grandloop
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$xts_dec_grandloop:
> > > >
> > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > >
> > > > +        movdqa  xmm8,xmm0
> > > >
> > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > >
> > > > +        pxor    xmm2,xmm10
> > > >
> > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > >
> > > > +        pxor    xmm3,xmm11
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +DB      102,15,56,222,217
> > > >
> > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > >
> > > > +        pxor    xmm5,xmm13
> > > >
> > > > +DB      102,15,56,222,225
> > > >
> > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > >
> > > > +        pxor    xmm8,xmm15
> > > >
> > > > +        movdqa  xmm9,XMMWORD[96+rsp]
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +DB      102,15,56,222,233
> > > >
> > > > +        movups  xmm0,XMMWORD[32+rbp]
> > > >
> > > > +        lea     rdi,[96+rdi]
> > > >
> > > > +        pxor    xmm7,xmm8
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm10,xmm9
> > > >
> > > > +DB      102,15,56,222,241
> > > >
> > > > +        pxor    xmm11,xmm9
> > > >
> > > > +        movdqa  XMMWORD[rsp],xmm10
> > > >
> > > > +DB      102,15,56,222,249
> > > >
> > > > +        movups  xmm1,XMMWORD[48+rbp]
> > > >
> > > > +        pxor    xmm12,xmm9
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,222,208
> > > >
> > > > +        pxor    xmm13,xmm9
> > > >
> > > > +        movdqa  XMMWORD[16+rsp],xmm11
> > > >
> > > > +DB      102,15,56,222,216
> > > >
> > > > +        pxor    xmm14,xmm9
> > > >
> > > > +        movdqa  XMMWORD[32+rsp],xmm12
> > > >
> > > > +DB      102,15,56,222,224
> > > >
> > > > +DB      102,15,56,222,232
> > > >
> > > > +        pxor    xmm8,xmm9
> > > >
> > > > +        movdqa  XMMWORD[64+rsp],xmm14
> > > >
> > > > +DB      102,15,56,222,240
> > > >
> > > > +DB      102,15,56,222,248
> > > >
> > > > +        movups  xmm0,XMMWORD[64+rbp]
> > > >
> > > > +        movdqa  XMMWORD[80+rsp],xmm8
> > > >
> > > > +        pshufd  xmm9,xmm15,0x5f
> > > >
> > > > +        jmp     NEAR $L$xts_dec_loop6
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$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[((-64))+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
> > > >
> > > > +DB      102,15,56,222,240
> > > >
> > > > +DB      102,15,56,222,248
> > > >
> > > > +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
> > > >
> > > > +        jnz     NEAR $L$xts_dec_loop6
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,XMMWORD[r8]
> > > >
> > > > +        movdqa  xmm14,xmm9
> > > >
> > > > +        paddd   xmm9,xmm9
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +        psrad   xmm14,31
> > > >
> > > > +DB      102,15,56,222,217
> > > >
> > > > +        pand    xmm14,xmm8
> > > >
> > > > +        movups  xmm10,XMMWORD[rbp]
> > > >
> > > > +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[((-64))+rcx]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm14,xmm9
> > > >
> > > > +DB      102,15,56,222,208
> > > >
> > > > +        paddd   xmm9,xmm9
> > > >
> > > > +        pxor    xmm10,xmm15
> > > >
> > > > +DB      102,15,56,222,216
> > > >
> > > > +        psrad   xmm14,31
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +DB      102,15,56,222,224
> > > >
> > > > +DB      102,15,56,222,232
> > > >
> > > > +        pand    xmm14,xmm8
> > > >
> > > > +        movaps  xmm12,xmm11
> > > >
> > > > +DB      102,15,56,222,240
> > > >
> > > > +        pxor    xmm15,xmm14
> > > >
> > > > +        movdqa  xmm14,xmm9
> > > >
> > > > +DB      102,15,56,222,248
> > > >
> > > > +        movups  xmm0,XMMWORD[((-48))+rcx]
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm9,xmm9
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +        pxor    xmm11,xmm15
> > > >
> > > > +        psrad   xmm14,31
> > > >
> > > > +DB      102,15,56,222,217
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +        pand    xmm14,xmm8
> > > >
> > > > +DB      102,15,56,222,225
> > > >
> > > > +DB      102,15,56,222,233
> > > >
> > > > +        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[((-32))+rcx]
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm9,xmm9
> > > >
> > > > +DB      102,15,56,222,208
> > > >
> > > > +        pxor    xmm12,xmm15
> > > >
> > > > +        psrad   xmm14,31
> > > >
> > > > +DB      102,15,56,222,216
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +        pand    xmm14,xmm8
> > > >
> > > > +DB      102,15,56,222,224
> > > >
> > > > +DB      102,15,56,222,232
> > > >
> > > > +DB      102,15,56,222,240
> > > >
> > > > +        pxor    xmm15,xmm14
> > > >
> > > > +        movaps  xmm14,xmm13
> > > >
> > > > +DB      102,15,56,222,248
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm0,xmm9
> > > >
> > > > +        paddd   xmm9,xmm9
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +        pxor    xmm13,xmm15
> > > >
> > > > +        psrad   xmm0,31
> > > >
> > > > +DB      102,15,56,222,217
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +        pand    xmm0,xmm8
> > > >
> > > > +DB      102,15,56,222,225
> > > >
> > > > +DB      102,15,56,222,233
> > > >
> > > > +        pxor    xmm15,xmm0
> > > >
> > > > +        movups  xmm0,XMMWORD[rbp]
> > > >
> > > > +DB      102,15,56,222,241
> > > >
> > > > +DB      102,15,56,222,249
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm14,xmm15
> > > >
> > > > +DB      102,15,56,223,84,36,0
> > > >
> > > > +        psrad   xmm9,31
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +DB      102,15,56,223,92,36,16
> > > >
> > > > +DB      102,15,56,223,100,36,32
> > > >
> > > > +        pand    xmm9,xmm8
> > > >
> > > > +        mov     rax,r10
> > > >
> > > > +DB      102,15,56,223,108,36,48
> > > >
> > > > +DB      102,15,56,223,116,36,64
> > > >
> > > > +DB      102,15,56,223,124,36,80
> > > >
> > > > +        pxor    xmm15,xmm9
> > > >
> > > > +
> > > >
> > > > +        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     NEAR $L$xts_dec_grandloop
> > > >
> > > > +
> > > >
> > > > +        mov     eax,16+96
> > > >
> > > > +        sub     eax,r10d
> > > >
> > > > +        mov     rcx,rbp
> > > >
> > > > +        shr     eax,4
> > > >
> > > > +
> > > >
> > > > +$L$xts_dec_short:
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,eax
> > > >
> > > > +        pxor    xmm10,xmm0
> > > >
> > > > +        pxor    xmm11,xmm0
> > > >
> > > > +        add     rdx,16*6
> > > >
> > > > +        jz      NEAR $L$xts_dec_done
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm12,xmm0
> > > >
> > > > +        cmp     rdx,0x20
> > > >
> > > > +        jb      NEAR $L$xts_dec_one
> > > >
> > > > +        pxor    xmm13,xmm0
> > > >
> > > > +        je      NEAR $L$xts_dec_two
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm14,xmm0
> > > >
> > > > +        cmp     rdx,0x40
> > > >
> > > > +        jb      NEAR $L$xts_dec_three
> > > >
> > > > +        je      NEAR $L$xts_dec_four
> > > >
> > > > +
> > > >
> > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > >
> > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > >
> > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > >
> > > > +        pxor    xmm2,xmm10
> > > >
> > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > >
> > > > +        pxor    xmm3,xmm11
> > > >
> > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > >
> > > > +        lea     rdi,[80+rdi]
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        pxor    xmm5,xmm13
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +
> > > >
> > > > +        call    _aesni_decrypt6
> > > >
> > > > +
> > > >
> > > > +        xorps   xmm2,xmm10
> > > >
> > > > +        xorps   xmm3,xmm11
> > > >
> > > > +        xorps   xmm4,xmm12
> > > >
> > > > +        movdqu  XMMWORD[rsi],xmm2
> > > >
> > > > +        xorps   xmm5,xmm13
> > > >
> > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        xorps   xmm6,xmm14
> > > >
> > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        pxor    xmm14,xmm14
> > > >
> > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > >
> > > > +        pcmpgtd xmm14,xmm15
> > > >
> > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > >
> > > > +        lea     rsi,[80+rsi]
> > > >
> > > > +        pshufd  xmm11,xmm14,0x13
> > > >
> > > > +        and     r9,15
> > > >
> > > > +        jz      NEAR $L$xts_dec_ret
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm10,xmm15
> > > >
> > > > +        paddq   xmm15,xmm15
> > > >
> > > > +        pand    xmm11,xmm8
> > > >
> > > > +        pxor    xmm11,xmm15
> > > >
> > > > +        jmp     NEAR $L$xts_dec_done2
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$xts_dec_one:
> > > >
> > > > +        movups  xmm2,XMMWORD[rdi]
> > > >
> > > > +        lea     rdi,[16+rdi]
> > > >
> > > > +        xorps   xmm2,xmm10
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        lea     rcx,[32+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +$L$oop_dec1_12:
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +        dec     eax
> > > >
> > > > +        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[rsi],xmm2
> > > >
> > > > +        movdqa  xmm11,xmm12
> > > >
> > > > +        lea     rsi,[16+rsi]
> > > >
> > > > +        jmp     NEAR $L$xts_dec_done
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$xts_dec_two:
> > > >
> > > > +        movups  xmm2,XMMWORD[rdi]
> > > >
> > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > >
> > > > +        lea     rdi,[32+rdi]
> > > >
> > > > +        xorps   xmm2,xmm10
> > > >
> > > > +        xorps   xmm3,xmm11
> > > >
> > > > +
> > > >
> > > > +        call    _aesni_decrypt2
> > > >
> > > > +
> > > >
> > > > +        xorps   xmm2,xmm10
> > > >
> > > > +        movdqa  xmm10,xmm12
> > > >
> > > > +        xorps   xmm3,xmm11
> > > >
> > > > +        movdqa  xmm11,xmm13
> > > >
> > > > +        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[rdi]
> > > >
> > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > >
> > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > >
> > > > +        lea     rdi,[48+rdi]
> > > >
> > > > +        xorps   xmm2,xmm10
> > > >
> > > > +        xorps   xmm3,xmm11
> > > >
> > > > +        xorps   xmm4,xmm12
> > > >
> > > > +
> > > >
> > > > +        call    _aesni_decrypt3
> > > >
> > > > +
> > > >
> > > > +        xorps   xmm2,xmm10
> > > >
> > > > +        movdqa  xmm10,xmm13
> > > >
> > > > +        xorps   xmm3,xmm11
> > > >
> > > > +        movdqa  xmm11,xmm14
> > > >
> > > > +        xorps   xmm4,xmm12
> > > >
> > > > +        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[rdi]
> > > >
> > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > >
> > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > >
> > > > +        xorps   xmm2,xmm10
> > > >
> > > > +        movups  xmm5,XMMWORD[48+rdi]
> > > >
> > > > +        lea     rdi,[64+rdi]
> > > >
> > > > +        xorps   xmm3,xmm11
> > > >
> > > > +        xorps   xmm4,xmm12
> > > >
> > > > +        xorps   xmm5,xmm13
> > > >
> > > > +
> > > >
> > > > +        call    _aesni_decrypt4
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm2,xmm10
> > > >
> > > > +        movdqa  xmm10,xmm14
> > > >
> > > > +        pxor    xmm3,xmm11
> > > >
> > > > +        movdqa  xmm11,xmm15
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        movdqu  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm5,xmm13
> > > >
> > > > +        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:
> > > >
> > > > +        and     r9,15
> > > >
> > > > +        jz      NEAR $L$xts_dec_ret
> > > >
> > > > +$L$xts_dec_done2:
> > > >
> > > > +        mov     rdx,r9
> > > >
> > > > +        mov     rcx,rbp
> > > >
> > > > +        mov     eax,r10d
> > > >
> > > > +
> > > >
> > > > +        movups  xmm2,XMMWORD[rdi]
> > > >
> > > > +        xorps   xmm2,xmm11
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        lea     rcx,[32+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +$L$oop_dec1_13:
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +        dec     eax
> > > >
> > > > +        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[rsi],xmm2
> > > >
> > > > +
> > > >
> > > > +$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     NEAR $L$xts_dec_steal
> > > >
> > > > +
> > > >
> > > > +        sub     rsi,r9
> > > >
> > > > +        mov     rcx,rbp
> > > >
> > > > +        mov     eax,r10d
> > > >
> > > > +
> > > >
> > > > +        movups  xmm2,XMMWORD[rsi]
> > > >
> > > > +        xorps   xmm2,xmm10
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        lea     rcx,[32+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +$L$oop_dec1_14:
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +        dec     eax
> > > >
> > > > +        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[rsi],xmm2
> > > >
> > > > +
> > > >
> > > > +$L$xts_dec_ret:
> > > >
> > > > +        xorps   xmm0,xmm0
> > > >
> > > > +        pxor    xmm1,xmm1
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +        movaps  xmm6,XMMWORD[((-168))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-168)+r11],xmm0
> > > >
> > > > +        movaps  xmm7,XMMWORD[((-152))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-152)+r11],xmm0
> > > >
> > > > +        movaps  xmm8,XMMWORD[((-136))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-136)+r11],xmm0
> > > >
> > > > +        movaps  xmm9,XMMWORD[((-120))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-120)+r11],xmm0
> > > >
> > > > +        movaps  xmm10,XMMWORD[((-104))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-104)+r11],xmm0
> > > >
> > > > +        movaps  xmm11,XMMWORD[((-88))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-88)+r11],xmm0
> > > >
> > > > +        movaps  xmm12,XMMWORD[((-72))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-72)+r11],xmm0
> > > >
> > > > +        movaps  xmm13,XMMWORD[((-56))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-56)+r11],xmm0
> > > >
> > > > +        movaps  xmm14,XMMWORD[((-40))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-40)+r11],xmm0
> > > >
> > > > +        movaps  xmm15,XMMWORD[((-24))+r11]
> > > >
> > > > +        movaps  XMMWORD[(-24)+r11],xmm0
> > > >
> > > > +        movaps  XMMWORD[rsp],xmm0
> > > >
> > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > >
> > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > >
> > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > >
> > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > >
> > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > >
> > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > >
> > > > +        mov     rbp,QWORD[((-8))+r11]
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[r11]
> > > >
> > > > +
> > > >
> > > > +$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:
> > > >
> > > > +global  aesni_ocb_encrypt
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +aesni_ocb_encrypt:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_aesni_ocb_encrypt:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +        mov     rcx,r9
> > > >
> > > > +        mov     r8,QWORD[40+rsp]
> > > >
> > > > +        mov     r9,QWORD[48+rsp]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        lea     rax,[rsp]
> > > >
> > > > +        push    rbx
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        push    r12
> > > >
> > > > +
> > > >
> > > > +        push    r13
> > > >
> > > > +
> > > >
> > > > +        push    r14
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[((-160))+rsp]
> > > >
> > > > +        movaps  XMMWORD[rsp],xmm6
> > > >
> > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > >
> > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > >
> > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > >
> > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > >
> > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > >
> > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > >
> > > > +        movaps  XMMWORD[112+rsp],xmm13
> > > >
> > > > +        movaps  XMMWORD[128+rsp],xmm14
> > > >
> > > > +        movaps  XMMWORD[144+rsp],xmm15
> > > >
> > > > +$L$ocb_enc_body:
> > > >
> > > > +        mov     rbx,QWORD[56+rax]
> > > >
> > > > +        mov     rbp,QWORD[((56+8))+rax]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[240+rcx]
> > > >
> > > > +        mov     r11,rcx
> > > >
> > > > +        shl     r10d,4
> > > >
> > > > +        movups  xmm9,XMMWORD[rcx]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > >
> > > > +
> > > >
> > > > +        movdqu  xmm15,XMMWORD[r9]
> > > >
> > > > +        pxor    xmm9,xmm1
> > > >
> > > > +        pxor    xmm15,xmm1
> > > >
> > > > +
> > > >
> > > > +        mov     eax,16+32
> > > >
> > > > +        lea     rcx,[32+r10*1+r11]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+r11]
> > > >
> > > > +        sub     rax,r10
> > > >
> > > > +        mov     r10,rax
> > > >
> > > > +
> > > >
> > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > >
> > > > +        movdqu  xmm8,XMMWORD[rbp]
> > > >
> > > > +
> > > >
> > > > +        test    r8,1
> > > >
> > > > +        jnz     NEAR $L$ocb_enc_odd
> > > >
> > > > +
> > > >
> > > > +        bsf     r12,r8
> > > >
> > > > +        add     r8,1
> > > >
> > > > +        shl     r12,4
> > > >
> > > > +        movdqu  xmm7,XMMWORD[r12*1+rbx]
> > > >
> > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > >
> > > > +        lea     rdi,[16+rdi]
> > > >
> > > > +
> > > >
> > > > +        call    __ocb_encrypt1
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm15,xmm7
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        lea     rsi,[16+rsi]
> > > >
> > > > +        sub     rdx,1
> > > >
> > > > +        jz      NEAR $L$ocb_enc_done
> > > >
> > > > +
> > > >
> > > > +$L$ocb_enc_odd:
> > > >
> > > > +        lea     r12,[1+r8]
> > > >
> > > > +        lea     r13,[3+r8]
> > > >
> > > > +        lea     r14,[5+r8]
> > > >
> > > > +        lea     r8,[6+r8]
> > > >
> > > > +        bsf     r12,r12
> > > >
> > > > +        bsf     r13,r13
> > > >
> > > > +        bsf     r14,r14
> > > >
> > > > +        shl     r12,4
> > > >
> > > > +        shl     r13,4
> > > >
> > > > +        shl     r14,4
> > > >
> > > > +
> > > >
> > > > +        sub     rdx,6
> > > >
> > > > +        jc      NEAR $L$ocb_enc_short
> > > >
> > > > +        jmp     NEAR $L$ocb_enc_grandloop
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$ocb_enc_grandloop:
> > > >
> > > > +        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]
> > > >
> > > > +        lea     rdi,[96+rdi]
> > > >
> > > > +
> > > >
> > > > +        call    __ocb_encrypt6
> > > >
> > > > +
> > > >
> > > > +        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
> > > >
> > > > +        lea     rsi,[96+rsi]
> > > >
> > > > +        sub     rdx,6
> > > >
> > > > +        jnc     NEAR $L$ocb_enc_grandloop
> > > >
> > > > +
> > > >
> > > > +$L$ocb_enc_short:
> > > >
> > > > +        add     rdx,6
> > > >
> > > > +        jz      NEAR $L$ocb_enc_done
> > > >
> > > > +
> > > >
> > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > >
> > > > +        cmp     rdx,2
> > > >
> > > > +        jb      NEAR $L$ocb_enc_one
> > > >
> > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > >
> > > > +        je      NEAR $L$ocb_enc_two
> > > >
> > > > +
> > > >
> > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > >
> > > > +        cmp     rdx,4
> > > >
> > > > +        jb      NEAR $L$ocb_enc_three
> > > >
> > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > >
> > > > +        je      NEAR $L$ocb_enc_four
> > > >
> > > > +
> > > >
> > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > >
> > > > +        pxor    xmm7,xmm7
> > > >
> > > > +
> > > >
> > > > +        call    __ocb_encrypt6
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm15,xmm14
> > > >
> > > > +        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$ocb_enc_done
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ocb_enc_one:
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        call    __ocb_encrypt1
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm15,xmm7
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        jmp     NEAR $L$ocb_enc_done
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ocb_enc_two:
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +
> > > >
> > > > +        call    __ocb_encrypt4
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm15,xmm11
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +
> > > >
> > > > +        jmp     NEAR $L$ocb_enc_done
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ocb_enc_three:
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +
> > > >
> > > > +        call    __ocb_encrypt4
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm15,xmm12
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        movups  XMMWORD[32+rsi],xmm4
> > > >
> > > > +
> > > >
> > > > +        jmp     NEAR $L$ocb_enc_done
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ocb_enc_four:
> > > >
> > > > +        call    __ocb_encrypt4
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm15,xmm13
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        movups  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        movups  XMMWORD[48+rsi],xmm5
> > > >
> > > > +
> > > >
> > > > +$L$ocb_enc_done:
> > > >
> > > > +        pxor    xmm15,xmm0
> > > >
> > > > +        movdqu  XMMWORD[rbp],xmm8
> > > >
> > > > +        movdqu  XMMWORD[r9],xmm15
> > > >
> > > > +
> > > >
> > > > +        xorps   xmm0,xmm0
> > > >
> > > > +        pxor    xmm1,xmm1
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +        movaps  xmm6,XMMWORD[rsp]
> > > >
> > > > +        movaps  XMMWORD[rsp],xmm0
> > > >
> > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > >
> > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > >
> > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > >
> > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > >
> > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > >
> > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > >
> > > > +        movaps  xmm10,XMMWORD[64+rsp]
> > > >
> > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > >
> > > > +        movaps  xmm11,XMMWORD[80+rsp]
> > > >
> > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > >
> > > > +        movaps  xmm12,XMMWORD[96+rsp]
> > > >
> > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > >
> > > > +        movaps  xmm13,XMMWORD[112+rsp]
> > > >
> > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > >
> > > > +        movaps  xmm14,XMMWORD[128+rsp]
> > > >
> > > > +        movaps  XMMWORD[128+rsp],xmm0
> > > >
> > > > +        movaps  xmm15,XMMWORD[144+rsp]
> > > >
> > > > +        movaps  XMMWORD[144+rsp],xmm0
> > > >
> > > > +        lea     rax,[((160+40))+rsp]
> > > >
> > > > +$L$ocb_enc_pop:
> > > >
> > > > +        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$ocb_enc_epilogue:
> > > >
> > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > >
> > > > +        mov     rsi,QWORD[16+rsp]
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +$L$SEH_end_aesni_ocb_encrypt:
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +__ocb_encrypt6:
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm15,xmm9
> > > >
> > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > >
> > > > +        movdqa  xmm12,xmm10
> > > >
> > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > >
> > > > +        movdqa  xmm14,xmm10
> > > >
> > > > +        pxor    xmm10,xmm15
> > > >
> > > > +        movdqu  xmm15,XMMWORD[r14*1+rbx]
> > > >
> > > > +        pxor    xmm11,xmm10
> > > >
> > > > +        pxor    xmm8,xmm2
> > > >
> > > > +        pxor    xmm2,xmm10
> > > >
> > > > +        pxor    xmm12,xmm11
> > > >
> > > > +        pxor    xmm8,xmm3
> > > >
> > > > +        pxor    xmm3,xmm11
> > > >
> > > > +        pxor    xmm13,xmm12
> > > >
> > > > +        pxor    xmm8,xmm4
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        pxor    xmm14,xmm13
> > > >
> > > > +        pxor    xmm8,xmm5
> > > >
> > > > +        pxor    xmm5,xmm13
> > > >
> > > > +        pxor    xmm15,xmm14
> > > >
> > > > +        pxor    xmm8,xmm6
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +        pxor    xmm8,xmm7
> > > >
> > > > +        pxor    xmm7,xmm15
> > > >
> > > > +        movups  xmm0,XMMWORD[32+r11]
> > > >
> > > > +
> > > >
> > > > +        lea     r12,[1+r8]
> > > >
> > > > +        lea     r13,[3+r8]
> > > >
> > > > +        lea     r14,[5+r8]
> > > >
> > > > +        add     r8,6
> > > >
> > > > +        pxor    xmm10,xmm9
> > > >
> > > > +        bsf     r12,r12
> > > >
> > > > +        bsf     r13,r13
> > > >
> > > > +        bsf     r14,r14
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +DB      102,15,56,220,217
> > > >
> > > > +DB      102,15,56,220,225
> > > >
> > > > +DB      102,15,56,220,233
> > > >
> > > > +        pxor    xmm11,xmm9
> > > >
> > > > +        pxor    xmm12,xmm9
> > > >
> > > > +DB      102,15,56,220,241
> > > >
> > > > +        pxor    xmm13,xmm9
> > > >
> > > > +        pxor    xmm14,xmm9
> > > >
> > > > +DB      102,15,56,220,249
> > > >
> > > > +        movups  xmm1,XMMWORD[48+r11]
> > > >
> > > > +        pxor    xmm15,xmm9
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +DB      102,15,56,220,216
> > > >
> > > > +DB      102,15,56,220,224
> > > >
> > > > +DB      102,15,56,220,232
> > > >
> > > > +DB      102,15,56,220,240
> > > >
> > > > +DB      102,15,56,220,248
> > > >
> > > > +        movups  xmm0,XMMWORD[64+r11]
> > > >
> > > > +        shl     r12,4
> > > >
> > > > +        shl     r13,4
> > > >
> > > > +        jmp     NEAR $L$ocb_enc_loop6
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$ocb_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[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
> > > >
> > > > +DB      102,15,56,220,240
> > > >
> > > > +DB      102,15,56,220,248
> > > >
> > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > >
> > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > >
> > > > +        shl     r14,4
> > > >
> > > > +
> > > >
> > > > +DB      102,65,15,56,221,210
> > > >
> > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > >
> > > > +        mov     rax,r10
> > > >
> > > > +DB      102,65,15,56,221,219
> > > >
> > > > +DB      102,65,15,56,221,228
> > > >
> > > > +DB      102,65,15,56,221,237
> > > >
> > > > +DB      102,65,15,56,221,246
> > > >
> > > > +DB      102,65,15,56,221,255
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +__ocb_encrypt4:
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm15,xmm9
> > > >
> > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > >
> > > > +        movdqa  xmm12,xmm10
> > > >
> > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > >
> > > > +        pxor    xmm10,xmm15
> > > >
> > > > +        pxor    xmm11,xmm10
> > > >
> > > > +        pxor    xmm8,xmm2
> > > >
> > > > +        pxor    xmm2,xmm10
> > > >
> > > > +        pxor    xmm12,xmm11
> > > >
> > > > +        pxor    xmm8,xmm3
> > > >
> > > > +        pxor    xmm3,xmm11
> > > >
> > > > +        pxor    xmm13,xmm12
> > > >
> > > > +        pxor    xmm8,xmm4
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        pxor    xmm8,xmm5
> > > >
> > > > +        pxor    xmm5,xmm13
> > > >
> > > > +        movups  xmm0,XMMWORD[32+r11]
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm10,xmm9
> > > >
> > > > +        pxor    xmm11,xmm9
> > > >
> > > > +        pxor    xmm12,xmm9
> > > >
> > > > +        pxor    xmm13,xmm9
> > > >
> > > > +
> > > >
> > > > +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[48+r11]
> > > >
> > > > +
> > > >
> > > > +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[64+r11]
> > > >
> > > > +        jmp     NEAR $L$ocb_enc_loop4
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$ocb_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[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[((-16))+rax*1+rcx]
> > > >
> > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > >
> > > > +        mov     rax,r10
> > > >
> > > > +
> > > >
> > > > +DB      102,65,15,56,221,210
> > > >
> > > > +DB      102,65,15,56,221,219
> > > >
> > > > +DB      102,65,15,56,221,228
> > > >
> > > > +DB      102,65,15,56,221,237
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +__ocb_encrypt1:
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm15
> > > >
> > > > +        pxor    xmm7,xmm9
> > > >
> > > > +        pxor    xmm8,xmm2
> > > >
> > > > +        pxor    xmm2,xmm7
> > > >
> > > > +        movups  xmm0,XMMWORD[32+r11]
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[48+r11]
> > > >
> > > > +        pxor    xmm7,xmm9
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        movups  xmm0,XMMWORD[64+r11]
> > > >
> > > > +        jmp     NEAR $L$ocb_enc_loop1
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$ocb_enc_loop1:
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > >
> > > > +        add     rax,32
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,220,208
> > > >
> > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > >
> > > > +        jnz     NEAR $L$ocb_enc_loop1
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        movups  xmm1,XMMWORD[16+r11]
> > > >
> > > > +        mov     rax,r10
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,221,215
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +global  aesni_ocb_decrypt
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +aesni_ocb_decrypt:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_aesni_ocb_decrypt:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +        mov     rcx,r9
> > > >
> > > > +        mov     r8,QWORD[40+rsp]
> > > >
> > > > +        mov     r9,QWORD[48+rsp]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        lea     rax,[rsp]
> > > >
> > > > +        push    rbx
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        push    r12
> > > >
> > > > +
> > > >
> > > > +        push    r13
> > > >
> > > > +
> > > >
> > > > +        push    r14
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[((-160))+rsp]
> > > >
> > > > +        movaps  XMMWORD[rsp],xmm6
> > > >
> > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > >
> > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > >
> > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > >
> > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > >
> > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > >
> > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > >
> > > > +        movaps  XMMWORD[112+rsp],xmm13
> > > >
> > > > +        movaps  XMMWORD[128+rsp],xmm14
> > > >
> > > > +        movaps  XMMWORD[144+rsp],xmm15
> > > >
> > > > +$L$ocb_dec_body:
> > > >
> > > > +        mov     rbx,QWORD[56+rax]
> > > >
> > > > +        mov     rbp,QWORD[((56+8))+rax]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[240+rcx]
> > > >
> > > > +        mov     r11,rcx
> > > >
> > > > +        shl     r10d,4
> > > >
> > > > +        movups  xmm9,XMMWORD[rcx]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > >
> > > > +
> > > >
> > > > +        movdqu  xmm15,XMMWORD[r9]
> > > >
> > > > +        pxor    xmm9,xmm1
> > > >
> > > > +        pxor    xmm15,xmm1
> > > >
> > > > +
> > > >
> > > > +        mov     eax,16+32
> > > >
> > > > +        lea     rcx,[32+r10*1+r11]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+r11]
> > > >
> > > > +        sub     rax,r10
> > > >
> > > > +        mov     r10,rax
> > > >
> > > > +
> > > >
> > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > >
> > > > +        movdqu  xmm8,XMMWORD[rbp]
> > > >
> > > > +
> > > >
> > > > +        test    r8,1
> > > >
> > > > +        jnz     NEAR $L$ocb_dec_odd
> > > >
> > > > +
> > > >
> > > > +        bsf     r12,r8
> > > >
> > > > +        add     r8,1
> > > >
> > > > +        shl     r12,4
> > > >
> > > > +        movdqu  xmm7,XMMWORD[r12*1+rbx]
> > > >
> > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > >
> > > > +        lea     rdi,[16+rdi]
> > > >
> > > > +
> > > >
> > > > +        call    __ocb_decrypt1
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm15,xmm7
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        xorps   xmm8,xmm2
> > > >
> > > > +        lea     rsi,[16+rsi]
> > > >
> > > > +        sub     rdx,1
> > > >
> > > > +        jz      NEAR $L$ocb_dec_done
> > > >
> > > > +
> > > >
> > > > +$L$ocb_dec_odd:
> > > >
> > > > +        lea     r12,[1+r8]
> > > >
> > > > +        lea     r13,[3+r8]
> > > >
> > > > +        lea     r14,[5+r8]
> > > >
> > > > +        lea     r8,[6+r8]
> > > >
> > > > +        bsf     r12,r12
> > > >
> > > > +        bsf     r13,r13
> > > >
> > > > +        bsf     r14,r14
> > > >
> > > > +        shl     r12,4
> > > >
> > > > +        shl     r13,4
> > > >
> > > > +        shl     r14,4
> > > >
> > > > +
> > > >
> > > > +        sub     rdx,6
> > > >
> > > > +        jc      NEAR $L$ocb_dec_short
> > > >
> > > > +        jmp     NEAR $L$ocb_dec_grandloop
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$ocb_dec_grandloop:
> > > >
> > > > +        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]
> > > >
> > > > +        lea     rdi,[96+rdi]
> > > >
> > > > +
> > > >
> > > > +        call    __ocb_decrypt6
> > > >
> > > > +
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm8,xmm2
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        pxor    xmm8,xmm3
> > > >
> > > > +        movups  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        pxor    xmm8,xmm4
> > > >
> > > > +        movups  XMMWORD[48+rsi],xmm5
> > > >
> > > > +        pxor    xmm8,xmm5
> > > >
> > > > +        movups  XMMWORD[64+rsi],xmm6
> > > >
> > > > +        pxor    xmm8,xmm6
> > > >
> > > > +        movups  XMMWORD[80+rsi],xmm7
> > > >
> > > > +        pxor    xmm8,xmm7
> > > >
> > > > +        lea     rsi,[96+rsi]
> > > >
> > > > +        sub     rdx,6
> > > >
> > > > +        jnc     NEAR $L$ocb_dec_grandloop
> > > >
> > > > +
> > > >
> > > > +$L$ocb_dec_short:
> > > >
> > > > +        add     rdx,6
> > > >
> > > > +        jz      NEAR $L$ocb_dec_done
> > > >
> > > > +
> > > >
> > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > >
> > > > +        cmp     rdx,2
> > > >
> > > > +        jb      NEAR $L$ocb_dec_one
> > > >
> > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > >
> > > > +        je      NEAR $L$ocb_dec_two
> > > >
> > > > +
> > > >
> > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > >
> > > > +        cmp     rdx,4
> > > >
> > > > +        jb      NEAR $L$ocb_dec_three
> > > >
> > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > >
> > > > +        je      NEAR $L$ocb_dec_four
> > > >
> > > > +
> > > >
> > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > >
> > > > +        pxor    xmm7,xmm7
> > > >
> > > > +
> > > >
> > > > +        call    __ocb_decrypt6
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm15,xmm14
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm8,xmm2
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        pxor    xmm8,xmm3
> > > >
> > > > +        movups  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        pxor    xmm8,xmm4
> > > >
> > > > +        movups  XMMWORD[48+rsi],xmm5
> > > >
> > > > +        pxor    xmm8,xmm5
> > > >
> > > > +        movups  XMMWORD[64+rsi],xmm6
> > > >
> > > > +        pxor    xmm8,xmm6
> > > >
> > > > +
> > > >
> > > > +        jmp     NEAR $L$ocb_dec_done
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ocb_dec_one:
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        call    __ocb_decrypt1
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm15,xmm7
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        xorps   xmm8,xmm2
> > > >
> > > > +        jmp     NEAR $L$ocb_dec_done
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ocb_dec_two:
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +
> > > >
> > > > +        call    __ocb_decrypt4
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm15,xmm11
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        xorps   xmm8,xmm2
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        xorps   xmm8,xmm3
> > > >
> > > > +
> > > >
> > > > +        jmp     NEAR $L$ocb_dec_done
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ocb_dec_three:
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +
> > > >
> > > > +        call    __ocb_decrypt4
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm15,xmm12
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        xorps   xmm8,xmm2
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        xorps   xmm8,xmm3
> > > >
> > > > +        movups  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        xorps   xmm8,xmm4
> > > >
> > > > +
> > > >
> > > > +        jmp     NEAR $L$ocb_dec_done
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ocb_dec_four:
> > > >
> > > > +        call    __ocb_decrypt4
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm15,xmm13
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm8,xmm2
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        pxor    xmm8,xmm3
> > > >
> > > > +        movups  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        pxor    xmm8,xmm4
> > > >
> > > > +        movups  XMMWORD[48+rsi],xmm5
> > > >
> > > > +        pxor    xmm8,xmm5
> > > >
> > > > +
> > > >
> > > > +$L$ocb_dec_done:
> > > >
> > > > +        pxor    xmm15,xmm0
> > > >
> > > > +        movdqu  XMMWORD[rbp],xmm8
> > > >
> > > > +        movdqu  XMMWORD[r9],xmm15
> > > >
> > > > +
> > > >
> > > > +        xorps   xmm0,xmm0
> > > >
> > > > +        pxor    xmm1,xmm1
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +        movaps  xmm6,XMMWORD[rsp]
> > > >
> > > > +        movaps  XMMWORD[rsp],xmm0
> > > >
> > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > >
> > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > >
> > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > >
> > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > >
> > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > >
> > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > >
> > > > +        movaps  xmm10,XMMWORD[64+rsp]
> > > >
> > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > >
> > > > +        movaps  xmm11,XMMWORD[80+rsp]
> > > >
> > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > >
> > > > +        movaps  xmm12,XMMWORD[96+rsp]
> > > >
> > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > >
> > > > +        movaps  xmm13,XMMWORD[112+rsp]
> > > >
> > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > >
> > > > +        movaps  xmm14,XMMWORD[128+rsp]
> > > >
> > > > +        movaps  XMMWORD[128+rsp],xmm0
> > > >
> > > > +        movaps  xmm15,XMMWORD[144+rsp]
> > > >
> > > > +        movaps  XMMWORD[144+rsp],xmm0
> > > >
> > > > +        lea     rax,[((160+40))+rsp]
> > > >
> > > > +$L$ocb_dec_pop:
> > > >
> > > > +        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$ocb_dec_epilogue:
> > > >
> > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > >
> > > > +        mov     rsi,QWORD[16+rsp]
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +$L$SEH_end_aesni_ocb_decrypt:
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +__ocb_decrypt6:
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm15,xmm9
> > > >
> > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > >
> > > > +        movdqa  xmm12,xmm10
> > > >
> > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > >
> > > > +        movdqa  xmm14,xmm10
> > > >
> > > > +        pxor    xmm10,xmm15
> > > >
> > > > +        movdqu  xmm15,XMMWORD[r14*1+rbx]
> > > >
> > > > +        pxor    xmm11,xmm10
> > > >
> > > > +        pxor    xmm2,xmm10
> > > >
> > > > +        pxor    xmm12,xmm11
> > > >
> > > > +        pxor    xmm3,xmm11
> > > >
> > > > +        pxor    xmm13,xmm12
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        pxor    xmm14,xmm13
> > > >
> > > > +        pxor    xmm5,xmm13
> > > >
> > > > +        pxor    xmm15,xmm14
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +        pxor    xmm7,xmm15
> > > >
> > > > +        movups  xmm0,XMMWORD[32+r11]
> > > >
> > > > +
> > > >
> > > > +        lea     r12,[1+r8]
> > > >
> > > > +        lea     r13,[3+r8]
> > > >
> > > > +        lea     r14,[5+r8]
> > > >
> > > > +        add     r8,6
> > > >
> > > > +        pxor    xmm10,xmm9
> > > >
> > > > +        bsf     r12,r12
> > > >
> > > > +        bsf     r13,r13
> > > >
> > > > +        bsf     r14,r14
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +DB      102,15,56,222,217
> > > >
> > > > +DB      102,15,56,222,225
> > > >
> > > > +DB      102,15,56,222,233
> > > >
> > > > +        pxor    xmm11,xmm9
> > > >
> > > > +        pxor    xmm12,xmm9
> > > >
> > > > +DB      102,15,56,222,241
> > > >
> > > > +        pxor    xmm13,xmm9
> > > >
> > > > +        pxor    xmm14,xmm9
> > > >
> > > > +DB      102,15,56,222,249
> > > >
> > > > +        movups  xmm1,XMMWORD[48+r11]
> > > >
> > > > +        pxor    xmm15,xmm9
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,222,208
> > > >
> > > > +DB      102,15,56,222,216
> > > >
> > > > +DB      102,15,56,222,224
> > > >
> > > > +DB      102,15,56,222,232
> > > >
> > > > +DB      102,15,56,222,240
> > > >
> > > > +DB      102,15,56,222,248
> > > >
> > > > +        movups  xmm0,XMMWORD[64+r11]
> > > >
> > > > +        shl     r12,4
> > > >
> > > > +        shl     r13,4
> > > >
> > > > +        jmp     NEAR $L$ocb_dec_loop6
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$ocb_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[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
> > > >
> > > > +DB      102,15,56,222,240
> > > >
> > > > +DB      102,15,56,222,248
> > > >
> > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > >
> > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > >
> > > > +        shl     r14,4
> > > >
> > > > +
> > > >
> > > > +DB      102,65,15,56,223,210
> > > >
> > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > >
> > > > +        mov     rax,r10
> > > >
> > > > +DB      102,65,15,56,223,219
> > > >
> > > > +DB      102,65,15,56,223,228
> > > >
> > > > +DB      102,65,15,56,223,237
> > > >
> > > > +DB      102,65,15,56,223,246
> > > >
> > > > +DB      102,65,15,56,223,255
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +__ocb_decrypt4:
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm15,xmm9
> > > >
> > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > >
> > > > +        movdqa  xmm12,xmm10
> > > >
> > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > >
> > > > +        pxor    xmm10,xmm15
> > > >
> > > > +        pxor    xmm11,xmm10
> > > >
> > > > +        pxor    xmm2,xmm10
> > > >
> > > > +        pxor    xmm12,xmm11
> > > >
> > > > +        pxor    xmm3,xmm11
> > > >
> > > > +        pxor    xmm13,xmm12
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        pxor    xmm5,xmm13
> > > >
> > > > +        movups  xmm0,XMMWORD[32+r11]
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm10,xmm9
> > > >
> > > > +        pxor    xmm11,xmm9
> > > >
> > > > +        pxor    xmm12,xmm9
> > > >
> > > > +        pxor    xmm13,xmm9
> > > >
> > > > +
> > > >
> > > > +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[48+r11]
> > > >
> > > > +
> > > >
> > > > +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[64+r11]
> > > >
> > > > +        jmp     NEAR $L$ocb_dec_loop4
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$ocb_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[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[((-16))+rax*1+rcx]
> > > >
> > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > >
> > > > +        mov     rax,r10
> > > >
> > > > +
> > > >
> > > > +DB      102,65,15,56,223,210
> > > >
> > > > +DB      102,65,15,56,223,219
> > > >
> > > > +DB      102,65,15,56,223,228
> > > >
> > > > +DB      102,65,15,56,223,237
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +__ocb_decrypt1:
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm15
> > > >
> > > > +        pxor    xmm7,xmm9
> > > >
> > > > +        pxor    xmm2,xmm7
> > > >
> > > > +        movups  xmm0,XMMWORD[32+r11]
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +        movups  xmm1,XMMWORD[48+r11]
> > > >
> > > > +        pxor    xmm7,xmm9
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,222,208
> > > >
> > > > +        movups  xmm0,XMMWORD[64+r11]
> > > >
> > > > +        jmp     NEAR $L$ocb_dec_loop1
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$ocb_dec_loop1:
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > >
> > > > +        add     rax,32
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,222,208
> > > >
> > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > >
> > > > +        jnz     NEAR $L$ocb_dec_loop1
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +        movups  xmm1,XMMWORD[16+r11]
> > > >
> > > > +        mov     rax,r10
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,223,215
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +global  aesni_cbc_encrypt
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +aesni_cbc_encrypt:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_aesni_cbc_encrypt:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +        mov     rcx,r9
> > > >
> > > > +        mov     r8,QWORD[40+rsp]
> > > >
> > > > +        mov     r9,QWORD[48+rsp]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        test    rdx,rdx
> > > >
> > > > +        jz      NEAR $L$cbc_ret
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[240+rcx]
> > > >
> > > > +        mov     r11,rcx
> > > >
> > > > +        test    r9d,r9d
> > > >
> > > > +        jz      NEAR $L$cbc_decrypt
> > > >
> > > > +
> > > >
> > > > +        movups  xmm2,XMMWORD[r8]
> > > >
> > > > +        mov     eax,r10d
> > > >
> > > > +        cmp     rdx,16
> > > >
> > > > +        jb      NEAR $L$cbc_enc_tail
> > > >
> > > > +        sub     rdx,16
> > > >
> > > > +        jmp     NEAR $L$cbc_enc_loop
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$cbc_enc_loop:
> > > >
> > > > +        movups  xmm3,XMMWORD[rdi]
> > > >
> > > > +        lea     rdi,[16+rdi]
> > > >
> > > > +
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        xorps   xmm3,xmm0
> > > >
> > > > +        lea     rcx,[32+rcx]
> > > >
> > > > +        xorps   xmm2,xmm3
> > > >
> > > > +$L$oop_enc1_15:
> > > >
> > > > +DB      102,15,56,220,209
> > > >
> > > > +        dec     eax
> > > >
> > > > +        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[rsi],xmm2
> > > >
> > > > +        lea     rsi,[16+rsi]
> > > >
> > > > +        sub     rdx,16
> > > >
> > > > +        jnc     NEAR $L$cbc_enc_loop
> > > >
> > > > +        add     rdx,16
> > > >
> > > > +        jnz     NEAR $L$cbc_enc_tail
> > > >
> > > > +        pxor    xmm0,xmm0
> > > >
> > > > +        pxor    xmm1,xmm1
> > > >
> > > > +        movups  XMMWORD[r8],xmm2
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        jmp     NEAR $L$cbc_ret
> > > >
> > > > +
> > > >
> > > > +$L$cbc_enc_tail:
> > > >
> > > > +        mov     rcx,rdx
> > > >
> > > > +        xchg    rsi,rdi
> > > >
> > > > +        DD      0x9066A4F3
> > > >
> > > > +        mov     ecx,16
> > > >
> > > > +        sub     rcx,rdx
> > > >
> > > > +        xor     eax,eax
> > > >
> > > > +        DD      0x9066AAF3
> > > >
> > > > +        lea     rdi,[((-16))+rdi]
> > > >
> > > > +        mov     eax,r10d
> > > >
> > > > +        mov     rsi,rdi
> > > >
> > > > +        mov     rcx,r11
> > > >
> > > > +        xor     rdx,rdx
> > > >
> > > > +        jmp     NEAR $L$cbc_enc_loop
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$cbc_decrypt:
> > > >
> > > > +        cmp     rdx,16
> > > >
> > > > +        jne     NEAR $L$cbc_decrypt_bulk
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > >
> > > > +        movdqu  xmm3,XMMWORD[r8]
> > > >
> > > > +        movdqa  xmm4,xmm2
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        lea     rcx,[32+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +$L$oop_dec1_16:
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +        dec     r10d
> > > >
> > > > +        movups  xmm1,XMMWORD[rcx]
> > > >
> > > > +        lea     rcx,[16+rcx]
> > > >
> > > > +        jnz     NEAR $L$oop_dec1_16
> > > >
> > > > +DB      102,15,56,223,209
> > > >
> > > > +        pxor    xmm0,xmm0
> > > >
> > > > +        pxor    xmm1,xmm1
> > > >
> > > > +        movdqu  XMMWORD[r8],xmm4
> > > >
> > > > +        xorps   xmm2,xmm3
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        jmp     NEAR $L$cbc_ret
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$cbc_decrypt_bulk:
> > > >
> > > > +        lea     r11,[rsp]
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        sub     rsp,176
> > > >
> > > > +        and     rsp,-16
> > > >
> > > > +        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:
> > > >
> > > > +        mov     rbp,rcx
> > > >
> > > > +        movups  xmm10,XMMWORD[r8]
> > > >
> > > > +        mov     eax,r10d
> > > >
> > > > +        cmp     rdx,0x50
> > > >
> > > > +        jbe     NEAR $L$cbc_dec_tail
> > > >
> > > > +
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > >
> > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > >
> > > > +        movdqa  xmm11,xmm2
> > > >
> > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > >
> > > > +        movdqa  xmm12,xmm3
> > > >
> > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > >
> > > > +        movdqa  xmm13,xmm4
> > > >
> > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > >
> > > > +        movdqa  xmm14,xmm5
> > > >
> > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > >
> > > > +        movdqa  xmm15,xmm6
> > > >
> > > > +        mov     r9d,DWORD[((OPENSSL_ia32cap_P+4))]
> > > >
> > > > +        cmp     rdx,0x70
> > > >
> > > > +        jbe     NEAR $L$cbc_dec_six_or_seven
> > > >
> > > > +
> > > >
> > > > +        and     r9d,71303168
> > > >
> > > > +        sub     rdx,0x50
> > > >
> > > > +        cmp     r9d,4194304
> > > >
> > > > +        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[rsi],xmm9
> > > >
> > > > +        lea     rsi,[16+rsi]
> > > >
> > > > +$L$cbc_dec_loop8_enter:
> > > >
> > > > +        movdqu  xmm8,XMMWORD[96+rdi]
> > > >
> > > > +        pxor    xmm2,xmm0
> > > >
> > > > +        movdqu  xmm9,XMMWORD[112+rdi]
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        movups  xmm1,XMMWORD[((16-112))+rcx]
> > > >
> > > > +        pxor    xmm4,xmm0
> > > >
> > > > +        mov     rbp,-1
> > > >
> > > > +        cmp     rdx,0x70
> > > >
> > > > +        pxor    xmm5,xmm0
> > > >
> > > > +        pxor    xmm6,xmm0
> > > >
> > > > +        pxor    xmm7,xmm0
> > > >
> > > > +        pxor    xmm8,xmm0
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +        pxor    xmm9,xmm0
> > > >
> > > > +        movups  xmm0,XMMWORD[((32-112))+rcx]
> > > >
> > > > +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
> > > >
> > > > +DB      102,68,15,56,222,193
> > > >
> > > > +        adc     rbp,0
> > > >
> > > > +        and     rbp,128
> > > >
> > > > +DB      102,68,15,56,222,201
> > > >
> > > > +        add     rbp,rdi
> > > >
> > > > +        movups  xmm1,XMMWORD[((48-112))+rcx]
> > > >
> > > > +DB      102,15,56,222,208
> > > >
> > > > +DB      102,15,56,222,216
> > > >
> > > > +DB      102,15,56,222,224
> > > >
> > > > +DB      102,15,56,222,232
> > > >
> > > > +DB      102,15,56,222,240
> > > >
> > > > +DB      102,15,56,222,248
> > > >
> > > > +DB      102,68,15,56,222,192
> > > >
> > > > +DB      102,68,15,56,222,200
> > > >
> > > > +        movups  xmm0,XMMWORD[((64-112))+rcx]
> > > >
> > > > +        nop
> > > >
> > > > +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
> > > >
> > > > +DB      102,68,15,56,222,193
> > > >
> > > > +DB      102,68,15,56,222,201
> > > >
> > > > +        movups  xmm1,XMMWORD[((80-112))+rcx]
> > > >
> > > > +        nop
> > > >
> > > > +DB      102,15,56,222,208
> > > >
> > > > +DB      102,15,56,222,216
> > > >
> > > > +DB      102,15,56,222,224
> > > >
> > > > +DB      102,15,56,222,232
> > > >
> > > > +DB      102,15,56,222,240
> > > >
> > > > +DB      102,15,56,222,248
> > > >
> > > > +DB      102,68,15,56,222,192
> > > >
> > > > +DB      102,68,15,56,222,200
> > > >
> > > > +        movups  xmm0,XMMWORD[((96-112))+rcx]
> > > >
> > > > +        nop
> > > >
> > > > +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
> > > >
> > > > +DB      102,68,15,56,222,193
> > > >
> > > > +DB      102,68,15,56,222,201
> > > >
> > > > +        movups  xmm1,XMMWORD[((112-112))+rcx]
> > > >
> > > > +        nop
> > > >
> > > > +DB      102,15,56,222,208
> > > >
> > > > +DB      102,15,56,222,216
> > > >
> > > > +DB      102,15,56,222,224
> > > >
> > > > +DB      102,15,56,222,232
> > > >
> > > > +DB      102,15,56,222,240
> > > >
> > > > +DB      102,15,56,222,248
> > > >
> > > > +DB      102,68,15,56,222,192
> > > >
> > > > +DB      102,68,15,56,222,200
> > > >
> > > > +        movups  xmm0,XMMWORD[((128-112))+rcx]
> > > >
> > > > +        nop
> > > >
> > > > +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
> > > >
> > > > +DB      102,68,15,56,222,193
> > > >
> > > > +DB      102,68,15,56,222,201
> > > >
> > > > +        movups  xmm1,XMMWORD[((144-112))+rcx]
> > > >
> > > > +        cmp     eax,11
> > > >
> > > > +DB      102,15,56,222,208
> > > >
> > > > +DB      102,15,56,222,216
> > > >
> > > > +DB      102,15,56,222,224
> > > >
> > > > +DB      102,15,56,222,232
> > > >
> > > > +DB      102,15,56,222,240
> > > >
> > > > +DB      102,15,56,222,248
> > > >
> > > > +DB      102,68,15,56,222,192
> > > >
> > > > +DB      102,68,15,56,222,200
> > > >
> > > > +        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
> > > >
> > > > +DB      102,15,56,222,233
> > > >
> > > > +DB      102,15,56,222,241
> > > >
> > > > +DB      102,15,56,222,249
> > > >
> > > > +DB      102,68,15,56,222,193
> > > >
> > > > +DB      102,68,15,56,222,201
> > > >
> > > > +        movups  xmm1,XMMWORD[((176-112))+rcx]
> > > >
> > > > +        nop
> > > >
> > > > +DB      102,15,56,222,208
> > > >
> > > > +DB      102,15,56,222,216
> > > >
> > > > +DB      102,15,56,222,224
> > > >
> > > > +DB      102,15,56,222,232
> > > >
> > > > +DB      102,15,56,222,240
> > > >
> > > > +DB      102,15,56,222,248
> > > >
> > > > +DB      102,68,15,56,222,192
> > > >
> > > > +DB      102,68,15,56,222,200
> > > >
> > > > +        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
> > > >
> > > > +DB      102,15,56,222,233
> > > >
> > > > +DB      102,15,56,222,241
> > > >
> > > > +DB      102,15,56,222,249
> > > >
> > > > +DB      102,68,15,56,222,193
> > > >
> > > > +DB      102,68,15,56,222,201
> > > >
> > > > +        movups  xmm1,XMMWORD[((208-112))+rcx]
> > > >
> > > > +        nop
> > > >
> > > > +DB      102,15,56,222,208
> > > >
> > > > +DB      102,15,56,222,216
> > > >
> > > > +DB      102,15,56,222,224
> > > >
> > > > +DB      102,15,56,222,232
> > > >
> > > > +DB      102,15,56,222,240
> > > >
> > > > +DB      102,15,56,222,248
> > > >
> > > > +DB      102,68,15,56,222,192
> > > >
> > > > +DB      102,68,15,56,222,200
> > > >
> > > > +        movups  xmm0,XMMWORD[((224-112))+rcx]
> > > >
> > > > +        jmp     NEAR $L$cbc_dec_done
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$cbc_dec_done:
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +DB      102,15,56,222,217
> > > >
> > > > +        pxor    xmm10,xmm0
> > > >
> > > > +        pxor    xmm11,xmm0
> > > >
> > > > +DB      102,15,56,222,225
> > > >
> > > > +DB      102,15,56,222,233
> > > >
> > > > +        pxor    xmm12,xmm0
> > > >
> > > > +        pxor    xmm13,xmm0
> > > >
> > > > +DB      102,15,56,222,241
> > > >
> > > > +DB      102,15,56,222,249
> > > >
> > > > +        pxor    xmm14,xmm0
> > > >
> > > > +        pxor    xmm15,xmm0
> > > >
> > > > +DB      102,68,15,56,222,193
> > > >
> > > > +DB      102,68,15,56,222,201
> > > >
> > > > +        movdqu  xmm1,XMMWORD[80+rdi]
> > > >
> > > > +
> > > >
> > > > +DB      102,65,15,56,223,210
> > > >
> > > > +        movdqu  xmm10,XMMWORD[96+rdi]
> > > >
> > > > +        pxor    xmm1,xmm0
> > > >
> > > > +DB      102,65,15,56,223,219
> > > >
> > > > +        pxor    xmm10,xmm0
> > > >
> > > > +        movdqu  xmm0,XMMWORD[112+rdi]
> > > >
> > > > +DB      102,65,15,56,223,228
> > > >
> > > > +        lea     rdi,[128+rdi]
> > > >
> > > > +        movdqu  xmm11,XMMWORD[rbp]
> > > >
> > > > +DB      102,65,15,56,223,237
> > > >
> > > > +DB      102,65,15,56,223,246
> > > >
> > > > +        movdqu  xmm12,XMMWORD[16+rbp]
> > > >
> > > > +        movdqu  xmm13,XMMWORD[32+rbp]
> > > >
> > > > +DB      102,65,15,56,223,255
> > > >
> > > > +DB      102,68,15,56,223,193
> > > >
> > > > +        movdqu  xmm14,XMMWORD[48+rbp]
> > > >
> > > > +        movdqu  xmm15,XMMWORD[64+rbp]
> > > >
> > > > +DB      102,69,15,56,223,202
> > > >
> > > > +        movdqa  xmm10,xmm0
> > > >
> > > > +        movdqu  xmm1,XMMWORD[80+rbp]
> > > >
> > > > +        movups  xmm0,XMMWORD[((-112))+rcx]
> > > >
> > > > +
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        movdqa  xmm2,xmm11
> > > >
> > > > +        movups  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        movdqa  xmm3,xmm12
> > > >
> > > > +        movups  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        movdqa  xmm4,xmm13
> > > >
> > > > +        movups  XMMWORD[48+rsi],xmm5
> > > >
> > > > +        movdqa  xmm5,xmm14
> > > >
> > > > +        movups  XMMWORD[64+rsi],xmm6
> > > >
> > > > +        movdqa  xmm6,xmm15
> > > >
> > > > +        movups  XMMWORD[80+rsi],xmm7
> > > >
> > > > +        movdqa  xmm7,xmm1
> > > >
> > > > +        movups  XMMWORD[96+rsi],xmm8
> > > >
> > > > +        lea     rsi,[112+rsi]
> > > >
> > > > +
> > > >
> > > > +        sub     rdx,0x80
> > > >
> > > > +        ja      NEAR $L$cbc_dec_loop8
> > > >
> > > > +
> > > >
> > > > +        movaps  xmm2,xmm9
> > > >
> > > > +        lea     rcx,[((-112))+rcx]
> > > >
> > > > +        add     rdx,0x70
> > > >
> > > > +        jle     NEAR $L$cbc_dec_clear_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,0x60
> > > >
> > > > +        ja      NEAR $L$cbc_dec_seven
> > > >
> > > > +
> > > >
> > > > +        movaps  xmm8,xmm7
> > > >
> > > > +        call    _aesni_decrypt6
> > > >
> > > > +        pxor    xmm2,xmm10
> > > >
> > > > +        movaps  xmm10,xmm8
> > > >
> > > > +        pxor    xmm3,xmm11
> > > >
> > > > +        movdqu  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        pxor    xmm5,xmm13
> > > >
> > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +        pxor    xmm7,xmm15
> > > >
> > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > >
> > > > +        pxor    xmm6,xmm6
> > > >
> > > > +        lea     rsi,[80+rsi]
> > > >
> > > > +        movdqa  xmm2,xmm7
> > > >
> > > > +        pxor    xmm7,xmm7
> > > >
> > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$cbc_dec_seven:
> > > >
> > > > +        movups  xmm8,XMMWORD[96+rdi]
> > > >
> > > > +        xorps   xmm9,xmm9
> > > >
> > > > +        call    _aesni_decrypt8
> > > >
> > > > +        movups  xmm9,XMMWORD[80+rdi]
> > > >
> > > > +        pxor    xmm2,xmm10
> > > >
> > > > +        movups  xmm10,XMMWORD[96+rdi]
> > > >
> > > > +        pxor    xmm3,xmm11
> > > >
> > > > +        movdqu  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        pxor    xmm5,xmm13
> > > >
> > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +        pxor    xmm7,xmm15
> > > >
> > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > >
> > > > +        pxor    xmm6,xmm6
> > > >
> > > > +        pxor    xmm8,xmm9
> > > >
> > > > +        movdqu  XMMWORD[80+rsi],xmm7
> > > >
> > > > +        pxor    xmm7,xmm7
> > > >
> > > > +        lea     rsi,[96+rsi]
> > > >
> > > > +        movdqa  xmm2,xmm8
> > > >
> > > > +        pxor    xmm8,xmm8
> > > >
> > > > +        pxor    xmm9,xmm9
> > > >
> > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$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[32+rdi]
> > > >
> > > > +        movdqa  xmm12,xmm3
> > > >
> > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > >
> > > > +        movdqa  xmm13,xmm4
> > > >
> > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > >
> > > > +        movdqa  xmm14,xmm5
> > > >
> > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > >
> > > > +        movdqa  xmm15,xmm6
> > > >
> > > > +$L$cbc_dec_loop6_enter:
> > > >
> > > > +        lea     rdi,[96+rdi]
> > > >
> > > > +        movdqa  xmm8,xmm7
> > > >
> > > > +
> > > >
> > > > +        call    _aesni_decrypt6
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm2,xmm10
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +        pxor    xmm3,xmm11
> > > >
> > > > +        movdqu  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        pxor    xmm5,xmm13
> > > >
> > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +        mov     rcx,rbp
> > > >
> > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > >
> > > > +        pxor    xmm7,xmm15
> > > >
> > > > +        mov     eax,r10d
> > > >
> > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > >
> > > > +        lea     rsi,[80+rsi]
> > > >
> > > > +        sub     rdx,0x60
> > > >
> > > > +        ja      NEAR $L$cbc_dec_loop6
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm7
> > > >
> > > > +        add     rdx,0x50
> > > >
> > > > +        jle     NEAR $L$cbc_dec_clear_tail_collected
> > > >
> > > > +        movups  XMMWORD[rsi],xmm7
> > > >
> > > > +        lea     rsi,[16+rsi]
> > > >
> > > > +
> > > >
> > > > +$L$cbc_dec_tail:
> > > >
> > > > +        movups  xmm2,XMMWORD[rdi]
> > > >
> > > > +        sub     rdx,0x10
> > > >
> > > > +        jbe     NEAR $L$cbc_dec_one
> > > >
> > > > +
> > > >
> > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > >
> > > > +        movaps  xmm11,xmm2
> > > >
> > > > +        sub     rdx,0x10
> > > >
> > > > +        jbe     NEAR $L$cbc_dec_two
> > > >
> > > > +
> > > >
> > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > >
> > > > +        movaps  xmm12,xmm3
> > > >
> > > > +        sub     rdx,0x10
> > > >
> > > > +        jbe     NEAR $L$cbc_dec_three
> > > >
> > > > +
> > > >
> > > > +        movups  xmm5,XMMWORD[48+rdi]
> > > >
> > > > +        movaps  xmm13,xmm4
> > > >
> > > > +        sub     rdx,0x10
> > > >
> > > > +        jbe     NEAR $L$cbc_dec_four
> > > >
> > > > +
> > > >
> > > > +        movups  xmm6,XMMWORD[64+rdi]
> > > >
> > > > +        movaps  xmm14,xmm5
> > > >
> > > > +        movaps  xmm15,xmm6
> > > >
> > > > +        xorps   xmm7,xmm7
> > > >
> > > > +        call    _aesni_decrypt6
> > > >
> > > > +        pxor    xmm2,xmm10
> > > >
> > > > +        movaps  xmm10,xmm15
> > > >
> > > > +        pxor    xmm3,xmm11
> > > >
> > > > +        movdqu  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        pxor    xmm5,xmm13
> > > >
> > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +        lea     rsi,[64+rsi]
> > > >
> > > > +        movdqa  xmm2,xmm6
> > > >
> > > > +        pxor    xmm6,xmm6
> > > >
> > > > +        pxor    xmm7,xmm7
> > > >
> > > > +        sub     rdx,0x10
> > > >
> > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$cbc_dec_one:
> > > >
> > > > +        movaps  xmm11,xmm2
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > >
> > > > +        lea     rcx,[32+rcx]
> > > >
> > > > +        xorps   xmm2,xmm0
> > > >
> > > > +$L$oop_dec1_17:
> > > >
> > > > +DB      102,15,56,222,209
> > > >
> > > > +        dec     eax
> > > >
> > > > +        movups  xmm1,XMMWORD[rcx]
> > > >
> > > > +        lea     rcx,[16+rcx]
> > > >
> > > > +        jnz     NEAR $L$oop_dec1_17
> > > >
> > > > +DB      102,15,56,223,209
> > > >
> > > > +        xorps   xmm2,xmm10
> > > >
> > > > +        movaps  xmm10,xmm11
> > > >
> > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$cbc_dec_two:
> > > >
> > > > +        movaps  xmm12,xmm3
> > > >
> > > > +        call    _aesni_decrypt2
> > > >
> > > > +        pxor    xmm2,xmm10
> > > >
> > > > +        movaps  xmm10,xmm12
> > > >
> > > > +        pxor    xmm3,xmm11
> > > >
> > > > +        movdqu  XMMWORD[rsi],xmm2
> > > >
> > > > +        movdqa  xmm2,xmm3
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        lea     rsi,[16+rsi]
> > > >
> > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$cbc_dec_three:
> > > >
> > > > +        movaps  xmm13,xmm4
> > > >
> > > > +        call    _aesni_decrypt3
> > > >
> > > > +        pxor    xmm2,xmm10
> > > >
> > > > +        movaps  xmm10,xmm13
> > > >
> > > > +        pxor    xmm3,xmm11
> > > >
> > > > +        movdqu  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        movdqa  xmm2,xmm4
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        lea     rsi,[32+rsi]
> > > >
> > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$cbc_dec_four:
> > > >
> > > > +        movaps  xmm14,xmm5
> > > >
> > > > +        call    _aesni_decrypt4
> > > >
> > > > +        pxor    xmm2,xmm10
> > > >
> > > > +        movaps  xmm10,xmm14
> > > >
> > > > +        pxor    xmm3,xmm11
> > > >
> > > > +        movdqu  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        pxor    xmm5,xmm13
> > > >
> > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        movdqa  xmm2,xmm5
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +        lea     rsi,[48+rsi]
> > > >
> > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$cbc_dec_clear_tail_collected:
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +$L$cbc_dec_tail_collected:
> > > >
> > > > +        movups  XMMWORD[r8],xmm10
> > > >
> > > > +        and     rdx,15
> > > >
> > > > +        jnz     NEAR $L$cbc_dec_tail_partial
> > > >
> > > > +        movups  XMMWORD[rsi],xmm2
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        jmp     NEAR $L$cbc_dec_ret
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$cbc_dec_tail_partial:
> > > >
> > > > +        movaps  XMMWORD[rsp],xmm2
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        mov     rcx,16
> > > >
> > > > +        mov     rdi,rsi
> > > >
> > > > +        sub     rcx,rdx
> > > >
> > > > +        lea     rsi,[rsp]
> > > >
> > > > +        DD      0x9066A4F3
> > > >
> > > > +        movdqa  XMMWORD[rsp],xmm2
> > > >
> > > > +
> > > >
> > > > +$L$cbc_dec_ret:
> > > >
> > > > +        xorps   xmm0,xmm0
> > > >
> > > > +        pxor    xmm1,xmm1
> > > >
> > > > +        movaps  xmm6,XMMWORD[16+rsp]
> > > >
> > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > >
> > > > +        movaps  xmm7,XMMWORD[32+rsp]
> > > >
> > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > >
> > > > +        movaps  xmm8,XMMWORD[48+rsp]
> > > >
> > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > >
> > > > +        movaps  xmm9,XMMWORD[64+rsp]
> > > >
> > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > >
> > > > +        movaps  xmm10,XMMWORD[80+rsp]
> > > >
> > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > >
> > > > +        movaps  xmm11,XMMWORD[96+rsp]
> > > >
> > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > >
> > > > +        movaps  xmm12,XMMWORD[112+rsp]
> > > >
> > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > >
> > > > +        movaps  xmm13,XMMWORD[128+rsp]
> > > >
> > > > +        movaps  XMMWORD[128+rsp],xmm0
> > > >
> > > > +        movaps  xmm14,XMMWORD[144+rsp]
> > > >
> > > > +        movaps  XMMWORD[144+rsp],xmm0
> > > >
> > > > +        movaps  xmm15,XMMWORD[160+rsp]
> > > >
> > > > +        movaps  XMMWORD[160+rsp],xmm0
> > > >
> > > > +        mov     rbp,QWORD[((-8))+r11]
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[r11]
> > > >
> > > > +
> > > >
> > > > +$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:
> > > >
> > > > +global  aesni_set_decrypt_key
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +aesni_set_decrypt_key:
> > > >
> > > > +
> > > >
> > > > +DB      0x48,0x83,0xEC,0x08
> > > >
> > > > +
> > > >
> > > > +        call    __aesni_set_encrypt_key
> > > >
> > > > +        shl     edx,4
> > > >
> > > > +        test    eax,eax
> > > >
> > > > +        jnz     NEAR $L$dec_key_ret
> > > >
> > > > +        lea     rcx,[16+rdx*1+r8]
> > > >
> > > > +
> > > >
> > > > +        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[r8]
> > > >
> > > > +        movups  xmm1,XMMWORD[rcx]
> > > >
> > > > +DB      102,15,56,219,192
> > > >
> > > > +DB      102,15,56,219,201
> > > >
> > > > +        lea     r8,[16+r8]
> > > >
> > > > +        lea     rcx,[((-16))+rcx]
> > > >
> > > > +        movups  XMMWORD[16+rcx],xmm0
> > > >
> > > > +        movups  XMMWORD[(-16)+r8],xmm1
> > > >
> > > > +        cmp     rcx,r8
> > > >
> > > > +        ja      NEAR $L$dec_key_inverse
> > > >
> > > > +
> > > >
> > > > +        movups  xmm0,XMMWORD[r8]
> > > >
> > > > +DB      102,15,56,219,192
> > > >
> > > > +        pxor    xmm1,xmm1
> > > >
> > > > +        movups  XMMWORD[rcx],xmm0
> > > >
> > > > +        pxor    xmm0,xmm0
> > > >
> > > > +$L$dec_key_ret:
> > > >
> > > > +        add     rsp,8
> > > >
> > > > +
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +$L$SEH_end_set_decrypt_key:
> > > >
> > > > +
> > > >
> > > > +global  aesni_set_encrypt_key
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +aesni_set_encrypt_key:
> > > >
> > > > +__aesni_set_encrypt_key:
> > > >
> > > > +
> > > >
> > > > +DB      0x48,0x83,0xEC,0x08
> > > >
> > > > +
> > > >
> > > > +        mov     rax,-1
> > > >
> > > > +        test    rcx,rcx
> > > >
> > > > +        jz      NEAR $L$enc_key_ret
> > > >
> > > > +        test    r8,r8
> > > >
> > > > +        jz      NEAR $L$enc_key_ret
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,268437504
> > > >
> > > > +        movups  xmm0,XMMWORD[rcx]
> > > >
> > > > +        xorps   xmm4,xmm4
> > > >
> > > > +        and     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
> > > >
> > > > +        lea     rax,[16+r8]
> > > >
> > > > +        cmp     edx,256
> > > >
> > > > +        je      NEAR $L$14rounds
> > > >
> > > > +        cmp     edx,192
> > > >
> > > > +        je      NEAR $L$12rounds
> > > >
> > > > +        cmp     edx,128
> > > >
> > > > +        jne     NEAR $L$bad_keybits
> > > >
> > > > +
> > > >
> > > > +$L$10rounds:
> > > >
> > > > +        mov     edx,9
> > > >
> > > > +        cmp     r10d,268435456
> > > >
> > > > +        je      NEAR $L$10rounds_alt
> > > >
> > > > +
> > > >
> > > > +        movups  XMMWORD[r8],xmm0
> > > >
> > > > +DB      102,15,58,223,200,1
> > > >
> > > > +        call    $L$key_expansion_128_cold
> > > >
> > > > +DB      102,15,58,223,200,2
> > > >
> > > > +        call    $L$key_expansion_128
> > > >
> > > > +DB      102,15,58,223,200,4
> > > >
> > > > +        call    $L$key_expansion_128
> > > >
> > > > +DB      102,15,58,223,200,8
> > > >
> > > > +        call    $L$key_expansion_128
> > > >
> > > > +DB      102,15,58,223,200,16
> > > >
> > > > +        call    $L$key_expansion_128
> > > >
> > > > +DB      102,15,58,223,200,32
> > > >
> > > > +        call    $L$key_expansion_128
> > > >
> > > > +DB      102,15,58,223,200,64
> > > >
> > > > +        call    $L$key_expansion_128
> > > >
> > > > +DB      102,15,58,223,200,128
> > > >
> > > > +        call    $L$key_expansion_128
> > > >
> > > > +DB      102,15,58,223,200,27
> > > >
> > > > +        call    $L$key_expansion_128
> > > >
> > > > +DB      102,15,58,223,200,54
> > > >
> > > > +        call    $L$key_expansion_128
> > > >
> > > > +        movups  XMMWORD[rax],xmm0
> > > >
> > > > +        mov     DWORD[80+rax],edx
> > > >
> > > > +        xor     eax,eax
> > > >
> > > > +        jmp     NEAR $L$enc_key_ret
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$10rounds_alt:
> > > >
> > > > +        movdqa  xmm5,XMMWORD[$L$key_rotate]
> > > >
> > > > +        mov     r10d,8
> > > >
> > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +        movdqu  XMMWORD[r8],xmm0
> > > >
> > > > +        jmp     NEAR $L$oop_key128
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$oop_key128:
> > > >
> > > > +DB      102,15,56,0,197
> > > >
> > > > +DB      102,15,56,221,196
> > > >
> > > > +        pslld   xmm4,1
> > > >
> > > > +        lea     rax,[16+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm3,xmm2
> > > >
> > > > +        pslldq  xmm2,4
> > > >
> > > > +        pxor    xmm3,xmm2
> > > >
> > > > +        pslldq  xmm2,4
> > > >
> > > > +        pxor    xmm3,xmm2
> > > >
> > > > +        pslldq  xmm2,4
> > > >
> > > > +        pxor    xmm2,xmm3
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        movdqu  XMMWORD[(-16)+rax],xmm0
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +
> > > >
> > > > +        dec     r10d
> > > >
> > > > +        jnz     NEAR $L$oop_key128
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1b]
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,0,197
> > > >
> > > > +DB      102,15,56,221,196
> > > >
> > > > +        pslld   xmm4,1
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm3,xmm2
> > > >
> > > > +        pslldq  xmm2,4
> > > >
> > > > +        pxor    xmm3,xmm2
> > > >
> > > > +        pslldq  xmm2,4
> > > >
> > > > +        pxor    xmm3,xmm2
> > > >
> > > > +        pslldq  xmm2,4
> > > >
> > > > +        pxor    xmm2,xmm3
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        movdqu  XMMWORD[rax],xmm0
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +DB      102,15,56,0,197
> > > >
> > > > +DB      102,15,56,221,196
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm3,xmm2
> > > >
> > > > +        pslldq  xmm2,4
> > > >
> > > > +        pxor    xmm3,xmm2
> > > >
> > > > +        pslldq  xmm2,4
> > > >
> > > > +        pxor    xmm3,xmm2
> > > >
> > > > +        pslldq  xmm2,4
> > > >
> > > > +        pxor    xmm2,xmm3
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        movdqu  XMMWORD[16+rax],xmm0
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[96+rax],edx
> > > >
> > > > +        xor     eax,eax
> > > >
> > > > +        jmp     NEAR $L$enc_key_ret
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$12rounds:
> > > >
> > > > +        movq    xmm2,QWORD[16+rcx]
> > > >
> > > > +        mov     edx,11
> > > >
> > > > +        cmp     r10d,268435456
> > > >
> > > > +        je      NEAR $L$12rounds_alt
> > > >
> > > > +
> > > >
> > > > +        movups  XMMWORD[r8],xmm0
> > > >
> > > > +DB      102,15,58,223,202,1
> > > >
> > > > +        call    $L$key_expansion_192a_cold
> > > >
> > > > +DB      102,15,58,223,202,2
> > > >
> > > > +        call    $L$key_expansion_192b
> > > >
> > > > +DB      102,15,58,223,202,4
> > > >
> > > > +        call    $L$key_expansion_192a
> > > >
> > > > +DB      102,15,58,223,202,8
> > > >
> > > > +        call    $L$key_expansion_192b
> > > >
> > > > +DB      102,15,58,223,202,16
> > > >
> > > > +        call    $L$key_expansion_192a
> > > >
> > > > +DB      102,15,58,223,202,32
> > > >
> > > > +        call    $L$key_expansion_192b
> > > >
> > > > +DB      102,15,58,223,202,64
> > > >
> > > > +        call    $L$key_expansion_192a
> > > >
> > > > +DB      102,15,58,223,202,128
> > > >
> > > > +        call    $L$key_expansion_192b
> > > >
> > > > +        movups  XMMWORD[rax],xmm0
> > > >
> > > > +        mov     DWORD[48+rax],edx
> > > >
> > > > +        xor     rax,rax
> > > >
> > > > +        jmp     NEAR $L$enc_key_ret
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$12rounds_alt:
> > > >
> > > > +        movdqa  xmm5,XMMWORD[$L$key_rotate192]
> > > >
> > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> > > >
> > > > +        mov     r10d,8
> > > >
> > > > +        movdqu  XMMWORD[r8],xmm0
> > > >
> > > > +        jmp     NEAR $L$oop_key192
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$oop_key192:
> > > >
> > > > +        movq    QWORD[rax],xmm2
> > > >
> > > > +        movdqa  xmm1,xmm2
> > > >
> > > > +DB      102,15,56,0,213
> > > >
> > > > +DB      102,15,56,221,212
> > > >
> > > > +        pslld   xmm4,1
> > > >
> > > > +        lea     rax,[24+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        pslldq  xmm0,4
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        pslldq  xmm0,4
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        pslldq  xmm0,4
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +
> > > >
> > > > +        pshufd  xmm3,xmm0,0xff
> > > >
> > > > +        pxor    xmm3,xmm1
> > > >
> > > > +        pslldq  xmm1,4
> > > >
> > > > +        pxor    xmm3,xmm1
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        pxor    xmm2,xmm3
> > > >
> > > > +        movdqu  XMMWORD[(-16)+rax],xmm0
> > > >
> > > > +
> > > >
> > > > +        dec     r10d
> > > >
> > > > +        jnz     NEAR $L$oop_key192
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[32+rax],edx
> > > >
> > > > +        xor     eax,eax
> > > >
> > > > +        jmp     NEAR $L$enc_key_ret
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$14rounds:
> > > >
> > > > +        movups  xmm2,XMMWORD[16+rcx]
> > > >
> > > > +        mov     edx,13
> > > >
> > > > +        lea     rax,[16+rax]
> > > >
> > > > +        cmp     r10d,268435456
> > > >
> > > > +        je      NEAR $L$14rounds_alt
> > > >
> > > > +
> > > >
> > > > +        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
> > > >
> > > > +        call    $L$key_expansion_256b
> > > >
> > > > +DB      102,15,58,223,202,2
> > > >
> > > > +        call    $L$key_expansion_256a
> > > >
> > > > +DB      102,15,58,223,200,2
> > > >
> > > > +        call    $L$key_expansion_256b
> > > >
> > > > +DB      102,15,58,223,202,4
> > > >
> > > > +        call    $L$key_expansion_256a
> > > >
> > > > +DB      102,15,58,223,200,4
> > > >
> > > > +        call    $L$key_expansion_256b
> > > >
> > > > +DB      102,15,58,223,202,8
> > > >
> > > > +        call    $L$key_expansion_256a
> > > >
> > > > +DB      102,15,58,223,200,8
> > > >
> > > > +        call    $L$key_expansion_256b
> > > >
> > > > +DB      102,15,58,223,202,16
> > > >
> > > > +        call    $L$key_expansion_256a
> > > >
> > > > +DB      102,15,58,223,200,16
> > > >
> > > > +        call    $L$key_expansion_256b
> > > >
> > > > +DB      102,15,58,223,202,32
> > > >
> > > > +        call    $L$key_expansion_256a
> > > >
> > > > +DB      102,15,58,223,200,32
> > > >
> > > > +        call    $L$key_expansion_256b
> > > >
> > > > +DB      102,15,58,223,202,64
> > > >
> > > > +        call    $L$key_expansion_256a
> > > >
> > > > +        movups  XMMWORD[rax],xmm0
> > > >
> > > > +        mov     DWORD[16+rax],edx
> > > >
> > > > +        xor     rax,rax
> > > >
> > > > +        jmp     NEAR $L$enc_key_ret
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$14rounds_alt:
> > > >
> > > > +        movdqa  xmm5,XMMWORD[$L$key_rotate]
> > > >
> > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> > > >
> > > > +        mov     r10d,7
> > > >
> > > > +        movdqu  XMMWORD[r8],xmm0
> > > >
> > > > +        movdqa  xmm1,xmm2
> > > >
> > > > +        movdqu  XMMWORD[16+r8],xmm2
> > > >
> > > > +        jmp     NEAR $L$oop_key256
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$oop_key256:
> > > >
> > > > +DB      102,15,56,0,213
> > > >
> > > > +DB      102,15,56,221,212
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        pslldq  xmm0,4
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        pslldq  xmm0,4
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        pslldq  xmm0,4
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        pslld   xmm4,1
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        movdqu  XMMWORD[rax],xmm0
> > > >
> > > > +
> > > >
> > > > +        dec     r10d
> > > >
> > > > +        jz      NEAR $L$done_key256
> > > >
> > > > +
> > > >
> > > > +        pshufd  xmm2,xmm0,0xff
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +DB      102,15,56,221,211
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm3,xmm1
> > > >
> > > > +        pslldq  xmm1,4
> > > >
> > > > +        pxor    xmm3,xmm1
> > > >
> > > > +        pslldq  xmm1,4
> > > >
> > > > +        pxor    xmm3,xmm1
> > > >
> > > > +        pslldq  xmm1,4
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm2,xmm1
> > > >
> > > > +        movdqu  XMMWORD[16+rax],xmm2
> > > >
> > > > +        lea     rax,[32+rax]
> > > >
> > > > +        movdqa  xmm1,xmm2
> > > >
> > > > +
> > > >
> > > > +        jmp     NEAR $L$oop_key256
> > > >
> > > > +
> > > >
> > > > +$L$done_key256:
> > > >
> > > > +        mov     DWORD[16+rax],edx
> > > >
> > > > +        xor     eax,eax
> > > >
> > > > +        jmp     NEAR $L$enc_key_ret
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$bad_keybits:
> > > >
> > > > +        mov     rax,-2
> > > >
> > > > +$L$enc_key_ret:
> > > >
> > > > +        pxor    xmm0,xmm0
> > > >
> > > > +        pxor    xmm1,xmm1
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +        add     rsp,8
> > > >
> > > > +
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +$L$SEH_end_set_encrypt_key:
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$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
> > > >
> > > > +        xorps   xmm0,xmm4
> > > >
> > > > +        shufps  xmm1,xmm1,255
> > > >
> > > > +        xorps   xmm0,xmm1
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$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:
> > > >
> > > > +        shufps  xmm4,xmm0,16
> > > >
> > > > +        movdqa  xmm3,xmm2
> > > >
> > > > +        xorps   xmm0,xmm4
> > > >
> > > > +        shufps  xmm4,xmm0,140
> > > >
> > > > +        pslldq  xmm3,4
> > > >
> > > > +        xorps   xmm0,xmm4
> > > >
> > > > +        pshufd  xmm1,xmm1,85
> > > >
> > > > +        pxor    xmm2,xmm3
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        pshufd  xmm3,xmm0,255
> > > >
> > > > +        pxor    xmm2,xmm3
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$key_expansion_192b:
> > > >
> > > > +        movaps  xmm3,xmm0
> > > >
> > > > +        shufps  xmm5,xmm0,68
> > > >
> > > > +        movups  XMMWORD[rax],xmm5
> > > >
> > > > +        shufps  xmm3,xmm2,78
> > > >
> > > > +        movups  XMMWORD[16+rax],xmm3
> > > >
> > > > +        lea     rax,[32+rax]
> > > >
> > > > +        jmp     NEAR $L$key_expansion_192b_warm
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$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
> > > >
> > > > +        xorps   xmm0,xmm4
> > > >
> > > > +        shufps  xmm1,xmm1,255
> > > >
> > > > +        xorps   xmm0,xmm1
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$key_expansion_256b:
> > > >
> > > > +        movups  XMMWORD[rax],xmm0
> > > >
> > > > +        lea     rax,[16+rax]
> > > >
> > > > +
> > > >
> > > > +        shufps  xmm4,xmm2,16
> > > >
> > > > +        xorps   xmm2,xmm4
> > > >
> > > > +        shufps  xmm4,xmm2,140
> > > >
> > > > +        xorps   xmm2,xmm4
> > > >
> > > > +        shufps  xmm1,xmm1,170
> > > >
> > > > +        xorps   xmm2,xmm1
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   64
> > > >
> > > > +$L$bswap_mask:
> > > >
> > > > +DB      15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
> > > >
> > > > +$L$increment32:
> > > >
> > > > +        DD      6,6,6,0
> > > >
> > > > +$L$increment64:
> > > >
> > > > +        DD      1,0,0,0
> > > >
> > > > +$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
> > > >
> > > > +$L$key_rotate:
> > > >
> > > > +        DD      0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
> > > >
> > > > +$L$key_rotate192:
> > > >
> > > > +        DD      0x04070605,0x04070605,0x04070605,0x04070605
> > > >
> > > > +$L$key_rcon1:
> > > >
> > > > +        DD      1,1,1,1
> > > >
> > > > +$L$key_rcon1b:
> > > >
> > > > +        DD      0x1b,0x1b,0x1b,0x1b
> > > >
> > > > +
> > > >
> > > > +DB      65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
> > > >
> > > > +DB      83,45,78,73,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   64
> > > >
> > > > +EXTERN  __imp_RtlVirtualUnwind
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +ecb_ccm64_se_handler:
> > > >
> > > > +        push    rsi
> > > >
> > > > +        push    rdi
> > > >
> > > > +        push    rbx
> > > >
> > > > +        push    rbp
> > > >
> > > > +        push    r12
> > > >
> > > > +        push    r13
> > > >
> > > > +        push    r14
> > > >
> > > > +        push    r15
> > > >
> > > > +        pushfq
> > > >
> > > > +        sub     rsp,64
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[120+r8]
> > > >
> > > > +        mov     rbx,QWORD[248+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,QWORD[8+r9]
> > > >
> > > > +        mov     r11,QWORD[56+r9]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[152+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[4+r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jae     NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +        lea     rsi,[rax]
> > > >
> > > > +        lea     rdi,[512+r8]
> > > >
> > > > +        mov     ecx,8
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +        lea     rax,[88+rax]
> > > >
> > > > +
> > > >
> > > > +        jmp     NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +ctr_xts_se_handler:
> > > >
> > > > +        push    rsi
> > > >
> > > > +        push    rdi
> > > >
> > > > +        push    rbx
> > > >
> > > > +        push    rbp
> > > >
> > > > +        push    r12
> > > >
> > > > +        push    r13
> > > >
> > > > +        push    r14
> > > >
> > > > +        push    r15
> > > >
> > > > +        pushfq
> > > >
> > > > +        sub     rsp,64
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[120+r8]
> > > >
> > > > +        mov     rbx,QWORD[248+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,QWORD[8+r9]
> > > >
> > > > +        mov     r11,QWORD[56+r9]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[152+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[4+r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jae     NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[208+r8]
> > > >
> > > > +
> > > >
> > > > +        lea     rsi,[((-168))+rax]
> > > >
> > > > +        lea     rdi,[512+r8]
> > > >
> > > > +        mov     ecx,20
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +        mov     rbp,QWORD[((-8))+rax]
> > > >
> > > > +        mov     QWORD[160+r8],rbp
> > > >
> > > > +        jmp     NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +ocb_se_handler:
> > > >
> > > > +        push    rsi
> > > >
> > > > +        push    rdi
> > > >
> > > > +        push    rbx
> > > >
> > > > +        push    rbp
> > > >
> > > > +        push    r12
> > > >
> > > > +        push    r13
> > > >
> > > > +        push    r14
> > > >
> > > > +        push    r15
> > > >
> > > > +        pushfq
> > > >
> > > > +        sub     rsp,64
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[120+r8]
> > > >
> > > > +        mov     rbx,QWORD[248+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,QWORD[8+r9]
> > > >
> > > > +        mov     r11,QWORD[56+r9]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[4+r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jae     NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[8+r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jae     NEAR $L$ocb_no_xmm
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[152+r8]
> > > >
> > > > +
> > > >
> > > > +        lea     rsi,[rax]
> > > >
> > > > +        lea     rdi,[512+r8]
> > > >
> > > > +        mov     ecx,20
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +        lea     rax,[((160+40))+rax]
> > > >
> > > > +
> > > >
> > > > +$L$ocb_no_xmm:
> > > >
> > > > +        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     NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +cbc_se_handler:
> > > >
> > > > +        push    rsi
> > > >
> > > > +        push    rdi
> > > >
> > > > +        push    rbx
> > > >
> > > > +        push    rbp
> > > >
> > > > +        push    r12
> > > >
> > > > +        push    r13
> > > >
> > > > +        push    r14
> > > >
> > > > +        push    r15
> > > >
> > > > +        pushfq
> > > >
> > > > +        sub     rsp,64
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[152+r8]
> > > >
> > > > +        mov     rbx,QWORD[248+r8]
> > > >
> > > > +
> > > >
> > > > +        lea     r10,[$L$cbc_decrypt_bulk]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[120+r8]
> > > >
> > > > +
> > > >
> > > > +        lea     r10,[$L$cbc_decrypt_body]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[152+r8]
> > > >
> > > > +
> > > >
> > > > +        lea     r10,[$L$cbc_ret]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jae     NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +        lea     rsi,[16+rax]
> > > >
> > > > +        lea     rdi,[512+r8]
> > > >
> > > > +        mov     ecx,20
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[208+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     rbp,QWORD[((-8))+rax]
> > > >
> > > > +        mov     QWORD[160+r8],rbp
> > > >
> > > > +
> > > >
> > > > +$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[40+r9]
> > > >
> > > > +        mov     rsi,r8
> > > >
> > > > +        mov     ecx,154
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,r9
> > > >
> > > > +        xor     rcx,rcx
> > > >
> > > > +        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
> > > >
> > > > +        popfq
> > > >
> > > > +        pop     r15
> > > >
> > > > +        pop     r14
> > > >
> > > > +        pop     r13
> > > >
> > > > +        pop     r12
> > > >
> > > > +        pop     rbp
> > > >
> > > > +        pop     rbx
> > > >
> > > > +        pop     rdi
> > > >
> > > > +        pop     rsi
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +section .pdata rdata align=4
> > > >
> > > > +ALIGN   4
> > > >
> > > > +        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      $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      $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      $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      $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      $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_ocb_encrypt wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_end_aesni_ocb_encrypt wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_info_ocb_enc wrt ..imagebase
> > > >
> > > > +
> > > >
> > > > +        DD      $L$SEH_begin_aesni_ocb_decrypt wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_end_aesni_ocb_decrypt wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_info_ocb_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      aesni_set_decrypt_key wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_end_set_decrypt_key wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_info_key wrt ..imagebase
> > > >
> > > > +
> > > >
> > > > +        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:
> > > >
> > > > +DB      9,0,0,0
> > > >
> > > > +        DD      ecb_ccm64_se_handler wrt ..imagebase
> > > >
> > > > +        DD      $L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret
> > wrt ..imagebase
> > > >
> > > > +$L$SEH_info_ccm64_enc:
> > > >
> > > > +DB      9,0,0,0
> > > >
> > > > +        DD      ecb_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      ecb_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      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      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      ctr_xts_se_handler wrt ..imagebase
> > > >
> > > > +        DD      $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue
> > > > wrt ..imagebase
> > > >
> > > > +$L$SEH_info_ocb_enc:
> > > >
> > > > +DB      9,0,0,0
> > > >
> > > > +        DD      ocb_se_handler wrt ..imagebase
> > > >
> > > > +        DD      $L$ocb_enc_body wrt ..imagebase,$L$ocb_enc_epilogue
> > > > wrt ..imagebase
> > > >
> > > > +        DD      $L$ocb_enc_pop wrt ..imagebase
> > > >
> > > > +        DD      0
> > > >
> > > > +$L$SEH_info_ocb_dec:
> > > >
> > > > +DB      9,0,0,0
> > > >
> > > > +        DD      ocb_se_handler wrt ..imagebase
> > > >
> > > > +        DD      $L$ocb_dec_body wrt ..imagebase,$L$ocb_dec_epilogue
> > > > wrt ..imagebase
> > > >
> > > > +        DD      $L$ocb_dec_pop wrt ..imagebase
> > > >
> > > > +        DD      0
> > > >
> > > > +$L$SEH_info_cbc:
> > > >
> > > > +DB      9,0,0,0
> > > >
> > > > +        DD      cbc_se_handler wrt ..imagebase
> > > >
> > > > +$L$SEH_info_key:
> > > >
> > > > +DB      0x01,0x04,0x01,0x00
> > > >
> > > > +DB      0x04,0x02,0x00,0x00
> > > >
> > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-
> > x86_64.nasm
> > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
> > > > new file mode 100644
> > > > index 0000000000..1c911fa294
> > > > --- /dev/null
> > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
> > > > @@ -0,0 +1,1173 @@
> > > > +; WARNING: do not edit!
> > > >
> > > > +; Generated from openssl/crypto/aes/asm/vpaes-x86_64.pl
> > > >
> > > > +;
> > > >
> > > > +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights
> Reserved.
> > > >
> > > > +;
> > > >
> > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > >
> > > > +; this file except in compliance with the License.  You can obtain a
> copy
> > > >
> > > > +; in the file LICENSE in the source distribution or at
> > > >
> > > > +; https://www.openssl.org/source/license.html
> > > >
> > > > +
> > > >
> > > > +default rel
> > > >
> > > > +%define XMMWORD
> > > >
> > > > +%define YMMWORD
> > > >
> > > > +%define ZMMWORD
> > > >
> > > > +section .text code align=64
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +_vpaes_encrypt_core:
> > > >
> > > > +
> > > >
> > > > +        mov     r9,rdx
> > > >
> > > > +        mov     r11,16
> > > >
> > > > +        mov     eax,DWORD[240+rdx]
> > > >
> > > > +        movdqa  xmm1,xmm9
> > > >
> > > > +        movdqa  xmm2,XMMWORD[$L$k_ipt]
> > > >
> > > > +        pandn   xmm1,xmm0
> > > >
> > > > +        movdqu  xmm5,XMMWORD[r9]
> > > >
> > > > +        psrld   xmm1,4
> > > >
> > > > +        pand    xmm0,xmm9
> > > >
> > > > +DB      102,15,56,0,208
> > > >
> > > > +        movdqa  xmm0,XMMWORD[(($L$k_ipt+16))]
> > > >
> > > > +DB      102,15,56,0,193
> > > >
> > > > +        pxor    xmm2,xmm5
> > > >
> > > > +        add     r9,16
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        lea     r10,[$L$k_mc_backward]
> > > >
> > > > +        jmp     NEAR $L$enc_entry
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$enc_loop:
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm13
> > > >
> > > > +        movdqa  xmm0,xmm12
> > > >
> > > > +DB      102,15,56,0,226
> > > >
> > > > +DB      102,15,56,0,195
> > > >
> > > > +        pxor    xmm4,xmm5
> > > >
> > > > +        movdqa  xmm5,xmm15
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((-64))+r10*1+r11]
> > > >
> > > > +DB      102,15,56,0,234
> > > >
> > > > +        movdqa  xmm4,XMMWORD[r10*1+r11]
> > > >
> > > > +        movdqa  xmm2,xmm14
> > > >
> > > > +DB      102,15,56,0,211
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        pxor    xmm2,xmm5
> > > >
> > > > +DB      102,15,56,0,193
> > > >
> > > > +        add     r9,16
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +DB      102,15,56,0,220
> > > >
> > > > +        add     r11,16
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +DB      102,15,56,0,193
> > > >
> > > > +        and     r11,0x30
> > > >
> > > > +        sub     rax,1
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +
> > > >
> > > > +$L$enc_entry:
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm9
> > > >
> > > > +        movdqa  xmm5,xmm11
> > > >
> > > > +        pandn   xmm1,xmm0
> > > >
> > > > +        psrld   xmm1,4
> > > >
> > > > +        pand    xmm0,xmm9
> > > >
> > > > +DB      102,15,56,0,232
> > > >
> > > > +        movdqa  xmm3,xmm10
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +DB      102,15,56,0,217
> > > >
> > > > +        movdqa  xmm4,xmm10
> > > >
> > > > +        pxor    xmm3,xmm5
> > > >
> > > > +DB      102,15,56,0,224
> > > >
> > > > +        movdqa  xmm2,xmm10
> > > >
> > > > +        pxor    xmm4,xmm5
> > > >
> > > > +DB      102,15,56,0,211
> > > >
> > > > +        movdqa  xmm3,xmm10
> > > >
> > > > +        pxor    xmm2,xmm0
> > > >
> > > > +DB      102,15,56,0,220
> > > >
> > > > +        movdqu  xmm5,XMMWORD[r9]
> > > >
> > > > +        pxor    xmm3,xmm1
> > > >
> > > > +        jnz     NEAR $L$enc_loop
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        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[64+r10*1+r11]
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +DB      102,15,56,0,193
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +_vpaes_decrypt_core:
> > > >
> > > > +
> > > >
> > > > +        mov     r9,rdx
> > > >
> > > > +        mov     eax,DWORD[240+rdx]
> > > >
> > > > +        movdqa  xmm1,xmm9
> > > >
> > > > +        movdqa  xmm2,XMMWORD[$L$k_dipt]
> > > >
> > > > +        pandn   xmm1,xmm0
> > > >
> > > > +        mov     r11,rax
> > > >
> > > > +        psrld   xmm1,4
> > > >
> > > > +        movdqu  xmm5,XMMWORD[r9]
> > > >
> > > > +        shl     r11,4
> > > >
> > > > +        pand    xmm0,xmm9
> > > >
> > > > +DB      102,15,56,0,208
> > > >
> > > > +        movdqa  xmm0,XMMWORD[(($L$k_dipt+16))]
> > > >
> > > > +        xor     r11,0x30
> > > >
> > > > +        lea     r10,[$L$k_dsbd]
> > > >
> > > > +DB      102,15,56,0,193
> > > >
> > > > +        and     r11,0x30
> > > >
> > > > +        pxor    xmm2,xmm5
> > > >
> > > > +        movdqa  xmm5,XMMWORD[(($L$k_mc_forward+48))]
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        add     r9,16
> > > >
> > > > +        add     r11,r10
> > > >
> > > > +        jmp     NEAR $L$dec_entry
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$dec_loop:
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        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[r10]
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        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[32+r10]
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        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[64+r10]
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        movdqa  xmm1,XMMWORD[80+r10]
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,0,226
> > > >
> > > > +DB      102,15,56,0,197
> > > >
> > > > +DB      102,15,56,0,203
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        add     r9,16
> > > >
> > > > +DB      102,15,58,15,237,12
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        sub     rax,1
> > > >
> > > > +
> > > >
> > > > +$L$dec_entry:
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm9
> > > >
> > > > +        pandn   xmm1,xmm0
> > > >
> > > > +        movdqa  xmm2,xmm11
> > > >
> > > > +        psrld   xmm1,4
> > > >
> > > > +        pand    xmm0,xmm9
> > > >
> > > > +DB      102,15,56,0,208
> > > >
> > > > +        movdqa  xmm3,xmm10
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +DB      102,15,56,0,217
> > > >
> > > > +        movdqa  xmm4,xmm10
> > > >
> > > > +        pxor    xmm3,xmm2
> > > >
> > > > +DB      102,15,56,0,224
> > > >
> > > > +        pxor    xmm4,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm10
> > > >
> > > > +DB      102,15,56,0,211
> > > >
> > > > +        movdqa  xmm3,xmm10
> > > >
> > > > +        pxor    xmm2,xmm0
> > > >
> > > > +DB      102,15,56,0,220
> > > >
> > > > +        movdqu  xmm0,XMMWORD[r9]
> > > >
> > > > +        pxor    xmm3,xmm1
> > > >
> > > > +        jnz     NEAR $L$dec_loop
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,XMMWORD[96+r10]
> > > >
> > > > +DB      102,15,56,0,226
> > > >
> > > > +        pxor    xmm4,xmm0
> > > >
> > > > +        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
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +_vpaes_schedule_core:
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        call    _vpaes_preheat
> > > >
> > > > +        movdqa  xmm8,XMMWORD[$L$k_rcon]
> > > >
> > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        lea     r11,[$L$k_ipt]
> > > >
> > > > +        call    _vpaes_schedule_transform
> > > >
> > > > +        movdqa  xmm7,xmm0
> > > >
> > > > +
> > > >
> > > > +        lea     r10,[$L$k_sr]
> > > >
> > > > +        test    rcx,rcx
> > > >
> > > > +        jnz     NEAR $L$schedule_am_decrypting
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqu  XMMWORD[rdx],xmm0
> > > >
> > > > +        jmp     NEAR $L$schedule_go
> > > >
> > > > +
> > > >
> > > > +$L$schedule_am_decrypting:
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> > > >
> > > > +DB      102,15,56,0,217
> > > >
> > > > +        movdqu  XMMWORD[rdx],xmm3
> > > >
> > > > +        xor     r8,0x30
> > > >
> > > > +
> > > >
> > > > +$L$schedule_go:
> > > >
> > > > +        cmp     esi,192
> > > >
> > > > +        ja      NEAR $L$schedule_256
> > > >
> > > > +        je      NEAR $L$schedule_192
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +$L$schedule_128:
> > > >
> > > > +        mov     esi,10
> > > >
> > > > +
> > > >
> > > > +$L$oop_schedule_128:
> > > >
> > > > +        call    _vpaes_schedule_round
> > > >
> > > > +        dec     rsi
> > > >
> > > > +        jz      NEAR $L$schedule_mangle_last
> > > >
> > > > +        call    _vpaes_schedule_mangle
> > > >
> > > > +        jmp     NEAR $L$oop_schedule_128
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$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:
> > > >
> > > > +        call    _vpaes_schedule_round
> > > >
> > > > +DB      102,15,58,15,198,8
> > > >
> > > > +        call    _vpaes_schedule_mangle
> > > >
> > > > +        call    _vpaes_schedule_192_smear
> > > >
> > > > +        call    _vpaes_schedule_mangle
> > > >
> > > > +        call    _vpaes_schedule_round
> > > >
> > > > +        dec     rsi
> > > >
> > > > +        jz      NEAR $L$schedule_mangle_last
> > > >
> > > > +        call    _vpaes_schedule_mangle
> > > >
> > > > +        call    _vpaes_schedule_192_smear
> > > >
> > > > +        jmp     NEAR $L$oop_schedule_192
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$schedule_256:
> > > >
> > > > +        movdqu  xmm0,XMMWORD[16+rdi]
> > > >
> > > > +        call    _vpaes_schedule_transform
> > > >
> > > > +        mov     esi,7
> > > >
> > > > +
> > > >
> > > > +$L$oop_schedule_256:
> > > >
> > > > +        call    _vpaes_schedule_mangle
> > > >
> > > > +        movdqa  xmm6,xmm0
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        call    _vpaes_schedule_round
> > > >
> > > > +        dec     rsi
> > > >
> > > > +        jz      NEAR $L$schedule_mangle_last
> > > >
> > > > +        call    _vpaes_schedule_mangle
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        pshufd  xmm0,xmm0,0xFF
> > > >
> > > > +        movdqa  xmm5,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm6
> > > >
> > > > +        call    _vpaes_schedule_low_round
> > > >
> > > > +        movdqa  xmm7,xmm5
> > > >
> > > > +
> > > >
> > > > +        jmp     NEAR $L$oop_schedule_256
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$schedule_mangle_last:
> > > >
> > > > +
> > > >
> > > > +        lea     r11,[$L$k_deskew]
> > > >
> > > > +        test    rcx,rcx
> > > >
> > > > +        jnz     NEAR $L$schedule_mangle_last_dec
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> > > >
> > > > +DB      102,15,56,0,193
> > > >
> > > > +        lea     r11,[$L$k_opt]
> > > >
> > > > +        add     rdx,32
> > > >
> > > > +
> > > >
> > > > +$L$schedule_mangle_last_dec:
> > > >
> > > > +        add     rdx,-16
> > > >
> > > > +        pxor    xmm0,XMMWORD[$L$k_s63]
> > > >
> > > > +        call    _vpaes_schedule_transform
> > > >
> > > > +        movdqu  XMMWORD[rdx],xmm0
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm0,xmm0
> > > >
> > > > +        pxor    xmm1,xmm1
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +        pxor    xmm6,xmm6
> > > >
> > > > +        pxor    xmm7,xmm7
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +_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
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +_vpaes_schedule_round:
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm1,xmm1
> > > >
> > > > +DB      102,65,15,58,15,200,15
> > > >
> > > > +DB      102,69,15,58,15,192,15
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        pshufd  xmm0,xmm0,0xFF
> > > >
> > > > +DB      102,15,58,15,192,1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +_vpaes_schedule_low_round:
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm7
> > > >
> > > > +        pslldq  xmm7,4
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        movdqa  xmm1,xmm7
> > > >
> > > > +        pslldq  xmm7,8
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm7,XMMWORD[$L$k_s63]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm9
> > > >
> > > > +        pandn   xmm1,xmm0
> > > >
> > > > +        psrld   xmm1,4
> > > >
> > > > +        pand    xmm0,xmm9
> > > >
> > > > +        movdqa  xmm2,xmm11
> > > >
> > > > +DB      102,15,56,0,208
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        movdqa  xmm3,xmm10
> > > >
> > > > +DB      102,15,56,0,217
> > > >
> > > > +        pxor    xmm3,xmm2
> > > >
> > > > +        movdqa  xmm4,xmm10
> > > >
> > > > +DB      102,15,56,0,224
> > > >
> > > > +        pxor    xmm4,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm10
> > > >
> > > > +DB      102,15,56,0,211
> > > >
> > > > +        pxor    xmm2,xmm0
> > > >
> > > > +        movdqa  xmm3,xmm10
> > > >
> > > > +DB      102,15,56,0,220
> > > >
> > > > +        pxor    xmm3,xmm1
> > > >
> > > > +        movdqa  xmm4,xmm13
> > > >
> > > > +DB      102,15,56,0,226
> > > >
> > > > +        movdqa  xmm0,xmm12
> > > >
> > > > +DB      102,15,56,0,195
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm0,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm0
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +_vpaes_schedule_transform:
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm9
> > > >
> > > > +        pandn   xmm1,xmm0
> > > >
> > > > +        psrld   xmm1,4
> > > >
> > > > +        pand    xmm0,xmm9
> > > >
> > > > +        movdqa  xmm2,XMMWORD[r11]
> > > >
> > > > +DB      102,15,56,0,208
> > > >
> > > > +        movdqa  xmm0,XMMWORD[16+r11]
> > > >
> > > > +DB      102,15,56,0,193
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +_vpaes_schedule_mangle:
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        movdqa  xmm5,XMMWORD[$L$k_mc_forward]
> > > >
> > > > +        test    rcx,rcx
> > > >
> > > > +        jnz     NEAR $L$schedule_mangle_dec
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        add     rdx,16
> > > >
> > > > +        pxor    xmm4,XMMWORD[$L$k_s63]
> > > >
> > > > +DB      102,15,56,0,229
> > > >
> > > > +        movdqa  xmm3,xmm4
> > > >
> > > > +DB      102,15,56,0,229
> > > >
> > > > +        pxor    xmm3,xmm4
> > > >
> > > > +DB      102,15,56,0,229
> > > >
> > > > +        pxor    xmm3,xmm4
> > > >
> > > > +
> > > >
> > > > +        jmp     NEAR $L$schedule_mangle_both
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$schedule_mangle_dec:
> > > >
> > > > +
> > > >
> > > > +        lea     r11,[$L$k_dksd]
> > > >
> > > > +        movdqa  xmm1,xmm9
> > > >
> > > > +        pandn   xmm1,xmm4
> > > >
> > > > +        psrld   xmm1,4
> > > >
> > > > +        pand    xmm4,xmm9
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,XMMWORD[r11]
> > > >
> > > > +DB      102,15,56,0,212
> > > >
> > > > +        movdqa  xmm3,XMMWORD[16+r11]
> > > >
> > > > +DB      102,15,56,0,217
> > > >
> > > > +        pxor    xmm3,xmm2
> > > >
> > > > +DB      102,15,56,0,221
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,XMMWORD[32+r11]
> > > >
> > > > +DB      102,15,56,0,212
> > > >
> > > > +        pxor    xmm2,xmm3
> > > >
> > > > +        movdqa  xmm3,XMMWORD[48+r11]
> > > >
> > > > +DB      102,15,56,0,217
> > > >
> > > > +        pxor    xmm3,xmm2
> > > >
> > > > +DB      102,15,56,0,221
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,XMMWORD[64+r11]
> > > >
> > > > +DB      102,15,56,0,212
> > > >
> > > > +        pxor    xmm2,xmm3
> > > >
> > > > +        movdqa  xmm3,XMMWORD[80+r11]
> > > >
> > > > +DB      102,15,56,0,217
> > > >
> > > > +        pxor    xmm3,xmm2
> > > >
> > > > +DB      102,15,56,0,221
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,XMMWORD[96+r11]
> > > >
> > > > +DB      102,15,56,0,212
> > > >
> > > > +        pxor    xmm2,xmm3
> > > >
> > > > +        movdqa  xmm3,XMMWORD[112+r11]
> > > >
> > > > +DB      102,15,56,0,217
> > > >
> > > > +        pxor    xmm3,xmm2
> > > >
> > > > +
> > > >
> > > > +        add     rdx,-16
> > > >
> > > > +
> > > >
> > > > +$L$schedule_mangle_both:
> > > >
> > > > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> > > >
> > > > +DB      102,15,56,0,217
> > > >
> > > > +        add     r8,-16
> > > >
> > > > +        and     r8,0x30
> > > >
> > > > +        movdqu  XMMWORD[rdx],xmm3
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +global  vpaes_set_encrypt_key
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +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:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        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[240+rdx],eax
> > > >
> > > > +
> > > >
> > > > +        mov     ecx,0
> > > >
> > > > +        mov     r8d,0x30
> > > >
> > > > +        call    _vpaes_schedule_core
> > > >
> > > > +        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[8+rsp]        ;WIN64 epilogue
> > > >
> > > > +        mov     rsi,QWORD[16+rsp]
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +$L$SEH_end_vpaes_set_encrypt_key:
> > > >
> > > > +
> > > >
> > > > +global  vpaes_set_decrypt_key
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +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:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        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[240+rdx],eax
> > > >
> > > > +        shl     eax,4
> > > >
> > > > +        lea     rdx,[16+rax*1+rdx]
> > > >
> > > > +
> > > >
> > > > +        mov     ecx,1
> > > >
> > > > +        mov     r8d,esi
> > > >
> > > > +        shr     r8d,1
> > > >
> > > > +        and     r8d,32
> > > >
> > > > +        xor     r8d,32
> > > >
> > > > +        call    _vpaes_schedule_core
> > > >
> > > > +        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[8+rsp]        ;WIN64 epilogue
> > > >
> > > > +        mov     rsi,QWORD[16+rsp]
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +$L$SEH_end_vpaes_set_decrypt_key:
> > > >
> > > > +
> > > >
> > > > +global  vpaes_encrypt
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +vpaes_encrypt:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_vpaes_encrypt:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        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[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:
> > > >
> > > > +
> > > >
> > > > +global  vpaes_decrypt
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +vpaes_decrypt:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_vpaes_decrypt:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        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[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:
> > > >
> > > > +global  vpaes_cbc_encrypt
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +vpaes_cbc_encrypt:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_vpaes_cbc_encrypt:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +        mov     rcx,r9
> > > >
> > > > +        mov     r8,QWORD[40+rsp]
> > > >
> > > > +        mov     r9,QWORD[48+rsp]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        xchg    rdx,rcx
> > > >
> > > > +        sub     rcx,16
> > > >
> > > > +        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      NEAR $L$cbc_dec_loop
> > > >
> > > > +        jmp     NEAR $L$cbc_enc_loop
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$cbc_enc_loop:
> > > >
> > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > >
> > > > +        pxor    xmm0,xmm6
> > > >
> > > > +        call    _vpaes_encrypt_core
> > > >
> > > > +        movdqa  xmm6,xmm0
> > > >
> > > > +        movdqu  XMMWORD[rdi*1+rsi],xmm0
> > > >
> > > > +        lea     rdi,[16+rdi]
> > > >
> > > > +        sub     rcx,16
> > > >
> > > > +        jnc     NEAR $L$cbc_enc_loop
> > > >
> > > > +        jmp     NEAR $L$cbc_done
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$cbc_dec_loop:
> > > >
> > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > >
> > > > +        movdqa  xmm7,xmm0
> > > >
> > > > +        call    _vpaes_decrypt_core
> > > >
> > > > +        pxor    xmm0,xmm6
> > > >
> > > > +        movdqa  xmm6,xmm7
> > > >
> > > > +        movdqu  XMMWORD[rdi*1+rsi],xmm0
> > > >
> > > > +        lea     rdi,[16+rdi]
> > > >
> > > > +        sub     rcx,16
> > > >
> > > > +        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:
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +_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
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   64
> > > >
> > > > +_vpaes_consts:
> > > >
> > > > +$L$k_inv:
> > > >
> > > > +        DQ      0x0E05060F0D080180,0x040703090A0B0C02
> > > >
> > > > +        DQ      0x01040A060F0B0780,0x030D0E0C02050809
> > > >
> > > > +
> > > >
> > > > +$L$k_s0F:
> > > >
> > > > +        DQ      0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F
> > > >
> > > > +
> > > >
> > > > +$L$k_ipt:
> > > >
> > > > +        DQ      0xC2B2E8985A2A7000,0xCABAE09052227808
> > > >
> > > > +        DQ      0x4C01307D317C4D00,0xCD80B1FCB0FDCC81
> > > >
> > > > +
> > > >
> > > > +$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      0x0407060500030201,0x0C0F0E0D080B0A09
> > > >
> > > > +        DQ      0x080B0A0904070605,0x000302010C0F0E0D
> > > >
> > > > +        DQ      0x0C0F0E0D080B0A09,0x0407060500030201
> > > >
> > > > +        DQ      0x000302010C0F0E0D,0x080B0A0904070605
> > > >
> > > > +
> > > >
> > > > +$L$k_mc_backward:
> > > >
> > > > +        DQ      0x0605040702010003,0x0E0D0C0F0A09080B
> > > >
> > > > +        DQ      0x020100030E0D0C0F,0x0A09080B06050407
> > > >
> > > > +        DQ      0x0E0D0C0F0A09080B,0x0605040702010003
> > > >
> > > > +        DQ      0x0A09080B06050407,0x020100030E0D0C0F
> > > >
> > > > +
> > > >
> > > > +$L$k_sr:
> > > >
> > > > +        DQ      0x0706050403020100,0x0F0E0D0C0B0A0908
> > > >
> > > > +        DQ      0x030E09040F0A0500,0x0B06010C07020D08
> > > >
> > > > +        DQ      0x0F060D040B020900,0x070E050C030A0108
> > > >
> > > > +        DQ      0x0B0E0104070A0D00,0x0306090C0F020508
> > > >
> > > > +
> > > >
> > > > +$L$k_rcon:
> > > >
> > > > +        DQ      0x1F8391B9AF9DEEB6,0x702A98084D7C7D81
> > > >
> > > > +
> > > >
> > > > +$L$k_s63:
> > > >
> > > > +        DQ      0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B
> > > >
> > > > +
> > > >
> > > > +$L$k_opt:
> > > >
> > > > +        DQ      0xFF9F4929D6B66000,0xF7974121DEBE6808
> > > >
> > > > +        DQ      0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0
> > > >
> > > > +
> > > >
> > > > +$L$k_deskew:
> > > >
> > > > +        DQ      0x07E4A34047A4E300,0x1DFEB95A5DBEF91A
> > > >
> > > > +        DQ      0x5F36B5DC83EA6900,0x2841C2ABF49D1E77
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +$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      0x0F505B040B545F00,0x154A411E114E451A
> > > >
> > > > +        DQ      0x86E383E660056500,0x12771772F491F194
> > > >
> > > > +
> > > >
> > > > +$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
> > > >
> > > > +DB      109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32
> > > >
> > > > +DB      85,110,105,118,101,114,115,105,116,121,41,0
> > > >
> > > > +ALIGN   64
> > > >
> > > > +
> > > >
> > > > +EXTERN  __imp_RtlVirtualUnwind
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +se_handler:
> > > >
> > > > +        push    rsi
> > > >
> > > > +        push    rdi
> > > >
> > > > +        push    rbx
> > > >
> > > > +        push    rbp
> > > >
> > > > +        push    r12
> > > >
> > > > +        push    r13
> > > >
> > > > +        push    r14
> > > >
> > > > +        push    r15
> > > >
> > > > +        pushfq
> > > >
> > > > +        sub     rsp,64
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[120+r8]
> > > >
> > > > +        mov     rbx,QWORD[248+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,QWORD[8+r9]
> > > >
> > > > +        mov     r11,QWORD[56+r9]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$in_prologue
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[152+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[4+r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jae     NEAR $L$in_prologue
> > > >
> > > > +
> > > >
> > > > +        lea     rsi,[16+rax]
> > > >
> > > > +        lea     rdi,[512+r8]
> > > >
> > > > +        mov     ecx,20
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +        lea     rax,[184+rax]
> > > >
> > > > +
> > > >
> > > > +$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[40+r9]
> > > >
> > > > +        mov     rsi,r8
> > > >
> > > > +        mov     ecx,154
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,r9
> > > >
> > > > +        xor     rcx,rcx
> > > >
> > > > +        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
> > > >
> > > > +        popfq
> > > >
> > > > +        pop     r15
> > > >
> > > > +        pop     r14
> > > >
> > > > +        pop     r13
> > > >
> > > > +        pop     r12
> > > >
> > > > +        pop     rbp
> > > >
> > > > +        pop     rbx
> > > >
> > > > +        pop     rdi
> > > >
> > > > +        pop     rsi
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +section .pdata rdata align=4
> > > >
> > > > +ALIGN   4
> > > >
> > > > +        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      $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      $L$SEH_begin_vpaes_encrypt wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_end_vpaes_encrypt wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_info_vpaes_encrypt wrt ..imagebase
> > > >
> > > > +
> > > >
> > > > +        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      $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
> > > >
> > > > +
> > > >
> > > > +section .xdata rdata align=8
> > > >
> > > > +ALIGN   8
> > > >
> > > > +$L$SEH_info_vpaes_set_encrypt_key:
> > > >
> > > > +DB      9,0,0,0
> > > >
> > > > +        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      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      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      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      se_handler wrt ..imagebase
> > > >
> > > > +        DD      $L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt
> ..imagebase
> > > >
> > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
> > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
> > > > x86_64.nasm
> > > > new file mode 100644
> > > > index 0000000000..60f283d5fb
> > > > --- /dev/null
> > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm
> > > > @@ -0,0 +1,1569 @@
> > > > +; WARNING: do not edit!
> > > >
> > > > +; Generated from openssl/crypto/modes/asm/ghash-x86_64.pl
> > > >
> > > > +;
> > > >
> > > > +; Copyright 2010-2020 The OpenSSL Project Authors. All Rights
> Reserved.
> > > >
> > > > +;
> > > >
> > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > >
> > > > +; this file except in compliance with the License.  You can obtain a
> copy
> > > >
> > > > +; in the file LICENSE in the source distribution or at
> > > >
> > > > +; https://www.openssl.org/source/license.html
> > > >
> > > > +
> > > >
> > > > +default rel
> > > >
> > > > +%define XMMWORD
> > > >
> > > > +%define YMMWORD
> > > >
> > > > +%define ZMMWORD
> > > >
> > > > +section .text code align=64
> > > >
> > > > +
> > > >
> > > > +EXTERN  OPENSSL_ia32cap_P
> > > >
> > > > +
> > > >
> > > > +global  gcm_gmult_4bit
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +gcm_gmult_4bit:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_gcm_gmult_4bit:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        push    rbx
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        push    r12
> > > >
> > > > +
> > > >
> > > > +        push    r13
> > > >
> > > > +
> > > >
> > > > +        push    r14
> > > >
> > > > +
> > > >
> > > > +        push    r15
> > > >
> > > > +
> > > >
> > > > +        sub     rsp,280
> > > >
> > > > +
> > > >
> > > > +$L$gmult_prologue:
> > > >
> > > > +
> > > >
> > > > +        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[8+rax*1+rsi]
> > > >
> > > > +        mov     r9,QWORD[rax*1+rsi]
> > > >
> > > > +        and     bl,0xf0
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +        jmp     NEAR $L$oop1
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$oop1:
> > > >
> > > > +        shr     r8,4
> > > >
> > > > +        and     rdx,0xf
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        mov     al,BYTE[rcx*1+rdi]
> > > >
> > > > +        shr     r9,4
> > > >
> > > > +        xor     r8,QWORD[8+rbx*1+rsi]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        xor     r9,QWORD[rbx*1+rsi]
> > > >
> > > > +        mov     bl,al
> > > >
> > > > +        xor     r9,QWORD[rdx*8+r11]
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +        shl     al,4
> > > >
> > > > +        xor     r8,r10
> > > >
> > > > +        dec     rcx
> > > >
> > > > +        js      NEAR $L$break1
> > > >
> > > > +
> > > >
> > > > +        shr     r8,4
> > > >
> > > > +        and     rdx,0xf
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        shr     r9,4
> > > >
> > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        xor     r9,QWORD[rax*1+rsi]
> > > >
> > > > +        and     bl,0xf0
> > > >
> > > > +        xor     r9,QWORD[rdx*8+r11]
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +        xor     r8,r10
> > > >
> > > > +        jmp     NEAR $L$oop1
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$break1:
> > > >
> > > > +        shr     r8,4
> > > >
> > > > +        and     rdx,0xf
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        shr     r9,4
> > > >
> > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        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,0xf
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        shr     r9,4
> > > >
> > > > +        xor     r8,QWORD[8+rbx*1+rsi]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        xor     r9,QWORD[rbx*1+rsi]
> > > >
> > > > +        xor     r8,r10
> > > >
> > > > +        xor     r9,QWORD[rdx*8+r11]
> > > >
> > > > +
> > > >
> > > > +        bswap   r8
> > > >
> > > > +        bswap   r9
> > > >
> > > > +        mov     QWORD[8+rdi],r8
> > > >
> > > > +        mov     QWORD[rdi],r9
> > > >
> > > > +
> > > >
> > > > +        lea     rsi,[((280+48))+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     rbx,QWORD[((-8))+rsi]
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[rsi]
> > > >
> > > > +
> > > >
> > > > +$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:
> > > >
> > > > +global  gcm_ghash_4bit
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +gcm_ghash_4bit:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_gcm_ghash_4bit:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +        mov     rcx,r9
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        push    rbx
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        push    r12
> > > >
> > > > +
> > > >
> > > > +        push    r13
> > > >
> > > > +
> > > >
> > > > +        push    r14
> > > >
> > > > +
> > > >
> > > > +        push    r15
> > > >
> > > > +
> > > >
> > > > +        sub     rsp,280
> > > >
> > > > +
> > > >
> > > > +$L$ghash_prologue:
> > > >
> > > > +        mov     r14,rdx
> > > >
> > > > +        mov     r15,rcx
> > > >
> > > > +        sub     rsi,-128
> > > >
> > > > +        lea     rbp,[((16+128))+rsp]
> > > >
> > > > +        xor     edx,edx
> > > >
> > > > +        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[((16+0-128))+rsi]
> > > >
> > > > +        shl     dl,4
> > > >
> > > > +        mov     rbx,QWORD[((16+8-128))+rsi]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        mov     BYTE[rsp],dl
> > > >
> > > > +        or      rax,r10
> > > >
> > > > +        mov     dl,bl
> > > >
> > > > +        shr     rbx,4
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        shr     r9,4
> > > >
> > > > +        mov     QWORD[rbp],r8
> > > >
> > > > +        mov     r8,QWORD[((32+0-128))+rsi]
> > > >
> > > > +        shl     dl,4
> > > >
> > > > +        mov     QWORD[((0-128))+rbp],rax
> > > >
> > > > +        mov     rax,QWORD[((32+8-128))+rsi]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        mov     BYTE[1+rsp],dl
> > > >
> > > > +        or      rbx,r10
> > > >
> > > > +        mov     dl,al
> > > >
> > > > +        shr     rax,4
> > > >
> > > > +        mov     r10,r8
> > > >
> > > > +        shr     r8,4
> > > >
> > > > +        mov     QWORD[8+rbp],r9
> > > >
> > > > +        mov     r9,QWORD[((48+0-128))+rsi]
> > > >
> > > > +        shl     dl,4
> > > >
> > > > +        mov     QWORD[((8-128))+rbp],rbx
> > > >
> > > > +        mov     rbx,QWORD[((48+8-128))+rsi]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        mov     BYTE[2+rsp],dl
> > > >
> > > > +        or      rax,r10
> > > >
> > > > +        mov     dl,bl
> > > >
> > > > +        shr     rbx,4
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        shr     r9,4
> > > >
> > > > +        mov     QWORD[16+rbp],r8
> > > >
> > > > +        mov     r8,QWORD[((64+0-128))+rsi]
> > > >
> > > > +        shl     dl,4
> > > >
> > > > +        mov     QWORD[((16-128))+rbp],rax
> > > >
> > > > +        mov     rax,QWORD[((64+8-128))+rsi]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        mov     BYTE[3+rsp],dl
> > > >
> > > > +        or      rbx,r10
> > > >
> > > > +        mov     dl,al
> > > >
> > > > +        shr     rax,4
> > > >
> > > > +        mov     r10,r8
> > > >
> > > > +        shr     r8,4
> > > >
> > > > +        mov     QWORD[24+rbp],r9
> > > >
> > > > +        mov     r9,QWORD[((80+0-128))+rsi]
> > > >
> > > > +        shl     dl,4
> > > >
> > > > +        mov     QWORD[((24-128))+rbp],rbx
> > > >
> > > > +        mov     rbx,QWORD[((80+8-128))+rsi]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        mov     BYTE[4+rsp],dl
> > > >
> > > > +        or      rax,r10
> > > >
> > > > +        mov     dl,bl
> > > >
> > > > +        shr     rbx,4
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        shr     r9,4
> > > >
> > > > +        mov     QWORD[32+rbp],r8
> > > >
> > > > +        mov     r8,QWORD[((96+0-128))+rsi]
> > > >
> > > > +        shl     dl,4
> > > >
> > > > +        mov     QWORD[((32-128))+rbp],rax
> > > >
> > > > +        mov     rax,QWORD[((96+8-128))+rsi]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        mov     BYTE[5+rsp],dl
> > > >
> > > > +        or      rbx,r10
> > > >
> > > > +        mov     dl,al
> > > >
> > > > +        shr     rax,4
> > > >
> > > > +        mov     r10,r8
> > > >
> > > > +        shr     r8,4
> > > >
> > > > +        mov     QWORD[40+rbp],r9
> > > >
> > > > +        mov     r9,QWORD[((112+0-128))+rsi]
> > > >
> > > > +        shl     dl,4
> > > >
> > > > +        mov     QWORD[((40-128))+rbp],rbx
> > > >
> > > > +        mov     rbx,QWORD[((112+8-128))+rsi]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        mov     BYTE[6+rsp],dl
> > > >
> > > > +        or      rax,r10
> > > >
> > > > +        mov     dl,bl
> > > >
> > > > +        shr     rbx,4
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        shr     r9,4
> > > >
> > > > +        mov     QWORD[48+rbp],r8
> > > >
> > > > +        mov     r8,QWORD[((128+0-128))+rsi]
> > > >
> > > > +        shl     dl,4
> > > >
> > > > +        mov     QWORD[((48-128))+rbp],rax
> > > >
> > > > +        mov     rax,QWORD[((128+8-128))+rsi]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        mov     BYTE[7+rsp],dl
> > > >
> > > > +        or      rbx,r10
> > > >
> > > > +        mov     dl,al
> > > >
> > > > +        shr     rax,4
> > > >
> > > > +        mov     r10,r8
> > > >
> > > > +        shr     r8,4
> > > >
> > > > +        mov     QWORD[56+rbp],r9
> > > >
> > > > +        mov     r9,QWORD[((144+0-128))+rsi]
> > > >
> > > > +        shl     dl,4
> > > >
> > > > +        mov     QWORD[((56-128))+rbp],rbx
> > > >
> > > > +        mov     rbx,QWORD[((144+8-128))+rsi]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        mov     BYTE[8+rsp],dl
> > > >
> > > > +        or      rax,r10
> > > >
> > > > +        mov     dl,bl
> > > >
> > > > +        shr     rbx,4
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        shr     r9,4
> > > >
> > > > +        mov     QWORD[64+rbp],r8
> > > >
> > > > +        mov     r8,QWORD[((160+0-128))+rsi]
> > > >
> > > > +        shl     dl,4
> > > >
> > > > +        mov     QWORD[((64-128))+rbp],rax
> > > >
> > > > +        mov     rax,QWORD[((160+8-128))+rsi]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        mov     BYTE[9+rsp],dl
> > > >
> > > > +        or      rbx,r10
> > > >
> > > > +        mov     dl,al
> > > >
> > > > +        shr     rax,4
> > > >
> > > > +        mov     r10,r8
> > > >
> > > > +        shr     r8,4
> > > >
> > > > +        mov     QWORD[72+rbp],r9
> > > >
> > > > +        mov     r9,QWORD[((176+0-128))+rsi]
> > > >
> > > > +        shl     dl,4
> > > >
> > > > +        mov     QWORD[((72-128))+rbp],rbx
> > > >
> > > > +        mov     rbx,QWORD[((176+8-128))+rsi]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        mov     BYTE[10+rsp],dl
> > > >
> > > > +        or      rax,r10
> > > >
> > > > +        mov     dl,bl
> > > >
> > > > +        shr     rbx,4
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        shr     r9,4
> > > >
> > > > +        mov     QWORD[80+rbp],r8
> > > >
> > > > +        mov     r8,QWORD[((192+0-128))+rsi]
> > > >
> > > > +        shl     dl,4
> > > >
> > > > +        mov     QWORD[((80-128))+rbp],rax
> > > >
> > > > +        mov     rax,QWORD[((192+8-128))+rsi]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        mov     BYTE[11+rsp],dl
> > > >
> > > > +        or      rbx,r10
> > > >
> > > > +        mov     dl,al
> > > >
> > > > +        shr     rax,4
> > > >
> > > > +        mov     r10,r8
> > > >
> > > > +        shr     r8,4
> > > >
> > > > +        mov     QWORD[88+rbp],r9
> > > >
> > > > +        mov     r9,QWORD[((208+0-128))+rsi]
> > > >
> > > > +        shl     dl,4
> > > >
> > > > +        mov     QWORD[((88-128))+rbp],rbx
> > > >
> > > > +        mov     rbx,QWORD[((208+8-128))+rsi]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        mov     BYTE[12+rsp],dl
> > > >
> > > > +        or      rax,r10
> > > >
> > > > +        mov     dl,bl
> > > >
> > > > +        shr     rbx,4
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        shr     r9,4
> > > >
> > > > +        mov     QWORD[96+rbp],r8
> > > >
> > > > +        mov     r8,QWORD[((224+0-128))+rsi]
> > > >
> > > > +        shl     dl,4
> > > >
> > > > +        mov     QWORD[((96-128))+rbp],rax
> > > >
> > > > +        mov     rax,QWORD[((224+8-128))+rsi]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        mov     BYTE[13+rsp],dl
> > > >
> > > > +        or      rbx,r10
> > > >
> > > > +        mov     dl,al
> > > >
> > > > +        shr     rax,4
> > > >
> > > > +        mov     r10,r8
> > > >
> > > > +        shr     r8,4
> > > >
> > > > +        mov     QWORD[104+rbp],r9
> > > >
> > > > +        mov     r9,QWORD[((240+0-128))+rsi]
> > > >
> > > > +        shl     dl,4
> > > >
> > > > +        mov     QWORD[((104-128))+rbp],rbx
> > > >
> > > > +        mov     rbx,QWORD[((240+8-128))+rsi]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        mov     BYTE[14+rsp],dl
> > > >
> > > > +        or      rax,r10
> > > >
> > > > +        mov     dl,bl
> > > >
> > > > +        shr     rbx,4
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        shr     r9,4
> > > >
> > > > +        mov     QWORD[112+rbp],r8
> > > >
> > > > +        shl     dl,4
> > > >
> > > > +        mov     QWORD[((112-128))+rbp],rax
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        mov     BYTE[15+rsp],dl
> > > >
> > > > +        or      rbx,r10
> > > >
> > > > +        mov     QWORD[120+rbp],r9
> > > >
> > > > +        mov     QWORD[((120-128))+rbp],rbx
> > > >
> > > > +        add     rsi,-128
> > > >
> > > > +        mov     r8,QWORD[8+rdi]
> > > >
> > > > +        mov     r9,QWORD[rdi]
> > > >
> > > > +        add     r15,r14
> > > >
> > > > +        lea     r11,[$L$rem_8bit]
> > > >
> > > > +        jmp     NEAR $L$outer_loop
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$outer_loop:
> > > >
> > > > +        xor     r9,QWORD[r14]
> > > >
> > > > +        mov     rdx,QWORD[8+r14]
> > > >
> > > > +        lea     r14,[16+r14]
> > > >
> > > > +        xor     rdx,r8
> > > >
> > > > +        mov     QWORD[rdi],r9
> > > >
> > > > +        mov     QWORD[8+rdi],rdx
> > > >
> > > > +        shr     rdx,32
> > > >
> > > > +        xor     rax,rax
> > > >
> > > > +        rol     edx,8
> > > >
> > > > +        mov     al,dl
> > > >
> > > > +        movzx   ebx,dl
> > > >
> > > > +        shl     al,4
> > > >
> > > > +        shr     ebx,4
> > > >
> > > > +        rol     edx,8
> > > >
> > > > +        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[rbx*1+rsp]
> > > >
> > > > +        shr     ecx,4
> > > >
> > > > +        xor     r12,r8
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        shr     r8,8
> > > >
> > > > +        movzx   r12,r12b
> > > >
> > > > +        shr     r9,8
> > > >
> > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > >
> > > > +        shl     r10,56
> > > >
> > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > >
> > > > +        rol     edx,8
> > > >
> > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > >
> > > > +        xor     r9,QWORD[rax*1+rsi]
> > > >
> > > > +        mov     al,dl
> > > >
> > > > +        xor     r8,r10
> > > >
> > > > +        movzx   r12,WORD[r12*2+r11]
> > > >
> > > > +        movzx   ebx,dl
> > > >
> > > > +        shl     al,4
> > > >
> > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > >
> > > > +        shr     ebx,4
> > > >
> > > > +        shl     r12,48
> > > >
> > > > +        xor     r13,r8
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        xor     r9,r12
> > > >
> > > > +        shr     r8,8
> > > >
> > > > +        movzx   r13,r13b
> > > >
> > > > +        shr     r9,8
> > > >
> > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > >
> > > > +        shl     r10,56
> > > >
> > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > >
> > > > +        rol     edx,8
> > > >
> > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > >
> > > > +        xor     r9,QWORD[rax*1+rsi]
> > > >
> > > > +        mov     al,dl
> > > >
> > > > +        xor     r8,r10
> > > >
> > > > +        movzx   r13,WORD[r13*2+r11]
> > > >
> > > > +        movzx   ecx,dl
> > > >
> > > > +        shl     al,4
> > > >
> > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > >
> > > > +        shr     ecx,4
> > > >
> > > > +        shl     r13,48
> > > >
> > > > +        xor     r12,r8
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        xor     r9,r13
> > > >
> > > > +        shr     r8,8
> > > >
> > > > +        movzx   r12,r12b
> > > >
> > > > +        mov     edx,DWORD[8+rdi]
> > > >
> > > > +        shr     r9,8
> > > >
> > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > >
> > > > +        shl     r10,56
> > > >
> > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > >
> > > > +        rol     edx,8
> > > >
> > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > >
> > > > +        xor     r9,QWORD[rax*1+rsi]
> > > >
> > > > +        mov     al,dl
> > > >
> > > > +        xor     r8,r10
> > > >
> > > > +        movzx   r12,WORD[r12*2+r11]
> > > >
> > > > +        movzx   ebx,dl
> > > >
> > > > +        shl     al,4
> > > >
> > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > >
> > > > +        shr     ebx,4
> > > >
> > > > +        shl     r12,48
> > > >
> > > > +        xor     r13,r8
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        xor     r9,r12
> > > >
> > > > +        shr     r8,8
> > > >
> > > > +        movzx   r13,r13b
> > > >
> > > > +        shr     r9,8
> > > >
> > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > >
> > > > +        shl     r10,56
> > > >
> > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > >
> > > > +        rol     edx,8
> > > >
> > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > >
> > > > +        xor     r9,QWORD[rax*1+rsi]
> > > >
> > > > +        mov     al,dl
> > > >
> > > > +        xor     r8,r10
> > > >
> > > > +        movzx   r13,WORD[r13*2+r11]
> > > >
> > > > +        movzx   ecx,dl
> > > >
> > > > +        shl     al,4
> > > >
> > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > >
> > > > +        shr     ecx,4
> > > >
> > > > +        shl     r13,48
> > > >
> > > > +        xor     r12,r8
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        xor     r9,r13
> > > >
> > > > +        shr     r8,8
> > > >
> > > > +        movzx   r12,r12b
> > > >
> > > > +        shr     r9,8
> > > >
> > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > >
> > > > +        shl     r10,56
> > > >
> > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > >
> > > > +        rol     edx,8
> > > >
> > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > >
> > > > +        xor     r9,QWORD[rax*1+rsi]
> > > >
> > > > +        mov     al,dl
> > > >
> > > > +        xor     r8,r10
> > > >
> > > > +        movzx   r12,WORD[r12*2+r11]
> > > >
> > > > +        movzx   ebx,dl
> > > >
> > > > +        shl     al,4
> > > >
> > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > >
> > > > +        shr     ebx,4
> > > >
> > > > +        shl     r12,48
> > > >
> > > > +        xor     r13,r8
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        xor     r9,r12
> > > >
> > > > +        shr     r8,8
> > > >
> > > > +        movzx   r13,r13b
> > > >
> > > > +        shr     r9,8
> > > >
> > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > >
> > > > +        shl     r10,56
> > > >
> > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > >
> > > > +        rol     edx,8
> > > >
> > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > >
> > > > +        xor     r9,QWORD[rax*1+rsi]
> > > >
> > > > +        mov     al,dl
> > > >
> > > > +        xor     r8,r10
> > > >
> > > > +        movzx   r13,WORD[r13*2+r11]
> > > >
> > > > +        movzx   ecx,dl
> > > >
> > > > +        shl     al,4
> > > >
> > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > >
> > > > +        shr     ecx,4
> > > >
> > > > +        shl     r13,48
> > > >
> > > > +        xor     r12,r8
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        xor     r9,r13
> > > >
> > > > +        shr     r8,8
> > > >
> > > > +        movzx   r12,r12b
> > > >
> > > > +        mov     edx,DWORD[4+rdi]
> > > >
> > > > +        shr     r9,8
> > > >
> > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > >
> > > > +        shl     r10,56
> > > >
> > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > >
> > > > +        rol     edx,8
> > > >
> > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > >
> > > > +        xor     r9,QWORD[rax*1+rsi]
> > > >
> > > > +        mov     al,dl
> > > >
> > > > +        xor     r8,r10
> > > >
> > > > +        movzx   r12,WORD[r12*2+r11]
> > > >
> > > > +        movzx   ebx,dl
> > > >
> > > > +        shl     al,4
> > > >
> > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > >
> > > > +        shr     ebx,4
> > > >
> > > > +        shl     r12,48
> > > >
> > > > +        xor     r13,r8
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        xor     r9,r12
> > > >
> > > > +        shr     r8,8
> > > >
> > > > +        movzx   r13,r13b
> > > >
> > > > +        shr     r9,8
> > > >
> > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > >
> > > > +        shl     r10,56
> > > >
> > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > >
> > > > +        rol     edx,8
> > > >
> > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > >
> > > > +        xor     r9,QWORD[rax*1+rsi]
> > > >
> > > > +        mov     al,dl
> > > >
> > > > +        xor     r8,r10
> > > >
> > > > +        movzx   r13,WORD[r13*2+r11]
> > > >
> > > > +        movzx   ecx,dl
> > > >
> > > > +        shl     al,4
> > > >
> > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > >
> > > > +        shr     ecx,4
> > > >
> > > > +        shl     r13,48
> > > >
> > > > +        xor     r12,r8
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        xor     r9,r13
> > > >
> > > > +        shr     r8,8
> > > >
> > > > +        movzx   r12,r12b
> > > >
> > > > +        shr     r9,8
> > > >
> > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > >
> > > > +        shl     r10,56
> > > >
> > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > >
> > > > +        rol     edx,8
> > > >
> > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > >
> > > > +        xor     r9,QWORD[rax*1+rsi]
> > > >
> > > > +        mov     al,dl
> > > >
> > > > +        xor     r8,r10
> > > >
> > > > +        movzx   r12,WORD[r12*2+r11]
> > > >
> > > > +        movzx   ebx,dl
> > > >
> > > > +        shl     al,4
> > > >
> > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > >
> > > > +        shr     ebx,4
> > > >
> > > > +        shl     r12,48
> > > >
> > > > +        xor     r13,r8
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        xor     r9,r12
> > > >
> > > > +        shr     r8,8
> > > >
> > > > +        movzx   r13,r13b
> > > >
> > > > +        shr     r9,8
> > > >
> > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > >
> > > > +        shl     r10,56
> > > >
> > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > >
> > > > +        rol     edx,8
> > > >
> > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > >
> > > > +        xor     r9,QWORD[rax*1+rsi]
> > > >
> > > > +        mov     al,dl
> > > >
> > > > +        xor     r8,r10
> > > >
> > > > +        movzx   r13,WORD[r13*2+r11]
> > > >
> > > > +        movzx   ecx,dl
> > > >
> > > > +        shl     al,4
> > > >
> > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > >
> > > > +        shr     ecx,4
> > > >
> > > > +        shl     r13,48
> > > >
> > > > +        xor     r12,r8
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        xor     r9,r13
> > > >
> > > > +        shr     r8,8
> > > >
> > > > +        movzx   r12,r12b
> > > >
> > > > +        mov     edx,DWORD[rdi]
> > > >
> > > > +        shr     r9,8
> > > >
> > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > >
> > > > +        shl     r10,56
> > > >
> > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > >
> > > > +        rol     edx,8
> > > >
> > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > >
> > > > +        xor     r9,QWORD[rax*1+rsi]
> > > >
> > > > +        mov     al,dl
> > > >
> > > > +        xor     r8,r10
> > > >
> > > > +        movzx   r12,WORD[r12*2+r11]
> > > >
> > > > +        movzx   ebx,dl
> > > >
> > > > +        shl     al,4
> > > >
> > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > >
> > > > +        shr     ebx,4
> > > >
> > > > +        shl     r12,48
> > > >
> > > > +        xor     r13,r8
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        xor     r9,r12
> > > >
> > > > +        shr     r8,8
> > > >
> > > > +        movzx   r13,r13b
> > > >
> > > > +        shr     r9,8
> > > >
> > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > >
> > > > +        shl     r10,56
> > > >
> > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > >
> > > > +        rol     edx,8
> > > >
> > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > >
> > > > +        xor     r9,QWORD[rax*1+rsi]
> > > >
> > > > +        mov     al,dl
> > > >
> > > > +        xor     r8,r10
> > > >
> > > > +        movzx   r13,WORD[r13*2+r11]
> > > >
> > > > +        movzx   ecx,dl
> > > >
> > > > +        shl     al,4
> > > >
> > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > >
> > > > +        shr     ecx,4
> > > >
> > > > +        shl     r13,48
> > > >
> > > > +        xor     r12,r8
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        xor     r9,r13
> > > >
> > > > +        shr     r8,8
> > > >
> > > > +        movzx   r12,r12b
> > > >
> > > > +        shr     r9,8
> > > >
> > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > >
> > > > +        shl     r10,56
> > > >
> > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > >
> > > > +        rol     edx,8
> > > >
> > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > >
> > > > +        xor     r9,QWORD[rax*1+rsi]
> > > >
> > > > +        mov     al,dl
> > > >
> > > > +        xor     r8,r10
> > > >
> > > > +        movzx   r12,WORD[r12*2+r11]
> > > >
> > > > +        movzx   ebx,dl
> > > >
> > > > +        shl     al,4
> > > >
> > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > >
> > > > +        shr     ebx,4
> > > >
> > > > +        shl     r12,48
> > > >
> > > > +        xor     r13,r8
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        xor     r9,r12
> > > >
> > > > +        shr     r8,8
> > > >
> > > > +        movzx   r13,r13b
> > > >
> > > > +        shr     r9,8
> > > >
> > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > >
> > > > +        shl     r10,56
> > > >
> > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > >
> > > > +        rol     edx,8
> > > >
> > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > >
> > > > +        xor     r9,QWORD[rax*1+rsi]
> > > >
> > > > +        mov     al,dl
> > > >
> > > > +        xor     r8,r10
> > > >
> > > > +        movzx   r13,WORD[r13*2+r11]
> > > >
> > > > +        movzx   ecx,dl
> > > >
> > > > +        shl     al,4
> > > >
> > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > >
> > > > +        and     ecx,240
> > > >
> > > > +        shl     r13,48
> > > >
> > > > +        xor     r12,r8
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        xor     r9,r13
> > > >
> > > > +        shr     r8,8
> > > >
> > > > +        movzx   r12,r12b
> > > >
> > > > +        mov     edx,DWORD[((-4))+rdi]
> > > >
> > > > +        shr     r9,8
> > > >
> > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > >
> > > > +        shl     r10,56
> > > >
> > > > +        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
> > > >
> > > > +        movzx   r13,r8b
> > > >
> > > > +        shr     r8,4
> > > >
> > > > +        mov     r10,r9
> > > >
> > > > +        shl     r13b,4
> > > >
> > > > +        shr     r9,4
> > > >
> > > > +        xor     r8,QWORD[8+rcx*1+rsi]
> > > >
> > > > +        movzx   r13,WORD[r13*2+r11]
> > > >
> > > > +        shl     r10,60
> > > >
> > > > +        xor     r9,QWORD[rcx*1+rsi]
> > > >
> > > > +        xor     r8,r10
> > > >
> > > > +        shl     r13,48
> > > >
> > > > +        bswap   r8
> > > >
> > > > +        xor     r9,r13
> > > >
> > > > +        bswap   r9
> > > >
> > > > +        cmp     r14,r15
> > > >
> > > > +        jb      NEAR $L$outer_loop
> > > >
> > > > +        mov     QWORD[8+rdi],r8
> > > >
> > > > +        mov     QWORD[rdi],r9
> > > >
> > > > +
> > > >
> > > > +        lea     rsi,[((280+48))+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$ghash_epilogue:
> > > >
> > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > >
> > > > +        mov     rsi,QWORD[16+rsp]
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +$L$SEH_end_gcm_ghash_4bit:
> > > >
> > > > +global  gcm_init_clmul
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +gcm_init_clmul:
> > > >
> > > > +
> > > >
> > > > +$L$_init_clmul:
> > > >
> > > > +$L$SEH_begin_gcm_init_clmul:
> > > >
> > > > +
> > > >
> > > > +DB      0x48,0x83,0xec,0x18
> > > >
> > > > +DB      0x0f,0x29,0x34,0x24
> > > >
> > > > +        movdqu  xmm2,XMMWORD[rdx]
> > > >
> > > > +        pshufd  xmm2,xmm2,78
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        pshufd  xmm4,xmm2,255
> > > >
> > > > +        movdqa  xmm3,xmm2
> > > >
> > > > +        psllq   xmm2,1
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +        psrlq   xmm3,63
> > > >
> > > > +        pcmpgtd xmm5,xmm4
> > > >
> > > > +        pslldq  xmm3,8
> > > >
> > > > +        por     xmm2,xmm3
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        pand    xmm5,XMMWORD[$L$0x1c2_polynomial]
> > > >
> > > > +        pxor    xmm2,xmm5
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        pshufd  xmm6,xmm2,78
> > > >
> > > > +        movdqa  xmm0,xmm2
> > > >
> > > > +        pxor    xmm6,xmm2
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +        pshufd  xmm3,xmm0,78
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +DB      102,15,58,68,194,0
> > > >
> > > > +DB      102,15,58,68,202,17
> > > >
> > > > +DB      102,15,58,68,222,0
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        pxor    xmm3,xmm1
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm3
> > > >
> > > > +        psrldq  xmm3,8
> > > >
> > > > +        pslldq  xmm4,8
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        psllq   xmm0,5
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        psllq   xmm0,1
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        psllq   xmm0,57
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        pslldq  xmm0,8
> > > >
> > > > +        psrldq  xmm3,8
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        psrlq   xmm0,1
> > > >
> > > > +        pxor    xmm1,xmm4
> > > >
> > > > +        pxor    xmm4,xmm0
> > > >
> > > > +        psrlq   xmm0,5
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        psrlq   xmm0,1
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        pshufd  xmm3,xmm2,78
> > > >
> > > > +        pshufd  xmm4,xmm0,78
> > > >
> > > > +        pxor    xmm3,xmm2
> > > >
> > > > +        movdqu  XMMWORD[rcx],xmm2
> > > >
> > > > +        pxor    xmm4,xmm0
> > > >
> > > > +        movdqu  XMMWORD[16+rcx],xmm0
> > > >
> > > > +DB      102,15,58,15,227,8
> > > >
> > > > +        movdqu  XMMWORD[32+rcx],xmm4
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +        pshufd  xmm3,xmm0,78
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +DB      102,15,58,68,194,0
> > > >
> > > > +DB      102,15,58,68,202,17
> > > >
> > > > +DB      102,15,58,68,222,0
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        pxor    xmm3,xmm1
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm3
> > > >
> > > > +        psrldq  xmm3,8
> > > >
> > > > +        pslldq  xmm4,8
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        psllq   xmm0,5
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        psllq   xmm0,1
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        psllq   xmm0,57
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        pslldq  xmm0,8
> > > >
> > > > +        psrldq  xmm3,8
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        psrlq   xmm0,1
> > > >
> > > > +        pxor    xmm1,xmm4
> > > >
> > > > +        pxor    xmm4,xmm0
> > > >
> > > > +        psrlq   xmm0,5
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        psrlq   xmm0,1
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        movdqa  xmm5,xmm0
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +        pshufd  xmm3,xmm0,78
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +DB      102,15,58,68,194,0
> > > >
> > > > +DB      102,15,58,68,202,17
> > > >
> > > > +DB      102,15,58,68,222,0
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        pxor    xmm3,xmm1
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm3
> > > >
> > > > +        psrldq  xmm3,8
> > > >
> > > > +        pslldq  xmm4,8
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        psllq   xmm0,5
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        psllq   xmm0,1
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        psllq   xmm0,57
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        pslldq  xmm0,8
> > > >
> > > > +        psrldq  xmm3,8
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        psrlq   xmm0,1
> > > >
> > > > +        pxor    xmm1,xmm4
> > > >
> > > > +        pxor    xmm4,xmm0
> > > >
> > > > +        psrlq   xmm0,5
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        psrlq   xmm0,1
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        pshufd  xmm3,xmm5,78
> > > >
> > > > +        pshufd  xmm4,xmm0,78
> > > >
> > > > +        pxor    xmm3,xmm5
> > > >
> > > > +        movdqu  XMMWORD[48+rcx],xmm5
> > > >
> > > > +        pxor    xmm4,xmm0
> > > >
> > > > +        movdqu  XMMWORD[64+rcx],xmm0
> > > >
> > > > +DB      102,15,58,15,227,8
> > > >
> > > > +        movdqu  XMMWORD[80+rcx],xmm4
> > > >
> > > > +        movaps  xmm6,XMMWORD[rsp]
> > > >
> > > > +        lea     rsp,[24+rsp]
> > > >
> > > > +$L$SEH_end_gcm_init_clmul:
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +global  gcm_gmult_clmul
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +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
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +DB      102,15,58,68,194,0
> > > >
> > > > +DB      102,15,58,68,202,17
> > > >
> > > > +DB      102,15,58,68,220,0
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        pxor    xmm3,xmm1
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm3
> > > >
> > > > +        psrldq  xmm3,8
> > > >
> > > > +        pslldq  xmm4,8
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        psllq   xmm0,5
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        psllq   xmm0,1
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        psllq   xmm0,57
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        pslldq  xmm0,8
> > > >
> > > > +        psrldq  xmm3,8
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        psrlq   xmm0,1
> > > >
> > > > +        pxor    xmm1,xmm4
> > > >
> > > > +        pxor    xmm4,xmm0
> > > >
> > > > +        psrlq   xmm0,5
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        psrlq   xmm0,1
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +DB      102,15,56,0,197
> > > >
> > > > +        movdqu  XMMWORD[rcx],xmm0
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +global  gcm_ghash_clmul
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +gcm_ghash_clmul:
> > > >
> > > > +
> > > >
> > > > +$L$_ghash_clmul:
> > > >
> > > > +        lea     rax,[((-136))+rsp]
> > > >
> > > > +$L$SEH_begin_gcm_ghash_clmul:
> > > >
> > > > +
> > > >
> > > > +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[rcx]
> > > >
> > > > +        movdqu  xmm2,XMMWORD[rdx]
> > > >
> > > > +        movdqu  xmm7,XMMWORD[32+rdx]
> > > >
> > > > +DB      102,65,15,56,0,194
> > > >
> > > > +
> > > >
> > > > +        sub     r9,0x10
> > > >
> > > > +        jz      NEAR $L$odd_tail
> > > >
> > > > +
> > > >
> > > > +        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      NEAR $L$skip4x
> > > >
> > > > +
> > > >
> > > > +        sub     r9,0x30
> > > >
> > > > +        mov     rax,0xA040608020C0E000
> > > >
> > > > +        movdqu  xmm14,XMMWORD[48+rdx]
> > > >
> > > > +        movdqu  xmm15,XMMWORD[64+rdx]
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        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
> > > >
> > > > +        pshufd  xmm4,xmm3,78
> > > >
> > > > +        pxor    xmm4,xmm3
> > > >
> > > > +DB      102,15,58,68,218,0
> > > >
> > > > +DB      102,15,58,68,234,17
> > > >
> > > > +DB      102,15,58,68,231,0
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm13,xmm11
> > > >
> > > > +        pshufd  xmm12,xmm11,78
> > > >
> > > > +        pxor    xmm12,xmm11
> > > >
> > > > +DB      102,68,15,58,68,222,0
> > > >
> > > > +DB      102,68,15,58,68,238,17
> > > >
> > > > +DB      102,68,15,58,68,231,16
> > > >
> > > > +        xorps   xmm3,xmm11
> > > >
> > > > +        xorps   xmm5,xmm13
> > > >
> > > > +        movups  xmm7,XMMWORD[80+rdx]
> > > >
> > > > +        xorps   xmm4,xmm12
> > > >
> > > > +
> > > >
> > > > +        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
> > > >
> > > > +        pshufd  xmm12,xmm11,78
> > > >
> > > > +        pxor    xmm0,xmm8
> > > >
> > > > +        pxor    xmm12,xmm11
> > > >
> > > > +DB      102,69,15,58,68,222,0
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +        pshufd  xmm8,xmm0,78
> > > >
> > > > +        pxor    xmm8,xmm0
> > > >
> > > > +DB      102,69,15,58,68,238,17
> > > >
> > > > +DB      102,68,15,58,68,231,0
> > > >
> > > > +        xorps   xmm3,xmm11
> > > >
> > > > +        xorps   xmm5,xmm13
> > > >
> > > > +
> > > >
> > > > +        lea     r8,[64+r8]
> > > >
> > > > +        sub     r9,0x40
> > > >
> > > > +        jc      NEAR $L$tail4x
> > > >
> > > > +
> > > >
> > > > +        jmp     NEAR $L$mod4_loop
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$mod4_loop:
> > > >
> > > > +DB      102,65,15,58,68,199,0
> > > >
> > > > +        xorps   xmm4,xmm12
> > > >
> > > > +        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[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[32+rdx]
> > > >
> > > > +        xorps   xmm8,xmm4
> > > >
> > > > +DB      102,68,15,58,68,218,0
> > > >
> > > > +        pshufd  xmm4,xmm3,78
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm8,xmm0
> > > >
> > > > +        movdqa  xmm5,xmm3
> > > >
> > > > +        pxor    xmm8,xmm1
> > > >
> > > > +        pxor    xmm4,xmm3
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      102,68,15,58,68,234,17
> > > >
> > > > +        pslldq  xmm8,8
> > > >
> > > > +        psrldq  xmm9,8
> > > >
> > > > +        pxor    xmm0,xmm8
> > > >
> > > > +        movdqa  xmm8,XMMWORD[$L$7_mask]
> > > >
> > > > +        pxor    xmm1,xmm9
> > > >
> > > > +DB      102,76,15,110,200
> > > >
> > > > +
> > > >
> > > > +        pand    xmm8,xmm0
> > > >
> > > > +DB      102,69,15,56,0,200
> > > >
> > > > +        pxor    xmm9,xmm0
> > > >
> > > > +DB      102,68,15,58,68,231,0
> > > >
> > > > +        psllq   xmm9,57
> > > >
> > > > +        movdqa  xmm8,xmm9
> > > >
> > > > +        pslldq  xmm9,8
> > > >
> > > > +DB      102,15,58,68,222,0
> > > >
> > > > +        psrldq  xmm8,8
> > > >
> > > > +        pxor    xmm0,xmm9
> > > >
> > > > +        pxor    xmm1,xmm8
> > > >
> > > > +        movdqu  xmm8,XMMWORD[r8]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm0
> > > >
> > > > +        psrlq   xmm0,1
> > > >
> > > > +DB      102,15,58,68,238,17
> > > >
> > > > +        xorps   xmm3,xmm11
> > > >
> > > > +        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[80+rdx]
> > > >
> > > > +DB      102,69,15,56,0,194
> > > >
> > > > +        pxor    xmm1,xmm9
> > > >
> > > > +        pxor    xmm9,xmm0
> > > >
> > > > +        psrlq   xmm0,5
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm13,xmm11
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        pshufd  xmm12,xmm11,78
> > > >
> > > > +        pxor    xmm0,xmm9
> > > >
> > > > +        pxor    xmm1,xmm8
> > > >
> > > > +        pxor    xmm12,xmm11
> > > >
> > > > +DB      102,69,15,58,68,222,0
> > > >
> > > > +        psrlq   xmm0,1
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +DB      102,69,15,58,68,238,17
> > > >
> > > > +        xorps   xmm3,xmm11
> > > >
> > > > +        pshufd  xmm8,xmm0,78
> > > >
> > > > +        pxor    xmm8,xmm0
> > > >
> > > > +
> > > >
> > > > +DB      102,68,15,58,68,231,0
> > > >
> > > > +        xorps   xmm5,xmm13
> > > >
> > > > +
> > > >
> > > > +        lea     r8,[64+r8]
> > > >
> > > > +        sub     r9,0x40
> > > >
> > > > +        jnc     NEAR $L$mod4_loop
> > > >
> > > > +
> > > >
> > > > +$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
> > > >
> > > > +        xorps   xmm4,xmm12
> > > >
> > > > +        xorps   xmm0,xmm3
> > > >
> > > > +        xorps   xmm1,xmm5
> > > >
> > > > +        pxor    xmm1,xmm0
> > > >
> > > > +        pxor    xmm8,xmm4
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm8,xmm1
> > > >
> > > > +        pxor    xmm1,xmm0
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +        psrldq  xmm8,8
> > > >
> > > > +        pslldq  xmm9,8
> > > >
> > > > +        pxor    xmm1,xmm8
> > > >
> > > > +        pxor    xmm0,xmm9
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        psllq   xmm0,5
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        psllq   xmm0,1
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        psllq   xmm0,57
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        pslldq  xmm0,8
> > > >
> > > > +        psrldq  xmm3,8
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        psrlq   xmm0,1
> > > >
> > > > +        pxor    xmm1,xmm4
> > > >
> > > > +        pxor    xmm4,xmm0
> > > >
> > > > +        psrlq   xmm0,5
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        psrlq   xmm0,1
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        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[r8]
> > > >
> > > > +        movdqu  xmm3,XMMWORD[16+r8]
> > > >
> > > > +DB      102,69,15,56,0,194
> > > >
> > > > +DB      102,65,15,56,0,218
> > > >
> > > > +        pxor    xmm0,xmm8
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm5,xmm3
> > > >
> > > > +        pshufd  xmm4,xmm3,78
> > > >
> > > > +        pxor    xmm4,xmm3
> > > >
> > > > +DB      102,15,58,68,218,0
> > > >
> > > > +DB      102,15,58,68,234,17
> > > >
> > > > +DB      102,15,58,68,231,0
> > > >
> > > > +
> > > >
> > > > +        lea     r8,[32+r8]
> > > >
> > > > +        nop
> > > >
> > > > +        sub     r9,0x20
> > > >
> > > > +        jbe     NEAR $L$even_tail
> > > >
> > > > +        nop
> > > >
> > > > +        jmp     NEAR $L$mod_loop
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$mod_loop:
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +        movdqa  xmm8,xmm4
> > > >
> > > > +        pshufd  xmm4,xmm0,78
> > > >
> > > > +        pxor    xmm4,xmm0
> > > >
> > > > +
> > > >
> > > > +DB      102,15,58,68,198,0
> > > >
> > > > +DB      102,15,58,68,206,17
> > > >
> > > > +DB      102,15,58,68,231,16
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        pxor    xmm1,xmm5
> > > >
> > > > +        movdqu  xmm9,XMMWORD[r8]
> > > >
> > > > +        pxor    xmm8,xmm0
> > > >
> > > > +DB      102,69,15,56,0,202
> > > >
> > > > +        movdqu  xmm3,XMMWORD[16+r8]
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm8,xmm1
> > > >
> > > > +        pxor    xmm1,xmm9
> > > >
> > > > +        pxor    xmm4,xmm8
> > > >
> > > > +DB      102,65,15,56,0,218
> > > >
> > > > +        movdqa  xmm8,xmm4
> > > >
> > > > +        psrldq  xmm8,8
> > > >
> > > > +        pslldq  xmm4,8
> > > >
> > > > +        pxor    xmm1,xmm8
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm5,xmm3
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm0
> > > >
> > > > +        movdqa  xmm8,xmm0
> > > >
> > > > +        psllq   xmm0,5
> > > >
> > > > +        pxor    xmm8,xmm0
> > > >
> > > > +DB      102,15,58,68,218,0
> > > >
> > > > +        psllq   xmm0,1
> > > >
> > > > +        pxor    xmm0,xmm8
> > > >
> > > > +        psllq   xmm0,57
> > > >
> > > > +        movdqa  xmm8,xmm0
> > > >
> > > > +        pslldq  xmm0,8
> > > >
> > > > +        psrldq  xmm8,8
> > > >
> > > > +        pxor    xmm0,xmm9
> > > >
> > > > +        pshufd  xmm4,xmm5,78
> > > >
> > > > +        pxor    xmm1,xmm8
> > > >
> > > > +        pxor    xmm4,xmm5
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm0
> > > >
> > > > +        psrlq   xmm0,1
> > > >
> > > > +DB      102,15,58,68,234,17
> > > >
> > > > +        pxor    xmm1,xmm9
> > > >
> > > > +        pxor    xmm9,xmm0
> > > >
> > > > +        psrlq   xmm0,5
> > > >
> > > > +        pxor    xmm0,xmm9
> > > >
> > > > +        lea     r8,[32+r8]
> > > >
> > > > +        psrlq   xmm0,1
> > > >
> > > > +DB      102,15,58,68,231,0
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +
> > > >
> > > > +        sub     r9,0x20
> > > >
> > > > +        ja      NEAR $L$mod_loop
> > > >
> > > > +
> > > >
> > > > +$L$even_tail:
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +        movdqa  xmm8,xmm4
> > > >
> > > > +        pshufd  xmm4,xmm0,78
> > > >
> > > > +        pxor    xmm4,xmm0
> > > >
> > > > +
> > > >
> > > > +DB      102,15,58,68,198,0
> > > >
> > > > +DB      102,15,58,68,206,17
> > > >
> > > > +DB      102,15,58,68,231,16
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        pxor    xmm1,xmm5
> > > >
> > > > +        pxor    xmm8,xmm0
> > > >
> > > > +        pxor    xmm8,xmm1
> > > >
> > > > +        pxor    xmm4,xmm8
> > > >
> > > > +        movdqa  xmm8,xmm4
> > > >
> > > > +        psrldq  xmm8,8
> > > >
> > > > +        pslldq  xmm4,8
> > > >
> > > > +        pxor    xmm1,xmm8
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        psllq   xmm0,5
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        psllq   xmm0,1
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        psllq   xmm0,57
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        pslldq  xmm0,8
> > > >
> > > > +        psrldq  xmm3,8
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        psrlq   xmm0,1
> > > >
> > > > +        pxor    xmm1,xmm4
> > > >
> > > > +        pxor    xmm4,xmm0
> > > >
> > > > +        psrlq   xmm0,5
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        psrlq   xmm0,1
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        test    r9,r9
> > > >
> > > > +        jnz     NEAR $L$done
> > > >
> > > > +
> > > >
> > > > +$L$odd_tail:
> > > >
> > > > +        movdqu  xmm8,XMMWORD[r8]
> > > >
> > > > +DB      102,69,15,56,0,194
> > > >
> > > > +        pxor    xmm0,xmm8
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +        pshufd  xmm3,xmm0,78
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +DB      102,15,58,68,194,0
> > > >
> > > > +DB      102,15,58,68,202,17
> > > >
> > > > +DB      102,15,58,68,223,0
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        pxor    xmm3,xmm1
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm3
> > > >
> > > > +        psrldq  xmm3,8
> > > >
> > > > +        pslldq  xmm4,8
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        psllq   xmm0,5
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        psllq   xmm0,1
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        psllq   xmm0,57
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        pslldq  xmm0,8
> > > >
> > > > +        psrldq  xmm3,8
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        psrlq   xmm0,1
> > > >
> > > > +        pxor    xmm1,xmm4
> > > >
> > > > +        pxor    xmm4,xmm0
> > > >
> > > > +        psrlq   xmm0,5
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        psrlq   xmm0,1
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +$L$done:
> > > >
> > > > +DB      102,65,15,56,0,194
> > > >
> > > > +        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
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +global  gcm_init_avx
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +gcm_init_avx:
> > > >
> > > > +
> > > >
> > > > +        jmp     NEAR $L$_init_clmul
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +global  gcm_gmult_avx
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +gcm_gmult_avx:
> > > >
> > > > +
> > > >
> > > > +        jmp     NEAR $L$_gmult_clmul
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +global  gcm_ghash_avx
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +gcm_ghash_avx:
> > > >
> > > > +
> > > >
> > > > +        jmp     NEAR $L$_ghash_clmul
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   64
> > > >
> > > > +$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,0xc2
> > > >
> > > > +$L$7_mask:
> > > >
> > > > +        DD      7,0,7,0
> > > >
> > > > +$L$7_mask_poly:
> > > >
> > > > +        DD      7,0,450,0
> > > >
> > > > +ALIGN   64
> > > >
> > > > +
> > > >
> > > > +$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
> 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
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +se_handler:
> > > >
> > > > +        push    rsi
> > > >
> > > > +        push    rdi
> > > >
> > > > +        push    rbx
> > > >
> > > > +        push    rbp
> > > >
> > > > +        push    r12
> > > >
> > > > +        push    r13
> > > >
> > > > +        push    r14
> > > >
> > > > +        push    r15
> > > >
> > > > +        pushfq
> > > >
> > > > +        sub     rsp,64
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[120+r8]
> > > >
> > > > +        mov     rbx,QWORD[248+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,QWORD[8+r9]
> > > >
> > > > +        mov     r11,QWORD[56+r9]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$in_prologue
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[152+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[4+r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jae     NEAR $L$in_prologue
> > > >
> > > > +
> > > >
> > > > +        lea     rax,[((48+280))+rax]
> > > >
> > > > +
> > > >
> > > > +        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_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[40+r9]
> > > >
> > > > +        mov     rsi,r8
> > > >
> > > > +        mov     ecx,154
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,r9
> > > >
> > > > +        xor     rcx,rcx
> > > >
> > > > +        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
> > > >
> > > > +        popfq
> > > >
> > > > +        pop     r15
> > > >
> > > > +        pop     r14
> > > >
> > > > +        pop     r13
> > > >
> > > > +        pop     r12
> > > >
> > > > +        pop     rbp
> > > >
> > > > +        pop     rbx
> > > >
> > > > +        pop     rdi
> > > >
> > > > +        pop     rsi
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +section .pdata rdata align=4
> > > >
> > > > +ALIGN   4
> > > >
> > > > +        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      $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      $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      $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:
> > > >
> > > > +DB      9,0,0,0
> > > >
> > > > +        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      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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
> > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
> > > > x86_64.nasm
> > > > new file mode 100644
> > > > index 0000000000..f3b7b0e35e
> > > > --- /dev/null
> > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm
> > > > @@ -0,0 +1,3137 @@
> > > > +; WARNING: do not edit!
> > > >
> > > > +; Generated from openssl/crypto/sha/asm/sha1-mb-x86_64.pl
> > > >
> > > > +;
> > > >
> > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> Reserved.
> > > >
> > > > +;
> > > >
> > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > >
> > > > +; this file except in compliance with the License.  You can obtain a
> copy
> > > >
> > > > +; in the file LICENSE in the source distribution or at
> > > >
> > > > +; https://www.openssl.org/source/license.html
> > > >
> > > > +
> > > >
> > > > +default rel
> > > >
> > > > +%define XMMWORD
> > > >
> > > > +%define YMMWORD
> > > >
> > > > +%define ZMMWORD
> > > >
> > > > +section .text code align=64
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +EXTERN  OPENSSL_ia32cap_P
> > > >
> > > > +
> > > >
> > > > +global  sha1_multi_block
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +sha1_multi_block:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_sha1_multi_block:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
> > > >
> > > > +        bt      rcx,61
> > > >
> > > > +        jc      NEAR _shaext_shortcut
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +
> > > >
> > > > +        push    rbx
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[((-168))+rsp]
> > > >
> > > > +        movaps  XMMWORD[rsp],xmm6
> > > >
> > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > >
> > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > >
> > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > >
> > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > >
> > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > >
> > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > >
> > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > >
> > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > >
> > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > >
> > > > +        sub     rsp,288
> > > >
> > > > +        and     rsp,-256
> > > >
> > > > +        mov     QWORD[272+rsp],rax
> > > >
> > > > +
> > > >
> > > > +$L$body:
> > > >
> > > > +        lea     rbp,[K_XX_XX]
> > > >
> > > > +        lea     rbx,[256+rsp]
> > > >
> > > > +
> > > >
> > > > +$L$oop_grande:
> > > >
> > > > +        mov     DWORD[280+rsp],edx
> > > >
> > > > +        xor     edx,edx
> > > >
> > > > +        mov     r8,QWORD[rsi]
> > > >
> > > > +        mov     ecx,DWORD[8+rsi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        mov     DWORD[rbx],ecx
> > > >
> > > > +        cmovle  r8,rbp
> > > >
> > > > +        mov     r9,QWORD[16+rsi]
> > > >
> > > > +        mov     ecx,DWORD[24+rsi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        mov     DWORD[4+rbx],ecx
> > > >
> > > > +        cmovle  r9,rbp
> > > >
> > > > +        mov     r10,QWORD[32+rsi]
> > > >
> > > > +        mov     ecx,DWORD[40+rsi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        mov     DWORD[8+rbx],ecx
> > > >
> > > > +        cmovle  r10,rbp
> > > >
> > > > +        mov     r11,QWORD[48+rsi]
> > > >
> > > > +        mov     ecx,DWORD[56+rsi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        mov     DWORD[12+rbx],ecx
> > > >
> > > > +        cmovle  r11,rbp
> > > >
> > > > +        test    edx,edx
> > > >
> > > > +        jz      NEAR $L$done
> > > >
> > > > +
> > > >
> > > > +        movdqu  xmm10,XMMWORD[rdi]
> > > >
> > > > +        lea     rax,[128+rsp]
> > > >
> > > > +        movdqu  xmm11,XMMWORD[32+rdi]
> > > >
> > > > +        movdqu  xmm12,XMMWORD[64+rdi]
> > > >
> > > > +        movdqu  xmm13,XMMWORD[96+rdi]
> > > >
> > > > +        movdqu  xmm14,XMMWORD[128+rdi]
> > > >
> > > > +        movdqa  xmm5,XMMWORD[96+rbp]
> > > >
> > > > +        movdqa  xmm15,XMMWORD[((-32))+rbp]
> > > >
> > > > +        jmp     NEAR $L$oop
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$oop:
> > > >
> > > > +        movd    xmm0,DWORD[r8]
> > > >
> > > > +        lea     r8,[64+r8]
> > > >
> > > > +        movd    xmm2,DWORD[r9]
> > > >
> > > > +        lea     r9,[64+r9]
> > > >
> > > > +        movd    xmm3,DWORD[r10]
> > > >
> > > > +        lea     r10,[64+r10]
> > > >
> > > > +        movd    xmm4,DWORD[r11]
> > > >
> > > > +        lea     r11,[64+r11]
> > > >
> > > > +        punpckldq       xmm0,xmm3
> > > >
> > > > +        movd    xmm1,DWORD[((-60))+r8]
> > > >
> > > > +        punpckldq       xmm2,xmm4
> > > >
> > > > +        movd    xmm9,DWORD[((-60))+r9]
> > > >
> > > > +        punpckldq       xmm0,xmm2
> > > >
> > > > +        movd    xmm8,DWORD[((-60))+r10]
> > > >
> > > > +DB      102,15,56,0,197
> > > >
> > > > +        movd    xmm7,DWORD[((-60))+r11]
> > > >
> > > > +        punpckldq       xmm1,xmm8
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        paddd   xmm14,xmm15
> > > >
> > > > +        punpckldq       xmm9,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +        movdqa  xmm6,xmm11
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pandn   xmm7,xmm13
> > > >
> > > > +        pand    xmm6,xmm12
> > > >
> > > > +        punpckldq       xmm1,xmm9
> > > >
> > > > +        movdqa  xmm9,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(0-128)+rax],xmm0
> > > >
> > > > +        paddd   xmm14,xmm0
> > > >
> > > > +        movd    xmm2,DWORD[((-56))+r8]
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        movd    xmm9,DWORD[((-56))+r9]
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm11,2
> > > >
> > > > +        paddd   xmm14,xmm8
> > > >
> > > > +DB      102,15,56,0,205
> > > >
> > > > +        movd    xmm8,DWORD[((-56))+r10]
> > > >
> > > > +        por     xmm11,xmm7
> > > >
> > > > +        movd    xmm7,DWORD[((-56))+r11]
> > > >
> > > > +        punpckldq       xmm2,xmm8
> > > >
> > > > +        movdqa  xmm8,xmm14
> > > >
> > > > +        paddd   xmm13,xmm15
> > > >
> > > > +        punpckldq       xmm9,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +        movdqa  xmm6,xmm10
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pandn   xmm7,xmm12
> > > >
> > > > +        pand    xmm6,xmm11
> > > >
> > > > +        punpckldq       xmm2,xmm9
> > > >
> > > > +        movdqa  xmm9,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(16-128)+rax],xmm1
> > > >
> > > > +        paddd   xmm13,xmm1
> > > >
> > > > +        movd    xmm3,DWORD[((-52))+r8]
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        movd    xmm9,DWORD[((-52))+r9]
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm13,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm10,2
> > > >
> > > > +        paddd   xmm13,xmm8
> > > >
> > > > +DB      102,15,56,0,213
> > > >
> > > > +        movd    xmm8,DWORD[((-52))+r10]
> > > >
> > > > +        por     xmm10,xmm7
> > > >
> > > > +        movd    xmm7,DWORD[((-52))+r11]
> > > >
> > > > +        punpckldq       xmm3,xmm8
> > > >
> > > > +        movdqa  xmm8,xmm13
> > > >
> > > > +        paddd   xmm12,xmm15
> > > >
> > > > +        punpckldq       xmm9,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +        movdqa  xmm6,xmm14
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pandn   xmm7,xmm11
> > > >
> > > > +        pand    xmm6,xmm10
> > > >
> > > > +        punpckldq       xmm3,xmm9
> > > >
> > > > +        movdqa  xmm9,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(32-128)+rax],xmm2
> > > >
> > > > +        paddd   xmm12,xmm2
> > > >
> > > > +        movd    xmm4,DWORD[((-48))+r8]
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        movd    xmm9,DWORD[((-48))+r9]
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm14,2
> > > >
> > > > +        paddd   xmm12,xmm8
> > > >
> > > > +DB      102,15,56,0,221
> > > >
> > > > +        movd    xmm8,DWORD[((-48))+r10]
> > > >
> > > > +        por     xmm14,xmm7
> > > >
> > > > +        movd    xmm7,DWORD[((-48))+r11]
> > > >
> > > > +        punpckldq       xmm4,xmm8
> > > >
> > > > +        movdqa  xmm8,xmm12
> > > >
> > > > +        paddd   xmm11,xmm15
> > > >
> > > > +        punpckldq       xmm9,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +        movdqa  xmm6,xmm13
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pandn   xmm7,xmm10
> > > >
> > > > +        pand    xmm6,xmm14
> > > >
> > > > +        punpckldq       xmm4,xmm9
> > > >
> > > > +        movdqa  xmm9,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(48-128)+rax],xmm3
> > > >
> > > > +        paddd   xmm11,xmm3
> > > >
> > > > +        movd    xmm0,DWORD[((-44))+r8]
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        movd    xmm9,DWORD[((-44))+r9]
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm11,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm13,2
> > > >
> > > > +        paddd   xmm11,xmm8
> > > >
> > > > +DB      102,15,56,0,229
> > > >
> > > > +        movd    xmm8,DWORD[((-44))+r10]
> > > >
> > > > +        por     xmm13,xmm7
> > > >
> > > > +        movd    xmm7,DWORD[((-44))+r11]
> > > >
> > > > +        punpckldq       xmm0,xmm8
> > > >
> > > > +        movdqa  xmm8,xmm11
> > > >
> > > > +        paddd   xmm10,xmm15
> > > >
> > > > +        punpckldq       xmm9,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +        movdqa  xmm6,xmm12
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pandn   xmm7,xmm14
> > > >
> > > > +        pand    xmm6,xmm13
> > > >
> > > > +        punpckldq       xmm0,xmm9
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(64-128)+rax],xmm4
> > > >
> > > > +        paddd   xmm10,xmm4
> > > >
> > > > +        movd    xmm1,DWORD[((-40))+r8]
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        movd    xmm9,DWORD[((-40))+r9]
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm12,2
> > > >
> > > > +        paddd   xmm10,xmm8
> > > >
> > > > +DB      102,15,56,0,197
> > > >
> > > > +        movd    xmm8,DWORD[((-40))+r10]
> > > >
> > > > +        por     xmm12,xmm7
> > > >
> > > > +        movd    xmm7,DWORD[((-40))+r11]
> > > >
> > > > +        punpckldq       xmm1,xmm8
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        paddd   xmm14,xmm15
> > > >
> > > > +        punpckldq       xmm9,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +        movdqa  xmm6,xmm11
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pandn   xmm7,xmm13
> > > >
> > > > +        pand    xmm6,xmm12
> > > >
> > > > +        punpckldq       xmm1,xmm9
> > > >
> > > > +        movdqa  xmm9,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(80-128)+rax],xmm0
> > > >
> > > > +        paddd   xmm14,xmm0
> > > >
> > > > +        movd    xmm2,DWORD[((-36))+r8]
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        movd    xmm9,DWORD[((-36))+r9]
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm11,2
> > > >
> > > > +        paddd   xmm14,xmm8
> > > >
> > > > +DB      102,15,56,0,205
> > > >
> > > > +        movd    xmm8,DWORD[((-36))+r10]
> > > >
> > > > +        por     xmm11,xmm7
> > > >
> > > > +        movd    xmm7,DWORD[((-36))+r11]
> > > >
> > > > +        punpckldq       xmm2,xmm8
> > > >
> > > > +        movdqa  xmm8,xmm14
> > > >
> > > > +        paddd   xmm13,xmm15
> > > >
> > > > +        punpckldq       xmm9,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +        movdqa  xmm6,xmm10
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pandn   xmm7,xmm12
> > > >
> > > > +        pand    xmm6,xmm11
> > > >
> > > > +        punpckldq       xmm2,xmm9
> > > >
> > > > +        movdqa  xmm9,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(96-128)+rax],xmm1
> > > >
> > > > +        paddd   xmm13,xmm1
> > > >
> > > > +        movd    xmm3,DWORD[((-32))+r8]
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        movd    xmm9,DWORD[((-32))+r9]
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm13,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm10,2
> > > >
> > > > +        paddd   xmm13,xmm8
> > > >
> > > > +DB      102,15,56,0,213
> > > >
> > > > +        movd    xmm8,DWORD[((-32))+r10]
> > > >
> > > > +        por     xmm10,xmm7
> > > >
> > > > +        movd    xmm7,DWORD[((-32))+r11]
> > > >
> > > > +        punpckldq       xmm3,xmm8
> > > >
> > > > +        movdqa  xmm8,xmm13
> > > >
> > > > +        paddd   xmm12,xmm15
> > > >
> > > > +        punpckldq       xmm9,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +        movdqa  xmm6,xmm14
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pandn   xmm7,xmm11
> > > >
> > > > +        pand    xmm6,xmm10
> > > >
> > > > +        punpckldq       xmm3,xmm9
> > > >
> > > > +        movdqa  xmm9,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(112-128)+rax],xmm2
> > > >
> > > > +        paddd   xmm12,xmm2
> > > >
> > > > +        movd    xmm4,DWORD[((-28))+r8]
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        movd    xmm9,DWORD[((-28))+r9]
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm14,2
> > > >
> > > > +        paddd   xmm12,xmm8
> > > >
> > > > +DB      102,15,56,0,221
> > > >
> > > > +        movd    xmm8,DWORD[((-28))+r10]
> > > >
> > > > +        por     xmm14,xmm7
> > > >
> > > > +        movd    xmm7,DWORD[((-28))+r11]
> > > >
> > > > +        punpckldq       xmm4,xmm8
> > > >
> > > > +        movdqa  xmm8,xmm12
> > > >
> > > > +        paddd   xmm11,xmm15
> > > >
> > > > +        punpckldq       xmm9,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +        movdqa  xmm6,xmm13
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pandn   xmm7,xmm10
> > > >
> > > > +        pand    xmm6,xmm14
> > > >
> > > > +        punpckldq       xmm4,xmm9
> > > >
> > > > +        movdqa  xmm9,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(128-128)+rax],xmm3
> > > >
> > > > +        paddd   xmm11,xmm3
> > > >
> > > > +        movd    xmm0,DWORD[((-24))+r8]
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        movd    xmm9,DWORD[((-24))+r9]
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm11,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm13,2
> > > >
> > > > +        paddd   xmm11,xmm8
> > > >
> > > > +DB      102,15,56,0,229
> > > >
> > > > +        movd    xmm8,DWORD[((-24))+r10]
> > > >
> > > > +        por     xmm13,xmm7
> > > >
> > > > +        movd    xmm7,DWORD[((-24))+r11]
> > > >
> > > > +        punpckldq       xmm0,xmm8
> > > >
> > > > +        movdqa  xmm8,xmm11
> > > >
> > > > +        paddd   xmm10,xmm15
> > > >
> > > > +        punpckldq       xmm9,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +        movdqa  xmm6,xmm12
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pandn   xmm7,xmm14
> > > >
> > > > +        pand    xmm6,xmm13
> > > >
> > > > +        punpckldq       xmm0,xmm9
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(144-128)+rax],xmm4
> > > >
> > > > +        paddd   xmm10,xmm4
> > > >
> > > > +        movd    xmm1,DWORD[((-20))+r8]
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        movd    xmm9,DWORD[((-20))+r9]
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm12,2
> > > >
> > > > +        paddd   xmm10,xmm8
> > > >
> > > > +DB      102,15,56,0,197
> > > >
> > > > +        movd    xmm8,DWORD[((-20))+r10]
> > > >
> > > > +        por     xmm12,xmm7
> > > >
> > > > +        movd    xmm7,DWORD[((-20))+r11]
> > > >
> > > > +        punpckldq       xmm1,xmm8
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        paddd   xmm14,xmm15
> > > >
> > > > +        punpckldq       xmm9,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +        movdqa  xmm6,xmm11
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pandn   xmm7,xmm13
> > > >
> > > > +        pand    xmm6,xmm12
> > > >
> > > > +        punpckldq       xmm1,xmm9
> > > >
> > > > +        movdqa  xmm9,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(160-128)+rax],xmm0
> > > >
> > > > +        paddd   xmm14,xmm0
> > > >
> > > > +        movd    xmm2,DWORD[((-16))+r8]
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        movd    xmm9,DWORD[((-16))+r9]
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm11,2
> > > >
> > > > +        paddd   xmm14,xmm8
> > > >
> > > > +DB      102,15,56,0,205
> > > >
> > > > +        movd    xmm8,DWORD[((-16))+r10]
> > > >
> > > > +        por     xmm11,xmm7
> > > >
> > > > +        movd    xmm7,DWORD[((-16))+r11]
> > > >
> > > > +        punpckldq       xmm2,xmm8
> > > >
> > > > +        movdqa  xmm8,xmm14
> > > >
> > > > +        paddd   xmm13,xmm15
> > > >
> > > > +        punpckldq       xmm9,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +        movdqa  xmm6,xmm10
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pandn   xmm7,xmm12
> > > >
> > > > +        pand    xmm6,xmm11
> > > >
> > > > +        punpckldq       xmm2,xmm9
> > > >
> > > > +        movdqa  xmm9,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(176-128)+rax],xmm1
> > > >
> > > > +        paddd   xmm13,xmm1
> > > >
> > > > +        movd    xmm3,DWORD[((-12))+r8]
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        movd    xmm9,DWORD[((-12))+r9]
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm13,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm10,2
> > > >
> > > > +        paddd   xmm13,xmm8
> > > >
> > > > +DB      102,15,56,0,213
> > > >
> > > > +        movd    xmm8,DWORD[((-12))+r10]
> > > >
> > > > +        por     xmm10,xmm7
> > > >
> > > > +        movd    xmm7,DWORD[((-12))+r11]
> > > >
> > > > +        punpckldq       xmm3,xmm8
> > > >
> > > > +        movdqa  xmm8,xmm13
> > > >
> > > > +        paddd   xmm12,xmm15
> > > >
> > > > +        punpckldq       xmm9,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +        movdqa  xmm6,xmm14
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pandn   xmm7,xmm11
> > > >
> > > > +        pand    xmm6,xmm10
> > > >
> > > > +        punpckldq       xmm3,xmm9
> > > >
> > > > +        movdqa  xmm9,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(192-128)+rax],xmm2
> > > >
> > > > +        paddd   xmm12,xmm2
> > > >
> > > > +        movd    xmm4,DWORD[((-8))+r8]
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        movd    xmm9,DWORD[((-8))+r9]
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm14,2
> > > >
> > > > +        paddd   xmm12,xmm8
> > > >
> > > > +DB      102,15,56,0,221
> > > >
> > > > +        movd    xmm8,DWORD[((-8))+r10]
> > > >
> > > > +        por     xmm14,xmm7
> > > >
> > > > +        movd    xmm7,DWORD[((-8))+r11]
> > > >
> > > > +        punpckldq       xmm4,xmm8
> > > >
> > > > +        movdqa  xmm8,xmm12
> > > >
> > > > +        paddd   xmm11,xmm15
> > > >
> > > > +        punpckldq       xmm9,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +        movdqa  xmm6,xmm13
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pandn   xmm7,xmm10
> > > >
> > > > +        pand    xmm6,xmm14
> > > >
> > > > +        punpckldq       xmm4,xmm9
> > > >
> > > > +        movdqa  xmm9,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(208-128)+rax],xmm3
> > > >
> > > > +        paddd   xmm11,xmm3
> > > >
> > > > +        movd    xmm0,DWORD[((-4))+r8]
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        movd    xmm9,DWORD[((-4))+r9]
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm11,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm13,2
> > > >
> > > > +        paddd   xmm11,xmm8
> > > >
> > > > +DB      102,15,56,0,229
> > > >
> > > > +        movd    xmm8,DWORD[((-4))+r10]
> > > >
> > > > +        por     xmm13,xmm7
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((0-128))+rax]
> > > >
> > > > +        movd    xmm7,DWORD[((-4))+r11]
> > > >
> > > > +        punpckldq       xmm0,xmm8
> > > >
> > > > +        movdqa  xmm8,xmm11
> > > >
> > > > +        paddd   xmm10,xmm15
> > > >
> > > > +        punpckldq       xmm9,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +        movdqa  xmm6,xmm12
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        prefetcht0      [63+r8]
> > > >
> > > > +        pandn   xmm7,xmm14
> > > >
> > > > +        pand    xmm6,xmm13
> > > >
> > > > +        punpckldq       xmm0,xmm9
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(224-128)+rax],xmm4
> > > >
> > > > +        paddd   xmm10,xmm4
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +        prefetcht0      [63+r9]
> > > >
> > > > +
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +        prefetcht0      [63+r10]
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm12,2
> > > >
> > > > +        paddd   xmm10,xmm8
> > > >
> > > > +DB      102,15,56,0,197
> > > >
> > > > +        prefetcht0      [63+r11]
> > > >
> > > > +        por     xmm12,xmm7
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((16-128))+rax]
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        movdqa  xmm3,XMMWORD[((32-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        pxor    xmm1,XMMWORD[((128-128))+rax]
> > > >
> > > > +        paddd   xmm14,xmm15
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        movdqa  xmm6,xmm11
> > > >
> > > > +        pandn   xmm7,xmm13
> > > >
> > > > +        movdqa  xmm5,xmm1
> > > >
> > > > +        pand    xmm6,xmm12
> > > >
> > > > +        movdqa  xmm9,xmm10
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm1,xmm1
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(240-128)+rax],xmm0
> > > >
> > > > +        paddd   xmm14,xmm0
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm11,2
> > > >
> > > > +        paddd   xmm14,xmm8
> > > >
> > > > +        por     xmm1,xmm5
> > > >
> > > > +        por     xmm11,xmm7
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        movdqa  xmm4,XMMWORD[((48-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm14
> > > >
> > > > +        pxor    xmm2,XMMWORD[((144-128))+rax]
> > > >
> > > > +        paddd   xmm13,xmm15
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        movdqa  xmm6,xmm10
> > > >
> > > > +        pandn   xmm7,xmm12
> > > >
> > > > +        movdqa  xmm5,xmm2
> > > >
> > > > +        pand    xmm6,xmm11
> > > >
> > > > +        movdqa  xmm9,xmm14
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm2,xmm2
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(0-128)+rax],xmm1
> > > >
> > > > +        paddd   xmm13,xmm1
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm13,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm10,2
> > > >
> > > > +        paddd   xmm13,xmm8
> > > >
> > > > +        por     xmm2,xmm5
> > > >
> > > > +        por     xmm10,xmm7
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((64-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm13
> > > >
> > > > +        pxor    xmm3,XMMWORD[((160-128))+rax]
> > > >
> > > > +        paddd   xmm12,xmm15
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        movdqa  xmm6,xmm14
> > > >
> > > > +        pandn   xmm7,xmm11
> > > >
> > > > +        movdqa  xmm5,xmm3
> > > >
> > > > +        pand    xmm6,xmm10
> > > >
> > > > +        movdqa  xmm9,xmm13
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm3,xmm3
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(16-128)+rax],xmm2
> > > >
> > > > +        paddd   xmm12,xmm2
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm14,2
> > > >
> > > > +        paddd   xmm12,xmm8
> > > >
> > > > +        por     xmm3,xmm5
> > > >
> > > > +        por     xmm14,xmm7
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((80-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm12
> > > >
> > > > +        pxor    xmm4,XMMWORD[((176-128))+rax]
> > > >
> > > > +        paddd   xmm11,xmm15
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        movdqa  xmm6,xmm13
> > > >
> > > > +        pandn   xmm7,xmm10
> > > >
> > > > +        movdqa  xmm5,xmm4
> > > >
> > > > +        pand    xmm6,xmm14
> > > >
> > > > +        movdqa  xmm9,xmm12
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm4,xmm4
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(32-128)+rax],xmm3
> > > >
> > > > +        paddd   xmm11,xmm3
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm11,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm13,2
> > > >
> > > > +        paddd   xmm11,xmm8
> > > >
> > > > +        por     xmm4,xmm5
> > > >
> > > > +        por     xmm13,xmm7
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((96-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm11
> > > >
> > > > +        pxor    xmm0,XMMWORD[((192-128))+rax]
> > > >
> > > > +        paddd   xmm10,xmm15
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        movdqa  xmm6,xmm12
> > > >
> > > > +        pandn   xmm7,xmm14
> > > >
> > > > +        movdqa  xmm5,xmm0
> > > >
> > > > +        pand    xmm6,xmm13
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm0,xmm0
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(48-128)+rax],xmm4
> > > >
> > > > +        paddd   xmm10,xmm4
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm12,2
> > > >
> > > > +        paddd   xmm10,xmm8
> > > >
> > > > +        por     xmm0,xmm5
> > > >
> > > > +        por     xmm12,xmm7
> > > >
> > > > +        movdqa  xmm15,XMMWORD[rbp]
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        movdqa  xmm3,XMMWORD[((112-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        movdqa  xmm6,xmm13
> > > >
> > > > +        pxor    xmm1,XMMWORD[((208-128))+rax]
> > > >
> > > > +        paddd   xmm14,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm10
> > > >
> > > > +        movdqa  XMMWORD[(64-128)+rax],xmm0
> > > >
> > > > +        paddd   xmm14,xmm0
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm1
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +        paddd   xmm1,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm11,2
> > > >
> > > > +        paddd   xmm14,xmm8
> > > >
> > > > +        por     xmm1,xmm5
> > > >
> > > > +        por     xmm11,xmm7
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        movdqa  xmm4,XMMWORD[((128-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm14
> > > >
> > > > +        movdqa  xmm6,xmm12
> > > >
> > > > +        pxor    xmm2,XMMWORD[((224-128))+rax]
> > > >
> > > > +        paddd   xmm13,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm14
> > > >
> > > > +        movdqa  XMMWORD[(80-128)+rax],xmm1
> > > >
> > > > +        paddd   xmm13,xmm1
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm2
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm13,xmm6
> > > >
> > > > +        paddd   xmm2,xmm2
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm10,2
> > > >
> > > > +        paddd   xmm13,xmm8
> > > >
> > > > +        por     xmm2,xmm5
> > > >
> > > > +        por     xmm10,xmm7
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((144-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm13
> > > >
> > > > +        movdqa  xmm6,xmm11
> > > >
> > > > +        pxor    xmm3,XMMWORD[((240-128))+rax]
> > > >
> > > > +        paddd   xmm12,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm13
> > > >
> > > > +        movdqa  XMMWORD[(96-128)+rax],xmm2
> > > >
> > > > +        paddd   xmm12,xmm2
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm3
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +        paddd   xmm3,xmm3
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm14,2
> > > >
> > > > +        paddd   xmm12,xmm8
> > > >
> > > > +        por     xmm3,xmm5
> > > >
> > > > +        por     xmm14,xmm7
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((160-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm12
> > > >
> > > > +        movdqa  xmm6,xmm10
> > > >
> > > > +        pxor    xmm4,XMMWORD[((0-128))+rax]
> > > >
> > > > +        paddd   xmm11,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm12
> > > >
> > > > +        movdqa  XMMWORD[(112-128)+rax],xmm3
> > > >
> > > > +        paddd   xmm11,xmm3
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm4
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm11,xmm6
> > > >
> > > > +        paddd   xmm4,xmm4
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm13,2
> > > >
> > > > +        paddd   xmm11,xmm8
> > > >
> > > > +        por     xmm4,xmm5
> > > >
> > > > +        por     xmm13,xmm7
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((176-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm11
> > > >
> > > > +        movdqa  xmm6,xmm14
> > > >
> > > > +        pxor    xmm0,XMMWORD[((16-128))+rax]
> > > >
> > > > +        paddd   xmm10,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +        movdqa  XMMWORD[(128-128)+rax],xmm4
> > > >
> > > > +        paddd   xmm10,xmm4
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm0
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +        paddd   xmm0,xmm0
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm12,2
> > > >
> > > > +        paddd   xmm10,xmm8
> > > >
> > > > +        por     xmm0,xmm5
> > > >
> > > > +        por     xmm12,xmm7
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        movdqa  xmm3,XMMWORD[((192-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        movdqa  xmm6,xmm13
> > > >
> > > > +        pxor    xmm1,XMMWORD[((32-128))+rax]
> > > >
> > > > +        paddd   xmm14,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm10
> > > >
> > > > +        movdqa  XMMWORD[(144-128)+rax],xmm0
> > > >
> > > > +        paddd   xmm14,xmm0
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm1
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +        paddd   xmm1,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm11,2
> > > >
> > > > +        paddd   xmm14,xmm8
> > > >
> > > > +        por     xmm1,xmm5
> > > >
> > > > +        por     xmm11,xmm7
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        movdqa  xmm4,XMMWORD[((208-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm14
> > > >
> > > > +        movdqa  xmm6,xmm12
> > > >
> > > > +        pxor    xmm2,XMMWORD[((48-128))+rax]
> > > >
> > > > +        paddd   xmm13,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm14
> > > >
> > > > +        movdqa  XMMWORD[(160-128)+rax],xmm1
> > > >
> > > > +        paddd   xmm13,xmm1
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm2
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm13,xmm6
> > > >
> > > > +        paddd   xmm2,xmm2
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm10,2
> > > >
> > > > +        paddd   xmm13,xmm8
> > > >
> > > > +        por     xmm2,xmm5
> > > >
> > > > +        por     xmm10,xmm7
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((224-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm13
> > > >
> > > > +        movdqa  xmm6,xmm11
> > > >
> > > > +        pxor    xmm3,XMMWORD[((64-128))+rax]
> > > >
> > > > +        paddd   xmm12,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm13
> > > >
> > > > +        movdqa  XMMWORD[(176-128)+rax],xmm2
> > > >
> > > > +        paddd   xmm12,xmm2
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm3
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +        paddd   xmm3,xmm3
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm14,2
> > > >
> > > > +        paddd   xmm12,xmm8
> > > >
> > > > +        por     xmm3,xmm5
> > > >
> > > > +        por     xmm14,xmm7
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((240-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm12
> > > >
> > > > +        movdqa  xmm6,xmm10
> > > >
> > > > +        pxor    xmm4,XMMWORD[((80-128))+rax]
> > > >
> > > > +        paddd   xmm11,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm12
> > > >
> > > > +        movdqa  XMMWORD[(192-128)+rax],xmm3
> > > >
> > > > +        paddd   xmm11,xmm3
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm4
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm11,xmm6
> > > >
> > > > +        paddd   xmm4,xmm4
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm13,2
> > > >
> > > > +        paddd   xmm11,xmm8
> > > >
> > > > +        por     xmm4,xmm5
> > > >
> > > > +        por     xmm13,xmm7
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((0-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm11
> > > >
> > > > +        movdqa  xmm6,xmm14
> > > >
> > > > +        pxor    xmm0,XMMWORD[((96-128))+rax]
> > > >
> > > > +        paddd   xmm10,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +        movdqa  XMMWORD[(208-128)+rax],xmm4
> > > >
> > > > +        paddd   xmm10,xmm4
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm0
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +        paddd   xmm0,xmm0
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm12,2
> > > >
> > > > +        paddd   xmm10,xmm8
> > > >
> > > > +        por     xmm0,xmm5
> > > >
> > > > +        por     xmm12,xmm7
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        movdqa  xmm3,XMMWORD[((16-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        movdqa  xmm6,xmm13
> > > >
> > > > +        pxor    xmm1,XMMWORD[((112-128))+rax]
> > > >
> > > > +        paddd   xmm14,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm10
> > > >
> > > > +        movdqa  XMMWORD[(224-128)+rax],xmm0
> > > >
> > > > +        paddd   xmm14,xmm0
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm1
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +        paddd   xmm1,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm11,2
> > > >
> > > > +        paddd   xmm14,xmm8
> > > >
> > > > +        por     xmm1,xmm5
> > > >
> > > > +        por     xmm11,xmm7
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        movdqa  xmm4,XMMWORD[((32-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm14
> > > >
> > > > +        movdqa  xmm6,xmm12
> > > >
> > > > +        pxor    xmm2,XMMWORD[((128-128))+rax]
> > > >
> > > > +        paddd   xmm13,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm14
> > > >
> > > > +        movdqa  XMMWORD[(240-128)+rax],xmm1
> > > >
> > > > +        paddd   xmm13,xmm1
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm2
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm13,xmm6
> > > >
> > > > +        paddd   xmm2,xmm2
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm10,2
> > > >
> > > > +        paddd   xmm13,xmm8
> > > >
> > > > +        por     xmm2,xmm5
> > > >
> > > > +        por     xmm10,xmm7
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((48-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm13
> > > >
> > > > +        movdqa  xmm6,xmm11
> > > >
> > > > +        pxor    xmm3,XMMWORD[((144-128))+rax]
> > > >
> > > > +        paddd   xmm12,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm13
> > > >
> > > > +        movdqa  XMMWORD[(0-128)+rax],xmm2
> > > >
> > > > +        paddd   xmm12,xmm2
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm3
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +        paddd   xmm3,xmm3
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm14,2
> > > >
> > > > +        paddd   xmm12,xmm8
> > > >
> > > > +        por     xmm3,xmm5
> > > >
> > > > +        por     xmm14,xmm7
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((64-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm12
> > > >
> > > > +        movdqa  xmm6,xmm10
> > > >
> > > > +        pxor    xmm4,XMMWORD[((160-128))+rax]
> > > >
> > > > +        paddd   xmm11,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm12
> > > >
> > > > +        movdqa  XMMWORD[(16-128)+rax],xmm3
> > > >
> > > > +        paddd   xmm11,xmm3
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm4
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm11,xmm6
> > > >
> > > > +        paddd   xmm4,xmm4
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm13,2
> > > >
> > > > +        paddd   xmm11,xmm8
> > > >
> > > > +        por     xmm4,xmm5
> > > >
> > > > +        por     xmm13,xmm7
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((80-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm11
> > > >
> > > > +        movdqa  xmm6,xmm14
> > > >
> > > > +        pxor    xmm0,XMMWORD[((176-128))+rax]
> > > >
> > > > +        paddd   xmm10,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +        movdqa  XMMWORD[(32-128)+rax],xmm4
> > > >
> > > > +        paddd   xmm10,xmm4
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm0
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +        paddd   xmm0,xmm0
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm12,2
> > > >
> > > > +        paddd   xmm10,xmm8
> > > >
> > > > +        por     xmm0,xmm5
> > > >
> > > > +        por     xmm12,xmm7
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        movdqa  xmm3,XMMWORD[((96-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        movdqa  xmm6,xmm13
> > > >
> > > > +        pxor    xmm1,XMMWORD[((192-128))+rax]
> > > >
> > > > +        paddd   xmm14,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm10
> > > >
> > > > +        movdqa  XMMWORD[(48-128)+rax],xmm0
> > > >
> > > > +        paddd   xmm14,xmm0
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm1
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +        paddd   xmm1,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm11,2
> > > >
> > > > +        paddd   xmm14,xmm8
> > > >
> > > > +        por     xmm1,xmm5
> > > >
> > > > +        por     xmm11,xmm7
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        movdqa  xmm4,XMMWORD[((112-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm14
> > > >
> > > > +        movdqa  xmm6,xmm12
> > > >
> > > > +        pxor    xmm2,XMMWORD[((208-128))+rax]
> > > >
> > > > +        paddd   xmm13,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm14
> > > >
> > > > +        movdqa  XMMWORD[(64-128)+rax],xmm1
> > > >
> > > > +        paddd   xmm13,xmm1
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm2
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm13,xmm6
> > > >
> > > > +        paddd   xmm2,xmm2
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm10,2
> > > >
> > > > +        paddd   xmm13,xmm8
> > > >
> > > > +        por     xmm2,xmm5
> > > >
> > > > +        por     xmm10,xmm7
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((128-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm13
> > > >
> > > > +        movdqa  xmm6,xmm11
> > > >
> > > > +        pxor    xmm3,XMMWORD[((224-128))+rax]
> > > >
> > > > +        paddd   xmm12,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm13
> > > >
> > > > +        movdqa  XMMWORD[(80-128)+rax],xmm2
> > > >
> > > > +        paddd   xmm12,xmm2
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm3
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +        paddd   xmm3,xmm3
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm14,2
> > > >
> > > > +        paddd   xmm12,xmm8
> > > >
> > > > +        por     xmm3,xmm5
> > > >
> > > > +        por     xmm14,xmm7
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((144-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm12
> > > >
> > > > +        movdqa  xmm6,xmm10
> > > >
> > > > +        pxor    xmm4,XMMWORD[((240-128))+rax]
> > > >
> > > > +        paddd   xmm11,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm12
> > > >
> > > > +        movdqa  XMMWORD[(96-128)+rax],xmm3
> > > >
> > > > +        paddd   xmm11,xmm3
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm4
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm11,xmm6
> > > >
> > > > +        paddd   xmm4,xmm4
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm13,2
> > > >
> > > > +        paddd   xmm11,xmm8
> > > >
> > > > +        por     xmm4,xmm5
> > > >
> > > > +        por     xmm13,xmm7
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((160-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm11
> > > >
> > > > +        movdqa  xmm6,xmm14
> > > >
> > > > +        pxor    xmm0,XMMWORD[((0-128))+rax]
> > > >
> > > > +        paddd   xmm10,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +        movdqa  XMMWORD[(112-128)+rax],xmm4
> > > >
> > > > +        paddd   xmm10,xmm4
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm0
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +        paddd   xmm0,xmm0
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm12,2
> > > >
> > > > +        paddd   xmm10,xmm8
> > > >
> > > > +        por     xmm0,xmm5
> > > >
> > > > +        por     xmm12,xmm7
> > > >
> > > > +        movdqa  xmm15,XMMWORD[32+rbp]
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        movdqa  xmm3,XMMWORD[((176-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +        pxor    xmm1,XMMWORD[((16-128))+rax]
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        paddd   xmm14,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm10
> > > >
> > > > +        pand    xmm7,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm13
> > > >
> > > > +        movdqa  xmm5,xmm1
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm14,xmm7
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(128-128)+rax],xmm0
> > > >
> > > > +        paddd   xmm14,xmm0
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm1,xmm1
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm11,2
> > > >
> > > > +        paddd   xmm14,xmm8
> > > >
> > > > +        por     xmm1,xmm5
> > > >
> > > > +        por     xmm11,xmm7
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        movdqa  xmm4,XMMWORD[((192-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +        pxor    xmm2,XMMWORD[((32-128))+rax]
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        paddd   xmm13,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm14
> > > >
> > > > +        pand    xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm12
> > > >
> > > > +        movdqa  xmm5,xmm2
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm13,xmm7
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(144-128)+rax],xmm1
> > > >
> > > > +        paddd   xmm13,xmm1
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm2,xmm2
> > > >
> > > > +        paddd   xmm13,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm10,2
> > > >
> > > > +        paddd   xmm13,xmm8
> > > >
> > > > +        por     xmm2,xmm5
> > > >
> > > > +        por     xmm10,xmm7
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((208-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm13
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +        pxor    xmm3,XMMWORD[((48-128))+rax]
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        paddd   xmm12,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm13
> > > >
> > > > +        pand    xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm11
> > > >
> > > > +        movdqa  xmm5,xmm3
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm12,xmm7
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(160-128)+rax],xmm2
> > > >
> > > > +        paddd   xmm12,xmm2
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm3,xmm3
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm14,2
> > > >
> > > > +        paddd   xmm12,xmm8
> > > >
> > > > +        por     xmm3,xmm5
> > > >
> > > > +        por     xmm14,xmm7
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((224-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +        pxor    xmm4,XMMWORD[((64-128))+rax]
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        paddd   xmm11,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm12
> > > >
> > > > +        pand    xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm10
> > > >
> > > > +        movdqa  xmm5,xmm4
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm11,xmm7
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(176-128)+rax],xmm3
> > > >
> > > > +        paddd   xmm11,xmm3
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm13
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm4,xmm4
> > > >
> > > > +        paddd   xmm11,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm13,2
> > > >
> > > > +        paddd   xmm11,xmm8
> > > >
> > > > +        por     xmm4,xmm5
> > > >
> > > > +        por     xmm13,xmm7
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((240-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +        pxor    xmm0,XMMWORD[((80-128))+rax]
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        paddd   xmm10,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +        pand    xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm14
> > > >
> > > > +        movdqa  xmm5,xmm0
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm10,xmm7
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(192-128)+rax],xmm4
> > > >
> > > > +        paddd   xmm10,xmm4
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm0,xmm0
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm12,2
> > > >
> > > > +        paddd   xmm10,xmm8
> > > >
> > > > +        por     xmm0,xmm5
> > > >
> > > > +        por     xmm12,xmm7
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        movdqa  xmm3,XMMWORD[((0-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +        pxor    xmm1,XMMWORD[((96-128))+rax]
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        paddd   xmm14,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm10
> > > >
> > > > +        pand    xmm7,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm13
> > > >
> > > > +        movdqa  xmm5,xmm1
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm14,xmm7
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(208-128)+rax],xmm0
> > > >
> > > > +        paddd   xmm14,xmm0
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm1,xmm1
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm11,2
> > > >
> > > > +        paddd   xmm14,xmm8
> > > >
> > > > +        por     xmm1,xmm5
> > > >
> > > > +        por     xmm11,xmm7
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        movdqa  xmm4,XMMWORD[((16-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +        pxor    xmm2,XMMWORD[((112-128))+rax]
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        paddd   xmm13,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm14
> > > >
> > > > +        pand    xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm12
> > > >
> > > > +        movdqa  xmm5,xmm2
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm13,xmm7
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(224-128)+rax],xmm1
> > > >
> > > > +        paddd   xmm13,xmm1
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm2,xmm2
> > > >
> > > > +        paddd   xmm13,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm10,2
> > > >
> > > > +        paddd   xmm13,xmm8
> > > >
> > > > +        por     xmm2,xmm5
> > > >
> > > > +        por     xmm10,xmm7
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((32-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm13
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +        pxor    xmm3,XMMWORD[((128-128))+rax]
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        paddd   xmm12,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm13
> > > >
> > > > +        pand    xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm11
> > > >
> > > > +        movdqa  xmm5,xmm3
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm12,xmm7
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(240-128)+rax],xmm2
> > > >
> > > > +        paddd   xmm12,xmm2
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm3,xmm3
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm14,2
> > > >
> > > > +        paddd   xmm12,xmm8
> > > >
> > > > +        por     xmm3,xmm5
> > > >
> > > > +        por     xmm14,xmm7
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((48-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +        pxor    xmm4,XMMWORD[((144-128))+rax]
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        paddd   xmm11,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm12
> > > >
> > > > +        pand    xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm10
> > > >
> > > > +        movdqa  xmm5,xmm4
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm11,xmm7
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(0-128)+rax],xmm3
> > > >
> > > > +        paddd   xmm11,xmm3
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm13
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm4,xmm4
> > > >
> > > > +        paddd   xmm11,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm13,2
> > > >
> > > > +        paddd   xmm11,xmm8
> > > >
> > > > +        por     xmm4,xmm5
> > > >
> > > > +        por     xmm13,xmm7
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((64-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +        pxor    xmm0,XMMWORD[((160-128))+rax]
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        paddd   xmm10,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +        pand    xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm14
> > > >
> > > > +        movdqa  xmm5,xmm0
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm10,xmm7
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(16-128)+rax],xmm4
> > > >
> > > > +        paddd   xmm10,xmm4
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm0,xmm0
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm12,2
> > > >
> > > > +        paddd   xmm10,xmm8
> > > >
> > > > +        por     xmm0,xmm5
> > > >
> > > > +        por     xmm12,xmm7
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        movdqa  xmm3,XMMWORD[((80-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +        pxor    xmm1,XMMWORD[((176-128))+rax]
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        paddd   xmm14,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm10
> > > >
> > > > +        pand    xmm7,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm13
> > > >
> > > > +        movdqa  xmm5,xmm1
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm14,xmm7
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(32-128)+rax],xmm0
> > > >
> > > > +        paddd   xmm14,xmm0
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm1,xmm1
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm11,2
> > > >
> > > > +        paddd   xmm14,xmm8
> > > >
> > > > +        por     xmm1,xmm5
> > > >
> > > > +        por     xmm11,xmm7
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        movdqa  xmm4,XMMWORD[((96-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +        pxor    xmm2,XMMWORD[((192-128))+rax]
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        paddd   xmm13,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm14
> > > >
> > > > +        pand    xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm12
> > > >
> > > > +        movdqa  xmm5,xmm2
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm13,xmm7
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(48-128)+rax],xmm1
> > > >
> > > > +        paddd   xmm13,xmm1
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm2,xmm2
> > > >
> > > > +        paddd   xmm13,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm10,2
> > > >
> > > > +        paddd   xmm13,xmm8
> > > >
> > > > +        por     xmm2,xmm5
> > > >
> > > > +        por     xmm10,xmm7
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((112-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm13
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +        pxor    xmm3,XMMWORD[((208-128))+rax]
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        paddd   xmm12,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm13
> > > >
> > > > +        pand    xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm11
> > > >
> > > > +        movdqa  xmm5,xmm3
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm12,xmm7
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(64-128)+rax],xmm2
> > > >
> > > > +        paddd   xmm12,xmm2
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm3,xmm3
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm14,2
> > > >
> > > > +        paddd   xmm12,xmm8
> > > >
> > > > +        por     xmm3,xmm5
> > > >
> > > > +        por     xmm14,xmm7
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((128-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +        pxor    xmm4,XMMWORD[((224-128))+rax]
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        paddd   xmm11,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm12
> > > >
> > > > +        pand    xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm10
> > > >
> > > > +        movdqa  xmm5,xmm4
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm11,xmm7
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(80-128)+rax],xmm3
> > > >
> > > > +        paddd   xmm11,xmm3
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm13
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm4,xmm4
> > > >
> > > > +        paddd   xmm11,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm13,2
> > > >
> > > > +        paddd   xmm11,xmm8
> > > >
> > > > +        por     xmm4,xmm5
> > > >
> > > > +        por     xmm13,xmm7
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((144-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +        pxor    xmm0,XMMWORD[((240-128))+rax]
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        paddd   xmm10,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +        pand    xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm14
> > > >
> > > > +        movdqa  xmm5,xmm0
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm10,xmm7
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(96-128)+rax],xmm4
> > > >
> > > > +        paddd   xmm10,xmm4
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm0,xmm0
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm12,2
> > > >
> > > > +        paddd   xmm10,xmm8
> > > >
> > > > +        por     xmm0,xmm5
> > > >
> > > > +        por     xmm12,xmm7
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        movdqa  xmm3,XMMWORD[((160-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +        pxor    xmm1,XMMWORD[((0-128))+rax]
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        paddd   xmm14,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm10
> > > >
> > > > +        pand    xmm7,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm13
> > > >
> > > > +        movdqa  xmm5,xmm1
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm14,xmm7
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(112-128)+rax],xmm0
> > > >
> > > > +        paddd   xmm14,xmm0
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm1,xmm1
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm11,2
> > > >
> > > > +        paddd   xmm14,xmm8
> > > >
> > > > +        por     xmm1,xmm5
> > > >
> > > > +        por     xmm11,xmm7
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        movdqa  xmm4,XMMWORD[((176-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +        pxor    xmm2,XMMWORD[((16-128))+rax]
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        paddd   xmm13,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm14
> > > >
> > > > +        pand    xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm12
> > > >
> > > > +        movdqa  xmm5,xmm2
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm13,xmm7
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(128-128)+rax],xmm1
> > > >
> > > > +        paddd   xmm13,xmm1
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm2,xmm2
> > > >
> > > > +        paddd   xmm13,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm10,2
> > > >
> > > > +        paddd   xmm13,xmm8
> > > >
> > > > +        por     xmm2,xmm5
> > > >
> > > > +        por     xmm10,xmm7
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((192-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm13
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +        pxor    xmm3,XMMWORD[((32-128))+rax]
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        paddd   xmm12,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm13
> > > >
> > > > +        pand    xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm11
> > > >
> > > > +        movdqa  xmm5,xmm3
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm12,xmm7
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(144-128)+rax],xmm2
> > > >
> > > > +        paddd   xmm12,xmm2
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm3,xmm3
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm14,2
> > > >
> > > > +        paddd   xmm12,xmm8
> > > >
> > > > +        por     xmm3,xmm5
> > > >
> > > > +        por     xmm14,xmm7
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((208-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +        pxor    xmm4,XMMWORD[((48-128))+rax]
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        paddd   xmm11,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm12
> > > >
> > > > +        pand    xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm10
> > > >
> > > > +        movdqa  xmm5,xmm4
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm11,xmm7
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(160-128)+rax],xmm3
> > > >
> > > > +        paddd   xmm11,xmm3
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm13
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm4,xmm4
> > > >
> > > > +        paddd   xmm11,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm13,2
> > > >
> > > > +        paddd   xmm11,xmm8
> > > >
> > > > +        por     xmm4,xmm5
> > > >
> > > > +        por     xmm13,xmm7
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((224-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +        pxor    xmm0,XMMWORD[((64-128))+rax]
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        paddd   xmm10,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +        pand    xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm14
> > > >
> > > > +        movdqa  xmm5,xmm0
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        paddd   xmm10,xmm7
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[(176-128)+rax],xmm4
> > > >
> > > > +        paddd   xmm10,xmm4
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        pand    xmm6,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        paddd   xmm0,xmm0
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm12,2
> > > >
> > > > +        paddd   xmm10,xmm8
> > > >
> > > > +        por     xmm0,xmm5
> > > >
> > > > +        por     xmm12,xmm7
> > > >
> > > > +        movdqa  xmm15,XMMWORD[64+rbp]
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        movdqa  xmm3,XMMWORD[((240-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        movdqa  xmm6,xmm13
> > > >
> > > > +        pxor    xmm1,XMMWORD[((80-128))+rax]
> > > >
> > > > +        paddd   xmm14,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm10
> > > >
> > > > +        movdqa  XMMWORD[(192-128)+rax],xmm0
> > > >
> > > > +        paddd   xmm14,xmm0
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm1
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +        paddd   xmm1,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm11,2
> > > >
> > > > +        paddd   xmm14,xmm8
> > > >
> > > > +        por     xmm1,xmm5
> > > >
> > > > +        por     xmm11,xmm7
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        movdqa  xmm4,XMMWORD[((0-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm14
> > > >
> > > > +        movdqa  xmm6,xmm12
> > > >
> > > > +        pxor    xmm2,XMMWORD[((96-128))+rax]
> > > >
> > > > +        paddd   xmm13,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm14
> > > >
> > > > +        movdqa  XMMWORD[(208-128)+rax],xmm1
> > > >
> > > > +        paddd   xmm13,xmm1
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm2
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm13,xmm6
> > > >
> > > > +        paddd   xmm2,xmm2
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm10,2
> > > >
> > > > +        paddd   xmm13,xmm8
> > > >
> > > > +        por     xmm2,xmm5
> > > >
> > > > +        por     xmm10,xmm7
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((16-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm13
> > > >
> > > > +        movdqa  xmm6,xmm11
> > > >
> > > > +        pxor    xmm3,XMMWORD[((112-128))+rax]
> > > >
> > > > +        paddd   xmm12,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm13
> > > >
> > > > +        movdqa  XMMWORD[(224-128)+rax],xmm2
> > > >
> > > > +        paddd   xmm12,xmm2
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm3
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +        paddd   xmm3,xmm3
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm14,2
> > > >
> > > > +        paddd   xmm12,xmm8
> > > >
> > > > +        por     xmm3,xmm5
> > > >
> > > > +        por     xmm14,xmm7
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((32-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm12
> > > >
> > > > +        movdqa  xmm6,xmm10
> > > >
> > > > +        pxor    xmm4,XMMWORD[((128-128))+rax]
> > > >
> > > > +        paddd   xmm11,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm12
> > > >
> > > > +        movdqa  XMMWORD[(240-128)+rax],xmm3
> > > >
> > > > +        paddd   xmm11,xmm3
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm4
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm11,xmm6
> > > >
> > > > +        paddd   xmm4,xmm4
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm13,2
> > > >
> > > > +        paddd   xmm11,xmm8
> > > >
> > > > +        por     xmm4,xmm5
> > > >
> > > > +        por     xmm13,xmm7
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((48-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm11
> > > >
> > > > +        movdqa  xmm6,xmm14
> > > >
> > > > +        pxor    xmm0,XMMWORD[((144-128))+rax]
> > > >
> > > > +        paddd   xmm10,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +        movdqa  XMMWORD[(0-128)+rax],xmm4
> > > >
> > > > +        paddd   xmm10,xmm4
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm0
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +        paddd   xmm0,xmm0
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm12,2
> > > >
> > > > +        paddd   xmm10,xmm8
> > > >
> > > > +        por     xmm0,xmm5
> > > >
> > > > +        por     xmm12,xmm7
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        movdqa  xmm3,XMMWORD[((64-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        movdqa  xmm6,xmm13
> > > >
> > > > +        pxor    xmm1,XMMWORD[((160-128))+rax]
> > > >
> > > > +        paddd   xmm14,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm10
> > > >
> > > > +        movdqa  XMMWORD[(16-128)+rax],xmm0
> > > >
> > > > +        paddd   xmm14,xmm0
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm1
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +        paddd   xmm1,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm11,2
> > > >
> > > > +        paddd   xmm14,xmm8
> > > >
> > > > +        por     xmm1,xmm5
> > > >
> > > > +        por     xmm11,xmm7
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        movdqa  xmm4,XMMWORD[((80-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm14
> > > >
> > > > +        movdqa  xmm6,xmm12
> > > >
> > > > +        pxor    xmm2,XMMWORD[((176-128))+rax]
> > > >
> > > > +        paddd   xmm13,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm14
> > > >
> > > > +        movdqa  XMMWORD[(32-128)+rax],xmm1
> > > >
> > > > +        paddd   xmm13,xmm1
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm2
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm13,xmm6
> > > >
> > > > +        paddd   xmm2,xmm2
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm10,2
> > > >
> > > > +        paddd   xmm13,xmm8
> > > >
> > > > +        por     xmm2,xmm5
> > > >
> > > > +        por     xmm10,xmm7
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((96-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm13
> > > >
> > > > +        movdqa  xmm6,xmm11
> > > >
> > > > +        pxor    xmm3,XMMWORD[((192-128))+rax]
> > > >
> > > > +        paddd   xmm12,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm13
> > > >
> > > > +        movdqa  XMMWORD[(48-128)+rax],xmm2
> > > >
> > > > +        paddd   xmm12,xmm2
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm3
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +        paddd   xmm3,xmm3
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm14,2
> > > >
> > > > +        paddd   xmm12,xmm8
> > > >
> > > > +        por     xmm3,xmm5
> > > >
> > > > +        por     xmm14,xmm7
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((112-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm12
> > > >
> > > > +        movdqa  xmm6,xmm10
> > > >
> > > > +        pxor    xmm4,XMMWORD[((208-128))+rax]
> > > >
> > > > +        paddd   xmm11,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm12
> > > >
> > > > +        movdqa  XMMWORD[(64-128)+rax],xmm3
> > > >
> > > > +        paddd   xmm11,xmm3
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm4
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm11,xmm6
> > > >
> > > > +        paddd   xmm4,xmm4
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm13,2
> > > >
> > > > +        paddd   xmm11,xmm8
> > > >
> > > > +        por     xmm4,xmm5
> > > >
> > > > +        por     xmm13,xmm7
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((128-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm11
> > > >
> > > > +        movdqa  xmm6,xmm14
> > > >
> > > > +        pxor    xmm0,XMMWORD[((224-128))+rax]
> > > >
> > > > +        paddd   xmm10,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +        movdqa  XMMWORD[(80-128)+rax],xmm4
> > > >
> > > > +        paddd   xmm10,xmm4
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm0
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +        paddd   xmm0,xmm0
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm12,2
> > > >
> > > > +        paddd   xmm10,xmm8
> > > >
> > > > +        por     xmm0,xmm5
> > > >
> > > > +        por     xmm12,xmm7
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        movdqa  xmm3,XMMWORD[((144-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        movdqa  xmm6,xmm13
> > > >
> > > > +        pxor    xmm1,XMMWORD[((240-128))+rax]
> > > >
> > > > +        paddd   xmm14,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm10
> > > >
> > > > +        movdqa  XMMWORD[(96-128)+rax],xmm0
> > > >
> > > > +        paddd   xmm14,xmm0
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm1
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +        paddd   xmm1,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm11,2
> > > >
> > > > +        paddd   xmm14,xmm8
> > > >
> > > > +        por     xmm1,xmm5
> > > >
> > > > +        por     xmm11,xmm7
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        movdqa  xmm4,XMMWORD[((160-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm14
> > > >
> > > > +        movdqa  xmm6,xmm12
> > > >
> > > > +        pxor    xmm2,XMMWORD[((0-128))+rax]
> > > >
> > > > +        paddd   xmm13,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm14
> > > >
> > > > +        movdqa  XMMWORD[(112-128)+rax],xmm1
> > > >
> > > > +        paddd   xmm13,xmm1
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm2
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm13,xmm6
> > > >
> > > > +        paddd   xmm2,xmm2
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm10,2
> > > >
> > > > +        paddd   xmm13,xmm8
> > > >
> > > > +        por     xmm2,xmm5
> > > >
> > > > +        por     xmm10,xmm7
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((176-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm13
> > > >
> > > > +        movdqa  xmm6,xmm11
> > > >
> > > > +        pxor    xmm3,XMMWORD[((16-128))+rax]
> > > >
> > > > +        paddd   xmm12,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm13
> > > >
> > > > +        paddd   xmm12,xmm2
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm3
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +        paddd   xmm3,xmm3
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm14,2
> > > >
> > > > +        paddd   xmm12,xmm8
> > > >
> > > > +        por     xmm3,xmm5
> > > >
> > > > +        por     xmm14,xmm7
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((192-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm12
> > > >
> > > > +        movdqa  xmm6,xmm10
> > > >
> > > > +        pxor    xmm4,XMMWORD[((32-128))+rax]
> > > >
> > > > +        paddd   xmm11,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm12
> > > >
> > > > +        paddd   xmm11,xmm3
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm4
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm11,xmm6
> > > >
> > > > +        paddd   xmm4,xmm4
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm13,2
> > > >
> > > > +        paddd   xmm11,xmm8
> > > >
> > > > +        por     xmm4,xmm5
> > > >
> > > > +        por     xmm13,xmm7
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((208-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm11
> > > >
> > > > +        movdqa  xmm6,xmm14
> > > >
> > > > +        pxor    xmm0,XMMWORD[((48-128))+rax]
> > > >
> > > > +        paddd   xmm10,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +        paddd   xmm10,xmm4
> > > >
> > > > +        pxor    xmm0,xmm2
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm0
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +        paddd   xmm0,xmm0
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm12,2
> > > >
> > > > +        paddd   xmm10,xmm8
> > > >
> > > > +        por     xmm0,xmm5
> > > >
> > > > +        por     xmm12,xmm7
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        movdqa  xmm3,XMMWORD[((224-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        movdqa  xmm6,xmm13
> > > >
> > > > +        pxor    xmm1,XMMWORD[((64-128))+rax]
> > > >
> > > > +        paddd   xmm14,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm10
> > > >
> > > > +        paddd   xmm14,xmm0
> > > >
> > > > +        pxor    xmm1,xmm3
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm1
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +        paddd   xmm1,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm11,2
> > > >
> > > > +        paddd   xmm14,xmm8
> > > >
> > > > +        por     xmm1,xmm5
> > > >
> > > > +        por     xmm11,xmm7
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        movdqa  xmm4,XMMWORD[((240-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm14
> > > >
> > > > +        movdqa  xmm6,xmm12
> > > >
> > > > +        pxor    xmm2,XMMWORD[((80-128))+rax]
> > > >
> > > > +        paddd   xmm13,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm14
> > > >
> > > > +        paddd   xmm13,xmm1
> > > >
> > > > +        pxor    xmm2,xmm4
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm2
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm13,xmm6
> > > >
> > > > +        paddd   xmm2,xmm2
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm10,2
> > > >
> > > > +        paddd   xmm13,xmm8
> > > >
> > > > +        por     xmm2,xmm5
> > > >
> > > > +        por     xmm10,xmm7
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((0-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm13
> > > >
> > > > +        movdqa  xmm6,xmm11
> > > >
> > > > +        pxor    xmm3,XMMWORD[((96-128))+rax]
> > > >
> > > > +        paddd   xmm12,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm13
> > > >
> > > > +        paddd   xmm12,xmm2
> > > >
> > > > +        pxor    xmm3,xmm0
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm3
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +        paddd   xmm3,xmm3
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm14,2
> > > >
> > > > +        paddd   xmm12,xmm8
> > > >
> > > > +        por     xmm3,xmm5
> > > >
> > > > +        por     xmm14,xmm7
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((16-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm12
> > > >
> > > > +        movdqa  xmm6,xmm10
> > > >
> > > > +        pxor    xmm4,XMMWORD[((112-128))+rax]
> > > >
> > > > +        paddd   xmm11,xmm15
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm12
> > > >
> > > > +        paddd   xmm11,xmm3
> > > >
> > > > +        pxor    xmm4,xmm1
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        pxor    xmm6,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        movdqa  xmm5,xmm4
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        psrld   xmm5,31
> > > >
> > > > +        paddd   xmm11,xmm6
> > > >
> > > > +        paddd   xmm4,xmm4
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm13,2
> > > >
> > > > +        paddd   xmm11,xmm8
> > > >
> > > > +        por     xmm4,xmm5
> > > >
> > > > +        por     xmm13,xmm7
> > > >
> > > > +        movdqa  xmm8,xmm11
> > > >
> > > > +        paddd   xmm10,xmm15
> > > >
> > > > +        movdqa  xmm6,xmm14
> > > >
> > > > +        pslld   xmm8,5
> > > >
> > > > +        pxor    xmm6,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +        paddd   xmm10,xmm4
> > > >
> > > > +        psrld   xmm9,27
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +        pxor    xmm6,xmm13
> > > >
> > > > +
> > > >
> > > > +        pslld   xmm7,30
> > > >
> > > > +        por     xmm8,xmm9
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm12,2
> > > >
> > > > +        paddd   xmm10,xmm8
> > > >
> > > > +        por     xmm12,xmm7
> > > >
> > > > +        movdqa  xmm0,XMMWORD[rbx]
> > > >
> > > > +        mov     ecx,1
> > > >
> > > > +        cmp     ecx,DWORD[rbx]
> > > >
> > > > +        pxor    xmm8,xmm8
> > > >
> > > > +        cmovge  r8,rbp
> > > >
> > > > +        cmp     ecx,DWORD[4+rbx]
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +        cmovge  r9,rbp
> > > >
> > > > +        cmp     ecx,DWORD[8+rbx]
> > > >
> > > > +        pcmpgtd xmm1,xmm8
> > > >
> > > > +        cmovge  r10,rbp
> > > >
> > > > +        cmp     ecx,DWORD[12+rbx]
> > > >
> > > > +        paddd   xmm0,xmm1
> > > >
> > > > +        cmovge  r11,rbp
> > > >
> > > > +
> > > >
> > > > +        movdqu  xmm6,XMMWORD[rdi]
> > > >
> > > > +        pand    xmm10,xmm1
> > > >
> > > > +        movdqu  xmm7,XMMWORD[32+rdi]
> > > >
> > > > +        pand    xmm11,xmm1
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +        movdqu  xmm8,XMMWORD[64+rdi]
> > > >
> > > > +        pand    xmm12,xmm1
> > > >
> > > > +        paddd   xmm11,xmm7
> > > >
> > > > +        movdqu  xmm9,XMMWORD[96+rdi]
> > > >
> > > > +        pand    xmm13,xmm1
> > > >
> > > > +        paddd   xmm12,xmm8
> > > >
> > > > +        movdqu  xmm5,XMMWORD[128+rdi]
> > > >
> > > > +        pand    xmm14,xmm1
> > > >
> > > > +        movdqu  XMMWORD[rdi],xmm10
> > > >
> > > > +        paddd   xmm13,xmm9
> > > >
> > > > +        movdqu  XMMWORD[32+rdi],xmm11
> > > >
> > > > +        paddd   xmm14,xmm5
> > > >
> > > > +        movdqu  XMMWORD[64+rdi],xmm12
> > > >
> > > > +        movdqu  XMMWORD[96+rdi],xmm13
> > > >
> > > > +        movdqu  XMMWORD[128+rdi],xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[rbx],xmm0
> > > >
> > > > +        movdqa  xmm5,XMMWORD[96+rbp]
> > > >
> > > > +        movdqa  xmm15,XMMWORD[((-32))+rbp]
> > > >
> > > > +        dec     edx
> > > >
> > > > +        jnz     NEAR $L$oop
> > > >
> > > > +
> > > >
> > > > +        mov     edx,DWORD[280+rsp]
> > > >
> > > > +        lea     rdi,[16+rdi]
> > > >
> > > > +        lea     rsi,[64+rsi]
> > > >
> > > > +        dec     edx
> > > >
> > > > +        jnz     NEAR $L$oop_grande
> > > >
> > > > +
> > > >
> > > > +$L$done:
> > > >
> > > > +        mov     rax,QWORD[272+rsp]
> > > >
> > > > +
> > > >
> > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > >
> > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > >
> > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > >
> > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > >
> > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > >
> > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > >
> > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > >
> > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > >
> > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > >
> > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > >
> > > > +        mov     rbp,QWORD[((-16))+rax]
> > > >
> > > > +
> > > >
> > > > +        mov     rbx,QWORD[((-8))+rax]
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[rax]
> > > >
> > > > +
> > > >
> > > > +$L$epilogue:
> > > >
> > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > >
> > > > +        mov     rsi,QWORD[16+rsp]
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +$L$SEH_end_sha1_multi_block:
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +sha1_multi_block_shaext:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_sha1_multi_block_shaext:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +_shaext_shortcut:
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +
> > > >
> > > > +        push    rbx
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[((-168))+rsp]
> > > >
> > > > +        movaps  XMMWORD[rsp],xmm6
> > > >
> > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > >
> > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > >
> > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > >
> > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > >
> > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > >
> > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > >
> > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > >
> > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > >
> > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > >
> > > > +        sub     rsp,288
> > > >
> > > > +        shl     edx,1
> > > >
> > > > +        and     rsp,-256
> > > >
> > > > +        lea     rdi,[64+rdi]
> > > >
> > > > +        mov     QWORD[272+rsp],rax
> > > >
> > > > +$L$body_shaext:
> > > >
> > > > +        lea     rbx,[256+rsp]
> > > >
> > > > +        movdqa  xmm3,XMMWORD[((K_XX_XX+128))]
> > > >
> > > > +
> > > >
> > > > +$L$oop_grande_shaext:
> > > >
> > > > +        mov     DWORD[280+rsp],edx
> > > >
> > > > +        xor     edx,edx
> > > >
> > > > +        mov     r8,QWORD[rsi]
> > > >
> > > > +        mov     ecx,DWORD[8+rsi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        mov     DWORD[rbx],ecx
> > > >
> > > > +        cmovle  r8,rsp
> > > >
> > > > +        mov     r9,QWORD[16+rsi]
> > > >
> > > > +        mov     ecx,DWORD[24+rsi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        mov     DWORD[4+rbx],ecx
> > > >
> > > > +        cmovle  r9,rsp
> > > >
> > > > +        test    edx,edx
> > > >
> > > > +        jz      NEAR $L$done_shaext
> > > >
> > > > +
> > > >
> > > > +        movq    xmm0,QWORD[((0-64))+rdi]
> > > >
> > > > +        movq    xmm4,QWORD[((32-64))+rdi]
> > > >
> > > > +        movq    xmm5,QWORD[((64-64))+rdi]
> > > >
> > > > +        movq    xmm6,QWORD[((96-64))+rdi]
> > > >
> > > > +        movq    xmm7,QWORD[((128-64))+rdi]
> > > >
> > > > +
> > > >
> > > > +        punpckldq       xmm0,xmm4
> > > >
> > > > +        punpckldq       xmm5,xmm6
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm8,xmm0
> > > >
> > > > +        punpcklqdq      xmm0,xmm5
> > > >
> > > > +        punpckhqdq      xmm8,xmm5
> > > >
> > > > +
> > > >
> > > > +        pshufd  xmm1,xmm7,63
> > > >
> > > > +        pshufd  xmm9,xmm7,127
> > > >
> > > > +        pshufd  xmm0,xmm0,27
> > > >
> > > > +        pshufd  xmm8,xmm8,27
> > > >
> > > > +        jmp     NEAR $L$oop_shaext
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$oop_shaext:
> > > >
> > > > +        movdqu  xmm4,XMMWORD[r8]
> > > >
> > > > +        movdqu  xmm11,XMMWORD[r9]
> > > >
> > > > +        movdqu  xmm5,XMMWORD[16+r8]
> > > >
> > > > +        movdqu  xmm12,XMMWORD[16+r9]
> > > >
> > > > +        movdqu  xmm6,XMMWORD[32+r8]
> > > >
> > > > +DB      102,15,56,0,227
> > > >
> > > > +        movdqu  xmm13,XMMWORD[32+r9]
> > > >
> > > > +DB      102,68,15,56,0,219
> > > >
> > > > +        movdqu  xmm7,XMMWORD[48+r8]
> > > >
> > > > +        lea     r8,[64+r8]
> > > >
> > > > +DB      102,15,56,0,235
> > > >
> > > > +        movdqu  xmm14,XMMWORD[48+r9]
> > > >
> > > > +        lea     r9,[64+r9]
> > > >
> > > > +DB      102,68,15,56,0,227
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[80+rsp],xmm1
> > > >
> > > > +        paddd   xmm1,xmm4
> > > >
> > > > +        movdqa  XMMWORD[112+rsp],xmm9
> > > >
> > > > +        paddd   xmm9,xmm11
> > > >
> > > > +        movdqa  XMMWORD[64+rsp],xmm0
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +        movdqa  XMMWORD[96+rsp],xmm8
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      15,58,204,193,0
> > > >
> > > > +DB      15,56,200,213
> > > >
> > > > +DB      69,15,58,204,193,0
> > > >
> > > > +DB      69,15,56,200,212
> > > >
> > > > +DB      102,15,56,0,243
> > > >
> > > > +        prefetcht0      [127+r8]
> > > >
> > > > +DB      15,56,201,229
> > > >
> > > > +DB      102,68,15,56,0,235
> > > >
> > > > +        prefetcht0      [127+r9]
> > > >
> > > > +DB      69,15,56,201,220
> > > >
> > > > +
> > > >
> > > > +DB      102,15,56,0,251
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +DB      102,68,15,56,0,243
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      15,58,204,194,0
> > > >
> > > > +DB      15,56,200,206
> > > >
> > > > +DB      69,15,58,204,194,0
> > > >
> > > > +DB      69,15,56,200,205
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +DB      15,56,201,238
> > > >
> > > > +        pxor    xmm11,xmm13
> > > >
> > > > +DB      69,15,56,201,229
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      15,58,204,193,0
> > > >
> > > > +DB      15,56,200,215
> > > >
> > > > +DB      69,15,58,204,193,0
> > > >
> > > > +DB      69,15,56,200,214
> > > >
> > > > +DB      15,56,202,231
> > > >
> > > > +DB      69,15,56,202,222
> > > >
> > > > +        pxor    xmm5,xmm7
> > > >
> > > > +DB      15,56,201,247
> > > >
> > > > +        pxor    xmm12,xmm14
> > > >
> > > > +DB      69,15,56,201,238
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      15,58,204,194,0
> > > >
> > > > +DB      15,56,200,204
> > > >
> > > > +DB      69,15,58,204,194,0
> > > >
> > > > +DB      69,15,56,200,203
> > > >
> > > > +DB      15,56,202,236
> > > >
> > > > +DB      69,15,56,202,227
> > > >
> > > > +        pxor    xmm6,xmm4
> > > >
> > > > +DB      15,56,201,252
> > > >
> > > > +        pxor    xmm13,xmm11
> > > >
> > > > +DB      69,15,56,201,243
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      15,58,204,193,0
> > > >
> > > > +DB      15,56,200,213
> > > >
> > > > +DB      69,15,58,204,193,0
> > > >
> > > > +DB      69,15,56,200,212
> > > >
> > > > +DB      15,56,202,245
> > > >
> > > > +DB      69,15,56,202,236
> > > >
> > > > +        pxor    xmm7,xmm5
> > > >
> > > > +DB      15,56,201,229
> > > >
> > > > +        pxor    xmm14,xmm12
> > > >
> > > > +DB      69,15,56,201,220
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      15,58,204,194,1
> > > >
> > > > +DB      15,56,200,206
> > > >
> > > > +DB      69,15,58,204,194,1
> > > >
> > > > +DB      69,15,56,200,205
> > > >
> > > > +DB      15,56,202,254
> > > >
> > > > +DB      69,15,56,202,245
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +DB      15,56,201,238
> > > >
> > > > +        pxor    xmm11,xmm13
> > > >
> > > > +DB      69,15,56,201,229
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      15,58,204,193,1
> > > >
> > > > +DB      15,56,200,215
> > > >
> > > > +DB      69,15,58,204,193,1
> > > >
> > > > +DB      69,15,56,200,214
> > > >
> > > > +DB      15,56,202,231
> > > >
> > > > +DB      69,15,56,202,222
> > > >
> > > > +        pxor    xmm5,xmm7
> > > >
> > > > +DB      15,56,201,247
> > > >
> > > > +        pxor    xmm12,xmm14
> > > >
> > > > +DB      69,15,56,201,238
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      15,58,204,194,1
> > > >
> > > > +DB      15,56,200,204
> > > >
> > > > +DB      69,15,58,204,194,1
> > > >
> > > > +DB      69,15,56,200,203
> > > >
> > > > +DB      15,56,202,236
> > > >
> > > > +DB      69,15,56,202,227
> > > >
> > > > +        pxor    xmm6,xmm4
> > > >
> > > > +DB      15,56,201,252
> > > >
> > > > +        pxor    xmm13,xmm11
> > > >
> > > > +DB      69,15,56,201,243
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      15,58,204,193,1
> > > >
> > > > +DB      15,56,200,213
> > > >
> > > > +DB      69,15,58,204,193,1
> > > >
> > > > +DB      69,15,56,200,212
> > > >
> > > > +DB      15,56,202,245
> > > >
> > > > +DB      69,15,56,202,236
> > > >
> > > > +        pxor    xmm7,xmm5
> > > >
> > > > +DB      15,56,201,229
> > > >
> > > > +        pxor    xmm14,xmm12
> > > >
> > > > +DB      69,15,56,201,220
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      15,58,204,194,1
> > > >
> > > > +DB      15,56,200,206
> > > >
> > > > +DB      69,15,58,204,194,1
> > > >
> > > > +DB      69,15,56,200,205
> > > >
> > > > +DB      15,56,202,254
> > > >
> > > > +DB      69,15,56,202,245
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +DB      15,56,201,238
> > > >
> > > > +        pxor    xmm11,xmm13
> > > >
> > > > +DB      69,15,56,201,229
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      15,58,204,193,2
> > > >
> > > > +DB      15,56,200,215
> > > >
> > > > +DB      69,15,58,204,193,2
> > > >
> > > > +DB      69,15,56,200,214
> > > >
> > > > +DB      15,56,202,231
> > > >
> > > > +DB      69,15,56,202,222
> > > >
> > > > +        pxor    xmm5,xmm7
> > > >
> > > > +DB      15,56,201,247
> > > >
> > > > +        pxor    xmm12,xmm14
> > > >
> > > > +DB      69,15,56,201,238
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      15,58,204,194,2
> > > >
> > > > +DB      15,56,200,204
> > > >
> > > > +DB      69,15,58,204,194,2
> > > >
> > > > +DB      69,15,56,200,203
> > > >
> > > > +DB      15,56,202,236
> > > >
> > > > +DB      69,15,56,202,227
> > > >
> > > > +        pxor    xmm6,xmm4
> > > >
> > > > +DB      15,56,201,252
> > > >
> > > > +        pxor    xmm13,xmm11
> > > >
> > > > +DB      69,15,56,201,243
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      15,58,204,193,2
> > > >
> > > > +DB      15,56,200,213
> > > >
> > > > +DB      69,15,58,204,193,2
> > > >
> > > > +DB      69,15,56,200,212
> > > >
> > > > +DB      15,56,202,245
> > > >
> > > > +DB      69,15,56,202,236
> > > >
> > > > +        pxor    xmm7,xmm5
> > > >
> > > > +DB      15,56,201,229
> > > >
> > > > +        pxor    xmm14,xmm12
> > > >
> > > > +DB      69,15,56,201,220
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      15,58,204,194,2
> > > >
> > > > +DB      15,56,200,206
> > > >
> > > > +DB      69,15,58,204,194,2
> > > >
> > > > +DB      69,15,56,200,205
> > > >
> > > > +DB      15,56,202,254
> > > >
> > > > +DB      69,15,56,202,245
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +DB      15,56,201,238
> > > >
> > > > +        pxor    xmm11,xmm13
> > > >
> > > > +DB      69,15,56,201,229
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      15,58,204,193,2
> > > >
> > > > +DB      15,56,200,215
> > > >
> > > > +DB      69,15,58,204,193,2
> > > >
> > > > +DB      69,15,56,200,214
> > > >
> > > > +DB      15,56,202,231
> > > >
> > > > +DB      69,15,56,202,222
> > > >
> > > > +        pxor    xmm5,xmm7
> > > >
> > > > +DB      15,56,201,247
> > > >
> > > > +        pxor    xmm12,xmm14
> > > >
> > > > +DB      69,15,56,201,238
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      15,58,204,194,3
> > > >
> > > > +DB      15,56,200,204
> > > >
> > > > +DB      69,15,58,204,194,3
> > > >
> > > > +DB      69,15,56,200,203
> > > >
> > > > +DB      15,56,202,236
> > > >
> > > > +DB      69,15,56,202,227
> > > >
> > > > +        pxor    xmm6,xmm4
> > > >
> > > > +DB      15,56,201,252
> > > >
> > > > +        pxor    xmm13,xmm11
> > > >
> > > > +DB      69,15,56,201,243
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      15,58,204,193,3
> > > >
> > > > +DB      15,56,200,213
> > > >
> > > > +DB      69,15,58,204,193,3
> > > >
> > > > +DB      69,15,56,200,212
> > > >
> > > > +DB      15,56,202,245
> > > >
> > > > +DB      69,15,56,202,236
> > > >
> > > > +        pxor    xmm7,xmm5
> > > >
> > > > +        pxor    xmm14,xmm12
> > > >
> > > > +
> > > >
> > > > +        mov     ecx,1
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        cmp     ecx,DWORD[rbx]
> > > >
> > > > +        cmovge  r8,rsp
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      15,58,204,194,3
> > > >
> > > > +DB      15,56,200,206
> > > >
> > > > +DB      69,15,58,204,194,3
> > > >
> > > > +DB      69,15,56,200,205
> > > >
> > > > +DB      15,56,202,254
> > > >
> > > > +DB      69,15,56,202,245
> > > >
> > > > +
> > > >
> > > > +        cmp     ecx,DWORD[4+rbx]
> > > >
> > > > +        cmovge  r9,rsp
> > > >
> > > > +        movq    xmm6,QWORD[rbx]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +DB      15,58,204,193,3
> > > >
> > > > +DB      15,56,200,215
> > > >
> > > > +DB      69,15,58,204,193,3
> > > >
> > > > +DB      69,15,56,200,214
> > > >
> > > > +
> > > >
> > > > +        pshufd  xmm11,xmm6,0x00
> > > >
> > > > +        pshufd  xmm12,xmm6,0x55
> > > >
> > > > +        movdqa  xmm7,xmm6
> > > >
> > > > +        pcmpgtd xmm11,xmm4
> > > >
> > > > +        pcmpgtd xmm12,xmm4
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +DB      15,58,204,194,3
> > > >
> > > > +DB      15,56,200,204
> > > >
> > > > +DB      69,15,58,204,194,3
> > > >
> > > > +DB      68,15,56,200,204
> > > >
> > > > +
> > > >
> > > > +        pcmpgtd xmm7,xmm4
> > > >
> > > > +        pand    xmm0,xmm11
> > > >
> > > > +        pand    xmm1,xmm11
> > > >
> > > > +        pand    xmm8,xmm12
> > > >
> > > > +        pand    xmm9,xmm12
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm0,XMMWORD[64+rsp]
> > > >
> > > > +        paddd   xmm1,XMMWORD[80+rsp]
> > > >
> > > > +        paddd   xmm8,XMMWORD[96+rsp]
> > > >
> > > > +        paddd   xmm9,XMMWORD[112+rsp]
> > > >
> > > > +
> > > >
> > > > +        movq    QWORD[rbx],xmm6
> > > >
> > > > +        dec     edx
> > > >
> > > > +        jnz     NEAR $L$oop_shaext
> > > >
> > > > +
> > > >
> > > > +        mov     edx,DWORD[280+rsp]
> > > >
> > > > +
> > > >
> > > > +        pshufd  xmm0,xmm0,27
> > > >
> > > > +        pshufd  xmm8,xmm8,27
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,xmm0
> > > >
> > > > +        punpckldq       xmm0,xmm8
> > > >
> > > > +        punpckhdq       xmm6,xmm8
> > > >
> > > > +        punpckhdq       xmm1,xmm9
> > > >
> > > > +        movq    QWORD[(0-64)+rdi],xmm0
> > > >
> > > > +        psrldq  xmm0,8
> > > >
> > > > +        movq    QWORD[(64-64)+rdi],xmm6
> > > >
> > > > +        psrldq  xmm6,8
> > > >
> > > > +        movq    QWORD[(32-64)+rdi],xmm0
> > > >
> > > > +        psrldq  xmm1,8
> > > >
> > > > +        movq    QWORD[(96-64)+rdi],xmm6
> > > >
> > > > +        movq    QWORD[(128-64)+rdi],xmm1
> > > >
> > > > +
> > > >
> > > > +        lea     rdi,[8+rdi]
> > > >
> > > > +        lea     rsi,[32+rsi]
> > > >
> > > > +        dec     edx
> > > >
> > > > +        jnz     NEAR $L$oop_grande_shaext
> > > >
> > > > +
> > > >
> > > > +$L$done_shaext:
> > > >
> > > > +
> > > >
> > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > >
> > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > >
> > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > >
> > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > >
> > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > >
> > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > >
> > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > >
> > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > >
> > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > >
> > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > >
> > > > +        mov     rbp,QWORD[((-16))+rax]
> > > >
> > > > +
> > > >
> > > > +        mov     rbx,QWORD[((-8))+rax]
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[rax]
> > > >
> > > > +
> > > >
> > > > +$L$epilogue_shaext:
> > > >
> > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > >
> > > > +        mov     rsi,QWORD[16+rsp]
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +$L$SEH_end_sha1_multi_block_shaext:
> > > >
> > > > +
> > > >
> > > > +ALIGN   256
> > > >
> > > > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > > >
> > > > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > > >
> > > > +K_XX_XX:
> > > >
> > > > +        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,109,117,108,116,105,45,98,108,111,99,107
> > > >
> > > > +DB      32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120
> > > >
> > > > +DB      56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77
> > > >
> > > > +DB      83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110
> > > >
> > > > +DB      115,115,108,46,111,114,103,62,0
> > > >
> > > > +EXTERN  __imp_RtlVirtualUnwind
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +se_handler:
> > > >
> > > > +        push    rsi
> > > >
> > > > +        push    rdi
> > > >
> > > > +        push    rbx
> > > >
> > > > +        push    rbp
> > > >
> > > > +        push    r12
> > > >
> > > > +        push    r13
> > > >
> > > > +        push    r14
> > > >
> > > > +        push    r15
> > > >
> > > > +        pushfq
> > > >
> > > > +        sub     rsp,64
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[120+r8]
> > > >
> > > > +        mov     rbx,QWORD[248+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,QWORD[8+r9]
> > > >
> > > > +        mov     r11,QWORD[56+r9]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$in_prologue
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[152+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[4+r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jae     NEAR $L$in_prologue
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[272+rax]
> > > >
> > > > +
> > > >
> > > > +        mov     rbx,QWORD[((-8))+rax]
> > > >
> > > > +        mov     rbp,QWORD[((-16))+rax]
> > > >
> > > > +        mov     QWORD[144+r8],rbx
> > > >
> > > > +        mov     QWORD[160+r8],rbp
> > > >
> > > > +
> > > >
> > > > +        lea     rsi,[((-24-160))+rax]
> > > >
> > > > +        lea     rdi,[512+r8]
> > > >
> > > > +        mov     ecx,20
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +$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[40+r9]
> > > >
> > > > +        mov     rsi,r8
> > > >
> > > > +        mov     ecx,154
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,r9
> > > >
> > > > +        xor     rcx,rcx
> > > >
> > > > +        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
> > > >
> > > > +        popfq
> > > >
> > > > +        pop     r15
> > > >
> > > > +        pop     r14
> > > >
> > > > +        pop     r13
> > > >
> > > > +        pop     r12
> > > >
> > > > +        pop     rbp
> > > >
> > > > +        pop     rbx
> > > >
> > > > +        pop     rdi
> > > >
> > > > +        pop     rsi
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +section .pdata rdata align=4
> > > >
> > > > +ALIGN   4
> > > >
> > > > +        DD      $L$SEH_begin_sha1_multi_block wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_end_sha1_multi_block wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_info_sha1_multi_block wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_begin_sha1_multi_block_shaext wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_end_sha1_multi_block_shaext wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_info_sha1_multi_block_shaext wrt ..imagebase
> > > >
> > > > +section .xdata rdata align=8
> > > >
> > > > +ALIGN   8
> > > >
> > > > +$L$SEH_info_sha1_multi_block:
> > > >
> > > > +DB      9,0,0,0
> > > >
> > > > +        DD      se_handler wrt ..imagebase
> > > >
> > > > +        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
> > > >
> > > > +$L$SEH_info_sha1_multi_block_shaext:
> > > >
> > > > +DB      9,0,0,0
> > > >
> > > > +        DD      se_handler wrt ..imagebase
> > > >
> > > > +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
> > > > wrt ..imagebase
> > > >
> > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-
> x86_64.nasm
> > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> > > > new file mode 100644
> > > > index 0000000000..c6d68d348f
> > > > --- /dev/null
> > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> > > > @@ -0,0 +1,2884 @@
> > > > +; WARNING: do not edit!
> > > >
> > > > +; Generated from openssl/crypto/sha/asm/sha1-x86_64.pl
> > > >
> > > > +;
> > > >
> > > > +; Copyright 2006-2020 The OpenSSL Project Authors. All Rights
> Reserved.
> > > >
> > > > +;
> > > >
> > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > >
> > > > +; this file except in compliance with the License.  You can obtain a
> copy
> > > >
> > > > +; in the file LICENSE in the source distribution or at
> > > >
> > > > +; https://www.openssl.org/source/license.html
> > > >
> > > > +
> > > >
> > > > +default rel
> > > >
> > > > +%define XMMWORD
> > > >
> > > > +%define YMMWORD
> > > >
> > > > +%define ZMMWORD
> > > >
> > > > +section .text code align=64
> > > >
> > > > +
> > > >
> > > > +EXTERN  OPENSSL_ia32cap_P
> > > >
> > > > +
> > > >
> > > > +global  sha1_block_data_order
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +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:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        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      NEAR $L$ialu
> > > >
> > > > +        test    r10d,536870912
> > > >
> > > > +        jnz     NEAR _shaext_shortcut
> > > >
> > > > +        jmp     NEAR _ssse3_shortcut
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ialu:
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +
> > > >
> > > > +        push    rbx
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        push    r12
> > > >
> > > > +
> > > >
> > > > +        push    r13
> > > >
> > > > +
> > > >
> > > > +        push    r14
> > > >
> > > > +
> > > >
> > > > +        mov     r8,rdi
> > > >
> > > > +        sub     rsp,72
> > > >
> > > > +        mov     r9,rsi
> > > >
> > > > +        and     rsp,-64
> > > >
> > > > +        mov     r10,rdx
> > > >
> > > > +        mov     QWORD[64+rsp],rax
> > > >
> > > > +
> > > >
> > > > +$L$prologue:
> > > >
> > > > +
> > > >
> > > > +        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[r9]
> > > >
> > > > +        bswap   edx
> > > >
> > > > +        mov     ebp,DWORD[4+r9]
> > > >
> > > > +        mov     eax,r12d
> > > >
> > > > +        mov     DWORD[rsp],edx
> > > >
> > > > +        mov     ecx,esi
> > > >
> > > > +        bswap   ebp
> > > >
> > > > +        xor     eax,r11d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        and     eax,edi
> > > >
> > > > +        lea     r13d,[1518500249+r13*1+rdx]
> > > >
> > > > +        add     r13d,ecx
> > > >
> > > > +        xor     eax,r12d
> > > >
> > > > +        rol     edi,30
> > > >
> > > > +        add     r13d,eax
> > > >
> > > > +        mov     r14d,DWORD[8+r9]
> > > >
> > > > +        mov     eax,r11d
> > > >
> > > > +        mov     DWORD[4+rsp],ebp
> > > >
> > > > +        mov     ecx,r13d
> > > >
> > > > +        bswap   r14d
> > > >
> > > > +        xor     eax,edi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        and     eax,esi
> > > >
> > > > +        lea     r12d,[1518500249+r12*1+rbp]
> > > >
> > > > +        add     r12d,ecx
> > > >
> > > > +        xor     eax,r11d
> > > >
> > > > +        rol     esi,30
> > > >
> > > > +        add     r12d,eax
> > > >
> > > > +        mov     edx,DWORD[12+r9]
> > > >
> > > > +        mov     eax,edi
> > > >
> > > > +        mov     DWORD[8+rsp],r14d
> > > >
> > > > +        mov     ecx,r12d
> > > >
> > > > +        bswap   edx
> > > >
> > > > +        xor     eax,esi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        and     eax,r13d
> > > >
> > > > +        lea     r11d,[1518500249+r11*1+r14]
> > > >
> > > > +        add     r11d,ecx
> > > >
> > > > +        xor     eax,edi
> > > >
> > > > +        rol     r13d,30
> > > >
> > > > +        add     r11d,eax
> > > >
> > > > +        mov     ebp,DWORD[16+r9]
> > > >
> > > > +        mov     eax,esi
> > > >
> > > > +        mov     DWORD[12+rsp],edx
> > > >
> > > > +        mov     ecx,r11d
> > > >
> > > > +        bswap   ebp
> > > >
> > > > +        xor     eax,r13d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        and     eax,r12d
> > > >
> > > > +        lea     edi,[1518500249+rdi*1+rdx]
> > > >
> > > > +        add     edi,ecx
> > > >
> > > > +        xor     eax,esi
> > > >
> > > > +        rol     r12d,30
> > > >
> > > > +        add     edi,eax
> > > >
> > > > +        mov     r14d,DWORD[20+r9]
> > > >
> > > > +        mov     eax,r13d
> > > >
> > > > +        mov     DWORD[16+rsp],ebp
> > > >
> > > > +        mov     ecx,edi
> > > >
> > > > +        bswap   r14d
> > > >
> > > > +        xor     eax,r12d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        and     eax,r11d
> > > >
> > > > +        lea     esi,[1518500249+rsi*1+rbp]
> > > >
> > > > +        add     esi,ecx
> > > >
> > > > +        xor     eax,r13d
> > > >
> > > > +        rol     r11d,30
> > > >
> > > > +        add     esi,eax
> > > >
> > > > +        mov     edx,DWORD[24+r9]
> > > >
> > > > +        mov     eax,r12d
> > > >
> > > > +        mov     DWORD[20+rsp],r14d
> > > >
> > > > +        mov     ecx,esi
> > > >
> > > > +        bswap   edx
> > > >
> > > > +        xor     eax,r11d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        and     eax,edi
> > > >
> > > > +        lea     r13d,[1518500249+r13*1+r14]
> > > >
> > > > +        add     r13d,ecx
> > > >
> > > > +        xor     eax,r12d
> > > >
> > > > +        rol     edi,30
> > > >
> > > > +        add     r13d,eax
> > > >
> > > > +        mov     ebp,DWORD[28+r9]
> > > >
> > > > +        mov     eax,r11d
> > > >
> > > > +        mov     DWORD[24+rsp],edx
> > > >
> > > > +        mov     ecx,r13d
> > > >
> > > > +        bswap   ebp
> > > >
> > > > +        xor     eax,edi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        and     eax,esi
> > > >
> > > > +        lea     r12d,[1518500249+r12*1+rdx]
> > > >
> > > > +        add     r12d,ecx
> > > >
> > > > +        xor     eax,r11d
> > > >
> > > > +        rol     esi,30
> > > >
> > > > +        add     r12d,eax
> > > >
> > > > +        mov     r14d,DWORD[32+r9]
> > > >
> > > > +        mov     eax,edi
> > > >
> > > > +        mov     DWORD[28+rsp],ebp
> > > >
> > > > +        mov     ecx,r12d
> > > >
> > > > +        bswap   r14d
> > > >
> > > > +        xor     eax,esi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        and     eax,r13d
> > > >
> > > > +        lea     r11d,[1518500249+r11*1+rbp]
> > > >
> > > > +        add     r11d,ecx
> > > >
> > > > +        xor     eax,edi
> > > >
> > > > +        rol     r13d,30
> > > >
> > > > +        add     r11d,eax
> > > >
> > > > +        mov     edx,DWORD[36+r9]
> > > >
> > > > +        mov     eax,esi
> > > >
> > > > +        mov     DWORD[32+rsp],r14d
> > > >
> > > > +        mov     ecx,r11d
> > > >
> > > > +        bswap   edx
> > > >
> > > > +        xor     eax,r13d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        and     eax,r12d
> > > >
> > > > +        lea     edi,[1518500249+rdi*1+r14]
> > > >
> > > > +        add     edi,ecx
> > > >
> > > > +        xor     eax,esi
> > > >
> > > > +        rol     r12d,30
> > > >
> > > > +        add     edi,eax
> > > >
> > > > +        mov     ebp,DWORD[40+r9]
> > > >
> > > > +        mov     eax,r13d
> > > >
> > > > +        mov     DWORD[36+rsp],edx
> > > >
> > > > +        mov     ecx,edi
> > > >
> > > > +        bswap   ebp
> > > >
> > > > +        xor     eax,r12d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        and     eax,r11d
> > > >
> > > > +        lea     esi,[1518500249+rsi*1+rdx]
> > > >
> > > > +        add     esi,ecx
> > > >
> > > > +        xor     eax,r13d
> > > >
> > > > +        rol     r11d,30
> > > >
> > > > +        add     esi,eax
> > > >
> > > > +        mov     r14d,DWORD[44+r9]
> > > >
> > > > +        mov     eax,r12d
> > > >
> > > > +        mov     DWORD[40+rsp],ebp
> > > >
> > > > +        mov     ecx,esi
> > > >
> > > > +        bswap   r14d
> > > >
> > > > +        xor     eax,r11d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        and     eax,edi
> > > >
> > > > +        lea     r13d,[1518500249+r13*1+rbp]
> > > >
> > > > +        add     r13d,ecx
> > > >
> > > > +        xor     eax,r12d
> > > >
> > > > +        rol     edi,30
> > > >
> > > > +        add     r13d,eax
> > > >
> > > > +        mov     edx,DWORD[48+r9]
> > > >
> > > > +        mov     eax,r11d
> > > >
> > > > +        mov     DWORD[44+rsp],r14d
> > > >
> > > > +        mov     ecx,r13d
> > > >
> > > > +        bswap   edx
> > > >
> > > > +        xor     eax,edi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        and     eax,esi
> > > >
> > > > +        lea     r12d,[1518500249+r12*1+r14]
> > > >
> > > > +        add     r12d,ecx
> > > >
> > > > +        xor     eax,r11d
> > > >
> > > > +        rol     esi,30
> > > >
> > > > +        add     r12d,eax
> > > >
> > > > +        mov     ebp,DWORD[52+r9]
> > > >
> > > > +        mov     eax,edi
> > > >
> > > > +        mov     DWORD[48+rsp],edx
> > > >
> > > > +        mov     ecx,r12d
> > > >
> > > > +        bswap   ebp
> > > >
> > > > +        xor     eax,esi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        and     eax,r13d
> > > >
> > > > +        lea     r11d,[1518500249+r11*1+rdx]
> > > >
> > > > +        add     r11d,ecx
> > > >
> > > > +        xor     eax,edi
> > > >
> > > > +        rol     r13d,30
> > > >
> > > > +        add     r11d,eax
> > > >
> > > > +        mov     r14d,DWORD[56+r9]
> > > >
> > > > +        mov     eax,esi
> > > >
> > > > +        mov     DWORD[52+rsp],ebp
> > > >
> > > > +        mov     ecx,r11d
> > > >
> > > > +        bswap   r14d
> > > >
> > > > +        xor     eax,r13d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        and     eax,r12d
> > > >
> > > > +        lea     edi,[1518500249+rdi*1+rbp]
> > > >
> > > > +        add     edi,ecx
> > > >
> > > > +        xor     eax,esi
> > > >
> > > > +        rol     r12d,30
> > > >
> > > > +        add     edi,eax
> > > >
> > > > +        mov     edx,DWORD[60+r9]
> > > >
> > > > +        mov     eax,r13d
> > > >
> > > > +        mov     DWORD[56+rsp],r14d
> > > >
> > > > +        mov     ecx,edi
> > > >
> > > > +        bswap   edx
> > > >
> > > > +        xor     eax,r12d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        and     eax,r11d
> > > >
> > > > +        lea     esi,[1518500249+rsi*1+r14]
> > > >
> > > > +        add     esi,ecx
> > > >
> > > > +        xor     eax,r13d
> > > >
> > > > +        rol     r11d,30
> > > >
> > > > +        add     esi,eax
> > > >
> > > > +        xor     ebp,DWORD[rsp]
> > > >
> > > > +        mov     eax,r12d
> > > >
> > > > +        mov     DWORD[60+rsp],edx
> > > >
> > > > +        mov     ecx,esi
> > > >
> > > > +        xor     ebp,DWORD[8+rsp]
> > > >
> > > > +        xor     eax,r11d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        xor     ebp,DWORD[32+rsp]
> > > >
> > > > +        and     eax,edi
> > > >
> > > > +        lea     r13d,[1518500249+r13*1+rdx]
> > > >
> > > > +        rol     edi,30
> > > >
> > > > +        xor     eax,r12d
> > > >
> > > > +        add     r13d,ecx
> > > >
> > > > +        rol     ebp,1
> > > >
> > > > +        add     r13d,eax
> > > >
> > > > +        xor     r14d,DWORD[4+rsp]
> > > >
> > > > +        mov     eax,r11d
> > > >
> > > > +        mov     DWORD[rsp],ebp
> > > >
> > > > +        mov     ecx,r13d
> > > >
> > > > +        xor     r14d,DWORD[12+rsp]
> > > >
> > > > +        xor     eax,edi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        xor     r14d,DWORD[36+rsp]
> > > >
> > > > +        and     eax,esi
> > > >
> > > > +        lea     r12d,[1518500249+r12*1+rbp]
> > > >
> > > > +        rol     esi,30
> > > >
> > > > +        xor     eax,r11d
> > > >
> > > > +        add     r12d,ecx
> > > >
> > > > +        rol     r14d,1
> > > >
> > > > +        add     r12d,eax
> > > >
> > > > +        xor     edx,DWORD[8+rsp]
> > > >
> > > > +        mov     eax,edi
> > > >
> > > > +        mov     DWORD[4+rsp],r14d
> > > >
> > > > +        mov     ecx,r12d
> > > >
> > > > +        xor     edx,DWORD[16+rsp]
> > > >
> > > > +        xor     eax,esi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        xor     edx,DWORD[40+rsp]
> > > >
> > > > +        and     eax,r13d
> > > >
> > > > +        lea     r11d,[1518500249+r11*1+r14]
> > > >
> > > > +        rol     r13d,30
> > > >
> > > > +        xor     eax,edi
> > > >
> > > > +        add     r11d,ecx
> > > >
> > > > +        rol     edx,1
> > > >
> > > > +        add     r11d,eax
> > > >
> > > > +        xor     ebp,DWORD[12+rsp]
> > > >
> > > > +        mov     eax,esi
> > > >
> > > > +        mov     DWORD[8+rsp],edx
> > > >
> > > > +        mov     ecx,r11d
> > > >
> > > > +        xor     ebp,DWORD[20+rsp]
> > > >
> > > > +        xor     eax,r13d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        xor     ebp,DWORD[44+rsp]
> > > >
> > > > +        and     eax,r12d
> > > >
> > > > +        lea     edi,[1518500249+rdi*1+rdx]
> > > >
> > > > +        rol     r12d,30
> > > >
> > > > +        xor     eax,esi
> > > >
> > > > +        add     edi,ecx
> > > >
> > > > +        rol     ebp,1
> > > >
> > > > +        add     edi,eax
> > > >
> > > > +        xor     r14d,DWORD[16+rsp]
> > > >
> > > > +        mov     eax,r13d
> > > >
> > > > +        mov     DWORD[12+rsp],ebp
> > > >
> > > > +        mov     ecx,edi
> > > >
> > > > +        xor     r14d,DWORD[24+rsp]
> > > >
> > > > +        xor     eax,r12d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        xor     r14d,DWORD[48+rsp]
> > > >
> > > > +        and     eax,r11d
> > > >
> > > > +        lea     esi,[1518500249+rsi*1+rbp]
> > > >
> > > > +        rol     r11d,30
> > > >
> > > > +        xor     eax,r13d
> > > >
> > > > +        add     esi,ecx
> > > >
> > > > +        rol     r14d,1
> > > >
> > > > +        add     esi,eax
> > > >
> > > > +        xor     edx,DWORD[20+rsp]
> > > >
> > > > +        mov     eax,edi
> > > >
> > > > +        mov     DWORD[16+rsp],r14d
> > > >
> > > > +        mov     ecx,esi
> > > >
> > > > +        xor     edx,DWORD[28+rsp]
> > > >
> > > > +        xor     eax,r12d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[24+rsp]
> > > >
> > > > +        mov     eax,esi
> > > >
> > > > +        mov     DWORD[20+rsp],edx
> > > >
> > > > +        mov     ecx,r13d
> > > >
> > > > +        xor     ebp,DWORD[32+rsp]
> > > >
> > > > +        xor     eax,r11d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[28+rsp]
> > > >
> > > > +        mov     eax,r13d
> > > >
> > > > +        mov     DWORD[24+rsp],ebp
> > > >
> > > > +        mov     ecx,r12d
> > > >
> > > > +        xor     r14d,DWORD[36+rsp]
> > > >
> > > > +        xor     eax,edi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[32+rsp]
> > > >
> > > > +        mov     eax,r12d
> > > >
> > > > +        mov     DWORD[28+rsp],r14d
> > > >
> > > > +        mov     ecx,r11d
> > > >
> > > > +        xor     edx,DWORD[40+rsp]
> > > >
> > > > +        xor     eax,esi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[36+rsp]
> > > >
> > > > +        mov     eax,r11d
> > > >
> > > > +        mov     DWORD[32+rsp],edx
> > > >
> > > > +        mov     ecx,edi
> > > >
> > > > +        xor     ebp,DWORD[44+rsp]
> > > >
> > > > +        xor     eax,r13d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[40+rsp]
> > > >
> > > > +        mov     eax,edi
> > > >
> > > > +        mov     DWORD[36+rsp],ebp
> > > >
> > > > +        mov     ecx,esi
> > > >
> > > > +        xor     r14d,DWORD[48+rsp]
> > > >
> > > > +        xor     eax,r12d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[44+rsp]
> > > >
> > > > +        mov     eax,esi
> > > >
> > > > +        mov     DWORD[40+rsp],r14d
> > > >
> > > > +        mov     ecx,r13d
> > > >
> > > > +        xor     edx,DWORD[52+rsp]
> > > >
> > > > +        xor     eax,r11d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[48+rsp]
> > > >
> > > > +        mov     eax,r13d
> > > >
> > > > +        mov     DWORD[44+rsp],edx
> > > >
> > > > +        mov     ecx,r12d
> > > >
> > > > +        xor     ebp,DWORD[56+rsp]
> > > >
> > > > +        xor     eax,edi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[52+rsp]
> > > >
> > > > +        mov     eax,r12d
> > > >
> > > > +        mov     DWORD[48+rsp],ebp
> > > >
> > > > +        mov     ecx,r11d
> > > >
> > > > +        xor     r14d,DWORD[60+rsp]
> > > >
> > > > +        xor     eax,esi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[56+rsp]
> > > >
> > > > +        mov     eax,r11d
> > > >
> > > > +        mov     DWORD[52+rsp],r14d
> > > >
> > > > +        mov     ecx,edi
> > > >
> > > > +        xor     edx,DWORD[rsp]
> > > >
> > > > +        xor     eax,r13d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[60+rsp]
> > > >
> > > > +        mov     eax,edi
> > > >
> > > > +        mov     DWORD[56+rsp],edx
> > > >
> > > > +        mov     ecx,esi
> > > >
> > > > +        xor     ebp,DWORD[4+rsp]
> > > >
> > > > +        xor     eax,r12d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[rsp]
> > > >
> > > > +        mov     eax,esi
> > > >
> > > > +        mov     DWORD[60+rsp],ebp
> > > >
> > > > +        mov     ecx,r13d
> > > >
> > > > +        xor     r14d,DWORD[8+rsp]
> > > >
> > > > +        xor     eax,r11d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[4+rsp]
> > > >
> > > > +        mov     eax,r13d
> > > >
> > > > +        mov     DWORD[rsp],r14d
> > > >
> > > > +        mov     ecx,r12d
> > > >
> > > > +        xor     edx,DWORD[12+rsp]
> > > >
> > > > +        xor     eax,edi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[8+rsp]
> > > >
> > > > +        mov     eax,r12d
> > > >
> > > > +        mov     DWORD[4+rsp],edx
> > > >
> > > > +        mov     ecx,r11d
> > > >
> > > > +        xor     ebp,DWORD[16+rsp]
> > > >
> > > > +        xor     eax,esi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[12+rsp]
> > > >
> > > > +        mov     eax,r11d
> > > >
> > > > +        mov     DWORD[8+rsp],ebp
> > > >
> > > > +        mov     ecx,edi
> > > >
> > > > +        xor     r14d,DWORD[20+rsp]
> > > >
> > > > +        xor     eax,r13d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[16+rsp]
> > > >
> > > > +        mov     eax,edi
> > > >
> > > > +        mov     DWORD[12+rsp],r14d
> > > >
> > > > +        mov     ecx,esi
> > > >
> > > > +        xor     edx,DWORD[24+rsp]
> > > >
> > > > +        xor     eax,r12d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[20+rsp]
> > > >
> > > > +        mov     eax,esi
> > > >
> > > > +        mov     DWORD[16+rsp],edx
> > > >
> > > > +        mov     ecx,r13d
> > > >
> > > > +        xor     ebp,DWORD[28+rsp]
> > > >
> > > > +        xor     eax,r11d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[24+rsp]
> > > >
> > > > +        mov     eax,r13d
> > > >
> > > > +        mov     DWORD[20+rsp],ebp
> > > >
> > > > +        mov     ecx,r12d
> > > >
> > > > +        xor     r14d,DWORD[32+rsp]
> > > >
> > > > +        xor     eax,edi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[28+rsp]
> > > >
> > > > +        mov     eax,r12d
> > > >
> > > > +        mov     DWORD[24+rsp],r14d
> > > >
> > > > +        mov     ecx,r11d
> > > >
> > > > +        xor     edx,DWORD[36+rsp]
> > > >
> > > > +        xor     eax,esi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[32+rsp]
> > > >
> > > > +        mov     eax,r11d
> > > >
> > > > +        mov     DWORD[28+rsp],edx
> > > >
> > > > +        mov     ecx,edi
> > > >
> > > > +        xor     ebp,DWORD[40+rsp]
> > > >
> > > > +        xor     eax,r13d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[36+rsp]
> > > >
> > > > +        mov     eax,r12d
> > > >
> > > > +        mov     DWORD[32+rsp],ebp
> > > >
> > > > +        mov     ebx,r12d
> > > >
> > > > +        xor     r14d,DWORD[44+rsp]
> > > >
> > > > +        and     eax,r11d
> > > >
> > > > +        mov     ecx,esi
> > > >
> > > > +        xor     r14d,DWORD[4+rsp]
> > > >
> > > > +        lea     r13d,[((-1894007588))+r13*1+rbp]
> > > >
> > > > +        xor     ebx,r11d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     r13d,eax
> > > >
> > > > +        rol     r14d,1
> > > >
> > > > +        and     ebx,edi
> > > >
> > > > +        add     r13d,ecx
> > > >
> > > > +        rol     edi,30
> > > >
> > > > +        add     r13d,ebx
> > > >
> > > > +        xor     edx,DWORD[40+rsp]
> > > >
> > > > +        mov     eax,r11d
> > > >
> > > > +        mov     DWORD[36+rsp],r14d
> > > >
> > > > +        mov     ebx,r11d
> > > >
> > > > +        xor     edx,DWORD[48+rsp]
> > > >
> > > > +        and     eax,edi
> > > >
> > > > +        mov     ecx,r13d
> > > >
> > > > +        xor     edx,DWORD[8+rsp]
> > > >
> > > > +        lea     r12d,[((-1894007588))+r12*1+r14]
> > > >
> > > > +        xor     ebx,edi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     r12d,eax
> > > >
> > > > +        rol     edx,1
> > > >
> > > > +        and     ebx,esi
> > > >
> > > > +        add     r12d,ecx
> > > >
> > > > +        rol     esi,30
> > > >
> > > > +        add     r12d,ebx
> > > >
> > > > +        xor     ebp,DWORD[44+rsp]
> > > >
> > > > +        mov     eax,edi
> > > >
> > > > +        mov     DWORD[40+rsp],edx
> > > >
> > > > +        mov     ebx,edi
> > > >
> > > > +        xor     ebp,DWORD[52+rsp]
> > > >
> > > > +        and     eax,esi
> > > >
> > > > +        mov     ecx,r12d
> > > >
> > > > +        xor     ebp,DWORD[12+rsp]
> > > >
> > > > +        lea     r11d,[((-1894007588))+r11*1+rdx]
> > > >
> > > > +        xor     ebx,esi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     r11d,eax
> > > >
> > > > +        rol     ebp,1
> > > >
> > > > +        and     ebx,r13d
> > > >
> > > > +        add     r11d,ecx
> > > >
> > > > +        rol     r13d,30
> > > >
> > > > +        add     r11d,ebx
> > > >
> > > > +        xor     r14d,DWORD[48+rsp]
> > > >
> > > > +        mov     eax,esi
> > > >
> > > > +        mov     DWORD[44+rsp],ebp
> > > >
> > > > +        mov     ebx,esi
> > > >
> > > > +        xor     r14d,DWORD[56+rsp]
> > > >
> > > > +        and     eax,r13d
> > > >
> > > > +        mov     ecx,r11d
> > > >
> > > > +        xor     r14d,DWORD[16+rsp]
> > > >
> > > > +        lea     edi,[((-1894007588))+rdi*1+rbp]
> > > >
> > > > +        xor     ebx,r13d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     edi,eax
> > > >
> > > > +        rol     r14d,1
> > > >
> > > > +        and     ebx,r12d
> > > >
> > > > +        add     edi,ecx
> > > >
> > > > +        rol     r12d,30
> > > >
> > > > +        add     edi,ebx
> > > >
> > > > +        xor     edx,DWORD[52+rsp]
> > > >
> > > > +        mov     eax,r13d
> > > >
> > > > +        mov     DWORD[48+rsp],r14d
> > > >
> > > > +        mov     ebx,r13d
> > > >
> > > > +        xor     edx,DWORD[60+rsp]
> > > >
> > > > +        and     eax,r12d
> > > >
> > > > +        mov     ecx,edi
> > > >
> > > > +        xor     edx,DWORD[20+rsp]
> > > >
> > > > +        lea     esi,[((-1894007588))+rsi*1+r14]
> > > >
> > > > +        xor     ebx,r12d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     esi,eax
> > > >
> > > > +        rol     edx,1
> > > >
> > > > +        and     ebx,r11d
> > > >
> > > > +        add     esi,ecx
> > > >
> > > > +        rol     r11d,30
> > > >
> > > > +        add     esi,ebx
> > > >
> > > > +        xor     ebp,DWORD[56+rsp]
> > > >
> > > > +        mov     eax,r12d
> > > >
> > > > +        mov     DWORD[52+rsp],edx
> > > >
> > > > +        mov     ebx,r12d
> > > >
> > > > +        xor     ebp,DWORD[rsp]
> > > >
> > > > +        and     eax,r11d
> > > >
> > > > +        mov     ecx,esi
> > > >
> > > > +        xor     ebp,DWORD[24+rsp]
> > > >
> > > > +        lea     r13d,[((-1894007588))+r13*1+rdx]
> > > >
> > > > +        xor     ebx,r11d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     r13d,eax
> > > >
> > > > +        rol     ebp,1
> > > >
> > > > +        and     ebx,edi
> > > >
> > > > +        add     r13d,ecx
> > > >
> > > > +        rol     edi,30
> > > >
> > > > +        add     r13d,ebx
> > > >
> > > > +        xor     r14d,DWORD[60+rsp]
> > > >
> > > > +        mov     eax,r11d
> > > >
> > > > +        mov     DWORD[56+rsp],ebp
> > > >
> > > > +        mov     ebx,r11d
> > > >
> > > > +        xor     r14d,DWORD[4+rsp]
> > > >
> > > > +        and     eax,edi
> > > >
> > > > +        mov     ecx,r13d
> > > >
> > > > +        xor     r14d,DWORD[28+rsp]
> > > >
> > > > +        lea     r12d,[((-1894007588))+r12*1+rbp]
> > > >
> > > > +        xor     ebx,edi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     r12d,eax
> > > >
> > > > +        rol     r14d,1
> > > >
> > > > +        and     ebx,esi
> > > >
> > > > +        add     r12d,ecx
> > > >
> > > > +        rol     esi,30
> > > >
> > > > +        add     r12d,ebx
> > > >
> > > > +        xor     edx,DWORD[rsp]
> > > >
> > > > +        mov     eax,edi
> > > >
> > > > +        mov     DWORD[60+rsp],r14d
> > > >
> > > > +        mov     ebx,edi
> > > >
> > > > +        xor     edx,DWORD[8+rsp]
> > > >
> > > > +        and     eax,esi
> > > >
> > > > +        mov     ecx,r12d
> > > >
> > > > +        xor     edx,DWORD[32+rsp]
> > > >
> > > > +        lea     r11d,[((-1894007588))+r11*1+r14]
> > > >
> > > > +        xor     ebx,esi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     r11d,eax
> > > >
> > > > +        rol     edx,1
> > > >
> > > > +        and     ebx,r13d
> > > >
> > > > +        add     r11d,ecx
> > > >
> > > > +        rol     r13d,30
> > > >
> > > > +        add     r11d,ebx
> > > >
> > > > +        xor     ebp,DWORD[4+rsp]
> > > >
> > > > +        mov     eax,esi
> > > >
> > > > +        mov     DWORD[rsp],edx
> > > >
> > > > +        mov     ebx,esi
> > > >
> > > > +        xor     ebp,DWORD[12+rsp]
> > > >
> > > > +        and     eax,r13d
> > > >
> > > > +        mov     ecx,r11d
> > > >
> > > > +        xor     ebp,DWORD[36+rsp]
> > > >
> > > > +        lea     edi,[((-1894007588))+rdi*1+rdx]
> > > >
> > > > +        xor     ebx,r13d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     edi,eax
> > > >
> > > > +        rol     ebp,1
> > > >
> > > > +        and     ebx,r12d
> > > >
> > > > +        add     edi,ecx
> > > >
> > > > +        rol     r12d,30
> > > >
> > > > +        add     edi,ebx
> > > >
> > > > +        xor     r14d,DWORD[8+rsp]
> > > >
> > > > +        mov     eax,r13d
> > > >
> > > > +        mov     DWORD[4+rsp],ebp
> > > >
> > > > +        mov     ebx,r13d
> > > >
> > > > +        xor     r14d,DWORD[16+rsp]
> > > >
> > > > +        and     eax,r12d
> > > >
> > > > +        mov     ecx,edi
> > > >
> > > > +        xor     r14d,DWORD[40+rsp]
> > > >
> > > > +        lea     esi,[((-1894007588))+rsi*1+rbp]
> > > >
> > > > +        xor     ebx,r12d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     esi,eax
> > > >
> > > > +        rol     r14d,1
> > > >
> > > > +        and     ebx,r11d
> > > >
> > > > +        add     esi,ecx
> > > >
> > > > +        rol     r11d,30
> > > >
> > > > +        add     esi,ebx
> > > >
> > > > +        xor     edx,DWORD[12+rsp]
> > > >
> > > > +        mov     eax,r12d
> > > >
> > > > +        mov     DWORD[8+rsp],r14d
> > > >
> > > > +        mov     ebx,r12d
> > > >
> > > > +        xor     edx,DWORD[20+rsp]
> > > >
> > > > +        and     eax,r11d
> > > >
> > > > +        mov     ecx,esi
> > > >
> > > > +        xor     edx,DWORD[44+rsp]
> > > >
> > > > +        lea     r13d,[((-1894007588))+r13*1+r14]
> > > >
> > > > +        xor     ebx,r11d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     r13d,eax
> > > >
> > > > +        rol     edx,1
> > > >
> > > > +        and     ebx,edi
> > > >
> > > > +        add     r13d,ecx
> > > >
> > > > +        rol     edi,30
> > > >
> > > > +        add     r13d,ebx
> > > >
> > > > +        xor     ebp,DWORD[16+rsp]
> > > >
> > > > +        mov     eax,r11d
> > > >
> > > > +        mov     DWORD[12+rsp],edx
> > > >
> > > > +        mov     ebx,r11d
> > > >
> > > > +        xor     ebp,DWORD[24+rsp]
> > > >
> > > > +        and     eax,edi
> > > >
> > > > +        mov     ecx,r13d
> > > >
> > > > +        xor     ebp,DWORD[48+rsp]
> > > >
> > > > +        lea     r12d,[((-1894007588))+r12*1+rdx]
> > > >
> > > > +        xor     ebx,edi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     r12d,eax
> > > >
> > > > +        rol     ebp,1
> > > >
> > > > +        and     ebx,esi
> > > >
> > > > +        add     r12d,ecx
> > > >
> > > > +        rol     esi,30
> > > >
> > > > +        add     r12d,ebx
> > > >
> > > > +        xor     r14d,DWORD[20+rsp]
> > > >
> > > > +        mov     eax,edi
> > > >
> > > > +        mov     DWORD[16+rsp],ebp
> > > >
> > > > +        mov     ebx,edi
> > > >
> > > > +        xor     r14d,DWORD[28+rsp]
> > > >
> > > > +        and     eax,esi
> > > >
> > > > +        mov     ecx,r12d
> > > >
> > > > +        xor     r14d,DWORD[52+rsp]
> > > >
> > > > +        lea     r11d,[((-1894007588))+r11*1+rbp]
> > > >
> > > > +        xor     ebx,esi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     r11d,eax
> > > >
> > > > +        rol     r14d,1
> > > >
> > > > +        and     ebx,r13d
> > > >
> > > > +        add     r11d,ecx
> > > >
> > > > +        rol     r13d,30
> > > >
> > > > +        add     r11d,ebx
> > > >
> > > > +        xor     edx,DWORD[24+rsp]
> > > >
> > > > +        mov     eax,esi
> > > >
> > > > +        mov     DWORD[20+rsp],r14d
> > > >
> > > > +        mov     ebx,esi
> > > >
> > > > +        xor     edx,DWORD[32+rsp]
> > > >
> > > > +        and     eax,r13d
> > > >
> > > > +        mov     ecx,r11d
> > > >
> > > > +        xor     edx,DWORD[56+rsp]
> > > >
> > > > +        lea     edi,[((-1894007588))+rdi*1+r14]
> > > >
> > > > +        xor     ebx,r13d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     edi,eax
> > > >
> > > > +        rol     edx,1
> > > >
> > > > +        and     ebx,r12d
> > > >
> > > > +        add     edi,ecx
> > > >
> > > > +        rol     r12d,30
> > > >
> > > > +        add     edi,ebx
> > > >
> > > > +        xor     ebp,DWORD[28+rsp]
> > > >
> > > > +        mov     eax,r13d
> > > >
> > > > +        mov     DWORD[24+rsp],edx
> > > >
> > > > +        mov     ebx,r13d
> > > >
> > > > +        xor     ebp,DWORD[36+rsp]
> > > >
> > > > +        and     eax,r12d
> > > >
> > > > +        mov     ecx,edi
> > > >
> > > > +        xor     ebp,DWORD[60+rsp]
> > > >
> > > > +        lea     esi,[((-1894007588))+rsi*1+rdx]
> > > >
> > > > +        xor     ebx,r12d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     esi,eax
> > > >
> > > > +        rol     ebp,1
> > > >
> > > > +        and     ebx,r11d
> > > >
> > > > +        add     esi,ecx
> > > >
> > > > +        rol     r11d,30
> > > >
> > > > +        add     esi,ebx
> > > >
> > > > +        xor     r14d,DWORD[32+rsp]
> > > >
> > > > +        mov     eax,r12d
> > > >
> > > > +        mov     DWORD[28+rsp],ebp
> > > >
> > > > +        mov     ebx,r12d
> > > >
> > > > +        xor     r14d,DWORD[40+rsp]
> > > >
> > > > +        and     eax,r11d
> > > >
> > > > +        mov     ecx,esi
> > > >
> > > > +        xor     r14d,DWORD[rsp]
> > > >
> > > > +        lea     r13d,[((-1894007588))+r13*1+rbp]
> > > >
> > > > +        xor     ebx,r11d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     r13d,eax
> > > >
> > > > +        rol     r14d,1
> > > >
> > > > +        and     ebx,edi
> > > >
> > > > +        add     r13d,ecx
> > > >
> > > > +        rol     edi,30
> > > >
> > > > +        add     r13d,ebx
> > > >
> > > > +        xor     edx,DWORD[36+rsp]
> > > >
> > > > +        mov     eax,r11d
> > > >
> > > > +        mov     DWORD[32+rsp],r14d
> > > >
> > > > +        mov     ebx,r11d
> > > >
> > > > +        xor     edx,DWORD[44+rsp]
> > > >
> > > > +        and     eax,edi
> > > >
> > > > +        mov     ecx,r13d
> > > >
> > > > +        xor     edx,DWORD[4+rsp]
> > > >
> > > > +        lea     r12d,[((-1894007588))+r12*1+r14]
> > > >
> > > > +        xor     ebx,edi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     r12d,eax
> > > >
> > > > +        rol     edx,1
> > > >
> > > > +        and     ebx,esi
> > > >
> > > > +        add     r12d,ecx
> > > >
> > > > +        rol     esi,30
> > > >
> > > > +        add     r12d,ebx
> > > >
> > > > +        xor     ebp,DWORD[40+rsp]
> > > >
> > > > +        mov     eax,edi
> > > >
> > > > +        mov     DWORD[36+rsp],edx
> > > >
> > > > +        mov     ebx,edi
> > > >
> > > > +        xor     ebp,DWORD[48+rsp]
> > > >
> > > > +        and     eax,esi
> > > >
> > > > +        mov     ecx,r12d
> > > >
> > > > +        xor     ebp,DWORD[8+rsp]
> > > >
> > > > +        lea     r11d,[((-1894007588))+r11*1+rdx]
> > > >
> > > > +        xor     ebx,esi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     r11d,eax
> > > >
> > > > +        rol     ebp,1
> > > >
> > > > +        and     ebx,r13d
> > > >
> > > > +        add     r11d,ecx
> > > >
> > > > +        rol     r13d,30
> > > >
> > > > +        add     r11d,ebx
> > > >
> > > > +        xor     r14d,DWORD[44+rsp]
> > > >
> > > > +        mov     eax,esi
> > > >
> > > > +        mov     DWORD[40+rsp],ebp
> > > >
> > > > +        mov     ebx,esi
> > > >
> > > > +        xor     r14d,DWORD[52+rsp]
> > > >
> > > > +        and     eax,r13d
> > > >
> > > > +        mov     ecx,r11d
> > > >
> > > > +        xor     r14d,DWORD[12+rsp]
> > > >
> > > > +        lea     edi,[((-1894007588))+rdi*1+rbp]
> > > >
> > > > +        xor     ebx,r13d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     edi,eax
> > > >
> > > > +        rol     r14d,1
> > > >
> > > > +        and     ebx,r12d
> > > >
> > > > +        add     edi,ecx
> > > >
> > > > +        rol     r12d,30
> > > >
> > > > +        add     edi,ebx
> > > >
> > > > +        xor     edx,DWORD[48+rsp]
> > > >
> > > > +        mov     eax,r13d
> > > >
> > > > +        mov     DWORD[44+rsp],r14d
> > > >
> > > > +        mov     ebx,r13d
> > > >
> > > > +        xor     edx,DWORD[56+rsp]
> > > >
> > > > +        and     eax,r12d
> > > >
> > > > +        mov     ecx,edi
> > > >
> > > > +        xor     edx,DWORD[16+rsp]
> > > >
> > > > +        lea     esi,[((-1894007588))+rsi*1+r14]
> > > >
> > > > +        xor     ebx,r12d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     esi,eax
> > > >
> > > > +        rol     edx,1
> > > >
> > > > +        and     ebx,r11d
> > > >
> > > > +        add     esi,ecx
> > > >
> > > > +        rol     r11d,30
> > > >
> > > > +        add     esi,ebx
> > > >
> > > > +        xor     ebp,DWORD[52+rsp]
> > > >
> > > > +        mov     eax,edi
> > > >
> > > > +        mov     DWORD[48+rsp],edx
> > > >
> > > > +        mov     ecx,esi
> > > >
> > > > +        xor     ebp,DWORD[60+rsp]
> > > >
> > > > +        xor     eax,r12d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[56+rsp]
> > > >
> > > > +        mov     eax,esi
> > > >
> > > > +        mov     DWORD[52+rsp],ebp
> > > >
> > > > +        mov     ecx,r13d
> > > >
> > > > +        xor     r14d,DWORD[rsp]
> > > >
> > > > +        xor     eax,r11d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[60+rsp]
> > > >
> > > > +        mov     eax,r13d
> > > >
> > > > +        mov     DWORD[56+rsp],r14d
> > > >
> > > > +        mov     ecx,r12d
> > > >
> > > > +        xor     edx,DWORD[4+rsp]
> > > >
> > > > +        xor     eax,edi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[rsp]
> > > >
> > > > +        mov     eax,r12d
> > > >
> > > > +        mov     DWORD[60+rsp],edx
> > > >
> > > > +        mov     ecx,r11d
> > > >
> > > > +        xor     ebp,DWORD[8+rsp]
> > > >
> > > > +        xor     eax,esi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[4+rsp]
> > > >
> > > > +        mov     eax,r11d
> > > >
> > > > +        mov     DWORD[rsp],ebp
> > > >
> > > > +        mov     ecx,edi
> > > >
> > > > +        xor     r14d,DWORD[12+rsp]
> > > >
> > > > +        xor     eax,r13d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[8+rsp]
> > > >
> > > > +        mov     eax,edi
> > > >
> > > > +        mov     DWORD[4+rsp],r14d
> > > >
> > > > +        mov     ecx,esi
> > > >
> > > > +        xor     edx,DWORD[16+rsp]
> > > >
> > > > +        xor     eax,r12d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[12+rsp]
> > > >
> > > > +        mov     eax,esi
> > > >
> > > > +        mov     DWORD[8+rsp],edx
> > > >
> > > > +        mov     ecx,r13d
> > > >
> > > > +        xor     ebp,DWORD[20+rsp]
> > > >
> > > > +        xor     eax,r11d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[16+rsp]
> > > >
> > > > +        mov     eax,r13d
> > > >
> > > > +        mov     DWORD[12+rsp],ebp
> > > >
> > > > +        mov     ecx,r12d
> > > >
> > > > +        xor     r14d,DWORD[24+rsp]
> > > >
> > > > +        xor     eax,edi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[20+rsp]
> > > >
> > > > +        mov     eax,r12d
> > > >
> > > > +        mov     DWORD[16+rsp],r14d
> > > >
> > > > +        mov     ecx,r11d
> > > >
> > > > +        xor     edx,DWORD[28+rsp]
> > > >
> > > > +        xor     eax,esi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[24+rsp]
> > > >
> > > > +        mov     eax,r11d
> > > >
> > > > +        mov     DWORD[20+rsp],edx
> > > >
> > > > +        mov     ecx,edi
> > > >
> > > > +        xor     ebp,DWORD[32+rsp]
> > > >
> > > > +        xor     eax,r13d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[28+rsp]
> > > >
> > > > +        mov     eax,edi
> > > >
> > > > +        mov     DWORD[24+rsp],ebp
> > > >
> > > > +        mov     ecx,esi
> > > >
> > > > +        xor     r14d,DWORD[36+rsp]
> > > >
> > > > +        xor     eax,r12d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[32+rsp]
> > > >
> > > > +        mov     eax,esi
> > > >
> > > > +        mov     DWORD[28+rsp],r14d
> > > >
> > > > +        mov     ecx,r13d
> > > >
> > > > +        xor     edx,DWORD[40+rsp]
> > > >
> > > > +        xor     eax,r11d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[36+rsp]
> > > >
> > > > +        mov     eax,r13d
> > > >
> > > > +
> > > >
> > > > +        mov     ecx,r12d
> > > >
> > > > +        xor     ebp,DWORD[44+rsp]
> > > >
> > > > +        xor     eax,edi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[40+rsp]
> > > >
> > > > +        mov     eax,r12d
> > > >
> > > > +
> > > >
> > > > +        mov     ecx,r11d
> > > >
> > > > +        xor     r14d,DWORD[48+rsp]
> > > >
> > > > +        xor     eax,esi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[44+rsp]
> > > >
> > > > +        mov     eax,r11d
> > > >
> > > > +
> > > >
> > > > +        mov     ecx,edi
> > > >
> > > > +        xor     edx,DWORD[52+rsp]
> > > >
> > > > +        xor     eax,r13d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[48+rsp]
> > > >
> > > > +        mov     eax,edi
> > > >
> > > > +
> > > >
> > > > +        mov     ecx,esi
> > > >
> > > > +        xor     ebp,DWORD[56+rsp]
> > > >
> > > > +        xor     eax,r12d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[52+rsp]
> > > >
> > > > +        mov     eax,esi
> > > >
> > > > +
> > > >
> > > > +        mov     ecx,r13d
> > > >
> > > > +        xor     r14d,DWORD[60+rsp]
> > > >
> > > > +        xor     eax,r11d
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[56+rsp]
> > > >
> > > > +        mov     eax,r13d
> > > >
> > > > +
> > > >
> > > > +        mov     ecx,r12d
> > > >
> > > > +        xor     edx,DWORD[rsp]
> > > >
> > > > +        xor     eax,edi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        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[60+rsp]
> > > >
> > > > +        mov     eax,r12d
> > > >
> > > > +
> > > >
> > > > +        mov     ecx,r11d
> > > >
> > > > +        xor     ebp,DWORD[4+rsp]
> > > >
> > > > +        xor     eax,esi
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        xor     ebp,DWORD[28+rsp]
> > > >
> > > > +        lea     edi,[((-899497514))+rdi*1+rdx]
> > > >
> > > > +        xor     eax,r13d
> > > >
> > > > +        add     edi,ecx
> > > >
> > > > +        rol     r12d,30
> > > >
> > > > +        add     edi,eax
> > > >
> > > > +        rol     ebp,1
> > > >
> > > > +        mov     eax,r11d
> > > >
> > > > +        mov     ecx,edi
> > > >
> > > > +        xor     eax,r13d
> > > >
> > > > +        lea     esi,[((-899497514))+rsi*1+rbp]
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        xor     eax,r12d
> > > >
> > > > +        add     esi,ecx
> > > >
> > > > +        rol     r11d,30
> > > >
> > > > +        add     esi,eax
> > > >
> > > > +        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,[64+r9]
> > > >
> > > > +        jnz     NEAR $L$loop
> > > >
> > > > +
> > > >
> > > > +        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:
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +sha1_block_data_order_shaext:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_sha1_block_data_order_shaext:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +_shaext_shortcut:
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[((-72))+rsp]
> > > >
> > > > +        movaps  XMMWORD[(-8-64)+rax],xmm6
> > > >
> > > > +        movaps  XMMWORD[(-8-48)+rax],xmm7
> > > >
> > > > +        movaps  XMMWORD[(-8-32)+rax],xmm8
> > > >
> > > > +        movaps  XMMWORD[(-8-16)+rax],xmm9
> > > >
> > > > +$L$prologue_shaext:
> > > >
> > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > >
> > > > +        movd    xmm1,DWORD[16+rdi]
> > > >
> > > > +        movdqa  xmm3,XMMWORD[((K_XX_XX+160))]
> > > >
> > > > +
> > > >
> > > > +        movdqu  xmm4,XMMWORD[rsi]
> > > >
> > > > +        pshufd  xmm0,xmm0,27
> > > >
> > > > +        movdqu  xmm5,XMMWORD[16+rsi]
> > > >
> > > > +        pshufd  xmm1,xmm1,27
> > > >
> > > > +        movdqu  xmm6,XMMWORD[32+rsi]
> > > >
> > > > +DB      102,15,56,0,227
> > > >
> > > > +        movdqu  xmm7,XMMWORD[48+rsi]
> > > >
> > > > +DB      102,15,56,0,235
> > > >
> > > > +DB      102,15,56,0,243
> > > >
> > > > +        movdqa  xmm9,xmm1
> > > >
> > > > +DB      102,15,56,0,251
> > > >
> > > > +        jmp     NEAR $L$oop_shaext
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$oop_shaext:
> > > >
> > > > +        dec     rdx
> > > >
> > > > +        lea     r8,[64+rsi]
> > > >
> > > > +        paddd   xmm1,xmm4
> > > >
> > > > +        cmovne  rsi,r8
> > > >
> > > > +        movdqa  xmm8,xmm0
> > > >
> > > > +DB      15,56,201,229
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +DB      15,58,204,193,0
> > > >
> > > > +DB      15,56,200,213
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +DB      15,56,201,238
> > > >
> > > > +DB      15,56,202,231
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +DB      15,58,204,194,0
> > > >
> > > > +DB      15,56,200,206
> > > >
> > > > +        pxor    xmm5,xmm7
> > > >
> > > > +DB      15,56,202,236
> > > >
> > > > +DB      15,56,201,247
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +DB      15,58,204,193,0
> > > >
> > > > +DB      15,56,200,215
> > > >
> > > > +        pxor    xmm6,xmm4
> > > >
> > > > +DB      15,56,201,252
> > > >
> > > > +DB      15,56,202,245
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +DB      15,58,204,194,0
> > > >
> > > > +DB      15,56,200,204
> > > >
> > > > +        pxor    xmm7,xmm5
> > > >
> > > > +DB      15,56,202,254
> > > >
> > > > +DB      15,56,201,229
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +DB      15,58,204,193,0
> > > >
> > > > +DB      15,56,200,213
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +DB      15,56,201,238
> > > >
> > > > +DB      15,56,202,231
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +DB      15,58,204,194,1
> > > >
> > > > +DB      15,56,200,206
> > > >
> > > > +        pxor    xmm5,xmm7
> > > >
> > > > +DB      15,56,202,236
> > > >
> > > > +DB      15,56,201,247
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +DB      15,58,204,193,1
> > > >
> > > > +DB      15,56,200,215
> > > >
> > > > +        pxor    xmm6,xmm4
> > > >
> > > > +DB      15,56,201,252
> > > >
> > > > +DB      15,56,202,245
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +DB      15,58,204,194,1
> > > >
> > > > +DB      15,56,200,204
> > > >
> > > > +        pxor    xmm7,xmm5
> > > >
> > > > +DB      15,56,202,254
> > > >
> > > > +DB      15,56,201,229
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +DB      15,58,204,193,1
> > > >
> > > > +DB      15,56,200,213
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +DB      15,56,201,238
> > > >
> > > > +DB      15,56,202,231
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +DB      15,58,204,194,1
> > > >
> > > > +DB      15,56,200,206
> > > >
> > > > +        pxor    xmm5,xmm7
> > > >
> > > > +DB      15,56,202,236
> > > >
> > > > +DB      15,56,201,247
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +DB      15,58,204,193,2
> > > >
> > > > +DB      15,56,200,215
> > > >
> > > > +        pxor    xmm6,xmm4
> > > >
> > > > +DB      15,56,201,252
> > > >
> > > > +DB      15,56,202,245
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +DB      15,58,204,194,2
> > > >
> > > > +DB      15,56,200,204
> > > >
> > > > +        pxor    xmm7,xmm5
> > > >
> > > > +DB      15,56,202,254
> > > >
> > > > +DB      15,56,201,229
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +DB      15,58,204,193,2
> > > >
> > > > +DB      15,56,200,213
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +DB      15,56,201,238
> > > >
> > > > +DB      15,56,202,231
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +DB      15,58,204,194,2
> > > >
> > > > +DB      15,56,200,206
> > > >
> > > > +        pxor    xmm5,xmm7
> > > >
> > > > +DB      15,56,202,236
> > > >
> > > > +DB      15,56,201,247
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +DB      15,58,204,193,2
> > > >
> > > > +DB      15,56,200,215
> > > >
> > > > +        pxor    xmm6,xmm4
> > > >
> > > > +DB      15,56,201,252
> > > >
> > > > +DB      15,56,202,245
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +DB      15,58,204,194,3
> > > >
> > > > +DB      15,56,200,204
> > > >
> > > > +        pxor    xmm7,xmm5
> > > >
> > > > +DB      15,56,202,254
> > > >
> > > > +        movdqu  xmm4,XMMWORD[rsi]
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +DB      15,58,204,193,3
> > > >
> > > > +DB      15,56,200,213
> > > >
> > > > +        movdqu  xmm5,XMMWORD[16+rsi]
> > > >
> > > > +DB      102,15,56,0,227
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +DB      15,58,204,194,3
> > > >
> > > > +DB      15,56,200,206
> > > >
> > > > +        movdqu  xmm6,XMMWORD[32+rsi]
> > > >
> > > > +DB      102,15,56,0,235
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm0
> > > >
> > > > +DB      15,58,204,193,3
> > > >
> > > > +DB      15,56,200,215
> > > >
> > > > +        movdqu  xmm7,XMMWORD[48+rsi]
> > > >
> > > > +DB      102,15,56,0,243
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +DB      15,58,204,194,3
> > > >
> > > > +DB      65,15,56,200,201
> > > >
> > > > +DB      102,15,56,0,251
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm0,xmm8
> > > >
> > > > +        movdqa  xmm9,xmm1
> > > >
> > > > +
> > > >
> > > > +        jnz     NEAR $L$oop_shaext
> > > >
> > > > +
> > > >
> > > > +        pshufd  xmm0,xmm0,27
> > > >
> > > > +        pshufd  xmm1,xmm1,27
> > > >
> > > > +        movdqu  XMMWORD[rdi],xmm0
> > > >
> > > > +        movd    DWORD[16+rdi],xmm1
> > > >
> > > > +        movaps  xmm6,XMMWORD[((-8-64))+rax]
> > > >
> > > > +        movaps  xmm7,XMMWORD[((-8-48))+rax]
> > > >
> > > > +        movaps  xmm8,XMMWORD[((-8-32))+rax]
> > > >
> > > > +        movaps  xmm9,XMMWORD[((-8-16))+rax]
> > > >
> > > > +        mov     rsp,rax
> > > >
> > > > +$L$epilogue_shaext:
> > > >
> > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > >
> > > > +        mov     rsi,QWORD[16+rsp]
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +$L$SEH_end_sha1_block_data_order_shaext:
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +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:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +_ssse3_shortcut:
> > > >
> > > > +
> > > >
> > > > +        mov     r11,rsp
> > > >
> > > > +
> > > >
> > > > +        push    rbx
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        push    r12
> > > >
> > > > +
> > > >
> > > > +        push    r13
> > > >
> > > > +
> > > >
> > > > +        push    r14
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[((-160))+rsp]
> > > >
> > > > +        movaps  XMMWORD[(-40-96)+r11],xmm6
> > > >
> > > > +        movaps  XMMWORD[(-40-80)+r11],xmm7
> > > >
> > > > +        movaps  XMMWORD[(-40-64)+r11],xmm8
> > > >
> > > > +        movaps  XMMWORD[(-40-48)+r11],xmm9
> > > >
> > > > +        movaps  XMMWORD[(-40-32)+r11],xmm10
> > > >
> > > > +        movaps  XMMWORD[(-40-16)+r11],xmm11
> > > >
> > > > +$L$prologue_ssse3:
> > > >
> > > > +        and     rsp,-64
> > > >
> > > > +        mov     r8,rdi
> > > >
> > > > +        mov     r9,rsi
> > > >
> > > > +        mov     r10,rdx
> > > >
> > > > +
> > > >
> > > > +        shl     r10,6
> > > >
> > > > +        add     r10,r9
> > > >
> > > > +        lea     r14,[((K_XX_XX+64))]
> > > >
> > > > +
> > > >
> > > > +        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[16+r8]
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        and     esi,edi
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm6,XMMWORD[64+r14]
> > > >
> > > > +        movdqa  xmm9,XMMWORD[((-64))+r14]
> > > >
> > > > +        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
> > > >
> > > > +        add     r9,64
> > > >
> > > > +        paddd   xmm0,xmm9
> > > >
> > > > +DB      102,15,56,0,222
> > > >
> > > > +        paddd   xmm1,xmm9
> > > >
> > > > +        paddd   xmm2,xmm9
> > > >
> > > > +        movdqa  XMMWORD[rsp],xmm0
> > > >
> > > > +        psubd   xmm0,xmm9
> > > >
> > > > +        movdqa  XMMWORD[16+rsp],xmm1
> > > >
> > > > +        psubd   xmm1,xmm9
> > > >
> > > > +        movdqa  XMMWORD[32+rsp],xmm2
> > > >
> > > > +        psubd   xmm2,xmm9
> > > >
> > > > +        jmp     NEAR $L$oop_ssse3
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$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[rsp]
> > > >
> > > > +        punpcklqdq      xmm4,xmm1
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,esi
> > > >
> > > > +        psrldq  xmm8,4
> > > >
> > > > +        and     edi,ebx
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        pxor    xmm4,xmm0
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        pxor    xmm8,xmm2
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        mov     esi,ebp
> > > >
> > > > +        add     edx,DWORD[4+rsp]
> > > >
> > > > +        pxor    xmm4,xmm8
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        movdqa  XMMWORD[48+rsp],xmm9
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        and     esi,eax
> > > >
> > > > +        movdqa  xmm10,xmm4
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        movdqa  xmm8,xmm4
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        pslldq  xmm10,12
> > > >
> > > > +        paddd   xmm4,xmm4
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        add     ecx,DWORD[8+rsp]
> > > >
> > > > +        psrld   xmm8,31
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,esi
> > > >
> > > > +        movdqa  xmm9,xmm10
> > > >
> > > > +        and     edi,ebp
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        psrld   xmm10,30
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        por     xmm4,xmm8
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        mov     esi,ecx
> > > >
> > > > +        add     ebx,DWORD[12+rsp]
> > > >
> > > > +        pslld   xmm9,2
> > > >
> > > > +        pxor    xmm4,xmm10
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        movdqa  xmm10,XMMWORD[((-64))+r14]
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        and     esi,edx
> > > >
> > > > +        pxor    xmm4,xmm9
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        pshufd  xmm5,xmm1,238
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        movdqa  xmm9,xmm4
> > > >
> > > > +        paddd   xmm10,xmm4
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        add     eax,DWORD[16+rsp]
> > > >
> > > > +        punpcklqdq      xmm5,xmm2
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,esi
> > > >
> > > > +        psrldq  xmm9,4
> > > >
> > > > +        and     edi,ecx
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        pxor    xmm5,xmm1
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        pxor    xmm9,xmm3
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        mov     esi,eax
> > > >
> > > > +        add     ebp,DWORD[20+rsp]
> > > >
> > > > +        pxor    xmm5,xmm9
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        movdqa  XMMWORD[rsp],xmm10
> > > >
> > > > +        add     ebp,edi
> > > >
> > > > +        and     esi,ebx
> > > >
> > > > +        movdqa  xmm8,xmm5
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        movdqa  xmm9,xmm5
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        pslldq  xmm8,12
> > > >
> > > > +        paddd   xmm5,xmm5
> > > >
> > > > +        mov     edi,ebp
> > > >
> > > > +        add     edx,DWORD[24+rsp]
> > > >
> > > > +        psrld   xmm9,31
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,esi
> > > >
> > > > +        movdqa  xmm10,xmm8
> > > >
> > > > +        and     edi,eax
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        psrld   xmm8,30
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        por     xmm5,xmm9
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        mov     esi,edx
> > > >
> > > > +        add     ecx,DWORD[28+rsp]
> > > >
> > > > +        pslld   xmm10,2
> > > >
> > > > +        pxor    xmm5,xmm8
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        movdqa  xmm8,XMMWORD[((-32))+r14]
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,edi
> > > >
> > > > +        and     esi,ebp
> > > >
> > > > +        pxor    xmm5,xmm10
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        pshufd  xmm6,xmm2,238
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        movdqa  xmm10,xmm5
> > > >
> > > > +        paddd   xmm8,xmm5
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        add     ebx,DWORD[32+rsp]
> > > >
> > > > +        punpcklqdq      xmm6,xmm3
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        psrldq  xmm10,4
> > > >
> > > > +        and     edi,edx
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        pxor    xmm6,xmm2
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        pxor    xmm10,xmm4
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        mov     esi,ebx
> > > >
> > > > +        add     eax,DWORD[36+rsp]
> > > >
> > > > +        pxor    xmm6,xmm10
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        movdqa  XMMWORD[16+rsp],xmm8
> > > >
> > > > +        add     eax,edi
> > > >
> > > > +        and     esi,ecx
> > > >
> > > > +        movdqa  xmm9,xmm6
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        movdqa  xmm10,xmm6
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        pslldq  xmm9,12
> > > >
> > > > +        paddd   xmm6,xmm6
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +        add     ebp,DWORD[40+rsp]
> > > >
> > > > +        psrld   xmm10,31
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,esi
> > > >
> > > > +        movdqa  xmm8,xmm9
> > > >
> > > > +        and     edi,ebx
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        psrld   xmm9,30
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        por     xmm6,xmm10
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        mov     esi,ebp
> > > >
> > > > +        add     edx,DWORD[44+rsp]
> > > >
> > > > +        pslld   xmm8,2
> > > >
> > > > +        pxor    xmm6,xmm9
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        movdqa  xmm9,XMMWORD[((-32))+r14]
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        and     esi,eax
> > > >
> > > > +        pxor    xmm6,xmm8
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        pshufd  xmm7,xmm3,238
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        movdqa  xmm8,xmm6
> > > >
> > > > +        paddd   xmm9,xmm6
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        add     ecx,DWORD[48+rsp]
> > > >
> > > > +        punpcklqdq      xmm7,xmm4
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,esi
> > > >
> > > > +        psrldq  xmm8,4
> > > >
> > > > +        and     edi,ebp
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        pxor    xmm7,xmm3
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        pxor    xmm8,xmm5
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        mov     esi,ecx
> > > >
> > > > +        add     ebx,DWORD[52+rsp]
> > > >
> > > > +        pxor    xmm7,xmm8
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        movdqa  XMMWORD[32+rsp],xmm9
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        and     esi,edx
> > > >
> > > > +        movdqa  xmm10,xmm7
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        movdqa  xmm8,xmm7
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        pslldq  xmm10,12
> > > >
> > > > +        paddd   xmm7,xmm7
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        add     eax,DWORD[56+rsp]
> > > >
> > > > +        psrld   xmm8,31
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,esi
> > > >
> > > > +        movdqa  xmm9,xmm10
> > > >
> > > > +        and     edi,ecx
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        psrld   xmm10,30
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        por     xmm7,xmm8
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        mov     esi,eax
> > > >
> > > > +        add     ebp,DWORD[60+rsp]
> > > >
> > > > +        pslld   xmm9,2
> > > >
> > > > +        pxor    xmm7,xmm10
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        movdqa  xmm10,XMMWORD[((-32))+r14]
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,edi
> > > >
> > > > +        and     esi,ebx
> > > >
> > > > +        pxor    xmm7,xmm9
> > > >
> > > > +        pshufd  xmm9,xmm6,238
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        mov     edi,ebp
> > > >
> > > > +        add     edx,DWORD[rsp]
> > > >
> > > > +        punpcklqdq      xmm9,xmm7
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        add     edx,esi
> > > >
> > > > +        and     edi,eax
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        paddd   xmm10,xmm7
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        pxor    xmm0,xmm9
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        mov     esi,edx
> > > >
> > > > +        add     ecx,DWORD[4+rsp]
> > > >
> > > > +        movdqa  xmm9,xmm0
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        movdqa  XMMWORD[48+rsp],xmm10
> > > >
> > > > +        add     ecx,edi
> > > >
> > > > +        and     esi,ebp
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        pslld   xmm0,2
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        psrld   xmm9,30
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        add     ebx,DWORD[8+rsp]
> > > >
> > > > +        por     xmm0,xmm9
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        pshufd  xmm10,xmm7,238
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        and     edi,edx
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[12+rsp]
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        mov     esi,ebx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,edi
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        pxor    xmm1,xmm5
> > > >
> > > > +        add     ebp,DWORD[16+rsp]
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        punpcklqdq      xmm10,xmm0
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        add     ebp,esi
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        paddd   xmm8,xmm0
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        pxor    xmm1,xmm10
> > > >
> > > > +        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[rsp],xmm8
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        add     ecx,DWORD[24+rsp]
> > > >
> > > > +        pslld   xmm1,2
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        psrld   xmm10,30
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,esi
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        por     xmm1,xmm10
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        add     ebx,DWORD[28+rsp]
> > > >
> > > > +        pshufd  xmm8,xmm0,238
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        mov     esi,ecx
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        pxor    xmm2,xmm6
> > > >
> > > > +        add     eax,DWORD[32+rsp]
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        punpcklqdq      xmm8,xmm1
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        pxor    xmm2,xmm3
> > > >
> > > > +        add     eax,esi
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        movdqa  xmm10,XMMWORD[r14]
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        paddd   xmm9,xmm1
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        pxor    xmm2,xmm8
> > > >
> > > > +        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[16+rsp],xmm9
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        add     edx,DWORD[40+rsp]
> > > >
> > > > +        pslld   xmm2,2
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        mov     edi,ebp
> > > >
> > > > +        psrld   xmm8,30
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,esi
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        por     xmm2,xmm8
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        add     ecx,DWORD[44+rsp]
> > > >
> > > > +        pshufd  xmm9,xmm1,238
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        mov     esi,edx
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,edi
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        pxor    xmm3,xmm7
> > > >
> > > > +        add     ebx,DWORD[48+rsp]
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        punpcklqdq      xmm9,xmm2
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        pxor    xmm3,xmm4
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        paddd   xmm10,xmm2
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        pxor    xmm3,xmm9
> > > >
> > > > +        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[32+rsp],xmm10
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        add     ebp,DWORD[56+rsp]
> > > >
> > > > +        pslld   xmm3,2
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +        psrld   xmm9,30
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,esi
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        por     xmm3,xmm9
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        add     edx,DWORD[60+rsp]
> > > >
> > > > +        pshufd  xmm10,xmm2,238
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        mov     esi,ebp
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        pxor    xmm4,xmm0
> > > >
> > > > +        add     ecx,DWORD[rsp]
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        punpcklqdq      xmm10,xmm3
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        pxor    xmm4,xmm5
> > > >
> > > > +        add     ecx,esi
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        paddd   xmm8,xmm3
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        pxor    xmm4,xmm10
> > > >
> > > > +        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[48+rsp],xmm8
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[8+rsp]
> > > >
> > > > +        pslld   xmm4,2
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        psrld   xmm10,30
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,esi
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        por     xmm4,xmm10
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        add     ebp,DWORD[12+rsp]
> > > >
> > > > +        pshufd  xmm8,xmm3,238
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        mov     esi,eax
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,edi
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        pxor    xmm5,xmm1
> > > >
> > > > +        add     edx,DWORD[16+rsp]
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        punpcklqdq      xmm8,xmm4
> > > >
> > > > +        mov     edi,ebp
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        pxor    xmm5,xmm6
> > > >
> > > > +        add     edx,esi
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        movdqa  xmm10,xmm9
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        paddd   xmm9,xmm4
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        pxor    xmm5,xmm8
> > > >
> > > > +        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[rsp],xmm9
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        add     ebx,DWORD[24+rsp]
> > > >
> > > > +        pslld   xmm5,2
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        psrld   xmm8,30
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        por     xmm5,xmm8
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[28+rsp]
> > > >
> > > > +        pshufd  xmm9,xmm4,238
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        mov     esi,ebx
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,edi
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        pxor    xmm6,xmm2
> > > >
> > > > +        add     ebp,DWORD[32+rsp]
> > > >
> > > > +        and     esi,ecx
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        punpcklqdq      xmm9,xmm5
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        pxor    xmm6,xmm7
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,esi
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        paddd   xmm10,xmm5
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        pxor    xmm6,xmm9
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        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[16+rsp],xmm10
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        pslld   xmm6,2
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        psrld   xmm9,30
> > > >
> > > > +        add     ecx,DWORD[40+rsp]
> > > >
> > > > +        and     esi,eax
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        por     xmm6,xmm9
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        pshufd  xmm10,xmm5,238
> > > >
> > > > +        add     ecx,esi
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        add     ebx,DWORD[44+rsp]
> > > >
> > > > +        and     edi,ebp
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        mov     esi,ecx
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        pxor    xmm7,xmm3
> > > >
> > > > +        add     eax,DWORD[48+rsp]
> > > >
> > > > +        and     esi,edx
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        punpcklqdq      xmm10,xmm6
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        pxor    xmm7,xmm0
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,esi
> > > >
> > > > +        movdqa  xmm9,XMMWORD[32+r14]
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        paddd   xmm8,xmm6
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        pxor    xmm7,xmm10
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        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[32+rsp],xmm8
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,edi
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        pslld   xmm7,2
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        psrld   xmm10,30
> > > >
> > > > +        add     edx,DWORD[56+rsp]
> > > >
> > > > +        and     esi,ebx
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        por     xmm7,xmm10
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        mov     edi,ebp
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        pshufd  xmm8,xmm6,238
> > > >
> > > > +        add     edx,esi
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        add     ecx,DWORD[60+rsp]
> > > >
> > > > +        and     edi,eax
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        mov     esi,edx
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,edi
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        add     ebx,DWORD[rsp]
> > > >
> > > > +        and     esi,ebp
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        punpcklqdq      xmm8,xmm7
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        movdqa  xmm10,xmm9
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        paddd   xmm9,xmm7
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        pxor    xmm0,xmm8
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        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[48+rsp],xmm9
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,edi
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        pslld   xmm0,2
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        psrld   xmm8,30
> > > >
> > > > +        add     ebp,DWORD[8+rsp]
> > > >
> > > > +        and     esi,ecx
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        por     xmm0,xmm8
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        pshufd  xmm9,xmm7,238
> > > >
> > > > +        add     ebp,esi
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        add     edx,DWORD[12+rsp]
> > > >
> > > > +        and     edi,ebx
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        mov     esi,ebp
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        pxor    xmm1,xmm5
> > > >
> > > > +        add     ecx,DWORD[16+rsp]
> > > >
> > > > +        and     esi,eax
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        punpcklqdq      xmm9,xmm0
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,esi
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        paddd   xmm10,xmm0
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        pxor    xmm1,xmm9
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        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[rsp],xmm10
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        pslld   xmm1,2
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        psrld   xmm9,30
> > > >
> > > > +        add     eax,DWORD[24+rsp]
> > > >
> > > > +        and     esi,edx
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        por     xmm1,xmm9
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        pshufd  xmm10,xmm0,238
> > > >
> > > > +        add     eax,esi
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        add     ebp,DWORD[28+rsp]
> > > >
> > > > +        and     edi,ecx
> > > >
> > > > +        xor     ecx,edx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        mov     esi,eax
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,edi
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        pxor    xmm2,xmm6
> > > >
> > > > +        add     edx,DWORD[32+rsp]
> > > >
> > > > +        and     esi,ebx
> > > >
> > > > +        xor     ebx,ecx
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        punpcklqdq      xmm10,xmm1
> > > >
> > > > +        mov     edi,ebp
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        pxor    xmm2,xmm3
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,esi
> > > >
> > > > +        movdqa  xmm9,xmm8
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        paddd   xmm8,xmm1
> > > >
> > > > +        xor     eax,ebx
> > > >
> > > > +        pxor    xmm2,xmm10
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        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[16+rsp],xmm8
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,edi
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        pslld   xmm2,2
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        psrld   xmm10,30
> > > >
> > > > +        add     ebx,DWORD[40+rsp]
> > > >
> > > > +        and     esi,ebp
> > > >
> > > > +        xor     ebp,eax
> > > >
> > > > +        por     xmm2,xmm10
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        pshufd  xmm8,xmm1,238
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[44+rsp]
> > > >
> > > > +        and     edi,edx
> > > >
> > > > +        xor     edx,ebp
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        mov     esi,ebx
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,edi
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        pxor    xmm3,xmm7
> > > >
> > > > +        add     ebp,DWORD[48+rsp]
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        punpcklqdq      xmm8,xmm2
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        pxor    xmm3,xmm4
> > > >
> > > > +        add     ebp,esi
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        movdqa  xmm10,xmm9
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        paddd   xmm9,xmm2
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        pxor    xmm3,xmm8
> > > >
> > > > +        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[32+rsp],xmm9
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        add     ecx,DWORD[56+rsp]
> > > >
> > > > +        pslld   xmm3,2
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        psrld   xmm8,30
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,esi
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        por     xmm3,xmm8
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        add     ebx,DWORD[60+rsp]
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        mov     esi,ecx
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[rsp]
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        paddd   xmm10,xmm3
> > > >
> > > > +        add     eax,esi
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        movdqa  XMMWORD[48+rsp],xmm10
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        add     ebp,DWORD[4+rsp]
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        mov     esi,eax
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,edi
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        add     edx,DWORD[8+rsp]
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        mov     edi,ebp
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,esi
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        add     ecx,DWORD[12+rsp]
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        mov     esi,edx
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,edi
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        cmp     r9,r10
> > > >
> > > > +        je      NEAR $L$done_ssse3
> > > >
> > > > +        movdqa  xmm6,XMMWORD[64+r14]
> > > >
> > > > +        movdqa  xmm9,XMMWORD[((-64))+r14]
> > > >
> > > > +        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[16+rsp]
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +DB      102,15,56,0,206
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        paddd   xmm0,xmm9
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[20+rsp]
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        mov     esi,ebx
> > > >
> > > > +        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[24+rsp]
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,esi
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        add     edx,DWORD[28+rsp]
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        mov     esi,ebp
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        add     ecx,DWORD[32+rsp]
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +DB      102,15,56,0,214
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,esi
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        paddd   xmm1,xmm9
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        add     ebx,DWORD[36+rsp]
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        mov     esi,ecx
> > > >
> > > > +        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[40+rsp]
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,esi
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        add     ebp,DWORD[44+rsp]
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        mov     esi,eax
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,edi
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        add     edx,DWORD[48+rsp]
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        mov     edi,ebp
> > > >
> > > > +DB      102,15,56,0,222
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,esi
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        paddd   xmm2,xmm9
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        add     ecx,DWORD[52+rsp]
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        mov     esi,edx
> > > >
> > > > +        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[56+rsp]
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        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[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[8+r8],ecx
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        mov     DWORD[12+r8],edx
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        mov     DWORD[16+r8],ebp
> > > >
> > > > +        and     esi,edi
> > > >
> > > > +        jmp     NEAR $L$oop_ssse3
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$done_ssse3:
> > > >
> > > > +        add     ebx,DWORD[16+rsp]
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[20+rsp]
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        mov     esi,ebx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,edi
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        add     ebp,DWORD[24+rsp]
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,esi
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        add     edx,DWORD[28+rsp]
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        mov     esi,ebp
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        add     ecx,DWORD[32+rsp]
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,esi
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        add     ebx,DWORD[36+rsp]
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        mov     esi,ecx
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        add     eax,DWORD[40+rsp]
> > > >
> > > > +        xor     esi,edx
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        rol     ebx,5
> > > >
> > > > +        add     eax,esi
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        ror     ecx,7
> > > >
> > > > +        add     eax,ebx
> > > >
> > > > +        add     ebp,DWORD[44+rsp]
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        mov     esi,eax
> > > >
> > > > +        rol     eax,5
> > > >
> > > > +        add     ebp,edi
> > > >
> > > > +        xor     esi,ecx
> > > >
> > > > +        ror     ebx,7
> > > >
> > > > +        add     ebp,eax
> > > >
> > > > +        add     edx,DWORD[48+rsp]
> > > >
> > > > +        xor     esi,ebx
> > > >
> > > > +        mov     edi,ebp
> > > >
> > > > +        rol     ebp,5
> > > >
> > > > +        add     edx,esi
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        ror     eax,7
> > > >
> > > > +        add     edx,ebp
> > > >
> > > > +        add     ecx,DWORD[52+rsp]
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        mov     esi,edx
> > > >
> > > > +        rol     edx,5
> > > >
> > > > +        add     ecx,edi
> > > >
> > > > +        xor     esi,eax
> > > >
> > > > +        ror     ebp,7
> > > >
> > > > +        add     ecx,edx
> > > >
> > > > +        add     ebx,DWORD[56+rsp]
> > > >
> > > > +        xor     esi,ebp
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +        rol     ecx,5
> > > >
> > > > +        add     ebx,esi
> > > >
> > > > +        xor     edi,ebp
> > > >
> > > > +        ror     edx,7
> > > >
> > > > +        add     ebx,ecx
> > > >
> > > > +        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[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))+r11]
> > > >
> > > > +        movaps  xmm7,XMMWORD[((-40-80))+r11]
> > > >
> > > > +        movaps  xmm8,XMMWORD[((-40-64))+r11]
> > > >
> > > > +        movaps  xmm9,XMMWORD[((-40-48))+r11]
> > > >
> > > > +        movaps  xmm10,XMMWORD[((-40-32))+r11]
> > > >
> > > > +        movaps  xmm11,XMMWORD[((-40-16))+r11]
> > > >
> > > > +        mov     r14,QWORD[((-40))+r11]
> > > >
> > > > +
> > > >
> > > > +        mov     r13,QWORD[((-32))+r11]
> > > >
> > > > +
> > > >
> > > > +        mov     r12,QWORD[((-24))+r11]
> > > >
> > > > +
> > > >
> > > > +        mov     rbp,QWORD[((-16))+r11]
> > > >
> > > > +
> > > >
> > > > +        mov     rbx,QWORD[((-8))+r11]
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[r11]
> > > >
> > > > +
> > > >
> > > > +$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:
> > > >
> > > > +ALIGN   64
> > > >
> > > > +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
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +se_handler:
> > > >
> > > > +        push    rsi
> > > >
> > > > +        push    rdi
> > > >
> > > > +        push    rbx
> > > >
> > > > +        push    rbp
> > > >
> > > > +        push    r12
> > > >
> > > > +        push    r13
> > > >
> > > > +        push    r14
> > > >
> > > > +        push    r15
> > > >
> > > > +        pushfq
> > > >
> > > > +        sub     rsp,64
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[120+r8]
> > > >
> > > > +        mov     rbx,QWORD[248+r8]
> > > >
> > > > +
> > > >
> > > > +        lea     r10,[$L$prologue]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[152+r8]
> > > >
> > > > +
> > > >
> > > > +        lea     r10,[$L$epilogue]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jae     NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[64+rax]
> > > >
> > > > +
> > > >
> > > > +        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     NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +shaext_handler:
> > > >
> > > > +        push    rsi
> > > >
> > > > +        push    rdi
> > > >
> > > > +        push    rbx
> > > >
> > > > +        push    rbp
> > > >
> > > > +        push    r12
> > > >
> > > > +        push    r13
> > > >
> > > > +        push    r14
> > > >
> > > > +        push    r15
> > > >
> > > > +        pushfq
> > > >
> > > > +        sub     rsp,64
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[120+r8]
> > > >
> > > > +        mov     rbx,QWORD[248+r8]
> > > >
> > > > +
> > > >
> > > > +        lea     r10,[$L$prologue_shaext]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +        lea     r10,[$L$epilogue_shaext]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jae     NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +        lea     rsi,[((-8-64))+rax]
> > > >
> > > > +        lea     rdi,[512+r8]
> > > >
> > > > +        mov     ecx,8
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +        jmp     NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +ssse3_handler:
> > > >
> > > > +        push    rsi
> > > >
> > > > +        push    rdi
> > > >
> > > > +        push    rbx
> > > >
> > > > +        push    rbp
> > > >
> > > > +        push    r12
> > > >
> > > > +        push    r13
> > > >
> > > > +        push    r14
> > > >
> > > > +        push    r15
> > > >
> > > > +        pushfq
> > > >
> > > > +        sub     rsp,64
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[120+r8]
> > > >
> > > > +        mov     rbx,QWORD[248+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,QWORD[8+r9]
> > > >
> > > > +        mov     r11,QWORD[56+r9]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[208+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[4+r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jae     NEAR $L$common_seh_tail
> > > >
> > > > +
> > > >
> > > > +        lea     rsi,[((-40-96))+rax]
> > > >
> > > > +        lea     rdi,[512+r8]
> > > >
> > > > +        mov     ecx,12
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +        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[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[40+r9]
> > > >
> > > > +        mov     rsi,r8
> > > >
> > > > +        mov     ecx,154
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,r9
> > > >
> > > > +        xor     rcx,rcx
> > > >
> > > > +        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
> > > >
> > > > +        popfq
> > > >
> > > > +        pop     r15
> > > >
> > > > +        pop     r14
> > > >
> > > > +        pop     r13
> > > >
> > > > +        pop     r12
> > > >
> > > > +        pop     rbp
> > > >
> > > > +        pop     rbx
> > > >
> > > > +        pop     rdi
> > > >
> > > > +        pop     rsi
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +section .pdata rdata align=4
> > > >
> > > > +ALIGN   4
> > > >
> > > > +        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_shaext wrt
> ..imagebase
> > > >
> > > > +        DD      $L$SEH_end_sha1_block_data_order_shaext wrt
> ..imagebase
> > > >
> > > > +        DD      $L$SEH_info_sha1_block_data_order_shaext 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:
> > > >
> > > > +DB      9,0,0,0
> > > >
> > > > +        DD      se_handler wrt ..imagebase
> > > >
> > > > +$L$SEH_info_sha1_block_data_order_shaext:
> > > >
> > > > +DB      9,0,0,0
> > > >
> > > > +        DD      shaext_handler wrt ..imagebase
> > > >
> > > > +$L$SEH_info_sha1_block_data_order_ssse3:
> > > >
> > > > +DB      9,0,0,0
> > > >
> > > > +        DD      ssse3_handler wrt ..imagebase
> > > >
> > > > +        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
> > > > wrt ..imagebase
> > > >
> > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
> > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
> > > > x86_64.nasm
> > > > new file mode 100644
> > > > index 0000000000..7cd5eae85c
> > > > --- /dev/null
> > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
> > x86_64.nasm
> > > > @@ -0,0 +1,3461 @@
> > > > +; WARNING: do not edit!
> > > >
> > > > +; Generated from openssl/crypto/sha/asm/sha256-mb-x86_64.pl
> > > >
> > > > +;
> > > >
> > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> Reserved.
> > > >
> > > > +;
> > > >
> > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > >
> > > > +; this file except in compliance with the License.  You can obtain a
> copy
> > > >
> > > > +; in the file LICENSE in the source distribution or at
> > > >
> > > > +; https://www.openssl.org/source/license.html
> > > >
> > > > +
> > > >
> > > > +default rel
> > > >
> > > > +%define XMMWORD
> > > >
> > > > +%define YMMWORD
> > > >
> > > > +%define ZMMWORD
> > > >
> > > > +section .text code align=64
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +EXTERN  OPENSSL_ia32cap_P
> > > >
> > > > +
> > > >
> > > > +global  sha256_multi_block
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +sha256_multi_block:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_sha256_multi_block:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
> > > >
> > > > +        bt      rcx,61
> > > >
> > > > +        jc      NEAR _shaext_shortcut
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +
> > > >
> > > > +        push    rbx
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[((-168))+rsp]
> > > >
> > > > +        movaps  XMMWORD[rsp],xmm6
> > > >
> > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > >
> > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > >
> > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > >
> > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > >
> > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > >
> > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > >
> > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > >
> > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > >
> > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > >
> > > > +        sub     rsp,288
> > > >
> > > > +        and     rsp,-256
> > > >
> > > > +        mov     QWORD[272+rsp],rax
> > > >
> > > > +
> > > >
> > > > +$L$body:
> > > >
> > > > +        lea     rbp,[((K256+128))]
> > > >
> > > > +        lea     rbx,[256+rsp]
> > > >
> > > > +        lea     rdi,[128+rdi]
> > > >
> > > > +
> > > >
> > > > +$L$oop_grande:
> > > >
> > > > +        mov     DWORD[280+rsp],edx
> > > >
> > > > +        xor     edx,edx
> > > >
> > > > +        mov     r8,QWORD[rsi]
> > > >
> > > > +        mov     ecx,DWORD[8+rsi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        mov     DWORD[rbx],ecx
> > > >
> > > > +        cmovle  r8,rbp
> > > >
> > > > +        mov     r9,QWORD[16+rsi]
> > > >
> > > > +        mov     ecx,DWORD[24+rsi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        mov     DWORD[4+rbx],ecx
> > > >
> > > > +        cmovle  r9,rbp
> > > >
> > > > +        mov     r10,QWORD[32+rsi]
> > > >
> > > > +        mov     ecx,DWORD[40+rsi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        mov     DWORD[8+rbx],ecx
> > > >
> > > > +        cmovle  r10,rbp
> > > >
> > > > +        mov     r11,QWORD[48+rsi]
> > > >
> > > > +        mov     ecx,DWORD[56+rsi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        mov     DWORD[12+rbx],ecx
> > > >
> > > > +        cmovle  r11,rbp
> > > >
> > > > +        test    edx,edx
> > > >
> > > > +        jz      NEAR $L$done
> > > >
> > > > +
> > > >
> > > > +        movdqu  xmm8,XMMWORD[((0-128))+rdi]
> > > >
> > > > +        lea     rax,[128+rsp]
> > > >
> > > > +        movdqu  xmm9,XMMWORD[((32-128))+rdi]
> > > >
> > > > +        movdqu  xmm10,XMMWORD[((64-128))+rdi]
> > > >
> > > > +        movdqu  xmm11,XMMWORD[((96-128))+rdi]
> > > >
> > > > +        movdqu  xmm12,XMMWORD[((128-128))+rdi]
> > > >
> > > > +        movdqu  xmm13,XMMWORD[((160-128))+rdi]
> > > >
> > > > +        movdqu  xmm14,XMMWORD[((192-128))+rdi]
> > > >
> > > > +        movdqu  xmm15,XMMWORD[((224-128))+rdi]
> > > >
> > > > +        movdqu  xmm6,XMMWORD[$L$pbswap]
> > > >
> > > > +        jmp     NEAR $L$oop
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$oop:
> > > >
> > > > +        movdqa  xmm4,xmm10
> > > >
> > > > +        pxor    xmm4,xmm9
> > > >
> > > > +        movd    xmm5,DWORD[r8]
> > > >
> > > > +        movd    xmm0,DWORD[r9]
> > > >
> > > > +        movd    xmm1,DWORD[r10]
> > > >
> > > > +        movd    xmm2,DWORD[r11]
> > > >
> > > > +        punpckldq       xmm5,xmm1
> > > >
> > > > +        punpckldq       xmm0,xmm2
> > > >
> > > > +        punpckldq       xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +DB      102,15,56,0,238
> > > >
> > > > +        movdqa  xmm2,xmm12
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm12
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(0-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm15
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm12
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm12
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm14
> > > >
> > > > +        pand    xmm3,xmm13
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm8
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm8
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm9
> > > >
> > > > +        movdqa  xmm7,xmm8
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm3,xmm8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm4,xmm3
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm15,xmm9
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm15,xmm4
> > > >
> > > > +        paddd   xmm11,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm15,xmm5
> > > >
> > > > +        paddd   xmm15,xmm7
> > > >
> > > > +        movd    xmm5,DWORD[4+r8]
> > > >
> > > > +        movd    xmm0,DWORD[4+r9]
> > > >
> > > > +        movd    xmm1,DWORD[4+r10]
> > > >
> > > > +        movd    xmm2,DWORD[4+r11]
> > > >
> > > > +        punpckldq       xmm5,xmm1
> > > >
> > > > +        punpckldq       xmm0,xmm2
> > > >
> > > > +        punpckldq       xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm11
> > > >
> > > > +DB      102,15,56,0,238
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm11
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(16-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm14
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[((-96))+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm11
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm4,xmm11
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm13
> > > >
> > > > +        pand    xmm4,xmm12
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm15
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm15
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        movdqa  xmm4,xmm8
> > > >
> > > > +        movdqa  xmm7,xmm15
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm4,xmm15
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm3,xmm4
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm14,xmm8
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm14,xmm3
> > > >
> > > > +        paddd   xmm10,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm14,xmm5
> > > >
> > > > +        paddd   xmm14,xmm7
> > > >
> > > > +        movd    xmm5,DWORD[8+r8]
> > > >
> > > > +        movd    xmm0,DWORD[8+r9]
> > > >
> > > > +        movd    xmm1,DWORD[8+r10]
> > > >
> > > > +        movd    xmm2,DWORD[8+r11]
> > > >
> > > > +        punpckldq       xmm5,xmm1
> > > >
> > > > +        punpckldq       xmm0,xmm2
> > > >
> > > > +        punpckldq       xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +DB      102,15,56,0,238
> > > >
> > > > +        movdqa  xmm2,xmm10
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm10
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(32-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm13
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm10
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm10
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm12
> > > >
> > > > +        pand    xmm3,xmm11
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm14
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm14
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm15
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm3,xmm14
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm4,xmm3
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm13,xmm15
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm13,xmm4
> > > >
> > > > +        paddd   xmm9,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm13,xmm5
> > > >
> > > > +        paddd   xmm13,xmm7
> > > >
> > > > +        movd    xmm5,DWORD[12+r8]
> > > >
> > > > +        movd    xmm0,DWORD[12+r9]
> > > >
> > > > +        movd    xmm1,DWORD[12+r10]
> > > >
> > > > +        movd    xmm2,DWORD[12+r11]
> > > >
> > > > +        punpckldq       xmm5,xmm1
> > > >
> > > > +        punpckldq       xmm0,xmm2
> > > >
> > > > +        punpckldq       xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm9
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm9
> > > >
> > > > +DB      102,15,56,0,238
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm9
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(48-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm12
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[((-32))+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm9
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm4,xmm9
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm11
> > > >
> > > > +        pand    xmm4,xmm10
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm13
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm13
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        movdqa  xmm4,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm4,xmm13
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm3,xmm4
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm12,xmm14
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm12,xmm3
> > > >
> > > > +        paddd   xmm8,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm12,xmm5
> > > >
> > > > +        paddd   xmm12,xmm7
> > > >
> > > > +        movd    xmm5,DWORD[16+r8]
> > > >
> > > > +        movd    xmm0,DWORD[16+r9]
> > > >
> > > > +        movd    xmm1,DWORD[16+r10]
> > > >
> > > > +        movd    xmm2,DWORD[16+r11]
> > > >
> > > > +        punpckldq       xmm5,xmm1
> > > >
> > > > +        punpckldq       xmm0,xmm2
> > > >
> > > > +        punpckldq       xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm8
> > > >
> > > > +DB      102,15,56,0,238
> > > >
> > > > +        movdqa  xmm2,xmm8
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm8
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(64-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm11
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm8
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm8
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm10
> > > >
> > > > +        pand    xmm3,xmm9
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm12
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm12
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm13
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm3,xmm12
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm4,xmm3
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm11,xmm13
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm11,xmm4
> > > >
> > > > +        paddd   xmm15,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm11,xmm5
> > > >
> > > > +        paddd   xmm11,xmm7
> > > >
> > > > +        movd    xmm5,DWORD[20+r8]
> > > >
> > > > +        movd    xmm0,DWORD[20+r9]
> > > >
> > > > +        movd    xmm1,DWORD[20+r10]
> > > >
> > > > +        movd    xmm2,DWORD[20+r11]
> > > >
> > > > +        punpckldq       xmm5,xmm1
> > > >
> > > > +        punpckldq       xmm0,xmm2
> > > >
> > > > +        punpckldq       xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm15
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm15
> > > >
> > > > +DB      102,15,56,0,238
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm15
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(80-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm10
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[32+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm15
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm4,xmm15
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm9
> > > >
> > > > +        pand    xmm4,xmm8
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm11
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        movdqa  xmm4,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm4,xmm11
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm3,xmm4
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm10,xmm12
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm10,xmm3
> > > >
> > > > +        paddd   xmm14,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm10,xmm5
> > > >
> > > > +        paddd   xmm10,xmm7
> > > >
> > > > +        movd    xmm5,DWORD[24+r8]
> > > >
> > > > +        movd    xmm0,DWORD[24+r9]
> > > >
> > > > +        movd    xmm1,DWORD[24+r10]
> > > >
> > > > +        movd    xmm2,DWORD[24+r11]
> > > >
> > > > +        punpckldq       xmm5,xmm1
> > > >
> > > > +        punpckldq       xmm0,xmm2
> > > >
> > > > +        punpckldq       xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +DB      102,15,56,0,238
> > > >
> > > > +        movdqa  xmm2,xmm14
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm14
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(96-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm9
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm14
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm14
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm8
> > > >
> > > > +        pand    xmm3,xmm15
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm10
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm10
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm3,xmm10
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm4,xmm3
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm9,xmm4
> > > >
> > > > +        paddd   xmm13,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm9,xmm5
> > > >
> > > > +        paddd   xmm9,xmm7
> > > >
> > > > +        movd    xmm5,DWORD[28+r8]
> > > >
> > > > +        movd    xmm0,DWORD[28+r9]
> > > >
> > > > +        movd    xmm1,DWORD[28+r10]
> > > >
> > > > +        movd    xmm2,DWORD[28+r11]
> > > >
> > > > +        punpckldq       xmm5,xmm1
> > > >
> > > > +        punpckldq       xmm0,xmm2
> > > >
> > > > +        punpckldq       xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm13
> > > >
> > > > +DB      102,15,56,0,238
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm13
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(112-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm8
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[96+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm13
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm4,xmm13
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm15
> > > >
> > > > +        pand    xmm4,xmm14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm9
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm9
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        movdqa  xmm4,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm9
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm4,xmm9
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm3,xmm4
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm8,xmm3
> > > >
> > > > +        paddd   xmm12,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm8,xmm5
> > > >
> > > > +        paddd   xmm8,xmm7
> > > >
> > > > +        lea     rbp,[256+rbp]
> > > >
> > > > +        movd    xmm5,DWORD[32+r8]
> > > >
> > > > +        movd    xmm0,DWORD[32+r9]
> > > >
> > > > +        movd    xmm1,DWORD[32+r10]
> > > >
> > > > +        movd    xmm2,DWORD[32+r11]
> > > >
> > > > +        punpckldq       xmm5,xmm1
> > > >
> > > > +        punpckldq       xmm0,xmm2
> > > >
> > > > +        punpckldq       xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +DB      102,15,56,0,238
> > > >
> > > > +        movdqa  xmm2,xmm12
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm12
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(128-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm15
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm12
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm12
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm14
> > > >
> > > > +        pand    xmm3,xmm13
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm8
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm8
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm9
> > > >
> > > > +        movdqa  xmm7,xmm8
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm3,xmm8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm4,xmm3
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm15,xmm9
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm15,xmm4
> > > >
> > > > +        paddd   xmm11,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm15,xmm5
> > > >
> > > > +        paddd   xmm15,xmm7
> > > >
> > > > +        movd    xmm5,DWORD[36+r8]
> > > >
> > > > +        movd    xmm0,DWORD[36+r9]
> > > >
> > > > +        movd    xmm1,DWORD[36+r10]
> > > >
> > > > +        movd    xmm2,DWORD[36+r11]
> > > >
> > > > +        punpckldq       xmm5,xmm1
> > > >
> > > > +        punpckldq       xmm0,xmm2
> > > >
> > > > +        punpckldq       xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm11
> > > >
> > > > +DB      102,15,56,0,238
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm11
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(144-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm14
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[((-96))+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm11
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm4,xmm11
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm13
> > > >
> > > > +        pand    xmm4,xmm12
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm15
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm15
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        movdqa  xmm4,xmm8
> > > >
> > > > +        movdqa  xmm7,xmm15
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm4,xmm15
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm3,xmm4
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm14,xmm8
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm14,xmm3
> > > >
> > > > +        paddd   xmm10,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm14,xmm5
> > > >
> > > > +        paddd   xmm14,xmm7
> > > >
> > > > +        movd    xmm5,DWORD[40+r8]
> > > >
> > > > +        movd    xmm0,DWORD[40+r9]
> > > >
> > > > +        movd    xmm1,DWORD[40+r10]
> > > >
> > > > +        movd    xmm2,DWORD[40+r11]
> > > >
> > > > +        punpckldq       xmm5,xmm1
> > > >
> > > > +        punpckldq       xmm0,xmm2
> > > >
> > > > +        punpckldq       xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +DB      102,15,56,0,238
> > > >
> > > > +        movdqa  xmm2,xmm10
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm10
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(160-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm13
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm10
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm10
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm12
> > > >
> > > > +        pand    xmm3,xmm11
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm14
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm14
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm15
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm3,xmm14
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm4,xmm3
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm13,xmm15
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm13,xmm4
> > > >
> > > > +        paddd   xmm9,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm13,xmm5
> > > >
> > > > +        paddd   xmm13,xmm7
> > > >
> > > > +        movd    xmm5,DWORD[44+r8]
> > > >
> > > > +        movd    xmm0,DWORD[44+r9]
> > > >
> > > > +        movd    xmm1,DWORD[44+r10]
> > > >
> > > > +        movd    xmm2,DWORD[44+r11]
> > > >
> > > > +        punpckldq       xmm5,xmm1
> > > >
> > > > +        punpckldq       xmm0,xmm2
> > > >
> > > > +        punpckldq       xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm9
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm9
> > > >
> > > > +DB      102,15,56,0,238
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm9
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(176-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm12
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[((-32))+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm9
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm4,xmm9
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm11
> > > >
> > > > +        pand    xmm4,xmm10
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm13
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm13
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        movdqa  xmm4,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm4,xmm13
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm3,xmm4
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm12,xmm14
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm12,xmm3
> > > >
> > > > +        paddd   xmm8,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm12,xmm5
> > > >
> > > > +        paddd   xmm12,xmm7
> > > >
> > > > +        movd    xmm5,DWORD[48+r8]
> > > >
> > > > +        movd    xmm0,DWORD[48+r9]
> > > >
> > > > +        movd    xmm1,DWORD[48+r10]
> > > >
> > > > +        movd    xmm2,DWORD[48+r11]
> > > >
> > > > +        punpckldq       xmm5,xmm1
> > > >
> > > > +        punpckldq       xmm0,xmm2
> > > >
> > > > +        punpckldq       xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm8
> > > >
> > > > +DB      102,15,56,0,238
> > > >
> > > > +        movdqa  xmm2,xmm8
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm8
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(192-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm11
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm8
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm8
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm10
> > > >
> > > > +        pand    xmm3,xmm9
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm12
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm12
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm13
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm3,xmm12
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm4,xmm3
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm11,xmm13
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm11,xmm4
> > > >
> > > > +        paddd   xmm15,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm11,xmm5
> > > >
> > > > +        paddd   xmm11,xmm7
> > > >
> > > > +        movd    xmm5,DWORD[52+r8]
> > > >
> > > > +        movd    xmm0,DWORD[52+r9]
> > > >
> > > > +        movd    xmm1,DWORD[52+r10]
> > > >
> > > > +        movd    xmm2,DWORD[52+r11]
> > > >
> > > > +        punpckldq       xmm5,xmm1
> > > >
> > > > +        punpckldq       xmm0,xmm2
> > > >
> > > > +        punpckldq       xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm15
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm15
> > > >
> > > > +DB      102,15,56,0,238
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm15
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(208-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm10
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[32+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm15
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm4,xmm15
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm9
> > > >
> > > > +        pand    xmm4,xmm8
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm11
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        movdqa  xmm4,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm4,xmm11
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm3,xmm4
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm10,xmm12
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm10,xmm3
> > > >
> > > > +        paddd   xmm14,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm10,xmm5
> > > >
> > > > +        paddd   xmm10,xmm7
> > > >
> > > > +        movd    xmm5,DWORD[56+r8]
> > > >
> > > > +        movd    xmm0,DWORD[56+r9]
> > > >
> > > > +        movd    xmm1,DWORD[56+r10]
> > > >
> > > > +        movd    xmm2,DWORD[56+r11]
> > > >
> > > > +        punpckldq       xmm5,xmm1
> > > >
> > > > +        punpckldq       xmm0,xmm2
> > > >
> > > > +        punpckldq       xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +DB      102,15,56,0,238
> > > >
> > > > +        movdqa  xmm2,xmm14
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm14
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(224-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm9
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm14
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm14
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm8
> > > >
> > > > +        pand    xmm3,xmm15
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm10
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm10
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm3,xmm10
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm4,xmm3
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm9,xmm4
> > > >
> > > > +        paddd   xmm13,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm9,xmm5
> > > >
> > > > +        paddd   xmm9,xmm7
> > > >
> > > > +        movd    xmm5,DWORD[60+r8]
> > > >
> > > > +        lea     r8,[64+r8]
> > > >
> > > > +        movd    xmm0,DWORD[60+r9]
> > > >
> > > > +        lea     r9,[64+r9]
> > > >
> > > > +        movd    xmm1,DWORD[60+r10]
> > > >
> > > > +        lea     r10,[64+r10]
> > > >
> > > > +        movd    xmm2,DWORD[60+r11]
> > > >
> > > > +        lea     r11,[64+r11]
> > > >
> > > > +        punpckldq       xmm5,xmm1
> > > >
> > > > +        punpckldq       xmm0,xmm2
> > > >
> > > > +        punpckldq       xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm13
> > > >
> > > > +DB      102,15,56,0,238
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm13
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(240-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm8
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[96+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm13
> > > >
> > > > +        prefetcht0      [63+r8]
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm4,xmm13
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm15
> > > >
> > > > +        pand    xmm4,xmm14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        prefetcht0      [63+r9]
> > > >
> > > > +        movdqa  xmm1,xmm9
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm9
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        movdqa  xmm4,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm9
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm4,xmm9
> > > >
> > > > +
> > > >
> > > > +        prefetcht0      [63+r10]
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm3,xmm4
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +        prefetcht0      [63+r11]
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm8,xmm3
> > > >
> > > > +        paddd   xmm12,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm8,xmm5
> > > >
> > > > +        paddd   xmm8,xmm7
> > > >
> > > > +        lea     rbp,[256+rbp]
> > > >
> > > > +        movdqu  xmm5,XMMWORD[((0-128))+rax]
> > > >
> > > > +        mov     ecx,3
> > > >
> > > > +        jmp     NEAR $L$oop_16_xx
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$oop_16_xx:
> > > >
> > > > +        movdqa  xmm6,XMMWORD[((16-128))+rax]
> > > >
> > > > +        paddd   xmm5,XMMWORD[((144-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm6
> > > >
> > > > +        movdqa  xmm1,xmm6
> > > >
> > > > +        psrld   xmm7,3
> > > >
> > > > +        movdqa  xmm2,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,7
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((224-128))+rax]
> > > >
> > > > +        pslld   xmm2,14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm1,18-7
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,25-14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm0,10
> > > >
> > > > +        movdqa  xmm1,xmm3
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm3,17
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm1,13
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        psrld   xmm3,19-17
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        pslld   xmm1,15-13
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm12
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm12
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(0-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm15
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm12
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm12
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm14
> > > >
> > > > +        pand    xmm3,xmm13
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm8
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm8
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm9
> > > >
> > > > +        movdqa  xmm7,xmm8
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm3,xmm8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm4,xmm3
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm15,xmm9
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm15,xmm4
> > > >
> > > > +        paddd   xmm11,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm15,xmm5
> > > >
> > > > +        paddd   xmm15,xmm7
> > > >
> > > > +        movdqa  xmm5,XMMWORD[((32-128))+rax]
> > > >
> > > > +        paddd   xmm6,XMMWORD[((160-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm5
> > > >
> > > > +        movdqa  xmm1,xmm5
> > > >
> > > > +        psrld   xmm7,3
> > > >
> > > > +        movdqa  xmm2,xmm5
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,7
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((240-128))+rax]
> > > >
> > > > +        pslld   xmm2,14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm1,18-7
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,25-14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm0,10
> > > >
> > > > +        movdqa  xmm1,xmm4
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm4,17
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm1,13
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        psrld   xmm4,19-17
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        pslld   xmm1,15-13
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        paddd   xmm6,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm11
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm11
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(16-128)+rax],xmm6
> > > >
> > > > +        paddd   xmm6,xmm14
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm6,XMMWORD[((-96))+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm11
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm4,xmm11
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm13
> > > >
> > > > +        pand    xmm4,xmm12
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm15
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm15
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        movdqa  xmm4,xmm8
> > > >
> > > > +        movdqa  xmm7,xmm15
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm4,xmm15
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm6,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm3,xmm4
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm14,xmm8
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm14,xmm3
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +        paddd   xmm14,xmm7
> > > >
> > > > +        movdqa  xmm6,XMMWORD[((48-128))+rax]
> > > >
> > > > +        paddd   xmm5,XMMWORD[((176-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm6
> > > >
> > > > +        movdqa  xmm1,xmm6
> > > >
> > > > +        psrld   xmm7,3
> > > >
> > > > +        movdqa  xmm2,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,7
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((0-128))+rax]
> > > >
> > > > +        pslld   xmm2,14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm1,18-7
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,25-14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm0,10
> > > >
> > > > +        movdqa  xmm1,xmm3
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm3,17
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm1,13
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        psrld   xmm3,19-17
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        pslld   xmm1,15-13
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm10
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm10
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(32-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm13
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm10
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm10
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm12
> > > >
> > > > +        pand    xmm3,xmm11
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm14
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm14
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm15
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm3,xmm14
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm4,xmm3
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm13,xmm15
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm13,xmm4
> > > >
> > > > +        paddd   xmm9,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm13,xmm5
> > > >
> > > > +        paddd   xmm13,xmm7
> > > >
> > > > +        movdqa  xmm5,XMMWORD[((64-128))+rax]
> > > >
> > > > +        paddd   xmm6,XMMWORD[((192-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm5
> > > >
> > > > +        movdqa  xmm1,xmm5
> > > >
> > > > +        psrld   xmm7,3
> > > >
> > > > +        movdqa  xmm2,xmm5
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,7
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((16-128))+rax]
> > > >
> > > > +        pslld   xmm2,14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm1,18-7
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,25-14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm0,10
> > > >
> > > > +        movdqa  xmm1,xmm4
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm4,17
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm1,13
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        psrld   xmm4,19-17
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        pslld   xmm1,15-13
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        paddd   xmm6,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm9
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm9
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm9
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(48-128)+rax],xmm6
> > > >
> > > > +        paddd   xmm6,xmm12
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm6,XMMWORD[((-32))+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm9
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm4,xmm9
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm11
> > > >
> > > > +        pand    xmm4,xmm10
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm13
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm13
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        movdqa  xmm4,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm4,xmm13
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm6,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm3,xmm4
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm12,xmm14
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm12,xmm3
> > > >
> > > > +        paddd   xmm8,xmm6
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +        paddd   xmm12,xmm7
> > > >
> > > > +        movdqa  xmm6,XMMWORD[((80-128))+rax]
> > > >
> > > > +        paddd   xmm5,XMMWORD[((208-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm6
> > > >
> > > > +        movdqa  xmm1,xmm6
> > > >
> > > > +        psrld   xmm7,3
> > > >
> > > > +        movdqa  xmm2,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,7
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((32-128))+rax]
> > > >
> > > > +        pslld   xmm2,14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm1,18-7
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,25-14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm0,10
> > > >
> > > > +        movdqa  xmm1,xmm3
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm3,17
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm1,13
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        psrld   xmm3,19-17
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        pslld   xmm1,15-13
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm8
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm8
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm8
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(64-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm11
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm8
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm8
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm10
> > > >
> > > > +        pand    xmm3,xmm9
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm12
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm12
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm13
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm3,xmm12
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm4,xmm3
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm11,xmm13
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm11,xmm4
> > > >
> > > > +        paddd   xmm15,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm11,xmm5
> > > >
> > > > +        paddd   xmm11,xmm7
> > > >
> > > > +        movdqa  xmm5,XMMWORD[((96-128))+rax]
> > > >
> > > > +        paddd   xmm6,XMMWORD[((224-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm5
> > > >
> > > > +        movdqa  xmm1,xmm5
> > > >
> > > > +        psrld   xmm7,3
> > > >
> > > > +        movdqa  xmm2,xmm5
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,7
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((48-128))+rax]
> > > >
> > > > +        pslld   xmm2,14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm1,18-7
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,25-14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm0,10
> > > >
> > > > +        movdqa  xmm1,xmm4
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm4,17
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm1,13
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        psrld   xmm4,19-17
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        pslld   xmm1,15-13
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        paddd   xmm6,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm15
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm15
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm15
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(80-128)+rax],xmm6
> > > >
> > > > +        paddd   xmm6,xmm10
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm6,XMMWORD[32+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm15
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm4,xmm15
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm9
> > > >
> > > > +        pand    xmm4,xmm8
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm11
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        movdqa  xmm4,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm4,xmm11
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm6,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm3,xmm4
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm10,xmm12
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm10,xmm3
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +        paddd   xmm10,xmm7
> > > >
> > > > +        movdqa  xmm6,XMMWORD[((112-128))+rax]
> > > >
> > > > +        paddd   xmm5,XMMWORD[((240-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm6
> > > >
> > > > +        movdqa  xmm1,xmm6
> > > >
> > > > +        psrld   xmm7,3
> > > >
> > > > +        movdqa  xmm2,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,7
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((64-128))+rax]
> > > >
> > > > +        pslld   xmm2,14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm1,18-7
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,25-14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm0,10
> > > >
> > > > +        movdqa  xmm1,xmm3
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm3,17
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm1,13
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        psrld   xmm3,19-17
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        pslld   xmm1,15-13
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm14
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm14
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(96-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm9
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm14
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm14
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm8
> > > >
> > > > +        pand    xmm3,xmm15
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm10
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm10
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm3,xmm10
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm4,xmm3
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm9,xmm4
> > > >
> > > > +        paddd   xmm13,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm9,xmm5
> > > >
> > > > +        paddd   xmm9,xmm7
> > > >
> > > > +        movdqa  xmm5,XMMWORD[((128-128))+rax]
> > > >
> > > > +        paddd   xmm6,XMMWORD[((0-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm5
> > > >
> > > > +        movdqa  xmm1,xmm5
> > > >
> > > > +        psrld   xmm7,3
> > > >
> > > > +        movdqa  xmm2,xmm5
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,7
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((80-128))+rax]
> > > >
> > > > +        pslld   xmm2,14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm1,18-7
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,25-14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm0,10
> > > >
> > > > +        movdqa  xmm1,xmm4
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm4,17
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm1,13
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        psrld   xmm4,19-17
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        pslld   xmm1,15-13
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        paddd   xmm6,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm13
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm13
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(112-128)+rax],xmm6
> > > >
> > > > +        paddd   xmm6,xmm8
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm6,XMMWORD[96+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm13
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm4,xmm13
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm15
> > > >
> > > > +        pand    xmm4,xmm14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm9
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm9
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        movdqa  xmm4,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm9
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm4,xmm9
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm6,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm3,xmm4
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm8,xmm3
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm8,xmm6
> > > >
> > > > +        paddd   xmm8,xmm7
> > > >
> > > > +        lea     rbp,[256+rbp]
> > > >
> > > > +        movdqa  xmm6,XMMWORD[((144-128))+rax]
> > > >
> > > > +        paddd   xmm5,XMMWORD[((16-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm6
> > > >
> > > > +        movdqa  xmm1,xmm6
> > > >
> > > > +        psrld   xmm7,3
> > > >
> > > > +        movdqa  xmm2,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,7
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((96-128))+rax]
> > > >
> > > > +        pslld   xmm2,14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm1,18-7
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,25-14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm0,10
> > > >
> > > > +        movdqa  xmm1,xmm3
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm3,17
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm1,13
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        psrld   xmm3,19-17
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        pslld   xmm1,15-13
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm12
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm12
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(128-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm15
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm12
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm12
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm14
> > > >
> > > > +        pand    xmm3,xmm13
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm8
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm8
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm9
> > > >
> > > > +        movdqa  xmm7,xmm8
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm3,xmm8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm4,xmm3
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm15,xmm9
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm15,xmm4
> > > >
> > > > +        paddd   xmm11,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm15,xmm5
> > > >
> > > > +        paddd   xmm15,xmm7
> > > >
> > > > +        movdqa  xmm5,XMMWORD[((160-128))+rax]
> > > >
> > > > +        paddd   xmm6,XMMWORD[((32-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm5
> > > >
> > > > +        movdqa  xmm1,xmm5
> > > >
> > > > +        psrld   xmm7,3
> > > >
> > > > +        movdqa  xmm2,xmm5
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,7
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((112-128))+rax]
> > > >
> > > > +        pslld   xmm2,14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm1,18-7
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,25-14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm0,10
> > > >
> > > > +        movdqa  xmm1,xmm4
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm4,17
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm1,13
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        psrld   xmm4,19-17
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        pslld   xmm1,15-13
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        paddd   xmm6,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm11
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm11
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(144-128)+rax],xmm6
> > > >
> > > > +        paddd   xmm6,xmm14
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm6,XMMWORD[((-96))+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm11
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm4,xmm11
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm13
> > > >
> > > > +        pand    xmm4,xmm12
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm15
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm15
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        movdqa  xmm4,xmm8
> > > >
> > > > +        movdqa  xmm7,xmm15
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm4,xmm15
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm6,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm3,xmm4
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm14,xmm8
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm14,xmm3
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +        paddd   xmm14,xmm7
> > > >
> > > > +        movdqa  xmm6,XMMWORD[((176-128))+rax]
> > > >
> > > > +        paddd   xmm5,XMMWORD[((48-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm6
> > > >
> > > > +        movdqa  xmm1,xmm6
> > > >
> > > > +        psrld   xmm7,3
> > > >
> > > > +        movdqa  xmm2,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,7
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((128-128))+rax]
> > > >
> > > > +        pslld   xmm2,14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm1,18-7
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,25-14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm0,10
> > > >
> > > > +        movdqa  xmm1,xmm3
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm3,17
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm1,13
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        psrld   xmm3,19-17
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        pslld   xmm1,15-13
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm10
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm10
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(160-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm13
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm10
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm10
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm12
> > > >
> > > > +        pand    xmm3,xmm11
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm14
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm14
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm15
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm3,xmm14
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm4,xmm3
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm13,xmm15
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm13,xmm4
> > > >
> > > > +        paddd   xmm9,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm13,xmm5
> > > >
> > > > +        paddd   xmm13,xmm7
> > > >
> > > > +        movdqa  xmm5,XMMWORD[((192-128))+rax]
> > > >
> > > > +        paddd   xmm6,XMMWORD[((64-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm5
> > > >
> > > > +        movdqa  xmm1,xmm5
> > > >
> > > > +        psrld   xmm7,3
> > > >
> > > > +        movdqa  xmm2,xmm5
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,7
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((144-128))+rax]
> > > >
> > > > +        pslld   xmm2,14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm1,18-7
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,25-14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm0,10
> > > >
> > > > +        movdqa  xmm1,xmm4
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm4,17
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm1,13
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        psrld   xmm4,19-17
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        pslld   xmm1,15-13
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        paddd   xmm6,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm9
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm9
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm9
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(176-128)+rax],xmm6
> > > >
> > > > +        paddd   xmm6,xmm12
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm6,XMMWORD[((-32))+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm9
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm4,xmm9
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm11
> > > >
> > > > +        pand    xmm4,xmm10
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm13
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm13
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        movdqa  xmm4,xmm14
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm4,xmm13
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm6,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm3,xmm4
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm12,xmm14
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm12,xmm3
> > > >
> > > > +        paddd   xmm8,xmm6
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +        paddd   xmm12,xmm7
> > > >
> > > > +        movdqa  xmm6,XMMWORD[((208-128))+rax]
> > > >
> > > > +        paddd   xmm5,XMMWORD[((80-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm6
> > > >
> > > > +        movdqa  xmm1,xmm6
> > > >
> > > > +        psrld   xmm7,3
> > > >
> > > > +        movdqa  xmm2,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,7
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((160-128))+rax]
> > > >
> > > > +        pslld   xmm2,14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm1,18-7
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,25-14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm0,10
> > > >
> > > > +        movdqa  xmm1,xmm3
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm3,17
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm1,13
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        psrld   xmm3,19-17
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        pslld   xmm1,15-13
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm8
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm8
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm8
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(192-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm11
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm8
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm8
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm10
> > > >
> > > > +        pand    xmm3,xmm9
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm12
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm12
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm13
> > > >
> > > > +        movdqa  xmm7,xmm12
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm3,xmm12
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm4,xmm3
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm11,xmm13
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm11,xmm4
> > > >
> > > > +        paddd   xmm15,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm11,xmm5
> > > >
> > > > +        paddd   xmm11,xmm7
> > > >
> > > > +        movdqa  xmm5,XMMWORD[((224-128))+rax]
> > > >
> > > > +        paddd   xmm6,XMMWORD[((96-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm5
> > > >
> > > > +        movdqa  xmm1,xmm5
> > > >
> > > > +        psrld   xmm7,3
> > > >
> > > > +        movdqa  xmm2,xmm5
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,7
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((176-128))+rax]
> > > >
> > > > +        pslld   xmm2,14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm1,18-7
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,25-14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm0,10
> > > >
> > > > +        movdqa  xmm1,xmm4
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm4,17
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm1,13
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        psrld   xmm4,19-17
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        pslld   xmm1,15-13
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        paddd   xmm6,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm15
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm15
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm15
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(208-128)+rax],xmm6
> > > >
> > > > +        paddd   xmm6,xmm10
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm6,XMMWORD[32+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm15
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm4,xmm15
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm9
> > > >
> > > > +        pand    xmm4,xmm8
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm11
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        movdqa  xmm4,xmm12
> > > >
> > > > +        movdqa  xmm7,xmm11
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm4,xmm11
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm6,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm3,xmm4
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm10,xmm12
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm10,xmm3
> > > >
> > > > +        paddd   xmm14,xmm6
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm10,xmm6
> > > >
> > > > +        paddd   xmm10,xmm7
> > > >
> > > > +        movdqa  xmm6,XMMWORD[((240-128))+rax]
> > > >
> > > > +        paddd   xmm5,XMMWORD[((112-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm6
> > > >
> > > > +        movdqa  xmm1,xmm6
> > > >
> > > > +        psrld   xmm7,3
> > > >
> > > > +        movdqa  xmm2,xmm6
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,7
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((192-128))+rax]
> > > >
> > > > +        pslld   xmm2,14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm1,18-7
> > > >
> > > > +        movdqa  xmm3,xmm0
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,25-14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm0,10
> > > >
> > > > +        movdqa  xmm1,xmm3
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm3,17
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm1,13
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        psrld   xmm3,19-17
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        pslld   xmm1,15-13
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm14
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm14
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm14
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(224-128)+rax],xmm5
> > > >
> > > > +        paddd   xmm5,xmm9
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm14
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm14
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm8
> > > >
> > > > +        pand    xmm3,xmm15
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm10
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm10
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +        pxor    xmm0,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm11
> > > >
> > > > +        movdqa  xmm7,xmm10
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm3,xmm10
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm5,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm4,xmm3
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm9,xmm11
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm9,xmm4
> > > >
> > > > +        paddd   xmm13,xmm5
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm9,xmm5
> > > >
> > > > +        paddd   xmm9,xmm7
> > > >
> > > > +        movdqa  xmm5,XMMWORD[((0-128))+rax]
> > > >
> > > > +        paddd   xmm6,XMMWORD[((128-128))+rax]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,xmm5
> > > >
> > > > +        movdqa  xmm1,xmm5
> > > >
> > > > +        psrld   xmm7,3
> > > >
> > > > +        movdqa  xmm2,xmm5
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,7
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((208-128))+rax]
> > > >
> > > > +        pslld   xmm2,14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm1,18-7
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,25-14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        psrld   xmm0,10
> > > >
> > > > +        movdqa  xmm1,xmm4
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm4,17
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm1,13
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        psrld   xmm4,19-17
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        pslld   xmm1,15-13
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        pxor    xmm0,xmm1
> > > >
> > > > +        paddd   xmm6,xmm0
> > > >
> > > > +        movdqa  xmm7,xmm13
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm2,xmm13
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,6
> > > >
> > > > +        movdqa  xmm1,xmm13
> > > >
> > > > +        pslld   xmm2,7
> > > >
> > > > +        movdqa  XMMWORD[(240-128)+rax],xmm6
> > > >
> > > > +        paddd   xmm6,xmm8
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,11
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        pslld   xmm2,21-7
> > > >
> > > > +        paddd   xmm6,XMMWORD[96+rbp]
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm1,25-11
> > > >
> > > > +        movdqa  xmm0,xmm13
> > > >
> > > > +
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm4,xmm13
> > > >
> > > > +        pslld   xmm2,26-21
> > > >
> > > > +        pandn   xmm0,xmm15
> > > >
> > > > +        pand    xmm4,xmm14
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm1,xmm9
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +        movdqa  xmm2,xmm9
> > > >
> > > > +        psrld   xmm1,2
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +        pxor    xmm0,xmm4
> > > >
> > > > +        movdqa  xmm4,xmm10
> > > >
> > > > +        movdqa  xmm7,xmm9
> > > >
> > > > +        pslld   xmm2,10
> > > >
> > > > +        pxor    xmm4,xmm9
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        paddd   xmm6,xmm0
> > > >
> > > > +        pslld   xmm2,19-10
> > > >
> > > > +        pand    xmm3,xmm4
> > > >
> > > > +        pxor    xmm1,xmm7
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        psrld   xmm7,22-13
> > > >
> > > > +        pxor    xmm1,xmm2
> > > >
> > > > +        movdqa  xmm8,xmm10
> > > >
> > > > +        pslld   xmm2,30-19
> > > >
> > > > +        pxor    xmm7,xmm1
> > > >
> > > > +        pxor    xmm8,xmm3
> > > >
> > > > +        paddd   xmm12,xmm6
> > > >
> > > > +        pxor    xmm7,xmm2
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm8,xmm6
> > > >
> > > > +        paddd   xmm8,xmm7
> > > >
> > > > +        lea     rbp,[256+rbp]
> > > >
> > > > +        dec     ecx
> > > >
> > > > +        jnz     NEAR $L$oop_16_xx
> > > >
> > > > +
> > > >
> > > > +        mov     ecx,1
> > > >
> > > > +        lea     rbp,[((K256+128))]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm7,XMMWORD[rbx]
> > > >
> > > > +        cmp     ecx,DWORD[rbx]
> > > >
> > > > +        pxor    xmm0,xmm0
> > > >
> > > > +        cmovge  r8,rbp
> > > >
> > > > +        cmp     ecx,DWORD[4+rbx]
> > > >
> > > > +        movdqa  xmm6,xmm7
> > > >
> > > > +        cmovge  r9,rbp
> > > >
> > > > +        cmp     ecx,DWORD[8+rbx]
> > > >
> > > > +        pcmpgtd xmm6,xmm0
> > > >
> > > > +        cmovge  r10,rbp
> > > >
> > > > +        cmp     ecx,DWORD[12+rbx]
> > > >
> > > > +        paddd   xmm7,xmm6
> > > >
> > > > +        cmovge  r11,rbp
> > > >
> > > > +
> > > >
> > > > +        movdqu  xmm0,XMMWORD[((0-128))+rdi]
> > > >
> > > > +        pand    xmm8,xmm6
> > > >
> > > > +        movdqu  xmm1,XMMWORD[((32-128))+rdi]
> > > >
> > > > +        pand    xmm9,xmm6
> > > >
> > > > +        movdqu  xmm2,XMMWORD[((64-128))+rdi]
> > > >
> > > > +        pand    xmm10,xmm6
> > > >
> > > > +        movdqu  xmm5,XMMWORD[((96-128))+rdi]
> > > >
> > > > +        pand    xmm11,xmm6
> > > >
> > > > +        paddd   xmm8,xmm0
> > > >
> > > > +        movdqu  xmm0,XMMWORD[((128-128))+rdi]
> > > >
> > > > +        pand    xmm12,xmm6
> > > >
> > > > +        paddd   xmm9,xmm1
> > > >
> > > > +        movdqu  xmm1,XMMWORD[((160-128))+rdi]
> > > >
> > > > +        pand    xmm13,xmm6
> > > >
> > > > +        paddd   xmm10,xmm2
> > > >
> > > > +        movdqu  xmm2,XMMWORD[((192-128))+rdi]
> > > >
> > > > +        pand    xmm14,xmm6
> > > >
> > > > +        paddd   xmm11,xmm5
> > > >
> > > > +        movdqu  xmm5,XMMWORD[((224-128))+rdi]
> > > >
> > > > +        pand    xmm15,xmm6
> > > >
> > > > +        paddd   xmm12,xmm0
> > > >
> > > > +        paddd   xmm13,xmm1
> > > >
> > > > +        movdqu  XMMWORD[(0-128)+rdi],xmm8
> > > >
> > > > +        paddd   xmm14,xmm2
> > > >
> > > > +        movdqu  XMMWORD[(32-128)+rdi],xmm9
> > > >
> > > > +        paddd   xmm15,xmm5
> > > >
> > > > +        movdqu  XMMWORD[(64-128)+rdi],xmm10
> > > >
> > > > +        movdqu  XMMWORD[(96-128)+rdi],xmm11
> > > >
> > > > +        movdqu  XMMWORD[(128-128)+rdi],xmm12
> > > >
> > > > +        movdqu  XMMWORD[(160-128)+rdi],xmm13
> > > >
> > > > +        movdqu  XMMWORD[(192-128)+rdi],xmm14
> > > >
> > > > +        movdqu  XMMWORD[(224-128)+rdi],xmm15
> > > >
> > > > +
> > > >
> > > > +        movdqa  XMMWORD[rbx],xmm7
> > > >
> > > > +        movdqa  xmm6,XMMWORD[$L$pbswap]
> > > >
> > > > +        dec     edx
> > > >
> > > > +        jnz     NEAR $L$oop
> > > >
> > > > +
> > > >
> > > > +        mov     edx,DWORD[280+rsp]
> > > >
> > > > +        lea     rdi,[16+rdi]
> > > >
> > > > +        lea     rsi,[64+rsi]
> > > >
> > > > +        dec     edx
> > > >
> > > > +        jnz     NEAR $L$oop_grande
> > > >
> > > > +
> > > >
> > > > +$L$done:
> > > >
> > > > +        mov     rax,QWORD[272+rsp]
> > > >
> > > > +
> > > >
> > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > >
> > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > >
> > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > >
> > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > >
> > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > >
> > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > >
> > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > >
> > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > >
> > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > >
> > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > >
> > > > +        mov     rbp,QWORD[((-16))+rax]
> > > >
> > > > +
> > > >
> > > > +        mov     rbx,QWORD[((-8))+rax]
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[rax]
> > > >
> > > > +
> > > >
> > > > +$L$epilogue:
> > > >
> > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > >
> > > > +        mov     rsi,QWORD[16+rsp]
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +$L$SEH_end_sha256_multi_block:
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +sha256_multi_block_shaext:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_sha256_multi_block_shaext:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +_shaext_shortcut:
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +
> > > >
> > > > +        push    rbx
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[((-168))+rsp]
> > > >
> > > > +        movaps  XMMWORD[rsp],xmm6
> > > >
> > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > >
> > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > >
> > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > >
> > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > >
> > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > >
> > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > >
> > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > >
> > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > >
> > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > >
> > > > +        sub     rsp,288
> > > >
> > > > +        shl     edx,1
> > > >
> > > > +        and     rsp,-256
> > > >
> > > > +        lea     rdi,[128+rdi]
> > > >
> > > > +        mov     QWORD[272+rsp],rax
> > > >
> > > > +$L$body_shaext:
> > > >
> > > > +        lea     rbx,[256+rsp]
> > > >
> > > > +        lea     rbp,[((K256_shaext+128))]
> > > >
> > > > +
> > > >
> > > > +$L$oop_grande_shaext:
> > > >
> > > > +        mov     DWORD[280+rsp],edx
> > > >
> > > > +        xor     edx,edx
> > > >
> > > > +        mov     r8,QWORD[rsi]
> > > >
> > > > +        mov     ecx,DWORD[8+rsi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        mov     DWORD[rbx],ecx
> > > >
> > > > +        cmovle  r8,rsp
> > > >
> > > > +        mov     r9,QWORD[16+rsi]
> > > >
> > > > +        mov     ecx,DWORD[24+rsi]
> > > >
> > > > +        cmp     ecx,edx
> > > >
> > > > +        cmovg   edx,ecx
> > > >
> > > > +        test    ecx,ecx
> > > >
> > > > +        mov     DWORD[4+rbx],ecx
> > > >
> > > > +        cmovle  r9,rsp
> > > >
> > > > +        test    edx,edx
> > > >
> > > > +        jz      NEAR $L$done_shaext
> > > >
> > > > +
> > > >
> > > > +        movq    xmm12,QWORD[((0-128))+rdi]
> > > >
> > > > +        movq    xmm4,QWORD[((32-128))+rdi]
> > > >
> > > > +        movq    xmm13,QWORD[((64-128))+rdi]
> > > >
> > > > +        movq    xmm5,QWORD[((96-128))+rdi]
> > > >
> > > > +        movq    xmm8,QWORD[((128-128))+rdi]
> > > >
> > > > +        movq    xmm9,QWORD[((160-128))+rdi]
> > > >
> > > > +        movq    xmm10,QWORD[((192-128))+rdi]
> > > >
> > > > +        movq    xmm11,QWORD[((224-128))+rdi]
> > > >
> > > > +
> > > >
> > > > +        punpckldq       xmm12,xmm4
> > > >
> > > > +        punpckldq       xmm13,xmm5
> > > >
> > > > +        punpckldq       xmm8,xmm9
> > > >
> > > > +        punpckldq       xmm10,xmm11
> > > >
> > > > +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm14,xmm12
> > > >
> > > > +        movdqa  xmm15,xmm13
> > > >
> > > > +        punpcklqdq      xmm12,xmm8
> > > >
> > > > +        punpcklqdq      xmm13,xmm10
> > > >
> > > > +        punpckhqdq      xmm14,xmm8
> > > >
> > > > +        punpckhqdq      xmm15,xmm10
> > > >
> > > > +
> > > >
> > > > +        pshufd  xmm12,xmm12,27
> > > >
> > > > +        pshufd  xmm13,xmm13,27
> > > >
> > > > +        pshufd  xmm14,xmm14,27
> > > >
> > > > +        pshufd  xmm15,xmm15,27
> > > >
> > > > +        jmp     NEAR $L$oop_shaext
> > > >
> > > > +
> > > >
> > > > +ALIGN   32
> > > >
> > > > +$L$oop_shaext:
> > > >
> > > > +        movdqu  xmm4,XMMWORD[r8]
> > > >
> > > > +        movdqu  xmm8,XMMWORD[r9]
> > > >
> > > > +        movdqu  xmm5,XMMWORD[16+r8]
> > > >
> > > > +        movdqu  xmm9,XMMWORD[16+r9]
> > > >
> > > > +        movdqu  xmm6,XMMWORD[32+r8]
> > > >
> > > > +DB      102,15,56,0,227
> > > >
> > > > +        movdqu  xmm10,XMMWORD[32+r9]
> > > >
> > > > +DB      102,68,15,56,0,195
> > > >
> > > > +        movdqu  xmm7,XMMWORD[48+r8]
> > > >
> > > > +        lea     r8,[64+r8]
> > > >
> > > > +        movdqu  xmm11,XMMWORD[48+r9]
> > > >
> > > > +        lea     r9,[64+r9]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((0-128))+rbp]
> > > >
> > > > +DB      102,15,56,0,235
> > > >
> > > > +        paddd   xmm0,xmm4
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        movdqa  xmm1,xmm0
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((0-128))+rbp]
> > > >
> > > > +DB      102,68,15,56,0,203
> > > >
> > > > +        paddd   xmm2,xmm8
> > > >
> > > > +        movdqa  XMMWORD[80+rsp],xmm13
> > > >
> > > > +DB      69,15,56,203,236
> > > >
> > > > +        pxor    xmm8,xmm14
> > > >
> > > > +        movdqa  xmm0,xmm2
> > > >
> > > > +        movdqa  XMMWORD[112+rsp],xmm15
> > > >
> > > > +DB      69,15,56,203,254
> > > >
> > > > +        pshufd  xmm0,xmm1,0x0e
> > > >
> > > > +        pxor    xmm4,xmm12
> > > >
> > > > +        movdqa  XMMWORD[64+rsp],xmm12
> > > >
> > > > +DB      69,15,56,203,229
> > > >
> > > > +        pshufd  xmm0,xmm2,0x0e
> > > >
> > > > +        pxor    xmm8,xmm14
> > > >
> > > > +        movdqa  XMMWORD[96+rsp],xmm14
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((16-128))+rbp]
> > > >
> > > > +        paddd   xmm1,xmm5
> > > >
> > > > +DB      102,15,56,0,243
> > > >
> > > > +DB      69,15,56,203,247
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm0,xmm1
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((16-128))+rbp]
> > > >
> > > > +        paddd   xmm2,xmm9
> > > >
> > > > +DB      69,15,56,203,236
> > > >
> > > > +        movdqa  xmm0,xmm2
> > > >
> > > > +        prefetcht0      [127+r8]
> > > >
> > > > +DB      102,15,56,0,251
> > > >
> > > > +DB      102,68,15,56,0,211
> > > >
> > > > +        prefetcht0      [127+r9]
> > > >
> > > > +DB      69,15,56,203,254
> > > >
> > > > +        pshufd  xmm0,xmm1,0x0e
> > > >
> > > > +DB      102,68,15,56,0,219
> > > >
> > > > +DB      15,56,204,229
> > > >
> > > > +DB      69,15,56,203,229
> > > >
> > > > +        pshufd  xmm0,xmm2,0x0e
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((32-128))+rbp]
> > > >
> > > > +        paddd   xmm1,xmm6
> > > >
> > > > +DB      69,15,56,203,247
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm0,xmm1
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((32-128))+rbp]
> > > >
> > > > +        paddd   xmm2,xmm10
> > > >
> > > > +DB      69,15,56,203,236
> > > >
> > > > +DB      69,15,56,204,193
> > > >
> > > > +        movdqa  xmm0,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm7
> > > >
> > > > +DB      69,15,56,203,254
> > > >
> > > > +        pshufd  xmm0,xmm1,0x0e
> > > >
> > > > +DB      102,15,58,15,222,4
> > > >
> > > > +        paddd   xmm4,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm11
> > > >
> > > > +DB      102,65,15,58,15,218,4
> > > >
> > > > +DB      15,56,204,238
> > > >
> > > > +DB      69,15,56,203,229
> > > >
> > > > +        pshufd  xmm0,xmm2,0x0e
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((48-128))+rbp]
> > > >
> > > > +        paddd   xmm1,xmm7
> > > >
> > > > +DB      69,15,56,203,247
> > > >
> > > > +DB      69,15,56,204,202
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm0,xmm1
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((48-128))+rbp]
> > > >
> > > > +        paddd   xmm8,xmm3
> > > >
> > > > +        paddd   xmm2,xmm11
> > > >
> > > > +DB      15,56,205,231
> > > >
> > > > +DB      69,15,56,203,236
> > > >
> > > > +        movdqa  xmm0,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm4
> > > >
> > > > +DB      102,15,58,15,223,4
> > > >
> > > > +DB      69,15,56,203,254
> > > >
> > > > +DB      69,15,56,205,195
> > > >
> > > > +        pshufd  xmm0,xmm1,0x0e
> > > >
> > > > +        paddd   xmm5,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm8
> > > >
> > > > +DB      102,65,15,58,15,219,4
> > > >
> > > > +DB      15,56,204,247
> > > >
> > > > +DB      69,15,56,203,229
> > > >
> > > > +        pshufd  xmm0,xmm2,0x0e
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((64-128))+rbp]
> > > >
> > > > +        paddd   xmm1,xmm4
> > > >
> > > > +DB      69,15,56,203,247
> > > >
> > > > +DB      69,15,56,204,211
> > > >
> > > > +        movdqa  xmm0,xmm1
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((64-128))+rbp]
> > > >
> > > > +        paddd   xmm9,xmm3
> > > >
> > > > +        paddd   xmm2,xmm8
> > > >
> > > > +DB      15,56,205,236
> > > >
> > > > +DB      69,15,56,203,236
> > > >
> > > > +        movdqa  xmm0,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm5
> > > >
> > > > +DB      102,15,58,15,220,4
> > > >
> > > > +DB      69,15,56,203,254
> > > >
> > > > +DB      69,15,56,205,200
> > > >
> > > > +        pshufd  xmm0,xmm1,0x0e
> > > >
> > > > +        paddd   xmm6,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm9
> > > >
> > > > +DB      102,65,15,58,15,216,4
> > > >
> > > > +DB      15,56,204,252
> > > >
> > > > +DB      69,15,56,203,229
> > > >
> > > > +        pshufd  xmm0,xmm2,0x0e
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((80-128))+rbp]
> > > >
> > > > +        paddd   xmm1,xmm5
> > > >
> > > > +DB      69,15,56,203,247
> > > >
> > > > +DB      69,15,56,204,216
> > > >
> > > > +        movdqa  xmm0,xmm1
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((80-128))+rbp]
> > > >
> > > > +        paddd   xmm10,xmm3
> > > >
> > > > +        paddd   xmm2,xmm9
> > > >
> > > > +DB      15,56,205,245
> > > >
> > > > +DB      69,15,56,203,236
> > > >
> > > > +        movdqa  xmm0,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm6
> > > >
> > > > +DB      102,15,58,15,221,4
> > > >
> > > > +DB      69,15,56,203,254
> > > >
> > > > +DB      69,15,56,205,209
> > > >
> > > > +        pshufd  xmm0,xmm1,0x0e
> > > >
> > > > +        paddd   xmm7,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm10
> > > >
> > > > +DB      102,65,15,58,15,217,4
> > > >
> > > > +DB      15,56,204,229
> > > >
> > > > +DB      69,15,56,203,229
> > > >
> > > > +        pshufd  xmm0,xmm2,0x0e
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((96-128))+rbp]
> > > >
> > > > +        paddd   xmm1,xmm6
> > > >
> > > > +DB      69,15,56,203,247
> > > >
> > > > +DB      69,15,56,204,193
> > > >
> > > > +        movdqa  xmm0,xmm1
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((96-128))+rbp]
> > > >
> > > > +        paddd   xmm11,xmm3
> > > >
> > > > +        paddd   xmm2,xmm10
> > > >
> > > > +DB      15,56,205,254
> > > >
> > > > +DB      69,15,56,203,236
> > > >
> > > > +        movdqa  xmm0,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm7
> > > >
> > > > +DB      102,15,58,15,222,4
> > > >
> > > > +DB      69,15,56,203,254
> > > >
> > > > +DB      69,15,56,205,218
> > > >
> > > > +        pshufd  xmm0,xmm1,0x0e
> > > >
> > > > +        paddd   xmm4,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm11
> > > >
> > > > +DB      102,65,15,58,15,218,4
> > > >
> > > > +DB      15,56,204,238
> > > >
> > > > +DB      69,15,56,203,229
> > > >
> > > > +        pshufd  xmm0,xmm2,0x0e
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((112-128))+rbp]
> > > >
> > > > +        paddd   xmm1,xmm7
> > > >
> > > > +DB      69,15,56,203,247
> > > >
> > > > +DB      69,15,56,204,202
> > > >
> > > > +        movdqa  xmm0,xmm1
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((112-128))+rbp]
> > > >
> > > > +        paddd   xmm8,xmm3
> > > >
> > > > +        paddd   xmm2,xmm11
> > > >
> > > > +DB      15,56,205,231
> > > >
> > > > +DB      69,15,56,203,236
> > > >
> > > > +        movdqa  xmm0,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm4
> > > >
> > > > +DB      102,15,58,15,223,4
> > > >
> > > > +DB      69,15,56,203,254
> > > >
> > > > +DB      69,15,56,205,195
> > > >
> > > > +        pshufd  xmm0,xmm1,0x0e
> > > >
> > > > +        paddd   xmm5,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm8
> > > >
> > > > +DB      102,65,15,58,15,219,4
> > > >
> > > > +DB      15,56,204,247
> > > >
> > > > +DB      69,15,56,203,229
> > > >
> > > > +        pshufd  xmm0,xmm2,0x0e
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((128-128))+rbp]
> > > >
> > > > +        paddd   xmm1,xmm4
> > > >
> > > > +DB      69,15,56,203,247
> > > >
> > > > +DB      69,15,56,204,211
> > > >
> > > > +        movdqa  xmm0,xmm1
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((128-128))+rbp]
> > > >
> > > > +        paddd   xmm9,xmm3
> > > >
> > > > +        paddd   xmm2,xmm8
> > > >
> > > > +DB      15,56,205,236
> > > >
> > > > +DB      69,15,56,203,236
> > > >
> > > > +        movdqa  xmm0,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm5
> > > >
> > > > +DB      102,15,58,15,220,4
> > > >
> > > > +DB      69,15,56,203,254
> > > >
> > > > +DB      69,15,56,205,200
> > > >
> > > > +        pshufd  xmm0,xmm1,0x0e
> > > >
> > > > +        paddd   xmm6,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm9
> > > >
> > > > +DB      102,65,15,58,15,216,4
> > > >
> > > > +DB      15,56,204,252
> > > >
> > > > +DB      69,15,56,203,229
> > > >
> > > > +        pshufd  xmm0,xmm2,0x0e
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((144-128))+rbp]
> > > >
> > > > +        paddd   xmm1,xmm5
> > > >
> > > > +DB      69,15,56,203,247
> > > >
> > > > +DB      69,15,56,204,216
> > > >
> > > > +        movdqa  xmm0,xmm1
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((144-128))+rbp]
> > > >
> > > > +        paddd   xmm10,xmm3
> > > >
> > > > +        paddd   xmm2,xmm9
> > > >
> > > > +DB      15,56,205,245
> > > >
> > > > +DB      69,15,56,203,236
> > > >
> > > > +        movdqa  xmm0,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm6
> > > >
> > > > +DB      102,15,58,15,221,4
> > > >
> > > > +DB      69,15,56,203,254
> > > >
> > > > +DB      69,15,56,205,209
> > > >
> > > > +        pshufd  xmm0,xmm1,0x0e
> > > >
> > > > +        paddd   xmm7,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm10
> > > >
> > > > +DB      102,65,15,58,15,217,4
> > > >
> > > > +DB      15,56,204,229
> > > >
> > > > +DB      69,15,56,203,229
> > > >
> > > > +        pshufd  xmm0,xmm2,0x0e
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((160-128))+rbp]
> > > >
> > > > +        paddd   xmm1,xmm6
> > > >
> > > > +DB      69,15,56,203,247
> > > >
> > > > +DB      69,15,56,204,193
> > > >
> > > > +        movdqa  xmm0,xmm1
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((160-128))+rbp]
> > > >
> > > > +        paddd   xmm11,xmm3
> > > >
> > > > +        paddd   xmm2,xmm10
> > > >
> > > > +DB      15,56,205,254
> > > >
> > > > +DB      69,15,56,203,236
> > > >
> > > > +        movdqa  xmm0,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm7
> > > >
> > > > +DB      102,15,58,15,222,4
> > > >
> > > > +DB      69,15,56,203,254
> > > >
> > > > +DB      69,15,56,205,218
> > > >
> > > > +        pshufd  xmm0,xmm1,0x0e
> > > >
> > > > +        paddd   xmm4,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm11
> > > >
> > > > +DB      102,65,15,58,15,218,4
> > > >
> > > > +DB      15,56,204,238
> > > >
> > > > +DB      69,15,56,203,229
> > > >
> > > > +        pshufd  xmm0,xmm2,0x0e
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((176-128))+rbp]
> > > >
> > > > +        paddd   xmm1,xmm7
> > > >
> > > > +DB      69,15,56,203,247
> > > >
> > > > +DB      69,15,56,204,202
> > > >
> > > > +        movdqa  xmm0,xmm1
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((176-128))+rbp]
> > > >
> > > > +        paddd   xmm8,xmm3
> > > >
> > > > +        paddd   xmm2,xmm11
> > > >
> > > > +DB      15,56,205,231
> > > >
> > > > +DB      69,15,56,203,236
> > > >
> > > > +        movdqa  xmm0,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm4
> > > >
> > > > +DB      102,15,58,15,223,4
> > > >
> > > > +DB      69,15,56,203,254
> > > >
> > > > +DB      69,15,56,205,195
> > > >
> > > > +        pshufd  xmm0,xmm1,0x0e
> > > >
> > > > +        paddd   xmm5,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm8
> > > >
> > > > +DB      102,65,15,58,15,219,4
> > > >
> > > > +DB      15,56,204,247
> > > >
> > > > +DB      69,15,56,203,229
> > > >
> > > > +        pshufd  xmm0,xmm2,0x0e
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((192-128))+rbp]
> > > >
> > > > +        paddd   xmm1,xmm4
> > > >
> > > > +DB      69,15,56,203,247
> > > >
> > > > +DB      69,15,56,204,211
> > > >
> > > > +        movdqa  xmm0,xmm1
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((192-128))+rbp]
> > > >
> > > > +        paddd   xmm9,xmm3
> > > >
> > > > +        paddd   xmm2,xmm8
> > > >
> > > > +DB      15,56,205,236
> > > >
> > > > +DB      69,15,56,203,236
> > > >
> > > > +        movdqa  xmm0,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm5
> > > >
> > > > +DB      102,15,58,15,220,4
> > > >
> > > > +DB      69,15,56,203,254
> > > >
> > > > +DB      69,15,56,205,200
> > > >
> > > > +        pshufd  xmm0,xmm1,0x0e
> > > >
> > > > +        paddd   xmm6,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm9
> > > >
> > > > +DB      102,65,15,58,15,216,4
> > > >
> > > > +DB      15,56,204,252
> > > >
> > > > +DB      69,15,56,203,229
> > > >
> > > > +        pshufd  xmm0,xmm2,0x0e
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((208-128))+rbp]
> > > >
> > > > +        paddd   xmm1,xmm5
> > > >
> > > > +DB      69,15,56,203,247
> > > >
> > > > +DB      69,15,56,204,216
> > > >
> > > > +        movdqa  xmm0,xmm1
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((208-128))+rbp]
> > > >
> > > > +        paddd   xmm10,xmm3
> > > >
> > > > +        paddd   xmm2,xmm9
> > > >
> > > > +DB      15,56,205,245
> > > >
> > > > +DB      69,15,56,203,236
> > > >
> > > > +        movdqa  xmm0,xmm2
> > > >
> > > > +        movdqa  xmm3,xmm6
> > > >
> > > > +DB      102,15,58,15,221,4
> > > >
> > > > +DB      69,15,56,203,254
> > > >
> > > > +DB      69,15,56,205,209
> > > >
> > > > +        pshufd  xmm0,xmm1,0x0e
> > > >
> > > > +        paddd   xmm7,xmm3
> > > >
> > > > +        movdqa  xmm3,xmm10
> > > >
> > > > +DB      102,65,15,58,15,217,4
> > > >
> > > > +        nop
> > > >
> > > > +DB      69,15,56,203,229
> > > >
> > > > +        pshufd  xmm0,xmm2,0x0e
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((224-128))+rbp]
> > > >
> > > > +        paddd   xmm1,xmm6
> > > >
> > > > +DB      69,15,56,203,247
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm0,xmm1
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((224-128))+rbp]
> > > >
> > > > +        paddd   xmm11,xmm3
> > > >
> > > > +        paddd   xmm2,xmm10
> > > >
> > > > +DB      15,56,205,254
> > > >
> > > > +        nop
> > > >
> > > > +DB      69,15,56,203,236
> > > >
> > > > +        movdqa  xmm0,xmm2
> > > >
> > > > +        mov     ecx,1
> > > >
> > > > +        pxor    xmm6,xmm6
> > > >
> > > > +DB      69,15,56,203,254
> > > >
> > > > +DB      69,15,56,205,218
> > > >
> > > > +        pshufd  xmm0,xmm1,0x0e
> > > >
> > > > +        movdqa  xmm1,XMMWORD[((240-128))+rbp]
> > > >
> > > > +        paddd   xmm1,xmm7
> > > >
> > > > +        movq    xmm7,QWORD[rbx]
> > > >
> > > > +        nop
> > > >
> > > > +DB      69,15,56,203,229
> > > >
> > > > +        pshufd  xmm0,xmm2,0x0e
> > > >
> > > > +        movdqa  xmm2,XMMWORD[((240-128))+rbp]
> > > >
> > > > +        paddd   xmm2,xmm11
> > > >
> > > > +DB      69,15,56,203,247
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm0,xmm1
> > > >
> > > > +        cmp     ecx,DWORD[rbx]
> > > >
> > > > +        cmovge  r8,rsp
> > > >
> > > > +        cmp     ecx,DWORD[4+rbx]
> > > >
> > > > +        cmovge  r9,rsp
> > > >
> > > > +        pshufd  xmm9,xmm7,0x00
> > > >
> > > > +DB      69,15,56,203,236
> > > >
> > > > +        movdqa  xmm0,xmm2
> > > >
> > > > +        pshufd  xmm10,xmm7,0x55
> > > >
> > > > +        movdqa  xmm11,xmm7
> > > >
> > > > +DB      69,15,56,203,254
> > > >
> > > > +        pshufd  xmm0,xmm1,0x0e
> > > >
> > > > +        pcmpgtd xmm9,xmm6
> > > >
> > > > +        pcmpgtd xmm10,xmm6
> > > >
> > > > +DB      69,15,56,203,229
> > > >
> > > > +        pshufd  xmm0,xmm2,0x0e
> > > >
> > > > +        pcmpgtd xmm11,xmm6
> > > >
> > > > +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
> > > >
> > > > +DB      69,15,56,203,247
> > > >
> > > > +
> > > >
> > > > +        pand    xmm13,xmm9
> > > >
> > > > +        pand    xmm15,xmm10
> > > >
> > > > +        pand    xmm12,xmm9
> > > >
> > > > +        pand    xmm14,xmm10
> > > >
> > > > +        paddd   xmm11,xmm7
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm13,XMMWORD[80+rsp]
> > > >
> > > > +        paddd   xmm15,XMMWORD[112+rsp]
> > > >
> > > > +        paddd   xmm12,XMMWORD[64+rsp]
> > > >
> > > > +        paddd   xmm14,XMMWORD[96+rsp]
> > > >
> > > > +
> > > >
> > > > +        movq    QWORD[rbx],xmm11
> > > >
> > > > +        dec     edx
> > > >
> > > > +        jnz     NEAR $L$oop_shaext
> > > >
> > > > +
> > > >
> > > > +        mov     edx,DWORD[280+rsp]
> > > >
> > > > +
> > > >
> > > > +        pshufd  xmm12,xmm12,27
> > > >
> > > > +        pshufd  xmm13,xmm13,27
> > > >
> > > > +        pshufd  xmm14,xmm14,27
> > > >
> > > > +        pshufd  xmm15,xmm15,27
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm5,xmm12
> > > >
> > > > +        movdqa  xmm6,xmm13
> > > >
> > > > +        punpckldq       xmm12,xmm14
> > > >
> > > > +        punpckhdq       xmm5,xmm14
> > > >
> > > > +        punpckldq       xmm13,xmm15
> > > >
> > > > +        punpckhdq       xmm6,xmm15
> > > >
> > > > +
> > > >
> > > > +        movq    QWORD[(0-128)+rdi],xmm12
> > > >
> > > > +        psrldq  xmm12,8
> > > >
> > > > +        movq    QWORD[(128-128)+rdi],xmm5
> > > >
> > > > +        psrldq  xmm5,8
> > > >
> > > > +        movq    QWORD[(32-128)+rdi],xmm12
> > > >
> > > > +        movq    QWORD[(160-128)+rdi],xmm5
> > > >
> > > > +
> > > >
> > > > +        movq    QWORD[(64-128)+rdi],xmm13
> > > >
> > > > +        psrldq  xmm13,8
> > > >
> > > > +        movq    QWORD[(192-128)+rdi],xmm6
> > > >
> > > > +        psrldq  xmm6,8
> > > >
> > > > +        movq    QWORD[(96-128)+rdi],xmm13
> > > >
> > > > +        movq    QWORD[(224-128)+rdi],xmm6
> > > >
> > > > +
> > > >
> > > > +        lea     rdi,[8+rdi]
> > > >
> > > > +        lea     rsi,[32+rsi]
> > > >
> > > > +        dec     edx
> > > >
> > > > +        jnz     NEAR $L$oop_grande_shaext
> > > >
> > > > +
> > > >
> > > > +$L$done_shaext:
> > > >
> > > > +
> > > >
> > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > >
> > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > >
> > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > >
> > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > >
> > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > >
> > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > >
> > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > >
> > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > >
> > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > >
> > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > >
> > > > +        mov     rbp,QWORD[((-16))+rax]
> > > >
> > > > +
> > > >
> > > > +        mov     rbx,QWORD[((-8))+rax]
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[rax]
> > > >
> > > > +
> > > >
> > > > +$L$epilogue_shaext:
> > > >
> > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > >
> > > > +        mov     rsi,QWORD[16+rsp]
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +$L$SEH_end_sha256_multi_block_shaext:
> > > >
> > > > +ALIGN   256
> > > >
> > > > +K256:
> > > >
> > > > +        DD      1116352408,1116352408,1116352408,1116352408
> > > >
> > > > +        DD      1116352408,1116352408,1116352408,1116352408
> > > >
> > > > +        DD      1899447441,1899447441,1899447441,1899447441
> > > >
> > > > +        DD      1899447441,1899447441,1899447441,1899447441
> > > >
> > > > +        DD      3049323471,3049323471,3049323471,3049323471
> > > >
> > > > +        DD      3049323471,3049323471,3049323471,3049323471
> > > >
> > > > +        DD      3921009573,3921009573,3921009573,3921009573
> > > >
> > > > +        DD      3921009573,3921009573,3921009573,3921009573
> > > >
> > > > +        DD      961987163,961987163,961987163,961987163
> > > >
> > > > +        DD      961987163,961987163,961987163,961987163
> > > >
> > > > +        DD      1508970993,1508970993,1508970993,1508970993
> > > >
> > > > +        DD      1508970993,1508970993,1508970993,1508970993
> > > >
> > > > +        DD      2453635748,2453635748,2453635748,2453635748
> > > >
> > > > +        DD      2453635748,2453635748,2453635748,2453635748
> > > >
> > > > +        DD      2870763221,2870763221,2870763221,2870763221
> > > >
> > > > +        DD      2870763221,2870763221,2870763221,2870763221
> > > >
> > > > +        DD      3624381080,3624381080,3624381080,3624381080
> > > >
> > > > +        DD      3624381080,3624381080,3624381080,3624381080
> > > >
> > > > +        DD      310598401,310598401,310598401,310598401
> > > >
> > > > +        DD      310598401,310598401,310598401,310598401
> > > >
> > > > +        DD      607225278,607225278,607225278,607225278
> > > >
> > > > +        DD      607225278,607225278,607225278,607225278
> > > >
> > > > +        DD      1426881987,1426881987,1426881987,1426881987
> > > >
> > > > +        DD      1426881987,1426881987,1426881987,1426881987
> > > >
> > > > +        DD      1925078388,1925078388,1925078388,1925078388
> > > >
> > > > +        DD      1925078388,1925078388,1925078388,1925078388
> > > >
> > > > +        DD      2162078206,2162078206,2162078206,2162078206
> > > >
> > > > +        DD      2162078206,2162078206,2162078206,2162078206
> > > >
> > > > +        DD      2614888103,2614888103,2614888103,2614888103
> > > >
> > > > +        DD      2614888103,2614888103,2614888103,2614888103
> > > >
> > > > +        DD      3248222580,3248222580,3248222580,3248222580
> > > >
> > > > +        DD      3248222580,3248222580,3248222580,3248222580
> > > >
> > > > +        DD      3835390401,3835390401,3835390401,3835390401
> > > >
> > > > +        DD      3835390401,3835390401,3835390401,3835390401
> > > >
> > > > +        DD      4022224774,4022224774,4022224774,4022224774
> > > >
> > > > +        DD      4022224774,4022224774,4022224774,4022224774
> > > >
> > > > +        DD      264347078,264347078,264347078,264347078
> > > >
> > > > +        DD      264347078,264347078,264347078,264347078
> > > >
> > > > +        DD      604807628,604807628,604807628,604807628
> > > >
> > > > +        DD      604807628,604807628,604807628,604807628
> > > >
> > > > +        DD      770255983,770255983,770255983,770255983
> > > >
> > > > +        DD      770255983,770255983,770255983,770255983
> > > >
> > > > +        DD      1249150122,1249150122,1249150122,1249150122
> > > >
> > > > +        DD      1249150122,1249150122,1249150122,1249150122
> > > >
> > > > +        DD      1555081692,1555081692,1555081692,1555081692
> > > >
> > > > +        DD      1555081692,1555081692,1555081692,1555081692
> > > >
> > > > +        DD      1996064986,1996064986,1996064986,1996064986
> > > >
> > > > +        DD      1996064986,1996064986,1996064986,1996064986
> > > >
> > > > +        DD      2554220882,2554220882,2554220882,2554220882
> > > >
> > > > +        DD      2554220882,2554220882,2554220882,2554220882
> > > >
> > > > +        DD      2821834349,2821834349,2821834349,2821834349
> > > >
> > > > +        DD      2821834349,2821834349,2821834349,2821834349
> > > >
> > > > +        DD      2952996808,2952996808,2952996808,2952996808
> > > >
> > > > +        DD      2952996808,2952996808,2952996808,2952996808
> > > >
> > > > +        DD      3210313671,3210313671,3210313671,3210313671
> > > >
> > > > +        DD      3210313671,3210313671,3210313671,3210313671
> > > >
> > > > +        DD      3336571891,3336571891,3336571891,3336571891
> > > >
> > > > +        DD      3336571891,3336571891,3336571891,3336571891
> > > >
> > > > +        DD      3584528711,3584528711,3584528711,3584528711
> > > >
> > > > +        DD      3584528711,3584528711,3584528711,3584528711
> > > >
> > > > +        DD      113926993,113926993,113926993,113926993
> > > >
> > > > +        DD      113926993,113926993,113926993,113926993
> > > >
> > > > +        DD      338241895,338241895,338241895,338241895
> > > >
> > > > +        DD      338241895,338241895,338241895,338241895
> > > >
> > > > +        DD      666307205,666307205,666307205,666307205
> > > >
> > > > +        DD      666307205,666307205,666307205,666307205
> > > >
> > > > +        DD      773529912,773529912,773529912,773529912
> > > >
> > > > +        DD      773529912,773529912,773529912,773529912
> > > >
> > > > +        DD      1294757372,1294757372,1294757372,1294757372
> > > >
> > > > +        DD      1294757372,1294757372,1294757372,1294757372
> > > >
> > > > +        DD      1396182291,1396182291,1396182291,1396182291
> > > >
> > > > +        DD      1396182291,1396182291,1396182291,1396182291
> > > >
> > > > +        DD      1695183700,1695183700,1695183700,1695183700
> > > >
> > > > +        DD      1695183700,1695183700,1695183700,1695183700
> > > >
> > > > +        DD      1986661051,1986661051,1986661051,1986661051
> > > >
> > > > +        DD      1986661051,1986661051,1986661051,1986661051
> > > >
> > > > +        DD      2177026350,2177026350,2177026350,2177026350
> > > >
> > > > +        DD      2177026350,2177026350,2177026350,2177026350
> > > >
> > > > +        DD      2456956037,2456956037,2456956037,2456956037
> > > >
> > > > +        DD      2456956037,2456956037,2456956037,2456956037
> > > >
> > > > +        DD      2730485921,2730485921,2730485921,2730485921
> > > >
> > > > +        DD      2730485921,2730485921,2730485921,2730485921
> > > >
> > > > +        DD      2820302411,2820302411,2820302411,2820302411
> > > >
> > > > +        DD      2820302411,2820302411,2820302411,2820302411
> > > >
> > > > +        DD      3259730800,3259730800,3259730800,3259730800
> > > >
> > > > +        DD      3259730800,3259730800,3259730800,3259730800
> > > >
> > > > +        DD      3345764771,3345764771,3345764771,3345764771
> > > >
> > > > +        DD      3345764771,3345764771,3345764771,3345764771
> > > >
> > > > +        DD      3516065817,3516065817,3516065817,3516065817
> > > >
> > > > +        DD      3516065817,3516065817,3516065817,3516065817
> > > >
> > > > +        DD      3600352804,3600352804,3600352804,3600352804
> > > >
> > > > +        DD      3600352804,3600352804,3600352804,3600352804
> > > >
> > > > +        DD      4094571909,4094571909,4094571909,4094571909
> > > >
> > > > +        DD      4094571909,4094571909,4094571909,4094571909
> > > >
> > > > +        DD      275423344,275423344,275423344,275423344
> > > >
> > > > +        DD      275423344,275423344,275423344,275423344
> > > >
> > > > +        DD      430227734,430227734,430227734,430227734
> > > >
> > > > +        DD      430227734,430227734,430227734,430227734
> > > >
> > > > +        DD      506948616,506948616,506948616,506948616
> > > >
> > > > +        DD      506948616,506948616,506948616,506948616
> > > >
> > > > +        DD      659060556,659060556,659060556,659060556
> > > >
> > > > +        DD      659060556,659060556,659060556,659060556
> > > >
> > > > +        DD      883997877,883997877,883997877,883997877
> > > >
> > > > +        DD      883997877,883997877,883997877,883997877
> > > >
> > > > +        DD      958139571,958139571,958139571,958139571
> > > >
> > > > +        DD      958139571,958139571,958139571,958139571
> > > >
> > > > +        DD      1322822218,1322822218,1322822218,1322822218
> > > >
> > > > +        DD      1322822218,1322822218,1322822218,1322822218
> > > >
> > > > +        DD      1537002063,1537002063,1537002063,1537002063
> > > >
> > > > +        DD      1537002063,1537002063,1537002063,1537002063
> > > >
> > > > +        DD      1747873779,1747873779,1747873779,1747873779
> > > >
> > > > +        DD      1747873779,1747873779,1747873779,1747873779
> > > >
> > > > +        DD      1955562222,1955562222,1955562222,1955562222
> > > >
> > > > +        DD      1955562222,1955562222,1955562222,1955562222
> > > >
> > > > +        DD      2024104815,2024104815,2024104815,2024104815
> > > >
> > > > +        DD      2024104815,2024104815,2024104815,2024104815
> > > >
> > > > +        DD      2227730452,2227730452,2227730452,2227730452
> > > >
> > > > +        DD      2227730452,2227730452,2227730452,2227730452
> > > >
> > > > +        DD      2361852424,2361852424,2361852424,2361852424
> > > >
> > > > +        DD      2361852424,2361852424,2361852424,2361852424
> > > >
> > > > +        DD      2428436474,2428436474,2428436474,2428436474
> > > >
> > > > +        DD      2428436474,2428436474,2428436474,2428436474
> > > >
> > > > +        DD      2756734187,2756734187,2756734187,2756734187
> > > >
> > > > +        DD      2756734187,2756734187,2756734187,2756734187
> > > >
> > > > +        DD      3204031479,3204031479,3204031479,3204031479
> > > >
> > > > +        DD      3204031479,3204031479,3204031479,3204031479
> > > >
> > > > +        DD      3329325298,3329325298,3329325298,3329325298
> > > >
> > > > +        DD      3329325298,3329325298,3329325298,3329325298
> > > >
> > > > +$L$pbswap:
> > > >
> > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > >
> > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > >
> > > > +K256_shaext:
> > > >
> > > > +        DD      0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
> > > >
> > > > +        DD      0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
> > > >
> > > > +        DD      0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
> > > >
> > > > +        DD      0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
> > > >
> > > > +        DD      0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
> > > >
> > > > +        DD      0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
> > > >
> > > > +        DD      0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
> > > >
> > > > +        DD      0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
> > > >
> > > > +        DD      0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
> > > >
> > > > +        DD      0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
> > > >
> > > > +        DD      0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
> > > >
> > > > +        DD      0xd192e819,0xd6990624,0xf40e3585,0x106aa070
> > > >
> > > > +        DD      0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
> > > >
> > > > +        DD      0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
> > > >
> > > > +        DD      0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
> > > >
> > > > +        DD      0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
> > > >
> > > > +DB      83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111
> > > >
> > > > +DB      99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114
> > > >
> > > > +DB      32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71
> > > >
> > > > +DB      65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112
> > > >
> > > > +DB      101,110,115,115,108,46,111,114,103,62,0
> > > >
> > > > +EXTERN  __imp_RtlVirtualUnwind
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +se_handler:
> > > >
> > > > +        push    rsi
> > > >
> > > > +        push    rdi
> > > >
> > > > +        push    rbx
> > > >
> > > > +        push    rbp
> > > >
> > > > +        push    r12
> > > >
> > > > +        push    r13
> > > >
> > > > +        push    r14
> > > >
> > > > +        push    r15
> > > >
> > > > +        pushfq
> > > >
> > > > +        sub     rsp,64
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[120+r8]
> > > >
> > > > +        mov     rbx,QWORD[248+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,QWORD[8+r9]
> > > >
> > > > +        mov     r11,QWORD[56+r9]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$in_prologue
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[152+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[4+r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jae     NEAR $L$in_prologue
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[272+rax]
> > > >
> > > > +
> > > >
> > > > +        mov     rbx,QWORD[((-8))+rax]
> > > >
> > > > +        mov     rbp,QWORD[((-16))+rax]
> > > >
> > > > +        mov     QWORD[144+r8],rbx
> > > >
> > > > +        mov     QWORD[160+r8],rbp
> > > >
> > > > +
> > > >
> > > > +        lea     rsi,[((-24-160))+rax]
> > > >
> > > > +        lea     rdi,[512+r8]
> > > >
> > > > +        mov     ecx,20
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +$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[40+r9]
> > > >
> > > > +        mov     rsi,r8
> > > >
> > > > +        mov     ecx,154
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,r9
> > > >
> > > > +        xor     rcx,rcx
> > > >
> > > > +        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
> > > >
> > > > +        popfq
> > > >
> > > > +        pop     r15
> > > >
> > > > +        pop     r14
> > > >
> > > > +        pop     r13
> > > >
> > > > +        pop     r12
> > > >
> > > > +        pop     rbp
> > > >
> > > > +        pop     rbx
> > > >
> > > > +        pop     rdi
> > > >
> > > > +        pop     rsi
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +section .pdata rdata align=4
> > > >
> > > > +ALIGN   4
> > > >
> > > > +        DD      $L$SEH_begin_sha256_multi_block wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_end_sha256_multi_block wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_info_sha256_multi_block wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_begin_sha256_multi_block_shaext wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_end_sha256_multi_block_shaext wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_info_sha256_multi_block_shaext wrt ..imagebase
> > > >
> > > > +section .xdata rdata align=8
> > > >
> > > > +ALIGN   8
> > > >
> > > > +$L$SEH_info_sha256_multi_block:
> > > >
> > > > +DB      9,0,0,0
> > > >
> > > > +        DD      se_handler wrt ..imagebase
> > > >
> > > > +        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
> > > >
> > > > +$L$SEH_info_sha256_multi_block_shaext:
> > > >
> > > > +DB      9,0,0,0
> > > >
> > > > +        DD      se_handler wrt ..imagebase
> > > >
> > > > +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
> > > > wrt ..imagebase
> > > >
> > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
> > x86_64.nasm
> > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
> > > > new file mode 100644
> > > > index 0000000000..70e49862a3
> > > > --- /dev/null
> > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
> > > > @@ -0,0 +1,3313 @@
> > > > +; WARNING: do not edit!
> > > >
> > > > +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
> > > >
> > > > +;
> > > >
> > > > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
> Reserved.
> > > >
> > > > +;
> > > >
> > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > >
> > > > +; this file except in compliance with the License.  You can obtain a
> copy
> > > >
> > > > +; in the file LICENSE in the source distribution or at
> > > >
> > > > +; https://www.openssl.org/source/license.html
> > > >
> > > > +
> > > >
> > > > +default rel
> > > >
> > > > +%define XMMWORD
> > > >
> > > > +%define YMMWORD
> > > >
> > > > +%define ZMMWORD
> > > >
> > > > +section .text code align=64
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +EXTERN  OPENSSL_ia32cap_P
> > > >
> > > > +global  sha256_block_data_order
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +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:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        lea     r11,[OPENSSL_ia32cap_P]
> > > >
> > > > +        mov     r9d,DWORD[r11]
> > > >
> > > > +        mov     r10d,DWORD[4+r11]
> > > >
> > > > +        mov     r11d,DWORD[8+r11]
> > > >
> > > > +        test    r11d,536870912
> > > >
> > > > +        jnz     NEAR _shaext_shortcut
> > > >
> > > > +        test    r10d,512
> > > >
> > > > +        jnz     NEAR $L$ssse3_shortcut
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +
> > > >
> > > > +        push    rbx
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        push    r12
> > > >
> > > > +
> > > >
> > > > +        push    r13
> > > >
> > > > +
> > > >
> > > > +        push    r14
> > > >
> > > > +
> > > >
> > > > +        push    r15
> > > >
> > > > +
> > > >
> > > > +        shl     rdx,4
> > > >
> > > > +        sub     rsp,16*4+4*8
> > > >
> > > > +        lea     rdx,[rdx*4+rsi]
> > > >
> > > > +        and     rsp,-64
> > > >
> > > > +        mov     QWORD[((64+0))+rsp],rdi
> > > >
> > > > +        mov     QWORD[((64+8))+rsp],rsi
> > > >
> > > > +        mov     QWORD[((64+16))+rsp],rdx
> > > >
> > > > +        mov     QWORD[88+rsp],rax
> > > >
> > > > +
> > > >
> > > > +$L$prologue:
> > > >
> > > > +
> > > >
> > > > +        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:
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        lea     rbp,[K256]
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        mov     r12d,DWORD[rsi]
> > > >
> > > > +        mov     r13d,r8d
> > > >
> > > > +        mov     r14d,eax
> > > >
> > > > +        bswap   r12d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r15d,r9d
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r8d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r15d,r10d
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[rsp],r12d
> > > >
> > > > +        xor     r14d,eax
> > > >
> > > > +        and     r15d,r8d
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,r11d
> > > >
> > > > +        xor     r15d,r10d
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,r8d
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +
> > > >
> > > > +        mov     r15d,eax
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,eax
> > > >
> > > > +
> > > >
> > > > +        xor     r15d,ebx
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     r11d,ebx
> > > >
> > > > +
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     r11d,edi
> > > >
> > > > +        add     edx,r12d
> > > >
> > > > +        add     r11d,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        add     r11d,r14d
> > > >
> > > > +        mov     r12d,DWORD[4+rsi]
> > > >
> > > > +        mov     r13d,edx
> > > >
> > > > +        mov     r14d,r11d
> > > >
> > > > +        bswap   r12d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     edi,r8d
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,edx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     edi,r9d
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[4+rsp],r12d
> > > >
> > > > +        xor     r14d,r11d
> > > >
> > > > +        and     edi,edx
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,r10d
> > > >
> > > > +        xor     edi,r9d
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,edx
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +
> > > >
> > > > +        mov     edi,r11d
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,r11d
> > > >
> > > > +
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     r10d,eax
> > > >
> > > > +
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     r10d,r15d
> > > >
> > > > +        add     ecx,r12d
> > > >
> > > > +        add     r10d,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        add     r10d,r14d
> > > >
> > > > +        mov     r12d,DWORD[8+rsi]
> > > >
> > > > +        mov     r13d,ecx
> > > >
> > > > +        mov     r14d,r10d
> > > >
> > > > +        bswap   r12d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r15d,edx
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,ecx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r15d,r8d
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[8+rsp],r12d
> > > >
> > > > +        xor     r14d,r10d
> > > >
> > > > +        and     r15d,ecx
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,r9d
> > > >
> > > > +        xor     r15d,r8d
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,ecx
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +
> > > >
> > > > +        mov     r15d,r10d
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,r10d
> > > >
> > > > +
> > > >
> > > > +        xor     r15d,r11d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     r9d,r11d
> > > >
> > > > +
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     r9d,edi
> > > >
> > > > +        add     ebx,r12d
> > > >
> > > > +        add     r9d,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        add     r9d,r14d
> > > >
> > > > +        mov     r12d,DWORD[12+rsi]
> > > >
> > > > +        mov     r13d,ebx
> > > >
> > > > +        mov     r14d,r9d
> > > >
> > > > +        bswap   r12d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,ebx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[12+rsp],r12d
> > > >
> > > > +        xor     r14d,r9d
> > > >
> > > > +        and     edi,ebx
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,r8d
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,ebx
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +
> > > >
> > > > +        mov     edi,r9d
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,r9d
> > > >
> > > > +
> > > >
> > > > +        xor     edi,r10d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     r8d,r10d
> > > >
> > > > +
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     r8d,r15d
> > > >
> > > > +        add     eax,r12d
> > > >
> > > > +        add     r8d,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[20+rbp]
> > > >
> > > > +        add     r8d,r14d
> > > >
> > > > +        mov     r12d,DWORD[16+rsi]
> > > >
> > > > +        mov     r13d,eax
> > > >
> > > > +        mov     r14d,r8d
> > > >
> > > > +        bswap   r12d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r15d,ebx
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,eax
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r15d,ecx
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[16+rsp],r12d
> > > >
> > > > +        xor     r14d,r8d
> > > >
> > > > +        and     r15d,eax
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,edx
> > > >
> > > > +        xor     r15d,ecx
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,eax
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +
> > > >
> > > > +        mov     r15d,r8d
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,r8d
> > > >
> > > > +
> > > >
> > > > +        xor     r15d,r9d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     edx,r9d
> > > >
> > > > +
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     edx,edi
> > > >
> > > > +        add     r11d,r12d
> > > >
> > > > +        add     edx,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        add     edx,r14d
> > > >
> > > > +        mov     r12d,DWORD[20+rsi]
> > > >
> > > > +        mov     r13d,r11d
> > > >
> > > > +        mov     r14d,edx
> > > >
> > > > +        bswap   r12d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r11d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[20+rsp],r12d
> > > >
> > > > +        xor     r14d,edx
> > > >
> > > > +        and     edi,r11d
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,ecx
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,r11d
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,edx
> > > >
> > > > +
> > > >
> > > > +        xor     edi,r8d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     ecx,r8d
> > > >
> > > > +
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     ecx,r15d
> > > >
> > > > +        add     r10d,r12d
> > > >
> > > > +        add     ecx,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        add     ecx,r14d
> > > >
> > > > +        mov     r12d,DWORD[24+rsi]
> > > >
> > > > +        mov     r13d,r10d
> > > >
> > > > +        mov     r14d,ecx
> > > >
> > > > +        bswap   r12d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r15d,r11d
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r10d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r15d,eax
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[24+rsp],r12d
> > > >
> > > > +        xor     r14d,ecx
> > > >
> > > > +        and     r15d,r10d
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,ebx
> > > >
> > > > +        xor     r15d,eax
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,r10d
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +
> > > >
> > > > +        mov     r15d,ecx
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,ecx
> > > >
> > > > +
> > > >
> > > > +        xor     r15d,edx
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     ebx,edx
> > > >
> > > > +
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     ebx,edi
> > > >
> > > > +        add     r9d,r12d
> > > >
> > > > +        add     ebx,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        add     ebx,r14d
> > > >
> > > > +        mov     r12d,DWORD[28+rsi]
> > > >
> > > > +        mov     r13d,r9d
> > > >
> > > > +        mov     r14d,ebx
> > > >
> > > > +        bswap   r12d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     edi,r10d
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r9d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     edi,r11d
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[28+rsp],r12d
> > > >
> > > > +        xor     r14d,ebx
> > > >
> > > > +        and     edi,r9d
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,eax
> > > >
> > > > +        xor     edi,r11d
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,r9d
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,ebx
> > > >
> > > > +
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     eax,ecx
> > > >
> > > > +
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     eax,r15d
> > > >
> > > > +        add     r8d,r12d
> > > >
> > > > +        add     eax,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[20+rbp]
> > > >
> > > > +        add     eax,r14d
> > > >
> > > > +        mov     r12d,DWORD[32+rsi]
> > > >
> > > > +        mov     r13d,r8d
> > > >
> > > > +        mov     r14d,eax
> > > >
> > > > +        bswap   r12d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r15d,r9d
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r8d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r15d,r10d
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[32+rsp],r12d
> > > >
> > > > +        xor     r14d,eax
> > > >
> > > > +        and     r15d,r8d
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,r11d
> > > >
> > > > +        xor     r15d,r10d
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,r8d
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +
> > > >
> > > > +        mov     r15d,eax
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,eax
> > > >
> > > > +
> > > >
> > > > +        xor     r15d,ebx
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     r11d,ebx
> > > >
> > > > +
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     r11d,edi
> > > >
> > > > +        add     edx,r12d
> > > >
> > > > +        add     r11d,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        add     r11d,r14d
> > > >
> > > > +        mov     r12d,DWORD[36+rsi]
> > > >
> > > > +        mov     r13d,edx
> > > >
> > > > +        mov     r14d,r11d
> > > >
> > > > +        bswap   r12d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     edi,r8d
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,edx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     edi,r9d
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[36+rsp],r12d
> > > >
> > > > +        xor     r14d,r11d
> > > >
> > > > +        and     edi,edx
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,r10d
> > > >
> > > > +        xor     edi,r9d
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,edx
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +
> > > >
> > > > +        mov     edi,r11d
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,r11d
> > > >
> > > > +
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     r10d,eax
> > > >
> > > > +
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     r10d,r15d
> > > >
> > > > +        add     ecx,r12d
> > > >
> > > > +        add     r10d,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        add     r10d,r14d
> > > >
> > > > +        mov     r12d,DWORD[40+rsi]
> > > >
> > > > +        mov     r13d,ecx
> > > >
> > > > +        mov     r14d,r10d
> > > >
> > > > +        bswap   r12d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r15d,edx
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,ecx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r15d,r8d
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[40+rsp],r12d
> > > >
> > > > +        xor     r14d,r10d
> > > >
> > > > +        and     r15d,ecx
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,r9d
> > > >
> > > > +        xor     r15d,r8d
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,ecx
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +
> > > >
> > > > +        mov     r15d,r10d
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,r10d
> > > >
> > > > +
> > > >
> > > > +        xor     r15d,r11d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     r9d,r11d
> > > >
> > > > +
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     r9d,edi
> > > >
> > > > +        add     ebx,r12d
> > > >
> > > > +        add     r9d,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        add     r9d,r14d
> > > >
> > > > +        mov     r12d,DWORD[44+rsi]
> > > >
> > > > +        mov     r13d,ebx
> > > >
> > > > +        mov     r14d,r9d
> > > >
> > > > +        bswap   r12d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,ebx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[44+rsp],r12d
> > > >
> > > > +        xor     r14d,r9d
> > > >
> > > > +        and     edi,ebx
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,r8d
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,ebx
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +
> > > >
> > > > +        mov     edi,r9d
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,r9d
> > > >
> > > > +
> > > >
> > > > +        xor     edi,r10d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     r8d,r10d
> > > >
> > > > +
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     r8d,r15d
> > > >
> > > > +        add     eax,r12d
> > > >
> > > > +        add     r8d,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[20+rbp]
> > > >
> > > > +        add     r8d,r14d
> > > >
> > > > +        mov     r12d,DWORD[48+rsi]
> > > >
> > > > +        mov     r13d,eax
> > > >
> > > > +        mov     r14d,r8d
> > > >
> > > > +        bswap   r12d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r15d,ebx
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,eax
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r15d,ecx
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[48+rsp],r12d
> > > >
> > > > +        xor     r14d,r8d
> > > >
> > > > +        and     r15d,eax
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,edx
> > > >
> > > > +        xor     r15d,ecx
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,eax
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +
> > > >
> > > > +        mov     r15d,r8d
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,r8d
> > > >
> > > > +
> > > >
> > > > +        xor     r15d,r9d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     edx,r9d
> > > >
> > > > +
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     edx,edi
> > > >
> > > > +        add     r11d,r12d
> > > >
> > > > +        add     edx,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        add     edx,r14d
> > > >
> > > > +        mov     r12d,DWORD[52+rsi]
> > > >
> > > > +        mov     r13d,r11d
> > > >
> > > > +        mov     r14d,edx
> > > >
> > > > +        bswap   r12d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r11d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[52+rsp],r12d
> > > >
> > > > +        xor     r14d,edx
> > > >
> > > > +        and     edi,r11d
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,ecx
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,r11d
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,edx
> > > >
> > > > +
> > > >
> > > > +        xor     edi,r8d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     ecx,r8d
> > > >
> > > > +
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     ecx,r15d
> > > >
> > > > +        add     r10d,r12d
> > > >
> > > > +        add     ecx,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        add     ecx,r14d
> > > >
> > > > +        mov     r12d,DWORD[56+rsi]
> > > >
> > > > +        mov     r13d,r10d
> > > >
> > > > +        mov     r14d,ecx
> > > >
> > > > +        bswap   r12d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r15d,r11d
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r10d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r15d,eax
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[56+rsp],r12d
> > > >
> > > > +        xor     r14d,ecx
> > > >
> > > > +        and     r15d,r10d
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,ebx
> > > >
> > > > +        xor     r15d,eax
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,r10d
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +
> > > >
> > > > +        mov     r15d,ecx
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,ecx
> > > >
> > > > +
> > > >
> > > > +        xor     r15d,edx
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     ebx,edx
> > > >
> > > > +
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     ebx,edi
> > > >
> > > > +        add     r9d,r12d
> > > >
> > > > +        add     ebx,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        add     ebx,r14d
> > > >
> > > > +        mov     r12d,DWORD[60+rsi]
> > > >
> > > > +        mov     r13d,r9d
> > > >
> > > > +        mov     r14d,ebx
> > > >
> > > > +        bswap   r12d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     edi,r10d
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r9d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     edi,r11d
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[60+rsp],r12d
> > > >
> > > > +        xor     r14d,ebx
> > > >
> > > > +        and     edi,r9d
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,eax
> > > >
> > > > +        xor     edi,r11d
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,r9d
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,ebx
> > > >
> > > > +
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     eax,ecx
> > > >
> > > > +
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     eax,r15d
> > > >
> > > > +        add     r8d,r12d
> > > >
> > > > +        add     eax,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[20+rbp]
> > > >
> > > > +        jmp     NEAR $L$rounds_16_xx
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$rounds_16_xx:
> > > >
> > > > +        mov     r13d,DWORD[4+rsp]
> > > >
> > > > +        mov     r15d,DWORD[56+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12d,r13d
> > > >
> > > > +        ror     r13d,11
> > > >
> > > > +        add     eax,r14d
> > > >
> > > > +        mov     r14d,r15d
> > > >
> > > > +        ror     r15d,2
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r12d
> > > >
> > > > +        shr     r12d,3
> > > >
> > > > +        ror     r13d,7
> > > >
> > > > +        xor     r15d,r14d
> > > >
> > > > +        shr     r14d,10
> > > >
> > > > +
> > > >
> > > > +        ror     r15d,17
> > > >
> > > > +        xor     r12d,r13d
> > > >
> > > > +        xor     r15d,r14d
> > > >
> > > > +        add     r12d,DWORD[36+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12d,DWORD[rsp]
> > > >
> > > > +        mov     r13d,r8d
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +        mov     r14d,eax
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r15d,r9d
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r8d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r15d,r10d
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[rsp],r12d
> > > >
> > > > +        xor     r14d,eax
> > > >
> > > > +        and     r15d,r8d
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,r11d
> > > >
> > > > +        xor     r15d,r10d
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,r8d
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +
> > > >
> > > > +        mov     r15d,eax
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,eax
> > > >
> > > > +
> > > >
> > > > +        xor     r15d,ebx
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     r11d,ebx
> > > >
> > > > +
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     r11d,edi
> > > >
> > > > +        add     edx,r12d
> > > >
> > > > +        add     r11d,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        mov     r13d,DWORD[8+rsp]
> > > >
> > > > +        mov     edi,DWORD[60+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12d,r13d
> > > >
> > > > +        ror     r13d,11
> > > >
> > > > +        add     r11d,r14d
> > > >
> > > > +        mov     r14d,edi
> > > >
> > > > +        ror     edi,2
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r12d
> > > >
> > > > +        shr     r12d,3
> > > >
> > > > +        ror     r13d,7
> > > >
> > > > +        xor     edi,r14d
> > > >
> > > > +        shr     r14d,10
> > > >
> > > > +
> > > >
> > > > +        ror     edi,17
> > > >
> > > > +        xor     r12d,r13d
> > > >
> > > > +        xor     edi,r14d
> > > >
> > > > +        add     r12d,DWORD[40+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12d,DWORD[4+rsp]
> > > >
> > > > +        mov     r13d,edx
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +        mov     r14d,r11d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     edi,r8d
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,edx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     edi,r9d
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[4+rsp],r12d
> > > >
> > > > +        xor     r14d,r11d
> > > >
> > > > +        and     edi,edx
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,r10d
> > > >
> > > > +        xor     edi,r9d
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,edx
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +
> > > >
> > > > +        mov     edi,r11d
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,r11d
> > > >
> > > > +
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     r10d,eax
> > > >
> > > > +
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     r10d,r15d
> > > >
> > > > +        add     ecx,r12d
> > > >
> > > > +        add     r10d,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        mov     r13d,DWORD[12+rsp]
> > > >
> > > > +        mov     r15d,DWORD[rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12d,r13d
> > > >
> > > > +        ror     r13d,11
> > > >
> > > > +        add     r10d,r14d
> > > >
> > > > +        mov     r14d,r15d
> > > >
> > > > +        ror     r15d,2
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r12d
> > > >
> > > > +        shr     r12d,3
> > > >
> > > > +        ror     r13d,7
> > > >
> > > > +        xor     r15d,r14d
> > > >
> > > > +        shr     r14d,10
> > > >
> > > > +
> > > >
> > > > +        ror     r15d,17
> > > >
> > > > +        xor     r12d,r13d
> > > >
> > > > +        xor     r15d,r14d
> > > >
> > > > +        add     r12d,DWORD[44+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12d,DWORD[8+rsp]
> > > >
> > > > +        mov     r13d,ecx
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +        mov     r14d,r10d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r15d,edx
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,ecx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r15d,r8d
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[8+rsp],r12d
> > > >
> > > > +        xor     r14d,r10d
> > > >
> > > > +        and     r15d,ecx
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,r9d
> > > >
> > > > +        xor     r15d,r8d
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,ecx
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +
> > > >
> > > > +        mov     r15d,r10d
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,r10d
> > > >
> > > > +
> > > >
> > > > +        xor     r15d,r11d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     r9d,r11d
> > > >
> > > > +
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     r9d,edi
> > > >
> > > > +        add     ebx,r12d
> > > >
> > > > +        add     r9d,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        mov     r13d,DWORD[16+rsp]
> > > >
> > > > +        mov     edi,DWORD[4+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12d,r13d
> > > >
> > > > +        ror     r13d,11
> > > >
> > > > +        add     r9d,r14d
> > > >
> > > > +        mov     r14d,edi
> > > >
> > > > +        ror     edi,2
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r12d
> > > >
> > > > +        shr     r12d,3
> > > >
> > > > +        ror     r13d,7
> > > >
> > > > +        xor     edi,r14d
> > > >
> > > > +        shr     r14d,10
> > > >
> > > > +
> > > >
> > > > +        ror     edi,17
> > > >
> > > > +        xor     r12d,r13d
> > > >
> > > > +        xor     edi,r14d
> > > >
> > > > +        add     r12d,DWORD[48+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12d,DWORD[12+rsp]
> > > >
> > > > +        mov     r13d,ebx
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +        mov     r14d,r9d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,ebx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[12+rsp],r12d
> > > >
> > > > +        xor     r14d,r9d
> > > >
> > > > +        and     edi,ebx
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,r8d
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,ebx
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +
> > > >
> > > > +        mov     edi,r9d
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,r9d
> > > >
> > > > +
> > > >
> > > > +        xor     edi,r10d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     r8d,r10d
> > > >
> > > > +
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     r8d,r15d
> > > >
> > > > +        add     eax,r12d
> > > >
> > > > +        add     r8d,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[20+rbp]
> > > >
> > > > +        mov     r13d,DWORD[20+rsp]
> > > >
> > > > +        mov     r15d,DWORD[8+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12d,r13d
> > > >
> > > > +        ror     r13d,11
> > > >
> > > > +        add     r8d,r14d
> > > >
> > > > +        mov     r14d,r15d
> > > >
> > > > +        ror     r15d,2
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r12d
> > > >
> > > > +        shr     r12d,3
> > > >
> > > > +        ror     r13d,7
> > > >
> > > > +        xor     r15d,r14d
> > > >
> > > > +        shr     r14d,10
> > > >
> > > > +
> > > >
> > > > +        ror     r15d,17
> > > >
> > > > +        xor     r12d,r13d
> > > >
> > > > +        xor     r15d,r14d
> > > >
> > > > +        add     r12d,DWORD[52+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12d,DWORD[16+rsp]
> > > >
> > > > +        mov     r13d,eax
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +        mov     r14d,r8d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r15d,ebx
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,eax
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r15d,ecx
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[16+rsp],r12d
> > > >
> > > > +        xor     r14d,r8d
> > > >
> > > > +        and     r15d,eax
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,edx
> > > >
> > > > +        xor     r15d,ecx
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,eax
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +
> > > >
> > > > +        mov     r15d,r8d
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,r8d
> > > >
> > > > +
> > > >
> > > > +        xor     r15d,r9d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     edx,r9d
> > > >
> > > > +
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     edx,edi
> > > >
> > > > +        add     r11d,r12d
> > > >
> > > > +        add     edx,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        mov     r13d,DWORD[24+rsp]
> > > >
> > > > +        mov     edi,DWORD[12+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12d,r13d
> > > >
> > > > +        ror     r13d,11
> > > >
> > > > +        add     edx,r14d
> > > >
> > > > +        mov     r14d,edi
> > > >
> > > > +        ror     edi,2
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r12d
> > > >
> > > > +        shr     r12d,3
> > > >
> > > > +        ror     r13d,7
> > > >
> > > > +        xor     edi,r14d
> > > >
> > > > +        shr     r14d,10
> > > >
> > > > +
> > > >
> > > > +        ror     edi,17
> > > >
> > > > +        xor     r12d,r13d
> > > >
> > > > +        xor     edi,r14d
> > > >
> > > > +        add     r12d,DWORD[56+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12d,DWORD[20+rsp]
> > > >
> > > > +        mov     r13d,r11d
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +        mov     r14d,edx
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r11d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[20+rsp],r12d
> > > >
> > > > +        xor     r14d,edx
> > > >
> > > > +        and     edi,r11d
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,ecx
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,r11d
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,edx
> > > >
> > > > +
> > > >
> > > > +        xor     edi,r8d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     ecx,r8d
> > > >
> > > > +
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     ecx,r15d
> > > >
> > > > +        add     r10d,r12d
> > > >
> > > > +        add     ecx,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        mov     r13d,DWORD[28+rsp]
> > > >
> > > > +        mov     r15d,DWORD[16+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12d,r13d
> > > >
> > > > +        ror     r13d,11
> > > >
> > > > +        add     ecx,r14d
> > > >
> > > > +        mov     r14d,r15d
> > > >
> > > > +        ror     r15d,2
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r12d
> > > >
> > > > +        shr     r12d,3
> > > >
> > > > +        ror     r13d,7
> > > >
> > > > +        xor     r15d,r14d
> > > >
> > > > +        shr     r14d,10
> > > >
> > > > +
> > > >
> > > > +        ror     r15d,17
> > > >
> > > > +        xor     r12d,r13d
> > > >
> > > > +        xor     r15d,r14d
> > > >
> > > > +        add     r12d,DWORD[60+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12d,DWORD[24+rsp]
> > > >
> > > > +        mov     r13d,r10d
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +        mov     r14d,ecx
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r15d,r11d
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r10d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r15d,eax
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[24+rsp],r12d
> > > >
> > > > +        xor     r14d,ecx
> > > >
> > > > +        and     r15d,r10d
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,ebx
> > > >
> > > > +        xor     r15d,eax
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,r10d
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +
> > > >
> > > > +        mov     r15d,ecx
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,ecx
> > > >
> > > > +
> > > >
> > > > +        xor     r15d,edx
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     ebx,edx
> > > >
> > > > +
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     ebx,edi
> > > >
> > > > +        add     r9d,r12d
> > > >
> > > > +        add     ebx,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        mov     r13d,DWORD[32+rsp]
> > > >
> > > > +        mov     edi,DWORD[20+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12d,r13d
> > > >
> > > > +        ror     r13d,11
> > > >
> > > > +        add     ebx,r14d
> > > >
> > > > +        mov     r14d,edi
> > > >
> > > > +        ror     edi,2
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r12d
> > > >
> > > > +        shr     r12d,3
> > > >
> > > > +        ror     r13d,7
> > > >
> > > > +        xor     edi,r14d
> > > >
> > > > +        shr     r14d,10
> > > >
> > > > +
> > > >
> > > > +        ror     edi,17
> > > >
> > > > +        xor     r12d,r13d
> > > >
> > > > +        xor     edi,r14d
> > > >
> > > > +        add     r12d,DWORD[rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12d,DWORD[28+rsp]
> > > >
> > > > +        mov     r13d,r9d
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +        mov     r14d,ebx
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     edi,r10d
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r9d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     edi,r11d
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[28+rsp],r12d
> > > >
> > > > +        xor     r14d,ebx
> > > >
> > > > +        and     edi,r9d
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,eax
> > > >
> > > > +        xor     edi,r11d
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,r9d
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,ebx
> > > >
> > > > +
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     eax,ecx
> > > >
> > > > +
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     eax,r15d
> > > >
> > > > +        add     r8d,r12d
> > > >
> > > > +        add     eax,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[20+rbp]
> > > >
> > > > +        mov     r13d,DWORD[36+rsp]
> > > >
> > > > +        mov     r15d,DWORD[24+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12d,r13d
> > > >
> > > > +        ror     r13d,11
> > > >
> > > > +        add     eax,r14d
> > > >
> > > > +        mov     r14d,r15d
> > > >
> > > > +        ror     r15d,2
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r12d
> > > >
> > > > +        shr     r12d,3
> > > >
> > > > +        ror     r13d,7
> > > >
> > > > +        xor     r15d,r14d
> > > >
> > > > +        shr     r14d,10
> > > >
> > > > +
> > > >
> > > > +        ror     r15d,17
> > > >
> > > > +        xor     r12d,r13d
> > > >
> > > > +        xor     r15d,r14d
> > > >
> > > > +        add     r12d,DWORD[4+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12d,DWORD[32+rsp]
> > > >
> > > > +        mov     r13d,r8d
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +        mov     r14d,eax
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r15d,r9d
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r8d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r15d,r10d
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[32+rsp],r12d
> > > >
> > > > +        xor     r14d,eax
> > > >
> > > > +        and     r15d,r8d
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,r11d
> > > >
> > > > +        xor     r15d,r10d
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,r8d
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +
> > > >
> > > > +        mov     r15d,eax
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,eax
> > > >
> > > > +
> > > >
> > > > +        xor     r15d,ebx
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     r11d,ebx
> > > >
> > > > +
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     r11d,edi
> > > >
> > > > +        add     edx,r12d
> > > >
> > > > +        add     r11d,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        mov     r13d,DWORD[40+rsp]
> > > >
> > > > +        mov     edi,DWORD[28+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12d,r13d
> > > >
> > > > +        ror     r13d,11
> > > >
> > > > +        add     r11d,r14d
> > > >
> > > > +        mov     r14d,edi
> > > >
> > > > +        ror     edi,2
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r12d
> > > >
> > > > +        shr     r12d,3
> > > >
> > > > +        ror     r13d,7
> > > >
> > > > +        xor     edi,r14d
> > > >
> > > > +        shr     r14d,10
> > > >
> > > > +
> > > >
> > > > +        ror     edi,17
> > > >
> > > > +        xor     r12d,r13d
> > > >
> > > > +        xor     edi,r14d
> > > >
> > > > +        add     r12d,DWORD[8+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12d,DWORD[36+rsp]
> > > >
> > > > +        mov     r13d,edx
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +        mov     r14d,r11d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     edi,r8d
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,edx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     edi,r9d
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[36+rsp],r12d
> > > >
> > > > +        xor     r14d,r11d
> > > >
> > > > +        and     edi,edx
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,r10d
> > > >
> > > > +        xor     edi,r9d
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,edx
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +
> > > >
> > > > +        mov     edi,r11d
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,r11d
> > > >
> > > > +
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     r10d,eax
> > > >
> > > > +
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     r10d,r15d
> > > >
> > > > +        add     ecx,r12d
> > > >
> > > > +        add     r10d,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        mov     r13d,DWORD[44+rsp]
> > > >
> > > > +        mov     r15d,DWORD[32+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12d,r13d
> > > >
> > > > +        ror     r13d,11
> > > >
> > > > +        add     r10d,r14d
> > > >
> > > > +        mov     r14d,r15d
> > > >
> > > > +        ror     r15d,2
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r12d
> > > >
> > > > +        shr     r12d,3
> > > >
> > > > +        ror     r13d,7
> > > >
> > > > +        xor     r15d,r14d
> > > >
> > > > +        shr     r14d,10
> > > >
> > > > +
> > > >
> > > > +        ror     r15d,17
> > > >
> > > > +        xor     r12d,r13d
> > > >
> > > > +        xor     r15d,r14d
> > > >
> > > > +        add     r12d,DWORD[12+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12d,DWORD[40+rsp]
> > > >
> > > > +        mov     r13d,ecx
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +        mov     r14d,r10d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r15d,edx
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,ecx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r15d,r8d
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[40+rsp],r12d
> > > >
> > > > +        xor     r14d,r10d
> > > >
> > > > +        and     r15d,ecx
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,r9d
> > > >
> > > > +        xor     r15d,r8d
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,ecx
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +
> > > >
> > > > +        mov     r15d,r10d
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,r10d
> > > >
> > > > +
> > > >
> > > > +        xor     r15d,r11d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     r9d,r11d
> > > >
> > > > +
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     r9d,edi
> > > >
> > > > +        add     ebx,r12d
> > > >
> > > > +        add     r9d,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        mov     r13d,DWORD[48+rsp]
> > > >
> > > > +        mov     edi,DWORD[36+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12d,r13d
> > > >
> > > > +        ror     r13d,11
> > > >
> > > > +        add     r9d,r14d
> > > >
> > > > +        mov     r14d,edi
> > > >
> > > > +        ror     edi,2
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r12d
> > > >
> > > > +        shr     r12d,3
> > > >
> > > > +        ror     r13d,7
> > > >
> > > > +        xor     edi,r14d
> > > >
> > > > +        shr     r14d,10
> > > >
> > > > +
> > > >
> > > > +        ror     edi,17
> > > >
> > > > +        xor     r12d,r13d
> > > >
> > > > +        xor     edi,r14d
> > > >
> > > > +        add     r12d,DWORD[16+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12d,DWORD[44+rsp]
> > > >
> > > > +        mov     r13d,ebx
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +        mov     r14d,r9d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     edi,ecx
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,ebx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[44+rsp],r12d
> > > >
> > > > +        xor     r14d,r9d
> > > >
> > > > +        and     edi,ebx
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,r8d
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,ebx
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +
> > > >
> > > > +        mov     edi,r9d
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,r9d
> > > >
> > > > +
> > > >
> > > > +        xor     edi,r10d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     r8d,r10d
> > > >
> > > > +
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     r8d,r15d
> > > >
> > > > +        add     eax,r12d
> > > >
> > > > +        add     r8d,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[20+rbp]
> > > >
> > > > +        mov     r13d,DWORD[52+rsp]
> > > >
> > > > +        mov     r15d,DWORD[40+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12d,r13d
> > > >
> > > > +        ror     r13d,11
> > > >
> > > > +        add     r8d,r14d
> > > >
> > > > +        mov     r14d,r15d
> > > >
> > > > +        ror     r15d,2
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r12d
> > > >
> > > > +        shr     r12d,3
> > > >
> > > > +        ror     r13d,7
> > > >
> > > > +        xor     r15d,r14d
> > > >
> > > > +        shr     r14d,10
> > > >
> > > > +
> > > >
> > > > +        ror     r15d,17
> > > >
> > > > +        xor     r12d,r13d
> > > >
> > > > +        xor     r15d,r14d
> > > >
> > > > +        add     r12d,DWORD[20+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12d,DWORD[48+rsp]
> > > >
> > > > +        mov     r13d,eax
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +        mov     r14d,r8d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r15d,ebx
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,eax
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r15d,ecx
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[48+rsp],r12d
> > > >
> > > > +        xor     r14d,r8d
> > > >
> > > > +        and     r15d,eax
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,edx
> > > >
> > > > +        xor     r15d,ecx
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,eax
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +
> > > >
> > > > +        mov     r15d,r8d
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,r8d
> > > >
> > > > +
> > > >
> > > > +        xor     r15d,r9d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     edx,r9d
> > > >
> > > > +
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     edx,edi
> > > >
> > > > +        add     r11d,r12d
> > > >
> > > > +        add     edx,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        mov     r13d,DWORD[56+rsp]
> > > >
> > > > +        mov     edi,DWORD[44+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12d,r13d
> > > >
> > > > +        ror     r13d,11
> > > >
> > > > +        add     edx,r14d
> > > >
> > > > +        mov     r14d,edi
> > > >
> > > > +        ror     edi,2
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r12d
> > > >
> > > > +        shr     r12d,3
> > > >
> > > > +        ror     r13d,7
> > > >
> > > > +        xor     edi,r14d
> > > >
> > > > +        shr     r14d,10
> > > >
> > > > +
> > > >
> > > > +        ror     edi,17
> > > >
> > > > +        xor     r12d,r13d
> > > >
> > > > +        xor     edi,r14d
> > > >
> > > > +        add     r12d,DWORD[24+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12d,DWORD[52+rsp]
> > > >
> > > > +        mov     r13d,r11d
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +        mov     r14d,edx
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     edi,eax
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r11d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[52+rsp],r12d
> > > >
> > > > +        xor     r14d,edx
> > > >
> > > > +        and     edi,r11d
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,ecx
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,r11d
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,edx
> > > >
> > > > +
> > > >
> > > > +        xor     edi,r8d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     ecx,r8d
> > > >
> > > > +
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     ecx,r15d
> > > >
> > > > +        add     r10d,r12d
> > > >
> > > > +        add     ecx,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        mov     r13d,DWORD[60+rsp]
> > > >
> > > > +        mov     r15d,DWORD[48+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12d,r13d
> > > >
> > > > +        ror     r13d,11
> > > >
> > > > +        add     ecx,r14d
> > > >
> > > > +        mov     r14d,r15d
> > > >
> > > > +        ror     r15d,2
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r12d
> > > >
> > > > +        shr     r12d,3
> > > >
> > > > +        ror     r13d,7
> > > >
> > > > +        xor     r15d,r14d
> > > >
> > > > +        shr     r14d,10
> > > >
> > > > +
> > > >
> > > > +        ror     r15d,17
> > > >
> > > > +        xor     r12d,r13d
> > > >
> > > > +        xor     r15d,r14d
> > > >
> > > > +        add     r12d,DWORD[28+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12d,DWORD[56+rsp]
> > > >
> > > > +        mov     r13d,r10d
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +        mov     r14d,ecx
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r15d,r11d
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r10d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r15d,eax
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[56+rsp],r12d
> > > >
> > > > +        xor     r14d,ecx
> > > >
> > > > +        and     r15d,r10d
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,ebx
> > > >
> > > > +        xor     r15d,eax
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,r10d
> > > >
> > > > +        add     r12d,r15d
> > > >
> > > > +
> > > >
> > > > +        mov     r15d,ecx
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,ecx
> > > >
> > > > +
> > > >
> > > > +        xor     r15d,edx
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     ebx,edx
> > > >
> > > > +
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     ebx,edi
> > > >
> > > > +        add     r9d,r12d
> > > >
> > > > +        add     ebx,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[4+rbp]
> > > >
> > > > +        mov     r13d,DWORD[rsp]
> > > >
> > > > +        mov     edi,DWORD[52+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12d,r13d
> > > >
> > > > +        ror     r13d,11
> > > >
> > > > +        add     ebx,r14d
> > > >
> > > > +        mov     r14d,edi
> > > >
> > > > +        ror     edi,2
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r12d
> > > >
> > > > +        shr     r12d,3
> > > >
> > > > +        ror     r13d,7
> > > >
> > > > +        xor     edi,r14d
> > > >
> > > > +        shr     r14d,10
> > > >
> > > > +
> > > >
> > > > +        ror     edi,17
> > > >
> > > > +        xor     r12d,r13d
> > > >
> > > > +        xor     edi,r14d
> > > >
> > > > +        add     r12d,DWORD[32+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12d,DWORD[60+rsp]
> > > >
> > > > +        mov     r13d,r9d
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +        mov     r14d,ebx
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     edi,r10d
> > > >
> > > > +
> > > >
> > > > +        xor     r13d,r9d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     edi,r11d
> > > >
> > > > +
> > > >
> > > > +        mov     DWORD[60+rsp],r12d
> > > >
> > > > +        xor     r14d,ebx
> > > >
> > > > +        and     edi,r9d
> > > >
> > > > +
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        add     r12d,eax
> > > >
> > > > +        xor     edi,r11d
> > > >
> > > > +
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r13d,r9d
> > > >
> > > > +        add     r12d,edi
> > > >
> > > > +
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        add     r12d,DWORD[rbp]
> > > >
> > > > +        xor     r14d,ebx
> > > >
> > > > +
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        mov     eax,ecx
> > > >
> > > > +
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r12d,r13d
> > > >
> > > > +
> > > >
> > > > +        xor     eax,r15d
> > > >
> > > > +        add     r8d,r12d
> > > >
> > > > +        add     eax,r12d
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[20+rbp]
> > > >
> > > > +        cmp     BYTE[3+rbp],0
> > > >
> > > > +        jnz     NEAR $L$rounds_16_xx
> > > >
> > > > +
> > > >
> > > > +        mov     rdi,QWORD[((64+0))+rsp]
> > > >
> > > > +        add     eax,r14d
> > > >
> > > > +        lea     rsi,[64+rsi]
> > > >
> > > > +
> > > >
> > > > +        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[((64+16))+rsp]
> > > >
> > > > +
> > > >
> > > > +        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[88+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$epilogue:
> > > >
> > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > >
> > > > +        mov     rsi,QWORD[16+rsp]
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +$L$SEH_end_sha256_block_data_order:
> > > >
> > > > +ALIGN   64
> > > >
> > > > +
> > > >
> > > > +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      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
> > > >
> > > > +DB      32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
> > > >
> > > > +DB      111,114,103,62,0
> > > >
> > > > +
> > > >
> > > > +ALIGN   64
> > > >
> > > > +sha256_block_data_order_shaext:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_sha256_block_data_order_shaext:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +_shaext_shortcut:
> > > >
> > > > +
> > > >
> > > > +        lea     rsp,[((-88))+rsp]
> > > >
> > > > +        movaps  XMMWORD[(-8-80)+rax],xmm6
> > > >
> > > > +        movaps  XMMWORD[(-8-64)+rax],xmm7
> > > >
> > > > +        movaps  XMMWORD[(-8-48)+rax],xmm8
> > > >
> > > > +        movaps  XMMWORD[(-8-32)+rax],xmm9
> > > >
> > > > +        movaps  XMMWORD[(-8-16)+rax],xmm10
> > > >
> > > > +$L$prologue_shaext:
> > > >
> > > > +        lea     rcx,[((K256+128))]
> > > >
> > > > +        movdqu  xmm1,XMMWORD[rdi]
> > > >
> > > > +        movdqu  xmm2,XMMWORD[16+rdi]
> > > >
> > > > +        movdqa  xmm7,XMMWORD[((512-128))+rcx]
> > > >
> > > > +
> > > >
> > > > +        pshufd  xmm0,xmm1,0x1b
> > > >
> > > > +        pshufd  xmm1,xmm1,0xb1
> > > >
> > > > +        pshufd  xmm2,xmm2,0x1b
> > > >
> > > > +        movdqa  xmm8,xmm7
> > > >
> > > > +DB      102,15,58,15,202,8
> > > >
> > > > +        punpcklqdq      xmm2,xmm0
> > > >
> > > > +        jmp     NEAR $L$oop_shaext
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$oop_shaext:
> > > >
> > > > +        movdqu  xmm3,XMMWORD[rsi]
> > > >
> > > > +        movdqu  xmm4,XMMWORD[16+rsi]
> > > >
> > > > +        movdqu  xmm5,XMMWORD[32+rsi]
> > > >
> > > > +DB      102,15,56,0,223
> > > >
> > > > +        movdqu  xmm6,XMMWORD[48+rsi]
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((0-128))+rcx]
> > > >
> > > > +        paddd   xmm0,xmm3
> > > >
> > > > +DB      102,15,56,0,231
> > > >
> > > > +        movdqa  xmm10,xmm2
> > > >
> > > > +DB      15,56,203,209
> > > >
> > > > +        pshufd  xmm0,xmm0,0x0e
> > > >
> > > > +        nop
> > > >
> > > > +        movdqa  xmm9,xmm1
> > > >
> > > > +DB      15,56,203,202
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((32-128))+rcx]
> > > >
> > > > +        paddd   xmm0,xmm4
> > > >
> > > > +DB      102,15,56,0,239
> > > >
> > > > +DB      15,56,203,209
> > > >
> > > > +        pshufd  xmm0,xmm0,0x0e
> > > >
> > > > +        lea     rsi,[64+rsi]
> > > >
> > > > +DB      15,56,204,220
> > > >
> > > > +DB      15,56,203,202
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((64-128))+rcx]
> > > >
> > > > +        paddd   xmm0,xmm5
> > > >
> > > > +DB      102,15,56,0,247
> > > >
> > > > +DB      15,56,203,209
> > > >
> > > > +        pshufd  xmm0,xmm0,0x0e
> > > >
> > > > +        movdqa  xmm7,xmm6
> > > >
> > > > +DB      102,15,58,15,253,4
> > > >
> > > > +        nop
> > > >
> > > > +        paddd   xmm3,xmm7
> > > >
> > > > +DB      15,56,204,229
> > > >
> > > > +DB      15,56,203,202
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((96-128))+rcx]
> > > >
> > > > +        paddd   xmm0,xmm6
> > > >
> > > > +DB      15,56,205,222
> > > >
> > > > +DB      15,56,203,209
> > > >
> > > > +        pshufd  xmm0,xmm0,0x0e
> > > >
> > > > +        movdqa  xmm7,xmm3
> > > >
> > > > +DB      102,15,58,15,254,4
> > > >
> > > > +        nop
> > > >
> > > > +        paddd   xmm4,xmm7
> > > >
> > > > +DB      15,56,204,238
> > > >
> > > > +DB      15,56,203,202
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((128-128))+rcx]
> > > >
> > > > +        paddd   xmm0,xmm3
> > > >
> > > > +DB      15,56,205,227
> > > >
> > > > +DB      15,56,203,209
> > > >
> > > > +        pshufd  xmm0,xmm0,0x0e
> > > >
> > > > +        movdqa  xmm7,xmm4
> > > >
> > > > +DB      102,15,58,15,251,4
> > > >
> > > > +        nop
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +DB      15,56,204,243
> > > >
> > > > +DB      15,56,203,202
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((160-128))+rcx]
> > > >
> > > > +        paddd   xmm0,xmm4
> > > >
> > > > +DB      15,56,205,236
> > > >
> > > > +DB      15,56,203,209
> > > >
> > > > +        pshufd  xmm0,xmm0,0x0e
> > > >
> > > > +        movdqa  xmm7,xmm5
> > > >
> > > > +DB      102,15,58,15,252,4
> > > >
> > > > +        nop
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +DB      15,56,204,220
> > > >
> > > > +DB      15,56,203,202
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((192-128))+rcx]
> > > >
> > > > +        paddd   xmm0,xmm5
> > > >
> > > > +DB      15,56,205,245
> > > >
> > > > +DB      15,56,203,209
> > > >
> > > > +        pshufd  xmm0,xmm0,0x0e
> > > >
> > > > +        movdqa  xmm7,xmm6
> > > >
> > > > +DB      102,15,58,15,253,4
> > > >
> > > > +        nop
> > > >
> > > > +        paddd   xmm3,xmm7
> > > >
> > > > +DB      15,56,204,229
> > > >
> > > > +DB      15,56,203,202
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((224-128))+rcx]
> > > >
> > > > +        paddd   xmm0,xmm6
> > > >
> > > > +DB      15,56,205,222
> > > >
> > > > +DB      15,56,203,209
> > > >
> > > > +        pshufd  xmm0,xmm0,0x0e
> > > >
> > > > +        movdqa  xmm7,xmm3
> > > >
> > > > +DB      102,15,58,15,254,4
> > > >
> > > > +        nop
> > > >
> > > > +        paddd   xmm4,xmm7
> > > >
> > > > +DB      15,56,204,238
> > > >
> > > > +DB      15,56,203,202
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((256-128))+rcx]
> > > >
> > > > +        paddd   xmm0,xmm3
> > > >
> > > > +DB      15,56,205,227
> > > >
> > > > +DB      15,56,203,209
> > > >
> > > > +        pshufd  xmm0,xmm0,0x0e
> > > >
> > > > +        movdqa  xmm7,xmm4
> > > >
> > > > +DB      102,15,58,15,251,4
> > > >
> > > > +        nop
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +DB      15,56,204,243
> > > >
> > > > +DB      15,56,203,202
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((288-128))+rcx]
> > > >
> > > > +        paddd   xmm0,xmm4
> > > >
> > > > +DB      15,56,205,236
> > > >
> > > > +DB      15,56,203,209
> > > >
> > > > +        pshufd  xmm0,xmm0,0x0e
> > > >
> > > > +        movdqa  xmm7,xmm5
> > > >
> > > > +DB      102,15,58,15,252,4
> > > >
> > > > +        nop
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +DB      15,56,204,220
> > > >
> > > > +DB      15,56,203,202
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((320-128))+rcx]
> > > >
> > > > +        paddd   xmm0,xmm5
> > > >
> > > > +DB      15,56,205,245
> > > >
> > > > +DB      15,56,203,209
> > > >
> > > > +        pshufd  xmm0,xmm0,0x0e
> > > >
> > > > +        movdqa  xmm7,xmm6
> > > >
> > > > +DB      102,15,58,15,253,4
> > > >
> > > > +        nop
> > > >
> > > > +        paddd   xmm3,xmm7
> > > >
> > > > +DB      15,56,204,229
> > > >
> > > > +DB      15,56,203,202
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((352-128))+rcx]
> > > >
> > > > +        paddd   xmm0,xmm6
> > > >
> > > > +DB      15,56,205,222
> > > >
> > > > +DB      15,56,203,209
> > > >
> > > > +        pshufd  xmm0,xmm0,0x0e
> > > >
> > > > +        movdqa  xmm7,xmm3
> > > >
> > > > +DB      102,15,58,15,254,4
> > > >
> > > > +        nop
> > > >
> > > > +        paddd   xmm4,xmm7
> > > >
> > > > +DB      15,56,204,238
> > > >
> > > > +DB      15,56,203,202
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((384-128))+rcx]
> > > >
> > > > +        paddd   xmm0,xmm3
> > > >
> > > > +DB      15,56,205,227
> > > >
> > > > +DB      15,56,203,209
> > > >
> > > > +        pshufd  xmm0,xmm0,0x0e
> > > >
> > > > +        movdqa  xmm7,xmm4
> > > >
> > > > +DB      102,15,58,15,251,4
> > > >
> > > > +        nop
> > > >
> > > > +        paddd   xmm5,xmm7
> > > >
> > > > +DB      15,56,204,243
> > > >
> > > > +DB      15,56,203,202
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((416-128))+rcx]
> > > >
> > > > +        paddd   xmm0,xmm4
> > > >
> > > > +DB      15,56,205,236
> > > >
> > > > +DB      15,56,203,209
> > > >
> > > > +        pshufd  xmm0,xmm0,0x0e
> > > >
> > > > +        movdqa  xmm7,xmm5
> > > >
> > > > +DB      102,15,58,15,252,4
> > > >
> > > > +DB      15,56,203,202
> > > >
> > > > +        paddd   xmm6,xmm7
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((448-128))+rcx]
> > > >
> > > > +        paddd   xmm0,xmm5
> > > >
> > > > +DB      15,56,203,209
> > > >
> > > > +        pshufd  xmm0,xmm0,0x0e
> > > >
> > > > +DB      15,56,205,245
> > > >
> > > > +        movdqa  xmm7,xmm8
> > > >
> > > > +DB      15,56,203,202
> > > >
> > > > +
> > > >
> > > > +        movdqa  xmm0,XMMWORD[((480-128))+rcx]
> > > >
> > > > +        paddd   xmm0,xmm6
> > > >
> > > > +        nop
> > > >
> > > > +DB      15,56,203,209
> > > >
> > > > +        pshufd  xmm0,xmm0,0x0e
> > > >
> > > > +        dec     rdx
> > > >
> > > > +        nop
> > > >
> > > > +DB      15,56,203,202
> > > >
> > > > +
> > > >
> > > > +        paddd   xmm2,xmm10
> > > >
> > > > +        paddd   xmm1,xmm9
> > > >
> > > > +        jnz     NEAR $L$oop_shaext
> > > >
> > > > +
> > > >
> > > > +        pshufd  xmm2,xmm2,0xb1
> > > >
> > > > +        pshufd  xmm7,xmm1,0x1b
> > > >
> > > > +        pshufd  xmm1,xmm1,0xb1
> > > >
> > > > +        punpckhqdq      xmm1,xmm2
> > > >
> > > > +DB      102,15,58,15,215,8
> > > >
> > > > +
> > > >
> > > > +        movdqu  XMMWORD[rdi],xmm1
> > > >
> > > > +        movdqu  XMMWORD[16+rdi],xmm2
> > > >
> > > > +        movaps  xmm6,XMMWORD[((-8-80))+rax]
> > > >
> > > > +        movaps  xmm7,XMMWORD[((-8-64))+rax]
> > > >
> > > > +        movaps  xmm8,XMMWORD[((-8-48))+rax]
> > > >
> > > > +        movaps  xmm9,XMMWORD[((-8-32))+rax]
> > > >
> > > > +        movaps  xmm10,XMMWORD[((-8-16))+rax]
> > > >
> > > > +        mov     rsp,rax
> > > >
> > > > +$L$epilogue_shaext:
> > > >
> > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > >
> > > > +        mov     rsi,QWORD[16+rsp]
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +$L$SEH_end_sha256_block_data_order_shaext:
> > > >
> > > > +
> > > >
> > > > +ALIGN   64
> > > >
> > > > +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:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +$L$ssse3_shortcut:
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +
> > > >
> > > > +        push    rbx
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        push    r12
> > > >
> > > > +
> > > >
> > > > +        push    r13
> > > >
> > > > +
> > > >
> > > > +        push    r14
> > > >
> > > > +
> > > >
> > > > +        push    r15
> > > >
> > > > +
> > > >
> > > > +        shl     rdx,4
> > > >
> > > > +        sub     rsp,160
> > > >
> > > > +        lea     rdx,[rdx*4+rsi]
> > > >
> > > > +        and     rsp,-64
> > > >
> > > > +        mov     QWORD[((64+0))+rsp],rdi
> > > >
> > > > +        mov     QWORD[((64+8))+rsp],rsi
> > > >
> > > > +        mov     QWORD[((64+16))+rsp],rdx
> > > >
> > > > +        mov     QWORD[88+rsp],rax
> > > >
> > > > +
> > > >
> > > > +        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[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_ssse3
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$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[48+rsi]
> > > >
> > > > +        lea     rbp,[K256]
> > > >
> > > > +DB      102,15,56,0,207
> > > >
> > > > +        movdqa  xmm4,XMMWORD[rbp]
> > > >
> > > > +        movdqa  xmm5,XMMWORD[32+rbp]
> > > >
> > > > +DB      102,15,56,0,215
> > > >
> > > > +        paddd   xmm4,xmm0
> > > >
> > > > +        movdqa  xmm6,XMMWORD[64+rbp]
> > > >
> > > > +DB      102,15,56,0,223
> > > >
> > > > +        movdqa  xmm7,XMMWORD[96+rbp]
> > > >
> > > > +        paddd   xmm5,xmm1
> > > >
> > > > +        paddd   xmm6,xmm2
> > > >
> > > > +        paddd   xmm7,xmm3
> > > >
> > > > +        movdqa  XMMWORD[rsp],xmm4
> > > >
> > > > +        mov     r14d,eax
> > > >
> > > > +        movdqa  XMMWORD[16+rsp],xmm5
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        movdqa  XMMWORD[48+rsp],xmm7
> > > >
> > > > +        mov     r13d,r8d
> > > >
> > > > +        jmp     NEAR $L$ssse3_00_47
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ssse3_00_47:
> > > >
> > > > +        sub     rbp,-128
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        movdqa  xmm4,xmm1
> > > >
> > > > +        mov     eax,r14d
> > > >
> > > > +        mov     r12d,r9d
> > > >
> > > > +        movdqa  xmm7,xmm3
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,r8d
> > > >
> > > > +        xor     r12d,r10d
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,eax
> > > >
> > > > +DB      102,15,58,15,224,4
> > > >
> > > > +        and     r12d,r8d
> > > >
> > > > +        xor     r13d,r8d
> > > >
> > > > +DB      102,15,58,15,250,4
> > > >
> > > > +        add     r11d,DWORD[rsp]
> > > >
> > > > +        mov     r15d,eax
> > > >
> > > > +        xor     r12d,r10d
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        movdqa  xmm5,xmm4
> > > >
> > > > +        xor     r15d,ebx
> > > >
> > > > +        add     r11d,r12d
> > > >
> > > > +        movdqa  xmm6,xmm4
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        psrld   xmm4,3
> > > >
> > > > +        xor     r14d,eax
> > > >
> > > > +        add     r11d,r13d
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        paddd   xmm0,xmm7
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     edx,r11d
> > > >
> > > > +        psrld   xmm6,7
> > > >
> > > > +        add     r11d,edi
> > > >
> > > > +        mov     r13d,edx
> > > >
> > > > +        pshufd  xmm7,xmm3,250
> > > >
> > > > +        add     r14d,r11d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        pslld   xmm5,14
> > > >
> > > > +        mov     r11d,r14d
> > > >
> > > > +        mov     r12d,r8d
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,edx
> > > >
> > > > +        xor     r12d,r9d
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        psrld   xmm6,11
> > > >
> > > > +        xor     r14d,r11d
> > > >
> > > > +        pxor    xmm4,xmm5
> > > >
> > > > +        and     r12d,edx
> > > >
> > > > +        xor     r13d,edx
> > > >
> > > > +        pslld   xmm5,11
> > > >
> > > > +        add     r10d,DWORD[4+rsp]
> > > >
> > > > +        mov     edi,r11d
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +        xor     r12d,r9d
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        movdqa  xmm6,xmm7
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        add     r10d,r12d
> > > >
> > > > +        pxor    xmm4,xmm5
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        xor     r14d,r11d
> > > >
> > > > +        psrld   xmm7,10
> > > >
> > > > +        add     r10d,r13d
> > > >
> > > > +        xor     r15d,eax
> > > >
> > > > +        paddd   xmm0,xmm4
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     ecx,r10d
> > > >
> > > > +        psrlq   xmm6,17
> > > >
> > > > +        add     r10d,r15d
> > > >
> > > > +        mov     r13d,ecx
> > > >
> > > > +        add     r14d,r10d
> > > >
> > > > +        pxor    xmm7,xmm6
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r10d,r14d
> > > >
> > > > +        mov     r12d,edx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        psrlq   xmm6,2
> > > >
> > > > +        xor     r13d,ecx
> > > >
> > > > +        xor     r12d,r8d
> > > >
> > > > +        pxor    xmm7,xmm6
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,r10d
> > > >
> > > > +        and     r12d,ecx
> > > >
> > > > +        pshufd  xmm7,xmm7,128
> > > >
> > > > +        xor     r13d,ecx
> > > >
> > > > +        add     r9d,DWORD[8+rsp]
> > > >
> > > > +        mov     r15d,r10d
> > > >
> > > > +        psrldq  xmm7,8
> > > >
> > > > +        xor     r12d,r8d
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r15d,r11d
> > > >
> > > > +        add     r9d,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        paddd   xmm0,xmm7
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        xor     r14d,r10d
> > > >
> > > > +        add     r9d,r13d
> > > >
> > > > +        pshufd  xmm7,xmm0,80
> > > >
> > > > +        xor     edi,r11d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     ebx,r9d
> > > >
> > > > +        movdqa  xmm6,xmm7
> > > >
> > > > +        add     r9d,edi
> > > >
> > > > +        mov     r13d,ebx
> > > >
> > > > +        psrld   xmm7,10
> > > >
> > > > +        add     r14d,r9d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        psrlq   xmm6,17
> > > >
> > > > +        mov     r9d,r14d
> > > >
> > > > +        mov     r12d,ecx
> > > >
> > > > +        pxor    xmm7,xmm6
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,ebx
> > > >
> > > > +        xor     r12d,edx
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,r9d
> > > >
> > > > +        psrlq   xmm6,2
> > > >
> > > > +        and     r12d,ebx
> > > >
> > > > +        xor     r13d,ebx
> > > >
> > > > +        add     r8d,DWORD[12+rsp]
> > > >
> > > > +        pxor    xmm7,xmm6
> > > >
> > > > +        mov     edi,r9d
> > > >
> > > > +        xor     r12d,edx
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        pshufd  xmm7,xmm7,8
> > > >
> > > > +        xor     edi,r10d
> > > >
> > > > +        add     r8d,r12d
> > > >
> > > > +        movdqa  xmm6,XMMWORD[rbp]
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        pslldq  xmm7,8
> > > >
> > > > +        xor     r14d,r9d
> > > >
> > > > +        add     r8d,r13d
> > > >
> > > > +        xor     r15d,r10d
> > > >
> > > > +        paddd   xmm0,xmm7
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     eax,r8d
> > > >
> > > > +        add     r8d,r15d
> > > >
> > > > +        paddd   xmm6,xmm0
> > > >
> > > > +        mov     r13d,eax
> > > >
> > > > +        add     r14d,r8d
> > > >
> > > > +        movdqa  XMMWORD[rsp],xmm6
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        movdqa  xmm4,xmm2
> > > >
> > > > +        mov     r8d,r14d
> > > >
> > > > +        mov     r12d,ebx
> > > >
> > > > +        movdqa  xmm7,xmm0
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,eax
> > > >
> > > > +        xor     r12d,ecx
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,r8d
> > > >
> > > > +DB      102,15,58,15,225,4
> > > >
> > > > +        and     r12d,eax
> > > >
> > > > +        xor     r13d,eax
> > > >
> > > > +DB      102,15,58,15,251,4
> > > >
> > > > +        add     edx,DWORD[16+rsp]
> > > >
> > > > +        mov     r15d,r8d
> > > >
> > > > +        xor     r12d,ecx
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        movdqa  xmm5,xmm4
> > > >
> > > > +        xor     r15d,r9d
> > > >
> > > > +        add     edx,r12d
> > > >
> > > > +        movdqa  xmm6,xmm4
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        psrld   xmm4,3
> > > >
> > > > +        xor     r14d,r8d
> > > >
> > > > +        add     edx,r13d
> > > >
> > > > +        xor     edi,r9d
> > > >
> > > > +        paddd   xmm1,xmm7
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r11d,edx
> > > >
> > > > +        psrld   xmm6,7
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        mov     r13d,r11d
> > > >
> > > > +        pshufd  xmm7,xmm0,250
> > > >
> > > > +        add     r14d,edx
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        pslld   xmm5,14
> > > >
> > > > +        mov     edx,r14d
> > > >
> > > > +        mov     r12d,eax
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,r11d
> > > >
> > > > +        xor     r12d,ebx
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        psrld   xmm6,11
> > > >
> > > > +        xor     r14d,edx
> > > >
> > > > +        pxor    xmm4,xmm5
> > > >
> > > > +        and     r12d,r11d
> > > >
> > > > +        xor     r13d,r11d
> > > >
> > > > +        pslld   xmm5,11
> > > >
> > > > +        add     ecx,DWORD[20+rsp]
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +        xor     r12d,ebx
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        movdqa  xmm6,xmm7
> > > >
> > > > +        xor     edi,r8d
> > > >
> > > > +        add     ecx,r12d
> > > >
> > > > +        pxor    xmm4,xmm5
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        xor     r14d,edx
> > > >
> > > > +        psrld   xmm7,10
> > > >
> > > > +        add     ecx,r13d
> > > >
> > > > +        xor     r15d,r8d
> > > >
> > > > +        paddd   xmm1,xmm4
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r10d,ecx
> > > >
> > > > +        psrlq   xmm6,17
> > > >
> > > > +        add     ecx,r15d
> > > >
> > > > +        mov     r13d,r10d
> > > >
> > > > +        add     r14d,ecx
> > > >
> > > > +        pxor    xmm7,xmm6
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     ecx,r14d
> > > >
> > > > +        mov     r12d,r11d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        psrlq   xmm6,2
> > > >
> > > > +        xor     r13d,r10d
> > > >
> > > > +        xor     r12d,eax
> > > >
> > > > +        pxor    xmm7,xmm6
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,ecx
> > > >
> > > > +        and     r12d,r10d
> > > >
> > > > +        pshufd  xmm7,xmm7,128
> > > >
> > > > +        xor     r13d,r10d
> > > >
> > > > +        add     ebx,DWORD[24+rsp]
> > > >
> > > > +        mov     r15d,ecx
> > > >
> > > > +        psrldq  xmm7,8
> > > >
> > > > +        xor     r12d,eax
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r15d,edx
> > > >
> > > > +        add     ebx,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        paddd   xmm1,xmm7
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        xor     r14d,ecx
> > > >
> > > > +        add     ebx,r13d
> > > >
> > > > +        pshufd  xmm7,xmm1,80
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r9d,ebx
> > > >
> > > > +        movdqa  xmm6,xmm7
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        mov     r13d,r9d
> > > >
> > > > +        psrld   xmm7,10
> > > >
> > > > +        add     r14d,ebx
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        psrlq   xmm6,17
> > > >
> > > > +        mov     ebx,r14d
> > > >
> > > > +        mov     r12d,r10d
> > > >
> > > > +        pxor    xmm7,xmm6
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,r9d
> > > >
> > > > +        xor     r12d,r11d
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,ebx
> > > >
> > > > +        psrlq   xmm6,2
> > > >
> > > > +        and     r12d,r9d
> > > >
> > > > +        xor     r13d,r9d
> > > >
> > > > +        add     eax,DWORD[28+rsp]
> > > >
> > > > +        pxor    xmm7,xmm6
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        xor     r12d,r11d
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        pshufd  xmm7,xmm7,8
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        add     eax,r12d
> > > >
> > > > +        movdqa  xmm6,XMMWORD[32+rbp]
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        pslldq  xmm7,8
> > > >
> > > > +        xor     r14d,ebx
> > > >
> > > > +        add     eax,r13d
> > > >
> > > > +        xor     r15d,ecx
> > > >
> > > > +        paddd   xmm1,xmm7
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r8d,eax
> > > >
> > > > +        add     eax,r15d
> > > >
> > > > +        paddd   xmm6,xmm1
> > > >
> > > > +        mov     r13d,r8d
> > > >
> > > > +        add     r14d,eax
> > > >
> > > > +        movdqa  XMMWORD[16+rsp],xmm6
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        movdqa  xmm4,xmm3
> > > >
> > > > +        mov     eax,r14d
> > > >
> > > > +        mov     r12d,r9d
> > > >
> > > > +        movdqa  xmm7,xmm1
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,r8d
> > > >
> > > > +        xor     r12d,r10d
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,eax
> > > >
> > > > +DB      102,15,58,15,226,4
> > > >
> > > > +        and     r12d,r8d
> > > >
> > > > +        xor     r13d,r8d
> > > >
> > > > +DB      102,15,58,15,248,4
> > > >
> > > > +        add     r11d,DWORD[32+rsp]
> > > >
> > > > +        mov     r15d,eax
> > > >
> > > > +        xor     r12d,r10d
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        movdqa  xmm5,xmm4
> > > >
> > > > +        xor     r15d,ebx
> > > >
> > > > +        add     r11d,r12d
> > > >
> > > > +        movdqa  xmm6,xmm4
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        psrld   xmm4,3
> > > >
> > > > +        xor     r14d,eax
> > > >
> > > > +        add     r11d,r13d
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        paddd   xmm2,xmm7
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     edx,r11d
> > > >
> > > > +        psrld   xmm6,7
> > > >
> > > > +        add     r11d,edi
> > > >
> > > > +        mov     r13d,edx
> > > >
> > > > +        pshufd  xmm7,xmm1,250
> > > >
> > > > +        add     r14d,r11d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        pslld   xmm5,14
> > > >
> > > > +        mov     r11d,r14d
> > > >
> > > > +        mov     r12d,r8d
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,edx
> > > >
> > > > +        xor     r12d,r9d
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        psrld   xmm6,11
> > > >
> > > > +        xor     r14d,r11d
> > > >
> > > > +        pxor    xmm4,xmm5
> > > >
> > > > +        and     r12d,edx
> > > >
> > > > +        xor     r13d,edx
> > > >
> > > > +        pslld   xmm5,11
> > > >
> > > > +        add     r10d,DWORD[36+rsp]
> > > >
> > > > +        mov     edi,r11d
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +        xor     r12d,r9d
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        movdqa  xmm6,xmm7
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        add     r10d,r12d
> > > >
> > > > +        pxor    xmm4,xmm5
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        xor     r14d,r11d
> > > >
> > > > +        psrld   xmm7,10
> > > >
> > > > +        add     r10d,r13d
> > > >
> > > > +        xor     r15d,eax
> > > >
> > > > +        paddd   xmm2,xmm4
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     ecx,r10d
> > > >
> > > > +        psrlq   xmm6,17
> > > >
> > > > +        add     r10d,r15d
> > > >
> > > > +        mov     r13d,ecx
> > > >
> > > > +        add     r14d,r10d
> > > >
> > > > +        pxor    xmm7,xmm6
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r10d,r14d
> > > >
> > > > +        mov     r12d,edx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        psrlq   xmm6,2
> > > >
> > > > +        xor     r13d,ecx
> > > >
> > > > +        xor     r12d,r8d
> > > >
> > > > +        pxor    xmm7,xmm6
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,r10d
> > > >
> > > > +        and     r12d,ecx
> > > >
> > > > +        pshufd  xmm7,xmm7,128
> > > >
> > > > +        xor     r13d,ecx
> > > >
> > > > +        add     r9d,DWORD[40+rsp]
> > > >
> > > > +        mov     r15d,r10d
> > > >
> > > > +        psrldq  xmm7,8
> > > >
> > > > +        xor     r12d,r8d
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r15d,r11d
> > > >
> > > > +        add     r9d,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        paddd   xmm2,xmm7
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        xor     r14d,r10d
> > > >
> > > > +        add     r9d,r13d
> > > >
> > > > +        pshufd  xmm7,xmm2,80
> > > >
> > > > +        xor     edi,r11d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     ebx,r9d
> > > >
> > > > +        movdqa  xmm6,xmm7
> > > >
> > > > +        add     r9d,edi
> > > >
> > > > +        mov     r13d,ebx
> > > >
> > > > +        psrld   xmm7,10
> > > >
> > > > +        add     r14d,r9d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        psrlq   xmm6,17
> > > >
> > > > +        mov     r9d,r14d
> > > >
> > > > +        mov     r12d,ecx
> > > >
> > > > +        pxor    xmm7,xmm6
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,ebx
> > > >
> > > > +        xor     r12d,edx
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,r9d
> > > >
> > > > +        psrlq   xmm6,2
> > > >
> > > > +        and     r12d,ebx
> > > >
> > > > +        xor     r13d,ebx
> > > >
> > > > +        add     r8d,DWORD[44+rsp]
> > > >
> > > > +        pxor    xmm7,xmm6
> > > >
> > > > +        mov     edi,r9d
> > > >
> > > > +        xor     r12d,edx
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        pshufd  xmm7,xmm7,8
> > > >
> > > > +        xor     edi,r10d
> > > >
> > > > +        add     r8d,r12d
> > > >
> > > > +        movdqa  xmm6,XMMWORD[64+rbp]
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        pslldq  xmm7,8
> > > >
> > > > +        xor     r14d,r9d
> > > >
> > > > +        add     r8d,r13d
> > > >
> > > > +        xor     r15d,r10d
> > > >
> > > > +        paddd   xmm2,xmm7
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     eax,r8d
> > > >
> > > > +        add     r8d,r15d
> > > >
> > > > +        paddd   xmm6,xmm2
> > > >
> > > > +        mov     r13d,eax
> > > >
> > > > +        add     r14d,r8d
> > > >
> > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        movdqa  xmm4,xmm0
> > > >
> > > > +        mov     r8d,r14d
> > > >
> > > > +        mov     r12d,ebx
> > > >
> > > > +        movdqa  xmm7,xmm2
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,eax
> > > >
> > > > +        xor     r12d,ecx
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,r8d
> > > >
> > > > +DB      102,15,58,15,227,4
> > > >
> > > > +        and     r12d,eax
> > > >
> > > > +        xor     r13d,eax
> > > >
> > > > +DB      102,15,58,15,249,4
> > > >
> > > > +        add     edx,DWORD[48+rsp]
> > > >
> > > > +        mov     r15d,r8d
> > > >
> > > > +        xor     r12d,ecx
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        movdqa  xmm5,xmm4
> > > >
> > > > +        xor     r15d,r9d
> > > >
> > > > +        add     edx,r12d
> > > >
> > > > +        movdqa  xmm6,xmm4
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        psrld   xmm4,3
> > > >
> > > > +        xor     r14d,r8d
> > > >
> > > > +        add     edx,r13d
> > > >
> > > > +        xor     edi,r9d
> > > >
> > > > +        paddd   xmm3,xmm7
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r11d,edx
> > > >
> > > > +        psrld   xmm6,7
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        mov     r13d,r11d
> > > >
> > > > +        pshufd  xmm7,xmm2,250
> > > >
> > > > +        add     r14d,edx
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        pslld   xmm5,14
> > > >
> > > > +        mov     edx,r14d
> > > >
> > > > +        mov     r12d,eax
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,r11d
> > > >
> > > > +        xor     r12d,ebx
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        psrld   xmm6,11
> > > >
> > > > +        xor     r14d,edx
> > > >
> > > > +        pxor    xmm4,xmm5
> > > >
> > > > +        and     r12d,r11d
> > > >
> > > > +        xor     r13d,r11d
> > > >
> > > > +        pslld   xmm5,11
> > > >
> > > > +        add     ecx,DWORD[52+rsp]
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        pxor    xmm4,xmm6
> > > >
> > > > +        xor     r12d,ebx
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        movdqa  xmm6,xmm7
> > > >
> > > > +        xor     edi,r8d
> > > >
> > > > +        add     ecx,r12d
> > > >
> > > > +        pxor    xmm4,xmm5
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        xor     r14d,edx
> > > >
> > > > +        psrld   xmm7,10
> > > >
> > > > +        add     ecx,r13d
> > > >
> > > > +        xor     r15d,r8d
> > > >
> > > > +        paddd   xmm3,xmm4
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r10d,ecx
> > > >
> > > > +        psrlq   xmm6,17
> > > >
> > > > +        add     ecx,r15d
> > > >
> > > > +        mov     r13d,r10d
> > > >
> > > > +        add     r14d,ecx
> > > >
> > > > +        pxor    xmm7,xmm6
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     ecx,r14d
> > > >
> > > > +        mov     r12d,r11d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        psrlq   xmm6,2
> > > >
> > > > +        xor     r13d,r10d
> > > >
> > > > +        xor     r12d,eax
> > > >
> > > > +        pxor    xmm7,xmm6
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,ecx
> > > >
> > > > +        and     r12d,r10d
> > > >
> > > > +        pshufd  xmm7,xmm7,128
> > > >
> > > > +        xor     r13d,r10d
> > > >
> > > > +        add     ebx,DWORD[56+rsp]
> > > >
> > > > +        mov     r15d,ecx
> > > >
> > > > +        psrldq  xmm7,8
> > > >
> > > > +        xor     r12d,eax
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r15d,edx
> > > >
> > > > +        add     ebx,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        paddd   xmm3,xmm7
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        xor     r14d,ecx
> > > >
> > > > +        add     ebx,r13d
> > > >
> > > > +        pshufd  xmm7,xmm3,80
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r9d,ebx
> > > >
> > > > +        movdqa  xmm6,xmm7
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        mov     r13d,r9d
> > > >
> > > > +        psrld   xmm7,10
> > > >
> > > > +        add     r14d,ebx
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        psrlq   xmm6,17
> > > >
> > > > +        mov     ebx,r14d
> > > >
> > > > +        mov     r12d,r10d
> > > >
> > > > +        pxor    xmm7,xmm6
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,r9d
> > > >
> > > > +        xor     r12d,r11d
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,ebx
> > > >
> > > > +        psrlq   xmm6,2
> > > >
> > > > +        and     r12d,r9d
> > > >
> > > > +        xor     r13d,r9d
> > > >
> > > > +        add     eax,DWORD[60+rsp]
> > > >
> > > > +        pxor    xmm7,xmm6
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        xor     r12d,r11d
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        pshufd  xmm7,xmm7,8
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        add     eax,r12d
> > > >
> > > > +        movdqa  xmm6,XMMWORD[96+rbp]
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        pslldq  xmm7,8
> > > >
> > > > +        xor     r14d,ebx
> > > >
> > > > +        add     eax,r13d
> > > >
> > > > +        xor     r15d,ecx
> > > >
> > > > +        paddd   xmm3,xmm7
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r8d,eax
> > > >
> > > > +        add     eax,r15d
> > > >
> > > > +        paddd   xmm6,xmm3
> > > >
> > > > +        mov     r13d,r8d
> > > >
> > > > +        add     r14d,eax
> > > >
> > > > +        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
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,r8d
> > > >
> > > > +        xor     r12d,r10d
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,eax
> > > >
> > > > +        and     r12d,r8d
> > > >
> > > > +        xor     r13d,r8d
> > > >
> > > > +        add     r11d,DWORD[rsp]
> > > >
> > > > +        mov     r15d,eax
> > > >
> > > > +        xor     r12d,r10d
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r15d,ebx
> > > >
> > > > +        add     r11d,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        xor     r14d,eax
> > > >
> > > > +        add     r11d,r13d
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     edx,r11d
> > > >
> > > > +        add     r11d,edi
> > > >
> > > > +        mov     r13d,edx
> > > >
> > > > +        add     r14d,r11d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r11d,r14d
> > > >
> > > > +        mov     r12d,r8d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,edx
> > > >
> > > > +        xor     r12d,r9d
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,r11d
> > > >
> > > > +        and     r12d,edx
> > > >
> > > > +        xor     r13d,edx
> > > >
> > > > +        add     r10d,DWORD[4+rsp]
> > > >
> > > > +        mov     edi,r11d
> > > >
> > > > +        xor     r12d,r9d
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        add     r10d,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        xor     r14d,r11d
> > > >
> > > > +        add     r10d,r13d
> > > >
> > > > +        xor     r15d,eax
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     ecx,r10d
> > > >
> > > > +        add     r10d,r15d
> > > >
> > > > +        mov     r13d,ecx
> > > >
> > > > +        add     r14d,r10d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r10d,r14d
> > > >
> > > > +        mov     r12d,edx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,ecx
> > > >
> > > > +        xor     r12d,r8d
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,r10d
> > > >
> > > > +        and     r12d,ecx
> > > >
> > > > +        xor     r13d,ecx
> > > >
> > > > +        add     r9d,DWORD[8+rsp]
> > > >
> > > > +        mov     r15d,r10d
> > > >
> > > > +        xor     r12d,r8d
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r15d,r11d
> > > >
> > > > +        add     r9d,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        xor     r14d,r10d
> > > >
> > > > +        add     r9d,r13d
> > > >
> > > > +        xor     edi,r11d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     ebx,r9d
> > > >
> > > > +        add     r9d,edi
> > > >
> > > > +        mov     r13d,ebx
> > > >
> > > > +        add     r14d,r9d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r9d,r14d
> > > >
> > > > +        mov     r12d,ecx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,ebx
> > > >
> > > > +        xor     r12d,edx
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,r9d
> > > >
> > > > +        and     r12d,ebx
> > > >
> > > > +        xor     r13d,ebx
> > > >
> > > > +        add     r8d,DWORD[12+rsp]
> > > >
> > > > +        mov     edi,r9d
> > > >
> > > > +        xor     r12d,edx
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     edi,r10d
> > > >
> > > > +        add     r8d,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        xor     r14d,r9d
> > > >
> > > > +        add     r8d,r13d
> > > >
> > > > +        xor     r15d,r10d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     eax,r8d
> > > >
> > > > +        add     r8d,r15d
> > > >
> > > > +        mov     r13d,eax
> > > >
> > > > +        add     r14d,r8d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r8d,r14d
> > > >
> > > > +        mov     r12d,ebx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,eax
> > > >
> > > > +        xor     r12d,ecx
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,r8d
> > > >
> > > > +        and     r12d,eax
> > > >
> > > > +        xor     r13d,eax
> > > >
> > > > +        add     edx,DWORD[16+rsp]
> > > >
> > > > +        mov     r15d,r8d
> > > >
> > > > +        xor     r12d,ecx
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r15d,r9d
> > > >
> > > > +        add     edx,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        xor     r14d,r8d
> > > >
> > > > +        add     edx,r13d
> > > >
> > > > +        xor     edi,r9d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r11d,edx
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        mov     r13d,r11d
> > > >
> > > > +        add     r14d,edx
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     edx,r14d
> > > >
> > > > +        mov     r12d,eax
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,r11d
> > > >
> > > > +        xor     r12d,ebx
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,edx
> > > >
> > > > +        and     r12d,r11d
> > > >
> > > > +        xor     r13d,r11d
> > > >
> > > > +        add     ecx,DWORD[20+rsp]
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        xor     r12d,ebx
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     edi,r8d
> > > >
> > > > +        add     ecx,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        xor     r14d,edx
> > > >
> > > > +        add     ecx,r13d
> > > >
> > > > +        xor     r15d,r8d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r10d,ecx
> > > >
> > > > +        add     ecx,r15d
> > > >
> > > > +        mov     r13d,r10d
> > > >
> > > > +        add     r14d,ecx
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     ecx,r14d
> > > >
> > > > +        mov     r12d,r11d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,r10d
> > > >
> > > > +        xor     r12d,eax
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,ecx
> > > >
> > > > +        and     r12d,r10d
> > > >
> > > > +        xor     r13d,r10d
> > > >
> > > > +        add     ebx,DWORD[24+rsp]
> > > >
> > > > +        mov     r15d,ecx
> > > >
> > > > +        xor     r12d,eax
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r15d,edx
> > > >
> > > > +        add     ebx,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        xor     r14d,ecx
> > > >
> > > > +        add     ebx,r13d
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r9d,ebx
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        mov     r13d,r9d
> > > >
> > > > +        add     r14d,ebx
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     ebx,r14d
> > > >
> > > > +        mov     r12d,r10d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,r9d
> > > >
> > > > +        xor     r12d,r11d
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,ebx
> > > >
> > > > +        and     r12d,r9d
> > > >
> > > > +        xor     r13d,r9d
> > > >
> > > > +        add     eax,DWORD[28+rsp]
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        xor     r12d,r11d
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        add     eax,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        xor     r14d,ebx
> > > >
> > > > +        add     eax,r13d
> > > >
> > > > +        xor     r15d,ecx
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r8d,eax
> > > >
> > > > +        add     eax,r15d
> > > >
> > > > +        mov     r13d,r8d
> > > >
> > > > +        add     r14d,eax
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     eax,r14d
> > > >
> > > > +        mov     r12d,r9d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,r8d
> > > >
> > > > +        xor     r12d,r10d
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,eax
> > > >
> > > > +        and     r12d,r8d
> > > >
> > > > +        xor     r13d,r8d
> > > >
> > > > +        add     r11d,DWORD[32+rsp]
> > > >
> > > > +        mov     r15d,eax
> > > >
> > > > +        xor     r12d,r10d
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r15d,ebx
> > > >
> > > > +        add     r11d,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        xor     r14d,eax
> > > >
> > > > +        add     r11d,r13d
> > > >
> > > > +        xor     edi,ebx
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     edx,r11d
> > > >
> > > > +        add     r11d,edi
> > > >
> > > > +        mov     r13d,edx
> > > >
> > > > +        add     r14d,r11d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r11d,r14d
> > > >
> > > > +        mov     r12d,r8d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,edx
> > > >
> > > > +        xor     r12d,r9d
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,r11d
> > > >
> > > > +        and     r12d,edx
> > > >
> > > > +        xor     r13d,edx
> > > >
> > > > +        add     r10d,DWORD[36+rsp]
> > > >
> > > > +        mov     edi,r11d
> > > >
> > > > +        xor     r12d,r9d
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     edi,eax
> > > >
> > > > +        add     r10d,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        xor     r14d,r11d
> > > >
> > > > +        add     r10d,r13d
> > > >
> > > > +        xor     r15d,eax
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     ecx,r10d
> > > >
> > > > +        add     r10d,r15d
> > > >
> > > > +        mov     r13d,ecx
> > > >
> > > > +        add     r14d,r10d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r10d,r14d
> > > >
> > > > +        mov     r12d,edx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,ecx
> > > >
> > > > +        xor     r12d,r8d
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,r10d
> > > >
> > > > +        and     r12d,ecx
> > > >
> > > > +        xor     r13d,ecx
> > > >
> > > > +        add     r9d,DWORD[40+rsp]
> > > >
> > > > +        mov     r15d,r10d
> > > >
> > > > +        xor     r12d,r8d
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r15d,r11d
> > > >
> > > > +        add     r9d,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        xor     r14d,r10d
> > > >
> > > > +        add     r9d,r13d
> > > >
> > > > +        xor     edi,r11d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     ebx,r9d
> > > >
> > > > +        add     r9d,edi
> > > >
> > > > +        mov     r13d,ebx
> > > >
> > > > +        add     r14d,r9d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r9d,r14d
> > > >
> > > > +        mov     r12d,ecx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,ebx
> > > >
> > > > +        xor     r12d,edx
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,r9d
> > > >
> > > > +        and     r12d,ebx
> > > >
> > > > +        xor     r13d,ebx
> > > >
> > > > +        add     r8d,DWORD[44+rsp]
> > > >
> > > > +        mov     edi,r9d
> > > >
> > > > +        xor     r12d,edx
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     edi,r10d
> > > >
> > > > +        add     r8d,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        xor     r14d,r9d
> > > >
> > > > +        add     r8d,r13d
> > > >
> > > > +        xor     r15d,r10d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     eax,r8d
> > > >
> > > > +        add     r8d,r15d
> > > >
> > > > +        mov     r13d,eax
> > > >
> > > > +        add     r14d,r8d
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     r8d,r14d
> > > >
> > > > +        mov     r12d,ebx
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,eax
> > > >
> > > > +        xor     r12d,ecx
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,r8d
> > > >
> > > > +        and     r12d,eax
> > > >
> > > > +        xor     r13d,eax
> > > >
> > > > +        add     edx,DWORD[48+rsp]
> > > >
> > > > +        mov     r15d,r8d
> > > >
> > > > +        xor     r12d,ecx
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r15d,r9d
> > > >
> > > > +        add     edx,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        xor     r14d,r8d
> > > >
> > > > +        add     edx,r13d
> > > >
> > > > +        xor     edi,r9d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r11d,edx
> > > >
> > > > +        add     edx,edi
> > > >
> > > > +        mov     r13d,r11d
> > > >
> > > > +        add     r14d,edx
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     edx,r14d
> > > >
> > > > +        mov     r12d,eax
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,r11d
> > > >
> > > > +        xor     r12d,ebx
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,edx
> > > >
> > > > +        and     r12d,r11d
> > > >
> > > > +        xor     r13d,r11d
> > > >
> > > > +        add     ecx,DWORD[52+rsp]
> > > >
> > > > +        mov     edi,edx
> > > >
> > > > +        xor     r12d,ebx
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     edi,r8d
> > > >
> > > > +        add     ecx,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        xor     r14d,edx
> > > >
> > > > +        add     ecx,r13d
> > > >
> > > > +        xor     r15d,r8d
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r10d,ecx
> > > >
> > > > +        add     ecx,r15d
> > > >
> > > > +        mov     r13d,r10d
> > > >
> > > > +        add     r14d,ecx
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     ecx,r14d
> > > >
> > > > +        mov     r12d,r11d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,r10d
> > > >
> > > > +        xor     r12d,eax
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,ecx
> > > >
> > > > +        and     r12d,r10d
> > > >
> > > > +        xor     r13d,r10d
> > > >
> > > > +        add     ebx,DWORD[56+rsp]
> > > >
> > > > +        mov     r15d,ecx
> > > >
> > > > +        xor     r12d,eax
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     r15d,edx
> > > >
> > > > +        add     ebx,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     edi,r15d
> > > >
> > > > +        xor     r14d,ecx
> > > >
> > > > +        add     ebx,r13d
> > > >
> > > > +        xor     edi,edx
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r9d,ebx
> > > >
> > > > +        add     ebx,edi
> > > >
> > > > +        mov     r13d,r9d
> > > >
> > > > +        add     r14d,ebx
> > > >
> > > > +        ror     r13d,14
> > > >
> > > > +        mov     ebx,r14d
> > > >
> > > > +        mov     r12d,r10d
> > > >
> > > > +        ror     r14d,9
> > > >
> > > > +        xor     r13d,r9d
> > > >
> > > > +        xor     r12d,r11d
> > > >
> > > > +        ror     r13d,5
> > > >
> > > > +        xor     r14d,ebx
> > > >
> > > > +        and     r12d,r9d
> > > >
> > > > +        xor     r13d,r9d
> > > >
> > > > +        add     eax,DWORD[60+rsp]
> > > >
> > > > +        mov     edi,ebx
> > > >
> > > > +        xor     r12d,r11d
> > > >
> > > > +        ror     r14d,11
> > > >
> > > > +        xor     edi,ecx
> > > >
> > > > +        add     eax,r12d
> > > >
> > > > +        ror     r13d,6
> > > >
> > > > +        and     r15d,edi
> > > >
> > > > +        xor     r14d,ebx
> > > >
> > > > +        add     eax,r13d
> > > >
> > > > +        xor     r15d,ecx
> > > >
> > > > +        ror     r14d,2
> > > >
> > > > +        add     r8d,eax
> > > >
> > > > +        add     eax,r15d
> > > >
> > > > +        mov     r13d,r8d
> > > >
> > > > +        add     r14d,eax
> > > >
> > > > +        mov     rdi,QWORD[((64+0))+rsp]
> > > >
> > > > +        mov     eax,r14d
> > > >
> > > > +
> > > >
> > > > +        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[((64+16))+rsp]
> > > >
> > > > +
> > > >
> > > > +        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[88+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[((-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$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:
> > > >
> > > > +EXTERN  __imp_RtlVirtualUnwind
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +se_handler:
> > > >
> > > > +        push    rsi
> > > >
> > > > +        push    rdi
> > > >
> > > > +        push    rbx
> > > >
> > > > +        push    rbp
> > > >
> > > > +        push    r12
> > > >
> > > > +        push    r13
> > > >
> > > > +        push    r14
> > > >
> > > > +        push    r15
> > > >
> > > > +        pushfq
> > > >
> > > > +        sub     rsp,64
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[120+r8]
> > > >
> > > > +        mov     rbx,QWORD[248+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,QWORD[8+r9]
> > > >
> > > > +        mov     r11,QWORD[56+r9]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$in_prologue
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[152+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[4+r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jae     NEAR $L$in_prologue
> > > >
> > > > +        mov     rsi,rax
> > > >
> > > > +        mov     rax,QWORD[((64+24))+rax]
> > > >
> > > > +
> > > >
> > > > +        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,[$L$epilogue]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$in_prologue
> > > >
> > > > +
> > > >
> > > > +        lea     rsi,[((64+32))+rsi]
> > > >
> > > > +        lea     rdi,[512+r8]
> > > >
> > > > +        mov     ecx,8
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +$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[40+r9]
> > > >
> > > > +        mov     rsi,r8
> > > >
> > > > +        mov     ecx,154
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,r9
> > > >
> > > > +        xor     rcx,rcx
> > > >
> > > > +        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
> > > >
> > > > +        popfq
> > > >
> > > > +        pop     r15
> > > >
> > > > +        pop     r14
> > > >
> > > > +        pop     r13
> > > >
> > > > +        pop     r12
> > > >
> > > > +        pop     rbp
> > > >
> > > > +        pop     rbx
> > > >
> > > > +        pop     rdi
> > > >
> > > > +        pop     rsi
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +shaext_handler:
> > > >
> > > > +        push    rsi
> > > >
> > > > +        push    rdi
> > > >
> > > > +        push    rbx
> > > >
> > > > +        push    rbp
> > > >
> > > > +        push    r12
> > > >
> > > > +        push    r13
> > > >
> > > > +        push    r14
> > > >
> > > > +        push    r15
> > > >
> > > > +        pushfq
> > > >
> > > > +        sub     rsp,64
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[120+r8]
> > > >
> > > > +        mov     rbx,QWORD[248+r8]
> > > >
> > > > +
> > > >
> > > > +        lea     r10,[$L$prologue_shaext]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$in_prologue
> > > >
> > > > +
> > > >
> > > > +        lea     r10,[$L$epilogue_shaext]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jae     NEAR $L$in_prologue
> > > >
> > > > +
> > > >
> > > > +        lea     rsi,[((-8-80))+rax]
> > > >
> > > > +        lea     rdi,[512+r8]
> > > >
> > > > +        mov     ecx,10
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +        jmp     NEAR $L$in_prologue
> > > >
> > > > +
> > > >
> > > > +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_shaext
> > wrt ..imagebase
> > > >
> > > > +        DD      $L$SEH_end_sha256_block_data_order_shaext wrt
> ..imagebase
> > > >
> > > > +        DD      $L$SEH_info_sha256_block_data_order_shaext 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_shaext:
> > > >
> > > > +DB      9,0,0,0
> > > >
> > > > +        DD      shaext_handler 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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-
> > x86_64.nasm
> > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
> > > > new file mode 100644
> > > > index 0000000000..c6397d4393
> > > > --- /dev/null
> > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
> > > > @@ -0,0 +1,1938 @@
> > > > +; WARNING: do not edit!
> > > >
> > > > +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
> > > >
> > > > +;
> > > >
> > > > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
> Reserved.
> > > >
> > > > +;
> > > >
> > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > >
> > > > +; this file except in compliance with the License.  You can obtain a
> copy
> > > >
> > > > +; in the file LICENSE in the source distribution or at
> > > >
> > > > +; https://www.openssl.org/source/license.html
> > > >
> > > > +
> > > >
> > > > +default rel
> > > >
> > > > +%define XMMWORD
> > > >
> > > > +%define YMMWORD
> > > >
> > > > +%define ZMMWORD
> > > >
> > > > +section .text code align=64
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +EXTERN  OPENSSL_ia32cap_P
> > > >
> > > > +global  sha512_block_data_order
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +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:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +        mov     rsi,rdx
> > > >
> > > > +        mov     rdx,r8
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +
> > > >
> > > > +        push    rbx
> > > >
> > > > +
> > > >
> > > > +        push    rbp
> > > >
> > > > +
> > > >
> > > > +        push    r12
> > > >
> > > > +
> > > >
> > > > +        push    r13
> > > >
> > > > +
> > > >
> > > > +        push    r14
> > > >
> > > > +
> > > >
> > > > +        push    r15
> > > >
> > > > +
> > > >
> > > > +        shl     rdx,4
> > > >
> > > > +        sub     rsp,16*8+4*8
> > > >
> > > > +        lea     rdx,[rdx*8+rsi]
> > > >
> > > > +        and     rsp,-64
> > > >
> > > > +        mov     QWORD[((128+0))+rsp],rdi
> > > >
> > > > +        mov     QWORD[((128+8))+rsp],rsi
> > > >
> > > > +        mov     QWORD[((128+16))+rsp],rdx
> > > >
> > > > +        mov     QWORD[152+rsp],rax
> > > >
> > > > +
> > > >
> > > > +$L$prologue:
> > > >
> > > > +
> > > >
> > > > +        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:
> > > >
> > > > +        mov     rdi,rbx
> > > >
> > > > +        lea     rbp,[K512]
> > > >
> > > > +        xor     rdi,rcx
> > > >
> > > > +        mov     r12,QWORD[rsi]
> > > >
> > > > +        mov     r13,r8
> > > >
> > > > +        mov     r14,rax
> > > >
> > > > +        bswap   r12
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     r15,r9
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r8
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     r15,r10
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[rsp],r12
> > > >
> > > > +        xor     r14,rax
> > > >
> > > > +        and     r15,r8
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,r11
> > > >
> > > > +        xor     r15,r10
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,r8
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +
> > > >
> > > > +        mov     r15,rax
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,rax
> > > >
> > > > +
> > > >
> > > > +        xor     r15,rbx
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     r11,rbx
> > > >
> > > > +
> > > >
> > > > +        and     rdi,r15
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     r11,rdi
> > > >
> > > > +        add     rdx,r12
> > > >
> > > > +        add     r11,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[8+rbp]
> > > >
> > > > +        add     r11,r14
> > > >
> > > > +        mov     r12,QWORD[8+rsi]
> > > >
> > > > +        mov     r13,rdx
> > > >
> > > > +        mov     r14,r11
> > > >
> > > > +        bswap   r12
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     rdi,r8
> > > >
> > > > +
> > > >
> > > > +        xor     r13,rdx
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     rdi,r9
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[8+rsp],r12
> > > >
> > > > +        xor     r14,r11
> > > >
> > > > +        and     rdi,rdx
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,r10
> > > >
> > > > +        xor     rdi,r9
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,rdx
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +
> > > >
> > > > +        mov     rdi,r11
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,r11
> > > >
> > > > +
> > > >
> > > > +        xor     rdi,rax
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     r10,rax
> > > >
> > > > +
> > > >
> > > > +        and     r15,rdi
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     r10,r15
> > > >
> > > > +        add     rcx,r12
> > > >
> > > > +        add     r10,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[24+rbp]
> > > >
> > > > +        add     r10,r14
> > > >
> > > > +        mov     r12,QWORD[16+rsi]
> > > >
> > > > +        mov     r13,rcx
> > > >
> > > > +        mov     r14,r10
> > > >
> > > > +        bswap   r12
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     r15,rdx
> > > >
> > > > +
> > > >
> > > > +        xor     r13,rcx
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     r15,r8
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[16+rsp],r12
> > > >
> > > > +        xor     r14,r10
> > > >
> > > > +        and     r15,rcx
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,r9
> > > >
> > > > +        xor     r15,r8
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,rcx
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +
> > > >
> > > > +        mov     r15,r10
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,r10
> > > >
> > > > +
> > > >
> > > > +        xor     r15,r11
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     r9,r11
> > > >
> > > > +
> > > >
> > > > +        and     rdi,r15
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     r9,rdi
> > > >
> > > > +        add     rbx,r12
> > > >
> > > > +        add     r9,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[8+rbp]
> > > >
> > > > +        add     r9,r14
> > > >
> > > > +        mov     r12,QWORD[24+rsi]
> > > >
> > > > +        mov     r13,rbx
> > > >
> > > > +        mov     r14,r9
> > > >
> > > > +        bswap   r12
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +
> > > >
> > > > +        xor     r13,rbx
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     rdi,rdx
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[24+rsp],r12
> > > >
> > > > +        xor     r14,r9
> > > >
> > > > +        and     rdi,rbx
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,r8
> > > >
> > > > +        xor     rdi,rdx
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,rbx
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +
> > > >
> > > > +        mov     rdi,r9
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,r9
> > > >
> > > > +
> > > >
> > > > +        xor     rdi,r10
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     r8,r10
> > > >
> > > > +
> > > >
> > > > +        and     r15,rdi
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     r8,r15
> > > >
> > > > +        add     rax,r12
> > > >
> > > > +        add     r8,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[24+rbp]
> > > >
> > > > +        add     r8,r14
> > > >
> > > > +        mov     r12,QWORD[32+rsi]
> > > >
> > > > +        mov     r13,rax
> > > >
> > > > +        mov     r14,r8
> > > >
> > > > +        bswap   r12
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     r15,rbx
> > > >
> > > > +
> > > >
> > > > +        xor     r13,rax
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     r15,rcx
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[32+rsp],r12
> > > >
> > > > +        xor     r14,r8
> > > >
> > > > +        and     r15,rax
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,rdx
> > > >
> > > > +        xor     r15,rcx
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,rax
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +
> > > >
> > > > +        mov     r15,r8
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,r8
> > > >
> > > > +
> > > >
> > > > +        xor     r15,r9
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     rdx,r9
> > > >
> > > > +
> > > >
> > > > +        and     rdi,r15
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     rdx,rdi
> > > >
> > > > +        add     r11,r12
> > > >
> > > > +        add     rdx,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[8+rbp]
> > > >
> > > > +        add     rdx,r14
> > > >
> > > > +        mov     r12,QWORD[40+rsi]
> > > >
> > > > +        mov     r13,r11
> > > >
> > > > +        mov     r14,rdx
> > > >
> > > > +        bswap   r12
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     rdi,rax
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r11
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     rdi,rbx
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[40+rsp],r12
> > > >
> > > > +        xor     r14,rdx
> > > >
> > > > +        and     rdi,r11
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,rcx
> > > >
> > > > +        xor     rdi,rbx
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,r11
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +
> > > >
> > > > +        mov     rdi,rdx
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,rdx
> > > >
> > > > +
> > > >
> > > > +        xor     rdi,r8
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     rcx,r8
> > > >
> > > > +
> > > >
> > > > +        and     r15,rdi
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     rcx,r15
> > > >
> > > > +        add     r10,r12
> > > >
> > > > +        add     rcx,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[24+rbp]
> > > >
> > > > +        add     rcx,r14
> > > >
> > > > +        mov     r12,QWORD[48+rsi]
> > > >
> > > > +        mov     r13,r10
> > > >
> > > > +        mov     r14,rcx
> > > >
> > > > +        bswap   r12
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     r15,r11
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r10
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     r15,rax
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[48+rsp],r12
> > > >
> > > > +        xor     r14,rcx
> > > >
> > > > +        and     r15,r10
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,rbx
> > > >
> > > > +        xor     r15,rax
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,r10
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +
> > > >
> > > > +        mov     r15,rcx
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,rcx
> > > >
> > > > +
> > > >
> > > > +        xor     r15,rdx
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     rbx,rdx
> > > >
> > > > +
> > > >
> > > > +        and     rdi,r15
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     rbx,rdi
> > > >
> > > > +        add     r9,r12
> > > >
> > > > +        add     rbx,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[8+rbp]
> > > >
> > > > +        add     rbx,r14
> > > >
> > > > +        mov     r12,QWORD[56+rsi]
> > > >
> > > > +        mov     r13,r9
> > > >
> > > > +        mov     r14,rbx
> > > >
> > > > +        bswap   r12
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     rdi,r10
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r9
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     rdi,r11
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[56+rsp],r12
> > > >
> > > > +        xor     r14,rbx
> > > >
> > > > +        and     rdi,r9
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,rax
> > > >
> > > > +        xor     rdi,r11
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,r9
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +
> > > >
> > > > +        mov     rdi,rbx
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,rbx
> > > >
> > > > +
> > > >
> > > > +        xor     rdi,rcx
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     rax,rcx
> > > >
> > > > +
> > > >
> > > > +        and     r15,rdi
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     rax,r15
> > > >
> > > > +        add     r8,r12
> > > >
> > > > +        add     rax,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[24+rbp]
> > > >
> > > > +        add     rax,r14
> > > >
> > > > +        mov     r12,QWORD[64+rsi]
> > > >
> > > > +        mov     r13,r8
> > > >
> > > > +        mov     r14,rax
> > > >
> > > > +        bswap   r12
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     r15,r9
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r8
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     r15,r10
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[64+rsp],r12
> > > >
> > > > +        xor     r14,rax
> > > >
> > > > +        and     r15,r8
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,r11
> > > >
> > > > +        xor     r15,r10
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,r8
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +
> > > >
> > > > +        mov     r15,rax
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,rax
> > > >
> > > > +
> > > >
> > > > +        xor     r15,rbx
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     r11,rbx
> > > >
> > > > +
> > > >
> > > > +        and     rdi,r15
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     r11,rdi
> > > >
> > > > +        add     rdx,r12
> > > >
> > > > +        add     r11,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[8+rbp]
> > > >
> > > > +        add     r11,r14
> > > >
> > > > +        mov     r12,QWORD[72+rsi]
> > > >
> > > > +        mov     r13,rdx
> > > >
> > > > +        mov     r14,r11
> > > >
> > > > +        bswap   r12
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     rdi,r8
> > > >
> > > > +
> > > >
> > > > +        xor     r13,rdx
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     rdi,r9
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[72+rsp],r12
> > > >
> > > > +        xor     r14,r11
> > > >
> > > > +        and     rdi,rdx
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,r10
> > > >
> > > > +        xor     rdi,r9
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,rdx
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +
> > > >
> > > > +        mov     rdi,r11
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,r11
> > > >
> > > > +
> > > >
> > > > +        xor     rdi,rax
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     r10,rax
> > > >
> > > > +
> > > >
> > > > +        and     r15,rdi
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     r10,r15
> > > >
> > > > +        add     rcx,r12
> > > >
> > > > +        add     r10,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[24+rbp]
> > > >
> > > > +        add     r10,r14
> > > >
> > > > +        mov     r12,QWORD[80+rsi]
> > > >
> > > > +        mov     r13,rcx
> > > >
> > > > +        mov     r14,r10
> > > >
> > > > +        bswap   r12
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     r15,rdx
> > > >
> > > > +
> > > >
> > > > +        xor     r13,rcx
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     r15,r8
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[80+rsp],r12
> > > >
> > > > +        xor     r14,r10
> > > >
> > > > +        and     r15,rcx
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,r9
> > > >
> > > > +        xor     r15,r8
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,rcx
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +
> > > >
> > > > +        mov     r15,r10
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,r10
> > > >
> > > > +
> > > >
> > > > +        xor     r15,r11
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     r9,r11
> > > >
> > > > +
> > > >
> > > > +        and     rdi,r15
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     r9,rdi
> > > >
> > > > +        add     rbx,r12
> > > >
> > > > +        add     r9,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[8+rbp]
> > > >
> > > > +        add     r9,r14
> > > >
> > > > +        mov     r12,QWORD[88+rsi]
> > > >
> > > > +        mov     r13,rbx
> > > >
> > > > +        mov     r14,r9
> > > >
> > > > +        bswap   r12
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +
> > > >
> > > > +        xor     r13,rbx
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     rdi,rdx
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[88+rsp],r12
> > > >
> > > > +        xor     r14,r9
> > > >
> > > > +        and     rdi,rbx
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,r8
> > > >
> > > > +        xor     rdi,rdx
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,rbx
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +
> > > >
> > > > +        mov     rdi,r9
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,r9
> > > >
> > > > +
> > > >
> > > > +        xor     rdi,r10
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     r8,r10
> > > >
> > > > +
> > > >
> > > > +        and     r15,rdi
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     r8,r15
> > > >
> > > > +        add     rax,r12
> > > >
> > > > +        add     r8,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[24+rbp]
> > > >
> > > > +        add     r8,r14
> > > >
> > > > +        mov     r12,QWORD[96+rsi]
> > > >
> > > > +        mov     r13,rax
> > > >
> > > > +        mov     r14,r8
> > > >
> > > > +        bswap   r12
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     r15,rbx
> > > >
> > > > +
> > > >
> > > > +        xor     r13,rax
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     r15,rcx
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[96+rsp],r12
> > > >
> > > > +        xor     r14,r8
> > > >
> > > > +        and     r15,rax
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,rdx
> > > >
> > > > +        xor     r15,rcx
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,rax
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +
> > > >
> > > > +        mov     r15,r8
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,r8
> > > >
> > > > +
> > > >
> > > > +        xor     r15,r9
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     rdx,r9
> > > >
> > > > +
> > > >
> > > > +        and     rdi,r15
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     rdx,rdi
> > > >
> > > > +        add     r11,r12
> > > >
> > > > +        add     rdx,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[8+rbp]
> > > >
> > > > +        add     rdx,r14
> > > >
> > > > +        mov     r12,QWORD[104+rsi]
> > > >
> > > > +        mov     r13,r11
> > > >
> > > > +        mov     r14,rdx
> > > >
> > > > +        bswap   r12
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     rdi,rax
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r11
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     rdi,rbx
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[104+rsp],r12
> > > >
> > > > +        xor     r14,rdx
> > > >
> > > > +        and     rdi,r11
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,rcx
> > > >
> > > > +        xor     rdi,rbx
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,r11
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +
> > > >
> > > > +        mov     rdi,rdx
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,rdx
> > > >
> > > > +
> > > >
> > > > +        xor     rdi,r8
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     rcx,r8
> > > >
> > > > +
> > > >
> > > > +        and     r15,rdi
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     rcx,r15
> > > >
> > > > +        add     r10,r12
> > > >
> > > > +        add     rcx,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[24+rbp]
> > > >
> > > > +        add     rcx,r14
> > > >
> > > > +        mov     r12,QWORD[112+rsi]
> > > >
> > > > +        mov     r13,r10
> > > >
> > > > +        mov     r14,rcx
> > > >
> > > > +        bswap   r12
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     r15,r11
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r10
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     r15,rax
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[112+rsp],r12
> > > >
> > > > +        xor     r14,rcx
> > > >
> > > > +        and     r15,r10
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,rbx
> > > >
> > > > +        xor     r15,rax
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,r10
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +
> > > >
> > > > +        mov     r15,rcx
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,rcx
> > > >
> > > > +
> > > >
> > > > +        xor     r15,rdx
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     rbx,rdx
> > > >
> > > > +
> > > >
> > > > +        and     rdi,r15
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     rbx,rdi
> > > >
> > > > +        add     r9,r12
> > > >
> > > > +        add     rbx,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[8+rbp]
> > > >
> > > > +        add     rbx,r14
> > > >
> > > > +        mov     r12,QWORD[120+rsi]
> > > >
> > > > +        mov     r13,r9
> > > >
> > > > +        mov     r14,rbx
> > > >
> > > > +        bswap   r12
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     rdi,r10
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r9
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     rdi,r11
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[120+rsp],r12
> > > >
> > > > +        xor     r14,rbx
> > > >
> > > > +        and     rdi,r9
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,rax
> > > >
> > > > +        xor     rdi,r11
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,r9
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +
> > > >
> > > > +        mov     rdi,rbx
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,rbx
> > > >
> > > > +
> > > >
> > > > +        xor     rdi,rcx
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     rax,rcx
> > > >
> > > > +
> > > >
> > > > +        and     r15,rdi
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     rax,r15
> > > >
> > > > +        add     r8,r12
> > > >
> > > > +        add     rax,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[24+rbp]
> > > >
> > > > +        jmp     NEAR $L$rounds_16_xx
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$rounds_16_xx:
> > > >
> > > > +        mov     r13,QWORD[8+rsp]
> > > >
> > > > +        mov     r15,QWORD[112+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12,r13
> > > >
> > > > +        ror     r13,7
> > > >
> > > > +        add     rax,r14
> > > >
> > > > +        mov     r14,r15
> > > >
> > > > +        ror     r15,42
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r12
> > > >
> > > > +        shr     r12,7
> > > >
> > > > +        ror     r13,1
> > > >
> > > > +        xor     r15,r14
> > > >
> > > > +        shr     r14,6
> > > >
> > > > +
> > > >
> > > > +        ror     r15,19
> > > >
> > > > +        xor     r12,r13
> > > >
> > > > +        xor     r15,r14
> > > >
> > > > +        add     r12,QWORD[72+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12,QWORD[rsp]
> > > >
> > > > +        mov     r13,r8
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +        mov     r14,rax
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     r15,r9
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r8
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     r15,r10
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[rsp],r12
> > > >
> > > > +        xor     r14,rax
> > > >
> > > > +        and     r15,r8
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,r11
> > > >
> > > > +        xor     r15,r10
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,r8
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +
> > > >
> > > > +        mov     r15,rax
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,rax
> > > >
> > > > +
> > > >
> > > > +        xor     r15,rbx
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     r11,rbx
> > > >
> > > > +
> > > >
> > > > +        and     rdi,r15
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     r11,rdi
> > > >
> > > > +        add     rdx,r12
> > > >
> > > > +        add     r11,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[8+rbp]
> > > >
> > > > +        mov     r13,QWORD[16+rsp]
> > > >
> > > > +        mov     rdi,QWORD[120+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12,r13
> > > >
> > > > +        ror     r13,7
> > > >
> > > > +        add     r11,r14
> > > >
> > > > +        mov     r14,rdi
> > > >
> > > > +        ror     rdi,42
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r12
> > > >
> > > > +        shr     r12,7
> > > >
> > > > +        ror     r13,1
> > > >
> > > > +        xor     rdi,r14
> > > >
> > > > +        shr     r14,6
> > > >
> > > > +
> > > >
> > > > +        ror     rdi,19
> > > >
> > > > +        xor     r12,r13
> > > >
> > > > +        xor     rdi,r14
> > > >
> > > > +        add     r12,QWORD[80+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12,QWORD[8+rsp]
> > > >
> > > > +        mov     r13,rdx
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +        mov     r14,r11
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     rdi,r8
> > > >
> > > > +
> > > >
> > > > +        xor     r13,rdx
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     rdi,r9
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[8+rsp],r12
> > > >
> > > > +        xor     r14,r11
> > > >
> > > > +        and     rdi,rdx
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,r10
> > > >
> > > > +        xor     rdi,r9
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,rdx
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +
> > > >
> > > > +        mov     rdi,r11
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,r11
> > > >
> > > > +
> > > >
> > > > +        xor     rdi,rax
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     r10,rax
> > > >
> > > > +
> > > >
> > > > +        and     r15,rdi
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     r10,r15
> > > >
> > > > +        add     rcx,r12
> > > >
> > > > +        add     r10,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[24+rbp]
> > > >
> > > > +        mov     r13,QWORD[24+rsp]
> > > >
> > > > +        mov     r15,QWORD[rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12,r13
> > > >
> > > > +        ror     r13,7
> > > >
> > > > +        add     r10,r14
> > > >
> > > > +        mov     r14,r15
> > > >
> > > > +        ror     r15,42
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r12
> > > >
> > > > +        shr     r12,7
> > > >
> > > > +        ror     r13,1
> > > >
> > > > +        xor     r15,r14
> > > >
> > > > +        shr     r14,6
> > > >
> > > > +
> > > >
> > > > +        ror     r15,19
> > > >
> > > > +        xor     r12,r13
> > > >
> > > > +        xor     r15,r14
> > > >
> > > > +        add     r12,QWORD[88+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12,QWORD[16+rsp]
> > > >
> > > > +        mov     r13,rcx
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +        mov     r14,r10
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     r15,rdx
> > > >
> > > > +
> > > >
> > > > +        xor     r13,rcx
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     r15,r8
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[16+rsp],r12
> > > >
> > > > +        xor     r14,r10
> > > >
> > > > +        and     r15,rcx
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,r9
> > > >
> > > > +        xor     r15,r8
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,rcx
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +
> > > >
> > > > +        mov     r15,r10
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,r10
> > > >
> > > > +
> > > >
> > > > +        xor     r15,r11
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     r9,r11
> > > >
> > > > +
> > > >
> > > > +        and     rdi,r15
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     r9,rdi
> > > >
> > > > +        add     rbx,r12
> > > >
> > > > +        add     r9,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[8+rbp]
> > > >
> > > > +        mov     r13,QWORD[32+rsp]
> > > >
> > > > +        mov     rdi,QWORD[8+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12,r13
> > > >
> > > > +        ror     r13,7
> > > >
> > > > +        add     r9,r14
> > > >
> > > > +        mov     r14,rdi
> > > >
> > > > +        ror     rdi,42
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r12
> > > >
> > > > +        shr     r12,7
> > > >
> > > > +        ror     r13,1
> > > >
> > > > +        xor     rdi,r14
> > > >
> > > > +        shr     r14,6
> > > >
> > > > +
> > > >
> > > > +        ror     rdi,19
> > > >
> > > > +        xor     r12,r13
> > > >
> > > > +        xor     rdi,r14
> > > >
> > > > +        add     r12,QWORD[96+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12,QWORD[24+rsp]
> > > >
> > > > +        mov     r13,rbx
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +        mov     r14,r9
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +
> > > >
> > > > +        xor     r13,rbx
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     rdi,rdx
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[24+rsp],r12
> > > >
> > > > +        xor     r14,r9
> > > >
> > > > +        and     rdi,rbx
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,r8
> > > >
> > > > +        xor     rdi,rdx
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,rbx
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +
> > > >
> > > > +        mov     rdi,r9
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,r9
> > > >
> > > > +
> > > >
> > > > +        xor     rdi,r10
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     r8,r10
> > > >
> > > > +
> > > >
> > > > +        and     r15,rdi
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     r8,r15
> > > >
> > > > +        add     rax,r12
> > > >
> > > > +        add     r8,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[24+rbp]
> > > >
> > > > +        mov     r13,QWORD[40+rsp]
> > > >
> > > > +        mov     r15,QWORD[16+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12,r13
> > > >
> > > > +        ror     r13,7
> > > >
> > > > +        add     r8,r14
> > > >
> > > > +        mov     r14,r15
> > > >
> > > > +        ror     r15,42
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r12
> > > >
> > > > +        shr     r12,7
> > > >
> > > > +        ror     r13,1
> > > >
> > > > +        xor     r15,r14
> > > >
> > > > +        shr     r14,6
> > > >
> > > > +
> > > >
> > > > +        ror     r15,19
> > > >
> > > > +        xor     r12,r13
> > > >
> > > > +        xor     r15,r14
> > > >
> > > > +        add     r12,QWORD[104+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12,QWORD[32+rsp]
> > > >
> > > > +        mov     r13,rax
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +        mov     r14,r8
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     r15,rbx
> > > >
> > > > +
> > > >
> > > > +        xor     r13,rax
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     r15,rcx
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[32+rsp],r12
> > > >
> > > > +        xor     r14,r8
> > > >
> > > > +        and     r15,rax
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,rdx
> > > >
> > > > +        xor     r15,rcx
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,rax
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +
> > > >
> > > > +        mov     r15,r8
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,r8
> > > >
> > > > +
> > > >
> > > > +        xor     r15,r9
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     rdx,r9
> > > >
> > > > +
> > > >
> > > > +        and     rdi,r15
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     rdx,rdi
> > > >
> > > > +        add     r11,r12
> > > >
> > > > +        add     rdx,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[8+rbp]
> > > >
> > > > +        mov     r13,QWORD[48+rsp]
> > > >
> > > > +        mov     rdi,QWORD[24+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12,r13
> > > >
> > > > +        ror     r13,7
> > > >
> > > > +        add     rdx,r14
> > > >
> > > > +        mov     r14,rdi
> > > >
> > > > +        ror     rdi,42
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r12
> > > >
> > > > +        shr     r12,7
> > > >
> > > > +        ror     r13,1
> > > >
> > > > +        xor     rdi,r14
> > > >
> > > > +        shr     r14,6
> > > >
> > > > +
> > > >
> > > > +        ror     rdi,19
> > > >
> > > > +        xor     r12,r13
> > > >
> > > > +        xor     rdi,r14
> > > >
> > > > +        add     r12,QWORD[112+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12,QWORD[40+rsp]
> > > >
> > > > +        mov     r13,r11
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +        mov     r14,rdx
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     rdi,rax
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r11
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     rdi,rbx
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[40+rsp],r12
> > > >
> > > > +        xor     r14,rdx
> > > >
> > > > +        and     rdi,r11
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,rcx
> > > >
> > > > +        xor     rdi,rbx
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,r11
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +
> > > >
> > > > +        mov     rdi,rdx
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,rdx
> > > >
> > > > +
> > > >
> > > > +        xor     rdi,r8
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     rcx,r8
> > > >
> > > > +
> > > >
> > > > +        and     r15,rdi
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     rcx,r15
> > > >
> > > > +        add     r10,r12
> > > >
> > > > +        add     rcx,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[24+rbp]
> > > >
> > > > +        mov     r13,QWORD[56+rsp]
> > > >
> > > > +        mov     r15,QWORD[32+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12,r13
> > > >
> > > > +        ror     r13,7
> > > >
> > > > +        add     rcx,r14
> > > >
> > > > +        mov     r14,r15
> > > >
> > > > +        ror     r15,42
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r12
> > > >
> > > > +        shr     r12,7
> > > >
> > > > +        ror     r13,1
> > > >
> > > > +        xor     r15,r14
> > > >
> > > > +        shr     r14,6
> > > >
> > > > +
> > > >
> > > > +        ror     r15,19
> > > >
> > > > +        xor     r12,r13
> > > >
> > > > +        xor     r15,r14
> > > >
> > > > +        add     r12,QWORD[120+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12,QWORD[48+rsp]
> > > >
> > > > +        mov     r13,r10
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +        mov     r14,rcx
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     r15,r11
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r10
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     r15,rax
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[48+rsp],r12
> > > >
> > > > +        xor     r14,rcx
> > > >
> > > > +        and     r15,r10
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,rbx
> > > >
> > > > +        xor     r15,rax
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,r10
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +
> > > >
> > > > +        mov     r15,rcx
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,rcx
> > > >
> > > > +
> > > >
> > > > +        xor     r15,rdx
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     rbx,rdx
> > > >
> > > > +
> > > >
> > > > +        and     rdi,r15
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     rbx,rdi
> > > >
> > > > +        add     r9,r12
> > > >
> > > > +        add     rbx,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[8+rbp]
> > > >
> > > > +        mov     r13,QWORD[64+rsp]
> > > >
> > > > +        mov     rdi,QWORD[40+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12,r13
> > > >
> > > > +        ror     r13,7
> > > >
> > > > +        add     rbx,r14
> > > >
> > > > +        mov     r14,rdi
> > > >
> > > > +        ror     rdi,42
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r12
> > > >
> > > > +        shr     r12,7
> > > >
> > > > +        ror     r13,1
> > > >
> > > > +        xor     rdi,r14
> > > >
> > > > +        shr     r14,6
> > > >
> > > > +
> > > >
> > > > +        ror     rdi,19
> > > >
> > > > +        xor     r12,r13
> > > >
> > > > +        xor     rdi,r14
> > > >
> > > > +        add     r12,QWORD[rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12,QWORD[56+rsp]
> > > >
> > > > +        mov     r13,r9
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +        mov     r14,rbx
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     rdi,r10
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r9
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     rdi,r11
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[56+rsp],r12
> > > >
> > > > +        xor     r14,rbx
> > > >
> > > > +        and     rdi,r9
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,rax
> > > >
> > > > +        xor     rdi,r11
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,r9
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +
> > > >
> > > > +        mov     rdi,rbx
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,rbx
> > > >
> > > > +
> > > >
> > > > +        xor     rdi,rcx
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     rax,rcx
> > > >
> > > > +
> > > >
> > > > +        and     r15,rdi
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     rax,r15
> > > >
> > > > +        add     r8,r12
> > > >
> > > > +        add     rax,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[24+rbp]
> > > >
> > > > +        mov     r13,QWORD[72+rsp]
> > > >
> > > > +        mov     r15,QWORD[48+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12,r13
> > > >
> > > > +        ror     r13,7
> > > >
> > > > +        add     rax,r14
> > > >
> > > > +        mov     r14,r15
> > > >
> > > > +        ror     r15,42
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r12
> > > >
> > > > +        shr     r12,7
> > > >
> > > > +        ror     r13,1
> > > >
> > > > +        xor     r15,r14
> > > >
> > > > +        shr     r14,6
> > > >
> > > > +
> > > >
> > > > +        ror     r15,19
> > > >
> > > > +        xor     r12,r13
> > > >
> > > > +        xor     r15,r14
> > > >
> > > > +        add     r12,QWORD[8+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12,QWORD[64+rsp]
> > > >
> > > > +        mov     r13,r8
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +        mov     r14,rax
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     r15,r9
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r8
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     r15,r10
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[64+rsp],r12
> > > >
> > > > +        xor     r14,rax
> > > >
> > > > +        and     r15,r8
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,r11
> > > >
> > > > +        xor     r15,r10
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,r8
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +
> > > >
> > > > +        mov     r15,rax
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,rax
> > > >
> > > > +
> > > >
> > > > +        xor     r15,rbx
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     r11,rbx
> > > >
> > > > +
> > > >
> > > > +        and     rdi,r15
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     r11,rdi
> > > >
> > > > +        add     rdx,r12
> > > >
> > > > +        add     r11,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[8+rbp]
> > > >
> > > > +        mov     r13,QWORD[80+rsp]
> > > >
> > > > +        mov     rdi,QWORD[56+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12,r13
> > > >
> > > > +        ror     r13,7
> > > >
> > > > +        add     r11,r14
> > > >
> > > > +        mov     r14,rdi
> > > >
> > > > +        ror     rdi,42
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r12
> > > >
> > > > +        shr     r12,7
> > > >
> > > > +        ror     r13,1
> > > >
> > > > +        xor     rdi,r14
> > > >
> > > > +        shr     r14,6
> > > >
> > > > +
> > > >
> > > > +        ror     rdi,19
> > > >
> > > > +        xor     r12,r13
> > > >
> > > > +        xor     rdi,r14
> > > >
> > > > +        add     r12,QWORD[16+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12,QWORD[72+rsp]
> > > >
> > > > +        mov     r13,rdx
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +        mov     r14,r11
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     rdi,r8
> > > >
> > > > +
> > > >
> > > > +        xor     r13,rdx
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     rdi,r9
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[72+rsp],r12
> > > >
> > > > +        xor     r14,r11
> > > >
> > > > +        and     rdi,rdx
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,r10
> > > >
> > > > +        xor     rdi,r9
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,rdx
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +
> > > >
> > > > +        mov     rdi,r11
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,r11
> > > >
> > > > +
> > > >
> > > > +        xor     rdi,rax
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     r10,rax
> > > >
> > > > +
> > > >
> > > > +        and     r15,rdi
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     r10,r15
> > > >
> > > > +        add     rcx,r12
> > > >
> > > > +        add     r10,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[24+rbp]
> > > >
> > > > +        mov     r13,QWORD[88+rsp]
> > > >
> > > > +        mov     r15,QWORD[64+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12,r13
> > > >
> > > > +        ror     r13,7
> > > >
> > > > +        add     r10,r14
> > > >
> > > > +        mov     r14,r15
> > > >
> > > > +        ror     r15,42
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r12
> > > >
> > > > +        shr     r12,7
> > > >
> > > > +        ror     r13,1
> > > >
> > > > +        xor     r15,r14
> > > >
> > > > +        shr     r14,6
> > > >
> > > > +
> > > >
> > > > +        ror     r15,19
> > > >
> > > > +        xor     r12,r13
> > > >
> > > > +        xor     r15,r14
> > > >
> > > > +        add     r12,QWORD[24+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12,QWORD[80+rsp]
> > > >
> > > > +        mov     r13,rcx
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +        mov     r14,r10
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     r15,rdx
> > > >
> > > > +
> > > >
> > > > +        xor     r13,rcx
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     r15,r8
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[80+rsp],r12
> > > >
> > > > +        xor     r14,r10
> > > >
> > > > +        and     r15,rcx
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,r9
> > > >
> > > > +        xor     r15,r8
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,rcx
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +
> > > >
> > > > +        mov     r15,r10
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,r10
> > > >
> > > > +
> > > >
> > > > +        xor     r15,r11
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     r9,r11
> > > >
> > > > +
> > > >
> > > > +        and     rdi,r15
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     r9,rdi
> > > >
> > > > +        add     rbx,r12
> > > >
> > > > +        add     r9,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[8+rbp]
> > > >
> > > > +        mov     r13,QWORD[96+rsp]
> > > >
> > > > +        mov     rdi,QWORD[72+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12,r13
> > > >
> > > > +        ror     r13,7
> > > >
> > > > +        add     r9,r14
> > > >
> > > > +        mov     r14,rdi
> > > >
> > > > +        ror     rdi,42
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r12
> > > >
> > > > +        shr     r12,7
> > > >
> > > > +        ror     r13,1
> > > >
> > > > +        xor     rdi,r14
> > > >
> > > > +        shr     r14,6
> > > >
> > > > +
> > > >
> > > > +        ror     rdi,19
> > > >
> > > > +        xor     r12,r13
> > > >
> > > > +        xor     rdi,r14
> > > >
> > > > +        add     r12,QWORD[32+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12,QWORD[88+rsp]
> > > >
> > > > +        mov     r13,rbx
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +        mov     r14,r9
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +
> > > >
> > > > +        xor     r13,rbx
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     rdi,rdx
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[88+rsp],r12
> > > >
> > > > +        xor     r14,r9
> > > >
> > > > +        and     rdi,rbx
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,r8
> > > >
> > > > +        xor     rdi,rdx
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,rbx
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +
> > > >
> > > > +        mov     rdi,r9
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,r9
> > > >
> > > > +
> > > >
> > > > +        xor     rdi,r10
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     r8,r10
> > > >
> > > > +
> > > >
> > > > +        and     r15,rdi
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     r8,r15
> > > >
> > > > +        add     rax,r12
> > > >
> > > > +        add     r8,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[24+rbp]
> > > >
> > > > +        mov     r13,QWORD[104+rsp]
> > > >
> > > > +        mov     r15,QWORD[80+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12,r13
> > > >
> > > > +        ror     r13,7
> > > >
> > > > +        add     r8,r14
> > > >
> > > > +        mov     r14,r15
> > > >
> > > > +        ror     r15,42
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r12
> > > >
> > > > +        shr     r12,7
> > > >
> > > > +        ror     r13,1
> > > >
> > > > +        xor     r15,r14
> > > >
> > > > +        shr     r14,6
> > > >
> > > > +
> > > >
> > > > +        ror     r15,19
> > > >
> > > > +        xor     r12,r13
> > > >
> > > > +        xor     r15,r14
> > > >
> > > > +        add     r12,QWORD[40+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12,QWORD[96+rsp]
> > > >
> > > > +        mov     r13,rax
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +        mov     r14,r8
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     r15,rbx
> > > >
> > > > +
> > > >
> > > > +        xor     r13,rax
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     r15,rcx
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[96+rsp],r12
> > > >
> > > > +        xor     r14,r8
> > > >
> > > > +        and     r15,rax
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,rdx
> > > >
> > > > +        xor     r15,rcx
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,rax
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +
> > > >
> > > > +        mov     r15,r8
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,r8
> > > >
> > > > +
> > > >
> > > > +        xor     r15,r9
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     rdx,r9
> > > >
> > > > +
> > > >
> > > > +        and     rdi,r15
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     rdx,rdi
> > > >
> > > > +        add     r11,r12
> > > >
> > > > +        add     rdx,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[8+rbp]
> > > >
> > > > +        mov     r13,QWORD[112+rsp]
> > > >
> > > > +        mov     rdi,QWORD[88+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12,r13
> > > >
> > > > +        ror     r13,7
> > > >
> > > > +        add     rdx,r14
> > > >
> > > > +        mov     r14,rdi
> > > >
> > > > +        ror     rdi,42
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r12
> > > >
> > > > +        shr     r12,7
> > > >
> > > > +        ror     r13,1
> > > >
> > > > +        xor     rdi,r14
> > > >
> > > > +        shr     r14,6
> > > >
> > > > +
> > > >
> > > > +        ror     rdi,19
> > > >
> > > > +        xor     r12,r13
> > > >
> > > > +        xor     rdi,r14
> > > >
> > > > +        add     r12,QWORD[48+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12,QWORD[104+rsp]
> > > >
> > > > +        mov     r13,r11
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +        mov     r14,rdx
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     rdi,rax
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r11
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     rdi,rbx
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[104+rsp],r12
> > > >
> > > > +        xor     r14,rdx
> > > >
> > > > +        and     rdi,r11
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,rcx
> > > >
> > > > +        xor     rdi,rbx
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,r11
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +
> > > >
> > > > +        mov     rdi,rdx
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,rdx
> > > >
> > > > +
> > > >
> > > > +        xor     rdi,r8
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     rcx,r8
> > > >
> > > > +
> > > >
> > > > +        and     r15,rdi
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     rcx,r15
> > > >
> > > > +        add     r10,r12
> > > >
> > > > +        add     rcx,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[24+rbp]
> > > >
> > > > +        mov     r13,QWORD[120+rsp]
> > > >
> > > > +        mov     r15,QWORD[96+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12,r13
> > > >
> > > > +        ror     r13,7
> > > >
> > > > +        add     rcx,r14
> > > >
> > > > +        mov     r14,r15
> > > >
> > > > +        ror     r15,42
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r12
> > > >
> > > > +        shr     r12,7
> > > >
> > > > +        ror     r13,1
> > > >
> > > > +        xor     r15,r14
> > > >
> > > > +        shr     r14,6
> > > >
> > > > +
> > > >
> > > > +        ror     r15,19
> > > >
> > > > +        xor     r12,r13
> > > >
> > > > +        xor     r15,r14
> > > >
> > > > +        add     r12,QWORD[56+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12,QWORD[112+rsp]
> > > >
> > > > +        mov     r13,r10
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +        mov     r14,rcx
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     r15,r11
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r10
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     r15,rax
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[112+rsp],r12
> > > >
> > > > +        xor     r14,rcx
> > > >
> > > > +        and     r15,r10
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,rbx
> > > >
> > > > +        xor     r15,rax
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,r10
> > > >
> > > > +        add     r12,r15
> > > >
> > > > +
> > > >
> > > > +        mov     r15,rcx
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,rcx
> > > >
> > > > +
> > > >
> > > > +        xor     r15,rdx
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     rbx,rdx
> > > >
> > > > +
> > > >
> > > > +        and     rdi,r15
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     rbx,rdi
> > > >
> > > > +        add     r9,r12
> > > >
> > > > +        add     rbx,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[8+rbp]
> > > >
> > > > +        mov     r13,QWORD[rsp]
> > > >
> > > > +        mov     rdi,QWORD[104+rsp]
> > > >
> > > > +
> > > >
> > > > +        mov     r12,r13
> > > >
> > > > +        ror     r13,7
> > > >
> > > > +        add     rbx,r14
> > > >
> > > > +        mov     r14,rdi
> > > >
> > > > +        ror     rdi,42
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r12
> > > >
> > > > +        shr     r12,7
> > > >
> > > > +        ror     r13,1
> > > >
> > > > +        xor     rdi,r14
> > > >
> > > > +        shr     r14,6
> > > >
> > > > +
> > > >
> > > > +        ror     rdi,19
> > > >
> > > > +        xor     r12,r13
> > > >
> > > > +        xor     rdi,r14
> > > >
> > > > +        add     r12,QWORD[64+rsp]
> > > >
> > > > +
> > > >
> > > > +        add     r12,QWORD[120+rsp]
> > > >
> > > > +        mov     r13,r9
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +        mov     r14,rbx
> > > >
> > > > +        ror     r13,23
> > > >
> > > > +        mov     rdi,r10
> > > >
> > > > +
> > > >
> > > > +        xor     r13,r9
> > > >
> > > > +        ror     r14,5
> > > >
> > > > +        xor     rdi,r11
> > > >
> > > > +
> > > >
> > > > +        mov     QWORD[120+rsp],r12
> > > >
> > > > +        xor     r14,rbx
> > > >
> > > > +        and     rdi,r9
> > > >
> > > > +
> > > >
> > > > +        ror     r13,4
> > > >
> > > > +        add     r12,rax
> > > >
> > > > +        xor     rdi,r11
> > > >
> > > > +
> > > >
> > > > +        ror     r14,6
> > > >
> > > > +        xor     r13,r9
> > > >
> > > > +        add     r12,rdi
> > > >
> > > > +
> > > >
> > > > +        mov     rdi,rbx
> > > >
> > > > +        add     r12,QWORD[rbp]
> > > >
> > > > +        xor     r14,rbx
> > > >
> > > > +
> > > >
> > > > +        xor     rdi,rcx
> > > >
> > > > +        ror     r13,14
> > > >
> > > > +        mov     rax,rcx
> > > >
> > > > +
> > > >
> > > > +        and     r15,rdi
> > > >
> > > > +        ror     r14,28
> > > >
> > > > +        add     r12,r13
> > > >
> > > > +
> > > >
> > > > +        xor     rax,r15
> > > >
> > > > +        add     r8,r12
> > > >
> > > > +        add     rax,r12
> > > >
> > > > +
> > > >
> > > > +        lea     rbp,[24+rbp]
> > > >
> > > > +        cmp     BYTE[7+rbp],0
> > > >
> > > > +        jnz     NEAR $L$rounds_16_xx
> > > >
> > > > +
> > > >
> > > > +        mov     rdi,QWORD[((128+0))+rsp]
> > > >
> > > > +        add     rax,r14
> > > >
> > > > +        lea     rsi,[128+rsi]
> > > >
> > > > +
> > > >
> > > > +        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[((128+16))+rsp]
> > > >
> > > > +
> > > >
> > > > +        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[152+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$epilogue:
> > > >
> > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > >
> > > > +        mov     rsi,QWORD[16+rsp]
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +$L$SEH_end_sha512_block_data_order:
> > > >
> > > > +ALIGN   64
> > > >
> > > > +
> > > >
> > > > +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      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
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +se_handler:
> > > >
> > > > +        push    rsi
> > > >
> > > > +        push    rdi
> > > >
> > > > +        push    rbx
> > > >
> > > > +        push    rbp
> > > >
> > > > +        push    r12
> > > >
> > > > +        push    r13
> > > >
> > > > +        push    r14
> > > >
> > > > +        push    r15
> > > >
> > > > +        pushfq
> > > >
> > > > +        sub     rsp,64
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[120+r8]
> > > >
> > > > +        mov     rbx,QWORD[248+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,QWORD[8+r9]
> > > >
> > > > +        mov     r11,QWORD[56+r9]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$in_prologue
> > > >
> > > > +
> > > >
> > > > +        mov     rax,QWORD[152+r8]
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,DWORD[4+r11]
> > > >
> > > > +        lea     r10,[r10*1+rsi]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jae     NEAR $L$in_prologue
> > > >
> > > > +        mov     rsi,rax
> > > >
> > > > +        mov     rax,QWORD[((128+24))+rax]
> > > >
> > > > +
> > > >
> > > > +        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,[$L$epilogue]
> > > >
> > > > +        cmp     rbx,r10
> > > >
> > > > +        jb      NEAR $L$in_prologue
> > > >
> > > > +
> > > >
> > > > +        lea     rsi,[((128+32))+rsi]
> > > >
> > > > +        lea     rdi,[512+r8]
> > > >
> > > > +        mov     ecx,12
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +$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[40+r9]
> > > >
> > > > +        mov     rsi,r8
> > > >
> > > > +        mov     ecx,154
> > > >
> > > > +        DD      0xa548f3fc
> > > >
> > > > +
> > > >
> > > > +        mov     rsi,r9
> > > >
> > > > +        xor     rcx,rcx
> > > >
> > > > +        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
> > > >
> > > > +        popfq
> > > >
> > > > +        pop     r15
> > > >
> > > > +        pop     r14
> > > >
> > > > +        pop     r13
> > > >
> > > > +        pop     r12
> > > >
> > > > +        pop     rbp
> > > >
> > > > +        pop     rbx
> > > >
> > > > +        pop     rdi
> > > >
> > > > +        pop     rsi
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +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/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > > > new file mode 100644
> > > > index 0000000000..2a3d5bcf72
> > > > --- /dev/null
> > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > > > @@ -0,0 +1,491 @@
> > > > +; WARNING: do not edit!
> > > >
> > > > +; Generated from openssl/crypto/x86_64cpuid.pl
> > > >
> > > > +;
> > > >
> > > > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
> Reserved.
> > > >
> > > > +;
> > > >
> > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > >
> > > > +; this file except in compliance with the License.  You can obtain a
> copy
> > > >
> > > > +; in the file LICENSE in the source distribution or at
> > > >
> > > > +; https://www.openssl.org/source/license.html
> > > >
> > > > +
> > > >
> > > > +default rel
> > > >
> > > > +%define XMMWORD
> > > >
> > > > +%define YMMWORD
> > > >
> > > > +%define ZMMWORD
> > > >
> > > > +EXTERN  OPENSSL_cpuid_setup
> > > >
> > > > +
> > > >
> > > > +section .CRT$XCU rdata align=8
> > > >
> > > > +                DQ      OPENSSL_cpuid_setup
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +common  OPENSSL_ia32cap_P 16
> > > >
> > > > +
> > > >
> > > > +section .text code align=64
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +global  OPENSSL_atomic_add
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +OPENSSL_atomic_add:
> > > >
> > > > +
> > > >
> > > > +        mov     eax,DWORD[rcx]
> > > >
> > > > +$L$spin:        lea     r8,[rax*1+rdx]
> > > >
> > > > +DB      0xf0
> > > >
> > > > +        cmpxchg DWORD[rcx],r8d
> > > >
> > > > +        jne     NEAR $L$spin
> > > >
> > > > +        mov     eax,r8d
> > > >
> > > > +DB      0x48,0x98
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +global  OPENSSL_rdtsc
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +OPENSSL_rdtsc:
> > > >
> > > > +
> > > >
> > > > +        rdtsc
> > > >
> > > > +        shl     rdx,32
> > > >
> > > > +        or      rax,rdx
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +global  OPENSSL_ia32_cpuid
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +OPENSSL_ia32_cpuid:
> > > >
> > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > >
> > > > +        mov     QWORD[16+rsp],rsi
> > > >
> > > > +        mov     rax,rsp
> > > >
> > > > +$L$SEH_begin_OPENSSL_ia32_cpuid:
> > > >
> > > > +        mov     rdi,rcx
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        mov     r8,rbx
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        xor     eax,eax
> > > >
> > > > +        mov     QWORD[8+rdi],rax
> > > >
> > > > +        cpuid
> > > >
> > > > +        mov     r11d,eax
> > > >
> > > > +
> > > >
> > > > +        xor     eax,eax
> > > >
> > > > +        cmp     ebx,0x756e6547
> > > >
> > > > +        setne   al
> > > >
> > > > +        mov     r9d,eax
> > > >
> > > > +        cmp     edx,0x49656e69
> > > >
> > > > +        setne   al
> > > >
> > > > +        or      r9d,eax
> > > >
> > > > +        cmp     ecx,0x6c65746e
> > > >
> > > > +        setne   al
> > > >
> > > > +        or      r9d,eax
> > > >
> > > > +        jz      NEAR $L$intel
> > > >
> > > > +
> > > >
> > > > +        cmp     ebx,0x68747541
> > > >
> > > > +        setne   al
> > > >
> > > > +        mov     r10d,eax
> > > >
> > > > +        cmp     edx,0x69746E65
> > > >
> > > > +        setne   al
> > > >
> > > > +        or      r10d,eax
> > > >
> > > > +        cmp     ecx,0x444D4163
> > > >
> > > > +        setne   al
> > > >
> > > > +        or      r10d,eax
> > > >
> > > > +        jnz     NEAR $L$intel
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        mov     eax,0x80000000
> > > >
> > > > +        cpuid
> > > >
> > > > +        cmp     eax,0x80000001
> > > >
> > > > +        jb      NEAR $L$intel
> > > >
> > > > +        mov     r10d,eax
> > > >
> > > > +        mov     eax,0x80000001
> > > >
> > > > +        cpuid
> > > >
> > > > +        or      r9d,ecx
> > > >
> > > > +        and     r9d,0x00000801
> > > >
> > > > +
> > > >
> > > > +        cmp     r10d,0x80000008
> > > >
> > > > +        jb      NEAR $L$intel
> > > >
> > > > +
> > > >
> > > > +        mov     eax,0x80000008
> > > >
> > > > +        cpuid
> > > >
> > > > +        movzx   r10,cl
> > > >
> > > > +        inc     r10
> > > >
> > > > +
> > > >
> > > > +        mov     eax,1
> > > >
> > > > +        cpuid
> > > >
> > > > +        bt      edx,28
> > > >
> > > > +        jnc     NEAR $L$generic
> > > >
> > > > +        shr     ebx,16
> > > >
> > > > +        cmp     bl,r10b
> > > >
> > > > +        ja      NEAR $L$generic
> > > >
> > > > +        and     edx,0xefffffff
> > > >
> > > > +        jmp     NEAR $L$generic
> > > >
> > > > +
> > > >
> > > > +$L$intel:
> > > >
> > > > +        cmp     r11d,4
> > > >
> > > > +        mov     r10d,-1
> > > >
> > > > +        jb      NEAR $L$nocacheinfo
> > > >
> > > > +
> > > >
> > > > +        mov     eax,4
> > > >
> > > > +        mov     ecx,0
> > > >
> > > > +        cpuid
> > > >
> > > > +        mov     r10d,eax
> > > >
> > > > +        shr     r10d,14
> > > >
> > > > +        and     r10d,0xfff
> > > >
> > > > +
> > > >
> > > > +$L$nocacheinfo:
> > > >
> > > > +        mov     eax,1
> > > >
> > > > +        cpuid
> > > >
> > > > +        movd    xmm0,eax
> > > >
> > > > +        and     edx,0xbfefffff
> > > >
> > > > +        cmp     r9d,0
> > > >
> > > > +        jne     NEAR $L$notintel
> > > >
> > > > +        or      edx,0x40000000
> > > >
> > > > +        and     ah,15
> > > >
> > > > +        cmp     ah,15
> > > >
> > > > +        jne     NEAR $L$notP4
> > > >
> > > > +        or      edx,0x00100000
> > > >
> > > > +$L$notP4:
> > > >
> > > > +        cmp     ah,6
> > > >
> > > > +        jne     NEAR $L$notintel
> > > >
> > > > +        and     eax,0x0fff0ff0
> > > >
> > > > +        cmp     eax,0x00050670
> > > >
> > > > +        je      NEAR $L$knights
> > > >
> > > > +        cmp     eax,0x00080650
> > > >
> > > > +        jne     NEAR $L$notintel
> > > >
> > > > +$L$knights:
> > > >
> > > > +        and     ecx,0xfbffffff
> > > >
> > > > +
> > > >
> > > > +$L$notintel:
> > > >
> > > > +        bt      edx,28
> > > >
> > > > +        jnc     NEAR $L$generic
> > > >
> > > > +        and     edx,0xefffffff
> > > >
> > > > +        cmp     r10d,0
> > > >
> > > > +        je      NEAR $L$generic
> > > >
> > > > +
> > > >
> > > > +        or      edx,0x10000000
> > > >
> > > > +        shr     ebx,16
> > > >
> > > > +        cmp     bl,1
> > > >
> > > > +        ja      NEAR $L$generic
> > > >
> > > > +        and     edx,0xefffffff
> > > >
> > > > +$L$generic:
> > > >
> > > > +        and     r9d,0x00000800
> > > >
> > > > +        and     ecx,0xfffff7ff
> > > >
> > > > +        or      r9d,ecx
> > > >
> > > > +
> > > >
> > > > +        mov     r10d,edx
> > > >
> > > > +
> > > >
> > > > +        cmp     r11d,7
> > > >
> > > > +        jb      NEAR $L$no_extended_info
> > > >
> > > > +        mov     eax,7
> > > >
> > > > +        xor     ecx,ecx
> > > >
> > > > +        cpuid
> > > >
> > > > +        bt      r9d,26
> > > >
> > > > +        jc      NEAR $L$notknights
> > > >
> > > > +        and     ebx,0xfff7ffff
> > > >
> > > > +$L$notknights:
> > > >
> > > > +        movd    eax,xmm0
> > > >
> > > > +        and     eax,0x0fff0ff0
> > > >
> > > > +        cmp     eax,0x00050650
> > > >
> > > > +        jne     NEAR $L$notskylakex
> > > >
> > > > +        and     ebx,0xfffeffff
> > > >
> > > > +
> > > >
> > > > +$L$notskylakex:
> > > >
> > > > +        mov     DWORD[8+rdi],ebx
> > > >
> > > > +        mov     DWORD[12+rdi],ecx
> > > >
> > > > +$L$no_extended_info:
> > > >
> > > > +
> > > >
> > > > +        bt      r9d,27
> > > >
> > > > +        jnc     NEAR $L$clear_avx
> > > >
> > > > +        xor     ecx,ecx
> > > >
> > > > +DB      0x0f,0x01,0xd0
> > > >
> > > > +        and     eax,0xe6
> > > >
> > > > +        cmp     eax,0xe6
> > > >
> > > > +        je      NEAR $L$done
> > > >
> > > > +        and     DWORD[8+rdi],0x3fdeffff
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +        and     eax,6
> > > >
> > > > +        cmp     eax,6
> > > >
> > > > +        je      NEAR $L$done
> > > >
> > > > +$L$clear_avx:
> > > >
> > > > +        mov     eax,0xefffe7ff
> > > >
> > > > +        and     r9d,eax
> > > >
> > > > +        mov     eax,0x3fdeffdf
> > > >
> > > > +        and     DWORD[8+rdi],eax
> > > >
> > > > +$L$done:
> > > >
> > > > +        shl     r9,32
> > > >
> > > > +        mov     eax,r10d
> > > >
> > > > +        mov     rbx,r8
> > > >
> > > > +
> > > >
> > > > +        or      rax,r9
> > > >
> > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > >
> > > > +        mov     rsi,QWORD[16+rsp]
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +$L$SEH_end_OPENSSL_ia32_cpuid:
> > > >
> > > > +
> > > >
> > > > +global  OPENSSL_cleanse
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +OPENSSL_cleanse:
> > > >
> > > > +
> > > >
> > > > +        xor     rax,rax
> > > >
> > > > +        cmp     rdx,15
> > > >
> > > > +        jae     NEAR $L$ot
> > > >
> > > > +        cmp     rdx,0
> > > >
> > > > +        je      NEAR $L$ret
> > > >
> > > > +$L$ittle:
> > > >
> > > > +        mov     BYTE[rcx],al
> > > >
> > > > +        sub     rdx,1
> > > >
> > > > +        lea     rcx,[1+rcx]
> > > >
> > > > +        jnz     NEAR $L$ittle
> > > >
> > > > +$L$ret:
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$ot:
> > > >
> > > > +        test    rcx,7
> > > >
> > > > +        jz      NEAR $L$aligned
> > > >
> > > > +        mov     BYTE[rcx],al
> > > >
> > > > +        lea     rdx,[((-1))+rdx]
> > > >
> > > > +        lea     rcx,[1+rcx]
> > > >
> > > > +        jmp     NEAR $L$ot
> > > >
> > > > +$L$aligned:
> > > >
> > > > +        mov     QWORD[rcx],rax
> > > >
> > > > +        lea     rdx,[((-8))+rdx]
> > > >
> > > > +        test    rdx,-8
> > > >
> > > > +        lea     rcx,[8+rcx]
> > > >
> > > > +        jnz     NEAR $L$aligned
> > > >
> > > > +        cmp     rdx,0
> > > >
> > > > +        jne     NEAR $L$ittle
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +global  CRYPTO_memcmp
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +CRYPTO_memcmp:
> > > >
> > > > +
> > > >
> > > > +        xor     rax,rax
> > > >
> > > > +        xor     r10,r10
> > > >
> > > > +        cmp     r8,0
> > > >
> > > > +        je      NEAR $L$no_data
> > > >
> > > > +        cmp     r8,16
> > > >
> > > > +        jne     NEAR $L$oop_cmp
> > > >
> > > > +        mov     r10,QWORD[rcx]
> > > >
> > > > +        mov     r11,QWORD[8+rcx]
> > > >
> > > > +        mov     r8,1
> > > >
> > > > +        xor     r10,QWORD[rdx]
> > > >
> > > > +        xor     r11,QWORD[8+rdx]
> > > >
> > > > +        or      r10,r11
> > > >
> > > > +        cmovnz  rax,r8
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$oop_cmp:
> > > >
> > > > +        mov     r10b,BYTE[rcx]
> > > >
> > > > +        lea     rcx,[1+rcx]
> > > >
> > > > +        xor     r10b,BYTE[rdx]
> > > >
> > > > +        lea     rdx,[1+rdx]
> > > >
> > > > +        or      al,r10b
> > > >
> > > > +        dec     r8
> > > >
> > > > +        jnz     NEAR $L$oop_cmp
> > > >
> > > > +        neg     rax
> > > >
> > > > +        shr     rax,63
> > > >
> > > > +$L$no_data:
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +global  OPENSSL_wipe_cpu
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +OPENSSL_wipe_cpu:
> > > >
> > > > +        pxor    xmm0,xmm0
> > > >
> > > > +        pxor    xmm1,xmm1
> > > >
> > > > +        pxor    xmm2,xmm2
> > > >
> > > > +        pxor    xmm3,xmm3
> > > >
> > > > +        pxor    xmm4,xmm4
> > > >
> > > > +        pxor    xmm5,xmm5
> > > >
> > > > +        xor     rcx,rcx
> > > >
> > > > +        xor     rdx,rdx
> > > >
> > > > +        xor     r8,r8
> > > >
> > > > +        xor     r9,r9
> > > >
> > > > +        xor     r10,r10
> > > >
> > > > +        xor     r11,r11
> > > >
> > > > +        lea     rax,[8+rsp]
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +global  OPENSSL_instrument_bus
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +OPENSSL_instrument_bus:
> > > >
> > > > +
> > > >
> > > > +        mov     r10,rcx
> > > >
> > > > +        mov     rcx,rdx
> > > >
> > > > +        mov     r11,rdx
> > > >
> > > > +
> > > >
> > > > +        rdtsc
> > > >
> > > > +        mov     r8d,eax
> > > >
> > > > +        mov     r9d,0
> > > >
> > > > +        clflush [r10]
> > > >
> > > > +DB      0xf0
> > > >
> > > > +        add     DWORD[r10],r9d
> > > >
> > > > +        jmp     NEAR $L$oop
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$oop: rdtsc
> > > >
> > > > +        mov     edx,eax
> > > >
> > > > +        sub     eax,r8d
> > > >
> > > > +        mov     r8d,edx
> > > >
> > > > +        mov     r9d,eax
> > > >
> > > > +        clflush [r10]
> > > >
> > > > +DB      0xf0
> > > >
> > > > +        add     DWORD[r10],eax
> > > >
> > > > +        lea     r10,[4+r10]
> > > >
> > > > +        sub     rcx,1
> > > >
> > > > +        jnz     NEAR $L$oop
> > > >
> > > > +
> > > >
> > > > +        mov     rax,r11
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +global  OPENSSL_instrument_bus2
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +OPENSSL_instrument_bus2:
> > > >
> > > > +
> > > >
> > > > +        mov     r10,rcx
> > > >
> > > > +        mov     rcx,rdx
> > > >
> > > > +        mov     r11,r8
> > > >
> > > > +        mov     QWORD[8+rsp],rcx
> > > >
> > > > +
> > > >
> > > > +        rdtsc
> > > >
> > > > +        mov     r8d,eax
> > > >
> > > > +        mov     r9d,0
> > > >
> > > > +
> > > >
> > > > +        clflush [r10]
> > > >
> > > > +DB      0xf0
> > > >
> > > > +        add     DWORD[r10],r9d
> > > >
> > > > +
> > > >
> > > > +        rdtsc
> > > >
> > > > +        mov     edx,eax
> > > >
> > > > +        sub     eax,r8d
> > > >
> > > > +        mov     r8d,edx
> > > >
> > > > +        mov     r9d,eax
> > > >
> > > > +$L$oop2:
> > > >
> > > > +        clflush [r10]
> > > >
> > > > +DB      0xf0
> > > >
> > > > +        add     DWORD[r10],eax
> > > >
> > > > +
> > > >
> > > > +        sub     r11,1
> > > >
> > > > +        jz      NEAR $L$done2
> > > >
> > > > +
> > > >
> > > > +        rdtsc
> > > >
> > > > +        mov     edx,eax
> > > >
> > > > +        sub     eax,r8d
> > > >
> > > > +        mov     r8d,edx
> > > >
> > > > +        cmp     eax,r9d
> > > >
> > > > +        mov     r9d,eax
> > > >
> > > > +        mov     edx,0
> > > >
> > > > +        setne   dl
> > > >
> > > > +        sub     rcx,rdx
> > > >
> > > > +        lea     r10,[rdx*4+r10]
> > > >
> > > > +        jnz     NEAR $L$oop2
> > > >
> > > > +
> > > >
> > > > +$L$done2:
> > > >
> > > > +        mov     rax,QWORD[8+rsp]
> > > >
> > > > +        sub     rax,rcx
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +global  OPENSSL_ia32_rdrand_bytes
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +OPENSSL_ia32_rdrand_bytes:
> > > >
> > > > +
> > > >
> > > > +        xor     rax,rax
> > > >
> > > > +        cmp     rdx,0
> > > >
> > > > +        je      NEAR $L$done_rdrand_bytes
> > > >
> > > > +
> > > >
> > > > +        mov     r11,8
> > > >
> > > > +$L$oop_rdrand_bytes:
> > > >
> > > > +DB      73,15,199,242
> > > >
> > > > +        jc      NEAR $L$break_rdrand_bytes
> > > >
> > > > +        dec     r11
> > > >
> > > > +        jnz     NEAR $L$oop_rdrand_bytes
> > > >
> > > > +        jmp     NEAR $L$done_rdrand_bytes
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$break_rdrand_bytes:
> > > >
> > > > +        cmp     rdx,8
> > > >
> > > > +        jb      NEAR $L$tail_rdrand_bytes
> > > >
> > > > +        mov     QWORD[rcx],r10
> > > >
> > > > +        lea     rcx,[8+rcx]
> > > >
> > > > +        add     rax,8
> > > >
> > > > +        sub     rdx,8
> > > >
> > > > +        jz      NEAR $L$done_rdrand_bytes
> > > >
> > > > +        mov     r11,8
> > > >
> > > > +        jmp     NEAR $L$oop_rdrand_bytes
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$tail_rdrand_bytes:
> > > >
> > > > +        mov     BYTE[rcx],r10b
> > > >
> > > > +        lea     rcx,[1+rcx]
> > > >
> > > > +        inc     rax
> > > >
> > > > +        shr     r10,8
> > > >
> > > > +        dec     rdx
> > > >
> > > > +        jnz     NEAR $L$tail_rdrand_bytes
> > > >
> > > > +
> > > >
> > > > +$L$done_rdrand_bytes:
> > > >
> > > > +        xor     r10,r10
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > +global  OPENSSL_ia32_rdseed_bytes
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +OPENSSL_ia32_rdseed_bytes:
> > > >
> > > > +
> > > >
> > > > +        xor     rax,rax
> > > >
> > > > +        cmp     rdx,0
> > > >
> > > > +        je      NEAR $L$done_rdseed_bytes
> > > >
> > > > +
> > > >
> > > > +        mov     r11,8
> > > >
> > > > +$L$oop_rdseed_bytes:
> > > >
> > > > +DB      73,15,199,250
> > > >
> > > > +        jc      NEAR $L$break_rdseed_bytes
> > > >
> > > > +        dec     r11
> > > >
> > > > +        jnz     NEAR $L$oop_rdseed_bytes
> > > >
> > > > +        jmp     NEAR $L$done_rdseed_bytes
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$break_rdseed_bytes:
> > > >
> > > > +        cmp     rdx,8
> > > >
> > > > +        jb      NEAR $L$tail_rdseed_bytes
> > > >
> > > > +        mov     QWORD[rcx],r10
> > > >
> > > > +        lea     rcx,[8+rcx]
> > > >
> > > > +        add     rax,8
> > > >
> > > > +        sub     rdx,8
> > > >
> > > > +        jz      NEAR $L$done_rdseed_bytes
> > > >
> > > > +        mov     r11,8
> > > >
> > > > +        jmp     NEAR $L$oop_rdseed_bytes
> > > >
> > > > +
> > > >
> > > > +ALIGN   16
> > > >
> > > > +$L$tail_rdseed_bytes:
> > > >
> > > > +        mov     BYTE[rcx],r10b
> > > >
> > > > +        lea     rcx,[1+rcx]
> > > >
> > > > +        inc     rax
> > > >
> > > > +        shr     r10,8
> > > >
> > > > +        dec     rdx
> > > >
> > > > +        jnz     NEAR $L$tail_rdseed_bytes
> > > >
> > > > +
> > > >
> > > > +$L$done_rdseed_bytes:
> > > >
> > > > +        xor     r10,r10
> > > >
> > > > +        DB      0F3h,0C3h               ;repret
> > > >
> > > > +
> > > >
> > > > +
> > > >
> > > > --
> > > > 2.28.0.windows.1


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

* Re: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
  2020-08-14 19:34         ` Zurcher, Christopher J
@ 2020-08-18  2:36           ` Wang, Jian J
  2020-08-18 16:15             ` Michael D Kinney
  2020-08-18 16:15           ` Michael D Kinney
  1 sibling, 1 reply; 42+ messages in thread
From: Wang, Jian J @ 2020-08-18  2:36 UTC (permalink / raw)
  To: Zurcher, Christopher J, Yao, Jiewen, Kinney, Michael D,
	devel@edk2.groups.io
  Cc: Lu, XiaoyuX, Ard Biesheuvel

I agree with Christopher. Currently manual works are inevitable in openssl upgrade,
because perl script is used to automate part of code generation. It's hard to ask
Windows developers to install an extra interpreter like perl, considering it's not 
popular in Windows environment.

Regards,
Jian

> -----Original Message-----
> From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> Sent: Saturday, August 15, 2020 3:35 AM
> To: Yao, Jiewen <jiewen.yao@intel.com>; Kinney, Michael D
> <michael.d.kinney@intel.com>; devel@edk2.groups.io
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated
> assembly files for X64
> 
> The current OpenSSL "UEFI" configuration depends on the OpenSSL build
> happening in a Unix-like environment. For a Windows-based build, this must be
> done in a wrapper such as Cygwin/git bash or WSL. Integrating the OpenSSL
> config step into the build process is a non-trivial change.
> 
> > > > That means, whenever we upgrade the openssl, we need manually
> generate
> > > > them again.
> > > > Any step by step, or readme to tell us how to do that?
> 
> The process for generating these X64 files is virtually identical to the already-
> existing maintainer process for OpensslLib, with only one additional argument
> required to process_files.pl.
> 
> OpensslLib as it exists today in EDK2 already includes auto-generated files from
> the Perl configure process. If we want to re-architect how we include OpenSSL
> into EDK2, I think that should be done in a different patch set. Additionally, such
> a large task might be a waste of time with the release of OpenSSL 3 happening
> later this year. They are making changes to their build system, and I think that if
> we are going to re-architect our side of it, we should wait until we are adopting
> OpenSSL 3.
> 
> --
> Christopher Zurcher
> 
> > -----Original Message-----
> > From: Yao, Jiewen <jiewen.yao@intel.com>
> > Sent: Thursday, August 13, 2020 08:46
> > To: Kinney, Michael D <michael.d.kinney@intel.com>; Zurcher, Christopher J
> > <christopher.j.zurcher@intel.com>; devel@edk2.groups.io
> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>;
> > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
> generated
> > assembly files for X64
> >
> > Thank you Mike to help on this.
> >
> > I also believe that the best option is to integrate the auto-gen process in
> > base tool.
> >
> >
> >
> > > -----Original Message-----
> > > From: Kinney, Michael D <michael.d.kinney@intel.com>
> > > Sent: Thursday, August 13, 2020 11:38 PM
> > > To: Yao, Jiewen <jiewen.yao@intel.com>; Zurcher, Christopher J
> > > <christopher.j.zurcher@intel.com>; devel@edk2.groups.io; Kinney, Michael
> D
> > > <michael.d.kinney@intel.com>
> > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > <xiaoyux.lu@intel.com>;
> > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
> generated
> > > assembly files for X64
> > >
> > > Hi Jiewen,
> > >
> > > For this use case, generating the files as part of the build process would
> > add
> > > a dependency in pearl.
> > >
> > > Based on other recent CryptoPkg changes and some being discussed in BZ, I
> > am
> > > seeing more changes to the OpenSLL .pl configuration files, and I am
> > concerned
> > > that based on platform requirements, we may need to build OpenSSL with
> > > different .pl config file settings which would also add a pearl dependency
> > > to the build.
> > >
> > > So exploring what it would take to add the pearl dependency to the build
> > system
> > > is worth exploring and if successful would eliminate the need to checkin
> > these
> > > types of autogenerated files.  This would also reduce maintenance of the
> > > auto-genererated files when EDK II moves to a new version of OpenSSL.
> > >
> > > @Cristopher - Can you please share a branch that uses pearl to generate the
> > > files
> > > instead of checking them in?  I would like the BaseTools maintainers to
> > review
> > > that and evaluate adding the pearl dependency.  Hopefully, we can make the
> > > pearl dependency detectable so it is only required if the build requires
> > it.
> > >
> > > Thanks,
> > >
> > > Mike
> > >
> > > > -----Original Message-----
> > > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > > Sent: Thursday, August 13, 2020 8:25 AM
> > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > > devel@edk2.groups.io
> > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > <xiaoyux.lu@intel.com>; Kinney, Michael D
> > > > <michael.d.kinney@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
> > > generated assembly files for X64
> > > >
> > > > + Mike Kinney
> > > >
> > > > I am not sure if it is a right way to check in auto-generated file.
> > > > That means, whenever we upgrade the openssl, we need manually
> generate
> > > them again.
> > > > Any step by step, or readme to tell us how to do that?
> > > >
> > > > Mike, would you please double confirm what is the right way for auto-
> > > generated file in EDKII?
> > > >
> > > >
> > > > > -----Original Message-----
> > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > > Sent: Tuesday, August 4, 2020 8:24 AM
> > > > > To: devel@edk2.groups.io
> > > > > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> > > <jian.j.wang@intel.com>;
> > > > > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > > <ard.biesheuvel@linaro.org>
> > > > > Subject: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
> generated
> > > > > assembly files for X64
> > > > >
> > > > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> > > > >
> > > > > Adding the auto-generated assembly files for the X64 architecture.
> > > > >
> > > > > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > > > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > > > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > > > > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > Signed-off-by: Christopher J Zurcher <christopher.j.zurcher@intel.com>
> > > > > ---
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm
> |
> > > 732
> > > > > +++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm
> |
> > > > > 1916 ++++++++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> x86_64.nasm |
> > > > > 78 +
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm        |
> > > 5103
> > > > > ++++++++++++++++++++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm        |
> > > 1173
> > > > > +++++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm
> |
> > > > > 1569 ++++++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm
> |
> > > 3137
> > > > > ++++++++++++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm         |
> > > 2884
> > > > > +++++++++++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm
> |
> > > > > 3461 +++++++++++++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
> |
> > > 3313
> > > > > +++++++++++++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
> |
> > > 1938
> > > > > ++++++++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm             |
> > 491
> > > ++
> > > > >  12 files changed, 25795 insertions(+)
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
> > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
> > > > > x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..1a3ed1dd35
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
> x86_64.nasm
> > > > > @@ -0,0 +1,732 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/aes/asm/aesni-mb-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +
> > > > >
> > > > > +global  aesni_multi_cbc_encrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +aesni_multi_cbc_encrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_multi_cbc_encrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-168))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+rax],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+rax],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+rax],xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsp,48
> > > > >
> > > > > +        and     rsp,-64
> > > > >
> > > > > +        mov     QWORD[16+rsp],rax
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +$L$enc4x_body:
> > > > >
> > > > > +        movdqu  xmm12,XMMWORD[rsi]
> > > > >
> > > > > +        lea     rsi,[120+rsi]
> > > > >
> > > > > +        lea     rdi,[80+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$enc4x_loop_grande:
> > > > >
> > > > > +        mov     DWORD[24+rsp],edx
> > > > >
> > > > > +        xor     edx,edx
> > > > >
> > > > > +        mov     ecx,DWORD[((-64))+rdi]
> > > > >
> > > > > +        mov     r8,QWORD[((-80))+rdi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        mov     r12,QWORD[((-72))+rdi]
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[((-56))+rdi]
> > > > >
> > > > > +        mov     DWORD[32+rsp],ecx
> > > > >
> > > > > +        cmovle  r8,rsp
> > > > >
> > > > > +        mov     ecx,DWORD[((-24))+rdi]
> > > > >
> > > > > +        mov     r9,QWORD[((-40))+rdi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        mov     r13,QWORD[((-32))+rdi]
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[((-16))+rdi]
> > > > >
> > > > > +        mov     DWORD[36+rsp],ecx
> > > > >
> > > > > +        cmovle  r9,rsp
> > > > >
> > > > > +        mov     ecx,DWORD[16+rdi]
> > > > >
> > > > > +        mov     r10,QWORD[rdi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        mov     r14,QWORD[8+rdi]
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[24+rdi]
> > > > >
> > > > > +        mov     DWORD[40+rsp],ecx
> > > > >
> > > > > +        cmovle  r10,rsp
> > > > >
> > > > > +        mov     ecx,DWORD[56+rdi]
> > > > >
> > > > > +        mov     r11,QWORD[40+rdi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        mov     r15,QWORD[48+rdi]
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[64+rdi]
> > > > >
> > > > > +        mov     DWORD[44+rsp],ecx
> > > > >
> > > > > +        cmovle  r11,rsp
> > > > >
> > > > > +        test    edx,edx
> > > > >
> > > > > +        jz      NEAR $L$enc4x_done
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((16-120))+rsi]
> > > > >
> > > > > +        pxor    xmm2,xmm12
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((32-120))+rsi]
> > > > >
> > > > > +        pxor    xmm3,xmm12
> > > > >
> > > > > +        mov     eax,DWORD[((240-120))+rsi]
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[r8]
> > > > >
> > > > > +        pxor    xmm5,xmm12
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[r9]
> > > > >
> > > > > +        pxor    xmm2,xmm6
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[r10]
> > > > >
> > > > > +        pxor    xmm3,xmm7
> > > > >
> > > > > +        movdqu  xmm9,XMMWORD[r11]
> > > > >
> > > > > +        pxor    xmm4,xmm8
> > > > >
> > > > > +        pxor    xmm5,xmm9
> > > > >
> > > > > +        movdqa  xmm10,XMMWORD[32+rsp]
> > > > >
> > > > > +        xor     rbx,rbx
> > > > >
> > > > > +        jmp     NEAR $L$oop_enc4x
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$oop_enc4x:
> > > > >
> > > > > +        add     rbx,16
> > > > >
> > > > > +        lea     rbp,[16+rsp]
> > > > >
> > > > > +        mov     ecx,1
> > > > >
> > > > > +        sub     rbp,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        prefetcht0      [31+rbx*1+r8]
> > > > >
> > > > > +        prefetcht0      [31+rbx*1+r9]
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        prefetcht0      [31+rbx*1+r10]
> > > > >
> > > > > +        prefetcht0      [31+rbx*1+r10]
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((48-120))+rsi]
> > > > >
> > > > > +        cmp     ecx,DWORD[32+rsp]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +        cmovge  r8,rbp
> > > > >
> > > > > +        cmovg   r12,rbp
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-56))+rsi]
> > > > >
> > > > > +        cmp     ecx,DWORD[36+rsp]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +        cmovge  r9,rbp
> > > > >
> > > > > +        cmovg   r13,rbp
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-40))+rsi]
> > > > >
> > > > > +        cmp     ecx,DWORD[40+rsp]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +        cmovge  r10,rbp
> > > > >
> > > > > +        cmovg   r14,rbp
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-24))+rsi]
> > > > >
> > > > > +        cmp     ecx,DWORD[44+rsp]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +        cmovge  r11,rbp
> > > > >
> > > > > +        cmovg   r15,rbp
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-8))+rsi]
> > > > >
> > > > > +        movdqa  xmm11,xmm10
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        prefetcht0      [15+rbx*1+r12]
> > > > >
> > > > > +        prefetcht0      [15+rbx*1+r13]
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        prefetcht0      [15+rbx*1+r14]
> > > > >
> > > > > +        prefetcht0      [15+rbx*1+r15]
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((128-120))+rsi]
> > > > >
> > > > > +        pxor    xmm12,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        pcmpgtd xmm11,xmm12
> > > > >
> > > > > +        movdqu  xmm12,XMMWORD[((-120))+rsi]
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        paddd   xmm10,xmm11
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm10
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((144-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        cmp     eax,11
> > > > >
> > > > > +
> > > > >
> > > > > +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[((160-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        jb      NEAR $L$enc4x_tail
> > > > >
> > > > > +
> > > > >
> > > > > +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[((176-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +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[((192-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        je      NEAR $L$enc4x_tail
> > > > >
> > > > > +
> > > > >
> > > > > +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[((208-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +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[((224-120))+rsi]
> > > > >
> > > > > +        jmp     NEAR $L$enc4x_tail
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$enc4x_tail:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[rbx*1+r8]
> > > > >
> > > > > +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,221,208
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[rbx*1+r9]
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +DB      102,15,56,221,216
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[rbx*1+r10]
> > > > >
> > > > > +        pxor    xmm7,xmm12
> > > > >
> > > > > +DB      102,15,56,221,224
> > > > >
> > > > > +        movdqu  xmm9,XMMWORD[rbx*1+r11]
> > > > >
> > > > > +        pxor    xmm8,xmm12
> > > > >
> > > > > +DB      102,15,56,221,232
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
> > > > >
> > > > > +        pxor    xmm9,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm6
> > > > >
> > > > > +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm7
> > > > >
> > > > > +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm8
> > > > >
> > > > > +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop_enc4x
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[16+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edx,DWORD[24+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rdi,[160+rdi]
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$enc4x_loop_grande
> > > > >
> > > > > +
> > > > >
> > > > > +$L$enc4x_done:
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-216))+rax]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-200))+rax]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-184))+rax]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-168))+rax]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-152))+rax]
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-136))+rax]
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-120))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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$enc4x_epilogue:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_aesni_multi_cbc_encrypt:
> > > > >
> > > > > +
> > > > >
> > > > > +global  aesni_multi_cbc_decrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +aesni_multi_cbc_decrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_multi_cbc_decrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-168))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+rax],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+rax],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+rax],xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsp,48
> > > > >
> > > > > +        and     rsp,-64
> > > > >
> > > > > +        mov     QWORD[16+rsp],rax
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +$L$dec4x_body:
> > > > >
> > > > > +        movdqu  xmm12,XMMWORD[rsi]
> > > > >
> > > > > +        lea     rsi,[120+rsi]
> > > > >
> > > > > +        lea     rdi,[80+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$dec4x_loop_grande:
> > > > >
> > > > > +        mov     DWORD[24+rsp],edx
> > > > >
> > > > > +        xor     edx,edx
> > > > >
> > > > > +        mov     ecx,DWORD[((-64))+rdi]
> > > > >
> > > > > +        mov     r8,QWORD[((-80))+rdi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        mov     r12,QWORD[((-72))+rdi]
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[((-56))+rdi]
> > > > >
> > > > > +        mov     DWORD[32+rsp],ecx
> > > > >
> > > > > +        cmovle  r8,rsp
> > > > >
> > > > > +        mov     ecx,DWORD[((-24))+rdi]
> > > > >
> > > > > +        mov     r9,QWORD[((-40))+rdi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        mov     r13,QWORD[((-32))+rdi]
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[((-16))+rdi]
> > > > >
> > > > > +        mov     DWORD[36+rsp],ecx
> > > > >
> > > > > +        cmovle  r9,rsp
> > > > >
> > > > > +        mov     ecx,DWORD[16+rdi]
> > > > >
> > > > > +        mov     r10,QWORD[rdi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        mov     r14,QWORD[8+rdi]
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[24+rdi]
> > > > >
> > > > > +        mov     DWORD[40+rsp],ecx
> > > > >
> > > > > +        cmovle  r10,rsp
> > > > >
> > > > > +        mov     ecx,DWORD[56+rdi]
> > > > >
> > > > > +        mov     r11,QWORD[40+rdi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        mov     r15,QWORD[48+rdi]
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        movdqu  xmm9,XMMWORD[64+rdi]
> > > > >
> > > > > +        mov     DWORD[44+rsp],ecx
> > > > >
> > > > > +        cmovle  r11,rsp
> > > > >
> > > > > +        test    edx,edx
> > > > >
> > > > > +        jz      NEAR $L$dec4x_done
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((16-120))+rsi]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((32-120))+rsi]
> > > > >
> > > > > +        mov     eax,DWORD[((240-120))+rsi]
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[r8]
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[r9]
> > > > >
> > > > > +        pxor    xmm2,xmm12
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[r10]
> > > > >
> > > > > +        pxor    xmm3,xmm12
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[r11]
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm5,xmm12
> > > > >
> > > > > +        movdqa  xmm10,XMMWORD[32+rsp]
> > > > >
> > > > > +        xor     rbx,rbx
> > > > >
> > > > > +        jmp     NEAR $L$oop_dec4x
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$oop_dec4x:
> > > > >
> > > > > +        add     rbx,16
> > > > >
> > > > > +        lea     rbp,[16+rsp]
> > > > >
> > > > > +        mov     ecx,1
> > > > >
> > > > > +        sub     rbp,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        prefetcht0      [31+rbx*1+r8]
> > > > >
> > > > > +        prefetcht0      [31+rbx*1+r9]
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        prefetcht0      [31+rbx*1+r10]
> > > > >
> > > > > +        prefetcht0      [31+rbx*1+r11]
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((48-120))+rsi]
> > > > >
> > > > > +        cmp     ecx,DWORD[32+rsp]
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +        cmovge  r8,rbp
> > > > >
> > > > > +        cmovg   r12,rbp
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-56))+rsi]
> > > > >
> > > > > +        cmp     ecx,DWORD[36+rsp]
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +        cmovge  r9,rbp
> > > > >
> > > > > +        cmovg   r13,rbp
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-40))+rsi]
> > > > >
> > > > > +        cmp     ecx,DWORD[40+rsp]
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +        cmovge  r10,rbp
> > > > >
> > > > > +        cmovg   r14,rbp
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-24))+rsi]
> > > > >
> > > > > +        cmp     ecx,DWORD[44+rsp]
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +        cmovge  r11,rbp
> > > > >
> > > > > +        cmovg   r15,rbp
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-8))+rsi]
> > > > >
> > > > > +        movdqa  xmm11,xmm10
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +        prefetcht0      [15+rbx*1+r12]
> > > > >
> > > > > +        prefetcht0      [15+rbx*1+r13]
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +        prefetcht0      [15+rbx*1+r14]
> > > > >
> > > > > +        prefetcht0      [15+rbx*1+r15]
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((128-120))+rsi]
> > > > >
> > > > > +        pxor    xmm12,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        pcmpgtd xmm11,xmm12
> > > > >
> > > > > +        movdqu  xmm12,XMMWORD[((-120))+rsi]
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        paddd   xmm10,xmm11
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm10
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((144-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        cmp     eax,11
> > > > >
> > > > > +
> > > > >
> > > > > +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[((160-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        jb      NEAR $L$dec4x_tail
> > > > >
> > > > > +
> > > > >
> > > > > +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[((176-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +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[((192-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        je      NEAR $L$dec4x_tail
> > > > >
> > > > > +
> > > > >
> > > > > +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[((208-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +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[((224-120))+rsi]
> > > > >
> > > > > +        jmp     NEAR $L$dec4x_tail
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$dec4x_tail:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +        pxor    xmm6,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm0
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +        pxor    xmm9,xmm0
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,223,214
> > > > >
> > > > > +DB      102,15,56,223,223
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[((-16))+rbx*1+r8]
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[((-16))+rbx*1+r9]
> > > > >
> > > > > +DB      102,65,15,56,223,224
> > > > >
> > > > > +DB      102,65,15,56,223,233
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[((-16))+rbx*1+r10]
> > > > >
> > > > > +        movdqu  xmm9,XMMWORD[((-16))+rbx*1+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rbx*1+r8]
> > > > >
> > > > > +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[rbx*1+r9]
> > > > >
> > > > > +        pxor    xmm2,xmm12
> > > > >
> > > > > +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[rbx*1+r10]
> > > > >
> > > > > +        pxor    xmm3,xmm12
> > > > >
> > > > > +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[rbx*1+r11]
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm5,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop_dec4x
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[16+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edx,DWORD[24+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rdi,[160+rdi]
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$dec4x_loop_grande
> > > > >
> > > > > +
> > > > >
> > > > > +$L$dec4x_done:
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-216))+rax]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-200))+rax]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-184))+rax]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-168))+rax]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-152))+rax]
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-136))+rax]
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-120))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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$dec4x_epilogue:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_aesni_multi_cbc_decrypt:
> > > > >
> > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[16+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        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     rsi,[((-56-160))+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,20
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +$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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +section .pdata rdata align=4
> > > > >
> > > > > +ALIGN   4
> > > > >
> > > > > +        DD      $L$SEH_begin_aesni_multi_cbc_encrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_aesni_multi_cbc_encrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_aesni_multi_cbc_encrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_begin_aesni_multi_cbc_decrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_aesni_multi_cbc_decrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_aesni_multi_cbc_decrypt wrt ..imagebase
> > > > >
> > > > > +section .xdata rdata align=8
> > > > >
> > > > > +ALIGN   8
> > > > >
> > > > > +$L$SEH_info_aesni_multi_cbc_encrypt:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$enc4x_body wrt ..imagebase,$L$enc4x_epilogue
> > > > > wrt ..imagebase
> > > > >
> > > > > +$L$SEH_info_aesni_multi_cbc_decrypt:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$dec4x_body wrt ..imagebase,$L$dec4x_epilogue
> > > > > wrt ..imagebase
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
> > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
> sha1-
> > > > > x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..f4fd9ca50d
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
> > > x86_64.nasm
> > > > > @@ -0,0 +1,1916 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/aes/asm/aesni-sha1-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +
> > > > >
> > > > > +global  aesni_cbc_sha1_enc
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +aesni_cbc_sha1_enc:
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+0))]
> > > > >
> > > > > +        mov     r11,QWORD[((OPENSSL_ia32cap_P+4))]
> > > > >
> > > > > +        bt      r11,61
> > > > >
> > > > > +        jc      NEAR aesni_cbc_sha1_enc_shaext
> > > > >
> > > > > +        jmp     NEAR aesni_cbc_sha1_enc_ssse3
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +aesni_cbc_sha1_enc_ssse3:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_cbc_sha1_enc_ssse3:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10,QWORD[56+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-264))+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movaps  XMMWORD[(96+0)+rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[(96+16)+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[(96+32)+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[(96+48)+rsp],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(96+64)+rsp],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(96+80)+rsp],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[(96+96)+rsp],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(96+112)+rsp],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(96+128)+rsp],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(96+144)+rsp],xmm15
> > > > >
> > > > > +$L$prologue_ssse3:
> > > > >
> > > > > +        mov     r12,rdi
> > > > >
> > > > > +        mov     r13,rsi
> > > > >
> > > > > +        mov     r14,rdx
> > > > >
> > > > > +        lea     r15,[112+rcx]
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[r8]
> > > > >
> > > > > +        mov     QWORD[88+rsp],r8
> > > > >
> > > > > +        shl     r14,6
> > > > >
> > > > > +        sub     r13,r12
> > > > >
> > > > > +        mov     r8d,DWORD[((240-112))+r15]
> > > > >
> > > > > +        add     r14,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r11,[K_XX_XX]
> > > > >
> > > > > +        mov     eax,DWORD[r9]
> > > > >
> > > > > +        mov     ebx,DWORD[4+r9]
> > > > >
> > > > > +        mov     ecx,DWORD[8+r9]
> > > > >
> > > > > +        mov     edx,DWORD[12+r9]
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        mov     ebp,DWORD[16+r9]
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        and     esi,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[64+r11]
> > > > >
> > > > > +        movdqa  xmm13,XMMWORD[r11]
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[r10]
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[16+r10]
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[32+r10]
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[48+r10]
> > > > >
> > > > > +DB      102,15,56,0,227
> > > > >
> > > > > +DB      102,15,56,0,235
> > > > >
> > > > > +DB      102,15,56,0,243
> > > > >
> > > > > +        add     r10,64
> > > > >
> > > > > +        paddd   xmm4,xmm13
> > > > >
> > > > > +DB      102,15,56,0,251
> > > > >
> > > > > +        paddd   xmm5,xmm13
> > > > >
> > > > > +        paddd   xmm6,xmm13
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm4
> > > > >
> > > > > +        psubd   xmm4,xmm13
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm5
> > > > >
> > > > > +        psubd   xmm5,xmm13
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > > >
> > > > > +        psubd   xmm6,xmm13
> > > > >
> > > > > +        movups  xmm15,XMMWORD[((-112))+r15]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > >
> > > > > +        jmp     NEAR $L$oop_ssse3
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$oop_ssse3:
> > > > >
> > > > > +        ror     ebx,2
> > > > >
> > > > > +        movups  xmm14,XMMWORD[r12]
> > > > >
> > > > > +        xorps   xmm14,xmm15
> > > > >
> > > > > +        xorps   xmm2,xmm14
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        pshufd  xmm8,xmm4,238
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        movdqa  xmm12,xmm7
> > > > >
> > > > > +        paddd   xmm13,xmm7
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        add     ebp,DWORD[rsp]
> > > > >
> > > > > +        punpcklqdq      xmm8,xmm5
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        psrldq  xmm12,4
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        pxor    xmm8,xmm4
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        pxor    xmm12,xmm6
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        add     edx,DWORD[4+rsp]
> > > > >
> > > > > +        pxor    xmm8,xmm12
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm13
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        and     esi,eax
> > > > >
> > > > > +        movdqa  xmm3,xmm8
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        movdqa  xmm12,xmm8
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        pslldq  xmm3,12
> > > > >
> > > > > +        paddd   xmm8,xmm8
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        add     ecx,DWORD[8+rsp]
> > > > >
> > > > > +        psrld   xmm12,31
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        movdqa  xmm13,xmm3
> > > > >
> > > > > +        and     edi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        psrld   xmm3,30
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        por     xmm8,xmm12
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        add     ebx,DWORD[12+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        pslld   xmm13,2
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[r11]
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        and     esi,edx
> > > > >
> > > > > +        pxor    xmm8,xmm13
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        pshufd  xmm9,xmm5,238
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        movdqa  xmm13,xmm8
> > > > >
> > > > > +        paddd   xmm3,xmm8
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        add     eax,DWORD[16+rsp]
> > > > >
> > > > > +        punpcklqdq      xmm9,xmm6
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        psrldq  xmm13,4
> > > > >
> > > > > +        and     edi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        pxor    xmm9,xmm5
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        pxor    xmm13,xmm7
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        add     ebp,DWORD[20+rsp]
> > > > >
> > > > > +        pxor    xmm9,xmm13
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm3
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        and     esi,ebx
> > > > >
> > > > > +        movdqa  xmm12,xmm9
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        movdqa  xmm13,xmm9
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        pslldq  xmm12,12
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        add     edx,DWORD[24+rsp]
> > > > >
> > > > > +        psrld   xmm13,31
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        movdqa  xmm3,xmm12
> > > > >
> > > > > +        and     edi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        psrld   xmm12,30
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        por     xmm9,xmm13
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        add     ecx,DWORD[28+rsp]
> > > > >
> > > > > +        pslld   xmm3,2
> > > > >
> > > > > +        pxor    xmm9,xmm12
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        movdqa  xmm12,XMMWORD[16+r11]
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        and     esi,ebp
> > > > >
> > > > > +        pxor    xmm9,xmm3
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        pshufd  xmm10,xmm6,238
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        movdqa  xmm3,xmm9
> > > > >
> > > > > +        paddd   xmm12,xmm9
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        add     ebx,DWORD[32+rsp]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        punpcklqdq      xmm10,xmm7
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        psrldq  xmm3,4
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        pxor    xmm10,xmm6
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        pxor    xmm3,xmm8
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        add     eax,DWORD[36+rsp]
> > > > >
> > > > > +        pxor    xmm10,xmm3
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm12
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        and     esi,ecx
> > > > >
> > > > > +        movdqa  xmm13,xmm10
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        pslldq  xmm13,12
> > > > >
> > > > > +        paddd   xmm10,xmm10
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        add     ebp,DWORD[40+rsp]
> > > > >
> > > > > +        psrld   xmm3,31
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        movdqa  xmm12,xmm13
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        psrld   xmm13,30
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        por     xmm10,xmm3
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        add     edx,DWORD[44+rsp]
> > > > >
> > > > > +        pslld   xmm12,2
> > > > >
> > > > > +        pxor    xmm10,xmm13
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        movdqa  xmm13,XMMWORD[16+r11]
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        and     esi,eax
> > > > >
> > > > > +        pxor    xmm10,xmm12
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        pshufd  xmm11,xmm7,238
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        movdqa  xmm12,xmm10
> > > > >
> > > > > +        paddd   xmm13,xmm10
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        add     ecx,DWORD[48+rsp]
> > > > >
> > > > > +        punpcklqdq      xmm11,xmm8
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        psrldq  xmm12,4
> > > > >
> > > > > +        and     edi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        pxor    xmm11,xmm7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        pxor    xmm12,xmm9
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        add     ebx,DWORD[52+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        pxor    xmm11,xmm12
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm13
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        and     esi,edx
> > > > >
> > > > > +        movdqa  xmm3,xmm11
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        movdqa  xmm12,xmm11
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        pslldq  xmm3,12
> > > > >
> > > > > +        paddd   xmm11,xmm11
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        add     eax,DWORD[56+rsp]
> > > > >
> > > > > +        psrld   xmm12,31
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        movdqa  xmm13,xmm3
> > > > >
> > > > > +        and     edi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        psrld   xmm3,30
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        cmp     r8d,11
> > > > >
> > > > > +        jb      NEAR $L$aesenclast1
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        je      NEAR $L$aesenclast1
> > > > >
> > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +$L$aesenclast1:
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > >
> > > > > +        por     xmm11,xmm12
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        add     ebp,DWORD[60+rsp]
> > > > >
> > > > > +        pslld   xmm13,2
> > > > >
> > > > > +        pxor    xmm11,xmm3
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[16+r11]
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        and     esi,ebx
> > > > >
> > > > > +        pxor    xmm11,xmm13
> > > > >
> > > > > +        pshufd  xmm13,xmm10,238
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        pxor    xmm4,xmm8
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        add     edx,DWORD[rsp]
> > > > >
> > > > > +        punpcklqdq      xmm13,xmm11
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        movups  xmm14,XMMWORD[16+r12]
> > > > >
> > > > > +        xorps   xmm14,xmm15
> > > > >
> > > > > +        movups  XMMWORD[r13*1+r12],xmm2
> > > > >
> > > > > +        xorps   xmm2,xmm14
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        and     edi,eax
> > > > >
> > > > > +        movdqa  xmm12,xmm3
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        paddd   xmm3,xmm11
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        pxor    xmm4,xmm13
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        add     ecx,DWORD[4+rsp]
> > > > >
> > > > > +        movdqa  xmm13,xmm4
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm3
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        and     esi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        pslld   xmm4,2
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        psrld   xmm13,30
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        add     ebx,DWORD[8+rsp]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        por     xmm4,xmm13
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        pshufd  xmm3,xmm11,238
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[12+rsp]
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        pxor    xmm5,xmm9
> > > > >
> > > > > +        add     ebp,DWORD[16+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        punpcklqdq      xmm3,xmm4
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        pxor    xmm5,xmm6
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        movdqa  xmm13,xmm12
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        paddd   xmm12,xmm4
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        pxor    xmm5,xmm3
> > > > >
> > > > > +        add     edx,DWORD[20+rsp]
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        movdqa  xmm3,xmm5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm12
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[24+rsp]
> > > > >
> > > > > +        pslld   xmm5,2
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        psrld   xmm3,30
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        por     xmm5,xmm3
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[28+rsp]
> > > > >
> > > > > +        pshufd  xmm12,xmm4,238
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        add     eax,DWORD[32+rsp]
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        punpcklqdq      xmm12,xmm5
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[32+r11]
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        paddd   xmm13,xmm5
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +        add     ebp,DWORD[36+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        movdqa  xmm12,xmm6
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm13
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[40+rsp]
> > > > >
> > > > > +        pslld   xmm6,2
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        psrld   xmm12,30
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        por     xmm6,xmm12
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[44+rsp]
> > > > >
> > > > > +        pshufd  xmm13,xmm5,238
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        pxor    xmm7,xmm11
> > > > >
> > > > > +        add     ebx,DWORD[48+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        punpcklqdq      xmm13,xmm6
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        pxor    xmm7,xmm8
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        movdqa  xmm12,xmm3
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        paddd   xmm3,xmm6
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        pxor    xmm7,xmm13
> > > > >
> > > > > +        add     eax,DWORD[52+rsp]
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        movdqa  xmm13,xmm7
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm3
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[56+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        pslld   xmm7,2
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        psrld   xmm13,30
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        por     xmm7,xmm13
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[60+rsp]
> > > > >
> > > > > +        pshufd  xmm3,xmm6,238
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        pxor    xmm8,xmm4
> > > > >
> > > > > +        add     ecx,DWORD[rsp]
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        punpcklqdq      xmm3,xmm7
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        pxor    xmm8,xmm9
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        movdqa  xmm13,xmm12
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        paddd   xmm12,xmm7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        add     ebx,DWORD[4+rsp]
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        movdqa  xmm3,xmm8
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm12
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[8+rsp]
> > > > >
> > > > > +        pslld   xmm8,2
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        psrld   xmm3,30
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        por     xmm8,xmm3
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[12+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        pshufd  xmm12,xmm7,238
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        pxor    xmm9,xmm5
> > > > >
> > > > > +        add     edx,DWORD[16+rsp]
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        punpcklqdq      xmm12,xmm8
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        pxor    xmm9,xmm10
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        movdqa  xmm3,xmm13
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        pxor    xmm9,xmm12
> > > > >
> > > > > +        add     ecx,DWORD[20+rsp]
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        movdqa  xmm12,xmm9
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        cmp     r8d,11
> > > > >
> > > > > +        jb      NEAR $L$aesenclast2
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        je      NEAR $L$aesenclast2
> > > > >
> > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +$L$aesenclast2:
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm13
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[24+rsp]
> > > > >
> > > > > +        pslld   xmm9,2
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        psrld   xmm12,30
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        por     xmm9,xmm12
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[28+rsp]
> > > > >
> > > > > +        pshufd  xmm13,xmm8,238
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        pxor    xmm10,xmm6
> > > > >
> > > > > +        add     ebp,DWORD[32+rsp]
> > > > >
> > > > > +        movups  xmm14,XMMWORD[32+r12]
> > > > >
> > > > > +        xorps   xmm14,xmm15
> > > > >
> > > > > +        movups  XMMWORD[16+r12*1+r13],xmm2
> > > > >
> > > > > +        xorps   xmm2,xmm14
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        and     esi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        punpcklqdq      xmm13,xmm9
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        pxor    xmm10,xmm11
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        movdqa  xmm12,xmm3
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        paddd   xmm3,xmm9
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        pxor    xmm10,xmm13
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[36+rsp]
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        movdqa  xmm13,xmm10
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm3
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        pslld   xmm10,2
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        psrld   xmm13,30
> > > > >
> > > > > +        add     ecx,DWORD[40+rsp]
> > > > >
> > > > > +        and     esi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        por     xmm10,xmm13
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        pshufd  xmm3,xmm9,238
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[44+rsp]
> > > > >
> > > > > +        and     edi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        pxor    xmm11,xmm7
> > > > >
> > > > > +        add     eax,DWORD[48+rsp]
> > > > >
> > > > > +        and     esi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        punpcklqdq      xmm3,xmm10
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        pxor    xmm11,xmm4
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        movdqa  xmm13,XMMWORD[48+r11]
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        paddd   xmm12,xmm10
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        pxor    xmm11,xmm3
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[52+rsp]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        and     edi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        movdqa  xmm3,xmm11
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm12
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        pslld   xmm11,2
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        psrld   xmm3,30
> > > > >
> > > > > +        add     edx,DWORD[56+rsp]
> > > > >
> > > > > +        and     esi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        por     xmm11,xmm3
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        pshufd  xmm12,xmm10,238
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[60+rsp]
> > > > >
> > > > > +        and     edi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        pxor    xmm4,xmm8
> > > > >
> > > > > +        add     ebx,DWORD[rsp]
> > > > >
> > > > > +        and     esi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        movups  xmm0,XMMWORD[r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        punpcklqdq      xmm12,xmm11
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        movdqa  xmm3,xmm13
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        paddd   xmm13,xmm11
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[4+rsp]
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        movdqa  xmm12,xmm4
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm13
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        pslld   xmm4,2
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        psrld   xmm12,30
> > > > >
> > > > > +        add     ebp,DWORD[8+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        and     esi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        por     xmm4,xmm12
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        pshufd  xmm13,xmm11,238
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[12+rsp]
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        pxor    xmm5,xmm9
> > > > >
> > > > > +        add     ecx,DWORD[16+rsp]
> > > > >
> > > > > +        and     esi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        punpcklqdq      xmm13,xmm4
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        pxor    xmm5,xmm6
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        movdqa  xmm12,xmm3
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        paddd   xmm3,xmm4
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[20+rsp]
> > > > >
> > > > > +        and     edi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        movdqa  xmm13,xmm5
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm3
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        pslld   xmm5,2
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        psrld   xmm13,30
> > > > >
> > > > > +        add     eax,DWORD[24+rsp]
> > > > >
> > > > > +        and     esi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        por     xmm5,xmm13
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        pshufd  xmm3,xmm4,238
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[28+rsp]
> > > > >
> > > > > +        cmp     r8d,11
> > > > >
> > > > > +        jb      NEAR $L$aesenclast3
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        je      NEAR $L$aesenclast3
> > > > >
> > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +$L$aesenclast3:
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > >
> > > > > +        and     edi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        add     edx,DWORD[32+rsp]
> > > > >
> > > > > +        and     esi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        punpcklqdq      xmm3,xmm5
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        movups  xmm14,XMMWORD[48+r12]
> > > > >
> > > > > +        xorps   xmm14,xmm15
> > > > >
> > > > > +        movups  XMMWORD[32+r12*1+r13],xmm2
> > > > >
> > > > > +        xorps   xmm2,xmm14
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        movdqa  xmm13,xmm12
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        paddd   xmm12,xmm5
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        pxor    xmm6,xmm3
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[36+rsp]
> > > > >
> > > > > +        and     edi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        movdqa  xmm3,xmm6
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm12
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        pslld   xmm6,2
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        psrld   xmm3,30
> > > > >
> > > > > +        add     ebx,DWORD[40+rsp]
> > > > >
> > > > > +        and     esi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        por     xmm6,xmm3
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        pshufd  xmm12,xmm5,238
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[44+rsp]
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        pxor    xmm7,xmm11
> > > > >
> > > > > +        add     ebp,DWORD[48+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        punpcklqdq      xmm12,xmm6
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        pxor    xmm7,xmm8
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        movdqa  xmm3,xmm13
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        pxor    xmm7,xmm12
> > > > >
> > > > > +        add     edx,DWORD[52+rsp]
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        movdqa  xmm12,xmm7
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm13
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[56+rsp]
> > > > >
> > > > > +        pslld   xmm7,2
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        psrld   xmm12,30
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        por     xmm7,xmm12
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[60+rsp]
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[rsp]
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        paddd   xmm3,xmm7
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm3
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[4+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[8+rsp]
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[12+rsp]
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        cmp     r10,r14
> > > > >
> > > > > +        je      NEAR $L$done_ssse3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[64+r11]
> > > > >
> > > > > +        movdqa  xmm13,XMMWORD[r11]
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[r10]
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[16+r10]
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[32+r10]
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[48+r10]
> > > > >
> > > > > +DB      102,15,56,0,227
> > > > >
> > > > > +        add     r10,64
> > > > >
> > > > > +        add     ebx,DWORD[16+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +DB      102,15,56,0,235
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        paddd   xmm4,xmm13
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[20+rsp]
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm4
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        psubd   xmm4,xmm13
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[24+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[28+rsp]
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[32+rsp]
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +DB      102,15,56,0,243
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        paddd   xmm5,xmm13
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[36+rsp]
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm5
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        psubd   xmm5,xmm13
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[40+rsp]
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[44+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[48+rsp]
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +DB      102,15,56,0,251
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        paddd   xmm6,xmm13
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[52+rsp]
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        cmp     r8d,11
> > > > >
> > > > > +        jb      NEAR $L$aesenclast4
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        je      NEAR $L$aesenclast4
> > > > >
> > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +$L$aesenclast4:
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        psubd   xmm6,xmm13
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[56+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[60+rsp]
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        movups  XMMWORD[48+r12*1+r13],xmm2
> > > > >
> > > > > +        lea     r12,[64+r12]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     eax,DWORD[r9]
> > > > >
> > > > > +        add     esi,DWORD[4+r9]
> > > > >
> > > > > +        add     ecx,DWORD[8+r9]
> > > > >
> > > > > +        add     edx,DWORD[12+r9]
> > > > >
> > > > > +        mov     DWORD[r9],eax
> > > > >
> > > > > +        add     ebp,DWORD[16+r9]
> > > > >
> > > > > +        mov     DWORD[4+r9],esi
> > > > >
> > > > > +        mov     ebx,esi
> > > > >
> > > > > +        mov     DWORD[8+r9],ecx
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        mov     DWORD[12+r9],edx
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     DWORD[16+r9],ebp
> > > > >
> > > > > +        and     esi,edi
> > > > >
> > > > > +        jmp     NEAR $L$oop_ssse3
> > > > >
> > > > > +
> > > > >
> > > > > +$L$done_ssse3:
> > > > >
> > > > > +        add     ebx,DWORD[16+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[20+rsp]
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[24+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[28+rsp]
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[32+rsp]
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[36+rsp]
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[40+rsp]
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[44+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[48+rsp]
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[52+rsp]
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        cmp     r8d,11
> > > > >
> > > > > +        jb      NEAR $L$aesenclast5
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        je      NEAR $L$aesenclast5
> > > > >
> > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +$L$aesenclast5:
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[56+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[60+rsp]
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        movups  XMMWORD[48+r12*1+r13],xmm2
> > > > >
> > > > > +        mov     r8,QWORD[88+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     eax,DWORD[r9]
> > > > >
> > > > > +        add     esi,DWORD[4+r9]
> > > > >
> > > > > +        add     ecx,DWORD[8+r9]
> > > > >
> > > > > +        mov     DWORD[r9],eax
> > > > >
> > > > > +        add     edx,DWORD[12+r9]
> > > > >
> > > > > +        mov     DWORD[4+r9],esi
> > > > >
> > > > > +        add     ebp,DWORD[16+r9]
> > > > >
> > > > > +        mov     DWORD[8+r9],ecx
> > > > >
> > > > > +        mov     DWORD[12+r9],edx
> > > > >
> > > > > +        mov     DWORD[16+r9],ebp
> > > > >
> > > > > +        movups  XMMWORD[r8],xmm2
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((96+0))+rsp]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((96+16))+rsp]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((96+32))+rsp]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((96+48))+rsp]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((96+64))+rsp]
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((96+80))+rsp]
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((96+96))+rsp]
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[((96+112))+rsp]
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[((96+128))+rsp]
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[((96+144))+rsp]
> > > > >
> > > > > +        lea     rsi,[264+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_aesni_cbc_sha1_enc_ssse3:
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +K_XX_XX:
> > > > >
> > > > > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > > > >
> > > > > +        DD      0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
> > > > >
> > > > > +        DD      0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
> > > > >
> > > > > +        DD      0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
> > > > >
> > > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > >
> > > > > +DB
> > 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
> > > > >
> > > > > +
> > > > >
> > > > > +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115
> > > > >
> > > > > +DB      116,105,116,99,104,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
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +aesni_cbc_sha1_enc_shaext:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_cbc_sha1_enc_shaext:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10,QWORD[56+rsp]
> > > > >
> > > > > +        lea     rsp,[((-168))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[(-8-160)+rax],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[(-8-144)+rax],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[(-8-128)+rax],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[(-8-112)+rax],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-8-96)+rax],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(-8-80)+rax],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[(-8-64)+rax],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-8-48)+rax],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-8-32)+rax],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-8-16)+rax],xmm15
> > > > >
> > > > > +$L$prologue_shaext:
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[r9]
> > > > >
> > > > > +        movd    xmm9,DWORD[16+r9]
> > > > >
> > > > > +        movdqa  xmm7,XMMWORD[((K_XX_XX+80))]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r11d,DWORD[240+rcx]
> > > > >
> > > > > +        sub     rsi,rdi
> > > > >
> > > > > +        movups  xmm15,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm2,XMMWORD[r8]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[112+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm8,xmm8,27
> > > > >
> > > > > +        pshufd  xmm9,xmm9,27
> > > > >
> > > > > +        jmp     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$oop_shaext:
> > > > >
> > > > > +        movups  xmm14,XMMWORD[rdi]
> > > > >
> > > > > +        xorps   xmm14,xmm15
> > > > >
> > > > > +        xorps   xmm2,xmm14
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[r10]
> > > > >
> > > > > +        movdqa  xmm12,xmm9
> > > > >
> > > > > +DB      102,15,56,0,223
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[16+r10]
> > > > >
> > > > > +        movdqa  xmm11,xmm8
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,0,231
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm9,xmm3
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[32+r10]
> > > > >
> > > > > +        lea     r10,[64+r10]
> > > > >
> > > > > +        pxor    xmm3,xmm12
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        pxor    xmm3,xmm12
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      102,15,56,0,239
> > > > >
> > > > > +DB      69,15,58,204,193,0
> > > > >
> > > > > +DB      68,15,56,200,212
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      15,56,201,220
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[((-16))+r10]
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      102,15,56,0,247
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      69,15,58,204,194,0
> > > > >
> > > > > +DB      68,15,56,200,205
> > > > >
> > > > > +        pxor    xmm3,xmm5
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      69,15,58,204,193,0
> > > > >
> > > > > +DB      68,15,56,200,214
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,222
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      69,15,58,204,194,0
> > > > >
> > > > > +DB      68,15,56,200,203
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,227
> > > > >
> > > > > +        pxor    xmm5,xmm3
> > > > >
> > > > > +DB      15,56,201,243
> > > > >
> > > > > +        cmp     r11d,11
> > > > >
> > > > > +        jb      NEAR $L$aesenclast6
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        je      NEAR $L$aesenclast6
> > > > >
> > > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +$L$aesenclast6:
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      69,15,58,204,193,0
> > > > >
> > > > > +DB      68,15,56,200,212
> > > > >
> > > > > +        movups  xmm14,XMMWORD[16+rdi]
> > > > >
> > > > > +        xorps   xmm14,xmm15
> > > > >
> > > > > +        movups  XMMWORD[rdi*1+rsi],xmm2
> > > > >
> > > > > +        xorps   xmm2,xmm14
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,220
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      69,15,58,204,194,1
> > > > >
> > > > > +DB      68,15,56,200,205
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +        pxor    xmm3,xmm5
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      69,15,58,204,193,1
> > > > >
> > > > > +DB      68,15,56,200,214
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,222
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      69,15,58,204,194,1
> > > > >
> > > > > +DB      68,15,56,200,203
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,227
> > > > >
> > > > > +        pxor    xmm5,xmm3
> > > > >
> > > > > +DB      15,56,201,243
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      69,15,58,204,193,1
> > > > >
> > > > > +DB      68,15,56,200,212
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,220
> > > > >
> > > > > +        cmp     r11d,11
> > > > >
> > > > > +        jb      NEAR $L$aesenclast7
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        je      NEAR $L$aesenclast7
> > > > >
> > > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +$L$aesenclast7:
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      69,15,58,204,194,1
> > > > >
> > > > > +DB      68,15,56,200,205
> > > > >
> > > > > +        movups  xmm14,XMMWORD[32+rdi]
> > > > >
> > > > > +        xorps   xmm14,xmm15
> > > > >
> > > > > +        movups  XMMWORD[16+rdi*1+rsi],xmm2
> > > > >
> > > > > +        xorps   xmm2,xmm14
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +        pxor    xmm3,xmm5
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      69,15,58,204,193,2
> > > > >
> > > > > +DB      68,15,56,200,214
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,222
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      69,15,58,204,194,2
> > > > >
> > > > > +DB      68,15,56,200,203
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,227
> > > > >
> > > > > +        pxor    xmm5,xmm3
> > > > >
> > > > > +DB      15,56,201,243
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      69,15,58,204,193,2
> > > > >
> > > > > +DB      68,15,56,200,212
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,220
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      69,15,58,204,194,2
> > > > >
> > > > > +DB      68,15,56,200,205
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +        pxor    xmm3,xmm5
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        cmp     r11d,11
> > > > >
> > > > > +        jb      NEAR $L$aesenclast8
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        je      NEAR $L$aesenclast8
> > > > >
> > > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +$L$aesenclast8:
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      69,15,58,204,193,2
> > > > >
> > > > > +DB      68,15,56,200,214
> > > > >
> > > > > +        movups  xmm14,XMMWORD[48+rdi]
> > > > >
> > > > > +        xorps   xmm14,xmm15
> > > > >
> > > > > +        movups  XMMWORD[32+rdi*1+rsi],xmm2
> > > > >
> > > > > +        xorps   xmm2,xmm14
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,222
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      69,15,58,204,194,3
> > > > >
> > > > > +DB      68,15,56,200,203
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,227
> > > > >
> > > > > +        pxor    xmm5,xmm3
> > > > >
> > > > > +DB      15,56,201,243
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      69,15,58,204,193,3
> > > > >
> > > > > +DB      68,15,56,200,212
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      69,15,58,204,194,3
> > > > >
> > > > > +DB      68,15,56,200,205
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm5,xmm12
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      69,15,58,204,193,3
> > > > >
> > > > > +DB      68,15,56,200,214
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      69,15,58,204,194,3
> > > > >
> > > > > +DB      68,15,56,200,205
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        cmp     r11d,11
> > > > >
> > > > > +        jb      NEAR $L$aesenclast9
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        je      NEAR $L$aesenclast9
> > > > >
> > > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +$L$aesenclast9:
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > > >
> > > > > +        dec     rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm8,xmm11
> > > > >
> > > > > +        movups  XMMWORD[48+rdi*1+rsi],xmm2
> > > > >
> > > > > +        lea     rdi,[64+rdi]
> > > > >
> > > > > +        jnz     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm8,xmm8,27
> > > > >
> > > > > +        pshufd  xmm9,xmm9,27
> > > > >
> > > > > +        movups  XMMWORD[r8],xmm2
> > > > >
> > > > > +        movdqu  XMMWORD[r9],xmm8
> > > > >
> > > > > +        movd    DWORD[16+r9],xmm9
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-8-160))+rax]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-8-144))+rax]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-8-128))+rax]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-8-112))+rax]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-8-96))+rax]
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-8-80))+rax]
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-8-64))+rax]
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[((-8-48))+rax]
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[((-8-32))+rax]
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[((-8-16))+rax]
> > > > >
> > > > > +        mov     rsp,rax
> > > > >
> > > > > +$L$epilogue_shaext:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_aesni_cbc_sha1_enc_shaext:
> > > > >
> > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +ssse3_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$common_seh_tail
> > > > >
> > > > > +        lea     r10,[aesni_cbc_sha1_enc_shaext]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$seh_no_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,20
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +        lea     rax,[168+rax]
> > > > >
> > > > > +        jmp     NEAR $L$common_seh_tail
> > > > >
> > > > > +$L$seh_no_shaext:
> > > > >
> > > > > +        lea     rsi,[96+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,20
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +        lea     rax,[264+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,QWORD[rax]
> > > > >
> > > > > +        mov     r14,QWORD[8+rax]
> > > > >
> > > > > +        mov     r13,QWORD[16+rax]
> > > > >
> > > > > +        mov     r12,QWORD[24+rax]
> > > > >
> > > > > +        mov     rbp,QWORD[32+rax]
> > > > >
> > > > > +        mov     rbx,QWORD[40+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$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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +section .pdata rdata align=4
> > > > >
> > > > > +ALIGN   4
> > > > >
> > > > > +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> > > > >
> > > > > +section .xdata rdata align=8
> > > > >
> > > > > +ALIGN   8
> > > > >
> > > > > +$L$SEH_info_aesni_cbc_sha1_enc_ssse3:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      ssse3_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
> > > > > wrt ..imagebase
> > > > >
> > > > > +$L$SEH_info_aesni_cbc_sha1_enc_shaext:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      ssse3_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$prologue_shaext wrt ..imagebase,$L$epilogue_shaext
> > > > > wrt ..imagebase
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
> > > sha256-
> > > > > x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..f5c250b904
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> > > > > x86_64.nasm
> > > > > @@ -0,0 +1,78 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/aes/asm/aesni-sha256-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +global  aesni_cbc_sha256_enc
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +aesni_cbc_sha256_enc:
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     eax,eax
> > > > >
> > > > > +        cmp     rcx,0
> > > > >
> > > > > +        je      NEAR $L$probe
> > > > >
> > > > > +        ud2
> > > > >
> > > > > +$L$probe:
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +
> > > > >
> > > > > +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      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > >
> > > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > >
> > > > > +        DD      0,0,0,0,0,0,0,0,-1,-1,-1,-1
> > > > >
> > > > > +        DD      0,0,0,0,0,0,0,0
> > > > >
> > > > > +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54
> > > > >
> > > > > +DB      32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95
> > > > >
> > > > > +DB      54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98
> > > > >
> > > > > +DB      121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108
> > > > >
> > > > > +DB      46,111,114,103,62,0
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
> > > x86_64.nasm
> > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..57ee23ea8c
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
> > > > > @@ -0,0 +1,5103 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/aes/asm/aesni-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2009-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +global  aesni_encrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        movups  xmm1,XMMWORD[r8]
> > > > >
> > > > > +        lea     r8,[16+r8]
> > > > >
> > > > > +        jnz     NEAR $L$oop_enc1_1
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        movups  XMMWORD[rdx],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  aesni_decrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        movups  xmm1,XMMWORD[r8]
> > > > >
> > > > > +        lea     r8,[16+r8]
> > > > >
> > > > > +        jnz     NEAR $L$oop_dec1_2
> > > > >
> > > > > +DB      102,15,56,223,209
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        movups  XMMWORD[rdx],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_encrypt2:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +
> > > > >
> > > > > +$L$enc_loop2:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,32
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        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
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_decrypt2:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +
> > > > >
> > > > > +$L$dec_loop2:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,32
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +        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
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_encrypt3:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        xorps   xmm4,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +
> > > > >
> > > > > +$L$enc_loop3:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +        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[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$enc_loop3
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,221,208
> > > > >
> > > > > +DB      102,15,56,221,216
> > > > >
> > > > > +DB      102,15,56,221,224
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_decrypt3:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        xorps   xmm4,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +
> > > > >
> > > > > +$L$dec_loop3:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +        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[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$dec_loop3
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +DB      102,15,56,223,208
> > > > >
> > > > > +DB      102,15,56,223,216
> > > > >
> > > > > +DB      102,15,56,223,224
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_encrypt4:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        xorps   xmm4,xmm0
> > > > >
> > > > > +        xorps   xmm5,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +DB      0x0f,0x1f,0x00
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +
> > > > >
> > > > > +$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[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[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $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
> > > > >
> > > > > +DB      102,15,56,221,208
> > > > >
> > > > > +DB      102,15,56,221,216
> > > > >
> > > > > +DB      102,15,56,221,224
> > > > >
> > > > > +DB      102,15,56,221,232
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_decrypt4:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        xorps   xmm4,xmm0
> > > > >
> > > > > +        xorps   xmm5,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +DB      0x0f,0x1f,0x00
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +
> > > > >
> > > > > +$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[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[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $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
> > > > >
> > > > > +DB      102,15,56,223,208
> > > > >
> > > > > +DB      102,15,56,223,216
> > > > >
> > > > > +DB      102,15,56,223,224
> > > > >
> > > > > +DB      102,15,56,223,232
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_encrypt6:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        pxor    xmm5,xmm0
> > > > >
> > > > > +        pxor    xmm6,xmm0
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +        pxor    xmm7,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +        jmp     NEAR $L$enc_loop6_enter
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$enc_loop6:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +$L$enc_loop6_enter:
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +DB      102,15,56,220,241
> > > > >
> > > > > +DB      102,15,56,220,249
> > > > >
> > > > > +        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
> > > > >
> > > > > +DB      102,15,56,220,240
> > > > >
> > > > > +DB      102,15,56,220,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $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
> > > > >
> > > > > +DB      102,15,56,221,208
> > > > >
> > > > > +DB      102,15,56,221,216
> > > > >
> > > > > +DB      102,15,56,221,224
> > > > >
> > > > > +DB      102,15,56,221,232
> > > > >
> > > > > +DB      102,15,56,221,240
> > > > >
> > > > > +DB      102,15,56,221,248
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_decrypt6:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        pxor    xmm5,xmm0
> > > > >
> > > > > +        pxor    xmm6,xmm0
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +        pxor    xmm7,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +        jmp     NEAR $L$dec_loop6_enter
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$dec_loop6:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +$L$dec_loop6_enter:
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +DB      102,15,56,222,241
> > > > >
> > > > > +DB      102,15,56,222,249
> > > > >
> > > > > +        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
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $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
> > > > >
> > > > > +DB      102,15,56,223,208
> > > > >
> > > > > +DB      102,15,56,223,216
> > > > >
> > > > > +DB      102,15,56,223,224
> > > > >
> > > > > +DB      102,15,56,223,232
> > > > >
> > > > > +DB      102,15,56,223,240
> > > > >
> > > > > +DB      102,15,56,223,248
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_encrypt8:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm5,xmm0
> > > > >
> > > > > +        pxor    xmm6,xmm0
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        pxor    xmm7,xmm0
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        pxor    xmm9,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +        jmp     NEAR $L$enc_loop8_inner
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$enc_loop8:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +$L$enc_loop8_inner:
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +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
> > > > >
> > > > > +$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
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +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[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$enc_loop8
> > > > >
> > > > > +
> > > > >
> > > > > +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
> > > > >
> > > > > +DB      102,68,15,56,220,193
> > > > >
> > > > > +DB      102,68,15,56,220,201
> > > > >
> > > > > +DB      102,15,56,221,208
> > > > >
> > > > > +DB      102,15,56,221,216
> > > > >
> > > > > +DB      102,15,56,221,224
> > > > >
> > > > > +DB      102,15,56,221,232
> > > > >
> > > > > +DB      102,15,56,221,240
> > > > >
> > > > > +DB      102,15,56,221,248
> > > > >
> > > > > +DB      102,68,15,56,221,192
> > > > >
> > > > > +DB      102,68,15,56,221,200
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_decrypt8:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm5,xmm0
> > > > >
> > > > > +        pxor    xmm6,xmm0
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        pxor    xmm7,xmm0
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        pxor    xmm9,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +        jmp     NEAR $L$dec_loop8_inner
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$dec_loop8:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +$L$dec_loop8_inner:
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +DB      102,15,56,222,241
> > > > >
> > > > > +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[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
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +DB      102,68,15,56,222,192
> > > > >
> > > > > +DB      102,68,15,56,222,200
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$dec_loop8
> > > > >
> > > > > +
> > > > >
> > > > > +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
> > > > >
> > > > > +DB      102,68,15,56,222,193
> > > > >
> > > > > +DB      102,68,15,56,222,201
> > > > >
> > > > > +DB      102,15,56,223,208
> > > > >
> > > > > +DB      102,15,56,223,216
> > > > >
> > > > > +DB      102,15,56,223,224
> > > > >
> > > > > +DB      102,15,56,223,232
> > > > >
> > > > > +DB      102,15,56,223,240
> > > > >
> > > > > +DB      102,15,56,223,248
> > > > >
> > > > > +DB      102,68,15,56,223,192
> > > > >
> > > > > +DB      102,68,15,56,223,200
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  aesni_ecb_encrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +aesni_ecb_encrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_ecb_encrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-88))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +$L$ecb_enc_body:
> > > > >
> > > > > +        and     rdx,-16
> > > > >
> > > > > +        jz      NEAR $L$ecb_ret
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,DWORD[240+rcx]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        mov     r11,rcx
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +        test    r8d,r8d
> > > > >
> > > > > +        jz      NEAR $L$ecb_decrypt
> > > > >
> > > > > +
> > > > >
> > > > > +        cmp     rdx,0x80
> > > > >
> > > > > +        jb      NEAR $L$ecb_enc_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        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[rsi],xmm2
> > > > >
> > > > > +        mov     rcx,r11
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        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,0x80
> > > > >
> > > > > +        jnc     NEAR $L$ecb_enc_loop8
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        mov     rcx,r11
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        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[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]
> > > > >
> > > > > +        xorps   xmm9,xmm9
> > > > >
> > > > > +        call    _aesni_encrypt8
> > > > >
> > > > > +        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[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_enc1_3:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > >
> > > > > +        lea     rcx,[16+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$oop_enc1_3
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        jmp     NEAR $L$ecb_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ecb_enc_two:
> > > > >
> > > > > +        call    _aesni_encrypt2
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        jmp     NEAR $L$ecb_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ecb_enc_three:
> > > > >
> > > > > +        call    _aesni_encrypt3
> > > > >
> > > > > +        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:
> > > > >
> > > > > +        call    _aesni_encrypt4
> > > > >
> > > > > +        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:
> > > > >
> > > > > +        xorps   xmm7,xmm7
> > > > >
> > > > > +        call    _aesni_encrypt6
> > > > >
> > > > > +        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:
> > > > >
> > > > > +        call    _aesni_encrypt6
> > > > >
> > > > > +        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,0x80
> > > > >
> > > > > +        jb      NEAR $L$ecb_dec_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        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[rsi],xmm2
> > > > >
> > > > > +        mov     rcx,r11
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        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[r11]
> > > > >
> > > > > +        sub     rdx,0x80
> > > > >
> > > > > +        jnc     NEAR $L$ecb_dec_loop8
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        mov     rcx,r11
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > >
> > > > > +        pxor    xmm8,xmm8
> > > > >
> > > > > +        movups  XMMWORD[112+rsi],xmm9
> > > > >
> > > > > +        pxor    xmm9,xmm9
> > > > >
> > > > > +        lea     rsi,[128+rsi]
> > > > >
> > > > > +        add     rdx,0x80
> > > > >
> > > > > +        jz      NEAR $L$ecb_ret
> > > > >
> > > > > +
> > > > >
> > > > > +$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]
> > > > >
> > > > > +        xorps   xmm9,xmm9
> > > > >
> > > > > +        call    _aesni_decrypt8
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > >
> > > > > +        pxor    xmm8,xmm8
> > > > >
> > > > > +        pxor    xmm9,xmm9
> > > > >
> > > > > +        jmp     NEAR $L$ecb_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ecb_dec_one:
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_dec1_4:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > >
> > > > > +        lea     rcx,[16+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$oop_dec1_4
> > > > >
> > > > > +DB      102,15,56,223,209
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        jmp     NEAR $L$ecb_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ecb_dec_two:
> > > > >
> > > > > +        call    _aesni_decrypt2
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        jmp     NEAR $L$ecb_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ecb_dec_three:
> > > > >
> > > > > +        call    _aesni_decrypt3
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        jmp     NEAR $L$ecb_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ecb_dec_four:
> > > > >
> > > > > +        call    _aesni_decrypt4
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        jmp     NEAR $L$ecb_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ecb_dec_five:
> > > > >
> > > > > +        xorps   xmm7,xmm7
> > > > >
> > > > > +        call    _aesni_decrypt6
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +        jmp     NEAR $L$ecb_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ecb_dec_six:
> > > > >
> > > > > +        call    _aesni_decrypt6
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ecb_ret:
> > > > >
> > > > > +        xorps   xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > >
> > > > > +        lea     rsp,[88+rsp]
> > > > >
> > > > > +$L$ecb_enc_ret:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_aesni_ecb_encrypt:
> > > > >
> > > > > +global  aesni_ccm64_encrypt_blocks
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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,[rcx]
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[r9]
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +DB      102,15,56,0,247
> > > > >
> > > > > +        sub     r10,rax
> > > > >
> > > > > +        jmp     NEAR $L$ccm64_enc_outer
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ccm64_enc_outer:
> > > > >
> > > > > +        movups  xmm0,XMMWORD[r11]
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +        movups  xmm8,XMMWORD[rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > >
> > > > > +        xorps   xmm0,xmm8
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ccm64_enc2_loop:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,32
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        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
> > > > >
> > > > > +        dec     rdx
> > > > >
> > > > > +DB      102,15,56,221,208
> > > > >
> > > > > +DB      102,15,56,221,216
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +        xorps   xmm8,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm8
> > > > >
> > > > > +DB      102,15,56,0,215
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +        jnz     NEAR $L$ccm64_enc_outer
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        movups  XMMWORD[r9],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm8,xmm8
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > >
> > > > > +        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:
> > > > >
> > > > > +global  aesni_ccm64_decrypt_blocks
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_enc1_5:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        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[rdi]
> > > > >
> > > > > +        paddq   xmm6,xmm9
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +        sub     rax,r10
> > > > >
> > > > > +        lea     rcx,[32+r10*1+r11]
> > > > >
> > > > > +        mov     r10,rax
> > > > >
> > > > > +        jmp     NEAR $L$ccm64_dec_outer
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ccm64_dec_outer:
> > > > >
> > > > > +        xorps   xmm8,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm8
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +DB      102,15,56,0,215
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rdx,1
> > > > >
> > > > > +        jz      NEAR $L$ccm64_dec_break
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[r11]
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > >
> > > > > +        xorps   xmm8,xmm0
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        xorps   xmm3,xmm8
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > >
> > > > > +        jmp     NEAR $L$ccm64_dec2_loop
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ccm64_dec2_loop:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,32
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        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,[16+rdi]
> > > > >
> > > > > +        jmp     NEAR $L$ccm64_dec_outer
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ccm64_dec_break:
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,DWORD[240+r11]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[r11]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > >
> > > > > +        xorps   xmm8,xmm0
> > > > >
> > > > > +        lea     r11,[32+r11]
> > > > >
> > > > > +        xorps   xmm3,xmm8
> > > > >
> > > > > +$L$oop_enc1_6:
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        movups  xmm1,XMMWORD[r11]
> > > > >
> > > > > +        lea     r11,[16+r11]
> > > > >
> > > > > +        jnz     NEAR $L$oop_enc1_6
> > > > >
> > > > > +DB      102,15,56,221,217
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        movups  XMMWORD[r9],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm8,xmm8
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > >
> > > > > +        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:
> > > > >
> > > > > +global  aesni_ctr32_encrypt_blocks
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        cmp     rdx,1
> > > > >
> > > > > +        jne     NEAR $L$ctr32_bulk
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm2,XMMWORD[r8]
> > > > >
> > > > > +        movups  xmm3,XMMWORD[rdi]
> > > > >
> > > > > +        mov     edx,DWORD[240+rcx]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_enc1_7:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > >
> > > > > +        lea     rcx,[16+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$oop_enc1_7
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        xorps   xmm2,xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        xorps   xmm2,xmm2
> > > > >
> > > > > +        jmp     NEAR $L$ctr32_epilogue
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ctr32_bulk:
> > > > >
> > > > > +        lea     r11,[rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsp,288
> > > > >
> > > > > +        and     rsp,-16
> > > > >
> > > > > +        movaps  XMMWORD[(-168)+r11],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[(-152)+r11],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[(-136)+r11],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+r11],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+r11],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+r11],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+r11],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+r11],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+r11],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-24)+r11],xmm15
> > > > >
> > > > > +$L$ctr32_body:
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[r8]
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        mov     r8d,DWORD[12+r8]
> > > > >
> > > > > +        pxor    xmm2,xmm0
> > > > >
> > > > > +        mov     ebp,DWORD[12+rcx]
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm2
> > > > >
> > > > > +        bswap   r8d
> > > > >
> > > > > +        movdqa  xmm3,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm2
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        movdqa  XMMWORD[64+rsp],xmm2
> > > > >
> > > > > +        movdqa  XMMWORD[80+rsp],xmm2
> > > > >
> > > > > +        movdqa  XMMWORD[96+rsp],xmm2
> > > > >
> > > > > +        mov     r10,rdx
> > > > >
> > > > > +        movdqa  XMMWORD[112+rsp],xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rax,[1+r8]
> > > > >
> > > > > +        lea     rdx,[2+r8]
> > > > >
> > > > > +        bswap   eax
> > > > >
> > > > > +        bswap   edx
> > > > >
> > > > > +        xor     eax,ebp
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +DB      102,15,58,34,216,3
> > > > >
> > > > > +        lea     rax,[3+r8]
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm3
> > > > >
> > > > > +DB      102,15,58,34,226,3
> > > > >
> > > > > +        bswap   eax
> > > > >
> > > > > +        mov     rdx,r10
> > > > >
> > > > > +        lea     r10,[4+r8]
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm4
> > > > >
> > > > > +        xor     eax,ebp
> > > > >
> > > > > +        bswap   r10d
> > > > >
> > > > > +DB      102,15,58,34,232,3
> > > > >
> > > > > +        xor     r10d,ebp
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm5
> > > > >
> > > > > +        lea     r9,[5+r8]
> > > > >
> > > > > +        mov     DWORD[((64+12))+rsp],r10d
> > > > >
> > > > > +        bswap   r9d
> > > > >
> > > > > +        lea     r10,[6+r8]
> > > > >
> > > > > +        mov     eax,DWORD[240+rcx]
> > > > >
> > > > > +        xor     r9d,ebp
> > > > >
> > > > > +        bswap   r10d
> > > > >
> > > > > +        mov     DWORD[((80+12))+rsp],r9d
> > > > >
> > > > > +        xor     r10d,ebp
> > > > >
> > > > > +        lea     r9,[7+r8]
> > > > >
> > > > > +        mov     DWORD[((96+12))+rsp],r10d
> > > > >
> > > > > +        bswap   r9d
> > > > >
> > > > > +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
> > > > >
> > > > > +        xor     r9d,ebp
> > > > >
> > > > > +        and     r10d,71303168
> > > > >
> > > > > +        mov     DWORD[((112+12))+rsp],r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[64+rsp]
> > > > >
> > > > > +        movdqa  xmm7,XMMWORD[80+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        cmp     rdx,8
> > > > >
> > > > > +        jb      NEAR $L$ctr32_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rdx,6
> > > > >
> > > > > +        cmp     r10d,4194304
> > > > >
> > > > > +        je      NEAR $L$ctr32_6x
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rcx,[128+rcx]
> > > > >
> > > > > +        sub     rdx,2
> > > > >
> > > > > +        jmp     NEAR $L$ctr32_loop8
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ctr32_6x:
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        mov     r10d,48
> > > > >
> > > > > +        bswap   ebp
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        sub     r10,rax
> > > > >
> > > > > +        jmp     NEAR $L$ctr32_loop6
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ctr32_loop6:
> > > > >
> > > > > +        add     r8d,6
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-48))+r10*1+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        mov     eax,r8d
> > > > >
> > > > > +        xor     eax,ebp
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,12
> > > > >
> > > > > +        lea     eax,[1+r8]
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +        xor     eax,ebp
> > > > >
> > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,28
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        lea     eax,[2+r8]
> > > > >
> > > > > +        xor     eax,ebp
> > > > >
> > > > > +DB      102,15,56,220,241
> > > > >
> > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,44
> > > > >
> > > > > +        lea     eax,[3+r8]
> > > > >
> > > > > +DB      102,15,56,220,249
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-32))+r10*1+rcx]
> > > > >
> > > > > +        xor     eax,ebp
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,60
> > > > >
> > > > > +        lea     eax,[4+r8]
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        xor     eax,ebp
> > > > >
> > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,76
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +        lea     eax,[5+r8]
> > > > >
> > > > > +        xor     eax,ebp
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +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[((-16))+r10*1+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        call    $L$enc_loop6
> > > > >
> > > > > +
> > > > >
> > > > > +        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[rsp]
> > > > >
> > > > > +        pxor    xmm9,xmm3
> > > > >
> > > > > +        movaps  xmm3,XMMWORD[16+rsp]
> > > > >
> > > > > +        pxor    xmm10,xmm4
> > > > >
> > > > > +        movaps  xmm4,XMMWORD[32+rsp]
> > > > >
> > > > > +        pxor    xmm11,xmm5
> > > > >
> > > > > +        movaps  xmm5,XMMWORD[48+rsp]
> > > > >
> > > > > +        pxor    xmm12,xmm6
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[64+rsp]
> > > > >
> > > > > +        pxor    xmm13,xmm7
> > > > >
> > > > > +        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     NEAR $L$ctr32_loop6
> > > > >
> > > > > +
> > > > >
> > > > > +        add     rdx,6
> > > > >
> > > > > +        jz      NEAR $L$ctr32_done
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     eax,[((-48))+r10]
> > > > >
> > > > > +        lea     rcx,[((-80))+r10*1+rcx]
> > > > >
> > > > > +        neg     eax
> > > > >
> > > > > +        shr     eax,4
> > > > >
> > > > > +        jmp     NEAR $L$ctr32_tail
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ctr32_loop8:
> > > > >
> > > > > +        add     r8d,8
> > > > >
> > > > > +        movdqa  xmm8,XMMWORD[96+rsp]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        mov     r9d,r8d
> > > > >
> > > > > +        movdqa  xmm9,XMMWORD[112+rsp]
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        bswap   r9d
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((32-128))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +        xor     r9d,ebp
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        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[((48-128))+rcx]
> > > > >
> > > > > +        bswap   r9d
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        xor     r9d,ebp
> > > > >
> > > > > +DB      0x66,0x90
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +        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[((64-128))+rcx]
> > > > >
> > > > > +        bswap   r9d
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        xor     r9d,ebp
> > > > >
> > > > > +DB      0x66,0x90
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        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[((80-128))+rcx]
> > > > >
> > > > > +        bswap   r9d
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        xor     r9d,ebp
> > > > >
> > > > > +DB      0x66,0x90
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +        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[((96-128))+rcx]
> > > > >
> > > > > +        bswap   r9d
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        xor     r9d,ebp
> > > > >
> > > > > +DB      0x66,0x90
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        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[((112-128))+rcx]
> > > > >
> > > > > +        bswap   r9d
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        xor     r9d,ebp
> > > > >
> > > > > +DB      0x66,0x90
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +        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[((128-128))+rcx]
> > > > >
> > > > > +        bswap   r9d
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        xor     r9d,ebp
> > > > >
> > > > > +DB      0x66,0x90
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        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[((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,ebp
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[rdi]
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +        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[((160-128))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        jb      NEAR $L$ctr32_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +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
> > > > >
> > > > > +DB      102,68,15,56,220,193
> > > > >
> > > > > +DB      102,68,15,56,220,201
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((176-128))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +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[((192-128))+rcx]
> > > > >
> > > > > +        je      NEAR $L$ctr32_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +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
> > > > >
> > > > > +DB      102,68,15,56,220,193
> > > > >
> > > > > +DB      102,68,15,56,220,201
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((208-128))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +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[((224-128))+rcx]
> > > > >
> > > > > +        jmp     NEAR $L$ctr32_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ctr32_enc_done:
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[16+rdi]
> > > > >
> > > > > +        pxor    xmm10,xmm0
> > > > >
> > > > > +        movdqu  xmm12,XMMWORD[32+rdi]
> > > > >
> > > > > +        pxor    xmm11,xmm0
> > > > >
> > > > > +        movdqu  xmm13,XMMWORD[48+rdi]
> > > > >
> > > > > +        pxor    xmm12,xmm0
> > > > >
> > > > > +        movdqu  xmm14,XMMWORD[64+rdi]
> > > > >
> > > > > +        pxor    xmm13,xmm0
> > > > >
> > > > > +        movdqu  xmm15,XMMWORD[80+rdi]
> > > > >
> > > > > +        pxor    xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm0
> > > > >
> > > > > +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
> > > > >
> > > > > +DB      102,68,15,56,220,193
> > > > >
> > > > > +DB      102,68,15,56,220,201
> > > > >
> > > > > +        movdqu  xmm1,XMMWORD[96+rdi]
> > > > >
> > > > > +        lea     rdi,[128+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,65,15,56,221,210
> > > > >
> > > > > +        pxor    xmm1,xmm0
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[((112-128))+rdi]
> > > > >
> > > > > +DB      102,65,15,56,221,219
> > > > >
> > > > > +        pxor    xmm10,xmm0
> > > > >
> > > > > +        movdqa  xmm11,XMMWORD[rsp]
> > > > >
> > > > > +DB      102,65,15,56,221,228
> > > > >
> > > > > +DB      102,65,15,56,221,237
> > > > >
> > > > > +        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[48+rsp]
> > > > >
> > > > > +        movdqa  xmm15,XMMWORD[64+rsp]
> > > > >
> > > > > +DB      102,68,15,56,221,193
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[80+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((16-128))+rcx]
> > > > >
> > > > > +DB      102,69,15,56,221,202
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm12
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm13
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        movdqa  xmm5,xmm14
> > > > >
> > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        movdqa  xmm6,xmm15
> > > > >
> > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm0
> > > > >
> > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > >
> > > > > +        movups  XMMWORD[112+rsi],xmm9
> > > > >
> > > > > +        lea     rsi,[128+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rdx,8
> > > > >
> > > > > +        jnc     NEAR $L$ctr32_loop8
> > > > >
> > > > > +
> > > > >
> > > > > +        add     rdx,8
> > > > >
> > > > > +        jz      NEAR $L$ctr32_done
> > > > >
> > > > > +        lea     rcx,[((-128))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ctr32_tail:
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rcx,[16+rcx]
> > > > >
> > > > > +        cmp     rdx,4
> > > > >
> > > > > +        jb      NEAR $L$ctr32_loop3
> > > > >
> > > > > +        je      NEAR $L$ctr32_loop4
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movdqa  xmm8,XMMWORD[96+rsp]
> > > > >
> > > > > +        pxor    xmm9,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[16+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        lea     rcx,[((32-16))+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +        movups  xmm10,XMMWORD[rdi]
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +DB      102,15,56,220,241
> > > > >
> > > > > +        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[48+rdi]
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[64+rdi]
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        cmp     rdx,6
> > > > >
> > > > > +        jb      NEAR $L$ctr32_done
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm11,XMMWORD[80+rdi]
> > > > >
> > > > > +        xorps   xmm7,xmm11
> > > > >
> > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > >
> > > > > +        je      NEAR $L$ctr32_done
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm12,XMMWORD[96+rdi]
> > > > >
> > > > > +        xorps   xmm8,xmm12
> > > > >
> > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > >
> > > > > +        jmp     NEAR $L$ctr32_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ctr32_loop4:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        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[rcx]
> > > > >
> > > > > +        jnz     NEAR $L$ctr32_loop4
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +DB      102,15,56,221,217
> > > > >
> > > > > +        movups  xmm10,XMMWORD[rdi]
> > > > >
> > > > > +        movups  xmm11,XMMWORD[16+rdi]
> > > > >
> > > > > +DB      102,15,56,221,225
> > > > >
> > > > > +DB      102,15,56,221,233
> > > > >
> > > > > +        movups  xmm12,XMMWORD[32+rdi]
> > > > >
> > > > > +        movups  xmm13,XMMWORD[48+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        jmp     NEAR $L$ctr32_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ctr32_loop3:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        lea     rcx,[16+rcx]
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +        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[rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        cmp     rdx,2
> > > > >
> > > > > +        jb      NEAR $L$ctr32_done
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm11,XMMWORD[16+rdi]
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        je      NEAR $L$ctr32_done
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm12,XMMWORD[32+rdi]
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ctr32_done:
> > > > >
> > > > > +        xorps   xmm0,xmm0
> > > > >
> > > > > +        xor     ebp,ebp
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-168))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-168)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-152))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-152)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-136))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-136)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-120))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-104))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-88))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-72))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[((-56))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[((-40))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[((-24))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-24)+r11],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > > >
> > > > > +        mov     rbp,QWORD[((-8))+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[r11]
> > > > >
> > > > > +
> > > > >
> > > > > +$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:
> > > > >
> > > > > +global  aesni_xts_encrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +aesni_xts_encrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_xts_encrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r11,[rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsp,272
> > > > >
> > > > > +        and     rsp,-16
> > > > >
> > > > > +        movaps  XMMWORD[(-168)+r11],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[(-152)+r11],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[(-136)+r11],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+r11],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+r11],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+r11],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+r11],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+r11],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+r11],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-24)+r11],xmm15
> > > > >
> > > > > +$L$xts_enc_body:
> > > > >
> > > > > +        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:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        movups  xmm1,XMMWORD[r8]
> > > > >
> > > > > +        lea     r8,[16+r8]
> > > > >
> > > > > +        jnz     NEAR $L$oop_enc1_8
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        mov     rbp,rcx
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        shl     r10d,4
> > > > >
> > > > > +        mov     r9,rdx
> > > > >
> > > > > +        and     rdx,-16
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,XMMWORD[$L$xts_magic]
> > > > >
> > > > > +        movdqa  xmm15,xmm2
> > > > >
> > > > > +        pshufd  xmm9,xmm2,0x5f
> > > > >
> > > > > +        pxor    xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        movdqa  xmm10,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        pxor    xmm10,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        movdqa  xmm11,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        pxor    xmm11,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        movdqa  xmm12,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        pxor    xmm12,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        movdqa  xmm13,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        pxor    xmm13,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm15
> > > > >
> > > > > +        psrad   xmm9,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm9,xmm8
> > > > >
> > > > > +        pxor    xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rdx,16*6
> > > > >
> > > > > +        jc      NEAR $L$xts_enc_short
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,16+96
> > > > >
> > > > > +        lea     rcx,[32+r10*1+rbp]
> > > > >
> > > > > +        sub     rax,r10
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > > >
> > > > > +        mov     r10,rax
> > > > >
> > > > > +        lea     r8,[$L$xts_magic]
> > > > >
> > > > > +        jmp     NEAR $L$xts_enc_grandloop
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$xts_enc_grandloop:
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        movdqa  xmm8,xmm0
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > > >
> > > > > +        pxor    xmm8,xmm15
> > > > >
> > > > > +        movdqa  xmm9,XMMWORD[96+rsp]
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rbp]
> > > > >
> > > > > +        lea     rdi,[96+rdi]
> > > > >
> > > > > +        pxor    xmm7,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm10,xmm9
> > > > >
> > > > > +DB      102,15,56,220,241
> > > > >
> > > > > +        pxor    xmm11,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm10
> > > > >
> > > > > +DB      102,15,56,220,249
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+rbp]
> > > > >
> > > > > +        pxor    xmm12,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        pxor    xmm13,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm11
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        pxor    xmm14,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm12
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +        pxor    xmm8,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[64+rsp],xmm14
> > > > >
> > > > > +DB      102,15,56,220,240
> > > > >
> > > > > +DB      102,15,56,220,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+rbp]
> > > > >
> > > > > +        movdqa  XMMWORD[80+rsp],xmm8
> > > > >
> > > > > +        pshufd  xmm9,xmm15,0x5f
> > > > >
> > > > > +        jmp     NEAR $L$xts_enc_loop6
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$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[((-64))+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
> > > > >
> > > > > +DB      102,15,56,220,240
> > > > >
> > > > > +DB      102,15,56,220,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$xts_enc_loop6
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,XMMWORD[r8]
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        movups  xmm10,XMMWORD[rbp]
> > > > >
> > > > > +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[((-64))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        pxor    xmm10,xmm15
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        movaps  xmm12,xmm11
> > > > >
> > > > > +DB      102,15,56,220,240
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +DB      102,15,56,220,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-48))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        pxor    xmm11,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        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[((-32))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        pxor    xmm12,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +DB      102,15,56,220,240
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movaps  xmm14,xmm13
> > > > >
> > > > > +DB      102,15,56,220,248
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        pxor    xmm13,xmm15
> > > > >
> > > > > +        psrad   xmm0,31
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm0,xmm8
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        pxor    xmm15,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rbp]
> > > > >
> > > > > +DB      102,15,56,220,241
> > > > >
> > > > > +DB      102,15,56,220,249
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm14,xmm15
> > > > >
> > > > > +DB      102,15,56,221,84,36,0
> > > > >
> > > > > +        psrad   xmm9,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +DB      102,15,56,221,92,36,16
> > > > >
> > > > > +DB      102,15,56,221,100,36,32
> > > > >
> > > > > +        pand    xmm9,xmm8
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +DB      102,15,56,221,108,36,48
> > > > >
> > > > > +DB      102,15,56,221,116,36,64
> > > > >
> > > > > +DB      102,15,56,221,124,36,80
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        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     NEAR $L$xts_enc_grandloop
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,16+96
> > > > >
> > > > > +        sub     eax,r10d
> > > > >
> > > > > +        mov     rcx,rbp
> > > > >
> > > > > +        shr     eax,4
> > > > >
> > > > > +
> > > > >
> > > > > +$L$xts_enc_short:
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +        pxor    xmm10,xmm0
> > > > >
> > > > > +        add     rdx,16*6
> > > > >
> > > > > +        jz      NEAR $L$xts_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm11,xmm0
> > > > >
> > > > > +        cmp     rdx,0x20
> > > > >
> > > > > +        jb      NEAR $L$xts_enc_one
> > > > >
> > > > > +        pxor    xmm12,xmm0
> > > > >
> > > > > +        je      NEAR $L$xts_enc_two
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm13,xmm0
> > > > >
> > > > > +        cmp     rdx,0x40
> > > > >
> > > > > +        jb      NEAR $L$xts_enc_three
> > > > >
> > > > > +        pxor    xmm14,xmm0
> > > > >
> > > > > +        je      NEAR $L$xts_enc_four
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > >
> > > > > +        lea     rdi,[80+rdi]
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _aesni_encrypt6
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movdqa  xmm10,xmm15
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        xorps   xmm5,xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        xorps   xmm6,xmm14
> > > > >
> > > > > +        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[rdi]
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_enc1_9:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        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[rsi],xmm2
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +        jmp     NEAR $L$xts_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$xts_enc_two:
> > > > >
> > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        lea     rdi,[32+rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _aesni_encrypt2
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movdqa  xmm10,xmm12
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        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[rdi]
> > > > >
> > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        lea     rdi,[48+rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _aesni_encrypt3
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movdqa  xmm10,xmm13
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +        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[rdi]
> > > > >
> > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movups  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        lea     rdi,[64+rdi]
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +        xorps   xmm5,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _aesni_encrypt4
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movdqa  xmm10,xmm14
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        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:
> > > > >
> > > > > +        and     r9,15
> > > > >
> > > > > +        jz      NEAR $L$xts_enc_ret
> > > > >
> > > > > +        mov     rdx,r9
> > > > >
> > > > > +
> > > > >
> > > > > +$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     NEAR $L$xts_enc_steal
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsi,r9
> > > > >
> > > > > +        mov     rcx,rbp
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm2,XMMWORD[((-16))+rsi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_enc1_10:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        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[(-16)+rsi],xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +$L$xts_enc_ret:
> > > > >
> > > > > +        xorps   xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-168))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-168)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-152))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-152)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-136))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-136)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-120))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-104))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-88))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-72))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[((-56))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[((-40))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[((-24))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-24)+r11],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > >
> > > > > +        mov     rbp,QWORD[((-8))+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[r11]
> > > > >
> > > > > +
> > > > >
> > > > > +$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:
> > > > >
> > > > > +global  aesni_xts_decrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +aesni_xts_decrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_xts_decrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r11,[rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsp,272
> > > > >
> > > > > +        and     rsp,-16
> > > > >
> > > > > +        movaps  XMMWORD[(-168)+r11],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[(-152)+r11],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[(-136)+r11],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+r11],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+r11],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+r11],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+r11],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+r11],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+r11],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-24)+r11],xmm15
> > > > >
> > > > > +$L$xts_dec_body:
> > > > >
> > > > > +        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:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        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
> > > > >
> > > > > +        setnz   al
> > > > >
> > > > > +        shl     rax,4
> > > > >
> > > > > +        sub     rdx,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        mov     rbp,rcx
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        shl     r10d,4
> > > > >
> > > > > +        mov     r9,rdx
> > > > >
> > > > > +        and     rdx,-16
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,XMMWORD[$L$xts_magic]
> > > > >
> > > > > +        movdqa  xmm15,xmm2
> > > > >
> > > > > +        pshufd  xmm9,xmm2,0x5f
> > > > >
> > > > > +        pxor    xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        movdqa  xmm10,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        pxor    xmm10,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        movdqa  xmm11,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        pxor    xmm11,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        movdqa  xmm12,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        pxor    xmm12,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        movdqa  xmm13,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        pxor    xmm13,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm15
> > > > >
> > > > > +        psrad   xmm9,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm9,xmm8
> > > > >
> > > > > +        pxor    xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rdx,16*6
> > > > >
> > > > > +        jc      NEAR $L$xts_dec_short
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,16+96
> > > > >
> > > > > +        lea     rcx,[32+r10*1+rbp]
> > > > >
> > > > > +        sub     rax,r10
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > > >
> > > > > +        mov     r10,rax
> > > > >
> > > > > +        lea     r8,[$L$xts_magic]
> > > > >
> > > > > +        jmp     NEAR $L$xts_dec_grandloop
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$xts_dec_grandloop:
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        movdqa  xmm8,xmm0
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > > >
> > > > > +        pxor    xmm8,xmm15
> > > > >
> > > > > +        movdqa  xmm9,XMMWORD[96+rsp]
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rbp]
> > > > >
> > > > > +        lea     rdi,[96+rdi]
> > > > >
> > > > > +        pxor    xmm7,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm10,xmm9
> > > > >
> > > > > +DB      102,15,56,222,241
> > > > >
> > > > > +        pxor    xmm11,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm10
> > > > >
> > > > > +DB      102,15,56,222,249
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+rbp]
> > > > >
> > > > > +        pxor    xmm12,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +        pxor    xmm13,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm11
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +        pxor    xmm14,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm12
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +        pxor    xmm8,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[64+rsp],xmm14
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+rbp]
> > > > >
> > > > > +        movdqa  XMMWORD[80+rsp],xmm8
> > > > >
> > > > > +        pshufd  xmm9,xmm15,0x5f
> > > > >
> > > > > +        jmp     NEAR $L$xts_dec_loop6
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$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[((-64))+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
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$xts_dec_loop6
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,XMMWORD[r8]
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        movups  xmm10,XMMWORD[rbp]
> > > > >
> > > > > +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[((-64))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        pxor    xmm10,xmm15
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        movaps  xmm12,xmm11
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-48))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        pxor    xmm11,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        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[((-32))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +        pxor    xmm12,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movaps  xmm14,xmm13
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        pxor    xmm13,xmm15
> > > > >
> > > > > +        psrad   xmm0,31
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm0,xmm8
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        pxor    xmm15,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rbp]
> > > > >
> > > > > +DB      102,15,56,222,241
> > > > >
> > > > > +DB      102,15,56,222,249
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm14,xmm15
> > > > >
> > > > > +DB      102,15,56,223,84,36,0
> > > > >
> > > > > +        psrad   xmm9,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +DB      102,15,56,223,92,36,16
> > > > >
> > > > > +DB      102,15,56,223,100,36,32
> > > > >
> > > > > +        pand    xmm9,xmm8
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +DB      102,15,56,223,108,36,48
> > > > >
> > > > > +DB      102,15,56,223,116,36,64
> > > > >
> > > > > +DB      102,15,56,223,124,36,80
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        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     NEAR $L$xts_dec_grandloop
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,16+96
> > > > >
> > > > > +        sub     eax,r10d
> > > > >
> > > > > +        mov     rcx,rbp
> > > > >
> > > > > +        shr     eax,4
> > > > >
> > > > > +
> > > > >
> > > > > +$L$xts_dec_short:
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +        pxor    xmm10,xmm0
> > > > >
> > > > > +        pxor    xmm11,xmm0
> > > > >
> > > > > +        add     rdx,16*6
> > > > >
> > > > > +        jz      NEAR $L$xts_dec_done
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm12,xmm0
> > > > >
> > > > > +        cmp     rdx,0x20
> > > > >
> > > > > +        jb      NEAR $L$xts_dec_one
> > > > >
> > > > > +        pxor    xmm13,xmm0
> > > > >
> > > > > +        je      NEAR $L$xts_dec_two
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm14,xmm0
> > > > >
> > > > > +        cmp     rdx,0x40
> > > > >
> > > > > +        jb      NEAR $L$xts_dec_three
> > > > >
> > > > > +        je      NEAR $L$xts_dec_four
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > >
> > > > > +        lea     rdi,[80+rdi]
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _aesni_decrypt6
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        xorps   xmm5,xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        xorps   xmm6,xmm14
> > > > >
> > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm14,xmm14
> > > > >
> > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pcmpgtd xmm14,xmm15
> > > > >
> > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        lea     rsi,[80+rsi]
> > > > >
> > > > > +        pshufd  xmm11,xmm14,0x13
> > > > >
> > > > > +        and     r9,15
> > > > >
> > > > > +        jz      NEAR $L$xts_dec_ret
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm10,xmm15
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm11,xmm8
> > > > >
> > > > > +        pxor    xmm11,xmm15
> > > > >
> > > > > +        jmp     NEAR $L$xts_dec_done2
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$xts_dec_one:
> > > > >
> > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_dec1_12:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        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[rsi],xmm2
> > > > >
> > > > > +        movdqa  xmm11,xmm12
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +        jmp     NEAR $L$xts_dec_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$xts_dec_two:
> > > > >
> > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        lea     rdi,[32+rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _aesni_decrypt2
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movdqa  xmm10,xmm12
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        movdqa  xmm11,xmm13
> > > > >
> > > > > +        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[rdi]
> > > > >
> > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        lea     rdi,[48+rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _aesni_decrypt3
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movdqa  xmm10,xmm13
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        movdqa  xmm11,xmm14
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +        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[rdi]
> > > > >
> > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movups  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        lea     rdi,[64+rdi]
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +        xorps   xmm5,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _aesni_decrypt4
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movdqa  xmm10,xmm14
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqa  xmm11,xmm15
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        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:
> > > > >
> > > > > +        and     r9,15
> > > > >
> > > > > +        jz      NEAR $L$xts_dec_ret
> > > > >
> > > > > +$L$xts_dec_done2:
> > > > >
> > > > > +        mov     rdx,r9
> > > > >
> > > > > +        mov     rcx,rbp
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm11
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_dec1_13:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        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[rsi],xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +$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     NEAR $L$xts_dec_steal
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsi,r9
> > > > >
> > > > > +        mov     rcx,rbp
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm2,XMMWORD[rsi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_dec1_14:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        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[rsi],xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +$L$xts_dec_ret:
> > > > >
> > > > > +        xorps   xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-168))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-168)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-152))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-152)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-136))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-136)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-120))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-104))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-88))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-72))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[((-56))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[((-40))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[((-24))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-24)+r11],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > >
> > > > > +        mov     rbp,QWORD[((-8))+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[r11]
> > > > >
> > > > > +
> > > > >
> > > > > +$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:
> > > > >
> > > > > +global  aesni_ocb_encrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +aesni_ocb_encrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_ocb_encrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rax,[rsp]
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-160))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[112+rsp],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[128+rsp],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[144+rsp],xmm15
> > > > >
> > > > > +$L$ocb_enc_body:
> > > > >
> > > > > +        mov     rbx,QWORD[56+rax]
> > > > >
> > > > > +        mov     rbp,QWORD[((56+8))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[240+rcx]
> > > > >
> > > > > +        mov     r11,rcx
> > > > >
> > > > > +        shl     r10d,4
> > > > >
> > > > > +        movups  xmm9,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm15,XMMWORD[r9]
> > > > >
> > > > > +        pxor    xmm9,xmm1
> > > > >
> > > > > +        pxor    xmm15,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,16+32
> > > > >
> > > > > +        lea     rcx,[32+r10*1+r11]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > >
> > > > > +        sub     rax,r10
> > > > >
> > > > > +        mov     r10,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[rbp]
> > > > >
> > > > > +
> > > > >
> > > > > +        test    r8,1
> > > > >
> > > > > +        jnz     NEAR $L$ocb_enc_odd
> > > > >
> > > > > +
> > > > >
> > > > > +        bsf     r12,r8
> > > > >
> > > > > +        add     r8,1
> > > > >
> > > > > +        shl     r12,4
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[r12*1+rbx]
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_encrypt1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm7
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +        sub     rdx,1
> > > > >
> > > > > +        jz      NEAR $L$ocb_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ocb_enc_odd:
> > > > >
> > > > > +        lea     r12,[1+r8]
> > > > >
> > > > > +        lea     r13,[3+r8]
> > > > >
> > > > > +        lea     r14,[5+r8]
> > > > >
> > > > > +        lea     r8,[6+r8]
> > > > >
> > > > > +        bsf     r12,r12
> > > > >
> > > > > +        bsf     r13,r13
> > > > >
> > > > > +        bsf     r14,r14
> > > > >
> > > > > +        shl     r12,4
> > > > >
> > > > > +        shl     r13,4
> > > > >
> > > > > +        shl     r14,4
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rdx,6
> > > > >
> > > > > +        jc      NEAR $L$ocb_enc_short
> > > > >
> > > > > +        jmp     NEAR $L$ocb_enc_grandloop
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ocb_enc_grandloop:
> > > > >
> > > > > +        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]
> > > > >
> > > > > +        lea     rdi,[96+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_encrypt6
> > > > >
> > > > > +
> > > > >
> > > > > +        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
> > > > >
> > > > > +        lea     rsi,[96+rsi]
> > > > >
> > > > > +        sub     rdx,6
> > > > >
> > > > > +        jnc     NEAR $L$ocb_enc_grandloop
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ocb_enc_short:
> > > > >
> > > > > +        add     rdx,6
> > > > >
> > > > > +        jz      NEAR $L$ocb_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        cmp     rdx,2
> > > > >
> > > > > +        jb      NEAR $L$ocb_enc_one
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        je      NEAR $L$ocb_enc_two
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        cmp     rdx,4
> > > > >
> > > > > +        jb      NEAR $L$ocb_enc_three
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        je      NEAR $L$ocb_enc_four
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_encrypt6
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm14
> > > > >
> > > > > +        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$ocb_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ocb_enc_one:
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_encrypt1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm7
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        jmp     NEAR $L$ocb_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ocb_enc_two:
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_encrypt4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm11
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$ocb_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ocb_enc_three:
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_encrypt4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm12
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$ocb_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ocb_enc_four:
> > > > >
> > > > > +        call    __ocb_encrypt4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm13
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ocb_enc_done:
> > > > >
> > > > > +        pxor    xmm15,xmm0
> > > > >
> > > > > +        movdqu  XMMWORD[rbp],xmm8
> > > > >
> > > > > +        movdqu  XMMWORD[r9],xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[64+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[80+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[96+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[112+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[128+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[128+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[144+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[144+rsp],xmm0
> > > > >
> > > > > +        lea     rax,[((160+40))+rsp]
> > > > >
> > > > > +$L$ocb_enc_pop:
> > > > >
> > > > > +        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$ocb_enc_epilogue:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_aesni_ocb_encrypt:
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +__ocb_encrypt6:
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > > >
> > > > > +        movdqa  xmm12,xmm10
> > > > >
> > > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > > >
> > > > > +        movdqa  xmm14,xmm10
> > > > >
> > > > > +        pxor    xmm10,xmm15
> > > > >
> > > > > +        movdqu  xmm15,XMMWORD[r14*1+rbx]
> > > > >
> > > > > +        pxor    xmm11,xmm10
> > > > >
> > > > > +        pxor    xmm8,xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        pxor    xmm12,xmm11
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        pxor    xmm13,xmm12
> > > > >
> > > > > +        pxor    xmm8,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm14,xmm13
> > > > >
> > > > > +        pxor    xmm8,xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        pxor    xmm8,xmm6
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm8,xmm7
> > > > >
> > > > > +        pxor    xmm7,xmm15
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r12,[1+r8]
> > > > >
> > > > > +        lea     r13,[3+r8]
> > > > >
> > > > > +        lea     r14,[5+r8]
> > > > >
> > > > > +        add     r8,6
> > > > >
> > > > > +        pxor    xmm10,xmm9
> > > > >
> > > > > +        bsf     r12,r12
> > > > >
> > > > > +        bsf     r13,r13
> > > > >
> > > > > +        bsf     r14,r14
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        pxor    xmm11,xmm9
> > > > >
> > > > > +        pxor    xmm12,xmm9
> > > > >
> > > > > +DB      102,15,56,220,241
> > > > >
> > > > > +        pxor    xmm13,xmm9
> > > > >
> > > > > +        pxor    xmm14,xmm9
> > > > >
> > > > > +DB      102,15,56,220,249
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+r11]
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +DB      102,15,56,220,240
> > > > >
> > > > > +DB      102,15,56,220,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+r11]
> > > > >
> > > > > +        shl     r12,4
> > > > >
> > > > > +        shl     r13,4
> > > > >
> > > > > +        jmp     NEAR $L$ocb_enc_loop6
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ocb_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[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
> > > > >
> > > > > +DB      102,15,56,220,240
> > > > >
> > > > > +DB      102,15,56,220,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > > >
> > > > > +        shl     r14,4
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,65,15,56,221,210
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +DB      102,65,15,56,221,219
> > > > >
> > > > > +DB      102,65,15,56,221,228
> > > > >
> > > > > +DB      102,65,15,56,221,237
> > > > >
> > > > > +DB      102,65,15,56,221,246
> > > > >
> > > > > +DB      102,65,15,56,221,255
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +__ocb_encrypt4:
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > > >
> > > > > +        movdqa  xmm12,xmm10
> > > > >
> > > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > > >
> > > > > +        pxor    xmm10,xmm15
> > > > >
> > > > > +        pxor    xmm11,xmm10
> > > > >
> > > > > +        pxor    xmm8,xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        pxor    xmm12,xmm11
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        pxor    xmm13,xmm12
> > > > >
> > > > > +        pxor    xmm8,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm8,xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm10,xmm9
> > > > >
> > > > > +        pxor    xmm11,xmm9
> > > > >
> > > > > +        pxor    xmm12,xmm9
> > > > >
> > > > > +        pxor    xmm13,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +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[48+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +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[64+r11]
> > > > >
> > > > > +        jmp     NEAR $L$ocb_enc_loop4
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ocb_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[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[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,65,15,56,221,210
> > > > >
> > > > > +DB      102,65,15,56,221,219
> > > > >
> > > > > +DB      102,65,15,56,221,228
> > > > >
> > > > > +DB      102,65,15,56,221,237
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +__ocb_encrypt1:
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm9
> > > > >
> > > > > +        pxor    xmm8,xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm7
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+r11]
> > > > >
> > > > > +        pxor    xmm7,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+r11]
> > > > >
> > > > > +        jmp     NEAR $L$ocb_enc_loop1
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ocb_enc_loop1:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,32
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$ocb_enc_loop1
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,221,215
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  aesni_ocb_decrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +aesni_ocb_decrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_ocb_decrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rax,[rsp]
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-160))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[112+rsp],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[128+rsp],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[144+rsp],xmm15
> > > > >
> > > > > +$L$ocb_dec_body:
> > > > >
> > > > > +        mov     rbx,QWORD[56+rax]
> > > > >
> > > > > +        mov     rbp,QWORD[((56+8))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[240+rcx]
> > > > >
> > > > > +        mov     r11,rcx
> > > > >
> > > > > +        shl     r10d,4
> > > > >
> > > > > +        movups  xmm9,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm15,XMMWORD[r9]
> > > > >
> > > > > +        pxor    xmm9,xmm1
> > > > >
> > > > > +        pxor    xmm15,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,16+32
> > > > >
> > > > > +        lea     rcx,[32+r10*1+r11]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > >
> > > > > +        sub     rax,r10
> > > > >
> > > > > +        mov     r10,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[rbp]
> > > > >
> > > > > +
> > > > >
> > > > > +        test    r8,1
> > > > >
> > > > > +        jnz     NEAR $L$ocb_dec_odd
> > > > >
> > > > > +
> > > > >
> > > > > +        bsf     r12,r8
> > > > >
> > > > > +        add     r8,1
> > > > >
> > > > > +        shl     r12,4
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[r12*1+rbx]
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_decrypt1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm7
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        xorps   xmm8,xmm2
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +        sub     rdx,1
> > > > >
> > > > > +        jz      NEAR $L$ocb_dec_done
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ocb_dec_odd:
> > > > >
> > > > > +        lea     r12,[1+r8]
> > > > >
> > > > > +        lea     r13,[3+r8]
> > > > >
> > > > > +        lea     r14,[5+r8]
> > > > >
> > > > > +        lea     r8,[6+r8]
> > > > >
> > > > > +        bsf     r12,r12
> > > > >
> > > > > +        bsf     r13,r13
> > > > >
> > > > > +        bsf     r14,r14
> > > > >
> > > > > +        shl     r12,4
> > > > >
> > > > > +        shl     r13,4
> > > > >
> > > > > +        shl     r14,4
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rdx,6
> > > > >
> > > > > +        jc      NEAR $L$ocb_dec_short
> > > > >
> > > > > +        jmp     NEAR $L$ocb_dec_grandloop
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ocb_dec_grandloop:
> > > > >
> > > > > +        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]
> > > > >
> > > > > +        lea     rdi,[96+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_decrypt6
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm8,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm8,xmm4
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm8,xmm5
> > > > >
> > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        pxor    xmm8,xmm6
> > > > >
> > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > >
> > > > > +        pxor    xmm8,xmm7
> > > > >
> > > > > +        lea     rsi,[96+rsi]
> > > > >
> > > > > +        sub     rdx,6
> > > > >
> > > > > +        jnc     NEAR $L$ocb_dec_grandloop
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ocb_dec_short:
> > > > >
> > > > > +        add     rdx,6
> > > > >
> > > > > +        jz      NEAR $L$ocb_dec_done
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        cmp     rdx,2
> > > > >
> > > > > +        jb      NEAR $L$ocb_dec_one
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        je      NEAR $L$ocb_dec_two
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        cmp     rdx,4
> > > > >
> > > > > +        jb      NEAR $L$ocb_dec_three
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        je      NEAR $L$ocb_dec_four
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_decrypt6
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm14
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm8,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm8,xmm4
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm8,xmm5
> > > > >
> > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        pxor    xmm8,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$ocb_dec_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ocb_dec_one:
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_decrypt1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm7
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        xorps   xmm8,xmm2
> > > > >
> > > > > +        jmp     NEAR $L$ocb_dec_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ocb_dec_two:
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_decrypt4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm11
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        xorps   xmm8,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        xorps   xmm8,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$ocb_dec_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ocb_dec_three:
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_decrypt4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm12
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        xorps   xmm8,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        xorps   xmm8,xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        xorps   xmm8,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$ocb_dec_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ocb_dec_four:
> > > > >
> > > > > +        call    __ocb_decrypt4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm13
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm8,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm8,xmm4
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm8,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ocb_dec_done:
> > > > >
> > > > > +        pxor    xmm15,xmm0
> > > > >
> > > > > +        movdqu  XMMWORD[rbp],xmm8
> > > > >
> > > > > +        movdqu  XMMWORD[r9],xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[64+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[80+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[96+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[112+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[128+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[128+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[144+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[144+rsp],xmm0
> > > > >
> > > > > +        lea     rax,[((160+40))+rsp]
> > > > >
> > > > > +$L$ocb_dec_pop:
> > > > >
> > > > > +        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$ocb_dec_epilogue:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_aesni_ocb_decrypt:
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +__ocb_decrypt6:
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > > >
> > > > > +        movdqa  xmm12,xmm10
> > > > >
> > > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > > >
> > > > > +        movdqa  xmm14,xmm10
> > > > >
> > > > > +        pxor    xmm10,xmm15
> > > > >
> > > > > +        movdqu  xmm15,XMMWORD[r14*1+rbx]
> > > > >
> > > > > +        pxor    xmm11,xmm10
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        pxor    xmm12,xmm11
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        pxor    xmm13,xmm12
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm14,xmm13
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm15
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r12,[1+r8]
> > > > >
> > > > > +        lea     r13,[3+r8]
> > > > >
> > > > > +        lea     r14,[5+r8]
> > > > >
> > > > > +        add     r8,6
> > > > >
> > > > > +        pxor    xmm10,xmm9
> > > > >
> > > > > +        bsf     r12,r12
> > > > >
> > > > > +        bsf     r13,r13
> > > > >
> > > > > +        bsf     r14,r14
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        pxor    xmm11,xmm9
> > > > >
> > > > > +        pxor    xmm12,xmm9
> > > > >
> > > > > +DB      102,15,56,222,241
> > > > >
> > > > > +        pxor    xmm13,xmm9
> > > > >
> > > > > +        pxor    xmm14,xmm9
> > > > >
> > > > > +DB      102,15,56,222,249
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+r11]
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+r11]
> > > > >
> > > > > +        shl     r12,4
> > > > >
> > > > > +        shl     r13,4
> > > > >
> > > > > +        jmp     NEAR $L$ocb_dec_loop6
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ocb_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[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
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > > >
> > > > > +        shl     r14,4
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,65,15,56,223,210
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +DB      102,65,15,56,223,219
> > > > >
> > > > > +DB      102,65,15,56,223,228
> > > > >
> > > > > +DB      102,65,15,56,223,237
> > > > >
> > > > > +DB      102,65,15,56,223,246
> > > > >
> > > > > +DB      102,65,15,56,223,255
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +__ocb_decrypt4:
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > > >
> > > > > +        movdqa  xmm12,xmm10
> > > > >
> > > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > > >
> > > > > +        pxor    xmm10,xmm15
> > > > >
> > > > > +        pxor    xmm11,xmm10
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        pxor    xmm12,xmm11
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        pxor    xmm13,xmm12
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm10,xmm9
> > > > >
> > > > > +        pxor    xmm11,xmm9
> > > > >
> > > > > +        pxor    xmm12,xmm9
> > > > >
> > > > > +        pxor    xmm13,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +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[48+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +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[64+r11]
> > > > >
> > > > > +        jmp     NEAR $L$ocb_dec_loop4
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ocb_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[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[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,65,15,56,223,210
> > > > >
> > > > > +DB      102,65,15,56,223,219
> > > > >
> > > > > +DB      102,65,15,56,223,228
> > > > >
> > > > > +DB      102,65,15,56,223,237
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +__ocb_decrypt1:
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm9
> > > > >
> > > > > +        pxor    xmm2,xmm7
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+r11]
> > > > >
> > > > > +        pxor    xmm7,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+r11]
> > > > >
> > > > > +        jmp     NEAR $L$ocb_dec_loop1
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ocb_dec_loop1:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,32
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$ocb_dec_loop1
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,223,215
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  aesni_cbc_encrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +aesni_cbc_encrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_cbc_encrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        test    rdx,rdx
> > > > >
> > > > > +        jz      NEAR $L$cbc_ret
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[240+rcx]
> > > > >
> > > > > +        mov     r11,rcx
> > > > >
> > > > > +        test    r9d,r9d
> > > > >
> > > > > +        jz      NEAR $L$cbc_decrypt
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm2,XMMWORD[r8]
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        cmp     rdx,16
> > > > >
> > > > > +        jb      NEAR $L$cbc_enc_tail
> > > > >
> > > > > +        sub     rdx,16
> > > > >
> > > > > +        jmp     NEAR $L$cbc_enc_loop
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_enc_loop:
> > > > >
> > > > > +        movups  xmm3,XMMWORD[rdi]
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm3
> > > > >
> > > > > +$L$oop_enc1_15:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        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[rsi],xmm2
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +        sub     rdx,16
> > > > >
> > > > > +        jnc     NEAR $L$cbc_enc_loop
> > > > >
> > > > > +        add     rdx,16
> > > > >
> > > > > +        jnz     NEAR $L$cbc_enc_tail
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        movups  XMMWORD[r8],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        jmp     NEAR $L$cbc_ret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$cbc_enc_tail:
> > > > >
> > > > > +        mov     rcx,rdx
> > > > >
> > > > > +        xchg    rsi,rdi
> > > > >
> > > > > +        DD      0x9066A4F3
> > > > >
> > > > > +        mov     ecx,16
> > > > >
> > > > > +        sub     rcx,rdx
> > > > >
> > > > > +        xor     eax,eax
> > > > >
> > > > > +        DD      0x9066AAF3
> > > > >
> > > > > +        lea     rdi,[((-16))+rdi]
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        mov     rsi,rdi
> > > > >
> > > > > +        mov     rcx,r11
> > > > >
> > > > > +        xor     rdx,rdx
> > > > >
> > > > > +        jmp     NEAR $L$cbc_enc_loop
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_decrypt:
> > > > >
> > > > > +        cmp     rdx,16
> > > > >
> > > > > +        jne     NEAR $L$cbc_decrypt_bulk
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[r8]
> > > > >
> > > > > +        movdqa  xmm4,xmm2
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_dec1_16:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        dec     r10d
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > >
> > > > > +        lea     rcx,[16+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$oop_dec1_16
> > > > >
> > > > > +DB      102,15,56,223,209
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        movdqu  XMMWORD[r8],xmm4
> > > > >
> > > > > +        xorps   xmm2,xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        jmp     NEAR $L$cbc_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_decrypt_bulk:
> > > > >
> > > > > +        lea     r11,[rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsp,176
> > > > >
> > > > > +        and     rsp,-16
> > > > >
> > > > > +        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:
> > > > >
> > > > > +        mov     rbp,rcx
> > > > >
> > > > > +        movups  xmm10,XMMWORD[r8]
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        cmp     rdx,0x50
> > > > >
> > > > > +        jbe     NEAR $L$cbc_dec_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        movdqa  xmm11,xmm2
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        movdqa  xmm12,xmm3
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        movdqa  xmm13,xmm4
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > >
> > > > > +        movdqa  xmm14,xmm5
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > > >
> > > > > +        movdqa  xmm15,xmm6
> > > > >
> > > > > +        mov     r9d,DWORD[((OPENSSL_ia32cap_P+4))]
> > > > >
> > > > > +        cmp     rdx,0x70
> > > > >
> > > > > +        jbe     NEAR $L$cbc_dec_six_or_seven
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r9d,71303168
> > > > >
> > > > > +        sub     rdx,0x50
> > > > >
> > > > > +        cmp     r9d,4194304
> > > > >
> > > > > +        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[rsi],xmm9
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +$L$cbc_dec_loop8_enter:
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[96+rdi]
> > > > >
> > > > > +        pxor    xmm2,xmm0
> > > > >
> > > > > +        movdqu  xmm9,XMMWORD[112+rdi]
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((16-112))+rcx]
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        mov     rbp,-1
> > > > >
> > > > > +        cmp     rdx,0x70
> > > > >
> > > > > +        pxor    xmm5,xmm0
> > > > >
> > > > > +        pxor    xmm6,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm0
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        pxor    xmm9,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((32-112))+rcx]
> > > > >
> > > > > +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
> > > > >
> > > > > +DB      102,68,15,56,222,193
> > > > >
> > > > > +        adc     rbp,0
> > > > >
> > > > > +        and     rbp,128
> > > > >
> > > > > +DB      102,68,15,56,222,201
> > > > >
> > > > > +        add     rbp,rdi
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((48-112))+rcx]
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +DB      102,68,15,56,222,192
> > > > >
> > > > > +DB      102,68,15,56,222,200
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((64-112))+rcx]
> > > > >
> > > > > +        nop
> > > > >
> > > > > +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
> > > > >
> > > > > +DB      102,68,15,56,222,193
> > > > >
> > > > > +DB      102,68,15,56,222,201
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((80-112))+rcx]
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +DB      102,68,15,56,222,192
> > > > >
> > > > > +DB      102,68,15,56,222,200
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((96-112))+rcx]
> > > > >
> > > > > +        nop
> > > > >
> > > > > +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
> > > > >
> > > > > +DB      102,68,15,56,222,193
> > > > >
> > > > > +DB      102,68,15,56,222,201
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((112-112))+rcx]
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +DB      102,68,15,56,222,192
> > > > >
> > > > > +DB      102,68,15,56,222,200
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((128-112))+rcx]
> > > > >
> > > > > +        nop
> > > > >
> > > > > +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
> > > > >
> > > > > +DB      102,68,15,56,222,193
> > > > >
> > > > > +DB      102,68,15,56,222,201
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((144-112))+rcx]
> > > > >
> > > > > +        cmp     eax,11
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +DB      102,68,15,56,222,192
> > > > >
> > > > > +DB      102,68,15,56,222,200
> > > > >
> > > > > +        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
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +DB      102,15,56,222,241
> > > > >
> > > > > +DB      102,15,56,222,249
> > > > >
> > > > > +DB      102,68,15,56,222,193
> > > > >
> > > > > +DB      102,68,15,56,222,201
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((176-112))+rcx]
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +DB      102,68,15,56,222,192
> > > > >
> > > > > +DB      102,68,15,56,222,200
> > > > >
> > > > > +        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
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +DB      102,15,56,222,241
> > > > >
> > > > > +DB      102,15,56,222,249
> > > > >
> > > > > +DB      102,68,15,56,222,193
> > > > >
> > > > > +DB      102,68,15,56,222,201
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((208-112))+rcx]
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +DB      102,68,15,56,222,192
> > > > >
> > > > > +DB      102,68,15,56,222,200
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((224-112))+rcx]
> > > > >
> > > > > +        jmp     NEAR $L$cbc_dec_done
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_dec_done:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        pxor    xmm10,xmm0
> > > > >
> > > > > +        pxor    xmm11,xmm0
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        pxor    xmm12,xmm0
> > > > >
> > > > > +        pxor    xmm13,xmm0
> > > > >
> > > > > +DB      102,15,56,222,241
> > > > >
> > > > > +DB      102,15,56,222,249
> > > > >
> > > > > +        pxor    xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm0
> > > > >
> > > > > +DB      102,68,15,56,222,193
> > > > >
> > > > > +DB      102,68,15,56,222,201
> > > > >
> > > > > +        movdqu  xmm1,XMMWORD[80+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,65,15,56,223,210
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[96+rdi]
> > > > >
> > > > > +        pxor    xmm1,xmm0
> > > > >
> > > > > +DB      102,65,15,56,223,219
> > > > >
> > > > > +        pxor    xmm10,xmm0
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[112+rdi]
> > > > >
> > > > > +DB      102,65,15,56,223,228
> > > > >
> > > > > +        lea     rdi,[128+rdi]
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[rbp]
> > > > >
> > > > > +DB      102,65,15,56,223,237
> > > > >
> > > > > +DB      102,65,15,56,223,246
> > > > >
> > > > > +        movdqu  xmm12,XMMWORD[16+rbp]
> > > > >
> > > > > +        movdqu  xmm13,XMMWORD[32+rbp]
> > > > >
> > > > > +DB      102,65,15,56,223,255
> > > > >
> > > > > +DB      102,68,15,56,223,193
> > > > >
> > > > > +        movdqu  xmm14,XMMWORD[48+rbp]
> > > > >
> > > > > +        movdqu  xmm15,XMMWORD[64+rbp]
> > > > >
> > > > > +DB      102,69,15,56,223,202
> > > > >
> > > > > +        movdqa  xmm10,xmm0
> > > > >
> > > > > +        movdqu  xmm1,XMMWORD[80+rbp]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-112))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm12
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm13
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        movdqa  xmm5,xmm14
> > > > >
> > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        movdqa  xmm6,xmm15
> > > > >
> > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm1
> > > > >
> > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > >
> > > > > +        lea     rsi,[112+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rdx,0x80
> > > > >
> > > > > +        ja      NEAR $L$cbc_dec_loop8
> > > > >
> > > > > +
> > > > >
> > > > > +        movaps  xmm2,xmm9
> > > > >
> > > > > +        lea     rcx,[((-112))+rcx]
> > > > >
> > > > > +        add     rdx,0x70
> > > > >
> > > > > +        jle     NEAR $L$cbc_dec_clear_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,0x60
> > > > >
> > > > > +        ja      NEAR $L$cbc_dec_seven
> > > > >
> > > > > +
> > > > >
> > > > > +        movaps  xmm8,xmm7
> > > > >
> > > > > +        call    _aesni_decrypt6
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movaps  xmm10,xmm8
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm15
> > > > >
> > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        lea     rsi,[80+rsi]
> > > > >
> > > > > +        movdqa  xmm2,xmm7
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_dec_seven:
> > > > >
> > > > > +        movups  xmm8,XMMWORD[96+rdi]
> > > > >
> > > > > +        xorps   xmm9,xmm9
> > > > >
> > > > > +        call    _aesni_decrypt8
> > > > >
> > > > > +        movups  xmm9,XMMWORD[80+rdi]
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movups  xmm10,XMMWORD[96+rdi]
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm15
> > > > >
> > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        pxor    xmm8,xmm9
> > > > >
> > > > > +        movdqu  XMMWORD[80+rsi],xmm7
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +        lea     rsi,[96+rsi]
> > > > >
> > > > > +        movdqa  xmm2,xmm8
> > > > >
> > > > > +        pxor    xmm8,xmm8
> > > > >
> > > > > +        pxor    xmm9,xmm9
> > > > >
> > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$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[32+rdi]
> > > > >
> > > > > +        movdqa  xmm12,xmm3
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        movdqa  xmm13,xmm4
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > >
> > > > > +        movdqa  xmm14,xmm5
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > > >
> > > > > +        movdqa  xmm15,xmm6
> > > > >
> > > > > +$L$cbc_dec_loop6_enter:
> > > > >
> > > > > +        lea     rdi,[96+rdi]
> > > > >
> > > > > +        movdqa  xmm8,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _aesni_decrypt6
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        mov     rcx,rbp
> > > > >
> > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm15
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        lea     rsi,[80+rsi]
> > > > >
> > > > > +        sub     rdx,0x60
> > > > >
> > > > > +        ja      NEAR $L$cbc_dec_loop6
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm7
> > > > >
> > > > > +        add     rdx,0x50
> > > > >
> > > > > +        jle     NEAR $L$cbc_dec_clear_tail_collected
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm7
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$cbc_dec_tail:
> > > > >
> > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        sub     rdx,0x10
> > > > >
> > > > > +        jbe     NEAR $L$cbc_dec_one
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        movaps  xmm11,xmm2
> > > > >
> > > > > +        sub     rdx,0x10
> > > > >
> > > > > +        jbe     NEAR $L$cbc_dec_two
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        movaps  xmm12,xmm3
> > > > >
> > > > > +        sub     rdx,0x10
> > > > >
> > > > > +        jbe     NEAR $L$cbc_dec_three
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        movaps  xmm13,xmm4
> > > > >
> > > > > +        sub     rdx,0x10
> > > > >
> > > > > +        jbe     NEAR $L$cbc_dec_four
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm6,XMMWORD[64+rdi]
> > > > >
> > > > > +        movaps  xmm14,xmm5
> > > > >
> > > > > +        movaps  xmm15,xmm6
> > > > >
> > > > > +        xorps   xmm7,xmm7
> > > > >
> > > > > +        call    _aesni_decrypt6
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movaps  xmm10,xmm15
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        lea     rsi,[64+rsi]
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +        sub     rdx,0x10
> > > > >
> > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_dec_one:
> > > > >
> > > > > +        movaps  xmm11,xmm2
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_dec1_17:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > >
> > > > > +        lea     rcx,[16+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$oop_dec1_17
> > > > >
> > > > > +DB      102,15,56,223,209
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movaps  xmm10,xmm11
> > > > >
> > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_dec_two:
> > > > >
> > > > > +        movaps  xmm12,xmm3
> > > > >
> > > > > +        call    _aesni_decrypt2
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movaps  xmm10,xmm12
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_dec_three:
> > > > >
> > > > > +        movaps  xmm13,xmm4
> > > > >
> > > > > +        call    _aesni_decrypt3
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movaps  xmm10,xmm13
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        movdqa  xmm2,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        lea     rsi,[32+rsi]
> > > > >
> > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_dec_four:
> > > > >
> > > > > +        movaps  xmm14,xmm5
> > > > >
> > > > > +        call    _aesni_decrypt4
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movaps  xmm10,xmm14
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        movdqa  xmm2,xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        lea     rsi,[48+rsi]
> > > > >
> > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_dec_clear_tail_collected:
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +$L$cbc_dec_tail_collected:
> > > > >
> > > > > +        movups  XMMWORD[r8],xmm10
> > > > >
> > > > > +        and     rdx,15
> > > > >
> > > > > +        jnz     NEAR $L$cbc_dec_tail_partial
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        jmp     NEAR $L$cbc_dec_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_dec_tail_partial:
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        mov     rcx,16
> > > > >
> > > > > +        mov     rdi,rsi
> > > > >
> > > > > +        sub     rcx,rdx
> > > > >
> > > > > +        lea     rsi,[rsp]
> > > > >
> > > > > +        DD      0x9066A4F3
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +$L$cbc_dec_ret:
> > > > >
> > > > > +        xorps   xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[16+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[32+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[48+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[64+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[80+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[96+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[112+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[128+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[128+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[144+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[144+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[160+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[160+rsp],xmm0
> > > > >
> > > > > +        mov     rbp,QWORD[((-8))+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[r11]
> > > > >
> > > > > +
> > > > >
> > > > > +$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:
> > > > >
> > > > > +global  aesni_set_decrypt_key
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +aesni_set_decrypt_key:
> > > > >
> > > > > +
> > > > >
> > > > > +DB      0x48,0x83,0xEC,0x08
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __aesni_set_encrypt_key
> > > > >
> > > > > +        shl     edx,4
> > > > >
> > > > > +        test    eax,eax
> > > > >
> > > > > +        jnz     NEAR $L$dec_key_ret
> > > > >
> > > > > +        lea     rcx,[16+rdx*1+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        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[r8]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > >
> > > > > +DB      102,15,56,219,192
> > > > >
> > > > > +DB      102,15,56,219,201
> > > > >
> > > > > +        lea     r8,[16+r8]
> > > > >
> > > > > +        lea     rcx,[((-16))+rcx]
> > > > >
> > > > > +        movups  XMMWORD[16+rcx],xmm0
> > > > >
> > > > > +        movups  XMMWORD[(-16)+r8],xmm1
> > > > >
> > > > > +        cmp     rcx,r8
> > > > >
> > > > > +        ja      NEAR $L$dec_key_inverse
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[r8]
> > > > >
> > > > > +DB      102,15,56,219,192
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        movups  XMMWORD[rcx],xmm0
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +$L$dec_key_ret:
> > > > >
> > > > > +        add     rsp,8
> > > > >
> > > > > +
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_set_decrypt_key:
> > > > >
> > > > > +
> > > > >
> > > > > +global  aesni_set_encrypt_key
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +aesni_set_encrypt_key:
> > > > >
> > > > > +__aesni_set_encrypt_key:
> > > > >
> > > > > +
> > > > >
> > > > > +DB      0x48,0x83,0xEC,0x08
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,-1
> > > > >
> > > > > +        test    rcx,rcx
> > > > >
> > > > > +        jz      NEAR $L$enc_key_ret
> > > > >
> > > > > +        test    r8,r8
> > > > >
> > > > > +        jz      NEAR $L$enc_key_ret
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,268437504
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        xorps   xmm4,xmm4
> > > > >
> > > > > +        and     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
> > > > >
> > > > > +        lea     rax,[16+r8]
> > > > >
> > > > > +        cmp     edx,256
> > > > >
> > > > > +        je      NEAR $L$14rounds
> > > > >
> > > > > +        cmp     edx,192
> > > > >
> > > > > +        je      NEAR $L$12rounds
> > > > >
> > > > > +        cmp     edx,128
> > > > >
> > > > > +        jne     NEAR $L$bad_keybits
> > > > >
> > > > > +
> > > > >
> > > > > +$L$10rounds:
> > > > >
> > > > > +        mov     edx,9
> > > > >
> > > > > +        cmp     r10d,268435456
> > > > >
> > > > > +        je      NEAR $L$10rounds_alt
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  XMMWORD[r8],xmm0
> > > > >
> > > > > +DB      102,15,58,223,200,1
> > > > >
> > > > > +        call    $L$key_expansion_128_cold
> > > > >
> > > > > +DB      102,15,58,223,200,2
> > > > >
> > > > > +        call    $L$key_expansion_128
> > > > >
> > > > > +DB      102,15,58,223,200,4
> > > > >
> > > > > +        call    $L$key_expansion_128
> > > > >
> > > > > +DB      102,15,58,223,200,8
> > > > >
> > > > > +        call    $L$key_expansion_128
> > > > >
> > > > > +DB      102,15,58,223,200,16
> > > > >
> > > > > +        call    $L$key_expansion_128
> > > > >
> > > > > +DB      102,15,58,223,200,32
> > > > >
> > > > > +        call    $L$key_expansion_128
> > > > >
> > > > > +DB      102,15,58,223,200,64
> > > > >
> > > > > +        call    $L$key_expansion_128
> > > > >
> > > > > +DB      102,15,58,223,200,128
> > > > >
> > > > > +        call    $L$key_expansion_128
> > > > >
> > > > > +DB      102,15,58,223,200,27
> > > > >
> > > > > +        call    $L$key_expansion_128
> > > > >
> > > > > +DB      102,15,58,223,200,54
> > > > >
> > > > > +        call    $L$key_expansion_128
> > > > >
> > > > > +        movups  XMMWORD[rax],xmm0
> > > > >
> > > > > +        mov     DWORD[80+rax],edx
> > > > >
> > > > > +        xor     eax,eax
> > > > >
> > > > > +        jmp     NEAR $L$enc_key_ret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$10rounds_alt:
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[$L$key_rotate]
> > > > >
> > > > > +        mov     r10d,8
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqu  XMMWORD[r8],xmm0
> > > > >
> > > > > +        jmp     NEAR $L$oop_key128
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$oop_key128:
> > > > >
> > > > > +DB      102,15,56,0,197
> > > > >
> > > > > +DB      102,15,56,221,196
> > > > >
> > > > > +        pslld   xmm4,1
> > > > >
> > > > > +        lea     rax,[16+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm3,xmm2
> > > > >
> > > > > +        pslldq  xmm2,4
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +        pslldq  xmm2,4
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +        pslldq  xmm2,4
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqu  XMMWORD[(-16)+rax],xmm0
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        dec     r10d
> > > > >
> > > > > +        jnz     NEAR $L$oop_key128
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1b]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,0,197
> > > > >
> > > > > +DB      102,15,56,221,196
> > > > >
> > > > > +        pslld   xmm4,1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm3,xmm2
> > > > >
> > > > > +        pslldq  xmm2,4
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +        pslldq  xmm2,4
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +        pslldq  xmm2,4
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqu  XMMWORD[rax],xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      102,15,56,0,197
> > > > >
> > > > > +DB      102,15,56,221,196
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm3,xmm2
> > > > >
> > > > > +        pslldq  xmm2,4
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +        pslldq  xmm2,4
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +        pslldq  xmm2,4
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqu  XMMWORD[16+rax],xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[96+rax],edx
> > > > >
> > > > > +        xor     eax,eax
> > > > >
> > > > > +        jmp     NEAR $L$enc_key_ret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$12rounds:
> > > > >
> > > > > +        movq    xmm2,QWORD[16+rcx]
> > > > >
> > > > > +        mov     edx,11
> > > > >
> > > > > +        cmp     r10d,268435456
> > > > >
> > > > > +        je      NEAR $L$12rounds_alt
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  XMMWORD[r8],xmm0
> > > > >
> > > > > +DB      102,15,58,223,202,1
> > > > >
> > > > > +        call    $L$key_expansion_192a_cold
> > > > >
> > > > > +DB      102,15,58,223,202,2
> > > > >
> > > > > +        call    $L$key_expansion_192b
> > > > >
> > > > > +DB      102,15,58,223,202,4
> > > > >
> > > > > +        call    $L$key_expansion_192a
> > > > >
> > > > > +DB      102,15,58,223,202,8
> > > > >
> > > > > +        call    $L$key_expansion_192b
> > > > >
> > > > > +DB      102,15,58,223,202,16
> > > > >
> > > > > +        call    $L$key_expansion_192a
> > > > >
> > > > > +DB      102,15,58,223,202,32
> > > > >
> > > > > +        call    $L$key_expansion_192b
> > > > >
> > > > > +DB      102,15,58,223,202,64
> > > > >
> > > > > +        call    $L$key_expansion_192a
> > > > >
> > > > > +DB      102,15,58,223,202,128
> > > > >
> > > > > +        call    $L$key_expansion_192b
> > > > >
> > > > > +        movups  XMMWORD[rax],xmm0
> > > > >
> > > > > +        mov     DWORD[48+rax],edx
> > > > >
> > > > > +        xor     rax,rax
> > > > >
> > > > > +        jmp     NEAR $L$enc_key_ret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$12rounds_alt:
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[$L$key_rotate192]
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> > > > >
> > > > > +        mov     r10d,8
> > > > >
> > > > > +        movdqu  XMMWORD[r8],xmm0
> > > > >
> > > > > +        jmp     NEAR $L$oop_key192
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$oop_key192:
> > > > >
> > > > > +        movq    QWORD[rax],xmm2
> > > > >
> > > > > +        movdqa  xmm1,xmm2
> > > > >
> > > > > +DB      102,15,56,0,213
> > > > >
> > > > > +DB      102,15,56,221,212
> > > > >
> > > > > +        pslld   xmm4,1
> > > > >
> > > > > +        lea     rax,[24+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,4
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,4
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,4
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm3,xmm0,0xff
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +        pslldq  xmm1,4
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +        movdqu  XMMWORD[(-16)+rax],xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        dec     r10d
> > > > >
> > > > > +        jnz     NEAR $L$oop_key192
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[32+rax],edx
> > > > >
> > > > > +        xor     eax,eax
> > > > >
> > > > > +        jmp     NEAR $L$enc_key_ret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$14rounds:
> > > > >
> > > > > +        movups  xmm2,XMMWORD[16+rcx]
> > > > >
> > > > > +        mov     edx,13
> > > > >
> > > > > +        lea     rax,[16+rax]
> > > > >
> > > > > +        cmp     r10d,268435456
> > > > >
> > > > > +        je      NEAR $L$14rounds_alt
> > > > >
> > > > > +
> > > > >
> > > > > +        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
> > > > >
> > > > > +        call    $L$key_expansion_256b
> > > > >
> > > > > +DB      102,15,58,223,202,2
> > > > >
> > > > > +        call    $L$key_expansion_256a
> > > > >
> > > > > +DB      102,15,58,223,200,2
> > > > >
> > > > > +        call    $L$key_expansion_256b
> > > > >
> > > > > +DB      102,15,58,223,202,4
> > > > >
> > > > > +        call    $L$key_expansion_256a
> > > > >
> > > > > +DB      102,15,58,223,200,4
> > > > >
> > > > > +        call    $L$key_expansion_256b
> > > > >
> > > > > +DB      102,15,58,223,202,8
> > > > >
> > > > > +        call    $L$key_expansion_256a
> > > > >
> > > > > +DB      102,15,58,223,200,8
> > > > >
> > > > > +        call    $L$key_expansion_256b
> > > > >
> > > > > +DB      102,15,58,223,202,16
> > > > >
> > > > > +        call    $L$key_expansion_256a
> > > > >
> > > > > +DB      102,15,58,223,200,16
> > > > >
> > > > > +        call    $L$key_expansion_256b
> > > > >
> > > > > +DB      102,15,58,223,202,32
> > > > >
> > > > > +        call    $L$key_expansion_256a
> > > > >
> > > > > +DB      102,15,58,223,200,32
> > > > >
> > > > > +        call    $L$key_expansion_256b
> > > > >
> > > > > +DB      102,15,58,223,202,64
> > > > >
> > > > > +        call    $L$key_expansion_256a
> > > > >
> > > > > +        movups  XMMWORD[rax],xmm0
> > > > >
> > > > > +        mov     DWORD[16+rax],edx
> > > > >
> > > > > +        xor     rax,rax
> > > > >
> > > > > +        jmp     NEAR $L$enc_key_ret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$14rounds_alt:
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[$L$key_rotate]
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> > > > >
> > > > > +        mov     r10d,7
> > > > >
> > > > > +        movdqu  XMMWORD[r8],xmm0
> > > > >
> > > > > +        movdqa  xmm1,xmm2
> > > > >
> > > > > +        movdqu  XMMWORD[16+r8],xmm2
> > > > >
> > > > > +        jmp     NEAR $L$oop_key256
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$oop_key256:
> > > > >
> > > > > +DB      102,15,56,0,213
> > > > >
> > > > > +DB      102,15,56,221,212
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,4
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,4
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,4
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pslld   xmm4,1
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqu  XMMWORD[rax],xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        dec     r10d
> > > > >
> > > > > +        jz      NEAR $L$done_key256
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm2,xmm0,0xff
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +DB      102,15,56,221,211
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm3,xmm1
> > > > >
> > > > > +        pslldq  xmm1,4
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +        pslldq  xmm1,4
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +        pslldq  xmm1,4
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm2,xmm1
> > > > >
> > > > > +        movdqu  XMMWORD[16+rax],xmm2
> > > > >
> > > > > +        lea     rax,[32+rax]
> > > > >
> > > > > +        movdqa  xmm1,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$oop_key256
> > > > >
> > > > > +
> > > > >
> > > > > +$L$done_key256:
> > > > >
> > > > > +        mov     DWORD[16+rax],edx
> > > > >
> > > > > +        xor     eax,eax
> > > > >
> > > > > +        jmp     NEAR $L$enc_key_ret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$bad_keybits:
> > > > >
> > > > > +        mov     rax,-2
> > > > >
> > > > > +$L$enc_key_ret:
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        add     rsp,8
> > > > >
> > > > > +
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +$L$SEH_end_set_encrypt_key:
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$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
> > > > >
> > > > > +        xorps   xmm0,xmm4
> > > > >
> > > > > +        shufps  xmm1,xmm1,255
> > > > >
> > > > > +        xorps   xmm0,xmm1
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$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:
> > > > >
> > > > > +        shufps  xmm4,xmm0,16
> > > > >
> > > > > +        movdqa  xmm3,xmm2
> > > > >
> > > > > +        xorps   xmm0,xmm4
> > > > >
> > > > > +        shufps  xmm4,xmm0,140
> > > > >
> > > > > +        pslldq  xmm3,4
> > > > >
> > > > > +        xorps   xmm0,xmm4
> > > > >
> > > > > +        pshufd  xmm1,xmm1,85
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pshufd  xmm3,xmm0,255
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$key_expansion_192b:
> > > > >
> > > > > +        movaps  xmm3,xmm0
> > > > >
> > > > > +        shufps  xmm5,xmm0,68
> > > > >
> > > > > +        movups  XMMWORD[rax],xmm5
> > > > >
> > > > > +        shufps  xmm3,xmm2,78
> > > > >
> > > > > +        movups  XMMWORD[16+rax],xmm3
> > > > >
> > > > > +        lea     rax,[32+rax]
> > > > >
> > > > > +        jmp     NEAR $L$key_expansion_192b_warm
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$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
> > > > >
> > > > > +        xorps   xmm0,xmm4
> > > > >
> > > > > +        shufps  xmm1,xmm1,255
> > > > >
> > > > > +        xorps   xmm0,xmm1
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$key_expansion_256b:
> > > > >
> > > > > +        movups  XMMWORD[rax],xmm0
> > > > >
> > > > > +        lea     rax,[16+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        shufps  xmm4,xmm2,16
> > > > >
> > > > > +        xorps   xmm2,xmm4
> > > > >
> > > > > +        shufps  xmm4,xmm2,140
> > > > >
> > > > > +        xorps   xmm2,xmm4
> > > > >
> > > > > +        shufps  xmm1,xmm1,170
> > > > >
> > > > > +        xorps   xmm2,xmm1
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +$L$bswap_mask:
> > > > >
> > > > > +DB      15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
> > > > >
> > > > > +$L$increment32:
> > > > >
> > > > > +        DD      6,6,6,0
> > > > >
> > > > > +$L$increment64:
> > > > >
> > > > > +        DD      1,0,0,0
> > > > >
> > > > > +$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
> > > > >
> > > > > +$L$key_rotate:
> > > > >
> > > > > +        DD      0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
> > > > >
> > > > > +$L$key_rotate192:
> > > > >
> > > > > +        DD      0x04070605,0x04070605,0x04070605,0x04070605
> > > > >
> > > > > +$L$key_rcon1:
> > > > >
> > > > > +        DD      1,1,1,1
> > > > >
> > > > > +$L$key_rcon1b:
> > > > >
> > > > > +        DD      0x1b,0x1b,0x1b,0x1b
> > > > >
> > > > > +
> > > > >
> > > > > +DB      65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
> > > > >
> > > > > +DB      83,45,78,73,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   64
> > > > >
> > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +ecb_ccm64_se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,8
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +        lea     rax,[88+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +ctr_xts_se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[208+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((-168))+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,20
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbp,QWORD[((-8))+rax]
> > > > >
> > > > > +        mov     QWORD[160+r8],rbp
> > > > >
> > > > > +        jmp     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +ocb_se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[8+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$ocb_no_xmm
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,20
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +        lea     rax,[((160+40))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ocb_no_xmm:
> > > > >
> > > > > +        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     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +cbc_se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$cbc_decrypt_bulk]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$cbc_decrypt_body]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$cbc_ret]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[16+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,20
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[208+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbp,QWORD[((-8))+rax]
> > > > >
> > > > > +        mov     QWORD[160+r8],rbp
> > > > >
> > > > > +
> > > > >
> > > > > +$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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +section .pdata rdata align=4
> > > > >
> > > > > +ALIGN   4
> > > > >
> > > > > +        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      $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      $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      $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      $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      $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_ocb_encrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_aesni_ocb_encrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_ocb_enc wrt ..imagebase
> > > > >
> > > > > +
> > > > >
> > > > > +        DD      $L$SEH_begin_aesni_ocb_decrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_aesni_ocb_decrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_ocb_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      aesni_set_decrypt_key wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_set_decrypt_key wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_key wrt ..imagebase
> > > > >
> > > > > +
> > > > >
> > > > > +        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:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      ecb_ccm64_se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret
> > > wrt ..imagebase
> > > > >
> > > > > +$L$SEH_info_ccm64_enc:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      ecb_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      ecb_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      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      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      ctr_xts_se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue
> > > > > wrt ..imagebase
> > > > >
> > > > > +$L$SEH_info_ocb_enc:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      ocb_se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$ocb_enc_body wrt ..imagebase,$L$ocb_enc_epilogue
> > > > > wrt ..imagebase
> > > > >
> > > > > +        DD      $L$ocb_enc_pop wrt ..imagebase
> > > > >
> > > > > +        DD      0
> > > > >
> > > > > +$L$SEH_info_ocb_dec:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      ocb_se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$ocb_dec_body wrt ..imagebase,$L$ocb_dec_epilogue
> > > > > wrt ..imagebase
> > > > >
> > > > > +        DD      $L$ocb_dec_pop wrt ..imagebase
> > > > >
> > > > > +        DD      0
> > > > >
> > > > > +$L$SEH_info_cbc:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      cbc_se_handler wrt ..imagebase
> > > > >
> > > > > +$L$SEH_info_key:
> > > > >
> > > > > +DB      0x01,0x04,0x01,0x00
> > > > >
> > > > > +DB      0x04,0x02,0x00,0x00
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-
> > > x86_64.nasm
> > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..1c911fa294
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
> > > > > @@ -0,0 +1,1173 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/aes/asm/vpaes-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_vpaes_encrypt_core:
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r9,rdx
> > > > >
> > > > > +        mov     r11,16
> > > > >
> > > > > +        mov     eax,DWORD[240+rdx]
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[$L$k_ipt]
> > > > >
> > > > > +        pandn   xmm1,xmm0
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[r9]
> > > > >
> > > > > +        psrld   xmm1,4
> > > > >
> > > > > +        pand    xmm0,xmm9
> > > > >
> > > > > +DB      102,15,56,0,208
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[(($L$k_ipt+16))]
> > > > >
> > > > > +DB      102,15,56,0,193
> > > > >
> > > > > +        pxor    xmm2,xmm5
> > > > >
> > > > > +        add     r9,16
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        lea     r10,[$L$k_mc_backward]
> > > > >
> > > > > +        jmp     NEAR $L$enc_entry
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$enc_loop:
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm13
> > > > >
> > > > > +        movdqa  xmm0,xmm12
> > > > >
> > > > > +DB      102,15,56,0,226
> > > > >
> > > > > +DB      102,15,56,0,195
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        movdqa  xmm5,xmm15
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((-64))+r10*1+r11]
> > > > >
> > > > > +DB      102,15,56,0,234
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[r10*1+r11]
> > > > >
> > > > > +        movdqa  xmm2,xmm14
> > > > >
> > > > > +DB      102,15,56,0,211
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm2,xmm5
> > > > >
> > > > > +DB      102,15,56,0,193
> > > > >
> > > > > +        add     r9,16
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +DB      102,15,56,0,220
> > > > >
> > > > > +        add     r11,16
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +DB      102,15,56,0,193
> > > > >
> > > > > +        and     r11,0x30
> > > > >
> > > > > +        sub     rax,1
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +$L$enc_entry:
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        movdqa  xmm5,xmm11
> > > > >
> > > > > +        pandn   xmm1,xmm0
> > > > >
> > > > > +        psrld   xmm1,4
> > > > >
> > > > > +        pand    xmm0,xmm9
> > > > >
> > > > > +DB      102,15,56,0,232
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +DB      102,15,56,0,217
> > > > >
> > > > > +        movdqa  xmm4,xmm10
> > > > >
> > > > > +        pxor    xmm3,xmm5
> > > > >
> > > > > +DB      102,15,56,0,224
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +DB      102,15,56,0,211
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +        pxor    xmm2,xmm0
> > > > >
> > > > > +DB      102,15,56,0,220
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[r9]
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +        jnz     NEAR $L$enc_loop
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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[64+r10*1+r11]
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +DB      102,15,56,0,193
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_vpaes_decrypt_core:
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r9,rdx
> > > > >
> > > > > +        mov     eax,DWORD[240+rdx]
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[$L$k_dipt]
> > > > >
> > > > > +        pandn   xmm1,xmm0
> > > > >
> > > > > +        mov     r11,rax
> > > > >
> > > > > +        psrld   xmm1,4
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[r9]
> > > > >
> > > > > +        shl     r11,4
> > > > >
> > > > > +        pand    xmm0,xmm9
> > > > >
> > > > > +DB      102,15,56,0,208
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[(($L$k_dipt+16))]
> > > > >
> > > > > +        xor     r11,0x30
> > > > >
> > > > > +        lea     r10,[$L$k_dsbd]
> > > > >
> > > > > +DB      102,15,56,0,193
> > > > >
> > > > > +        and     r11,0x30
> > > > >
> > > > > +        pxor    xmm2,xmm5
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[(($L$k_mc_forward+48))]
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        add     r9,16
> > > > >
> > > > > +        add     r11,r10
> > > > >
> > > > > +        jmp     NEAR $L$dec_entry
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$dec_loop:
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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[r10]
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        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[32+r10]
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        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[64+r10]
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[80+r10]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,0,226
> > > > >
> > > > > +DB      102,15,56,0,197
> > > > >
> > > > > +DB      102,15,56,0,203
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        add     r9,16
> > > > >
> > > > > +DB      102,15,58,15,237,12
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        sub     rax,1
> > > > >
> > > > > +
> > > > >
> > > > > +$L$dec_entry:
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pandn   xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +        psrld   xmm1,4
> > > > >
> > > > > +        pand    xmm0,xmm9
> > > > >
> > > > > +DB      102,15,56,0,208
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +DB      102,15,56,0,217
> > > > >
> > > > > +        movdqa  xmm4,xmm10
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +DB      102,15,56,0,224
> > > > >
> > > > > +        pxor    xmm4,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +DB      102,15,56,0,211
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +        pxor    xmm2,xmm0
> > > > >
> > > > > +DB      102,15,56,0,220
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[r9]
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +        jnz     NEAR $L$dec_loop
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[96+r10]
> > > > >
> > > > > +DB      102,15,56,0,226
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        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
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_vpaes_schedule_core:
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _vpaes_preheat
> > > > >
> > > > > +        movdqa  xmm8,XMMWORD[$L$k_rcon]
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        lea     r11,[$L$k_ipt]
> > > > >
> > > > > +        call    _vpaes_schedule_transform
> > > > >
> > > > > +        movdqa  xmm7,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$k_sr]
> > > > >
> > > > > +        test    rcx,rcx
> > > > >
> > > > > +        jnz     NEAR $L$schedule_am_decrypting
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  XMMWORD[rdx],xmm0
> > > > >
> > > > > +        jmp     NEAR $L$schedule_go
> > > > >
> > > > > +
> > > > >
> > > > > +$L$schedule_am_decrypting:
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> > > > >
> > > > > +DB      102,15,56,0,217
> > > > >
> > > > > +        movdqu  XMMWORD[rdx],xmm3
> > > > >
> > > > > +        xor     r8,0x30
> > > > >
> > > > > +
> > > > >
> > > > > +$L$schedule_go:
> > > > >
> > > > > +        cmp     esi,192
> > > > >
> > > > > +        ja      NEAR $L$schedule_256
> > > > >
> > > > > +        je      NEAR $L$schedule_192
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +$L$schedule_128:
> > > > >
> > > > > +        mov     esi,10
> > > > >
> > > > > +
> > > > >
> > > > > +$L$oop_schedule_128:
> > > > >
> > > > > +        call    _vpaes_schedule_round
> > > > >
> > > > > +        dec     rsi
> > > > >
> > > > > +        jz      NEAR $L$schedule_mangle_last
> > > > >
> > > > > +        call    _vpaes_schedule_mangle
> > > > >
> > > > > +        jmp     NEAR $L$oop_schedule_128
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$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:
> > > > >
> > > > > +        call    _vpaes_schedule_round
> > > > >
> > > > > +DB      102,15,58,15,198,8
> > > > >
> > > > > +        call    _vpaes_schedule_mangle
> > > > >
> > > > > +        call    _vpaes_schedule_192_smear
> > > > >
> > > > > +        call    _vpaes_schedule_mangle
> > > > >
> > > > > +        call    _vpaes_schedule_round
> > > > >
> > > > > +        dec     rsi
> > > > >
> > > > > +        jz      NEAR $L$schedule_mangle_last
> > > > >
> > > > > +        call    _vpaes_schedule_mangle
> > > > >
> > > > > +        call    _vpaes_schedule_192_smear
> > > > >
> > > > > +        jmp     NEAR $L$oop_schedule_192
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$schedule_256:
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[16+rdi]
> > > > >
> > > > > +        call    _vpaes_schedule_transform
> > > > >
> > > > > +        mov     esi,7
> > > > >
> > > > > +
> > > > >
> > > > > +$L$oop_schedule_256:
> > > > >
> > > > > +        call    _vpaes_schedule_mangle
> > > > >
> > > > > +        movdqa  xmm6,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _vpaes_schedule_round
> > > > >
> > > > > +        dec     rsi
> > > > >
> > > > > +        jz      NEAR $L$schedule_mangle_last
> > > > >
> > > > > +        call    _vpaes_schedule_mangle
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0xFF
> > > > >
> > > > > +        movdqa  xmm5,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        call    _vpaes_schedule_low_round
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$oop_schedule_256
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$schedule_mangle_last:
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r11,[$L$k_deskew]
> > > > >
> > > > > +        test    rcx,rcx
> > > > >
> > > > > +        jnz     NEAR $L$schedule_mangle_last_dec
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> > > > >
> > > > > +DB      102,15,56,0,193
> > > > >
> > > > > +        lea     r11,[$L$k_opt]
> > > > >
> > > > > +        add     rdx,32
> > > > >
> > > > > +
> > > > >
> > > > > +$L$schedule_mangle_last_dec:
> > > > >
> > > > > +        add     rdx,-16
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[$L$k_s63]
> > > > >
> > > > > +        call    _vpaes_schedule_transform
> > > > >
> > > > > +        movdqu  XMMWORD[rdx],xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_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
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_vpaes_schedule_round:
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +DB      102,65,15,58,15,200,15
> > > > >
> > > > > +DB      102,69,15,58,15,192,15
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0xFF
> > > > >
> > > > > +DB      102,15,58,15,192,1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +_vpaes_schedule_low_round:
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm7
> > > > >
> > > > > +        pslldq  xmm7,4
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        movdqa  xmm1,xmm7
> > > > >
> > > > > +        pslldq  xmm7,8
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm7,XMMWORD[$L$k_s63]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pandn   xmm1,xmm0
> > > > >
> > > > > +        psrld   xmm1,4
> > > > >
> > > > > +        pand    xmm0,xmm9
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +DB      102,15,56,0,208
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +DB      102,15,56,0,217
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm10
> > > > >
> > > > > +DB      102,15,56,0,224
> > > > >
> > > > > +        pxor    xmm4,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +DB      102,15,56,0,211
> > > > >
> > > > > +        pxor    xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +DB      102,15,56,0,220
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +        movdqa  xmm4,xmm13
> > > > >
> > > > > +DB      102,15,56,0,226
> > > > >
> > > > > +        movdqa  xmm0,xmm12
> > > > >
> > > > > +DB      102,15,56,0,195
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm0
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_vpaes_schedule_transform:
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pandn   xmm1,xmm0
> > > > >
> > > > > +        psrld   xmm1,4
> > > > >
> > > > > +        pand    xmm0,xmm9
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[r11]
> > > > >
> > > > > +DB      102,15,56,0,208
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[16+r11]
> > > > >
> > > > > +DB      102,15,56,0,193
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_vpaes_schedule_mangle:
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[$L$k_mc_forward]
> > > > >
> > > > > +        test    rcx,rcx
> > > > >
> > > > > +        jnz     NEAR $L$schedule_mangle_dec
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        add     rdx,16
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[$L$k_s63]
> > > > >
> > > > > +DB      102,15,56,0,229
> > > > >
> > > > > +        movdqa  xmm3,xmm4
> > > > >
> > > > > +DB      102,15,56,0,229
> > > > >
> > > > > +        pxor    xmm3,xmm4
> > > > >
> > > > > +DB      102,15,56,0,229
> > > > >
> > > > > +        pxor    xmm3,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$schedule_mangle_both
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$schedule_mangle_dec:
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r11,[$L$k_dksd]
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pandn   xmm1,xmm4
> > > > >
> > > > > +        psrld   xmm1,4
> > > > >
> > > > > +        pand    xmm4,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[r11]
> > > > >
> > > > > +DB      102,15,56,0,212
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[16+r11]
> > > > >
> > > > > +DB      102,15,56,0,217
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +DB      102,15,56,0,221
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[32+r11]
> > > > >
> > > > > +DB      102,15,56,0,212
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[48+r11]
> > > > >
> > > > > +DB      102,15,56,0,217
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +DB      102,15,56,0,221
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[64+r11]
> > > > >
> > > > > +DB      102,15,56,0,212
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[80+r11]
> > > > >
> > > > > +DB      102,15,56,0,217
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +DB      102,15,56,0,221
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[96+r11]
> > > > >
> > > > > +DB      102,15,56,0,212
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[112+r11]
> > > > >
> > > > > +DB      102,15,56,0,217
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        add     rdx,-16
> > > > >
> > > > > +
> > > > >
> > > > > +$L$schedule_mangle_both:
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> > > > >
> > > > > +DB      102,15,56,0,217
> > > > >
> > > > > +        add     r8,-16
> > > > >
> > > > > +        and     r8,0x30
> > > > >
> > > > > +        movdqu  XMMWORD[rdx],xmm3
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  vpaes_set_encrypt_key
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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[240+rdx],eax
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,0
> > > > >
> > > > > +        mov     r8d,0x30
> > > > >
> > > > > +        call    _vpaes_schedule_core
> > > > >
> > > > > +        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[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_vpaes_set_encrypt_key:
> > > > >
> > > > > +
> > > > >
> > > > > +global  vpaes_set_decrypt_key
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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[240+rdx],eax
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        lea     rdx,[16+rax*1+rdx]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,1
> > > > >
> > > > > +        mov     r8d,esi
> > > > >
> > > > > +        shr     r8d,1
> > > > >
> > > > > +        and     r8d,32
> > > > >
> > > > > +        xor     r8d,32
> > > > >
> > > > > +        call    _vpaes_schedule_core
> > > > >
> > > > > +        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[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_vpaes_set_decrypt_key:
> > > > >
> > > > > +
> > > > >
> > > > > +global  vpaes_encrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +vpaes_encrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_vpaes_encrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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[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:
> > > > >
> > > > > +
> > > > >
> > > > > +global  vpaes_decrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +vpaes_decrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_vpaes_decrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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[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:
> > > > >
> > > > > +global  vpaes_cbc_encrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +vpaes_cbc_encrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_vpaes_cbc_encrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        xchg    rdx,rcx
> > > > >
> > > > > +        sub     rcx,16
> > > > >
> > > > > +        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      NEAR $L$cbc_dec_loop
> > > > >
> > > > > +        jmp     NEAR $L$cbc_enc_loop
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_enc_loop:
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > > >
> > > > > +        pxor    xmm0,xmm6
> > > > >
> > > > > +        call    _vpaes_encrypt_core
> > > > >
> > > > > +        movdqa  xmm6,xmm0
> > > > >
> > > > > +        movdqu  XMMWORD[rdi*1+rsi],xmm0
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +        sub     rcx,16
> > > > >
> > > > > +        jnc     NEAR $L$cbc_enc_loop
> > > > >
> > > > > +        jmp     NEAR $L$cbc_done
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_dec_loop:
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > > >
> > > > > +        movdqa  xmm7,xmm0
> > > > >
> > > > > +        call    _vpaes_decrypt_core
> > > > >
> > > > > +        pxor    xmm0,xmm6
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        movdqu  XMMWORD[rdi*1+rsi],xmm0
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +        sub     rcx,16
> > > > >
> > > > > +        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:
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_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
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +_vpaes_consts:
> > > > >
> > > > > +$L$k_inv:
> > > > >
> > > > > +        DQ      0x0E05060F0D080180,0x040703090A0B0C02
> > > > >
> > > > > +        DQ      0x01040A060F0B0780,0x030D0E0C02050809
> > > > >
> > > > > +
> > > > >
> > > > > +$L$k_s0F:
> > > > >
> > > > > +        DQ      0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F
> > > > >
> > > > > +
> > > > >
> > > > > +$L$k_ipt:
> > > > >
> > > > > +        DQ      0xC2B2E8985A2A7000,0xCABAE09052227808
> > > > >
> > > > > +        DQ      0x4C01307D317C4D00,0xCD80B1FCB0FDCC81
> > > > >
> > > > > +
> > > > >
> > > > > +$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      0x0407060500030201,0x0C0F0E0D080B0A09
> > > > >
> > > > > +        DQ      0x080B0A0904070605,0x000302010C0F0E0D
> > > > >
> > > > > +        DQ      0x0C0F0E0D080B0A09,0x0407060500030201
> > > > >
> > > > > +        DQ      0x000302010C0F0E0D,0x080B0A0904070605
> > > > >
> > > > > +
> > > > >
> > > > > +$L$k_mc_backward:
> > > > >
> > > > > +        DQ      0x0605040702010003,0x0E0D0C0F0A09080B
> > > > >
> > > > > +        DQ      0x020100030E0D0C0F,0x0A09080B06050407
> > > > >
> > > > > +        DQ      0x0E0D0C0F0A09080B,0x0605040702010003
> > > > >
> > > > > +        DQ      0x0A09080B06050407,0x020100030E0D0C0F
> > > > >
> > > > > +
> > > > >
> > > > > +$L$k_sr:
> > > > >
> > > > > +        DQ      0x0706050403020100,0x0F0E0D0C0B0A0908
> > > > >
> > > > > +        DQ      0x030E09040F0A0500,0x0B06010C07020D08
> > > > >
> > > > > +        DQ      0x0F060D040B020900,0x070E050C030A0108
> > > > >
> > > > > +        DQ      0x0B0E0104070A0D00,0x0306090C0F020508
> > > > >
> > > > > +
> > > > >
> > > > > +$L$k_rcon:
> > > > >
> > > > > +        DQ      0x1F8391B9AF9DEEB6,0x702A98084D7C7D81
> > > > >
> > > > > +
> > > > >
> > > > > +$L$k_s63:
> > > > >
> > > > > +        DQ      0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B
> > > > >
> > > > > +
> > > > >
> > > > > +$L$k_opt:
> > > > >
> > > > > +        DQ      0xFF9F4929D6B66000,0xF7974121DEBE6808
> > > > >
> > > > > +        DQ      0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0
> > > > >
> > > > > +
> > > > >
> > > > > +$L$k_deskew:
> > > > >
> > > > > +        DQ      0x07E4A34047A4E300,0x1DFEB95A5DBEF91A
> > > > >
> > > > > +        DQ      0x5F36B5DC83EA6900,0x2841C2ABF49D1E77
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +$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      0x0F505B040B545F00,0x154A411E114E451A
> > > > >
> > > > > +        DQ      0x86E383E660056500,0x12771772F491F194
> > > > >
> > > > > +
> > > > >
> > > > > +$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
> > > > >
> > > > > +DB      109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32
> > > > >
> > > > > +DB      85,110,105,118,101,114,115,105,116,121,41,0
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[16+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,20
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +        lea     rax,[184+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +$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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +section .pdata rdata align=4
> > > > >
> > > > > +ALIGN   4
> > > > >
> > > > > +        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      $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      $L$SEH_begin_vpaes_encrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_vpaes_encrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_vpaes_encrypt wrt ..imagebase
> > > > >
> > > > > +
> > > > >
> > > > > +        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      $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
> > > > >
> > > > > +
> > > > >
> > > > > +section .xdata rdata align=8
> > > > >
> > > > > +ALIGN   8
> > > > >
> > > > > +$L$SEH_info_vpaes_set_encrypt_key:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        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      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      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      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      se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt
> > ..imagebase
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
> > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
> > > > > x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..60f283d5fb
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
> x86_64.nasm
> > > > > @@ -0,0 +1,1569 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/modes/asm/ghash-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2010-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +
> > > > >
> > > > > +global  gcm_gmult_4bit
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +gcm_gmult_4bit:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_gcm_gmult_4bit:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsp,280
> > > > >
> > > > > +
> > > > >
> > > > > +$L$gmult_prologue:
> > > > >
> > > > > +
> > > > >
> > > > > +        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[8+rax*1+rsi]
> > > > >
> > > > > +        mov     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        and     bl,0xf0
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        jmp     NEAR $L$oop1
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$oop1:
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        and     rdx,0xf
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        mov     al,BYTE[rcx*1+rdi]
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        xor     r8,QWORD[8+rbx*1+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        xor     r9,QWORD[rbx*1+rsi]
> > > > >
> > > > > +        mov     bl,al
> > > > >
> > > > > +        xor     r9,QWORD[rdx*8+r11]
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        dec     rcx
> > > > >
> > > > > +        js      NEAR $L$break1
> > > > >
> > > > > +
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        and     rdx,0xf
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        and     bl,0xf0
> > > > >
> > > > > +        xor     r9,QWORD[rdx*8+r11]
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        jmp     NEAR $L$oop1
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$break1:
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        and     rdx,0xf
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        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,0xf
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        xor     r8,QWORD[8+rbx*1+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        xor     r9,QWORD[rbx*1+rsi]
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        xor     r9,QWORD[rdx*8+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        bswap   r8
> > > > >
> > > > > +        bswap   r9
> > > > >
> > > > > +        mov     QWORD[8+rdi],r8
> > > > >
> > > > > +        mov     QWORD[rdi],r9
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((280+48))+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbx,QWORD[((-8))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +$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:
> > > > >
> > > > > +global  gcm_ghash_4bit
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +gcm_ghash_4bit:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_gcm_ghash_4bit:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsp,280
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ghash_prologue:
> > > > >
> > > > > +        mov     r14,rdx
> > > > >
> > > > > +        mov     r15,rcx
> > > > >
> > > > > +        sub     rsi,-128
> > > > >
> > > > > +        lea     rbp,[((16+128))+rsp]
> > > > >
> > > > > +        xor     edx,edx
> > > > >
> > > > > +        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[((16+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     rbx,QWORD[((16+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[rsp],dl
> > > > >
> > > > > +        or      rax,r10
> > > > >
> > > > > +        mov     dl,bl
> > > > >
> > > > > +        shr     rbx,4
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        mov     QWORD[rbp],r8
> > > > >
> > > > > +        mov     r8,QWORD[((32+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((0-128))+rbp],rax
> > > > >
> > > > > +        mov     rax,QWORD[((32+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[1+rsp],dl
> > > > >
> > > > > +        or      rbx,r10
> > > > >
> > > > > +        mov     dl,al
> > > > >
> > > > > +        shr     rax,4
> > > > >
> > > > > +        mov     r10,r8
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        mov     QWORD[8+rbp],r9
> > > > >
> > > > > +        mov     r9,QWORD[((48+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((8-128))+rbp],rbx
> > > > >
> > > > > +        mov     rbx,QWORD[((48+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[2+rsp],dl
> > > > >
> > > > > +        or      rax,r10
> > > > >
> > > > > +        mov     dl,bl
> > > > >
> > > > > +        shr     rbx,4
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        mov     QWORD[16+rbp],r8
> > > > >
> > > > > +        mov     r8,QWORD[((64+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((16-128))+rbp],rax
> > > > >
> > > > > +        mov     rax,QWORD[((64+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[3+rsp],dl
> > > > >
> > > > > +        or      rbx,r10
> > > > >
> > > > > +        mov     dl,al
> > > > >
> > > > > +        shr     rax,4
> > > > >
> > > > > +        mov     r10,r8
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        mov     QWORD[24+rbp],r9
> > > > >
> > > > > +        mov     r9,QWORD[((80+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((24-128))+rbp],rbx
> > > > >
> > > > > +        mov     rbx,QWORD[((80+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[4+rsp],dl
> > > > >
> > > > > +        or      rax,r10
> > > > >
> > > > > +        mov     dl,bl
> > > > >
> > > > > +        shr     rbx,4
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        mov     QWORD[32+rbp],r8
> > > > >
> > > > > +        mov     r8,QWORD[((96+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((32-128))+rbp],rax
> > > > >
> > > > > +        mov     rax,QWORD[((96+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[5+rsp],dl
> > > > >
> > > > > +        or      rbx,r10
> > > > >
> > > > > +        mov     dl,al
> > > > >
> > > > > +        shr     rax,4
> > > > >
> > > > > +        mov     r10,r8
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        mov     QWORD[40+rbp],r9
> > > > >
> > > > > +        mov     r9,QWORD[((112+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((40-128))+rbp],rbx
> > > > >
> > > > > +        mov     rbx,QWORD[((112+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[6+rsp],dl
> > > > >
> > > > > +        or      rax,r10
> > > > >
> > > > > +        mov     dl,bl
> > > > >
> > > > > +        shr     rbx,4
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        mov     QWORD[48+rbp],r8
> > > > >
> > > > > +        mov     r8,QWORD[((128+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((48-128))+rbp],rax
> > > > >
> > > > > +        mov     rax,QWORD[((128+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[7+rsp],dl
> > > > >
> > > > > +        or      rbx,r10
> > > > >
> > > > > +        mov     dl,al
> > > > >
> > > > > +        shr     rax,4
> > > > >
> > > > > +        mov     r10,r8
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        mov     QWORD[56+rbp],r9
> > > > >
> > > > > +        mov     r9,QWORD[((144+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((56-128))+rbp],rbx
> > > > >
> > > > > +        mov     rbx,QWORD[((144+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[8+rsp],dl
> > > > >
> > > > > +        or      rax,r10
> > > > >
> > > > > +        mov     dl,bl
> > > > >
> > > > > +        shr     rbx,4
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        mov     QWORD[64+rbp],r8
> > > > >
> > > > > +        mov     r8,QWORD[((160+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((64-128))+rbp],rax
> > > > >
> > > > > +        mov     rax,QWORD[((160+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[9+rsp],dl
> > > > >
> > > > > +        or      rbx,r10
> > > > >
> > > > > +        mov     dl,al
> > > > >
> > > > > +        shr     rax,4
> > > > >
> > > > > +        mov     r10,r8
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        mov     QWORD[72+rbp],r9
> > > > >
> > > > > +        mov     r9,QWORD[((176+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((72-128))+rbp],rbx
> > > > >
> > > > > +        mov     rbx,QWORD[((176+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[10+rsp],dl
> > > > >
> > > > > +        or      rax,r10
> > > > >
> > > > > +        mov     dl,bl
> > > > >
> > > > > +        shr     rbx,4
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        mov     QWORD[80+rbp],r8
> > > > >
> > > > > +        mov     r8,QWORD[((192+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((80-128))+rbp],rax
> > > > >
> > > > > +        mov     rax,QWORD[((192+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[11+rsp],dl
> > > > >
> > > > > +        or      rbx,r10
> > > > >
> > > > > +        mov     dl,al
> > > > >
> > > > > +        shr     rax,4
> > > > >
> > > > > +        mov     r10,r8
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        mov     QWORD[88+rbp],r9
> > > > >
> > > > > +        mov     r9,QWORD[((208+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((88-128))+rbp],rbx
> > > > >
> > > > > +        mov     rbx,QWORD[((208+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[12+rsp],dl
> > > > >
> > > > > +        or      rax,r10
> > > > >
> > > > > +        mov     dl,bl
> > > > >
> > > > > +        shr     rbx,4
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        mov     QWORD[96+rbp],r8
> > > > >
> > > > > +        mov     r8,QWORD[((224+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((96-128))+rbp],rax
> > > > >
> > > > > +        mov     rax,QWORD[((224+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[13+rsp],dl
> > > > >
> > > > > +        or      rbx,r10
> > > > >
> > > > > +        mov     dl,al
> > > > >
> > > > > +        shr     rax,4
> > > > >
> > > > > +        mov     r10,r8
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        mov     QWORD[104+rbp],r9
> > > > >
> > > > > +        mov     r9,QWORD[((240+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((104-128))+rbp],rbx
> > > > >
> > > > > +        mov     rbx,QWORD[((240+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[14+rsp],dl
> > > > >
> > > > > +        or      rax,r10
> > > > >
> > > > > +        mov     dl,bl
> > > > >
> > > > > +        shr     rbx,4
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        mov     QWORD[112+rbp],r8
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((112-128))+rbp],rax
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[15+rsp],dl
> > > > >
> > > > > +        or      rbx,r10
> > > > >
> > > > > +        mov     QWORD[120+rbp],r9
> > > > >
> > > > > +        mov     QWORD[((120-128))+rbp],rbx
> > > > >
> > > > > +        add     rsi,-128
> > > > >
> > > > > +        mov     r8,QWORD[8+rdi]
> > > > >
> > > > > +        mov     r9,QWORD[rdi]
> > > > >
> > > > > +        add     r15,r14
> > > > >
> > > > > +        lea     r11,[$L$rem_8bit]
> > > > >
> > > > > +        jmp     NEAR $L$outer_loop
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$outer_loop:
> > > > >
> > > > > +        xor     r9,QWORD[r14]
> > > > >
> > > > > +        mov     rdx,QWORD[8+r14]
> > > > >
> > > > > +        lea     r14,[16+r14]
> > > > >
> > > > > +        xor     rdx,r8
> > > > >
> > > > > +        mov     QWORD[rdi],r9
> > > > >
> > > > > +        mov     QWORD[8+rdi],rdx
> > > > >
> > > > > +        shr     rdx,32
> > > > >
> > > > > +        xor     rax,rax
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        movzx   ebx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        shr     ebx,4
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        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[rbx*1+rsp]
> > > > >
> > > > > +        shr     ecx,4
> > > > >
> > > > > +        xor     r12,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r12,r12b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > >
> > > > > +        movzx   ebx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > >
> > > > > +        shr     ebx,4
> > > > >
> > > > > +        shl     r12,48
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r12
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r13,r13b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > >
> > > > > +        movzx   ecx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > >
> > > > > +        shr     ecx,4
> > > > >
> > > > > +        shl     r13,48
> > > > >
> > > > > +        xor     r12,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r13
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r12,r12b
> > > > >
> > > > > +        mov     edx,DWORD[8+rdi]
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > >
> > > > > +        movzx   ebx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > >
> > > > > +        shr     ebx,4
> > > > >
> > > > > +        shl     r12,48
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r12
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r13,r13b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > >
> > > > > +        movzx   ecx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > >
> > > > > +        shr     ecx,4
> > > > >
> > > > > +        shl     r13,48
> > > > >
> > > > > +        xor     r12,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r13
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r12,r12b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > >
> > > > > +        movzx   ebx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > >
> > > > > +        shr     ebx,4
> > > > >
> > > > > +        shl     r12,48
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r12
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r13,r13b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > >
> > > > > +        movzx   ecx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > >
> > > > > +        shr     ecx,4
> > > > >
> > > > > +        shl     r13,48
> > > > >
> > > > > +        xor     r12,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r13
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r12,r12b
> > > > >
> > > > > +        mov     edx,DWORD[4+rdi]
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > >
> > > > > +        movzx   ebx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > >
> > > > > +        shr     ebx,4
> > > > >
> > > > > +        shl     r12,48
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r12
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r13,r13b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > >
> > > > > +        movzx   ecx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > >
> > > > > +        shr     ecx,4
> > > > >
> > > > > +        shl     r13,48
> > > > >
> > > > > +        xor     r12,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r13
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r12,r12b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > >
> > > > > +        movzx   ebx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > >
> > > > > +        shr     ebx,4
> > > > >
> > > > > +        shl     r12,48
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r12
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r13,r13b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > >
> > > > > +        movzx   ecx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > >
> > > > > +        shr     ecx,4
> > > > >
> > > > > +        shl     r13,48
> > > > >
> > > > > +        xor     r12,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r13
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r12,r12b
> > > > >
> > > > > +        mov     edx,DWORD[rdi]
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > >
> > > > > +        movzx   ebx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > >
> > > > > +        shr     ebx,4
> > > > >
> > > > > +        shl     r12,48
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r12
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r13,r13b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > >
> > > > > +        movzx   ecx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > >
> > > > > +        shr     ecx,4
> > > > >
> > > > > +        shl     r13,48
> > > > >
> > > > > +        xor     r12,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r13
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r12,r12b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > >
> > > > > +        movzx   ebx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > >
> > > > > +        shr     ebx,4
> > > > >
> > > > > +        shl     r12,48
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r12
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r13,r13b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > >
> > > > > +        movzx   ecx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > >
> > > > > +        and     ecx,240
> > > > >
> > > > > +        shl     r13,48
> > > > >
> > > > > +        xor     r12,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r13
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r12,r12b
> > > > >
> > > > > +        mov     edx,DWORD[((-4))+rdi]
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        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
> > > > >
> > > > > +        movzx   r13,r8b
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shl     r13b,4
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        xor     r8,QWORD[8+rcx*1+rsi]
> > > > >
> > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        xor     r9,QWORD[rcx*1+rsi]
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        shl     r13,48
> > > > >
> > > > > +        bswap   r8
> > > > >
> > > > > +        xor     r9,r13
> > > > >
> > > > > +        bswap   r9
> > > > >
> > > > > +        cmp     r14,r15
> > > > >
> > > > > +        jb      NEAR $L$outer_loop
> > > > >
> > > > > +        mov     QWORD[8+rdi],r8
> > > > >
> > > > > +        mov     QWORD[rdi],r9
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((280+48))+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$ghash_epilogue:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_gcm_ghash_4bit:
> > > > >
> > > > > +global  gcm_init_clmul
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +gcm_init_clmul:
> > > > >
> > > > > +
> > > > >
> > > > > +$L$_init_clmul:
> > > > >
> > > > > +$L$SEH_begin_gcm_init_clmul:
> > > > >
> > > > > +
> > > > >
> > > > > +DB      0x48,0x83,0xec,0x18
> > > > >
> > > > > +DB      0x0f,0x29,0x34,0x24
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdx]
> > > > >
> > > > > +        pshufd  xmm2,xmm2,78
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm4,xmm2,255
> > > > >
> > > > > +        movdqa  xmm3,xmm2
> > > > >
> > > > > +        psllq   xmm2,1
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        psrlq   xmm3,63
> > > > >
> > > > > +        pcmpgtd xmm5,xmm4
> > > > >
> > > > > +        pslldq  xmm3,8
> > > > >
> > > > > +        por     xmm2,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        pand    xmm5,XMMWORD[$L$0x1c2_polynomial]
> > > > >
> > > > > +        pxor    xmm2,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm6,xmm2,78
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        pxor    xmm6,xmm2
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        pshufd  xmm3,xmm0,78
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +DB      102,15,58,68,194,0
> > > > >
> > > > > +DB      102,15,58,68,202,17
> > > > >
> > > > > +DB      102,15,58,68,222,0
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm3
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pslldq  xmm4,8
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,5
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psllq   xmm0,57
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,8
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm1,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,5
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pshufd  xmm3,xmm2,78
> > > > >
> > > > > +        pshufd  xmm4,xmm0,78
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +        movdqu  XMMWORD[rcx],xmm2
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        movdqu  XMMWORD[16+rcx],xmm0
> > > > >
> > > > > +DB      102,15,58,15,227,8
> > > > >
> > > > > +        movdqu  XMMWORD[32+rcx],xmm4
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        pshufd  xmm3,xmm0,78
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +DB      102,15,58,68,194,0
> > > > >
> > > > > +DB      102,15,58,68,202,17
> > > > >
> > > > > +DB      102,15,58,68,222,0
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm3
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pslldq  xmm4,8
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,5
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psllq   xmm0,57
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,8
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm1,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,5
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        pshufd  xmm3,xmm0,78
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +DB      102,15,58,68,194,0
> > > > >
> > > > > +DB      102,15,58,68,202,17
> > > > >
> > > > > +DB      102,15,58,68,222,0
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm3
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pslldq  xmm4,8
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,5
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psllq   xmm0,57
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,8
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm1,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,5
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pshufd  xmm3,xmm5,78
> > > > >
> > > > > +        pshufd  xmm4,xmm0,78
> > > > >
> > > > > +        pxor    xmm3,xmm5
> > > > >
> > > > > +        movdqu  XMMWORD[48+rcx],xmm5
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        movdqu  XMMWORD[64+rcx],xmm0
> > > > >
> > > > > +DB      102,15,58,15,227,8
> > > > >
> > > > > +        movdqu  XMMWORD[80+rcx],xmm4
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > >
> > > > > +        lea     rsp,[24+rsp]
> > > > >
> > > > > +$L$SEH_end_gcm_init_clmul:
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  gcm_gmult_clmul
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +DB      102,15,58,68,194,0
> > > > >
> > > > > +DB      102,15,58,68,202,17
> > > > >
> > > > > +DB      102,15,58,68,220,0
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm3
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pslldq  xmm4,8
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,5
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psllq   xmm0,57
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,8
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm1,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,5
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +DB      102,15,56,0,197
> > > > >
> > > > > +        movdqu  XMMWORD[rcx],xmm0
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  gcm_ghash_clmul
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +gcm_ghash_clmul:
> > > > >
> > > > > +
> > > > >
> > > > > +$L$_ghash_clmul:
> > > > >
> > > > > +        lea     rax,[((-136))+rsp]
> > > > >
> > > > > +$L$SEH_begin_gcm_ghash_clmul:
> > > > >
> > > > > +
> > > > >
> > > > > +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[rcx]
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdx]
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[32+rdx]
> > > > >
> > > > > +DB      102,65,15,56,0,194
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     r9,0x10
> > > > >
> > > > > +        jz      NEAR $L$odd_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        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      NEAR $L$skip4x
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     r9,0x30
> > > > >
> > > > > +        mov     rax,0xA040608020C0E000
> > > > >
> > > > > +        movdqu  xmm14,XMMWORD[48+rdx]
> > > > >
> > > > > +        movdqu  xmm15,XMMWORD[64+rdx]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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
> > > > >
> > > > > +        pshufd  xmm4,xmm3,78
> > > > >
> > > > > +        pxor    xmm4,xmm3
> > > > >
> > > > > +DB      102,15,58,68,218,0
> > > > >
> > > > > +DB      102,15,58,68,234,17
> > > > >
> > > > > +DB      102,15,58,68,231,0
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm13,xmm11
> > > > >
> > > > > +        pshufd  xmm12,xmm11,78
> > > > >
> > > > > +        pxor    xmm12,xmm11
> > > > >
> > > > > +DB      102,68,15,58,68,222,0
> > > > >
> > > > > +DB      102,68,15,58,68,238,17
> > > > >
> > > > > +DB      102,68,15,58,68,231,16
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        xorps   xmm5,xmm13
> > > > >
> > > > > +        movups  xmm7,XMMWORD[80+rdx]
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        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
> > > > >
> > > > > +        pshufd  xmm12,xmm11,78
> > > > >
> > > > > +        pxor    xmm0,xmm8
> > > > >
> > > > > +        pxor    xmm12,xmm11
> > > > >
> > > > > +DB      102,69,15,58,68,222,0
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        pshufd  xmm8,xmm0,78
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +DB      102,69,15,58,68,238,17
> > > > >
> > > > > +DB      102,68,15,58,68,231,0
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        xorps   xmm5,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r8,[64+r8]
> > > > >
> > > > > +        sub     r9,0x40
> > > > >
> > > > > +        jc      NEAR $L$tail4x
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$mod4_loop
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$mod4_loop:
> > > > >
> > > > > +DB      102,65,15,58,68,199,0
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +        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[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[32+rdx]
> > > > >
> > > > > +        xorps   xmm8,xmm4
> > > > >
> > > > > +DB      102,68,15,58,68,218,0
> > > > >
> > > > > +        pshufd  xmm4,xmm3,78
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        pxor    xmm8,xmm1
> > > > >
> > > > > +        pxor    xmm4,xmm3
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      102,68,15,58,68,234,17
> > > > >
> > > > > +        pslldq  xmm8,8
> > > > >
> > > > > +        psrldq  xmm9,8
> > > > >
> > > > > +        pxor    xmm0,xmm8
> > > > >
> > > > > +        movdqa  xmm8,XMMWORD[$L$7_mask]
> > > > >
> > > > > +        pxor    xmm1,xmm9
> > > > >
> > > > > +DB      102,76,15,110,200
> > > > >
> > > > > +
> > > > >
> > > > > +        pand    xmm8,xmm0
> > > > >
> > > > > +DB      102,69,15,56,0,200
> > > > >
> > > > > +        pxor    xmm9,xmm0
> > > > >
> > > > > +DB      102,68,15,58,68,231,0
> > > > >
> > > > > +        psllq   xmm9,57
> > > > >
> > > > > +        movdqa  xmm8,xmm9
> > > > >
> > > > > +        pslldq  xmm9,8
> > > > >
> > > > > +DB      102,15,58,68,222,0
> > > > >
> > > > > +        psrldq  xmm8,8
> > > > >
> > > > > +        pxor    xmm0,xmm9
> > > > >
> > > > > +        pxor    xmm1,xmm8
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +DB      102,15,58,68,238,17
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        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[80+rdx]
> > > > >
> > > > > +DB      102,69,15,56,0,194
> > > > >
> > > > > +        pxor    xmm1,xmm9
> > > > >
> > > > > +        pxor    xmm9,xmm0
> > > > >
> > > > > +        psrlq   xmm0,5
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm13,xmm11
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        pshufd  xmm12,xmm11,78
> > > > >
> > > > > +        pxor    xmm0,xmm9
> > > > >
> > > > > +        pxor    xmm1,xmm8
> > > > >
> > > > > +        pxor    xmm12,xmm11
> > > > >
> > > > > +DB      102,69,15,58,68,222,0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      102,69,15,58,68,238,17
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        pshufd  xmm8,xmm0,78
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,68,15,58,68,231,0
> > > > >
> > > > > +        xorps   xmm5,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r8,[64+r8]
> > > > >
> > > > > +        sub     r9,0x40
> > > > >
> > > > > +        jnc     NEAR $L$mod4_loop
> > > > >
> > > > > +
> > > > >
> > > > > +$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
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +        xorps   xmm0,xmm3
> > > > >
> > > > > +        xorps   xmm1,xmm5
> > > > >
> > > > > +        pxor    xmm1,xmm0
> > > > >
> > > > > +        pxor    xmm8,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm8,xmm1
> > > > >
> > > > > +        pxor    xmm1,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +        psrldq  xmm8,8
> > > > >
> > > > > +        pslldq  xmm9,8
> > > > >
> > > > > +        pxor    xmm1,xmm8
> > > > >
> > > > > +        pxor    xmm0,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,5
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psllq   xmm0,57
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,8
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm1,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,5
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        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[r8]
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[16+r8]
> > > > >
> > > > > +DB      102,69,15,56,0,194
> > > > >
> > > > > +DB      102,65,15,56,0,218
> > > > >
> > > > > +        pxor    xmm0,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        pshufd  xmm4,xmm3,78
> > > > >
> > > > > +        pxor    xmm4,xmm3
> > > > >
> > > > > +DB      102,15,58,68,218,0
> > > > >
> > > > > +DB      102,15,58,68,234,17
> > > > >
> > > > > +DB      102,15,58,68,231,0
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r8,[32+r8]
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        sub     r9,0x20
> > > > >
> > > > > +        jbe     NEAR $L$even_tail
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        jmp     NEAR $L$mod_loop
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$mod_loop:
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm8,xmm4
> > > > >
> > > > > +        pshufd  xmm4,xmm0,78
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,58,68,198,0
> > > > >
> > > > > +DB      102,15,58,68,206,17
> > > > >
> > > > > +DB      102,15,58,68,231,16
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm5
> > > > >
> > > > > +        movdqu  xmm9,XMMWORD[r8]
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +DB      102,69,15,56,0,202
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[16+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm8,xmm1
> > > > >
> > > > > +        pxor    xmm1,xmm9
> > > > >
> > > > > +        pxor    xmm4,xmm8
> > > > >
> > > > > +DB      102,65,15,56,0,218
> > > > >
> > > > > +        movdqa  xmm8,xmm4
> > > > >
> > > > > +        psrldq  xmm8,8
> > > > >
> > > > > +        pslldq  xmm4,8
> > > > >
> > > > > +        pxor    xmm1,xmm8
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm0
> > > > >
> > > > > +        movdqa  xmm8,xmm0
> > > > >
> > > > > +        psllq   xmm0,5
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +DB      102,15,58,68,218,0
> > > > >
> > > > > +        psllq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm8
> > > > >
> > > > > +        psllq   xmm0,57
> > > > >
> > > > > +        movdqa  xmm8,xmm0
> > > > >
> > > > > +        pslldq  xmm0,8
> > > > >
> > > > > +        psrldq  xmm8,8
> > > > >
> > > > > +        pxor    xmm0,xmm9
> > > > >
> > > > > +        pshufd  xmm4,xmm5,78
> > > > >
> > > > > +        pxor    xmm1,xmm8
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +DB      102,15,58,68,234,17
> > > > >
> > > > > +        pxor    xmm1,xmm9
> > > > >
> > > > > +        pxor    xmm9,xmm0
> > > > >
> > > > > +        psrlq   xmm0,5
> > > > >
> > > > > +        pxor    xmm0,xmm9
> > > > >
> > > > > +        lea     r8,[32+r8]
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +DB      102,15,58,68,231,0
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     r9,0x20
> > > > >
> > > > > +        ja      NEAR $L$mod_loop
> > > > >
> > > > > +
> > > > >
> > > > > +$L$even_tail:
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm8,xmm4
> > > > >
> > > > > +        pshufd  xmm4,xmm0,78
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,58,68,198,0
> > > > >
> > > > > +DB      102,15,58,68,206,17
> > > > >
> > > > > +DB      102,15,58,68,231,16
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm5
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +        pxor    xmm8,xmm1
> > > > >
> > > > > +        pxor    xmm4,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm4
> > > > >
> > > > > +        psrldq  xmm8,8
> > > > >
> > > > > +        pslldq  xmm4,8
> > > > >
> > > > > +        pxor    xmm1,xmm8
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,5
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psllq   xmm0,57
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,8
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm1,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,5
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        test    r9,r9
> > > > >
> > > > > +        jnz     NEAR $L$done
> > > > >
> > > > > +
> > > > >
> > > > > +$L$odd_tail:
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[r8]
> > > > >
> > > > > +DB      102,69,15,56,0,194
> > > > >
> > > > > +        pxor    xmm0,xmm8
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        pshufd  xmm3,xmm0,78
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +DB      102,15,58,68,194,0
> > > > >
> > > > > +DB      102,15,58,68,202,17
> > > > >
> > > > > +DB      102,15,58,68,223,0
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm3
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pslldq  xmm4,8
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,5
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psllq   xmm0,57
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,8
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm1,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,5
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +$L$done:
> > > > >
> > > > > +DB      102,65,15,56,0,194
> > > > >
> > > > > +        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
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  gcm_init_avx
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +gcm_init_avx:
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$_init_clmul
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  gcm_gmult_avx
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +gcm_gmult_avx:
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$_gmult_clmul
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  gcm_ghash_avx
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +gcm_ghash_avx:
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$_ghash_clmul
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +$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,0xc2
> > > > >
> > > > > +$L$7_mask:
> > > > >
> > > > > +        DD      7,0,7,0
> > > > >
> > > > > +$L$7_mask_poly:
> > > > >
> > > > > +        DD      7,0,450,0
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +
> > > > >
> > > > > +$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
> > 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
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rax,[((48+280))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        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_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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +section .pdata rdata align=4
> > > > >
> > > > > +ALIGN   4
> > > > >
> > > > > +        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      $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      $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      $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:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        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      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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
> > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
> > > > > x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..f3b7b0e35e
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
> x86_64.nasm
> > > > > @@ -0,0 +1,3137 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/sha/asm/sha1-mb-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +
> > > > >
> > > > > +global  sha1_multi_block
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +sha1_multi_block:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_sha1_multi_block:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
> > > > >
> > > > > +        bt      rcx,61
> > > > >
> > > > > +        jc      NEAR _shaext_shortcut
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-168))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > > >
> > > > > +        sub     rsp,288
> > > > >
> > > > > +        and     rsp,-256
> > > > >
> > > > > +        mov     QWORD[272+rsp],rax
> > > > >
> > > > > +
> > > > >
> > > > > +$L$body:
> > > > >
> > > > > +        lea     rbp,[K_XX_XX]
> > > > >
> > > > > +        lea     rbx,[256+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$oop_grande:
> > > > >
> > > > > +        mov     DWORD[280+rsp],edx
> > > > >
> > > > > +        xor     edx,edx
> > > > >
> > > > > +        mov     r8,QWORD[rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[8+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[rbx],ecx
> > > > >
> > > > > +        cmovle  r8,rbp
> > > > >
> > > > > +        mov     r9,QWORD[16+rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[24+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[4+rbx],ecx
> > > > >
> > > > > +        cmovle  r9,rbp
> > > > >
> > > > > +        mov     r10,QWORD[32+rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[40+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[8+rbx],ecx
> > > > >
> > > > > +        cmovle  r10,rbp
> > > > >
> > > > > +        mov     r11,QWORD[48+rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[56+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[12+rbx],ecx
> > > > >
> > > > > +        cmovle  r11,rbp
> > > > >
> > > > > +        test    edx,edx
> > > > >
> > > > > +        jz      NEAR $L$done
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[rdi]
> > > > >
> > > > > +        lea     rax,[128+rsp]
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[32+rdi]
> > > > >
> > > > > +        movdqu  xmm12,XMMWORD[64+rdi]
> > > > >
> > > > > +        movdqu  xmm13,XMMWORD[96+rdi]
> > > > >
> > > > > +        movdqu  xmm14,XMMWORD[128+rdi]
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[96+rbp]
> > > > >
> > > > > +        movdqa  xmm15,XMMWORD[((-32))+rbp]
> > > > >
> > > > > +        jmp     NEAR $L$oop
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$oop:
> > > > >
> > > > > +        movd    xmm0,DWORD[r8]
> > > > >
> > > > > +        lea     r8,[64+r8]
> > > > >
> > > > > +        movd    xmm2,DWORD[r9]
> > > > >
> > > > > +        lea     r9,[64+r9]
> > > > >
> > > > > +        movd    xmm3,DWORD[r10]
> > > > >
> > > > > +        lea     r10,[64+r10]
> > > > >
> > > > > +        movd    xmm4,DWORD[r11]
> > > > >
> > > > > +        lea     r11,[64+r11]
> > > > >
> > > > > +        punpckldq       xmm0,xmm3
> > > > >
> > > > > +        movd    xmm1,DWORD[((-60))+r8]
> > > > >
> > > > > +        punpckldq       xmm2,xmm4
> > > > >
> > > > > +        movd    xmm9,DWORD[((-60))+r9]
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        movd    xmm8,DWORD[((-60))+r10]
> > > > >
> > > > > +DB      102,15,56,0,197
> > > > >
> > > > > +        movd    xmm7,DWORD[((-60))+r11]
> > > > >
> > > > > +        punpckldq       xmm1,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm13
> > > > >
> > > > > +        pand    xmm6,xmm12
> > > > >
> > > > > +        punpckldq       xmm1,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        movd    xmm2,DWORD[((-56))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-56))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +DB      102,15,56,0,205
> > > > >
> > > > > +        movd    xmm8,DWORD[((-56))+r10]
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-56))+r11]
> > > > >
> > > > > +        punpckldq       xmm2,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm12
> > > > >
> > > > > +        pand    xmm6,xmm11
> > > > >
> > > > > +        punpckldq       xmm2,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        movd    xmm3,DWORD[((-52))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-52))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +DB      102,15,56,0,213
> > > > >
> > > > > +        movd    xmm8,DWORD[((-52))+r10]
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-52))+r11]
> > > > >
> > > > > +        punpckldq       xmm3,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm11
> > > > >
> > > > > +        pand    xmm6,xmm10
> > > > >
> > > > > +        punpckldq       xmm3,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        movd    xmm4,DWORD[((-48))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-48))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +DB      102,15,56,0,221
> > > > >
> > > > > +        movd    xmm8,DWORD[((-48))+r10]
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-48))+r11]
> > > > >
> > > > > +        punpckldq       xmm4,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm10
> > > > >
> > > > > +        pand    xmm6,xmm14
> > > > >
> > > > > +        punpckldq       xmm4,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        movd    xmm0,DWORD[((-44))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-44))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +DB      102,15,56,0,229
> > > > >
> > > > > +        movd    xmm8,DWORD[((-44))+r10]
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-44))+r11]
> > > > >
> > > > > +        punpckldq       xmm0,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm14
> > > > >
> > > > > +        pand    xmm6,xmm13
> > > > >
> > > > > +        punpckldq       xmm0,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        movd    xmm1,DWORD[((-40))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-40))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +DB      102,15,56,0,197
> > > > >
> > > > > +        movd    xmm8,DWORD[((-40))+r10]
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-40))+r11]
> > > > >
> > > > > +        punpckldq       xmm1,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm13
> > > > >
> > > > > +        pand    xmm6,xmm12
> > > > >
> > > > > +        punpckldq       xmm1,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        movd    xmm2,DWORD[((-36))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-36))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +DB      102,15,56,0,205
> > > > >
> > > > > +        movd    xmm8,DWORD[((-36))+r10]
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-36))+r11]
> > > > >
> > > > > +        punpckldq       xmm2,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm12
> > > > >
> > > > > +        pand    xmm6,xmm11
> > > > >
> > > > > +        punpckldq       xmm2,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        movd    xmm3,DWORD[((-32))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-32))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +DB      102,15,56,0,213
> > > > >
> > > > > +        movd    xmm8,DWORD[((-32))+r10]
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-32))+r11]
> > > > >
> > > > > +        punpckldq       xmm3,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm11
> > > > >
> > > > > +        pand    xmm6,xmm10
> > > > >
> > > > > +        punpckldq       xmm3,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        movd    xmm4,DWORD[((-28))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-28))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +DB      102,15,56,0,221
> > > > >
> > > > > +        movd    xmm8,DWORD[((-28))+r10]
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-28))+r11]
> > > > >
> > > > > +        punpckldq       xmm4,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm10
> > > > >
> > > > > +        pand    xmm6,xmm14
> > > > >
> > > > > +        punpckldq       xmm4,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        movd    xmm0,DWORD[((-24))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-24))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +DB      102,15,56,0,229
> > > > >
> > > > > +        movd    xmm8,DWORD[((-24))+r10]
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-24))+r11]
> > > > >
> > > > > +        punpckldq       xmm0,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm14
> > > > >
> > > > > +        pand    xmm6,xmm13
> > > > >
> > > > > +        punpckldq       xmm0,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        movd    xmm1,DWORD[((-20))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-20))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +DB      102,15,56,0,197
> > > > >
> > > > > +        movd    xmm8,DWORD[((-20))+r10]
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-20))+r11]
> > > > >
> > > > > +        punpckldq       xmm1,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm13
> > > > >
> > > > > +        pand    xmm6,xmm12
> > > > >
> > > > > +        punpckldq       xmm1,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        movd    xmm2,DWORD[((-16))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-16))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +DB      102,15,56,0,205
> > > > >
> > > > > +        movd    xmm8,DWORD[((-16))+r10]
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-16))+r11]
> > > > >
> > > > > +        punpckldq       xmm2,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm12
> > > > >
> > > > > +        pand    xmm6,xmm11
> > > > >
> > > > > +        punpckldq       xmm2,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        movd    xmm3,DWORD[((-12))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-12))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +DB      102,15,56,0,213
> > > > >
> > > > > +        movd    xmm8,DWORD[((-12))+r10]
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-12))+r11]
> > > > >
> > > > > +        punpckldq       xmm3,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm11
> > > > >
> > > > > +        pand    xmm6,xmm10
> > > > >
> > > > > +        punpckldq       xmm3,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        movd    xmm4,DWORD[((-8))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-8))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +DB      102,15,56,0,221
> > > > >
> > > > > +        movd    xmm8,DWORD[((-8))+r10]
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-8))+r11]
> > > > >
> > > > > +        punpckldq       xmm4,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm10
> > > > >
> > > > > +        pand    xmm6,xmm14
> > > > >
> > > > > +        punpckldq       xmm4,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        movd    xmm0,DWORD[((-4))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-4))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +DB      102,15,56,0,229
> > > > >
> > > > > +        movd    xmm8,DWORD[((-4))+r10]
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +        movd    xmm7,DWORD[((-4))+r11]
> > > > >
> > > > > +        punpckldq       xmm0,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        prefetcht0      [63+r8]
> > > > >
> > > > > +        pandn   xmm7,xmm14
> > > > >
> > > > > +        pand    xmm6,xmm13
> > > > >
> > > > > +        punpckldq       xmm0,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        prefetcht0      [63+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        prefetcht0      [63+r10]
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +DB      102,15,56,0,197
> > > > >
> > > > > +        prefetcht0      [63+r11]
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pandn   xmm7,xmm13
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        pand    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pandn   xmm7,xmm12
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        pand    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pandn   xmm7,xmm11
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        pand    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pandn   xmm7,xmm10
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        pand    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pandn   xmm7,xmm14
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        pand    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        movdqa  xmm15,XMMWORD[rbp]
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        movdqa  xmm15,XMMWORD[32+rbp]
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        pand    xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        pand    xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        pand    xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        pand    xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        pand    xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        pand    xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        pand    xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        pand    xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        pand    xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        pand    xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        pand    xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        pand    xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        pand    xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        pand    xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        pand    xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        pand    xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        pand    xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        pand    xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        pand    xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        pand    xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        movdqa  xmm15,XMMWORD[64+rbp]
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[rbx]
> > > > >
> > > > > +        mov     ecx,1
> > > > >
> > > > > +        cmp     ecx,DWORD[rbx]
> > > > >
> > > > > +        pxor    xmm8,xmm8
> > > > >
> > > > > +        cmovge  r8,rbp
> > > > >
> > > > > +        cmp     ecx,DWORD[4+rbx]
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        cmovge  r9,rbp
> > > > >
> > > > > +        cmp     ecx,DWORD[8+rbx]
> > > > >
> > > > > +        pcmpgtd xmm1,xmm8
> > > > >
> > > > > +        cmovge  r10,rbp
> > > > >
> > > > > +        cmp     ecx,DWORD[12+rbx]
> > > > >
> > > > > +        paddd   xmm0,xmm1
> > > > >
> > > > > +        cmovge  r11,rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[rdi]
> > > > >
> > > > > +        pand    xmm10,xmm1
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[32+rdi]
> > > > >
> > > > > +        pand    xmm11,xmm1
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[64+rdi]
> > > > >
> > > > > +        pand    xmm12,xmm1
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +        movdqu  xmm9,XMMWORD[96+rdi]
> > > > >
> > > > > +        pand    xmm13,xmm1
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[128+rdi]
> > > > >
> > > > > +        pand    xmm14,xmm1
> > > > >
> > > > > +        movdqu  XMMWORD[rdi],xmm10
> > > > >
> > > > > +        paddd   xmm13,xmm9
> > > > >
> > > > > +        movdqu  XMMWORD[32+rdi],xmm11
> > > > >
> > > > > +        paddd   xmm14,xmm5
> > > > >
> > > > > +        movdqu  XMMWORD[64+rdi],xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[96+rdi],xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[128+rdi],xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[rbx],xmm0
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[96+rbp]
> > > > >
> > > > > +        movdqa  xmm15,XMMWORD[((-32))+rbp]
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edx,DWORD[280+rsp]
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +        lea     rsi,[64+rsi]
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop_grande
> > > > >
> > > > > +
> > > > >
> > > > > +$L$done:
> > > > >
> > > > > +        mov     rax,QWORD[272+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > > >
> > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[rax]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$epilogue:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_sha1_multi_block:
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +sha1_multi_block_shaext:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_sha1_multi_block_shaext:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +_shaext_shortcut:
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-168))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > > >
> > > > > +        sub     rsp,288
> > > > >
> > > > > +        shl     edx,1
> > > > >
> > > > > +        and     rsp,-256
> > > > >
> > > > > +        lea     rdi,[64+rdi]
> > > > >
> > > > > +        mov     QWORD[272+rsp],rax
> > > > >
> > > > > +$L$body_shaext:
> > > > >
> > > > > +        lea     rbx,[256+rsp]
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((K_XX_XX+128))]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$oop_grande_shaext:
> > > > >
> > > > > +        mov     DWORD[280+rsp],edx
> > > > >
> > > > > +        xor     edx,edx
> > > > >
> > > > > +        mov     r8,QWORD[rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[8+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[rbx],ecx
> > > > >
> > > > > +        cmovle  r8,rsp
> > > > >
> > > > > +        mov     r9,QWORD[16+rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[24+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[4+rbx],ecx
> > > > >
> > > > > +        cmovle  r9,rsp
> > > > >
> > > > > +        test    edx,edx
> > > > >
> > > > > +        jz      NEAR $L$done_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +        movq    xmm0,QWORD[((0-64))+rdi]
> > > > >
> > > > > +        movq    xmm4,QWORD[((32-64))+rdi]
> > > > >
> > > > > +        movq    xmm5,QWORD[((64-64))+rdi]
> > > > >
> > > > > +        movq    xmm6,QWORD[((96-64))+rdi]
> > > > >
> > > > > +        movq    xmm7,QWORD[((128-64))+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +        punpckldq       xmm0,xmm4
> > > > >
> > > > > +        punpckldq       xmm5,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm0
> > > > >
> > > > > +        punpcklqdq      xmm0,xmm5
> > > > >
> > > > > +        punpckhqdq      xmm8,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm1,xmm7,63
> > > > >
> > > > > +        pshufd  xmm9,xmm7,127
> > > > >
> > > > > +        pshufd  xmm0,xmm0,27
> > > > >
> > > > > +        pshufd  xmm8,xmm8,27
> > > > >
> > > > > +        jmp     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$oop_shaext:
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[r8]
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[r9]
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[16+r8]
> > > > >
> > > > > +        movdqu  xmm12,XMMWORD[16+r9]
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[32+r8]
> > > > >
> > > > > +DB      102,15,56,0,227
> > > > >
> > > > > +        movdqu  xmm13,XMMWORD[32+r9]
> > > > >
> > > > > +DB      102,68,15,56,0,219
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[48+r8]
> > > > >
> > > > > +        lea     r8,[64+r8]
> > > > >
> > > > > +DB      102,15,56,0,235
> > > > >
> > > > > +        movdqu  xmm14,XMMWORD[48+r9]
> > > > >
> > > > > +        lea     r9,[64+r9]
> > > > >
> > > > > +DB      102,68,15,56,0,227
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[80+rsp],xmm1
> > > > >
> > > > > +        paddd   xmm1,xmm4
> > > > >
> > > > > +        movdqa  XMMWORD[112+rsp],xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm11
> > > > >
> > > > > +        movdqa  XMMWORD[64+rsp],xmm0
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  XMMWORD[96+rsp],xmm8
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,0
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +DB      69,15,58,204,193,0
> > > > >
> > > > > +DB      69,15,56,200,212
> > > > >
> > > > > +DB      102,15,56,0,243
> > > > >
> > > > > +        prefetcht0      [127+r8]
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +DB      102,68,15,56,0,235
> > > > >
> > > > > +        prefetcht0      [127+r9]
> > > > >
> > > > > +DB      69,15,56,201,220
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,0,251
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      102,68,15,56,0,243
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,0
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +DB      69,15,58,204,194,0
> > > > >
> > > > > +DB      69,15,56,200,205
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +        pxor    xmm11,xmm13
> > > > >
> > > > > +DB      69,15,56,201,229
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,0
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +DB      69,15,58,204,193,0
> > > > >
> > > > > +DB      69,15,56,200,214
> > > > >
> > > > > +DB      15,56,202,231
> > > > >
> > > > > +DB      69,15,56,202,222
> > > > >
> > > > > +        pxor    xmm5,xmm7
> > > > >
> > > > > +DB      15,56,201,247
> > > > >
> > > > > +        pxor    xmm12,xmm14
> > > > >
> > > > > +DB      69,15,56,201,238
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,0
> > > > >
> > > > > +DB      15,56,200,204
> > > > >
> > > > > +DB      69,15,58,204,194,0
> > > > >
> > > > > +DB      69,15,56,200,203
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +DB      69,15,56,202,227
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,252
> > > > >
> > > > > +        pxor    xmm13,xmm11
> > > > >
> > > > > +DB      69,15,56,201,243
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,0
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +DB      69,15,58,204,193,0
> > > > >
> > > > > +DB      69,15,56,200,212
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +DB      69,15,56,202,236
> > > > >
> > > > > +        pxor    xmm7,xmm5
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        pxor    xmm14,xmm12
> > > > >
> > > > > +DB      69,15,56,201,220
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,1
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +DB      69,15,58,204,194,1
> > > > >
> > > > > +DB      69,15,56,200,205
> > > > >
> > > > > +DB      15,56,202,254
> > > > >
> > > > > +DB      69,15,56,202,245
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +        pxor    xmm11,xmm13
> > > > >
> > > > > +DB      69,15,56,201,229
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,1
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +DB      69,15,58,204,193,1
> > > > >
> > > > > +DB      69,15,56,200,214
> > > > >
> > > > > +DB      15,56,202,231
> > > > >
> > > > > +DB      69,15,56,202,222
> > > > >
> > > > > +        pxor    xmm5,xmm7
> > > > >
> > > > > +DB      15,56,201,247
> > > > >
> > > > > +        pxor    xmm12,xmm14
> > > > >
> > > > > +DB      69,15,56,201,238
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,1
> > > > >
> > > > > +DB      15,56,200,204
> > > > >
> > > > > +DB      69,15,58,204,194,1
> > > > >
> > > > > +DB      69,15,56,200,203
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +DB      69,15,56,202,227
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,252
> > > > >
> > > > > +        pxor    xmm13,xmm11
> > > > >
> > > > > +DB      69,15,56,201,243
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,1
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +DB      69,15,58,204,193,1
> > > > >
> > > > > +DB      69,15,56,200,212
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +DB      69,15,56,202,236
> > > > >
> > > > > +        pxor    xmm7,xmm5
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        pxor    xmm14,xmm12
> > > > >
> > > > > +DB      69,15,56,201,220
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,1
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +DB      69,15,58,204,194,1
> > > > >
> > > > > +DB      69,15,56,200,205
> > > > >
> > > > > +DB      15,56,202,254
> > > > >
> > > > > +DB      69,15,56,202,245
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +        pxor    xmm11,xmm13
> > > > >
> > > > > +DB      69,15,56,201,229
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,2
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +DB      69,15,58,204,193,2
> > > > >
> > > > > +DB      69,15,56,200,214
> > > > >
> > > > > +DB      15,56,202,231
> > > > >
> > > > > +DB      69,15,56,202,222
> > > > >
> > > > > +        pxor    xmm5,xmm7
> > > > >
> > > > > +DB      15,56,201,247
> > > > >
> > > > > +        pxor    xmm12,xmm14
> > > > >
> > > > > +DB      69,15,56,201,238
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,2
> > > > >
> > > > > +DB      15,56,200,204
> > > > >
> > > > > +DB      69,15,58,204,194,2
> > > > >
> > > > > +DB      69,15,56,200,203
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +DB      69,15,56,202,227
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,252
> > > > >
> > > > > +        pxor    xmm13,xmm11
> > > > >
> > > > > +DB      69,15,56,201,243
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,2
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +DB      69,15,58,204,193,2
> > > > >
> > > > > +DB      69,15,56,200,212
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +DB      69,15,56,202,236
> > > > >
> > > > > +        pxor    xmm7,xmm5
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        pxor    xmm14,xmm12
> > > > >
> > > > > +DB      69,15,56,201,220
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,2
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +DB      69,15,58,204,194,2
> > > > >
> > > > > +DB      69,15,56,200,205
> > > > >
> > > > > +DB      15,56,202,254
> > > > >
> > > > > +DB      69,15,56,202,245
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +        pxor    xmm11,xmm13
> > > > >
> > > > > +DB      69,15,56,201,229
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,2
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +DB      69,15,58,204,193,2
> > > > >
> > > > > +DB      69,15,56,200,214
> > > > >
> > > > > +DB      15,56,202,231
> > > > >
> > > > > +DB      69,15,56,202,222
> > > > >
> > > > > +        pxor    xmm5,xmm7
> > > > >
> > > > > +DB      15,56,201,247
> > > > >
> > > > > +        pxor    xmm12,xmm14
> > > > >
> > > > > +DB      69,15,56,201,238
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,3
> > > > >
> > > > > +DB      15,56,200,204
> > > > >
> > > > > +DB      69,15,58,204,194,3
> > > > >
> > > > > +DB      69,15,56,200,203
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +DB      69,15,56,202,227
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,252
> > > > >
> > > > > +        pxor    xmm13,xmm11
> > > > >
> > > > > +DB      69,15,56,201,243
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,3
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +DB      69,15,58,204,193,3
> > > > >
> > > > > +DB      69,15,56,200,212
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +DB      69,15,56,202,236
> > > > >
> > > > > +        pxor    xmm7,xmm5
> > > > >
> > > > > +        pxor    xmm14,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,1
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        cmp     ecx,DWORD[rbx]
> > > > >
> > > > > +        cmovge  r8,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,3
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +DB      69,15,58,204,194,3
> > > > >
> > > > > +DB      69,15,56,200,205
> > > > >
> > > > > +DB      15,56,202,254
> > > > >
> > > > > +DB      69,15,56,202,245
> > > > >
> > > > > +
> > > > >
> > > > > +        cmp     ecx,DWORD[4+rbx]
> > > > >
> > > > > +        cmovge  r9,rsp
> > > > >
> > > > > +        movq    xmm6,QWORD[rbx]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,3
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +DB      69,15,58,204,193,3
> > > > >
> > > > > +DB      69,15,56,200,214
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm11,xmm6,0x00
> > > > >
> > > > > +        pshufd  xmm12,xmm6,0x55
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        pcmpgtd xmm11,xmm4
> > > > >
> > > > > +        pcmpgtd xmm12,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,3
> > > > >
> > > > > +DB      15,56,200,204
> > > > >
> > > > > +DB      69,15,58,204,194,3
> > > > >
> > > > > +DB      68,15,56,200,204
> > > > >
> > > > > +
> > > > >
> > > > > +        pcmpgtd xmm7,xmm4
> > > > >
> > > > > +        pand    xmm0,xmm11
> > > > >
> > > > > +        pand    xmm1,xmm11
> > > > >
> > > > > +        pand    xmm8,xmm12
> > > > >
> > > > > +        pand    xmm9,xmm12
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm0,XMMWORD[64+rsp]
> > > > >
> > > > > +        paddd   xmm1,XMMWORD[80+rsp]
> > > > >
> > > > > +        paddd   xmm8,XMMWORD[96+rsp]
> > > > >
> > > > > +        paddd   xmm9,XMMWORD[112+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        movq    QWORD[rbx],xmm6
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edx,DWORD[280+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm0,xmm0,27
> > > > >
> > > > > +        pshufd  xmm8,xmm8,27
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm0
> > > > >
> > > > > +        punpckldq       xmm0,xmm8
> > > > >
> > > > > +        punpckhdq       xmm6,xmm8
> > > > >
> > > > > +        punpckhdq       xmm1,xmm9
> > > > >
> > > > > +        movq    QWORD[(0-64)+rdi],xmm0
> > > > >
> > > > > +        psrldq  xmm0,8
> > > > >
> > > > > +        movq    QWORD[(64-64)+rdi],xmm6
> > > > >
> > > > > +        psrldq  xmm6,8
> > > > >
> > > > > +        movq    QWORD[(32-64)+rdi],xmm0
> > > > >
> > > > > +        psrldq  xmm1,8
> > > > >
> > > > > +        movq    QWORD[(96-64)+rdi],xmm6
> > > > >
> > > > > +        movq    QWORD[(128-64)+rdi],xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rdi,[8+rdi]
> > > > >
> > > > > +        lea     rsi,[32+rsi]
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop_grande_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +$L$done_shaext:
> > > > >
> > > > > +
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > > >
> > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[rax]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$epilogue_shaext:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_sha1_multi_block_shaext:
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   256
> > > > >
> > > > > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > > > >
> > > > > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > > > >
> > > > > +K_XX_XX:
> > > > >
> > > > > +        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,109,117,108,116,105,45,98,108,111,99,107
> > > > >
> > > > > +DB      32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120
> > > > >
> > > > > +DB      56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77
> > > > >
> > > > > +DB      83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110
> > > > >
> > > > > +DB      115,115,108,46,111,114,103,62,0
> > > > >
> > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[272+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > >
> > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > >
> > > > > +        mov     QWORD[144+r8],rbx
> > > > >
> > > > > +        mov     QWORD[160+r8],rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((-24-160))+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,20
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +$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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +section .pdata rdata align=4
> > > > >
> > > > > +ALIGN   4
> > > > >
> > > > > +        DD      $L$SEH_begin_sha1_multi_block wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_sha1_multi_block wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_sha1_multi_block wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_begin_sha1_multi_block_shaext wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_sha1_multi_block_shaext wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_sha1_multi_block_shaext wrt ..imagebase
> > > > >
> > > > > +section .xdata rdata align=8
> > > > >
> > > > > +ALIGN   8
> > > > >
> > > > > +$L$SEH_info_sha1_multi_block:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
> > > > >
> > > > > +$L$SEH_info_sha1_multi_block_shaext:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
> > > > > wrt ..imagebase
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-
> > x86_64.nasm
> > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..c6d68d348f
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> > > > > @@ -0,0 +1,2884 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/sha/asm/sha1-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2006-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +
> > > > >
> > > > > +global  sha1_block_data_order
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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      NEAR $L$ialu
> > > > >
> > > > > +        test    r10d,536870912
> > > > >
> > > > > +        jnz     NEAR _shaext_shortcut
> > > > >
> > > > > +        jmp     NEAR _ssse3_shortcut
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ialu:
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r8,rdi
> > > > >
> > > > > +        sub     rsp,72
> > > > >
> > > > > +        mov     r9,rsi
> > > > >
> > > > > +        and     rsp,-64
> > > > >
> > > > > +        mov     r10,rdx
> > > > >
> > > > > +        mov     QWORD[64+rsp],rax
> > > > >
> > > > > +
> > > > >
> > > > > +$L$prologue:
> > > > >
> > > > > +
> > > > >
> > > > > +        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[r9]
> > > > >
> > > > > +        bswap   edx
> > > > >
> > > > > +        mov     ebp,DWORD[4+r9]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[rsp],edx
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        bswap   ebp
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,edi
> > > > >
> > > > > +        lea     r13d,[1518500249+r13*1+rdx]
> > > > >
> > > > > +        add     r13d,ecx
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     edi,30
> > > > >
> > > > > +        add     r13d,eax
> > > > >
> > > > > +        mov     r14d,DWORD[8+r9]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[4+rsp],ebp
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        bswap   r14d
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,esi
> > > > >
> > > > > +        lea     r12d,[1518500249+r12*1+rbp]
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     esi,30
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        mov     edx,DWORD[12+r9]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[8+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        bswap   edx
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,r13d
> > > > >
> > > > > +        lea     r11d,[1518500249+r11*1+r14]
> > > > >
> > > > > +        add     r11d,ecx
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     r13d,30
> > > > >
> > > > > +        add     r11d,eax
> > > > >
> > > > > +        mov     ebp,DWORD[16+r9]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[12+rsp],edx
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        bswap   ebp
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,r12d
> > > > >
> > > > > +        lea     edi,[1518500249+rdi*1+rdx]
> > > > >
> > > > > +        add     edi,ecx
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     r12d,30
> > > > >
> > > > > +        add     edi,eax
> > > > >
> > > > > +        mov     r14d,DWORD[20+r9]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[16+rsp],ebp
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        bswap   r14d
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,r11d
> > > > >
> > > > > +        lea     esi,[1518500249+rsi*1+rbp]
> > > > >
> > > > > +        add     esi,ecx
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     r11d,30
> > > > >
> > > > > +        add     esi,eax
> > > > >
> > > > > +        mov     edx,DWORD[24+r9]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[20+rsp],r14d
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        bswap   edx
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,edi
> > > > >
> > > > > +        lea     r13d,[1518500249+r13*1+r14]
> > > > >
> > > > > +        add     r13d,ecx
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     edi,30
> > > > >
> > > > > +        add     r13d,eax
> > > > >
> > > > > +        mov     ebp,DWORD[28+r9]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[24+rsp],edx
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        bswap   ebp
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,esi
> > > > >
> > > > > +        lea     r12d,[1518500249+r12*1+rdx]
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     esi,30
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        mov     r14d,DWORD[32+r9]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[28+rsp],ebp
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        bswap   r14d
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,r13d
> > > > >
> > > > > +        lea     r11d,[1518500249+r11*1+rbp]
> > > > >
> > > > > +        add     r11d,ecx
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     r13d,30
> > > > >
> > > > > +        add     r11d,eax
> > > > >
> > > > > +        mov     edx,DWORD[36+r9]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[32+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        bswap   edx
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,r12d
> > > > >
> > > > > +        lea     edi,[1518500249+rdi*1+r14]
> > > > >
> > > > > +        add     edi,ecx
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     r12d,30
> > > > >
> > > > > +        add     edi,eax
> > > > >
> > > > > +        mov     ebp,DWORD[40+r9]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[36+rsp],edx
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        bswap   ebp
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,r11d
> > > > >
> > > > > +        lea     esi,[1518500249+rsi*1+rdx]
> > > > >
> > > > > +        add     esi,ecx
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     r11d,30
> > > > >
> > > > > +        add     esi,eax
> > > > >
> > > > > +        mov     r14d,DWORD[44+r9]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[40+rsp],ebp
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        bswap   r14d
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,edi
> > > > >
> > > > > +        lea     r13d,[1518500249+r13*1+rbp]
> > > > >
> > > > > +        add     r13d,ecx
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     edi,30
> > > > >
> > > > > +        add     r13d,eax
> > > > >
> > > > > +        mov     edx,DWORD[48+r9]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[44+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        bswap   edx
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,esi
> > > > >
> > > > > +        lea     r12d,[1518500249+r12*1+r14]
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     esi,30
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        mov     ebp,DWORD[52+r9]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[48+rsp],edx
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        bswap   ebp
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,r13d
> > > > >
> > > > > +        lea     r11d,[1518500249+r11*1+rdx]
> > > > >
> > > > > +        add     r11d,ecx
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     r13d,30
> > > > >
> > > > > +        add     r11d,eax
> > > > >
> > > > > +        mov     r14d,DWORD[56+r9]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[52+rsp],ebp
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        bswap   r14d
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,r12d
> > > > >
> > > > > +        lea     edi,[1518500249+rdi*1+rbp]
> > > > >
> > > > > +        add     edi,ecx
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     r12d,30
> > > > >
> > > > > +        add     edi,eax
> > > > >
> > > > > +        mov     edx,DWORD[60+r9]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[56+rsp],r14d
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        bswap   edx
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,r11d
> > > > >
> > > > > +        lea     esi,[1518500249+rsi*1+r14]
> > > > >
> > > > > +        add     esi,ecx
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     r11d,30
> > > > >
> > > > > +        add     esi,eax
> > > > >
> > > > > +        xor     ebp,DWORD[rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[60+rsp],edx
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     ebp,DWORD[8+rsp]
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        xor     ebp,DWORD[32+rsp]
> > > > >
> > > > > +        and     eax,edi
> > > > >
> > > > > +        lea     r13d,[1518500249+r13*1+rdx]
> > > > >
> > > > > +        rol     edi,30
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        add     r13d,ecx
> > > > >
> > > > > +        rol     ebp,1
> > > > >
> > > > > +        add     r13d,eax
> > > > >
> > > > > +        xor     r14d,DWORD[4+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[rsp],ebp
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     r14d,DWORD[12+rsp]
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        xor     r14d,DWORD[36+rsp]
> > > > >
> > > > > +        and     eax,esi
> > > > >
> > > > > +        lea     r12d,[1518500249+r12*1+rbp]
> > > > >
> > > > > +        rol     esi,30
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        rol     r14d,1
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        xor     edx,DWORD[8+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[4+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     edx,DWORD[16+rsp]
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        xor     edx,DWORD[40+rsp]
> > > > >
> > > > > +        and     eax,r13d
> > > > >
> > > > > +        lea     r11d,[1518500249+r11*1+r14]
> > > > >
> > > > > +        rol     r13d,30
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        add     r11d,ecx
> > > > >
> > > > > +        rol     edx,1
> > > > >
> > > > > +        add     r11d,eax
> > > > >
> > > > > +        xor     ebp,DWORD[12+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[8+rsp],edx
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     ebp,DWORD[20+rsp]
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        xor     ebp,DWORD[44+rsp]
> > > > >
> > > > > +        and     eax,r12d
> > > > >
> > > > > +        lea     edi,[1518500249+rdi*1+rdx]
> > > > >
> > > > > +        rol     r12d,30
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        add     edi,ecx
> > > > >
> > > > > +        rol     ebp,1
> > > > >
> > > > > +        add     edi,eax
> > > > >
> > > > > +        xor     r14d,DWORD[16+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[12+rsp],ebp
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     r14d,DWORD[24+rsp]
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        xor     r14d,DWORD[48+rsp]
> > > > >
> > > > > +        and     eax,r11d
> > > > >
> > > > > +        lea     esi,[1518500249+rsi*1+rbp]
> > > > >
> > > > > +        rol     r11d,30
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        add     esi,ecx
> > > > >
> > > > > +        rol     r14d,1
> > > > >
> > > > > +        add     esi,eax
> > > > >
> > > > > +        xor     edx,DWORD[20+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[16+rsp],r14d
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     edx,DWORD[28+rsp]
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[24+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[20+rsp],edx
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     ebp,DWORD[32+rsp]
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[28+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[24+rsp],ebp
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     r14d,DWORD[36+rsp]
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[32+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[28+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     edx,DWORD[40+rsp]
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[36+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[32+rsp],edx
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     ebp,DWORD[44+rsp]
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[40+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[36+rsp],ebp
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     r14d,DWORD[48+rsp]
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[44+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[40+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     edx,DWORD[52+rsp]
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[48+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[44+rsp],edx
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     ebp,DWORD[56+rsp]
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[52+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[48+rsp],ebp
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     r14d,DWORD[60+rsp]
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[56+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[52+rsp],r14d
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     edx,DWORD[rsp]
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[60+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[56+rsp],edx
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     ebp,DWORD[4+rsp]
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[60+rsp],ebp
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     r14d,DWORD[8+rsp]
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[4+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[rsp],r14d
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     edx,DWORD[12+rsp]
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[8+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[4+rsp],edx
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     ebp,DWORD[16+rsp]
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[12+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[8+rsp],ebp
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     r14d,DWORD[20+rsp]
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[16+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[12+rsp],r14d
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     edx,DWORD[24+rsp]
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[20+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[16+rsp],edx
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     ebp,DWORD[28+rsp]
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[24+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[20+rsp],ebp
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     r14d,DWORD[32+rsp]
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[28+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[24+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     edx,DWORD[36+rsp]
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[32+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[28+rsp],edx
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     ebp,DWORD[40+rsp]
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[36+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[32+rsp],ebp
> > > > >
> > > > > +        mov     ebx,r12d
> > > > >
> > > > > +        xor     r14d,DWORD[44+rsp]
> > > > >
> > > > > +        and     eax,r11d
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     r14d,DWORD[4+rsp]
> > > > >
> > > > > +        lea     r13d,[((-1894007588))+r13*1+rbp]
> > > > >
> > > > > +        xor     ebx,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r13d,eax
> > > > >
> > > > > +        rol     r14d,1
> > > > >
> > > > > +        and     ebx,edi
> > > > >
> > > > > +        add     r13d,ecx
> > > > >
> > > > > +        rol     edi,30
> > > > >
> > > > > +        add     r13d,ebx
> > > > >
> > > > > +        xor     edx,DWORD[40+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[36+rsp],r14d
> > > > >
> > > > > +        mov     ebx,r11d
> > > > >
> > > > > +        xor     edx,DWORD[48+rsp]
> > > > >
> > > > > +        and     eax,edi
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     edx,DWORD[8+rsp]
> > > > >
> > > > > +        lea     r12d,[((-1894007588))+r12*1+r14]
> > > > >
> > > > > +        xor     ebx,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        rol     edx,1
> > > > >
> > > > > +        and     ebx,esi
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        rol     esi,30
> > > > >
> > > > > +        add     r12d,ebx
> > > > >
> > > > > +        xor     ebp,DWORD[44+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[40+rsp],edx
> > > > >
> > > > > +        mov     ebx,edi
> > > > >
> > > > > +        xor     ebp,DWORD[52+rsp]
> > > > >
> > > > > +        and     eax,esi
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     ebp,DWORD[12+rsp]
> > > > >
> > > > > +        lea     r11d,[((-1894007588))+r11*1+rdx]
> > > > >
> > > > > +        xor     ebx,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r11d,eax
> > > > >
> > > > > +        rol     ebp,1
> > > > >
> > > > > +        and     ebx,r13d
> > > > >
> > > > > +        add     r11d,ecx
> > > > >
> > > > > +        rol     r13d,30
> > > > >
> > > > > +        add     r11d,ebx
> > > > >
> > > > > +        xor     r14d,DWORD[48+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[44+rsp],ebp
> > > > >
> > > > > +        mov     ebx,esi
> > > > >
> > > > > +        xor     r14d,DWORD[56+rsp]
> > > > >
> > > > > +        and     eax,r13d
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     r14d,DWORD[16+rsp]
> > > > >
> > > > > +        lea     edi,[((-1894007588))+rdi*1+rbp]
> > > > >
> > > > > +        xor     ebx,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     edi,eax
> > > > >
> > > > > +        rol     r14d,1
> > > > >
> > > > > +        and     ebx,r12d
> > > > >
> > > > > +        add     edi,ecx
> > > > >
> > > > > +        rol     r12d,30
> > > > >
> > > > > +        add     edi,ebx
> > > > >
> > > > > +        xor     edx,DWORD[52+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[48+rsp],r14d
> > > > >
> > > > > +        mov     ebx,r13d
> > > > >
> > > > > +        xor     edx,DWORD[60+rsp]
> > > > >
> > > > > +        and     eax,r12d
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     edx,DWORD[20+rsp]
> > > > >
> > > > > +        lea     esi,[((-1894007588))+rsi*1+r14]
> > > > >
> > > > > +        xor     ebx,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     esi,eax
> > > > >
> > > > > +        rol     edx,1
> > > > >
> > > > > +        and     ebx,r11d
> > > > >
> > > > > +        add     esi,ecx
> > > > >
> > > > > +        rol     r11d,30
> > > > >
> > > > > +        add     esi,ebx
> > > > >
> > > > > +        xor     ebp,DWORD[56+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[52+rsp],edx
> > > > >
> > > > > +        mov     ebx,r12d
> > > > >
> > > > > +        xor     ebp,DWORD[rsp]
> > > > >
> > > > > +        and     eax,r11d
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     ebp,DWORD[24+rsp]
> > > > >
> > > > > +        lea     r13d,[((-1894007588))+r13*1+rdx]
> > > > >
> > > > > +        xor     ebx,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r13d,eax
> > > > >
> > > > > +        rol     ebp,1
> > > > >
> > > > > +        and     ebx,edi
> > > > >
> > > > > +        add     r13d,ecx
> > > > >
> > > > > +        rol     edi,30
> > > > >
> > > > > +        add     r13d,ebx
> > > > >
> > > > > +        xor     r14d,DWORD[60+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[56+rsp],ebp
> > > > >
> > > > > +        mov     ebx,r11d
> > > > >
> > > > > +        xor     r14d,DWORD[4+rsp]
> > > > >
> > > > > +        and     eax,edi
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     r14d,DWORD[28+rsp]
> > > > >
> > > > > +        lea     r12d,[((-1894007588))+r12*1+rbp]
> > > > >
> > > > > +        xor     ebx,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        rol     r14d,1
> > > > >
> > > > > +        and     ebx,esi
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        rol     esi,30
> > > > >
> > > > > +        add     r12d,ebx
> > > > >
> > > > > +        xor     edx,DWORD[rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[60+rsp],r14d
> > > > >
> > > > > +        mov     ebx,edi
> > > > >
> > > > > +        xor     edx,DWORD[8+rsp]
> > > > >
> > > > > +        and     eax,esi
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     edx,DWORD[32+rsp]
> > > > >
> > > > > +        lea     r11d,[((-1894007588))+r11*1+r14]
> > > > >
> > > > > +        xor     ebx,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r11d,eax
> > > > >
> > > > > +        rol     edx,1
> > > > >
> > > > > +        and     ebx,r13d
> > > > >
> > > > > +        add     r11d,ecx
> > > > >
> > > > > +        rol     r13d,30
> > > > >
> > > > > +        add     r11d,ebx
> > > > >
> > > > > +        xor     ebp,DWORD[4+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[rsp],edx
> > > > >
> > > > > +        mov     ebx,esi
> > > > >
> > > > > +        xor     ebp,DWORD[12+rsp]
> > > > >
> > > > > +        and     eax,r13d
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     ebp,DWORD[36+rsp]
> > > > >
> > > > > +        lea     edi,[((-1894007588))+rdi*1+rdx]
> > > > >
> > > > > +        xor     ebx,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     edi,eax
> > > > >
> > > > > +        rol     ebp,1
> > > > >
> > > > > +        and     ebx,r12d
> > > > >
> > > > > +        add     edi,ecx
> > > > >
> > > > > +        rol     r12d,30
> > > > >
> > > > > +        add     edi,ebx
> > > > >
> > > > > +        xor     r14d,DWORD[8+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[4+rsp],ebp
> > > > >
> > > > > +        mov     ebx,r13d
> > > > >
> > > > > +        xor     r14d,DWORD[16+rsp]
> > > > >
> > > > > +        and     eax,r12d
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     r14d,DWORD[40+rsp]
> > > > >
> > > > > +        lea     esi,[((-1894007588))+rsi*1+rbp]
> > > > >
> > > > > +        xor     ebx,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     esi,eax
> > > > >
> > > > > +        rol     r14d,1
> > > > >
> > > > > +        and     ebx,r11d
> > > > >
> > > > > +        add     esi,ecx
> > > > >
> > > > > +        rol     r11d,30
> > > > >
> > > > > +        add     esi,ebx
> > > > >
> > > > > +        xor     edx,DWORD[12+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[8+rsp],r14d
> > > > >
> > > > > +        mov     ebx,r12d
> > > > >
> > > > > +        xor     edx,DWORD[20+rsp]
> > > > >
> > > > > +        and     eax,r11d
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     edx,DWORD[44+rsp]
> > > > >
> > > > > +        lea     r13d,[((-1894007588))+r13*1+r14]
> > > > >
> > > > > +        xor     ebx,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r13d,eax
> > > > >
> > > > > +        rol     edx,1
> > > > >
> > > > > +        and     ebx,edi
> > > > >
> > > > > +        add     r13d,ecx
> > > > >
> > > > > +        rol     edi,30
> > > > >
> > > > > +        add     r13d,ebx
> > > > >
> > > > > +        xor     ebp,DWORD[16+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[12+rsp],edx
> > > > >
> > > > > +        mov     ebx,r11d
> > > > >
> > > > > +        xor     ebp,DWORD[24+rsp]
> > > > >
> > > > > +        and     eax,edi
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     ebp,DWORD[48+rsp]
> > > > >
> > > > > +        lea     r12d,[((-1894007588))+r12*1+rdx]
> > > > >
> > > > > +        xor     ebx,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        rol     ebp,1
> > > > >
> > > > > +        and     ebx,esi
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        rol     esi,30
> > > > >
> > > > > +        add     r12d,ebx
> > > > >
> > > > > +        xor     r14d,DWORD[20+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[16+rsp],ebp
> > > > >
> > > > > +        mov     ebx,edi
> > > > >
> > > > > +        xor     r14d,DWORD[28+rsp]
> > > > >
> > > > > +        and     eax,esi
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     r14d,DWORD[52+rsp]
> > > > >
> > > > > +        lea     r11d,[((-1894007588))+r11*1+rbp]
> > > > >
> > > > > +        xor     ebx,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r11d,eax
> > > > >
> > > > > +        rol     r14d,1
> > > > >
> > > > > +        and     ebx,r13d
> > > > >
> > > > > +        add     r11d,ecx
> > > > >
> > > > > +        rol     r13d,30
> > > > >
> > > > > +        add     r11d,ebx
> > > > >
> > > > > +        xor     edx,DWORD[24+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[20+rsp],r14d
> > > > >
> > > > > +        mov     ebx,esi
> > > > >
> > > > > +        xor     edx,DWORD[32+rsp]
> > > > >
> > > > > +        and     eax,r13d
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     edx,DWORD[56+rsp]
> > > > >
> > > > > +        lea     edi,[((-1894007588))+rdi*1+r14]
> > > > >
> > > > > +        xor     ebx,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     edi,eax
> > > > >
> > > > > +        rol     edx,1
> > > > >
> > > > > +        and     ebx,r12d
> > > > >
> > > > > +        add     edi,ecx
> > > > >
> > > > > +        rol     r12d,30
> > > > >
> > > > > +        add     edi,ebx
> > > > >
> > > > > +        xor     ebp,DWORD[28+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[24+rsp],edx
> > > > >
> > > > > +        mov     ebx,r13d
> > > > >
> > > > > +        xor     ebp,DWORD[36+rsp]
> > > > >
> > > > > +        and     eax,r12d
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     ebp,DWORD[60+rsp]
> > > > >
> > > > > +        lea     esi,[((-1894007588))+rsi*1+rdx]
> > > > >
> > > > > +        xor     ebx,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     esi,eax
> > > > >
> > > > > +        rol     ebp,1
> > > > >
> > > > > +        and     ebx,r11d
> > > > >
> > > > > +        add     esi,ecx
> > > > >
> > > > > +        rol     r11d,30
> > > > >
> > > > > +        add     esi,ebx
> > > > >
> > > > > +        xor     r14d,DWORD[32+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[28+rsp],ebp
> > > > >
> > > > > +        mov     ebx,r12d
> > > > >
> > > > > +        xor     r14d,DWORD[40+rsp]
> > > > >
> > > > > +        and     eax,r11d
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     r14d,DWORD[rsp]
> > > > >
> > > > > +        lea     r13d,[((-1894007588))+r13*1+rbp]
> > > > >
> > > > > +        xor     ebx,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r13d,eax
> > > > >
> > > > > +        rol     r14d,1
> > > > >
> > > > > +        and     ebx,edi
> > > > >
> > > > > +        add     r13d,ecx
> > > > >
> > > > > +        rol     edi,30
> > > > >
> > > > > +        add     r13d,ebx
> > > > >
> > > > > +        xor     edx,DWORD[36+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[32+rsp],r14d
> > > > >
> > > > > +        mov     ebx,r11d
> > > > >
> > > > > +        xor     edx,DWORD[44+rsp]
> > > > >
> > > > > +        and     eax,edi
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     edx,DWORD[4+rsp]
> > > > >
> > > > > +        lea     r12d,[((-1894007588))+r12*1+r14]
> > > > >
> > > > > +        xor     ebx,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        rol     edx,1
> > > > >
> > > > > +        and     ebx,esi
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        rol     esi,30
> > > > >
> > > > > +        add     r12d,ebx
> > > > >
> > > > > +        xor     ebp,DWORD[40+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[36+rsp],edx
> > > > >
> > > > > +        mov     ebx,edi
> > > > >
> > > > > +        xor     ebp,DWORD[48+rsp]
> > > > >
> > > > > +        and     eax,esi
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     ebp,DWORD[8+rsp]
> > > > >
> > > > > +        lea     r11d,[((-1894007588))+r11*1+rdx]
> > > > >
> > > > > +        xor     ebx,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r11d,eax
> > > > >
> > > > > +        rol     ebp,1
> > > > >
> > > > > +        and     ebx,r13d
> > > > >
> > > > > +        add     r11d,ecx
> > > > >
> > > > > +        rol     r13d,30
> > > > >
> > > > > +        add     r11d,ebx
> > > > >
> > > > > +        xor     r14d,DWORD[44+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[40+rsp],ebp
> > > > >
> > > > > +        mov     ebx,esi
> > > > >
> > > > > +        xor     r14d,DWORD[52+rsp]
> > > > >
> > > > > +        and     eax,r13d
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     r14d,DWORD[12+rsp]
> > > > >
> > > > > +        lea     edi,[((-1894007588))+rdi*1+rbp]
> > > > >
> > > > > +        xor     ebx,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     edi,eax
> > > > >
> > > > > +        rol     r14d,1
> > > > >
> > > > > +        and     ebx,r12d
> > > > >
> > > > > +        add     edi,ecx
> > > > >
> > > > > +        rol     r12d,30
> > > > >
> > > > > +        add     edi,ebx
> > > > >
> > > > > +        xor     edx,DWORD[48+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[44+rsp],r14d
> > > > >
> > > > > +        mov     ebx,r13d
> > > > >
> > > > > +        xor     edx,DWORD[56+rsp]
> > > > >
> > > > > +        and     eax,r12d
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     edx,DWORD[16+rsp]
> > > > >
> > > > > +        lea     esi,[((-1894007588))+rsi*1+r14]
> > > > >
> > > > > +        xor     ebx,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     esi,eax
> > > > >
> > > > > +        rol     edx,1
> > > > >
> > > > > +        and     ebx,r11d
> > > > >
> > > > > +        add     esi,ecx
> > > > >
> > > > > +        rol     r11d,30
> > > > >
> > > > > +        add     esi,ebx
> > > > >
> > > > > +        xor     ebp,DWORD[52+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[48+rsp],edx
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     ebp,DWORD[60+rsp]
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[56+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[52+rsp],ebp
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     r14d,DWORD[rsp]
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[60+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[56+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     edx,DWORD[4+rsp]
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[60+rsp],edx
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     ebp,DWORD[8+rsp]
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[4+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[rsp],ebp
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     r14d,DWORD[12+rsp]
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[8+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[4+rsp],r14d
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     edx,DWORD[16+rsp]
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[12+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[8+rsp],edx
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     ebp,DWORD[20+rsp]
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[16+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[12+rsp],ebp
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     r14d,DWORD[24+rsp]
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[20+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[16+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     edx,DWORD[28+rsp]
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[24+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[20+rsp],edx
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     ebp,DWORD[32+rsp]
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[28+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[24+rsp],ebp
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     r14d,DWORD[36+rsp]
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[32+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[28+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     edx,DWORD[40+rsp]
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[36+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     ebp,DWORD[44+rsp]
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[40+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     r14d,DWORD[48+rsp]
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[44+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     edx,DWORD[52+rsp]
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[48+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     ebp,DWORD[56+rsp]
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[52+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     r14d,DWORD[60+rsp]
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[56+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     edx,DWORD[rsp]
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[60+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     ebp,DWORD[4+rsp]
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        xor     ebp,DWORD[28+rsp]
> > > > >
> > > > > +        lea     edi,[((-899497514))+rdi*1+rdx]
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        add     edi,ecx
> > > > >
> > > > > +        rol     r12d,30
> > > > >
> > > > > +        add     edi,eax
> > > > >
> > > > > +        rol     ebp,1
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        lea     esi,[((-899497514))+rsi*1+rbp]
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        add     esi,ecx
> > > > >
> > > > > +        rol     r11d,30
> > > > >
> > > > > +        add     esi,eax
> > > > >
> > > > > +        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,[64+r9]
> > > > >
> > > > > +        jnz     NEAR $L$loop
> > > > >
> > > > > +
> > > > >
> > > > > +        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:
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +sha1_block_data_order_shaext:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_sha1_block_data_order_shaext:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +_shaext_shortcut:
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-72))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[(-8-64)+rax],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[(-8-48)+rax],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[(-8-32)+rax],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[(-8-16)+rax],xmm9
> > > > >
> > > > > +$L$prologue_shaext:
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > > >
> > > > > +        movd    xmm1,DWORD[16+rdi]
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((K_XX_XX+160))]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[rsi]
> > > > >
> > > > > +        pshufd  xmm0,xmm0,27
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[16+rsi]
> > > > >
> > > > > +        pshufd  xmm1,xmm1,27
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[32+rsi]
> > > > >
> > > > > +DB      102,15,56,0,227
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[48+rsi]
> > > > >
> > > > > +DB      102,15,56,0,235
> > > > >
> > > > > +DB      102,15,56,0,243
> > > > >
> > > > > +        movdqa  xmm9,xmm1
> > > > >
> > > > > +DB      102,15,56,0,251
> > > > >
> > > > > +        jmp     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$oop_shaext:
> > > > >
> > > > > +        dec     rdx
> > > > >
> > > > > +        lea     r8,[64+rsi]
> > > > >
> > > > > +        paddd   xmm1,xmm4
> > > > >
> > > > > +        cmovne  rsi,r8
> > > > >
> > > > > +        movdqa  xmm8,xmm0
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,0
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +DB      15,56,202,231
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,0
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +        pxor    xmm5,xmm7
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +DB      15,56,201,247
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,0
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,252
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,0
> > > > >
> > > > > +DB      15,56,200,204
> > > > >
> > > > > +        pxor    xmm7,xmm5
> > > > >
> > > > > +DB      15,56,202,254
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,0
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +DB      15,56,202,231
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,1
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +        pxor    xmm5,xmm7
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +DB      15,56,201,247
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,1
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,252
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,1
> > > > >
> > > > > +DB      15,56,200,204
> > > > >
> > > > > +        pxor    xmm7,xmm5
> > > > >
> > > > > +DB      15,56,202,254
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,1
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +DB      15,56,202,231
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,1
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +        pxor    xmm5,xmm7
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +DB      15,56,201,247
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,2
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,252
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,2
> > > > >
> > > > > +DB      15,56,200,204
> > > > >
> > > > > +        pxor    xmm7,xmm5
> > > > >
> > > > > +DB      15,56,202,254
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,2
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +DB      15,56,202,231
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,2
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +        pxor    xmm5,xmm7
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +DB      15,56,201,247
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,2
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,252
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,3
> > > > >
> > > > > +DB      15,56,200,204
> > > > >
> > > > > +        pxor    xmm7,xmm5
> > > > >
> > > > > +DB      15,56,202,254
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[rsi]
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,3
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[16+rsi]
> > > > >
> > > > > +DB      102,15,56,0,227
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,3
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[32+rsi]
> > > > >
> > > > > +DB      102,15,56,0,235
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,3
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[48+rsi]
> > > > >
> > > > > +DB      102,15,56,0,243
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,3
> > > > >
> > > > > +DB      65,15,56,200,201
> > > > >
> > > > > +DB      102,15,56,0,251
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm0,xmm8
> > > > >
> > > > > +        movdqa  xmm9,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        jnz     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm0,xmm0,27
> > > > >
> > > > > +        pshufd  xmm1,xmm1,27
> > > > >
> > > > > +        movdqu  XMMWORD[rdi],xmm0
> > > > >
> > > > > +        movd    DWORD[16+rdi],xmm1
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-8-64))+rax]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-8-48))+rax]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-8-32))+rax]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-8-16))+rax]
> > > > >
> > > > > +        mov     rsp,rax
> > > > >
> > > > > +$L$epilogue_shaext:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_sha1_block_data_order_shaext:
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +_ssse3_shortcut:
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r11,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-160))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[(-40-96)+r11],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[(-40-80)+r11],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[(-40-64)+r11],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[(-40-48)+r11],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-40-32)+r11],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(-40-16)+r11],xmm11
> > > > >
> > > > > +$L$prologue_ssse3:
> > > > >
> > > > > +        and     rsp,-64
> > > > >
> > > > > +        mov     r8,rdi
> > > > >
> > > > > +        mov     r9,rsi
> > > > >
> > > > > +        mov     r10,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        shl     r10,6
> > > > >
> > > > > +        add     r10,r9
> > > > >
> > > > > +        lea     r14,[((K_XX_XX+64))]
> > > > >
> > > > > +
> > > > >
> > > > > +        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[16+r8]
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        and     esi,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[64+r14]
> > > > >
> > > > > +        movdqa  xmm9,XMMWORD[((-64))+r14]
> > > > >
> > > > > +        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
> > > > >
> > > > > +        add     r9,64
> > > > >
> > > > > +        paddd   xmm0,xmm9
> > > > >
> > > > > +DB      102,15,56,0,222
> > > > >
> > > > > +        paddd   xmm1,xmm9
> > > > >
> > > > > +        paddd   xmm2,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm0
> > > > >
> > > > > +        psubd   xmm0,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm1
> > > > >
> > > > > +        psubd   xmm1,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm2
> > > > >
> > > > > +        psubd   xmm2,xmm9
> > > > >
> > > > > +        jmp     NEAR $L$oop_ssse3
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$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[rsp]
> > > > >
> > > > > +        punpcklqdq      xmm4,xmm1
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        psrldq  xmm8,4
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        pxor    xmm8,xmm2
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        add     edx,DWORD[4+rsp]
> > > > >
> > > > > +        pxor    xmm4,xmm8
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        and     esi,eax
> > > > >
> > > > > +        movdqa  xmm10,xmm4
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        movdqa  xmm8,xmm4
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        pslldq  xmm10,12
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        add     ecx,DWORD[8+rsp]
> > > > >
> > > > > +        psrld   xmm8,31
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        and     edi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        psrld   xmm10,30
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        por     xmm4,xmm8
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        add     ebx,DWORD[12+rsp]
> > > > >
> > > > > +        pslld   xmm9,2
> > > > >
> > > > > +        pxor    xmm4,xmm10
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        movdqa  xmm10,XMMWORD[((-64))+r14]
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        and     esi,edx
> > > > >
> > > > > +        pxor    xmm4,xmm9
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        pshufd  xmm5,xmm1,238
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        movdqa  xmm9,xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        add     eax,DWORD[16+rsp]
> > > > >
> > > > > +        punpcklqdq      xmm5,xmm2
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        psrldq  xmm9,4
> > > > >
> > > > > +        and     edi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        pxor    xmm5,xmm1
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        pxor    xmm9,xmm3
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        add     ebp,DWORD[20+rsp]
> > > > >
> > > > > +        pxor    xmm5,xmm9
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm10
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        and     esi,ebx
> > > > >
> > > > > +        movdqa  xmm8,xmm5
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        movdqa  xmm9,xmm5
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        pslldq  xmm8,12
> > > > >
> > > > > +        paddd   xmm5,xmm5
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        add     edx,DWORD[24+rsp]
> > > > >
> > > > > +        psrld   xmm9,31
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +        and     edi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        psrld   xmm8,30
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        por     xmm5,xmm9
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        add     ecx,DWORD[28+rsp]
> > > > >
> > > > > +        pslld   xmm10,2
> > > > >
> > > > > +        pxor    xmm5,xmm8
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        movdqa  xmm8,XMMWORD[((-32))+r14]
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        and     esi,ebp
> > > > >
> > > > > +        pxor    xmm5,xmm10
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        pshufd  xmm6,xmm2,238
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        movdqa  xmm10,xmm5
> > > > >
> > > > > +        paddd   xmm8,xmm5
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        add     ebx,DWORD[32+rsp]
> > > > >
> > > > > +        punpcklqdq      xmm6,xmm3
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        psrldq  xmm10,4
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        pxor    xmm6,xmm2
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        pxor    xmm10,xmm4
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        add     eax,DWORD[36+rsp]
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm8
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        and     esi,ecx
> > > > >
> > > > > +        movdqa  xmm9,xmm6
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        movdqa  xmm10,xmm6
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        pslldq  xmm9,12
> > > > >
> > > > > +        paddd   xmm6,xmm6
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        add     ebp,DWORD[40+rsp]
> > > > >
> > > > > +        psrld   xmm10,31
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        movdqa  xmm8,xmm9
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        psrld   xmm9,30
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        por     xmm6,xmm10
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        add     edx,DWORD[44+rsp]
> > > > >
> > > > > +        pslld   xmm8,2
> > > > >
> > > > > +        pxor    xmm6,xmm9
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        movdqa  xmm9,XMMWORD[((-32))+r14]
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        and     esi,eax
> > > > >
> > > > > +        pxor    xmm6,xmm8
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        pshufd  xmm7,xmm3,238
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        movdqa  xmm8,xmm6
> > > > >
> > > > > +        paddd   xmm9,xmm6
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        add     ecx,DWORD[48+rsp]
> > > > >
> > > > > +        punpcklqdq      xmm7,xmm4
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        psrldq  xmm8,4
> > > > >
> > > > > +        and     edi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        pxor    xmm7,xmm3
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        pxor    xmm8,xmm5
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        add     ebx,DWORD[52+rsp]
> > > > >
> > > > > +        pxor    xmm7,xmm8
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm9
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        and     esi,edx
> > > > >
> > > > > +        movdqa  xmm10,xmm7
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        movdqa  xmm8,xmm7
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        pslldq  xmm10,12
> > > > >
> > > > > +        paddd   xmm7,xmm7
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        add     eax,DWORD[56+rsp]
> > > > >
> > > > > +        psrld   xmm8,31
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        and     edi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        psrld   xmm10,30
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        por     xmm7,xmm8
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        add     ebp,DWORD[60+rsp]
> > > > >
> > > > > +        pslld   xmm9,2
> > > > >
> > > > > +        pxor    xmm7,xmm10
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        movdqa  xmm10,XMMWORD[((-32))+r14]
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        and     esi,ebx
> > > > >
> > > > > +        pxor    xmm7,xmm9
> > > > >
> > > > > +        pshufd  xmm9,xmm6,238
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        add     edx,DWORD[rsp]
> > > > >
> > > > > +        punpcklqdq      xmm9,xmm7
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        and     edi,eax
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        paddd   xmm10,xmm7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        pxor    xmm0,xmm9
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        add     ecx,DWORD[4+rsp]
> > > > >
> > > > > +        movdqa  xmm9,xmm0
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm10
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        and     esi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        pslld   xmm0,2
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        psrld   xmm9,30
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        add     ebx,DWORD[8+rsp]
> > > > >
> > > > > +        por     xmm0,xmm9
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        pshufd  xmm10,xmm7,238
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[12+rsp]
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        pxor    xmm1,xmm5
> > > > >
> > > > > +        add     ebp,DWORD[16+rsp]
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        punpcklqdq      xmm10,xmm0
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        paddd   xmm8,xmm0
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        pxor    xmm1,xmm10
> > > > >
> > > > > +        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[rsp],xmm8
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[24+rsp]
> > > > >
> > > > > +        pslld   xmm1,2
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        psrld   xmm10,30
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        por     xmm1,xmm10
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[28+rsp]
> > > > >
> > > > > +        pshufd  xmm8,xmm0,238
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        pxor    xmm2,xmm6
> > > > >
> > > > > +        add     eax,DWORD[32+rsp]
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        punpcklqdq      xmm8,xmm1
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        movdqa  xmm10,XMMWORD[r14]
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        paddd   xmm9,xmm1
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        pxor    xmm2,xmm8
> > > > >
> > > > > +        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[16+rsp],xmm9
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[40+rsp]
> > > > >
> > > > > +        pslld   xmm2,2
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        psrld   xmm8,30
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        por     xmm2,xmm8
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[44+rsp]
> > > > >
> > > > > +        pshufd  xmm9,xmm1,238
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        pxor    xmm3,xmm7
> > > > >
> > > > > +        add     ebx,DWORD[48+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        punpcklqdq      xmm9,xmm2
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        pxor    xmm3,xmm4
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        paddd   xmm10,xmm2
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        pxor    xmm3,xmm9
> > > > >
> > > > > +        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[32+rsp],xmm10
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[56+rsp]
> > > > >
> > > > > +        pslld   xmm3,2
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        psrld   xmm9,30
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        por     xmm3,xmm9
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[60+rsp]
> > > > >
> > > > > +        pshufd  xmm10,xmm2,238
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        add     ecx,DWORD[rsp]
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        punpcklqdq      xmm10,xmm3
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        paddd   xmm8,xmm3
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        pxor    xmm4,xmm10
> > > > >
> > > > > +        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[48+rsp],xmm8
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[8+rsp]
> > > > >
> > > > > +        pslld   xmm4,2
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        psrld   xmm10,30
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        por     xmm4,xmm10
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[12+rsp]
> > > > >
> > > > > +        pshufd  xmm8,xmm3,238
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        pxor    xmm5,xmm1
> > > > >
> > > > > +        add     edx,DWORD[16+rsp]
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        punpcklqdq      xmm8,xmm4
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        pxor    xmm5,xmm6
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        movdqa  xmm10,xmm9
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        paddd   xmm9,xmm4
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        pxor    xmm5,xmm8
> > > > >
> > > > > +        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[rsp],xmm9
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[24+rsp]
> > > > >
> > > > > +        pslld   xmm5,2
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        psrld   xmm8,30
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        por     xmm5,xmm8
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[28+rsp]
> > > > >
> > > > > +        pshufd  xmm9,xmm4,238
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        pxor    xmm6,xmm2
> > > > >
> > > > > +        add     ebp,DWORD[32+rsp]
> > > > >
> > > > > +        and     esi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        punpcklqdq      xmm9,xmm5
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        paddd   xmm10,xmm5
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        pxor    xmm6,xmm9
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        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[16+rsp],xmm10
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        pslld   xmm6,2
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        psrld   xmm9,30
> > > > >
> > > > > +        add     ecx,DWORD[40+rsp]
> > > > >
> > > > > +        and     esi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        por     xmm6,xmm9
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        pshufd  xmm10,xmm5,238
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[44+rsp]
> > > > >
> > > > > +        and     edi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        pxor    xmm7,xmm3
> > > > >
> > > > > +        add     eax,DWORD[48+rsp]
> > > > >
> > > > > +        and     esi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        punpcklqdq      xmm10,xmm6
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        pxor    xmm7,xmm0
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        movdqa  xmm9,XMMWORD[32+r14]
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        paddd   xmm8,xmm6
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        pxor    xmm7,xmm10
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        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[32+rsp],xmm8
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        pslld   xmm7,2
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        psrld   xmm10,30
> > > > >
> > > > > +        add     edx,DWORD[56+rsp]
> > > > >
> > > > > +        and     esi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        por     xmm7,xmm10
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        pshufd  xmm8,xmm6,238
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[60+rsp]
> > > > >
> > > > > +        and     edi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        add     ebx,DWORD[rsp]
> > > > >
> > > > > +        and     esi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        punpcklqdq      xmm8,xmm7
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        movdqa  xmm10,xmm9
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        paddd   xmm9,xmm7
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        pxor    xmm0,xmm8
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        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[48+rsp],xmm9
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        pslld   xmm0,2
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        psrld   xmm8,30
> > > > >
> > > > > +        add     ebp,DWORD[8+rsp]
> > > > >
> > > > > +        and     esi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        por     xmm0,xmm8
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        pshufd  xmm9,xmm7,238
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[12+rsp]
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        pxor    xmm1,xmm5
> > > > >
> > > > > +        add     ecx,DWORD[16+rsp]
> > > > >
> > > > > +        and     esi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        punpcklqdq      xmm9,xmm0
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        paddd   xmm10,xmm0
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        pxor    xmm1,xmm9
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        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[rsp],xmm10
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        pslld   xmm1,2
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        psrld   xmm9,30
> > > > >
> > > > > +        add     eax,DWORD[24+rsp]
> > > > >
> > > > > +        and     esi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        por     xmm1,xmm9
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        pshufd  xmm10,xmm0,238
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[28+rsp]
> > > > >
> > > > > +        and     edi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        pxor    xmm2,xmm6
> > > > >
> > > > > +        add     edx,DWORD[32+rsp]
> > > > >
> > > > > +        and     esi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        punpcklqdq      xmm10,xmm1
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        paddd   xmm8,xmm1
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        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[16+rsp],xmm8
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        pslld   xmm2,2
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        psrld   xmm10,30
> > > > >
> > > > > +        add     ebx,DWORD[40+rsp]
> > > > >
> > > > > +        and     esi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        por     xmm2,xmm10
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        pshufd  xmm8,xmm1,238
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[44+rsp]
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        pxor    xmm3,xmm7
> > > > >
> > > > > +        add     ebp,DWORD[48+rsp]
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        punpcklqdq      xmm8,xmm2
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        pxor    xmm3,xmm4
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        movdqa  xmm10,xmm9
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        paddd   xmm9,xmm2
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        pxor    xmm3,xmm8
> > > > >
> > > > > +        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[32+rsp],xmm9
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[56+rsp]
> > > > >
> > > > > +        pslld   xmm3,2
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        psrld   xmm8,30
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        por     xmm3,xmm8
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[60+rsp]
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[rsp]
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        paddd   xmm10,xmm3
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm10
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[4+rsp]
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[8+rsp]
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[12+rsp]
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        cmp     r9,r10
> > > > >
> > > > > +        je      NEAR $L$done_ssse3
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[64+r14]
> > > > >
> > > > > +        movdqa  xmm9,XMMWORD[((-64))+r14]
> > > > >
> > > > > +        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[16+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +DB      102,15,56,0,206
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        paddd   xmm0,xmm9
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[20+rsp]
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        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[24+rsp]
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[28+rsp]
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[32+rsp]
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +DB      102,15,56,0,214
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        paddd   xmm1,xmm9
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[36+rsp]
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        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[40+rsp]
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[44+rsp]
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[48+rsp]
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +DB      102,15,56,0,222
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        paddd   xmm2,xmm9
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[52+rsp]
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        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[56+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        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[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[8+r8],ecx
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        mov     DWORD[12+r8],edx
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     DWORD[16+r8],ebp
> > > > >
> > > > > +        and     esi,edi
> > > > >
> > > > > +        jmp     NEAR $L$oop_ssse3
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$done_ssse3:
> > > > >
> > > > > +        add     ebx,DWORD[16+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[20+rsp]
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[24+rsp]
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[28+rsp]
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[32+rsp]
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[36+rsp]
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[40+rsp]
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[44+rsp]
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[48+rsp]
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[52+rsp]
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[56+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        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[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))+r11]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-40-80))+r11]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-40-64))+r11]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-40-48))+r11]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-40-32))+r11]
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-40-16))+r11]
> > > > >
> > > > > +        mov     r14,QWORD[((-40))+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r13,QWORD[((-32))+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,QWORD[((-24))+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbp,QWORD[((-16))+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbx,QWORD[((-8))+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[r11]
> > > > >
> > > > > +
> > > > >
> > > > > +$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:
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +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
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$prologue]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$epilogue]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[64+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        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     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +shaext_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$prologue_shaext]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$epilogue_shaext]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((-8-64))+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,8
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +ssse3_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[208+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((-40-96))+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,12
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        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[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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +section .pdata rdata align=4
> > > > >
> > > > > +ALIGN   4
> > > > >
> > > > > +        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_shaext wrt
> > ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_sha1_block_data_order_shaext wrt
> > ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_sha1_block_data_order_shaext 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:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      se_handler wrt ..imagebase
> > > > >
> > > > > +$L$SEH_info_sha1_block_data_order_shaext:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      shaext_handler wrt ..imagebase
> > > > >
> > > > > +$L$SEH_info_sha1_block_data_order_ssse3:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      ssse3_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
> > > > > wrt ..imagebase
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
> > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
> mb-
> > > > > x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..7cd5eae85c
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
> > > x86_64.nasm
> > > > > @@ -0,0 +1,3461 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/sha/asm/sha256-mb-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +
> > > > >
> > > > > +global  sha256_multi_block
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +sha256_multi_block:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_sha256_multi_block:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
> > > > >
> > > > > +        bt      rcx,61
> > > > >
> > > > > +        jc      NEAR _shaext_shortcut
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-168))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > > >
> > > > > +        sub     rsp,288
> > > > >
> > > > > +        and     rsp,-256
> > > > >
> > > > > +        mov     QWORD[272+rsp],rax
> > > > >
> > > > > +
> > > > >
> > > > > +$L$body:
> > > > >
> > > > > +        lea     rbp,[((K256+128))]
> > > > >
> > > > > +        lea     rbx,[256+rsp]
> > > > >
> > > > > +        lea     rdi,[128+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$oop_grande:
> > > > >
> > > > > +        mov     DWORD[280+rsp],edx
> > > > >
> > > > > +        xor     edx,edx
> > > > >
> > > > > +        mov     r8,QWORD[rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[8+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[rbx],ecx
> > > > >
> > > > > +        cmovle  r8,rbp
> > > > >
> > > > > +        mov     r9,QWORD[16+rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[24+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[4+rbx],ecx
> > > > >
> > > > > +        cmovle  r9,rbp
> > > > >
> > > > > +        mov     r10,QWORD[32+rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[40+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[8+rbx],ecx
> > > > >
> > > > > +        cmovle  r10,rbp
> > > > >
> > > > > +        mov     r11,QWORD[48+rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[56+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[12+rbx],ecx
> > > > >
> > > > > +        cmovle  r11,rbp
> > > > >
> > > > > +        test    edx,edx
> > > > >
> > > > > +        jz      NEAR $L$done
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[((0-128))+rdi]
> > > > >
> > > > > +        lea     rax,[128+rsp]
> > > > >
> > > > > +        movdqu  xmm9,XMMWORD[((32-128))+rdi]
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[((64-128))+rdi]
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[((96-128))+rdi]
> > > > >
> > > > > +        movdqu  xmm12,XMMWORD[((128-128))+rdi]
> > > > >
> > > > > +        movdqu  xmm13,XMMWORD[((160-128))+rdi]
> > > > >
> > > > > +        movdqu  xmm14,XMMWORD[((192-128))+rdi]
> > > > >
> > > > > +        movdqu  xmm15,XMMWORD[((224-128))+rdi]
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[$L$pbswap]
> > > > >
> > > > > +        jmp     NEAR $L$oop
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$oop:
> > > > >
> > > > > +        movdqa  xmm4,xmm10
> > > > >
> > > > > +        pxor    xmm4,xmm9
> > > > >
> > > > > +        movd    xmm5,DWORD[r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        movdqa  xmm2,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm12
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm12
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm14
> > > > >
> > > > > +        pand    xmm3,xmm13
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm8
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm8
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm9
> > > > >
> > > > > +        movdqa  xmm7,xmm8
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm15,xmm9
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm15,xmm4
> > > > >
> > > > > +        paddd   xmm11,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm15,xmm5
> > > > >
> > > > > +        paddd   xmm15,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[4+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[4+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[4+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[4+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm11
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-96))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm11
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm13
> > > > >
> > > > > +        pand    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm15
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm8
> > > > >
> > > > > +        movdqa  xmm7,xmm15
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm14,xmm8
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm14,xmm3
> > > > >
> > > > > +        paddd   xmm10,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm14,xmm5
> > > > >
> > > > > +        paddd   xmm14,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[8+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[8+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[8+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[8+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm10
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm12
> > > > >
> > > > > +        pand    xmm3,xmm11
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm14
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm15
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm13,xmm4
> > > > >
> > > > > +        paddd   xmm9,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm13,xmm5
> > > > >
> > > > > +        paddd   xmm13,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[12+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[12+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[12+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[12+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm9
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-32))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm9
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm11
> > > > >
> > > > > +        pand    xmm4,xmm10
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm13
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm13
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm12,xmm14
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm12,xmm3
> > > > >
> > > > > +        paddd   xmm8,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm12,xmm5
> > > > >
> > > > > +        paddd   xmm12,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[16+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[16+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[16+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[16+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm8
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        movdqa  xmm2,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm8
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm8
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm10
> > > > >
> > > > > +        pand    xmm3,xmm9
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm12
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm12
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm11,xmm13
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm11,xmm4
> > > > >
> > > > > +        paddd   xmm15,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm11,xmm5
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[20+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[20+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[20+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[20+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm15
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm15
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[32+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm15
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm9
> > > > >
> > > > > +        pand    xmm4,xmm8
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm10,xmm12
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm10,xmm3
> > > > >
> > > > > +        paddd   xmm14,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm10,xmm5
> > > > >
> > > > > +        paddd   xmm10,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[24+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[24+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[24+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[24+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        movdqa  xmm2,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm14
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm14
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm8
> > > > >
> > > > > +        pand    xmm3,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm10
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm9,xmm4
> > > > >
> > > > > +        paddd   xmm13,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm9,xmm5
> > > > >
> > > > > +        paddd   xmm9,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[28+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[28+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[28+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[28+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm13
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm13
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[96+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm13
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm15
> > > > >
> > > > > +        pand    xmm4,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm9
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm9
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        paddd   xmm12,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm8,xmm5
> > > > >
> > > > > +        paddd   xmm8,xmm7
> > > > >
> > > > > +        lea     rbp,[256+rbp]
> > > > >
> > > > > +        movd    xmm5,DWORD[32+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[32+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[32+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[32+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        movdqa  xmm2,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm12
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm12
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm14
> > > > >
> > > > > +        pand    xmm3,xmm13
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm8
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm8
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm9
> > > > >
> > > > > +        movdqa  xmm7,xmm8
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm15,xmm9
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm15,xmm4
> > > > >
> > > > > +        paddd   xmm11,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm15,xmm5
> > > > >
> > > > > +        paddd   xmm15,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[36+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[36+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[36+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[36+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm11
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-96))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm11
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm13
> > > > >
> > > > > +        pand    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm15
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm8
> > > > >
> > > > > +        movdqa  xmm7,xmm15
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm14,xmm8
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm14,xmm3
> > > > >
> > > > > +        paddd   xmm10,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm14,xmm5
> > > > >
> > > > > +        paddd   xmm14,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[40+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[40+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[40+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[40+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm10
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm12
> > > > >
> > > > > +        pand    xmm3,xmm11
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm14
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm15
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm13,xmm4
> > > > >
> > > > > +        paddd   xmm9,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm13,xmm5
> > > > >
> > > > > +        paddd   xmm13,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[44+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[44+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[44+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[44+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm9
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-32))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm9
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm11
> > > > >
> > > > > +        pand    xmm4,xmm10
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm13
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm13
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm12,xmm14
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm12,xmm3
> > > > >
> > > > > +        paddd   xmm8,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm12,xmm5
> > > > >
> > > > > +        paddd   xmm12,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[48+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[48+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[48+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[48+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm8
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        movdqa  xmm2,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm8
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm8
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm10
> > > > >
> > > > > +        pand    xmm3,xmm9
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm12
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm12
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm11,xmm13
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm11,xmm4
> > > > >
> > > > > +        paddd   xmm15,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm11,xmm5
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[52+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[52+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[52+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[52+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm15
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm15
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[32+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm15
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm9
> > > > >
> > > > > +        pand    xmm4,xmm8
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm10,xmm12
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm10,xmm3
> > > > >
> > > > > +        paddd   xmm14,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm10,xmm5
> > > > >
> > > > > +        paddd   xmm10,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[56+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[56+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[56+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[56+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        movdqa  xmm2,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm14
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm14
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm8
> > > > >
> > > > > +        pand    xmm3,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm10
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm9,xmm4
> > > > >
> > > > > +        paddd   xmm13,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm9,xmm5
> > > > >
> > > > > +        paddd   xmm9,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[60+r8]
> > > > >
> > > > > +        lea     r8,[64+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[60+r9]
> > > > >
> > > > > +        lea     r9,[64+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[60+r10]
> > > > >
> > > > > +        lea     r10,[64+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[60+r11]
> > > > >
> > > > > +        lea     r11,[64+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm13
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm13
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[96+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm13
> > > > >
> > > > > +        prefetcht0      [63+r8]
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm13
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm15
> > > > >
> > > > > +        pand    xmm4,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        prefetcht0      [63+r9]
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm9
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm9
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        prefetcht0      [63+r10]
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        prefetcht0      [63+r11]
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        paddd   xmm12,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm8,xmm5
> > > > >
> > > > > +        paddd   xmm8,xmm7
> > > > >
> > > > > +        lea     rbp,[256+rbp]
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +        mov     ecx,3
> > > > >
> > > > > +        jmp     NEAR $L$oop_16_xx
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$oop_16_xx:
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        movdqa  xmm1,xmm6
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm3,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psrld   xmm3,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm12
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm12
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm14
> > > > >
> > > > > +        pand    xmm3,xmm13
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm8
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm8
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm9
> > > > >
> > > > > +        movdqa  xmm7,xmm8
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm15,xmm9
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm15,xmm4
> > > > >
> > > > > +        paddd   xmm11,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm15,xmm5
> > > > >
> > > > > +        paddd   xmm15,xmm7
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +        movdqa  xmm1,xmm5
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm4,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrld   xmm4,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm11
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm6
> > > > >
> > > > > +        paddd   xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((-96))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm11
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm13
> > > > >
> > > > > +        pand    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm15
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm8
> > > > >
> > > > > +        movdqa  xmm7,xmm15
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm14,xmm8
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm14,xmm3
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm14,xmm7
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        movdqa  xmm1,xmm6
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm3,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psrld   xmm3,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm10
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm12
> > > > >
> > > > > +        pand    xmm3,xmm11
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm14
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm15
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm13,xmm4
> > > > >
> > > > > +        paddd   xmm9,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm13,xmm5
> > > > >
> > > > > +        paddd   xmm13,xmm7
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +        movdqa  xmm1,xmm5
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm4,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrld   xmm4,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm6
> > > > >
> > > > > +        paddd   xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((-32))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm9
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm11
> > > > >
> > > > > +        pand    xmm4,xmm10
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm13
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm13
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm12,xmm14
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm12,xmm3
> > > > >
> > > > > +        paddd   xmm8,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm12,xmm7
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        movdqa  xmm1,xmm6
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm3,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psrld   xmm3,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm8
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm8
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm10
> > > > >
> > > > > +        pand    xmm3,xmm9
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm12
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm12
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm11,xmm13
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm11,xmm4
> > > > >
> > > > > +        paddd   xmm15,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm11,xmm5
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +        movdqa  xmm1,xmm5
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm4,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrld   xmm4,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm15
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm6
> > > > >
> > > > > +        paddd   xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[32+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm15
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm9
> > > > >
> > > > > +        pand    xmm4,xmm8
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm10,xmm12
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm10,xmm3
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        paddd   xmm10,xmm7
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        movdqa  xmm1,xmm6
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm3,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psrld   xmm3,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm14
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm14
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm8
> > > > >
> > > > > +        pand    xmm3,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm10
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm9,xmm4
> > > > >
> > > > > +        paddd   xmm13,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm9,xmm5
> > > > >
> > > > > +        paddd   xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +        movdqa  xmm1,xmm5
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm4,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrld   xmm4,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm13
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm6
> > > > >
> > > > > +        paddd   xmm6,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[96+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm13
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm15
> > > > >
> > > > > +        pand    xmm4,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm9
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm9
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm8,xmm6
> > > > >
> > > > > +        paddd   xmm8,xmm7
> > > > >
> > > > > +        lea     rbp,[256+rbp]
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        movdqa  xmm1,xmm6
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm3,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psrld   xmm3,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm12
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm12
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm14
> > > > >
> > > > > +        pand    xmm3,xmm13
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm8
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm8
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm9
> > > > >
> > > > > +        movdqa  xmm7,xmm8
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm15,xmm9
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm15,xmm4
> > > > >
> > > > > +        paddd   xmm11,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm15,xmm5
> > > > >
> > > > > +        paddd   xmm15,xmm7
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +        movdqa  xmm1,xmm5
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm4,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrld   xmm4,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm11
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm6
> > > > >
> > > > > +        paddd   xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((-96))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm11
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm13
> > > > >
> > > > > +        pand    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm15
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm8
> > > > >
> > > > > +        movdqa  xmm7,xmm15
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm14,xmm8
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm14,xmm3
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm14,xmm7
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        movdqa  xmm1,xmm6
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm3,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psrld   xmm3,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm10
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm12
> > > > >
> > > > > +        pand    xmm3,xmm11
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm14
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm15
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm13,xmm4
> > > > >
> > > > > +        paddd   xmm9,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm13,xmm5
> > > > >
> > > > > +        paddd   xmm13,xmm7
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +        movdqa  xmm1,xmm5
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm4,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrld   xmm4,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm6
> > > > >
> > > > > +        paddd   xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((-32))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm9
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm11
> > > > >
> > > > > +        pand    xmm4,xmm10
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm13
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm13
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm12,xmm14
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm12,xmm3
> > > > >
> > > > > +        paddd   xmm8,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm12,xmm7
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        movdqa  xmm1,xmm6
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm3,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psrld   xmm3,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm8
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm8
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm10
> > > > >
> > > > > +        pand    xmm3,xmm9
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm12
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm12
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm11,xmm13
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm11,xmm4
> > > > >
> > > > > +        paddd   xmm15,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm11,xmm5
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +        movdqa  xmm1,xmm5
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm4,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrld   xmm4,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm15
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm6
> > > > >
> > > > > +        paddd   xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[32+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm15
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm9
> > > > >
> > > > > +        pand    xmm4,xmm8
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm10,xmm12
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm10,xmm3
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        paddd   xmm10,xmm7
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        movdqa  xmm1,xmm6
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm3,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psrld   xmm3,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm14
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm14
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm8
> > > > >
> > > > > +        pand    xmm3,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm10
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm9,xmm4
> > > > >
> > > > > +        paddd   xmm13,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm9,xmm5
> > > > >
> > > > > +        paddd   xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +        movdqa  xmm1,xmm5
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm4,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrld   xmm4,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm13
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm6
> > > > >
> > > > > +        paddd   xmm6,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[96+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm13
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm15
> > > > >
> > > > > +        pand    xmm4,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm9
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm9
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm8,xmm6
> > > > >
> > > > > +        paddd   xmm8,xmm7
> > > > >
> > > > > +        lea     rbp,[256+rbp]
> > > > >
> > > > > +        dec     ecx
> > > > >
> > > > > +        jnz     NEAR $L$oop_16_xx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,1
> > > > >
> > > > > +        lea     rbp,[((K256+128))]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,XMMWORD[rbx]
> > > > >
> > > > > +        cmp     ecx,DWORD[rbx]
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        cmovge  r8,rbp
> > > > >
> > > > > +        cmp     ecx,DWORD[4+rbx]
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        cmovge  r9,rbp
> > > > >
> > > > > +        cmp     ecx,DWORD[8+rbx]
> > > > >
> > > > > +        pcmpgtd xmm6,xmm0
> > > > >
> > > > > +        cmovge  r10,rbp
> > > > >
> > > > > +        cmp     ecx,DWORD[12+rbx]
> > > > >
> > > > > +        paddd   xmm7,xmm6
> > > > >
> > > > > +        cmovge  r11,rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[((0-128))+rdi]
> > > > >
> > > > > +        pand    xmm8,xmm6
> > > > >
> > > > > +        movdqu  xmm1,XMMWORD[((32-128))+rdi]
> > > > >
> > > > > +        pand    xmm9,xmm6
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[((64-128))+rdi]
> > > > >
> > > > > +        pand    xmm10,xmm6
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[((96-128))+rdi]
> > > > >
> > > > > +        pand    xmm11,xmm6
> > > > >
> > > > > +        paddd   xmm8,xmm0
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[((128-128))+rdi]
> > > > >
> > > > > +        pand    xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm9,xmm1
> > > > >
> > > > > +        movdqu  xmm1,XMMWORD[((160-128))+rdi]
> > > > >
> > > > > +        pand    xmm13,xmm6
> > > > >
> > > > > +        paddd   xmm10,xmm2
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[((192-128))+rdi]
> > > > >
> > > > > +        pand    xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm11,xmm5
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[((224-128))+rdi]
> > > > >
> > > > > +        pand    xmm15,xmm6
> > > > >
> > > > > +        paddd   xmm12,xmm0
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        movdqu  XMMWORD[(0-128)+rdi],xmm8
> > > > >
> > > > > +        paddd   xmm14,xmm2
> > > > >
> > > > > +        movdqu  XMMWORD[(32-128)+rdi],xmm9
> > > > >
> > > > > +        paddd   xmm15,xmm5
> > > > >
> > > > > +        movdqu  XMMWORD[(64-128)+rdi],xmm10
> > > > >
> > > > > +        movdqu  XMMWORD[(96-128)+rdi],xmm11
> > > > >
> > > > > +        movdqu  XMMWORD[(128-128)+rdi],xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[(160-128)+rdi],xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[(192-128)+rdi],xmm14
> > > > >
> > > > > +        movdqu  XMMWORD[(224-128)+rdi],xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[rbx],xmm7
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[$L$pbswap]
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edx,DWORD[280+rsp]
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +        lea     rsi,[64+rsi]
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop_grande
> > > > >
> > > > > +
> > > > >
> > > > > +$L$done:
> > > > >
> > > > > +        mov     rax,QWORD[272+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > > >
> > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[rax]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$epilogue:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_sha256_multi_block:
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +sha256_multi_block_shaext:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_sha256_multi_block_shaext:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +_shaext_shortcut:
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-168))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > > >
> > > > > +        sub     rsp,288
> > > > >
> > > > > +        shl     edx,1
> > > > >
> > > > > +        and     rsp,-256
> > > > >
> > > > > +        lea     rdi,[128+rdi]
> > > > >
> > > > > +        mov     QWORD[272+rsp],rax
> > > > >
> > > > > +$L$body_shaext:
> > > > >
> > > > > +        lea     rbx,[256+rsp]
> > > > >
> > > > > +        lea     rbp,[((K256_shaext+128))]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$oop_grande_shaext:
> > > > >
> > > > > +        mov     DWORD[280+rsp],edx
> > > > >
> > > > > +        xor     edx,edx
> > > > >
> > > > > +        mov     r8,QWORD[rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[8+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[rbx],ecx
> > > > >
> > > > > +        cmovle  r8,rsp
> > > > >
> > > > > +        mov     r9,QWORD[16+rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[24+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[4+rbx],ecx
> > > > >
> > > > > +        cmovle  r9,rsp
> > > > >
> > > > > +        test    edx,edx
> > > > >
> > > > > +        jz      NEAR $L$done_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +        movq    xmm12,QWORD[((0-128))+rdi]
> > > > >
> > > > > +        movq    xmm4,QWORD[((32-128))+rdi]
> > > > >
> > > > > +        movq    xmm13,QWORD[((64-128))+rdi]
> > > > >
> > > > > +        movq    xmm5,QWORD[((96-128))+rdi]
> > > > >
> > > > > +        movq    xmm8,QWORD[((128-128))+rdi]
> > > > >
> > > > > +        movq    xmm9,QWORD[((160-128))+rdi]
> > > > >
> > > > > +        movq    xmm10,QWORD[((192-128))+rdi]
> > > > >
> > > > > +        movq    xmm11,QWORD[((224-128))+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +        punpckldq       xmm12,xmm4
> > > > >
> > > > > +        punpckldq       xmm13,xmm5
> > > > >
> > > > > +        punpckldq       xmm8,xmm9
> > > > >
> > > > > +        punpckldq       xmm10,xmm11
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm14,xmm12
> > > > >
> > > > > +        movdqa  xmm15,xmm13
> > > > >
> > > > > +        punpcklqdq      xmm12,xmm8
> > > > >
> > > > > +        punpcklqdq      xmm13,xmm10
> > > > >
> > > > > +        punpckhqdq      xmm14,xmm8
> > > > >
> > > > > +        punpckhqdq      xmm15,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm12,xmm12,27
> > > > >
> > > > > +        pshufd  xmm13,xmm13,27
> > > > >
> > > > > +        pshufd  xmm14,xmm14,27
> > > > >
> > > > > +        pshufd  xmm15,xmm15,27
> > > > >
> > > > > +        jmp     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$oop_shaext:
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[r8]
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[r9]
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[16+r8]
> > > > >
> > > > > +        movdqu  xmm9,XMMWORD[16+r9]
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[32+r8]
> > > > >
> > > > > +DB      102,15,56,0,227
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[32+r9]
> > > > >
> > > > > +DB      102,68,15,56,0,195
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[48+r8]
> > > > >
> > > > > +        lea     r8,[64+r8]
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[48+r9]
> > > > >
> > > > > +        lea     r9,[64+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((0-128))+rbp]
> > > > >
> > > > > +DB      102,15,56,0,235
> > > > >
> > > > > +        paddd   xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((0-128))+rbp]
> > > > >
> > > > > +DB      102,68,15,56,0,203
> > > > >
> > > > > +        paddd   xmm2,xmm8
> > > > >
> > > > > +        movdqa  XMMWORD[80+rsp],xmm13
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        pxor    xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  XMMWORD[112+rsp],xmm15
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqa  XMMWORD[64+rsp],xmm12
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        pxor    xmm8,xmm14
> > > > >
> > > > > +        movdqa  XMMWORD[96+rsp],xmm14
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((16-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm5
> > > > >
> > > > > +DB      102,15,56,0,243
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((16-128))+rbp]
> > > > >
> > > > > +        paddd   xmm2,xmm9
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        prefetcht0      [127+r8]
> > > > >
> > > > > +DB      102,15,56,0,251
> > > > >
> > > > > +DB      102,68,15,56,0,211
> > > > >
> > > > > +        prefetcht0      [127+r9]
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +DB      102,68,15,56,0,219
> > > > >
> > > > > +DB      15,56,204,229
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((32-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm6
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((32-128))+rbp]
> > > > >
> > > > > +        paddd   xmm2,xmm10
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +DB      69,15,56,204,193
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm7
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +DB      102,15,58,15,222,4
> > > > >
> > > > > +        paddd   xmm4,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm11
> > > > >
> > > > > +DB      102,65,15,58,15,218,4
> > > > >
> > > > > +DB      15,56,204,238
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((48-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm7
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,202
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((48-128))+rbp]
> > > > >
> > > > > +        paddd   xmm8,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm11
> > > > >
> > > > > +DB      15,56,205,231
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm4
> > > > >
> > > > > +DB      102,15,58,15,223,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,195
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm5,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm8
> > > > >
> > > > > +DB      102,65,15,58,15,219,4
> > > > >
> > > > > +DB      15,56,204,247
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((64-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm4
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,211
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((64-128))+rbp]
> > > > >
> > > > > +        paddd   xmm9,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm8
> > > > >
> > > > > +DB      15,56,205,236
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm5
> > > > >
> > > > > +DB      102,15,58,15,220,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,200
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm6,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm9
> > > > >
> > > > > +DB      102,65,15,58,15,216,4
> > > > >
> > > > > +DB      15,56,204,252
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((80-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm5
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,216
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((80-128))+rbp]
> > > > >
> > > > > +        paddd   xmm10,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm9
> > > > >
> > > > > +DB      15,56,205,245
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm6
> > > > >
> > > > > +DB      102,15,58,15,221,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,209
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm7,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +DB      102,65,15,58,15,217,4
> > > > >
> > > > > +DB      15,56,204,229
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((96-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm6
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,193
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((96-128))+rbp]
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm10
> > > > >
> > > > > +DB      15,56,205,254
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm7
> > > > >
> > > > > +DB      102,15,58,15,222,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,218
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm4,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm11
> > > > >
> > > > > +DB      102,65,15,58,15,218,4
> > > > >
> > > > > +DB      15,56,204,238
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((112-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm7
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,202
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((112-128))+rbp]
> > > > >
> > > > > +        paddd   xmm8,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm11
> > > > >
> > > > > +DB      15,56,205,231
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm4
> > > > >
> > > > > +DB      102,15,58,15,223,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,195
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm5,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm8
> > > > >
> > > > > +DB      102,65,15,58,15,219,4
> > > > >
> > > > > +DB      15,56,204,247
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((128-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm4
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,211
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((128-128))+rbp]
> > > > >
> > > > > +        paddd   xmm9,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm8
> > > > >
> > > > > +DB      15,56,205,236
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm5
> > > > >
> > > > > +DB      102,15,58,15,220,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,200
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm6,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm9
> > > > >
> > > > > +DB      102,65,15,58,15,216,4
> > > > >
> > > > > +DB      15,56,204,252
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((144-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm5
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,216
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((144-128))+rbp]
> > > > >
> > > > > +        paddd   xmm10,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm9
> > > > >
> > > > > +DB      15,56,205,245
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm6
> > > > >
> > > > > +DB      102,15,58,15,221,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,209
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm7,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +DB      102,65,15,58,15,217,4
> > > > >
> > > > > +DB      15,56,204,229
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((160-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm6
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,193
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((160-128))+rbp]
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm10
> > > > >
> > > > > +DB      15,56,205,254
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm7
> > > > >
> > > > > +DB      102,15,58,15,222,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,218
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm4,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm11
> > > > >
> > > > > +DB      102,65,15,58,15,218,4
> > > > >
> > > > > +DB      15,56,204,238
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((176-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm7
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,202
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((176-128))+rbp]
> > > > >
> > > > > +        paddd   xmm8,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm11
> > > > >
> > > > > +DB      15,56,205,231
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm4
> > > > >
> > > > > +DB      102,15,58,15,223,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,195
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm5,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm8
> > > > >
> > > > > +DB      102,65,15,58,15,219,4
> > > > >
> > > > > +DB      15,56,204,247
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((192-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm4
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,211
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((192-128))+rbp]
> > > > >
> > > > > +        paddd   xmm9,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm8
> > > > >
> > > > > +DB      15,56,205,236
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm5
> > > > >
> > > > > +DB      102,15,58,15,220,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,200
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm6,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm9
> > > > >
> > > > > +DB      102,65,15,58,15,216,4
> > > > >
> > > > > +DB      15,56,204,252
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((208-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm5
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,216
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((208-128))+rbp]
> > > > >
> > > > > +        paddd   xmm10,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm9
> > > > >
> > > > > +DB      15,56,205,245
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm6
> > > > >
> > > > > +DB      102,15,58,15,221,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,209
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm7,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +DB      102,65,15,58,15,217,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((224-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm6
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((224-128))+rbp]
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm10
> > > > >
> > > > > +DB      15,56,205,254
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        mov     ecx,1
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,218
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((240-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm7
> > > > >
> > > > > +        movq    xmm7,QWORD[rbx]
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((240-128))+rbp]
> > > > >
> > > > > +        paddd   xmm2,xmm11
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        cmp     ecx,DWORD[rbx]
> > > > >
> > > > > +        cmovge  r8,rsp
> > > > >
> > > > > +        cmp     ecx,DWORD[4+rbx]
> > > > >
> > > > > +        cmovge  r9,rsp
> > > > >
> > > > > +        pshufd  xmm9,xmm7,0x00
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        pshufd  xmm10,xmm7,0x55
> > > > >
> > > > > +        movdqa  xmm11,xmm7
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        pcmpgtd xmm9,xmm6
> > > > >
> > > > > +        pcmpgtd xmm10,xmm6
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        pcmpgtd xmm11,xmm6
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +
> > > > >
> > > > > +        pand    xmm13,xmm9
> > > > >
> > > > > +        pand    xmm15,xmm10
> > > > >
> > > > > +        pand    xmm12,xmm9
> > > > >
> > > > > +        pand    xmm14,xmm10
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm13,XMMWORD[80+rsp]
> > > > >
> > > > > +        paddd   xmm15,XMMWORD[112+rsp]
> > > > >
> > > > > +        paddd   xmm12,XMMWORD[64+rsp]
> > > > >
> > > > > +        paddd   xmm14,XMMWORD[96+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        movq    QWORD[rbx],xmm11
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edx,DWORD[280+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm12,xmm12,27
> > > > >
> > > > > +        pshufd  xmm13,xmm13,27
> > > > >
> > > > > +        pshufd  xmm14,xmm14,27
> > > > >
> > > > > +        pshufd  xmm15,xmm15,27
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm5,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        punpckldq       xmm12,xmm14
> > > > >
> > > > > +        punpckhdq       xmm5,xmm14
> > > > >
> > > > > +        punpckldq       xmm13,xmm15
> > > > >
> > > > > +        punpckhdq       xmm6,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        movq    QWORD[(0-128)+rdi],xmm12
> > > > >
> > > > > +        psrldq  xmm12,8
> > > > >
> > > > > +        movq    QWORD[(128-128)+rdi],xmm5
> > > > >
> > > > > +        psrldq  xmm5,8
> > > > >
> > > > > +        movq    QWORD[(32-128)+rdi],xmm12
> > > > >
> > > > > +        movq    QWORD[(160-128)+rdi],xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        movq    QWORD[(64-128)+rdi],xmm13
> > > > >
> > > > > +        psrldq  xmm13,8
> > > > >
> > > > > +        movq    QWORD[(192-128)+rdi],xmm6
> > > > >
> > > > > +        psrldq  xmm6,8
> > > > >
> > > > > +        movq    QWORD[(96-128)+rdi],xmm13
> > > > >
> > > > > +        movq    QWORD[(224-128)+rdi],xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rdi,[8+rdi]
> > > > >
> > > > > +        lea     rsi,[32+rsi]
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop_grande_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +$L$done_shaext:
> > > > >
> > > > > +
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > > >
> > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[rax]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$epilogue_shaext:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_sha256_multi_block_shaext:
> > > > >
> > > > > +ALIGN   256
> > > > >
> > > > > +K256:
> > > > >
> > > > > +        DD      1116352408,1116352408,1116352408,1116352408
> > > > >
> > > > > +        DD      1116352408,1116352408,1116352408,1116352408
> > > > >
> > > > > +        DD      1899447441,1899447441,1899447441,1899447441
> > > > >
> > > > > +        DD      1899447441,1899447441,1899447441,1899447441
> > > > >
> > > > > +        DD      3049323471,3049323471,3049323471,3049323471
> > > > >
> > > > > +        DD      3049323471,3049323471,3049323471,3049323471
> > > > >
> > > > > +        DD      3921009573,3921009573,3921009573,3921009573
> > > > >
> > > > > +        DD      3921009573,3921009573,3921009573,3921009573
> > > > >
> > > > > +        DD      961987163,961987163,961987163,961987163
> > > > >
> > > > > +        DD      961987163,961987163,961987163,961987163
> > > > >
> > > > > +        DD      1508970993,1508970993,1508970993,1508970993
> > > > >
> > > > > +        DD      1508970993,1508970993,1508970993,1508970993
> > > > >
> > > > > +        DD      2453635748,2453635748,2453635748,2453635748
> > > > >
> > > > > +        DD      2453635748,2453635748,2453635748,2453635748
> > > > >
> > > > > +        DD      2870763221,2870763221,2870763221,2870763221
> > > > >
> > > > > +        DD      2870763221,2870763221,2870763221,2870763221
> > > > >
> > > > > +        DD      3624381080,3624381080,3624381080,3624381080
> > > > >
> > > > > +        DD      3624381080,3624381080,3624381080,3624381080
> > > > >
> > > > > +        DD      310598401,310598401,310598401,310598401
> > > > >
> > > > > +        DD      310598401,310598401,310598401,310598401
> > > > >
> > > > > +        DD      607225278,607225278,607225278,607225278
> > > > >
> > > > > +        DD      607225278,607225278,607225278,607225278
> > > > >
> > > > > +        DD      1426881987,1426881987,1426881987,1426881987
> > > > >
> > > > > +        DD      1426881987,1426881987,1426881987,1426881987
> > > > >
> > > > > +        DD      1925078388,1925078388,1925078388,1925078388
> > > > >
> > > > > +        DD      1925078388,1925078388,1925078388,1925078388
> > > > >
> > > > > +        DD      2162078206,2162078206,2162078206,2162078206
> > > > >
> > > > > +        DD      2162078206,2162078206,2162078206,2162078206
> > > > >
> > > > > +        DD      2614888103,2614888103,2614888103,2614888103
> > > > >
> > > > > +        DD      2614888103,2614888103,2614888103,2614888103
> > > > >
> > > > > +        DD      3248222580,3248222580,3248222580,3248222580
> > > > >
> > > > > +        DD      3248222580,3248222580,3248222580,3248222580
> > > > >
> > > > > +        DD      3835390401,3835390401,3835390401,3835390401
> > > > >
> > > > > +        DD      3835390401,3835390401,3835390401,3835390401
> > > > >
> > > > > +        DD      4022224774,4022224774,4022224774,4022224774
> > > > >
> > > > > +        DD      4022224774,4022224774,4022224774,4022224774
> > > > >
> > > > > +        DD      264347078,264347078,264347078,264347078
> > > > >
> > > > > +        DD      264347078,264347078,264347078,264347078
> > > > >
> > > > > +        DD      604807628,604807628,604807628,604807628
> > > > >
> > > > > +        DD      604807628,604807628,604807628,604807628
> > > > >
> > > > > +        DD      770255983,770255983,770255983,770255983
> > > > >
> > > > > +        DD      770255983,770255983,770255983,770255983
> > > > >
> > > > > +        DD      1249150122,1249150122,1249150122,1249150122
> > > > >
> > > > > +        DD      1249150122,1249150122,1249150122,1249150122
> > > > >
> > > > > +        DD      1555081692,1555081692,1555081692,1555081692
> > > > >
> > > > > +        DD      1555081692,1555081692,1555081692,1555081692
> > > > >
> > > > > +        DD      1996064986,1996064986,1996064986,1996064986
> > > > >
> > > > > +        DD      1996064986,1996064986,1996064986,1996064986
> > > > >
> > > > > +        DD      2554220882,2554220882,2554220882,2554220882
> > > > >
> > > > > +        DD      2554220882,2554220882,2554220882,2554220882
> > > > >
> > > > > +        DD      2821834349,2821834349,2821834349,2821834349
> > > > >
> > > > > +        DD      2821834349,2821834349,2821834349,2821834349
> > > > >
> > > > > +        DD      2952996808,2952996808,2952996808,2952996808
> > > > >
> > > > > +        DD      2952996808,2952996808,2952996808,2952996808
> > > > >
> > > > > +        DD      3210313671,3210313671,3210313671,3210313671
> > > > >
> > > > > +        DD      3210313671,3210313671,3210313671,3210313671
> > > > >
> > > > > +        DD      3336571891,3336571891,3336571891,3336571891
> > > > >
> > > > > +        DD      3336571891,3336571891,3336571891,3336571891
> > > > >
> > > > > +        DD      3584528711,3584528711,3584528711,3584528711
> > > > >
> > > > > +        DD      3584528711,3584528711,3584528711,3584528711
> > > > >
> > > > > +        DD      113926993,113926993,113926993,113926993
> > > > >
> > > > > +        DD      113926993,113926993,113926993,113926993
> > > > >
> > > > > +        DD      338241895,338241895,338241895,338241895
> > > > >
> > > > > +        DD      338241895,338241895,338241895,338241895
> > > > >
> > > > > +        DD      666307205,666307205,666307205,666307205
> > > > >
> > > > > +        DD      666307205,666307205,666307205,666307205
> > > > >
> > > > > +        DD      773529912,773529912,773529912,773529912
> > > > >
> > > > > +        DD      773529912,773529912,773529912,773529912
> > > > >
> > > > > +        DD      1294757372,1294757372,1294757372,1294757372
> > > > >
> > > > > +        DD      1294757372,1294757372,1294757372,1294757372
> > > > >
> > > > > +        DD      1396182291,1396182291,1396182291,1396182291
> > > > >
> > > > > +        DD      1396182291,1396182291,1396182291,1396182291
> > > > >
> > > > > +        DD      1695183700,1695183700,1695183700,1695183700
> > > > >
> > > > > +        DD      1695183700,1695183700,1695183700,1695183700
> > > > >
> > > > > +        DD      1986661051,1986661051,1986661051,1986661051
> > > > >
> > > > > +        DD      1986661051,1986661051,1986661051,1986661051
> > > > >
> > > > > +        DD      2177026350,2177026350,2177026350,2177026350
> > > > >
> > > > > +        DD      2177026350,2177026350,2177026350,2177026350
> > > > >
> > > > > +        DD      2456956037,2456956037,2456956037,2456956037
> > > > >
> > > > > +        DD      2456956037,2456956037,2456956037,2456956037
> > > > >
> > > > > +        DD      2730485921,2730485921,2730485921,2730485921
> > > > >
> > > > > +        DD      2730485921,2730485921,2730485921,2730485921
> > > > >
> > > > > +        DD      2820302411,2820302411,2820302411,2820302411
> > > > >
> > > > > +        DD      2820302411,2820302411,2820302411,2820302411
> > > > >
> > > > > +        DD      3259730800,3259730800,3259730800,3259730800
> > > > >
> > > > > +        DD      3259730800,3259730800,3259730800,3259730800
> > > > >
> > > > > +        DD      3345764771,3345764771,3345764771,3345764771
> > > > >
> > > > > +        DD      3345764771,3345764771,3345764771,3345764771
> > > > >
> > > > > +        DD      3516065817,3516065817,3516065817,3516065817
> > > > >
> > > > > +        DD      3516065817,3516065817,3516065817,3516065817
> > > > >
> > > > > +        DD      3600352804,3600352804,3600352804,3600352804
> > > > >
> > > > > +        DD      3600352804,3600352804,3600352804,3600352804
> > > > >
> > > > > +        DD      4094571909,4094571909,4094571909,4094571909
> > > > >
> > > > > +        DD      4094571909,4094571909,4094571909,4094571909
> > > > >
> > > > > +        DD      275423344,275423344,275423344,275423344
> > > > >
> > > > > +        DD      275423344,275423344,275423344,275423344
> > > > >
> > > > > +        DD      430227734,430227734,430227734,430227734
> > > > >
> > > > > +        DD      430227734,430227734,430227734,430227734
> > > > >
> > > > > +        DD      506948616,506948616,506948616,506948616
> > > > >
> > > > > +        DD      506948616,506948616,506948616,506948616
> > > > >
> > > > > +        DD      659060556,659060556,659060556,659060556
> > > > >
> > > > > +        DD      659060556,659060556,659060556,659060556
> > > > >
> > > > > +        DD      883997877,883997877,883997877,883997877
> > > > >
> > > > > +        DD      883997877,883997877,883997877,883997877
> > > > >
> > > > > +        DD      958139571,958139571,958139571,958139571
> > > > >
> > > > > +        DD      958139571,958139571,958139571,958139571
> > > > >
> > > > > +        DD      1322822218,1322822218,1322822218,1322822218
> > > > >
> > > > > +        DD      1322822218,1322822218,1322822218,1322822218
> > > > >
> > > > > +        DD      1537002063,1537002063,1537002063,1537002063
> > > > >
> > > > > +        DD      1537002063,1537002063,1537002063,1537002063
> > > > >
> > > > > +        DD      1747873779,1747873779,1747873779,1747873779
> > > > >
> > > > > +        DD      1747873779,1747873779,1747873779,1747873779
> > > > >
> > > > > +        DD      1955562222,1955562222,1955562222,1955562222
> > > > >
> > > > > +        DD      1955562222,1955562222,1955562222,1955562222
> > > > >
> > > > > +        DD      2024104815,2024104815,2024104815,2024104815
> > > > >
> > > > > +        DD      2024104815,2024104815,2024104815,2024104815
> > > > >
> > > > > +        DD      2227730452,2227730452,2227730452,2227730452
> > > > >
> > > > > +        DD      2227730452,2227730452,2227730452,2227730452
> > > > >
> > > > > +        DD      2361852424,2361852424,2361852424,2361852424
> > > > >
> > > > > +        DD      2361852424,2361852424,2361852424,2361852424
> > > > >
> > > > > +        DD      2428436474,2428436474,2428436474,2428436474
> > > > >
> > > > > +        DD      2428436474,2428436474,2428436474,2428436474
> > > > >
> > > > > +        DD      2756734187,2756734187,2756734187,2756734187
> > > > >
> > > > > +        DD      2756734187,2756734187,2756734187,2756734187
> > > > >
> > > > > +        DD      3204031479,3204031479,3204031479,3204031479
> > > > >
> > > > > +        DD      3204031479,3204031479,3204031479,3204031479
> > > > >
> > > > > +        DD      3329325298,3329325298,3329325298,3329325298
> > > > >
> > > > > +        DD      3329325298,3329325298,3329325298,3329325298
> > > > >
> > > > > +$L$pbswap:
> > > > >
> > > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > >
> > > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > >
> > > > > +K256_shaext:
> > > > >
> > > > > +        DD      0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
> > > > >
> > > > > +        DD      0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
> > > > >
> > > > > +        DD      0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
> > > > >
> > > > > +        DD      0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
> > > > >
> > > > > +        DD      0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
> > > > >
> > > > > +        DD      0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
> > > > >
> > > > > +        DD      0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
> > > > >
> > > > > +        DD      0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
> > > > >
> > > > > +        DD      0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
> > > > >
> > > > > +        DD      0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
> > > > >
> > > > > +        DD      0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
> > > > >
> > > > > +        DD      0xd192e819,0xd6990624,0xf40e3585,0x106aa070
> > > > >
> > > > > +        DD      0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
> > > > >
> > > > > +        DD      0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
> > > > >
> > > > > +        DD      0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
> > > > >
> > > > > +        DD      0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
> > > > >
> > > > > +DB      83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111
> > > > >
> > > > > +DB      99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114
> > > > >
> > > > > +DB      32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71
> > > > >
> > > > > +DB      65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112
> > > > >
> > > > > +DB      101,110,115,115,108,46,111,114,103,62,0
> > > > >
> > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[272+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > >
> > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > >
> > > > > +        mov     QWORD[144+r8],rbx
> > > > >
> > > > > +        mov     QWORD[160+r8],rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((-24-160))+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,20
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +$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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +section .pdata rdata align=4
> > > > >
> > > > > +ALIGN   4
> > > > >
> > > > > +        DD      $L$SEH_begin_sha256_multi_block wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_sha256_multi_block wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_sha256_multi_block wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_begin_sha256_multi_block_shaext wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_sha256_multi_block_shaext wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_sha256_multi_block_shaext wrt ..imagebase
> > > > >
> > > > > +section .xdata rdata align=8
> > > > >
> > > > > +ALIGN   8
> > > > >
> > > > > +$L$SEH_info_sha256_multi_block:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
> > > > >
> > > > > +$L$SEH_info_sha256_multi_block_shaext:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
> > > > > wrt ..imagebase
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
> > > x86_64.nasm
> > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..70e49862a3
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
> x86_64.nasm
> > > > > @@ -0,0 +1,3313 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +global  sha256_block_data_order
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r11,[OPENSSL_ia32cap_P]
> > > > >
> > > > > +        mov     r9d,DWORD[r11]
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        mov     r11d,DWORD[8+r11]
> > > > >
> > > > > +        test    r11d,536870912
> > > > >
> > > > > +        jnz     NEAR _shaext_shortcut
> > > > >
> > > > > +        test    r10d,512
> > > > >
> > > > > +        jnz     NEAR $L$ssse3_shortcut
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +
> > > > >
> > > > > +        shl     rdx,4
> > > > >
> > > > > +        sub     rsp,16*4+4*8
> > > > >
> > > > > +        lea     rdx,[rdx*4+rsi]
> > > > >
> > > > > +        and     rsp,-64
> > > > >
> > > > > +        mov     QWORD[((64+0))+rsp],rdi
> > > > >
> > > > > +        mov     QWORD[((64+8))+rsp],rsi
> > > > >
> > > > > +        mov     QWORD[((64+16))+rsp],rdx
> > > > >
> > > > > +        mov     QWORD[88+rsp],rax
> > > > >
> > > > > +
> > > > >
> > > > > +$L$prologue:
> > > > >
> > > > > +
> > > > >
> > > > > +        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:
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        lea     rbp,[K256]
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     r12d,DWORD[rsi]
> > > > >
> > > > > +        mov     r13d,r8d
> > > > >
> > > > > +        mov     r14d,eax
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[rsp],r12d
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        and     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r11d
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,eax
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,ebx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r11d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r11d,edi
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     r11d,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[4+rsi]
> > > > >
> > > > > +        mov     r13d,edx
> > > > >
> > > > > +        mov     r14d,r11d
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[4+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r10d
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,r11d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r10d,r15d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     r10d,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[8+rsi]
> > > > >
> > > > > +        mov     r13d,ecx
> > > > >
> > > > > +        mov     r14d,r10d
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[8+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        and     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r9d
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,r10d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,r11d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r9d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r9d,edi
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     r9d,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[12+rsi]
> > > > >
> > > > > +        mov     r13d,ebx
> > > > >
> > > > > +        mov     r14d,r9d
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[12+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r8d
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,r9d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,r10d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r8d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r8d,r15d
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[20+rbp]
> > > > >
> > > > > +        add     r8d,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[16+rsi]
> > > > >
> > > > > +        mov     r13d,eax
> > > > >
> > > > > +        mov     r14d,r8d
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[16+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        and     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,edx
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,r8d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,r9d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     edx,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edx,edi
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     edx,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[20+rsi]
> > > > >
> > > > > +        mov     r13d,r11d
> > > > >
> > > > > +        mov     r14d,edx
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[20+rsp],r12d
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        and     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,r8d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     ecx,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     ecx,r15d
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     ecx,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[24+rsi]
> > > > >
> > > > > +        mov     r13d,r10d
> > > > >
> > > > > +        mov     r14d,ecx
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[24+rsp],r12d
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        and     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,ebx
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,ecx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,edx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     ebx,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     ebx,edi
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     ebx,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[28+rsi]
> > > > >
> > > > > +        mov     r13d,r9d
> > > > >
> > > > > +        mov     r14d,ebx
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[28+rsp],r12d
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        and     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     eax,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     eax,r15d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[20+rbp]
> > > > >
> > > > > +        add     eax,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[32+rsi]
> > > > >
> > > > > +        mov     r13d,r8d
> > > > >
> > > > > +        mov     r14d,eax
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[32+rsp],r12d
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        and     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r11d
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,eax
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,ebx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r11d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r11d,edi
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     r11d,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[36+rsi]
> > > > >
> > > > > +        mov     r13d,edx
> > > > >
> > > > > +        mov     r14d,r11d
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[36+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r10d
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,r11d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r10d,r15d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     r10d,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[40+rsi]
> > > > >
> > > > > +        mov     r13d,ecx
> > > > >
> > > > > +        mov     r14d,r10d
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[40+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        and     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r9d
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,r10d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,r11d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r9d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r9d,edi
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     r9d,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[44+rsi]
> > > > >
> > > > > +        mov     r13d,ebx
> > > > >
> > > > > +        mov     r14d,r9d
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[44+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r8d
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,r9d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,r10d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r8d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r8d,r15d
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[20+rbp]
> > > > >
> > > > > +        add     r8d,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[48+rsi]
> > > > >
> > > > > +        mov     r13d,eax
> > > > >
> > > > > +        mov     r14d,r8d
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[48+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        and     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,edx
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,r8d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,r9d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     edx,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edx,edi
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     edx,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[52+rsi]
> > > > >
> > > > > +        mov     r13d,r11d
> > > > >
> > > > > +        mov     r14d,edx
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[52+rsp],r12d
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        and     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,r8d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     ecx,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     ecx,r15d
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     ecx,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[56+rsi]
> > > > >
> > > > > +        mov     r13d,r10d
> > > > >
> > > > > +        mov     r14d,ecx
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[56+rsp],r12d
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        and     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,ebx
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,ecx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,edx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     ebx,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     ebx,edi
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     ebx,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[60+rsi]
> > > > >
> > > > > +        mov     r13d,r9d
> > > > >
> > > > > +        mov     r14d,ebx
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[60+rsp],r12d
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        and     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     eax,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     eax,r15d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[20+rbp]
> > > > >
> > > > > +        jmp     NEAR $L$rounds_16_xx
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$rounds_16_xx:
> > > > >
> > > > > +        mov     r13d,DWORD[4+rsp]
> > > > >
> > > > > +        mov     r15d,DWORD[56+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     eax,r14d
> > > > >
> > > > > +        mov     r14d,r15d
> > > > >
> > > > > +        ror     r15d,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15d,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        add     r12d,DWORD[36+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[rsp]
> > > > >
> > > > > +        mov     r13d,r8d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +        mov     r14d,eax
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[rsp],r12d
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        and     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r11d
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,eax
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,ebx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r11d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r11d,edi
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[8+rsp]
> > > > >
> > > > > +        mov     edi,DWORD[60+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     r11d,r14d
> > > > >
> > > > > +        mov     r14d,edi
> > > > >
> > > > > +        ror     edi,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     edi,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        add     r12d,DWORD[40+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[4+rsp]
> > > > >
> > > > > +        mov     r13d,edx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +        mov     r14d,r11d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[4+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r10d
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,r11d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r10d,r15d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[12+rsp]
> > > > >
> > > > > +        mov     r15d,DWORD[rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     r10d,r14d
> > > > >
> > > > > +        mov     r14d,r15d
> > > > >
> > > > > +        ror     r15d,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15d,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        add     r12d,DWORD[44+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[8+rsp]
> > > > >
> > > > > +        mov     r13d,ecx
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +        mov     r14d,r10d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[8+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        and     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r9d
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,r10d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,r11d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r9d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r9d,edi
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[16+rsp]
> > > > >
> > > > > +        mov     edi,DWORD[4+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     r9d,r14d
> > > > >
> > > > > +        mov     r14d,edi
> > > > >
> > > > > +        ror     edi,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     edi,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        add     r12d,DWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[12+rsp]
> > > > >
> > > > > +        mov     r13d,ebx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +        mov     r14d,r9d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[12+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r8d
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,r9d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,r10d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r8d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r8d,r15d
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[20+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[20+rsp]
> > > > >
> > > > > +        mov     r15d,DWORD[8+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     r8d,r14d
> > > > >
> > > > > +        mov     r14d,r15d
> > > > >
> > > > > +        ror     r15d,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15d,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        add     r12d,DWORD[52+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[16+rsp]
> > > > >
> > > > > +        mov     r13d,eax
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +        mov     r14d,r8d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[16+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        and     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,edx
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,r8d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,r9d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     edx,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edx,edi
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[24+rsp]
> > > > >
> > > > > +        mov     edi,DWORD[12+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     edx,r14d
> > > > >
> > > > > +        mov     r14d,edi
> > > > >
> > > > > +        ror     edi,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     edi,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        add     r12d,DWORD[56+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[20+rsp]
> > > > >
> > > > > +        mov     r13d,r11d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +        mov     r14d,edx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[20+rsp],r12d
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        and     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,r8d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     ecx,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     ecx,r15d
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[28+rsp]
> > > > >
> > > > > +        mov     r15d,DWORD[16+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     ecx,r14d
> > > > >
> > > > > +        mov     r14d,r15d
> > > > >
> > > > > +        ror     r15d,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15d,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        add     r12d,DWORD[60+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[24+rsp]
> > > > >
> > > > > +        mov     r13d,r10d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +        mov     r14d,ecx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[24+rsp],r12d
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        and     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,ebx
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,ecx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,edx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     ebx,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     ebx,edi
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[32+rsp]
> > > > >
> > > > > +        mov     edi,DWORD[20+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     ebx,r14d
> > > > >
> > > > > +        mov     r14d,edi
> > > > >
> > > > > +        ror     edi,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     edi,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        add     r12d,DWORD[rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[28+rsp]
> > > > >
> > > > > +        mov     r13d,r9d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +        mov     r14d,ebx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[28+rsp],r12d
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        and     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     eax,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     eax,r15d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[20+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[36+rsp]
> > > > >
> > > > > +        mov     r15d,DWORD[24+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     eax,r14d
> > > > >
> > > > > +        mov     r14d,r15d
> > > > >
> > > > > +        ror     r15d,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15d,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        add     r12d,DWORD[4+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[32+rsp]
> > > > >
> > > > > +        mov     r13d,r8d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +        mov     r14d,eax
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[32+rsp],r12d
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        and     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r11d
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,eax
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,ebx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r11d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r11d,edi
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[40+rsp]
> > > > >
> > > > > +        mov     edi,DWORD[28+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     r11d,r14d
> > > > >
> > > > > +        mov     r14d,edi
> > > > >
> > > > > +        ror     edi,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     edi,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        add     r12d,DWORD[8+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[36+rsp]
> > > > >
> > > > > +        mov     r13d,edx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +        mov     r14d,r11d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[36+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r10d
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,r11d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r10d,r15d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[44+rsp]
> > > > >
> > > > > +        mov     r15d,DWORD[32+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     r10d,r14d
> > > > >
> > > > > +        mov     r14d,r15d
> > > > >
> > > > > +        ror     r15d,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15d,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        add     r12d,DWORD[12+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[40+rsp]
> > > > >
> > > > > +        mov     r13d,ecx
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +        mov     r14d,r10d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[40+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        and     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r9d
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,r10d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,r11d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r9d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r9d,edi
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[48+rsp]
> > > > >
> > > > > +        mov     edi,DWORD[36+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     r9d,r14d
> > > > >
> > > > > +        mov     r14d,edi
> > > > >
> > > > > +        ror     edi,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     edi,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        add     r12d,DWORD[16+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[44+rsp]
> > > > >
> > > > > +        mov     r13d,ebx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +        mov     r14d,r9d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[44+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r8d
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,r9d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,r10d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r8d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r8d,r15d
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[20+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[52+rsp]
> > > > >
> > > > > +        mov     r15d,DWORD[40+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     r8d,r14d
> > > > >
> > > > > +        mov     r14d,r15d
> > > > >
> > > > > +        ror     r15d,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15d,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        add     r12d,DWORD[20+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[48+rsp]
> > > > >
> > > > > +        mov     r13d,eax
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +        mov     r14d,r8d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[48+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        and     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,edx
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,r8d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,r9d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     edx,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edx,edi
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[56+rsp]
> > > > >
> > > > > +        mov     edi,DWORD[44+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     edx,r14d
> > > > >
> > > > > +        mov     r14d,edi
> > > > >
> > > > > +        ror     edi,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     edi,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        add     r12d,DWORD[24+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[52+rsp]
> > > > >
> > > > > +        mov     r13d,r11d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +        mov     r14d,edx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[52+rsp],r12d
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        and     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,r8d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     ecx,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     ecx,r15d
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[60+rsp]
> > > > >
> > > > > +        mov     r15d,DWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     ecx,r14d
> > > > >
> > > > > +        mov     r14d,r15d
> > > > >
> > > > > +        ror     r15d,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15d,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        add     r12d,DWORD[28+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[56+rsp]
> > > > >
> > > > > +        mov     r13d,r10d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +        mov     r14d,ecx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[56+rsp],r12d
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        and     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,ebx
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,ecx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,edx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     ebx,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     ebx,edi
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[rsp]
> > > > >
> > > > > +        mov     edi,DWORD[52+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     ebx,r14d
> > > > >
> > > > > +        mov     r14d,edi
> > > > >
> > > > > +        ror     edi,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     edi,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        add     r12d,DWORD[32+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[60+rsp]
> > > > >
> > > > > +        mov     r13d,r9d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +        mov     r14d,ebx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[60+rsp],r12d
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        and     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     eax,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     eax,r15d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[20+rbp]
> > > > >
> > > > > +        cmp     BYTE[3+rbp],0
> > > > >
> > > > > +        jnz     NEAR $L$rounds_16_xx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,QWORD[((64+0))+rsp]
> > > > >
> > > > > +        add     eax,r14d
> > > > >
> > > > > +        lea     rsi,[64+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        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[((64+16))+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        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[88+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$epilogue:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_sha256_block_data_order:
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +
> > > > >
> > > > > +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      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
> > > > >
> > > > > +DB      32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
> > > > >
> > > > > +DB      111,114,103,62,0
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +sha256_block_data_order_shaext:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_sha256_block_data_order_shaext:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +_shaext_shortcut:
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-88))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[(-8-80)+rax],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[(-8-64)+rax],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[(-8-48)+rax],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[(-8-32)+rax],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-8-16)+rax],xmm10
> > > > >
> > > > > +$L$prologue_shaext:
> > > > >
> > > > > +        lea     rcx,[((K256+128))]
> > > > >
> > > > > +        movdqu  xmm1,XMMWORD[rdi]
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[16+rdi]
> > > > >
> > > > > +        movdqa  xmm7,XMMWORD[((512-128))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x1b
> > > > >
> > > > > +        pshufd  xmm1,xmm1,0xb1
> > > > >
> > > > > +        pshufd  xmm2,xmm2,0x1b
> > > > >
> > > > > +        movdqa  xmm8,xmm7
> > > > >
> > > > > +DB      102,15,58,15,202,8
> > > > >
> > > > > +        punpcklqdq      xmm2,xmm0
> > > > >
> > > > > +        jmp     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$oop_shaext:
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[rsi]
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[16+rsi]
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[32+rsi]
> > > > >
> > > > > +DB      102,15,56,0,223
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[48+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((0-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm3
> > > > >
> > > > > +DB      102,15,56,0,231
> > > > >
> > > > > +        movdqa  xmm10,xmm2
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        movdqa  xmm9,xmm1
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((32-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm4
> > > > >
> > > > > +DB      102,15,56,0,239
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        lea     rsi,[64+rsi]
> > > > >
> > > > > +DB      15,56,204,220
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((64-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm5
> > > > >
> > > > > +DB      102,15,56,0,247
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +DB      102,15,58,15,253,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm3,xmm7
> > > > >
> > > > > +DB      15,56,204,229
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((96-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm6
> > > > >
> > > > > +DB      15,56,205,222
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm3
> > > > >
> > > > > +DB      102,15,58,15,254,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm4,xmm7
> > > > >
> > > > > +DB      15,56,204,238
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((128-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm3
> > > > >
> > > > > +DB      15,56,205,227
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm4
> > > > >
> > > > > +DB      102,15,58,15,251,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +DB      15,56,204,243
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((160-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm4
> > > > >
> > > > > +DB      15,56,205,236
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +DB      102,15,58,15,252,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +DB      15,56,204,220
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((192-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm5
> > > > >
> > > > > +DB      15,56,205,245
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +DB      102,15,58,15,253,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm3,xmm7
> > > > >
> > > > > +DB      15,56,204,229
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((224-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm6
> > > > >
> > > > > +DB      15,56,205,222
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm3
> > > > >
> > > > > +DB      102,15,58,15,254,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm4,xmm7
> > > > >
> > > > > +DB      15,56,204,238
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((256-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm3
> > > > >
> > > > > +DB      15,56,205,227
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm4
> > > > >
> > > > > +DB      102,15,58,15,251,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +DB      15,56,204,243
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((288-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm4
> > > > >
> > > > > +DB      15,56,205,236
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +DB      102,15,58,15,252,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +DB      15,56,204,220
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((320-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm5
> > > > >
> > > > > +DB      15,56,205,245
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +DB      102,15,58,15,253,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm3,xmm7
> > > > >
> > > > > +DB      15,56,204,229
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((352-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm6
> > > > >
> > > > > +DB      15,56,205,222
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm3
> > > > >
> > > > > +DB      102,15,58,15,254,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm4,xmm7
> > > > >
> > > > > +DB      15,56,204,238
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((384-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm3
> > > > >
> > > > > +DB      15,56,205,227
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm4
> > > > >
> > > > > +DB      102,15,58,15,251,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +DB      15,56,204,243
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((416-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm4
> > > > >
> > > > > +DB      15,56,205,236
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +DB      102,15,58,15,252,4
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((448-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm5
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +DB      15,56,205,245
> > > > >
> > > > > +        movdqa  xmm7,xmm8
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((480-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm6
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        dec     rdx
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm2,xmm10
> > > > >
> > > > > +        paddd   xmm1,xmm9
> > > > >
> > > > > +        jnz     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm2,xmm2,0xb1
> > > > >
> > > > > +        pshufd  xmm7,xmm1,0x1b
> > > > >
> > > > > +        pshufd  xmm1,xmm1,0xb1
> > > > >
> > > > > +        punpckhqdq      xmm1,xmm2
> > > > >
> > > > > +DB      102,15,58,15,215,8
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  XMMWORD[rdi],xmm1
> > > > >
> > > > > +        movdqu  XMMWORD[16+rdi],xmm2
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-8-80))+rax]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-8-64))+rax]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-8-48))+rax]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-8-32))+rax]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-8-16))+rax]
> > > > >
> > > > > +        mov     rsp,rax
> > > > >
> > > > > +$L$epilogue_shaext:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_sha256_block_data_order_shaext:
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ssse3_shortcut:
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +
> > > > >
> > > > > +        shl     rdx,4
> > > > >
> > > > > +        sub     rsp,160
> > > > >
> > > > > +        lea     rdx,[rdx*4+rsi]
> > > > >
> > > > > +        and     rsp,-64
> > > > >
> > > > > +        mov     QWORD[((64+0))+rsp],rdi
> > > > >
> > > > > +        mov     QWORD[((64+8))+rsp],rsi
> > > > >
> > > > > +        mov     QWORD[((64+16))+rsp],rdx
> > > > >
> > > > > +        mov     QWORD[88+rsp],rax
> > > > >
> > > > > +
> > > > >
> > > > > +        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[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_ssse3
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$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[48+rsi]
> > > > >
> > > > > +        lea     rbp,[K256]
> > > > >
> > > > > +DB      102,15,56,0,207
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[rbp]
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[32+rbp]
> > > > >
> > > > > +DB      102,15,56,0,215
> > > > >
> > > > > +        paddd   xmm4,xmm0
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[64+rbp]
> > > > >
> > > > > +DB      102,15,56,0,223
> > > > >
> > > > > +        movdqa  xmm7,XMMWORD[96+rbp]
> > > > >
> > > > > +        paddd   xmm5,xmm1
> > > > >
> > > > > +        paddd   xmm6,xmm2
> > > > >
> > > > > +        paddd   xmm7,xmm3
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm4
> > > > >
> > > > > +        mov     r14d,eax
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm5
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm7
> > > > >
> > > > > +        mov     r13d,r8d
> > > > >
> > > > > +        jmp     NEAR $L$ssse3_00_47
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ssse3_00_47:
> > > > >
> > > > > +        sub     rbp,-128
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        movdqa  xmm4,xmm1
> > > > >
> > > > > +        mov     eax,r14d
> > > > >
> > > > > +        mov     r12d,r9d
> > > > >
> > > > > +        movdqa  xmm7,xmm3
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        xor     r12d,r10d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +DB      102,15,58,15,224,4
> > > > >
> > > > > +        and     r12d,r8d
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +DB      102,15,58,15,250,4
> > > > >
> > > > > +        add     r11d,DWORD[rsp]
> > > > >
> > > > > +        mov     r15d,eax
> > > > >
> > > > > +        xor     r12d,r10d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        xor     r15d,ebx
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +        movdqa  xmm6,xmm4
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        psrld   xmm4,3
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        add     r11d,r13d
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        paddd   xmm0,xmm7
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     edx,r11d
> > > > >
> > > > > +        psrld   xmm6,7
> > > > >
> > > > > +        add     r11d,edi
> > > > >
> > > > > +        mov     r13d,edx
> > > > >
> > > > > +        pshufd  xmm7,xmm3,250
> > > > >
> > > > > +        add     r14d,r11d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        pslld   xmm5,14
> > > > >
> > > > > +        mov     r11d,r14d
> > > > >
> > > > > +        mov     r12d,r8d
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        xor     r12d,r9d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        psrld   xmm6,11
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        and     r12d,edx
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        pslld   xmm5,11
> > > > >
> > > > > +        add     r10d,DWORD[4+rsp]
> > > > >
> > > > > +        mov     edi,r11d
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +        xor     r12d,r9d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        psrld   xmm7,10
> > > > >
> > > > > +        add     r10d,r13d
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +        paddd   xmm0,xmm4
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     ecx,r10d
> > > > >
> > > > > +        psrlq   xmm6,17
> > > > >
> > > > > +        add     r10d,r15d
> > > > >
> > > > > +        mov     r13d,ecx
> > > > >
> > > > > +        add     r14d,r10d
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r10d,r14d
> > > > >
> > > > > +        mov     r12d,edx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        psrlq   xmm6,2
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        xor     r12d,r8d
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        and     r12d,ecx
> > > > >
> > > > > +        pshufd  xmm7,xmm7,128
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        add     r9d,DWORD[8+rsp]
> > > > >
> > > > > +        mov     r15d,r10d
> > > > >
> > > > > +        psrldq  xmm7,8
> > > > >
> > > > > +        xor     r12d,r8d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,r11d
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        paddd   xmm0,xmm7
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        add     r9d,r13d
> > > > >
> > > > > +        pshufd  xmm7,xmm0,80
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     ebx,r9d
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        add     r9d,edi
> > > > >
> > > > > +        mov     r13d,ebx
> > > > >
> > > > > +        psrld   xmm7,10
> > > > >
> > > > > +        add     r14d,r9d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        psrlq   xmm6,17
> > > > >
> > > > > +        mov     r9d,r14d
> > > > >
> > > > > +        mov     r12d,ecx
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        xor     r12d,edx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        psrlq   xmm6,2
> > > > >
> > > > > +        and     r12d,ebx
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        add     r8d,DWORD[12+rsp]
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        mov     edi,r9d
> > > > >
> > > > > +        xor     r12d,edx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        pshufd  xmm7,xmm7,8
> > > > >
> > > > > +        xor     edi,r10d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[rbp]
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        pslldq  xmm7,8
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        add     r8d,r13d
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +        paddd   xmm0,xmm7
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     eax,r8d
> > > > >
> > > > > +        add     r8d,r15d
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        mov     r13d,eax
> > > > >
> > > > > +        add     r14d,r8d
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        movdqa  xmm4,xmm2
> > > > >
> > > > > +        mov     r8d,r14d
> > > > >
> > > > > +        mov     r12d,ebx
> > > > >
> > > > > +        movdqa  xmm7,xmm0
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        xor     r12d,ecx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +DB      102,15,58,15,225,4
> > > > >
> > > > > +        and     r12d,eax
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +DB      102,15,58,15,251,4
> > > > >
> > > > > +        add     edx,DWORD[16+rsp]
> > > > >
> > > > > +        mov     r15d,r8d
> > > > >
> > > > > +        xor     r12d,ecx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        xor     r15d,r9d
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +        movdqa  xmm6,xmm4
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        psrld   xmm4,3
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        add     edx,r13d
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +        paddd   xmm1,xmm7
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r11d,edx
> > > > >
> > > > > +        psrld   xmm6,7
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        mov     r13d,r11d
> > > > >
> > > > > +        pshufd  xmm7,xmm0,250
> > > > >
> > > > > +        add     r14d,edx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        pslld   xmm5,14
> > > > >
> > > > > +        mov     edx,r14d
> > > > >
> > > > > +        mov     r12d,eax
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        xor     r12d,ebx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        psrld   xmm6,11
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        and     r12d,r11d
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        pslld   xmm5,11
> > > > >
> > > > > +        add     ecx,DWORD[20+rsp]
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +        xor     r12d,ebx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        xor     edi,r8d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        psrld   xmm7,10
> > > > >
> > > > > +        add     ecx,r13d
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +        paddd   xmm1,xmm4
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r10d,ecx
> > > > >
> > > > > +        psrlq   xmm6,17
> > > > >
> > > > > +        add     ecx,r15d
> > > > >
> > > > > +        mov     r13d,r10d
> > > > >
> > > > > +        add     r14d,ecx
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     ecx,r14d
> > > > >
> > > > > +        mov     r12d,r11d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        psrlq   xmm6,2
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        xor     r12d,eax
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        and     r12d,r10d
> > > > >
> > > > > +        pshufd  xmm7,xmm7,128
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        add     ebx,DWORD[24+rsp]
> > > > >
> > > > > +        mov     r15d,ecx
> > > > >
> > > > > +        psrldq  xmm7,8
> > > > >
> > > > > +        xor     r12d,eax
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,edx
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        paddd   xmm1,xmm7
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        add     ebx,r13d
> > > > >
> > > > > +        pshufd  xmm7,xmm1,80
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r9d,ebx
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        mov     r13d,r9d
> > > > >
> > > > > +        psrld   xmm7,10
> > > > >
> > > > > +        add     r14d,ebx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        psrlq   xmm6,17
> > > > >
> > > > > +        mov     ebx,r14d
> > > > >
> > > > > +        mov     r12d,r10d
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        xor     r12d,r11d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        psrlq   xmm6,2
> > > > >
> > > > > +        and     r12d,r9d
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        add     eax,DWORD[28+rsp]
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        xor     r12d,r11d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        pshufd  xmm7,xmm7,8
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[32+rbp]
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        pslldq  xmm7,8
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        add     eax,r13d
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +        paddd   xmm1,xmm7
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r8d,eax
> > > > >
> > > > > +        add     eax,r15d
> > > > >
> > > > > +        paddd   xmm6,xmm1
> > > > >
> > > > > +        mov     r13d,r8d
> > > > >
> > > > > +        add     r14d,eax
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm6
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        movdqa  xmm4,xmm3
> > > > >
> > > > > +        mov     eax,r14d
> > > > >
> > > > > +        mov     r12d,r9d
> > > > >
> > > > > +        movdqa  xmm7,xmm1
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        xor     r12d,r10d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +DB      102,15,58,15,226,4
> > > > >
> > > > > +        and     r12d,r8d
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +DB      102,15,58,15,248,4
> > > > >
> > > > > +        add     r11d,DWORD[32+rsp]
> > > > >
> > > > > +        mov     r15d,eax
> > > > >
> > > > > +        xor     r12d,r10d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        xor     r15d,ebx
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +        movdqa  xmm6,xmm4
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        psrld   xmm4,3
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        add     r11d,r13d
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        paddd   xmm2,xmm7
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     edx,r11d
> > > > >
> > > > > +        psrld   xmm6,7
> > > > >
> > > > > +        add     r11d,edi
> > > > >
> > > > > +        mov     r13d,edx
> > > > >
> > > > > +        pshufd  xmm7,xmm1,250
> > > > >
> > > > > +        add     r14d,r11d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        pslld   xmm5,14
> > > > >
> > > > > +        mov     r11d,r14d
> > > > >
> > > > > +        mov     r12d,r8d
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        xor     r12d,r9d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        psrld   xmm6,11
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        and     r12d,edx
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        pslld   xmm5,11
> > > > >
> > > > > +        add     r10d,DWORD[36+rsp]
> > > > >
> > > > > +        mov     edi,r11d
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +        xor     r12d,r9d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        psrld   xmm7,10
> > > > >
> > > > > +        add     r10d,r13d
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +        paddd   xmm2,xmm4
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     ecx,r10d
> > > > >
> > > > > +        psrlq   xmm6,17
> > > > >
> > > > > +        add     r10d,r15d
> > > > >
> > > > > +        mov     r13d,ecx
> > > > >
> > > > > +        add     r14d,r10d
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r10d,r14d
> > > > >
> > > > > +        mov     r12d,edx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        psrlq   xmm6,2
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        xor     r12d,r8d
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        and     r12d,ecx
> > > > >
> > > > > +        pshufd  xmm7,xmm7,128
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        add     r9d,DWORD[40+rsp]
> > > > >
> > > > > +        mov     r15d,r10d
> > > > >
> > > > > +        psrldq  xmm7,8
> > > > >
> > > > > +        xor     r12d,r8d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,r11d
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        paddd   xmm2,xmm7
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        add     r9d,r13d
> > > > >
> > > > > +        pshufd  xmm7,xmm2,80
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     ebx,r9d
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        add     r9d,edi
> > > > >
> > > > > +        mov     r13d,ebx
> > > > >
> > > > > +        psrld   xmm7,10
> > > > >
> > > > > +        add     r14d,r9d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        psrlq   xmm6,17
> > > > >
> > > > > +        mov     r9d,r14d
> > > > >
> > > > > +        mov     r12d,ecx
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        xor     r12d,edx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        psrlq   xmm6,2
> > > > >
> > > > > +        and     r12d,ebx
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        add     r8d,DWORD[44+rsp]
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        mov     edi,r9d
> > > > >
> > > > > +        xor     r12d,edx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        pshufd  xmm7,xmm7,8
> > > > >
> > > > > +        xor     edi,r10d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[64+rbp]
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        pslldq  xmm7,8
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        add     r8d,r13d
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +        paddd   xmm2,xmm7
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     eax,r8d
> > > > >
> > > > > +        add     r8d,r15d
> > > > >
> > > > > +        paddd   xmm6,xmm2
> > > > >
> > > > > +        mov     r13d,eax
> > > > >
> > > > > +        add     r14d,r8d
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        mov     r8d,r14d
> > > > >
> > > > > +        mov     r12d,ebx
> > > > >
> > > > > +        movdqa  xmm7,xmm2
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        xor     r12d,ecx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +DB      102,15,58,15,227,4
> > > > >
> > > > > +        and     r12d,eax
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +DB      102,15,58,15,249,4
> > > > >
> > > > > +        add     edx,DWORD[48+rsp]
> > > > >
> > > > > +        mov     r15d,r8d
> > > > >
> > > > > +        xor     r12d,ecx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        xor     r15d,r9d
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +        movdqa  xmm6,xmm4
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        psrld   xmm4,3
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        add     edx,r13d
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +        paddd   xmm3,xmm7
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r11d,edx
> > > > >
> > > > > +        psrld   xmm6,7
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        mov     r13d,r11d
> > > > >
> > > > > +        pshufd  xmm7,xmm2,250
> > > > >
> > > > > +        add     r14d,edx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        pslld   xmm5,14
> > > > >
> > > > > +        mov     edx,r14d
> > > > >
> > > > > +        mov     r12d,eax
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        xor     r12d,ebx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        psrld   xmm6,11
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        and     r12d,r11d
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        pslld   xmm5,11
> > > > >
> > > > > +        add     ecx,DWORD[52+rsp]
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +        xor     r12d,ebx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        xor     edi,r8d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        psrld   xmm7,10
> > > > >
> > > > > +        add     ecx,r13d
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +        paddd   xmm3,xmm4
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r10d,ecx
> > > > >
> > > > > +        psrlq   xmm6,17
> > > > >
> > > > > +        add     ecx,r15d
> > > > >
> > > > > +        mov     r13d,r10d
> > > > >
> > > > > +        add     r14d,ecx
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     ecx,r14d
> > > > >
> > > > > +        mov     r12d,r11d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        psrlq   xmm6,2
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        xor     r12d,eax
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        and     r12d,r10d
> > > > >
> > > > > +        pshufd  xmm7,xmm7,128
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        add     ebx,DWORD[56+rsp]
> > > > >
> > > > > +        mov     r15d,ecx
> > > > >
> > > > > +        psrldq  xmm7,8
> > > > >
> > > > > +        xor     r12d,eax
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,edx
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        paddd   xmm3,xmm7
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        add     ebx,r13d
> > > > >
> > > > > +        pshufd  xmm7,xmm3,80
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r9d,ebx
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        mov     r13d,r9d
> > > > >
> > > > > +        psrld   xmm7,10
> > > > >
> > > > > +        add     r14d,ebx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        psrlq   xmm6,17
> > > > >
> > > > > +        mov     ebx,r14d
> > > > >
> > > > > +        mov     r12d,r10d
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        xor     r12d,r11d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        psrlq   xmm6,2
> > > > >
> > > > > +        and     r12d,r9d
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        add     eax,DWORD[60+rsp]
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        xor     r12d,r11d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        pshufd  xmm7,xmm7,8
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[96+rbp]
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        pslldq  xmm7,8
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        add     eax,r13d
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +        paddd   xmm3,xmm7
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r8d,eax
> > > > >
> > > > > +        add     eax,r15d
> > > > >
> > > > > +        paddd   xmm6,xmm3
> > > > >
> > > > > +        mov     r13d,r8d
> > > > >
> > > > > +        add     r14d,eax
> > > > >
> > > > > +        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
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        xor     r12d,r10d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        and     r12d,r8d
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        add     r11d,DWORD[rsp]
> > > > >
> > > > > +        mov     r15d,eax
> > > > >
> > > > > +        xor     r12d,r10d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,ebx
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        add     r11d,r13d
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     edx,r11d
> > > > >
> > > > > +        add     r11d,edi
> > > > >
> > > > > +        mov     r13d,edx
> > > > >
> > > > > +        add     r14d,r11d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r11d,r14d
> > > > >
> > > > > +        mov     r12d,r8d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        xor     r12d,r9d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        and     r12d,edx
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        add     r10d,DWORD[4+rsp]
> > > > >
> > > > > +        mov     edi,r11d
> > > > >
> > > > > +        xor     r12d,r9d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        add     r10d,r13d
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     ecx,r10d
> > > > >
> > > > > +        add     r10d,r15d
> > > > >
> > > > > +        mov     r13d,ecx
> > > > >
> > > > > +        add     r14d,r10d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r10d,r14d
> > > > >
> > > > > +        mov     r12d,edx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        xor     r12d,r8d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        and     r12d,ecx
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        add     r9d,DWORD[8+rsp]
> > > > >
> > > > > +        mov     r15d,r10d
> > > > >
> > > > > +        xor     r12d,r8d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,r11d
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        add     r9d,r13d
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     ebx,r9d
> > > > >
> > > > > +        add     r9d,edi
> > > > >
> > > > > +        mov     r13d,ebx
> > > > >
> > > > > +        add     r14d,r9d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r9d,r14d
> > > > >
> > > > > +        mov     r12d,ecx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        xor     r12d,edx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        and     r12d,ebx
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        add     r8d,DWORD[12+rsp]
> > > > >
> > > > > +        mov     edi,r9d
> > > > >
> > > > > +        xor     r12d,edx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     edi,r10d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        add     r8d,r13d
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     eax,r8d
> > > > >
> > > > > +        add     r8d,r15d
> > > > >
> > > > > +        mov     r13d,eax
> > > > >
> > > > > +        add     r14d,r8d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r8d,r14d
> > > > >
> > > > > +        mov     r12d,ebx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        xor     r12d,ecx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        and     r12d,eax
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        add     edx,DWORD[16+rsp]
> > > > >
> > > > > +        mov     r15d,r8d
> > > > >
> > > > > +        xor     r12d,ecx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,r9d
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        add     edx,r13d
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r11d,edx
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        mov     r13d,r11d
> > > > >
> > > > > +        add     r14d,edx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edx,r14d
> > > > >
> > > > > +        mov     r12d,eax
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        xor     r12d,ebx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        and     r12d,r11d
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        add     ecx,DWORD[20+rsp]
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        xor     r12d,ebx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     edi,r8d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        add     ecx,r13d
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r10d,ecx
> > > > >
> > > > > +        add     ecx,r15d
> > > > >
> > > > > +        mov     r13d,r10d
> > > > >
> > > > > +        add     r14d,ecx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     ecx,r14d
> > > > >
> > > > > +        mov     r12d,r11d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        xor     r12d,eax
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        and     r12d,r10d
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        add     ebx,DWORD[24+rsp]
> > > > >
> > > > > +        mov     r15d,ecx
> > > > >
> > > > > +        xor     r12d,eax
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,edx
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        add     ebx,r13d
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r9d,ebx
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        mov     r13d,r9d
> > > > >
> > > > > +        add     r14d,ebx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     ebx,r14d
> > > > >
> > > > > +        mov     r12d,r10d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        xor     r12d,r11d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        and     r12d,r9d
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        add     eax,DWORD[28+rsp]
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        xor     r12d,r11d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        add     eax,r13d
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r8d,eax
> > > > >
> > > > > +        add     eax,r15d
> > > > >
> > > > > +        mov     r13d,r8d
> > > > >
> > > > > +        add     r14d,eax
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     eax,r14d
> > > > >
> > > > > +        mov     r12d,r9d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        xor     r12d,r10d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        and     r12d,r8d
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        add     r11d,DWORD[32+rsp]
> > > > >
> > > > > +        mov     r15d,eax
> > > > >
> > > > > +        xor     r12d,r10d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,ebx
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        add     r11d,r13d
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     edx,r11d
> > > > >
> > > > > +        add     r11d,edi
> > > > >
> > > > > +        mov     r13d,edx
> > > > >
> > > > > +        add     r14d,r11d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r11d,r14d
> > > > >
> > > > > +        mov     r12d,r8d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        xor     r12d,r9d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        and     r12d,edx
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        add     r10d,DWORD[36+rsp]
> > > > >
> > > > > +        mov     edi,r11d
> > > > >
> > > > > +        xor     r12d,r9d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        add     r10d,r13d
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     ecx,r10d
> > > > >
> > > > > +        add     r10d,r15d
> > > > >
> > > > > +        mov     r13d,ecx
> > > > >
> > > > > +        add     r14d,r10d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r10d,r14d
> > > > >
> > > > > +        mov     r12d,edx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        xor     r12d,r8d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        and     r12d,ecx
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        add     r9d,DWORD[40+rsp]
> > > > >
> > > > > +        mov     r15d,r10d
> > > > >
> > > > > +        xor     r12d,r8d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,r11d
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        add     r9d,r13d
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     ebx,r9d
> > > > >
> > > > > +        add     r9d,edi
> > > > >
> > > > > +        mov     r13d,ebx
> > > > >
> > > > > +        add     r14d,r9d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r9d,r14d
> > > > >
> > > > > +        mov     r12d,ecx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        xor     r12d,edx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        and     r12d,ebx
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        add     r8d,DWORD[44+rsp]
> > > > >
> > > > > +        mov     edi,r9d
> > > > >
> > > > > +        xor     r12d,edx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     edi,r10d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        add     r8d,r13d
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     eax,r8d
> > > > >
> > > > > +        add     r8d,r15d
> > > > >
> > > > > +        mov     r13d,eax
> > > > >
> > > > > +        add     r14d,r8d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r8d,r14d
> > > > >
> > > > > +        mov     r12d,ebx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        xor     r12d,ecx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        and     r12d,eax
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        add     edx,DWORD[48+rsp]
> > > > >
> > > > > +        mov     r15d,r8d
> > > > >
> > > > > +        xor     r12d,ecx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,r9d
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        add     edx,r13d
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r11d,edx
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        mov     r13d,r11d
> > > > >
> > > > > +        add     r14d,edx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edx,r14d
> > > > >
> > > > > +        mov     r12d,eax
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        xor     r12d,ebx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        and     r12d,r11d
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        add     ecx,DWORD[52+rsp]
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        xor     r12d,ebx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     edi,r8d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        add     ecx,r13d
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r10d,ecx
> > > > >
> > > > > +        add     ecx,r15d
> > > > >
> > > > > +        mov     r13d,r10d
> > > > >
> > > > > +        add     r14d,ecx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     ecx,r14d
> > > > >
> > > > > +        mov     r12d,r11d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        xor     r12d,eax
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        and     r12d,r10d
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        add     ebx,DWORD[56+rsp]
> > > > >
> > > > > +        mov     r15d,ecx
> > > > >
> > > > > +        xor     r12d,eax
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,edx
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        add     ebx,r13d
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r9d,ebx
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        mov     r13d,r9d
> > > > >
> > > > > +        add     r14d,ebx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     ebx,r14d
> > > > >
> > > > > +        mov     r12d,r10d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        xor     r12d,r11d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        and     r12d,r9d
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        add     eax,DWORD[60+rsp]
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        xor     r12d,r11d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        add     eax,r13d
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r8d,eax
> > > > >
> > > > > +        add     eax,r15d
> > > > >
> > > > > +        mov     r13d,r8d
> > > > >
> > > > > +        add     r14d,eax
> > > > >
> > > > > +        mov     rdi,QWORD[((64+0))+rsp]
> > > > >
> > > > > +        mov     eax,r14d
> > > > >
> > > > > +
> > > > >
> > > > > +        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[((64+16))+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        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[88+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[((-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$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:
> > > > >
> > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$in_prologue
> > > > >
> > > > > +        mov     rsi,rax
> > > > >
> > > > > +        mov     rax,QWORD[((64+24))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        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,[$L$epilogue]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((64+32))+rsi]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,8
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +$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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +shaext_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$prologue_shaext]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$epilogue_shaext]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((-8-80))+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,10
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +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_shaext
> > > wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_sha256_block_data_order_shaext wrt
> > ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_sha256_block_data_order_shaext 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_shaext:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      shaext_handler 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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-
> > > x86_64.nasm
> > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..c6397d4393
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-
> x86_64.nasm
> > > > > @@ -0,0 +1,1938 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +global  sha512_block_data_order
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +
> > > > >
> > > > > +        shl     rdx,4
> > > > >
> > > > > +        sub     rsp,16*8+4*8
> > > > >
> > > > > +        lea     rdx,[rdx*8+rsi]
> > > > >
> > > > > +        and     rsp,-64
> > > > >
> > > > > +        mov     QWORD[((128+0))+rsp],rdi
> > > > >
> > > > > +        mov     QWORD[((128+8))+rsp],rsi
> > > > >
> > > > > +        mov     QWORD[((128+16))+rsp],rdx
> > > > >
> > > > > +        mov     QWORD[152+rsp],rax
> > > > >
> > > > > +
> > > > >
> > > > > +$L$prologue:
> > > > >
> > > > > +
> > > > >
> > > > > +        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:
> > > > >
> > > > > +        mov     rdi,rbx
> > > > >
> > > > > +        lea     rbp,[K512]
> > > > >
> > > > > +        xor     rdi,rcx
> > > > >
> > > > > +        mov     r12,QWORD[rsi]
> > > > >
> > > > > +        mov     r13,r8
> > > > >
> > > > > +        mov     r14,rax
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[rsp],r12
> > > > >
> > > > > +        xor     r14,rax
> > > > >
> > > > > +        and     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r11
> > > > >
> > > > > +        xor     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,rax
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,rbx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r11,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r11,rdi
> > > > >
> > > > > +        add     rdx,r12
> > > > >
> > > > > +        add     r11,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        add     r11,r14
> > > > >
> > > > > +        mov     r12,QWORD[8+rsi]
> > > > >
> > > > > +        mov     r13,rdx
> > > > >
> > > > > +        mov     r14,r11
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rdx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[8+rsp],r12
> > > > >
> > > > > +        xor     r14,r11
> > > > >
> > > > > +        and     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r10
> > > > >
> > > > > +        xor     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rdx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,r11
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,rax
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r10,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r10,r15
> > > > >
> > > > > +        add     rcx,r12
> > > > >
> > > > > +        add     r10,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        add     r10,r14
> > > > >
> > > > > +        mov     r12,QWORD[16+rsi]
> > > > >
> > > > > +        mov     r13,rcx
> > > > >
> > > > > +        mov     r14,r10
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rcx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[16+rsp],r12
> > > > >
> > > > > +        xor     r14,r10
> > > > >
> > > > > +        and     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r9
> > > > >
> > > > > +        xor     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rcx
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,r10
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,r11
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r9,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r9,rdi
> > > > >
> > > > > +        add     rbx,r12
> > > > >
> > > > > +        add     r9,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        add     r9,r14
> > > > >
> > > > > +        mov     r12,QWORD[24+rsi]
> > > > >
> > > > > +        mov     r13,rbx
> > > > >
> > > > > +        mov     r14,r9
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rbx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[24+rsp],r12
> > > > >
> > > > > +        xor     r14,r9
> > > > >
> > > > > +        and     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r8
> > > > >
> > > > > +        xor     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rbx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,r9
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,r10
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r8,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r8,r15
> > > > >
> > > > > +        add     rax,r12
> > > > >
> > > > > +        add     r8,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        add     r8,r14
> > > > >
> > > > > +        mov     r12,QWORD[32+rsi]
> > > > >
> > > > > +        mov     r13,rax
> > > > >
> > > > > +        mov     r14,r8
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rax
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[32+rsp],r12
> > > > >
> > > > > +        xor     r14,r8
> > > > >
> > > > > +        and     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rdx
> > > > >
> > > > > +        xor     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rax
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,r8
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,r9
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rdx,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdx,rdi
> > > > >
> > > > > +        add     r11,r12
> > > > >
> > > > > +        add     rdx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        add     rdx,r14
> > > > >
> > > > > +        mov     r12,QWORD[40+rsi]
> > > > >
> > > > > +        mov     r13,r11
> > > > >
> > > > > +        mov     r14,rdx
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r11
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[40+rsp],r12
> > > > >
> > > > > +        xor     r14,rdx
> > > > >
> > > > > +        and     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rcx
> > > > >
> > > > > +        xor     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r11
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,rdx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,r8
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rcx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rcx,r15
> > > > >
> > > > > +        add     r10,r12
> > > > >
> > > > > +        add     rcx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        add     rcx,r14
> > > > >
> > > > > +        mov     r12,QWORD[48+rsi]
> > > > >
> > > > > +        mov     r13,r10
> > > > >
> > > > > +        mov     r14,rcx
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r10
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[48+rsp],r12
> > > > >
> > > > > +        xor     r14,rcx
> > > > >
> > > > > +        and     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rbx
> > > > >
> > > > > +        xor     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r10
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,rcx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,rdx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rbx,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rbx,rdi
> > > > >
> > > > > +        add     r9,r12
> > > > >
> > > > > +        add     rbx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        add     rbx,r14
> > > > >
> > > > > +        mov     r12,QWORD[56+rsi]
> > > > >
> > > > > +        mov     r13,r9
> > > > >
> > > > > +        mov     r14,rbx
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r9
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[56+rsp],r12
> > > > >
> > > > > +        xor     r14,rbx
> > > > >
> > > > > +        and     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rax
> > > > >
> > > > > +        xor     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r9
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,rbx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,rcx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rax,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rax,r15
> > > > >
> > > > > +        add     r8,r12
> > > > >
> > > > > +        add     rax,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        add     rax,r14
> > > > >
> > > > > +        mov     r12,QWORD[64+rsi]
> > > > >
> > > > > +        mov     r13,r8
> > > > >
> > > > > +        mov     r14,rax
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[64+rsp],r12
> > > > >
> > > > > +        xor     r14,rax
> > > > >
> > > > > +        and     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r11
> > > > >
> > > > > +        xor     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,rax
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,rbx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r11,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r11,rdi
> > > > >
> > > > > +        add     rdx,r12
> > > > >
> > > > > +        add     r11,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        add     r11,r14
> > > > >
> > > > > +        mov     r12,QWORD[72+rsi]
> > > > >
> > > > > +        mov     r13,rdx
> > > > >
> > > > > +        mov     r14,r11
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rdx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[72+rsp],r12
> > > > >
> > > > > +        xor     r14,r11
> > > > >
> > > > > +        and     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r10
> > > > >
> > > > > +        xor     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rdx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,r11
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,rax
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r10,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r10,r15
> > > > >
> > > > > +        add     rcx,r12
> > > > >
> > > > > +        add     r10,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        add     r10,r14
> > > > >
> > > > > +        mov     r12,QWORD[80+rsi]
> > > > >
> > > > > +        mov     r13,rcx
> > > > >
> > > > > +        mov     r14,r10
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rcx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[80+rsp],r12
> > > > >
> > > > > +        xor     r14,r10
> > > > >
> > > > > +        and     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r9
> > > > >
> > > > > +        xor     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rcx
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,r10
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,r11
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r9,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r9,rdi
> > > > >
> > > > > +        add     rbx,r12
> > > > >
> > > > > +        add     r9,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        add     r9,r14
> > > > >
> > > > > +        mov     r12,QWORD[88+rsi]
> > > > >
> > > > > +        mov     r13,rbx
> > > > >
> > > > > +        mov     r14,r9
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rbx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[88+rsp],r12
> > > > >
> > > > > +        xor     r14,r9
> > > > >
> > > > > +        and     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r8
> > > > >
> > > > > +        xor     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rbx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,r9
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,r10
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r8,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r8,r15
> > > > >
> > > > > +        add     rax,r12
> > > > >
> > > > > +        add     r8,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        add     r8,r14
> > > > >
> > > > > +        mov     r12,QWORD[96+rsi]
> > > > >
> > > > > +        mov     r13,rax
> > > > >
> > > > > +        mov     r14,r8
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rax
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[96+rsp],r12
> > > > >
> > > > > +        xor     r14,r8
> > > > >
> > > > > +        and     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rdx
> > > > >
> > > > > +        xor     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rax
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,r8
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,r9
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rdx,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdx,rdi
> > > > >
> > > > > +        add     r11,r12
> > > > >
> > > > > +        add     rdx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        add     rdx,r14
> > > > >
> > > > > +        mov     r12,QWORD[104+rsi]
> > > > >
> > > > > +        mov     r13,r11
> > > > >
> > > > > +        mov     r14,rdx
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r11
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[104+rsp],r12
> > > > >
> > > > > +        xor     r14,rdx
> > > > >
> > > > > +        and     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rcx
> > > > >
> > > > > +        xor     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r11
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,rdx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,r8
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rcx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rcx,r15
> > > > >
> > > > > +        add     r10,r12
> > > > >
> > > > > +        add     rcx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        add     rcx,r14
> > > > >
> > > > > +        mov     r12,QWORD[112+rsi]
> > > > >
> > > > > +        mov     r13,r10
> > > > >
> > > > > +        mov     r14,rcx
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r10
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[112+rsp],r12
> > > > >
> > > > > +        xor     r14,rcx
> > > > >
> > > > > +        and     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rbx
> > > > >
> > > > > +        xor     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r10
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,rcx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,rdx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rbx,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rbx,rdi
> > > > >
> > > > > +        add     r9,r12
> > > > >
> > > > > +        add     rbx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        add     rbx,r14
> > > > >
> > > > > +        mov     r12,QWORD[120+rsi]
> > > > >
> > > > > +        mov     r13,r9
> > > > >
> > > > > +        mov     r14,rbx
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r9
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[120+rsp],r12
> > > > >
> > > > > +        xor     r14,rbx
> > > > >
> > > > > +        and     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rax
> > > > >
> > > > > +        xor     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r9
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,rbx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,rcx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rax,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rax,r15
> > > > >
> > > > > +        add     r8,r12
> > > > >
> > > > > +        add     rax,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        jmp     NEAR $L$rounds_16_xx
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$rounds_16_xx:
> > > > >
> > > > > +        mov     r13,QWORD[8+rsp]
> > > > >
> > > > > +        mov     r15,QWORD[112+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     rax,r14
> > > > >
> > > > > +        mov     r14,r15
> > > > >
> > > > > +        ror     r15,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        add     r12,QWORD[72+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[rsp]
> > > > >
> > > > > +        mov     r13,r8
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +        mov     r14,rax
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[rsp],r12
> > > > >
> > > > > +        xor     r14,rax
> > > > >
> > > > > +        and     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r11
> > > > >
> > > > > +        xor     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,rax
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,rbx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r11,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r11,rdi
> > > > >
> > > > > +        add     rdx,r12
> > > > >
> > > > > +        add     r11,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[16+rsp]
> > > > >
> > > > > +        mov     rdi,QWORD[120+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     r11,r14
> > > > >
> > > > > +        mov     r14,rdi
> > > > >
> > > > > +        ror     rdi,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     rdi,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        add     r12,QWORD[80+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[8+rsp]
> > > > >
> > > > > +        mov     r13,rdx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +        mov     r14,r11
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rdx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[8+rsp],r12
> > > > >
> > > > > +        xor     r14,r11
> > > > >
> > > > > +        and     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r10
> > > > >
> > > > > +        xor     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rdx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,r11
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,rax
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r10,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r10,r15
> > > > >
> > > > > +        add     rcx,r12
> > > > >
> > > > > +        add     r10,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[24+rsp]
> > > > >
> > > > > +        mov     r15,QWORD[rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     r10,r14
> > > > >
> > > > > +        mov     r14,r15
> > > > >
> > > > > +        ror     r15,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        add     r12,QWORD[88+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[16+rsp]
> > > > >
> > > > > +        mov     r13,rcx
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +        mov     r14,r10
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rcx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[16+rsp],r12
> > > > >
> > > > > +        xor     r14,r10
> > > > >
> > > > > +        and     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r9
> > > > >
> > > > > +        xor     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rcx
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,r10
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,r11
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r9,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r9,rdi
> > > > >
> > > > > +        add     rbx,r12
> > > > >
> > > > > +        add     r9,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[32+rsp]
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     r9,r14
> > > > >
> > > > > +        mov     r14,rdi
> > > > >
> > > > > +        ror     rdi,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     rdi,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        add     r12,QWORD[96+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[24+rsp]
> > > > >
> > > > > +        mov     r13,rbx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +        mov     r14,r9
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rbx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[24+rsp],r12
> > > > >
> > > > > +        xor     r14,r9
> > > > >
> > > > > +        and     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r8
> > > > >
> > > > > +        xor     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rbx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,r9
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,r10
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r8,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r8,r15
> > > > >
> > > > > +        add     rax,r12
> > > > >
> > > > > +        add     r8,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r15,QWORD[16+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     r8,r14
> > > > >
> > > > > +        mov     r14,r15
> > > > >
> > > > > +        ror     r15,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        add     r12,QWORD[104+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[32+rsp]
> > > > >
> > > > > +        mov     r13,rax
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +        mov     r14,r8
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rax
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[32+rsp],r12
> > > > >
> > > > > +        xor     r14,r8
> > > > >
> > > > > +        and     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rdx
> > > > >
> > > > > +        xor     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rax
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,r8
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,r9
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rdx,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdx,rdi
> > > > >
> > > > > +        add     r11,r12
> > > > >
> > > > > +        add     rdx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[48+rsp]
> > > > >
> > > > > +        mov     rdi,QWORD[24+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     rdx,r14
> > > > >
> > > > > +        mov     r14,rdi
> > > > >
> > > > > +        ror     rdi,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     rdi,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        add     r12,QWORD[112+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r13,r11
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +        mov     r14,rdx
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r11
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[40+rsp],r12
> > > > >
> > > > > +        xor     r14,rdx
> > > > >
> > > > > +        and     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rcx
> > > > >
> > > > > +        xor     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r11
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,rdx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,r8
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rcx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rcx,r15
> > > > >
> > > > > +        add     r10,r12
> > > > >
> > > > > +        add     rcx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[56+rsp]
> > > > >
> > > > > +        mov     r15,QWORD[32+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     rcx,r14
> > > > >
> > > > > +        mov     r14,r15
> > > > >
> > > > > +        ror     r15,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        add     r12,QWORD[120+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[48+rsp]
> > > > >
> > > > > +        mov     r13,r10
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +        mov     r14,rcx
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r10
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[48+rsp],r12
> > > > >
> > > > > +        xor     r14,rcx
> > > > >
> > > > > +        and     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rbx
> > > > >
> > > > > +        xor     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r10
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,rcx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,rdx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rbx,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rbx,rdi
> > > > >
> > > > > +        add     r9,r12
> > > > >
> > > > > +        add     rbx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[64+rsp]
> > > > >
> > > > > +        mov     rdi,QWORD[40+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     rbx,r14
> > > > >
> > > > > +        mov     r14,rdi
> > > > >
> > > > > +        ror     rdi,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     rdi,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        add     r12,QWORD[rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[56+rsp]
> > > > >
> > > > > +        mov     r13,r9
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +        mov     r14,rbx
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r9
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[56+rsp],r12
> > > > >
> > > > > +        xor     r14,rbx
> > > > >
> > > > > +        and     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rax
> > > > >
> > > > > +        xor     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r9
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,rbx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,rcx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rax,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rax,r15
> > > > >
> > > > > +        add     r8,r12
> > > > >
> > > > > +        add     rax,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[72+rsp]
> > > > >
> > > > > +        mov     r15,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     rax,r14
> > > > >
> > > > > +        mov     r14,r15
> > > > >
> > > > > +        ror     r15,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        add     r12,QWORD[8+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[64+rsp]
> > > > >
> > > > > +        mov     r13,r8
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +        mov     r14,rax
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[64+rsp],r12
> > > > >
> > > > > +        xor     r14,rax
> > > > >
> > > > > +        and     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r11
> > > > >
> > > > > +        xor     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,rax
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,rbx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r11,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r11,rdi
> > > > >
> > > > > +        add     rdx,r12
> > > > >
> > > > > +        add     r11,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[80+rsp]
> > > > >
> > > > > +        mov     rdi,QWORD[56+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     r11,r14
> > > > >
> > > > > +        mov     r14,rdi
> > > > >
> > > > > +        ror     rdi,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     rdi,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        add     r12,QWORD[16+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[72+rsp]
> > > > >
> > > > > +        mov     r13,rdx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +        mov     r14,r11
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rdx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[72+rsp],r12
> > > > >
> > > > > +        xor     r14,r11
> > > > >
> > > > > +        and     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r10
> > > > >
> > > > > +        xor     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rdx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,r11
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,rax
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r10,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r10,r15
> > > > >
> > > > > +        add     rcx,r12
> > > > >
> > > > > +        add     r10,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[88+rsp]
> > > > >
> > > > > +        mov     r15,QWORD[64+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     r10,r14
> > > > >
> > > > > +        mov     r14,r15
> > > > >
> > > > > +        ror     r15,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        add     r12,QWORD[24+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[80+rsp]
> > > > >
> > > > > +        mov     r13,rcx
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +        mov     r14,r10
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rcx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[80+rsp],r12
> > > > >
> > > > > +        xor     r14,r10
> > > > >
> > > > > +        and     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r9
> > > > >
> > > > > +        xor     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rcx
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,r10
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,r11
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r9,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r9,rdi
> > > > >
> > > > > +        add     rbx,r12
> > > > >
> > > > > +        add     r9,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[96+rsp]
> > > > >
> > > > > +        mov     rdi,QWORD[72+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     r9,r14
> > > > >
> > > > > +        mov     r14,rdi
> > > > >
> > > > > +        ror     rdi,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     rdi,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        add     r12,QWORD[32+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[88+rsp]
> > > > >
> > > > > +        mov     r13,rbx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +        mov     r14,r9
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rbx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[88+rsp],r12
> > > > >
> > > > > +        xor     r14,r9
> > > > >
> > > > > +        and     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r8
> > > > >
> > > > > +        xor     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rbx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,r9
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,r10
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r8,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r8,r15
> > > > >
> > > > > +        add     rax,r12
> > > > >
> > > > > +        add     r8,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[104+rsp]
> > > > >
> > > > > +        mov     r15,QWORD[80+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     r8,r14
> > > > >
> > > > > +        mov     r14,r15
> > > > >
> > > > > +        ror     r15,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        add     r12,QWORD[40+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[96+rsp]
> > > > >
> > > > > +        mov     r13,rax
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +        mov     r14,r8
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rax
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[96+rsp],r12
> > > > >
> > > > > +        xor     r14,r8
> > > > >
> > > > > +        and     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rdx
> > > > >
> > > > > +        xor     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rax
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,r8
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,r9
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rdx,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdx,rdi
> > > > >
> > > > > +        add     r11,r12
> > > > >
> > > > > +        add     rdx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[112+rsp]
> > > > >
> > > > > +        mov     rdi,QWORD[88+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     rdx,r14
> > > > >
> > > > > +        mov     r14,rdi
> > > > >
> > > > > +        ror     rdi,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     rdi,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        add     r12,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[104+rsp]
> > > > >
> > > > > +        mov     r13,r11
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +        mov     r14,rdx
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r11
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[104+rsp],r12
> > > > >
> > > > > +        xor     r14,rdx
> > > > >
> > > > > +        and     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rcx
> > > > >
> > > > > +        xor     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r11
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,rdx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,r8
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rcx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rcx,r15
> > > > >
> > > > > +        add     r10,r12
> > > > >
> > > > > +        add     rcx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[120+rsp]
> > > > >
> > > > > +        mov     r15,QWORD[96+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     rcx,r14
> > > > >
> > > > > +        mov     r14,r15
> > > > >
> > > > > +        ror     r15,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        add     r12,QWORD[56+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[112+rsp]
> > > > >
> > > > > +        mov     r13,r10
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +        mov     r14,rcx
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r10
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[112+rsp],r12
> > > > >
> > > > > +        xor     r14,rcx
> > > > >
> > > > > +        and     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rbx
> > > > >
> > > > > +        xor     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r10
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,rcx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,rdx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rbx,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rbx,rdi
> > > > >
> > > > > +        add     r9,r12
> > > > >
> > > > > +        add     rbx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[rsp]
> > > > >
> > > > > +        mov     rdi,QWORD[104+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     rbx,r14
> > > > >
> > > > > +        mov     r14,rdi
> > > > >
> > > > > +        ror     rdi,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     rdi,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        add     r12,QWORD[64+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[120+rsp]
> > > > >
> > > > > +        mov     r13,r9
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +        mov     r14,rbx
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r9
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[120+rsp],r12
> > > > >
> > > > > +        xor     r14,rbx
> > > > >
> > > > > +        and     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rax
> > > > >
> > > > > +        xor     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r9
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,rbx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,rcx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rax,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rax,r15
> > > > >
> > > > > +        add     r8,r12
> > > > >
> > > > > +        add     rax,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        cmp     BYTE[7+rbp],0
> > > > >
> > > > > +        jnz     NEAR $L$rounds_16_xx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,QWORD[((128+0))+rsp]
> > > > >
> > > > > +        add     rax,r14
> > > > >
> > > > > +        lea     rsi,[128+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        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[((128+16))+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        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[152+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$epilogue:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_sha512_block_data_order:
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +
> > > > >
> > > > > +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      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
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$in_prologue
> > > > >
> > > > > +        mov     rsi,rax
> > > > >
> > > > > +        mov     rax,QWORD[((128+24))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        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,[$L$epilogue]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((128+32))+rsi]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,12
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +$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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +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/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..2a3d5bcf72
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > > > > @@ -0,0 +1,491 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/x86_64cpuid.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +EXTERN  OPENSSL_cpuid_setup
> > > > >
> > > > > +
> > > > >
> > > > > +section .CRT$XCU rdata align=8
> > > > >
> > > > > +                DQ      OPENSSL_cpuid_setup
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +common  OPENSSL_ia32cap_P 16
> > > > >
> > > > > +
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  OPENSSL_atomic_add
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +OPENSSL_atomic_add:
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,DWORD[rcx]
> > > > >
> > > > > +$L$spin:        lea     r8,[rax*1+rdx]
> > > > >
> > > > > +DB      0xf0
> > > > >
> > > > > +        cmpxchg DWORD[rcx],r8d
> > > > >
> > > > > +        jne     NEAR $L$spin
> > > > >
> > > > > +        mov     eax,r8d
> > > > >
> > > > > +DB      0x48,0x98
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  OPENSSL_rdtsc
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +OPENSSL_rdtsc:
> > > > >
> > > > > +
> > > > >
> > > > > +        rdtsc
> > > > >
> > > > > +        shl     rdx,32
> > > > >
> > > > > +        or      rax,rdx
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  OPENSSL_ia32_cpuid
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +OPENSSL_ia32_cpuid:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_OPENSSL_ia32_cpuid:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r8,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     eax,eax
> > > > >
> > > > > +        mov     QWORD[8+rdi],rax
> > > > >
> > > > > +        cpuid
> > > > >
> > > > > +        mov     r11d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     eax,eax
> > > > >
> > > > > +        cmp     ebx,0x756e6547
> > > > >
> > > > > +        setne   al
> > > > >
> > > > > +        mov     r9d,eax
> > > > >
> > > > > +        cmp     edx,0x49656e69
> > > > >
> > > > > +        setne   al
> > > > >
> > > > > +        or      r9d,eax
> > > > >
> > > > > +        cmp     ecx,0x6c65746e
> > > > >
> > > > > +        setne   al
> > > > >
> > > > > +        or      r9d,eax
> > > > >
> > > > > +        jz      NEAR $L$intel
> > > > >
> > > > > +
> > > > >
> > > > > +        cmp     ebx,0x68747541
> > > > >
> > > > > +        setne   al
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +        cmp     edx,0x69746E65
> > > > >
> > > > > +        setne   al
> > > > >
> > > > > +        or      r10d,eax
> > > > >
> > > > > +        cmp     ecx,0x444D4163
> > > > >
> > > > > +        setne   al
> > > > >
> > > > > +        or      r10d,eax
> > > > >
> > > > > +        jnz     NEAR $L$intel
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,0x80000000
> > > > >
> > > > > +        cpuid
> > > > >
> > > > > +        cmp     eax,0x80000001
> > > > >
> > > > > +        jb      NEAR $L$intel
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +        mov     eax,0x80000001
> > > > >
> > > > > +        cpuid
> > > > >
> > > > > +        or      r9d,ecx
> > > > >
> > > > > +        and     r9d,0x00000801
> > > > >
> > > > > +
> > > > >
> > > > > +        cmp     r10d,0x80000008
> > > > >
> > > > > +        jb      NEAR $L$intel
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,0x80000008
> > > > >
> > > > > +        cpuid
> > > > >
> > > > > +        movzx   r10,cl
> > > > >
> > > > > +        inc     r10
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,1
> > > > >
> > > > > +        cpuid
> > > > >
> > > > > +        bt      edx,28
> > > > >
> > > > > +        jnc     NEAR $L$generic
> > > > >
> > > > > +        shr     ebx,16
> > > > >
> > > > > +        cmp     bl,r10b
> > > > >
> > > > > +        ja      NEAR $L$generic
> > > > >
> > > > > +        and     edx,0xefffffff
> > > > >
> > > > > +        jmp     NEAR $L$generic
> > > > >
> > > > > +
> > > > >
> > > > > +$L$intel:
> > > > >
> > > > > +        cmp     r11d,4
> > > > >
> > > > > +        mov     r10d,-1
> > > > >
> > > > > +        jb      NEAR $L$nocacheinfo
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,4
> > > > >
> > > > > +        mov     ecx,0
> > > > >
> > > > > +        cpuid
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +        shr     r10d,14
> > > > >
> > > > > +        and     r10d,0xfff
> > > > >
> > > > > +
> > > > >
> > > > > +$L$nocacheinfo:
> > > > >
> > > > > +        mov     eax,1
> > > > >
> > > > > +        cpuid
> > > > >
> > > > > +        movd    xmm0,eax
> > > > >
> > > > > +        and     edx,0xbfefffff
> > > > >
> > > > > +        cmp     r9d,0
> > > > >
> > > > > +        jne     NEAR $L$notintel
> > > > >
> > > > > +        or      edx,0x40000000
> > > > >
> > > > > +        and     ah,15
> > > > >
> > > > > +        cmp     ah,15
> > > > >
> > > > > +        jne     NEAR $L$notP4
> > > > >
> > > > > +        or      edx,0x00100000
> > > > >
> > > > > +$L$notP4:
> > > > >
> > > > > +        cmp     ah,6
> > > > >
> > > > > +        jne     NEAR $L$notintel
> > > > >
> > > > > +        and     eax,0x0fff0ff0
> > > > >
> > > > > +        cmp     eax,0x00050670
> > > > >
> > > > > +        je      NEAR $L$knights
> > > > >
> > > > > +        cmp     eax,0x00080650
> > > > >
> > > > > +        jne     NEAR $L$notintel
> > > > >
> > > > > +$L$knights:
> > > > >
> > > > > +        and     ecx,0xfbffffff
> > > > >
> > > > > +
> > > > >
> > > > > +$L$notintel:
> > > > >
> > > > > +        bt      edx,28
> > > > >
> > > > > +        jnc     NEAR $L$generic
> > > > >
> > > > > +        and     edx,0xefffffff
> > > > >
> > > > > +        cmp     r10d,0
> > > > >
> > > > > +        je      NEAR $L$generic
> > > > >
> > > > > +
> > > > >
> > > > > +        or      edx,0x10000000
> > > > >
> > > > > +        shr     ebx,16
> > > > >
> > > > > +        cmp     bl,1
> > > > >
> > > > > +        ja      NEAR $L$generic
> > > > >
> > > > > +        and     edx,0xefffffff
> > > > >
> > > > > +$L$generic:
> > > > >
> > > > > +        and     r9d,0x00000800
> > > > >
> > > > > +        and     ecx,0xfffff7ff
> > > > >
> > > > > +        or      r9d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        cmp     r11d,7
> > > > >
> > > > > +        jb      NEAR $L$no_extended_info
> > > > >
> > > > > +        mov     eax,7
> > > > >
> > > > > +        xor     ecx,ecx
> > > > >
> > > > > +        cpuid
> > > > >
> > > > > +        bt      r9d,26
> > > > >
> > > > > +        jc      NEAR $L$notknights
> > > > >
> > > > > +        and     ebx,0xfff7ffff
> > > > >
> > > > > +$L$notknights:
> > > > >
> > > > > +        movd    eax,xmm0
> > > > >
> > > > > +        and     eax,0x0fff0ff0
> > > > >
> > > > > +        cmp     eax,0x00050650
> > > > >
> > > > > +        jne     NEAR $L$notskylakex
> > > > >
> > > > > +        and     ebx,0xfffeffff
> > > > >
> > > > > +
> > > > >
> > > > > +$L$notskylakex:
> > > > >
> > > > > +        mov     DWORD[8+rdi],ebx
> > > > >
> > > > > +        mov     DWORD[12+rdi],ecx
> > > > >
> > > > > +$L$no_extended_info:
> > > > >
> > > > > +
> > > > >
> > > > > +        bt      r9d,27
> > > > >
> > > > > +        jnc     NEAR $L$clear_avx
> > > > >
> > > > > +        xor     ecx,ecx
> > > > >
> > > > > +DB      0x0f,0x01,0xd0
> > > > >
> > > > > +        and     eax,0xe6
> > > > >
> > > > > +        cmp     eax,0xe6
> > > > >
> > > > > +        je      NEAR $L$done
> > > > >
> > > > > +        and     DWORD[8+rdi],0x3fdeffff
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        and     eax,6
> > > > >
> > > > > +        cmp     eax,6
> > > > >
> > > > > +        je      NEAR $L$done
> > > > >
> > > > > +$L$clear_avx:
> > > > >
> > > > > +        mov     eax,0xefffe7ff
> > > > >
> > > > > +        and     r9d,eax
> > > > >
> > > > > +        mov     eax,0x3fdeffdf
> > > > >
> > > > > +        and     DWORD[8+rdi],eax
> > > > >
> > > > > +$L$done:
> > > > >
> > > > > +        shl     r9,32
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        mov     rbx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        or      rax,r9
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_OPENSSL_ia32_cpuid:
> > > > >
> > > > > +
> > > > >
> > > > > +global  OPENSSL_cleanse
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +OPENSSL_cleanse:
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rax,rax
> > > > >
> > > > > +        cmp     rdx,15
> > > > >
> > > > > +        jae     NEAR $L$ot
> > > > >
> > > > > +        cmp     rdx,0
> > > > >
> > > > > +        je      NEAR $L$ret
> > > > >
> > > > > +$L$ittle:
> > > > >
> > > > > +        mov     BYTE[rcx],al
> > > > >
> > > > > +        sub     rdx,1
> > > > >
> > > > > +        lea     rcx,[1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$ittle
> > > > >
> > > > > +$L$ret:
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ot:
> > > > >
> > > > > +        test    rcx,7
> > > > >
> > > > > +        jz      NEAR $L$aligned
> > > > >
> > > > > +        mov     BYTE[rcx],al
> > > > >
> > > > > +        lea     rdx,[((-1))+rdx]
> > > > >
> > > > > +        lea     rcx,[1+rcx]
> > > > >
> > > > > +        jmp     NEAR $L$ot
> > > > >
> > > > > +$L$aligned:
> > > > >
> > > > > +        mov     QWORD[rcx],rax
> > > > >
> > > > > +        lea     rdx,[((-8))+rdx]
> > > > >
> > > > > +        test    rdx,-8
> > > > >
> > > > > +        lea     rcx,[8+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$aligned
> > > > >
> > > > > +        cmp     rdx,0
> > > > >
> > > > > +        jne     NEAR $L$ittle
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  CRYPTO_memcmp
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +CRYPTO_memcmp:
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rax,rax
> > > > >
> > > > > +        xor     r10,r10
> > > > >
> > > > > +        cmp     r8,0
> > > > >
> > > > > +        je      NEAR $L$no_data
> > > > >
> > > > > +        cmp     r8,16
> > > > >
> > > > > +        jne     NEAR $L$oop_cmp
> > > > >
> > > > > +        mov     r10,QWORD[rcx]
> > > > >
> > > > > +        mov     r11,QWORD[8+rcx]
> > > > >
> > > > > +        mov     r8,1
> > > > >
> > > > > +        xor     r10,QWORD[rdx]
> > > > >
> > > > > +        xor     r11,QWORD[8+rdx]
> > > > >
> > > > > +        or      r10,r11
> > > > >
> > > > > +        cmovnz  rax,r8
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$oop_cmp:
> > > > >
> > > > > +        mov     r10b,BYTE[rcx]
> > > > >
> > > > > +        lea     rcx,[1+rcx]
> > > > >
> > > > > +        xor     r10b,BYTE[rdx]
> > > > >
> > > > > +        lea     rdx,[1+rdx]
> > > > >
> > > > > +        or      al,r10b
> > > > >
> > > > > +        dec     r8
> > > > >
> > > > > +        jnz     NEAR $L$oop_cmp
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +        shr     rax,63
> > > > >
> > > > > +$L$no_data:
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  OPENSSL_wipe_cpu
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +OPENSSL_wipe_cpu:
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        xor     rdx,rdx
> > > > >
> > > > > +        xor     r8,r8
> > > > >
> > > > > +        xor     r9,r9
> > > > >
> > > > > +        xor     r10,r10
> > > > >
> > > > > +        xor     r11,r11
> > > > >
> > > > > +        lea     rax,[8+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +global  OPENSSL_instrument_bus
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +OPENSSL_instrument_bus:
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10,rcx
> > > > >
> > > > > +        mov     rcx,rdx
> > > > >
> > > > > +        mov     r11,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        rdtsc
> > > > >
> > > > > +        mov     r8d,eax
> > > > >
> > > > > +        mov     r9d,0
> > > > >
> > > > > +        clflush [r10]
> > > > >
> > > > > +DB      0xf0
> > > > >
> > > > > +        add     DWORD[r10],r9d
> > > > >
> > > > > +        jmp     NEAR $L$oop
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$oop: rdtsc
> > > > >
> > > > > +        mov     edx,eax
> > > > >
> > > > > +        sub     eax,r8d
> > > > >
> > > > > +        mov     r8d,edx
> > > > >
> > > > > +        mov     r9d,eax
> > > > >
> > > > > +        clflush [r10]
> > > > >
> > > > > +DB      0xf0
> > > > >
> > > > > +        add     DWORD[r10],eax
> > > > >
> > > > > +        lea     r10,[4+r10]
> > > > >
> > > > > +        sub     rcx,1
> > > > >
> > > > > +        jnz     NEAR $L$oop
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,r11
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  OPENSSL_instrument_bus2
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +OPENSSL_instrument_bus2:
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10,rcx
> > > > >
> > > > > +        mov     rcx,rdx
> > > > >
> > > > > +        mov     r11,r8
> > > > >
> > > > > +        mov     QWORD[8+rsp],rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        rdtsc
> > > > >
> > > > > +        mov     r8d,eax
> > > > >
> > > > > +        mov     r9d,0
> > > > >
> > > > > +
> > > > >
> > > > > +        clflush [r10]
> > > > >
> > > > > +DB      0xf0
> > > > >
> > > > > +        add     DWORD[r10],r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        rdtsc
> > > > >
> > > > > +        mov     edx,eax
> > > > >
> > > > > +        sub     eax,r8d
> > > > >
> > > > > +        mov     r8d,edx
> > > > >
> > > > > +        mov     r9d,eax
> > > > >
> > > > > +$L$oop2:
> > > > >
> > > > > +        clflush [r10]
> > > > >
> > > > > +DB      0xf0
> > > > >
> > > > > +        add     DWORD[r10],eax
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     r11,1
> > > > >
> > > > > +        jz      NEAR $L$done2
> > > > >
> > > > > +
> > > > >
> > > > > +        rdtsc
> > > > >
> > > > > +        mov     edx,eax
> > > > >
> > > > > +        sub     eax,r8d
> > > > >
> > > > > +        mov     r8d,edx
> > > > >
> > > > > +        cmp     eax,r9d
> > > > >
> > > > > +        mov     r9d,eax
> > > > >
> > > > > +        mov     edx,0
> > > > >
> > > > > +        setne   dl
> > > > >
> > > > > +        sub     rcx,rdx
> > > > >
> > > > > +        lea     r10,[rdx*4+r10]
> > > > >
> > > > > +        jnz     NEAR $L$oop2
> > > > >
> > > > > +
> > > > >
> > > > > +$L$done2:
> > > > >
> > > > > +        mov     rax,QWORD[8+rsp]
> > > > >
> > > > > +        sub     rax,rcx
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  OPENSSL_ia32_rdrand_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +OPENSSL_ia32_rdrand_bytes:
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rax,rax
> > > > >
> > > > > +        cmp     rdx,0
> > > > >
> > > > > +        je      NEAR $L$done_rdrand_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r11,8
> > > > >
> > > > > +$L$oop_rdrand_bytes:
> > > > >
> > > > > +DB      73,15,199,242
> > > > >
> > > > > +        jc      NEAR $L$break_rdrand_bytes
> > > > >
> > > > > +        dec     r11
> > > > >
> > > > > +        jnz     NEAR $L$oop_rdrand_bytes
> > > > >
> > > > > +        jmp     NEAR $L$done_rdrand_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$break_rdrand_bytes:
> > > > >
> > > > > +        cmp     rdx,8
> > > > >
> > > > > +        jb      NEAR $L$tail_rdrand_bytes
> > > > >
> > > > > +        mov     QWORD[rcx],r10
> > > > >
> > > > > +        lea     rcx,[8+rcx]
> > > > >
> > > > > +        add     rax,8
> > > > >
> > > > > +        sub     rdx,8
> > > > >
> > > > > +        jz      NEAR $L$done_rdrand_bytes
> > > > >
> > > > > +        mov     r11,8
> > > > >
> > > > > +        jmp     NEAR $L$oop_rdrand_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$tail_rdrand_bytes:
> > > > >
> > > > > +        mov     BYTE[rcx],r10b
> > > > >
> > > > > +        lea     rcx,[1+rcx]
> > > > >
> > > > > +        inc     rax
> > > > >
> > > > > +        shr     r10,8
> > > > >
> > > > > +        dec     rdx
> > > > >
> > > > > +        jnz     NEAR $L$tail_rdrand_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +$L$done_rdrand_bytes:
> > > > >
> > > > > +        xor     r10,r10
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  OPENSSL_ia32_rdseed_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +OPENSSL_ia32_rdseed_bytes:
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rax,rax
> > > > >
> > > > > +        cmp     rdx,0
> > > > >
> > > > > +        je      NEAR $L$done_rdseed_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r11,8
> > > > >
> > > > > +$L$oop_rdseed_bytes:
> > > > >
> > > > > +DB      73,15,199,250
> > > > >
> > > > > +        jc      NEAR $L$break_rdseed_bytes
> > > > >
> > > > > +        dec     r11
> > > > >
> > > > > +        jnz     NEAR $L$oop_rdseed_bytes
> > > > >
> > > > > +        jmp     NEAR $L$done_rdseed_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$break_rdseed_bytes:
> > > > >
> > > > > +        cmp     rdx,8
> > > > >
> > > > > +        jb      NEAR $L$tail_rdseed_bytes
> > > > >
> > > > > +        mov     QWORD[rcx],r10
> > > > >
> > > > > +        lea     rcx,[8+rcx]
> > > > >
> > > > > +        add     rax,8
> > > > >
> > > > > +        sub     rdx,8
> > > > >
> > > > > +        jz      NEAR $L$done_rdseed_bytes
> > > > >
> > > > > +        mov     r11,8
> > > > >
> > > > > +        jmp     NEAR $L$oop_rdseed_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$tail_rdseed_bytes:
> > > > >
> > > > > +        mov     BYTE[rcx],r10b
> > > > >
> > > > > +        lea     rcx,[1+rcx]
> > > > >
> > > > > +        inc     rax
> > > > >
> > > > > +        shr     r10,8
> > > > >
> > > > > +        dec     rdx
> > > > >
> > > > > +        jnz     NEAR $L$tail_rdseed_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +$L$done_rdseed_bytes:
> > > > >
> > > > > +        xor     r10,r10
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > --
> > > > > 2.28.0.windows.1


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

* Re: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
  2020-08-14 19:34         ` Zurcher, Christopher J
  2020-08-18  2:36           ` Wang, Jian J
@ 2020-08-18 16:15           ` Michael D Kinney
  2020-08-18 21:22             ` Zurcher, Christopher J
  1 sibling, 1 reply; 42+ messages in thread
From: Michael D Kinney @ 2020-08-18 16:15 UTC (permalink / raw)
  To: Zurcher, Christopher J, Yao, Jiewen, devel@edk2.groups.io,
	Kinney, Michael D
  Cc: Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel

Christopher,

Can you provide the details on how to generate the IA32 and X64 files?  What is the additional parameter?

Thanks,

Mike

> -----Original Message-----
> From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> Sent: Friday, August 14, 2020 12:35 PM
> To: Yao, Jiewen <jiewen.yao@intel.com>; Kinney, Michael D <michael.d.kinney@intel.com>; devel@edk2.groups.io
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
> 
> The current OpenSSL "UEFI" configuration depends on the OpenSSL build happening in a Unix-like environment. For a Windows-based
> build, this must be done in a wrapper such as Cygwin/git bash or WSL. Integrating the OpenSSL config step into the build process is
> a non-trivial change.
> 
> > > > That means, whenever we upgrade the openssl, we need manually generate
> > > > them again.
> > > > Any step by step, or readme to tell us how to do that?
> 
> The process for generating these X64 files is virtually identical to the already-existing maintainer process for OpensslLib, with
> only one additional argument required to process_files.pl.
> 
> OpensslLib as it exists today in EDK2 already includes auto-generated files from the Perl configure process. If we want to re-
> architect how we include OpenSSL into EDK2, I think that should be done in a different patch set. Additionally, such a large task
> might be a waste of time with the release of OpenSSL 3 happening later this year. They are making changes to their build system, and
> I think that if we are going to re-architect our side of it, we should wait until we are adopting OpenSSL 3.
> 
> --
> Christopher Zurcher
> 
> > -----Original Message-----
> > From: Yao, Jiewen <jiewen.yao@intel.com>
> > Sent: Thursday, August 13, 2020 08:46
> > To: Kinney, Michael D <michael.d.kinney@intel.com>; Zurcher, Christopher J
> > <christopher.j.zurcher@intel.com>; devel@edk2.groups.io
> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated
> > assembly files for X64
> >
> > Thank you Mike to help on this.
> >
> > I also believe that the best option is to integrate the auto-gen process in
> > base tool.
> >
> >
> >
> > > -----Original Message-----
> > > From: Kinney, Michael D <michael.d.kinney@intel.com>
> > > Sent: Thursday, August 13, 2020 11:38 PM
> > > To: Yao, Jiewen <jiewen.yao@intel.com>; Zurcher, Christopher J
> > > <christopher.j.zurcher@intel.com>; devel@edk2.groups.io; Kinney, Michael D
> > > <michael.d.kinney@intel.com>
> > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > <xiaoyux.lu@intel.com>;
> > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated
> > > assembly files for X64
> > >
> > > Hi Jiewen,
> > >
> > > For this use case, generating the files as part of the build process would
> > add
> > > a dependency in pearl.
> > >
> > > Based on other recent CryptoPkg changes and some being discussed in BZ, I
> > am
> > > seeing more changes to the OpenSLL .pl configuration files, and I am
> > concerned
> > > that based on platform requirements, we may need to build OpenSSL with
> > > different .pl config file settings which would also add a pearl dependency
> > > to the build.
> > >
> > > So exploring what it would take to add the pearl dependency to the build
> > system
> > > is worth exploring and if successful would eliminate the need to checkin
> > these
> > > types of autogenerated files.  This would also reduce maintenance of the
> > > auto-genererated files when EDK II moves to a new version of OpenSSL.
> > >
> > > @Cristopher - Can you please share a branch that uses pearl to generate the
> > > files
> > > instead of checking them in?  I would like the BaseTools maintainers to
> > review
> > > that and evaluate adding the pearl dependency.  Hopefully, we can make the
> > > pearl dependency detectable so it is only required if the build requires
> > it.
> > >
> > > Thanks,
> > >
> > > Mike
> > >
> > > > -----Original Message-----
> > > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > > Sent: Thursday, August 13, 2020 8:25 AM
> > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > > devel@edk2.groups.io
> > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > <xiaoyux.lu@intel.com>; Kinney, Michael D
> > > > <michael.d.kinney@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
> > > generated assembly files for X64
> > > >
> > > > + Mike Kinney
> > > >
> > > > I am not sure if it is a right way to check in auto-generated file.
> > > > That means, whenever we upgrade the openssl, we need manually generate
> > > them again.
> > > > Any step by step, or readme to tell us how to do that?
> > > >
> > > > Mike, would you please double confirm what is the right way for auto-
> > > generated file in EDKII?
> > > >
> > > >
> > > > > -----Original Message-----
> > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > > Sent: Tuesday, August 4, 2020 8:24 AM
> > > > > To: devel@edk2.groups.io
> > > > > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> > > <jian.j.wang@intel.com>;
> > > > > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > > <ard.biesheuvel@linaro.org>
> > > > > Subject: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated
> > > > > assembly files for X64
> > > > >
> > > > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> > > > >
> > > > > Adding the auto-generated assembly files for the X64 architecture.
> > > > >
> > > > > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > > > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > > > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > > > > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > Signed-off-by: Christopher J Zurcher <christopher.j.zurcher@intel.com>
> > > > > ---
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm     |
> > > 732
> > > > > +++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm   |
> > > > > 1916 ++++++++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-x86_64.nasm |
> > > > > 78 +
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm        |
> > > 5103
> > > > > ++++++++++++++++++++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm        |
> > > 1173
> > > > > +++++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm      |
> > > > > 1569 ++++++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm      |
> > > 3137
> > > > > ++++++++++++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm         |
> > > 2884
> > > > > +++++++++++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm    |
> > > > > 3461 +++++++++++++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm       |
> > > 3313
> > > > > +++++++++++++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm       |
> > > 1938
> > > > > ++++++++
> > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm             |
> > 491
> > > ++
> > > > >  12 files changed, 25795 insertions(+)
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
> > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
> > > > > x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..1a3ed1dd35
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm
> > > > > @@ -0,0 +1,732 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/aes/asm/aesni-mb-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +
> > > > >
> > > > > +global  aesni_multi_cbc_encrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +aesni_multi_cbc_encrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_multi_cbc_encrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-168))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+rax],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+rax],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+rax],xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsp,48
> > > > >
> > > > > +        and     rsp,-64
> > > > >
> > > > > +        mov     QWORD[16+rsp],rax
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +$L$enc4x_body:
> > > > >
> > > > > +        movdqu  xmm12,XMMWORD[rsi]
> > > > >
> > > > > +        lea     rsi,[120+rsi]
> > > > >
> > > > > +        lea     rdi,[80+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$enc4x_loop_grande:
> > > > >
> > > > > +        mov     DWORD[24+rsp],edx
> > > > >
> > > > > +        xor     edx,edx
> > > > >
> > > > > +        mov     ecx,DWORD[((-64))+rdi]
> > > > >
> > > > > +        mov     r8,QWORD[((-80))+rdi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        mov     r12,QWORD[((-72))+rdi]
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[((-56))+rdi]
> > > > >
> > > > > +        mov     DWORD[32+rsp],ecx
> > > > >
> > > > > +        cmovle  r8,rsp
> > > > >
> > > > > +        mov     ecx,DWORD[((-24))+rdi]
> > > > >
> > > > > +        mov     r9,QWORD[((-40))+rdi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        mov     r13,QWORD[((-32))+rdi]
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[((-16))+rdi]
> > > > >
> > > > > +        mov     DWORD[36+rsp],ecx
> > > > >
> > > > > +        cmovle  r9,rsp
> > > > >
> > > > > +        mov     ecx,DWORD[16+rdi]
> > > > >
> > > > > +        mov     r10,QWORD[rdi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        mov     r14,QWORD[8+rdi]
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[24+rdi]
> > > > >
> > > > > +        mov     DWORD[40+rsp],ecx
> > > > >
> > > > > +        cmovle  r10,rsp
> > > > >
> > > > > +        mov     ecx,DWORD[56+rdi]
> > > > >
> > > > > +        mov     r11,QWORD[40+rdi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        mov     r15,QWORD[48+rdi]
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[64+rdi]
> > > > >
> > > > > +        mov     DWORD[44+rsp],ecx
> > > > >
> > > > > +        cmovle  r11,rsp
> > > > >
> > > > > +        test    edx,edx
> > > > >
> > > > > +        jz      NEAR $L$enc4x_done
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((16-120))+rsi]
> > > > >
> > > > > +        pxor    xmm2,xmm12
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((32-120))+rsi]
> > > > >
> > > > > +        pxor    xmm3,xmm12
> > > > >
> > > > > +        mov     eax,DWORD[((240-120))+rsi]
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[r8]
> > > > >
> > > > > +        pxor    xmm5,xmm12
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[r9]
> > > > >
> > > > > +        pxor    xmm2,xmm6
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[r10]
> > > > >
> > > > > +        pxor    xmm3,xmm7
> > > > >
> > > > > +        movdqu  xmm9,XMMWORD[r11]
> > > > >
> > > > > +        pxor    xmm4,xmm8
> > > > >
> > > > > +        pxor    xmm5,xmm9
> > > > >
> > > > > +        movdqa  xmm10,XMMWORD[32+rsp]
> > > > >
> > > > > +        xor     rbx,rbx
> > > > >
> > > > > +        jmp     NEAR $L$oop_enc4x
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$oop_enc4x:
> > > > >
> > > > > +        add     rbx,16
> > > > >
> > > > > +        lea     rbp,[16+rsp]
> > > > >
> > > > > +        mov     ecx,1
> > > > >
> > > > > +        sub     rbp,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        prefetcht0      [31+rbx*1+r8]
> > > > >
> > > > > +        prefetcht0      [31+rbx*1+r9]
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        prefetcht0      [31+rbx*1+r10]
> > > > >
> > > > > +        prefetcht0      [31+rbx*1+r10]
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((48-120))+rsi]
> > > > >
> > > > > +        cmp     ecx,DWORD[32+rsp]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +        cmovge  r8,rbp
> > > > >
> > > > > +        cmovg   r12,rbp
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-56))+rsi]
> > > > >
> > > > > +        cmp     ecx,DWORD[36+rsp]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +        cmovge  r9,rbp
> > > > >
> > > > > +        cmovg   r13,rbp
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-40))+rsi]
> > > > >
> > > > > +        cmp     ecx,DWORD[40+rsp]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +        cmovge  r10,rbp
> > > > >
> > > > > +        cmovg   r14,rbp
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-24))+rsi]
> > > > >
> > > > > +        cmp     ecx,DWORD[44+rsp]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +        cmovge  r11,rbp
> > > > >
> > > > > +        cmovg   r15,rbp
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-8))+rsi]
> > > > >
> > > > > +        movdqa  xmm11,xmm10
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        prefetcht0      [15+rbx*1+r12]
> > > > >
> > > > > +        prefetcht0      [15+rbx*1+r13]
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        prefetcht0      [15+rbx*1+r14]
> > > > >
> > > > > +        prefetcht0      [15+rbx*1+r15]
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((128-120))+rsi]
> > > > >
> > > > > +        pxor    xmm12,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        pcmpgtd xmm11,xmm12
> > > > >
> > > > > +        movdqu  xmm12,XMMWORD[((-120))+rsi]
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        paddd   xmm10,xmm11
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm10
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((144-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        cmp     eax,11
> > > > >
> > > > > +
> > > > >
> > > > > +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[((160-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        jb      NEAR $L$enc4x_tail
> > > > >
> > > > > +
> > > > >
> > > > > +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[((176-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +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[((192-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        je      NEAR $L$enc4x_tail
> > > > >
> > > > > +
> > > > >
> > > > > +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[((208-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +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[((224-120))+rsi]
> > > > >
> > > > > +        jmp     NEAR $L$enc4x_tail
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$enc4x_tail:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[rbx*1+r8]
> > > > >
> > > > > +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,221,208
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[rbx*1+r9]
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +DB      102,15,56,221,216
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[rbx*1+r10]
> > > > >
> > > > > +        pxor    xmm7,xmm12
> > > > >
> > > > > +DB      102,15,56,221,224
> > > > >
> > > > > +        movdqu  xmm9,XMMWORD[rbx*1+r11]
> > > > >
> > > > > +        pxor    xmm8,xmm12
> > > > >
> > > > > +DB      102,15,56,221,232
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
> > > > >
> > > > > +        pxor    xmm9,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm6
> > > > >
> > > > > +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm7
> > > > >
> > > > > +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm8
> > > > >
> > > > > +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop_enc4x
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[16+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edx,DWORD[24+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rdi,[160+rdi]
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$enc4x_loop_grande
> > > > >
> > > > > +
> > > > >
> > > > > +$L$enc4x_done:
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-216))+rax]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-200))+rax]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-184))+rax]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-168))+rax]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-152))+rax]
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-136))+rax]
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-120))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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$enc4x_epilogue:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_aesni_multi_cbc_encrypt:
> > > > >
> > > > > +
> > > > >
> > > > > +global  aesni_multi_cbc_decrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +aesni_multi_cbc_decrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_multi_cbc_decrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-168))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+rax],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+rax],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+rax],xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsp,48
> > > > >
> > > > > +        and     rsp,-64
> > > > >
> > > > > +        mov     QWORD[16+rsp],rax
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +$L$dec4x_body:
> > > > >
> > > > > +        movdqu  xmm12,XMMWORD[rsi]
> > > > >
> > > > > +        lea     rsi,[120+rsi]
> > > > >
> > > > > +        lea     rdi,[80+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$dec4x_loop_grande:
> > > > >
> > > > > +        mov     DWORD[24+rsp],edx
> > > > >
> > > > > +        xor     edx,edx
> > > > >
> > > > > +        mov     ecx,DWORD[((-64))+rdi]
> > > > >
> > > > > +        mov     r8,QWORD[((-80))+rdi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        mov     r12,QWORD[((-72))+rdi]
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[((-56))+rdi]
> > > > >
> > > > > +        mov     DWORD[32+rsp],ecx
> > > > >
> > > > > +        cmovle  r8,rsp
> > > > >
> > > > > +        mov     ecx,DWORD[((-24))+rdi]
> > > > >
> > > > > +        mov     r9,QWORD[((-40))+rdi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        mov     r13,QWORD[((-32))+rdi]
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[((-16))+rdi]
> > > > >
> > > > > +        mov     DWORD[36+rsp],ecx
> > > > >
> > > > > +        cmovle  r9,rsp
> > > > >
> > > > > +        mov     ecx,DWORD[16+rdi]
> > > > >
> > > > > +        mov     r10,QWORD[rdi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        mov     r14,QWORD[8+rdi]
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[24+rdi]
> > > > >
> > > > > +        mov     DWORD[40+rsp],ecx
> > > > >
> > > > > +        cmovle  r10,rsp
> > > > >
> > > > > +        mov     ecx,DWORD[56+rdi]
> > > > >
> > > > > +        mov     r11,QWORD[40+rdi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        mov     r15,QWORD[48+rdi]
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        movdqu  xmm9,XMMWORD[64+rdi]
> > > > >
> > > > > +        mov     DWORD[44+rsp],ecx
> > > > >
> > > > > +        cmovle  r11,rsp
> > > > >
> > > > > +        test    edx,edx
> > > > >
> > > > > +        jz      NEAR $L$dec4x_done
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((16-120))+rsi]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((32-120))+rsi]
> > > > >
> > > > > +        mov     eax,DWORD[((240-120))+rsi]
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[r8]
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[r9]
> > > > >
> > > > > +        pxor    xmm2,xmm12
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[r10]
> > > > >
> > > > > +        pxor    xmm3,xmm12
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[r11]
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm5,xmm12
> > > > >
> > > > > +        movdqa  xmm10,XMMWORD[32+rsp]
> > > > >
> > > > > +        xor     rbx,rbx
> > > > >
> > > > > +        jmp     NEAR $L$oop_dec4x
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$oop_dec4x:
> > > > >
> > > > > +        add     rbx,16
> > > > >
> > > > > +        lea     rbp,[16+rsp]
> > > > >
> > > > > +        mov     ecx,1
> > > > >
> > > > > +        sub     rbp,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        prefetcht0      [31+rbx*1+r8]
> > > > >
> > > > > +        prefetcht0      [31+rbx*1+r9]
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        prefetcht0      [31+rbx*1+r10]
> > > > >
> > > > > +        prefetcht0      [31+rbx*1+r11]
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((48-120))+rsi]
> > > > >
> > > > > +        cmp     ecx,DWORD[32+rsp]
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +        cmovge  r8,rbp
> > > > >
> > > > > +        cmovg   r12,rbp
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-56))+rsi]
> > > > >
> > > > > +        cmp     ecx,DWORD[36+rsp]
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +        cmovge  r9,rbp
> > > > >
> > > > > +        cmovg   r13,rbp
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-40))+rsi]
> > > > >
> > > > > +        cmp     ecx,DWORD[40+rsp]
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +        cmovge  r10,rbp
> > > > >
> > > > > +        cmovg   r14,rbp
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-24))+rsi]
> > > > >
> > > > > +        cmp     ecx,DWORD[44+rsp]
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +        cmovge  r11,rbp
> > > > >
> > > > > +        cmovg   r15,rbp
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-8))+rsi]
> > > > >
> > > > > +        movdqa  xmm11,xmm10
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +        prefetcht0      [15+rbx*1+r12]
> > > > >
> > > > > +        prefetcht0      [15+rbx*1+r13]
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +        prefetcht0      [15+rbx*1+r14]
> > > > >
> > > > > +        prefetcht0      [15+rbx*1+r15]
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((128-120))+rsi]
> > > > >
> > > > > +        pxor    xmm12,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        pcmpgtd xmm11,xmm12
> > > > >
> > > > > +        movdqu  xmm12,XMMWORD[((-120))+rsi]
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        paddd   xmm10,xmm11
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm10
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((144-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        cmp     eax,11
> > > > >
> > > > > +
> > > > >
> > > > > +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[((160-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        jb      NEAR $L$dec4x_tail
> > > > >
> > > > > +
> > > > >
> > > > > +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[((176-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +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[((192-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        je      NEAR $L$dec4x_tail
> > > > >
> > > > > +
> > > > >
> > > > > +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[((208-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +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[((224-120))+rsi]
> > > > >
> > > > > +        jmp     NEAR $L$dec4x_tail
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$dec4x_tail:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +        pxor    xmm6,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm0
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +        pxor    xmm9,xmm0
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,223,214
> > > > >
> > > > > +DB      102,15,56,223,223
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[((-16))+rbx*1+r8]
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[((-16))+rbx*1+r9]
> > > > >
> > > > > +DB      102,65,15,56,223,224
> > > > >
> > > > > +DB      102,65,15,56,223,233
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[((-16))+rbx*1+r10]
> > > > >
> > > > > +        movdqu  xmm9,XMMWORD[((-16))+rbx*1+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rbx*1+r8]
> > > > >
> > > > > +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[rbx*1+r9]
> > > > >
> > > > > +        pxor    xmm2,xmm12
> > > > >
> > > > > +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[rbx*1+r10]
> > > > >
> > > > > +        pxor    xmm3,xmm12
> > > > >
> > > > > +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[rbx*1+r11]
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm5,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop_dec4x
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[16+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edx,DWORD[24+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rdi,[160+rdi]
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$dec4x_loop_grande
> > > > >
> > > > > +
> > > > >
> > > > > +$L$dec4x_done:
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-216))+rax]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-200))+rax]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-184))+rax]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-168))+rax]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-152))+rax]
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-136))+rax]
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-120))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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$dec4x_epilogue:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_aesni_multi_cbc_decrypt:
> > > > >
> > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[16+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        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     rsi,[((-56-160))+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,20
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +$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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +section .pdata rdata align=4
> > > > >
> > > > > +ALIGN   4
> > > > >
> > > > > +        DD      $L$SEH_begin_aesni_multi_cbc_encrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_aesni_multi_cbc_encrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_aesni_multi_cbc_encrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_begin_aesni_multi_cbc_decrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_aesni_multi_cbc_decrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_aesni_multi_cbc_decrypt wrt ..imagebase
> > > > >
> > > > > +section .xdata rdata align=8
> > > > >
> > > > > +ALIGN   8
> > > > >
> > > > > +$L$SEH_info_aesni_multi_cbc_encrypt:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$enc4x_body wrt ..imagebase,$L$enc4x_epilogue
> > > > > wrt ..imagebase
> > > > >
> > > > > +$L$SEH_info_aesni_multi_cbc_decrypt:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$dec4x_body wrt ..imagebase,$L$dec4x_epilogue
> > > > > wrt ..imagebase
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
> > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
> > > > > x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..f4fd9ca50d
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
> > > x86_64.nasm
> > > > > @@ -0,0 +1,1916 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/aes/asm/aesni-sha1-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +
> > > > >
> > > > > +global  aesni_cbc_sha1_enc
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +aesni_cbc_sha1_enc:
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+0))]
> > > > >
> > > > > +        mov     r11,QWORD[((OPENSSL_ia32cap_P+4))]
> > > > >
> > > > > +        bt      r11,61
> > > > >
> > > > > +        jc      NEAR aesni_cbc_sha1_enc_shaext
> > > > >
> > > > > +        jmp     NEAR aesni_cbc_sha1_enc_ssse3
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +aesni_cbc_sha1_enc_ssse3:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_cbc_sha1_enc_ssse3:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10,QWORD[56+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-264))+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movaps  XMMWORD[(96+0)+rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[(96+16)+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[(96+32)+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[(96+48)+rsp],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(96+64)+rsp],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(96+80)+rsp],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[(96+96)+rsp],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(96+112)+rsp],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(96+128)+rsp],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(96+144)+rsp],xmm15
> > > > >
> > > > > +$L$prologue_ssse3:
> > > > >
> > > > > +        mov     r12,rdi
> > > > >
> > > > > +        mov     r13,rsi
> > > > >
> > > > > +        mov     r14,rdx
> > > > >
> > > > > +        lea     r15,[112+rcx]
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[r8]
> > > > >
> > > > > +        mov     QWORD[88+rsp],r8
> > > > >
> > > > > +        shl     r14,6
> > > > >
> > > > > +        sub     r13,r12
> > > > >
> > > > > +        mov     r8d,DWORD[((240-112))+r15]
> > > > >
> > > > > +        add     r14,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r11,[K_XX_XX]
> > > > >
> > > > > +        mov     eax,DWORD[r9]
> > > > >
> > > > > +        mov     ebx,DWORD[4+r9]
> > > > >
> > > > > +        mov     ecx,DWORD[8+r9]
> > > > >
> > > > > +        mov     edx,DWORD[12+r9]
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        mov     ebp,DWORD[16+r9]
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        and     esi,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[64+r11]
> > > > >
> > > > > +        movdqa  xmm13,XMMWORD[r11]
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[r10]
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[16+r10]
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[32+r10]
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[48+r10]
> > > > >
> > > > > +DB      102,15,56,0,227
> > > > >
> > > > > +DB      102,15,56,0,235
> > > > >
> > > > > +DB      102,15,56,0,243
> > > > >
> > > > > +        add     r10,64
> > > > >
> > > > > +        paddd   xmm4,xmm13
> > > > >
> > > > > +DB      102,15,56,0,251
> > > > >
> > > > > +        paddd   xmm5,xmm13
> > > > >
> > > > > +        paddd   xmm6,xmm13
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm4
> > > > >
> > > > > +        psubd   xmm4,xmm13
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm5
> > > > >
> > > > > +        psubd   xmm5,xmm13
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > > >
> > > > > +        psubd   xmm6,xmm13
> > > > >
> > > > > +        movups  xmm15,XMMWORD[((-112))+r15]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > >
> > > > > +        jmp     NEAR $L$oop_ssse3
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$oop_ssse3:
> > > > >
> > > > > +        ror     ebx,2
> > > > >
> > > > > +        movups  xmm14,XMMWORD[r12]
> > > > >
> > > > > +        xorps   xmm14,xmm15
> > > > >
> > > > > +        xorps   xmm2,xmm14
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        pshufd  xmm8,xmm4,238
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        movdqa  xmm12,xmm7
> > > > >
> > > > > +        paddd   xmm13,xmm7
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        add     ebp,DWORD[rsp]
> > > > >
> > > > > +        punpcklqdq      xmm8,xmm5
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        psrldq  xmm12,4
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        pxor    xmm8,xmm4
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        pxor    xmm12,xmm6
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        add     edx,DWORD[4+rsp]
> > > > >
> > > > > +        pxor    xmm8,xmm12
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm13
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        and     esi,eax
> > > > >
> > > > > +        movdqa  xmm3,xmm8
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        movdqa  xmm12,xmm8
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        pslldq  xmm3,12
> > > > >
> > > > > +        paddd   xmm8,xmm8
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        add     ecx,DWORD[8+rsp]
> > > > >
> > > > > +        psrld   xmm12,31
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        movdqa  xmm13,xmm3
> > > > >
> > > > > +        and     edi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        psrld   xmm3,30
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        por     xmm8,xmm12
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        add     ebx,DWORD[12+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        pslld   xmm13,2
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[r11]
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        and     esi,edx
> > > > >
> > > > > +        pxor    xmm8,xmm13
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        pshufd  xmm9,xmm5,238
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        movdqa  xmm13,xmm8
> > > > >
> > > > > +        paddd   xmm3,xmm8
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        add     eax,DWORD[16+rsp]
> > > > >
> > > > > +        punpcklqdq      xmm9,xmm6
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        psrldq  xmm13,4
> > > > >
> > > > > +        and     edi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        pxor    xmm9,xmm5
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        pxor    xmm13,xmm7
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        add     ebp,DWORD[20+rsp]
> > > > >
> > > > > +        pxor    xmm9,xmm13
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm3
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        and     esi,ebx
> > > > >
> > > > > +        movdqa  xmm12,xmm9
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        movdqa  xmm13,xmm9
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        pslldq  xmm12,12
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        add     edx,DWORD[24+rsp]
> > > > >
> > > > > +        psrld   xmm13,31
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        movdqa  xmm3,xmm12
> > > > >
> > > > > +        and     edi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        psrld   xmm12,30
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        por     xmm9,xmm13
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        add     ecx,DWORD[28+rsp]
> > > > >
> > > > > +        pslld   xmm3,2
> > > > >
> > > > > +        pxor    xmm9,xmm12
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        movdqa  xmm12,XMMWORD[16+r11]
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        and     esi,ebp
> > > > >
> > > > > +        pxor    xmm9,xmm3
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        pshufd  xmm10,xmm6,238
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        movdqa  xmm3,xmm9
> > > > >
> > > > > +        paddd   xmm12,xmm9
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        add     ebx,DWORD[32+rsp]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        punpcklqdq      xmm10,xmm7
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        psrldq  xmm3,4
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        pxor    xmm10,xmm6
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        pxor    xmm3,xmm8
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        add     eax,DWORD[36+rsp]
> > > > >
> > > > > +        pxor    xmm10,xmm3
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm12
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        and     esi,ecx
> > > > >
> > > > > +        movdqa  xmm13,xmm10
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        pslldq  xmm13,12
> > > > >
> > > > > +        paddd   xmm10,xmm10
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        add     ebp,DWORD[40+rsp]
> > > > >
> > > > > +        psrld   xmm3,31
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        movdqa  xmm12,xmm13
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        psrld   xmm13,30
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        por     xmm10,xmm3
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        add     edx,DWORD[44+rsp]
> > > > >
> > > > > +        pslld   xmm12,2
> > > > >
> > > > > +        pxor    xmm10,xmm13
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        movdqa  xmm13,XMMWORD[16+r11]
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        and     esi,eax
> > > > >
> > > > > +        pxor    xmm10,xmm12
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        pshufd  xmm11,xmm7,238
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        movdqa  xmm12,xmm10
> > > > >
> > > > > +        paddd   xmm13,xmm10
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        add     ecx,DWORD[48+rsp]
> > > > >
> > > > > +        punpcklqdq      xmm11,xmm8
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        psrldq  xmm12,4
> > > > >
> > > > > +        and     edi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        pxor    xmm11,xmm7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        pxor    xmm12,xmm9
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        add     ebx,DWORD[52+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        pxor    xmm11,xmm12
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm13
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        and     esi,edx
> > > > >
> > > > > +        movdqa  xmm3,xmm11
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        movdqa  xmm12,xmm11
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        pslldq  xmm3,12
> > > > >
> > > > > +        paddd   xmm11,xmm11
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        add     eax,DWORD[56+rsp]
> > > > >
> > > > > +        psrld   xmm12,31
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        movdqa  xmm13,xmm3
> > > > >
> > > > > +        and     edi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        psrld   xmm3,30
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        cmp     r8d,11
> > > > >
> > > > > +        jb      NEAR $L$aesenclast1
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        je      NEAR $L$aesenclast1
> > > > >
> > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +$L$aesenclast1:
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > >
> > > > > +        por     xmm11,xmm12
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        add     ebp,DWORD[60+rsp]
> > > > >
> > > > > +        pslld   xmm13,2
> > > > >
> > > > > +        pxor    xmm11,xmm3
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[16+r11]
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        and     esi,ebx
> > > > >
> > > > > +        pxor    xmm11,xmm13
> > > > >
> > > > > +        pshufd  xmm13,xmm10,238
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        pxor    xmm4,xmm8
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        add     edx,DWORD[rsp]
> > > > >
> > > > > +        punpcklqdq      xmm13,xmm11
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        movups  xmm14,XMMWORD[16+r12]
> > > > >
> > > > > +        xorps   xmm14,xmm15
> > > > >
> > > > > +        movups  XMMWORD[r13*1+r12],xmm2
> > > > >
> > > > > +        xorps   xmm2,xmm14
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        and     edi,eax
> > > > >
> > > > > +        movdqa  xmm12,xmm3
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        paddd   xmm3,xmm11
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        pxor    xmm4,xmm13
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        add     ecx,DWORD[4+rsp]
> > > > >
> > > > > +        movdqa  xmm13,xmm4
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm3
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        and     esi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        pslld   xmm4,2
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        psrld   xmm13,30
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        add     ebx,DWORD[8+rsp]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        por     xmm4,xmm13
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        pshufd  xmm3,xmm11,238
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[12+rsp]
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        pxor    xmm5,xmm9
> > > > >
> > > > > +        add     ebp,DWORD[16+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        punpcklqdq      xmm3,xmm4
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        pxor    xmm5,xmm6
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        movdqa  xmm13,xmm12
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        paddd   xmm12,xmm4
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        pxor    xmm5,xmm3
> > > > >
> > > > > +        add     edx,DWORD[20+rsp]
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        movdqa  xmm3,xmm5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm12
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[24+rsp]
> > > > >
> > > > > +        pslld   xmm5,2
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        psrld   xmm3,30
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        por     xmm5,xmm3
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[28+rsp]
> > > > >
> > > > > +        pshufd  xmm12,xmm4,238
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        add     eax,DWORD[32+rsp]
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        punpcklqdq      xmm12,xmm5
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[32+r11]
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        paddd   xmm13,xmm5
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +        add     ebp,DWORD[36+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        movdqa  xmm12,xmm6
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm13
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[40+rsp]
> > > > >
> > > > > +        pslld   xmm6,2
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        psrld   xmm12,30
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        por     xmm6,xmm12
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[44+rsp]
> > > > >
> > > > > +        pshufd  xmm13,xmm5,238
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        pxor    xmm7,xmm11
> > > > >
> > > > > +        add     ebx,DWORD[48+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        punpcklqdq      xmm13,xmm6
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        pxor    xmm7,xmm8
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        movdqa  xmm12,xmm3
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        paddd   xmm3,xmm6
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        pxor    xmm7,xmm13
> > > > >
> > > > > +        add     eax,DWORD[52+rsp]
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        movdqa  xmm13,xmm7
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm3
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[56+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        pslld   xmm7,2
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        psrld   xmm13,30
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        por     xmm7,xmm13
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[60+rsp]
> > > > >
> > > > > +        pshufd  xmm3,xmm6,238
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        pxor    xmm8,xmm4
> > > > >
> > > > > +        add     ecx,DWORD[rsp]
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        punpcklqdq      xmm3,xmm7
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        pxor    xmm8,xmm9
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        movdqa  xmm13,xmm12
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        paddd   xmm12,xmm7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        add     ebx,DWORD[4+rsp]
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        movdqa  xmm3,xmm8
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm12
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[8+rsp]
> > > > >
> > > > > +        pslld   xmm8,2
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        psrld   xmm3,30
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        por     xmm8,xmm3
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[12+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        pshufd  xmm12,xmm7,238
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        pxor    xmm9,xmm5
> > > > >
> > > > > +        add     edx,DWORD[16+rsp]
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        punpcklqdq      xmm12,xmm8
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        pxor    xmm9,xmm10
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        movdqa  xmm3,xmm13
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        pxor    xmm9,xmm12
> > > > >
> > > > > +        add     ecx,DWORD[20+rsp]
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        movdqa  xmm12,xmm9
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        cmp     r8d,11
> > > > >
> > > > > +        jb      NEAR $L$aesenclast2
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        je      NEAR $L$aesenclast2
> > > > >
> > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +$L$aesenclast2:
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm13
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[24+rsp]
> > > > >
> > > > > +        pslld   xmm9,2
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        psrld   xmm12,30
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        por     xmm9,xmm12
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[28+rsp]
> > > > >
> > > > > +        pshufd  xmm13,xmm8,238
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        pxor    xmm10,xmm6
> > > > >
> > > > > +        add     ebp,DWORD[32+rsp]
> > > > >
> > > > > +        movups  xmm14,XMMWORD[32+r12]
> > > > >
> > > > > +        xorps   xmm14,xmm15
> > > > >
> > > > > +        movups  XMMWORD[16+r12*1+r13],xmm2
> > > > >
> > > > > +        xorps   xmm2,xmm14
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        and     esi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        punpcklqdq      xmm13,xmm9
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        pxor    xmm10,xmm11
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        movdqa  xmm12,xmm3
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        paddd   xmm3,xmm9
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        pxor    xmm10,xmm13
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[36+rsp]
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        movdqa  xmm13,xmm10
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm3
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        pslld   xmm10,2
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        psrld   xmm13,30
> > > > >
> > > > > +        add     ecx,DWORD[40+rsp]
> > > > >
> > > > > +        and     esi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        por     xmm10,xmm13
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        pshufd  xmm3,xmm9,238
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[44+rsp]
> > > > >
> > > > > +        and     edi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        pxor    xmm11,xmm7
> > > > >
> > > > > +        add     eax,DWORD[48+rsp]
> > > > >
> > > > > +        and     esi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        punpcklqdq      xmm3,xmm10
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        pxor    xmm11,xmm4
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        movdqa  xmm13,XMMWORD[48+r11]
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        paddd   xmm12,xmm10
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        pxor    xmm11,xmm3
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[52+rsp]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        and     edi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        movdqa  xmm3,xmm11
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm12
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        pslld   xmm11,2
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        psrld   xmm3,30
> > > > >
> > > > > +        add     edx,DWORD[56+rsp]
> > > > >
> > > > > +        and     esi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        por     xmm11,xmm3
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        pshufd  xmm12,xmm10,238
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[60+rsp]
> > > > >
> > > > > +        and     edi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        pxor    xmm4,xmm8
> > > > >
> > > > > +        add     ebx,DWORD[rsp]
> > > > >
> > > > > +        and     esi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        movups  xmm0,XMMWORD[r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        punpcklqdq      xmm12,xmm11
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        movdqa  xmm3,xmm13
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        paddd   xmm13,xmm11
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[4+rsp]
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        movdqa  xmm12,xmm4
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm13
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        pslld   xmm4,2
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        psrld   xmm12,30
> > > > >
> > > > > +        add     ebp,DWORD[8+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        and     esi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        por     xmm4,xmm12
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        pshufd  xmm13,xmm11,238
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[12+rsp]
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        pxor    xmm5,xmm9
> > > > >
> > > > > +        add     ecx,DWORD[16+rsp]
> > > > >
> > > > > +        and     esi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        punpcklqdq      xmm13,xmm4
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        pxor    xmm5,xmm6
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        movdqa  xmm12,xmm3
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        paddd   xmm3,xmm4
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[20+rsp]
> > > > >
> > > > > +        and     edi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        movdqa  xmm13,xmm5
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm3
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        pslld   xmm5,2
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        psrld   xmm13,30
> > > > >
> > > > > +        add     eax,DWORD[24+rsp]
> > > > >
> > > > > +        and     esi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        por     xmm5,xmm13
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        pshufd  xmm3,xmm4,238
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[28+rsp]
> > > > >
> > > > > +        cmp     r8d,11
> > > > >
> > > > > +        jb      NEAR $L$aesenclast3
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        je      NEAR $L$aesenclast3
> > > > >
> > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +$L$aesenclast3:
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > >
> > > > > +        and     edi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        add     edx,DWORD[32+rsp]
> > > > >
> > > > > +        and     esi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        punpcklqdq      xmm3,xmm5
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        movups  xmm14,XMMWORD[48+r12]
> > > > >
> > > > > +        xorps   xmm14,xmm15
> > > > >
> > > > > +        movups  XMMWORD[32+r12*1+r13],xmm2
> > > > >
> > > > > +        xorps   xmm2,xmm14
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        movdqa  xmm13,xmm12
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        paddd   xmm12,xmm5
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        pxor    xmm6,xmm3
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[36+rsp]
> > > > >
> > > > > +        and     edi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        movdqa  xmm3,xmm6
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm12
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        pslld   xmm6,2
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        psrld   xmm3,30
> > > > >
> > > > > +        add     ebx,DWORD[40+rsp]
> > > > >
> > > > > +        and     esi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        por     xmm6,xmm3
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        pshufd  xmm12,xmm5,238
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[44+rsp]
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        pxor    xmm7,xmm11
> > > > >
> > > > > +        add     ebp,DWORD[48+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        punpcklqdq      xmm12,xmm6
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        pxor    xmm7,xmm8
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        movdqa  xmm3,xmm13
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        pxor    xmm7,xmm12
> > > > >
> > > > > +        add     edx,DWORD[52+rsp]
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        movdqa  xmm12,xmm7
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm13
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[56+rsp]
> > > > >
> > > > > +        pslld   xmm7,2
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        psrld   xmm12,30
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        por     xmm7,xmm12
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[60+rsp]
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[rsp]
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        paddd   xmm3,xmm7
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm3
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[4+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[8+rsp]
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[12+rsp]
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        cmp     r10,r14
> > > > >
> > > > > +        je      NEAR $L$done_ssse3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[64+r11]
> > > > >
> > > > > +        movdqa  xmm13,XMMWORD[r11]
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[r10]
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[16+r10]
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[32+r10]
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[48+r10]
> > > > >
> > > > > +DB      102,15,56,0,227
> > > > >
> > > > > +        add     r10,64
> > > > >
> > > > > +        add     ebx,DWORD[16+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +DB      102,15,56,0,235
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        paddd   xmm4,xmm13
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[20+rsp]
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm4
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        psubd   xmm4,xmm13
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[24+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[28+rsp]
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[32+rsp]
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +DB      102,15,56,0,243
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        paddd   xmm5,xmm13
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[36+rsp]
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm5
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        psubd   xmm5,xmm13
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[40+rsp]
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[44+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[48+rsp]
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +DB      102,15,56,0,251
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        paddd   xmm6,xmm13
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[52+rsp]
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        cmp     r8d,11
> > > > >
> > > > > +        jb      NEAR $L$aesenclast4
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        je      NEAR $L$aesenclast4
> > > > >
> > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +$L$aesenclast4:
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        psubd   xmm6,xmm13
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[56+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[60+rsp]
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        movups  XMMWORD[48+r12*1+r13],xmm2
> > > > >
> > > > > +        lea     r12,[64+r12]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     eax,DWORD[r9]
> > > > >
> > > > > +        add     esi,DWORD[4+r9]
> > > > >
> > > > > +        add     ecx,DWORD[8+r9]
> > > > >
> > > > > +        add     edx,DWORD[12+r9]
> > > > >
> > > > > +        mov     DWORD[r9],eax
> > > > >
> > > > > +        add     ebp,DWORD[16+r9]
> > > > >
> > > > > +        mov     DWORD[4+r9],esi
> > > > >
> > > > > +        mov     ebx,esi
> > > > >
> > > > > +        mov     DWORD[8+r9],ecx
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        mov     DWORD[12+r9],edx
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     DWORD[16+r9],ebp
> > > > >
> > > > > +        and     esi,edi
> > > > >
> > > > > +        jmp     NEAR $L$oop_ssse3
> > > > >
> > > > > +
> > > > >
> > > > > +$L$done_ssse3:
> > > > >
> > > > > +        add     ebx,DWORD[16+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[20+rsp]
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[24+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[28+rsp]
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[32+rsp]
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[36+rsp]
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[40+rsp]
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[44+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[48+rsp]
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[52+rsp]
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        cmp     r8d,11
> > > > >
> > > > > +        jb      NEAR $L$aesenclast5
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        je      NEAR $L$aesenclast5
> > > > >
> > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +$L$aesenclast5:
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[56+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[60+rsp]
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        movups  XMMWORD[48+r12*1+r13],xmm2
> > > > >
> > > > > +        mov     r8,QWORD[88+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     eax,DWORD[r9]
> > > > >
> > > > > +        add     esi,DWORD[4+r9]
> > > > >
> > > > > +        add     ecx,DWORD[8+r9]
> > > > >
> > > > > +        mov     DWORD[r9],eax
> > > > >
> > > > > +        add     edx,DWORD[12+r9]
> > > > >
> > > > > +        mov     DWORD[4+r9],esi
> > > > >
> > > > > +        add     ebp,DWORD[16+r9]
> > > > >
> > > > > +        mov     DWORD[8+r9],ecx
> > > > >
> > > > > +        mov     DWORD[12+r9],edx
> > > > >
> > > > > +        mov     DWORD[16+r9],ebp
> > > > >
> > > > > +        movups  XMMWORD[r8],xmm2
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((96+0))+rsp]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((96+16))+rsp]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((96+32))+rsp]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((96+48))+rsp]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((96+64))+rsp]
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((96+80))+rsp]
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((96+96))+rsp]
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[((96+112))+rsp]
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[((96+128))+rsp]
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[((96+144))+rsp]
> > > > >
> > > > > +        lea     rsi,[264+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_aesni_cbc_sha1_enc_ssse3:
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +K_XX_XX:
> > > > >
> > > > > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > > > >
> > > > > +        DD      0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
> > > > >
> > > > > +        DD      0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
> > > > >
> > > > > +        DD      0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
> > > > >
> > > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > >
> > > > > +DB
> > 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
> > > > >
> > > > > +
> > > > >
> > > > > +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115
> > > > >
> > > > > +DB      116,105,116,99,104,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
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +aesni_cbc_sha1_enc_shaext:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_cbc_sha1_enc_shaext:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10,QWORD[56+rsp]
> > > > >
> > > > > +        lea     rsp,[((-168))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[(-8-160)+rax],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[(-8-144)+rax],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[(-8-128)+rax],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[(-8-112)+rax],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-8-96)+rax],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(-8-80)+rax],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[(-8-64)+rax],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-8-48)+rax],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-8-32)+rax],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-8-16)+rax],xmm15
> > > > >
> > > > > +$L$prologue_shaext:
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[r9]
> > > > >
> > > > > +        movd    xmm9,DWORD[16+r9]
> > > > >
> > > > > +        movdqa  xmm7,XMMWORD[((K_XX_XX+80))]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r11d,DWORD[240+rcx]
> > > > >
> > > > > +        sub     rsi,rdi
> > > > >
> > > > > +        movups  xmm15,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm2,XMMWORD[r8]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[112+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm8,xmm8,27
> > > > >
> > > > > +        pshufd  xmm9,xmm9,27
> > > > >
> > > > > +        jmp     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$oop_shaext:
> > > > >
> > > > > +        movups  xmm14,XMMWORD[rdi]
> > > > >
> > > > > +        xorps   xmm14,xmm15
> > > > >
> > > > > +        xorps   xmm2,xmm14
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[r10]
> > > > >
> > > > > +        movdqa  xmm12,xmm9
> > > > >
> > > > > +DB      102,15,56,0,223
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[16+r10]
> > > > >
> > > > > +        movdqa  xmm11,xmm8
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,0,231
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm9,xmm3
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[32+r10]
> > > > >
> > > > > +        lea     r10,[64+r10]
> > > > >
> > > > > +        pxor    xmm3,xmm12
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        pxor    xmm3,xmm12
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      102,15,56,0,239
> > > > >
> > > > > +DB      69,15,58,204,193,0
> > > > >
> > > > > +DB      68,15,56,200,212
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      15,56,201,220
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[((-16))+r10]
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      102,15,56,0,247
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      69,15,58,204,194,0
> > > > >
> > > > > +DB      68,15,56,200,205
> > > > >
> > > > > +        pxor    xmm3,xmm5
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      69,15,58,204,193,0
> > > > >
> > > > > +DB      68,15,56,200,214
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,222
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      69,15,58,204,194,0
> > > > >
> > > > > +DB      68,15,56,200,203
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,227
> > > > >
> > > > > +        pxor    xmm5,xmm3
> > > > >
> > > > > +DB      15,56,201,243
> > > > >
> > > > > +        cmp     r11d,11
> > > > >
> > > > > +        jb      NEAR $L$aesenclast6
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        je      NEAR $L$aesenclast6
> > > > >
> > > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +$L$aesenclast6:
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      69,15,58,204,193,0
> > > > >
> > > > > +DB      68,15,56,200,212
> > > > >
> > > > > +        movups  xmm14,XMMWORD[16+rdi]
> > > > >
> > > > > +        xorps   xmm14,xmm15
> > > > >
> > > > > +        movups  XMMWORD[rdi*1+rsi],xmm2
> > > > >
> > > > > +        xorps   xmm2,xmm14
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,220
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      69,15,58,204,194,1
> > > > >
> > > > > +DB      68,15,56,200,205
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +        pxor    xmm3,xmm5
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      69,15,58,204,193,1
> > > > >
> > > > > +DB      68,15,56,200,214
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,222
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      69,15,58,204,194,1
> > > > >
> > > > > +DB      68,15,56,200,203
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,227
> > > > >
> > > > > +        pxor    xmm5,xmm3
> > > > >
> > > > > +DB      15,56,201,243
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      69,15,58,204,193,1
> > > > >
> > > > > +DB      68,15,56,200,212
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,220
> > > > >
> > > > > +        cmp     r11d,11
> > > > >
> > > > > +        jb      NEAR $L$aesenclast7
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        je      NEAR $L$aesenclast7
> > > > >
> > > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +$L$aesenclast7:
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      69,15,58,204,194,1
> > > > >
> > > > > +DB      68,15,56,200,205
> > > > >
> > > > > +        movups  xmm14,XMMWORD[32+rdi]
> > > > >
> > > > > +        xorps   xmm14,xmm15
> > > > >
> > > > > +        movups  XMMWORD[16+rdi*1+rsi],xmm2
> > > > >
> > > > > +        xorps   xmm2,xmm14
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +        pxor    xmm3,xmm5
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      69,15,58,204,193,2
> > > > >
> > > > > +DB      68,15,56,200,214
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,222
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      69,15,58,204,194,2
> > > > >
> > > > > +DB      68,15,56,200,203
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,227
> > > > >
> > > > > +        pxor    xmm5,xmm3
> > > > >
> > > > > +DB      15,56,201,243
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      69,15,58,204,193,2
> > > > >
> > > > > +DB      68,15,56,200,212
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,220
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      69,15,58,204,194,2
> > > > >
> > > > > +DB      68,15,56,200,205
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +        pxor    xmm3,xmm5
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        cmp     r11d,11
> > > > >
> > > > > +        jb      NEAR $L$aesenclast8
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        je      NEAR $L$aesenclast8
> > > > >
> > > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +$L$aesenclast8:
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      69,15,58,204,193,2
> > > > >
> > > > > +DB      68,15,56,200,214
> > > > >
> > > > > +        movups  xmm14,XMMWORD[48+rdi]
> > > > >
> > > > > +        xorps   xmm14,xmm15
> > > > >
> > > > > +        movups  XMMWORD[32+rdi*1+rsi],xmm2
> > > > >
> > > > > +        xorps   xmm2,xmm14
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,222
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      69,15,58,204,194,3
> > > > >
> > > > > +DB      68,15,56,200,203
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      15,56,202,227
> > > > >
> > > > > +        pxor    xmm5,xmm3
> > > > >
> > > > > +DB      15,56,201,243
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      69,15,58,204,193,3
> > > > >
> > > > > +DB      68,15,56,200,212
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      69,15,58,204,194,3
> > > > >
> > > > > +DB      68,15,56,200,205
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqa  xmm5,xmm12
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      69,15,58,204,193,3
> > > > >
> > > > > +DB      68,15,56,200,214
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      69,15,58,204,194,3
> > > > >
> > > > > +DB      68,15,56,200,205
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        cmp     r11d,11
> > > > >
> > > > > +        jb      NEAR $L$aesenclast9
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        je      NEAR $L$aesenclast9
> > > > >
> > > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +$L$aesenclast9:
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > > >
> > > > > +        dec     rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm8,xmm11
> > > > >
> > > > > +        movups  XMMWORD[48+rdi*1+rsi],xmm2
> > > > >
> > > > > +        lea     rdi,[64+rdi]
> > > > >
> > > > > +        jnz     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm8,xmm8,27
> > > > >
> > > > > +        pshufd  xmm9,xmm9,27
> > > > >
> > > > > +        movups  XMMWORD[r8],xmm2
> > > > >
> > > > > +        movdqu  XMMWORD[r9],xmm8
> > > > >
> > > > > +        movd    DWORD[16+r9],xmm9
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-8-160))+rax]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-8-144))+rax]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-8-128))+rax]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-8-112))+rax]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-8-96))+rax]
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-8-80))+rax]
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-8-64))+rax]
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[((-8-48))+rax]
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[((-8-32))+rax]
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[((-8-16))+rax]
> > > > >
> > > > > +        mov     rsp,rax
> > > > >
> > > > > +$L$epilogue_shaext:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_aesni_cbc_sha1_enc_shaext:
> > > > >
> > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +ssse3_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$common_seh_tail
> > > > >
> > > > > +        lea     r10,[aesni_cbc_sha1_enc_shaext]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$seh_no_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,20
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +        lea     rax,[168+rax]
> > > > >
> > > > > +        jmp     NEAR $L$common_seh_tail
> > > > >
> > > > > +$L$seh_no_shaext:
> > > > >
> > > > > +        lea     rsi,[96+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,20
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +        lea     rax,[264+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,QWORD[rax]
> > > > >
> > > > > +        mov     r14,QWORD[8+rax]
> > > > >
> > > > > +        mov     r13,QWORD[16+rax]
> > > > >
> > > > > +        mov     r12,QWORD[24+rax]
> > > > >
> > > > > +        mov     rbp,QWORD[32+rax]
> > > > >
> > > > > +        mov     rbx,QWORD[40+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$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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +section .pdata rdata align=4
> > > > >
> > > > > +ALIGN   4
> > > > >
> > > > > +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> > > > >
> > > > > +section .xdata rdata align=8
> > > > >
> > > > > +ALIGN   8
> > > > >
> > > > > +$L$SEH_info_aesni_cbc_sha1_enc_ssse3:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      ssse3_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
> > > > > wrt ..imagebase
> > > > >
> > > > > +$L$SEH_info_aesni_cbc_sha1_enc_shaext:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      ssse3_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$prologue_shaext wrt ..imagebase,$L$epilogue_shaext
> > > > > wrt ..imagebase
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
> > > sha256-
> > > > > x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..f5c250b904
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> > > > > x86_64.nasm
> > > > > @@ -0,0 +1,78 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/aes/asm/aesni-sha256-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +global  aesni_cbc_sha256_enc
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +aesni_cbc_sha256_enc:
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     eax,eax
> > > > >
> > > > > +        cmp     rcx,0
> > > > >
> > > > > +        je      NEAR $L$probe
> > > > >
> > > > > +        ud2
> > > > >
> > > > > +$L$probe:
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +
> > > > >
> > > > > +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      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > >
> > > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > >
> > > > > +        DD      0,0,0,0,0,0,0,0,-1,-1,-1,-1
> > > > >
> > > > > +        DD      0,0,0,0,0,0,0,0
> > > > >
> > > > > +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54
> > > > >
> > > > > +DB      32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95
> > > > >
> > > > > +DB      54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98
> > > > >
> > > > > +DB      121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108
> > > > >
> > > > > +DB      46,111,114,103,62,0
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
> > > x86_64.nasm
> > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..57ee23ea8c
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
> > > > > @@ -0,0 +1,5103 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/aes/asm/aesni-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2009-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +global  aesni_encrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        movups  xmm1,XMMWORD[r8]
> > > > >
> > > > > +        lea     r8,[16+r8]
> > > > >
> > > > > +        jnz     NEAR $L$oop_enc1_1
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        movups  XMMWORD[rdx],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  aesni_decrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        movups  xmm1,XMMWORD[r8]
> > > > >
> > > > > +        lea     r8,[16+r8]
> > > > >
> > > > > +        jnz     NEAR $L$oop_dec1_2
> > > > >
> > > > > +DB      102,15,56,223,209
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        movups  XMMWORD[rdx],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_encrypt2:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +
> > > > >
> > > > > +$L$enc_loop2:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,32
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        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
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_decrypt2:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +
> > > > >
> > > > > +$L$dec_loop2:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,32
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +        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
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_encrypt3:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        xorps   xmm4,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +
> > > > >
> > > > > +$L$enc_loop3:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +        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[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$enc_loop3
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,221,208
> > > > >
> > > > > +DB      102,15,56,221,216
> > > > >
> > > > > +DB      102,15,56,221,224
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_decrypt3:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        xorps   xmm4,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +
> > > > >
> > > > > +$L$dec_loop3:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +        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[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$dec_loop3
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +DB      102,15,56,223,208
> > > > >
> > > > > +DB      102,15,56,223,216
> > > > >
> > > > > +DB      102,15,56,223,224
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_encrypt4:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        xorps   xmm4,xmm0
> > > > >
> > > > > +        xorps   xmm5,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +DB      0x0f,0x1f,0x00
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +
> > > > >
> > > > > +$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[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[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $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
> > > > >
> > > > > +DB      102,15,56,221,208
> > > > >
> > > > > +DB      102,15,56,221,216
> > > > >
> > > > > +DB      102,15,56,221,224
> > > > >
> > > > > +DB      102,15,56,221,232
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_decrypt4:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        xorps   xmm4,xmm0
> > > > >
> > > > > +        xorps   xmm5,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +DB      0x0f,0x1f,0x00
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +
> > > > >
> > > > > +$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[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[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $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
> > > > >
> > > > > +DB      102,15,56,223,208
> > > > >
> > > > > +DB      102,15,56,223,216
> > > > >
> > > > > +DB      102,15,56,223,224
> > > > >
> > > > > +DB      102,15,56,223,232
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_encrypt6:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        pxor    xmm5,xmm0
> > > > >
> > > > > +        pxor    xmm6,xmm0
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +        pxor    xmm7,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +        jmp     NEAR $L$enc_loop6_enter
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$enc_loop6:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +$L$enc_loop6_enter:
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +DB      102,15,56,220,241
> > > > >
> > > > > +DB      102,15,56,220,249
> > > > >
> > > > > +        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
> > > > >
> > > > > +DB      102,15,56,220,240
> > > > >
> > > > > +DB      102,15,56,220,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $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
> > > > >
> > > > > +DB      102,15,56,221,208
> > > > >
> > > > > +DB      102,15,56,221,216
> > > > >
> > > > > +DB      102,15,56,221,224
> > > > >
> > > > > +DB      102,15,56,221,232
> > > > >
> > > > > +DB      102,15,56,221,240
> > > > >
> > > > > +DB      102,15,56,221,248
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_decrypt6:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        pxor    xmm5,xmm0
> > > > >
> > > > > +        pxor    xmm6,xmm0
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +        pxor    xmm7,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +        jmp     NEAR $L$dec_loop6_enter
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$dec_loop6:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +$L$dec_loop6_enter:
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +DB      102,15,56,222,241
> > > > >
> > > > > +DB      102,15,56,222,249
> > > > >
> > > > > +        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
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $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
> > > > >
> > > > > +DB      102,15,56,223,208
> > > > >
> > > > > +DB      102,15,56,223,216
> > > > >
> > > > > +DB      102,15,56,223,224
> > > > >
> > > > > +DB      102,15,56,223,232
> > > > >
> > > > > +DB      102,15,56,223,240
> > > > >
> > > > > +DB      102,15,56,223,248
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_encrypt8:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm5,xmm0
> > > > >
> > > > > +        pxor    xmm6,xmm0
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        pxor    xmm7,xmm0
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        pxor    xmm9,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +        jmp     NEAR $L$enc_loop8_inner
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$enc_loop8:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +$L$enc_loop8_inner:
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +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
> > > > >
> > > > > +$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
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +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[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$enc_loop8
> > > > >
> > > > > +
> > > > >
> > > > > +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
> > > > >
> > > > > +DB      102,68,15,56,220,193
> > > > >
> > > > > +DB      102,68,15,56,220,201
> > > > >
> > > > > +DB      102,15,56,221,208
> > > > >
> > > > > +DB      102,15,56,221,216
> > > > >
> > > > > +DB      102,15,56,221,224
> > > > >
> > > > > +DB      102,15,56,221,232
> > > > >
> > > > > +DB      102,15,56,221,240
> > > > >
> > > > > +DB      102,15,56,221,248
> > > > >
> > > > > +DB      102,68,15,56,221,192
> > > > >
> > > > > +DB      102,68,15,56,221,200
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_aesni_decrypt8:
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm5,xmm0
> > > > >
> > > > > +        pxor    xmm6,xmm0
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        pxor    xmm7,xmm0
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        pxor    xmm9,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +        jmp     NEAR $L$dec_loop8_inner
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$dec_loop8:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +$L$dec_loop8_inner:
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +DB      102,15,56,222,241
> > > > >
> > > > > +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[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
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +DB      102,68,15,56,222,192
> > > > >
> > > > > +DB      102,68,15,56,222,200
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$dec_loop8
> > > > >
> > > > > +
> > > > >
> > > > > +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
> > > > >
> > > > > +DB      102,68,15,56,222,193
> > > > >
> > > > > +DB      102,68,15,56,222,201
> > > > >
> > > > > +DB      102,15,56,223,208
> > > > >
> > > > > +DB      102,15,56,223,216
> > > > >
> > > > > +DB      102,15,56,223,224
> > > > >
> > > > > +DB      102,15,56,223,232
> > > > >
> > > > > +DB      102,15,56,223,240
> > > > >
> > > > > +DB      102,15,56,223,248
> > > > >
> > > > > +DB      102,68,15,56,223,192
> > > > >
> > > > > +DB      102,68,15,56,223,200
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  aesni_ecb_encrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +aesni_ecb_encrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_ecb_encrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-88))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +$L$ecb_enc_body:
> > > > >
> > > > > +        and     rdx,-16
> > > > >
> > > > > +        jz      NEAR $L$ecb_ret
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,DWORD[240+rcx]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        mov     r11,rcx
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +        test    r8d,r8d
> > > > >
> > > > > +        jz      NEAR $L$ecb_decrypt
> > > > >
> > > > > +
> > > > >
> > > > > +        cmp     rdx,0x80
> > > > >
> > > > > +        jb      NEAR $L$ecb_enc_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        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[rsi],xmm2
> > > > >
> > > > > +        mov     rcx,r11
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        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,0x80
> > > > >
> > > > > +        jnc     NEAR $L$ecb_enc_loop8
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        mov     rcx,r11
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        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[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]
> > > > >
> > > > > +        xorps   xmm9,xmm9
> > > > >
> > > > > +        call    _aesni_encrypt8
> > > > >
> > > > > +        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[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_enc1_3:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > >
> > > > > +        lea     rcx,[16+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$oop_enc1_3
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        jmp     NEAR $L$ecb_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ecb_enc_two:
> > > > >
> > > > > +        call    _aesni_encrypt2
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        jmp     NEAR $L$ecb_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ecb_enc_three:
> > > > >
> > > > > +        call    _aesni_encrypt3
> > > > >
> > > > > +        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:
> > > > >
> > > > > +        call    _aesni_encrypt4
> > > > >
> > > > > +        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:
> > > > >
> > > > > +        xorps   xmm7,xmm7
> > > > >
> > > > > +        call    _aesni_encrypt6
> > > > >
> > > > > +        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:
> > > > >
> > > > > +        call    _aesni_encrypt6
> > > > >
> > > > > +        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,0x80
> > > > >
> > > > > +        jb      NEAR $L$ecb_dec_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        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[rsi],xmm2
> > > > >
> > > > > +        mov     rcx,r11
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        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[r11]
> > > > >
> > > > > +        sub     rdx,0x80
> > > > >
> > > > > +        jnc     NEAR $L$ecb_dec_loop8
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        mov     rcx,r11
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > >
> > > > > +        pxor    xmm8,xmm8
> > > > >
> > > > > +        movups  XMMWORD[112+rsi],xmm9
> > > > >
> > > > > +        pxor    xmm9,xmm9
> > > > >
> > > > > +        lea     rsi,[128+rsi]
> > > > >
> > > > > +        add     rdx,0x80
> > > > >
> > > > > +        jz      NEAR $L$ecb_ret
> > > > >
> > > > > +
> > > > >
> > > > > +$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]
> > > > >
> > > > > +        xorps   xmm9,xmm9
> > > > >
> > > > > +        call    _aesni_decrypt8
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > >
> > > > > +        pxor    xmm8,xmm8
> > > > >
> > > > > +        pxor    xmm9,xmm9
> > > > >
> > > > > +        jmp     NEAR $L$ecb_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ecb_dec_one:
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_dec1_4:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > >
> > > > > +        lea     rcx,[16+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$oop_dec1_4
> > > > >
> > > > > +DB      102,15,56,223,209
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        jmp     NEAR $L$ecb_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ecb_dec_two:
> > > > >
> > > > > +        call    _aesni_decrypt2
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        jmp     NEAR $L$ecb_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ecb_dec_three:
> > > > >
> > > > > +        call    _aesni_decrypt3
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        jmp     NEAR $L$ecb_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ecb_dec_four:
> > > > >
> > > > > +        call    _aesni_decrypt4
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        jmp     NEAR $L$ecb_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ecb_dec_five:
> > > > >
> > > > > +        xorps   xmm7,xmm7
> > > > >
> > > > > +        call    _aesni_decrypt6
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +        jmp     NEAR $L$ecb_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ecb_dec_six:
> > > > >
> > > > > +        call    _aesni_decrypt6
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ecb_ret:
> > > > >
> > > > > +        xorps   xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > >
> > > > > +        lea     rsp,[88+rsp]
> > > > >
> > > > > +$L$ecb_enc_ret:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_aesni_ecb_encrypt:
> > > > >
> > > > > +global  aesni_ccm64_encrypt_blocks
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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,[rcx]
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[r9]
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +DB      102,15,56,0,247
> > > > >
> > > > > +        sub     r10,rax
> > > > >
> > > > > +        jmp     NEAR $L$ccm64_enc_outer
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ccm64_enc_outer:
> > > > >
> > > > > +        movups  xmm0,XMMWORD[r11]
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +        movups  xmm8,XMMWORD[rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > >
> > > > > +        xorps   xmm0,xmm8
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ccm64_enc2_loop:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,32
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        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
> > > > >
> > > > > +        dec     rdx
> > > > >
> > > > > +DB      102,15,56,221,208
> > > > >
> > > > > +DB      102,15,56,221,216
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +        xorps   xmm8,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm8
> > > > >
> > > > > +DB      102,15,56,0,215
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +        jnz     NEAR $L$ccm64_enc_outer
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        movups  XMMWORD[r9],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm8,xmm8
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > >
> > > > > +        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:
> > > > >
> > > > > +global  aesni_ccm64_decrypt_blocks
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_enc1_5:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        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[rdi]
> > > > >
> > > > > +        paddq   xmm6,xmm9
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +        sub     rax,r10
> > > > >
> > > > > +        lea     rcx,[32+r10*1+r11]
> > > > >
> > > > > +        mov     r10,rax
> > > > >
> > > > > +        jmp     NEAR $L$ccm64_dec_outer
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ccm64_dec_outer:
> > > > >
> > > > > +        xorps   xmm8,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm8
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +DB      102,15,56,0,215
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rdx,1
> > > > >
> > > > > +        jz      NEAR $L$ccm64_dec_break
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[r11]
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > >
> > > > > +        xorps   xmm8,xmm0
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +        xorps   xmm3,xmm8
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > >
> > > > > +        jmp     NEAR $L$ccm64_dec2_loop
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ccm64_dec2_loop:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,32
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        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,[16+rdi]
> > > > >
> > > > > +        jmp     NEAR $L$ccm64_dec_outer
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ccm64_dec_break:
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,DWORD[240+r11]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[r11]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > >
> > > > > +        xorps   xmm8,xmm0
> > > > >
> > > > > +        lea     r11,[32+r11]
> > > > >
> > > > > +        xorps   xmm3,xmm8
> > > > >
> > > > > +$L$oop_enc1_6:
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        movups  xmm1,XMMWORD[r11]
> > > > >
> > > > > +        lea     r11,[16+r11]
> > > > >
> > > > > +        jnz     NEAR $L$oop_enc1_6
> > > > >
> > > > > +DB      102,15,56,221,217
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        movups  XMMWORD[r9],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm8,xmm8
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > >
> > > > > +        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:
> > > > >
> > > > > +global  aesni_ctr32_encrypt_blocks
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        cmp     rdx,1
> > > > >
> > > > > +        jne     NEAR $L$ctr32_bulk
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm2,XMMWORD[r8]
> > > > >
> > > > > +        movups  xmm3,XMMWORD[rdi]
> > > > >
> > > > > +        mov     edx,DWORD[240+rcx]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_enc1_7:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > >
> > > > > +        lea     rcx,[16+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$oop_enc1_7
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        xorps   xmm2,xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        xorps   xmm2,xmm2
> > > > >
> > > > > +        jmp     NEAR $L$ctr32_epilogue
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ctr32_bulk:
> > > > >
> > > > > +        lea     r11,[rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsp,288
> > > > >
> > > > > +        and     rsp,-16
> > > > >
> > > > > +        movaps  XMMWORD[(-168)+r11],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[(-152)+r11],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[(-136)+r11],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+r11],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+r11],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+r11],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+r11],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+r11],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+r11],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-24)+r11],xmm15
> > > > >
> > > > > +$L$ctr32_body:
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[r8]
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        mov     r8d,DWORD[12+r8]
> > > > >
> > > > > +        pxor    xmm2,xmm0
> > > > >
> > > > > +        mov     ebp,DWORD[12+rcx]
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm2
> > > > >
> > > > > +        bswap   r8d
> > > > >
> > > > > +        movdqa  xmm3,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm2
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        movdqa  XMMWORD[64+rsp],xmm2
> > > > >
> > > > > +        movdqa  XMMWORD[80+rsp],xmm2
> > > > >
> > > > > +        movdqa  XMMWORD[96+rsp],xmm2
> > > > >
> > > > > +        mov     r10,rdx
> > > > >
> > > > > +        movdqa  XMMWORD[112+rsp],xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rax,[1+r8]
> > > > >
> > > > > +        lea     rdx,[2+r8]
> > > > >
> > > > > +        bswap   eax
> > > > >
> > > > > +        bswap   edx
> > > > >
> > > > > +        xor     eax,ebp
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +DB      102,15,58,34,216,3
> > > > >
> > > > > +        lea     rax,[3+r8]
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm3
> > > > >
> > > > > +DB      102,15,58,34,226,3
> > > > >
> > > > > +        bswap   eax
> > > > >
> > > > > +        mov     rdx,r10
> > > > >
> > > > > +        lea     r10,[4+r8]
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm4
> > > > >
> > > > > +        xor     eax,ebp
> > > > >
> > > > > +        bswap   r10d
> > > > >
> > > > > +DB      102,15,58,34,232,3
> > > > >
> > > > > +        xor     r10d,ebp
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm5
> > > > >
> > > > > +        lea     r9,[5+r8]
> > > > >
> > > > > +        mov     DWORD[((64+12))+rsp],r10d
> > > > >
> > > > > +        bswap   r9d
> > > > >
> > > > > +        lea     r10,[6+r8]
> > > > >
> > > > > +        mov     eax,DWORD[240+rcx]
> > > > >
> > > > > +        xor     r9d,ebp
> > > > >
> > > > > +        bswap   r10d
> > > > >
> > > > > +        mov     DWORD[((80+12))+rsp],r9d
> > > > >
> > > > > +        xor     r10d,ebp
> > > > >
> > > > > +        lea     r9,[7+r8]
> > > > >
> > > > > +        mov     DWORD[((96+12))+rsp],r10d
> > > > >
> > > > > +        bswap   r9d
> > > > >
> > > > > +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
> > > > >
> > > > > +        xor     r9d,ebp
> > > > >
> > > > > +        and     r10d,71303168
> > > > >
> > > > > +        mov     DWORD[((112+12))+rsp],r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[64+rsp]
> > > > >
> > > > > +        movdqa  xmm7,XMMWORD[80+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        cmp     rdx,8
> > > > >
> > > > > +        jb      NEAR $L$ctr32_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rdx,6
> > > > >
> > > > > +        cmp     r10d,4194304
> > > > >
> > > > > +        je      NEAR $L$ctr32_6x
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rcx,[128+rcx]
> > > > >
> > > > > +        sub     rdx,2
> > > > >
> > > > > +        jmp     NEAR $L$ctr32_loop8
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ctr32_6x:
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        mov     r10d,48
> > > > >
> > > > > +        bswap   ebp
> > > > >
> > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > >
> > > > > +        sub     r10,rax
> > > > >
> > > > > +        jmp     NEAR $L$ctr32_loop6
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ctr32_loop6:
> > > > >
> > > > > +        add     r8d,6
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-48))+r10*1+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        mov     eax,r8d
> > > > >
> > > > > +        xor     eax,ebp
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,12
> > > > >
> > > > > +        lea     eax,[1+r8]
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +        xor     eax,ebp
> > > > >
> > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,28
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        lea     eax,[2+r8]
> > > > >
> > > > > +        xor     eax,ebp
> > > > >
> > > > > +DB      102,15,56,220,241
> > > > >
> > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,44
> > > > >
> > > > > +        lea     eax,[3+r8]
> > > > >
> > > > > +DB      102,15,56,220,249
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((-32))+r10*1+rcx]
> > > > >
> > > > > +        xor     eax,ebp
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,60
> > > > >
> > > > > +        lea     eax,[4+r8]
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        xor     eax,ebp
> > > > >
> > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,76
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +        lea     eax,[5+r8]
> > > > >
> > > > > +        xor     eax,ebp
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +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[((-16))+r10*1+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        call    $L$enc_loop6
> > > > >
> > > > > +
> > > > >
> > > > > +        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[rsp]
> > > > >
> > > > > +        pxor    xmm9,xmm3
> > > > >
> > > > > +        movaps  xmm3,XMMWORD[16+rsp]
> > > > >
> > > > > +        pxor    xmm10,xmm4
> > > > >
> > > > > +        movaps  xmm4,XMMWORD[32+rsp]
> > > > >
> > > > > +        pxor    xmm11,xmm5
> > > > >
> > > > > +        movaps  xmm5,XMMWORD[48+rsp]
> > > > >
> > > > > +        pxor    xmm12,xmm6
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[64+rsp]
> > > > >
> > > > > +        pxor    xmm13,xmm7
> > > > >
> > > > > +        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     NEAR $L$ctr32_loop6
> > > > >
> > > > > +
> > > > >
> > > > > +        add     rdx,6
> > > > >
> > > > > +        jz      NEAR $L$ctr32_done
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     eax,[((-48))+r10]
> > > > >
> > > > > +        lea     rcx,[((-80))+r10*1+rcx]
> > > > >
> > > > > +        neg     eax
> > > > >
> > > > > +        shr     eax,4
> > > > >
> > > > > +        jmp     NEAR $L$ctr32_tail
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ctr32_loop8:
> > > > >
> > > > > +        add     r8d,8
> > > > >
> > > > > +        movdqa  xmm8,XMMWORD[96+rsp]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        mov     r9d,r8d
> > > > >
> > > > > +        movdqa  xmm9,XMMWORD[112+rsp]
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        bswap   r9d
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((32-128))+rcx]
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +        xor     r9d,ebp
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        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[((48-128))+rcx]
> > > > >
> > > > > +        bswap   r9d
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        xor     r9d,ebp
> > > > >
> > > > > +DB      0x66,0x90
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +        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[((64-128))+rcx]
> > > > >
> > > > > +        bswap   r9d
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        xor     r9d,ebp
> > > > >
> > > > > +DB      0x66,0x90
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        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[((80-128))+rcx]
> > > > >
> > > > > +        bswap   r9d
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        xor     r9d,ebp
> > > > >
> > > > > +DB      0x66,0x90
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +        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[((96-128))+rcx]
> > > > >
> > > > > +        bswap   r9d
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        xor     r9d,ebp
> > > > >
> > > > > +DB      0x66,0x90
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        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[((112-128))+rcx]
> > > > >
> > > > > +        bswap   r9d
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        xor     r9d,ebp
> > > > >
> > > > > +DB      0x66,0x90
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +        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[((128-128))+rcx]
> > > > >
> > > > > +        bswap   r9d
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        xor     r9d,ebp
> > > > >
> > > > > +DB      0x66,0x90
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        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[((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,ebp
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[rdi]
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +        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[((160-128))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        jb      NEAR $L$ctr32_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +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
> > > > >
> > > > > +DB      102,68,15,56,220,193
> > > > >
> > > > > +DB      102,68,15,56,220,201
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((176-128))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +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[((192-128))+rcx]
> > > > >
> > > > > +        je      NEAR $L$ctr32_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +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
> > > > >
> > > > > +DB      102,68,15,56,220,193
> > > > >
> > > > > +DB      102,68,15,56,220,201
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((208-128))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +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[((224-128))+rcx]
> > > > >
> > > > > +        jmp     NEAR $L$ctr32_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ctr32_enc_done:
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[16+rdi]
> > > > >
> > > > > +        pxor    xmm10,xmm0
> > > > >
> > > > > +        movdqu  xmm12,XMMWORD[32+rdi]
> > > > >
> > > > > +        pxor    xmm11,xmm0
> > > > >
> > > > > +        movdqu  xmm13,XMMWORD[48+rdi]
> > > > >
> > > > > +        pxor    xmm12,xmm0
> > > > >
> > > > > +        movdqu  xmm14,XMMWORD[64+rdi]
> > > > >
> > > > > +        pxor    xmm13,xmm0
> > > > >
> > > > > +        movdqu  xmm15,XMMWORD[80+rdi]
> > > > >
> > > > > +        pxor    xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm0
> > > > >
> > > > > +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
> > > > >
> > > > > +DB      102,68,15,56,220,193
> > > > >
> > > > > +DB      102,68,15,56,220,201
> > > > >
> > > > > +        movdqu  xmm1,XMMWORD[96+rdi]
> > > > >
> > > > > +        lea     rdi,[128+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,65,15,56,221,210
> > > > >
> > > > > +        pxor    xmm1,xmm0
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[((112-128))+rdi]
> > > > >
> > > > > +DB      102,65,15,56,221,219
> > > > >
> > > > > +        pxor    xmm10,xmm0
> > > > >
> > > > > +        movdqa  xmm11,XMMWORD[rsp]
> > > > >
> > > > > +DB      102,65,15,56,221,228
> > > > >
> > > > > +DB      102,65,15,56,221,237
> > > > >
> > > > > +        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[48+rsp]
> > > > >
> > > > > +        movdqa  xmm15,XMMWORD[64+rsp]
> > > > >
> > > > > +DB      102,68,15,56,221,193
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[80+rsp]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((16-128))+rcx]
> > > > >
> > > > > +DB      102,69,15,56,221,202
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm12
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm13
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        movdqa  xmm5,xmm14
> > > > >
> > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        movdqa  xmm6,xmm15
> > > > >
> > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm0
> > > > >
> > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > >
> > > > > +        movups  XMMWORD[112+rsi],xmm9
> > > > >
> > > > > +        lea     rsi,[128+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rdx,8
> > > > >
> > > > > +        jnc     NEAR $L$ctr32_loop8
> > > > >
> > > > > +
> > > > >
> > > > > +        add     rdx,8
> > > > >
> > > > > +        jz      NEAR $L$ctr32_done
> > > > >
> > > > > +        lea     rcx,[((-128))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ctr32_tail:
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rcx,[16+rcx]
> > > > >
> > > > > +        cmp     rdx,4
> > > > >
> > > > > +        jb      NEAR $L$ctr32_loop3
> > > > >
> > > > > +        je      NEAR $L$ctr32_loop4
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        movdqa  xmm8,XMMWORD[96+rsp]
> > > > >
> > > > > +        pxor    xmm9,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[16+rcx]
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        lea     rcx,[((32-16))+rax*1+rcx]
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +        add     rax,16
> > > > >
> > > > > +        movups  xmm10,XMMWORD[rdi]
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +DB      102,15,56,220,241
> > > > >
> > > > > +        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[48+rdi]
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[64+rdi]
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        cmp     rdx,6
> > > > >
> > > > > +        jb      NEAR $L$ctr32_done
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm11,XMMWORD[80+rdi]
> > > > >
> > > > > +        xorps   xmm7,xmm11
> > > > >
> > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > >
> > > > > +        je      NEAR $L$ctr32_done
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm12,XMMWORD[96+rdi]
> > > > >
> > > > > +        xorps   xmm8,xmm12
> > > > >
> > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > >
> > > > > +        jmp     NEAR $L$ctr32_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ctr32_loop4:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        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[rcx]
> > > > >
> > > > > +        jnz     NEAR $L$ctr32_loop4
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +DB      102,15,56,221,217
> > > > >
> > > > > +        movups  xmm10,XMMWORD[rdi]
> > > > >
> > > > > +        movups  xmm11,XMMWORD[16+rdi]
> > > > >
> > > > > +DB      102,15,56,221,225
> > > > >
> > > > > +DB      102,15,56,221,233
> > > > >
> > > > > +        movups  xmm12,XMMWORD[32+rdi]
> > > > >
> > > > > +        movups  xmm13,XMMWORD[48+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        jmp     NEAR $L$ctr32_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ctr32_loop3:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        lea     rcx,[16+rcx]
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +        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[rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        cmp     rdx,2
> > > > >
> > > > > +        jb      NEAR $L$ctr32_done
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm11,XMMWORD[16+rdi]
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        je      NEAR $L$ctr32_done
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm12,XMMWORD[32+rdi]
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ctr32_done:
> > > > >
> > > > > +        xorps   xmm0,xmm0
> > > > >
> > > > > +        xor     ebp,ebp
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-168))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-168)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-152))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-152)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-136))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-136)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-120))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-104))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-88))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-72))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[((-56))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[((-40))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[((-24))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-24)+r11],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > > >
> > > > > +        mov     rbp,QWORD[((-8))+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[r11]
> > > > >
> > > > > +
> > > > >
> > > > > +$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:
> > > > >
> > > > > +global  aesni_xts_encrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +aesni_xts_encrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_xts_encrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r11,[rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsp,272
> > > > >
> > > > > +        and     rsp,-16
> > > > >
> > > > > +        movaps  XMMWORD[(-168)+r11],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[(-152)+r11],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[(-136)+r11],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+r11],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+r11],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+r11],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+r11],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+r11],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+r11],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-24)+r11],xmm15
> > > > >
> > > > > +$L$xts_enc_body:
> > > > >
> > > > > +        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:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        movups  xmm1,XMMWORD[r8]
> > > > >
> > > > > +        lea     r8,[16+r8]
> > > > >
> > > > > +        jnz     NEAR $L$oop_enc1_8
> > > > >
> > > > > +DB      102,15,56,221,209
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        mov     rbp,rcx
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        shl     r10d,4
> > > > >
> > > > > +        mov     r9,rdx
> > > > >
> > > > > +        and     rdx,-16
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,XMMWORD[$L$xts_magic]
> > > > >
> > > > > +        movdqa  xmm15,xmm2
> > > > >
> > > > > +        pshufd  xmm9,xmm2,0x5f
> > > > >
> > > > > +        pxor    xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        movdqa  xmm10,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        pxor    xmm10,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        movdqa  xmm11,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        pxor    xmm11,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        movdqa  xmm12,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        pxor    xmm12,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        movdqa  xmm13,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        pxor    xmm13,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm15
> > > > >
> > > > > +        psrad   xmm9,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm9,xmm8
> > > > >
> > > > > +        pxor    xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rdx,16*6
> > > > >
> > > > > +        jc      NEAR $L$xts_enc_short
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,16+96
> > > > >
> > > > > +        lea     rcx,[32+r10*1+rbp]
> > > > >
> > > > > +        sub     rax,r10
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > > >
> > > > > +        mov     r10,rax
> > > > >
> > > > > +        lea     r8,[$L$xts_magic]
> > > > >
> > > > > +        jmp     NEAR $L$xts_enc_grandloop
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$xts_enc_grandloop:
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        movdqa  xmm8,xmm0
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > > >
> > > > > +        pxor    xmm8,xmm15
> > > > >
> > > > > +        movdqa  xmm9,XMMWORD[96+rsp]
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rbp]
> > > > >
> > > > > +        lea     rdi,[96+rdi]
> > > > >
> > > > > +        pxor    xmm7,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm10,xmm9
> > > > >
> > > > > +DB      102,15,56,220,241
> > > > >
> > > > > +        pxor    xmm11,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm10
> > > > >
> > > > > +DB      102,15,56,220,249
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+rbp]
> > > > >
> > > > > +        pxor    xmm12,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        pxor    xmm13,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm11
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        pxor    xmm14,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm12
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +        pxor    xmm8,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[64+rsp],xmm14
> > > > >
> > > > > +DB      102,15,56,220,240
> > > > >
> > > > > +DB      102,15,56,220,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+rbp]
> > > > >
> > > > > +        movdqa  XMMWORD[80+rsp],xmm8
> > > > >
> > > > > +        pshufd  xmm9,xmm15,0x5f
> > > > >
> > > > > +        jmp     NEAR $L$xts_enc_loop6
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$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[((-64))+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
> > > > >
> > > > > +DB      102,15,56,220,240
> > > > >
> > > > > +DB      102,15,56,220,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$xts_enc_loop6
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,XMMWORD[r8]
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        movups  xmm10,XMMWORD[rbp]
> > > > >
> > > > > +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[((-64))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        pxor    xmm10,xmm15
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        movaps  xmm12,xmm11
> > > > >
> > > > > +DB      102,15,56,220,240
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +DB      102,15,56,220,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-48))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        pxor    xmm11,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        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[((-32))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        pxor    xmm12,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +DB      102,15,56,220,240
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movaps  xmm14,xmm13
> > > > >
> > > > > +DB      102,15,56,220,248
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        pxor    xmm13,xmm15
> > > > >
> > > > > +        psrad   xmm0,31
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm0,xmm8
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        pxor    xmm15,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rbp]
> > > > >
> > > > > +DB      102,15,56,220,241
> > > > >
> > > > > +DB      102,15,56,220,249
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm14,xmm15
> > > > >
> > > > > +DB      102,15,56,221,84,36,0
> > > > >
> > > > > +        psrad   xmm9,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +DB      102,15,56,221,92,36,16
> > > > >
> > > > > +DB      102,15,56,221,100,36,32
> > > > >
> > > > > +        pand    xmm9,xmm8
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +DB      102,15,56,221,108,36,48
> > > > >
> > > > > +DB      102,15,56,221,116,36,64
> > > > >
> > > > > +DB      102,15,56,221,124,36,80
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        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     NEAR $L$xts_enc_grandloop
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,16+96
> > > > >
> > > > > +        sub     eax,r10d
> > > > >
> > > > > +        mov     rcx,rbp
> > > > >
> > > > > +        shr     eax,4
> > > > >
> > > > > +
> > > > >
> > > > > +$L$xts_enc_short:
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +        pxor    xmm10,xmm0
> > > > >
> > > > > +        add     rdx,16*6
> > > > >
> > > > > +        jz      NEAR $L$xts_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm11,xmm0
> > > > >
> > > > > +        cmp     rdx,0x20
> > > > >
> > > > > +        jb      NEAR $L$xts_enc_one
> > > > >
> > > > > +        pxor    xmm12,xmm0
> > > > >
> > > > > +        je      NEAR $L$xts_enc_two
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm13,xmm0
> > > > >
> > > > > +        cmp     rdx,0x40
> > > > >
> > > > > +        jb      NEAR $L$xts_enc_three
> > > > >
> > > > > +        pxor    xmm14,xmm0
> > > > >
> > > > > +        je      NEAR $L$xts_enc_four
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > >
> > > > > +        lea     rdi,[80+rdi]
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _aesni_encrypt6
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movdqa  xmm10,xmm15
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        xorps   xmm5,xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        xorps   xmm6,xmm14
> > > > >
> > > > > +        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[rdi]
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_enc1_9:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        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[rsi],xmm2
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +        jmp     NEAR $L$xts_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$xts_enc_two:
> > > > >
> > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        lea     rdi,[32+rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _aesni_encrypt2
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movdqa  xmm10,xmm12
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        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[rdi]
> > > > >
> > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        lea     rdi,[48+rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _aesni_encrypt3
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movdqa  xmm10,xmm13
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +        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[rdi]
> > > > >
> > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movups  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        lea     rdi,[64+rdi]
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +        xorps   xmm5,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _aesni_encrypt4
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movdqa  xmm10,xmm14
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        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:
> > > > >
> > > > > +        and     r9,15
> > > > >
> > > > > +        jz      NEAR $L$xts_enc_ret
> > > > >
> > > > > +        mov     rdx,r9
> > > > >
> > > > > +
> > > > >
> > > > > +$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     NEAR $L$xts_enc_steal
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsi,r9
> > > > >
> > > > > +        mov     rcx,rbp
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm2,XMMWORD[((-16))+rsi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_enc1_10:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        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[(-16)+rsi],xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +$L$xts_enc_ret:
> > > > >
> > > > > +        xorps   xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-168))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-168)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-152))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-152)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-136))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-136)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-120))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-104))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-88))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-72))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[((-56))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[((-40))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[((-24))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-24)+r11],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > >
> > > > > +        mov     rbp,QWORD[((-8))+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[r11]
> > > > >
> > > > > +
> > > > >
> > > > > +$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:
> > > > >
> > > > > +global  aesni_xts_decrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +aesni_xts_decrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_xts_decrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r11,[rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsp,272
> > > > >
> > > > > +        and     rsp,-16
> > > > >
> > > > > +        movaps  XMMWORD[(-168)+r11],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[(-152)+r11],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[(-136)+r11],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+r11],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+r11],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+r11],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+r11],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+r11],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+r11],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-24)+r11],xmm15
> > > > >
> > > > > +$L$xts_dec_body:
> > > > >
> > > > > +        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:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        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
> > > > >
> > > > > +        setnz   al
> > > > >
> > > > > +        shl     rax,4
> > > > >
> > > > > +        sub     rdx,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        mov     rbp,rcx
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        shl     r10d,4
> > > > >
> > > > > +        mov     r9,rdx
> > > > >
> > > > > +        and     rdx,-16
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,XMMWORD[$L$xts_magic]
> > > > >
> > > > > +        movdqa  xmm15,xmm2
> > > > >
> > > > > +        pshufd  xmm9,xmm2,0x5f
> > > > >
> > > > > +        pxor    xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        movdqa  xmm10,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        pxor    xmm10,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        movdqa  xmm11,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        pxor    xmm11,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        movdqa  xmm12,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        pxor    xmm12,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        movdqa  xmm13,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        pxor    xmm13,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm15
> > > > >
> > > > > +        psrad   xmm9,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm9,xmm8
> > > > >
> > > > > +        pxor    xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rdx,16*6
> > > > >
> > > > > +        jc      NEAR $L$xts_dec_short
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,16+96
> > > > >
> > > > > +        lea     rcx,[32+r10*1+rbp]
> > > > >
> > > > > +        sub     rax,r10
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > > >
> > > > > +        mov     r10,rax
> > > > >
> > > > > +        lea     r8,[$L$xts_magic]
> > > > >
> > > > > +        jmp     NEAR $L$xts_dec_grandloop
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$xts_dec_grandloop:
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        movdqa  xmm8,xmm0
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > > >
> > > > > +        pxor    xmm8,xmm15
> > > > >
> > > > > +        movdqa  xmm9,XMMWORD[96+rsp]
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+rbp]
> > > > >
> > > > > +        lea     rdi,[96+rdi]
> > > > >
> > > > > +        pxor    xmm7,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm10,xmm9
> > > > >
> > > > > +DB      102,15,56,222,241
> > > > >
> > > > > +        pxor    xmm11,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm10
> > > > >
> > > > > +DB      102,15,56,222,249
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+rbp]
> > > > >
> > > > > +        pxor    xmm12,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +        pxor    xmm13,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm11
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +        pxor    xmm14,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm12
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +        pxor    xmm8,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[64+rsp],xmm14
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+rbp]
> > > > >
> > > > > +        movdqa  XMMWORD[80+rsp],xmm8
> > > > >
> > > > > +        pshufd  xmm9,xmm15,0x5f
> > > > >
> > > > > +        jmp     NEAR $L$xts_dec_loop6
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$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[((-64))+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
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$xts_dec_loop6
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,XMMWORD[r8]
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        movups  xmm10,XMMWORD[rbp]
> > > > >
> > > > > +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[((-64))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +        pxor    xmm10,xmm15
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +        movaps  xmm12,xmm11
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movdqa  xmm14,xmm9
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-48))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        pxor    xmm11,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        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[((-32))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +        pxor    xmm12,xmm15
> > > > >
> > > > > +        psrad   xmm14,31
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm14,xmm8
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        movaps  xmm14,xmm13
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm9
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        pxor    xmm13,xmm15
> > > > >
> > > > > +        psrad   xmm0,31
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm0,xmm8
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        pxor    xmm15,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rbp]
> > > > >
> > > > > +DB      102,15,56,222,241
> > > > >
> > > > > +DB      102,15,56,222,249
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm14,xmm15
> > > > >
> > > > > +DB      102,15,56,223,84,36,0
> > > > >
> > > > > +        psrad   xmm9,31
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +DB      102,15,56,223,92,36,16
> > > > >
> > > > > +DB      102,15,56,223,100,36,32
> > > > >
> > > > > +        pand    xmm9,xmm8
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +DB      102,15,56,223,108,36,48
> > > > >
> > > > > +DB      102,15,56,223,116,36,64
> > > > >
> > > > > +DB      102,15,56,223,124,36,80
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        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     NEAR $L$xts_dec_grandloop
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,16+96
> > > > >
> > > > > +        sub     eax,r10d
> > > > >
> > > > > +        mov     rcx,rbp
> > > > >
> > > > > +        shr     eax,4
> > > > >
> > > > > +
> > > > >
> > > > > +$L$xts_dec_short:
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +        pxor    xmm10,xmm0
> > > > >
> > > > > +        pxor    xmm11,xmm0
> > > > >
> > > > > +        add     rdx,16*6
> > > > >
> > > > > +        jz      NEAR $L$xts_dec_done
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm12,xmm0
> > > > >
> > > > > +        cmp     rdx,0x20
> > > > >
> > > > > +        jb      NEAR $L$xts_dec_one
> > > > >
> > > > > +        pxor    xmm13,xmm0
> > > > >
> > > > > +        je      NEAR $L$xts_dec_two
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm14,xmm0
> > > > >
> > > > > +        cmp     rdx,0x40
> > > > >
> > > > > +        jb      NEAR $L$xts_dec_three
> > > > >
> > > > > +        je      NEAR $L$xts_dec_four
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > >
> > > > > +        lea     rdi,[80+rdi]
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _aesni_decrypt6
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        xorps   xmm5,xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        xorps   xmm6,xmm14
> > > > >
> > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm14,xmm14
> > > > >
> > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pcmpgtd xmm14,xmm15
> > > > >
> > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        lea     rsi,[80+rsi]
> > > > >
> > > > > +        pshufd  xmm11,xmm14,0x13
> > > > >
> > > > > +        and     r9,15
> > > > >
> > > > > +        jz      NEAR $L$xts_dec_ret
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm10,xmm15
> > > > >
> > > > > +        paddq   xmm15,xmm15
> > > > >
> > > > > +        pand    xmm11,xmm8
> > > > >
> > > > > +        pxor    xmm11,xmm15
> > > > >
> > > > > +        jmp     NEAR $L$xts_dec_done2
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$xts_dec_one:
> > > > >
> > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_dec1_12:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        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[rsi],xmm2
> > > > >
> > > > > +        movdqa  xmm11,xmm12
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +        jmp     NEAR $L$xts_dec_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$xts_dec_two:
> > > > >
> > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        lea     rdi,[32+rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _aesni_decrypt2
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movdqa  xmm10,xmm12
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        movdqa  xmm11,xmm13
> > > > >
> > > > > +        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[rdi]
> > > > >
> > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        lea     rdi,[48+rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _aesni_decrypt3
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movdqa  xmm10,xmm13
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        movdqa  xmm11,xmm14
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +        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[rdi]
> > > > >
> > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movups  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        lea     rdi,[64+rdi]
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +        xorps   xmm5,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _aesni_decrypt4
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movdqa  xmm10,xmm14
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqa  xmm11,xmm15
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        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:
> > > > >
> > > > > +        and     r9,15
> > > > >
> > > > > +        jz      NEAR $L$xts_dec_ret
> > > > >
> > > > > +$L$xts_dec_done2:
> > > > >
> > > > > +        mov     rdx,r9
> > > > >
> > > > > +        mov     rcx,rbp
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        xorps   xmm2,xmm11
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_dec1_13:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        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[rsi],xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +$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     NEAR $L$xts_dec_steal
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsi,r9
> > > > >
> > > > > +        mov     rcx,rbp
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm2,XMMWORD[rsi]
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_dec1_14:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        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[rsi],xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +$L$xts_dec_ret:
> > > > >
> > > > > +        xorps   xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-168))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-168)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-152))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-152)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-136))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-136)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-120))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-104))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-88))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-72))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[((-56))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[((-40))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+r11],xmm0
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[((-24))+r11]
> > > > >
> > > > > +        movaps  XMMWORD[(-24)+r11],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > >
> > > > > +        mov     rbp,QWORD[((-8))+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[r11]
> > > > >
> > > > > +
> > > > >
> > > > > +$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:
> > > > >
> > > > > +global  aesni_ocb_encrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +aesni_ocb_encrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_ocb_encrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rax,[rsp]
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-160))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[112+rsp],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[128+rsp],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[144+rsp],xmm15
> > > > >
> > > > > +$L$ocb_enc_body:
> > > > >
> > > > > +        mov     rbx,QWORD[56+rax]
> > > > >
> > > > > +        mov     rbp,QWORD[((56+8))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[240+rcx]
> > > > >
> > > > > +        mov     r11,rcx
> > > > >
> > > > > +        shl     r10d,4
> > > > >
> > > > > +        movups  xmm9,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm15,XMMWORD[r9]
> > > > >
> > > > > +        pxor    xmm9,xmm1
> > > > >
> > > > > +        pxor    xmm15,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,16+32
> > > > >
> > > > > +        lea     rcx,[32+r10*1+r11]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > >
> > > > > +        sub     rax,r10
> > > > >
> > > > > +        mov     r10,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[rbp]
> > > > >
> > > > > +
> > > > >
> > > > > +        test    r8,1
> > > > >
> > > > > +        jnz     NEAR $L$ocb_enc_odd
> > > > >
> > > > > +
> > > > >
> > > > > +        bsf     r12,r8
> > > > >
> > > > > +        add     r8,1
> > > > >
> > > > > +        shl     r12,4
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[r12*1+rbx]
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_encrypt1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm7
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +        sub     rdx,1
> > > > >
> > > > > +        jz      NEAR $L$ocb_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ocb_enc_odd:
> > > > >
> > > > > +        lea     r12,[1+r8]
> > > > >
> > > > > +        lea     r13,[3+r8]
> > > > >
> > > > > +        lea     r14,[5+r8]
> > > > >
> > > > > +        lea     r8,[6+r8]
> > > > >
> > > > > +        bsf     r12,r12
> > > > >
> > > > > +        bsf     r13,r13
> > > > >
> > > > > +        bsf     r14,r14
> > > > >
> > > > > +        shl     r12,4
> > > > >
> > > > > +        shl     r13,4
> > > > >
> > > > > +        shl     r14,4
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rdx,6
> > > > >
> > > > > +        jc      NEAR $L$ocb_enc_short
> > > > >
> > > > > +        jmp     NEAR $L$ocb_enc_grandloop
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ocb_enc_grandloop:
> > > > >
> > > > > +        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]
> > > > >
> > > > > +        lea     rdi,[96+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_encrypt6
> > > > >
> > > > > +
> > > > >
> > > > > +        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
> > > > >
> > > > > +        lea     rsi,[96+rsi]
> > > > >
> > > > > +        sub     rdx,6
> > > > >
> > > > > +        jnc     NEAR $L$ocb_enc_grandloop
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ocb_enc_short:
> > > > >
> > > > > +        add     rdx,6
> > > > >
> > > > > +        jz      NEAR $L$ocb_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        cmp     rdx,2
> > > > >
> > > > > +        jb      NEAR $L$ocb_enc_one
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        je      NEAR $L$ocb_enc_two
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        cmp     rdx,4
> > > > >
> > > > > +        jb      NEAR $L$ocb_enc_three
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        je      NEAR $L$ocb_enc_four
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_encrypt6
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm14
> > > > >
> > > > > +        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$ocb_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ocb_enc_one:
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_encrypt1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm7
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        jmp     NEAR $L$ocb_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ocb_enc_two:
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_encrypt4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm11
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$ocb_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ocb_enc_three:
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_encrypt4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm12
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$ocb_enc_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ocb_enc_four:
> > > > >
> > > > > +        call    __ocb_encrypt4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm13
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ocb_enc_done:
> > > > >
> > > > > +        pxor    xmm15,xmm0
> > > > >
> > > > > +        movdqu  XMMWORD[rbp],xmm8
> > > > >
> > > > > +        movdqu  XMMWORD[r9],xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[64+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[80+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[96+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[112+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[128+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[128+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[144+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[144+rsp],xmm0
> > > > >
> > > > > +        lea     rax,[((160+40))+rsp]
> > > > >
> > > > > +$L$ocb_enc_pop:
> > > > >
> > > > > +        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$ocb_enc_epilogue:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_aesni_ocb_encrypt:
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +__ocb_encrypt6:
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > > >
> > > > > +        movdqa  xmm12,xmm10
> > > > >
> > > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > > >
> > > > > +        movdqa  xmm14,xmm10
> > > > >
> > > > > +        pxor    xmm10,xmm15
> > > > >
> > > > > +        movdqu  xmm15,XMMWORD[r14*1+rbx]
> > > > >
> > > > > +        pxor    xmm11,xmm10
> > > > >
> > > > > +        pxor    xmm8,xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        pxor    xmm12,xmm11
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        pxor    xmm13,xmm12
> > > > >
> > > > > +        pxor    xmm8,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm14,xmm13
> > > > >
> > > > > +        pxor    xmm8,xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        pxor    xmm8,xmm6
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm8,xmm7
> > > > >
> > > > > +        pxor    xmm7,xmm15
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r12,[1+r8]
> > > > >
> > > > > +        lea     r13,[3+r8]
> > > > >
> > > > > +        lea     r14,[5+r8]
> > > > >
> > > > > +        add     r8,6
> > > > >
> > > > > +        pxor    xmm10,xmm9
> > > > >
> > > > > +        bsf     r12,r12
> > > > >
> > > > > +        bsf     r13,r13
> > > > >
> > > > > +        bsf     r14,r14
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +DB      102,15,56,220,217
> > > > >
> > > > > +DB      102,15,56,220,225
> > > > >
> > > > > +DB      102,15,56,220,233
> > > > >
> > > > > +        pxor    xmm11,xmm9
> > > > >
> > > > > +        pxor    xmm12,xmm9
> > > > >
> > > > > +DB      102,15,56,220,241
> > > > >
> > > > > +        pxor    xmm13,xmm9
> > > > >
> > > > > +        pxor    xmm14,xmm9
> > > > >
> > > > > +DB      102,15,56,220,249
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+r11]
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +DB      102,15,56,220,216
> > > > >
> > > > > +DB      102,15,56,220,224
> > > > >
> > > > > +DB      102,15,56,220,232
> > > > >
> > > > > +DB      102,15,56,220,240
> > > > >
> > > > > +DB      102,15,56,220,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+r11]
> > > > >
> > > > > +        shl     r12,4
> > > > >
> > > > > +        shl     r13,4
> > > > >
> > > > > +        jmp     NEAR $L$ocb_enc_loop6
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ocb_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[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
> > > > >
> > > > > +DB      102,15,56,220,240
> > > > >
> > > > > +DB      102,15,56,220,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > > >
> > > > > +        shl     r14,4
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,65,15,56,221,210
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +DB      102,65,15,56,221,219
> > > > >
> > > > > +DB      102,65,15,56,221,228
> > > > >
> > > > > +DB      102,65,15,56,221,237
> > > > >
> > > > > +DB      102,65,15,56,221,246
> > > > >
> > > > > +DB      102,65,15,56,221,255
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +__ocb_encrypt4:
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > > >
> > > > > +        movdqa  xmm12,xmm10
> > > > >
> > > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > > >
> > > > > +        pxor    xmm10,xmm15
> > > > >
> > > > > +        pxor    xmm11,xmm10
> > > > >
> > > > > +        pxor    xmm8,xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        pxor    xmm12,xmm11
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        pxor    xmm13,xmm12
> > > > >
> > > > > +        pxor    xmm8,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm8,xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm10,xmm9
> > > > >
> > > > > +        pxor    xmm11,xmm9
> > > > >
> > > > > +        pxor    xmm12,xmm9
> > > > >
> > > > > +        pxor    xmm13,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +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[48+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +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[64+r11]
> > > > >
> > > > > +        jmp     NEAR $L$ocb_enc_loop4
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ocb_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[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[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,65,15,56,221,210
> > > > >
> > > > > +DB      102,65,15,56,221,219
> > > > >
> > > > > +DB      102,65,15,56,221,228
> > > > >
> > > > > +DB      102,65,15,56,221,237
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +__ocb_encrypt1:
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm9
> > > > >
> > > > > +        pxor    xmm8,xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm7
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+r11]
> > > > >
> > > > > +        pxor    xmm7,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+r11]
> > > > >
> > > > > +        jmp     NEAR $L$ocb_enc_loop1
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ocb_enc_loop1:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,32
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,208
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$ocb_enc_loop1
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,221,215
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  aesni_ocb_decrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +aesni_ocb_decrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_ocb_decrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rax,[rsp]
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-160))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[112+rsp],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[128+rsp],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[144+rsp],xmm15
> > > > >
> > > > > +$L$ocb_dec_body:
> > > > >
> > > > > +        mov     rbx,QWORD[56+rax]
> > > > >
> > > > > +        mov     rbp,QWORD[((56+8))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[240+rcx]
> > > > >
> > > > > +        mov     r11,rcx
> > > > >
> > > > > +        shl     r10d,4
> > > > >
> > > > > +        movups  xmm9,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm15,XMMWORD[r9]
> > > > >
> > > > > +        pxor    xmm9,xmm1
> > > > >
> > > > > +        pxor    xmm15,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,16+32
> > > > >
> > > > > +        lea     rcx,[32+r10*1+r11]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > >
> > > > > +        sub     rax,r10
> > > > >
> > > > > +        mov     r10,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[rbp]
> > > > >
> > > > > +
> > > > >
> > > > > +        test    r8,1
> > > > >
> > > > > +        jnz     NEAR $L$ocb_dec_odd
> > > > >
> > > > > +
> > > > >
> > > > > +        bsf     r12,r8
> > > > >
> > > > > +        add     r8,1
> > > > >
> > > > > +        shl     r12,4
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[r12*1+rbx]
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_decrypt1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm7
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        xorps   xmm8,xmm2
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +        sub     rdx,1
> > > > >
> > > > > +        jz      NEAR $L$ocb_dec_done
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ocb_dec_odd:
> > > > >
> > > > > +        lea     r12,[1+r8]
> > > > >
> > > > > +        lea     r13,[3+r8]
> > > > >
> > > > > +        lea     r14,[5+r8]
> > > > >
> > > > > +        lea     r8,[6+r8]
> > > > >
> > > > > +        bsf     r12,r12
> > > > >
> > > > > +        bsf     r13,r13
> > > > >
> > > > > +        bsf     r14,r14
> > > > >
> > > > > +        shl     r12,4
> > > > >
> > > > > +        shl     r13,4
> > > > >
> > > > > +        shl     r14,4
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rdx,6
> > > > >
> > > > > +        jc      NEAR $L$ocb_dec_short
> > > > >
> > > > > +        jmp     NEAR $L$ocb_dec_grandloop
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ocb_dec_grandloop:
> > > > >
> > > > > +        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]
> > > > >
> > > > > +        lea     rdi,[96+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_decrypt6
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm8,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm8,xmm4
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm8,xmm5
> > > > >
> > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        pxor    xmm8,xmm6
> > > > >
> > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > >
> > > > > +        pxor    xmm8,xmm7
> > > > >
> > > > > +        lea     rsi,[96+rsi]
> > > > >
> > > > > +        sub     rdx,6
> > > > >
> > > > > +        jnc     NEAR $L$ocb_dec_grandloop
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ocb_dec_short:
> > > > >
> > > > > +        add     rdx,6
> > > > >
> > > > > +        jz      NEAR $L$ocb_dec_done
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        cmp     rdx,2
> > > > >
> > > > > +        jb      NEAR $L$ocb_dec_one
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        je      NEAR $L$ocb_dec_two
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        cmp     rdx,4
> > > > >
> > > > > +        jb      NEAR $L$ocb_dec_three
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        je      NEAR $L$ocb_dec_four
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_decrypt6
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm14
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm8,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm8,xmm4
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm8,xmm5
> > > > >
> > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        pxor    xmm8,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$ocb_dec_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ocb_dec_one:
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_decrypt1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm7
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        xorps   xmm8,xmm2
> > > > >
> > > > > +        jmp     NEAR $L$ocb_dec_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ocb_dec_two:
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_decrypt4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm11
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        xorps   xmm8,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        xorps   xmm8,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$ocb_dec_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ocb_dec_three:
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __ocb_decrypt4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm12
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        xorps   xmm8,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        xorps   xmm8,xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        xorps   xmm8,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$ocb_dec_done
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ocb_dec_four:
> > > > >
> > > > > +        call    __ocb_decrypt4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm15,xmm13
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm8,xmm2
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm8,xmm4
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm8,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ocb_dec_done:
> > > > >
> > > > > +        pxor    xmm15,xmm0
> > > > >
> > > > > +        movdqu  XMMWORD[rbp],xmm8
> > > > >
> > > > > +        movdqu  XMMWORD[r9],xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        xorps   xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[64+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[80+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[96+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[112+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[128+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[128+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[144+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[144+rsp],xmm0
> > > > >
> > > > > +        lea     rax,[((160+40))+rsp]
> > > > >
> > > > > +$L$ocb_dec_pop:
> > > > >
> > > > > +        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$ocb_dec_epilogue:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_aesni_ocb_decrypt:
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +__ocb_decrypt6:
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > > >
> > > > > +        movdqa  xmm12,xmm10
> > > > >
> > > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > > >
> > > > > +        movdqa  xmm14,xmm10
> > > > >
> > > > > +        pxor    xmm10,xmm15
> > > > >
> > > > > +        movdqu  xmm15,XMMWORD[r14*1+rbx]
> > > > >
> > > > > +        pxor    xmm11,xmm10
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        pxor    xmm12,xmm11
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        pxor    xmm13,xmm12
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm14,xmm13
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        pxor    xmm15,xmm14
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm15
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r12,[1+r8]
> > > > >
> > > > > +        lea     r13,[3+r8]
> > > > >
> > > > > +        lea     r14,[5+r8]
> > > > >
> > > > > +        add     r8,6
> > > > >
> > > > > +        pxor    xmm10,xmm9
> > > > >
> > > > > +        bsf     r12,r12
> > > > >
> > > > > +        bsf     r13,r13
> > > > >
> > > > > +        bsf     r14,r14
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        pxor    xmm11,xmm9
> > > > >
> > > > > +        pxor    xmm12,xmm9
> > > > >
> > > > > +DB      102,15,56,222,241
> > > > >
> > > > > +        pxor    xmm13,xmm9
> > > > >
> > > > > +        pxor    xmm14,xmm9
> > > > >
> > > > > +DB      102,15,56,222,249
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+r11]
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+r11]
> > > > >
> > > > > +        shl     r12,4
> > > > >
> > > > > +        shl     r13,4
> > > > >
> > > > > +        jmp     NEAR $L$ocb_dec_loop6
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ocb_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[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
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > > >
> > > > > +        shl     r14,4
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,65,15,56,223,210
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +DB      102,65,15,56,223,219
> > > > >
> > > > > +DB      102,65,15,56,223,228
> > > > >
> > > > > +DB      102,65,15,56,223,237
> > > > >
> > > > > +DB      102,65,15,56,223,246
> > > > >
> > > > > +DB      102,65,15,56,223,255
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +__ocb_decrypt4:
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm15,xmm9
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > > >
> > > > > +        movdqa  xmm12,xmm10
> > > > >
> > > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > > >
> > > > > +        pxor    xmm10,xmm15
> > > > >
> > > > > +        pxor    xmm11,xmm10
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        pxor    xmm12,xmm11
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        pxor    xmm13,xmm12
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm10,xmm9
> > > > >
> > > > > +        pxor    xmm11,xmm9
> > > > >
> > > > > +        pxor    xmm12,xmm9
> > > > >
> > > > > +        pxor    xmm13,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +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[48+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +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[64+r11]
> > > > >
> > > > > +        jmp     NEAR $L$ocb_dec_loop4
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ocb_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[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[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,65,15,56,223,210
> > > > >
> > > > > +DB      102,65,15,56,223,219
> > > > >
> > > > > +DB      102,65,15,56,223,228
> > > > >
> > > > > +DB      102,65,15,56,223,237
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +__ocb_decrypt1:
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm9
> > > > >
> > > > > +        pxor    xmm2,xmm7
> > > > >
> > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[48+r11]
> > > > >
> > > > > +        pxor    xmm7,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +        movups  xmm0,XMMWORD[64+r11]
> > > > >
> > > > > +        jmp     NEAR $L$ocb_dec_loop1
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$ocb_dec_loop1:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > >
> > > > > +        add     rax,32
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$ocb_dec_loop1
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > >
> > > > > +        mov     rax,r10
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,223,215
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  aesni_cbc_encrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +aesni_cbc_encrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_aesni_cbc_encrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        test    rdx,rdx
> > > > >
> > > > > +        jz      NEAR $L$cbc_ret
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[240+rcx]
> > > > >
> > > > > +        mov     r11,rcx
> > > > >
> > > > > +        test    r9d,r9d
> > > > >
> > > > > +        jz      NEAR $L$cbc_decrypt
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm2,XMMWORD[r8]
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        cmp     rdx,16
> > > > >
> > > > > +        jb      NEAR $L$cbc_enc_tail
> > > > >
> > > > > +        sub     rdx,16
> > > > >
> > > > > +        jmp     NEAR $L$cbc_enc_loop
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_enc_loop:
> > > > >
> > > > > +        movups  xmm3,XMMWORD[rdi]
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        xorps   xmm3,xmm0
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm3
> > > > >
> > > > > +$L$oop_enc1_15:
> > > > >
> > > > > +DB      102,15,56,220,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        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[rsi],xmm2
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +        sub     rdx,16
> > > > >
> > > > > +        jnc     NEAR $L$cbc_enc_loop
> > > > >
> > > > > +        add     rdx,16
> > > > >
> > > > > +        jnz     NEAR $L$cbc_enc_tail
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        movups  XMMWORD[r8],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        jmp     NEAR $L$cbc_ret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$cbc_enc_tail:
> > > > >
> > > > > +        mov     rcx,rdx
> > > > >
> > > > > +        xchg    rsi,rdi
> > > > >
> > > > > +        DD      0x9066A4F3
> > > > >
> > > > > +        mov     ecx,16
> > > > >
> > > > > +        sub     rcx,rdx
> > > > >
> > > > > +        xor     eax,eax
> > > > >
> > > > > +        DD      0x9066AAF3
> > > > >
> > > > > +        lea     rdi,[((-16))+rdi]
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        mov     rsi,rdi
> > > > >
> > > > > +        mov     rcx,r11
> > > > >
> > > > > +        xor     rdx,rdx
> > > > >
> > > > > +        jmp     NEAR $L$cbc_enc_loop
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_decrypt:
> > > > >
> > > > > +        cmp     rdx,16
> > > > >
> > > > > +        jne     NEAR $L$cbc_decrypt_bulk
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[r8]
> > > > >
> > > > > +        movdqa  xmm4,xmm2
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_dec1_16:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        dec     r10d
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > >
> > > > > +        lea     rcx,[16+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$oop_dec1_16
> > > > >
> > > > > +DB      102,15,56,223,209
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        movdqu  XMMWORD[r8],xmm4
> > > > >
> > > > > +        xorps   xmm2,xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        jmp     NEAR $L$cbc_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_decrypt_bulk:
> > > > >
> > > > > +        lea     r11,[rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsp,176
> > > > >
> > > > > +        and     rsp,-16
> > > > >
> > > > > +        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:
> > > > >
> > > > > +        mov     rbp,rcx
> > > > >
> > > > > +        movups  xmm10,XMMWORD[r8]
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        cmp     rdx,0x50
> > > > >
> > > > > +        jbe     NEAR $L$cbc_dec_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        movdqa  xmm11,xmm2
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        movdqa  xmm12,xmm3
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        movdqa  xmm13,xmm4
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > >
> > > > > +        movdqa  xmm14,xmm5
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > > >
> > > > > +        movdqa  xmm15,xmm6
> > > > >
> > > > > +        mov     r9d,DWORD[((OPENSSL_ia32cap_P+4))]
> > > > >
> > > > > +        cmp     rdx,0x70
> > > > >
> > > > > +        jbe     NEAR $L$cbc_dec_six_or_seven
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r9d,71303168
> > > > >
> > > > > +        sub     rdx,0x50
> > > > >
> > > > > +        cmp     r9d,4194304
> > > > >
> > > > > +        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[rsi],xmm9
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +$L$cbc_dec_loop8_enter:
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[96+rdi]
> > > > >
> > > > > +        pxor    xmm2,xmm0
> > > > >
> > > > > +        movdqu  xmm9,XMMWORD[112+rdi]
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((16-112))+rcx]
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        mov     rbp,-1
> > > > >
> > > > > +        cmp     rdx,0x70
> > > > >
> > > > > +        pxor    xmm5,xmm0
> > > > >
> > > > > +        pxor    xmm6,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm0
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        pxor    xmm9,xmm0
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((32-112))+rcx]
> > > > >
> > > > > +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
> > > > >
> > > > > +DB      102,68,15,56,222,193
> > > > >
> > > > > +        adc     rbp,0
> > > > >
> > > > > +        and     rbp,128
> > > > >
> > > > > +DB      102,68,15,56,222,201
> > > > >
> > > > > +        add     rbp,rdi
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((48-112))+rcx]
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +DB      102,68,15,56,222,192
> > > > >
> > > > > +DB      102,68,15,56,222,200
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((64-112))+rcx]
> > > > >
> > > > > +        nop
> > > > >
> > > > > +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
> > > > >
> > > > > +DB      102,68,15,56,222,193
> > > > >
> > > > > +DB      102,68,15,56,222,201
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((80-112))+rcx]
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +DB      102,68,15,56,222,192
> > > > >
> > > > > +DB      102,68,15,56,222,200
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((96-112))+rcx]
> > > > >
> > > > > +        nop
> > > > >
> > > > > +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
> > > > >
> > > > > +DB      102,68,15,56,222,193
> > > > >
> > > > > +DB      102,68,15,56,222,201
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((112-112))+rcx]
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +DB      102,68,15,56,222,192
> > > > >
> > > > > +DB      102,68,15,56,222,200
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((128-112))+rcx]
> > > > >
> > > > > +        nop
> > > > >
> > > > > +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
> > > > >
> > > > > +DB      102,68,15,56,222,193
> > > > >
> > > > > +DB      102,68,15,56,222,201
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((144-112))+rcx]
> > > > >
> > > > > +        cmp     eax,11
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +DB      102,68,15,56,222,192
> > > > >
> > > > > +DB      102,68,15,56,222,200
> > > > >
> > > > > +        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
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +DB      102,15,56,222,241
> > > > >
> > > > > +DB      102,15,56,222,249
> > > > >
> > > > > +DB      102,68,15,56,222,193
> > > > >
> > > > > +DB      102,68,15,56,222,201
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((176-112))+rcx]
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +DB      102,68,15,56,222,192
> > > > >
> > > > > +DB      102,68,15,56,222,200
> > > > >
> > > > > +        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
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +DB      102,15,56,222,241
> > > > >
> > > > > +DB      102,15,56,222,249
> > > > >
> > > > > +DB      102,68,15,56,222,193
> > > > >
> > > > > +DB      102,68,15,56,222,201
> > > > >
> > > > > +        movups  xmm1,XMMWORD[((208-112))+rcx]
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      102,15,56,222,208
> > > > >
> > > > > +DB      102,15,56,222,216
> > > > >
> > > > > +DB      102,15,56,222,224
> > > > >
> > > > > +DB      102,15,56,222,232
> > > > >
> > > > > +DB      102,15,56,222,240
> > > > >
> > > > > +DB      102,15,56,222,248
> > > > >
> > > > > +DB      102,68,15,56,222,192
> > > > >
> > > > > +DB      102,68,15,56,222,200
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((224-112))+rcx]
> > > > >
> > > > > +        jmp     NEAR $L$cbc_dec_done
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_dec_done:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +DB      102,15,56,222,217
> > > > >
> > > > > +        pxor    xmm10,xmm0
> > > > >
> > > > > +        pxor    xmm11,xmm0
> > > > >
> > > > > +DB      102,15,56,222,225
> > > > >
> > > > > +DB      102,15,56,222,233
> > > > >
> > > > > +        pxor    xmm12,xmm0
> > > > >
> > > > > +        pxor    xmm13,xmm0
> > > > >
> > > > > +DB      102,15,56,222,241
> > > > >
> > > > > +DB      102,15,56,222,249
> > > > >
> > > > > +        pxor    xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm15,xmm0
> > > > >
> > > > > +DB      102,68,15,56,222,193
> > > > >
> > > > > +DB      102,68,15,56,222,201
> > > > >
> > > > > +        movdqu  xmm1,XMMWORD[80+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,65,15,56,223,210
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[96+rdi]
> > > > >
> > > > > +        pxor    xmm1,xmm0
> > > > >
> > > > > +DB      102,65,15,56,223,219
> > > > >
> > > > > +        pxor    xmm10,xmm0
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[112+rdi]
> > > > >
> > > > > +DB      102,65,15,56,223,228
> > > > >
> > > > > +        lea     rdi,[128+rdi]
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[rbp]
> > > > >
> > > > > +DB      102,65,15,56,223,237
> > > > >
> > > > > +DB      102,65,15,56,223,246
> > > > >
> > > > > +        movdqu  xmm12,XMMWORD[16+rbp]
> > > > >
> > > > > +        movdqu  xmm13,XMMWORD[32+rbp]
> > > > >
> > > > > +DB      102,65,15,56,223,255
> > > > >
> > > > > +DB      102,68,15,56,223,193
> > > > >
> > > > > +        movdqu  xmm14,XMMWORD[48+rbp]
> > > > >
> > > > > +        movdqu  xmm15,XMMWORD[64+rbp]
> > > > >
> > > > > +DB      102,69,15,56,223,202
> > > > >
> > > > > +        movdqa  xmm10,xmm0
> > > > >
> > > > > +        movdqu  xmm1,XMMWORD[80+rbp]
> > > > >
> > > > > +        movups  xmm0,XMMWORD[((-112))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm12
> > > > >
> > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm13
> > > > >
> > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        movdqa  xmm5,xmm14
> > > > >
> > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        movdqa  xmm6,xmm15
> > > > >
> > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm1
> > > > >
> > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > >
> > > > > +        lea     rsi,[112+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rdx,0x80
> > > > >
> > > > > +        ja      NEAR $L$cbc_dec_loop8
> > > > >
> > > > > +
> > > > >
> > > > > +        movaps  xmm2,xmm9
> > > > >
> > > > > +        lea     rcx,[((-112))+rcx]
> > > > >
> > > > > +        add     rdx,0x70
> > > > >
> > > > > +        jle     NEAR $L$cbc_dec_clear_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,0x60
> > > > >
> > > > > +        ja      NEAR $L$cbc_dec_seven
> > > > >
> > > > > +
> > > > >
> > > > > +        movaps  xmm8,xmm7
> > > > >
> > > > > +        call    _aesni_decrypt6
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movaps  xmm10,xmm8
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm15
> > > > >
> > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        lea     rsi,[80+rsi]
> > > > >
> > > > > +        movdqa  xmm2,xmm7
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_dec_seven:
> > > > >
> > > > > +        movups  xmm8,XMMWORD[96+rdi]
> > > > >
> > > > > +        xorps   xmm9,xmm9
> > > > >
> > > > > +        call    _aesni_decrypt8
> > > > >
> > > > > +        movups  xmm9,XMMWORD[80+rdi]
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movups  xmm10,XMMWORD[96+rdi]
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm15
> > > > >
> > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        pxor    xmm8,xmm9
> > > > >
> > > > > +        movdqu  XMMWORD[80+rsi],xmm7
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +        lea     rsi,[96+rsi]
> > > > >
> > > > > +        movdqa  xmm2,xmm8
> > > > >
> > > > > +        pxor    xmm8,xmm8
> > > > >
> > > > > +        pxor    xmm9,xmm9
> > > > >
> > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$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[32+rdi]
> > > > >
> > > > > +        movdqa  xmm12,xmm3
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        movdqa  xmm13,xmm4
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > >
> > > > > +        movdqa  xmm14,xmm5
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > > >
> > > > > +        movdqa  xmm15,xmm6
> > > > >
> > > > > +$L$cbc_dec_loop6_enter:
> > > > >
> > > > > +        lea     rdi,[96+rdi]
> > > > >
> > > > > +        movdqa  xmm8,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _aesni_decrypt6
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        mov     rcx,rbp
> > > > >
> > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm15
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > >
> > > > > +        lea     rsi,[80+rsi]
> > > > >
> > > > > +        sub     rdx,0x60
> > > > >
> > > > > +        ja      NEAR $L$cbc_dec_loop6
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm7
> > > > >
> > > > > +        add     rdx,0x50
> > > > >
> > > > > +        jle     NEAR $L$cbc_dec_clear_tail_collected
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm7
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$cbc_dec_tail:
> > > > >
> > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > >
> > > > > +        sub     rdx,0x10
> > > > >
> > > > > +        jbe     NEAR $L$cbc_dec_one
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > >
> > > > > +        movaps  xmm11,xmm2
> > > > >
> > > > > +        sub     rdx,0x10
> > > > >
> > > > > +        jbe     NEAR $L$cbc_dec_two
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > >
> > > > > +        movaps  xmm12,xmm3
> > > > >
> > > > > +        sub     rdx,0x10
> > > > >
> > > > > +        jbe     NEAR $L$cbc_dec_three
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm5,XMMWORD[48+rdi]
> > > > >
> > > > > +        movaps  xmm13,xmm4
> > > > >
> > > > > +        sub     rdx,0x10
> > > > >
> > > > > +        jbe     NEAR $L$cbc_dec_four
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm6,XMMWORD[64+rdi]
> > > > >
> > > > > +        movaps  xmm14,xmm5
> > > > >
> > > > > +        movaps  xmm15,xmm6
> > > > >
> > > > > +        xorps   xmm7,xmm7
> > > > >
> > > > > +        call    _aesni_decrypt6
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movaps  xmm10,xmm15
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        lea     rsi,[64+rsi]
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +        sub     rdx,0x10
> > > > >
> > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_dec_one:
> > > > >
> > > > > +        movaps  xmm11,xmm2
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > >
> > > > > +        lea     rcx,[32+rcx]
> > > > >
> > > > > +        xorps   xmm2,xmm0
> > > > >
> > > > > +$L$oop_dec1_17:
> > > > >
> > > > > +DB      102,15,56,222,209
> > > > >
> > > > > +        dec     eax
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > >
> > > > > +        lea     rcx,[16+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$oop_dec1_17
> > > > >
> > > > > +DB      102,15,56,223,209
> > > > >
> > > > > +        xorps   xmm2,xmm10
> > > > >
> > > > > +        movaps  xmm10,xmm11
> > > > >
> > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_dec_two:
> > > > >
> > > > > +        movaps  xmm12,xmm3
> > > > >
> > > > > +        call    _aesni_decrypt2
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movaps  xmm10,xmm12
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        lea     rsi,[16+rsi]
> > > > >
> > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_dec_three:
> > > > >
> > > > > +        movaps  xmm13,xmm4
> > > > >
> > > > > +        call    _aesni_decrypt3
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movaps  xmm10,xmm13
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        movdqa  xmm2,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        lea     rsi,[32+rsi]
> > > > >
> > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_dec_four:
> > > > >
> > > > > +        movaps  xmm14,xmm5
> > > > >
> > > > > +        call    _aesni_decrypt4
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        movaps  xmm10,xmm14
> > > > >
> > > > > +        pxor    xmm3,xmm11
> > > > >
> > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm5,xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        movdqa  xmm2,xmm5
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        lea     rsi,[48+rsi]
> > > > >
> > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_dec_clear_tail_collected:
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +$L$cbc_dec_tail_collected:
> > > > >
> > > > > +        movups  XMMWORD[r8],xmm10
> > > > >
> > > > > +        and     rdx,15
> > > > >
> > > > > +        jnz     NEAR $L$cbc_dec_tail_partial
> > > > >
> > > > > +        movups  XMMWORD[rsi],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        jmp     NEAR $L$cbc_dec_ret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_dec_tail_partial:
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        mov     rcx,16
> > > > >
> > > > > +        mov     rdi,rsi
> > > > >
> > > > > +        sub     rcx,rdx
> > > > >
> > > > > +        lea     rsi,[rsp]
> > > > >
> > > > > +        DD      0x9066A4F3
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +$L$cbc_dec_ret:
> > > > >
> > > > > +        xorps   xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[16+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[32+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[48+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[64+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[80+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[96+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[112+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[128+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[128+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[144+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[144+rsp],xmm0
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[160+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[160+rsp],xmm0
> > > > >
> > > > > +        mov     rbp,QWORD[((-8))+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[r11]
> > > > >
> > > > > +
> > > > >
> > > > > +$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:
> > > > >
> > > > > +global  aesni_set_decrypt_key
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +aesni_set_decrypt_key:
> > > > >
> > > > > +
> > > > >
> > > > > +DB      0x48,0x83,0xEC,0x08
> > > > >
> > > > > +
> > > > >
> > > > > +        call    __aesni_set_encrypt_key
> > > > >
> > > > > +        shl     edx,4
> > > > >
> > > > > +        test    eax,eax
> > > > >
> > > > > +        jnz     NEAR $L$dec_key_ret
> > > > >
> > > > > +        lea     rcx,[16+rdx*1+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        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[r8]
> > > > >
> > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > >
> > > > > +DB      102,15,56,219,192
> > > > >
> > > > > +DB      102,15,56,219,201
> > > > >
> > > > > +        lea     r8,[16+r8]
> > > > >
> > > > > +        lea     rcx,[((-16))+rcx]
> > > > >
> > > > > +        movups  XMMWORD[16+rcx],xmm0
> > > > >
> > > > > +        movups  XMMWORD[(-16)+r8],xmm1
> > > > >
> > > > > +        cmp     rcx,r8
> > > > >
> > > > > +        ja      NEAR $L$dec_key_inverse
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  xmm0,XMMWORD[r8]
> > > > >
> > > > > +DB      102,15,56,219,192
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        movups  XMMWORD[rcx],xmm0
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +$L$dec_key_ret:
> > > > >
> > > > > +        add     rsp,8
> > > > >
> > > > > +
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_set_decrypt_key:
> > > > >
> > > > > +
> > > > >
> > > > > +global  aesni_set_encrypt_key
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +aesni_set_encrypt_key:
> > > > >
> > > > > +__aesni_set_encrypt_key:
> > > > >
> > > > > +
> > > > >
> > > > > +DB      0x48,0x83,0xEC,0x08
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,-1
> > > > >
> > > > > +        test    rcx,rcx
> > > > >
> > > > > +        jz      NEAR $L$enc_key_ret
> > > > >
> > > > > +        test    r8,r8
> > > > >
> > > > > +        jz      NEAR $L$enc_key_ret
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,268437504
> > > > >
> > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > >
> > > > > +        xorps   xmm4,xmm4
> > > > >
> > > > > +        and     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
> > > > >
> > > > > +        lea     rax,[16+r8]
> > > > >
> > > > > +        cmp     edx,256
> > > > >
> > > > > +        je      NEAR $L$14rounds
> > > > >
> > > > > +        cmp     edx,192
> > > > >
> > > > > +        je      NEAR $L$12rounds
> > > > >
> > > > > +        cmp     edx,128
> > > > >
> > > > > +        jne     NEAR $L$bad_keybits
> > > > >
> > > > > +
> > > > >
> > > > > +$L$10rounds:
> > > > >
> > > > > +        mov     edx,9
> > > > >
> > > > > +        cmp     r10d,268435456
> > > > >
> > > > > +        je      NEAR $L$10rounds_alt
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  XMMWORD[r8],xmm0
> > > > >
> > > > > +DB      102,15,58,223,200,1
> > > > >
> > > > > +        call    $L$key_expansion_128_cold
> > > > >
> > > > > +DB      102,15,58,223,200,2
> > > > >
> > > > > +        call    $L$key_expansion_128
> > > > >
> > > > > +DB      102,15,58,223,200,4
> > > > >
> > > > > +        call    $L$key_expansion_128
> > > > >
> > > > > +DB      102,15,58,223,200,8
> > > > >
> > > > > +        call    $L$key_expansion_128
> > > > >
> > > > > +DB      102,15,58,223,200,16
> > > > >
> > > > > +        call    $L$key_expansion_128
> > > > >
> > > > > +DB      102,15,58,223,200,32
> > > > >
> > > > > +        call    $L$key_expansion_128
> > > > >
> > > > > +DB      102,15,58,223,200,64
> > > > >
> > > > > +        call    $L$key_expansion_128
> > > > >
> > > > > +DB      102,15,58,223,200,128
> > > > >
> > > > > +        call    $L$key_expansion_128
> > > > >
> > > > > +DB      102,15,58,223,200,27
> > > > >
> > > > > +        call    $L$key_expansion_128
> > > > >
> > > > > +DB      102,15,58,223,200,54
> > > > >
> > > > > +        call    $L$key_expansion_128
> > > > >
> > > > > +        movups  XMMWORD[rax],xmm0
> > > > >
> > > > > +        mov     DWORD[80+rax],edx
> > > > >
> > > > > +        xor     eax,eax
> > > > >
> > > > > +        jmp     NEAR $L$enc_key_ret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$10rounds_alt:
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[$L$key_rotate]
> > > > >
> > > > > +        mov     r10d,8
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqu  XMMWORD[r8],xmm0
> > > > >
> > > > > +        jmp     NEAR $L$oop_key128
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$oop_key128:
> > > > >
> > > > > +DB      102,15,56,0,197
> > > > >
> > > > > +DB      102,15,56,221,196
> > > > >
> > > > > +        pslld   xmm4,1
> > > > >
> > > > > +        lea     rax,[16+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm3,xmm2
> > > > >
> > > > > +        pslldq  xmm2,4
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +        pslldq  xmm2,4
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +        pslldq  xmm2,4
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqu  XMMWORD[(-16)+rax],xmm0
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        dec     r10d
> > > > >
> > > > > +        jnz     NEAR $L$oop_key128
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1b]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,0,197
> > > > >
> > > > > +DB      102,15,56,221,196
> > > > >
> > > > > +        pslld   xmm4,1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm3,xmm2
> > > > >
> > > > > +        pslldq  xmm2,4
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +        pslldq  xmm2,4
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +        pslldq  xmm2,4
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqu  XMMWORD[rax],xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      102,15,56,0,197
> > > > >
> > > > > +DB      102,15,56,221,196
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm3,xmm2
> > > > >
> > > > > +        pslldq  xmm2,4
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +        pslldq  xmm2,4
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +        pslldq  xmm2,4
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqu  XMMWORD[16+rax],xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[96+rax],edx
> > > > >
> > > > > +        xor     eax,eax
> > > > >
> > > > > +        jmp     NEAR $L$enc_key_ret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$12rounds:
> > > > >
> > > > > +        movq    xmm2,QWORD[16+rcx]
> > > > >
> > > > > +        mov     edx,11
> > > > >
> > > > > +        cmp     r10d,268435456
> > > > >
> > > > > +        je      NEAR $L$12rounds_alt
> > > > >
> > > > > +
> > > > >
> > > > > +        movups  XMMWORD[r8],xmm0
> > > > >
> > > > > +DB      102,15,58,223,202,1
> > > > >
> > > > > +        call    $L$key_expansion_192a_cold
> > > > >
> > > > > +DB      102,15,58,223,202,2
> > > > >
> > > > > +        call    $L$key_expansion_192b
> > > > >
> > > > > +DB      102,15,58,223,202,4
> > > > >
> > > > > +        call    $L$key_expansion_192a
> > > > >
> > > > > +DB      102,15,58,223,202,8
> > > > >
> > > > > +        call    $L$key_expansion_192b
> > > > >
> > > > > +DB      102,15,58,223,202,16
> > > > >
> > > > > +        call    $L$key_expansion_192a
> > > > >
> > > > > +DB      102,15,58,223,202,32
> > > > >
> > > > > +        call    $L$key_expansion_192b
> > > > >
> > > > > +DB      102,15,58,223,202,64
> > > > >
> > > > > +        call    $L$key_expansion_192a
> > > > >
> > > > > +DB      102,15,58,223,202,128
> > > > >
> > > > > +        call    $L$key_expansion_192b
> > > > >
> > > > > +        movups  XMMWORD[rax],xmm0
> > > > >
> > > > > +        mov     DWORD[48+rax],edx
> > > > >
> > > > > +        xor     rax,rax
> > > > >
> > > > > +        jmp     NEAR $L$enc_key_ret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$12rounds_alt:
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[$L$key_rotate192]
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> > > > >
> > > > > +        mov     r10d,8
> > > > >
> > > > > +        movdqu  XMMWORD[r8],xmm0
> > > > >
> > > > > +        jmp     NEAR $L$oop_key192
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$oop_key192:
> > > > >
> > > > > +        movq    QWORD[rax],xmm2
> > > > >
> > > > > +        movdqa  xmm1,xmm2
> > > > >
> > > > > +DB      102,15,56,0,213
> > > > >
> > > > > +DB      102,15,56,221,212
> > > > >
> > > > > +        pslld   xmm4,1
> > > > >
> > > > > +        lea     rax,[24+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,4
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,4
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,4
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm3,xmm0,0xff
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +        pslldq  xmm1,4
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +        movdqu  XMMWORD[(-16)+rax],xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        dec     r10d
> > > > >
> > > > > +        jnz     NEAR $L$oop_key192
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[32+rax],edx
> > > > >
> > > > > +        xor     eax,eax
> > > > >
> > > > > +        jmp     NEAR $L$enc_key_ret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$14rounds:
> > > > >
> > > > > +        movups  xmm2,XMMWORD[16+rcx]
> > > > >
> > > > > +        mov     edx,13
> > > > >
> > > > > +        lea     rax,[16+rax]
> > > > >
> > > > > +        cmp     r10d,268435456
> > > > >
> > > > > +        je      NEAR $L$14rounds_alt
> > > > >
> > > > > +
> > > > >
> > > > > +        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
> > > > >
> > > > > +        call    $L$key_expansion_256b
> > > > >
> > > > > +DB      102,15,58,223,202,2
> > > > >
> > > > > +        call    $L$key_expansion_256a
> > > > >
> > > > > +DB      102,15,58,223,200,2
> > > > >
> > > > > +        call    $L$key_expansion_256b
> > > > >
> > > > > +DB      102,15,58,223,202,4
> > > > >
> > > > > +        call    $L$key_expansion_256a
> > > > >
> > > > > +DB      102,15,58,223,200,4
> > > > >
> > > > > +        call    $L$key_expansion_256b
> > > > >
> > > > > +DB      102,15,58,223,202,8
> > > > >
> > > > > +        call    $L$key_expansion_256a
> > > > >
> > > > > +DB      102,15,58,223,200,8
> > > > >
> > > > > +        call    $L$key_expansion_256b
> > > > >
> > > > > +DB      102,15,58,223,202,16
> > > > >
> > > > > +        call    $L$key_expansion_256a
> > > > >
> > > > > +DB      102,15,58,223,200,16
> > > > >
> > > > > +        call    $L$key_expansion_256b
> > > > >
> > > > > +DB      102,15,58,223,202,32
> > > > >
> > > > > +        call    $L$key_expansion_256a
> > > > >
> > > > > +DB      102,15,58,223,200,32
> > > > >
> > > > > +        call    $L$key_expansion_256b
> > > > >
> > > > > +DB      102,15,58,223,202,64
> > > > >
> > > > > +        call    $L$key_expansion_256a
> > > > >
> > > > > +        movups  XMMWORD[rax],xmm0
> > > > >
> > > > > +        mov     DWORD[16+rax],edx
> > > > >
> > > > > +        xor     rax,rax
> > > > >
> > > > > +        jmp     NEAR $L$enc_key_ret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$14rounds_alt:
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[$L$key_rotate]
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> > > > >
> > > > > +        mov     r10d,7
> > > > >
> > > > > +        movdqu  XMMWORD[r8],xmm0
> > > > >
> > > > > +        movdqa  xmm1,xmm2
> > > > >
> > > > > +        movdqu  XMMWORD[16+r8],xmm2
> > > > >
> > > > > +        jmp     NEAR $L$oop_key256
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$oop_key256:
> > > > >
> > > > > +DB      102,15,56,0,213
> > > > >
> > > > > +DB      102,15,56,221,212
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,4
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,4
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,4
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pslld   xmm4,1
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqu  XMMWORD[rax],xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        dec     r10d
> > > > >
> > > > > +        jz      NEAR $L$done_key256
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm2,xmm0,0xff
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +DB      102,15,56,221,211
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm3,xmm1
> > > > >
> > > > > +        pslldq  xmm1,4
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +        pslldq  xmm1,4
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +        pslldq  xmm1,4
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm2,xmm1
> > > > >
> > > > > +        movdqu  XMMWORD[16+rax],xmm2
> > > > >
> > > > > +        lea     rax,[32+rax]
> > > > >
> > > > > +        movdqa  xmm1,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$oop_key256
> > > > >
> > > > > +
> > > > >
> > > > > +$L$done_key256:
> > > > >
> > > > > +        mov     DWORD[16+rax],edx
> > > > >
> > > > > +        xor     eax,eax
> > > > >
> > > > > +        jmp     NEAR $L$enc_key_ret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$bad_keybits:
> > > > >
> > > > > +        mov     rax,-2
> > > > >
> > > > > +$L$enc_key_ret:
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        add     rsp,8
> > > > >
> > > > > +
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +$L$SEH_end_set_encrypt_key:
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$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
> > > > >
> > > > > +        xorps   xmm0,xmm4
> > > > >
> > > > > +        shufps  xmm1,xmm1,255
> > > > >
> > > > > +        xorps   xmm0,xmm1
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$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:
> > > > >
> > > > > +        shufps  xmm4,xmm0,16
> > > > >
> > > > > +        movdqa  xmm3,xmm2
> > > > >
> > > > > +        xorps   xmm0,xmm4
> > > > >
> > > > > +        shufps  xmm4,xmm0,140
> > > > >
> > > > > +        pslldq  xmm3,4
> > > > >
> > > > > +        xorps   xmm0,xmm4
> > > > >
> > > > > +        pshufd  xmm1,xmm1,85
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pshufd  xmm3,xmm0,255
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$key_expansion_192b:
> > > > >
> > > > > +        movaps  xmm3,xmm0
> > > > >
> > > > > +        shufps  xmm5,xmm0,68
> > > > >
> > > > > +        movups  XMMWORD[rax],xmm5
> > > > >
> > > > > +        shufps  xmm3,xmm2,78
> > > > >
> > > > > +        movups  XMMWORD[16+rax],xmm3
> > > > >
> > > > > +        lea     rax,[32+rax]
> > > > >
> > > > > +        jmp     NEAR $L$key_expansion_192b_warm
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$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
> > > > >
> > > > > +        xorps   xmm0,xmm4
> > > > >
> > > > > +        shufps  xmm1,xmm1,255
> > > > >
> > > > > +        xorps   xmm0,xmm1
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$key_expansion_256b:
> > > > >
> > > > > +        movups  XMMWORD[rax],xmm0
> > > > >
> > > > > +        lea     rax,[16+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        shufps  xmm4,xmm2,16
> > > > >
> > > > > +        xorps   xmm2,xmm4
> > > > >
> > > > > +        shufps  xmm4,xmm2,140
> > > > >
> > > > > +        xorps   xmm2,xmm4
> > > > >
> > > > > +        shufps  xmm1,xmm1,170
> > > > >
> > > > > +        xorps   xmm2,xmm1
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +$L$bswap_mask:
> > > > >
> > > > > +DB      15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
> > > > >
> > > > > +$L$increment32:
> > > > >
> > > > > +        DD      6,6,6,0
> > > > >
> > > > > +$L$increment64:
> > > > >
> > > > > +        DD      1,0,0,0
> > > > >
> > > > > +$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
> > > > >
> > > > > +$L$key_rotate:
> > > > >
> > > > > +        DD      0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
> > > > >
> > > > > +$L$key_rotate192:
> > > > >
> > > > > +        DD      0x04070605,0x04070605,0x04070605,0x04070605
> > > > >
> > > > > +$L$key_rcon1:
> > > > >
> > > > > +        DD      1,1,1,1
> > > > >
> > > > > +$L$key_rcon1b:
> > > > >
> > > > > +        DD      0x1b,0x1b,0x1b,0x1b
> > > > >
> > > > > +
> > > > >
> > > > > +DB      65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
> > > > >
> > > > > +DB      83,45,78,73,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   64
> > > > >
> > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +ecb_ccm64_se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,8
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +        lea     rax,[88+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +ctr_xts_se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[208+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((-168))+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,20
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbp,QWORD[((-8))+rax]
> > > > >
> > > > > +        mov     QWORD[160+r8],rbp
> > > > >
> > > > > +        jmp     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +ocb_se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[8+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$ocb_no_xmm
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,20
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +        lea     rax,[((160+40))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ocb_no_xmm:
> > > > >
> > > > > +        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     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +cbc_se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$cbc_decrypt_bulk]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$cbc_decrypt_body]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$cbc_ret]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[16+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,20
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[208+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbp,QWORD[((-8))+rax]
> > > > >
> > > > > +        mov     QWORD[160+r8],rbp
> > > > >
> > > > > +
> > > > >
> > > > > +$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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +section .pdata rdata align=4
> > > > >
> > > > > +ALIGN   4
> > > > >
> > > > > +        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      $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      $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      $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      $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      $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_ocb_encrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_aesni_ocb_encrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_ocb_enc wrt ..imagebase
> > > > >
> > > > > +
> > > > >
> > > > > +        DD      $L$SEH_begin_aesni_ocb_decrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_aesni_ocb_decrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_ocb_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      aesni_set_decrypt_key wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_set_decrypt_key wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_key wrt ..imagebase
> > > > >
> > > > > +
> > > > >
> > > > > +        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:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      ecb_ccm64_se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret
> > > wrt ..imagebase
> > > > >
> > > > > +$L$SEH_info_ccm64_enc:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      ecb_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      ecb_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      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      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      ctr_xts_se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue
> > > > > wrt ..imagebase
> > > > >
> > > > > +$L$SEH_info_ocb_enc:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      ocb_se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$ocb_enc_body wrt ..imagebase,$L$ocb_enc_epilogue
> > > > > wrt ..imagebase
> > > > >
> > > > > +        DD      $L$ocb_enc_pop wrt ..imagebase
> > > > >
> > > > > +        DD      0
> > > > >
> > > > > +$L$SEH_info_ocb_dec:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      ocb_se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$ocb_dec_body wrt ..imagebase,$L$ocb_dec_epilogue
> > > > > wrt ..imagebase
> > > > >
> > > > > +        DD      $L$ocb_dec_pop wrt ..imagebase
> > > > >
> > > > > +        DD      0
> > > > >
> > > > > +$L$SEH_info_cbc:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      cbc_se_handler wrt ..imagebase
> > > > >
> > > > > +$L$SEH_info_key:
> > > > >
> > > > > +DB      0x01,0x04,0x01,0x00
> > > > >
> > > > > +DB      0x04,0x02,0x00,0x00
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-
> > > x86_64.nasm
> > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..1c911fa294
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
> > > > > @@ -0,0 +1,1173 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/aes/asm/vpaes-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_vpaes_encrypt_core:
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r9,rdx
> > > > >
> > > > > +        mov     r11,16
> > > > >
> > > > > +        mov     eax,DWORD[240+rdx]
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[$L$k_ipt]
> > > > >
> > > > > +        pandn   xmm1,xmm0
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[r9]
> > > > >
> > > > > +        psrld   xmm1,4
> > > > >
> > > > > +        pand    xmm0,xmm9
> > > > >
> > > > > +DB      102,15,56,0,208
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[(($L$k_ipt+16))]
> > > > >
> > > > > +DB      102,15,56,0,193
> > > > >
> > > > > +        pxor    xmm2,xmm5
> > > > >
> > > > > +        add     r9,16
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        lea     r10,[$L$k_mc_backward]
> > > > >
> > > > > +        jmp     NEAR $L$enc_entry
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$enc_loop:
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm13
> > > > >
> > > > > +        movdqa  xmm0,xmm12
> > > > >
> > > > > +DB      102,15,56,0,226
> > > > >
> > > > > +DB      102,15,56,0,195
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        movdqa  xmm5,xmm15
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((-64))+r10*1+r11]
> > > > >
> > > > > +DB      102,15,56,0,234
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[r10*1+r11]
> > > > >
> > > > > +        movdqa  xmm2,xmm14
> > > > >
> > > > > +DB      102,15,56,0,211
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm2,xmm5
> > > > >
> > > > > +DB      102,15,56,0,193
> > > > >
> > > > > +        add     r9,16
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +DB      102,15,56,0,220
> > > > >
> > > > > +        add     r11,16
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +DB      102,15,56,0,193
> > > > >
> > > > > +        and     r11,0x30
> > > > >
> > > > > +        sub     rax,1
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +$L$enc_entry:
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        movdqa  xmm5,xmm11
> > > > >
> > > > > +        pandn   xmm1,xmm0
> > > > >
> > > > > +        psrld   xmm1,4
> > > > >
> > > > > +        pand    xmm0,xmm9
> > > > >
> > > > > +DB      102,15,56,0,232
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +DB      102,15,56,0,217
> > > > >
> > > > > +        movdqa  xmm4,xmm10
> > > > >
> > > > > +        pxor    xmm3,xmm5
> > > > >
> > > > > +DB      102,15,56,0,224
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +DB      102,15,56,0,211
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +        pxor    xmm2,xmm0
> > > > >
> > > > > +DB      102,15,56,0,220
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[r9]
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +        jnz     NEAR $L$enc_loop
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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[64+r10*1+r11]
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +DB      102,15,56,0,193
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_vpaes_decrypt_core:
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r9,rdx
> > > > >
> > > > > +        mov     eax,DWORD[240+rdx]
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[$L$k_dipt]
> > > > >
> > > > > +        pandn   xmm1,xmm0
> > > > >
> > > > > +        mov     r11,rax
> > > > >
> > > > > +        psrld   xmm1,4
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[r9]
> > > > >
> > > > > +        shl     r11,4
> > > > >
> > > > > +        pand    xmm0,xmm9
> > > > >
> > > > > +DB      102,15,56,0,208
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[(($L$k_dipt+16))]
> > > > >
> > > > > +        xor     r11,0x30
> > > > >
> > > > > +        lea     r10,[$L$k_dsbd]
> > > > >
> > > > > +DB      102,15,56,0,193
> > > > >
> > > > > +        and     r11,0x30
> > > > >
> > > > > +        pxor    xmm2,xmm5
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[(($L$k_mc_forward+48))]
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        add     r9,16
> > > > >
> > > > > +        add     r11,r10
> > > > >
> > > > > +        jmp     NEAR $L$dec_entry
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$dec_loop:
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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[r10]
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        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[32+r10]
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        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[64+r10]
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[80+r10]
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,0,226
> > > > >
> > > > > +DB      102,15,56,0,197
> > > > >
> > > > > +DB      102,15,56,0,203
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        add     r9,16
> > > > >
> > > > > +DB      102,15,58,15,237,12
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        sub     rax,1
> > > > >
> > > > > +
> > > > >
> > > > > +$L$dec_entry:
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pandn   xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +        psrld   xmm1,4
> > > > >
> > > > > +        pand    xmm0,xmm9
> > > > >
> > > > > +DB      102,15,56,0,208
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +DB      102,15,56,0,217
> > > > >
> > > > > +        movdqa  xmm4,xmm10
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +DB      102,15,56,0,224
> > > > >
> > > > > +        pxor    xmm4,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +DB      102,15,56,0,211
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +        pxor    xmm2,xmm0
> > > > >
> > > > > +DB      102,15,56,0,220
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[r9]
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +        jnz     NEAR $L$dec_loop
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[96+r10]
> > > > >
> > > > > +DB      102,15,56,0,226
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        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
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_vpaes_schedule_core:
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _vpaes_preheat
> > > > >
> > > > > +        movdqa  xmm8,XMMWORD[$L$k_rcon]
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        lea     r11,[$L$k_ipt]
> > > > >
> > > > > +        call    _vpaes_schedule_transform
> > > > >
> > > > > +        movdqa  xmm7,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$k_sr]
> > > > >
> > > > > +        test    rcx,rcx
> > > > >
> > > > > +        jnz     NEAR $L$schedule_am_decrypting
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  XMMWORD[rdx],xmm0
> > > > >
> > > > > +        jmp     NEAR $L$schedule_go
> > > > >
> > > > > +
> > > > >
> > > > > +$L$schedule_am_decrypting:
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> > > > >
> > > > > +DB      102,15,56,0,217
> > > > >
> > > > > +        movdqu  XMMWORD[rdx],xmm3
> > > > >
> > > > > +        xor     r8,0x30
> > > > >
> > > > > +
> > > > >
> > > > > +$L$schedule_go:
> > > > >
> > > > > +        cmp     esi,192
> > > > >
> > > > > +        ja      NEAR $L$schedule_256
> > > > >
> > > > > +        je      NEAR $L$schedule_192
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +$L$schedule_128:
> > > > >
> > > > > +        mov     esi,10
> > > > >
> > > > > +
> > > > >
> > > > > +$L$oop_schedule_128:
> > > > >
> > > > > +        call    _vpaes_schedule_round
> > > > >
> > > > > +        dec     rsi
> > > > >
> > > > > +        jz      NEAR $L$schedule_mangle_last
> > > > >
> > > > > +        call    _vpaes_schedule_mangle
> > > > >
> > > > > +        jmp     NEAR $L$oop_schedule_128
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$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:
> > > > >
> > > > > +        call    _vpaes_schedule_round
> > > > >
> > > > > +DB      102,15,58,15,198,8
> > > > >
> > > > > +        call    _vpaes_schedule_mangle
> > > > >
> > > > > +        call    _vpaes_schedule_192_smear
> > > > >
> > > > > +        call    _vpaes_schedule_mangle
> > > > >
> > > > > +        call    _vpaes_schedule_round
> > > > >
> > > > > +        dec     rsi
> > > > >
> > > > > +        jz      NEAR $L$schedule_mangle_last
> > > > >
> > > > > +        call    _vpaes_schedule_mangle
> > > > >
> > > > > +        call    _vpaes_schedule_192_smear
> > > > >
> > > > > +        jmp     NEAR $L$oop_schedule_192
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$schedule_256:
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[16+rdi]
> > > > >
> > > > > +        call    _vpaes_schedule_transform
> > > > >
> > > > > +        mov     esi,7
> > > > >
> > > > > +
> > > > >
> > > > > +$L$oop_schedule_256:
> > > > >
> > > > > +        call    _vpaes_schedule_mangle
> > > > >
> > > > > +        movdqa  xmm6,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        call    _vpaes_schedule_round
> > > > >
> > > > > +        dec     rsi
> > > > >
> > > > > +        jz      NEAR $L$schedule_mangle_last
> > > > >
> > > > > +        call    _vpaes_schedule_mangle
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0xFF
> > > > >
> > > > > +        movdqa  xmm5,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        call    _vpaes_schedule_low_round
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$oop_schedule_256
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$schedule_mangle_last:
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r11,[$L$k_deskew]
> > > > >
> > > > > +        test    rcx,rcx
> > > > >
> > > > > +        jnz     NEAR $L$schedule_mangle_last_dec
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> > > > >
> > > > > +DB      102,15,56,0,193
> > > > >
> > > > > +        lea     r11,[$L$k_opt]
> > > > >
> > > > > +        add     rdx,32
> > > > >
> > > > > +
> > > > >
> > > > > +$L$schedule_mangle_last_dec:
> > > > >
> > > > > +        add     rdx,-16
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[$L$k_s63]
> > > > >
> > > > > +        call    _vpaes_schedule_transform
> > > > >
> > > > > +        movdqu  XMMWORD[rdx],xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm7
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_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
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_vpaes_schedule_round:
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +DB      102,65,15,58,15,200,15
> > > > >
> > > > > +DB      102,69,15,58,15,192,15
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0xFF
> > > > >
> > > > > +DB      102,15,58,15,192,1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +_vpaes_schedule_low_round:
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm7
> > > > >
> > > > > +        pslldq  xmm7,4
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        movdqa  xmm1,xmm7
> > > > >
> > > > > +        pslldq  xmm7,8
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm7,XMMWORD[$L$k_s63]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pandn   xmm1,xmm0
> > > > >
> > > > > +        psrld   xmm1,4
> > > > >
> > > > > +        pand    xmm0,xmm9
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +DB      102,15,56,0,208
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +DB      102,15,56,0,217
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm10
> > > > >
> > > > > +DB      102,15,56,0,224
> > > > >
> > > > > +        pxor    xmm4,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +DB      102,15,56,0,211
> > > > >
> > > > > +        pxor    xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +DB      102,15,56,0,220
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +        movdqa  xmm4,xmm13
> > > > >
> > > > > +DB      102,15,56,0,226
> > > > >
> > > > > +        movdqa  xmm0,xmm12
> > > > >
> > > > > +DB      102,15,56,0,195
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm0
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_vpaes_schedule_transform:
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pandn   xmm1,xmm0
> > > > >
> > > > > +        psrld   xmm1,4
> > > > >
> > > > > +        pand    xmm0,xmm9
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[r11]
> > > > >
> > > > > +DB      102,15,56,0,208
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[16+r11]
> > > > >
> > > > > +DB      102,15,56,0,193
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_vpaes_schedule_mangle:
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[$L$k_mc_forward]
> > > > >
> > > > > +        test    rcx,rcx
> > > > >
> > > > > +        jnz     NEAR $L$schedule_mangle_dec
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        add     rdx,16
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[$L$k_s63]
> > > > >
> > > > > +DB      102,15,56,0,229
> > > > >
> > > > > +        movdqa  xmm3,xmm4
> > > > >
> > > > > +DB      102,15,56,0,229
> > > > >
> > > > > +        pxor    xmm3,xmm4
> > > > >
> > > > > +DB      102,15,56,0,229
> > > > >
> > > > > +        pxor    xmm3,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$schedule_mangle_both
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$schedule_mangle_dec:
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r11,[$L$k_dksd]
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pandn   xmm1,xmm4
> > > > >
> > > > > +        psrld   xmm1,4
> > > > >
> > > > > +        pand    xmm4,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[r11]
> > > > >
> > > > > +DB      102,15,56,0,212
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[16+r11]
> > > > >
> > > > > +DB      102,15,56,0,217
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +DB      102,15,56,0,221
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[32+r11]
> > > > >
> > > > > +DB      102,15,56,0,212
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[48+r11]
> > > > >
> > > > > +DB      102,15,56,0,217
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +DB      102,15,56,0,221
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[64+r11]
> > > > >
> > > > > +DB      102,15,56,0,212
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[80+r11]
> > > > >
> > > > > +DB      102,15,56,0,217
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +DB      102,15,56,0,221
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[96+r11]
> > > > >
> > > > > +DB      102,15,56,0,212
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[112+r11]
> > > > >
> > > > > +DB      102,15,56,0,217
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        add     rdx,-16
> > > > >
> > > > > +
> > > > >
> > > > > +$L$schedule_mangle_both:
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> > > > >
> > > > > +DB      102,15,56,0,217
> > > > >
> > > > > +        add     r8,-16
> > > > >
> > > > > +        and     r8,0x30
> > > > >
> > > > > +        movdqu  XMMWORD[rdx],xmm3
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  vpaes_set_encrypt_key
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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[240+rdx],eax
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,0
> > > > >
> > > > > +        mov     r8d,0x30
> > > > >
> > > > > +        call    _vpaes_schedule_core
> > > > >
> > > > > +        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[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_vpaes_set_encrypt_key:
> > > > >
> > > > > +
> > > > >
> > > > > +global  vpaes_set_decrypt_key
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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[240+rdx],eax
> > > > >
> > > > > +        shl     eax,4
> > > > >
> > > > > +        lea     rdx,[16+rax*1+rdx]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,1
> > > > >
> > > > > +        mov     r8d,esi
> > > > >
> > > > > +        shr     r8d,1
> > > > >
> > > > > +        and     r8d,32
> > > > >
> > > > > +        xor     r8d,32
> > > > >
> > > > > +        call    _vpaes_schedule_core
> > > > >
> > > > > +        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[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_vpaes_set_decrypt_key:
> > > > >
> > > > > +
> > > > >
> > > > > +global  vpaes_encrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +vpaes_encrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_vpaes_encrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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[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:
> > > > >
> > > > > +
> > > > >
> > > > > +global  vpaes_decrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +vpaes_decrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_vpaes_decrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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[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:
> > > > >
> > > > > +global  vpaes_cbc_encrypt
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +vpaes_cbc_encrypt:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_vpaes_cbc_encrypt:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +        mov     r8,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r9,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        xchg    rdx,rcx
> > > > >
> > > > > +        sub     rcx,16
> > > > >
> > > > > +        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      NEAR $L$cbc_dec_loop
> > > > >
> > > > > +        jmp     NEAR $L$cbc_enc_loop
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_enc_loop:
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > > >
> > > > > +        pxor    xmm0,xmm6
> > > > >
> > > > > +        call    _vpaes_encrypt_core
> > > > >
> > > > > +        movdqa  xmm6,xmm0
> > > > >
> > > > > +        movdqu  XMMWORD[rdi*1+rsi],xmm0
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +        sub     rcx,16
> > > > >
> > > > > +        jnc     NEAR $L$cbc_enc_loop
> > > > >
> > > > > +        jmp     NEAR $L$cbc_done
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$cbc_dec_loop:
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > > >
> > > > > +        movdqa  xmm7,xmm0
> > > > >
> > > > > +        call    _vpaes_decrypt_core
> > > > >
> > > > > +        pxor    xmm0,xmm6
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        movdqu  XMMWORD[rdi*1+rsi],xmm0
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +        sub     rcx,16
> > > > >
> > > > > +        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:
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +_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
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +_vpaes_consts:
> > > > >
> > > > > +$L$k_inv:
> > > > >
> > > > > +        DQ      0x0E05060F0D080180,0x040703090A0B0C02
> > > > >
> > > > > +        DQ      0x01040A060F0B0780,0x030D0E0C02050809
> > > > >
> > > > > +
> > > > >
> > > > > +$L$k_s0F:
> > > > >
> > > > > +        DQ      0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F
> > > > >
> > > > > +
> > > > >
> > > > > +$L$k_ipt:
> > > > >
> > > > > +        DQ      0xC2B2E8985A2A7000,0xCABAE09052227808
> > > > >
> > > > > +        DQ      0x4C01307D317C4D00,0xCD80B1FCB0FDCC81
> > > > >
> > > > > +
> > > > >
> > > > > +$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      0x0407060500030201,0x0C0F0E0D080B0A09
> > > > >
> > > > > +        DQ      0x080B0A0904070605,0x000302010C0F0E0D
> > > > >
> > > > > +        DQ      0x0C0F0E0D080B0A09,0x0407060500030201
> > > > >
> > > > > +        DQ      0x000302010C0F0E0D,0x080B0A0904070605
> > > > >
> > > > > +
> > > > >
> > > > > +$L$k_mc_backward:
> > > > >
> > > > > +        DQ      0x0605040702010003,0x0E0D0C0F0A09080B
> > > > >
> > > > > +        DQ      0x020100030E0D0C0F,0x0A09080B06050407
> > > > >
> > > > > +        DQ      0x0E0D0C0F0A09080B,0x0605040702010003
> > > > >
> > > > > +        DQ      0x0A09080B06050407,0x020100030E0D0C0F
> > > > >
> > > > > +
> > > > >
> > > > > +$L$k_sr:
> > > > >
> > > > > +        DQ      0x0706050403020100,0x0F0E0D0C0B0A0908
> > > > >
> > > > > +        DQ      0x030E09040F0A0500,0x0B06010C07020D08
> > > > >
> > > > > +        DQ      0x0F060D040B020900,0x070E050C030A0108
> > > > >
> > > > > +        DQ      0x0B0E0104070A0D00,0x0306090C0F020508
> > > > >
> > > > > +
> > > > >
> > > > > +$L$k_rcon:
> > > > >
> > > > > +        DQ      0x1F8391B9AF9DEEB6,0x702A98084D7C7D81
> > > > >
> > > > > +
> > > > >
> > > > > +$L$k_s63:
> > > > >
> > > > > +        DQ      0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B
> > > > >
> > > > > +
> > > > >
> > > > > +$L$k_opt:
> > > > >
> > > > > +        DQ      0xFF9F4929D6B66000,0xF7974121DEBE6808
> > > > >
> > > > > +        DQ      0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0
> > > > >
> > > > > +
> > > > >
> > > > > +$L$k_deskew:
> > > > >
> > > > > +        DQ      0x07E4A34047A4E300,0x1DFEB95A5DBEF91A
> > > > >
> > > > > +        DQ      0x5F36B5DC83EA6900,0x2841C2ABF49D1E77
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +$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      0x0F505B040B545F00,0x154A411E114E451A
> > > > >
> > > > > +        DQ      0x86E383E660056500,0x12771772F491F194
> > > > >
> > > > > +
> > > > >
> > > > > +$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
> > > > >
> > > > > +DB      109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32
> > > > >
> > > > > +DB      85,110,105,118,101,114,115,105,116,121,41,0
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[16+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,20
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +        lea     rax,[184+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +$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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +section .pdata rdata align=4
> > > > >
> > > > > +ALIGN   4
> > > > >
> > > > > +        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      $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      $L$SEH_begin_vpaes_encrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_vpaes_encrypt wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_vpaes_encrypt wrt ..imagebase
> > > > >
> > > > > +
> > > > >
> > > > > +        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      $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
> > > > >
> > > > > +
> > > > >
> > > > > +section .xdata rdata align=8
> > > > >
> > > > > +ALIGN   8
> > > > >
> > > > > +$L$SEH_info_vpaes_set_encrypt_key:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        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      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      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      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      se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt
> > ..imagebase
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
> > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
> > > > > x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..60f283d5fb
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm
> > > > > @@ -0,0 +1,1569 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/modes/asm/ghash-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2010-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +
> > > > >
> > > > > +global  gcm_gmult_4bit
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +gcm_gmult_4bit:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_gcm_gmult_4bit:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsp,280
> > > > >
> > > > > +
> > > > >
> > > > > +$L$gmult_prologue:
> > > > >
> > > > > +
> > > > >
> > > > > +        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[8+rax*1+rsi]
> > > > >
> > > > > +        mov     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        and     bl,0xf0
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        jmp     NEAR $L$oop1
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$oop1:
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        and     rdx,0xf
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        mov     al,BYTE[rcx*1+rdi]
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        xor     r8,QWORD[8+rbx*1+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        xor     r9,QWORD[rbx*1+rsi]
> > > > >
> > > > > +        mov     bl,al
> > > > >
> > > > > +        xor     r9,QWORD[rdx*8+r11]
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        dec     rcx
> > > > >
> > > > > +        js      NEAR $L$break1
> > > > >
> > > > > +
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        and     rdx,0xf
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        and     bl,0xf0
> > > > >
> > > > > +        xor     r9,QWORD[rdx*8+r11]
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        jmp     NEAR $L$oop1
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$break1:
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        and     rdx,0xf
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        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,0xf
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        xor     r8,QWORD[8+rbx*1+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        xor     r9,QWORD[rbx*1+rsi]
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        xor     r9,QWORD[rdx*8+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        bswap   r8
> > > > >
> > > > > +        bswap   r9
> > > > >
> > > > > +        mov     QWORD[8+rdi],r8
> > > > >
> > > > > +        mov     QWORD[rdi],r9
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((280+48))+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbx,QWORD[((-8))+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +$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:
> > > > >
> > > > > +global  gcm_ghash_4bit
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +gcm_ghash_4bit:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_gcm_ghash_4bit:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +        mov     rcx,r9
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     rsp,280
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ghash_prologue:
> > > > >
> > > > > +        mov     r14,rdx
> > > > >
> > > > > +        mov     r15,rcx
> > > > >
> > > > > +        sub     rsi,-128
> > > > >
> > > > > +        lea     rbp,[((16+128))+rsp]
> > > > >
> > > > > +        xor     edx,edx
> > > > >
> > > > > +        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[((16+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     rbx,QWORD[((16+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[rsp],dl
> > > > >
> > > > > +        or      rax,r10
> > > > >
> > > > > +        mov     dl,bl
> > > > >
> > > > > +        shr     rbx,4
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        mov     QWORD[rbp],r8
> > > > >
> > > > > +        mov     r8,QWORD[((32+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((0-128))+rbp],rax
> > > > >
> > > > > +        mov     rax,QWORD[((32+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[1+rsp],dl
> > > > >
> > > > > +        or      rbx,r10
> > > > >
> > > > > +        mov     dl,al
> > > > >
> > > > > +        shr     rax,4
> > > > >
> > > > > +        mov     r10,r8
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        mov     QWORD[8+rbp],r9
> > > > >
> > > > > +        mov     r9,QWORD[((48+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((8-128))+rbp],rbx
> > > > >
> > > > > +        mov     rbx,QWORD[((48+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[2+rsp],dl
> > > > >
> > > > > +        or      rax,r10
> > > > >
> > > > > +        mov     dl,bl
> > > > >
> > > > > +        shr     rbx,4
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        mov     QWORD[16+rbp],r8
> > > > >
> > > > > +        mov     r8,QWORD[((64+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((16-128))+rbp],rax
> > > > >
> > > > > +        mov     rax,QWORD[((64+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[3+rsp],dl
> > > > >
> > > > > +        or      rbx,r10
> > > > >
> > > > > +        mov     dl,al
> > > > >
> > > > > +        shr     rax,4
> > > > >
> > > > > +        mov     r10,r8
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        mov     QWORD[24+rbp],r9
> > > > >
> > > > > +        mov     r9,QWORD[((80+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((24-128))+rbp],rbx
> > > > >
> > > > > +        mov     rbx,QWORD[((80+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[4+rsp],dl
> > > > >
> > > > > +        or      rax,r10
> > > > >
> > > > > +        mov     dl,bl
> > > > >
> > > > > +        shr     rbx,4
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        mov     QWORD[32+rbp],r8
> > > > >
> > > > > +        mov     r8,QWORD[((96+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((32-128))+rbp],rax
> > > > >
> > > > > +        mov     rax,QWORD[((96+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[5+rsp],dl
> > > > >
> > > > > +        or      rbx,r10
> > > > >
> > > > > +        mov     dl,al
> > > > >
> > > > > +        shr     rax,4
> > > > >
> > > > > +        mov     r10,r8
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        mov     QWORD[40+rbp],r9
> > > > >
> > > > > +        mov     r9,QWORD[((112+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((40-128))+rbp],rbx
> > > > >
> > > > > +        mov     rbx,QWORD[((112+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[6+rsp],dl
> > > > >
> > > > > +        or      rax,r10
> > > > >
> > > > > +        mov     dl,bl
> > > > >
> > > > > +        shr     rbx,4
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        mov     QWORD[48+rbp],r8
> > > > >
> > > > > +        mov     r8,QWORD[((128+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((48-128))+rbp],rax
> > > > >
> > > > > +        mov     rax,QWORD[((128+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[7+rsp],dl
> > > > >
> > > > > +        or      rbx,r10
> > > > >
> > > > > +        mov     dl,al
> > > > >
> > > > > +        shr     rax,4
> > > > >
> > > > > +        mov     r10,r8
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        mov     QWORD[56+rbp],r9
> > > > >
> > > > > +        mov     r9,QWORD[((144+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((56-128))+rbp],rbx
> > > > >
> > > > > +        mov     rbx,QWORD[((144+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[8+rsp],dl
> > > > >
> > > > > +        or      rax,r10
> > > > >
> > > > > +        mov     dl,bl
> > > > >
> > > > > +        shr     rbx,4
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        mov     QWORD[64+rbp],r8
> > > > >
> > > > > +        mov     r8,QWORD[((160+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((64-128))+rbp],rax
> > > > >
> > > > > +        mov     rax,QWORD[((160+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[9+rsp],dl
> > > > >
> > > > > +        or      rbx,r10
> > > > >
> > > > > +        mov     dl,al
> > > > >
> > > > > +        shr     rax,4
> > > > >
> > > > > +        mov     r10,r8
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        mov     QWORD[72+rbp],r9
> > > > >
> > > > > +        mov     r9,QWORD[((176+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((72-128))+rbp],rbx
> > > > >
> > > > > +        mov     rbx,QWORD[((176+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[10+rsp],dl
> > > > >
> > > > > +        or      rax,r10
> > > > >
> > > > > +        mov     dl,bl
> > > > >
> > > > > +        shr     rbx,4
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        mov     QWORD[80+rbp],r8
> > > > >
> > > > > +        mov     r8,QWORD[((192+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((80-128))+rbp],rax
> > > > >
> > > > > +        mov     rax,QWORD[((192+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[11+rsp],dl
> > > > >
> > > > > +        or      rbx,r10
> > > > >
> > > > > +        mov     dl,al
> > > > >
> > > > > +        shr     rax,4
> > > > >
> > > > > +        mov     r10,r8
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        mov     QWORD[88+rbp],r9
> > > > >
> > > > > +        mov     r9,QWORD[((208+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((88-128))+rbp],rbx
> > > > >
> > > > > +        mov     rbx,QWORD[((208+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[12+rsp],dl
> > > > >
> > > > > +        or      rax,r10
> > > > >
> > > > > +        mov     dl,bl
> > > > >
> > > > > +        shr     rbx,4
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        mov     QWORD[96+rbp],r8
> > > > >
> > > > > +        mov     r8,QWORD[((224+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((96-128))+rbp],rax
> > > > >
> > > > > +        mov     rax,QWORD[((224+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[13+rsp],dl
> > > > >
> > > > > +        or      rbx,r10
> > > > >
> > > > > +        mov     dl,al
> > > > >
> > > > > +        shr     rax,4
> > > > >
> > > > > +        mov     r10,r8
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        mov     QWORD[104+rbp],r9
> > > > >
> > > > > +        mov     r9,QWORD[((240+0-128))+rsi]
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((104-128))+rbp],rbx
> > > > >
> > > > > +        mov     rbx,QWORD[((240+8-128))+rsi]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[14+rsp],dl
> > > > >
> > > > > +        or      rax,r10
> > > > >
> > > > > +        mov     dl,bl
> > > > >
> > > > > +        shr     rbx,4
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        mov     QWORD[112+rbp],r8
> > > > >
> > > > > +        shl     dl,4
> > > > >
> > > > > +        mov     QWORD[((112-128))+rbp],rax
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        mov     BYTE[15+rsp],dl
> > > > >
> > > > > +        or      rbx,r10
> > > > >
> > > > > +        mov     QWORD[120+rbp],r9
> > > > >
> > > > > +        mov     QWORD[((120-128))+rbp],rbx
> > > > >
> > > > > +        add     rsi,-128
> > > > >
> > > > > +        mov     r8,QWORD[8+rdi]
> > > > >
> > > > > +        mov     r9,QWORD[rdi]
> > > > >
> > > > > +        add     r15,r14
> > > > >
> > > > > +        lea     r11,[$L$rem_8bit]
> > > > >
> > > > > +        jmp     NEAR $L$outer_loop
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$outer_loop:
> > > > >
> > > > > +        xor     r9,QWORD[r14]
> > > > >
> > > > > +        mov     rdx,QWORD[8+r14]
> > > > >
> > > > > +        lea     r14,[16+r14]
> > > > >
> > > > > +        xor     rdx,r8
> > > > >
> > > > > +        mov     QWORD[rdi],r9
> > > > >
> > > > > +        mov     QWORD[8+rdi],rdx
> > > > >
> > > > > +        shr     rdx,32
> > > > >
> > > > > +        xor     rax,rax
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        movzx   ebx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        shr     ebx,4
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        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[rbx*1+rsp]
> > > > >
> > > > > +        shr     ecx,4
> > > > >
> > > > > +        xor     r12,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r12,r12b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > >
> > > > > +        movzx   ebx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > >
> > > > > +        shr     ebx,4
> > > > >
> > > > > +        shl     r12,48
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r12
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r13,r13b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > >
> > > > > +        movzx   ecx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > >
> > > > > +        shr     ecx,4
> > > > >
> > > > > +        shl     r13,48
> > > > >
> > > > > +        xor     r12,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r13
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r12,r12b
> > > > >
> > > > > +        mov     edx,DWORD[8+rdi]
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > >
> > > > > +        movzx   ebx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > >
> > > > > +        shr     ebx,4
> > > > >
> > > > > +        shl     r12,48
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r12
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r13,r13b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > >
> > > > > +        movzx   ecx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > >
> > > > > +        shr     ecx,4
> > > > >
> > > > > +        shl     r13,48
> > > > >
> > > > > +        xor     r12,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r13
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r12,r12b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > >
> > > > > +        movzx   ebx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > >
> > > > > +        shr     ebx,4
> > > > >
> > > > > +        shl     r12,48
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r12
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r13,r13b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > >
> > > > > +        movzx   ecx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > >
> > > > > +        shr     ecx,4
> > > > >
> > > > > +        shl     r13,48
> > > > >
> > > > > +        xor     r12,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r13
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r12,r12b
> > > > >
> > > > > +        mov     edx,DWORD[4+rdi]
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > >
> > > > > +        movzx   ebx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > >
> > > > > +        shr     ebx,4
> > > > >
> > > > > +        shl     r12,48
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r12
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r13,r13b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > >
> > > > > +        movzx   ecx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > >
> > > > > +        shr     ecx,4
> > > > >
> > > > > +        shl     r13,48
> > > > >
> > > > > +        xor     r12,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r13
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r12,r12b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > >
> > > > > +        movzx   ebx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > >
> > > > > +        shr     ebx,4
> > > > >
> > > > > +        shl     r12,48
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r12
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r13,r13b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > >
> > > > > +        movzx   ecx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > >
> > > > > +        shr     ecx,4
> > > > >
> > > > > +        shl     r13,48
> > > > >
> > > > > +        xor     r12,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r13
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r12,r12b
> > > > >
> > > > > +        mov     edx,DWORD[rdi]
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > >
> > > > > +        movzx   ebx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > >
> > > > > +        shr     ebx,4
> > > > >
> > > > > +        shl     r12,48
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r12
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r13,r13b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > >
> > > > > +        movzx   ecx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > >
> > > > > +        shr     ecx,4
> > > > >
> > > > > +        shl     r13,48
> > > > >
> > > > > +        xor     r12,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r13
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r12,r12b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > >
> > > > > +        movzx   ebx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > >
> > > > > +        shr     ebx,4
> > > > >
> > > > > +        shl     r12,48
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r12
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r13,r13b
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > >
> > > > > +        rol     edx,8
> > > > >
> > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > >
> > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > >
> > > > > +        mov     al,dl
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > >
> > > > > +        movzx   ecx,dl
> > > > >
> > > > > +        shl     al,4
> > > > >
> > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > >
> > > > > +        and     ecx,240
> > > > >
> > > > > +        shl     r13,48
> > > > >
> > > > > +        xor     r12,r8
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        xor     r9,r13
> > > > >
> > > > > +        shr     r8,8
> > > > >
> > > > > +        movzx   r12,r12b
> > > > >
> > > > > +        mov     edx,DWORD[((-4))+rdi]
> > > > >
> > > > > +        shr     r9,8
> > > > >
> > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > >
> > > > > +        shl     r10,56
> > > > >
> > > > > +        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
> > > > >
> > > > > +        movzx   r13,r8b
> > > > >
> > > > > +        shr     r8,4
> > > > >
> > > > > +        mov     r10,r9
> > > > >
> > > > > +        shl     r13b,4
> > > > >
> > > > > +        shr     r9,4
> > > > >
> > > > > +        xor     r8,QWORD[8+rcx*1+rsi]
> > > > >
> > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > >
> > > > > +        shl     r10,60
> > > > >
> > > > > +        xor     r9,QWORD[rcx*1+rsi]
> > > > >
> > > > > +        xor     r8,r10
> > > > >
> > > > > +        shl     r13,48
> > > > >
> > > > > +        bswap   r8
> > > > >
> > > > > +        xor     r9,r13
> > > > >
> > > > > +        bswap   r9
> > > > >
> > > > > +        cmp     r14,r15
> > > > >
> > > > > +        jb      NEAR $L$outer_loop
> > > > >
> > > > > +        mov     QWORD[8+rdi],r8
> > > > >
> > > > > +        mov     QWORD[rdi],r9
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((280+48))+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$ghash_epilogue:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_gcm_ghash_4bit:
> > > > >
> > > > > +global  gcm_init_clmul
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +gcm_init_clmul:
> > > > >
> > > > > +
> > > > >
> > > > > +$L$_init_clmul:
> > > > >
> > > > > +$L$SEH_begin_gcm_init_clmul:
> > > > >
> > > > > +
> > > > >
> > > > > +DB      0x48,0x83,0xec,0x18
> > > > >
> > > > > +DB      0x0f,0x29,0x34,0x24
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdx]
> > > > >
> > > > > +        pshufd  xmm2,xmm2,78
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm4,xmm2,255
> > > > >
> > > > > +        movdqa  xmm3,xmm2
> > > > >
> > > > > +        psllq   xmm2,1
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        psrlq   xmm3,63
> > > > >
> > > > > +        pcmpgtd xmm5,xmm4
> > > > >
> > > > > +        pslldq  xmm3,8
> > > > >
> > > > > +        por     xmm2,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        pand    xmm5,XMMWORD[$L$0x1c2_polynomial]
> > > > >
> > > > > +        pxor    xmm2,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm6,xmm2,78
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        pxor    xmm6,xmm2
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        pshufd  xmm3,xmm0,78
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +DB      102,15,58,68,194,0
> > > > >
> > > > > +DB      102,15,58,68,202,17
> > > > >
> > > > > +DB      102,15,58,68,222,0
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm3
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pslldq  xmm4,8
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,5
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psllq   xmm0,57
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,8
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm1,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,5
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pshufd  xmm3,xmm2,78
> > > > >
> > > > > +        pshufd  xmm4,xmm0,78
> > > > >
> > > > > +        pxor    xmm3,xmm2
> > > > >
> > > > > +        movdqu  XMMWORD[rcx],xmm2
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        movdqu  XMMWORD[16+rcx],xmm0
> > > > >
> > > > > +DB      102,15,58,15,227,8
> > > > >
> > > > > +        movdqu  XMMWORD[32+rcx],xmm4
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        pshufd  xmm3,xmm0,78
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +DB      102,15,58,68,194,0
> > > > >
> > > > > +DB      102,15,58,68,202,17
> > > > >
> > > > > +DB      102,15,58,68,222,0
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm3
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pslldq  xmm4,8
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,5
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psllq   xmm0,57
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,8
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm1,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,5
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        pshufd  xmm3,xmm0,78
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +DB      102,15,58,68,194,0
> > > > >
> > > > > +DB      102,15,58,68,202,17
> > > > >
> > > > > +DB      102,15,58,68,222,0
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm3
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pslldq  xmm4,8
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,5
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psllq   xmm0,57
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,8
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm1,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,5
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pshufd  xmm3,xmm5,78
> > > > >
> > > > > +        pshufd  xmm4,xmm0,78
> > > > >
> > > > > +        pxor    xmm3,xmm5
> > > > >
> > > > > +        movdqu  XMMWORD[48+rcx],xmm5
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        movdqu  XMMWORD[64+rcx],xmm0
> > > > >
> > > > > +DB      102,15,58,15,227,8
> > > > >
> > > > > +        movdqu  XMMWORD[80+rcx],xmm4
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > >
> > > > > +        lea     rsp,[24+rsp]
> > > > >
> > > > > +$L$SEH_end_gcm_init_clmul:
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  gcm_gmult_clmul
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +DB      102,15,58,68,194,0
> > > > >
> > > > > +DB      102,15,58,68,202,17
> > > > >
> > > > > +DB      102,15,58,68,220,0
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm3
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pslldq  xmm4,8
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,5
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psllq   xmm0,57
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,8
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm1,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,5
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +DB      102,15,56,0,197
> > > > >
> > > > > +        movdqu  XMMWORD[rcx],xmm0
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  gcm_ghash_clmul
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +gcm_ghash_clmul:
> > > > >
> > > > > +
> > > > >
> > > > > +$L$_ghash_clmul:
> > > > >
> > > > > +        lea     rax,[((-136))+rsp]
> > > > >
> > > > > +$L$SEH_begin_gcm_ghash_clmul:
> > > > >
> > > > > +
> > > > >
> > > > > +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[rcx]
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[rdx]
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[32+rdx]
> > > > >
> > > > > +DB      102,65,15,56,0,194
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     r9,0x10
> > > > >
> > > > > +        jz      NEAR $L$odd_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        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      NEAR $L$skip4x
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     r9,0x30
> > > > >
> > > > > +        mov     rax,0xA040608020C0E000
> > > > >
> > > > > +        movdqu  xmm14,XMMWORD[48+rdx]
> > > > >
> > > > > +        movdqu  xmm15,XMMWORD[64+rdx]
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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
> > > > >
> > > > > +        pshufd  xmm4,xmm3,78
> > > > >
> > > > > +        pxor    xmm4,xmm3
> > > > >
> > > > > +DB      102,15,58,68,218,0
> > > > >
> > > > > +DB      102,15,58,68,234,17
> > > > >
> > > > > +DB      102,15,58,68,231,0
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm13,xmm11
> > > > >
> > > > > +        pshufd  xmm12,xmm11,78
> > > > >
> > > > > +        pxor    xmm12,xmm11
> > > > >
> > > > > +DB      102,68,15,58,68,222,0
> > > > >
> > > > > +DB      102,68,15,58,68,238,17
> > > > >
> > > > > +DB      102,68,15,58,68,231,16
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        xorps   xmm5,xmm13
> > > > >
> > > > > +        movups  xmm7,XMMWORD[80+rdx]
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        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
> > > > >
> > > > > +        pshufd  xmm12,xmm11,78
> > > > >
> > > > > +        pxor    xmm0,xmm8
> > > > >
> > > > > +        pxor    xmm12,xmm11
> > > > >
> > > > > +DB      102,69,15,58,68,222,0
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        pshufd  xmm8,xmm0,78
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +DB      102,69,15,58,68,238,17
> > > > >
> > > > > +DB      102,68,15,58,68,231,0
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        xorps   xmm5,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r8,[64+r8]
> > > > >
> > > > > +        sub     r9,0x40
> > > > >
> > > > > +        jc      NEAR $L$tail4x
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$mod4_loop
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$mod4_loop:
> > > > >
> > > > > +DB      102,65,15,58,68,199,0
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +        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[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[32+rdx]
> > > > >
> > > > > +        xorps   xmm8,xmm4
> > > > >
> > > > > +DB      102,68,15,58,68,218,0
> > > > >
> > > > > +        pshufd  xmm4,xmm3,78
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        pxor    xmm8,xmm1
> > > > >
> > > > > +        pxor    xmm4,xmm3
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      102,68,15,58,68,234,17
> > > > >
> > > > > +        pslldq  xmm8,8
> > > > >
> > > > > +        psrldq  xmm9,8
> > > > >
> > > > > +        pxor    xmm0,xmm8
> > > > >
> > > > > +        movdqa  xmm8,XMMWORD[$L$7_mask]
> > > > >
> > > > > +        pxor    xmm1,xmm9
> > > > >
> > > > > +DB      102,76,15,110,200
> > > > >
> > > > > +
> > > > >
> > > > > +        pand    xmm8,xmm0
> > > > >
> > > > > +DB      102,69,15,56,0,200
> > > > >
> > > > > +        pxor    xmm9,xmm0
> > > > >
> > > > > +DB      102,68,15,58,68,231,0
> > > > >
> > > > > +        psllq   xmm9,57
> > > > >
> > > > > +        movdqa  xmm8,xmm9
> > > > >
> > > > > +        pslldq  xmm9,8
> > > > >
> > > > > +DB      102,15,58,68,222,0
> > > > >
> > > > > +        psrldq  xmm8,8
> > > > >
> > > > > +        pxor    xmm0,xmm9
> > > > >
> > > > > +        pxor    xmm1,xmm8
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +DB      102,15,58,68,238,17
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        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[80+rdx]
> > > > >
> > > > > +DB      102,69,15,56,0,194
> > > > >
> > > > > +        pxor    xmm1,xmm9
> > > > >
> > > > > +        pxor    xmm9,xmm0
> > > > >
> > > > > +        psrlq   xmm0,5
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm13,xmm11
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        pshufd  xmm12,xmm11,78
> > > > >
> > > > > +        pxor    xmm0,xmm9
> > > > >
> > > > > +        pxor    xmm1,xmm8
> > > > >
> > > > > +        pxor    xmm12,xmm11
> > > > >
> > > > > +DB      102,69,15,58,68,222,0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      102,69,15,58,68,238,17
> > > > >
> > > > > +        xorps   xmm3,xmm11
> > > > >
> > > > > +        pshufd  xmm8,xmm0,78
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,68,15,58,68,231,0
> > > > >
> > > > > +        xorps   xmm5,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r8,[64+r8]
> > > > >
> > > > > +        sub     r9,0x40
> > > > >
> > > > > +        jnc     NEAR $L$mod4_loop
> > > > >
> > > > > +
> > > > >
> > > > > +$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
> > > > >
> > > > > +        xorps   xmm4,xmm12
> > > > >
> > > > > +        xorps   xmm0,xmm3
> > > > >
> > > > > +        xorps   xmm1,xmm5
> > > > >
> > > > > +        pxor    xmm1,xmm0
> > > > >
> > > > > +        pxor    xmm8,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm8,xmm1
> > > > >
> > > > > +        pxor    xmm1,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +        psrldq  xmm8,8
> > > > >
> > > > > +        pslldq  xmm9,8
> > > > >
> > > > > +        pxor    xmm1,xmm8
> > > > >
> > > > > +        pxor    xmm0,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,5
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psllq   xmm0,57
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,8
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm1,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,5
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        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[r8]
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[16+r8]
> > > > >
> > > > > +DB      102,69,15,56,0,194
> > > > >
> > > > > +DB      102,65,15,56,0,218
> > > > >
> > > > > +        pxor    xmm0,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        pshufd  xmm4,xmm3,78
> > > > >
> > > > > +        pxor    xmm4,xmm3
> > > > >
> > > > > +DB      102,15,58,68,218,0
> > > > >
> > > > > +DB      102,15,58,68,234,17
> > > > >
> > > > > +DB      102,15,58,68,231,0
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r8,[32+r8]
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        sub     r9,0x20
> > > > >
> > > > > +        jbe     NEAR $L$even_tail
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        jmp     NEAR $L$mod_loop
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$mod_loop:
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm8,xmm4
> > > > >
> > > > > +        pshufd  xmm4,xmm0,78
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,58,68,198,0
> > > > >
> > > > > +DB      102,15,58,68,206,17
> > > > >
> > > > > +DB      102,15,58,68,231,16
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm5
> > > > >
> > > > > +        movdqu  xmm9,XMMWORD[r8]
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +DB      102,69,15,56,0,202
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[16+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm8,xmm1
> > > > >
> > > > > +        pxor    xmm1,xmm9
> > > > >
> > > > > +        pxor    xmm4,xmm8
> > > > >
> > > > > +DB      102,65,15,56,0,218
> > > > >
> > > > > +        movdqa  xmm8,xmm4
> > > > >
> > > > > +        psrldq  xmm8,8
> > > > >
> > > > > +        pslldq  xmm4,8
> > > > >
> > > > > +        pxor    xmm1,xmm8
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm0
> > > > >
> > > > > +        movdqa  xmm8,xmm0
> > > > >
> > > > > +        psllq   xmm0,5
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +DB      102,15,58,68,218,0
> > > > >
> > > > > +        psllq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm8
> > > > >
> > > > > +        psllq   xmm0,57
> > > > >
> > > > > +        movdqa  xmm8,xmm0
> > > > >
> > > > > +        pslldq  xmm0,8
> > > > >
> > > > > +        psrldq  xmm8,8
> > > > >
> > > > > +        pxor    xmm0,xmm9
> > > > >
> > > > > +        pshufd  xmm4,xmm5,78
> > > > >
> > > > > +        pxor    xmm1,xmm8
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +DB      102,15,58,68,234,17
> > > > >
> > > > > +        pxor    xmm1,xmm9
> > > > >
> > > > > +        pxor    xmm9,xmm0
> > > > >
> > > > > +        psrlq   xmm0,5
> > > > >
> > > > > +        pxor    xmm0,xmm9
> > > > >
> > > > > +        lea     r8,[32+r8]
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +DB      102,15,58,68,231,0
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     r9,0x20
> > > > >
> > > > > +        ja      NEAR $L$mod_loop
> > > > >
> > > > > +
> > > > >
> > > > > +$L$even_tail:
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm8,xmm4
> > > > >
> > > > > +        pshufd  xmm4,xmm0,78
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,58,68,198,0
> > > > >
> > > > > +DB      102,15,58,68,206,17
> > > > >
> > > > > +DB      102,15,58,68,231,16
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm5
> > > > >
> > > > > +        pxor    xmm8,xmm0
> > > > >
> > > > > +        pxor    xmm8,xmm1
> > > > >
> > > > > +        pxor    xmm4,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm4
> > > > >
> > > > > +        psrldq  xmm8,8
> > > > >
> > > > > +        pslldq  xmm4,8
> > > > >
> > > > > +        pxor    xmm1,xmm8
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,5
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psllq   xmm0,57
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,8
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm1,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,5
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        test    r9,r9
> > > > >
> > > > > +        jnz     NEAR $L$done
> > > > >
> > > > > +
> > > > >
> > > > > +$L$odd_tail:
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[r8]
> > > > >
> > > > > +DB      102,69,15,56,0,194
> > > > >
> > > > > +        pxor    xmm0,xmm8
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        pshufd  xmm3,xmm0,78
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +DB      102,15,58,68,194,0
> > > > >
> > > > > +DB      102,15,58,68,202,17
> > > > >
> > > > > +DB      102,15,58,68,223,0
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm3,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm3
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pslldq  xmm4,8
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,5
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psllq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psllq   xmm0,57
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pslldq  xmm0,8
> > > > >
> > > > > +        psrldq  xmm3,8
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm1,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        psrlq   xmm0,5
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrlq   xmm0,1
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +$L$done:
> > > > >
> > > > > +DB      102,65,15,56,0,194
> > > > >
> > > > > +        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
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  gcm_init_avx
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +gcm_init_avx:
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$_init_clmul
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  gcm_gmult_avx
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +gcm_gmult_avx:
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$_gmult_clmul
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  gcm_ghash_avx
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +gcm_ghash_avx:
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$_ghash_clmul
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +$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,0xc2
> > > > >
> > > > > +$L$7_mask:
> > > > >
> > > > > +        DD      7,0,7,0
> > > > >
> > > > > +$L$7_mask_poly:
> > > > >
> > > > > +        DD      7,0,450,0
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +
> > > > >
> > > > > +$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
> > 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
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rax,[((48+280))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        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_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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +section .pdata rdata align=4
> > > > >
> > > > > +ALIGN   4
> > > > >
> > > > > +        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      $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      $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      $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:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        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      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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
> > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
> > > > > x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..f3b7b0e35e
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm
> > > > > @@ -0,0 +1,3137 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/sha/asm/sha1-mb-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +
> > > > >
> > > > > +global  sha1_multi_block
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +sha1_multi_block:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_sha1_multi_block:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
> > > > >
> > > > > +        bt      rcx,61
> > > > >
> > > > > +        jc      NEAR _shaext_shortcut
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-168))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > > >
> > > > > +        sub     rsp,288
> > > > >
> > > > > +        and     rsp,-256
> > > > >
> > > > > +        mov     QWORD[272+rsp],rax
> > > > >
> > > > > +
> > > > >
> > > > > +$L$body:
> > > > >
> > > > > +        lea     rbp,[K_XX_XX]
> > > > >
> > > > > +        lea     rbx,[256+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$oop_grande:
> > > > >
> > > > > +        mov     DWORD[280+rsp],edx
> > > > >
> > > > > +        xor     edx,edx
> > > > >
> > > > > +        mov     r8,QWORD[rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[8+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[rbx],ecx
> > > > >
> > > > > +        cmovle  r8,rbp
> > > > >
> > > > > +        mov     r9,QWORD[16+rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[24+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[4+rbx],ecx
> > > > >
> > > > > +        cmovle  r9,rbp
> > > > >
> > > > > +        mov     r10,QWORD[32+rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[40+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[8+rbx],ecx
> > > > >
> > > > > +        cmovle  r10,rbp
> > > > >
> > > > > +        mov     r11,QWORD[48+rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[56+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[12+rbx],ecx
> > > > >
> > > > > +        cmovle  r11,rbp
> > > > >
> > > > > +        test    edx,edx
> > > > >
> > > > > +        jz      NEAR $L$done
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[rdi]
> > > > >
> > > > > +        lea     rax,[128+rsp]
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[32+rdi]
> > > > >
> > > > > +        movdqu  xmm12,XMMWORD[64+rdi]
> > > > >
> > > > > +        movdqu  xmm13,XMMWORD[96+rdi]
> > > > >
> > > > > +        movdqu  xmm14,XMMWORD[128+rdi]
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[96+rbp]
> > > > >
> > > > > +        movdqa  xmm15,XMMWORD[((-32))+rbp]
> > > > >
> > > > > +        jmp     NEAR $L$oop
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$oop:
> > > > >
> > > > > +        movd    xmm0,DWORD[r8]
> > > > >
> > > > > +        lea     r8,[64+r8]
> > > > >
> > > > > +        movd    xmm2,DWORD[r9]
> > > > >
> > > > > +        lea     r9,[64+r9]
> > > > >
> > > > > +        movd    xmm3,DWORD[r10]
> > > > >
> > > > > +        lea     r10,[64+r10]
> > > > >
> > > > > +        movd    xmm4,DWORD[r11]
> > > > >
> > > > > +        lea     r11,[64+r11]
> > > > >
> > > > > +        punpckldq       xmm0,xmm3
> > > > >
> > > > > +        movd    xmm1,DWORD[((-60))+r8]
> > > > >
> > > > > +        punpckldq       xmm2,xmm4
> > > > >
> > > > > +        movd    xmm9,DWORD[((-60))+r9]
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        movd    xmm8,DWORD[((-60))+r10]
> > > > >
> > > > > +DB      102,15,56,0,197
> > > > >
> > > > > +        movd    xmm7,DWORD[((-60))+r11]
> > > > >
> > > > > +        punpckldq       xmm1,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm13
> > > > >
> > > > > +        pand    xmm6,xmm12
> > > > >
> > > > > +        punpckldq       xmm1,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        movd    xmm2,DWORD[((-56))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-56))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +DB      102,15,56,0,205
> > > > >
> > > > > +        movd    xmm8,DWORD[((-56))+r10]
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-56))+r11]
> > > > >
> > > > > +        punpckldq       xmm2,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm12
> > > > >
> > > > > +        pand    xmm6,xmm11
> > > > >
> > > > > +        punpckldq       xmm2,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        movd    xmm3,DWORD[((-52))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-52))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +DB      102,15,56,0,213
> > > > >
> > > > > +        movd    xmm8,DWORD[((-52))+r10]
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-52))+r11]
> > > > >
> > > > > +        punpckldq       xmm3,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm11
> > > > >
> > > > > +        pand    xmm6,xmm10
> > > > >
> > > > > +        punpckldq       xmm3,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        movd    xmm4,DWORD[((-48))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-48))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +DB      102,15,56,0,221
> > > > >
> > > > > +        movd    xmm8,DWORD[((-48))+r10]
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-48))+r11]
> > > > >
> > > > > +        punpckldq       xmm4,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm10
> > > > >
> > > > > +        pand    xmm6,xmm14
> > > > >
> > > > > +        punpckldq       xmm4,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        movd    xmm0,DWORD[((-44))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-44))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +DB      102,15,56,0,229
> > > > >
> > > > > +        movd    xmm8,DWORD[((-44))+r10]
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-44))+r11]
> > > > >
> > > > > +        punpckldq       xmm0,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm14
> > > > >
> > > > > +        pand    xmm6,xmm13
> > > > >
> > > > > +        punpckldq       xmm0,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        movd    xmm1,DWORD[((-40))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-40))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +DB      102,15,56,0,197
> > > > >
> > > > > +        movd    xmm8,DWORD[((-40))+r10]
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-40))+r11]
> > > > >
> > > > > +        punpckldq       xmm1,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm13
> > > > >
> > > > > +        pand    xmm6,xmm12
> > > > >
> > > > > +        punpckldq       xmm1,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        movd    xmm2,DWORD[((-36))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-36))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +DB      102,15,56,0,205
> > > > >
> > > > > +        movd    xmm8,DWORD[((-36))+r10]
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-36))+r11]
> > > > >
> > > > > +        punpckldq       xmm2,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm12
> > > > >
> > > > > +        pand    xmm6,xmm11
> > > > >
> > > > > +        punpckldq       xmm2,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        movd    xmm3,DWORD[((-32))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-32))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +DB      102,15,56,0,213
> > > > >
> > > > > +        movd    xmm8,DWORD[((-32))+r10]
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-32))+r11]
> > > > >
> > > > > +        punpckldq       xmm3,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm11
> > > > >
> > > > > +        pand    xmm6,xmm10
> > > > >
> > > > > +        punpckldq       xmm3,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        movd    xmm4,DWORD[((-28))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-28))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +DB      102,15,56,0,221
> > > > >
> > > > > +        movd    xmm8,DWORD[((-28))+r10]
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-28))+r11]
> > > > >
> > > > > +        punpckldq       xmm4,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm10
> > > > >
> > > > > +        pand    xmm6,xmm14
> > > > >
> > > > > +        punpckldq       xmm4,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        movd    xmm0,DWORD[((-24))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-24))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +DB      102,15,56,0,229
> > > > >
> > > > > +        movd    xmm8,DWORD[((-24))+r10]
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-24))+r11]
> > > > >
> > > > > +        punpckldq       xmm0,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm14
> > > > >
> > > > > +        pand    xmm6,xmm13
> > > > >
> > > > > +        punpckldq       xmm0,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        movd    xmm1,DWORD[((-20))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-20))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +DB      102,15,56,0,197
> > > > >
> > > > > +        movd    xmm8,DWORD[((-20))+r10]
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-20))+r11]
> > > > >
> > > > > +        punpckldq       xmm1,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm13
> > > > >
> > > > > +        pand    xmm6,xmm12
> > > > >
> > > > > +        punpckldq       xmm1,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        movd    xmm2,DWORD[((-16))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-16))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +DB      102,15,56,0,205
> > > > >
> > > > > +        movd    xmm8,DWORD[((-16))+r10]
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-16))+r11]
> > > > >
> > > > > +        punpckldq       xmm2,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm12
> > > > >
> > > > > +        pand    xmm6,xmm11
> > > > >
> > > > > +        punpckldq       xmm2,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        movd    xmm3,DWORD[((-12))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-12))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +DB      102,15,56,0,213
> > > > >
> > > > > +        movd    xmm8,DWORD[((-12))+r10]
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-12))+r11]
> > > > >
> > > > > +        punpckldq       xmm3,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm11
> > > > >
> > > > > +        pand    xmm6,xmm10
> > > > >
> > > > > +        punpckldq       xmm3,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        movd    xmm4,DWORD[((-8))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-8))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +DB      102,15,56,0,221
> > > > >
> > > > > +        movd    xmm8,DWORD[((-8))+r10]
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        movd    xmm7,DWORD[((-8))+r11]
> > > > >
> > > > > +        punpckldq       xmm4,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pandn   xmm7,xmm10
> > > > >
> > > > > +        pand    xmm6,xmm14
> > > > >
> > > > > +        punpckldq       xmm4,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        movd    xmm0,DWORD[((-4))+r8]
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        movd    xmm9,DWORD[((-4))+r9]
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +DB      102,15,56,0,229
> > > > >
> > > > > +        movd    xmm8,DWORD[((-4))+r10]
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +        movd    xmm7,DWORD[((-4))+r11]
> > > > >
> > > > > +        punpckldq       xmm0,xmm8
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        punpckldq       xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        prefetcht0      [63+r8]
> > > > >
> > > > > +        pandn   xmm7,xmm14
> > > > >
> > > > > +        pand    xmm6,xmm13
> > > > >
> > > > > +        punpckldq       xmm0,xmm9
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        prefetcht0      [63+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        prefetcht0      [63+r10]
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +DB      102,15,56,0,197
> > > > >
> > > > > +        prefetcht0      [63+r11]
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pandn   xmm7,xmm13
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        pand    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pandn   xmm7,xmm12
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        pand    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pandn   xmm7,xmm11
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        pand    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pandn   xmm7,xmm10
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        pand    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pandn   xmm7,xmm14
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        pand    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        movdqa  xmm15,XMMWORD[rbp]
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        movdqa  xmm15,XMMWORD[32+rbp]
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        pand    xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        pand    xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        pand    xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        pand    xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        pand    xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        pand    xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        pand    xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        pand    xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        pand    xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        pand    xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        pand    xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        pand    xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        pand    xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        pand    xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        pand    xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        pand    xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        pand    xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        pand    xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        pand    xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        pand    xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        paddd   xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        pand    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        movdqa  xmm15,XMMWORD[64+rbp]
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm2
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm3
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm0
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm1
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pxor    xmm0,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm2
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm0
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        paddd   xmm0,xmm0
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm0,xmm5
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        pxor    xmm1,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +        paddd   xmm14,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        paddd   xmm14,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm3
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm1
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm1,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm11,2
> > > > >
> > > > > +        paddd   xmm14,xmm8
> > > > >
> > > > > +        por     xmm1,xmm5
> > > > >
> > > > > +        por     xmm11,xmm7
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm6,xmm12
> > > > >
> > > > > +        pxor    xmm2,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +        paddd   xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm14
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm2
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm13,xmm6
> > > > >
> > > > > +        paddd   xmm2,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm10,2
> > > > >
> > > > > +        paddd   xmm13,xmm8
> > > > >
> > > > > +        por     xmm2,xmm5
> > > > >
> > > > > +        por     xmm10,xmm7
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm13
> > > > >
> > > > > +        movdqa  xmm6,xmm11
> > > > >
> > > > > +        pxor    xmm3,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +        paddd   xmm12,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm13
> > > > >
> > > > > +        paddd   xmm12,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm0
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm3
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm3,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm14,2
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        por     xmm3,xmm5
> > > > >
> > > > > +        por     xmm14,xmm7
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm10
> > > > >
> > > > > +        pxor    xmm4,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +        paddd   xmm11,xmm15
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm12
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm1
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        pxor    xmm6,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        psrld   xmm5,31
> > > > >
> > > > > +        paddd   xmm11,xmm6
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm13,2
> > > > >
> > > > > +        paddd   xmm11,xmm8
> > > > >
> > > > > +        por     xmm4,xmm5
> > > > >
> > > > > +        por     xmm13,xmm7
> > > > >
> > > > > +        movdqa  xmm8,xmm11
> > > > >
> > > > > +        paddd   xmm10,xmm15
> > > > >
> > > > > +        movdqa  xmm6,xmm14
> > > > >
> > > > > +        pslld   xmm8,5
> > > > >
> > > > > +        pxor    xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        psrld   xmm9,27
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pxor    xmm6,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pslld   xmm7,30
> > > > >
> > > > > +        por     xmm8,xmm9
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm12,2
> > > > >
> > > > > +        paddd   xmm10,xmm8
> > > > >
> > > > > +        por     xmm12,xmm7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[rbx]
> > > > >
> > > > > +        mov     ecx,1
> > > > >
> > > > > +        cmp     ecx,DWORD[rbx]
> > > > >
> > > > > +        pxor    xmm8,xmm8
> > > > >
> > > > > +        cmovge  r8,rbp
> > > > >
> > > > > +        cmp     ecx,DWORD[4+rbx]
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        cmovge  r9,rbp
> > > > >
> > > > > +        cmp     ecx,DWORD[8+rbx]
> > > > >
> > > > > +        pcmpgtd xmm1,xmm8
> > > > >
> > > > > +        cmovge  r10,rbp
> > > > >
> > > > > +        cmp     ecx,DWORD[12+rbx]
> > > > >
> > > > > +        paddd   xmm0,xmm1
> > > > >
> > > > > +        cmovge  r11,rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[rdi]
> > > > >
> > > > > +        pand    xmm10,xmm1
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[32+rdi]
> > > > >
> > > > > +        pand    xmm11,xmm1
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[64+rdi]
> > > > >
> > > > > +        pand    xmm12,xmm1
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +        movdqu  xmm9,XMMWORD[96+rdi]
> > > > >
> > > > > +        pand    xmm13,xmm1
> > > > >
> > > > > +        paddd   xmm12,xmm8
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[128+rdi]
> > > > >
> > > > > +        pand    xmm14,xmm1
> > > > >
> > > > > +        movdqu  XMMWORD[rdi],xmm10
> > > > >
> > > > > +        paddd   xmm13,xmm9
> > > > >
> > > > > +        movdqu  XMMWORD[32+rdi],xmm11
> > > > >
> > > > > +        paddd   xmm14,xmm5
> > > > >
> > > > > +        movdqu  XMMWORD[64+rdi],xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[96+rdi],xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[128+rdi],xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[rbx],xmm0
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[96+rbp]
> > > > >
> > > > > +        movdqa  xmm15,XMMWORD[((-32))+rbp]
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edx,DWORD[280+rsp]
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +        lea     rsi,[64+rsi]
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop_grande
> > > > >
> > > > > +
> > > > >
> > > > > +$L$done:
> > > > >
> > > > > +        mov     rax,QWORD[272+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > > >
> > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[rax]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$epilogue:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_sha1_multi_block:
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +sha1_multi_block_shaext:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_sha1_multi_block_shaext:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +_shaext_shortcut:
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-168))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > > >
> > > > > +        sub     rsp,288
> > > > >
> > > > > +        shl     edx,1
> > > > >
> > > > > +        and     rsp,-256
> > > > >
> > > > > +        lea     rdi,[64+rdi]
> > > > >
> > > > > +        mov     QWORD[272+rsp],rax
> > > > >
> > > > > +$L$body_shaext:
> > > > >
> > > > > +        lea     rbx,[256+rsp]
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((K_XX_XX+128))]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$oop_grande_shaext:
> > > > >
> > > > > +        mov     DWORD[280+rsp],edx
> > > > >
> > > > > +        xor     edx,edx
> > > > >
> > > > > +        mov     r8,QWORD[rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[8+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[rbx],ecx
> > > > >
> > > > > +        cmovle  r8,rsp
> > > > >
> > > > > +        mov     r9,QWORD[16+rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[24+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[4+rbx],ecx
> > > > >
> > > > > +        cmovle  r9,rsp
> > > > >
> > > > > +        test    edx,edx
> > > > >
> > > > > +        jz      NEAR $L$done_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +        movq    xmm0,QWORD[((0-64))+rdi]
> > > > >
> > > > > +        movq    xmm4,QWORD[((32-64))+rdi]
> > > > >
> > > > > +        movq    xmm5,QWORD[((64-64))+rdi]
> > > > >
> > > > > +        movq    xmm6,QWORD[((96-64))+rdi]
> > > > >
> > > > > +        movq    xmm7,QWORD[((128-64))+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +        punpckldq       xmm0,xmm4
> > > > >
> > > > > +        punpckldq       xmm5,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm8,xmm0
> > > > >
> > > > > +        punpcklqdq      xmm0,xmm5
> > > > >
> > > > > +        punpckhqdq      xmm8,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm1,xmm7,63
> > > > >
> > > > > +        pshufd  xmm9,xmm7,127
> > > > >
> > > > > +        pshufd  xmm0,xmm0,27
> > > > >
> > > > > +        pshufd  xmm8,xmm8,27
> > > > >
> > > > > +        jmp     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$oop_shaext:
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[r8]
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[r9]
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[16+r8]
> > > > >
> > > > > +        movdqu  xmm12,XMMWORD[16+r9]
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[32+r8]
> > > > >
> > > > > +DB      102,15,56,0,227
> > > > >
> > > > > +        movdqu  xmm13,XMMWORD[32+r9]
> > > > >
> > > > > +DB      102,68,15,56,0,219
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[48+r8]
> > > > >
> > > > > +        lea     r8,[64+r8]
> > > > >
> > > > > +DB      102,15,56,0,235
> > > > >
> > > > > +        movdqu  xmm14,XMMWORD[48+r9]
> > > > >
> > > > > +        lea     r9,[64+r9]
> > > > >
> > > > > +DB      102,68,15,56,0,227
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[80+rsp],xmm1
> > > > >
> > > > > +        paddd   xmm1,xmm4
> > > > >
> > > > > +        movdqa  XMMWORD[112+rsp],xmm9
> > > > >
> > > > > +        paddd   xmm9,xmm11
> > > > >
> > > > > +        movdqa  XMMWORD[64+rsp],xmm0
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  XMMWORD[96+rsp],xmm8
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,0
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +DB      69,15,58,204,193,0
> > > > >
> > > > > +DB      69,15,56,200,212
> > > > >
> > > > > +DB      102,15,56,0,243
> > > > >
> > > > > +        prefetcht0      [127+r8]
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +DB      102,68,15,56,0,235
> > > > >
> > > > > +        prefetcht0      [127+r9]
> > > > >
> > > > > +DB      69,15,56,201,220
> > > > >
> > > > > +
> > > > >
> > > > > +DB      102,15,56,0,251
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      102,68,15,56,0,243
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,0
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +DB      69,15,58,204,194,0
> > > > >
> > > > > +DB      69,15,56,200,205
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +        pxor    xmm11,xmm13
> > > > >
> > > > > +DB      69,15,56,201,229
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,0
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +DB      69,15,58,204,193,0
> > > > >
> > > > > +DB      69,15,56,200,214
> > > > >
> > > > > +DB      15,56,202,231
> > > > >
> > > > > +DB      69,15,56,202,222
> > > > >
> > > > > +        pxor    xmm5,xmm7
> > > > >
> > > > > +DB      15,56,201,247
> > > > >
> > > > > +        pxor    xmm12,xmm14
> > > > >
> > > > > +DB      69,15,56,201,238
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,0
> > > > >
> > > > > +DB      15,56,200,204
> > > > >
> > > > > +DB      69,15,58,204,194,0
> > > > >
> > > > > +DB      69,15,56,200,203
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +DB      69,15,56,202,227
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,252
> > > > >
> > > > > +        pxor    xmm13,xmm11
> > > > >
> > > > > +DB      69,15,56,201,243
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,0
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +DB      69,15,58,204,193,0
> > > > >
> > > > > +DB      69,15,56,200,212
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +DB      69,15,56,202,236
> > > > >
> > > > > +        pxor    xmm7,xmm5
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        pxor    xmm14,xmm12
> > > > >
> > > > > +DB      69,15,56,201,220
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,1
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +DB      69,15,58,204,194,1
> > > > >
> > > > > +DB      69,15,56,200,205
> > > > >
> > > > > +DB      15,56,202,254
> > > > >
> > > > > +DB      69,15,56,202,245
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +        pxor    xmm11,xmm13
> > > > >
> > > > > +DB      69,15,56,201,229
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,1
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +DB      69,15,58,204,193,1
> > > > >
> > > > > +DB      69,15,56,200,214
> > > > >
> > > > > +DB      15,56,202,231
> > > > >
> > > > > +DB      69,15,56,202,222
> > > > >
> > > > > +        pxor    xmm5,xmm7
> > > > >
> > > > > +DB      15,56,201,247
> > > > >
> > > > > +        pxor    xmm12,xmm14
> > > > >
> > > > > +DB      69,15,56,201,238
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,1
> > > > >
> > > > > +DB      15,56,200,204
> > > > >
> > > > > +DB      69,15,58,204,194,1
> > > > >
> > > > > +DB      69,15,56,200,203
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +DB      69,15,56,202,227
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,252
> > > > >
> > > > > +        pxor    xmm13,xmm11
> > > > >
> > > > > +DB      69,15,56,201,243
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,1
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +DB      69,15,58,204,193,1
> > > > >
> > > > > +DB      69,15,56,200,212
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +DB      69,15,56,202,236
> > > > >
> > > > > +        pxor    xmm7,xmm5
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        pxor    xmm14,xmm12
> > > > >
> > > > > +DB      69,15,56,201,220
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,1
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +DB      69,15,58,204,194,1
> > > > >
> > > > > +DB      69,15,56,200,205
> > > > >
> > > > > +DB      15,56,202,254
> > > > >
> > > > > +DB      69,15,56,202,245
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +        pxor    xmm11,xmm13
> > > > >
> > > > > +DB      69,15,56,201,229
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,2
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +DB      69,15,58,204,193,2
> > > > >
> > > > > +DB      69,15,56,200,214
> > > > >
> > > > > +DB      15,56,202,231
> > > > >
> > > > > +DB      69,15,56,202,222
> > > > >
> > > > > +        pxor    xmm5,xmm7
> > > > >
> > > > > +DB      15,56,201,247
> > > > >
> > > > > +        pxor    xmm12,xmm14
> > > > >
> > > > > +DB      69,15,56,201,238
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,2
> > > > >
> > > > > +DB      15,56,200,204
> > > > >
> > > > > +DB      69,15,58,204,194,2
> > > > >
> > > > > +DB      69,15,56,200,203
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +DB      69,15,56,202,227
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,252
> > > > >
> > > > > +        pxor    xmm13,xmm11
> > > > >
> > > > > +DB      69,15,56,201,243
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,2
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +DB      69,15,58,204,193,2
> > > > >
> > > > > +DB      69,15,56,200,212
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +DB      69,15,56,202,236
> > > > >
> > > > > +        pxor    xmm7,xmm5
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        pxor    xmm14,xmm12
> > > > >
> > > > > +DB      69,15,56,201,220
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,2
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +DB      69,15,58,204,194,2
> > > > >
> > > > > +DB      69,15,56,200,205
> > > > >
> > > > > +DB      15,56,202,254
> > > > >
> > > > > +DB      69,15,56,202,245
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +        pxor    xmm11,xmm13
> > > > >
> > > > > +DB      69,15,56,201,229
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,2
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +DB      69,15,58,204,193,2
> > > > >
> > > > > +DB      69,15,56,200,214
> > > > >
> > > > > +DB      15,56,202,231
> > > > >
> > > > > +DB      69,15,56,202,222
> > > > >
> > > > > +        pxor    xmm5,xmm7
> > > > >
> > > > > +DB      15,56,201,247
> > > > >
> > > > > +        pxor    xmm12,xmm14
> > > > >
> > > > > +DB      69,15,56,201,238
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,3
> > > > >
> > > > > +DB      15,56,200,204
> > > > >
> > > > > +DB      69,15,58,204,194,3
> > > > >
> > > > > +DB      69,15,56,200,203
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +DB      69,15,56,202,227
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,252
> > > > >
> > > > > +        pxor    xmm13,xmm11
> > > > >
> > > > > +DB      69,15,56,201,243
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,3
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +DB      69,15,58,204,193,3
> > > > >
> > > > > +DB      69,15,56,200,212
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +DB      69,15,56,202,236
> > > > >
> > > > > +        pxor    xmm7,xmm5
> > > > >
> > > > > +        pxor    xmm14,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,1
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        cmp     ecx,DWORD[rbx]
> > > > >
> > > > > +        cmovge  r8,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,3
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +DB      69,15,58,204,194,3
> > > > >
> > > > > +DB      69,15,56,200,205
> > > > >
> > > > > +DB      15,56,202,254
> > > > >
> > > > > +DB      69,15,56,202,245
> > > > >
> > > > > +
> > > > >
> > > > > +        cmp     ecx,DWORD[4+rbx]
> > > > >
> > > > > +        cmovge  r9,rsp
> > > > >
> > > > > +        movq    xmm6,QWORD[rbx]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +DB      15,58,204,193,3
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +DB      69,15,58,204,193,3
> > > > >
> > > > > +DB      69,15,56,200,214
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm11,xmm6,0x00
> > > > >
> > > > > +        pshufd  xmm12,xmm6,0x55
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        pcmpgtd xmm11,xmm4
> > > > >
> > > > > +        pcmpgtd xmm12,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +DB      15,58,204,194,3
> > > > >
> > > > > +DB      15,56,200,204
> > > > >
> > > > > +DB      69,15,58,204,194,3
> > > > >
> > > > > +DB      68,15,56,200,204
> > > > >
> > > > > +
> > > > >
> > > > > +        pcmpgtd xmm7,xmm4
> > > > >
> > > > > +        pand    xmm0,xmm11
> > > > >
> > > > > +        pand    xmm1,xmm11
> > > > >
> > > > > +        pand    xmm8,xmm12
> > > > >
> > > > > +        pand    xmm9,xmm12
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm0,XMMWORD[64+rsp]
> > > > >
> > > > > +        paddd   xmm1,XMMWORD[80+rsp]
> > > > >
> > > > > +        paddd   xmm8,XMMWORD[96+rsp]
> > > > >
> > > > > +        paddd   xmm9,XMMWORD[112+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        movq    QWORD[rbx],xmm6
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edx,DWORD[280+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm0,xmm0,27
> > > > >
> > > > > +        pshufd  xmm8,xmm8,27
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,xmm0
> > > > >
> > > > > +        punpckldq       xmm0,xmm8
> > > > >
> > > > > +        punpckhdq       xmm6,xmm8
> > > > >
> > > > > +        punpckhdq       xmm1,xmm9
> > > > >
> > > > > +        movq    QWORD[(0-64)+rdi],xmm0
> > > > >
> > > > > +        psrldq  xmm0,8
> > > > >
> > > > > +        movq    QWORD[(64-64)+rdi],xmm6
> > > > >
> > > > > +        psrldq  xmm6,8
> > > > >
> > > > > +        movq    QWORD[(32-64)+rdi],xmm0
> > > > >
> > > > > +        psrldq  xmm1,8
> > > > >
> > > > > +        movq    QWORD[(96-64)+rdi],xmm6
> > > > >
> > > > > +        movq    QWORD[(128-64)+rdi],xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rdi,[8+rdi]
> > > > >
> > > > > +        lea     rsi,[32+rsi]
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop_grande_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +$L$done_shaext:
> > > > >
> > > > > +
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > > >
> > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[rax]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$epilogue_shaext:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_sha1_multi_block_shaext:
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   256
> > > > >
> > > > > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > > > >
> > > > > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > > > >
> > > > > +K_XX_XX:
> > > > >
> > > > > +        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,109,117,108,116,105,45,98,108,111,99,107
> > > > >
> > > > > +DB      32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120
> > > > >
> > > > > +DB      56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77
> > > > >
> > > > > +DB      83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110
> > > > >
> > > > > +DB      115,115,108,46,111,114,103,62,0
> > > > >
> > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[272+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > >
> > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > >
> > > > > +        mov     QWORD[144+r8],rbx
> > > > >
> > > > > +        mov     QWORD[160+r8],rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((-24-160))+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,20
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +$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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +section .pdata rdata align=4
> > > > >
> > > > > +ALIGN   4
> > > > >
> > > > > +        DD      $L$SEH_begin_sha1_multi_block wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_sha1_multi_block wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_sha1_multi_block wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_begin_sha1_multi_block_shaext wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_sha1_multi_block_shaext wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_sha1_multi_block_shaext wrt ..imagebase
> > > > >
> > > > > +section .xdata rdata align=8
> > > > >
> > > > > +ALIGN   8
> > > > >
> > > > > +$L$SEH_info_sha1_multi_block:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
> > > > >
> > > > > +$L$SEH_info_sha1_multi_block_shaext:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
> > > > > wrt ..imagebase
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-
> > x86_64.nasm
> > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..c6d68d348f
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> > > > > @@ -0,0 +1,2884 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/sha/asm/sha1-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2006-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +
> > > > >
> > > > > +global  sha1_block_data_order
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        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      NEAR $L$ialu
> > > > >
> > > > > +        test    r10d,536870912
> > > > >
> > > > > +        jnz     NEAR _shaext_shortcut
> > > > >
> > > > > +        jmp     NEAR _ssse3_shortcut
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ialu:
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r8,rdi
> > > > >
> > > > > +        sub     rsp,72
> > > > >
> > > > > +        mov     r9,rsi
> > > > >
> > > > > +        and     rsp,-64
> > > > >
> > > > > +        mov     r10,rdx
> > > > >
> > > > > +        mov     QWORD[64+rsp],rax
> > > > >
> > > > > +
> > > > >
> > > > > +$L$prologue:
> > > > >
> > > > > +
> > > > >
> > > > > +        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[r9]
> > > > >
> > > > > +        bswap   edx
> > > > >
> > > > > +        mov     ebp,DWORD[4+r9]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[rsp],edx
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        bswap   ebp
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,edi
> > > > >
> > > > > +        lea     r13d,[1518500249+r13*1+rdx]
> > > > >
> > > > > +        add     r13d,ecx
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     edi,30
> > > > >
> > > > > +        add     r13d,eax
> > > > >
> > > > > +        mov     r14d,DWORD[8+r9]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[4+rsp],ebp
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        bswap   r14d
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,esi
> > > > >
> > > > > +        lea     r12d,[1518500249+r12*1+rbp]
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     esi,30
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        mov     edx,DWORD[12+r9]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[8+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        bswap   edx
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,r13d
> > > > >
> > > > > +        lea     r11d,[1518500249+r11*1+r14]
> > > > >
> > > > > +        add     r11d,ecx
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     r13d,30
> > > > >
> > > > > +        add     r11d,eax
> > > > >
> > > > > +        mov     ebp,DWORD[16+r9]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[12+rsp],edx
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        bswap   ebp
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,r12d
> > > > >
> > > > > +        lea     edi,[1518500249+rdi*1+rdx]
> > > > >
> > > > > +        add     edi,ecx
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     r12d,30
> > > > >
> > > > > +        add     edi,eax
> > > > >
> > > > > +        mov     r14d,DWORD[20+r9]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[16+rsp],ebp
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        bswap   r14d
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,r11d
> > > > >
> > > > > +        lea     esi,[1518500249+rsi*1+rbp]
> > > > >
> > > > > +        add     esi,ecx
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     r11d,30
> > > > >
> > > > > +        add     esi,eax
> > > > >
> > > > > +        mov     edx,DWORD[24+r9]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[20+rsp],r14d
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        bswap   edx
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,edi
> > > > >
> > > > > +        lea     r13d,[1518500249+r13*1+r14]
> > > > >
> > > > > +        add     r13d,ecx
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     edi,30
> > > > >
> > > > > +        add     r13d,eax
> > > > >
> > > > > +        mov     ebp,DWORD[28+r9]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[24+rsp],edx
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        bswap   ebp
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,esi
> > > > >
> > > > > +        lea     r12d,[1518500249+r12*1+rdx]
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     esi,30
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        mov     r14d,DWORD[32+r9]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[28+rsp],ebp
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        bswap   r14d
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,r13d
> > > > >
> > > > > +        lea     r11d,[1518500249+r11*1+rbp]
> > > > >
> > > > > +        add     r11d,ecx
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     r13d,30
> > > > >
> > > > > +        add     r11d,eax
> > > > >
> > > > > +        mov     edx,DWORD[36+r9]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[32+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        bswap   edx
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,r12d
> > > > >
> > > > > +        lea     edi,[1518500249+rdi*1+r14]
> > > > >
> > > > > +        add     edi,ecx
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     r12d,30
> > > > >
> > > > > +        add     edi,eax
> > > > >
> > > > > +        mov     ebp,DWORD[40+r9]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[36+rsp],edx
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        bswap   ebp
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,r11d
> > > > >
> > > > > +        lea     esi,[1518500249+rsi*1+rdx]
> > > > >
> > > > > +        add     esi,ecx
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     r11d,30
> > > > >
> > > > > +        add     esi,eax
> > > > >
> > > > > +        mov     r14d,DWORD[44+r9]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[40+rsp],ebp
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        bswap   r14d
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,edi
> > > > >
> > > > > +        lea     r13d,[1518500249+r13*1+rbp]
> > > > >
> > > > > +        add     r13d,ecx
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     edi,30
> > > > >
> > > > > +        add     r13d,eax
> > > > >
> > > > > +        mov     edx,DWORD[48+r9]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[44+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        bswap   edx
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,esi
> > > > >
> > > > > +        lea     r12d,[1518500249+r12*1+r14]
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     esi,30
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        mov     ebp,DWORD[52+r9]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[48+rsp],edx
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        bswap   ebp
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,r13d
> > > > >
> > > > > +        lea     r11d,[1518500249+r11*1+rdx]
> > > > >
> > > > > +        add     r11d,ecx
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     r13d,30
> > > > >
> > > > > +        add     r11d,eax
> > > > >
> > > > > +        mov     r14d,DWORD[56+r9]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[52+rsp],ebp
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        bswap   r14d
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,r12d
> > > > >
> > > > > +        lea     edi,[1518500249+rdi*1+rbp]
> > > > >
> > > > > +        add     edi,ecx
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     r12d,30
> > > > >
> > > > > +        add     edi,eax
> > > > >
> > > > > +        mov     edx,DWORD[60+r9]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[56+rsp],r14d
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        bswap   edx
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        and     eax,r11d
> > > > >
> > > > > +        lea     esi,[1518500249+rsi*1+r14]
> > > > >
> > > > > +        add     esi,ecx
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     r11d,30
> > > > >
> > > > > +        add     esi,eax
> > > > >
> > > > > +        xor     ebp,DWORD[rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[60+rsp],edx
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     ebp,DWORD[8+rsp]
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        xor     ebp,DWORD[32+rsp]
> > > > >
> > > > > +        and     eax,edi
> > > > >
> > > > > +        lea     r13d,[1518500249+r13*1+rdx]
> > > > >
> > > > > +        rol     edi,30
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        add     r13d,ecx
> > > > >
> > > > > +        rol     ebp,1
> > > > >
> > > > > +        add     r13d,eax
> > > > >
> > > > > +        xor     r14d,DWORD[4+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[rsp],ebp
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     r14d,DWORD[12+rsp]
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        xor     r14d,DWORD[36+rsp]
> > > > >
> > > > > +        and     eax,esi
> > > > >
> > > > > +        lea     r12d,[1518500249+r12*1+rbp]
> > > > >
> > > > > +        rol     esi,30
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        rol     r14d,1
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        xor     edx,DWORD[8+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[4+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     edx,DWORD[16+rsp]
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        xor     edx,DWORD[40+rsp]
> > > > >
> > > > > +        and     eax,r13d
> > > > >
> > > > > +        lea     r11d,[1518500249+r11*1+r14]
> > > > >
> > > > > +        rol     r13d,30
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        add     r11d,ecx
> > > > >
> > > > > +        rol     edx,1
> > > > >
> > > > > +        add     r11d,eax
> > > > >
> > > > > +        xor     ebp,DWORD[12+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[8+rsp],edx
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     ebp,DWORD[20+rsp]
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        xor     ebp,DWORD[44+rsp]
> > > > >
> > > > > +        and     eax,r12d
> > > > >
> > > > > +        lea     edi,[1518500249+rdi*1+rdx]
> > > > >
> > > > > +        rol     r12d,30
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        add     edi,ecx
> > > > >
> > > > > +        rol     ebp,1
> > > > >
> > > > > +        add     edi,eax
> > > > >
> > > > > +        xor     r14d,DWORD[16+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[12+rsp],ebp
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     r14d,DWORD[24+rsp]
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        xor     r14d,DWORD[48+rsp]
> > > > >
> > > > > +        and     eax,r11d
> > > > >
> > > > > +        lea     esi,[1518500249+rsi*1+rbp]
> > > > >
> > > > > +        rol     r11d,30
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        add     esi,ecx
> > > > >
> > > > > +        rol     r14d,1
> > > > >
> > > > > +        add     esi,eax
> > > > >
> > > > > +        xor     edx,DWORD[20+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[16+rsp],r14d
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     edx,DWORD[28+rsp]
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[24+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[20+rsp],edx
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     ebp,DWORD[32+rsp]
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[28+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[24+rsp],ebp
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     r14d,DWORD[36+rsp]
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[32+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[28+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     edx,DWORD[40+rsp]
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[36+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[32+rsp],edx
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     ebp,DWORD[44+rsp]
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[40+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[36+rsp],ebp
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     r14d,DWORD[48+rsp]
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[44+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[40+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     edx,DWORD[52+rsp]
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[48+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[44+rsp],edx
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     ebp,DWORD[56+rsp]
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[52+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[48+rsp],ebp
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     r14d,DWORD[60+rsp]
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[56+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[52+rsp],r14d
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     edx,DWORD[rsp]
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[60+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[56+rsp],edx
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     ebp,DWORD[4+rsp]
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[60+rsp],ebp
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     r14d,DWORD[8+rsp]
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[4+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[rsp],r14d
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     edx,DWORD[12+rsp]
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[8+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[4+rsp],edx
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     ebp,DWORD[16+rsp]
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[12+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[8+rsp],ebp
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     r14d,DWORD[20+rsp]
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[16+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[12+rsp],r14d
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     edx,DWORD[24+rsp]
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[20+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[16+rsp],edx
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     ebp,DWORD[28+rsp]
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[24+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[20+rsp],ebp
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     r14d,DWORD[32+rsp]
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[28+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[24+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     edx,DWORD[36+rsp]
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[32+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[28+rsp],edx
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     ebp,DWORD[40+rsp]
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[36+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[32+rsp],ebp
> > > > >
> > > > > +        mov     ebx,r12d
> > > > >
> > > > > +        xor     r14d,DWORD[44+rsp]
> > > > >
> > > > > +        and     eax,r11d
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     r14d,DWORD[4+rsp]
> > > > >
> > > > > +        lea     r13d,[((-1894007588))+r13*1+rbp]
> > > > >
> > > > > +        xor     ebx,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r13d,eax
> > > > >
> > > > > +        rol     r14d,1
> > > > >
> > > > > +        and     ebx,edi
> > > > >
> > > > > +        add     r13d,ecx
> > > > >
> > > > > +        rol     edi,30
> > > > >
> > > > > +        add     r13d,ebx
> > > > >
> > > > > +        xor     edx,DWORD[40+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[36+rsp],r14d
> > > > >
> > > > > +        mov     ebx,r11d
> > > > >
> > > > > +        xor     edx,DWORD[48+rsp]
> > > > >
> > > > > +        and     eax,edi
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     edx,DWORD[8+rsp]
> > > > >
> > > > > +        lea     r12d,[((-1894007588))+r12*1+r14]
> > > > >
> > > > > +        xor     ebx,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        rol     edx,1
> > > > >
> > > > > +        and     ebx,esi
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        rol     esi,30
> > > > >
> > > > > +        add     r12d,ebx
> > > > >
> > > > > +        xor     ebp,DWORD[44+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[40+rsp],edx
> > > > >
> > > > > +        mov     ebx,edi
> > > > >
> > > > > +        xor     ebp,DWORD[52+rsp]
> > > > >
> > > > > +        and     eax,esi
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     ebp,DWORD[12+rsp]
> > > > >
> > > > > +        lea     r11d,[((-1894007588))+r11*1+rdx]
> > > > >
> > > > > +        xor     ebx,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r11d,eax
> > > > >
> > > > > +        rol     ebp,1
> > > > >
> > > > > +        and     ebx,r13d
> > > > >
> > > > > +        add     r11d,ecx
> > > > >
> > > > > +        rol     r13d,30
> > > > >
> > > > > +        add     r11d,ebx
> > > > >
> > > > > +        xor     r14d,DWORD[48+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[44+rsp],ebp
> > > > >
> > > > > +        mov     ebx,esi
> > > > >
> > > > > +        xor     r14d,DWORD[56+rsp]
> > > > >
> > > > > +        and     eax,r13d
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     r14d,DWORD[16+rsp]
> > > > >
> > > > > +        lea     edi,[((-1894007588))+rdi*1+rbp]
> > > > >
> > > > > +        xor     ebx,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     edi,eax
> > > > >
> > > > > +        rol     r14d,1
> > > > >
> > > > > +        and     ebx,r12d
> > > > >
> > > > > +        add     edi,ecx
> > > > >
> > > > > +        rol     r12d,30
> > > > >
> > > > > +        add     edi,ebx
> > > > >
> > > > > +        xor     edx,DWORD[52+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[48+rsp],r14d
> > > > >
> > > > > +        mov     ebx,r13d
> > > > >
> > > > > +        xor     edx,DWORD[60+rsp]
> > > > >
> > > > > +        and     eax,r12d
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     edx,DWORD[20+rsp]
> > > > >
> > > > > +        lea     esi,[((-1894007588))+rsi*1+r14]
> > > > >
> > > > > +        xor     ebx,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     esi,eax
> > > > >
> > > > > +        rol     edx,1
> > > > >
> > > > > +        and     ebx,r11d
> > > > >
> > > > > +        add     esi,ecx
> > > > >
> > > > > +        rol     r11d,30
> > > > >
> > > > > +        add     esi,ebx
> > > > >
> > > > > +        xor     ebp,DWORD[56+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[52+rsp],edx
> > > > >
> > > > > +        mov     ebx,r12d
> > > > >
> > > > > +        xor     ebp,DWORD[rsp]
> > > > >
> > > > > +        and     eax,r11d
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     ebp,DWORD[24+rsp]
> > > > >
> > > > > +        lea     r13d,[((-1894007588))+r13*1+rdx]
> > > > >
> > > > > +        xor     ebx,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r13d,eax
> > > > >
> > > > > +        rol     ebp,1
> > > > >
> > > > > +        and     ebx,edi
> > > > >
> > > > > +        add     r13d,ecx
> > > > >
> > > > > +        rol     edi,30
> > > > >
> > > > > +        add     r13d,ebx
> > > > >
> > > > > +        xor     r14d,DWORD[60+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[56+rsp],ebp
> > > > >
> > > > > +        mov     ebx,r11d
> > > > >
> > > > > +        xor     r14d,DWORD[4+rsp]
> > > > >
> > > > > +        and     eax,edi
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     r14d,DWORD[28+rsp]
> > > > >
> > > > > +        lea     r12d,[((-1894007588))+r12*1+rbp]
> > > > >
> > > > > +        xor     ebx,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        rol     r14d,1
> > > > >
> > > > > +        and     ebx,esi
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        rol     esi,30
> > > > >
> > > > > +        add     r12d,ebx
> > > > >
> > > > > +        xor     edx,DWORD[rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[60+rsp],r14d
> > > > >
> > > > > +        mov     ebx,edi
> > > > >
> > > > > +        xor     edx,DWORD[8+rsp]
> > > > >
> > > > > +        and     eax,esi
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     edx,DWORD[32+rsp]
> > > > >
> > > > > +        lea     r11d,[((-1894007588))+r11*1+r14]
> > > > >
> > > > > +        xor     ebx,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r11d,eax
> > > > >
> > > > > +        rol     edx,1
> > > > >
> > > > > +        and     ebx,r13d
> > > > >
> > > > > +        add     r11d,ecx
> > > > >
> > > > > +        rol     r13d,30
> > > > >
> > > > > +        add     r11d,ebx
> > > > >
> > > > > +        xor     ebp,DWORD[4+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[rsp],edx
> > > > >
> > > > > +        mov     ebx,esi
> > > > >
> > > > > +        xor     ebp,DWORD[12+rsp]
> > > > >
> > > > > +        and     eax,r13d
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     ebp,DWORD[36+rsp]
> > > > >
> > > > > +        lea     edi,[((-1894007588))+rdi*1+rdx]
> > > > >
> > > > > +        xor     ebx,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     edi,eax
> > > > >
> > > > > +        rol     ebp,1
> > > > >
> > > > > +        and     ebx,r12d
> > > > >
> > > > > +        add     edi,ecx
> > > > >
> > > > > +        rol     r12d,30
> > > > >
> > > > > +        add     edi,ebx
> > > > >
> > > > > +        xor     r14d,DWORD[8+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[4+rsp],ebp
> > > > >
> > > > > +        mov     ebx,r13d
> > > > >
> > > > > +        xor     r14d,DWORD[16+rsp]
> > > > >
> > > > > +        and     eax,r12d
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     r14d,DWORD[40+rsp]
> > > > >
> > > > > +        lea     esi,[((-1894007588))+rsi*1+rbp]
> > > > >
> > > > > +        xor     ebx,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     esi,eax
> > > > >
> > > > > +        rol     r14d,1
> > > > >
> > > > > +        and     ebx,r11d
> > > > >
> > > > > +        add     esi,ecx
> > > > >
> > > > > +        rol     r11d,30
> > > > >
> > > > > +        add     esi,ebx
> > > > >
> > > > > +        xor     edx,DWORD[12+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[8+rsp],r14d
> > > > >
> > > > > +        mov     ebx,r12d
> > > > >
> > > > > +        xor     edx,DWORD[20+rsp]
> > > > >
> > > > > +        and     eax,r11d
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     edx,DWORD[44+rsp]
> > > > >
> > > > > +        lea     r13d,[((-1894007588))+r13*1+r14]
> > > > >
> > > > > +        xor     ebx,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r13d,eax
> > > > >
> > > > > +        rol     edx,1
> > > > >
> > > > > +        and     ebx,edi
> > > > >
> > > > > +        add     r13d,ecx
> > > > >
> > > > > +        rol     edi,30
> > > > >
> > > > > +        add     r13d,ebx
> > > > >
> > > > > +        xor     ebp,DWORD[16+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[12+rsp],edx
> > > > >
> > > > > +        mov     ebx,r11d
> > > > >
> > > > > +        xor     ebp,DWORD[24+rsp]
> > > > >
> > > > > +        and     eax,edi
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     ebp,DWORD[48+rsp]
> > > > >
> > > > > +        lea     r12d,[((-1894007588))+r12*1+rdx]
> > > > >
> > > > > +        xor     ebx,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        rol     ebp,1
> > > > >
> > > > > +        and     ebx,esi
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        rol     esi,30
> > > > >
> > > > > +        add     r12d,ebx
> > > > >
> > > > > +        xor     r14d,DWORD[20+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[16+rsp],ebp
> > > > >
> > > > > +        mov     ebx,edi
> > > > >
> > > > > +        xor     r14d,DWORD[28+rsp]
> > > > >
> > > > > +        and     eax,esi
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     r14d,DWORD[52+rsp]
> > > > >
> > > > > +        lea     r11d,[((-1894007588))+r11*1+rbp]
> > > > >
> > > > > +        xor     ebx,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r11d,eax
> > > > >
> > > > > +        rol     r14d,1
> > > > >
> > > > > +        and     ebx,r13d
> > > > >
> > > > > +        add     r11d,ecx
> > > > >
> > > > > +        rol     r13d,30
> > > > >
> > > > > +        add     r11d,ebx
> > > > >
> > > > > +        xor     edx,DWORD[24+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[20+rsp],r14d
> > > > >
> > > > > +        mov     ebx,esi
> > > > >
> > > > > +        xor     edx,DWORD[32+rsp]
> > > > >
> > > > > +        and     eax,r13d
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     edx,DWORD[56+rsp]
> > > > >
> > > > > +        lea     edi,[((-1894007588))+rdi*1+r14]
> > > > >
> > > > > +        xor     ebx,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     edi,eax
> > > > >
> > > > > +        rol     edx,1
> > > > >
> > > > > +        and     ebx,r12d
> > > > >
> > > > > +        add     edi,ecx
> > > > >
> > > > > +        rol     r12d,30
> > > > >
> > > > > +        add     edi,ebx
> > > > >
> > > > > +        xor     ebp,DWORD[28+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[24+rsp],edx
> > > > >
> > > > > +        mov     ebx,r13d
> > > > >
> > > > > +        xor     ebp,DWORD[36+rsp]
> > > > >
> > > > > +        and     eax,r12d
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     ebp,DWORD[60+rsp]
> > > > >
> > > > > +        lea     esi,[((-1894007588))+rsi*1+rdx]
> > > > >
> > > > > +        xor     ebx,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     esi,eax
> > > > >
> > > > > +        rol     ebp,1
> > > > >
> > > > > +        and     ebx,r11d
> > > > >
> > > > > +        add     esi,ecx
> > > > >
> > > > > +        rol     r11d,30
> > > > >
> > > > > +        add     esi,ebx
> > > > >
> > > > > +        xor     r14d,DWORD[32+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[28+rsp],ebp
> > > > >
> > > > > +        mov     ebx,r12d
> > > > >
> > > > > +        xor     r14d,DWORD[40+rsp]
> > > > >
> > > > > +        and     eax,r11d
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     r14d,DWORD[rsp]
> > > > >
> > > > > +        lea     r13d,[((-1894007588))+r13*1+rbp]
> > > > >
> > > > > +        xor     ebx,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r13d,eax
> > > > >
> > > > > +        rol     r14d,1
> > > > >
> > > > > +        and     ebx,edi
> > > > >
> > > > > +        add     r13d,ecx
> > > > >
> > > > > +        rol     edi,30
> > > > >
> > > > > +        add     r13d,ebx
> > > > >
> > > > > +        xor     edx,DWORD[36+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[32+rsp],r14d
> > > > >
> > > > > +        mov     ebx,r11d
> > > > >
> > > > > +        xor     edx,DWORD[44+rsp]
> > > > >
> > > > > +        and     eax,edi
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     edx,DWORD[4+rsp]
> > > > >
> > > > > +        lea     r12d,[((-1894007588))+r12*1+r14]
> > > > >
> > > > > +        xor     ebx,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        rol     edx,1
> > > > >
> > > > > +        and     ebx,esi
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        rol     esi,30
> > > > >
> > > > > +        add     r12d,ebx
> > > > >
> > > > > +        xor     ebp,DWORD[40+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[36+rsp],edx
> > > > >
> > > > > +        mov     ebx,edi
> > > > >
> > > > > +        xor     ebp,DWORD[48+rsp]
> > > > >
> > > > > +        and     eax,esi
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     ebp,DWORD[8+rsp]
> > > > >
> > > > > +        lea     r11d,[((-1894007588))+r11*1+rdx]
> > > > >
> > > > > +        xor     ebx,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     r11d,eax
> > > > >
> > > > > +        rol     ebp,1
> > > > >
> > > > > +        and     ebx,r13d
> > > > >
> > > > > +        add     r11d,ecx
> > > > >
> > > > > +        rol     r13d,30
> > > > >
> > > > > +        add     r11d,ebx
> > > > >
> > > > > +        xor     r14d,DWORD[44+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[40+rsp],ebp
> > > > >
> > > > > +        mov     ebx,esi
> > > > >
> > > > > +        xor     r14d,DWORD[52+rsp]
> > > > >
> > > > > +        and     eax,r13d
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     r14d,DWORD[12+rsp]
> > > > >
> > > > > +        lea     edi,[((-1894007588))+rdi*1+rbp]
> > > > >
> > > > > +        xor     ebx,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     edi,eax
> > > > >
> > > > > +        rol     r14d,1
> > > > >
> > > > > +        and     ebx,r12d
> > > > >
> > > > > +        add     edi,ecx
> > > > >
> > > > > +        rol     r12d,30
> > > > >
> > > > > +        add     edi,ebx
> > > > >
> > > > > +        xor     edx,DWORD[48+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[44+rsp],r14d
> > > > >
> > > > > +        mov     ebx,r13d
> > > > >
> > > > > +        xor     edx,DWORD[56+rsp]
> > > > >
> > > > > +        and     eax,r12d
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     edx,DWORD[16+rsp]
> > > > >
> > > > > +        lea     esi,[((-1894007588))+rsi*1+r14]
> > > > >
> > > > > +        xor     ebx,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     esi,eax
> > > > >
> > > > > +        rol     edx,1
> > > > >
> > > > > +        and     ebx,r11d
> > > > >
> > > > > +        add     esi,ecx
> > > > >
> > > > > +        rol     r11d,30
> > > > >
> > > > > +        add     esi,ebx
> > > > >
> > > > > +        xor     ebp,DWORD[52+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[48+rsp],edx
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     ebp,DWORD[60+rsp]
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[56+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[52+rsp],ebp
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     r14d,DWORD[rsp]
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[60+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[56+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     edx,DWORD[4+rsp]
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[60+rsp],edx
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     ebp,DWORD[8+rsp]
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[4+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[rsp],ebp
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     r14d,DWORD[12+rsp]
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[8+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[4+rsp],r14d
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     edx,DWORD[16+rsp]
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[12+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[8+rsp],edx
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     ebp,DWORD[20+rsp]
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[16+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +        mov     DWORD[12+rsp],ebp
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     r14d,DWORD[24+rsp]
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[20+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +        mov     DWORD[16+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     edx,DWORD[28+rsp]
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[24+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     DWORD[20+rsp],edx
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     ebp,DWORD[32+rsp]
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[28+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +        mov     DWORD[24+rsp],ebp
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     r14d,DWORD[36+rsp]
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[32+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +        mov     DWORD[28+rsp],r14d
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     edx,DWORD[40+rsp]
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[36+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     ebp,DWORD[44+rsp]
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[40+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     r14d,DWORD[48+rsp]
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[44+rsp]
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     edx,DWORD[52+rsp]
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[48+rsp]
> > > > >
> > > > > +        mov     eax,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,esi
> > > > >
> > > > > +        xor     ebp,DWORD[56+rsp]
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[52+rsp]
> > > > >
> > > > > +        mov     eax,esi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,r13d
> > > > >
> > > > > +        xor     r14d,DWORD[60+rsp]
> > > > >
> > > > > +        xor     eax,r11d
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[56+rsp]
> > > > >
> > > > > +        mov     eax,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,r12d
> > > > >
> > > > > +        xor     edx,DWORD[rsp]
> > > > >
> > > > > +        xor     eax,edi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        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[60+rsp]
> > > > >
> > > > > +        mov     eax,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,r11d
> > > > >
> > > > > +        xor     ebp,DWORD[4+rsp]
> > > > >
> > > > > +        xor     eax,esi
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        xor     ebp,DWORD[28+rsp]
> > > > >
> > > > > +        lea     edi,[((-899497514))+rdi*1+rdx]
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        add     edi,ecx
> > > > >
> > > > > +        rol     r12d,30
> > > > >
> > > > > +        add     edi,eax
> > > > >
> > > > > +        rol     ebp,1
> > > > >
> > > > > +        mov     eax,r11d
> > > > >
> > > > > +        mov     ecx,edi
> > > > >
> > > > > +        xor     eax,r13d
> > > > >
> > > > > +        lea     esi,[((-899497514))+rsi*1+rbp]
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        xor     eax,r12d
> > > > >
> > > > > +        add     esi,ecx
> > > > >
> > > > > +        rol     r11d,30
> > > > >
> > > > > +        add     esi,eax
> > > > >
> > > > > +        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,[64+r9]
> > > > >
> > > > > +        jnz     NEAR $L$loop
> > > > >
> > > > > +
> > > > >
> > > > > +        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:
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +sha1_block_data_order_shaext:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_sha1_block_data_order_shaext:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +_shaext_shortcut:
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-72))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[(-8-64)+rax],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[(-8-48)+rax],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[(-8-32)+rax],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[(-8-16)+rax],xmm9
> > > > >
> > > > > +$L$prologue_shaext:
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > > >
> > > > > +        movd    xmm1,DWORD[16+rdi]
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((K_XX_XX+160))]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[rsi]
> > > > >
> > > > > +        pshufd  xmm0,xmm0,27
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[16+rsi]
> > > > >
> > > > > +        pshufd  xmm1,xmm1,27
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[32+rsi]
> > > > >
> > > > > +DB      102,15,56,0,227
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[48+rsi]
> > > > >
> > > > > +DB      102,15,56,0,235
> > > > >
> > > > > +DB      102,15,56,0,243
> > > > >
> > > > > +        movdqa  xmm9,xmm1
> > > > >
> > > > > +DB      102,15,56,0,251
> > > > >
> > > > > +        jmp     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$oop_shaext:
> > > > >
> > > > > +        dec     rdx
> > > > >
> > > > > +        lea     r8,[64+rsi]
> > > > >
> > > > > +        paddd   xmm1,xmm4
> > > > >
> > > > > +        cmovne  rsi,r8
> > > > >
> > > > > +        movdqa  xmm8,xmm0
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,0
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +DB      15,56,202,231
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,0
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +        pxor    xmm5,xmm7
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +DB      15,56,201,247
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,0
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,252
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,0
> > > > >
> > > > > +DB      15,56,200,204
> > > > >
> > > > > +        pxor    xmm7,xmm5
> > > > >
> > > > > +DB      15,56,202,254
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,0
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +DB      15,56,202,231
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,1
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +        pxor    xmm5,xmm7
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +DB      15,56,201,247
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,1
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,252
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,1
> > > > >
> > > > > +DB      15,56,200,204
> > > > >
> > > > > +        pxor    xmm7,xmm5
> > > > >
> > > > > +DB      15,56,202,254
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,1
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +DB      15,56,202,231
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,1
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +        pxor    xmm5,xmm7
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +DB      15,56,201,247
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,2
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,252
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,2
> > > > >
> > > > > +DB      15,56,200,204
> > > > >
> > > > > +        pxor    xmm7,xmm5
> > > > >
> > > > > +DB      15,56,202,254
> > > > >
> > > > > +DB      15,56,201,229
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,2
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +DB      15,56,201,238
> > > > >
> > > > > +DB      15,56,202,231
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,2
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +        pxor    xmm5,xmm7
> > > > >
> > > > > +DB      15,56,202,236
> > > > >
> > > > > +DB      15,56,201,247
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,2
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +        pxor    xmm6,xmm4
> > > > >
> > > > > +DB      15,56,201,252
> > > > >
> > > > > +DB      15,56,202,245
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,3
> > > > >
> > > > > +DB      15,56,200,204
> > > > >
> > > > > +        pxor    xmm7,xmm5
> > > > >
> > > > > +DB      15,56,202,254
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[rsi]
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,3
> > > > >
> > > > > +DB      15,56,200,213
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[16+rsi]
> > > > >
> > > > > +DB      102,15,56,0,227
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,3
> > > > >
> > > > > +DB      15,56,200,206
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[32+rsi]
> > > > >
> > > > > +DB      102,15,56,0,235
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm0
> > > > >
> > > > > +DB      15,58,204,193,3
> > > > >
> > > > > +DB      15,56,200,215
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[48+rsi]
> > > > >
> > > > > +DB      102,15,56,0,243
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +DB      15,58,204,194,3
> > > > >
> > > > > +DB      65,15,56,200,201
> > > > >
> > > > > +DB      102,15,56,0,251
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm0,xmm8
> > > > >
> > > > > +        movdqa  xmm9,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        jnz     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm0,xmm0,27
> > > > >
> > > > > +        pshufd  xmm1,xmm1,27
> > > > >
> > > > > +        movdqu  XMMWORD[rdi],xmm0
> > > > >
> > > > > +        movd    DWORD[16+rdi],xmm1
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-8-64))+rax]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-8-48))+rax]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-8-32))+rax]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-8-16))+rax]
> > > > >
> > > > > +        mov     rsp,rax
> > > > >
> > > > > +$L$epilogue_shaext:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_sha1_block_data_order_shaext:
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +_ssse3_shortcut:
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r11,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-160))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[(-40-96)+r11],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[(-40-80)+r11],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[(-40-64)+r11],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[(-40-48)+r11],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-40-32)+r11],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(-40-16)+r11],xmm11
> > > > >
> > > > > +$L$prologue_ssse3:
> > > > >
> > > > > +        and     rsp,-64
> > > > >
> > > > > +        mov     r8,rdi
> > > > >
> > > > > +        mov     r9,rsi
> > > > >
> > > > > +        mov     r10,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        shl     r10,6
> > > > >
> > > > > +        add     r10,r9
> > > > >
> > > > > +        lea     r14,[((K_XX_XX+64))]
> > > > >
> > > > > +
> > > > >
> > > > > +        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[16+r8]
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        and     esi,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[64+r14]
> > > > >
> > > > > +        movdqa  xmm9,XMMWORD[((-64))+r14]
> > > > >
> > > > > +        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
> > > > >
> > > > > +        add     r9,64
> > > > >
> > > > > +        paddd   xmm0,xmm9
> > > > >
> > > > > +DB      102,15,56,0,222
> > > > >
> > > > > +        paddd   xmm1,xmm9
> > > > >
> > > > > +        paddd   xmm2,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm0
> > > > >
> > > > > +        psubd   xmm0,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm1
> > > > >
> > > > > +        psubd   xmm1,xmm9
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm2
> > > > >
> > > > > +        psubd   xmm2,xmm9
> > > > >
> > > > > +        jmp     NEAR $L$oop_ssse3
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$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[rsp]
> > > > >
> > > > > +        punpcklqdq      xmm4,xmm1
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        psrldq  xmm8,4
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        pxor    xmm8,xmm2
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        add     edx,DWORD[4+rsp]
> > > > >
> > > > > +        pxor    xmm4,xmm8
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        and     esi,eax
> > > > >
> > > > > +        movdqa  xmm10,xmm4
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        movdqa  xmm8,xmm4
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        pslldq  xmm10,12
> > > > >
> > > > > +        paddd   xmm4,xmm4
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        add     ecx,DWORD[8+rsp]
> > > > >
> > > > > +        psrld   xmm8,31
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        and     edi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        psrld   xmm10,30
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        por     xmm4,xmm8
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        add     ebx,DWORD[12+rsp]
> > > > >
> > > > > +        pslld   xmm9,2
> > > > >
> > > > > +        pxor    xmm4,xmm10
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        movdqa  xmm10,XMMWORD[((-64))+r14]
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        and     esi,edx
> > > > >
> > > > > +        pxor    xmm4,xmm9
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        pshufd  xmm5,xmm1,238
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        movdqa  xmm9,xmm4
> > > > >
> > > > > +        paddd   xmm10,xmm4
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        add     eax,DWORD[16+rsp]
> > > > >
> > > > > +        punpcklqdq      xmm5,xmm2
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        psrldq  xmm9,4
> > > > >
> > > > > +        and     edi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        pxor    xmm5,xmm1
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        pxor    xmm9,xmm3
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        add     ebp,DWORD[20+rsp]
> > > > >
> > > > > +        pxor    xmm5,xmm9
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm10
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        and     esi,ebx
> > > > >
> > > > > +        movdqa  xmm8,xmm5
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        movdqa  xmm9,xmm5
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        pslldq  xmm8,12
> > > > >
> > > > > +        paddd   xmm5,xmm5
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        add     edx,DWORD[24+rsp]
> > > > >
> > > > > +        psrld   xmm9,31
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        movdqa  xmm10,xmm8
> > > > >
> > > > > +        and     edi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        psrld   xmm8,30
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        por     xmm5,xmm9
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        add     ecx,DWORD[28+rsp]
> > > > >
> > > > > +        pslld   xmm10,2
> > > > >
> > > > > +        pxor    xmm5,xmm8
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        movdqa  xmm8,XMMWORD[((-32))+r14]
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        and     esi,ebp
> > > > >
> > > > > +        pxor    xmm5,xmm10
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        pshufd  xmm6,xmm2,238
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        movdqa  xmm10,xmm5
> > > > >
> > > > > +        paddd   xmm8,xmm5
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        add     ebx,DWORD[32+rsp]
> > > > >
> > > > > +        punpcklqdq      xmm6,xmm3
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        psrldq  xmm10,4
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        pxor    xmm6,xmm2
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        pxor    xmm10,xmm4
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        add     eax,DWORD[36+rsp]
> > > > >
> > > > > +        pxor    xmm6,xmm10
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm8
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        and     esi,ecx
> > > > >
> > > > > +        movdqa  xmm9,xmm6
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        movdqa  xmm10,xmm6
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        pslldq  xmm9,12
> > > > >
> > > > > +        paddd   xmm6,xmm6
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        add     ebp,DWORD[40+rsp]
> > > > >
> > > > > +        psrld   xmm10,31
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        movdqa  xmm8,xmm9
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        psrld   xmm9,30
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        por     xmm6,xmm10
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        add     edx,DWORD[44+rsp]
> > > > >
> > > > > +        pslld   xmm8,2
> > > > >
> > > > > +        pxor    xmm6,xmm9
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        movdqa  xmm9,XMMWORD[((-32))+r14]
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        and     esi,eax
> > > > >
> > > > > +        pxor    xmm6,xmm8
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        pshufd  xmm7,xmm3,238
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        movdqa  xmm8,xmm6
> > > > >
> > > > > +        paddd   xmm9,xmm6
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        add     ecx,DWORD[48+rsp]
> > > > >
> > > > > +        punpcklqdq      xmm7,xmm4
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        psrldq  xmm8,4
> > > > >
> > > > > +        and     edi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        pxor    xmm7,xmm3
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        pxor    xmm8,xmm5
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        add     ebx,DWORD[52+rsp]
> > > > >
> > > > > +        pxor    xmm7,xmm8
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm9
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        and     esi,edx
> > > > >
> > > > > +        movdqa  xmm10,xmm7
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        movdqa  xmm8,xmm7
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        pslldq  xmm10,12
> > > > >
> > > > > +        paddd   xmm7,xmm7
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        add     eax,DWORD[56+rsp]
> > > > >
> > > > > +        psrld   xmm8,31
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        movdqa  xmm9,xmm10
> > > > >
> > > > > +        and     edi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        psrld   xmm10,30
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        por     xmm7,xmm8
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        add     ebp,DWORD[60+rsp]
> > > > >
> > > > > +        pslld   xmm9,2
> > > > >
> > > > > +        pxor    xmm7,xmm10
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        movdqa  xmm10,XMMWORD[((-32))+r14]
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        and     esi,ebx
> > > > >
> > > > > +        pxor    xmm7,xmm9
> > > > >
> > > > > +        pshufd  xmm9,xmm6,238
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        add     edx,DWORD[rsp]
> > > > >
> > > > > +        punpcklqdq      xmm9,xmm7
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        and     edi,eax
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        paddd   xmm10,xmm7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        pxor    xmm0,xmm9
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        add     ecx,DWORD[4+rsp]
> > > > >
> > > > > +        movdqa  xmm9,xmm0
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm10
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        and     esi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        pslld   xmm0,2
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        psrld   xmm9,30
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        add     ebx,DWORD[8+rsp]
> > > > >
> > > > > +        por     xmm0,xmm9
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        pshufd  xmm10,xmm7,238
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[12+rsp]
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        pxor    xmm1,xmm5
> > > > >
> > > > > +        add     ebp,DWORD[16+rsp]
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        punpcklqdq      xmm10,xmm0
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        paddd   xmm8,xmm0
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        pxor    xmm1,xmm10
> > > > >
> > > > > +        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[rsp],xmm8
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[24+rsp]
> > > > >
> > > > > +        pslld   xmm1,2
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        psrld   xmm10,30
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        por     xmm1,xmm10
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[28+rsp]
> > > > >
> > > > > +        pshufd  xmm8,xmm0,238
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        pxor    xmm2,xmm6
> > > > >
> > > > > +        add     eax,DWORD[32+rsp]
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        punpcklqdq      xmm8,xmm1
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        movdqa  xmm10,XMMWORD[r14]
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        paddd   xmm9,xmm1
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        pxor    xmm2,xmm8
> > > > >
> > > > > +        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[16+rsp],xmm9
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[40+rsp]
> > > > >
> > > > > +        pslld   xmm2,2
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        psrld   xmm8,30
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        por     xmm2,xmm8
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[44+rsp]
> > > > >
> > > > > +        pshufd  xmm9,xmm1,238
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        pxor    xmm3,xmm7
> > > > >
> > > > > +        add     ebx,DWORD[48+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        punpcklqdq      xmm9,xmm2
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        pxor    xmm3,xmm4
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        paddd   xmm10,xmm2
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        pxor    xmm3,xmm9
> > > > >
> > > > > +        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[32+rsp],xmm10
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[56+rsp]
> > > > >
> > > > > +        pslld   xmm3,2
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        psrld   xmm9,30
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        por     xmm3,xmm9
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[60+rsp]
> > > > >
> > > > > +        pshufd  xmm10,xmm2,238
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        pxor    xmm4,xmm0
> > > > >
> > > > > +        add     ecx,DWORD[rsp]
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        punpcklqdq      xmm10,xmm3
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        paddd   xmm8,xmm3
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        pxor    xmm4,xmm10
> > > > >
> > > > > +        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[48+rsp],xmm8
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[8+rsp]
> > > > >
> > > > > +        pslld   xmm4,2
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        psrld   xmm10,30
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        por     xmm4,xmm10
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[12+rsp]
> > > > >
> > > > > +        pshufd  xmm8,xmm3,238
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        pxor    xmm5,xmm1
> > > > >
> > > > > +        add     edx,DWORD[16+rsp]
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        punpcklqdq      xmm8,xmm4
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        pxor    xmm5,xmm6
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        movdqa  xmm10,xmm9
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        paddd   xmm9,xmm4
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        pxor    xmm5,xmm8
> > > > >
> > > > > +        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[rsp],xmm9
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[24+rsp]
> > > > >
> > > > > +        pslld   xmm5,2
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        psrld   xmm8,30
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        por     xmm5,xmm8
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[28+rsp]
> > > > >
> > > > > +        pshufd  xmm9,xmm4,238
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        pxor    xmm6,xmm2
> > > > >
> > > > > +        add     ebp,DWORD[32+rsp]
> > > > >
> > > > > +        and     esi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        punpcklqdq      xmm9,xmm5
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        pxor    xmm6,xmm7
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        paddd   xmm10,xmm5
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        pxor    xmm6,xmm9
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        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[16+rsp],xmm10
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        pslld   xmm6,2
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        psrld   xmm9,30
> > > > >
> > > > > +        add     ecx,DWORD[40+rsp]
> > > > >
> > > > > +        and     esi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        por     xmm6,xmm9
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        pshufd  xmm10,xmm5,238
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[44+rsp]
> > > > >
> > > > > +        and     edi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        pxor    xmm7,xmm3
> > > > >
> > > > > +        add     eax,DWORD[48+rsp]
> > > > >
> > > > > +        and     esi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        punpcklqdq      xmm10,xmm6
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        pxor    xmm7,xmm0
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        movdqa  xmm9,XMMWORD[32+r14]
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        paddd   xmm8,xmm6
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        pxor    xmm7,xmm10
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        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[32+rsp],xmm8
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        pslld   xmm7,2
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        psrld   xmm10,30
> > > > >
> > > > > +        add     edx,DWORD[56+rsp]
> > > > >
> > > > > +        and     esi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        por     xmm7,xmm10
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        pshufd  xmm8,xmm6,238
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[60+rsp]
> > > > >
> > > > > +        and     edi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        add     ebx,DWORD[rsp]
> > > > >
> > > > > +        and     esi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        punpcklqdq      xmm8,xmm7
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        movdqa  xmm10,xmm9
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        paddd   xmm9,xmm7
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        pxor    xmm0,xmm8
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        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[48+rsp],xmm9
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        pslld   xmm0,2
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        psrld   xmm8,30
> > > > >
> > > > > +        add     ebp,DWORD[8+rsp]
> > > > >
> > > > > +        and     esi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        por     xmm0,xmm8
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        pshufd  xmm9,xmm7,238
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[12+rsp]
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        pxor    xmm1,xmm5
> > > > >
> > > > > +        add     ecx,DWORD[16+rsp]
> > > > >
> > > > > +        and     esi,eax
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        punpcklqdq      xmm9,xmm0
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        paddd   xmm10,xmm0
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        pxor    xmm1,xmm9
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        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[rsp],xmm10
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        pslld   xmm1,2
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        psrld   xmm9,30
> > > > >
> > > > > +        add     eax,DWORD[24+rsp]
> > > > >
> > > > > +        and     esi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        por     xmm1,xmm9
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        pshufd  xmm10,xmm0,238
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[28+rsp]
> > > > >
> > > > > +        and     edi,ecx
> > > > >
> > > > > +        xor     ecx,edx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        pxor    xmm2,xmm6
> > > > >
> > > > > +        add     edx,DWORD[32+rsp]
> > > > >
> > > > > +        and     esi,ebx
> > > > >
> > > > > +        xor     ebx,ecx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        punpcklqdq      xmm10,xmm1
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        pxor    xmm2,xmm3
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        movdqa  xmm9,xmm8
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        paddd   xmm8,xmm1
> > > > >
> > > > > +        xor     eax,ebx
> > > > >
> > > > > +        pxor    xmm2,xmm10
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        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[16+rsp],xmm8
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        pslld   xmm2,2
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        psrld   xmm10,30
> > > > >
> > > > > +        add     ebx,DWORD[40+rsp]
> > > > >
> > > > > +        and     esi,ebp
> > > > >
> > > > > +        xor     ebp,eax
> > > > >
> > > > > +        por     xmm2,xmm10
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        pshufd  xmm8,xmm1,238
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[44+rsp]
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +        xor     edx,ebp
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        pxor    xmm3,xmm7
> > > > >
> > > > > +        add     ebp,DWORD[48+rsp]
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        punpcklqdq      xmm8,xmm2
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        pxor    xmm3,xmm4
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        movdqa  xmm10,xmm9
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        paddd   xmm9,xmm2
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        pxor    xmm3,xmm8
> > > > >
> > > > > +        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[32+rsp],xmm9
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[56+rsp]
> > > > >
> > > > > +        pslld   xmm3,2
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        psrld   xmm8,30
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        por     xmm3,xmm8
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[60+rsp]
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[rsp]
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        paddd   xmm10,xmm3
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm10
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[4+rsp]
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[8+rsp]
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[12+rsp]
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        cmp     r9,r10
> > > > >
> > > > > +        je      NEAR $L$done_ssse3
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[64+r14]
> > > > >
> > > > > +        movdqa  xmm9,XMMWORD[((-64))+r14]
> > > > >
> > > > > +        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[16+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +DB      102,15,56,0,206
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        paddd   xmm0,xmm9
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[20+rsp]
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        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[24+rsp]
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[28+rsp]
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[32+rsp]
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +DB      102,15,56,0,214
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        paddd   xmm1,xmm9
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[36+rsp]
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        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[40+rsp]
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[44+rsp]
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[48+rsp]
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +DB      102,15,56,0,222
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        paddd   xmm2,xmm9
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[52+rsp]
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        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[56+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        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[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[8+r8],ecx
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        mov     DWORD[12+r8],edx
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     DWORD[16+r8],ebp
> > > > >
> > > > > +        and     esi,edi
> > > > >
> > > > > +        jmp     NEAR $L$oop_ssse3
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$done_ssse3:
> > > > >
> > > > > +        add     ebx,DWORD[16+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[20+rsp]
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        mov     esi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,edi
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[24+rsp]
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,esi
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[28+rsp]
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        mov     esi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[32+rsp]
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,esi
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[36+rsp]
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        mov     esi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        add     eax,DWORD[40+rsp]
> > > > >
> > > > > +        xor     esi,edx
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        rol     ebx,5
> > > > >
> > > > > +        add     eax,esi
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     ecx,7
> > > > >
> > > > > +        add     eax,ebx
> > > > >
> > > > > +        add     ebp,DWORD[44+rsp]
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     esi,eax
> > > > >
> > > > > +        rol     eax,5
> > > > >
> > > > > +        add     ebp,edi
> > > > >
> > > > > +        xor     esi,ecx
> > > > >
> > > > > +        ror     ebx,7
> > > > >
> > > > > +        add     ebp,eax
> > > > >
> > > > > +        add     edx,DWORD[48+rsp]
> > > > >
> > > > > +        xor     esi,ebx
> > > > >
> > > > > +        mov     edi,ebp
> > > > >
> > > > > +        rol     ebp,5
> > > > >
> > > > > +        add     edx,esi
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     eax,7
> > > > >
> > > > > +        add     edx,ebp
> > > > >
> > > > > +        add     ecx,DWORD[52+rsp]
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        mov     esi,edx
> > > > >
> > > > > +        rol     edx,5
> > > > >
> > > > > +        add     ecx,edi
> > > > >
> > > > > +        xor     esi,eax
> > > > >
> > > > > +        ror     ebp,7
> > > > >
> > > > > +        add     ecx,edx
> > > > >
> > > > > +        add     ebx,DWORD[56+rsp]
> > > > >
> > > > > +        xor     esi,ebp
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +        rol     ecx,5
> > > > >
> > > > > +        add     ebx,esi
> > > > >
> > > > > +        xor     edi,ebp
> > > > >
> > > > > +        ror     edx,7
> > > > >
> > > > > +        add     ebx,ecx
> > > > >
> > > > > +        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[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))+r11]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-40-80))+r11]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-40-64))+r11]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-40-48))+r11]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-40-32))+r11]
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-40-16))+r11]
> > > > >
> > > > > +        mov     r14,QWORD[((-40))+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r13,QWORD[((-32))+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,QWORD[((-24))+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbp,QWORD[((-16))+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbx,QWORD[((-8))+r11]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[r11]
> > > > >
> > > > > +
> > > > >
> > > > > +$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:
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +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
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$prologue]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$epilogue]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[64+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        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     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +shaext_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$prologue_shaext]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$epilogue_shaext]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((-8-64))+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,8
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +ssse3_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[208+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$common_seh_tail
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((-40-96))+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,12
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        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[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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +section .pdata rdata align=4
> > > > >
> > > > > +ALIGN   4
> > > > >
> > > > > +        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_shaext wrt
> > ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_sha1_block_data_order_shaext wrt
> > ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_sha1_block_data_order_shaext 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:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      se_handler wrt ..imagebase
> > > > >
> > > > > +$L$SEH_info_sha1_block_data_order_shaext:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      shaext_handler wrt ..imagebase
> > > > >
> > > > > +$L$SEH_info_sha1_block_data_order_ssse3:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      ssse3_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
> > > > > wrt ..imagebase
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
> > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
> > > > > x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..7cd5eae85c
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
> > > x86_64.nasm
> > > > > @@ -0,0 +1,3461 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/sha/asm/sha256-mb-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +
> > > > >
> > > > > +global  sha256_multi_block
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +sha256_multi_block:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_sha256_multi_block:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
> > > > >
> > > > > +        bt      rcx,61
> > > > >
> > > > > +        jc      NEAR _shaext_shortcut
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-168))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > > >
> > > > > +        sub     rsp,288
> > > > >
> > > > > +        and     rsp,-256
> > > > >
> > > > > +        mov     QWORD[272+rsp],rax
> > > > >
> > > > > +
> > > > >
> > > > > +$L$body:
> > > > >
> > > > > +        lea     rbp,[((K256+128))]
> > > > >
> > > > > +        lea     rbx,[256+rsp]
> > > > >
> > > > > +        lea     rdi,[128+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$oop_grande:
> > > > >
> > > > > +        mov     DWORD[280+rsp],edx
> > > > >
> > > > > +        xor     edx,edx
> > > > >
> > > > > +        mov     r8,QWORD[rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[8+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[rbx],ecx
> > > > >
> > > > > +        cmovle  r8,rbp
> > > > >
> > > > > +        mov     r9,QWORD[16+rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[24+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[4+rbx],ecx
> > > > >
> > > > > +        cmovle  r9,rbp
> > > > >
> > > > > +        mov     r10,QWORD[32+rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[40+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[8+rbx],ecx
> > > > >
> > > > > +        cmovle  r10,rbp
> > > > >
> > > > > +        mov     r11,QWORD[48+rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[56+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[12+rbx],ecx
> > > > >
> > > > > +        cmovle  r11,rbp
> > > > >
> > > > > +        test    edx,edx
> > > > >
> > > > > +        jz      NEAR $L$done
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[((0-128))+rdi]
> > > > >
> > > > > +        lea     rax,[128+rsp]
> > > > >
> > > > > +        movdqu  xmm9,XMMWORD[((32-128))+rdi]
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[((64-128))+rdi]
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[((96-128))+rdi]
> > > > >
> > > > > +        movdqu  xmm12,XMMWORD[((128-128))+rdi]
> > > > >
> > > > > +        movdqu  xmm13,XMMWORD[((160-128))+rdi]
> > > > >
> > > > > +        movdqu  xmm14,XMMWORD[((192-128))+rdi]
> > > > >
> > > > > +        movdqu  xmm15,XMMWORD[((224-128))+rdi]
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[$L$pbswap]
> > > > >
> > > > > +        jmp     NEAR $L$oop
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$oop:
> > > > >
> > > > > +        movdqa  xmm4,xmm10
> > > > >
> > > > > +        pxor    xmm4,xmm9
> > > > >
> > > > > +        movd    xmm5,DWORD[r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        movdqa  xmm2,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm12
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm12
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm14
> > > > >
> > > > > +        pand    xmm3,xmm13
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm8
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm8
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm9
> > > > >
> > > > > +        movdqa  xmm7,xmm8
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm15,xmm9
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm15,xmm4
> > > > >
> > > > > +        paddd   xmm11,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm15,xmm5
> > > > >
> > > > > +        paddd   xmm15,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[4+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[4+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[4+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[4+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm11
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-96))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm11
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm13
> > > > >
> > > > > +        pand    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm15
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm8
> > > > >
> > > > > +        movdqa  xmm7,xmm15
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm14,xmm8
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm14,xmm3
> > > > >
> > > > > +        paddd   xmm10,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm14,xmm5
> > > > >
> > > > > +        paddd   xmm14,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[8+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[8+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[8+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[8+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm10
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm12
> > > > >
> > > > > +        pand    xmm3,xmm11
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm14
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm15
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm13,xmm4
> > > > >
> > > > > +        paddd   xmm9,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm13,xmm5
> > > > >
> > > > > +        paddd   xmm13,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[12+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[12+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[12+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[12+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm9
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-32))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm9
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm11
> > > > >
> > > > > +        pand    xmm4,xmm10
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm13
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm13
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm12,xmm14
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm12,xmm3
> > > > >
> > > > > +        paddd   xmm8,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm12,xmm5
> > > > >
> > > > > +        paddd   xmm12,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[16+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[16+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[16+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[16+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm8
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        movdqa  xmm2,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm8
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm8
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm10
> > > > >
> > > > > +        pand    xmm3,xmm9
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm12
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm12
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm11,xmm13
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm11,xmm4
> > > > >
> > > > > +        paddd   xmm15,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm11,xmm5
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[20+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[20+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[20+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[20+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm15
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm15
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[32+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm15
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm9
> > > > >
> > > > > +        pand    xmm4,xmm8
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm10,xmm12
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm10,xmm3
> > > > >
> > > > > +        paddd   xmm14,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm10,xmm5
> > > > >
> > > > > +        paddd   xmm10,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[24+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[24+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[24+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[24+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        movdqa  xmm2,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm14
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm14
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm8
> > > > >
> > > > > +        pand    xmm3,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm10
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm9,xmm4
> > > > >
> > > > > +        paddd   xmm13,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm9,xmm5
> > > > >
> > > > > +        paddd   xmm9,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[28+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[28+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[28+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[28+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm13
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm13
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[96+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm13
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm15
> > > > >
> > > > > +        pand    xmm4,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm9
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm9
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        paddd   xmm12,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm8,xmm5
> > > > >
> > > > > +        paddd   xmm8,xmm7
> > > > >
> > > > > +        lea     rbp,[256+rbp]
> > > > >
> > > > > +        movd    xmm5,DWORD[32+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[32+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[32+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[32+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        movdqa  xmm2,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm12
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm12
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm14
> > > > >
> > > > > +        pand    xmm3,xmm13
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm8
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm8
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm9
> > > > >
> > > > > +        movdqa  xmm7,xmm8
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm15,xmm9
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm15,xmm4
> > > > >
> > > > > +        paddd   xmm11,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm15,xmm5
> > > > >
> > > > > +        paddd   xmm15,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[36+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[36+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[36+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[36+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm11
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-96))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm11
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm13
> > > > >
> > > > > +        pand    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm15
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm8
> > > > >
> > > > > +        movdqa  xmm7,xmm15
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm14,xmm8
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm14,xmm3
> > > > >
> > > > > +        paddd   xmm10,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm14,xmm5
> > > > >
> > > > > +        paddd   xmm14,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[40+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[40+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[40+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[40+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm10
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm12
> > > > >
> > > > > +        pand    xmm3,xmm11
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm14
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm15
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm13,xmm4
> > > > >
> > > > > +        paddd   xmm9,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm13,xmm5
> > > > >
> > > > > +        paddd   xmm13,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[44+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[44+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[44+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[44+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm9
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-32))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm9
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm11
> > > > >
> > > > > +        pand    xmm4,xmm10
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm13
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm13
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm12,xmm14
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm12,xmm3
> > > > >
> > > > > +        paddd   xmm8,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm12,xmm5
> > > > >
> > > > > +        paddd   xmm12,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[48+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[48+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[48+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[48+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm8
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        movdqa  xmm2,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm8
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm8
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm10
> > > > >
> > > > > +        pand    xmm3,xmm9
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm12
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm12
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm11,xmm13
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm11,xmm4
> > > > >
> > > > > +        paddd   xmm15,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm11,xmm5
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[52+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[52+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[52+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[52+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm15
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm15
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[32+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm15
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm9
> > > > >
> > > > > +        pand    xmm4,xmm8
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm10,xmm12
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm10,xmm3
> > > > >
> > > > > +        paddd   xmm14,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm10,xmm5
> > > > >
> > > > > +        paddd   xmm10,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[56+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[56+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[56+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[56+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        movdqa  xmm2,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm14
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm14
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm8
> > > > >
> > > > > +        pand    xmm3,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm10
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm9,xmm4
> > > > >
> > > > > +        paddd   xmm13,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm9,xmm5
> > > > >
> > > > > +        paddd   xmm9,xmm7
> > > > >
> > > > > +        movd    xmm5,DWORD[60+r8]
> > > > >
> > > > > +        lea     r8,[64+r8]
> > > > >
> > > > > +        movd    xmm0,DWORD[60+r9]
> > > > >
> > > > > +        lea     r9,[64+r9]
> > > > >
> > > > > +        movd    xmm1,DWORD[60+r10]
> > > > >
> > > > > +        lea     r10,[64+r10]
> > > > >
> > > > > +        movd    xmm2,DWORD[60+r11]
> > > > >
> > > > > +        lea     r11,[64+r11]
> > > > >
> > > > > +        punpckldq       xmm5,xmm1
> > > > >
> > > > > +        punpckldq       xmm0,xmm2
> > > > >
> > > > > +        punpckldq       xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm13
> > > > >
> > > > > +DB      102,15,56,0,238
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm13
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[96+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm13
> > > > >
> > > > > +        prefetcht0      [63+r8]
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm13
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm15
> > > > >
> > > > > +        pand    xmm4,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        prefetcht0      [63+r9]
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm9
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm9
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        prefetcht0      [63+r10]
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        prefetcht0      [63+r11]
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        paddd   xmm12,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm8,xmm5
> > > > >
> > > > > +        paddd   xmm8,xmm7
> > > > >
> > > > > +        lea     rbp,[256+rbp]
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +        mov     ecx,3
> > > > >
> > > > > +        jmp     NEAR $L$oop_16_xx
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$oop_16_xx:
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        movdqa  xmm1,xmm6
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm3,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psrld   xmm3,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm12
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm12
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm14
> > > > >
> > > > > +        pand    xmm3,xmm13
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm8
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm8
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm9
> > > > >
> > > > > +        movdqa  xmm7,xmm8
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm15,xmm9
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm15,xmm4
> > > > >
> > > > > +        paddd   xmm11,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm15,xmm5
> > > > >
> > > > > +        paddd   xmm15,xmm7
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +        movdqa  xmm1,xmm5
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm4,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrld   xmm4,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm11
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm6
> > > > >
> > > > > +        paddd   xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((-96))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm11
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm13
> > > > >
> > > > > +        pand    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm15
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm8
> > > > >
> > > > > +        movdqa  xmm7,xmm15
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm14,xmm8
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm14,xmm3
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm14,xmm7
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        movdqa  xmm1,xmm6
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm3,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psrld   xmm3,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm10
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm12
> > > > >
> > > > > +        pand    xmm3,xmm11
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm14
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm15
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm13,xmm4
> > > > >
> > > > > +        paddd   xmm9,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm13,xmm5
> > > > >
> > > > > +        paddd   xmm13,xmm7
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +        movdqa  xmm1,xmm5
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm4,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrld   xmm4,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm6
> > > > >
> > > > > +        paddd   xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((-32))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm9
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm11
> > > > >
> > > > > +        pand    xmm4,xmm10
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm13
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm13
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm12,xmm14
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm12,xmm3
> > > > >
> > > > > +        paddd   xmm8,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm12,xmm7
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        movdqa  xmm1,xmm6
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm3,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psrld   xmm3,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm8
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm8
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm10
> > > > >
> > > > > +        pand    xmm3,xmm9
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm12
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm12
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm11,xmm13
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm11,xmm4
> > > > >
> > > > > +        paddd   xmm15,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm11,xmm5
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +        movdqa  xmm1,xmm5
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm4,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrld   xmm4,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm15
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm6
> > > > >
> > > > > +        paddd   xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[32+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm15
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm9
> > > > >
> > > > > +        pand    xmm4,xmm8
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm10,xmm12
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm10,xmm3
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        paddd   xmm10,xmm7
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        movdqa  xmm1,xmm6
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm3,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psrld   xmm3,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm14
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm14
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm8
> > > > >
> > > > > +        pand    xmm3,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm10
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm9,xmm4
> > > > >
> > > > > +        paddd   xmm13,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm9,xmm5
> > > > >
> > > > > +        paddd   xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +        movdqa  xmm1,xmm5
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm4,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrld   xmm4,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm13
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm6
> > > > >
> > > > > +        paddd   xmm6,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[96+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm13
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm15
> > > > >
> > > > > +        pand    xmm4,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm9
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm9
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm8,xmm6
> > > > >
> > > > > +        paddd   xmm8,xmm7
> > > > >
> > > > > +        lea     rbp,[256+rbp]
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((16-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        movdqa  xmm1,xmm6
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm3,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psrld   xmm3,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm12
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm12
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm14
> > > > >
> > > > > +        pand    xmm3,xmm13
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm8
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm8
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm9
> > > > >
> > > > > +        movdqa  xmm7,xmm8
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm15,xmm9
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm15,xmm4
> > > > >
> > > > > +        paddd   xmm11,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm15,xmm5
> > > > >
> > > > > +        paddd   xmm15,xmm7
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((32-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +        movdqa  xmm1,xmm5
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm4,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrld   xmm4,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm11
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm6
> > > > >
> > > > > +        paddd   xmm6,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((-96))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm11
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm13
> > > > >
> > > > > +        pand    xmm4,xmm12
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm15
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm8
> > > > >
> > > > > +        movdqa  xmm7,xmm15
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm14,xmm8
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm14,xmm3
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm14,xmm7
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((48-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        movdqa  xmm1,xmm6
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm3,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psrld   xmm3,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm10
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm12
> > > > >
> > > > > +        pand    xmm3,xmm11
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm14
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm15
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm13,xmm15
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm13,xmm4
> > > > >
> > > > > +        paddd   xmm9,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm13,xmm5
> > > > >
> > > > > +        paddd   xmm13,xmm7
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((64-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +        movdqa  xmm1,xmm5
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((144-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm4,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrld   xmm4,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm6
> > > > >
> > > > > +        paddd   xmm6,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((-32))+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm9
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm11
> > > > >
> > > > > +        pand    xmm4,xmm10
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm13
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm13
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm14
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm12,xmm14
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm12,xmm3
> > > > >
> > > > > +        paddd   xmm8,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm12,xmm7
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((80-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        movdqa  xmm1,xmm6
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((160-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm3,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psrld   xmm3,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm8
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm8
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm10
> > > > >
> > > > > +        pand    xmm3,xmm9
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm12
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm12
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm13
> > > > >
> > > > > +        movdqa  xmm7,xmm12
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm12
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm11,xmm13
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm11,xmm4
> > > > >
> > > > > +        paddd   xmm15,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm11,xmm5
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[((224-128))+rax]
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((96-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +        movdqa  xmm1,xmm5
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((176-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm4,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrld   xmm4,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm15
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm6
> > > > >
> > > > > +        paddd   xmm6,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[32+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm15
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm9
> > > > >
> > > > > +        pand    xmm4,xmm8
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm11
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm12
> > > > >
> > > > > +        movdqa  xmm7,xmm11
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm11
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm10,xmm12
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm10,xmm3
> > > > >
> > > > > +        paddd   xmm14,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm10,xmm6
> > > > >
> > > > > +        paddd   xmm10,xmm7
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[((240-128))+rax]
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[((112-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +        movdqa  xmm1,xmm6
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((192-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm3,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm3
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm3,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        psrld   xmm3,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm14
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm5
> > > > >
> > > > > +        paddd   xmm5,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm14
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm14
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm8
> > > > >
> > > > > +        pand    xmm3,xmm15
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm10
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm10
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm11
> > > > >
> > > > > +        movdqa  xmm7,xmm10
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm3,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm5,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm4,xmm3
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm9,xmm11
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm9,xmm4
> > > > >
> > > > > +        paddd   xmm13,xmm5
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm9,xmm5
> > > > >
> > > > > +        paddd   xmm9,xmm7
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[((0-128))+rax]
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[((128-128))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +        movdqa  xmm1,xmm5
> > > > >
> > > > > +        psrld   xmm7,3
> > > > >
> > > > > +        movdqa  xmm2,xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,7
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((208-128))+rax]
> > > > >
> > > > > +        pslld   xmm2,14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm1,18-7
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,25-14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        psrld   xmm0,10
> > > > >
> > > > > +        movdqa  xmm1,xmm4
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm4,17
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm1,13
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        psrld   xmm4,19-17
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        pslld   xmm1,15-13
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm0,xmm1
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        movdqa  xmm7,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm2,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,6
> > > > >
> > > > > +        movdqa  xmm1,xmm13
> > > > >
> > > > > +        pslld   xmm2,7
> > > > >
> > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm6
> > > > >
> > > > > +        paddd   xmm6,xmm8
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,11
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        pslld   xmm2,21-7
> > > > >
> > > > > +        paddd   xmm6,XMMWORD[96+rbp]
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm1,25-11
> > > > >
> > > > > +        movdqa  xmm0,xmm13
> > > > >
> > > > > +
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm4,xmm13
> > > > >
> > > > > +        pslld   xmm2,26-21
> > > > >
> > > > > +        pandn   xmm0,xmm15
> > > > >
> > > > > +        pand    xmm4,xmm14
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm1,xmm9
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +        movdqa  xmm2,xmm9
> > > > >
> > > > > +        psrld   xmm1,2
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +        pxor    xmm0,xmm4
> > > > >
> > > > > +        movdqa  xmm4,xmm10
> > > > >
> > > > > +        movdqa  xmm7,xmm9
> > > > >
> > > > > +        pslld   xmm2,10
> > > > >
> > > > > +        pxor    xmm4,xmm9
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        pslld   xmm2,19-10
> > > > >
> > > > > +        pand    xmm3,xmm4
> > > > >
> > > > > +        pxor    xmm1,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        psrld   xmm7,22-13
> > > > >
> > > > > +        pxor    xmm1,xmm2
> > > > >
> > > > > +        movdqa  xmm8,xmm10
> > > > >
> > > > > +        pslld   xmm2,30-19
> > > > >
> > > > > +        pxor    xmm7,xmm1
> > > > >
> > > > > +        pxor    xmm8,xmm3
> > > > >
> > > > > +        paddd   xmm12,xmm6
> > > > >
> > > > > +        pxor    xmm7,xmm2
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm8,xmm6
> > > > >
> > > > > +        paddd   xmm8,xmm7
> > > > >
> > > > > +        lea     rbp,[256+rbp]
> > > > >
> > > > > +        dec     ecx
> > > > >
> > > > > +        jnz     NEAR $L$oop_16_xx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     ecx,1
> > > > >
> > > > > +        lea     rbp,[((K256+128))]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm7,XMMWORD[rbx]
> > > > >
> > > > > +        cmp     ecx,DWORD[rbx]
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        cmovge  r8,rbp
> > > > >
> > > > > +        cmp     ecx,DWORD[4+rbx]
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        cmovge  r9,rbp
> > > > >
> > > > > +        cmp     ecx,DWORD[8+rbx]
> > > > >
> > > > > +        pcmpgtd xmm6,xmm0
> > > > >
> > > > > +        cmovge  r10,rbp
> > > > >
> > > > > +        cmp     ecx,DWORD[12+rbx]
> > > > >
> > > > > +        paddd   xmm7,xmm6
> > > > >
> > > > > +        cmovge  r11,rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[((0-128))+rdi]
> > > > >
> > > > > +        pand    xmm8,xmm6
> > > > >
> > > > > +        movdqu  xmm1,XMMWORD[((32-128))+rdi]
> > > > >
> > > > > +        pand    xmm9,xmm6
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[((64-128))+rdi]
> > > > >
> > > > > +        pand    xmm10,xmm6
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[((96-128))+rdi]
> > > > >
> > > > > +        pand    xmm11,xmm6
> > > > >
> > > > > +        paddd   xmm8,xmm0
> > > > >
> > > > > +        movdqu  xmm0,XMMWORD[((128-128))+rdi]
> > > > >
> > > > > +        pand    xmm12,xmm6
> > > > >
> > > > > +        paddd   xmm9,xmm1
> > > > >
> > > > > +        movdqu  xmm1,XMMWORD[((160-128))+rdi]
> > > > >
> > > > > +        pand    xmm13,xmm6
> > > > >
> > > > > +        paddd   xmm10,xmm2
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[((192-128))+rdi]
> > > > >
> > > > > +        pand    xmm14,xmm6
> > > > >
> > > > > +        paddd   xmm11,xmm5
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[((224-128))+rdi]
> > > > >
> > > > > +        pand    xmm15,xmm6
> > > > >
> > > > > +        paddd   xmm12,xmm0
> > > > >
> > > > > +        paddd   xmm13,xmm1
> > > > >
> > > > > +        movdqu  XMMWORD[(0-128)+rdi],xmm8
> > > > >
> > > > > +        paddd   xmm14,xmm2
> > > > >
> > > > > +        movdqu  XMMWORD[(32-128)+rdi],xmm9
> > > > >
> > > > > +        paddd   xmm15,xmm5
> > > > >
> > > > > +        movdqu  XMMWORD[(64-128)+rdi],xmm10
> > > > >
> > > > > +        movdqu  XMMWORD[(96-128)+rdi],xmm11
> > > > >
> > > > > +        movdqu  XMMWORD[(128-128)+rdi],xmm12
> > > > >
> > > > > +        movdqu  XMMWORD[(160-128)+rdi],xmm13
> > > > >
> > > > > +        movdqu  XMMWORD[(192-128)+rdi],xmm14
> > > > >
> > > > > +        movdqu  XMMWORD[(224-128)+rdi],xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  XMMWORD[rbx],xmm7
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[$L$pbswap]
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edx,DWORD[280+rsp]
> > > > >
> > > > > +        lea     rdi,[16+rdi]
> > > > >
> > > > > +        lea     rsi,[64+rsi]
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop_grande
> > > > >
> > > > > +
> > > > >
> > > > > +$L$done:
> > > > >
> > > > > +        mov     rax,QWORD[272+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > > >
> > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[rax]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$epilogue:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_sha256_multi_block:
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +sha256_multi_block_shaext:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_sha256_multi_block_shaext:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +_shaext_shortcut:
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-168))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > > >
> > > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > > >
> > > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > > >
> > > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > > >
> > > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > > >
> > > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > > >
> > > > > +        sub     rsp,288
> > > > >
> > > > > +        shl     edx,1
> > > > >
> > > > > +        and     rsp,-256
> > > > >
> > > > > +        lea     rdi,[128+rdi]
> > > > >
> > > > > +        mov     QWORD[272+rsp],rax
> > > > >
> > > > > +$L$body_shaext:
> > > > >
> > > > > +        lea     rbx,[256+rsp]
> > > > >
> > > > > +        lea     rbp,[((K256_shaext+128))]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$oop_grande_shaext:
> > > > >
> > > > > +        mov     DWORD[280+rsp],edx
> > > > >
> > > > > +        xor     edx,edx
> > > > >
> > > > > +        mov     r8,QWORD[rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[8+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[rbx],ecx
> > > > >
> > > > > +        cmovle  r8,rsp
> > > > >
> > > > > +        mov     r9,QWORD[16+rsi]
> > > > >
> > > > > +        mov     ecx,DWORD[24+rsi]
> > > > >
> > > > > +        cmp     ecx,edx
> > > > >
> > > > > +        cmovg   edx,ecx
> > > > >
> > > > > +        test    ecx,ecx
> > > > >
> > > > > +        mov     DWORD[4+rbx],ecx
> > > > >
> > > > > +        cmovle  r9,rsp
> > > > >
> > > > > +        test    edx,edx
> > > > >
> > > > > +        jz      NEAR $L$done_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +        movq    xmm12,QWORD[((0-128))+rdi]
> > > > >
> > > > > +        movq    xmm4,QWORD[((32-128))+rdi]
> > > > >
> > > > > +        movq    xmm13,QWORD[((64-128))+rdi]
> > > > >
> > > > > +        movq    xmm5,QWORD[((96-128))+rdi]
> > > > >
> > > > > +        movq    xmm8,QWORD[((128-128))+rdi]
> > > > >
> > > > > +        movq    xmm9,QWORD[((160-128))+rdi]
> > > > >
> > > > > +        movq    xmm10,QWORD[((192-128))+rdi]
> > > > >
> > > > > +        movq    xmm11,QWORD[((224-128))+rdi]
> > > > >
> > > > > +
> > > > >
> > > > > +        punpckldq       xmm12,xmm4
> > > > >
> > > > > +        punpckldq       xmm13,xmm5
> > > > >
> > > > > +        punpckldq       xmm8,xmm9
> > > > >
> > > > > +        punpckldq       xmm10,xmm11
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm14,xmm12
> > > > >
> > > > > +        movdqa  xmm15,xmm13
> > > > >
> > > > > +        punpcklqdq      xmm12,xmm8
> > > > >
> > > > > +        punpcklqdq      xmm13,xmm10
> > > > >
> > > > > +        punpckhqdq      xmm14,xmm8
> > > > >
> > > > > +        punpckhqdq      xmm15,xmm10
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm12,xmm12,27
> > > > >
> > > > > +        pshufd  xmm13,xmm13,27
> > > > >
> > > > > +        pshufd  xmm14,xmm14,27
> > > > >
> > > > > +        pshufd  xmm15,xmm15,27
> > > > >
> > > > > +        jmp     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   32
> > > > >
> > > > > +$L$oop_shaext:
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[r8]
> > > > >
> > > > > +        movdqu  xmm8,XMMWORD[r9]
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[16+r8]
> > > > >
> > > > > +        movdqu  xmm9,XMMWORD[16+r9]
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[32+r8]
> > > > >
> > > > > +DB      102,15,56,0,227
> > > > >
> > > > > +        movdqu  xmm10,XMMWORD[32+r9]
> > > > >
> > > > > +DB      102,68,15,56,0,195
> > > > >
> > > > > +        movdqu  xmm7,XMMWORD[48+r8]
> > > > >
> > > > > +        lea     r8,[64+r8]
> > > > >
> > > > > +        movdqu  xmm11,XMMWORD[48+r9]
> > > > >
> > > > > +        lea     r9,[64+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((0-128))+rbp]
> > > > >
> > > > > +DB      102,15,56,0,235
> > > > >
> > > > > +        paddd   xmm0,xmm4
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqa  xmm1,xmm0
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((0-128))+rbp]
> > > > >
> > > > > +DB      102,68,15,56,0,203
> > > > >
> > > > > +        paddd   xmm2,xmm8
> > > > >
> > > > > +        movdqa  XMMWORD[80+rsp],xmm13
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        pxor    xmm8,xmm14
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  XMMWORD[112+rsp],xmm15
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        pxor    xmm4,xmm12
> > > > >
> > > > > +        movdqa  XMMWORD[64+rsp],xmm12
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        pxor    xmm8,xmm14
> > > > >
> > > > > +        movdqa  XMMWORD[96+rsp],xmm14
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((16-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm5
> > > > >
> > > > > +DB      102,15,56,0,243
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((16-128))+rbp]
> > > > >
> > > > > +        paddd   xmm2,xmm9
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        prefetcht0      [127+r8]
> > > > >
> > > > > +DB      102,15,56,0,251
> > > > >
> > > > > +DB      102,68,15,56,0,211
> > > > >
> > > > > +        prefetcht0      [127+r9]
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +DB      102,68,15,56,0,219
> > > > >
> > > > > +DB      15,56,204,229
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((32-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm6
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((32-128))+rbp]
> > > > >
> > > > > +        paddd   xmm2,xmm10
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +DB      69,15,56,204,193
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm7
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +DB      102,15,58,15,222,4
> > > > >
> > > > > +        paddd   xmm4,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm11
> > > > >
> > > > > +DB      102,65,15,58,15,218,4
> > > > >
> > > > > +DB      15,56,204,238
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((48-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm7
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,202
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((48-128))+rbp]
> > > > >
> > > > > +        paddd   xmm8,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm11
> > > > >
> > > > > +DB      15,56,205,231
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm4
> > > > >
> > > > > +DB      102,15,58,15,223,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,195
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm5,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm8
> > > > >
> > > > > +DB      102,65,15,58,15,219,4
> > > > >
> > > > > +DB      15,56,204,247
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((64-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm4
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,211
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((64-128))+rbp]
> > > > >
> > > > > +        paddd   xmm9,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm8
> > > > >
> > > > > +DB      15,56,205,236
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm5
> > > > >
> > > > > +DB      102,15,58,15,220,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,200
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm6,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm9
> > > > >
> > > > > +DB      102,65,15,58,15,216,4
> > > > >
> > > > > +DB      15,56,204,252
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((80-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm5
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,216
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((80-128))+rbp]
> > > > >
> > > > > +        paddd   xmm10,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm9
> > > > >
> > > > > +DB      15,56,205,245
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm6
> > > > >
> > > > > +DB      102,15,58,15,221,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,209
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm7,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +DB      102,65,15,58,15,217,4
> > > > >
> > > > > +DB      15,56,204,229
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((96-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm6
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,193
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((96-128))+rbp]
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm10
> > > > >
> > > > > +DB      15,56,205,254
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm7
> > > > >
> > > > > +DB      102,15,58,15,222,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,218
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm4,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm11
> > > > >
> > > > > +DB      102,65,15,58,15,218,4
> > > > >
> > > > > +DB      15,56,204,238
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((112-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm7
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,202
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((112-128))+rbp]
> > > > >
> > > > > +        paddd   xmm8,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm11
> > > > >
> > > > > +DB      15,56,205,231
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm4
> > > > >
> > > > > +DB      102,15,58,15,223,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,195
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm5,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm8
> > > > >
> > > > > +DB      102,65,15,58,15,219,4
> > > > >
> > > > > +DB      15,56,204,247
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((128-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm4
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,211
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((128-128))+rbp]
> > > > >
> > > > > +        paddd   xmm9,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm8
> > > > >
> > > > > +DB      15,56,205,236
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm5
> > > > >
> > > > > +DB      102,15,58,15,220,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,200
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm6,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm9
> > > > >
> > > > > +DB      102,65,15,58,15,216,4
> > > > >
> > > > > +DB      15,56,204,252
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((144-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm5
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,216
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((144-128))+rbp]
> > > > >
> > > > > +        paddd   xmm10,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm9
> > > > >
> > > > > +DB      15,56,205,245
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm6
> > > > >
> > > > > +DB      102,15,58,15,221,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,209
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm7,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +DB      102,65,15,58,15,217,4
> > > > >
> > > > > +DB      15,56,204,229
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((160-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm6
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,193
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((160-128))+rbp]
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm10
> > > > >
> > > > > +DB      15,56,205,254
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm7
> > > > >
> > > > > +DB      102,15,58,15,222,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,218
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm4,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm11
> > > > >
> > > > > +DB      102,65,15,58,15,218,4
> > > > >
> > > > > +DB      15,56,204,238
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((176-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm7
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,202
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((176-128))+rbp]
> > > > >
> > > > > +        paddd   xmm8,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm11
> > > > >
> > > > > +DB      15,56,205,231
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm4
> > > > >
> > > > > +DB      102,15,58,15,223,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,195
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm5,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm8
> > > > >
> > > > > +DB      102,65,15,58,15,219,4
> > > > >
> > > > > +DB      15,56,204,247
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((192-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm4
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,211
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((192-128))+rbp]
> > > > >
> > > > > +        paddd   xmm9,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm8
> > > > >
> > > > > +DB      15,56,205,236
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm5
> > > > >
> > > > > +DB      102,15,58,15,220,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,200
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm6,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm9
> > > > >
> > > > > +DB      102,65,15,58,15,216,4
> > > > >
> > > > > +DB      15,56,204,252
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((208-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm5
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +DB      69,15,56,204,216
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((208-128))+rbp]
> > > > >
> > > > > +        paddd   xmm10,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm9
> > > > >
> > > > > +DB      15,56,205,245
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        movdqa  xmm3,xmm6
> > > > >
> > > > > +DB      102,15,58,15,221,4
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,209
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        paddd   xmm7,xmm3
> > > > >
> > > > > +        movdqa  xmm3,xmm10
> > > > >
> > > > > +DB      102,65,15,58,15,217,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((224-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm6
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((224-128))+rbp]
> > > > >
> > > > > +        paddd   xmm11,xmm3
> > > > >
> > > > > +        paddd   xmm2,xmm10
> > > > >
> > > > > +DB      15,56,205,254
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        mov     ecx,1
> > > > >
> > > > > +        pxor    xmm6,xmm6
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +DB      69,15,56,205,218
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        movdqa  xmm1,XMMWORD[((240-128))+rbp]
> > > > >
> > > > > +        paddd   xmm1,xmm7
> > > > >
> > > > > +        movq    xmm7,QWORD[rbx]
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        movdqa  xmm2,XMMWORD[((240-128))+rbp]
> > > > >
> > > > > +        paddd   xmm2,xmm11
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,xmm1
> > > > >
> > > > > +        cmp     ecx,DWORD[rbx]
> > > > >
> > > > > +        cmovge  r8,rsp
> > > > >
> > > > > +        cmp     ecx,DWORD[4+rbx]
> > > > >
> > > > > +        cmovge  r9,rsp
> > > > >
> > > > > +        pshufd  xmm9,xmm7,0x00
> > > > >
> > > > > +DB      69,15,56,203,236
> > > > >
> > > > > +        movdqa  xmm0,xmm2
> > > > >
> > > > > +        pshufd  xmm10,xmm7,0x55
> > > > >
> > > > > +        movdqa  xmm11,xmm7
> > > > >
> > > > > +DB      69,15,56,203,254
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > >
> > > > > +        pcmpgtd xmm9,xmm6
> > > > >
> > > > > +        pcmpgtd xmm10,xmm6
> > > > >
> > > > > +DB      69,15,56,203,229
> > > > >
> > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > >
> > > > > +        pcmpgtd xmm11,xmm6
> > > > >
> > > > > +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
> > > > >
> > > > > +DB      69,15,56,203,247
> > > > >
> > > > > +
> > > > >
> > > > > +        pand    xmm13,xmm9
> > > > >
> > > > > +        pand    xmm15,xmm10
> > > > >
> > > > > +        pand    xmm12,xmm9
> > > > >
> > > > > +        pand    xmm14,xmm10
> > > > >
> > > > > +        paddd   xmm11,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm13,XMMWORD[80+rsp]
> > > > >
> > > > > +        paddd   xmm15,XMMWORD[112+rsp]
> > > > >
> > > > > +        paddd   xmm12,XMMWORD[64+rsp]
> > > > >
> > > > > +        paddd   xmm14,XMMWORD[96+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        movq    QWORD[rbx],xmm11
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edx,DWORD[280+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm12,xmm12,27
> > > > >
> > > > > +        pshufd  xmm13,xmm13,27
> > > > >
> > > > > +        pshufd  xmm14,xmm14,27
> > > > >
> > > > > +        pshufd  xmm15,xmm15,27
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm5,xmm12
> > > > >
> > > > > +        movdqa  xmm6,xmm13
> > > > >
> > > > > +        punpckldq       xmm12,xmm14
> > > > >
> > > > > +        punpckhdq       xmm5,xmm14
> > > > >
> > > > > +        punpckldq       xmm13,xmm15
> > > > >
> > > > > +        punpckhdq       xmm6,xmm15
> > > > >
> > > > > +
> > > > >
> > > > > +        movq    QWORD[(0-128)+rdi],xmm12
> > > > >
> > > > > +        psrldq  xmm12,8
> > > > >
> > > > > +        movq    QWORD[(128-128)+rdi],xmm5
> > > > >
> > > > > +        psrldq  xmm5,8
> > > > >
> > > > > +        movq    QWORD[(32-128)+rdi],xmm12
> > > > >
> > > > > +        movq    QWORD[(160-128)+rdi],xmm5
> > > > >
> > > > > +
> > > > >
> > > > > +        movq    QWORD[(64-128)+rdi],xmm13
> > > > >
> > > > > +        psrldq  xmm13,8
> > > > >
> > > > > +        movq    QWORD[(192-128)+rdi],xmm6
> > > > >
> > > > > +        psrldq  xmm6,8
> > > > >
> > > > > +        movq    QWORD[(96-128)+rdi],xmm13
> > > > >
> > > > > +        movq    QWORD[(224-128)+rdi],xmm6
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rdi,[8+rdi]
> > > > >
> > > > > +        lea     rsi,[32+rsi]
> > > > >
> > > > > +        dec     edx
> > > > >
> > > > > +        jnz     NEAR $L$oop_grande_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +$L$done_shaext:
> > > > >
> > > > > +
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > > >
> > > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > > >
> > > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > > >
> > > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > > >
> > > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > > >
> > > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > > >
> > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[rax]
> > > > >
> > > > > +
> > > > >
> > > > > +$L$epilogue_shaext:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_sha256_multi_block_shaext:
> > > > >
> > > > > +ALIGN   256
> > > > >
> > > > > +K256:
> > > > >
> > > > > +        DD      1116352408,1116352408,1116352408,1116352408
> > > > >
> > > > > +        DD      1116352408,1116352408,1116352408,1116352408
> > > > >
> > > > > +        DD      1899447441,1899447441,1899447441,1899447441
> > > > >
> > > > > +        DD      1899447441,1899447441,1899447441,1899447441
> > > > >
> > > > > +        DD      3049323471,3049323471,3049323471,3049323471
> > > > >
> > > > > +        DD      3049323471,3049323471,3049323471,3049323471
> > > > >
> > > > > +        DD      3921009573,3921009573,3921009573,3921009573
> > > > >
> > > > > +        DD      3921009573,3921009573,3921009573,3921009573
> > > > >
> > > > > +        DD      961987163,961987163,961987163,961987163
> > > > >
> > > > > +        DD      961987163,961987163,961987163,961987163
> > > > >
> > > > > +        DD      1508970993,1508970993,1508970993,1508970993
> > > > >
> > > > > +        DD      1508970993,1508970993,1508970993,1508970993
> > > > >
> > > > > +        DD      2453635748,2453635748,2453635748,2453635748
> > > > >
> > > > > +        DD      2453635748,2453635748,2453635748,2453635748
> > > > >
> > > > > +        DD      2870763221,2870763221,2870763221,2870763221
> > > > >
> > > > > +        DD      2870763221,2870763221,2870763221,2870763221
> > > > >
> > > > > +        DD      3624381080,3624381080,3624381080,3624381080
> > > > >
> > > > > +        DD      3624381080,3624381080,3624381080,3624381080
> > > > >
> > > > > +        DD      310598401,310598401,310598401,310598401
> > > > >
> > > > > +        DD      310598401,310598401,310598401,310598401
> > > > >
> > > > > +        DD      607225278,607225278,607225278,607225278
> > > > >
> > > > > +        DD      607225278,607225278,607225278,607225278
> > > > >
> > > > > +        DD      1426881987,1426881987,1426881987,1426881987
> > > > >
> > > > > +        DD      1426881987,1426881987,1426881987,1426881987
> > > > >
> > > > > +        DD      1925078388,1925078388,1925078388,1925078388
> > > > >
> > > > > +        DD      1925078388,1925078388,1925078388,1925078388
> > > > >
> > > > > +        DD      2162078206,2162078206,2162078206,2162078206
> > > > >
> > > > > +        DD      2162078206,2162078206,2162078206,2162078206
> > > > >
> > > > > +        DD      2614888103,2614888103,2614888103,2614888103
> > > > >
> > > > > +        DD      2614888103,2614888103,2614888103,2614888103
> > > > >
> > > > > +        DD      3248222580,3248222580,3248222580,3248222580
> > > > >
> > > > > +        DD      3248222580,3248222580,3248222580,3248222580
> > > > >
> > > > > +        DD      3835390401,3835390401,3835390401,3835390401
> > > > >
> > > > > +        DD      3835390401,3835390401,3835390401,3835390401
> > > > >
> > > > > +        DD      4022224774,4022224774,4022224774,4022224774
> > > > >
> > > > > +        DD      4022224774,4022224774,4022224774,4022224774
> > > > >
> > > > > +        DD      264347078,264347078,264347078,264347078
> > > > >
> > > > > +        DD      264347078,264347078,264347078,264347078
> > > > >
> > > > > +        DD      604807628,604807628,604807628,604807628
> > > > >
> > > > > +        DD      604807628,604807628,604807628,604807628
> > > > >
> > > > > +        DD      770255983,770255983,770255983,770255983
> > > > >
> > > > > +        DD      770255983,770255983,770255983,770255983
> > > > >
> > > > > +        DD      1249150122,1249150122,1249150122,1249150122
> > > > >
> > > > > +        DD      1249150122,1249150122,1249150122,1249150122
> > > > >
> > > > > +        DD      1555081692,1555081692,1555081692,1555081692
> > > > >
> > > > > +        DD      1555081692,1555081692,1555081692,1555081692
> > > > >
> > > > > +        DD      1996064986,1996064986,1996064986,1996064986
> > > > >
> > > > > +        DD      1996064986,1996064986,1996064986,1996064986
> > > > >
> > > > > +        DD      2554220882,2554220882,2554220882,2554220882
> > > > >
> > > > > +        DD      2554220882,2554220882,2554220882,2554220882
> > > > >
> > > > > +        DD      2821834349,2821834349,2821834349,2821834349
> > > > >
> > > > > +        DD      2821834349,2821834349,2821834349,2821834349
> > > > >
> > > > > +        DD      2952996808,2952996808,2952996808,2952996808
> > > > >
> > > > > +        DD      2952996808,2952996808,2952996808,2952996808
> > > > >
> > > > > +        DD      3210313671,3210313671,3210313671,3210313671
> > > > >
> > > > > +        DD      3210313671,3210313671,3210313671,3210313671
> > > > >
> > > > > +        DD      3336571891,3336571891,3336571891,3336571891
> > > > >
> > > > > +        DD      3336571891,3336571891,3336571891,3336571891
> > > > >
> > > > > +        DD      3584528711,3584528711,3584528711,3584528711
> > > > >
> > > > > +        DD      3584528711,3584528711,3584528711,3584528711
> > > > >
> > > > > +        DD      113926993,113926993,113926993,113926993
> > > > >
> > > > > +        DD      113926993,113926993,113926993,113926993
> > > > >
> > > > > +        DD      338241895,338241895,338241895,338241895
> > > > >
> > > > > +        DD      338241895,338241895,338241895,338241895
> > > > >
> > > > > +        DD      666307205,666307205,666307205,666307205
> > > > >
> > > > > +        DD      666307205,666307205,666307205,666307205
> > > > >
> > > > > +        DD      773529912,773529912,773529912,773529912
> > > > >
> > > > > +        DD      773529912,773529912,773529912,773529912
> > > > >
> > > > > +        DD      1294757372,1294757372,1294757372,1294757372
> > > > >
> > > > > +        DD      1294757372,1294757372,1294757372,1294757372
> > > > >
> > > > > +        DD      1396182291,1396182291,1396182291,1396182291
> > > > >
> > > > > +        DD      1396182291,1396182291,1396182291,1396182291
> > > > >
> > > > > +        DD      1695183700,1695183700,1695183700,1695183700
> > > > >
> > > > > +        DD      1695183700,1695183700,1695183700,1695183700
> > > > >
> > > > > +        DD      1986661051,1986661051,1986661051,1986661051
> > > > >
> > > > > +        DD      1986661051,1986661051,1986661051,1986661051
> > > > >
> > > > > +        DD      2177026350,2177026350,2177026350,2177026350
> > > > >
> > > > > +        DD      2177026350,2177026350,2177026350,2177026350
> > > > >
> > > > > +        DD      2456956037,2456956037,2456956037,2456956037
> > > > >
> > > > > +        DD      2456956037,2456956037,2456956037,2456956037
> > > > >
> > > > > +        DD      2730485921,2730485921,2730485921,2730485921
> > > > >
> > > > > +        DD      2730485921,2730485921,2730485921,2730485921
> > > > >
> > > > > +        DD      2820302411,2820302411,2820302411,2820302411
> > > > >
> > > > > +        DD      2820302411,2820302411,2820302411,2820302411
> > > > >
> > > > > +        DD      3259730800,3259730800,3259730800,3259730800
> > > > >
> > > > > +        DD      3259730800,3259730800,3259730800,3259730800
> > > > >
> > > > > +        DD      3345764771,3345764771,3345764771,3345764771
> > > > >
> > > > > +        DD      3345764771,3345764771,3345764771,3345764771
> > > > >
> > > > > +        DD      3516065817,3516065817,3516065817,3516065817
> > > > >
> > > > > +        DD      3516065817,3516065817,3516065817,3516065817
> > > > >
> > > > > +        DD      3600352804,3600352804,3600352804,3600352804
> > > > >
> > > > > +        DD      3600352804,3600352804,3600352804,3600352804
> > > > >
> > > > > +        DD      4094571909,4094571909,4094571909,4094571909
> > > > >
> > > > > +        DD      4094571909,4094571909,4094571909,4094571909
> > > > >
> > > > > +        DD      275423344,275423344,275423344,275423344
> > > > >
> > > > > +        DD      275423344,275423344,275423344,275423344
> > > > >
> > > > > +        DD      430227734,430227734,430227734,430227734
> > > > >
> > > > > +        DD      430227734,430227734,430227734,430227734
> > > > >
> > > > > +        DD      506948616,506948616,506948616,506948616
> > > > >
> > > > > +        DD      506948616,506948616,506948616,506948616
> > > > >
> > > > > +        DD      659060556,659060556,659060556,659060556
> > > > >
> > > > > +        DD      659060556,659060556,659060556,659060556
> > > > >
> > > > > +        DD      883997877,883997877,883997877,883997877
> > > > >
> > > > > +        DD      883997877,883997877,883997877,883997877
> > > > >
> > > > > +        DD      958139571,958139571,958139571,958139571
> > > > >
> > > > > +        DD      958139571,958139571,958139571,958139571
> > > > >
> > > > > +        DD      1322822218,1322822218,1322822218,1322822218
> > > > >
> > > > > +        DD      1322822218,1322822218,1322822218,1322822218
> > > > >
> > > > > +        DD      1537002063,1537002063,1537002063,1537002063
> > > > >
> > > > > +        DD      1537002063,1537002063,1537002063,1537002063
> > > > >
> > > > > +        DD      1747873779,1747873779,1747873779,1747873779
> > > > >
> > > > > +        DD      1747873779,1747873779,1747873779,1747873779
> > > > >
> > > > > +        DD      1955562222,1955562222,1955562222,1955562222
> > > > >
> > > > > +        DD      1955562222,1955562222,1955562222,1955562222
> > > > >
> > > > > +        DD      2024104815,2024104815,2024104815,2024104815
> > > > >
> > > > > +        DD      2024104815,2024104815,2024104815,2024104815
> > > > >
> > > > > +        DD      2227730452,2227730452,2227730452,2227730452
> > > > >
> > > > > +        DD      2227730452,2227730452,2227730452,2227730452
> > > > >
> > > > > +        DD      2361852424,2361852424,2361852424,2361852424
> > > > >
> > > > > +        DD      2361852424,2361852424,2361852424,2361852424
> > > > >
> > > > > +        DD      2428436474,2428436474,2428436474,2428436474
> > > > >
> > > > > +        DD      2428436474,2428436474,2428436474,2428436474
> > > > >
> > > > > +        DD      2756734187,2756734187,2756734187,2756734187
> > > > >
> > > > > +        DD      2756734187,2756734187,2756734187,2756734187
> > > > >
> > > > > +        DD      3204031479,3204031479,3204031479,3204031479
> > > > >
> > > > > +        DD      3204031479,3204031479,3204031479,3204031479
> > > > >
> > > > > +        DD      3329325298,3329325298,3329325298,3329325298
> > > > >
> > > > > +        DD      3329325298,3329325298,3329325298,3329325298
> > > > >
> > > > > +$L$pbswap:
> > > > >
> > > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > >
> > > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > >
> > > > > +K256_shaext:
> > > > >
> > > > > +        DD      0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
> > > > >
> > > > > +        DD      0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
> > > > >
> > > > > +        DD      0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
> > > > >
> > > > > +        DD      0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
> > > > >
> > > > > +        DD      0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
> > > > >
> > > > > +        DD      0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
> > > > >
> > > > > +        DD      0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
> > > > >
> > > > > +        DD      0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
> > > > >
> > > > > +        DD      0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
> > > > >
> > > > > +        DD      0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
> > > > >
> > > > > +        DD      0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
> > > > >
> > > > > +        DD      0xd192e819,0xd6990624,0xf40e3585,0x106aa070
> > > > >
> > > > > +        DD      0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
> > > > >
> > > > > +        DD      0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
> > > > >
> > > > > +        DD      0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
> > > > >
> > > > > +        DD      0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
> > > > >
> > > > > +DB      83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111
> > > > >
> > > > > +DB      99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114
> > > > >
> > > > > +DB      32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71
> > > > >
> > > > > +DB      65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112
> > > > >
> > > > > +DB      101,110,115,115,108,46,111,114,103,62,0
> > > > >
> > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[272+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > >
> > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > >
> > > > > +        mov     QWORD[144+r8],rbx
> > > > >
> > > > > +        mov     QWORD[160+r8],rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((-24-160))+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,20
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +$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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +section .pdata rdata align=4
> > > > >
> > > > > +ALIGN   4
> > > > >
> > > > > +        DD      $L$SEH_begin_sha256_multi_block wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_sha256_multi_block wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_sha256_multi_block wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_begin_sha256_multi_block_shaext wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_sha256_multi_block_shaext wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_sha256_multi_block_shaext wrt ..imagebase
> > > > >
> > > > > +section .xdata rdata align=8
> > > > >
> > > > > +ALIGN   8
> > > > >
> > > > > +$L$SEH_info_sha256_multi_block:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
> > > > >
> > > > > +$L$SEH_info_sha256_multi_block_shaext:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      se_handler wrt ..imagebase
> > > > >
> > > > > +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
> > > > > wrt ..imagebase
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
> > > x86_64.nasm
> > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..70e49862a3
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
> > > > > @@ -0,0 +1,3313 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +global  sha256_block_data_order
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r11,[OPENSSL_ia32cap_P]
> > > > >
> > > > > +        mov     r9d,DWORD[r11]
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        mov     r11d,DWORD[8+r11]
> > > > >
> > > > > +        test    r11d,536870912
> > > > >
> > > > > +        jnz     NEAR _shaext_shortcut
> > > > >
> > > > > +        test    r10d,512
> > > > >
> > > > > +        jnz     NEAR $L$ssse3_shortcut
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +
> > > > >
> > > > > +        shl     rdx,4
> > > > >
> > > > > +        sub     rsp,16*4+4*8
> > > > >
> > > > > +        lea     rdx,[rdx*4+rsi]
> > > > >
> > > > > +        and     rsp,-64
> > > > >
> > > > > +        mov     QWORD[((64+0))+rsp],rdi
> > > > >
> > > > > +        mov     QWORD[((64+8))+rsp],rsi
> > > > >
> > > > > +        mov     QWORD[((64+16))+rsp],rdx
> > > > >
> > > > > +        mov     QWORD[88+rsp],rax
> > > > >
> > > > > +
> > > > >
> > > > > +$L$prologue:
> > > > >
> > > > > +
> > > > >
> > > > > +        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:
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        lea     rbp,[K256]
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        mov     r12d,DWORD[rsi]
> > > > >
> > > > > +        mov     r13d,r8d
> > > > >
> > > > > +        mov     r14d,eax
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[rsp],r12d
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        and     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r11d
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,eax
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,ebx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r11d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r11d,edi
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     r11d,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[4+rsi]
> > > > >
> > > > > +        mov     r13d,edx
> > > > >
> > > > > +        mov     r14d,r11d
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[4+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r10d
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,r11d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r10d,r15d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     r10d,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[8+rsi]
> > > > >
> > > > > +        mov     r13d,ecx
> > > > >
> > > > > +        mov     r14d,r10d
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[8+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        and     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r9d
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,r10d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,r11d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r9d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r9d,edi
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     r9d,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[12+rsi]
> > > > >
> > > > > +        mov     r13d,ebx
> > > > >
> > > > > +        mov     r14d,r9d
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[12+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r8d
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,r9d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,r10d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r8d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r8d,r15d
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[20+rbp]
> > > > >
> > > > > +        add     r8d,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[16+rsi]
> > > > >
> > > > > +        mov     r13d,eax
> > > > >
> > > > > +        mov     r14d,r8d
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[16+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        and     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,edx
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,r8d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,r9d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     edx,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edx,edi
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     edx,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[20+rsi]
> > > > >
> > > > > +        mov     r13d,r11d
> > > > >
> > > > > +        mov     r14d,edx
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[20+rsp],r12d
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        and     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,r8d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     ecx,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     ecx,r15d
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     ecx,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[24+rsi]
> > > > >
> > > > > +        mov     r13d,r10d
> > > > >
> > > > > +        mov     r14d,ecx
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[24+rsp],r12d
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        and     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,ebx
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,ecx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,edx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     ebx,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     ebx,edi
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     ebx,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[28+rsi]
> > > > >
> > > > > +        mov     r13d,r9d
> > > > >
> > > > > +        mov     r14d,ebx
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[28+rsp],r12d
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        and     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     eax,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     eax,r15d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[20+rbp]
> > > > >
> > > > > +        add     eax,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[32+rsi]
> > > > >
> > > > > +        mov     r13d,r8d
> > > > >
> > > > > +        mov     r14d,eax
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[32+rsp],r12d
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        and     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r11d
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,eax
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,ebx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r11d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r11d,edi
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     r11d,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[36+rsi]
> > > > >
> > > > > +        mov     r13d,edx
> > > > >
> > > > > +        mov     r14d,r11d
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[36+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r10d
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,r11d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r10d,r15d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     r10d,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[40+rsi]
> > > > >
> > > > > +        mov     r13d,ecx
> > > > >
> > > > > +        mov     r14d,r10d
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[40+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        and     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r9d
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,r10d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,r11d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r9d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r9d,edi
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     r9d,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[44+rsi]
> > > > >
> > > > > +        mov     r13d,ebx
> > > > >
> > > > > +        mov     r14d,r9d
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[44+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r8d
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,r9d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,r10d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r8d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r8d,r15d
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[20+rbp]
> > > > >
> > > > > +        add     r8d,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[48+rsi]
> > > > >
> > > > > +        mov     r13d,eax
> > > > >
> > > > > +        mov     r14d,r8d
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[48+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        and     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,edx
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,r8d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,r9d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     edx,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edx,edi
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     edx,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[52+rsi]
> > > > >
> > > > > +        mov     r13d,r11d
> > > > >
> > > > > +        mov     r14d,edx
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[52+rsp],r12d
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        and     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,r8d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     ecx,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     ecx,r15d
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     ecx,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[56+rsi]
> > > > >
> > > > > +        mov     r13d,r10d
> > > > >
> > > > > +        mov     r14d,ecx
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[56+rsp],r12d
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        and     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,ebx
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,ecx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,edx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     ebx,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     ebx,edi
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        add     ebx,r14d
> > > > >
> > > > > +        mov     r12d,DWORD[60+rsi]
> > > > >
> > > > > +        mov     r13d,r9d
> > > > >
> > > > > +        mov     r14d,ebx
> > > > >
> > > > > +        bswap   r12d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[60+rsp],r12d
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        and     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     eax,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     eax,r15d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[20+rbp]
> > > > >
> > > > > +        jmp     NEAR $L$rounds_16_xx
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$rounds_16_xx:
> > > > >
> > > > > +        mov     r13d,DWORD[4+rsp]
> > > > >
> > > > > +        mov     r15d,DWORD[56+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     eax,r14d
> > > > >
> > > > > +        mov     r14d,r15d
> > > > >
> > > > > +        ror     r15d,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15d,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        add     r12d,DWORD[36+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[rsp]
> > > > >
> > > > > +        mov     r13d,r8d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +        mov     r14d,eax
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[rsp],r12d
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        and     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r11d
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,eax
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,ebx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r11d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r11d,edi
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[8+rsp]
> > > > >
> > > > > +        mov     edi,DWORD[60+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     r11d,r14d
> > > > >
> > > > > +        mov     r14d,edi
> > > > >
> > > > > +        ror     edi,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     edi,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        add     r12d,DWORD[40+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[4+rsp]
> > > > >
> > > > > +        mov     r13d,edx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +        mov     r14d,r11d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[4+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r10d
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,r11d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r10d,r15d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[12+rsp]
> > > > >
> > > > > +        mov     r15d,DWORD[rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     r10d,r14d
> > > > >
> > > > > +        mov     r14d,r15d
> > > > >
> > > > > +        ror     r15d,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15d,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        add     r12d,DWORD[44+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[8+rsp]
> > > > >
> > > > > +        mov     r13d,ecx
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +        mov     r14d,r10d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[8+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        and     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r9d
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,r10d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,r11d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r9d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r9d,edi
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[16+rsp]
> > > > >
> > > > > +        mov     edi,DWORD[4+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     r9d,r14d
> > > > >
> > > > > +        mov     r14d,edi
> > > > >
> > > > > +        ror     edi,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     edi,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        add     r12d,DWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[12+rsp]
> > > > >
> > > > > +        mov     r13d,ebx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +        mov     r14d,r9d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[12+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r8d
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,r9d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,r10d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r8d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r8d,r15d
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[20+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[20+rsp]
> > > > >
> > > > > +        mov     r15d,DWORD[8+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     r8d,r14d
> > > > >
> > > > > +        mov     r14d,r15d
> > > > >
> > > > > +        ror     r15d,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15d,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        add     r12d,DWORD[52+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[16+rsp]
> > > > >
> > > > > +        mov     r13d,eax
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +        mov     r14d,r8d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[16+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        and     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,edx
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,r8d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,r9d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     edx,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edx,edi
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[24+rsp]
> > > > >
> > > > > +        mov     edi,DWORD[12+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     edx,r14d
> > > > >
> > > > > +        mov     r14d,edi
> > > > >
> > > > > +        ror     edi,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     edi,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        add     r12d,DWORD[56+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[20+rsp]
> > > > >
> > > > > +        mov     r13d,r11d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +        mov     r14d,edx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[20+rsp],r12d
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        and     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,r8d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     ecx,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     ecx,r15d
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[28+rsp]
> > > > >
> > > > > +        mov     r15d,DWORD[16+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     ecx,r14d
> > > > >
> > > > > +        mov     r14d,r15d
> > > > >
> > > > > +        ror     r15d,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15d,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        add     r12d,DWORD[60+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[24+rsp]
> > > > >
> > > > > +        mov     r13d,r10d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +        mov     r14d,ecx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[24+rsp],r12d
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        and     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,ebx
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,ecx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,edx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     ebx,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     ebx,edi
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[32+rsp]
> > > > >
> > > > > +        mov     edi,DWORD[20+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     ebx,r14d
> > > > >
> > > > > +        mov     r14d,edi
> > > > >
> > > > > +        ror     edi,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     edi,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        add     r12d,DWORD[rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[28+rsp]
> > > > >
> > > > > +        mov     r13d,r9d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +        mov     r14d,ebx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[28+rsp],r12d
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        and     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     eax,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     eax,r15d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[20+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[36+rsp]
> > > > >
> > > > > +        mov     r15d,DWORD[24+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     eax,r14d
> > > > >
> > > > > +        mov     r14d,r15d
> > > > >
> > > > > +        ror     r15d,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15d,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        add     r12d,DWORD[4+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[32+rsp]
> > > > >
> > > > > +        mov     r13d,r8d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +        mov     r14d,eax
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[32+rsp],r12d
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        and     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r11d
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,eax
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,ebx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r11d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r11d,edi
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[40+rsp]
> > > > >
> > > > > +        mov     edi,DWORD[28+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     r11d,r14d
> > > > >
> > > > > +        mov     r14d,edi
> > > > >
> > > > > +        ror     edi,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     edi,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        add     r12d,DWORD[8+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[36+rsp]
> > > > >
> > > > > +        mov     r13d,edx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +        mov     r14d,r11d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[36+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        and     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r10d
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,r11d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r10d,r15d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[44+rsp]
> > > > >
> > > > > +        mov     r15d,DWORD[32+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     r10d,r14d
> > > > >
> > > > > +        mov     r14d,r15d
> > > > >
> > > > > +        ror     r15d,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15d,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        add     r12d,DWORD[12+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[40+rsp]
> > > > >
> > > > > +        mov     r13d,ecx
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +        mov     r14d,r10d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[40+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        and     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r9d
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,r10d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,r11d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r9d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r9d,edi
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[48+rsp]
> > > > >
> > > > > +        mov     edi,DWORD[36+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     r9d,r14d
> > > > >
> > > > > +        mov     r14d,edi
> > > > >
> > > > > +        ror     edi,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     edi,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        add     r12d,DWORD[16+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[44+rsp]
> > > > >
> > > > > +        mov     r13d,ebx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +        mov     r14d,r9d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[44+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        and     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,r8d
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,r9d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,r10d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     r8d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r8d,r15d
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[20+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[52+rsp]
> > > > >
> > > > > +        mov     r15d,DWORD[40+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     r8d,r14d
> > > > >
> > > > > +        mov     r14d,r15d
> > > > >
> > > > > +        ror     r15d,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15d,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        add     r12d,DWORD[20+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[48+rsp]
> > > > >
> > > > > +        mov     r13d,eax
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +        mov     r14d,r8d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[48+rsp],r12d
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        and     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,edx
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,r8d
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,r9d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     edx,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edx,edi
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[56+rsp]
> > > > >
> > > > > +        mov     edi,DWORD[44+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     edx,r14d
> > > > >
> > > > > +        mov     r14d,edi
> > > > >
> > > > > +        ror     edi,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     edi,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        add     r12d,DWORD[24+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[52+rsp]
> > > > >
> > > > > +        mov     r13d,r11d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +        mov     r14d,edx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[52+rsp],r12d
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        and     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,ecx
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,r8d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     ecx,r8d
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     ecx,r15d
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[60+rsp]
> > > > >
> > > > > +        mov     r15d,DWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     ecx,r14d
> > > > >
> > > > > +        mov     r14d,r15d
> > > > >
> > > > > +        ror     r15d,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15d,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     r15d,r14d
> > > > >
> > > > > +        add     r12d,DWORD[28+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[56+rsp]
> > > > >
> > > > > +        mov     r13d,r10d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +        mov     r14d,ecx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r15d,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[56+rsp],r12d
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        and     r15d,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,ebx
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        add     r12d,r15d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15d,ecx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15d,edx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     ebx,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     ebx,edi
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[4+rbp]
> > > > >
> > > > > +        mov     r13d,DWORD[rsp]
> > > > >
> > > > > +        mov     edi,DWORD[52+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12d,r13d
> > > > >
> > > > > +        ror     r13d,11
> > > > >
> > > > > +        add     ebx,r14d
> > > > >
> > > > > +        mov     r14d,edi
> > > > >
> > > > > +        ror     edi,2
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r12d
> > > > >
> > > > > +        shr     r12d,3
> > > > >
> > > > > +        ror     r13d,7
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        shr     r14d,10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     edi,17
> > > > >
> > > > > +        xor     r12d,r13d
> > > > >
> > > > > +        xor     edi,r14d
> > > > >
> > > > > +        add     r12d,DWORD[32+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12d,DWORD[60+rsp]
> > > > >
> > > > > +        mov     r13d,r9d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +        mov     r14d,ebx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edi,r10d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     DWORD[60+rsp],r12d
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        and     edi,r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        add     r12d,eax
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        add     r12d,edi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        add     r12d,DWORD[rbp]
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        mov     eax,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r12d,r13d
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     eax,r15d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[20+rbp]
> > > > >
> > > > > +        cmp     BYTE[3+rbp],0
> > > > >
> > > > > +        jnz     NEAR $L$rounds_16_xx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,QWORD[((64+0))+rsp]
> > > > >
> > > > > +        add     eax,r14d
> > > > >
> > > > > +        lea     rsi,[64+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        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[((64+16))+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        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[88+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$epilogue:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_sha256_block_data_order:
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +
> > > > >
> > > > > +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      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
> > > > >
> > > > > +DB      32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
> > > > >
> > > > > +DB      111,114,103,62,0
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +sha256_block_data_order_shaext:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_sha256_block_data_order_shaext:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +_shaext_shortcut:
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsp,[((-88))+rsp]
> > > > >
> > > > > +        movaps  XMMWORD[(-8-80)+rax],xmm6
> > > > >
> > > > > +        movaps  XMMWORD[(-8-64)+rax],xmm7
> > > > >
> > > > > +        movaps  XMMWORD[(-8-48)+rax],xmm8
> > > > >
> > > > > +        movaps  XMMWORD[(-8-32)+rax],xmm9
> > > > >
> > > > > +        movaps  XMMWORD[(-8-16)+rax],xmm10
> > > > >
> > > > > +$L$prologue_shaext:
> > > > >
> > > > > +        lea     rcx,[((K256+128))]
> > > > >
> > > > > +        movdqu  xmm1,XMMWORD[rdi]
> > > > >
> > > > > +        movdqu  xmm2,XMMWORD[16+rdi]
> > > > >
> > > > > +        movdqa  xmm7,XMMWORD[((512-128))+rcx]
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm0,xmm1,0x1b
> > > > >
> > > > > +        pshufd  xmm1,xmm1,0xb1
> > > > >
> > > > > +        pshufd  xmm2,xmm2,0x1b
> > > > >
> > > > > +        movdqa  xmm8,xmm7
> > > > >
> > > > > +DB      102,15,58,15,202,8
> > > > >
> > > > > +        punpcklqdq      xmm2,xmm0
> > > > >
> > > > > +        jmp     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$oop_shaext:
> > > > >
> > > > > +        movdqu  xmm3,XMMWORD[rsi]
> > > > >
> > > > > +        movdqu  xmm4,XMMWORD[16+rsi]
> > > > >
> > > > > +        movdqu  xmm5,XMMWORD[32+rsi]
> > > > >
> > > > > +DB      102,15,56,0,223
> > > > >
> > > > > +        movdqu  xmm6,XMMWORD[48+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((0-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm3
> > > > >
> > > > > +DB      102,15,56,0,231
> > > > >
> > > > > +        movdqa  xmm10,xmm2
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        movdqa  xmm9,xmm1
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((32-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm4
> > > > >
> > > > > +DB      102,15,56,0,239
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        lea     rsi,[64+rsi]
> > > > >
> > > > > +DB      15,56,204,220
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((64-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm5
> > > > >
> > > > > +DB      102,15,56,0,247
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +DB      102,15,58,15,253,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm3,xmm7
> > > > >
> > > > > +DB      15,56,204,229
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((96-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm6
> > > > >
> > > > > +DB      15,56,205,222
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm3
> > > > >
> > > > > +DB      102,15,58,15,254,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm4,xmm7
> > > > >
> > > > > +DB      15,56,204,238
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((128-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm3
> > > > >
> > > > > +DB      15,56,205,227
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm4
> > > > >
> > > > > +DB      102,15,58,15,251,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +DB      15,56,204,243
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((160-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm4
> > > > >
> > > > > +DB      15,56,205,236
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +DB      102,15,58,15,252,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +DB      15,56,204,220
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((192-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm5
> > > > >
> > > > > +DB      15,56,205,245
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +DB      102,15,58,15,253,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm3,xmm7
> > > > >
> > > > > +DB      15,56,204,229
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((224-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm6
> > > > >
> > > > > +DB      15,56,205,222
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm3
> > > > >
> > > > > +DB      102,15,58,15,254,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm4,xmm7
> > > > >
> > > > > +DB      15,56,204,238
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((256-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm3
> > > > >
> > > > > +DB      15,56,205,227
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm4
> > > > >
> > > > > +DB      102,15,58,15,251,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +DB      15,56,204,243
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((288-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm4
> > > > >
> > > > > +DB      15,56,205,236
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +DB      102,15,58,15,252,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +DB      15,56,204,220
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((320-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm5
> > > > >
> > > > > +DB      15,56,205,245
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm6
> > > > >
> > > > > +DB      102,15,58,15,253,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm3,xmm7
> > > > >
> > > > > +DB      15,56,204,229
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((352-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm6
> > > > >
> > > > > +DB      15,56,205,222
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm3
> > > > >
> > > > > +DB      102,15,58,15,254,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm4,xmm7
> > > > >
> > > > > +DB      15,56,204,238
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((384-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm3
> > > > >
> > > > > +DB      15,56,205,227
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm4
> > > > >
> > > > > +DB      102,15,58,15,251,4
> > > > >
> > > > > +        nop
> > > > >
> > > > > +        paddd   xmm5,xmm7
> > > > >
> > > > > +DB      15,56,204,243
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((416-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm4
> > > > >
> > > > > +DB      15,56,205,236
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        movdqa  xmm7,xmm5
> > > > >
> > > > > +DB      102,15,58,15,252,4
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +        paddd   xmm6,xmm7
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((448-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm5
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +DB      15,56,205,245
> > > > >
> > > > > +        movdqa  xmm7,xmm8
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqa  xmm0,XMMWORD[((480-128))+rcx]
> > > > >
> > > > > +        paddd   xmm0,xmm6
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      15,56,203,209
> > > > >
> > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > >
> > > > > +        dec     rdx
> > > > >
> > > > > +        nop
> > > > >
> > > > > +DB      15,56,203,202
> > > > >
> > > > > +
> > > > >
> > > > > +        paddd   xmm2,xmm10
> > > > >
> > > > > +        paddd   xmm1,xmm9
> > > > >
> > > > > +        jnz     NEAR $L$oop_shaext
> > > > >
> > > > > +
> > > > >
> > > > > +        pshufd  xmm2,xmm2,0xb1
> > > > >
> > > > > +        pshufd  xmm7,xmm1,0x1b
> > > > >
> > > > > +        pshufd  xmm1,xmm1,0xb1
> > > > >
> > > > > +        punpckhqdq      xmm1,xmm2
> > > > >
> > > > > +DB      102,15,58,15,215,8
> > > > >
> > > > > +
> > > > >
> > > > > +        movdqu  XMMWORD[rdi],xmm1
> > > > >
> > > > > +        movdqu  XMMWORD[16+rdi],xmm2
> > > > >
> > > > > +        movaps  xmm6,XMMWORD[((-8-80))+rax]
> > > > >
> > > > > +        movaps  xmm7,XMMWORD[((-8-64))+rax]
> > > > >
> > > > > +        movaps  xmm8,XMMWORD[((-8-48))+rax]
> > > > >
> > > > > +        movaps  xmm9,XMMWORD[((-8-32))+rax]
> > > > >
> > > > > +        movaps  xmm10,XMMWORD[((-8-16))+rax]
> > > > >
> > > > > +        mov     rsp,rax
> > > > >
> > > > > +$L$epilogue_shaext:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_sha256_block_data_order_shaext:
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +$L$ssse3_shortcut:
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +
> > > > >
> > > > > +        shl     rdx,4
> > > > >
> > > > > +        sub     rsp,160
> > > > >
> > > > > +        lea     rdx,[rdx*4+rsi]
> > > > >
> > > > > +        and     rsp,-64
> > > > >
> > > > > +        mov     QWORD[((64+0))+rsp],rdi
> > > > >
> > > > > +        mov     QWORD[((64+8))+rsp],rsi
> > > > >
> > > > > +        mov     QWORD[((64+16))+rsp],rdx
> > > > >
> > > > > +        mov     QWORD[88+rsp],rax
> > > > >
> > > > > +
> > > > >
> > > > > +        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[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_ssse3
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$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[48+rsi]
> > > > >
> > > > > +        lea     rbp,[K256]
> > > > >
> > > > > +DB      102,15,56,0,207
> > > > >
> > > > > +        movdqa  xmm4,XMMWORD[rbp]
> > > > >
> > > > > +        movdqa  xmm5,XMMWORD[32+rbp]
> > > > >
> > > > > +DB      102,15,56,0,215
> > > > >
> > > > > +        paddd   xmm4,xmm0
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[64+rbp]
> > > > >
> > > > > +DB      102,15,56,0,223
> > > > >
> > > > > +        movdqa  xmm7,XMMWORD[96+rbp]
> > > > >
> > > > > +        paddd   xmm5,xmm1
> > > > >
> > > > > +        paddd   xmm6,xmm2
> > > > >
> > > > > +        paddd   xmm7,xmm3
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm4
> > > > >
> > > > > +        mov     r14d,eax
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm5
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        movdqa  XMMWORD[48+rsp],xmm7
> > > > >
> > > > > +        mov     r13d,r8d
> > > > >
> > > > > +        jmp     NEAR $L$ssse3_00_47
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ssse3_00_47:
> > > > >
> > > > > +        sub     rbp,-128
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        movdqa  xmm4,xmm1
> > > > >
> > > > > +        mov     eax,r14d
> > > > >
> > > > > +        mov     r12d,r9d
> > > > >
> > > > > +        movdqa  xmm7,xmm3
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        xor     r12d,r10d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +DB      102,15,58,15,224,4
> > > > >
> > > > > +        and     r12d,r8d
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +DB      102,15,58,15,250,4
> > > > >
> > > > > +        add     r11d,DWORD[rsp]
> > > > >
> > > > > +        mov     r15d,eax
> > > > >
> > > > > +        xor     r12d,r10d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        xor     r15d,ebx
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +        movdqa  xmm6,xmm4
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        psrld   xmm4,3
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        add     r11d,r13d
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        paddd   xmm0,xmm7
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     edx,r11d
> > > > >
> > > > > +        psrld   xmm6,7
> > > > >
> > > > > +        add     r11d,edi
> > > > >
> > > > > +        mov     r13d,edx
> > > > >
> > > > > +        pshufd  xmm7,xmm3,250
> > > > >
> > > > > +        add     r14d,r11d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        pslld   xmm5,14
> > > > >
> > > > > +        mov     r11d,r14d
> > > > >
> > > > > +        mov     r12d,r8d
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        xor     r12d,r9d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        psrld   xmm6,11
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        and     r12d,edx
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        pslld   xmm5,11
> > > > >
> > > > > +        add     r10d,DWORD[4+rsp]
> > > > >
> > > > > +        mov     edi,r11d
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +        xor     r12d,r9d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        psrld   xmm7,10
> > > > >
> > > > > +        add     r10d,r13d
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +        paddd   xmm0,xmm4
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     ecx,r10d
> > > > >
> > > > > +        psrlq   xmm6,17
> > > > >
> > > > > +        add     r10d,r15d
> > > > >
> > > > > +        mov     r13d,ecx
> > > > >
> > > > > +        add     r14d,r10d
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r10d,r14d
> > > > >
> > > > > +        mov     r12d,edx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        psrlq   xmm6,2
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        xor     r12d,r8d
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        and     r12d,ecx
> > > > >
> > > > > +        pshufd  xmm7,xmm7,128
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        add     r9d,DWORD[8+rsp]
> > > > >
> > > > > +        mov     r15d,r10d
> > > > >
> > > > > +        psrldq  xmm7,8
> > > > >
> > > > > +        xor     r12d,r8d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,r11d
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        paddd   xmm0,xmm7
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        add     r9d,r13d
> > > > >
> > > > > +        pshufd  xmm7,xmm0,80
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     ebx,r9d
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        add     r9d,edi
> > > > >
> > > > > +        mov     r13d,ebx
> > > > >
> > > > > +        psrld   xmm7,10
> > > > >
> > > > > +        add     r14d,r9d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        psrlq   xmm6,17
> > > > >
> > > > > +        mov     r9d,r14d
> > > > >
> > > > > +        mov     r12d,ecx
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        xor     r12d,edx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        psrlq   xmm6,2
> > > > >
> > > > > +        and     r12d,ebx
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        add     r8d,DWORD[12+rsp]
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        mov     edi,r9d
> > > > >
> > > > > +        xor     r12d,edx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        pshufd  xmm7,xmm7,8
> > > > >
> > > > > +        xor     edi,r10d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[rbp]
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        pslldq  xmm7,8
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        add     r8d,r13d
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +        paddd   xmm0,xmm7
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     eax,r8d
> > > > >
> > > > > +        add     r8d,r15d
> > > > >
> > > > > +        paddd   xmm6,xmm0
> > > > >
> > > > > +        mov     r13d,eax
> > > > >
> > > > > +        add     r14d,r8d
> > > > >
> > > > > +        movdqa  XMMWORD[rsp],xmm6
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        movdqa  xmm4,xmm2
> > > > >
> > > > > +        mov     r8d,r14d
> > > > >
> > > > > +        mov     r12d,ebx
> > > > >
> > > > > +        movdqa  xmm7,xmm0
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        xor     r12d,ecx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +DB      102,15,58,15,225,4
> > > > >
> > > > > +        and     r12d,eax
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +DB      102,15,58,15,251,4
> > > > >
> > > > > +        add     edx,DWORD[16+rsp]
> > > > >
> > > > > +        mov     r15d,r8d
> > > > >
> > > > > +        xor     r12d,ecx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        xor     r15d,r9d
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +        movdqa  xmm6,xmm4
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        psrld   xmm4,3
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        add     edx,r13d
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +        paddd   xmm1,xmm7
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r11d,edx
> > > > >
> > > > > +        psrld   xmm6,7
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        mov     r13d,r11d
> > > > >
> > > > > +        pshufd  xmm7,xmm0,250
> > > > >
> > > > > +        add     r14d,edx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        pslld   xmm5,14
> > > > >
> > > > > +        mov     edx,r14d
> > > > >
> > > > > +        mov     r12d,eax
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        xor     r12d,ebx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        psrld   xmm6,11
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        and     r12d,r11d
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        pslld   xmm5,11
> > > > >
> > > > > +        add     ecx,DWORD[20+rsp]
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +        xor     r12d,ebx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        xor     edi,r8d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        psrld   xmm7,10
> > > > >
> > > > > +        add     ecx,r13d
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +        paddd   xmm1,xmm4
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r10d,ecx
> > > > >
> > > > > +        psrlq   xmm6,17
> > > > >
> > > > > +        add     ecx,r15d
> > > > >
> > > > > +        mov     r13d,r10d
> > > > >
> > > > > +        add     r14d,ecx
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     ecx,r14d
> > > > >
> > > > > +        mov     r12d,r11d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        psrlq   xmm6,2
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        xor     r12d,eax
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        and     r12d,r10d
> > > > >
> > > > > +        pshufd  xmm7,xmm7,128
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        add     ebx,DWORD[24+rsp]
> > > > >
> > > > > +        mov     r15d,ecx
> > > > >
> > > > > +        psrldq  xmm7,8
> > > > >
> > > > > +        xor     r12d,eax
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,edx
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        paddd   xmm1,xmm7
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        add     ebx,r13d
> > > > >
> > > > > +        pshufd  xmm7,xmm1,80
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r9d,ebx
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        mov     r13d,r9d
> > > > >
> > > > > +        psrld   xmm7,10
> > > > >
> > > > > +        add     r14d,ebx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        psrlq   xmm6,17
> > > > >
> > > > > +        mov     ebx,r14d
> > > > >
> > > > > +        mov     r12d,r10d
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        xor     r12d,r11d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        psrlq   xmm6,2
> > > > >
> > > > > +        and     r12d,r9d
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        add     eax,DWORD[28+rsp]
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        xor     r12d,r11d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        pshufd  xmm7,xmm7,8
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[32+rbp]
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        pslldq  xmm7,8
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        add     eax,r13d
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +        paddd   xmm1,xmm7
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r8d,eax
> > > > >
> > > > > +        add     eax,r15d
> > > > >
> > > > > +        paddd   xmm6,xmm1
> > > > >
> > > > > +        mov     r13d,r8d
> > > > >
> > > > > +        add     r14d,eax
> > > > >
> > > > > +        movdqa  XMMWORD[16+rsp],xmm6
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        movdqa  xmm4,xmm3
> > > > >
> > > > > +        mov     eax,r14d
> > > > >
> > > > > +        mov     r12d,r9d
> > > > >
> > > > > +        movdqa  xmm7,xmm1
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        xor     r12d,r10d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +DB      102,15,58,15,226,4
> > > > >
> > > > > +        and     r12d,r8d
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +DB      102,15,58,15,248,4
> > > > >
> > > > > +        add     r11d,DWORD[32+rsp]
> > > > >
> > > > > +        mov     r15d,eax
> > > > >
> > > > > +        xor     r12d,r10d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        xor     r15d,ebx
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +        movdqa  xmm6,xmm4
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        psrld   xmm4,3
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        add     r11d,r13d
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        paddd   xmm2,xmm7
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     edx,r11d
> > > > >
> > > > > +        psrld   xmm6,7
> > > > >
> > > > > +        add     r11d,edi
> > > > >
> > > > > +        mov     r13d,edx
> > > > >
> > > > > +        pshufd  xmm7,xmm1,250
> > > > >
> > > > > +        add     r14d,r11d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        pslld   xmm5,14
> > > > >
> > > > > +        mov     r11d,r14d
> > > > >
> > > > > +        mov     r12d,r8d
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        xor     r12d,r9d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        psrld   xmm6,11
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        and     r12d,edx
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        pslld   xmm5,11
> > > > >
> > > > > +        add     r10d,DWORD[36+rsp]
> > > > >
> > > > > +        mov     edi,r11d
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +        xor     r12d,r9d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        psrld   xmm7,10
> > > > >
> > > > > +        add     r10d,r13d
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +        paddd   xmm2,xmm4
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     ecx,r10d
> > > > >
> > > > > +        psrlq   xmm6,17
> > > > >
> > > > > +        add     r10d,r15d
> > > > >
> > > > > +        mov     r13d,ecx
> > > > >
> > > > > +        add     r14d,r10d
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r10d,r14d
> > > > >
> > > > > +        mov     r12d,edx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        psrlq   xmm6,2
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        xor     r12d,r8d
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        and     r12d,ecx
> > > > >
> > > > > +        pshufd  xmm7,xmm7,128
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        add     r9d,DWORD[40+rsp]
> > > > >
> > > > > +        mov     r15d,r10d
> > > > >
> > > > > +        psrldq  xmm7,8
> > > > >
> > > > > +        xor     r12d,r8d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,r11d
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        paddd   xmm2,xmm7
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        add     r9d,r13d
> > > > >
> > > > > +        pshufd  xmm7,xmm2,80
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     ebx,r9d
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        add     r9d,edi
> > > > >
> > > > > +        mov     r13d,ebx
> > > > >
> > > > > +        psrld   xmm7,10
> > > > >
> > > > > +        add     r14d,r9d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        psrlq   xmm6,17
> > > > >
> > > > > +        mov     r9d,r14d
> > > > >
> > > > > +        mov     r12d,ecx
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        xor     r12d,edx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        psrlq   xmm6,2
> > > > >
> > > > > +        and     r12d,ebx
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        add     r8d,DWORD[44+rsp]
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        mov     edi,r9d
> > > > >
> > > > > +        xor     r12d,edx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        pshufd  xmm7,xmm7,8
> > > > >
> > > > > +        xor     edi,r10d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[64+rbp]
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        pslldq  xmm7,8
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        add     r8d,r13d
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +        paddd   xmm2,xmm7
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     eax,r8d
> > > > >
> > > > > +        add     r8d,r15d
> > > > >
> > > > > +        paddd   xmm6,xmm2
> > > > >
> > > > > +        mov     r13d,eax
> > > > >
> > > > > +        add     r14d,r8d
> > > > >
> > > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        movdqa  xmm4,xmm0
> > > > >
> > > > > +        mov     r8d,r14d
> > > > >
> > > > > +        mov     r12d,ebx
> > > > >
> > > > > +        movdqa  xmm7,xmm2
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        xor     r12d,ecx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +DB      102,15,58,15,227,4
> > > > >
> > > > > +        and     r12d,eax
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +DB      102,15,58,15,249,4
> > > > >
> > > > > +        add     edx,DWORD[48+rsp]
> > > > >
> > > > > +        mov     r15d,r8d
> > > > >
> > > > > +        xor     r12d,ecx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        movdqa  xmm5,xmm4
> > > > >
> > > > > +        xor     r15d,r9d
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +        movdqa  xmm6,xmm4
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        psrld   xmm4,3
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        add     edx,r13d
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +        paddd   xmm3,xmm7
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r11d,edx
> > > > >
> > > > > +        psrld   xmm6,7
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        mov     r13d,r11d
> > > > >
> > > > > +        pshufd  xmm7,xmm2,250
> > > > >
> > > > > +        add     r14d,edx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        pslld   xmm5,14
> > > > >
> > > > > +        mov     edx,r14d
> > > > >
> > > > > +        mov     r12d,eax
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        xor     r12d,ebx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        psrld   xmm6,11
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        and     r12d,r11d
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        pslld   xmm5,11
> > > > >
> > > > > +        add     ecx,DWORD[52+rsp]
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        pxor    xmm4,xmm6
> > > > >
> > > > > +        xor     r12d,ebx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        xor     edi,r8d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +        pxor    xmm4,xmm5
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        psrld   xmm7,10
> > > > >
> > > > > +        add     ecx,r13d
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +        paddd   xmm3,xmm4
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r10d,ecx
> > > > >
> > > > > +        psrlq   xmm6,17
> > > > >
> > > > > +        add     ecx,r15d
> > > > >
> > > > > +        mov     r13d,r10d
> > > > >
> > > > > +        add     r14d,ecx
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     ecx,r14d
> > > > >
> > > > > +        mov     r12d,r11d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        psrlq   xmm6,2
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        xor     r12d,eax
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        and     r12d,r10d
> > > > >
> > > > > +        pshufd  xmm7,xmm7,128
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        add     ebx,DWORD[56+rsp]
> > > > >
> > > > > +        mov     r15d,ecx
> > > > >
> > > > > +        psrldq  xmm7,8
> > > > >
> > > > > +        xor     r12d,eax
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,edx
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        paddd   xmm3,xmm7
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        add     ebx,r13d
> > > > >
> > > > > +        pshufd  xmm7,xmm3,80
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r9d,ebx
> > > > >
> > > > > +        movdqa  xmm6,xmm7
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        mov     r13d,r9d
> > > > >
> > > > > +        psrld   xmm7,10
> > > > >
> > > > > +        add     r14d,ebx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        psrlq   xmm6,17
> > > > >
> > > > > +        mov     ebx,r14d
> > > > >
> > > > > +        mov     r12d,r10d
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        xor     r12d,r11d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        psrlq   xmm6,2
> > > > >
> > > > > +        and     r12d,r9d
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        add     eax,DWORD[60+rsp]
> > > > >
> > > > > +        pxor    xmm7,xmm6
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        xor     r12d,r11d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        pshufd  xmm7,xmm7,8
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +        movdqa  xmm6,XMMWORD[96+rbp]
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        pslldq  xmm7,8
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        add     eax,r13d
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +        paddd   xmm3,xmm7
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r8d,eax
> > > > >
> > > > > +        add     eax,r15d
> > > > >
> > > > > +        paddd   xmm6,xmm3
> > > > >
> > > > > +        mov     r13d,r8d
> > > > >
> > > > > +        add     r14d,eax
> > > > >
> > > > > +        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
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        xor     r12d,r10d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        and     r12d,r8d
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        add     r11d,DWORD[rsp]
> > > > >
> > > > > +        mov     r15d,eax
> > > > >
> > > > > +        xor     r12d,r10d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,ebx
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        add     r11d,r13d
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     edx,r11d
> > > > >
> > > > > +        add     r11d,edi
> > > > >
> > > > > +        mov     r13d,edx
> > > > >
> > > > > +        add     r14d,r11d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r11d,r14d
> > > > >
> > > > > +        mov     r12d,r8d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        xor     r12d,r9d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        and     r12d,edx
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        add     r10d,DWORD[4+rsp]
> > > > >
> > > > > +        mov     edi,r11d
> > > > >
> > > > > +        xor     r12d,r9d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        add     r10d,r13d
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     ecx,r10d
> > > > >
> > > > > +        add     r10d,r15d
> > > > >
> > > > > +        mov     r13d,ecx
> > > > >
> > > > > +        add     r14d,r10d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r10d,r14d
> > > > >
> > > > > +        mov     r12d,edx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        xor     r12d,r8d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        and     r12d,ecx
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        add     r9d,DWORD[8+rsp]
> > > > >
> > > > > +        mov     r15d,r10d
> > > > >
> > > > > +        xor     r12d,r8d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,r11d
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        add     r9d,r13d
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     ebx,r9d
> > > > >
> > > > > +        add     r9d,edi
> > > > >
> > > > > +        mov     r13d,ebx
> > > > >
> > > > > +        add     r14d,r9d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r9d,r14d
> > > > >
> > > > > +        mov     r12d,ecx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        xor     r12d,edx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        and     r12d,ebx
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        add     r8d,DWORD[12+rsp]
> > > > >
> > > > > +        mov     edi,r9d
> > > > >
> > > > > +        xor     r12d,edx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     edi,r10d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        add     r8d,r13d
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     eax,r8d
> > > > >
> > > > > +        add     r8d,r15d
> > > > >
> > > > > +        mov     r13d,eax
> > > > >
> > > > > +        add     r14d,r8d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r8d,r14d
> > > > >
> > > > > +        mov     r12d,ebx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        xor     r12d,ecx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        and     r12d,eax
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        add     edx,DWORD[16+rsp]
> > > > >
> > > > > +        mov     r15d,r8d
> > > > >
> > > > > +        xor     r12d,ecx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,r9d
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        add     edx,r13d
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r11d,edx
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        mov     r13d,r11d
> > > > >
> > > > > +        add     r14d,edx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edx,r14d
> > > > >
> > > > > +        mov     r12d,eax
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        xor     r12d,ebx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        and     r12d,r11d
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        add     ecx,DWORD[20+rsp]
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        xor     r12d,ebx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     edi,r8d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        add     ecx,r13d
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r10d,ecx
> > > > >
> > > > > +        add     ecx,r15d
> > > > >
> > > > > +        mov     r13d,r10d
> > > > >
> > > > > +        add     r14d,ecx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     ecx,r14d
> > > > >
> > > > > +        mov     r12d,r11d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        xor     r12d,eax
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        and     r12d,r10d
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        add     ebx,DWORD[24+rsp]
> > > > >
> > > > > +        mov     r15d,ecx
> > > > >
> > > > > +        xor     r12d,eax
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,edx
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        add     ebx,r13d
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r9d,ebx
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        mov     r13d,r9d
> > > > >
> > > > > +        add     r14d,ebx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     ebx,r14d
> > > > >
> > > > > +        mov     r12d,r10d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        xor     r12d,r11d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        and     r12d,r9d
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        add     eax,DWORD[28+rsp]
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        xor     r12d,r11d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        add     eax,r13d
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r8d,eax
> > > > >
> > > > > +        add     eax,r15d
> > > > >
> > > > > +        mov     r13d,r8d
> > > > >
> > > > > +        add     r14d,eax
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     eax,r14d
> > > > >
> > > > > +        mov     r12d,r9d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        xor     r12d,r10d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        and     r12d,r8d
> > > > >
> > > > > +        xor     r13d,r8d
> > > > >
> > > > > +        add     r11d,DWORD[32+rsp]
> > > > >
> > > > > +        mov     r15d,eax
> > > > >
> > > > > +        xor     r12d,r10d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,ebx
> > > > >
> > > > > +        add     r11d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,eax
> > > > >
> > > > > +        add     r11d,r13d
> > > > >
> > > > > +        xor     edi,ebx
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     edx,r11d
> > > > >
> > > > > +        add     r11d,edi
> > > > >
> > > > > +        mov     r13d,edx
> > > > >
> > > > > +        add     r14d,r11d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r11d,r14d
> > > > >
> > > > > +        mov     r12d,r8d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        xor     r12d,r9d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        and     r12d,edx
> > > > >
> > > > > +        xor     r13d,edx
> > > > >
> > > > > +        add     r10d,DWORD[36+rsp]
> > > > >
> > > > > +        mov     edi,r11d
> > > > >
> > > > > +        xor     r12d,r9d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     edi,eax
> > > > >
> > > > > +        add     r10d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,r11d
> > > > >
> > > > > +        add     r10d,r13d
> > > > >
> > > > > +        xor     r15d,eax
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     ecx,r10d
> > > > >
> > > > > +        add     r10d,r15d
> > > > >
> > > > > +        mov     r13d,ecx
> > > > >
> > > > > +        add     r14d,r10d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r10d,r14d
> > > > >
> > > > > +        mov     r12d,edx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        xor     r12d,r8d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        and     r12d,ecx
> > > > >
> > > > > +        xor     r13d,ecx
> > > > >
> > > > > +        add     r9d,DWORD[40+rsp]
> > > > >
> > > > > +        mov     r15d,r10d
> > > > >
> > > > > +        xor     r12d,r8d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,r11d
> > > > >
> > > > > +        add     r9d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,r10d
> > > > >
> > > > > +        add     r9d,r13d
> > > > >
> > > > > +        xor     edi,r11d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     ebx,r9d
> > > > >
> > > > > +        add     r9d,edi
> > > > >
> > > > > +        mov     r13d,ebx
> > > > >
> > > > > +        add     r14d,r9d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r9d,r14d
> > > > >
> > > > > +        mov     r12d,ecx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        xor     r12d,edx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        and     r12d,ebx
> > > > >
> > > > > +        xor     r13d,ebx
> > > > >
> > > > > +        add     r8d,DWORD[44+rsp]
> > > > >
> > > > > +        mov     edi,r9d
> > > > >
> > > > > +        xor     r12d,edx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     edi,r10d
> > > > >
> > > > > +        add     r8d,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,r9d
> > > > >
> > > > > +        add     r8d,r13d
> > > > >
> > > > > +        xor     r15d,r10d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     eax,r8d
> > > > >
> > > > > +        add     r8d,r15d
> > > > >
> > > > > +        mov     r13d,eax
> > > > >
> > > > > +        add     r14d,r8d
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     r8d,r14d
> > > > >
> > > > > +        mov     r12d,ebx
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        xor     r12d,ecx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        and     r12d,eax
> > > > >
> > > > > +        xor     r13d,eax
> > > > >
> > > > > +        add     edx,DWORD[48+rsp]
> > > > >
> > > > > +        mov     r15d,r8d
> > > > >
> > > > > +        xor     r12d,ecx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,r9d
> > > > >
> > > > > +        add     edx,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,r8d
> > > > >
> > > > > +        add     edx,r13d
> > > > >
> > > > > +        xor     edi,r9d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r11d,edx
> > > > >
> > > > > +        add     edx,edi
> > > > >
> > > > > +        mov     r13d,r11d
> > > > >
> > > > > +        add     r14d,edx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     edx,r14d
> > > > >
> > > > > +        mov     r12d,eax
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        xor     r12d,ebx
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        and     r12d,r11d
> > > > >
> > > > > +        xor     r13d,r11d
> > > > >
> > > > > +        add     ecx,DWORD[52+rsp]
> > > > >
> > > > > +        mov     edi,edx
> > > > >
> > > > > +        xor     r12d,ebx
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     edi,r8d
> > > > >
> > > > > +        add     ecx,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,edx
> > > > >
> > > > > +        add     ecx,r13d
> > > > >
> > > > > +        xor     r15d,r8d
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r10d,ecx
> > > > >
> > > > > +        add     ecx,r15d
> > > > >
> > > > > +        mov     r13d,r10d
> > > > >
> > > > > +        add     r14d,ecx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     ecx,r14d
> > > > >
> > > > > +        mov     r12d,r11d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        xor     r12d,eax
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        and     r12d,r10d
> > > > >
> > > > > +        xor     r13d,r10d
> > > > >
> > > > > +        add     ebx,DWORD[56+rsp]
> > > > >
> > > > > +        mov     r15d,ecx
> > > > >
> > > > > +        xor     r12d,eax
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     r15d,edx
> > > > >
> > > > > +        add     ebx,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     edi,r15d
> > > > >
> > > > > +        xor     r14d,ecx
> > > > >
> > > > > +        add     ebx,r13d
> > > > >
> > > > > +        xor     edi,edx
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r9d,ebx
> > > > >
> > > > > +        add     ebx,edi
> > > > >
> > > > > +        mov     r13d,r9d
> > > > >
> > > > > +        add     r14d,ebx
> > > > >
> > > > > +        ror     r13d,14
> > > > >
> > > > > +        mov     ebx,r14d
> > > > >
> > > > > +        mov     r12d,r10d
> > > > >
> > > > > +        ror     r14d,9
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        xor     r12d,r11d
> > > > >
> > > > > +        ror     r13d,5
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        and     r12d,r9d
> > > > >
> > > > > +        xor     r13d,r9d
> > > > >
> > > > > +        add     eax,DWORD[60+rsp]
> > > > >
> > > > > +        mov     edi,ebx
> > > > >
> > > > > +        xor     r12d,r11d
> > > > >
> > > > > +        ror     r14d,11
> > > > >
> > > > > +        xor     edi,ecx
> > > > >
> > > > > +        add     eax,r12d
> > > > >
> > > > > +        ror     r13d,6
> > > > >
> > > > > +        and     r15d,edi
> > > > >
> > > > > +        xor     r14d,ebx
> > > > >
> > > > > +        add     eax,r13d
> > > > >
> > > > > +        xor     r15d,ecx
> > > > >
> > > > > +        ror     r14d,2
> > > > >
> > > > > +        add     r8d,eax
> > > > >
> > > > > +        add     eax,r15d
> > > > >
> > > > > +        mov     r13d,r8d
> > > > >
> > > > > +        add     r14d,eax
> > > > >
> > > > > +        mov     rdi,QWORD[((64+0))+rsp]
> > > > >
> > > > > +        mov     eax,r14d
> > > > >
> > > > > +
> > > > >
> > > > > +        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[((64+16))+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        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[88+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[((-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$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:
> > > > >
> > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$in_prologue
> > > > >
> > > > > +        mov     rsi,rax
> > > > >
> > > > > +        mov     rax,QWORD[((64+24))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        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,[$L$epilogue]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((64+32))+rsi]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,8
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +$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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +shaext_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$prologue_shaext]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     r10,[$L$epilogue_shaext]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((-8-80))+rax]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,10
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        jmp     NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +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_shaext
> > > wrt ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_end_sha256_block_data_order_shaext wrt
> > ..imagebase
> > > > >
> > > > > +        DD      $L$SEH_info_sha256_block_data_order_shaext 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_shaext:
> > > > >
> > > > > +DB      9,0,0,0
> > > > >
> > > > > +        DD      shaext_handler 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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-
> > > x86_64.nasm
> > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..c6397d4393
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
> > > > > @@ -0,0 +1,1938 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > >
> > > > > +global  sha512_block_data_order
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +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:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +        mov     rsi,rdx
> > > > >
> > > > > +        mov     rdx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +
> > > > >
> > > > > +        shl     rdx,4
> > > > >
> > > > > +        sub     rsp,16*8+4*8
> > > > >
> > > > > +        lea     rdx,[rdx*8+rsi]
> > > > >
> > > > > +        and     rsp,-64
> > > > >
> > > > > +        mov     QWORD[((128+0))+rsp],rdi
> > > > >
> > > > > +        mov     QWORD[((128+8))+rsp],rsi
> > > > >
> > > > > +        mov     QWORD[((128+16))+rsp],rdx
> > > > >
> > > > > +        mov     QWORD[152+rsp],rax
> > > > >
> > > > > +
> > > > >
> > > > > +$L$prologue:
> > > > >
> > > > > +
> > > > >
> > > > > +        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:
> > > > >
> > > > > +        mov     rdi,rbx
> > > > >
> > > > > +        lea     rbp,[K512]
> > > > >
> > > > > +        xor     rdi,rcx
> > > > >
> > > > > +        mov     r12,QWORD[rsi]
> > > > >
> > > > > +        mov     r13,r8
> > > > >
> > > > > +        mov     r14,rax
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[rsp],r12
> > > > >
> > > > > +        xor     r14,rax
> > > > >
> > > > > +        and     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r11
> > > > >
> > > > > +        xor     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,rax
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,rbx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r11,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r11,rdi
> > > > >
> > > > > +        add     rdx,r12
> > > > >
> > > > > +        add     r11,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        add     r11,r14
> > > > >
> > > > > +        mov     r12,QWORD[8+rsi]
> > > > >
> > > > > +        mov     r13,rdx
> > > > >
> > > > > +        mov     r14,r11
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rdx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[8+rsp],r12
> > > > >
> > > > > +        xor     r14,r11
> > > > >
> > > > > +        and     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r10
> > > > >
> > > > > +        xor     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rdx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,r11
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,rax
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r10,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r10,r15
> > > > >
> > > > > +        add     rcx,r12
> > > > >
> > > > > +        add     r10,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        add     r10,r14
> > > > >
> > > > > +        mov     r12,QWORD[16+rsi]
> > > > >
> > > > > +        mov     r13,rcx
> > > > >
> > > > > +        mov     r14,r10
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rcx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[16+rsp],r12
> > > > >
> > > > > +        xor     r14,r10
> > > > >
> > > > > +        and     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r9
> > > > >
> > > > > +        xor     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rcx
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,r10
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,r11
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r9,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r9,rdi
> > > > >
> > > > > +        add     rbx,r12
> > > > >
> > > > > +        add     r9,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        add     r9,r14
> > > > >
> > > > > +        mov     r12,QWORD[24+rsi]
> > > > >
> > > > > +        mov     r13,rbx
> > > > >
> > > > > +        mov     r14,r9
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rbx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[24+rsp],r12
> > > > >
> > > > > +        xor     r14,r9
> > > > >
> > > > > +        and     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r8
> > > > >
> > > > > +        xor     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rbx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,r9
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,r10
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r8,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r8,r15
> > > > >
> > > > > +        add     rax,r12
> > > > >
> > > > > +        add     r8,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        add     r8,r14
> > > > >
> > > > > +        mov     r12,QWORD[32+rsi]
> > > > >
> > > > > +        mov     r13,rax
> > > > >
> > > > > +        mov     r14,r8
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rax
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[32+rsp],r12
> > > > >
> > > > > +        xor     r14,r8
> > > > >
> > > > > +        and     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rdx
> > > > >
> > > > > +        xor     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rax
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,r8
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,r9
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rdx,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdx,rdi
> > > > >
> > > > > +        add     r11,r12
> > > > >
> > > > > +        add     rdx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        add     rdx,r14
> > > > >
> > > > > +        mov     r12,QWORD[40+rsi]
> > > > >
> > > > > +        mov     r13,r11
> > > > >
> > > > > +        mov     r14,rdx
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r11
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[40+rsp],r12
> > > > >
> > > > > +        xor     r14,rdx
> > > > >
> > > > > +        and     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rcx
> > > > >
> > > > > +        xor     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r11
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,rdx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,r8
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rcx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rcx,r15
> > > > >
> > > > > +        add     r10,r12
> > > > >
> > > > > +        add     rcx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        add     rcx,r14
> > > > >
> > > > > +        mov     r12,QWORD[48+rsi]
> > > > >
> > > > > +        mov     r13,r10
> > > > >
> > > > > +        mov     r14,rcx
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r10
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[48+rsp],r12
> > > > >
> > > > > +        xor     r14,rcx
> > > > >
> > > > > +        and     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rbx
> > > > >
> > > > > +        xor     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r10
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,rcx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,rdx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rbx,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rbx,rdi
> > > > >
> > > > > +        add     r9,r12
> > > > >
> > > > > +        add     rbx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        add     rbx,r14
> > > > >
> > > > > +        mov     r12,QWORD[56+rsi]
> > > > >
> > > > > +        mov     r13,r9
> > > > >
> > > > > +        mov     r14,rbx
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r9
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[56+rsp],r12
> > > > >
> > > > > +        xor     r14,rbx
> > > > >
> > > > > +        and     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rax
> > > > >
> > > > > +        xor     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r9
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,rbx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,rcx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rax,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rax,r15
> > > > >
> > > > > +        add     r8,r12
> > > > >
> > > > > +        add     rax,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        add     rax,r14
> > > > >
> > > > > +        mov     r12,QWORD[64+rsi]
> > > > >
> > > > > +        mov     r13,r8
> > > > >
> > > > > +        mov     r14,rax
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[64+rsp],r12
> > > > >
> > > > > +        xor     r14,rax
> > > > >
> > > > > +        and     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r11
> > > > >
> > > > > +        xor     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,rax
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,rbx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r11,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r11,rdi
> > > > >
> > > > > +        add     rdx,r12
> > > > >
> > > > > +        add     r11,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        add     r11,r14
> > > > >
> > > > > +        mov     r12,QWORD[72+rsi]
> > > > >
> > > > > +        mov     r13,rdx
> > > > >
> > > > > +        mov     r14,r11
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rdx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[72+rsp],r12
> > > > >
> > > > > +        xor     r14,r11
> > > > >
> > > > > +        and     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r10
> > > > >
> > > > > +        xor     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rdx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,r11
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,rax
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r10,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r10,r15
> > > > >
> > > > > +        add     rcx,r12
> > > > >
> > > > > +        add     r10,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        add     r10,r14
> > > > >
> > > > > +        mov     r12,QWORD[80+rsi]
> > > > >
> > > > > +        mov     r13,rcx
> > > > >
> > > > > +        mov     r14,r10
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rcx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[80+rsp],r12
> > > > >
> > > > > +        xor     r14,r10
> > > > >
> > > > > +        and     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r9
> > > > >
> > > > > +        xor     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rcx
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,r10
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,r11
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r9,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r9,rdi
> > > > >
> > > > > +        add     rbx,r12
> > > > >
> > > > > +        add     r9,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        add     r9,r14
> > > > >
> > > > > +        mov     r12,QWORD[88+rsi]
> > > > >
> > > > > +        mov     r13,rbx
> > > > >
> > > > > +        mov     r14,r9
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rbx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[88+rsp],r12
> > > > >
> > > > > +        xor     r14,r9
> > > > >
> > > > > +        and     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r8
> > > > >
> > > > > +        xor     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rbx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,r9
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,r10
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r8,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r8,r15
> > > > >
> > > > > +        add     rax,r12
> > > > >
> > > > > +        add     r8,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        add     r8,r14
> > > > >
> > > > > +        mov     r12,QWORD[96+rsi]
> > > > >
> > > > > +        mov     r13,rax
> > > > >
> > > > > +        mov     r14,r8
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rax
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[96+rsp],r12
> > > > >
> > > > > +        xor     r14,r8
> > > > >
> > > > > +        and     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rdx
> > > > >
> > > > > +        xor     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rax
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,r8
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,r9
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rdx,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdx,rdi
> > > > >
> > > > > +        add     r11,r12
> > > > >
> > > > > +        add     rdx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        add     rdx,r14
> > > > >
> > > > > +        mov     r12,QWORD[104+rsi]
> > > > >
> > > > > +        mov     r13,r11
> > > > >
> > > > > +        mov     r14,rdx
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r11
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[104+rsp],r12
> > > > >
> > > > > +        xor     r14,rdx
> > > > >
> > > > > +        and     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rcx
> > > > >
> > > > > +        xor     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r11
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,rdx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,r8
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rcx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rcx,r15
> > > > >
> > > > > +        add     r10,r12
> > > > >
> > > > > +        add     rcx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        add     rcx,r14
> > > > >
> > > > > +        mov     r12,QWORD[112+rsi]
> > > > >
> > > > > +        mov     r13,r10
> > > > >
> > > > > +        mov     r14,rcx
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r10
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[112+rsp],r12
> > > > >
> > > > > +        xor     r14,rcx
> > > > >
> > > > > +        and     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rbx
> > > > >
> > > > > +        xor     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r10
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,rcx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,rdx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rbx,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rbx,rdi
> > > > >
> > > > > +        add     r9,r12
> > > > >
> > > > > +        add     rbx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        add     rbx,r14
> > > > >
> > > > > +        mov     r12,QWORD[120+rsi]
> > > > >
> > > > > +        mov     r13,r9
> > > > >
> > > > > +        mov     r14,rbx
> > > > >
> > > > > +        bswap   r12
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r9
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[120+rsp],r12
> > > > >
> > > > > +        xor     r14,rbx
> > > > >
> > > > > +        and     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rax
> > > > >
> > > > > +        xor     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r9
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,rbx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,rcx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rax,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rax,r15
> > > > >
> > > > > +        add     r8,r12
> > > > >
> > > > > +        add     rax,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        jmp     NEAR $L$rounds_16_xx
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$rounds_16_xx:
> > > > >
> > > > > +        mov     r13,QWORD[8+rsp]
> > > > >
> > > > > +        mov     r15,QWORD[112+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     rax,r14
> > > > >
> > > > > +        mov     r14,r15
> > > > >
> > > > > +        ror     r15,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        add     r12,QWORD[72+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[rsp]
> > > > >
> > > > > +        mov     r13,r8
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +        mov     r14,rax
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[rsp],r12
> > > > >
> > > > > +        xor     r14,rax
> > > > >
> > > > > +        and     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r11
> > > > >
> > > > > +        xor     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,rax
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,rbx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r11,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r11,rdi
> > > > >
> > > > > +        add     rdx,r12
> > > > >
> > > > > +        add     r11,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[16+rsp]
> > > > >
> > > > > +        mov     rdi,QWORD[120+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     r11,r14
> > > > >
> > > > > +        mov     r14,rdi
> > > > >
> > > > > +        ror     rdi,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     rdi,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        add     r12,QWORD[80+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[8+rsp]
> > > > >
> > > > > +        mov     r13,rdx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +        mov     r14,r11
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rdx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[8+rsp],r12
> > > > >
> > > > > +        xor     r14,r11
> > > > >
> > > > > +        and     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r10
> > > > >
> > > > > +        xor     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rdx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,r11
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,rax
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r10,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r10,r15
> > > > >
> > > > > +        add     rcx,r12
> > > > >
> > > > > +        add     r10,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[24+rsp]
> > > > >
> > > > > +        mov     r15,QWORD[rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     r10,r14
> > > > >
> > > > > +        mov     r14,r15
> > > > >
> > > > > +        ror     r15,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        add     r12,QWORD[88+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[16+rsp]
> > > > >
> > > > > +        mov     r13,rcx
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +        mov     r14,r10
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rcx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[16+rsp],r12
> > > > >
> > > > > +        xor     r14,r10
> > > > >
> > > > > +        and     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r9
> > > > >
> > > > > +        xor     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rcx
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,r10
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,r11
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r9,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r9,rdi
> > > > >
> > > > > +        add     rbx,r12
> > > > >
> > > > > +        add     r9,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[32+rsp]
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     r9,r14
> > > > >
> > > > > +        mov     r14,rdi
> > > > >
> > > > > +        ror     rdi,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     rdi,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        add     r12,QWORD[96+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[24+rsp]
> > > > >
> > > > > +        mov     r13,rbx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +        mov     r14,r9
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rbx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[24+rsp],r12
> > > > >
> > > > > +        xor     r14,r9
> > > > >
> > > > > +        and     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r8
> > > > >
> > > > > +        xor     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rbx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,r9
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,r10
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r8,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r8,r15
> > > > >
> > > > > +        add     rax,r12
> > > > >
> > > > > +        add     r8,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r15,QWORD[16+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     r8,r14
> > > > >
> > > > > +        mov     r14,r15
> > > > >
> > > > > +        ror     r15,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        add     r12,QWORD[104+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[32+rsp]
> > > > >
> > > > > +        mov     r13,rax
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +        mov     r14,r8
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rax
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[32+rsp],r12
> > > > >
> > > > > +        xor     r14,r8
> > > > >
> > > > > +        and     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rdx
> > > > >
> > > > > +        xor     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rax
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,r8
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,r9
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rdx,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdx,rdi
> > > > >
> > > > > +        add     r11,r12
> > > > >
> > > > > +        add     rdx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[48+rsp]
> > > > >
> > > > > +        mov     rdi,QWORD[24+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     rdx,r14
> > > > >
> > > > > +        mov     r14,rdi
> > > > >
> > > > > +        ror     rdi,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     rdi,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        add     r12,QWORD[112+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[40+rsp]
> > > > >
> > > > > +        mov     r13,r11
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +        mov     r14,rdx
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r11
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[40+rsp],r12
> > > > >
> > > > > +        xor     r14,rdx
> > > > >
> > > > > +        and     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rcx
> > > > >
> > > > > +        xor     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r11
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,rdx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,r8
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rcx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rcx,r15
> > > > >
> > > > > +        add     r10,r12
> > > > >
> > > > > +        add     rcx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[56+rsp]
> > > > >
> > > > > +        mov     r15,QWORD[32+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     rcx,r14
> > > > >
> > > > > +        mov     r14,r15
> > > > >
> > > > > +        ror     r15,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        add     r12,QWORD[120+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[48+rsp]
> > > > >
> > > > > +        mov     r13,r10
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +        mov     r14,rcx
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r10
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[48+rsp],r12
> > > > >
> > > > > +        xor     r14,rcx
> > > > >
> > > > > +        and     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rbx
> > > > >
> > > > > +        xor     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r10
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,rcx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,rdx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rbx,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rbx,rdi
> > > > >
> > > > > +        add     r9,r12
> > > > >
> > > > > +        add     rbx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[64+rsp]
> > > > >
> > > > > +        mov     rdi,QWORD[40+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     rbx,r14
> > > > >
> > > > > +        mov     r14,rdi
> > > > >
> > > > > +        ror     rdi,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     rdi,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        add     r12,QWORD[rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[56+rsp]
> > > > >
> > > > > +        mov     r13,r9
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +        mov     r14,rbx
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r9
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[56+rsp],r12
> > > > >
> > > > > +        xor     r14,rbx
> > > > >
> > > > > +        and     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rax
> > > > >
> > > > > +        xor     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r9
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,rbx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,rcx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rax,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rax,r15
> > > > >
> > > > > +        add     r8,r12
> > > > >
> > > > > +        add     rax,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[72+rsp]
> > > > >
> > > > > +        mov     r15,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     rax,r14
> > > > >
> > > > > +        mov     r14,r15
> > > > >
> > > > > +        ror     r15,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        add     r12,QWORD[8+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[64+rsp]
> > > > >
> > > > > +        mov     r13,r8
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +        mov     r14,rax
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[64+rsp],r12
> > > > >
> > > > > +        xor     r14,rax
> > > > >
> > > > > +        and     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r11
> > > > >
> > > > > +        xor     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r8
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,rax
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,rbx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r11,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r11,rdi
> > > > >
> > > > > +        add     rdx,r12
> > > > >
> > > > > +        add     r11,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[80+rsp]
> > > > >
> > > > > +        mov     rdi,QWORD[56+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     r11,r14
> > > > >
> > > > > +        mov     r14,rdi
> > > > >
> > > > > +        ror     rdi,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     rdi,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        add     r12,QWORD[16+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[72+rsp]
> > > > >
> > > > > +        mov     r13,rdx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +        mov     r14,r11
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rdx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[72+rsp],r12
> > > > >
> > > > > +        xor     r14,r11
> > > > >
> > > > > +        and     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r10
> > > > >
> > > > > +        xor     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rdx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,r11
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,rax
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r10,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r10,r15
> > > > >
> > > > > +        add     rcx,r12
> > > > >
> > > > > +        add     r10,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[88+rsp]
> > > > >
> > > > > +        mov     r15,QWORD[64+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     r10,r14
> > > > >
> > > > > +        mov     r14,r15
> > > > >
> > > > > +        ror     r15,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        add     r12,QWORD[24+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[80+rsp]
> > > > >
> > > > > +        mov     r13,rcx
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +        mov     r14,r10
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rcx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[80+rsp],r12
> > > > >
> > > > > +        xor     r14,r10
> > > > >
> > > > > +        and     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r9
> > > > >
> > > > > +        xor     r15,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rcx
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,r10
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,r11
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r9,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r9,rdi
> > > > >
> > > > > +        add     rbx,r12
> > > > >
> > > > > +        add     r9,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[96+rsp]
> > > > >
> > > > > +        mov     rdi,QWORD[72+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     r9,r14
> > > > >
> > > > > +        mov     r14,rdi
> > > > >
> > > > > +        ror     rdi,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     rdi,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        add     r12,QWORD[32+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[88+rsp]
> > > > >
> > > > > +        mov     r13,rbx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +        mov     r14,r9
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rbx
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[88+rsp],r12
> > > > >
> > > > > +        xor     r14,r9
> > > > >
> > > > > +        and     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,r8
> > > > >
> > > > > +        xor     rdi,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rbx
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,r9
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,r10
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     r8,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r8,r15
> > > > >
> > > > > +        add     rax,r12
> > > > >
> > > > > +        add     r8,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[104+rsp]
> > > > >
> > > > > +        mov     r15,QWORD[80+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     r8,r14
> > > > >
> > > > > +        mov     r14,r15
> > > > >
> > > > > +        ror     r15,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        add     r12,QWORD[40+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[96+rsp]
> > > > >
> > > > > +        mov     r13,rax
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +        mov     r14,r8
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,rax
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[96+rsp],r12
> > > > >
> > > > > +        xor     r14,r8
> > > > >
> > > > > +        and     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rdx
> > > > >
> > > > > +        xor     r15,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,rax
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,r8
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,r9
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rdx,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdx,rdi
> > > > >
> > > > > +        add     r11,r12
> > > > >
> > > > > +        add     rdx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[112+rsp]
> > > > >
> > > > > +        mov     rdi,QWORD[88+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     rdx,r14
> > > > >
> > > > > +        mov     r14,rdi
> > > > >
> > > > > +        ror     rdi,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     rdi,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        add     r12,QWORD[48+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[104+rsp]
> > > > >
> > > > > +        mov     r13,r11
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +        mov     r14,rdx
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r11
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[104+rsp],r12
> > > > >
> > > > > +        xor     r14,rdx
> > > > >
> > > > > +        and     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rcx
> > > > >
> > > > > +        xor     rdi,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r11
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,rdx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,r8
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rcx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rcx,r15
> > > > >
> > > > > +        add     r10,r12
> > > > >
> > > > > +        add     rcx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[120+rsp]
> > > > >
> > > > > +        mov     r15,QWORD[96+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     rcx,r14
> > > > >
> > > > > +        mov     r14,r15
> > > > >
> > > > > +        ror     r15,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r15,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     r15,r14
> > > > >
> > > > > +        add     r12,QWORD[56+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[112+rsp]
> > > > >
> > > > > +        mov     r13,r10
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +        mov     r14,rcx
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     r15,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r10
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[112+rsp],r12
> > > > >
> > > > > +        xor     r14,rcx
> > > > >
> > > > > +        and     r15,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rbx
> > > > >
> > > > > +        xor     r15,rax
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r10
> > > > >
> > > > > +        add     r12,r15
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r15,rcx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r15,rdx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rbx,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     rdi,r15
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rbx,rdi
> > > > >
> > > > > +        add     r9,r12
> > > > >
> > > > > +        add     rbx,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[8+rbp]
> > > > >
> > > > > +        mov     r13,QWORD[rsp]
> > > > >
> > > > > +        mov     rdi,QWORD[104+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r12,r13
> > > > >
> > > > > +        ror     r13,7
> > > > >
> > > > > +        add     rbx,r14
> > > > >
> > > > > +        mov     r14,rdi
> > > > >
> > > > > +        ror     rdi,42
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r12
> > > > >
> > > > > +        shr     r12,7
> > > > >
> > > > > +        ror     r13,1
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        shr     r14,6
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     rdi,19
> > > > >
> > > > > +        xor     r12,r13
> > > > >
> > > > > +        xor     rdi,r14
> > > > >
> > > > > +        add     r12,QWORD[64+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        add     r12,QWORD[120+rsp]
> > > > >
> > > > > +        mov     r13,r9
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +        mov     r14,rbx
> > > > >
> > > > > +        ror     r13,23
> > > > >
> > > > > +        mov     rdi,r10
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     r13,r9
> > > > >
> > > > > +        ror     r14,5
> > > > >
> > > > > +        xor     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     QWORD[120+rsp],r12
> > > > >
> > > > > +        xor     r14,rbx
> > > > >
> > > > > +        and     rdi,r9
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r13,4
> > > > >
> > > > > +        add     r12,rax
> > > > >
> > > > > +        xor     rdi,r11
> > > > >
> > > > > +
> > > > >
> > > > > +        ror     r14,6
> > > > >
> > > > > +        xor     r13,r9
> > > > >
> > > > > +        add     r12,rdi
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,rbx
> > > > >
> > > > > +        add     r12,QWORD[rbp]
> > > > >
> > > > > +        xor     r14,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rdi,rcx
> > > > >
> > > > > +        ror     r13,14
> > > > >
> > > > > +        mov     rax,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        and     r15,rdi
> > > > >
> > > > > +        ror     r14,28
> > > > >
> > > > > +        add     r12,r13
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rax,r15
> > > > >
> > > > > +        add     r8,r12
> > > > >
> > > > > +        add     rax,r12
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rbp,[24+rbp]
> > > > >
> > > > > +        cmp     BYTE[7+rbp],0
> > > > >
> > > > > +        jnz     NEAR $L$rounds_16_xx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rdi,QWORD[((128+0))+rsp]
> > > > >
> > > > > +        add     rax,r14
> > > > >
> > > > > +        lea     rsi,[128+rsi]
> > > > >
> > > > > +
> > > > >
> > > > > +        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[((128+16))+rsp]
> > > > >
> > > > > +
> > > > >
> > > > > +        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[152+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$epilogue:
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_sha512_block_data_order:
> > > > >
> > > > > +ALIGN   64
> > > > >
> > > > > +
> > > > >
> > > > > +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      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
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +se_handler:
> > > > >
> > > > > +        push    rsi
> > > > >
> > > > > +        push    rdi
> > > > >
> > > > > +        push    rbx
> > > > >
> > > > > +        push    rbp
> > > > >
> > > > > +        push    r12
> > > > >
> > > > > +        push    r13
> > > > >
> > > > > +        push    r14
> > > > >
> > > > > +        push    r15
> > > > >
> > > > > +        pushfq
> > > > >
> > > > > +        sub     rsp,64
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[120+r8]
> > > > >
> > > > > +        mov     rbx,QWORD[248+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,QWORD[8+r9]
> > > > >
> > > > > +        mov     r11,QWORD[56+r9]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,QWORD[152+r8]
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,DWORD[4+r11]
> > > > >
> > > > > +        lea     r10,[r10*1+rsi]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jae     NEAR $L$in_prologue
> > > > >
> > > > > +        mov     rsi,rax
> > > > >
> > > > > +        mov     rax,QWORD[((128+24))+rax]
> > > > >
> > > > > +
> > > > >
> > > > > +        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,[$L$epilogue]
> > > > >
> > > > > +        cmp     rbx,r10
> > > > >
> > > > > +        jb      NEAR $L$in_prologue
> > > > >
> > > > > +
> > > > >
> > > > > +        lea     rsi,[((128+32))+rsi]
> > > > >
> > > > > +        lea     rdi,[512+r8]
> > > > >
> > > > > +        mov     ecx,12
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +$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[40+r9]
> > > > >
> > > > > +        mov     rsi,r8
> > > > >
> > > > > +        mov     ecx,154
> > > > >
> > > > > +        DD      0xa548f3fc
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rsi,r9
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        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
> > > > >
> > > > > +        popfq
> > > > >
> > > > > +        pop     r15
> > > > >
> > > > > +        pop     r14
> > > > >
> > > > > +        pop     r13
> > > > >
> > > > > +        pop     r12
> > > > >
> > > > > +        pop     rbp
> > > > >
> > > > > +        pop     rbx
> > > > >
> > > > > +        pop     rdi
> > > > >
> > > > > +        pop     rsi
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +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/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > > > > new file mode 100644
> > > > > index 0000000000..2a3d5bcf72
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > > > > @@ -0,0 +1,491 @@
> > > > > +; WARNING: do not edit!
> > > > >
> > > > > +; Generated from openssl/crypto/x86_64cpuid.pl
> > > > >
> > > > > +;
> > > > >
> > > > > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
> > Reserved.
> > > > >
> > > > > +;
> > > > >
> > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > >
> > > > > +; this file except in compliance with the License.  You can obtain a
> > copy
> > > > >
> > > > > +; in the file LICENSE in the source distribution or at
> > > > >
> > > > > +; https://www.openssl.org/source/license.html
> > > > >
> > > > > +
> > > > >
> > > > > +default rel
> > > > >
> > > > > +%define XMMWORD
> > > > >
> > > > > +%define YMMWORD
> > > > >
> > > > > +%define ZMMWORD
> > > > >
> > > > > +EXTERN  OPENSSL_cpuid_setup
> > > > >
> > > > > +
> > > > >
> > > > > +section .CRT$XCU rdata align=8
> > > > >
> > > > > +                DQ      OPENSSL_cpuid_setup
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +common  OPENSSL_ia32cap_P 16
> > > > >
> > > > > +
> > > > >
> > > > > +section .text code align=64
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  OPENSSL_atomic_add
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +OPENSSL_atomic_add:
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,DWORD[rcx]
> > > > >
> > > > > +$L$spin:        lea     r8,[rax*1+rdx]
> > > > >
> > > > > +DB      0xf0
> > > > >
> > > > > +        cmpxchg DWORD[rcx],r8d
> > > > >
> > > > > +        jne     NEAR $L$spin
> > > > >
> > > > > +        mov     eax,r8d
> > > > >
> > > > > +DB      0x48,0x98
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  OPENSSL_rdtsc
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +OPENSSL_rdtsc:
> > > > >
> > > > > +
> > > > >
> > > > > +        rdtsc
> > > > >
> > > > > +        shl     rdx,32
> > > > >
> > > > > +        or      rax,rdx
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  OPENSSL_ia32_cpuid
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +OPENSSL_ia32_cpuid:
> > > > >
> > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > >
> > > > > +        mov     QWORD[16+rsp],rsi
> > > > >
> > > > > +        mov     rax,rsp
> > > > >
> > > > > +$L$SEH_begin_OPENSSL_ia32_cpuid:
> > > > >
> > > > > +        mov     rdi,rcx
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r8,rbx
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     eax,eax
> > > > >
> > > > > +        mov     QWORD[8+rdi],rax
> > > > >
> > > > > +        cpuid
> > > > >
> > > > > +        mov     r11d,eax
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     eax,eax
> > > > >
> > > > > +        cmp     ebx,0x756e6547
> > > > >
> > > > > +        setne   al
> > > > >
> > > > > +        mov     r9d,eax
> > > > >
> > > > > +        cmp     edx,0x49656e69
> > > > >
> > > > > +        setne   al
> > > > >
> > > > > +        or      r9d,eax
> > > > >
> > > > > +        cmp     ecx,0x6c65746e
> > > > >
> > > > > +        setne   al
> > > > >
> > > > > +        or      r9d,eax
> > > > >
> > > > > +        jz      NEAR $L$intel
> > > > >
> > > > > +
> > > > >
> > > > > +        cmp     ebx,0x68747541
> > > > >
> > > > > +        setne   al
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +        cmp     edx,0x69746E65
> > > > >
> > > > > +        setne   al
> > > > >
> > > > > +        or      r10d,eax
> > > > >
> > > > > +        cmp     ecx,0x444D4163
> > > > >
> > > > > +        setne   al
> > > > >
> > > > > +        or      r10d,eax
> > > > >
> > > > > +        jnz     NEAR $L$intel
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,0x80000000
> > > > >
> > > > > +        cpuid
> > > > >
> > > > > +        cmp     eax,0x80000001
> > > > >
> > > > > +        jb      NEAR $L$intel
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +        mov     eax,0x80000001
> > > > >
> > > > > +        cpuid
> > > > >
> > > > > +        or      r9d,ecx
> > > > >
> > > > > +        and     r9d,0x00000801
> > > > >
> > > > > +
> > > > >
> > > > > +        cmp     r10d,0x80000008
> > > > >
> > > > > +        jb      NEAR $L$intel
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,0x80000008
> > > > >
> > > > > +        cpuid
> > > > >
> > > > > +        movzx   r10,cl
> > > > >
> > > > > +        inc     r10
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,1
> > > > >
> > > > > +        cpuid
> > > > >
> > > > > +        bt      edx,28
> > > > >
> > > > > +        jnc     NEAR $L$generic
> > > > >
> > > > > +        shr     ebx,16
> > > > >
> > > > > +        cmp     bl,r10b
> > > > >
> > > > > +        ja      NEAR $L$generic
> > > > >
> > > > > +        and     edx,0xefffffff
> > > > >
> > > > > +        jmp     NEAR $L$generic
> > > > >
> > > > > +
> > > > >
> > > > > +$L$intel:
> > > > >
> > > > > +        cmp     r11d,4
> > > > >
> > > > > +        mov     r10d,-1
> > > > >
> > > > > +        jb      NEAR $L$nocacheinfo
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     eax,4
> > > > >
> > > > > +        mov     ecx,0
> > > > >
> > > > > +        cpuid
> > > > >
> > > > > +        mov     r10d,eax
> > > > >
> > > > > +        shr     r10d,14
> > > > >
> > > > > +        and     r10d,0xfff
> > > > >
> > > > > +
> > > > >
> > > > > +$L$nocacheinfo:
> > > > >
> > > > > +        mov     eax,1
> > > > >
> > > > > +        cpuid
> > > > >
> > > > > +        movd    xmm0,eax
> > > > >
> > > > > +        and     edx,0xbfefffff
> > > > >
> > > > > +        cmp     r9d,0
> > > > >
> > > > > +        jne     NEAR $L$notintel
> > > > >
> > > > > +        or      edx,0x40000000
> > > > >
> > > > > +        and     ah,15
> > > > >
> > > > > +        cmp     ah,15
> > > > >
> > > > > +        jne     NEAR $L$notP4
> > > > >
> > > > > +        or      edx,0x00100000
> > > > >
> > > > > +$L$notP4:
> > > > >
> > > > > +        cmp     ah,6
> > > > >
> > > > > +        jne     NEAR $L$notintel
> > > > >
> > > > > +        and     eax,0x0fff0ff0
> > > > >
> > > > > +        cmp     eax,0x00050670
> > > > >
> > > > > +        je      NEAR $L$knights
> > > > >
> > > > > +        cmp     eax,0x00080650
> > > > >
> > > > > +        jne     NEAR $L$notintel
> > > > >
> > > > > +$L$knights:
> > > > >
> > > > > +        and     ecx,0xfbffffff
> > > > >
> > > > > +
> > > > >
> > > > > +$L$notintel:
> > > > >
> > > > > +        bt      edx,28
> > > > >
> > > > > +        jnc     NEAR $L$generic
> > > > >
> > > > > +        and     edx,0xefffffff
> > > > >
> > > > > +        cmp     r10d,0
> > > > >
> > > > > +        je      NEAR $L$generic
> > > > >
> > > > > +
> > > > >
> > > > > +        or      edx,0x10000000
> > > > >
> > > > > +        shr     ebx,16
> > > > >
> > > > > +        cmp     bl,1
> > > > >
> > > > > +        ja      NEAR $L$generic
> > > > >
> > > > > +        and     edx,0xefffffff
> > > > >
> > > > > +$L$generic:
> > > > >
> > > > > +        and     r9d,0x00000800
> > > > >
> > > > > +        and     ecx,0xfffff7ff
> > > > >
> > > > > +        or      r9d,ecx
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10d,edx
> > > > >
> > > > > +
> > > > >
> > > > > +        cmp     r11d,7
> > > > >
> > > > > +        jb      NEAR $L$no_extended_info
> > > > >
> > > > > +        mov     eax,7
> > > > >
> > > > > +        xor     ecx,ecx
> > > > >
> > > > > +        cpuid
> > > > >
> > > > > +        bt      r9d,26
> > > > >
> > > > > +        jc      NEAR $L$notknights
> > > > >
> > > > > +        and     ebx,0xfff7ffff
> > > > >
> > > > > +$L$notknights:
> > > > >
> > > > > +        movd    eax,xmm0
> > > > >
> > > > > +        and     eax,0x0fff0ff0
> > > > >
> > > > > +        cmp     eax,0x00050650
> > > > >
> > > > > +        jne     NEAR $L$notskylakex
> > > > >
> > > > > +        and     ebx,0xfffeffff
> > > > >
> > > > > +
> > > > >
> > > > > +$L$notskylakex:
> > > > >
> > > > > +        mov     DWORD[8+rdi],ebx
> > > > >
> > > > > +        mov     DWORD[12+rdi],ecx
> > > > >
> > > > > +$L$no_extended_info:
> > > > >
> > > > > +
> > > > >
> > > > > +        bt      r9d,27
> > > > >
> > > > > +        jnc     NEAR $L$clear_avx
> > > > >
> > > > > +        xor     ecx,ecx
> > > > >
> > > > > +DB      0x0f,0x01,0xd0
> > > > >
> > > > > +        and     eax,0xe6
> > > > >
> > > > > +        cmp     eax,0xe6
> > > > >
> > > > > +        je      NEAR $L$done
> > > > >
> > > > > +        and     DWORD[8+rdi],0x3fdeffff
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +        and     eax,6
> > > > >
> > > > > +        cmp     eax,6
> > > > >
> > > > > +        je      NEAR $L$done
> > > > >
> > > > > +$L$clear_avx:
> > > > >
> > > > > +        mov     eax,0xefffe7ff
> > > > >
> > > > > +        and     r9d,eax
> > > > >
> > > > > +        mov     eax,0x3fdeffdf
> > > > >
> > > > > +        and     DWORD[8+rdi],eax
> > > > >
> > > > > +$L$done:
> > > > >
> > > > > +        shl     r9,32
> > > > >
> > > > > +        mov     eax,r10d
> > > > >
> > > > > +        mov     rbx,r8
> > > > >
> > > > > +
> > > > >
> > > > > +        or      rax,r9
> > > > >
> > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > >
> > > > > +        mov     rsi,QWORD[16+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +$L$SEH_end_OPENSSL_ia32_cpuid:
> > > > >
> > > > > +
> > > > >
> > > > > +global  OPENSSL_cleanse
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +OPENSSL_cleanse:
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rax,rax
> > > > >
> > > > > +        cmp     rdx,15
> > > > >
> > > > > +        jae     NEAR $L$ot
> > > > >
> > > > > +        cmp     rdx,0
> > > > >
> > > > > +        je      NEAR $L$ret
> > > > >
> > > > > +$L$ittle:
> > > > >
> > > > > +        mov     BYTE[rcx],al
> > > > >
> > > > > +        sub     rdx,1
> > > > >
> > > > > +        lea     rcx,[1+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$ittle
> > > > >
> > > > > +$L$ret:
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$ot:
> > > > >
> > > > > +        test    rcx,7
> > > > >
> > > > > +        jz      NEAR $L$aligned
> > > > >
> > > > > +        mov     BYTE[rcx],al
> > > > >
> > > > > +        lea     rdx,[((-1))+rdx]
> > > > >
> > > > > +        lea     rcx,[1+rcx]
> > > > >
> > > > > +        jmp     NEAR $L$ot
> > > > >
> > > > > +$L$aligned:
> > > > >
> > > > > +        mov     QWORD[rcx],rax
> > > > >
> > > > > +        lea     rdx,[((-8))+rdx]
> > > > >
> > > > > +        test    rdx,-8
> > > > >
> > > > > +        lea     rcx,[8+rcx]
> > > > >
> > > > > +        jnz     NEAR $L$aligned
> > > > >
> > > > > +        cmp     rdx,0
> > > > >
> > > > > +        jne     NEAR $L$ittle
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  CRYPTO_memcmp
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +CRYPTO_memcmp:
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rax,rax
> > > > >
> > > > > +        xor     r10,r10
> > > > >
> > > > > +        cmp     r8,0
> > > > >
> > > > > +        je      NEAR $L$no_data
> > > > >
> > > > > +        cmp     r8,16
> > > > >
> > > > > +        jne     NEAR $L$oop_cmp
> > > > >
> > > > > +        mov     r10,QWORD[rcx]
> > > > >
> > > > > +        mov     r11,QWORD[8+rcx]
> > > > >
> > > > > +        mov     r8,1
> > > > >
> > > > > +        xor     r10,QWORD[rdx]
> > > > >
> > > > > +        xor     r11,QWORD[8+rdx]
> > > > >
> > > > > +        or      r10,r11
> > > > >
> > > > > +        cmovnz  rax,r8
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$oop_cmp:
> > > > >
> > > > > +        mov     r10b,BYTE[rcx]
> > > > >
> > > > > +        lea     rcx,[1+rcx]
> > > > >
> > > > > +        xor     r10b,BYTE[rdx]
> > > > >
> > > > > +        lea     rdx,[1+rdx]
> > > > >
> > > > > +        or      al,r10b
> > > > >
> > > > > +        dec     r8
> > > > >
> > > > > +        jnz     NEAR $L$oop_cmp
> > > > >
> > > > > +        neg     rax
> > > > >
> > > > > +        shr     rax,63
> > > > >
> > > > > +$L$no_data:
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  OPENSSL_wipe_cpu
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +OPENSSL_wipe_cpu:
> > > > >
> > > > > +        pxor    xmm0,xmm0
> > > > >
> > > > > +        pxor    xmm1,xmm1
> > > > >
> > > > > +        pxor    xmm2,xmm2
> > > > >
> > > > > +        pxor    xmm3,xmm3
> > > > >
> > > > > +        pxor    xmm4,xmm4
> > > > >
> > > > > +        pxor    xmm5,xmm5
> > > > >
> > > > > +        xor     rcx,rcx
> > > > >
> > > > > +        xor     rdx,rdx
> > > > >
> > > > > +        xor     r8,r8
> > > > >
> > > > > +        xor     r9,r9
> > > > >
> > > > > +        xor     r10,r10
> > > > >
> > > > > +        xor     r11,r11
> > > > >
> > > > > +        lea     rax,[8+rsp]
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +global  OPENSSL_instrument_bus
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +OPENSSL_instrument_bus:
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10,rcx
> > > > >
> > > > > +        mov     rcx,rdx
> > > > >
> > > > > +        mov     r11,rdx
> > > > >
> > > > > +
> > > > >
> > > > > +        rdtsc
> > > > >
> > > > > +        mov     r8d,eax
> > > > >
> > > > > +        mov     r9d,0
> > > > >
> > > > > +        clflush [r10]
> > > > >
> > > > > +DB      0xf0
> > > > >
> > > > > +        add     DWORD[r10],r9d
> > > > >
> > > > > +        jmp     NEAR $L$oop
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$oop: rdtsc
> > > > >
> > > > > +        mov     edx,eax
> > > > >
> > > > > +        sub     eax,r8d
> > > > >
> > > > > +        mov     r8d,edx
> > > > >
> > > > > +        mov     r9d,eax
> > > > >
> > > > > +        clflush [r10]
> > > > >
> > > > > +DB      0xf0
> > > > >
> > > > > +        add     DWORD[r10],eax
> > > > >
> > > > > +        lea     r10,[4+r10]
> > > > >
> > > > > +        sub     rcx,1
> > > > >
> > > > > +        jnz     NEAR $L$oop
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     rax,r11
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  OPENSSL_instrument_bus2
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +OPENSSL_instrument_bus2:
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r10,rcx
> > > > >
> > > > > +        mov     rcx,rdx
> > > > >
> > > > > +        mov     r11,r8
> > > > >
> > > > > +        mov     QWORD[8+rsp],rcx
> > > > >
> > > > > +
> > > > >
> > > > > +        rdtsc
> > > > >
> > > > > +        mov     r8d,eax
> > > > >
> > > > > +        mov     r9d,0
> > > > >
> > > > > +
> > > > >
> > > > > +        clflush [r10]
> > > > >
> > > > > +DB      0xf0
> > > > >
> > > > > +        add     DWORD[r10],r9d
> > > > >
> > > > > +
> > > > >
> > > > > +        rdtsc
> > > > >
> > > > > +        mov     edx,eax
> > > > >
> > > > > +        sub     eax,r8d
> > > > >
> > > > > +        mov     r8d,edx
> > > > >
> > > > > +        mov     r9d,eax
> > > > >
> > > > > +$L$oop2:
> > > > >
> > > > > +        clflush [r10]
> > > > >
> > > > > +DB      0xf0
> > > > >
> > > > > +        add     DWORD[r10],eax
> > > > >
> > > > > +
> > > > >
> > > > > +        sub     r11,1
> > > > >
> > > > > +        jz      NEAR $L$done2
> > > > >
> > > > > +
> > > > >
> > > > > +        rdtsc
> > > > >
> > > > > +        mov     edx,eax
> > > > >
> > > > > +        sub     eax,r8d
> > > > >
> > > > > +        mov     r8d,edx
> > > > >
> > > > > +        cmp     eax,r9d
> > > > >
> > > > > +        mov     r9d,eax
> > > > >
> > > > > +        mov     edx,0
> > > > >
> > > > > +        setne   dl
> > > > >
> > > > > +        sub     rcx,rdx
> > > > >
> > > > > +        lea     r10,[rdx*4+r10]
> > > > >
> > > > > +        jnz     NEAR $L$oop2
> > > > >
> > > > > +
> > > > >
> > > > > +$L$done2:
> > > > >
> > > > > +        mov     rax,QWORD[8+rsp]
> > > > >
> > > > > +        sub     rax,rcx
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  OPENSSL_ia32_rdrand_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +OPENSSL_ia32_rdrand_bytes:
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rax,rax
> > > > >
> > > > > +        cmp     rdx,0
> > > > >
> > > > > +        je      NEAR $L$done_rdrand_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r11,8
> > > > >
> > > > > +$L$oop_rdrand_bytes:
> > > > >
> > > > > +DB      73,15,199,242
> > > > >
> > > > > +        jc      NEAR $L$break_rdrand_bytes
> > > > >
> > > > > +        dec     r11
> > > > >
> > > > > +        jnz     NEAR $L$oop_rdrand_bytes
> > > > >
> > > > > +        jmp     NEAR $L$done_rdrand_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$break_rdrand_bytes:
> > > > >
> > > > > +        cmp     rdx,8
> > > > >
> > > > > +        jb      NEAR $L$tail_rdrand_bytes
> > > > >
> > > > > +        mov     QWORD[rcx],r10
> > > > >
> > > > > +        lea     rcx,[8+rcx]
> > > > >
> > > > > +        add     rax,8
> > > > >
> > > > > +        sub     rdx,8
> > > > >
> > > > > +        jz      NEAR $L$done_rdrand_bytes
> > > > >
> > > > > +        mov     r11,8
> > > > >
> > > > > +        jmp     NEAR $L$oop_rdrand_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$tail_rdrand_bytes:
> > > > >
> > > > > +        mov     BYTE[rcx],r10b
> > > > >
> > > > > +        lea     rcx,[1+rcx]
> > > > >
> > > > > +        inc     rax
> > > > >
> > > > > +        shr     r10,8
> > > > >
> > > > > +        dec     rdx
> > > > >
> > > > > +        jnz     NEAR $L$tail_rdrand_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +$L$done_rdrand_bytes:
> > > > >
> > > > > +        xor     r10,r10
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > +global  OPENSSL_ia32_rdseed_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +OPENSSL_ia32_rdseed_bytes:
> > > > >
> > > > > +
> > > > >
> > > > > +        xor     rax,rax
> > > > >
> > > > > +        cmp     rdx,0
> > > > >
> > > > > +        je      NEAR $L$done_rdseed_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +        mov     r11,8
> > > > >
> > > > > +$L$oop_rdseed_bytes:
> > > > >
> > > > > +DB      73,15,199,250
> > > > >
> > > > > +        jc      NEAR $L$break_rdseed_bytes
> > > > >
> > > > > +        dec     r11
> > > > >
> > > > > +        jnz     NEAR $L$oop_rdseed_bytes
> > > > >
> > > > > +        jmp     NEAR $L$done_rdseed_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$break_rdseed_bytes:
> > > > >
> > > > > +        cmp     rdx,8
> > > > >
> > > > > +        jb      NEAR $L$tail_rdseed_bytes
> > > > >
> > > > > +        mov     QWORD[rcx],r10
> > > > >
> > > > > +        lea     rcx,[8+rcx]
> > > > >
> > > > > +        add     rax,8
> > > > >
> > > > > +        sub     rdx,8
> > > > >
> > > > > +        jz      NEAR $L$done_rdseed_bytes
> > > > >
> > > > > +        mov     r11,8
> > > > >
> > > > > +        jmp     NEAR $L$oop_rdseed_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +ALIGN   16
> > > > >
> > > > > +$L$tail_rdseed_bytes:
> > > > >
> > > > > +        mov     BYTE[rcx],r10b
> > > > >
> > > > > +        lea     rcx,[1+rcx]
> > > > >
> > > > > +        inc     rax
> > > > >
> > > > > +        shr     r10,8
> > > > >
> > > > > +        dec     rdx
> > > > >
> > > > > +        jnz     NEAR $L$tail_rdseed_bytes
> > > > >
> > > > > +
> > > > >
> > > > > +$L$done_rdseed_bytes:
> > > > >
> > > > > +        xor     r10,r10
> > > > >
> > > > > +        DB      0F3h,0C3h               ;repret
> > > > >
> > > > > +
> > > > >
> > > > > +
> > > > >
> > > > > --
> > > > > 2.28.0.windows.1


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

* Re: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
  2020-08-18  2:36           ` Wang, Jian J
@ 2020-08-18 16:15             ` Michael D Kinney
  2020-08-18 21:33               ` [edk2-devel] " Sean
  0 siblings, 1 reply; 42+ messages in thread
From: Michael D Kinney @ 2020-08-18 16:15 UTC (permalink / raw)
  To: Wang, Jian J, Zurcher, Christopher J, Yao, Jiewen,
	devel@edk2.groups.io, Kinney, Michael D
  Cc: Lu, XiaoyuX, Ard Biesheuvel

Jian,

I want the BaseTools maintainers to evaluate these build requirements.

We already have a number of tool dependencies.  Adding one more for perl
may be acceptable.

Mike

> -----Original Message-----
> From: Wang, Jian J <jian.j.wang@intel.com>
> Sent: Monday, August 17, 2020 7:37 PM
> To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Kinney, Michael D
> <michael.d.kinney@intel.com>; devel@edk2.groups.io
> Cc: Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
> 
> I agree with Christopher. Currently manual works are inevitable in openssl upgrade,
> because perl script is used to automate part of code generation. It's hard to ask
> Windows developers to install an extra interpreter like perl, considering it's not
> popular in Windows environment.
> 
> Regards,
> Jian
> 
> > -----Original Message-----
> > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > Sent: Saturday, August 15, 2020 3:35 AM
> > To: Yao, Jiewen <jiewen.yao@intel.com>; Kinney, Michael D
> > <michael.d.kinney@intel.com>; devel@edk2.groups.io
> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated
> > assembly files for X64
> >
> > The current OpenSSL "UEFI" configuration depends on the OpenSSL build
> > happening in a Unix-like environment. For a Windows-based build, this must be
> > done in a wrapper such as Cygwin/git bash or WSL. Integrating the OpenSSL
> > config step into the build process is a non-trivial change.
> >
> > > > > That means, whenever we upgrade the openssl, we need manually
> > generate
> > > > > them again.
> > > > > Any step by step, or readme to tell us how to do that?
> >
> > The process for generating these X64 files is virtually identical to the already-
> > existing maintainer process for OpensslLib, with only one additional argument
> > required to process_files.pl.
> >
> > OpensslLib as it exists today in EDK2 already includes auto-generated files from
> > the Perl configure process. If we want to re-architect how we include OpenSSL
> > into EDK2, I think that should be done in a different patch set. Additionally, such
> > a large task might be a waste of time with the release of OpenSSL 3 happening
> > later this year. They are making changes to their build system, and I think that if
> > we are going to re-architect our side of it, we should wait until we are adopting
> > OpenSSL 3.
> >
> > --
> > Christopher Zurcher
> >
> > > -----Original Message-----
> > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > Sent: Thursday, August 13, 2020 08:46
> > > To: Kinney, Michael D <michael.d.kinney@intel.com>; Zurcher, Christopher J
> > > <christopher.j.zurcher@intel.com>; devel@edk2.groups.io
> > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > <xiaoyux.lu@intel.com>;
> > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
> > generated
> > > assembly files for X64
> > >
> > > Thank you Mike to help on this.
> > >
> > > I also believe that the best option is to integrate the auto-gen process in
> > > base tool.
> > >
> > >
> > >
> > > > -----Original Message-----
> > > > From: Kinney, Michael D <michael.d.kinney@intel.com>
> > > > Sent: Thursday, August 13, 2020 11:38 PM
> > > > To: Yao, Jiewen <jiewen.yao@intel.com>; Zurcher, Christopher J
> > > > <christopher.j.zurcher@intel.com>; devel@edk2.groups.io; Kinney, Michael
> > D
> > > > <michael.d.kinney@intel.com>
> > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > <xiaoyux.lu@intel.com>;
> > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
> > generated
> > > > assembly files for X64
> > > >
> > > > Hi Jiewen,
> > > >
> > > > For this use case, generating the files as part of the build process would
> > > add
> > > > a dependency in pearl.
> > > >
> > > > Based on other recent CryptoPkg changes and some being discussed in BZ, I
> > > am
> > > > seeing more changes to the OpenSLL .pl configuration files, and I am
> > > concerned
> > > > that based on platform requirements, we may need to build OpenSSL with
> > > > different .pl config file settings which would also add a pearl dependency
> > > > to the build.
> > > >
> > > > So exploring what it would take to add the pearl dependency to the build
> > > system
> > > > is worth exploring and if successful would eliminate the need to checkin
> > > these
> > > > types of autogenerated files.  This would also reduce maintenance of the
> > > > auto-genererated files when EDK II moves to a new version of OpenSSL.
> > > >
> > > > @Cristopher - Can you please share a branch that uses pearl to generate the
> > > > files
> > > > instead of checking them in?  I would like the BaseTools maintainers to
> > > review
> > > > that and evaluate adding the pearl dependency.  Hopefully, we can make the
> > > > pearl dependency detectable so it is only required if the build requires
> > > it.
> > > >
> > > > Thanks,
> > > >
> > > > Mike
> > > >
> > > > > -----Original Message-----
> > > > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > > > Sent: Thursday, August 13, 2020 8:25 AM
> > > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > > > devel@edk2.groups.io
> > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > <xiaoyux.lu@intel.com>; Kinney, Michael D
> > > > > <michael.d.kinney@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
> > > > generated assembly files for X64
> > > > >
> > > > > + Mike Kinney
> > > > >
> > > > > I am not sure if it is a right way to check in auto-generated file.
> > > > > That means, whenever we upgrade the openssl, we need manually
> > generate
> > > > them again.
> > > > > Any step by step, or readme to tell us how to do that?
> > > > >
> > > > > Mike, would you please double confirm what is the right way for auto-
> > > > generated file in EDKII?
> > > > >
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > > > Sent: Tuesday, August 4, 2020 8:24 AM
> > > > > > To: devel@edk2.groups.io
> > > > > > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> > > > <jian.j.wang@intel.com>;
> > > > > > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > > > <ard.biesheuvel@linaro.org>
> > > > > > Subject: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
> > generated
> > > > > > assembly files for X64
> > > > > >
> > > > > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> > > > > >
> > > > > > Adding the auto-generated assembly files for the X64 architecture.
> > > > > >
> > > > > > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > > > > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > > > > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > > > > > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > Signed-off-by: Christopher J Zurcher <christopher.j.zurcher@intel.com>
> > > > > > ---
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm
> > |
> > > > 732
> > > > > > +++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm
> > |
> > > > > > 1916 ++++++++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> > x86_64.nasm |
> > > > > > 78 +
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm        |
> > > > 5103
> > > > > > ++++++++++++++++++++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm        |
> > > > 1173
> > > > > > +++++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm
> > |
> > > > > > 1569 ++++++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm
> > |
> > > > 3137
> > > > > > ++++++++++++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm         |
> > > > 2884
> > > > > > +++++++++++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm
> > |
> > > > > > 3461 +++++++++++++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
> > |
> > > > 3313
> > > > > > +++++++++++++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
> > |
> > > > 1938
> > > > > > ++++++++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm             |
> > > 491
> > > > ++
> > > > > >  12 files changed, 25795 insertions(+)
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
> > > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
> > > > > > x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..1a3ed1dd35
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
> > x86_64.nasm
> > > > > > @@ -0,0 +1,732 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/aes/asm/aesni-mb-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  aesni_multi_cbc_encrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +aesni_multi_cbc_encrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_multi_cbc_encrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-168))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+rax],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+rax],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+rax],xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsp,48
> > > > > >
> > > > > > +        and     rsp,-64
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$enc4x_body:
> > > > > >
> > > > > > +        movdqu  xmm12,XMMWORD[rsi]
> > > > > >
> > > > > > +        lea     rsi,[120+rsi]
> > > > > >
> > > > > > +        lea     rdi,[80+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$enc4x_loop_grande:
> > > > > >
> > > > > > +        mov     DWORD[24+rsp],edx
> > > > > >
> > > > > > +        xor     edx,edx
> > > > > >
> > > > > > +        mov     ecx,DWORD[((-64))+rdi]
> > > > > >
> > > > > > +        mov     r8,QWORD[((-80))+rdi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        mov     r12,QWORD[((-72))+rdi]
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[((-56))+rdi]
> > > > > >
> > > > > > +        mov     DWORD[32+rsp],ecx
> > > > > >
> > > > > > +        cmovle  r8,rsp
> > > > > >
> > > > > > +        mov     ecx,DWORD[((-24))+rdi]
> > > > > >
> > > > > > +        mov     r9,QWORD[((-40))+rdi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        mov     r13,QWORD[((-32))+rdi]
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[((-16))+rdi]
> > > > > >
> > > > > > +        mov     DWORD[36+rsp],ecx
> > > > > >
> > > > > > +        cmovle  r9,rsp
> > > > > >
> > > > > > +        mov     ecx,DWORD[16+rdi]
> > > > > >
> > > > > > +        mov     r10,QWORD[rdi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        mov     r14,QWORD[8+rdi]
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[24+rdi]
> > > > > >
> > > > > > +        mov     DWORD[40+rsp],ecx
> > > > > >
> > > > > > +        cmovle  r10,rsp
> > > > > >
> > > > > > +        mov     ecx,DWORD[56+rdi]
> > > > > >
> > > > > > +        mov     r11,QWORD[40+rdi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        mov     r15,QWORD[48+rdi]
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        mov     DWORD[44+rsp],ecx
> > > > > >
> > > > > > +        cmovle  r11,rsp
> > > > > >
> > > > > > +        test    edx,edx
> > > > > >
> > > > > > +        jz      NEAR $L$enc4x_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((16-120))+rsi]
> > > > > >
> > > > > > +        pxor    xmm2,xmm12
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((32-120))+rsi]
> > > > > >
> > > > > > +        pxor    xmm3,xmm12
> > > > > >
> > > > > > +        mov     eax,DWORD[((240-120))+rsi]
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[r8]
> > > > > >
> > > > > > +        pxor    xmm5,xmm12
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[r9]
> > > > > >
> > > > > > +        pxor    xmm2,xmm6
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[r10]
> > > > > >
> > > > > > +        pxor    xmm3,xmm7
> > > > > >
> > > > > > +        movdqu  xmm9,XMMWORD[r11]
> > > > > >
> > > > > > +        pxor    xmm4,xmm8
> > > > > >
> > > > > > +        pxor    xmm5,xmm9
> > > > > >
> > > > > > +        movdqa  xmm10,XMMWORD[32+rsp]
> > > > > >
> > > > > > +        xor     rbx,rbx
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_enc4x
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$oop_enc4x:
> > > > > >
> > > > > > +        add     rbx,16
> > > > > >
> > > > > > +        lea     rbp,[16+rsp]
> > > > > >
> > > > > > +        mov     ecx,1
> > > > > >
> > > > > > +        sub     rbp,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        prefetcht0      [31+rbx*1+r8]
> > > > > >
> > > > > > +        prefetcht0      [31+rbx*1+r9]
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        prefetcht0      [31+rbx*1+r10]
> > > > > >
> > > > > > +        prefetcht0      [31+rbx*1+r10]
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((48-120))+rsi]
> > > > > >
> > > > > > +        cmp     ecx,DWORD[32+rsp]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +        cmovge  r8,rbp
> > > > > >
> > > > > > +        cmovg   r12,rbp
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-56))+rsi]
> > > > > >
> > > > > > +        cmp     ecx,DWORD[36+rsp]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +        cmovge  r9,rbp
> > > > > >
> > > > > > +        cmovg   r13,rbp
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-40))+rsi]
> > > > > >
> > > > > > +        cmp     ecx,DWORD[40+rsp]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +        cmovge  r10,rbp
> > > > > >
> > > > > > +        cmovg   r14,rbp
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-24))+rsi]
> > > > > >
> > > > > > +        cmp     ecx,DWORD[44+rsp]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +        cmovge  r11,rbp
> > > > > >
> > > > > > +        cmovg   r15,rbp
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-8))+rsi]
> > > > > >
> > > > > > +        movdqa  xmm11,xmm10
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        prefetcht0      [15+rbx*1+r12]
> > > > > >
> > > > > > +        prefetcht0      [15+rbx*1+r13]
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        prefetcht0      [15+rbx*1+r14]
> > > > > >
> > > > > > +        prefetcht0      [15+rbx*1+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((128-120))+rsi]
> > > > > >
> > > > > > +        pxor    xmm12,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        pcmpgtd xmm11,xmm12
> > > > > >
> > > > > > +        movdqu  xmm12,XMMWORD[((-120))+rsi]
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        paddd   xmm10,xmm11
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm10
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((144-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        cmp     eax,11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((160-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jb      NEAR $L$enc4x_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((176-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((192-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        je      NEAR $L$enc4x_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((208-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((224-120))+rsi]
> > > > > >
> > > > > > +        jmp     NEAR $L$enc4x_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$enc4x_tail:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[rbx*1+r8]
> > > > > >
> > > > > > +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,221,208
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[rbx*1+r9]
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +DB      102,15,56,221,216
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[rbx*1+r10]
> > > > > >
> > > > > > +        pxor    xmm7,xmm12
> > > > > >
> > > > > > +DB      102,15,56,221,224
> > > > > >
> > > > > > +        movdqu  xmm9,XMMWORD[rbx*1+r11]
> > > > > >
> > > > > > +        pxor    xmm8,xmm12
> > > > > >
> > > > > > +DB      102,15,56,221,232
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
> > > > > >
> > > > > > +        pxor    xmm9,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm6
> > > > > >
> > > > > > +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm7
> > > > > >
> > > > > > +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm8
> > > > > >
> > > > > > +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_enc4x
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[16+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edx,DWORD[24+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rdi,[160+rdi]
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$enc4x_loop_grande
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$enc4x_done:
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-216))+rax]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-200))+rax]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-184))+rax]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-168))+rax]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-152))+rax]
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-136))+rax]
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-120))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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$enc4x_epilogue:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_aesni_multi_cbc_encrypt:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  aesni_multi_cbc_decrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +aesni_multi_cbc_decrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_multi_cbc_decrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-168))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+rax],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+rax],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+rax],xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsp,48
> > > > > >
> > > > > > +        and     rsp,-64
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$dec4x_body:
> > > > > >
> > > > > > +        movdqu  xmm12,XMMWORD[rsi]
> > > > > >
> > > > > > +        lea     rsi,[120+rsi]
> > > > > >
> > > > > > +        lea     rdi,[80+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$dec4x_loop_grande:
> > > > > >
> > > > > > +        mov     DWORD[24+rsp],edx
> > > > > >
> > > > > > +        xor     edx,edx
> > > > > >
> > > > > > +        mov     ecx,DWORD[((-64))+rdi]
> > > > > >
> > > > > > +        mov     r8,QWORD[((-80))+rdi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        mov     r12,QWORD[((-72))+rdi]
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[((-56))+rdi]
> > > > > >
> > > > > > +        mov     DWORD[32+rsp],ecx
> > > > > >
> > > > > > +        cmovle  r8,rsp
> > > > > >
> > > > > > +        mov     ecx,DWORD[((-24))+rdi]
> > > > > >
> > > > > > +        mov     r9,QWORD[((-40))+rdi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        mov     r13,QWORD[((-32))+rdi]
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[((-16))+rdi]
> > > > > >
> > > > > > +        mov     DWORD[36+rsp],ecx
> > > > > >
> > > > > > +        cmovle  r9,rsp
> > > > > >
> > > > > > +        mov     ecx,DWORD[16+rdi]
> > > > > >
> > > > > > +        mov     r10,QWORD[rdi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        mov     r14,QWORD[8+rdi]
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[24+rdi]
> > > > > >
> > > > > > +        mov     DWORD[40+rsp],ecx
> > > > > >
> > > > > > +        cmovle  r10,rsp
> > > > > >
> > > > > > +        mov     ecx,DWORD[56+rdi]
> > > > > >
> > > > > > +        mov     r11,QWORD[40+rdi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        mov     r15,QWORD[48+rdi]
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        movdqu  xmm9,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        mov     DWORD[44+rsp],ecx
> > > > > >
> > > > > > +        cmovle  r11,rsp
> > > > > >
> > > > > > +        test    edx,edx
> > > > > >
> > > > > > +        jz      NEAR $L$dec4x_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((16-120))+rsi]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((32-120))+rsi]
> > > > > >
> > > > > > +        mov     eax,DWORD[((240-120))+rsi]
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[r8]
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[r9]
> > > > > >
> > > > > > +        pxor    xmm2,xmm12
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[r10]
> > > > > >
> > > > > > +        pxor    xmm3,xmm12
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[r11]
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm5,xmm12
> > > > > >
> > > > > > +        movdqa  xmm10,XMMWORD[32+rsp]
> > > > > >
> > > > > > +        xor     rbx,rbx
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_dec4x
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$oop_dec4x:
> > > > > >
> > > > > > +        add     rbx,16
> > > > > >
> > > > > > +        lea     rbp,[16+rsp]
> > > > > >
> > > > > > +        mov     ecx,1
> > > > > >
> > > > > > +        sub     rbp,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        prefetcht0      [31+rbx*1+r8]
> > > > > >
> > > > > > +        prefetcht0      [31+rbx*1+r9]
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        prefetcht0      [31+rbx*1+r10]
> > > > > >
> > > > > > +        prefetcht0      [31+rbx*1+r11]
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((48-120))+rsi]
> > > > > >
> > > > > > +        cmp     ecx,DWORD[32+rsp]
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +        cmovge  r8,rbp
> > > > > >
> > > > > > +        cmovg   r12,rbp
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-56))+rsi]
> > > > > >
> > > > > > +        cmp     ecx,DWORD[36+rsp]
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +        cmovge  r9,rbp
> > > > > >
> > > > > > +        cmovg   r13,rbp
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-40))+rsi]
> > > > > >
> > > > > > +        cmp     ecx,DWORD[40+rsp]
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +        cmovge  r10,rbp
> > > > > >
> > > > > > +        cmovg   r14,rbp
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-24))+rsi]
> > > > > >
> > > > > > +        cmp     ecx,DWORD[44+rsp]
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +        cmovge  r11,rbp
> > > > > >
> > > > > > +        cmovg   r15,rbp
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-8))+rsi]
> > > > > >
> > > > > > +        movdqa  xmm11,xmm10
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +        prefetcht0      [15+rbx*1+r12]
> > > > > >
> > > > > > +        prefetcht0      [15+rbx*1+r13]
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +        prefetcht0      [15+rbx*1+r14]
> > > > > >
> > > > > > +        prefetcht0      [15+rbx*1+r15]
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((128-120))+rsi]
> > > > > >
> > > > > > +        pxor    xmm12,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        pcmpgtd xmm11,xmm12
> > > > > >
> > > > > > +        movdqu  xmm12,XMMWORD[((-120))+rsi]
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        paddd   xmm10,xmm11
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm10
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((144-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        cmp     eax,11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((160-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jb      NEAR $L$dec4x_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((176-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((192-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        je      NEAR $L$dec4x_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((208-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((224-120))+rsi]
> > > > > >
> > > > > > +        jmp     NEAR $L$dec4x_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$dec4x_tail:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +        pxor    xmm6,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm0
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +        pxor    xmm9,xmm0
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,223,214
> > > > > >
> > > > > > +DB      102,15,56,223,223
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[((-16))+rbx*1+r8]
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[((-16))+rbx*1+r9]
> > > > > >
> > > > > > +DB      102,65,15,56,223,224
> > > > > >
> > > > > > +DB      102,65,15,56,223,233
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[((-16))+rbx*1+r10]
> > > > > >
> > > > > > +        movdqu  xmm9,XMMWORD[((-16))+rbx*1+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rbx*1+r8]
> > > > > >
> > > > > > +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[rbx*1+r9]
> > > > > >
> > > > > > +        pxor    xmm2,xmm12
> > > > > >
> > > > > > +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[rbx*1+r10]
> > > > > >
> > > > > > +        pxor    xmm3,xmm12
> > > > > >
> > > > > > +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[rbx*1+r11]
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm5,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_dec4x
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[16+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edx,DWORD[24+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rdi,[160+rdi]
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$dec4x_loop_grande
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$dec4x_done:
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-216))+rax]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-200))+rax]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-184))+rax]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-168))+rax]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-152))+rax]
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-136))+rax]
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-120))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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$dec4x_epilogue:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_aesni_multi_cbc_decrypt:
> > > > > >
> > > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[16+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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     rsi,[((-56-160))+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,20
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .pdata rdata align=4
> > > > > >
> > > > > > +ALIGN   4
> > > > > >
> > > > > > +        DD      $L$SEH_begin_aesni_multi_cbc_encrypt wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_aesni_multi_cbc_encrypt wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_aesni_multi_cbc_encrypt wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_begin_aesni_multi_cbc_decrypt wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_aesni_multi_cbc_decrypt wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_aesni_multi_cbc_decrypt wrt ..imagebase
> > > > > >
> > > > > > +section .xdata rdata align=8
> > > > > >
> > > > > > +ALIGN   8
> > > > > >
> > > > > > +$L$SEH_info_aesni_multi_cbc_encrypt:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$enc4x_body wrt ..imagebase,$L$enc4x_epilogue
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > +$L$SEH_info_aesni_multi_cbc_decrypt:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$dec4x_body wrt ..imagebase,$L$dec4x_epilogue
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
> > > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
> > sha1-
> > > > > > x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..f4fd9ca50d
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
> > > > x86_64.nasm
> > > > > > @@ -0,0 +1,1916 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/aes/asm/aesni-sha1-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  aesni_cbc_sha1_enc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +aesni_cbc_sha1_enc:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+0))]
> > > > > >
> > > > > > +        mov     r11,QWORD[((OPENSSL_ia32cap_P+4))]
> > > > > >
> > > > > > +        bt      r11,61
> > > > > >
> > > > > > +        jc      NEAR aesni_cbc_sha1_enc_shaext
> > > > > >
> > > > > > +        jmp     NEAR aesni_cbc_sha1_enc_ssse3
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +aesni_cbc_sha1_enc_ssse3:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_cbc_sha1_enc_ssse3:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10,QWORD[56+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-264))+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+0)+rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+16)+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+32)+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+48)+rsp],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+64)+rsp],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+80)+rsp],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+96)+rsp],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+112)+rsp],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+128)+rsp],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+144)+rsp],xmm15
> > > > > >
> > > > > > +$L$prologue_ssse3:
> > > > > >
> > > > > > +        mov     r12,rdi
> > > > > >
> > > > > > +        mov     r13,rsi
> > > > > >
> > > > > > +        mov     r14,rdx
> > > > > >
> > > > > > +        lea     r15,[112+rcx]
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[r8]
> > > > > >
> > > > > > +        mov     QWORD[88+rsp],r8
> > > > > >
> > > > > > +        shl     r14,6
> > > > > >
> > > > > > +        sub     r13,r12
> > > > > >
> > > > > > +        mov     r8d,DWORD[((240-112))+r15]
> > > > > >
> > > > > > +        add     r14,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r11,[K_XX_XX]
> > > > > >
> > > > > > +        mov     eax,DWORD[r9]
> > > > > >
> > > > > > +        mov     ebx,DWORD[4+r9]
> > > > > >
> > > > > > +        mov     ecx,DWORD[8+r9]
> > > > > >
> > > > > > +        mov     edx,DWORD[12+r9]
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        mov     ebp,DWORD[16+r9]
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        and     esi,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[64+r11]
> > > > > >
> > > > > > +        movdqa  xmm13,XMMWORD[r11]
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[r10]
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[16+r10]
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[32+r10]
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[48+r10]
> > > > > >
> > > > > > +DB      102,15,56,0,227
> > > > > >
> > > > > > +DB      102,15,56,0,235
> > > > > >
> > > > > > +DB      102,15,56,0,243
> > > > > >
> > > > > > +        add     r10,64
> > > > > >
> > > > > > +        paddd   xmm4,xmm13
> > > > > >
> > > > > > +DB      102,15,56,0,251
> > > > > >
> > > > > > +        paddd   xmm5,xmm13
> > > > > >
> > > > > > +        paddd   xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm4
> > > > > >
> > > > > > +        psubd   xmm4,xmm13
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm5
> > > > > >
> > > > > > +        psubd   xmm5,xmm13
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > > > >
> > > > > > +        psubd   xmm6,xmm13
> > > > > >
> > > > > > +        movups  xmm15,XMMWORD[((-112))+r15]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_ssse3
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$oop_ssse3:
> > > > > >
> > > > > > +        ror     ebx,2
> > > > > >
> > > > > > +        movups  xmm14,XMMWORD[r12]
> > > > > >
> > > > > > +        xorps   xmm14,xmm15
> > > > > >
> > > > > > +        xorps   xmm2,xmm14
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        pshufd  xmm8,xmm4,238
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        movdqa  xmm12,xmm7
> > > > > >
> > > > > > +        paddd   xmm13,xmm7
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        add     ebp,DWORD[rsp]
> > > > > >
> > > > > > +        punpcklqdq      xmm8,xmm5
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        psrldq  xmm12,4
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm8,xmm4
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        pxor    xmm12,xmm6
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        add     edx,DWORD[4+rsp]
> > > > > >
> > > > > > +        pxor    xmm8,xmm12
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm13
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        and     esi,eax
> > > > > >
> > > > > > +        movdqa  xmm3,xmm8
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        movdqa  xmm12,xmm8
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        pslldq  xmm3,12
> > > > > >
> > > > > > +        paddd   xmm8,xmm8
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        add     ecx,DWORD[8+rsp]
> > > > > >
> > > > > > +        psrld   xmm12,31
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        movdqa  xmm13,xmm3
> > > > > >
> > > > > > +        and     edi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        psrld   xmm3,30
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        por     xmm8,xmm12
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        add     ebx,DWORD[12+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        pslld   xmm13,2
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[r11]
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        and     esi,edx
> > > > > >
> > > > > > +        pxor    xmm8,xmm13
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        pshufd  xmm9,xmm5,238
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        movdqa  xmm13,xmm8
> > > > > >
> > > > > > +        paddd   xmm3,xmm8
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        add     eax,DWORD[16+rsp]
> > > > > >
> > > > > > +        punpcklqdq      xmm9,xmm6
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        psrldq  xmm13,4
> > > > > >
> > > > > > +        and     edi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm9,xmm5
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        pxor    xmm13,xmm7
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        add     ebp,DWORD[20+rsp]
> > > > > >
> > > > > > +        pxor    xmm9,xmm13
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm3
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        and     esi,ebx
> > > > > >
> > > > > > +        movdqa  xmm12,xmm9
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        movdqa  xmm13,xmm9
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        pslldq  xmm12,12
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        add     edx,DWORD[24+rsp]
> > > > > >
> > > > > > +        psrld   xmm13,31
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        movdqa  xmm3,xmm12
> > > > > >
> > > > > > +        and     edi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        psrld   xmm12,30
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        por     xmm9,xmm13
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        add     ecx,DWORD[28+rsp]
> > > > > >
> > > > > > +        pslld   xmm3,2
> > > > > >
> > > > > > +        pxor    xmm9,xmm12
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        movdqa  xmm12,XMMWORD[16+r11]
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        and     esi,ebp
> > > > > >
> > > > > > +        pxor    xmm9,xmm3
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        pshufd  xmm10,xmm6,238
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        movdqa  xmm3,xmm9
> > > > > >
> > > > > > +        paddd   xmm12,xmm9
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        add     ebx,DWORD[32+rsp]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        punpcklqdq      xmm10,xmm7
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        psrldq  xmm3,4
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm10,xmm6
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        pxor    xmm3,xmm8
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        add     eax,DWORD[36+rsp]
> > > > > >
> > > > > > +        pxor    xmm10,xmm3
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm12
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        and     esi,ecx
> > > > > >
> > > > > > +        movdqa  xmm13,xmm10
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        pslldq  xmm13,12
> > > > > >
> > > > > > +        paddd   xmm10,xmm10
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        add     ebp,DWORD[40+rsp]
> > > > > >
> > > > > > +        psrld   xmm3,31
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        movdqa  xmm12,xmm13
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        psrld   xmm13,30
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        por     xmm10,xmm3
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        add     edx,DWORD[44+rsp]
> > > > > >
> > > > > > +        pslld   xmm12,2
> > > > > >
> > > > > > +        pxor    xmm10,xmm13
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        movdqa  xmm13,XMMWORD[16+r11]
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        and     esi,eax
> > > > > >
> > > > > > +        pxor    xmm10,xmm12
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        pshufd  xmm11,xmm7,238
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        movdqa  xmm12,xmm10
> > > > > >
> > > > > > +        paddd   xmm13,xmm10
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        add     ecx,DWORD[48+rsp]
> > > > > >
> > > > > > +        punpcklqdq      xmm11,xmm8
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        psrldq  xmm12,4
> > > > > >
> > > > > > +        and     edi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm11,xmm7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        pxor    xmm12,xmm9
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        add     ebx,DWORD[52+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        pxor    xmm11,xmm12
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm13
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        and     esi,edx
> > > > > >
> > > > > > +        movdqa  xmm3,xmm11
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        movdqa  xmm12,xmm11
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        pslldq  xmm3,12
> > > > > >
> > > > > > +        paddd   xmm11,xmm11
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        add     eax,DWORD[56+rsp]
> > > > > >
> > > > > > +        psrld   xmm12,31
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        movdqa  xmm13,xmm3
> > > > > >
> > > > > > +        and     edi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        psrld   xmm3,30
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        cmp     r8d,11
> > > > > >
> > > > > > +        jb      NEAR $L$aesenclast1
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        je      NEAR $L$aesenclast1
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +$L$aesenclast1:
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > > >
> > > > > > +        por     xmm11,xmm12
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        add     ebp,DWORD[60+rsp]
> > > > > >
> > > > > > +        pslld   xmm13,2
> > > > > >
> > > > > > +        pxor    xmm11,xmm3
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[16+r11]
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        and     esi,ebx
> > > > > >
> > > > > > +        pxor    xmm11,xmm13
> > > > > >
> > > > > > +        pshufd  xmm13,xmm10,238
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        pxor    xmm4,xmm8
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        add     edx,DWORD[rsp]
> > > > > >
> > > > > > +        punpcklqdq      xmm13,xmm11
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        movups  xmm14,XMMWORD[16+r12]
> > > > > >
> > > > > > +        xorps   xmm14,xmm15
> > > > > >
> > > > > > +        movups  XMMWORD[r13*1+r12],xmm2
> > > > > >
> > > > > > +        xorps   xmm2,xmm14
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        and     edi,eax
> > > > > >
> > > > > > +        movdqa  xmm12,xmm3
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        paddd   xmm3,xmm11
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm4,xmm13
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        add     ecx,DWORD[4+rsp]
> > > > > >
> > > > > > +        movdqa  xmm13,xmm4
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm3
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        and     esi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        pslld   xmm4,2
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        psrld   xmm13,30
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        add     ebx,DWORD[8+rsp]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        por     xmm4,xmm13
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        pshufd  xmm3,xmm11,238
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[12+rsp]
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm5,xmm9
> > > > > >
> > > > > > +        add     ebp,DWORD[16+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        punpcklqdq      xmm3,xmm4
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        pxor    xmm5,xmm6
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        movdqa  xmm13,xmm12
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        paddd   xmm12,xmm4
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm5,xmm3
> > > > > >
> > > > > > +        add     edx,DWORD[20+rsp]
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        movdqa  xmm3,xmm5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm12
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[24+rsp]
> > > > > >
> > > > > > +        pslld   xmm5,2
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        psrld   xmm3,30
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        por     xmm5,xmm3
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[28+rsp]
> > > > > >
> > > > > > +        pshufd  xmm12,xmm4,238
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        add     eax,DWORD[32+rsp]
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        punpcklqdq      xmm12,xmm5
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[32+r11]
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        paddd   xmm13,xmm5
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +        add     ebp,DWORD[36+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        movdqa  xmm12,xmm6
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm13
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[40+rsp]
> > > > > >
> > > > > > +        pslld   xmm6,2
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        psrld   xmm12,30
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        por     xmm6,xmm12
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[44+rsp]
> > > > > >
> > > > > > +        pshufd  xmm13,xmm5,238
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm7,xmm11
> > > > > >
> > > > > > +        add     ebx,DWORD[48+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        punpcklqdq      xmm13,xmm6
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        pxor    xmm7,xmm8
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        movdqa  xmm12,xmm3
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        paddd   xmm3,xmm6
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm7,xmm13
> > > > > >
> > > > > > +        add     eax,DWORD[52+rsp]
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        movdqa  xmm13,xmm7
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm3
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[56+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        pslld   xmm7,2
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        psrld   xmm13,30
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        por     xmm7,xmm13
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[60+rsp]
> > > > > >
> > > > > > +        pshufd  xmm3,xmm6,238
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm8,xmm4
> > > > > >
> > > > > > +        add     ecx,DWORD[rsp]
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        punpcklqdq      xmm3,xmm7
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        pxor    xmm8,xmm9
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        movdqa  xmm13,xmm12
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        paddd   xmm12,xmm7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        add     ebx,DWORD[4+rsp]
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        movdqa  xmm3,xmm8
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm12
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[8+rsp]
> > > > > >
> > > > > > +        pslld   xmm8,2
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        psrld   xmm3,30
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        por     xmm8,xmm3
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[12+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        pshufd  xmm12,xmm7,238
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm9,xmm5
> > > > > >
> > > > > > +        add     edx,DWORD[16+rsp]
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        punpcklqdq      xmm12,xmm8
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        pxor    xmm9,xmm10
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        movdqa  xmm3,xmm13
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm9,xmm12
> > > > > >
> > > > > > +        add     ecx,DWORD[20+rsp]
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        movdqa  xmm12,xmm9
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        cmp     r8d,11
> > > > > >
> > > > > > +        jb      NEAR $L$aesenclast2
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        je      NEAR $L$aesenclast2
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +$L$aesenclast2:
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm13
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[24+rsp]
> > > > > >
> > > > > > +        pslld   xmm9,2
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        psrld   xmm12,30
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        por     xmm9,xmm12
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[28+rsp]
> > > > > >
> > > > > > +        pshufd  xmm13,xmm8,238
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm10,xmm6
> > > > > >
> > > > > > +        add     ebp,DWORD[32+rsp]
> > > > > >
> > > > > > +        movups  xmm14,XMMWORD[32+r12]
> > > > > >
> > > > > > +        xorps   xmm14,xmm15
> > > > > >
> > > > > > +        movups  XMMWORD[16+r12*1+r13],xmm2
> > > > > >
> > > > > > +        xorps   xmm2,xmm14
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        and     esi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        punpcklqdq      xmm13,xmm9
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        pxor    xmm10,xmm11
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        movdqa  xmm12,xmm3
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        paddd   xmm3,xmm9
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm10,xmm13
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[36+rsp]
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        movdqa  xmm13,xmm10
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm3
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        pslld   xmm10,2
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        psrld   xmm13,30
> > > > > >
> > > > > > +        add     ecx,DWORD[40+rsp]
> > > > > >
> > > > > > +        and     esi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        por     xmm10,xmm13
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        pshufd  xmm3,xmm9,238
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[44+rsp]
> > > > > >
> > > > > > +        and     edi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm11,xmm7
> > > > > >
> > > > > > +        add     eax,DWORD[48+rsp]
> > > > > >
> > > > > > +        and     esi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        punpcklqdq      xmm3,xmm10
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        pxor    xmm11,xmm4
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        movdqa  xmm13,XMMWORD[48+r11]
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        paddd   xmm12,xmm10
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm11,xmm3
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[52+rsp]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        and     edi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm11
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm12
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        pslld   xmm11,2
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        psrld   xmm3,30
> > > > > >
> > > > > > +        add     edx,DWORD[56+rsp]
> > > > > >
> > > > > > +        and     esi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        por     xmm11,xmm3
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        pshufd  xmm12,xmm10,238
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[60+rsp]
> > > > > >
> > > > > > +        and     edi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm4,xmm8
> > > > > >
> > > > > > +        add     ebx,DWORD[rsp]
> > > > > >
> > > > > > +        and     esi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        punpcklqdq      xmm12,xmm11
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        movdqa  xmm3,xmm13
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        paddd   xmm13,xmm11
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[4+rsp]
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        movdqa  xmm12,xmm4
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm13
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        pslld   xmm4,2
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        psrld   xmm12,30
> > > > > >
> > > > > > +        add     ebp,DWORD[8+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        and     esi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        por     xmm4,xmm12
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        pshufd  xmm13,xmm11,238
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[12+rsp]
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm5,xmm9
> > > > > >
> > > > > > +        add     ecx,DWORD[16+rsp]
> > > > > >
> > > > > > +        and     esi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        punpcklqdq      xmm13,xmm4
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        pxor    xmm5,xmm6
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        movdqa  xmm12,xmm3
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        paddd   xmm3,xmm4
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[20+rsp]
> > > > > >
> > > > > > +        and     edi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        movdqa  xmm13,xmm5
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm3
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        pslld   xmm5,2
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        psrld   xmm13,30
> > > > > >
> > > > > > +        add     eax,DWORD[24+rsp]
> > > > > >
> > > > > > +        and     esi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        por     xmm5,xmm13
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        pshufd  xmm3,xmm4,238
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[28+rsp]
> > > > > >
> > > > > > +        cmp     r8d,11
> > > > > >
> > > > > > +        jb      NEAR $L$aesenclast3
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        je      NEAR $L$aesenclast3
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +$L$aesenclast3:
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > > >
> > > > > > +        and     edi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        add     edx,DWORD[32+rsp]
> > > > > >
> > > > > > +        and     esi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        punpcklqdq      xmm3,xmm5
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        movups  xmm14,XMMWORD[48+r12]
> > > > > >
> > > > > > +        xorps   xmm14,xmm15
> > > > > >
> > > > > > +        movups  XMMWORD[32+r12*1+r13],xmm2
> > > > > >
> > > > > > +        xorps   xmm2,xmm14
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        movdqa  xmm13,xmm12
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        paddd   xmm12,xmm5
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm6,xmm3
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[36+rsp]
> > > > > >
> > > > > > +        and     edi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm6
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm12
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        pslld   xmm6,2
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        psrld   xmm3,30
> > > > > >
> > > > > > +        add     ebx,DWORD[40+rsp]
> > > > > >
> > > > > > +        and     esi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        por     xmm6,xmm3
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        pshufd  xmm12,xmm5,238
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[44+rsp]
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm7,xmm11
> > > > > >
> > > > > > +        add     ebp,DWORD[48+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        punpcklqdq      xmm12,xmm6
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        pxor    xmm7,xmm8
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        movdqa  xmm3,xmm13
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm7,xmm12
> > > > > >
> > > > > > +        add     edx,DWORD[52+rsp]
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        movdqa  xmm12,xmm7
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm13
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[56+rsp]
> > > > > >
> > > > > > +        pslld   xmm7,2
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        psrld   xmm12,30
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        por     xmm7,xmm12
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[60+rsp]
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[rsp]
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        paddd   xmm3,xmm7
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm3
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[4+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[8+rsp]
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[12+rsp]
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        cmp     r10,r14
> > > > > >
> > > > > > +        je      NEAR $L$done_ssse3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[64+r11]
> > > > > >
> > > > > > +        movdqa  xmm13,XMMWORD[r11]
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[r10]
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[16+r10]
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[32+r10]
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[48+r10]
> > > > > >
> > > > > > +DB      102,15,56,0,227
> > > > > >
> > > > > > +        add     r10,64
> > > > > >
> > > > > > +        add     ebx,DWORD[16+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +DB      102,15,56,0,235
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        paddd   xmm4,xmm13
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[20+rsp]
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm4
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        psubd   xmm4,xmm13
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[24+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[28+rsp]
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[32+rsp]
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +DB      102,15,56,0,243
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        paddd   xmm5,xmm13
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[36+rsp]
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm5
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        psubd   xmm5,xmm13
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[40+rsp]
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[44+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[48+rsp]
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +DB      102,15,56,0,251
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        paddd   xmm6,xmm13
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[52+rsp]
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        cmp     r8d,11
> > > > > >
> > > > > > +        jb      NEAR $L$aesenclast4
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        je      NEAR $L$aesenclast4
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +$L$aesenclast4:
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        psubd   xmm6,xmm13
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[56+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[60+rsp]
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        movups  XMMWORD[48+r12*1+r13],xmm2
> > > > > >
> > > > > > +        lea     r12,[64+r12]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     eax,DWORD[r9]
> > > > > >
> > > > > > +        add     esi,DWORD[4+r9]
> > > > > >
> > > > > > +        add     ecx,DWORD[8+r9]
> > > > > >
> > > > > > +        add     edx,DWORD[12+r9]
> > > > > >
> > > > > > +        mov     DWORD[r9],eax
> > > > > >
> > > > > > +        add     ebp,DWORD[16+r9]
> > > > > >
> > > > > > +        mov     DWORD[4+r9],esi
> > > > > >
> > > > > > +        mov     ebx,esi
> > > > > >
> > > > > > +        mov     DWORD[8+r9],ecx
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        mov     DWORD[12+r9],edx
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     DWORD[16+r9],ebp
> > > > > >
> > > > > > +        and     esi,edi
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_ssse3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$done_ssse3:
> > > > > >
> > > > > > +        add     ebx,DWORD[16+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[20+rsp]
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[24+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[28+rsp]
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[32+rsp]
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[36+rsp]
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[40+rsp]
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[44+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[48+rsp]
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[52+rsp]
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        cmp     r8d,11
> > > > > >
> > > > > > +        jb      NEAR $L$aesenclast5
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        je      NEAR $L$aesenclast5
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +$L$aesenclast5:
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[56+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[60+rsp]
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        movups  XMMWORD[48+r12*1+r13],xmm2
> > > > > >
> > > > > > +        mov     r8,QWORD[88+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     eax,DWORD[r9]
> > > > > >
> > > > > > +        add     esi,DWORD[4+r9]
> > > > > >
> > > > > > +        add     ecx,DWORD[8+r9]
> > > > > >
> > > > > > +        mov     DWORD[r9],eax
> > > > > >
> > > > > > +        add     edx,DWORD[12+r9]
> > > > > >
> > > > > > +        mov     DWORD[4+r9],esi
> > > > > >
> > > > > > +        add     ebp,DWORD[16+r9]
> > > > > >
> > > > > > +        mov     DWORD[8+r9],ecx
> > > > > >
> > > > > > +        mov     DWORD[12+r9],edx
> > > > > >
> > > > > > +        mov     DWORD[16+r9],ebp
> > > > > >
> > > > > > +        movups  XMMWORD[r8],xmm2
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((96+0))+rsp]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((96+16))+rsp]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((96+32))+rsp]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((96+48))+rsp]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((96+64))+rsp]
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((96+80))+rsp]
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((96+96))+rsp]
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[((96+112))+rsp]
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[((96+128))+rsp]
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[((96+144))+rsp]
> > > > > >
> > > > > > +        lea     rsi,[264+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_aesni_cbc_sha1_enc_ssse3:
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +K_XX_XX:
> > > > > >
> > > > > > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > > > > >
> > > > > > +        DD      0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
> > > > > >
> > > > > > +        DD      0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
> > > > > >
> > > > > > +        DD      0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
> > > > > >
> > > > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > > >
> > > > > > +DB
> > > 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115
> > > > > >
> > > > > > +DB      116,105,116,99,104,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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +aesni_cbc_sha1_enc_shaext:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_cbc_sha1_enc_shaext:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10,QWORD[56+rsp]
> > > > > >
> > > > > > +        lea     rsp,[((-168))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-160)+rax],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-144)+rax],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-128)+rax],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-112)+rax],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-96)+rax],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-80)+rax],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-64)+rax],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-48)+rax],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-32)+rax],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-16)+rax],xmm15
> > > > > >
> > > > > > +$L$prologue_shaext:
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[r9]
> > > > > >
> > > > > > +        movd    xmm9,DWORD[16+r9]
> > > > > >
> > > > > > +        movdqa  xmm7,XMMWORD[((K_XX_XX+80))]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r11d,DWORD[240+rcx]
> > > > > >
> > > > > > +        sub     rsi,rdi
> > > > > >
> > > > > > +        movups  xmm15,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[r8]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[112+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm8,xmm8,27
> > > > > >
> > > > > > +        pshufd  xmm9,xmm9,27
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$oop_shaext:
> > > > > >
> > > > > > +        movups  xmm14,XMMWORD[rdi]
> > > > > >
> > > > > > +        xorps   xmm14,xmm15
> > > > > >
> > > > > > +        xorps   xmm2,xmm14
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[r10]
> > > > > >
> > > > > > +        movdqa  xmm12,xmm9
> > > > > >
> > > > > > +DB      102,15,56,0,223
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[16+r10]
> > > > > >
> > > > > > +        movdqa  xmm11,xmm8
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,0,231
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm9,xmm3
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[32+r10]
> > > > > >
> > > > > > +        lea     r10,[64+r10]
> > > > > >
> > > > > > +        pxor    xmm3,xmm12
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        pxor    xmm3,xmm12
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,239
> > > > > >
> > > > > > +DB      69,15,58,204,193,0
> > > > > >
> > > > > > +DB      68,15,56,200,212
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      15,56,201,220
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[((-16))+r10]
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,247
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      69,15,58,204,194,0
> > > > > >
> > > > > > +DB      68,15,56,200,205
> > > > > >
> > > > > > +        pxor    xmm3,xmm5
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,193,0
> > > > > >
> > > > > > +DB      68,15,56,200,214
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,222
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,194,0
> > > > > >
> > > > > > +DB      68,15,56,200,203
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,227
> > > > > >
> > > > > > +        pxor    xmm5,xmm3
> > > > > >
> > > > > > +DB      15,56,201,243
> > > > > >
> > > > > > +        cmp     r11d,11
> > > > > >
> > > > > > +        jb      NEAR $L$aesenclast6
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        je      NEAR $L$aesenclast6
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +$L$aesenclast6:
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,193,0
> > > > > >
> > > > > > +DB      68,15,56,200,212
> > > > > >
> > > > > > +        movups  xmm14,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        xorps   xmm14,xmm15
> > > > > >
> > > > > > +        movups  XMMWORD[rdi*1+rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm2,xmm14
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,220
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,194,1
> > > > > >
> > > > > > +DB      68,15,56,200,205
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +        pxor    xmm3,xmm5
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,193,1
> > > > > >
> > > > > > +DB      68,15,56,200,214
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,222
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,194,1
> > > > > >
> > > > > > +DB      68,15,56,200,203
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,227
> > > > > >
> > > > > > +        pxor    xmm5,xmm3
> > > > > >
> > > > > > +DB      15,56,201,243
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,193,1
> > > > > >
> > > > > > +DB      68,15,56,200,212
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,220
> > > > > >
> > > > > > +        cmp     r11d,11
> > > > > >
> > > > > > +        jb      NEAR $L$aesenclast7
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        je      NEAR $L$aesenclast7
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +$L$aesenclast7:
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,194,1
> > > > > >
> > > > > > +DB      68,15,56,200,205
> > > > > >
> > > > > > +        movups  xmm14,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        xorps   xmm14,xmm15
> > > > > >
> > > > > > +        movups  XMMWORD[16+rdi*1+rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm2,xmm14
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +        pxor    xmm3,xmm5
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,193,2
> > > > > >
> > > > > > +DB      68,15,56,200,214
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,222
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,194,2
> > > > > >
> > > > > > +DB      68,15,56,200,203
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,227
> > > > > >
> > > > > > +        pxor    xmm5,xmm3
> > > > > >
> > > > > > +DB      15,56,201,243
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,193,2
> > > > > >
> > > > > > +DB      68,15,56,200,212
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,220
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,194,2
> > > > > >
> > > > > > +DB      68,15,56,200,205
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +        pxor    xmm3,xmm5
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        cmp     r11d,11
> > > > > >
> > > > > > +        jb      NEAR $L$aesenclast8
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        je      NEAR $L$aesenclast8
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +$L$aesenclast8:
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,193,2
> > > > > >
> > > > > > +DB      68,15,56,200,214
> > > > > >
> > > > > > +        movups  xmm14,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        xorps   xmm14,xmm15
> > > > > >
> > > > > > +        movups  XMMWORD[32+rdi*1+rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm2,xmm14
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,222
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,194,3
> > > > > >
> > > > > > +DB      68,15,56,200,203
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,227
> > > > > >
> > > > > > +        pxor    xmm5,xmm3
> > > > > >
> > > > > > +DB      15,56,201,243
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,193,3
> > > > > >
> > > > > > +DB      68,15,56,200,212
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,194,3
> > > > > >
> > > > > > +DB      68,15,56,200,205
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm5,xmm12
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,193,3
> > > > > >
> > > > > > +DB      68,15,56,200,214
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,194,3
> > > > > >
> > > > > > +DB      68,15,56,200,205
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        cmp     r11d,11
> > > > > >
> > > > > > +        jb      NEAR $L$aesenclast9
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        je      NEAR $L$aesenclast9
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +$L$aesenclast9:
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > > > >
> > > > > > +        dec     rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm8,xmm11
> > > > > >
> > > > > > +        movups  XMMWORD[48+rdi*1+rsi],xmm2
> > > > > >
> > > > > > +        lea     rdi,[64+rdi]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm8,xmm8,27
> > > > > >
> > > > > > +        pshufd  xmm9,xmm9,27
> > > > > >
> > > > > > +        movups  XMMWORD[r8],xmm2
> > > > > >
> > > > > > +        movdqu  XMMWORD[r9],xmm8
> > > > > >
> > > > > > +        movd    DWORD[16+r9],xmm9
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-8-160))+rax]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-8-144))+rax]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-8-128))+rax]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-8-112))+rax]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-8-96))+rax]
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-8-80))+rax]
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-8-64))+rax]
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[((-8-48))+rax]
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[((-8-32))+rax]
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[((-8-16))+rax]
> > > > > >
> > > > > > +        mov     rsp,rax
> > > > > >
> > > > > > +$L$epilogue_shaext:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_aesni_cbc_sha1_enc_shaext:
> > > > > >
> > > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +ssse3_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +        lea     r10,[aesni_cbc_sha1_enc_shaext]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$seh_no_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,20
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +        lea     rax,[168+rax]
> > > > > >
> > > > > > +        jmp     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +$L$seh_no_shaext:
> > > > > >
> > > > > > +        lea     rsi,[96+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,20
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +        lea     rax,[264+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,QWORD[rax]
> > > > > >
> > > > > > +        mov     r14,QWORD[8+rax]
> > > > > >
> > > > > > +        mov     r13,QWORD[16+rax]
> > > > > >
> > > > > > +        mov     r12,QWORD[24+rax]
> > > > > >
> > > > > > +        mov     rbp,QWORD[32+rax]
> > > > > >
> > > > > > +        mov     rbx,QWORD[40+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$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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .pdata rdata align=4
> > > > > >
> > > > > > +ALIGN   4
> > > > > >
> > > > > > +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_aesni_cbc_sha1_enc_shaext wrt ..imagebase
> > > > > >
> > > > > > +section .xdata rdata align=8
> > > > > >
> > > > > > +ALIGN   8
> > > > > >
> > > > > > +$L$SEH_info_aesni_cbc_sha1_enc_ssse3:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      ssse3_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > +$L$SEH_info_aesni_cbc_sha1_enc_shaext:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      ssse3_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$prologue_shaext wrt ..imagebase,$L$epilogue_shaext
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> > > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
> > > > sha256-
> > > > > > x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..f5c250b904
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> > > > > > x86_64.nasm
> > > > > > @@ -0,0 +1,78 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/aes/asm/aesni-sha256-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +global  aesni_cbc_sha256_enc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +aesni_cbc_sha256_enc:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     eax,eax
> > > > > >
> > > > > > +        cmp     rcx,0
> > > > > >
> > > > > > +        je      NEAR $L$probe
> > > > > >
> > > > > > +        ud2
> > > > > >
> > > > > > +$L$probe:
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > > >
> > > > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > > >
> > > > > > +        DD      0,0,0,0,0,0,0,0,-1,-1,-1,-1
> > > > > >
> > > > > > +        DD      0,0,0,0,0,0,0,0
> > > > > >
> > > > > > +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54
> > > > > >
> > > > > > +DB      32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95
> > > > > >
> > > > > > +DB      54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98
> > > > > >
> > > > > > +DB      121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108
> > > > > >
> > > > > > +DB      46,111,114,103,62,0
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
> > > > x86_64.nasm
> > > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..57ee23ea8c
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
> > > > > > @@ -0,0 +1,5103 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/aes/asm/aesni-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2009-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +global  aesni_encrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[r8]
> > > > > >
> > > > > > +        lea     r8,[16+r8]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_enc1_1
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        movups  XMMWORD[rdx],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  aesni_decrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[r8]
> > > > > >
> > > > > > +        lea     r8,[16+r8]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_dec1_2
> > > > > >
> > > > > > +DB      102,15,56,223,209
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        movups  XMMWORD[rdx],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_encrypt2:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$enc_loop2:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,32
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_decrypt2:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$dec_loop2:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,32
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_encrypt3:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        xorps   xmm4,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$enc_loop3:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +        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[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$enc_loop3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,221,208
> > > > > >
> > > > > > +DB      102,15,56,221,216
> > > > > >
> > > > > > +DB      102,15,56,221,224
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_decrypt3:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        xorps   xmm4,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$dec_loop3:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +        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[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$dec_loop3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +DB      102,15,56,223,208
> > > > > >
> > > > > > +DB      102,15,56,223,216
> > > > > >
> > > > > > +DB      102,15,56,223,224
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_encrypt4:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        xorps   xmm4,xmm0
> > > > > >
> > > > > > +        xorps   xmm5,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +DB      0x0f,0x1f,0x00
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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[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[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $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
> > > > > >
> > > > > > +DB      102,15,56,221,208
> > > > > >
> > > > > > +DB      102,15,56,221,216
> > > > > >
> > > > > > +DB      102,15,56,221,224
> > > > > >
> > > > > > +DB      102,15,56,221,232
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_decrypt4:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        xorps   xmm4,xmm0
> > > > > >
> > > > > > +        xorps   xmm5,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +DB      0x0f,0x1f,0x00
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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[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[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $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
> > > > > >
> > > > > > +DB      102,15,56,223,208
> > > > > >
> > > > > > +DB      102,15,56,223,216
> > > > > >
> > > > > > +DB      102,15,56,223,224
> > > > > >
> > > > > > +DB      102,15,56,223,232
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_encrypt6:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        pxor    xmm5,xmm0
> > > > > >
> > > > > > +        pxor    xmm6,xmm0
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +        pxor    xmm7,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +        jmp     NEAR $L$enc_loop6_enter
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$enc_loop6:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +$L$enc_loop6_enter:
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +DB      102,15,56,220,241
> > > > > >
> > > > > > +DB      102,15,56,220,249
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +DB      102,15,56,220,240
> > > > > >
> > > > > > +DB      102,15,56,220,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $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
> > > > > >
> > > > > > +DB      102,15,56,221,208
> > > > > >
> > > > > > +DB      102,15,56,221,216
> > > > > >
> > > > > > +DB      102,15,56,221,224
> > > > > >
> > > > > > +DB      102,15,56,221,232
> > > > > >
> > > > > > +DB      102,15,56,221,240
> > > > > >
> > > > > > +DB      102,15,56,221,248
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_decrypt6:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        pxor    xmm5,xmm0
> > > > > >
> > > > > > +        pxor    xmm6,xmm0
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +        pxor    xmm7,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +        jmp     NEAR $L$dec_loop6_enter
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$dec_loop6:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +$L$dec_loop6_enter:
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +DB      102,15,56,222,241
> > > > > >
> > > > > > +DB      102,15,56,222,249
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $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
> > > > > >
> > > > > > +DB      102,15,56,223,208
> > > > > >
> > > > > > +DB      102,15,56,223,216
> > > > > >
> > > > > > +DB      102,15,56,223,224
> > > > > >
> > > > > > +DB      102,15,56,223,232
> > > > > >
> > > > > > +DB      102,15,56,223,240
> > > > > >
> > > > > > +DB      102,15,56,223,248
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_encrypt8:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm5,xmm0
> > > > > >
> > > > > > +        pxor    xmm6,xmm0
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        pxor    xmm7,xmm0
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        pxor    xmm9,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +        jmp     NEAR $L$enc_loop8_inner
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$enc_loop8:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +$L$enc_loop8_inner:
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +$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
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +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[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$enc_loop8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +DB      102,68,15,56,220,193
> > > > > >
> > > > > > +DB      102,68,15,56,220,201
> > > > > >
> > > > > > +DB      102,15,56,221,208
> > > > > >
> > > > > > +DB      102,15,56,221,216
> > > > > >
> > > > > > +DB      102,15,56,221,224
> > > > > >
> > > > > > +DB      102,15,56,221,232
> > > > > >
> > > > > > +DB      102,15,56,221,240
> > > > > >
> > > > > > +DB      102,15,56,221,248
> > > > > >
> > > > > > +DB      102,68,15,56,221,192
> > > > > >
> > > > > > +DB      102,68,15,56,221,200
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_decrypt8:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm5,xmm0
> > > > > >
> > > > > > +        pxor    xmm6,xmm0
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        pxor    xmm7,xmm0
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        pxor    xmm9,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +        jmp     NEAR $L$dec_loop8_inner
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$dec_loop8:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +$L$dec_loop8_inner:
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +DB      102,15,56,222,241
> > > > > >
> > > > > > +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[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
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +DB      102,68,15,56,222,192
> > > > > >
> > > > > > +DB      102,68,15,56,222,200
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$dec_loop8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +DB      102,68,15,56,222,193
> > > > > >
> > > > > > +DB      102,68,15,56,222,201
> > > > > >
> > > > > > +DB      102,15,56,223,208
> > > > > >
> > > > > > +DB      102,15,56,223,216
> > > > > >
> > > > > > +DB      102,15,56,223,224
> > > > > >
> > > > > > +DB      102,15,56,223,232
> > > > > >
> > > > > > +DB      102,15,56,223,240
> > > > > >
> > > > > > +DB      102,15,56,223,248
> > > > > >
> > > > > > +DB      102,68,15,56,223,192
> > > > > >
> > > > > > +DB      102,68,15,56,223,200
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  aesni_ecb_encrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +aesni_ecb_encrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_ecb_encrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-88))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +$L$ecb_enc_body:
> > > > > >
> > > > > > +        and     rdx,-16
> > > > > >
> > > > > > +        jz      NEAR $L$ecb_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,DWORD[240+rcx]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        mov     r11,rcx
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +        test    r8d,r8d
> > > > > >
> > > > > > +        jz      NEAR $L$ecb_decrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        cmp     rdx,0x80
> > > > > >
> > > > > > +        jb      NEAR $L$ecb_enc_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[rsi],xmm2
> > > > > >
> > > > > > +        mov     rcx,r11
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        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,0x80
> > > > > >
> > > > > > +        jnc     NEAR $L$ecb_enc_loop8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        mov     rcx,r11
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        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[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]
> > > > > >
> > > > > > +        xorps   xmm9,xmm9
> > > > > >
> > > > > > +        call    _aesni_encrypt8
> > > > > >
> > > > > > +        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[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_enc1_3:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > > >
> > > > > > +        lea     rcx,[16+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_enc1_3
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        jmp     NEAR $L$ecb_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ecb_enc_two:
> > > > > >
> > > > > > +        call    _aesni_encrypt2
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        jmp     NEAR $L$ecb_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ecb_enc_three:
> > > > > >
> > > > > > +        call    _aesni_encrypt3
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +        call    _aesni_encrypt4
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +        xorps   xmm7,xmm7
> > > > > >
> > > > > > +        call    _aesni_encrypt6
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +        call    _aesni_encrypt6
> > > > > >
> > > > > > +        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,0x80
> > > > > >
> > > > > > +        jb      NEAR $L$ecb_dec_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[rsi],xmm2
> > > > > >
> > > > > > +        mov     rcx,r11
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        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[r11]
> > > > > >
> > > > > > +        sub     rdx,0x80
> > > > > >
> > > > > > +        jnc     NEAR $L$ecb_dec_loop8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        mov     rcx,r11
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > > >
> > > > > > +        pxor    xmm8,xmm8
> > > > > >
> > > > > > +        movups  XMMWORD[112+rsi],xmm9
> > > > > >
> > > > > > +        pxor    xmm9,xmm9
> > > > > >
> > > > > > +        lea     rsi,[128+rsi]
> > > > > >
> > > > > > +        add     rdx,0x80
> > > > > >
> > > > > > +        jz      NEAR $L$ecb_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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]
> > > > > >
> > > > > > +        xorps   xmm9,xmm9
> > > > > >
> > > > > > +        call    _aesni_decrypt8
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > > >
> > > > > > +        pxor    xmm8,xmm8
> > > > > >
> > > > > > +        pxor    xmm9,xmm9
> > > > > >
> > > > > > +        jmp     NEAR $L$ecb_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ecb_dec_one:
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_dec1_4:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > > >
> > > > > > +        lea     rcx,[16+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_dec1_4
> > > > > >
> > > > > > +DB      102,15,56,223,209
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        jmp     NEAR $L$ecb_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ecb_dec_two:
> > > > > >
> > > > > > +        call    _aesni_decrypt2
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        jmp     NEAR $L$ecb_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ecb_dec_three:
> > > > > >
> > > > > > +        call    _aesni_decrypt3
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        jmp     NEAR $L$ecb_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ecb_dec_four:
> > > > > >
> > > > > > +        call    _aesni_decrypt4
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        jmp     NEAR $L$ecb_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ecb_dec_five:
> > > > > >
> > > > > > +        xorps   xmm7,xmm7
> > > > > >
> > > > > > +        call    _aesni_decrypt6
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +        jmp     NEAR $L$ecb_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ecb_dec_six:
> > > > > >
> > > > > > +        call    _aesni_decrypt6
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ecb_ret:
> > > > > >
> > > > > > +        xorps   xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > > >
> > > > > > +        lea     rsp,[88+rsp]
> > > > > >
> > > > > > +$L$ecb_enc_ret:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_aesni_ecb_encrypt:
> > > > > >
> > > > > > +global  aesni_ccm64_encrypt_blocks
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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,[rcx]
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[r9]
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +DB      102,15,56,0,247
> > > > > >
> > > > > > +        sub     r10,rax
> > > > > >
> > > > > > +        jmp     NEAR $L$ccm64_enc_outer
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ccm64_enc_outer:
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[r11]
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +        movups  xmm8,XMMWORD[rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > > >
> > > > > > +        xorps   xmm0,xmm8
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ccm64_enc2_loop:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,32
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        dec     rdx
> > > > > >
> > > > > > +DB      102,15,56,221,208
> > > > > >
> > > > > > +DB      102,15,56,221,216
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +        xorps   xmm8,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,215
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +        jnz     NEAR $L$ccm64_enc_outer
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[r9],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm8,xmm8
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +global  aesni_ccm64_decrypt_blocks
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_enc1_5:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        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[rdi]
> > > > > >
> > > > > > +        paddq   xmm6,xmm9
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +        sub     rax,r10
> > > > > >
> > > > > > +        lea     rcx,[32+r10*1+r11]
> > > > > >
> > > > > > +        mov     r10,rax
> > > > > >
> > > > > > +        jmp     NEAR $L$ccm64_dec_outer
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ccm64_dec_outer:
> > > > > >
> > > > > > +        xorps   xmm8,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm8
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +DB      102,15,56,0,215
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rdx,1
> > > > > >
> > > > > > +        jz      NEAR $L$ccm64_dec_break
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[r11]
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > > >
> > > > > > +        xorps   xmm8,xmm0
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        xorps   xmm3,xmm8
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > > >
> > > > > > +        jmp     NEAR $L$ccm64_dec2_loop
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ccm64_dec2_loop:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,32
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        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,[16+rdi]
> > > > > >
> > > > > > +        jmp     NEAR $L$ccm64_dec_outer
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ccm64_dec_break:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,DWORD[240+r11]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[r11]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > > >
> > > > > > +        xorps   xmm8,xmm0
> > > > > >
> > > > > > +        lea     r11,[32+r11]
> > > > > >
> > > > > > +        xorps   xmm3,xmm8
> > > > > >
> > > > > > +$L$oop_enc1_6:
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[r11]
> > > > > >
> > > > > > +        lea     r11,[16+r11]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_enc1_6
> > > > > >
> > > > > > +DB      102,15,56,221,217
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[r9],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm8,xmm8
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +global  aesni_ctr32_encrypt_blocks
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        cmp     rdx,1
> > > > > >
> > > > > > +        jne     NEAR $L$ctr32_bulk
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[r8]
> > > > > >
> > > > > > +        movups  xmm3,XMMWORD[rdi]
> > > > > >
> > > > > > +        mov     edx,DWORD[240+rcx]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_enc1_7:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > > >
> > > > > > +        lea     rcx,[16+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_enc1_7
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        xorps   xmm2,xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm2,xmm2
> > > > > >
> > > > > > +        jmp     NEAR $L$ctr32_epilogue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ctr32_bulk:
> > > > > >
> > > > > > +        lea     r11,[rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsp,288
> > > > > >
> > > > > > +        and     rsp,-16
> > > > > >
> > > > > > +        movaps  XMMWORD[(-168)+r11],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[(-152)+r11],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[(-136)+r11],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+r11],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+r11],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+r11],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+r11],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+r11],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+r11],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-24)+r11],xmm15
> > > > > >
> > > > > > +$L$ctr32_body:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[r8]
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        mov     r8d,DWORD[12+r8]
> > > > > >
> > > > > > +        pxor    xmm2,xmm0
> > > > > >
> > > > > > +        mov     ebp,DWORD[12+rcx]
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm2
> > > > > >
> > > > > > +        bswap   r8d
> > > > > >
> > > > > > +        movdqa  xmm3,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm2
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        movdqa  XMMWORD[64+rsp],xmm2
> > > > > >
> > > > > > +        movdqa  XMMWORD[80+rsp],xmm2
> > > > > >
> > > > > > +        movdqa  XMMWORD[96+rsp],xmm2
> > > > > >
> > > > > > +        mov     r10,rdx
> > > > > >
> > > > > > +        movdqa  XMMWORD[112+rsp],xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rax,[1+r8]
> > > > > >
> > > > > > +        lea     rdx,[2+r8]
> > > > > >
> > > > > > +        bswap   eax
> > > > > >
> > > > > > +        bswap   edx
> > > > > >
> > > > > > +        xor     eax,ebp
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +DB      102,15,58,34,216,3
> > > > > >
> > > > > > +        lea     rax,[3+r8]
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm3
> > > > > >
> > > > > > +DB      102,15,58,34,226,3
> > > > > >
> > > > > > +        bswap   eax
> > > > > >
> > > > > > +        mov     rdx,r10
> > > > > >
> > > > > > +        lea     r10,[4+r8]
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm4
> > > > > >
> > > > > > +        xor     eax,ebp
> > > > > >
> > > > > > +        bswap   r10d
> > > > > >
> > > > > > +DB      102,15,58,34,232,3
> > > > > >
> > > > > > +        xor     r10d,ebp
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm5
> > > > > >
> > > > > > +        lea     r9,[5+r8]
> > > > > >
> > > > > > +        mov     DWORD[((64+12))+rsp],r10d
> > > > > >
> > > > > > +        bswap   r9d
> > > > > >
> > > > > > +        lea     r10,[6+r8]
> > > > > >
> > > > > > +        mov     eax,DWORD[240+rcx]
> > > > > >
> > > > > > +        xor     r9d,ebp
> > > > > >
> > > > > > +        bswap   r10d
> > > > > >
> > > > > > +        mov     DWORD[((80+12))+rsp],r9d
> > > > > >
> > > > > > +        xor     r10d,ebp
> > > > > >
> > > > > > +        lea     r9,[7+r8]
> > > > > >
> > > > > > +        mov     DWORD[((96+12))+rsp],r10d
> > > > > >
> > > > > > +        bswap   r9d
> > > > > >
> > > > > > +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
> > > > > >
> > > > > > +        xor     r9d,ebp
> > > > > >
> > > > > > +        and     r10d,71303168
> > > > > >
> > > > > > +        mov     DWORD[((112+12))+rsp],r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[64+rsp]
> > > > > >
> > > > > > +        movdqa  xmm7,XMMWORD[80+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        cmp     rdx,8
> > > > > >
> > > > > > +        jb      NEAR $L$ctr32_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rdx,6
> > > > > >
> > > > > > +        cmp     r10d,4194304
> > > > > >
> > > > > > +        je      NEAR $L$ctr32_6x
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rcx,[128+rcx]
> > > > > >
> > > > > > +        sub     rdx,2
> > > > > >
> > > > > > +        jmp     NEAR $L$ctr32_loop8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ctr32_6x:
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        mov     r10d,48
> > > > > >
> > > > > > +        bswap   ebp
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        sub     r10,rax
> > > > > >
> > > > > > +        jmp     NEAR $L$ctr32_loop6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ctr32_loop6:
> > > > > >
> > > > > > +        add     r8d,6
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-48))+r10*1+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        mov     eax,r8d
> > > > > >
> > > > > > +        xor     eax,ebp
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,12
> > > > > >
> > > > > > +        lea     eax,[1+r8]
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +        xor     eax,ebp
> > > > > >
> > > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,28
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        lea     eax,[2+r8]
> > > > > >
> > > > > > +        xor     eax,ebp
> > > > > >
> > > > > > +DB      102,15,56,220,241
> > > > > >
> > > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,44
> > > > > >
> > > > > > +        lea     eax,[3+r8]
> > > > > >
> > > > > > +DB      102,15,56,220,249
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-32))+r10*1+rcx]
> > > > > >
> > > > > > +        xor     eax,ebp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,60
> > > > > >
> > > > > > +        lea     eax,[4+r8]
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        xor     eax,ebp
> > > > > >
> > > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,76
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +        lea     eax,[5+r8]
> > > > > >
> > > > > > +        xor     eax,ebp
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +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[((-16))+r10*1+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    $L$enc_loop6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[rsp]
> > > > > >
> > > > > > +        pxor    xmm9,xmm3
> > > > > >
> > > > > > +        movaps  xmm3,XMMWORD[16+rsp]
> > > > > >
> > > > > > +        pxor    xmm10,xmm4
> > > > > >
> > > > > > +        movaps  xmm4,XMMWORD[32+rsp]
> > > > > >
> > > > > > +        pxor    xmm11,xmm5
> > > > > >
> > > > > > +        movaps  xmm5,XMMWORD[48+rsp]
> > > > > >
> > > > > > +        pxor    xmm12,xmm6
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[64+rsp]
> > > > > >
> > > > > > +        pxor    xmm13,xmm7
> > > > > >
> > > > > > +        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     NEAR $L$ctr32_loop6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     rdx,6
> > > > > >
> > > > > > +        jz      NEAR $L$ctr32_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     eax,[((-48))+r10]
> > > > > >
> > > > > > +        lea     rcx,[((-80))+r10*1+rcx]
> > > > > >
> > > > > > +        neg     eax
> > > > > >
> > > > > > +        shr     eax,4
> > > > > >
> > > > > > +        jmp     NEAR $L$ctr32_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ctr32_loop8:
> > > > > >
> > > > > > +        add     r8d,8
> > > > > >
> > > > > > +        movdqa  xmm8,XMMWORD[96+rsp]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        mov     r9d,r8d
> > > > > >
> > > > > > +        movdqa  xmm9,XMMWORD[112+rsp]
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        bswap   r9d
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((32-128))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +        xor     r9d,ebp
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        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[((48-128))+rcx]
> > > > > >
> > > > > > +        bswap   r9d
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        xor     r9d,ebp
> > > > > >
> > > > > > +DB      0x66,0x90
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +        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[((64-128))+rcx]
> > > > > >
> > > > > > +        bswap   r9d
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        xor     r9d,ebp
> > > > > >
> > > > > > +DB      0x66,0x90
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        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[((80-128))+rcx]
> > > > > >
> > > > > > +        bswap   r9d
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        xor     r9d,ebp
> > > > > >
> > > > > > +DB      0x66,0x90
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +        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[((96-128))+rcx]
> > > > > >
> > > > > > +        bswap   r9d
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        xor     r9d,ebp
> > > > > >
> > > > > > +DB      0x66,0x90
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        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[((112-128))+rcx]
> > > > > >
> > > > > > +        bswap   r9d
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        xor     r9d,ebp
> > > > > >
> > > > > > +DB      0x66,0x90
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +        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[((128-128))+rcx]
> > > > > >
> > > > > > +        bswap   r9d
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        xor     r9d,ebp
> > > > > >
> > > > > > +DB      0x66,0x90
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        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[((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,ebp
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[rdi]
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +        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[((160-128))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jb      NEAR $L$ctr32_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +DB      102,68,15,56,220,193
> > > > > >
> > > > > > +DB      102,68,15,56,220,201
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((176-128))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +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[((192-128))+rcx]
> > > > > >
> > > > > > +        je      NEAR $L$ctr32_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +DB      102,68,15,56,220,193
> > > > > >
> > > > > > +DB      102,68,15,56,220,201
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((208-128))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +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[((224-128))+rcx]
> > > > > >
> > > > > > +        jmp     NEAR $L$ctr32_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ctr32_enc_done:
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        pxor    xmm10,xmm0
> > > > > >
> > > > > > +        movdqu  xmm12,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        pxor    xmm11,xmm0
> > > > > >
> > > > > > +        movdqu  xmm13,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        pxor    xmm12,xmm0
> > > > > >
> > > > > > +        movdqu  xmm14,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        pxor    xmm13,xmm0
> > > > > >
> > > > > > +        movdqu  xmm15,XMMWORD[80+rdi]
> > > > > >
> > > > > > +        pxor    xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm0
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +DB      102,68,15,56,220,193
> > > > > >
> > > > > > +DB      102,68,15,56,220,201
> > > > > >
> > > > > > +        movdqu  xmm1,XMMWORD[96+rdi]
> > > > > >
> > > > > > +        lea     rdi,[128+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,65,15,56,221,210
> > > > > >
> > > > > > +        pxor    xmm1,xmm0
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[((112-128))+rdi]
> > > > > >
> > > > > > +DB      102,65,15,56,221,219
> > > > > >
> > > > > > +        pxor    xmm10,xmm0
> > > > > >
> > > > > > +        movdqa  xmm11,XMMWORD[rsp]
> > > > > >
> > > > > > +DB      102,65,15,56,221,228
> > > > > >
> > > > > > +DB      102,65,15,56,221,237
> > > > > >
> > > > > > +        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[48+rsp]
> > > > > >
> > > > > > +        movdqa  xmm15,XMMWORD[64+rsp]
> > > > > >
> > > > > > +DB      102,68,15,56,221,193
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[80+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((16-128))+rcx]
> > > > > >
> > > > > > +DB      102,69,15,56,221,202
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm12
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm13
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        movdqa  xmm5,xmm14
> > > > > >
> > > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        movdqa  xmm6,xmm15
> > > > > >
> > > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm0
> > > > > >
> > > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > > >
> > > > > > +        movups  XMMWORD[112+rsi],xmm9
> > > > > >
> > > > > > +        lea     rsi,[128+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rdx,8
> > > > > >
> > > > > > +        jnc     NEAR $L$ctr32_loop8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     rdx,8
> > > > > >
> > > > > > +        jz      NEAR $L$ctr32_done
> > > > > >
> > > > > > +        lea     rcx,[((-128))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ctr32_tail:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rcx,[16+rcx]
> > > > > >
> > > > > > +        cmp     rdx,4
> > > > > >
> > > > > > +        jb      NEAR $L$ctr32_loop3
> > > > > >
> > > > > > +        je      NEAR $L$ctr32_loop4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movdqa  xmm8,XMMWORD[96+rsp]
> > > > > >
> > > > > > +        pxor    xmm9,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[16+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        lea     rcx,[((32-16))+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +        movups  xmm10,XMMWORD[rdi]
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +DB      102,15,56,220,241
> > > > > >
> > > > > > +        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[48+rdi]
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        cmp     rdx,6
> > > > > >
> > > > > > +        jb      NEAR $L$ctr32_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm11,XMMWORD[80+rdi]
> > > > > >
> > > > > > +        xorps   xmm7,xmm11
> > > > > >
> > > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > > >
> > > > > > +        je      NEAR $L$ctr32_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm12,XMMWORD[96+rdi]
> > > > > >
> > > > > > +        xorps   xmm8,xmm12
> > > > > >
> > > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > > >
> > > > > > +        jmp     NEAR $L$ctr32_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ctr32_loop4:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        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[rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$ctr32_loop4
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +DB      102,15,56,221,217
> > > > > >
> > > > > > +        movups  xmm10,XMMWORD[rdi]
> > > > > >
> > > > > > +        movups  xmm11,XMMWORD[16+rdi]
> > > > > >
> > > > > > +DB      102,15,56,221,225
> > > > > >
> > > > > > +DB      102,15,56,221,233
> > > > > >
> > > > > > +        movups  xmm12,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        movups  xmm13,XMMWORD[48+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        jmp     NEAR $L$ctr32_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ctr32_loop3:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        lea     rcx,[16+rcx]
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +        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[rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        cmp     rdx,2
> > > > > >
> > > > > > +        jb      NEAR $L$ctr32_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm11,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        je      NEAR $L$ctr32_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm12,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ctr32_done:
> > > > > >
> > > > > > +        xorps   xmm0,xmm0
> > > > > >
> > > > > > +        xor     ebp,ebp
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-168))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-168)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-152))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-152)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-136))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-136)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-120))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-104))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-88))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-72))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[((-56))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[((-40))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[((-24))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-24)+r11],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-8))+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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:
> > > > > >
> > > > > > +global  aesni_xts_encrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +aesni_xts_encrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_xts_encrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r11,[rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsp,272
> > > > > >
> > > > > > +        and     rsp,-16
> > > > > >
> > > > > > +        movaps  XMMWORD[(-168)+r11],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[(-152)+r11],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[(-136)+r11],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+r11],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+r11],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+r11],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+r11],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+r11],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+r11],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-24)+r11],xmm15
> > > > > >
> > > > > > +$L$xts_enc_body:
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[r8]
> > > > > >
> > > > > > +        lea     r8,[16+r8]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_enc1_8
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        mov     rbp,rcx
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        shl     r10d,4
> > > > > >
> > > > > > +        mov     r9,rdx
> > > > > >
> > > > > > +        and     rdx,-16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,XMMWORD[$L$xts_magic]
> > > > > >
> > > > > > +        movdqa  xmm15,xmm2
> > > > > >
> > > > > > +        pshufd  xmm9,xmm2,0x5f
> > > > > >
> > > > > > +        pxor    xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        movdqa  xmm10,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        pxor    xmm10,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        movdqa  xmm11,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        pxor    xmm11,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        movdqa  xmm12,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        pxor    xmm12,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        movdqa  xmm13,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        pxor    xmm13,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm15
> > > > > >
> > > > > > +        psrad   xmm9,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm9,xmm8
> > > > > >
> > > > > > +        pxor    xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rdx,16*6
> > > > > >
> > > > > > +        jc      NEAR $L$xts_enc_short
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,16+96
> > > > > >
> > > > > > +        lea     rcx,[32+r10*1+rbp]
> > > > > >
> > > > > > +        sub     rax,r10
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > > > >
> > > > > > +        mov     r10,rax
> > > > > >
> > > > > > +        lea     r8,[$L$xts_magic]
> > > > > >
> > > > > > +        jmp     NEAR $L$xts_enc_grandloop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$xts_enc_grandloop:
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        movdqa  xmm8,xmm0
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > > > >
> > > > > > +        pxor    xmm8,xmm15
> > > > > >
> > > > > > +        movdqa  xmm9,XMMWORD[96+rsp]
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rbp]
> > > > > >
> > > > > > +        lea     rdi,[96+rdi]
> > > > > >
> > > > > > +        pxor    xmm7,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm10,xmm9
> > > > > >
> > > > > > +DB      102,15,56,220,241
> > > > > >
> > > > > > +        pxor    xmm11,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm10
> > > > > >
> > > > > > +DB      102,15,56,220,249
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+rbp]
> > > > > >
> > > > > > +        pxor    xmm12,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        pxor    xmm13,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm11
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        pxor    xmm14,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm12
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +        pxor    xmm8,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[64+rsp],xmm14
> > > > > >
> > > > > > +DB      102,15,56,220,240
> > > > > >
> > > > > > +DB      102,15,56,220,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+rbp]
> > > > > >
> > > > > > +        movdqa  XMMWORD[80+rsp],xmm8
> > > > > >
> > > > > > +        pshufd  xmm9,xmm15,0x5f
> > > > > >
> > > > > > +        jmp     NEAR $L$xts_enc_loop6
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$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[((-64))+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
> > > > > >
> > > > > > +DB      102,15,56,220,240
> > > > > >
> > > > > > +DB      102,15,56,220,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$xts_enc_loop6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,XMMWORD[r8]
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        movups  xmm10,XMMWORD[rbp]
> > > > > >
> > > > > > +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[((-64))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        pxor    xmm10,xmm15
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        movaps  xmm12,xmm11
> > > > > >
> > > > > > +DB      102,15,56,220,240
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +DB      102,15,56,220,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-48))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        pxor    xmm11,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        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[((-32))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        pxor    xmm12,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +DB      102,15,56,220,240
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movaps  xmm14,xmm13
> > > > > >
> > > > > > +DB      102,15,56,220,248
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        pxor    xmm13,xmm15
> > > > > >
> > > > > > +        psrad   xmm0,31
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm0,xmm8
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        pxor    xmm15,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rbp]
> > > > > >
> > > > > > +DB      102,15,56,220,241
> > > > > >
> > > > > > +DB      102,15,56,220,249
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm14,xmm15
> > > > > >
> > > > > > +DB      102,15,56,221,84,36,0
> > > > > >
> > > > > > +        psrad   xmm9,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +DB      102,15,56,221,92,36,16
> > > > > >
> > > > > > +DB      102,15,56,221,100,36,32
> > > > > >
> > > > > > +        pand    xmm9,xmm8
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +DB      102,15,56,221,108,36,48
> > > > > >
> > > > > > +DB      102,15,56,221,116,36,64
> > > > > >
> > > > > > +DB      102,15,56,221,124,36,80
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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     NEAR $L$xts_enc_grandloop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,16+96
> > > > > >
> > > > > > +        sub     eax,r10d
> > > > > >
> > > > > > +        mov     rcx,rbp
> > > > > >
> > > > > > +        shr     eax,4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$xts_enc_short:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +        pxor    xmm10,xmm0
> > > > > >
> > > > > > +        add     rdx,16*6
> > > > > >
> > > > > > +        jz      NEAR $L$xts_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm11,xmm0
> > > > > >
> > > > > > +        cmp     rdx,0x20
> > > > > >
> > > > > > +        jb      NEAR $L$xts_enc_one
> > > > > >
> > > > > > +        pxor    xmm12,xmm0
> > > > > >
> > > > > > +        je      NEAR $L$xts_enc_two
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm13,xmm0
> > > > > >
> > > > > > +        cmp     rdx,0x40
> > > > > >
> > > > > > +        jb      NEAR $L$xts_enc_three
> > > > > >
> > > > > > +        pxor    xmm14,xmm0
> > > > > >
> > > > > > +        je      NEAR $L$xts_enc_four
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        lea     rdi,[80+rdi]
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _aesni_encrypt6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movdqa  xmm10,xmm15
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm5,xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        xorps   xmm6,xmm14
> > > > > >
> > > > > > +        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[rdi]
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_enc1_9:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        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[rsi],xmm2
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +        jmp     NEAR $L$xts_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$xts_enc_two:
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        lea     rdi,[32+rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _aesni_encrypt2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movdqa  xmm10,xmm12
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        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[rdi]
> > > > > >
> > > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        lea     rdi,[48+rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _aesni_encrypt3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movdqa  xmm10,xmm13
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +        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[rdi]
> > > > > >
> > > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movups  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        lea     rdi,[64+rdi]
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +        xorps   xmm5,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _aesni_encrypt4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movdqa  xmm10,xmm14
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +        and     r9,15
> > > > > >
> > > > > > +        jz      NEAR $L$xts_enc_ret
> > > > > >
> > > > > > +        mov     rdx,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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     NEAR $L$xts_enc_steal
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsi,r9
> > > > > >
> > > > > > +        mov     rcx,rbp
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[((-16))+rsi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_enc1_10:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        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[(-16)+rsi],xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$xts_enc_ret:
> > > > > >
> > > > > > +        xorps   xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-168))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-168)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-152))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-152)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-136))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-136)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-120))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-104))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-88))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-72))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[((-56))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[((-40))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[((-24))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-24)+r11],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-8))+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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:
> > > > > >
> > > > > > +global  aesni_xts_decrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +aesni_xts_decrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_xts_decrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r11,[rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsp,272
> > > > > >
> > > > > > +        and     rsp,-16
> > > > > >
> > > > > > +        movaps  XMMWORD[(-168)+r11],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[(-152)+r11],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[(-136)+r11],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+r11],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+r11],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+r11],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+r11],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+r11],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+r11],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-24)+r11],xmm15
> > > > > >
> > > > > > +$L$xts_dec_body:
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        setnz   al
> > > > > >
> > > > > > +        shl     rax,4
> > > > > >
> > > > > > +        sub     rdx,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        mov     rbp,rcx
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        shl     r10d,4
> > > > > >
> > > > > > +        mov     r9,rdx
> > > > > >
> > > > > > +        and     rdx,-16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,XMMWORD[$L$xts_magic]
> > > > > >
> > > > > > +        movdqa  xmm15,xmm2
> > > > > >
> > > > > > +        pshufd  xmm9,xmm2,0x5f
> > > > > >
> > > > > > +        pxor    xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        movdqa  xmm10,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        pxor    xmm10,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        movdqa  xmm11,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        pxor    xmm11,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        movdqa  xmm12,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        pxor    xmm12,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        movdqa  xmm13,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        pxor    xmm13,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm15
> > > > > >
> > > > > > +        psrad   xmm9,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm9,xmm8
> > > > > >
> > > > > > +        pxor    xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rdx,16*6
> > > > > >
> > > > > > +        jc      NEAR $L$xts_dec_short
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,16+96
> > > > > >
> > > > > > +        lea     rcx,[32+r10*1+rbp]
> > > > > >
> > > > > > +        sub     rax,r10
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > > > >
> > > > > > +        mov     r10,rax
> > > > > >
> > > > > > +        lea     r8,[$L$xts_magic]
> > > > > >
> > > > > > +        jmp     NEAR $L$xts_dec_grandloop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$xts_dec_grandloop:
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        movdqa  xmm8,xmm0
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > > > >
> > > > > > +        pxor    xmm8,xmm15
> > > > > >
> > > > > > +        movdqa  xmm9,XMMWORD[96+rsp]
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rbp]
> > > > > >
> > > > > > +        lea     rdi,[96+rdi]
> > > > > >
> > > > > > +        pxor    xmm7,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm10,xmm9
> > > > > >
> > > > > > +DB      102,15,56,222,241
> > > > > >
> > > > > > +        pxor    xmm11,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm10
> > > > > >
> > > > > > +DB      102,15,56,222,249
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+rbp]
> > > > > >
> > > > > > +        pxor    xmm12,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +        pxor    xmm13,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm11
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +        pxor    xmm14,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm12
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +        pxor    xmm8,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[64+rsp],xmm14
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+rbp]
> > > > > >
> > > > > > +        movdqa  XMMWORD[80+rsp],xmm8
> > > > > >
> > > > > > +        pshufd  xmm9,xmm15,0x5f
> > > > > >
> > > > > > +        jmp     NEAR $L$xts_dec_loop6
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$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[((-64))+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
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$xts_dec_loop6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,XMMWORD[r8]
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        movups  xmm10,XMMWORD[rbp]
> > > > > >
> > > > > > +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[((-64))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        pxor    xmm10,xmm15
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        movaps  xmm12,xmm11
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-48))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        pxor    xmm11,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        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[((-32))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +        pxor    xmm12,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movaps  xmm14,xmm13
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        pxor    xmm13,xmm15
> > > > > >
> > > > > > +        psrad   xmm0,31
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm0,xmm8
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        pxor    xmm15,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rbp]
> > > > > >
> > > > > > +DB      102,15,56,222,241
> > > > > >
> > > > > > +DB      102,15,56,222,249
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm14,xmm15
> > > > > >
> > > > > > +DB      102,15,56,223,84,36,0
> > > > > >
> > > > > > +        psrad   xmm9,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +DB      102,15,56,223,92,36,16
> > > > > >
> > > > > > +DB      102,15,56,223,100,36,32
> > > > > >
> > > > > > +        pand    xmm9,xmm8
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +DB      102,15,56,223,108,36,48
> > > > > >
> > > > > > +DB      102,15,56,223,116,36,64
> > > > > >
> > > > > > +DB      102,15,56,223,124,36,80
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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     NEAR $L$xts_dec_grandloop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,16+96
> > > > > >
> > > > > > +        sub     eax,r10d
> > > > > >
> > > > > > +        mov     rcx,rbp
> > > > > >
> > > > > > +        shr     eax,4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$xts_dec_short:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +        pxor    xmm10,xmm0
> > > > > >
> > > > > > +        pxor    xmm11,xmm0
> > > > > >
> > > > > > +        add     rdx,16*6
> > > > > >
> > > > > > +        jz      NEAR $L$xts_dec_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm12,xmm0
> > > > > >
> > > > > > +        cmp     rdx,0x20
> > > > > >
> > > > > > +        jb      NEAR $L$xts_dec_one
> > > > > >
> > > > > > +        pxor    xmm13,xmm0
> > > > > >
> > > > > > +        je      NEAR $L$xts_dec_two
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm14,xmm0
> > > > > >
> > > > > > +        cmp     rdx,0x40
> > > > > >
> > > > > > +        jb      NEAR $L$xts_dec_three
> > > > > >
> > > > > > +        je      NEAR $L$xts_dec_four
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        lea     rdi,[80+rdi]
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _aesni_decrypt6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm5,xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        xorps   xmm6,xmm14
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm14,xmm14
> > > > > >
> > > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pcmpgtd xmm14,xmm15
> > > > > >
> > > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        lea     rsi,[80+rsi]
> > > > > >
> > > > > > +        pshufd  xmm11,xmm14,0x13
> > > > > >
> > > > > > +        and     r9,15
> > > > > >
> > > > > > +        jz      NEAR $L$xts_dec_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm10,xmm15
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm11,xmm8
> > > > > >
> > > > > > +        pxor    xmm11,xmm15
> > > > > >
> > > > > > +        jmp     NEAR $L$xts_dec_done2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$xts_dec_one:
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_dec1_12:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        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[rsi],xmm2
> > > > > >
> > > > > > +        movdqa  xmm11,xmm12
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +        jmp     NEAR $L$xts_dec_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$xts_dec_two:
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        lea     rdi,[32+rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _aesni_decrypt2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movdqa  xmm10,xmm12
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        movdqa  xmm11,xmm13
> > > > > >
> > > > > > +        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[rdi]
> > > > > >
> > > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        lea     rdi,[48+rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _aesni_decrypt3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movdqa  xmm10,xmm13
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        movdqa  xmm11,xmm14
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +        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[rdi]
> > > > > >
> > > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movups  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        lea     rdi,[64+rdi]
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +        xorps   xmm5,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _aesni_decrypt4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movdqa  xmm10,xmm14
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqa  xmm11,xmm15
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +        and     r9,15
> > > > > >
> > > > > > +        jz      NEAR $L$xts_dec_ret
> > > > > >
> > > > > > +$L$xts_dec_done2:
> > > > > >
> > > > > > +        mov     rdx,r9
> > > > > >
> > > > > > +        mov     rcx,rbp
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm11
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_dec1_13:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        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[rsi],xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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     NEAR $L$xts_dec_steal
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsi,r9
> > > > > >
> > > > > > +        mov     rcx,rbp
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[rsi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_dec1_14:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        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[rsi],xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$xts_dec_ret:
> > > > > >
> > > > > > +        xorps   xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-168))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-168)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-152))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-152)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-136))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-136)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-120))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-104))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-88))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-72))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[((-56))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[((-40))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[((-24))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-24)+r11],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-8))+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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:
> > > > > >
> > > > > > +global  aesni_ocb_encrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +aesni_ocb_encrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_ocb_encrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rax,[rsp]
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-160))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[112+rsp],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[128+rsp],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[144+rsp],xmm15
> > > > > >
> > > > > > +$L$ocb_enc_body:
> > > > > >
> > > > > > +        mov     rbx,QWORD[56+rax]
> > > > > >
> > > > > > +        mov     rbp,QWORD[((56+8))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[240+rcx]
> > > > > >
> > > > > > +        mov     r11,rcx
> > > > > >
> > > > > > +        shl     r10d,4
> > > > > >
> > > > > > +        movups  xmm9,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm15,XMMWORD[r9]
> > > > > >
> > > > > > +        pxor    xmm9,xmm1
> > > > > >
> > > > > > +        pxor    xmm15,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,16+32
> > > > > >
> > > > > > +        lea     rcx,[32+r10*1+r11]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > > >
> > > > > > +        sub     rax,r10
> > > > > >
> > > > > > +        mov     r10,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[rbp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        test    r8,1
> > > > > >
> > > > > > +        jnz     NEAR $L$ocb_enc_odd
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        bsf     r12,r8
> > > > > >
> > > > > > +        add     r8,1
> > > > > >
> > > > > > +        shl     r12,4
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[r12*1+rbx]
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_encrypt1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm7
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +        sub     rdx,1
> > > > > >
> > > > > > +        jz      NEAR $L$ocb_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ocb_enc_odd:
> > > > > >
> > > > > > +        lea     r12,[1+r8]
> > > > > >
> > > > > > +        lea     r13,[3+r8]
> > > > > >
> > > > > > +        lea     r14,[5+r8]
> > > > > >
> > > > > > +        lea     r8,[6+r8]
> > > > > >
> > > > > > +        bsf     r12,r12
> > > > > >
> > > > > > +        bsf     r13,r13
> > > > > >
> > > > > > +        bsf     r14,r14
> > > > > >
> > > > > > +        shl     r12,4
> > > > > >
> > > > > > +        shl     r13,4
> > > > > >
> > > > > > +        shl     r14,4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rdx,6
> > > > > >
> > > > > > +        jc      NEAR $L$ocb_enc_short
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_enc_grandloop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ocb_enc_grandloop:
> > > > > >
> > > > > > +        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]
> > > > > >
> > > > > > +        lea     rdi,[96+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_encrypt6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        lea     rsi,[96+rsi]
> > > > > >
> > > > > > +        sub     rdx,6
> > > > > >
> > > > > > +        jnc     NEAR $L$ocb_enc_grandloop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ocb_enc_short:
> > > > > >
> > > > > > +        add     rdx,6
> > > > > >
> > > > > > +        jz      NEAR $L$ocb_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        cmp     rdx,2
> > > > > >
> > > > > > +        jb      NEAR $L$ocb_enc_one
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        je      NEAR $L$ocb_enc_two
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        cmp     rdx,4
> > > > > >
> > > > > > +        jb      NEAR $L$ocb_enc_three
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        je      NEAR $L$ocb_enc_four
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_encrypt6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm14
> > > > > >
> > > > > > +        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$ocb_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ocb_enc_one:
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_encrypt1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm7
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ocb_enc_two:
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_encrypt4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm11
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ocb_enc_three:
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_encrypt4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm12
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ocb_enc_four:
> > > > > >
> > > > > > +        call    __ocb_encrypt4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm13
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ocb_enc_done:
> > > > > >
> > > > > > +        pxor    xmm15,xmm0
> > > > > >
> > > > > > +        movdqu  XMMWORD[rbp],xmm8
> > > > > >
> > > > > > +        movdqu  XMMWORD[r9],xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[64+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[80+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[96+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[112+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[128+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[128+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[144+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[144+rsp],xmm0
> > > > > >
> > > > > > +        lea     rax,[((160+40))+rsp]
> > > > > >
> > > > > > +$L$ocb_enc_pop:
> > > > > >
> > > > > > +        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$ocb_enc_epilogue:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_aesni_ocb_encrypt:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +__ocb_encrypt6:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > > > >
> > > > > > +        movdqa  xmm12,xmm10
> > > > > >
> > > > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > > > >
> > > > > > +        movdqa  xmm14,xmm10
> > > > > >
> > > > > > +        pxor    xmm10,xmm15
> > > > > >
> > > > > > +        movdqu  xmm15,XMMWORD[r14*1+rbx]
> > > > > >
> > > > > > +        pxor    xmm11,xmm10
> > > > > >
> > > > > > +        pxor    xmm8,xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        pxor    xmm12,xmm11
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        pxor    xmm13,xmm12
> > > > > >
> > > > > > +        pxor    xmm8,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm14,xmm13
> > > > > >
> > > > > > +        pxor    xmm8,xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        pxor    xmm8,xmm6
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm8,xmm7
> > > > > >
> > > > > > +        pxor    xmm7,xmm15
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r12,[1+r8]
> > > > > >
> > > > > > +        lea     r13,[3+r8]
> > > > > >
> > > > > > +        lea     r14,[5+r8]
> > > > > >
> > > > > > +        add     r8,6
> > > > > >
> > > > > > +        pxor    xmm10,xmm9
> > > > > >
> > > > > > +        bsf     r12,r12
> > > > > >
> > > > > > +        bsf     r13,r13
> > > > > >
> > > > > > +        bsf     r14,r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        pxor    xmm11,xmm9
> > > > > >
> > > > > > +        pxor    xmm12,xmm9
> > > > > >
> > > > > > +DB      102,15,56,220,241
> > > > > >
> > > > > > +        pxor    xmm13,xmm9
> > > > > >
> > > > > > +        pxor    xmm14,xmm9
> > > > > >
> > > > > > +DB      102,15,56,220,249
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+r11]
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +DB      102,15,56,220,240
> > > > > >
> > > > > > +DB      102,15,56,220,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+r11]
> > > > > >
> > > > > > +        shl     r12,4
> > > > > >
> > > > > > +        shl     r13,4
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_enc_loop6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ocb_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[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
> > > > > >
> > > > > > +DB      102,15,56,220,240
> > > > > >
> > > > > > +DB      102,15,56,220,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > > > >
> > > > > > +        shl     r14,4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,65,15,56,221,210
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +DB      102,65,15,56,221,219
> > > > > >
> > > > > > +DB      102,65,15,56,221,228
> > > > > >
> > > > > > +DB      102,65,15,56,221,237
> > > > > >
> > > > > > +DB      102,65,15,56,221,246
> > > > > >
> > > > > > +DB      102,65,15,56,221,255
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +__ocb_encrypt4:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > > > >
> > > > > > +        movdqa  xmm12,xmm10
> > > > > >
> > > > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > > > >
> > > > > > +        pxor    xmm10,xmm15
> > > > > >
> > > > > > +        pxor    xmm11,xmm10
> > > > > >
> > > > > > +        pxor    xmm8,xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        pxor    xmm12,xmm11
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        pxor    xmm13,xmm12
> > > > > >
> > > > > > +        pxor    xmm8,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm8,xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm10,xmm9
> > > > > >
> > > > > > +        pxor    xmm11,xmm9
> > > > > >
> > > > > > +        pxor    xmm12,xmm9
> > > > > >
> > > > > > +        pxor    xmm13,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[48+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[64+r11]
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_enc_loop4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ocb_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[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[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,65,15,56,221,210
> > > > > >
> > > > > > +DB      102,65,15,56,221,219
> > > > > >
> > > > > > +DB      102,65,15,56,221,228
> > > > > >
> > > > > > +DB      102,65,15,56,221,237
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +__ocb_encrypt1:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm9
> > > > > >
> > > > > > +        pxor    xmm8,xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm7
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+r11]
> > > > > >
> > > > > > +        pxor    xmm7,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+r11]
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_enc_loop1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ocb_enc_loop1:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,32
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$ocb_enc_loop1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,221,215
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  aesni_ocb_decrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +aesni_ocb_decrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_ocb_decrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rax,[rsp]
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-160))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[112+rsp],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[128+rsp],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[144+rsp],xmm15
> > > > > >
> > > > > > +$L$ocb_dec_body:
> > > > > >
> > > > > > +        mov     rbx,QWORD[56+rax]
> > > > > >
> > > > > > +        mov     rbp,QWORD[((56+8))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[240+rcx]
> > > > > >
> > > > > > +        mov     r11,rcx
> > > > > >
> > > > > > +        shl     r10d,4
> > > > > >
> > > > > > +        movups  xmm9,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm15,XMMWORD[r9]
> > > > > >
> > > > > > +        pxor    xmm9,xmm1
> > > > > >
> > > > > > +        pxor    xmm15,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,16+32
> > > > > >
> > > > > > +        lea     rcx,[32+r10*1+r11]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > > >
> > > > > > +        sub     rax,r10
> > > > > >
> > > > > > +        mov     r10,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[rbp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        test    r8,1
> > > > > >
> > > > > > +        jnz     NEAR $L$ocb_dec_odd
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        bsf     r12,r8
> > > > > >
> > > > > > +        add     r8,1
> > > > > >
> > > > > > +        shl     r12,4
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[r12*1+rbx]
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_decrypt1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm7
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm8,xmm2
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +        sub     rdx,1
> > > > > >
> > > > > > +        jz      NEAR $L$ocb_dec_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ocb_dec_odd:
> > > > > >
> > > > > > +        lea     r12,[1+r8]
> > > > > >
> > > > > > +        lea     r13,[3+r8]
> > > > > >
> > > > > > +        lea     r14,[5+r8]
> > > > > >
> > > > > > +        lea     r8,[6+r8]
> > > > > >
> > > > > > +        bsf     r12,r12
> > > > > >
> > > > > > +        bsf     r13,r13
> > > > > >
> > > > > > +        bsf     r14,r14
> > > > > >
> > > > > > +        shl     r12,4
> > > > > >
> > > > > > +        shl     r13,4
> > > > > >
> > > > > > +        shl     r14,4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rdx,6
> > > > > >
> > > > > > +        jc      NEAR $L$ocb_dec_short
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_dec_grandloop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ocb_dec_grandloop:
> > > > > >
> > > > > > +        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]
> > > > > >
> > > > > > +        lea     rdi,[96+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_decrypt6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm8,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm8,xmm4
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm8,xmm5
> > > > > >
> > > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        pxor    xmm8,xmm6
> > > > > >
> > > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > > >
> > > > > > +        pxor    xmm8,xmm7
> > > > > >
> > > > > > +        lea     rsi,[96+rsi]
> > > > > >
> > > > > > +        sub     rdx,6
> > > > > >
> > > > > > +        jnc     NEAR $L$ocb_dec_grandloop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ocb_dec_short:
> > > > > >
> > > > > > +        add     rdx,6
> > > > > >
> > > > > > +        jz      NEAR $L$ocb_dec_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        cmp     rdx,2
> > > > > >
> > > > > > +        jb      NEAR $L$ocb_dec_one
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        je      NEAR $L$ocb_dec_two
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        cmp     rdx,4
> > > > > >
> > > > > > +        jb      NEAR $L$ocb_dec_three
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        je      NEAR $L$ocb_dec_four
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_decrypt6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm14
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm8,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm8,xmm4
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm8,xmm5
> > > > > >
> > > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        pxor    xmm8,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_dec_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ocb_dec_one:
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_decrypt1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm7
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm8,xmm2
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_dec_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ocb_dec_two:
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_decrypt4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm11
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm8,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        xorps   xmm8,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_dec_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ocb_dec_three:
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_decrypt4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm12
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm8,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        xorps   xmm8,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        xorps   xmm8,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_dec_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ocb_dec_four:
> > > > > >
> > > > > > +        call    __ocb_decrypt4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm13
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm8,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm8,xmm4
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm8,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ocb_dec_done:
> > > > > >
> > > > > > +        pxor    xmm15,xmm0
> > > > > >
> > > > > > +        movdqu  XMMWORD[rbp],xmm8
> > > > > >
> > > > > > +        movdqu  XMMWORD[r9],xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[64+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[80+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[96+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[112+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[128+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[128+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[144+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[144+rsp],xmm0
> > > > > >
> > > > > > +        lea     rax,[((160+40))+rsp]
> > > > > >
> > > > > > +$L$ocb_dec_pop:
> > > > > >
> > > > > > +        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$ocb_dec_epilogue:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_aesni_ocb_decrypt:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +__ocb_decrypt6:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > > > >
> > > > > > +        movdqa  xmm12,xmm10
> > > > > >
> > > > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > > > >
> > > > > > +        movdqa  xmm14,xmm10
> > > > > >
> > > > > > +        pxor    xmm10,xmm15
> > > > > >
> > > > > > +        movdqu  xmm15,XMMWORD[r14*1+rbx]
> > > > > >
> > > > > > +        pxor    xmm11,xmm10
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        pxor    xmm12,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        pxor    xmm13,xmm12
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm14,xmm13
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm15
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r12,[1+r8]
> > > > > >
> > > > > > +        lea     r13,[3+r8]
> > > > > >
> > > > > > +        lea     r14,[5+r8]
> > > > > >
> > > > > > +        add     r8,6
> > > > > >
> > > > > > +        pxor    xmm10,xmm9
> > > > > >
> > > > > > +        bsf     r12,r12
> > > > > >
> > > > > > +        bsf     r13,r13
> > > > > >
> > > > > > +        bsf     r14,r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        pxor    xmm11,xmm9
> > > > > >
> > > > > > +        pxor    xmm12,xmm9
> > > > > >
> > > > > > +DB      102,15,56,222,241
> > > > > >
> > > > > > +        pxor    xmm13,xmm9
> > > > > >
> > > > > > +        pxor    xmm14,xmm9
> > > > > >
> > > > > > +DB      102,15,56,222,249
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+r11]
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+r11]
> > > > > >
> > > > > > +        shl     r12,4
> > > > > >
> > > > > > +        shl     r13,4
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_dec_loop6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ocb_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[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
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > > > >
> > > > > > +        shl     r14,4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,65,15,56,223,210
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +DB      102,65,15,56,223,219
> > > > > >
> > > > > > +DB      102,65,15,56,223,228
> > > > > >
> > > > > > +DB      102,65,15,56,223,237
> > > > > >
> > > > > > +DB      102,65,15,56,223,246
> > > > > >
> > > > > > +DB      102,65,15,56,223,255
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +__ocb_decrypt4:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > > > >
> > > > > > +        movdqa  xmm12,xmm10
> > > > > >
> > > > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > > > >
> > > > > > +        pxor    xmm10,xmm15
> > > > > >
> > > > > > +        pxor    xmm11,xmm10
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        pxor    xmm12,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        pxor    xmm13,xmm12
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm10,xmm9
> > > > > >
> > > > > > +        pxor    xmm11,xmm9
> > > > > >
> > > > > > +        pxor    xmm12,xmm9
> > > > > >
> > > > > > +        pxor    xmm13,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[48+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[64+r11]
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_dec_loop4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ocb_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[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[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,65,15,56,223,210
> > > > > >
> > > > > > +DB      102,65,15,56,223,219
> > > > > >
> > > > > > +DB      102,65,15,56,223,228
> > > > > >
> > > > > > +DB      102,65,15,56,223,237
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +__ocb_decrypt1:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm9
> > > > > >
> > > > > > +        pxor    xmm2,xmm7
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+r11]
> > > > > >
> > > > > > +        pxor    xmm7,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+r11]
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_dec_loop1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ocb_dec_loop1:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,32
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$ocb_dec_loop1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,223,215
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  aesni_cbc_encrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +aesni_cbc_encrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_cbc_encrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        test    rdx,rdx
> > > > > >
> > > > > > +        jz      NEAR $L$cbc_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[240+rcx]
> > > > > >
> > > > > > +        mov     r11,rcx
> > > > > >
> > > > > > +        test    r9d,r9d
> > > > > >
> > > > > > +        jz      NEAR $L$cbc_decrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[r8]
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        cmp     rdx,16
> > > > > >
> > > > > > +        jb      NEAR $L$cbc_enc_tail
> > > > > >
> > > > > > +        sub     rdx,16
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_enc_loop
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_enc_loop:
> > > > > >
> > > > > > +        movups  xmm3,XMMWORD[rdi]
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm3
> > > > > >
> > > > > > +$L$oop_enc1_15:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        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[rsi],xmm2
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +        sub     rdx,16
> > > > > >
> > > > > > +        jnc     NEAR $L$cbc_enc_loop
> > > > > >
> > > > > > +        add     rdx,16
> > > > > >
> > > > > > +        jnz     NEAR $L$cbc_enc_tail
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        movups  XMMWORD[r8],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$cbc_enc_tail:
> > > > > >
> > > > > > +        mov     rcx,rdx
> > > > > >
> > > > > > +        xchg    rsi,rdi
> > > > > >
> > > > > > +        DD      0x9066A4F3
> > > > > >
> > > > > > +        mov     ecx,16
> > > > > >
> > > > > > +        sub     rcx,rdx
> > > > > >
> > > > > > +        xor     eax,eax
> > > > > >
> > > > > > +        DD      0x9066AAF3
> > > > > >
> > > > > > +        lea     rdi,[((-16))+rdi]
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        mov     rsi,rdi
> > > > > >
> > > > > > +        mov     rcx,r11
> > > > > >
> > > > > > +        xor     rdx,rdx
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_enc_loop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_decrypt:
> > > > > >
> > > > > > +        cmp     rdx,16
> > > > > >
> > > > > > +        jne     NEAR $L$cbc_decrypt_bulk
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[r8]
> > > > > >
> > > > > > +        movdqa  xmm4,xmm2
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_dec1_16:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        dec     r10d
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > > >
> > > > > > +        lea     rcx,[16+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_dec1_16
> > > > > >
> > > > > > +DB      102,15,56,223,209
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        movdqu  XMMWORD[r8],xmm4
> > > > > >
> > > > > > +        xorps   xmm2,xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_decrypt_bulk:
> > > > > >
> > > > > > +        lea     r11,[rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsp,176
> > > > > >
> > > > > > +        and     rsp,-16
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +        mov     rbp,rcx
> > > > > >
> > > > > > +        movups  xmm10,XMMWORD[r8]
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        cmp     rdx,0x50
> > > > > >
> > > > > > +        jbe     NEAR $L$cbc_dec_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        movdqa  xmm11,xmm2
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        movdqa  xmm12,xmm3
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        movdqa  xmm13,xmm4
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        movdqa  xmm14,xmm5
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > > > >
> > > > > > +        movdqa  xmm15,xmm6
> > > > > >
> > > > > > +        mov     r9d,DWORD[((OPENSSL_ia32cap_P+4))]
> > > > > >
> > > > > > +        cmp     rdx,0x70
> > > > > >
> > > > > > +        jbe     NEAR $L$cbc_dec_six_or_seven
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r9d,71303168
> > > > > >
> > > > > > +        sub     rdx,0x50
> > > > > >
> > > > > > +        cmp     r9d,4194304
> > > > > >
> > > > > > +        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[rsi],xmm9
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +$L$cbc_dec_loop8_enter:
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[96+rdi]
> > > > > >
> > > > > > +        pxor    xmm2,xmm0
> > > > > >
> > > > > > +        movdqu  xmm9,XMMWORD[112+rdi]
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((16-112))+rcx]
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        mov     rbp,-1
> > > > > >
> > > > > > +        cmp     rdx,0x70
> > > > > >
> > > > > > +        pxor    xmm5,xmm0
> > > > > >
> > > > > > +        pxor    xmm6,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm0
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        pxor    xmm9,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((32-112))+rcx]
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +DB      102,68,15,56,222,193
> > > > > >
> > > > > > +        adc     rbp,0
> > > > > >
> > > > > > +        and     rbp,128
> > > > > >
> > > > > > +DB      102,68,15,56,222,201
> > > > > >
> > > > > > +        add     rbp,rdi
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((48-112))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +DB      102,68,15,56,222,192
> > > > > >
> > > > > > +DB      102,68,15,56,222,200
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((64-112))+rcx]
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +DB      102,68,15,56,222,193
> > > > > >
> > > > > > +DB      102,68,15,56,222,201
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((80-112))+rcx]
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +DB      102,68,15,56,222,192
> > > > > >
> > > > > > +DB      102,68,15,56,222,200
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((96-112))+rcx]
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +DB      102,68,15,56,222,193
> > > > > >
> > > > > > +DB      102,68,15,56,222,201
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((112-112))+rcx]
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +DB      102,68,15,56,222,192
> > > > > >
> > > > > > +DB      102,68,15,56,222,200
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((128-112))+rcx]
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +DB      102,68,15,56,222,193
> > > > > >
> > > > > > +DB      102,68,15,56,222,201
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((144-112))+rcx]
> > > > > >
> > > > > > +        cmp     eax,11
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +DB      102,68,15,56,222,192
> > > > > >
> > > > > > +DB      102,68,15,56,222,200
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +DB      102,15,56,222,241
> > > > > >
> > > > > > +DB      102,15,56,222,249
> > > > > >
> > > > > > +DB      102,68,15,56,222,193
> > > > > >
> > > > > > +DB      102,68,15,56,222,201
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((176-112))+rcx]
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +DB      102,68,15,56,222,192
> > > > > >
> > > > > > +DB      102,68,15,56,222,200
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +DB      102,15,56,222,241
> > > > > >
> > > > > > +DB      102,15,56,222,249
> > > > > >
> > > > > > +DB      102,68,15,56,222,193
> > > > > >
> > > > > > +DB      102,68,15,56,222,201
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((208-112))+rcx]
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +DB      102,68,15,56,222,192
> > > > > >
> > > > > > +DB      102,68,15,56,222,200
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((224-112))+rcx]
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_dec_done
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_dec_done:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        pxor    xmm10,xmm0
> > > > > >
> > > > > > +        pxor    xmm11,xmm0
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        pxor    xmm12,xmm0
> > > > > >
> > > > > > +        pxor    xmm13,xmm0
> > > > > >
> > > > > > +DB      102,15,56,222,241
> > > > > >
> > > > > > +DB      102,15,56,222,249
> > > > > >
> > > > > > +        pxor    xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm0
> > > > > >
> > > > > > +DB      102,68,15,56,222,193
> > > > > >
> > > > > > +DB      102,68,15,56,222,201
> > > > > >
> > > > > > +        movdqu  xmm1,XMMWORD[80+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,65,15,56,223,210
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[96+rdi]
> > > > > >
> > > > > > +        pxor    xmm1,xmm0
> > > > > >
> > > > > > +DB      102,65,15,56,223,219
> > > > > >
> > > > > > +        pxor    xmm10,xmm0
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[112+rdi]
> > > > > >
> > > > > > +DB      102,65,15,56,223,228
> > > > > >
> > > > > > +        lea     rdi,[128+rdi]
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[rbp]
> > > > > >
> > > > > > +DB      102,65,15,56,223,237
> > > > > >
> > > > > > +DB      102,65,15,56,223,246
> > > > > >
> > > > > > +        movdqu  xmm12,XMMWORD[16+rbp]
> > > > > >
> > > > > > +        movdqu  xmm13,XMMWORD[32+rbp]
> > > > > >
> > > > > > +DB      102,65,15,56,223,255
> > > > > >
> > > > > > +DB      102,68,15,56,223,193
> > > > > >
> > > > > > +        movdqu  xmm14,XMMWORD[48+rbp]
> > > > > >
> > > > > > +        movdqu  xmm15,XMMWORD[64+rbp]
> > > > > >
> > > > > > +DB      102,69,15,56,223,202
> > > > > >
> > > > > > +        movdqa  xmm10,xmm0
> > > > > >
> > > > > > +        movdqu  xmm1,XMMWORD[80+rbp]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-112))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm12
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm13
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        movdqa  xmm5,xmm14
> > > > > >
> > > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        movdqa  xmm6,xmm15
> > > > > >
> > > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm1
> > > > > >
> > > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > > >
> > > > > > +        lea     rsi,[112+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rdx,0x80
> > > > > >
> > > > > > +        ja      NEAR $L$cbc_dec_loop8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movaps  xmm2,xmm9
> > > > > >
> > > > > > +        lea     rcx,[((-112))+rcx]
> > > > > >
> > > > > > +        add     rdx,0x70
> > > > > >
> > > > > > +        jle     NEAR $L$cbc_dec_clear_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,0x60
> > > > > >
> > > > > > +        ja      NEAR $L$cbc_dec_seven
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movaps  xmm8,xmm7
> > > > > >
> > > > > > +        call    _aesni_decrypt6
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movaps  xmm10,xmm8
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm15
> > > > > >
> > > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        lea     rsi,[80+rsi]
> > > > > >
> > > > > > +        movdqa  xmm2,xmm7
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_dec_seven:
> > > > > >
> > > > > > +        movups  xmm8,XMMWORD[96+rdi]
> > > > > >
> > > > > > +        xorps   xmm9,xmm9
> > > > > >
> > > > > > +        call    _aesni_decrypt8
> > > > > >
> > > > > > +        movups  xmm9,XMMWORD[80+rdi]
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movups  xmm10,XMMWORD[96+rdi]
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm15
> > > > > >
> > > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        pxor    xmm8,xmm9
> > > > > >
> > > > > > +        movdqu  XMMWORD[80+rsi],xmm7
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +        lea     rsi,[96+rsi]
> > > > > >
> > > > > > +        movdqa  xmm2,xmm8
> > > > > >
> > > > > > +        pxor    xmm8,xmm8
> > > > > >
> > > > > > +        pxor    xmm9,xmm9
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$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[32+rdi]
> > > > > >
> > > > > > +        movdqa  xmm12,xmm3
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        movdqa  xmm13,xmm4
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        movdqa  xmm14,xmm5
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > > > >
> > > > > > +        movdqa  xmm15,xmm6
> > > > > >
> > > > > > +$L$cbc_dec_loop6_enter:
> > > > > >
> > > > > > +        lea     rdi,[96+rdi]
> > > > > >
> > > > > > +        movdqa  xmm8,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _aesni_decrypt6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        mov     rcx,rbp
> > > > > >
> > > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm15
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        lea     rsi,[80+rsi]
> > > > > >
> > > > > > +        sub     rdx,0x60
> > > > > >
> > > > > > +        ja      NEAR $L$cbc_dec_loop6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm7
> > > > > >
> > > > > > +        add     rdx,0x50
> > > > > >
> > > > > > +        jle     NEAR $L$cbc_dec_clear_tail_collected
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm7
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$cbc_dec_tail:
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        sub     rdx,0x10
> > > > > >
> > > > > > +        jbe     NEAR $L$cbc_dec_one
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        movaps  xmm11,xmm2
> > > > > >
> > > > > > +        sub     rdx,0x10
> > > > > >
> > > > > > +        jbe     NEAR $L$cbc_dec_two
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        movaps  xmm12,xmm3
> > > > > >
> > > > > > +        sub     rdx,0x10
> > > > > >
> > > > > > +        jbe     NEAR $L$cbc_dec_three
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        movaps  xmm13,xmm4
> > > > > >
> > > > > > +        sub     rdx,0x10
> > > > > >
> > > > > > +        jbe     NEAR $L$cbc_dec_four
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm6,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        movaps  xmm14,xmm5
> > > > > >
> > > > > > +        movaps  xmm15,xmm6
> > > > > >
> > > > > > +        xorps   xmm7,xmm7
> > > > > >
> > > > > > +        call    _aesni_decrypt6
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movaps  xmm10,xmm15
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        lea     rsi,[64+rsi]
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +        sub     rdx,0x10
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_dec_one:
> > > > > >
> > > > > > +        movaps  xmm11,xmm2
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_dec1_17:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > > >
> > > > > > +        lea     rcx,[16+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_dec1_17
> > > > > >
> > > > > > +DB      102,15,56,223,209
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movaps  xmm10,xmm11
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_dec_two:
> > > > > >
> > > > > > +        movaps  xmm12,xmm3
> > > > > >
> > > > > > +        call    _aesni_decrypt2
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movaps  xmm10,xmm12
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_dec_three:
> > > > > >
> > > > > > +        movaps  xmm13,xmm4
> > > > > >
> > > > > > +        call    _aesni_decrypt3
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movaps  xmm10,xmm13
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        lea     rsi,[32+rsi]
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_dec_four:
> > > > > >
> > > > > > +        movaps  xmm14,xmm5
> > > > > >
> > > > > > +        call    _aesni_decrypt4
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movaps  xmm10,xmm14
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        movdqa  xmm2,xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        lea     rsi,[48+rsi]
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_dec_clear_tail_collected:
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +$L$cbc_dec_tail_collected:
> > > > > >
> > > > > > +        movups  XMMWORD[r8],xmm10
> > > > > >
> > > > > > +        and     rdx,15
> > > > > >
> > > > > > +        jnz     NEAR $L$cbc_dec_tail_partial
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_dec_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_dec_tail_partial:
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        mov     rcx,16
> > > > > >
> > > > > > +        mov     rdi,rsi
> > > > > >
> > > > > > +        sub     rcx,rdx
> > > > > >
> > > > > > +        lea     rsi,[rsp]
> > > > > >
> > > > > > +        DD      0x9066A4F3
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$cbc_dec_ret:
> > > > > >
> > > > > > +        xorps   xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[16+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[32+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[48+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[64+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[80+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[96+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[112+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[128+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[128+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[144+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[144+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[160+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[160+rsp],xmm0
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-8))+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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:
> > > > > >
> > > > > > +global  aesni_set_decrypt_key
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +aesni_set_decrypt_key:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      0x48,0x83,0xEC,0x08
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __aesni_set_encrypt_key
> > > > > >
> > > > > > +        shl     edx,4
> > > > > >
> > > > > > +        test    eax,eax
> > > > > >
> > > > > > +        jnz     NEAR $L$dec_key_ret
> > > > > >
> > > > > > +        lea     rcx,[16+rdx*1+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[r8]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > > >
> > > > > > +DB      102,15,56,219,192
> > > > > >
> > > > > > +DB      102,15,56,219,201
> > > > > >
> > > > > > +        lea     r8,[16+r8]
> > > > > >
> > > > > > +        lea     rcx,[((-16))+rcx]
> > > > > >
> > > > > > +        movups  XMMWORD[16+rcx],xmm0
> > > > > >
> > > > > > +        movups  XMMWORD[(-16)+r8],xmm1
> > > > > >
> > > > > > +        cmp     rcx,r8
> > > > > >
> > > > > > +        ja      NEAR $L$dec_key_inverse
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[r8]
> > > > > >
> > > > > > +DB      102,15,56,219,192
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        movups  XMMWORD[rcx],xmm0
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +$L$dec_key_ret:
> > > > > >
> > > > > > +        add     rsp,8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_set_decrypt_key:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  aesni_set_encrypt_key
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +aesni_set_encrypt_key:
> > > > > >
> > > > > > +__aesni_set_encrypt_key:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      0x48,0x83,0xEC,0x08
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,-1
> > > > > >
> > > > > > +        test    rcx,rcx
> > > > > >
> > > > > > +        jz      NEAR $L$enc_key_ret
> > > > > >
> > > > > > +        test    r8,r8
> > > > > >
> > > > > > +        jz      NEAR $L$enc_key_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,268437504
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        xorps   xmm4,xmm4
> > > > > >
> > > > > > +        and     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
> > > > > >
> > > > > > +        lea     rax,[16+r8]
> > > > > >
> > > > > > +        cmp     edx,256
> > > > > >
> > > > > > +        je      NEAR $L$14rounds
> > > > > >
> > > > > > +        cmp     edx,192
> > > > > >
> > > > > > +        je      NEAR $L$12rounds
> > > > > >
> > > > > > +        cmp     edx,128
> > > > > >
> > > > > > +        jne     NEAR $L$bad_keybits
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$10rounds:
> > > > > >
> > > > > > +        mov     edx,9
> > > > > >
> > > > > > +        cmp     r10d,268435456
> > > > > >
> > > > > > +        je      NEAR $L$10rounds_alt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  XMMWORD[r8],xmm0
> > > > > >
> > > > > > +DB      102,15,58,223,200,1
> > > > > >
> > > > > > +        call    $L$key_expansion_128_cold
> > > > > >
> > > > > > +DB      102,15,58,223,200,2
> > > > > >
> > > > > > +        call    $L$key_expansion_128
> > > > > >
> > > > > > +DB      102,15,58,223,200,4
> > > > > >
> > > > > > +        call    $L$key_expansion_128
> > > > > >
> > > > > > +DB      102,15,58,223,200,8
> > > > > >
> > > > > > +        call    $L$key_expansion_128
> > > > > >
> > > > > > +DB      102,15,58,223,200,16
> > > > > >
> > > > > > +        call    $L$key_expansion_128
> > > > > >
> > > > > > +DB      102,15,58,223,200,32
> > > > > >
> > > > > > +        call    $L$key_expansion_128
> > > > > >
> > > > > > +DB      102,15,58,223,200,64
> > > > > >
> > > > > > +        call    $L$key_expansion_128
> > > > > >
> > > > > > +DB      102,15,58,223,200,128
> > > > > >
> > > > > > +        call    $L$key_expansion_128
> > > > > >
> > > > > > +DB      102,15,58,223,200,27
> > > > > >
> > > > > > +        call    $L$key_expansion_128
> > > > > >
> > > > > > +DB      102,15,58,223,200,54
> > > > > >
> > > > > > +        call    $L$key_expansion_128
> > > > > >
> > > > > > +        movups  XMMWORD[rax],xmm0
> > > > > >
> > > > > > +        mov     DWORD[80+rax],edx
> > > > > >
> > > > > > +        xor     eax,eax
> > > > > >
> > > > > > +        jmp     NEAR $L$enc_key_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$10rounds_alt:
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[$L$key_rotate]
> > > > > >
> > > > > > +        mov     r10d,8
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqu  XMMWORD[r8],xmm0
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_key128
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$oop_key128:
> > > > > >
> > > > > > +DB      102,15,56,0,197
> > > > > >
> > > > > > +DB      102,15,56,221,196
> > > > > >
> > > > > > +        pslld   xmm4,1
> > > > > >
> > > > > > +        lea     rax,[16+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm3,xmm2
> > > > > >
> > > > > > +        pslldq  xmm2,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +        pslldq  xmm2,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +        pslldq  xmm2,4
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqu  XMMWORD[(-16)+rax],xmm0
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        dec     r10d
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_key128
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1b]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,0,197
> > > > > >
> > > > > > +DB      102,15,56,221,196
> > > > > >
> > > > > > +        pslld   xmm4,1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm3,xmm2
> > > > > >
> > > > > > +        pslldq  xmm2,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +        pslldq  xmm2,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +        pslldq  xmm2,4
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqu  XMMWORD[rax],xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      102,15,56,0,197
> > > > > >
> > > > > > +DB      102,15,56,221,196
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm3,xmm2
> > > > > >
> > > > > > +        pslldq  xmm2,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +        pslldq  xmm2,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +        pslldq  xmm2,4
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rax],xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[96+rax],edx
> > > > > >
> > > > > > +        xor     eax,eax
> > > > > >
> > > > > > +        jmp     NEAR $L$enc_key_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$12rounds:
> > > > > >
> > > > > > +        movq    xmm2,QWORD[16+rcx]
> > > > > >
> > > > > > +        mov     edx,11
> > > > > >
> > > > > > +        cmp     r10d,268435456
> > > > > >
> > > > > > +        je      NEAR $L$12rounds_alt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  XMMWORD[r8],xmm0
> > > > > >
> > > > > > +DB      102,15,58,223,202,1
> > > > > >
> > > > > > +        call    $L$key_expansion_192a_cold
> > > > > >
> > > > > > +DB      102,15,58,223,202,2
> > > > > >
> > > > > > +        call    $L$key_expansion_192b
> > > > > >
> > > > > > +DB      102,15,58,223,202,4
> > > > > >
> > > > > > +        call    $L$key_expansion_192a
> > > > > >
> > > > > > +DB      102,15,58,223,202,8
> > > > > >
> > > > > > +        call    $L$key_expansion_192b
> > > > > >
> > > > > > +DB      102,15,58,223,202,16
> > > > > >
> > > > > > +        call    $L$key_expansion_192a
> > > > > >
> > > > > > +DB      102,15,58,223,202,32
> > > > > >
> > > > > > +        call    $L$key_expansion_192b
> > > > > >
> > > > > > +DB      102,15,58,223,202,64
> > > > > >
> > > > > > +        call    $L$key_expansion_192a
> > > > > >
> > > > > > +DB      102,15,58,223,202,128
> > > > > >
> > > > > > +        call    $L$key_expansion_192b
> > > > > >
> > > > > > +        movups  XMMWORD[rax],xmm0
> > > > > >
> > > > > > +        mov     DWORD[48+rax],edx
> > > > > >
> > > > > > +        xor     rax,rax
> > > > > >
> > > > > > +        jmp     NEAR $L$enc_key_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$12rounds_alt:
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[$L$key_rotate192]
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> > > > > >
> > > > > > +        mov     r10d,8
> > > > > >
> > > > > > +        movdqu  XMMWORD[r8],xmm0
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_key192
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$oop_key192:
> > > > > >
> > > > > > +        movq    QWORD[rax],xmm2
> > > > > >
> > > > > > +        movdqa  xmm1,xmm2
> > > > > >
> > > > > > +DB      102,15,56,0,213
> > > > > >
> > > > > > +DB      102,15,56,221,212
> > > > > >
> > > > > > +        pslld   xmm4,1
> > > > > >
> > > > > > +        lea     rax,[24+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,4
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm3,xmm0,0xff
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +        pslldq  xmm1,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +        movdqu  XMMWORD[(-16)+rax],xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        dec     r10d
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_key192
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[32+rax],edx
> > > > > >
> > > > > > +        xor     eax,eax
> > > > > >
> > > > > > +        jmp     NEAR $L$enc_key_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$14rounds:
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        mov     edx,13
> > > > > >
> > > > > > +        lea     rax,[16+rax]
> > > > > >
> > > > > > +        cmp     r10d,268435456
> > > > > >
> > > > > > +        je      NEAR $L$14rounds_alt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        call    $L$key_expansion_256b
> > > > > >
> > > > > > +DB      102,15,58,223,202,2
> > > > > >
> > > > > > +        call    $L$key_expansion_256a
> > > > > >
> > > > > > +DB      102,15,58,223,200,2
> > > > > >
> > > > > > +        call    $L$key_expansion_256b
> > > > > >
> > > > > > +DB      102,15,58,223,202,4
> > > > > >
> > > > > > +        call    $L$key_expansion_256a
> > > > > >
> > > > > > +DB      102,15,58,223,200,4
> > > > > >
> > > > > > +        call    $L$key_expansion_256b
> > > > > >
> > > > > > +DB      102,15,58,223,202,8
> > > > > >
> > > > > > +        call    $L$key_expansion_256a
> > > > > >
> > > > > > +DB      102,15,58,223,200,8
> > > > > >
> > > > > > +        call    $L$key_expansion_256b
> > > > > >
> > > > > > +DB      102,15,58,223,202,16
> > > > > >
> > > > > > +        call    $L$key_expansion_256a
> > > > > >
> > > > > > +DB      102,15,58,223,200,16
> > > > > >
> > > > > > +        call    $L$key_expansion_256b
> > > > > >
> > > > > > +DB      102,15,58,223,202,32
> > > > > >
> > > > > > +        call    $L$key_expansion_256a
> > > > > >
> > > > > > +DB      102,15,58,223,200,32
> > > > > >
> > > > > > +        call    $L$key_expansion_256b
> > > > > >
> > > > > > +DB      102,15,58,223,202,64
> > > > > >
> > > > > > +        call    $L$key_expansion_256a
> > > > > >
> > > > > > +        movups  XMMWORD[rax],xmm0
> > > > > >
> > > > > > +        mov     DWORD[16+rax],edx
> > > > > >
> > > > > > +        xor     rax,rax
> > > > > >
> > > > > > +        jmp     NEAR $L$enc_key_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$14rounds_alt:
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[$L$key_rotate]
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> > > > > >
> > > > > > +        mov     r10d,7
> > > > > >
> > > > > > +        movdqu  XMMWORD[r8],xmm0
> > > > > >
> > > > > > +        movdqa  xmm1,xmm2
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+r8],xmm2
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_key256
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$oop_key256:
> > > > > >
> > > > > > +DB      102,15,56,0,213
> > > > > >
> > > > > > +DB      102,15,56,221,212
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,4
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pslld   xmm4,1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqu  XMMWORD[rax],xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        dec     r10d
> > > > > >
> > > > > > +        jz      NEAR $L$done_key256
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm2,xmm0,0xff
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +DB      102,15,56,221,211
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm3,xmm1
> > > > > >
> > > > > > +        pslldq  xmm1,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +        pslldq  xmm1,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +        pslldq  xmm1,4
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm2,xmm1
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rax],xmm2
> > > > > >
> > > > > > +        lea     rax,[32+rax]
> > > > > >
> > > > > > +        movdqa  xmm1,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_key256
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$done_key256:
> > > > > >
> > > > > > +        mov     DWORD[16+rax],edx
> > > > > >
> > > > > > +        xor     eax,eax
> > > > > >
> > > > > > +        jmp     NEAR $L$enc_key_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$bad_keybits:
> > > > > >
> > > > > > +        mov     rax,-2
> > > > > >
> > > > > > +$L$enc_key_ret:
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        add     rsp,8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +$L$SEH_end_set_encrypt_key:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$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
> > > > > >
> > > > > > +        xorps   xmm0,xmm4
> > > > > >
> > > > > > +        shufps  xmm1,xmm1,255
> > > > > >
> > > > > > +        xorps   xmm0,xmm1
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$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:
> > > > > >
> > > > > > +        shufps  xmm4,xmm0,16
> > > > > >
> > > > > > +        movdqa  xmm3,xmm2
> > > > > >
> > > > > > +        xorps   xmm0,xmm4
> > > > > >
> > > > > > +        shufps  xmm4,xmm0,140
> > > > > >
> > > > > > +        pslldq  xmm3,4
> > > > > >
> > > > > > +        xorps   xmm0,xmm4
> > > > > >
> > > > > > +        pshufd  xmm1,xmm1,85
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pshufd  xmm3,xmm0,255
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$key_expansion_192b:
> > > > > >
> > > > > > +        movaps  xmm3,xmm0
> > > > > >
> > > > > > +        shufps  xmm5,xmm0,68
> > > > > >
> > > > > > +        movups  XMMWORD[rax],xmm5
> > > > > >
> > > > > > +        shufps  xmm3,xmm2,78
> > > > > >
> > > > > > +        movups  XMMWORD[16+rax],xmm3
> > > > > >
> > > > > > +        lea     rax,[32+rax]
> > > > > >
> > > > > > +        jmp     NEAR $L$key_expansion_192b_warm
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$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
> > > > > >
> > > > > > +        xorps   xmm0,xmm4
> > > > > >
> > > > > > +        shufps  xmm1,xmm1,255
> > > > > >
> > > > > > +        xorps   xmm0,xmm1
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$key_expansion_256b:
> > > > > >
> > > > > > +        movups  XMMWORD[rax],xmm0
> > > > > >
> > > > > > +        lea     rax,[16+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        shufps  xmm4,xmm2,16
> > > > > >
> > > > > > +        xorps   xmm2,xmm4
> > > > > >
> > > > > > +        shufps  xmm4,xmm2,140
> > > > > >
> > > > > > +        xorps   xmm2,xmm4
> > > > > >
> > > > > > +        shufps  xmm1,xmm1,170
> > > > > >
> > > > > > +        xorps   xmm2,xmm1
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +$L$bswap_mask:
> > > > > >
> > > > > > +DB      15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
> > > > > >
> > > > > > +$L$increment32:
> > > > > >
> > > > > > +        DD      6,6,6,0
> > > > > >
> > > > > > +$L$increment64:
> > > > > >
> > > > > > +        DD      1,0,0,0
> > > > > >
> > > > > > +$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
> > > > > >
> > > > > > +$L$key_rotate:
> > > > > >
> > > > > > +        DD      0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
> > > > > >
> > > > > > +$L$key_rotate192:
> > > > > >
> > > > > > +        DD      0x04070605,0x04070605,0x04070605,0x04070605
> > > > > >
> > > > > > +$L$key_rcon1:
> > > > > >
> > > > > > +        DD      1,1,1,1
> > > > > >
> > > > > > +$L$key_rcon1b:
> > > > > >
> > > > > > +        DD      0x1b,0x1b,0x1b,0x1b
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
> > > > > >
> > > > > > +DB      83,45,78,73,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   64
> > > > > >
> > > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +ecb_ccm64_se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,8
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +        lea     rax,[88+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +ctr_xts_se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[208+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((-168))+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,20
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-8))+rax]
> > > > > >
> > > > > > +        mov     QWORD[160+r8],rbp
> > > > > >
> > > > > > +        jmp     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +ocb_se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[8+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$ocb_no_xmm
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,20
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +        lea     rax,[((160+40))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ocb_no_xmm:
> > > > > >
> > > > > > +        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     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +cbc_se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$cbc_decrypt_bulk]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$cbc_decrypt_body]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$cbc_ret]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[16+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,20
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[208+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-8))+rax]
> > > > > >
> > > > > > +        mov     QWORD[160+r8],rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .pdata rdata align=4
> > > > > >
> > > > > > +ALIGN   4
> > > > > >
> > > > > > +        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      $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      $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      $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      $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      $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_ocb_encrypt wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_aesni_ocb_encrypt wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_ocb_enc wrt ..imagebase
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        DD      $L$SEH_begin_aesni_ocb_decrypt wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_aesni_ocb_decrypt wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_ocb_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      aesni_set_decrypt_key wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_set_decrypt_key wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_key wrt ..imagebase
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      ecb_ccm64_se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret
> > > > wrt ..imagebase
> > > > > >
> > > > > > +$L$SEH_info_ccm64_enc:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      ecb_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      ecb_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      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      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      ctr_xts_se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > +$L$SEH_info_ocb_enc:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      ocb_se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$ocb_enc_body wrt ..imagebase,$L$ocb_enc_epilogue
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$ocb_enc_pop wrt ..imagebase
> > > > > >
> > > > > > +        DD      0
> > > > > >
> > > > > > +$L$SEH_info_ocb_dec:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      ocb_se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$ocb_dec_body wrt ..imagebase,$L$ocb_dec_epilogue
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$ocb_dec_pop wrt ..imagebase
> > > > > >
> > > > > > +        DD      0
> > > > > >
> > > > > > +$L$SEH_info_cbc:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      cbc_se_handler wrt ..imagebase
> > > > > >
> > > > > > +$L$SEH_info_key:
> > > > > >
> > > > > > +DB      0x01,0x04,0x01,0x00
> > > > > >
> > > > > > +DB      0x04,0x02,0x00,0x00
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-
> > > > x86_64.nasm
> > > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..1c911fa294
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
> > > > > > @@ -0,0 +1,1173 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/aes/asm/vpaes-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_vpaes_encrypt_core:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r9,rdx
> > > > > >
> > > > > > +        mov     r11,16
> > > > > >
> > > > > > +        mov     eax,DWORD[240+rdx]
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[$L$k_ipt]
> > > > > >
> > > > > > +        pandn   xmm1,xmm0
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[r9]
> > > > > >
> > > > > > +        psrld   xmm1,4
> > > > > >
> > > > > > +        pand    xmm0,xmm9
> > > > > >
> > > > > > +DB      102,15,56,0,208
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[(($L$k_ipt+16))]
> > > > > >
> > > > > > +DB      102,15,56,0,193
> > > > > >
> > > > > > +        pxor    xmm2,xmm5
> > > > > >
> > > > > > +        add     r9,16
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        lea     r10,[$L$k_mc_backward]
> > > > > >
> > > > > > +        jmp     NEAR $L$enc_entry
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$enc_loop:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm13
> > > > > >
> > > > > > +        movdqa  xmm0,xmm12
> > > > > >
> > > > > > +DB      102,15,56,0,226
> > > > > >
> > > > > > +DB      102,15,56,0,195
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        movdqa  xmm5,xmm15
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((-64))+r10*1+r11]
> > > > > >
> > > > > > +DB      102,15,56,0,234
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[r10*1+r11]
> > > > > >
> > > > > > +        movdqa  xmm2,xmm14
> > > > > >
> > > > > > +DB      102,15,56,0,211
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm2,xmm5
> > > > > >
> > > > > > +DB      102,15,56,0,193
> > > > > >
> > > > > > +        add     r9,16
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +DB      102,15,56,0,220
> > > > > >
> > > > > > +        add     r11,16
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +DB      102,15,56,0,193
> > > > > >
> > > > > > +        and     r11,0x30
> > > > > >
> > > > > > +        sub     rax,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$enc_entry:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        movdqa  xmm5,xmm11
> > > > > >
> > > > > > +        pandn   xmm1,xmm0
> > > > > >
> > > > > > +        psrld   xmm1,4
> > > > > >
> > > > > > +        pand    xmm0,xmm9
> > > > > >
> > > > > > +DB      102,15,56,0,232
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +DB      102,15,56,0,217
> > > > > >
> > > > > > +        movdqa  xmm4,xmm10
> > > > > >
> > > > > > +        pxor    xmm3,xmm5
> > > > > >
> > > > > > +DB      102,15,56,0,224
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +DB      102,15,56,0,211
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +        pxor    xmm2,xmm0
> > > > > >
> > > > > > +DB      102,15,56,0,220
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[r9]
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +        jnz     NEAR $L$enc_loop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[64+r10*1+r11]
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +DB      102,15,56,0,193
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_vpaes_decrypt_core:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r9,rdx
> > > > > >
> > > > > > +        mov     eax,DWORD[240+rdx]
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[$L$k_dipt]
> > > > > >
> > > > > > +        pandn   xmm1,xmm0
> > > > > >
> > > > > > +        mov     r11,rax
> > > > > >
> > > > > > +        psrld   xmm1,4
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[r9]
> > > > > >
> > > > > > +        shl     r11,4
> > > > > >
> > > > > > +        pand    xmm0,xmm9
> > > > > >
> > > > > > +DB      102,15,56,0,208
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[(($L$k_dipt+16))]
> > > > > >
> > > > > > +        xor     r11,0x30
> > > > > >
> > > > > > +        lea     r10,[$L$k_dsbd]
> > > > > >
> > > > > > +DB      102,15,56,0,193
> > > > > >
> > > > > > +        and     r11,0x30
> > > > > >
> > > > > > +        pxor    xmm2,xmm5
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[(($L$k_mc_forward+48))]
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        add     r9,16
> > > > > >
> > > > > > +        add     r11,r10
> > > > > >
> > > > > > +        jmp     NEAR $L$dec_entry
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$dec_loop:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[r10]
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        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[32+r10]
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        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[64+r10]
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[80+r10]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,0,226
> > > > > >
> > > > > > +DB      102,15,56,0,197
> > > > > >
> > > > > > +DB      102,15,56,0,203
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        add     r9,16
> > > > > >
> > > > > > +DB      102,15,58,15,237,12
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        sub     rax,1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$dec_entry:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pandn   xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +        psrld   xmm1,4
> > > > > >
> > > > > > +        pand    xmm0,xmm9
> > > > > >
> > > > > > +DB      102,15,56,0,208
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +DB      102,15,56,0,217
> > > > > >
> > > > > > +        movdqa  xmm4,xmm10
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +DB      102,15,56,0,224
> > > > > >
> > > > > > +        pxor    xmm4,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +DB      102,15,56,0,211
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +        pxor    xmm2,xmm0
> > > > > >
> > > > > > +DB      102,15,56,0,220
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[r9]
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +        jnz     NEAR $L$dec_loop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[96+r10]
> > > > > >
> > > > > > +DB      102,15,56,0,226
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_vpaes_schedule_core:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _vpaes_preheat
> > > > > >
> > > > > > +        movdqa  xmm8,XMMWORD[$L$k_rcon]
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        lea     r11,[$L$k_ipt]
> > > > > >
> > > > > > +        call    _vpaes_schedule_transform
> > > > > >
> > > > > > +        movdqa  xmm7,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$k_sr]
> > > > > >
> > > > > > +        test    rcx,rcx
> > > > > >
> > > > > > +        jnz     NEAR $L$schedule_am_decrypting
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  XMMWORD[rdx],xmm0
> > > > > >
> > > > > > +        jmp     NEAR $L$schedule_go
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$schedule_am_decrypting:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> > > > > >
> > > > > > +DB      102,15,56,0,217
> > > > > >
> > > > > > +        movdqu  XMMWORD[rdx],xmm3
> > > > > >
> > > > > > +        xor     r8,0x30
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$schedule_go:
> > > > > >
> > > > > > +        cmp     esi,192
> > > > > >
> > > > > > +        ja      NEAR $L$schedule_256
> > > > > >
> > > > > > +        je      NEAR $L$schedule_192
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$schedule_128:
> > > > > >
> > > > > > +        mov     esi,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$oop_schedule_128:
> > > > > >
> > > > > > +        call    _vpaes_schedule_round
> > > > > >
> > > > > > +        dec     rsi
> > > > > >
> > > > > > +        jz      NEAR $L$schedule_mangle_last
> > > > > >
> > > > > > +        call    _vpaes_schedule_mangle
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_schedule_128
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$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:
> > > > > >
> > > > > > +        call    _vpaes_schedule_round
> > > > > >
> > > > > > +DB      102,15,58,15,198,8
> > > > > >
> > > > > > +        call    _vpaes_schedule_mangle
> > > > > >
> > > > > > +        call    _vpaes_schedule_192_smear
> > > > > >
> > > > > > +        call    _vpaes_schedule_mangle
> > > > > >
> > > > > > +        call    _vpaes_schedule_round
> > > > > >
> > > > > > +        dec     rsi
> > > > > >
> > > > > > +        jz      NEAR $L$schedule_mangle_last
> > > > > >
> > > > > > +        call    _vpaes_schedule_mangle
> > > > > >
> > > > > > +        call    _vpaes_schedule_192_smear
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_schedule_192
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$schedule_256:
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        call    _vpaes_schedule_transform
> > > > > >
> > > > > > +        mov     esi,7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$oop_schedule_256:
> > > > > >
> > > > > > +        call    _vpaes_schedule_mangle
> > > > > >
> > > > > > +        movdqa  xmm6,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _vpaes_schedule_round
> > > > > >
> > > > > > +        dec     rsi
> > > > > >
> > > > > > +        jz      NEAR $L$schedule_mangle_last
> > > > > >
> > > > > > +        call    _vpaes_schedule_mangle
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0xFF
> > > > > >
> > > > > > +        movdqa  xmm5,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        call    _vpaes_schedule_low_round
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_schedule_256
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$schedule_mangle_last:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r11,[$L$k_deskew]
> > > > > >
> > > > > > +        test    rcx,rcx
> > > > > >
> > > > > > +        jnz     NEAR $L$schedule_mangle_last_dec
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> > > > > >
> > > > > > +DB      102,15,56,0,193
> > > > > >
> > > > > > +        lea     r11,[$L$k_opt]
> > > > > >
> > > > > > +        add     rdx,32
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$schedule_mangle_last_dec:
> > > > > >
> > > > > > +        add     rdx,-16
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[$L$k_s63]
> > > > > >
> > > > > > +        call    _vpaes_schedule_transform
> > > > > >
> > > > > > +        movdqu  XMMWORD[rdx],xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_vpaes_schedule_round:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +DB      102,65,15,58,15,200,15
> > > > > >
> > > > > > +DB      102,69,15,58,15,192,15
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0xFF
> > > > > >
> > > > > > +DB      102,15,58,15,192,1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +_vpaes_schedule_low_round:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm7
> > > > > >
> > > > > > +        pslldq  xmm7,4
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,xmm7
> > > > > >
> > > > > > +        pslldq  xmm7,8
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm7,XMMWORD[$L$k_s63]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pandn   xmm1,xmm0
> > > > > >
> > > > > > +        psrld   xmm1,4
> > > > > >
> > > > > > +        pand    xmm0,xmm9
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +DB      102,15,56,0,208
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +DB      102,15,56,0,217
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm10
> > > > > >
> > > > > > +DB      102,15,56,0,224
> > > > > >
> > > > > > +        pxor    xmm4,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +DB      102,15,56,0,211
> > > > > >
> > > > > > +        pxor    xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +DB      102,15,56,0,220
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +        movdqa  xmm4,xmm13
> > > > > >
> > > > > > +DB      102,15,56,0,226
> > > > > >
> > > > > > +        movdqa  xmm0,xmm12
> > > > > >
> > > > > > +DB      102,15,56,0,195
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm0
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_vpaes_schedule_transform:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pandn   xmm1,xmm0
> > > > > >
> > > > > > +        psrld   xmm1,4
> > > > > >
> > > > > > +        pand    xmm0,xmm9
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[r11]
> > > > > >
> > > > > > +DB      102,15,56,0,208
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[16+r11]
> > > > > >
> > > > > > +DB      102,15,56,0,193
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_vpaes_schedule_mangle:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[$L$k_mc_forward]
> > > > > >
> > > > > > +        test    rcx,rcx
> > > > > >
> > > > > > +        jnz     NEAR $L$schedule_mangle_dec
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     rdx,16
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[$L$k_s63]
> > > > > >
> > > > > > +DB      102,15,56,0,229
> > > > > >
> > > > > > +        movdqa  xmm3,xmm4
> > > > > >
> > > > > > +DB      102,15,56,0,229
> > > > > >
> > > > > > +        pxor    xmm3,xmm4
> > > > > >
> > > > > > +DB      102,15,56,0,229
> > > > > >
> > > > > > +        pxor    xmm3,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$schedule_mangle_both
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$schedule_mangle_dec:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r11,[$L$k_dksd]
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pandn   xmm1,xmm4
> > > > > >
> > > > > > +        psrld   xmm1,4
> > > > > >
> > > > > > +        pand    xmm4,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[r11]
> > > > > >
> > > > > > +DB      102,15,56,0,212
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[16+r11]
> > > > > >
> > > > > > +DB      102,15,56,0,217
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +DB      102,15,56,0,221
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[32+r11]
> > > > > >
> > > > > > +DB      102,15,56,0,212
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[48+r11]
> > > > > >
> > > > > > +DB      102,15,56,0,217
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +DB      102,15,56,0,221
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[64+r11]
> > > > > >
> > > > > > +DB      102,15,56,0,212
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[80+r11]
> > > > > >
> > > > > > +DB      102,15,56,0,217
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +DB      102,15,56,0,221
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[96+r11]
> > > > > >
> > > > > > +DB      102,15,56,0,212
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[112+r11]
> > > > > >
> > > > > > +DB      102,15,56,0,217
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     rdx,-16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$schedule_mangle_both:
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> > > > > >
> > > > > > +DB      102,15,56,0,217
> > > > > >
> > > > > > +        add     r8,-16
> > > > > >
> > > > > > +        and     r8,0x30
> > > > > >
> > > > > > +        movdqu  XMMWORD[rdx],xmm3
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  vpaes_set_encrypt_key
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[240+rdx],eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,0
> > > > > >
> > > > > > +        mov     r8d,0x30
> > > > > >
> > > > > > +        call    _vpaes_schedule_core
> > > > > >
> > > > > > +        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[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_vpaes_set_encrypt_key:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  vpaes_set_decrypt_key
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[240+rdx],eax
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        lea     rdx,[16+rax*1+rdx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,1
> > > > > >
> > > > > > +        mov     r8d,esi
> > > > > >
> > > > > > +        shr     r8d,1
> > > > > >
> > > > > > +        and     r8d,32
> > > > > >
> > > > > > +        xor     r8d,32
> > > > > >
> > > > > > +        call    _vpaes_schedule_core
> > > > > >
> > > > > > +        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[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_vpaes_set_decrypt_key:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  vpaes_encrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +vpaes_encrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_vpaes_encrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[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:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  vpaes_decrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +vpaes_decrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_vpaes_decrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[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:
> > > > > >
> > > > > > +global  vpaes_cbc_encrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +vpaes_cbc_encrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_vpaes_cbc_encrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xchg    rdx,rcx
> > > > > >
> > > > > > +        sub     rcx,16
> > > > > >
> > > > > > +        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      NEAR $L$cbc_dec_loop
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_enc_loop
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_enc_loop:
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > > > >
> > > > > > +        pxor    xmm0,xmm6
> > > > > >
> > > > > > +        call    _vpaes_encrypt_core
> > > > > >
> > > > > > +        movdqa  xmm6,xmm0
> > > > > >
> > > > > > +        movdqu  XMMWORD[rdi*1+rsi],xmm0
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +        sub     rcx,16
> > > > > >
> > > > > > +        jnc     NEAR $L$cbc_enc_loop
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_done
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_dec_loop:
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > > > >
> > > > > > +        movdqa  xmm7,xmm0
> > > > > >
> > > > > > +        call    _vpaes_decrypt_core
> > > > > >
> > > > > > +        pxor    xmm0,xmm6
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        movdqu  XMMWORD[rdi*1+rsi],xmm0
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +        sub     rcx,16
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +_vpaes_consts:
> > > > > >
> > > > > > +$L$k_inv:
> > > > > >
> > > > > > +        DQ      0x0E05060F0D080180,0x040703090A0B0C02
> > > > > >
> > > > > > +        DQ      0x01040A060F0B0780,0x030D0E0C02050809
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$k_s0F:
> > > > > >
> > > > > > +        DQ      0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$k_ipt:
> > > > > >
> > > > > > +        DQ      0xC2B2E8985A2A7000,0xCABAE09052227808
> > > > > >
> > > > > > +        DQ      0x4C01307D317C4D00,0xCD80B1FCB0FDCC81
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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      0x0407060500030201,0x0C0F0E0D080B0A09
> > > > > >
> > > > > > +        DQ      0x080B0A0904070605,0x000302010C0F0E0D
> > > > > >
> > > > > > +        DQ      0x0C0F0E0D080B0A09,0x0407060500030201
> > > > > >
> > > > > > +        DQ      0x000302010C0F0E0D,0x080B0A0904070605
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$k_mc_backward:
> > > > > >
> > > > > > +        DQ      0x0605040702010003,0x0E0D0C0F0A09080B
> > > > > >
> > > > > > +        DQ      0x020100030E0D0C0F,0x0A09080B06050407
> > > > > >
> > > > > > +        DQ      0x0E0D0C0F0A09080B,0x0605040702010003
> > > > > >
> > > > > > +        DQ      0x0A09080B06050407,0x020100030E0D0C0F
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$k_sr:
> > > > > >
> > > > > > +        DQ      0x0706050403020100,0x0F0E0D0C0B0A0908
> > > > > >
> > > > > > +        DQ      0x030E09040F0A0500,0x0B06010C07020D08
> > > > > >
> > > > > > +        DQ      0x0F060D040B020900,0x070E050C030A0108
> > > > > >
> > > > > > +        DQ      0x0B0E0104070A0D00,0x0306090C0F020508
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$k_rcon:
> > > > > >
> > > > > > +        DQ      0x1F8391B9AF9DEEB6,0x702A98084D7C7D81
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$k_s63:
> > > > > >
> > > > > > +        DQ      0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$k_opt:
> > > > > >
> > > > > > +        DQ      0xFF9F4929D6B66000,0xF7974121DEBE6808
> > > > > >
> > > > > > +        DQ      0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$k_deskew:
> > > > > >
> > > > > > +        DQ      0x07E4A34047A4E300,0x1DFEB95A5DBEF91A
> > > > > >
> > > > > > +        DQ      0x5F36B5DC83EA6900,0x2841C2ABF49D1E77
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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      0x0F505B040B545F00,0x154A411E114E451A
> > > > > >
> > > > > > +        DQ      0x86E383E660056500,0x12771772F491F194
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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
> > > > > >
> > > > > > +DB      109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32
> > > > > >
> > > > > > +DB      85,110,105,118,101,114,115,105,116,121,41,0
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[16+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,20
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +        lea     rax,[184+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .pdata rdata align=4
> > > > > >
> > > > > > +ALIGN   4
> > > > > >
> > > > > > +        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      $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      $L$SEH_begin_vpaes_encrypt wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_vpaes_encrypt wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_vpaes_encrypt wrt ..imagebase
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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      $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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .xdata rdata align=8
> > > > > >
> > > > > > +ALIGN   8
> > > > > >
> > > > > > +$L$SEH_info_vpaes_set_encrypt_key:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        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      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      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      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      se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt
> > > ..imagebase
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
> > > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
> > > > > > x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..60f283d5fb
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
> > x86_64.nasm
> > > > > > @@ -0,0 +1,1569 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/modes/asm/ghash-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2010-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  gcm_gmult_4bit
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +gcm_gmult_4bit:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_gcm_gmult_4bit:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsp,280
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$gmult_prologue:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[8+rax*1+rsi]
> > > > > >
> > > > > > +        mov     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        and     bl,0xf0
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        jmp     NEAR $L$oop1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$oop1:
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        and     rdx,0xf
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        mov     al,BYTE[rcx*1+rdi]
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rbx*1+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        xor     r9,QWORD[rbx*1+rsi]
> > > > > >
> > > > > > +        mov     bl,al
> > > > > >
> > > > > > +        xor     r9,QWORD[rdx*8+r11]
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        dec     rcx
> > > > > >
> > > > > > +        js      NEAR $L$break1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        and     rdx,0xf
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        and     bl,0xf0
> > > > > >
> > > > > > +        xor     r9,QWORD[rdx*8+r11]
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        jmp     NEAR $L$oop1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$break1:
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        and     rdx,0xf
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        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,0xf
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rbx*1+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        xor     r9,QWORD[rbx*1+rsi]
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        xor     r9,QWORD[rdx*8+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        bswap   r8
> > > > > >
> > > > > > +        bswap   r9
> > > > > >
> > > > > > +        mov     QWORD[8+rdi],r8
> > > > > >
> > > > > > +        mov     QWORD[rdi],r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((280+48))+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbx,QWORD[((-8))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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:
> > > > > >
> > > > > > +global  gcm_ghash_4bit
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +gcm_ghash_4bit:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_gcm_ghash_4bit:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsp,280
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ghash_prologue:
> > > > > >
> > > > > > +        mov     r14,rdx
> > > > > >
> > > > > > +        mov     r15,rcx
> > > > > >
> > > > > > +        sub     rsi,-128
> > > > > >
> > > > > > +        lea     rbp,[((16+128))+rsp]
> > > > > >
> > > > > > +        xor     edx,edx
> > > > > >
> > > > > > +        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[((16+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     rbx,QWORD[((16+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[rsp],dl
> > > > > >
> > > > > > +        or      rax,r10
> > > > > >
> > > > > > +        mov     dl,bl
> > > > > >
> > > > > > +        shr     rbx,4
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        mov     QWORD[rbp],r8
> > > > > >
> > > > > > +        mov     r8,QWORD[((32+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((0-128))+rbp],rax
> > > > > >
> > > > > > +        mov     rax,QWORD[((32+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[1+rsp],dl
> > > > > >
> > > > > > +        or      rbx,r10
> > > > > >
> > > > > > +        mov     dl,al
> > > > > >
> > > > > > +        shr     rax,4
> > > > > >
> > > > > > +        mov     r10,r8
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        mov     QWORD[8+rbp],r9
> > > > > >
> > > > > > +        mov     r9,QWORD[((48+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((8-128))+rbp],rbx
> > > > > >
> > > > > > +        mov     rbx,QWORD[((48+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[2+rsp],dl
> > > > > >
> > > > > > +        or      rax,r10
> > > > > >
> > > > > > +        mov     dl,bl
> > > > > >
> > > > > > +        shr     rbx,4
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        mov     QWORD[16+rbp],r8
> > > > > >
> > > > > > +        mov     r8,QWORD[((64+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((16-128))+rbp],rax
> > > > > >
> > > > > > +        mov     rax,QWORD[((64+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[3+rsp],dl
> > > > > >
> > > > > > +        or      rbx,r10
> > > > > >
> > > > > > +        mov     dl,al
> > > > > >
> > > > > > +        shr     rax,4
> > > > > >
> > > > > > +        mov     r10,r8
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        mov     QWORD[24+rbp],r9
> > > > > >
> > > > > > +        mov     r9,QWORD[((80+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((24-128))+rbp],rbx
> > > > > >
> > > > > > +        mov     rbx,QWORD[((80+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[4+rsp],dl
> > > > > >
> > > > > > +        or      rax,r10
> > > > > >
> > > > > > +        mov     dl,bl
> > > > > >
> > > > > > +        shr     rbx,4
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        mov     QWORD[32+rbp],r8
> > > > > >
> > > > > > +        mov     r8,QWORD[((96+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((32-128))+rbp],rax
> > > > > >
> > > > > > +        mov     rax,QWORD[((96+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[5+rsp],dl
> > > > > >
> > > > > > +        or      rbx,r10
> > > > > >
> > > > > > +        mov     dl,al
> > > > > >
> > > > > > +        shr     rax,4
> > > > > >
> > > > > > +        mov     r10,r8
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        mov     QWORD[40+rbp],r9
> > > > > >
> > > > > > +        mov     r9,QWORD[((112+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((40-128))+rbp],rbx
> > > > > >
> > > > > > +        mov     rbx,QWORD[((112+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[6+rsp],dl
> > > > > >
> > > > > > +        or      rax,r10
> > > > > >
> > > > > > +        mov     dl,bl
> > > > > >
> > > > > > +        shr     rbx,4
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        mov     QWORD[48+rbp],r8
> > > > > >
> > > > > > +        mov     r8,QWORD[((128+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((48-128))+rbp],rax
> > > > > >
> > > > > > +        mov     rax,QWORD[((128+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[7+rsp],dl
> > > > > >
> > > > > > +        or      rbx,r10
> > > > > >
> > > > > > +        mov     dl,al
> > > > > >
> > > > > > +        shr     rax,4
> > > > > >
> > > > > > +        mov     r10,r8
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        mov     QWORD[56+rbp],r9
> > > > > >
> > > > > > +        mov     r9,QWORD[((144+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((56-128))+rbp],rbx
> > > > > >
> > > > > > +        mov     rbx,QWORD[((144+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[8+rsp],dl
> > > > > >
> > > > > > +        or      rax,r10
> > > > > >
> > > > > > +        mov     dl,bl
> > > > > >
> > > > > > +        shr     rbx,4
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        mov     QWORD[64+rbp],r8
> > > > > >
> > > > > > +        mov     r8,QWORD[((160+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((64-128))+rbp],rax
> > > > > >
> > > > > > +        mov     rax,QWORD[((160+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[9+rsp],dl
> > > > > >
> > > > > > +        or      rbx,r10
> > > > > >
> > > > > > +        mov     dl,al
> > > > > >
> > > > > > +        shr     rax,4
> > > > > >
> > > > > > +        mov     r10,r8
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        mov     QWORD[72+rbp],r9
> > > > > >
> > > > > > +        mov     r9,QWORD[((176+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((72-128))+rbp],rbx
> > > > > >
> > > > > > +        mov     rbx,QWORD[((176+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[10+rsp],dl
> > > > > >
> > > > > > +        or      rax,r10
> > > > > >
> > > > > > +        mov     dl,bl
> > > > > >
> > > > > > +        shr     rbx,4
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        mov     QWORD[80+rbp],r8
> > > > > >
> > > > > > +        mov     r8,QWORD[((192+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((80-128))+rbp],rax
> > > > > >
> > > > > > +        mov     rax,QWORD[((192+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[11+rsp],dl
> > > > > >
> > > > > > +        or      rbx,r10
> > > > > >
> > > > > > +        mov     dl,al
> > > > > >
> > > > > > +        shr     rax,4
> > > > > >
> > > > > > +        mov     r10,r8
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        mov     QWORD[88+rbp],r9
> > > > > >
> > > > > > +        mov     r9,QWORD[((208+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((88-128))+rbp],rbx
> > > > > >
> > > > > > +        mov     rbx,QWORD[((208+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[12+rsp],dl
> > > > > >
> > > > > > +        or      rax,r10
> > > > > >
> > > > > > +        mov     dl,bl
> > > > > >
> > > > > > +        shr     rbx,4
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        mov     QWORD[96+rbp],r8
> > > > > >
> > > > > > +        mov     r8,QWORD[((224+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((96-128))+rbp],rax
> > > > > >
> > > > > > +        mov     rax,QWORD[((224+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[13+rsp],dl
> > > > > >
> > > > > > +        or      rbx,r10
> > > > > >
> > > > > > +        mov     dl,al
> > > > > >
> > > > > > +        shr     rax,4
> > > > > >
> > > > > > +        mov     r10,r8
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        mov     QWORD[104+rbp],r9
> > > > > >
> > > > > > +        mov     r9,QWORD[((240+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((104-128))+rbp],rbx
> > > > > >
> > > > > > +        mov     rbx,QWORD[((240+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[14+rsp],dl
> > > > > >
> > > > > > +        or      rax,r10
> > > > > >
> > > > > > +        mov     dl,bl
> > > > > >
> > > > > > +        shr     rbx,4
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        mov     QWORD[112+rbp],r8
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((112-128))+rbp],rax
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[15+rsp],dl
> > > > > >
> > > > > > +        or      rbx,r10
> > > > > >
> > > > > > +        mov     QWORD[120+rbp],r9
> > > > > >
> > > > > > +        mov     QWORD[((120-128))+rbp],rbx
> > > > > >
> > > > > > +        add     rsi,-128
> > > > > >
> > > > > > +        mov     r8,QWORD[8+rdi]
> > > > > >
> > > > > > +        mov     r9,QWORD[rdi]
> > > > > >
> > > > > > +        add     r15,r14
> > > > > >
> > > > > > +        lea     r11,[$L$rem_8bit]
> > > > > >
> > > > > > +        jmp     NEAR $L$outer_loop
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$outer_loop:
> > > > > >
> > > > > > +        xor     r9,QWORD[r14]
> > > > > >
> > > > > > +        mov     rdx,QWORD[8+r14]
> > > > > >
> > > > > > +        lea     r14,[16+r14]
> > > > > >
> > > > > > +        xor     rdx,r8
> > > > > >
> > > > > > +        mov     QWORD[rdi],r9
> > > > > >
> > > > > > +        mov     QWORD[8+rdi],rdx
> > > > > >
> > > > > > +        shr     rdx,32
> > > > > >
> > > > > > +        xor     rax,rax
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        movzx   ebx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        shr     ebx,4
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        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[rbx*1+rsp]
> > > > > >
> > > > > > +        shr     ecx,4
> > > > > >
> > > > > > +        xor     r12,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r12,r12b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > > >
> > > > > > +        movzx   ebx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > > >
> > > > > > +        shr     ebx,4
> > > > > >
> > > > > > +        shl     r12,48
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r12
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r13,r13b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > > >
> > > > > > +        movzx   ecx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > > >
> > > > > > +        shr     ecx,4
> > > > > >
> > > > > > +        shl     r13,48
> > > > > >
> > > > > > +        xor     r12,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r13
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r12,r12b
> > > > > >
> > > > > > +        mov     edx,DWORD[8+rdi]
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > > >
> > > > > > +        movzx   ebx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > > >
> > > > > > +        shr     ebx,4
> > > > > >
> > > > > > +        shl     r12,48
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r12
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r13,r13b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > > >
> > > > > > +        movzx   ecx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > > >
> > > > > > +        shr     ecx,4
> > > > > >
> > > > > > +        shl     r13,48
> > > > > >
> > > > > > +        xor     r12,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r13
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r12,r12b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > > >
> > > > > > +        movzx   ebx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > > >
> > > > > > +        shr     ebx,4
> > > > > >
> > > > > > +        shl     r12,48
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r12
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r13,r13b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > > >
> > > > > > +        movzx   ecx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > > >
> > > > > > +        shr     ecx,4
> > > > > >
> > > > > > +        shl     r13,48
> > > > > >
> > > > > > +        xor     r12,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r13
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r12,r12b
> > > > > >
> > > > > > +        mov     edx,DWORD[4+rdi]
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > > >
> > > > > > +        movzx   ebx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > > >
> > > > > > +        shr     ebx,4
> > > > > >
> > > > > > +        shl     r12,48
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r12
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r13,r13b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > > >
> > > > > > +        movzx   ecx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > > >
> > > > > > +        shr     ecx,4
> > > > > >
> > > > > > +        shl     r13,48
> > > > > >
> > > > > > +        xor     r12,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r13
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r12,r12b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > > >
> > > > > > +        movzx   ebx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > > >
> > > > > > +        shr     ebx,4
> > > > > >
> > > > > > +        shl     r12,48
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r12
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r13,r13b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > > >
> > > > > > +        movzx   ecx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > > >
> > > > > > +        shr     ecx,4
> > > > > >
> > > > > > +        shl     r13,48
> > > > > >
> > > > > > +        xor     r12,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r13
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r12,r12b
> > > > > >
> > > > > > +        mov     edx,DWORD[rdi]
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > > >
> > > > > > +        movzx   ebx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > > >
> > > > > > +        shr     ebx,4
> > > > > >
> > > > > > +        shl     r12,48
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r12
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r13,r13b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > > >
> > > > > > +        movzx   ecx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > > >
> > > > > > +        shr     ecx,4
> > > > > >
> > > > > > +        shl     r13,48
> > > > > >
> > > > > > +        xor     r12,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r13
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r12,r12b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > > >
> > > > > > +        movzx   ebx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > > >
> > > > > > +        shr     ebx,4
> > > > > >
> > > > > > +        shl     r12,48
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r12
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r13,r13b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > > >
> > > > > > +        movzx   ecx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > > >
> > > > > > +        and     ecx,240
> > > > > >
> > > > > > +        shl     r13,48
> > > > > >
> > > > > > +        xor     r12,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r13
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r12,r12b
> > > > > >
> > > > > > +        mov     edx,DWORD[((-4))+rdi]
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        movzx   r13,r8b
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shl     r13b,4
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rcx*1+rsi]
> > > > > >
> > > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        xor     r9,QWORD[rcx*1+rsi]
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        shl     r13,48
> > > > > >
> > > > > > +        bswap   r8
> > > > > >
> > > > > > +        xor     r9,r13
> > > > > >
> > > > > > +        bswap   r9
> > > > > >
> > > > > > +        cmp     r14,r15
> > > > > >
> > > > > > +        jb      NEAR $L$outer_loop
> > > > > >
> > > > > > +        mov     QWORD[8+rdi],r8
> > > > > >
> > > > > > +        mov     QWORD[rdi],r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((280+48))+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$ghash_epilogue:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_gcm_ghash_4bit:
> > > > > >
> > > > > > +global  gcm_init_clmul
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +gcm_init_clmul:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$_init_clmul:
> > > > > >
> > > > > > +$L$SEH_begin_gcm_init_clmul:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      0x48,0x83,0xec,0x18
> > > > > >
> > > > > > +DB      0x0f,0x29,0x34,0x24
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdx]
> > > > > >
> > > > > > +        pshufd  xmm2,xmm2,78
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm4,xmm2,255
> > > > > >
> > > > > > +        movdqa  xmm3,xmm2
> > > > > >
> > > > > > +        psllq   xmm2,1
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        psrlq   xmm3,63
> > > > > >
> > > > > > +        pcmpgtd xmm5,xmm4
> > > > > >
> > > > > > +        pslldq  xmm3,8
> > > > > >
> > > > > > +        por     xmm2,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pand    xmm5,XMMWORD[$L$0x1c2_polynomial]
> > > > > >
> > > > > > +        pxor    xmm2,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm6,xmm2,78
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        pxor    xmm6,xmm2
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        pshufd  xmm3,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +DB      102,15,58,68,194,0
> > > > > >
> > > > > > +DB      102,15,58,68,202,17
> > > > > >
> > > > > > +DB      102,15,58,68,222,0
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm3
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pslldq  xmm4,8
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psllq   xmm0,57
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,8
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm1,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pshufd  xmm3,xmm2,78
> > > > > >
> > > > > > +        pshufd  xmm4,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +        movdqu  XMMWORD[rcx],xmm2
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rcx],xmm0
> > > > > >
> > > > > > +DB      102,15,58,15,227,8
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rcx],xmm4
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        pshufd  xmm3,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +DB      102,15,58,68,194,0
> > > > > >
> > > > > > +DB      102,15,58,68,202,17
> > > > > >
> > > > > > +DB      102,15,58,68,222,0
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm3
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pslldq  xmm4,8
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psllq   xmm0,57
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,8
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm1,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        pshufd  xmm3,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +DB      102,15,58,68,194,0
> > > > > >
> > > > > > +DB      102,15,58,68,202,17
> > > > > >
> > > > > > +DB      102,15,58,68,222,0
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm3
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pslldq  xmm4,8
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psllq   xmm0,57
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,8
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm1,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pshufd  xmm3,xmm5,78
> > > > > >
> > > > > > +        pshufd  xmm4,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm3,xmm5
> > > > > >
> > > > > > +        movdqu  XMMWORD[48+rcx],xmm5
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        movdqu  XMMWORD[64+rcx],xmm0
> > > > > >
> > > > > > +DB      102,15,58,15,227,8
> > > > > >
> > > > > > +        movdqu  XMMWORD[80+rcx],xmm4
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > > >
> > > > > > +        lea     rsp,[24+rsp]
> > > > > >
> > > > > > +$L$SEH_end_gcm_init_clmul:
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  gcm_gmult_clmul
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +DB      102,15,58,68,194,0
> > > > > >
> > > > > > +DB      102,15,58,68,202,17
> > > > > >
> > > > > > +DB      102,15,58,68,220,0
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm3
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pslldq  xmm4,8
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psllq   xmm0,57
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,8
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm1,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +DB      102,15,56,0,197
> > > > > >
> > > > > > +        movdqu  XMMWORD[rcx],xmm0
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  gcm_ghash_clmul
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +gcm_ghash_clmul:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$_ghash_clmul:
> > > > > >
> > > > > > +        lea     rax,[((-136))+rsp]
> > > > > >
> > > > > > +$L$SEH_begin_gcm_ghash_clmul:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[rcx]
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdx]
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[32+rdx]
> > > > > >
> > > > > > +DB      102,65,15,56,0,194
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     r9,0x10
> > > > > >
> > > > > > +        jz      NEAR $L$odd_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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      NEAR $L$skip4x
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     r9,0x30
> > > > > >
> > > > > > +        mov     rax,0xA040608020C0E000
> > > > > >
> > > > > > +        movdqu  xmm14,XMMWORD[48+rdx]
> > > > > >
> > > > > > +        movdqu  xmm15,XMMWORD[64+rdx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        pshufd  xmm4,xmm3,78
> > > > > >
> > > > > > +        pxor    xmm4,xmm3
> > > > > >
> > > > > > +DB      102,15,58,68,218,0
> > > > > >
> > > > > > +DB      102,15,58,68,234,17
> > > > > >
> > > > > > +DB      102,15,58,68,231,0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm13,xmm11
> > > > > >
> > > > > > +        pshufd  xmm12,xmm11,78
> > > > > >
> > > > > > +        pxor    xmm12,xmm11
> > > > > >
> > > > > > +DB      102,68,15,58,68,222,0
> > > > > >
> > > > > > +DB      102,68,15,58,68,238,17
> > > > > >
> > > > > > +DB      102,68,15,58,68,231,16
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        xorps   xmm5,xmm13
> > > > > >
> > > > > > +        movups  xmm7,XMMWORD[80+rdx]
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        pshufd  xmm12,xmm11,78
> > > > > >
> > > > > > +        pxor    xmm0,xmm8
> > > > > >
> > > > > > +        pxor    xmm12,xmm11
> > > > > >
> > > > > > +DB      102,69,15,58,68,222,0
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        pshufd  xmm8,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +DB      102,69,15,58,68,238,17
> > > > > >
> > > > > > +DB      102,68,15,58,68,231,0
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        xorps   xmm5,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r8,[64+r8]
> > > > > >
> > > > > > +        sub     r9,0x40
> > > > > >
> > > > > > +        jc      NEAR $L$tail4x
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$mod4_loop
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$mod4_loop:
> > > > > >
> > > > > > +DB      102,65,15,58,68,199,0
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +        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[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[32+rdx]
> > > > > >
> > > > > > +        xorps   xmm8,xmm4
> > > > > >
> > > > > > +DB      102,68,15,58,68,218,0
> > > > > >
> > > > > > +        pshufd  xmm4,xmm3,78
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        pxor    xmm8,xmm1
> > > > > >
> > > > > > +        pxor    xmm4,xmm3
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      102,68,15,58,68,234,17
> > > > > >
> > > > > > +        pslldq  xmm8,8
> > > > > >
> > > > > > +        psrldq  xmm9,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,XMMWORD[$L$7_mask]
> > > > > >
> > > > > > +        pxor    xmm1,xmm9
> > > > > >
> > > > > > +DB      102,76,15,110,200
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pand    xmm8,xmm0
> > > > > >
> > > > > > +DB      102,69,15,56,0,200
> > > > > >
> > > > > > +        pxor    xmm9,xmm0
> > > > > >
> > > > > > +DB      102,68,15,58,68,231,0
> > > > > >
> > > > > > +        psllq   xmm9,57
> > > > > >
> > > > > > +        movdqa  xmm8,xmm9
> > > > > >
> > > > > > +        pslldq  xmm9,8
> > > > > >
> > > > > > +DB      102,15,58,68,222,0
> > > > > >
> > > > > > +        psrldq  xmm8,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm9
> > > > > >
> > > > > > +        pxor    xmm1,xmm8
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +DB      102,15,58,68,238,17
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        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[80+rdx]
> > > > > >
> > > > > > +DB      102,69,15,56,0,194
> > > > > >
> > > > > > +        pxor    xmm1,xmm9
> > > > > >
> > > > > > +        pxor    xmm9,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm13,xmm11
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        pshufd  xmm12,xmm11,78
> > > > > >
> > > > > > +        pxor    xmm0,xmm9
> > > > > >
> > > > > > +        pxor    xmm1,xmm8
> > > > > >
> > > > > > +        pxor    xmm12,xmm11
> > > > > >
> > > > > > +DB      102,69,15,58,68,222,0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      102,69,15,58,68,238,17
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        pshufd  xmm8,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,68,15,58,68,231,0
> > > > > >
> > > > > > +        xorps   xmm5,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r8,[64+r8]
> > > > > >
> > > > > > +        sub     r9,0x40
> > > > > >
> > > > > > +        jnc     NEAR $L$mod4_loop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +        xorps   xmm0,xmm3
> > > > > >
> > > > > > +        xorps   xmm1,xmm5
> > > > > >
> > > > > > +        pxor    xmm1,xmm0
> > > > > >
> > > > > > +        pxor    xmm8,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm8,xmm1
> > > > > >
> > > > > > +        pxor    xmm1,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +        psrldq  xmm8,8
> > > > > >
> > > > > > +        pslldq  xmm9,8
> > > > > >
> > > > > > +        pxor    xmm1,xmm8
> > > > > >
> > > > > > +        pxor    xmm0,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psllq   xmm0,57
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,8
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm1,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        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[r8]
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[16+r8]
> > > > > >
> > > > > > +DB      102,69,15,56,0,194
> > > > > >
> > > > > > +DB      102,65,15,56,0,218
> > > > > >
> > > > > > +        pxor    xmm0,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        pshufd  xmm4,xmm3,78
> > > > > >
> > > > > > +        pxor    xmm4,xmm3
> > > > > >
> > > > > > +DB      102,15,58,68,218,0
> > > > > >
> > > > > > +DB      102,15,58,68,234,17
> > > > > >
> > > > > > +DB      102,15,58,68,231,0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r8,[32+r8]
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        sub     r9,0x20
> > > > > >
> > > > > > +        jbe     NEAR $L$even_tail
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        jmp     NEAR $L$mod_loop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$mod_loop:
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm8,xmm4
> > > > > >
> > > > > > +        pshufd  xmm4,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,58,68,198,0
> > > > > >
> > > > > > +DB      102,15,58,68,206,17
> > > > > >
> > > > > > +DB      102,15,58,68,231,16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm5
> > > > > >
> > > > > > +        movdqu  xmm9,XMMWORD[r8]
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +DB      102,69,15,56,0,202
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[16+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm8,xmm1
> > > > > >
> > > > > > +        pxor    xmm1,xmm9
> > > > > >
> > > > > > +        pxor    xmm4,xmm8
> > > > > >
> > > > > > +DB      102,65,15,56,0,218
> > > > > >
> > > > > > +        movdqa  xmm8,xmm4
> > > > > >
> > > > > > +        psrldq  xmm8,8
> > > > > >
> > > > > > +        pslldq  xmm4,8
> > > > > >
> > > > > > +        pxor    xmm1,xmm8
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm0
> > > > > >
> > > > > > +        movdqa  xmm8,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +DB      102,15,58,68,218,0
> > > > > >
> > > > > > +        psllq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm8
> > > > > >
> > > > > > +        psllq   xmm0,57
> > > > > >
> > > > > > +        movdqa  xmm8,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,8
> > > > > >
> > > > > > +        psrldq  xmm8,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm9
> > > > > >
> > > > > > +        pshufd  xmm4,xmm5,78
> > > > > >
> > > > > > +        pxor    xmm1,xmm8
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +DB      102,15,58,68,234,17
> > > > > >
> > > > > > +        pxor    xmm1,xmm9
> > > > > >
> > > > > > +        pxor    xmm9,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm9
> > > > > >
> > > > > > +        lea     r8,[32+r8]
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +DB      102,15,58,68,231,0
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     r9,0x20
> > > > > >
> > > > > > +        ja      NEAR $L$mod_loop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$even_tail:
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm8,xmm4
> > > > > >
> > > > > > +        pshufd  xmm4,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,58,68,198,0
> > > > > >
> > > > > > +DB      102,15,58,68,206,17
> > > > > >
> > > > > > +DB      102,15,58,68,231,16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm5
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +        pxor    xmm8,xmm1
> > > > > >
> > > > > > +        pxor    xmm4,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm4
> > > > > >
> > > > > > +        psrldq  xmm8,8
> > > > > >
> > > > > > +        pslldq  xmm4,8
> > > > > >
> > > > > > +        pxor    xmm1,xmm8
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psllq   xmm0,57
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,8
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm1,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        test    r9,r9
> > > > > >
> > > > > > +        jnz     NEAR $L$done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$odd_tail:
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[r8]
> > > > > >
> > > > > > +DB      102,69,15,56,0,194
> > > > > >
> > > > > > +        pxor    xmm0,xmm8
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        pshufd  xmm3,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +DB      102,15,58,68,194,0
> > > > > >
> > > > > > +DB      102,15,58,68,202,17
> > > > > >
> > > > > > +DB      102,15,58,68,223,0
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm3
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pslldq  xmm4,8
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psllq   xmm0,57
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,8
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm1,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +$L$done:
> > > > > >
> > > > > > +DB      102,65,15,56,0,194
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  gcm_init_avx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +gcm_init_avx:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$_init_clmul
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  gcm_gmult_avx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +gcm_gmult_avx:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$_gmult_clmul
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  gcm_ghash_avx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +gcm_ghash_avx:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$_ghash_clmul
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +$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,0xc2
> > > > > >
> > > > > > +$L$7_mask:
> > > > > >
> > > > > > +        DD      7,0,7,0
> > > > > >
> > > > > > +$L$7_mask_poly:
> > > > > >
> > > > > > +        DD      7,0,450,0
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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
> > > 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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rax,[((48+280))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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_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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .pdata rdata align=4
> > > > > >
> > > > > > +ALIGN   4
> > > > > >
> > > > > > +        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      $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      $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      $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:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        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      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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
> > > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
> > > > > > x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..f3b7b0e35e
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
> > x86_64.nasm
> > > > > > @@ -0,0 +1,3137 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/sha/asm/sha1-mb-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  sha1_multi_block
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +sha1_multi_block:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_sha1_multi_block:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
> > > > > >
> > > > > > +        bt      rcx,61
> > > > > >
> > > > > > +        jc      NEAR _shaext_shortcut
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-168))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > > > >
> > > > > > +        sub     rsp,288
> > > > > >
> > > > > > +        and     rsp,-256
> > > > > >
> > > > > > +        mov     QWORD[272+rsp],rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$body:
> > > > > >
> > > > > > +        lea     rbp,[K_XX_XX]
> > > > > >
> > > > > > +        lea     rbx,[256+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$oop_grande:
> > > > > >
> > > > > > +        mov     DWORD[280+rsp],edx
> > > > > >
> > > > > > +        xor     edx,edx
> > > > > >
> > > > > > +        mov     r8,QWORD[rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[8+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[rbx],ecx
> > > > > >
> > > > > > +        cmovle  r8,rbp
> > > > > >
> > > > > > +        mov     r9,QWORD[16+rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[24+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[4+rbx],ecx
> > > > > >
> > > > > > +        cmovle  r9,rbp
> > > > > >
> > > > > > +        mov     r10,QWORD[32+rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[40+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[8+rbx],ecx
> > > > > >
> > > > > > +        cmovle  r10,rbp
> > > > > >
> > > > > > +        mov     r11,QWORD[48+rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[56+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[12+rbx],ecx
> > > > > >
> > > > > > +        cmovle  r11,rbp
> > > > > >
> > > > > > +        test    edx,edx
> > > > > >
> > > > > > +        jz      NEAR $L$done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[rdi]
> > > > > >
> > > > > > +        lea     rax,[128+rsp]
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        movdqu  xmm12,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        movdqu  xmm13,XMMWORD[96+rdi]
> > > > > >
> > > > > > +        movdqu  xmm14,XMMWORD[128+rdi]
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[96+rbp]
> > > > > >
> > > > > > +        movdqa  xmm15,XMMWORD[((-32))+rbp]
> > > > > >
> > > > > > +        jmp     NEAR $L$oop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$oop:
> > > > > >
> > > > > > +        movd    xmm0,DWORD[r8]
> > > > > >
> > > > > > +        lea     r8,[64+r8]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[r9]
> > > > > >
> > > > > > +        lea     r9,[64+r9]
> > > > > >
> > > > > > +        movd    xmm3,DWORD[r10]
> > > > > >
> > > > > > +        lea     r10,[64+r10]
> > > > > >
> > > > > > +        movd    xmm4,DWORD[r11]
> > > > > >
> > > > > > +        lea     r11,[64+r11]
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm3
> > > > > >
> > > > > > +        movd    xmm1,DWORD[((-60))+r8]
> > > > > >
> > > > > > +        punpckldq       xmm2,xmm4
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-60))+r9]
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-60))+r10]
> > > > > >
> > > > > > +DB      102,15,56,0,197
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-60))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm1,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm13
> > > > > >
> > > > > > +        pand    xmm6,xmm12
> > > > > >
> > > > > > +        punpckldq       xmm1,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        movd    xmm2,DWORD[((-56))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-56))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,205
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-56))+r10]
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-56))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm2,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm12
> > > > > >
> > > > > > +        pand    xmm6,xmm11
> > > > > >
> > > > > > +        punpckldq       xmm2,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        movd    xmm3,DWORD[((-52))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-52))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,213
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-52))+r10]
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-52))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm3,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm11
> > > > > >
> > > > > > +        pand    xmm6,xmm10
> > > > > >
> > > > > > +        punpckldq       xmm3,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        movd    xmm4,DWORD[((-48))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-48))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,221
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-48))+r10]
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-48))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm4,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm10
> > > > > >
> > > > > > +        pand    xmm6,xmm14
> > > > > >
> > > > > > +        punpckldq       xmm4,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        movd    xmm0,DWORD[((-44))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-44))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,229
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-44))+r10]
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-44))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm14
> > > > > >
> > > > > > +        pand    xmm6,xmm13
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        movd    xmm1,DWORD[((-40))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-40))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,197
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-40))+r10]
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-40))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm1,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm13
> > > > > >
> > > > > > +        pand    xmm6,xmm12
> > > > > >
> > > > > > +        punpckldq       xmm1,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        movd    xmm2,DWORD[((-36))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-36))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,205
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-36))+r10]
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-36))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm2,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm12
> > > > > >
> > > > > > +        pand    xmm6,xmm11
> > > > > >
> > > > > > +        punpckldq       xmm2,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        movd    xmm3,DWORD[((-32))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-32))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,213
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-32))+r10]
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-32))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm3,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm11
> > > > > >
> > > > > > +        pand    xmm6,xmm10
> > > > > >
> > > > > > +        punpckldq       xmm3,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        movd    xmm4,DWORD[((-28))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-28))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,221
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-28))+r10]
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-28))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm4,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm10
> > > > > >
> > > > > > +        pand    xmm6,xmm14
> > > > > >
> > > > > > +        punpckldq       xmm4,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        movd    xmm0,DWORD[((-24))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-24))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,229
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-24))+r10]
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-24))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm14
> > > > > >
> > > > > > +        pand    xmm6,xmm13
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        movd    xmm1,DWORD[((-20))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-20))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,197
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-20))+r10]
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-20))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm1,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm13
> > > > > >
> > > > > > +        pand    xmm6,xmm12
> > > > > >
> > > > > > +        punpckldq       xmm1,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        movd    xmm2,DWORD[((-16))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-16))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,205
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-16))+r10]
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-16))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm2,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm12
> > > > > >
> > > > > > +        pand    xmm6,xmm11
> > > > > >
> > > > > > +        punpckldq       xmm2,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        movd    xmm3,DWORD[((-12))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-12))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,213
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-12))+r10]
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-12))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm3,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm11
> > > > > >
> > > > > > +        pand    xmm6,xmm10
> > > > > >
> > > > > > +        punpckldq       xmm3,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        movd    xmm4,DWORD[((-8))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-8))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,221
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-8))+r10]
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-8))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm4,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm10
> > > > > >
> > > > > > +        pand    xmm6,xmm14
> > > > > >
> > > > > > +        punpckldq       xmm4,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        movd    xmm0,DWORD[((-4))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-4))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,229
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-4))+r10]
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-4))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        prefetcht0      [63+r8]
> > > > > >
> > > > > > +        pandn   xmm7,xmm14
> > > > > >
> > > > > > +        pand    xmm6,xmm13
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        prefetcht0      [63+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        prefetcht0      [63+r10]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,197
> > > > > >
> > > > > > +        prefetcht0      [63+r11]
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pandn   xmm7,xmm13
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        pand    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pandn   xmm7,xmm12
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        pand    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pandn   xmm7,xmm11
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        pand    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pandn   xmm7,xmm10
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        pand    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pandn   xmm7,xmm14
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        pand    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        movdqa  xmm15,XMMWORD[rbp]
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        movdqa  xmm15,XMMWORD[32+rbp]
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        pand    xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        pand    xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        pand    xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        pand    xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        pand    xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        pand    xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        pand    xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        pand    xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        pand    xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        pand    xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        pand    xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        pand    xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        pand    xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        pand    xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        pand    xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        pand    xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        pand    xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        pand    xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        pand    xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        pand    xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        movdqa  xmm15,XMMWORD[64+rbp]
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[rbx]
> > > > > >
> > > > > > +        mov     ecx,1
> > > > > >
> > > > > > +        cmp     ecx,DWORD[rbx]
> > > > > >
> > > > > > +        pxor    xmm8,xmm8
> > > > > >
> > > > > > +        cmovge  r8,rbp
> > > > > >
> > > > > > +        cmp     ecx,DWORD[4+rbx]
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        cmovge  r9,rbp
> > > > > >
> > > > > > +        cmp     ecx,DWORD[8+rbx]
> > > > > >
> > > > > > +        pcmpgtd xmm1,xmm8
> > > > > >
> > > > > > +        cmovge  r10,rbp
> > > > > >
> > > > > > +        cmp     ecx,DWORD[12+rbx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm1
> > > > > >
> > > > > > +        cmovge  r11,rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[rdi]
> > > > > >
> > > > > > +        pand    xmm10,xmm1
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        pand    xmm11,xmm1
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        pand    xmm12,xmm1
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +        movdqu  xmm9,XMMWORD[96+rdi]
> > > > > >
> > > > > > +        pand    xmm13,xmm1
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[128+rdi]
> > > > > >
> > > > > > +        pand    xmm14,xmm1
> > > > > >
> > > > > > +        movdqu  XMMWORD[rdi],xmm10
> > > > > >
> > > > > > +        paddd   xmm13,xmm9
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rdi],xmm11
> > > > > >
> > > > > > +        paddd   xmm14,xmm5
> > > > > >
> > > > > > +        movdqu  XMMWORD[64+rdi],xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[96+rdi],xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[128+rdi],xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[rbx],xmm0
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[96+rbp]
> > > > > >
> > > > > > +        movdqa  xmm15,XMMWORD[((-32))+rbp]
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edx,DWORD[280+rsp]
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +        lea     rsi,[64+rsi]
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_grande
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$done:
> > > > > >
> > > > > > +        mov     rax,QWORD[272+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$epilogue:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_sha1_multi_block:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +sha1_multi_block_shaext:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_sha1_multi_block_shaext:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +_shaext_shortcut:
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-168))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > > > >
> > > > > > +        sub     rsp,288
> > > > > >
> > > > > > +        shl     edx,1
> > > > > >
> > > > > > +        and     rsp,-256
> > > > > >
> > > > > > +        lea     rdi,[64+rdi]
> > > > > >
> > > > > > +        mov     QWORD[272+rsp],rax
> > > > > >
> > > > > > +$L$body_shaext:
> > > > > >
> > > > > > +        lea     rbx,[256+rsp]
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((K_XX_XX+128))]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$oop_grande_shaext:
> > > > > >
> > > > > > +        mov     DWORD[280+rsp],edx
> > > > > >
> > > > > > +        xor     edx,edx
> > > > > >
> > > > > > +        mov     r8,QWORD[rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[8+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[rbx],ecx
> > > > > >
> > > > > > +        cmovle  r8,rsp
> > > > > >
> > > > > > +        mov     r9,QWORD[16+rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[24+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[4+rbx],ecx
> > > > > >
> > > > > > +        cmovle  r9,rsp
> > > > > >
> > > > > > +        test    edx,edx
> > > > > >
> > > > > > +        jz      NEAR $L$done_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movq    xmm0,QWORD[((0-64))+rdi]
> > > > > >
> > > > > > +        movq    xmm4,QWORD[((32-64))+rdi]
> > > > > >
> > > > > > +        movq    xmm5,QWORD[((64-64))+rdi]
> > > > > >
> > > > > > +        movq    xmm6,QWORD[((96-64))+rdi]
> > > > > >
> > > > > > +        movq    xmm7,QWORD[((128-64))+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm4
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm0
> > > > > >
> > > > > > +        punpcklqdq      xmm0,xmm5
> > > > > >
> > > > > > +        punpckhqdq      xmm8,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm1,xmm7,63
> > > > > >
> > > > > > +        pshufd  xmm9,xmm7,127
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,27
> > > > > >
> > > > > > +        pshufd  xmm8,xmm8,27
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$oop_shaext:
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[r8]
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[r9]
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[16+r8]
> > > > > >
> > > > > > +        movdqu  xmm12,XMMWORD[16+r9]
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[32+r8]
> > > > > >
> > > > > > +DB      102,15,56,0,227
> > > > > >
> > > > > > +        movdqu  xmm13,XMMWORD[32+r9]
> > > > > >
> > > > > > +DB      102,68,15,56,0,219
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[48+r8]
> > > > > >
> > > > > > +        lea     r8,[64+r8]
> > > > > >
> > > > > > +DB      102,15,56,0,235
> > > > > >
> > > > > > +        movdqu  xmm14,XMMWORD[48+r9]
> > > > > >
> > > > > > +        lea     r9,[64+r9]
> > > > > >
> > > > > > +DB      102,68,15,56,0,227
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[80+rsp],xmm1
> > > > > >
> > > > > > +        paddd   xmm1,xmm4
> > > > > >
> > > > > > +        movdqa  XMMWORD[112+rsp],xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm11
> > > > > >
> > > > > > +        movdqa  XMMWORD[64+rsp],xmm0
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  XMMWORD[96+rsp],xmm8
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,0
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +DB      69,15,58,204,193,0
> > > > > >
> > > > > > +DB      69,15,56,200,212
> > > > > >
> > > > > > +DB      102,15,56,0,243
> > > > > >
> > > > > > +        prefetcht0      [127+r8]
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +DB      102,68,15,56,0,235
> > > > > >
> > > > > > +        prefetcht0      [127+r9]
> > > > > >
> > > > > > +DB      69,15,56,201,220
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,0,251
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      102,68,15,56,0,243
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,0
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +DB      69,15,58,204,194,0
> > > > > >
> > > > > > +DB      69,15,56,200,205
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +        pxor    xmm11,xmm13
> > > > > >
> > > > > > +DB      69,15,56,201,229
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,0
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +DB      69,15,58,204,193,0
> > > > > >
> > > > > > +DB      69,15,56,200,214
> > > > > >
> > > > > > +DB      15,56,202,231
> > > > > >
> > > > > > +DB      69,15,56,202,222
> > > > > >
> > > > > > +        pxor    xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,201,247
> > > > > >
> > > > > > +        pxor    xmm12,xmm14
> > > > > >
> > > > > > +DB      69,15,56,201,238
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,0
> > > > > >
> > > > > > +DB      15,56,200,204
> > > > > >
> > > > > > +DB      69,15,58,204,194,0
> > > > > >
> > > > > > +DB      69,15,56,200,203
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +DB      69,15,56,202,227
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,252
> > > > > >
> > > > > > +        pxor    xmm13,xmm11
> > > > > >
> > > > > > +DB      69,15,56,201,243
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,0
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +DB      69,15,58,204,193,0
> > > > > >
> > > > > > +DB      69,15,56,200,212
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +DB      69,15,56,202,236
> > > > > >
> > > > > > +        pxor    xmm7,xmm5
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        pxor    xmm14,xmm12
> > > > > >
> > > > > > +DB      69,15,56,201,220
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,1
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +DB      69,15,58,204,194,1
> > > > > >
> > > > > > +DB      69,15,56,200,205
> > > > > >
> > > > > > +DB      15,56,202,254
> > > > > >
> > > > > > +DB      69,15,56,202,245
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +        pxor    xmm11,xmm13
> > > > > >
> > > > > > +DB      69,15,56,201,229
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,1
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +DB      69,15,58,204,193,1
> > > > > >
> > > > > > +DB      69,15,56,200,214
> > > > > >
> > > > > > +DB      15,56,202,231
> > > > > >
> > > > > > +DB      69,15,56,202,222
> > > > > >
> > > > > > +        pxor    xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,201,247
> > > > > >
> > > > > > +        pxor    xmm12,xmm14
> > > > > >
> > > > > > +DB      69,15,56,201,238
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,1
> > > > > >
> > > > > > +DB      15,56,200,204
> > > > > >
> > > > > > +DB      69,15,58,204,194,1
> > > > > >
> > > > > > +DB      69,15,56,200,203
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +DB      69,15,56,202,227
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,252
> > > > > >
> > > > > > +        pxor    xmm13,xmm11
> > > > > >
> > > > > > +DB      69,15,56,201,243
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,1
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +DB      69,15,58,204,193,1
> > > > > >
> > > > > > +DB      69,15,56,200,212
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +DB      69,15,56,202,236
> > > > > >
> > > > > > +        pxor    xmm7,xmm5
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        pxor    xmm14,xmm12
> > > > > >
> > > > > > +DB      69,15,56,201,220
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,1
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +DB      69,15,58,204,194,1
> > > > > >
> > > > > > +DB      69,15,56,200,205
> > > > > >
> > > > > > +DB      15,56,202,254
> > > > > >
> > > > > > +DB      69,15,56,202,245
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +        pxor    xmm11,xmm13
> > > > > >
> > > > > > +DB      69,15,56,201,229
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,2
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +DB      69,15,58,204,193,2
> > > > > >
> > > > > > +DB      69,15,56,200,214
> > > > > >
> > > > > > +DB      15,56,202,231
> > > > > >
> > > > > > +DB      69,15,56,202,222
> > > > > >
> > > > > > +        pxor    xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,201,247
> > > > > >
> > > > > > +        pxor    xmm12,xmm14
> > > > > >
> > > > > > +DB      69,15,56,201,238
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,2
> > > > > >
> > > > > > +DB      15,56,200,204
> > > > > >
> > > > > > +DB      69,15,58,204,194,2
> > > > > >
> > > > > > +DB      69,15,56,200,203
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +DB      69,15,56,202,227
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,252
> > > > > >
> > > > > > +        pxor    xmm13,xmm11
> > > > > >
> > > > > > +DB      69,15,56,201,243
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,2
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +DB      69,15,58,204,193,2
> > > > > >
> > > > > > +DB      69,15,56,200,212
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +DB      69,15,56,202,236
> > > > > >
> > > > > > +        pxor    xmm7,xmm5
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        pxor    xmm14,xmm12
> > > > > >
> > > > > > +DB      69,15,56,201,220
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,2
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +DB      69,15,58,204,194,2
> > > > > >
> > > > > > +DB      69,15,56,200,205
> > > > > >
> > > > > > +DB      15,56,202,254
> > > > > >
> > > > > > +DB      69,15,56,202,245
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +        pxor    xmm11,xmm13
> > > > > >
> > > > > > +DB      69,15,56,201,229
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,2
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +DB      69,15,58,204,193,2
> > > > > >
> > > > > > +DB      69,15,56,200,214
> > > > > >
> > > > > > +DB      15,56,202,231
> > > > > >
> > > > > > +DB      69,15,56,202,222
> > > > > >
> > > > > > +        pxor    xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,201,247
> > > > > >
> > > > > > +        pxor    xmm12,xmm14
> > > > > >
> > > > > > +DB      69,15,56,201,238
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,3
> > > > > >
> > > > > > +DB      15,56,200,204
> > > > > >
> > > > > > +DB      69,15,58,204,194,3
> > > > > >
> > > > > > +DB      69,15,56,200,203
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +DB      69,15,56,202,227
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,252
> > > > > >
> > > > > > +        pxor    xmm13,xmm11
> > > > > >
> > > > > > +DB      69,15,56,201,243
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,3
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +DB      69,15,58,204,193,3
> > > > > >
> > > > > > +DB      69,15,56,200,212
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +DB      69,15,56,202,236
> > > > > >
> > > > > > +        pxor    xmm7,xmm5
> > > > > >
> > > > > > +        pxor    xmm14,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,1
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        cmp     ecx,DWORD[rbx]
> > > > > >
> > > > > > +        cmovge  r8,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,3
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +DB      69,15,58,204,194,3
> > > > > >
> > > > > > +DB      69,15,56,200,205
> > > > > >
> > > > > > +DB      15,56,202,254
> > > > > >
> > > > > > +DB      69,15,56,202,245
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        cmp     ecx,DWORD[4+rbx]
> > > > > >
> > > > > > +        cmovge  r9,rsp
> > > > > >
> > > > > > +        movq    xmm6,QWORD[rbx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,3
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +DB      69,15,58,204,193,3
> > > > > >
> > > > > > +DB      69,15,56,200,214
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm11,xmm6,0x00
> > > > > >
> > > > > > +        pshufd  xmm12,xmm6,0x55
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        pcmpgtd xmm11,xmm4
> > > > > >
> > > > > > +        pcmpgtd xmm12,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,3
> > > > > >
> > > > > > +DB      15,56,200,204
> > > > > >
> > > > > > +DB      69,15,58,204,194,3
> > > > > >
> > > > > > +DB      68,15,56,200,204
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pcmpgtd xmm7,xmm4
> > > > > >
> > > > > > +        pand    xmm0,xmm11
> > > > > >
> > > > > > +        pand    xmm1,xmm11
> > > > > >
> > > > > > +        pand    xmm8,xmm12
> > > > > >
> > > > > > +        pand    xmm9,xmm12
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm0,XMMWORD[64+rsp]
> > > > > >
> > > > > > +        paddd   xmm1,XMMWORD[80+rsp]
> > > > > >
> > > > > > +        paddd   xmm8,XMMWORD[96+rsp]
> > > > > >
> > > > > > +        paddd   xmm9,XMMWORD[112+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movq    QWORD[rbx],xmm6
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edx,DWORD[280+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,27
> > > > > >
> > > > > > +        pshufd  xmm8,xmm8,27
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm0
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm8
> > > > > >
> > > > > > +        punpckhdq       xmm6,xmm8
> > > > > >
> > > > > > +        punpckhdq       xmm1,xmm9
> > > > > >
> > > > > > +        movq    QWORD[(0-64)+rdi],xmm0
> > > > > >
> > > > > > +        psrldq  xmm0,8
> > > > > >
> > > > > > +        movq    QWORD[(64-64)+rdi],xmm6
> > > > > >
> > > > > > +        psrldq  xmm6,8
> > > > > >
> > > > > > +        movq    QWORD[(32-64)+rdi],xmm0
> > > > > >
> > > > > > +        psrldq  xmm1,8
> > > > > >
> > > > > > +        movq    QWORD[(96-64)+rdi],xmm6
> > > > > >
> > > > > > +        movq    QWORD[(128-64)+rdi],xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rdi,[8+rdi]
> > > > > >
> > > > > > +        lea     rsi,[32+rsi]
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_grande_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$done_shaext:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$epilogue_shaext:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_sha1_multi_block_shaext:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   256
> > > > > >
> > > > > > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > > > > >
> > > > > > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > > > > >
> > > > > > +K_XX_XX:
> > > > > >
> > > > > > +        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,109,117,108,116,105,45,98,108,111,99,107
> > > > > >
> > > > > > +DB      32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120
> > > > > >
> > > > > > +DB      56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77
> > > > > >
> > > > > > +DB      83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110
> > > > > >
> > > > > > +DB      115,115,108,46,111,114,103,62,0
> > > > > >
> > > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[272+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > > >
> > > > > > +        mov     QWORD[144+r8],rbx
> > > > > >
> > > > > > +        mov     QWORD[160+r8],rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((-24-160))+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,20
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .pdata rdata align=4
> > > > > >
> > > > > > +ALIGN   4
> > > > > >
> > > > > > +        DD      $L$SEH_begin_sha1_multi_block wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_sha1_multi_block wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_sha1_multi_block wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_begin_sha1_multi_block_shaext wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_sha1_multi_block_shaext wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_sha1_multi_block_shaext wrt ..imagebase
> > > > > >
> > > > > > +section .xdata rdata align=8
> > > > > >
> > > > > > +ALIGN   8
> > > > > >
> > > > > > +$L$SEH_info_sha1_multi_block:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
> > > > > >
> > > > > > +$L$SEH_info_sha1_multi_block_shaext:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-
> > > x86_64.nasm
> > > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..c6d68d348f
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> > > > > > @@ -0,0 +1,2884 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/sha/asm/sha1-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2006-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  sha1_block_data_order
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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      NEAR $L$ialu
> > > > > >
> > > > > > +        test    r10d,536870912
> > > > > >
> > > > > > +        jnz     NEAR _shaext_shortcut
> > > > > >
> > > > > > +        jmp     NEAR _ssse3_shortcut
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ialu:
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r8,rdi
> > > > > >
> > > > > > +        sub     rsp,72
> > > > > >
> > > > > > +        mov     r9,rsi
> > > > > >
> > > > > > +        and     rsp,-64
> > > > > >
> > > > > > +        mov     r10,rdx
> > > > > >
> > > > > > +        mov     QWORD[64+rsp],rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$prologue:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[r9]
> > > > > >
> > > > > > +        bswap   edx
> > > > > >
> > > > > > +        mov     ebp,DWORD[4+r9]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[rsp],edx
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        bswap   ebp
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,edi
> > > > > >
> > > > > > +        lea     r13d,[1518500249+r13*1+rdx]
> > > > > >
> > > > > > +        add     r13d,ecx
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     edi,30
> > > > > >
> > > > > > +        add     r13d,eax
> > > > > >
> > > > > > +        mov     r14d,DWORD[8+r9]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[4+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        bswap   r14d
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,esi
> > > > > >
> > > > > > +        lea     r12d,[1518500249+r12*1+rbp]
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     esi,30
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        mov     edx,DWORD[12+r9]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[8+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        bswap   edx
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,r13d
> > > > > >
> > > > > > +        lea     r11d,[1518500249+r11*1+r14]
> > > > > >
> > > > > > +        add     r11d,ecx
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     r13d,30
> > > > > >
> > > > > > +        add     r11d,eax
> > > > > >
> > > > > > +        mov     ebp,DWORD[16+r9]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[12+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        bswap   ebp
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,r12d
> > > > > >
> > > > > > +        lea     edi,[1518500249+rdi*1+rdx]
> > > > > >
> > > > > > +        add     edi,ecx
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     r12d,30
> > > > > >
> > > > > > +        add     edi,eax
> > > > > >
> > > > > > +        mov     r14d,DWORD[20+r9]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[16+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        bswap   r14d
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,r11d
> > > > > >
> > > > > > +        lea     esi,[1518500249+rsi*1+rbp]
> > > > > >
> > > > > > +        add     esi,ecx
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     r11d,30
> > > > > >
> > > > > > +        add     esi,eax
> > > > > >
> > > > > > +        mov     edx,DWORD[24+r9]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[20+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        bswap   edx
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,edi
> > > > > >
> > > > > > +        lea     r13d,[1518500249+r13*1+r14]
> > > > > >
> > > > > > +        add     r13d,ecx
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     edi,30
> > > > > >
> > > > > > +        add     r13d,eax
> > > > > >
> > > > > > +        mov     ebp,DWORD[28+r9]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[24+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        bswap   ebp
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,esi
> > > > > >
> > > > > > +        lea     r12d,[1518500249+r12*1+rdx]
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     esi,30
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        mov     r14d,DWORD[32+r9]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[28+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        bswap   r14d
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,r13d
> > > > > >
> > > > > > +        lea     r11d,[1518500249+r11*1+rbp]
> > > > > >
> > > > > > +        add     r11d,ecx
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     r13d,30
> > > > > >
> > > > > > +        add     r11d,eax
> > > > > >
> > > > > > +        mov     edx,DWORD[36+r9]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[32+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        bswap   edx
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,r12d
> > > > > >
> > > > > > +        lea     edi,[1518500249+rdi*1+r14]
> > > > > >
> > > > > > +        add     edi,ecx
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     r12d,30
> > > > > >
> > > > > > +        add     edi,eax
> > > > > >
> > > > > > +        mov     ebp,DWORD[40+r9]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[36+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        bswap   ebp
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,r11d
> > > > > >
> > > > > > +        lea     esi,[1518500249+rsi*1+rdx]
> > > > > >
> > > > > > +        add     esi,ecx
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     r11d,30
> > > > > >
> > > > > > +        add     esi,eax
> > > > > >
> > > > > > +        mov     r14d,DWORD[44+r9]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[40+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        bswap   r14d
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,edi
> > > > > >
> > > > > > +        lea     r13d,[1518500249+r13*1+rbp]
> > > > > >
> > > > > > +        add     r13d,ecx
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     edi,30
> > > > > >
> > > > > > +        add     r13d,eax
> > > > > >
> > > > > > +        mov     edx,DWORD[48+r9]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[44+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        bswap   edx
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,esi
> > > > > >
> > > > > > +        lea     r12d,[1518500249+r12*1+r14]
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     esi,30
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        mov     ebp,DWORD[52+r9]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[48+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        bswap   ebp
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,r13d
> > > > > >
> > > > > > +        lea     r11d,[1518500249+r11*1+rdx]
> > > > > >
> > > > > > +        add     r11d,ecx
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     r13d,30
> > > > > >
> > > > > > +        add     r11d,eax
> > > > > >
> > > > > > +        mov     r14d,DWORD[56+r9]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[52+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        bswap   r14d
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,r12d
> > > > > >
> > > > > > +        lea     edi,[1518500249+rdi*1+rbp]
> > > > > >
> > > > > > +        add     edi,ecx
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     r12d,30
> > > > > >
> > > > > > +        add     edi,eax
> > > > > >
> > > > > > +        mov     edx,DWORD[60+r9]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[56+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        bswap   edx
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,r11d
> > > > > >
> > > > > > +        lea     esi,[1518500249+rsi*1+r14]
> > > > > >
> > > > > > +        add     esi,ecx
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     r11d,30
> > > > > >
> > > > > > +        add     esi,eax
> > > > > >
> > > > > > +        xor     ebp,DWORD[rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[60+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     ebp,DWORD[8+rsp]
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        xor     ebp,DWORD[32+rsp]
> > > > > >
> > > > > > +        and     eax,edi
> > > > > >
> > > > > > +        lea     r13d,[1518500249+r13*1+rdx]
> > > > > >
> > > > > > +        rol     edi,30
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        add     r13d,ecx
> > > > > >
> > > > > > +        rol     ebp,1
> > > > > >
> > > > > > +        add     r13d,eax
> > > > > >
> > > > > > +        xor     r14d,DWORD[4+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     r14d,DWORD[12+rsp]
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        xor     r14d,DWORD[36+rsp]
> > > > > >
> > > > > > +        and     eax,esi
> > > > > >
> > > > > > +        lea     r12d,[1518500249+r12*1+rbp]
> > > > > >
> > > > > > +        rol     esi,30
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        rol     r14d,1
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        xor     edx,DWORD[8+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[4+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     edx,DWORD[16+rsp]
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        xor     edx,DWORD[40+rsp]
> > > > > >
> > > > > > +        and     eax,r13d
> > > > > >
> > > > > > +        lea     r11d,[1518500249+r11*1+r14]
> > > > > >
> > > > > > +        rol     r13d,30
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        add     r11d,ecx
> > > > > >
> > > > > > +        rol     edx,1
> > > > > >
> > > > > > +        add     r11d,eax
> > > > > >
> > > > > > +        xor     ebp,DWORD[12+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[8+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     ebp,DWORD[20+rsp]
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        xor     ebp,DWORD[44+rsp]
> > > > > >
> > > > > > +        and     eax,r12d
> > > > > >
> > > > > > +        lea     edi,[1518500249+rdi*1+rdx]
> > > > > >
> > > > > > +        rol     r12d,30
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        add     edi,ecx
> > > > > >
> > > > > > +        rol     ebp,1
> > > > > >
> > > > > > +        add     edi,eax
> > > > > >
> > > > > > +        xor     r14d,DWORD[16+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[12+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     r14d,DWORD[24+rsp]
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        xor     r14d,DWORD[48+rsp]
> > > > > >
> > > > > > +        and     eax,r11d
> > > > > >
> > > > > > +        lea     esi,[1518500249+rsi*1+rbp]
> > > > > >
> > > > > > +        rol     r11d,30
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        add     esi,ecx
> > > > > >
> > > > > > +        rol     r14d,1
> > > > > >
> > > > > > +        add     esi,eax
> > > > > >
> > > > > > +        xor     edx,DWORD[20+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[16+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     edx,DWORD[28+rsp]
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[24+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[20+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     ebp,DWORD[32+rsp]
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[28+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[24+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     r14d,DWORD[36+rsp]
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[32+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[28+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     edx,DWORD[40+rsp]
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[36+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[32+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     ebp,DWORD[44+rsp]
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[40+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[36+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     r14d,DWORD[48+rsp]
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[44+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[40+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     edx,DWORD[52+rsp]
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[48+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[44+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     ebp,DWORD[56+rsp]
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[52+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[48+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     r14d,DWORD[60+rsp]
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[56+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[52+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     edx,DWORD[rsp]
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[60+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[56+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     ebp,DWORD[4+rsp]
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[60+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     r14d,DWORD[8+rsp]
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[4+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     edx,DWORD[12+rsp]
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[8+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[4+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     ebp,DWORD[16+rsp]
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[12+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[8+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     r14d,DWORD[20+rsp]
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[16+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[12+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     edx,DWORD[24+rsp]
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[20+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[16+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     ebp,DWORD[28+rsp]
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[24+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[20+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     r14d,DWORD[32+rsp]
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[28+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[24+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     edx,DWORD[36+rsp]
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[32+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[28+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     ebp,DWORD[40+rsp]
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[36+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[32+rsp],ebp
> > > > > >
> > > > > > +        mov     ebx,r12d
> > > > > >
> > > > > > +        xor     r14d,DWORD[44+rsp]
> > > > > >
> > > > > > +        and     eax,r11d
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     r14d,DWORD[4+rsp]
> > > > > >
> > > > > > +        lea     r13d,[((-1894007588))+r13*1+rbp]
> > > > > >
> > > > > > +        xor     ebx,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r13d,eax
> > > > > >
> > > > > > +        rol     r14d,1
> > > > > >
> > > > > > +        and     ebx,edi
> > > > > >
> > > > > > +        add     r13d,ecx
> > > > > >
> > > > > > +        rol     edi,30
> > > > > >
> > > > > > +        add     r13d,ebx
> > > > > >
> > > > > > +        xor     edx,DWORD[40+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[36+rsp],r14d
> > > > > >
> > > > > > +        mov     ebx,r11d
> > > > > >
> > > > > > +        xor     edx,DWORD[48+rsp]
> > > > > >
> > > > > > +        and     eax,edi
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     edx,DWORD[8+rsp]
> > > > > >
> > > > > > +        lea     r12d,[((-1894007588))+r12*1+r14]
> > > > > >
> > > > > > +        xor     ebx,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        rol     edx,1
> > > > > >
> > > > > > +        and     ebx,esi
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        rol     esi,30
> > > > > >
> > > > > > +        add     r12d,ebx
> > > > > >
> > > > > > +        xor     ebp,DWORD[44+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[40+rsp],edx
> > > > > >
> > > > > > +        mov     ebx,edi
> > > > > >
> > > > > > +        xor     ebp,DWORD[52+rsp]
> > > > > >
> > > > > > +        and     eax,esi
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     ebp,DWORD[12+rsp]
> > > > > >
> > > > > > +        lea     r11d,[((-1894007588))+r11*1+rdx]
> > > > > >
> > > > > > +        xor     ebx,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r11d,eax
> > > > > >
> > > > > > +        rol     ebp,1
> > > > > >
> > > > > > +        and     ebx,r13d
> > > > > >
> > > > > > +        add     r11d,ecx
> > > > > >
> > > > > > +        rol     r13d,30
> > > > > >
> > > > > > +        add     r11d,ebx
> > > > > >
> > > > > > +        xor     r14d,DWORD[48+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[44+rsp],ebp
> > > > > >
> > > > > > +        mov     ebx,esi
> > > > > >
> > > > > > +        xor     r14d,DWORD[56+rsp]
> > > > > >
> > > > > > +        and     eax,r13d
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     r14d,DWORD[16+rsp]
> > > > > >
> > > > > > +        lea     edi,[((-1894007588))+rdi*1+rbp]
> > > > > >
> > > > > > +        xor     ebx,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     edi,eax
> > > > > >
> > > > > > +        rol     r14d,1
> > > > > >
> > > > > > +        and     ebx,r12d
> > > > > >
> > > > > > +        add     edi,ecx
> > > > > >
> > > > > > +        rol     r12d,30
> > > > > >
> > > > > > +        add     edi,ebx
> > > > > >
> > > > > > +        xor     edx,DWORD[52+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[48+rsp],r14d
> > > > > >
> > > > > > +        mov     ebx,r13d
> > > > > >
> > > > > > +        xor     edx,DWORD[60+rsp]
> > > > > >
> > > > > > +        and     eax,r12d
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     edx,DWORD[20+rsp]
> > > > > >
> > > > > > +        lea     esi,[((-1894007588))+rsi*1+r14]
> > > > > >
> > > > > > +        xor     ebx,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     esi,eax
> > > > > >
> > > > > > +        rol     edx,1
> > > > > >
> > > > > > +        and     ebx,r11d
> > > > > >
> > > > > > +        add     esi,ecx
> > > > > >
> > > > > > +        rol     r11d,30
> > > > > >
> > > > > > +        add     esi,ebx
> > > > > >
> > > > > > +        xor     ebp,DWORD[56+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[52+rsp],edx
> > > > > >
> > > > > > +        mov     ebx,r12d
> > > > > >
> > > > > > +        xor     ebp,DWORD[rsp]
> > > > > >
> > > > > > +        and     eax,r11d
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     ebp,DWORD[24+rsp]
> > > > > >
> > > > > > +        lea     r13d,[((-1894007588))+r13*1+rdx]
> > > > > >
> > > > > > +        xor     ebx,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r13d,eax
> > > > > >
> > > > > > +        rol     ebp,1
> > > > > >
> > > > > > +        and     ebx,edi
> > > > > >
> > > > > > +        add     r13d,ecx
> > > > > >
> > > > > > +        rol     edi,30
> > > > > >
> > > > > > +        add     r13d,ebx
> > > > > >
> > > > > > +        xor     r14d,DWORD[60+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[56+rsp],ebp
> > > > > >
> > > > > > +        mov     ebx,r11d
> > > > > >
> > > > > > +        xor     r14d,DWORD[4+rsp]
> > > > > >
> > > > > > +        and     eax,edi
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     r14d,DWORD[28+rsp]
> > > > > >
> > > > > > +        lea     r12d,[((-1894007588))+r12*1+rbp]
> > > > > >
> > > > > > +        xor     ebx,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        rol     r14d,1
> > > > > >
> > > > > > +        and     ebx,esi
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        rol     esi,30
> > > > > >
> > > > > > +        add     r12d,ebx
> > > > > >
> > > > > > +        xor     edx,DWORD[rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[60+rsp],r14d
> > > > > >
> > > > > > +        mov     ebx,edi
> > > > > >
> > > > > > +        xor     edx,DWORD[8+rsp]
> > > > > >
> > > > > > +        and     eax,esi
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     edx,DWORD[32+rsp]
> > > > > >
> > > > > > +        lea     r11d,[((-1894007588))+r11*1+r14]
> > > > > >
> > > > > > +        xor     ebx,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r11d,eax
> > > > > >
> > > > > > +        rol     edx,1
> > > > > >
> > > > > > +        and     ebx,r13d
> > > > > >
> > > > > > +        add     r11d,ecx
> > > > > >
> > > > > > +        rol     r13d,30
> > > > > >
> > > > > > +        add     r11d,ebx
> > > > > >
> > > > > > +        xor     ebp,DWORD[4+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[rsp],edx
> > > > > >
> > > > > > +        mov     ebx,esi
> > > > > >
> > > > > > +        xor     ebp,DWORD[12+rsp]
> > > > > >
> > > > > > +        and     eax,r13d
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     ebp,DWORD[36+rsp]
> > > > > >
> > > > > > +        lea     edi,[((-1894007588))+rdi*1+rdx]
> > > > > >
> > > > > > +        xor     ebx,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     edi,eax
> > > > > >
> > > > > > +        rol     ebp,1
> > > > > >
> > > > > > +        and     ebx,r12d
> > > > > >
> > > > > > +        add     edi,ecx
> > > > > >
> > > > > > +        rol     r12d,30
> > > > > >
> > > > > > +        add     edi,ebx
> > > > > >
> > > > > > +        xor     r14d,DWORD[8+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[4+rsp],ebp
> > > > > >
> > > > > > +        mov     ebx,r13d
> > > > > >
> > > > > > +        xor     r14d,DWORD[16+rsp]
> > > > > >
> > > > > > +        and     eax,r12d
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     r14d,DWORD[40+rsp]
> > > > > >
> > > > > > +        lea     esi,[((-1894007588))+rsi*1+rbp]
> > > > > >
> > > > > > +        xor     ebx,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     esi,eax
> > > > > >
> > > > > > +        rol     r14d,1
> > > > > >
> > > > > > +        and     ebx,r11d
> > > > > >
> > > > > > +        add     esi,ecx
> > > > > >
> > > > > > +        rol     r11d,30
> > > > > >
> > > > > > +        add     esi,ebx
> > > > > >
> > > > > > +        xor     edx,DWORD[12+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[8+rsp],r14d
> > > > > >
> > > > > > +        mov     ebx,r12d
> > > > > >
> > > > > > +        xor     edx,DWORD[20+rsp]
> > > > > >
> > > > > > +        and     eax,r11d
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     edx,DWORD[44+rsp]
> > > > > >
> > > > > > +        lea     r13d,[((-1894007588))+r13*1+r14]
> > > > > >
> > > > > > +        xor     ebx,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r13d,eax
> > > > > >
> > > > > > +        rol     edx,1
> > > > > >
> > > > > > +        and     ebx,edi
> > > > > >
> > > > > > +        add     r13d,ecx
> > > > > >
> > > > > > +        rol     edi,30
> > > > > >
> > > > > > +        add     r13d,ebx
> > > > > >
> > > > > > +        xor     ebp,DWORD[16+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[12+rsp],edx
> > > > > >
> > > > > > +        mov     ebx,r11d
> > > > > >
> > > > > > +        xor     ebp,DWORD[24+rsp]
> > > > > >
> > > > > > +        and     eax,edi
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     ebp,DWORD[48+rsp]
> > > > > >
> > > > > > +        lea     r12d,[((-1894007588))+r12*1+rdx]
> > > > > >
> > > > > > +        xor     ebx,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        rol     ebp,1
> > > > > >
> > > > > > +        and     ebx,esi
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        rol     esi,30
> > > > > >
> > > > > > +        add     r12d,ebx
> > > > > >
> > > > > > +        xor     r14d,DWORD[20+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[16+rsp],ebp
> > > > > >
> > > > > > +        mov     ebx,edi
> > > > > >
> > > > > > +        xor     r14d,DWORD[28+rsp]
> > > > > >
> > > > > > +        and     eax,esi
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     r14d,DWORD[52+rsp]
> > > > > >
> > > > > > +        lea     r11d,[((-1894007588))+r11*1+rbp]
> > > > > >
> > > > > > +        xor     ebx,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r11d,eax
> > > > > >
> > > > > > +        rol     r14d,1
> > > > > >
> > > > > > +        and     ebx,r13d
> > > > > >
> > > > > > +        add     r11d,ecx
> > > > > >
> > > > > > +        rol     r13d,30
> > > > > >
> > > > > > +        add     r11d,ebx
> > > > > >
> > > > > > +        xor     edx,DWORD[24+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[20+rsp],r14d
> > > > > >
> > > > > > +        mov     ebx,esi
> > > > > >
> > > > > > +        xor     edx,DWORD[32+rsp]
> > > > > >
> > > > > > +        and     eax,r13d
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     edx,DWORD[56+rsp]
> > > > > >
> > > > > > +        lea     edi,[((-1894007588))+rdi*1+r14]
> > > > > >
> > > > > > +        xor     ebx,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     edi,eax
> > > > > >
> > > > > > +        rol     edx,1
> > > > > >
> > > > > > +        and     ebx,r12d
> > > > > >
> > > > > > +        add     edi,ecx
> > > > > >
> > > > > > +        rol     r12d,30
> > > > > >
> > > > > > +        add     edi,ebx
> > > > > >
> > > > > > +        xor     ebp,DWORD[28+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[24+rsp],edx
> > > > > >
> > > > > > +        mov     ebx,r13d
> > > > > >
> > > > > > +        xor     ebp,DWORD[36+rsp]
> > > > > >
> > > > > > +        and     eax,r12d
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     ebp,DWORD[60+rsp]
> > > > > >
> > > > > > +        lea     esi,[((-1894007588))+rsi*1+rdx]
> > > > > >
> > > > > > +        xor     ebx,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     esi,eax
> > > > > >
> > > > > > +        rol     ebp,1
> > > > > >
> > > > > > +        and     ebx,r11d
> > > > > >
> > > > > > +        add     esi,ecx
> > > > > >
> > > > > > +        rol     r11d,30
> > > > > >
> > > > > > +        add     esi,ebx
> > > > > >
> > > > > > +        xor     r14d,DWORD[32+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[28+rsp],ebp
> > > > > >
> > > > > > +        mov     ebx,r12d
> > > > > >
> > > > > > +        xor     r14d,DWORD[40+rsp]
> > > > > >
> > > > > > +        and     eax,r11d
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     r14d,DWORD[rsp]
> > > > > >
> > > > > > +        lea     r13d,[((-1894007588))+r13*1+rbp]
> > > > > >
> > > > > > +        xor     ebx,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r13d,eax
> > > > > >
> > > > > > +        rol     r14d,1
> > > > > >
> > > > > > +        and     ebx,edi
> > > > > >
> > > > > > +        add     r13d,ecx
> > > > > >
> > > > > > +        rol     edi,30
> > > > > >
> > > > > > +        add     r13d,ebx
> > > > > >
> > > > > > +        xor     edx,DWORD[36+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[32+rsp],r14d
> > > > > >
> > > > > > +        mov     ebx,r11d
> > > > > >
> > > > > > +        xor     edx,DWORD[44+rsp]
> > > > > >
> > > > > > +        and     eax,edi
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     edx,DWORD[4+rsp]
> > > > > >
> > > > > > +        lea     r12d,[((-1894007588))+r12*1+r14]
> > > > > >
> > > > > > +        xor     ebx,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        rol     edx,1
> > > > > >
> > > > > > +        and     ebx,esi
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        rol     esi,30
> > > > > >
> > > > > > +        add     r12d,ebx
> > > > > >
> > > > > > +        xor     ebp,DWORD[40+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[36+rsp],edx
> > > > > >
> > > > > > +        mov     ebx,edi
> > > > > >
> > > > > > +        xor     ebp,DWORD[48+rsp]
> > > > > >
> > > > > > +        and     eax,esi
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     ebp,DWORD[8+rsp]
> > > > > >
> > > > > > +        lea     r11d,[((-1894007588))+r11*1+rdx]
> > > > > >
> > > > > > +        xor     ebx,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r11d,eax
> > > > > >
> > > > > > +        rol     ebp,1
> > > > > >
> > > > > > +        and     ebx,r13d
> > > > > >
> > > > > > +        add     r11d,ecx
> > > > > >
> > > > > > +        rol     r13d,30
> > > > > >
> > > > > > +        add     r11d,ebx
> > > > > >
> > > > > > +        xor     r14d,DWORD[44+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[40+rsp],ebp
> > > > > >
> > > > > > +        mov     ebx,esi
> > > > > >
> > > > > > +        xor     r14d,DWORD[52+rsp]
> > > > > >
> > > > > > +        and     eax,r13d
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     r14d,DWORD[12+rsp]
> > > > > >
> > > > > > +        lea     edi,[((-1894007588))+rdi*1+rbp]
> > > > > >
> > > > > > +        xor     ebx,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     edi,eax
> > > > > >
> > > > > > +        rol     r14d,1
> > > > > >
> > > > > > +        and     ebx,r12d
> > > > > >
> > > > > > +        add     edi,ecx
> > > > > >
> > > > > > +        rol     r12d,30
> > > > > >
> > > > > > +        add     edi,ebx
> > > > > >
> > > > > > +        xor     edx,DWORD[48+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[44+rsp],r14d
> > > > > >
> > > > > > +        mov     ebx,r13d
> > > > > >
> > > > > > +        xor     edx,DWORD[56+rsp]
> > > > > >
> > > > > > +        and     eax,r12d
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     edx,DWORD[16+rsp]
> > > > > >
> > > > > > +        lea     esi,[((-1894007588))+rsi*1+r14]
> > > > > >
> > > > > > +        xor     ebx,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     esi,eax
> > > > > >
> > > > > > +        rol     edx,1
> > > > > >
> > > > > > +        and     ebx,r11d
> > > > > >
> > > > > > +        add     esi,ecx
> > > > > >
> > > > > > +        rol     r11d,30
> > > > > >
> > > > > > +        add     esi,ebx
> > > > > >
> > > > > > +        xor     ebp,DWORD[52+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[48+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     ebp,DWORD[60+rsp]
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[56+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[52+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     r14d,DWORD[rsp]
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[60+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[56+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     edx,DWORD[4+rsp]
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[60+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     ebp,DWORD[8+rsp]
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[4+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     r14d,DWORD[12+rsp]
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[8+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[4+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     edx,DWORD[16+rsp]
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[12+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[8+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     ebp,DWORD[20+rsp]
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[16+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[12+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     r14d,DWORD[24+rsp]
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[20+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[16+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     edx,DWORD[28+rsp]
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[24+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[20+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     ebp,DWORD[32+rsp]
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[28+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[24+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     r14d,DWORD[36+rsp]
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[32+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[28+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     edx,DWORD[40+rsp]
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[36+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     ebp,DWORD[44+rsp]
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[40+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     r14d,DWORD[48+rsp]
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[44+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     edx,DWORD[52+rsp]
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[48+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     ebp,DWORD[56+rsp]
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[52+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     r14d,DWORD[60+rsp]
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[56+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     edx,DWORD[rsp]
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[60+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     ebp,DWORD[4+rsp]
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        xor     ebp,DWORD[28+rsp]
> > > > > >
> > > > > > +        lea     edi,[((-899497514))+rdi*1+rdx]
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        add     edi,ecx
> > > > > >
> > > > > > +        rol     r12d,30
> > > > > >
> > > > > > +        add     edi,eax
> > > > > >
> > > > > > +        rol     ebp,1
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        lea     esi,[((-899497514))+rsi*1+rbp]
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        add     esi,ecx
> > > > > >
> > > > > > +        rol     r11d,30
> > > > > >
> > > > > > +        add     esi,eax
> > > > > >
> > > > > > +        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,[64+r9]
> > > > > >
> > > > > > +        jnz     NEAR $L$loop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +sha1_block_data_order_shaext:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_sha1_block_data_order_shaext:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +_shaext_shortcut:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-72))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-64)+rax],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-48)+rax],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-32)+rax],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-16)+rax],xmm9
> > > > > >
> > > > > > +$L$prologue_shaext:
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[16+rdi]
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((K_XX_XX+160))]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[rsi]
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,27
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[16+rsi]
> > > > > >
> > > > > > +        pshufd  xmm1,xmm1,27
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[32+rsi]
> > > > > >
> > > > > > +DB      102,15,56,0,227
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[48+rsi]
> > > > > >
> > > > > > +DB      102,15,56,0,235
> > > > > >
> > > > > > +DB      102,15,56,0,243
> > > > > >
> > > > > > +        movdqa  xmm9,xmm1
> > > > > >
> > > > > > +DB      102,15,56,0,251
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$oop_shaext:
> > > > > >
> > > > > > +        dec     rdx
> > > > > >
> > > > > > +        lea     r8,[64+rsi]
> > > > > >
> > > > > > +        paddd   xmm1,xmm4
> > > > > >
> > > > > > +        cmovne  rsi,r8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm0
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,0
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +DB      15,56,202,231
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,0
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +        pxor    xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +DB      15,56,201,247
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,0
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,252
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,0
> > > > > >
> > > > > > +DB      15,56,200,204
> > > > > >
> > > > > > +        pxor    xmm7,xmm5
> > > > > >
> > > > > > +DB      15,56,202,254
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,0
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +DB      15,56,202,231
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,1
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +        pxor    xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +DB      15,56,201,247
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,1
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,252
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,1
> > > > > >
> > > > > > +DB      15,56,200,204
> > > > > >
> > > > > > +        pxor    xmm7,xmm5
> > > > > >
> > > > > > +DB      15,56,202,254
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,1
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +DB      15,56,202,231
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,1
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +        pxor    xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +DB      15,56,201,247
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,2
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,252
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,2
> > > > > >
> > > > > > +DB      15,56,200,204
> > > > > >
> > > > > > +        pxor    xmm7,xmm5
> > > > > >
> > > > > > +DB      15,56,202,254
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,2
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +DB      15,56,202,231
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,2
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +        pxor    xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +DB      15,56,201,247
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,2
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,252
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,3
> > > > > >
> > > > > > +DB      15,56,200,204
> > > > > >
> > > > > > +        pxor    xmm7,xmm5
> > > > > >
> > > > > > +DB      15,56,202,254
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[rsi]
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,3
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[16+rsi]
> > > > > >
> > > > > > +DB      102,15,56,0,227
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,3
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[32+rsi]
> > > > > >
> > > > > > +DB      102,15,56,0,235
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,3
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[48+rsi]
> > > > > >
> > > > > > +DB      102,15,56,0,243
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,3
> > > > > >
> > > > > > +DB      65,15,56,200,201
> > > > > >
> > > > > > +DB      102,15,56,0,251
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm0,xmm8
> > > > > >
> > > > > > +        movdqa  xmm9,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,27
> > > > > >
> > > > > > +        pshufd  xmm1,xmm1,27
> > > > > >
> > > > > > +        movdqu  XMMWORD[rdi],xmm0
> > > > > >
> > > > > > +        movd    DWORD[16+rdi],xmm1
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-8-64))+rax]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-8-48))+rax]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-8-32))+rax]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-8-16))+rax]
> > > > > >
> > > > > > +        mov     rsp,rax
> > > > > >
> > > > > > +$L$epilogue_shaext:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_sha1_block_data_order_shaext:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +_ssse3_shortcut:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r11,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-160))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40-96)+r11],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40-80)+r11],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40-64)+r11],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40-48)+r11],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40-32)+r11],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40-16)+r11],xmm11
> > > > > >
> > > > > > +$L$prologue_ssse3:
> > > > > >
> > > > > > +        and     rsp,-64
> > > > > >
> > > > > > +        mov     r8,rdi
> > > > > >
> > > > > > +        mov     r9,rsi
> > > > > >
> > > > > > +        mov     r10,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        shl     r10,6
> > > > > >
> > > > > > +        add     r10,r9
> > > > > >
> > > > > > +        lea     r14,[((K_XX_XX+64))]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[16+r8]
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        and     esi,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[64+r14]
> > > > > >
> > > > > > +        movdqa  xmm9,XMMWORD[((-64))+r14]
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        add     r9,64
> > > > > >
> > > > > > +        paddd   xmm0,xmm9
> > > > > >
> > > > > > +DB      102,15,56,0,222
> > > > > >
> > > > > > +        paddd   xmm1,xmm9
> > > > > >
> > > > > > +        paddd   xmm2,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm0
> > > > > >
> > > > > > +        psubd   xmm0,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm1
> > > > > >
> > > > > > +        psubd   xmm1,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm2
> > > > > >
> > > > > > +        psubd   xmm2,xmm9
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_ssse3
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$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[rsp]
> > > > > >
> > > > > > +        punpcklqdq      xmm4,xmm1
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        psrldq  xmm8,4
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        pxor    xmm8,xmm2
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        add     edx,DWORD[4+rsp]
> > > > > >
> > > > > > +        pxor    xmm4,xmm8
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        and     esi,eax
> > > > > >
> > > > > > +        movdqa  xmm10,xmm4
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        movdqa  xmm8,xmm4
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        pslldq  xmm10,12
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        add     ecx,DWORD[8+rsp]
> > > > > >
> > > > > > +        psrld   xmm8,31
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        and     edi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        psrld   xmm10,30
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        por     xmm4,xmm8
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        add     ebx,DWORD[12+rsp]
> > > > > >
> > > > > > +        pslld   xmm9,2
> > > > > >
> > > > > > +        pxor    xmm4,xmm10
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        movdqa  xmm10,XMMWORD[((-64))+r14]
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        and     esi,edx
> > > > > >
> > > > > > +        pxor    xmm4,xmm9
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        pshufd  xmm5,xmm1,238
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        movdqa  xmm9,xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        add     eax,DWORD[16+rsp]
> > > > > >
> > > > > > +        punpcklqdq      xmm5,xmm2
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        psrldq  xmm9,4
> > > > > >
> > > > > > +        and     edi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm5,xmm1
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        pxor    xmm9,xmm3
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        add     ebp,DWORD[20+rsp]
> > > > > >
> > > > > > +        pxor    xmm5,xmm9
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm10
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        and     esi,ebx
> > > > > >
> > > > > > +        movdqa  xmm8,xmm5
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        movdqa  xmm9,xmm5
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        pslldq  xmm8,12
> > > > > >
> > > > > > +        paddd   xmm5,xmm5
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        add     edx,DWORD[24+rsp]
> > > > > >
> > > > > > +        psrld   xmm9,31
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +        and     edi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        psrld   xmm8,30
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        por     xmm5,xmm9
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        add     ecx,DWORD[28+rsp]
> > > > > >
> > > > > > +        pslld   xmm10,2
> > > > > >
> > > > > > +        pxor    xmm5,xmm8
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        movdqa  xmm8,XMMWORD[((-32))+r14]
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        and     esi,ebp
> > > > > >
> > > > > > +        pxor    xmm5,xmm10
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        pshufd  xmm6,xmm2,238
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        movdqa  xmm10,xmm5
> > > > > >
> > > > > > +        paddd   xmm8,xmm5
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        add     ebx,DWORD[32+rsp]
> > > > > >
> > > > > > +        punpcklqdq      xmm6,xmm3
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        psrldq  xmm10,4
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm6,xmm2
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        pxor    xmm10,xmm4
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        add     eax,DWORD[36+rsp]
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm8
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        and     esi,ecx
> > > > > >
> > > > > > +        movdqa  xmm9,xmm6
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        movdqa  xmm10,xmm6
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        pslldq  xmm9,12
> > > > > >
> > > > > > +        paddd   xmm6,xmm6
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        add     ebp,DWORD[40+rsp]
> > > > > >
> > > > > > +        psrld   xmm10,31
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        movdqa  xmm8,xmm9
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        psrld   xmm9,30
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        por     xmm6,xmm10
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        add     edx,DWORD[44+rsp]
> > > > > >
> > > > > > +        pslld   xmm8,2
> > > > > >
> > > > > > +        pxor    xmm6,xmm9
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        movdqa  xmm9,XMMWORD[((-32))+r14]
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        and     esi,eax
> > > > > >
> > > > > > +        pxor    xmm6,xmm8
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        pshufd  xmm7,xmm3,238
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        movdqa  xmm8,xmm6
> > > > > >
> > > > > > +        paddd   xmm9,xmm6
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        add     ecx,DWORD[48+rsp]
> > > > > >
> > > > > > +        punpcklqdq      xmm7,xmm4
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        psrldq  xmm8,4
> > > > > >
> > > > > > +        and     edi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm7,xmm3
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        pxor    xmm8,xmm5
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        add     ebx,DWORD[52+rsp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm8
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm9
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        and     esi,edx
> > > > > >
> > > > > > +        movdqa  xmm10,xmm7
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        movdqa  xmm8,xmm7
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        pslldq  xmm10,12
> > > > > >
> > > > > > +        paddd   xmm7,xmm7
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        add     eax,DWORD[56+rsp]
> > > > > >
> > > > > > +        psrld   xmm8,31
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        and     edi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        psrld   xmm10,30
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        por     xmm7,xmm8
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        add     ebp,DWORD[60+rsp]
> > > > > >
> > > > > > +        pslld   xmm9,2
> > > > > >
> > > > > > +        pxor    xmm7,xmm10
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        movdqa  xmm10,XMMWORD[((-32))+r14]
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        and     esi,ebx
> > > > > >
> > > > > > +        pxor    xmm7,xmm9
> > > > > >
> > > > > > +        pshufd  xmm9,xmm6,238
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        add     edx,DWORD[rsp]
> > > > > >
> > > > > > +        punpcklqdq      xmm9,xmm7
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        and     edi,eax
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        paddd   xmm10,xmm7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm0,xmm9
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        add     ecx,DWORD[4+rsp]
> > > > > >
> > > > > > +        movdqa  xmm9,xmm0
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm10
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        and     esi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        pslld   xmm0,2
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        psrld   xmm9,30
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        add     ebx,DWORD[8+rsp]
> > > > > >
> > > > > > +        por     xmm0,xmm9
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        pshufd  xmm10,xmm7,238
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[12+rsp]
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm1,xmm5
> > > > > >
> > > > > > +        add     ebp,DWORD[16+rsp]
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        punpcklqdq      xmm10,xmm0
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        paddd   xmm8,xmm0
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm1,xmm10
> > > > > >
> > > > > > +        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[rsp],xmm8
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[24+rsp]
> > > > > >
> > > > > > +        pslld   xmm1,2
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        psrld   xmm10,30
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        por     xmm1,xmm10
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[28+rsp]
> > > > > >
> > > > > > +        pshufd  xmm8,xmm0,238
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm2,xmm6
> > > > > >
> > > > > > +        add     eax,DWORD[32+rsp]
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        punpcklqdq      xmm8,xmm1
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        movdqa  xmm10,XMMWORD[r14]
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        paddd   xmm9,xmm1
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm2,xmm8
> > > > > >
> > > > > > +        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[16+rsp],xmm9
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[40+rsp]
> > > > > >
> > > > > > +        pslld   xmm2,2
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        psrld   xmm8,30
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        por     xmm2,xmm8
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[44+rsp]
> > > > > >
> > > > > > +        pshufd  xmm9,xmm1,238
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm3,xmm7
> > > > > >
> > > > > > +        add     ebx,DWORD[48+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        punpcklqdq      xmm9,xmm2
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm4
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        paddd   xmm10,xmm2
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm3,xmm9
> > > > > >
> > > > > > +        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[32+rsp],xmm10
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[56+rsp]
> > > > > >
> > > > > > +        pslld   xmm3,2
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        psrld   xmm9,30
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        por     xmm3,xmm9
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[60+rsp]
> > > > > >
> > > > > > +        pshufd  xmm10,xmm2,238
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        add     ecx,DWORD[rsp]
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        punpcklqdq      xmm10,xmm3
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        paddd   xmm8,xmm3
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm4,xmm10
> > > > > >
> > > > > > +        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[48+rsp],xmm8
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[8+rsp]
> > > > > >
> > > > > > +        pslld   xmm4,2
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        psrld   xmm10,30
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        por     xmm4,xmm10
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[12+rsp]
> > > > > >
> > > > > > +        pshufd  xmm8,xmm3,238
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm5,xmm1
> > > > > >
> > > > > > +        add     edx,DWORD[16+rsp]
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        punpcklqdq      xmm8,xmm4
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        pxor    xmm5,xmm6
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        movdqa  xmm10,xmm9
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        paddd   xmm9,xmm4
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm5,xmm8
> > > > > >
> > > > > > +        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[rsp],xmm9
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[24+rsp]
> > > > > >
> > > > > > +        pslld   xmm5,2
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        psrld   xmm8,30
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        por     xmm5,xmm8
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[28+rsp]
> > > > > >
> > > > > > +        pshufd  xmm9,xmm4,238
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm6,xmm2
> > > > > >
> > > > > > +        add     ebp,DWORD[32+rsp]
> > > > > >
> > > > > > +        and     esi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        punpcklqdq      xmm9,xmm5
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        paddd   xmm10,xmm5
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm6,xmm9
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        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[16+rsp],xmm10
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        pslld   xmm6,2
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        psrld   xmm9,30
> > > > > >
> > > > > > +        add     ecx,DWORD[40+rsp]
> > > > > >
> > > > > > +        and     esi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        por     xmm6,xmm9
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        pshufd  xmm10,xmm5,238
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[44+rsp]
> > > > > >
> > > > > > +        and     edi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm7,xmm3
> > > > > >
> > > > > > +        add     eax,DWORD[48+rsp]
> > > > > >
> > > > > > +        and     esi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        punpcklqdq      xmm10,xmm6
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        pxor    xmm7,xmm0
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        movdqa  xmm9,XMMWORD[32+r14]
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        paddd   xmm8,xmm6
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm7,xmm10
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        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[32+rsp],xmm8
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        pslld   xmm7,2
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        psrld   xmm10,30
> > > > > >
> > > > > > +        add     edx,DWORD[56+rsp]
> > > > > >
> > > > > > +        and     esi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        por     xmm7,xmm10
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        pshufd  xmm8,xmm6,238
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[60+rsp]
> > > > > >
> > > > > > +        and     edi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        add     ebx,DWORD[rsp]
> > > > > >
> > > > > > +        and     esi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        punpcklqdq      xmm8,xmm7
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        movdqa  xmm10,xmm9
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        paddd   xmm9,xmm7
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm0,xmm8
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        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[48+rsp],xmm9
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        pslld   xmm0,2
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        psrld   xmm8,30
> > > > > >
> > > > > > +        add     ebp,DWORD[8+rsp]
> > > > > >
> > > > > > +        and     esi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        por     xmm0,xmm8
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        pshufd  xmm9,xmm7,238
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[12+rsp]
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm1,xmm5
> > > > > >
> > > > > > +        add     ecx,DWORD[16+rsp]
> > > > > >
> > > > > > +        and     esi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        punpcklqdq      xmm9,xmm0
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        paddd   xmm10,xmm0
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm1,xmm9
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        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[rsp],xmm10
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        pslld   xmm1,2
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        psrld   xmm9,30
> > > > > >
> > > > > > +        add     eax,DWORD[24+rsp]
> > > > > >
> > > > > > +        and     esi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        por     xmm1,xmm9
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        pshufd  xmm10,xmm0,238
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[28+rsp]
> > > > > >
> > > > > > +        and     edi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm2,xmm6
> > > > > >
> > > > > > +        add     edx,DWORD[32+rsp]
> > > > > >
> > > > > > +        and     esi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        punpcklqdq      xmm10,xmm1
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        paddd   xmm8,xmm1
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        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[16+rsp],xmm8
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        pslld   xmm2,2
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        psrld   xmm10,30
> > > > > >
> > > > > > +        add     ebx,DWORD[40+rsp]
> > > > > >
> > > > > > +        and     esi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        por     xmm2,xmm10
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        pshufd  xmm8,xmm1,238
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[44+rsp]
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm3,xmm7
> > > > > >
> > > > > > +        add     ebp,DWORD[48+rsp]
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        punpcklqdq      xmm8,xmm2
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm4
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        movdqa  xmm10,xmm9
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        paddd   xmm9,xmm2
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm3,xmm8
> > > > > >
> > > > > > +        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[32+rsp],xmm9
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[56+rsp]
> > > > > >
> > > > > > +        pslld   xmm3,2
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        psrld   xmm8,30
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        por     xmm3,xmm8
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[60+rsp]
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[rsp]
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        paddd   xmm10,xmm3
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm10
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[4+rsp]
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[8+rsp]
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[12+rsp]
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        cmp     r9,r10
> > > > > >
> > > > > > +        je      NEAR $L$done_ssse3
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[64+r14]
> > > > > >
> > > > > > +        movdqa  xmm9,XMMWORD[((-64))+r14]
> > > > > >
> > > > > > +        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[16+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +DB      102,15,56,0,206
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        paddd   xmm0,xmm9
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[20+rsp]
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        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[24+rsp]
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[28+rsp]
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[32+rsp]
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +DB      102,15,56,0,214
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        paddd   xmm1,xmm9
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[36+rsp]
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        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[40+rsp]
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[44+rsp]
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[48+rsp]
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +DB      102,15,56,0,222
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        paddd   xmm2,xmm9
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[52+rsp]
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        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[56+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        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[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[8+r8],ecx
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        mov     DWORD[12+r8],edx
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     DWORD[16+r8],ebp
> > > > > >
> > > > > > +        and     esi,edi
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_ssse3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$done_ssse3:
> > > > > >
> > > > > > +        add     ebx,DWORD[16+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[20+rsp]
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[24+rsp]
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[28+rsp]
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[32+rsp]
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[36+rsp]
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[40+rsp]
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[44+rsp]
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[48+rsp]
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[52+rsp]
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[56+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        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[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))+r11]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-40-80))+r11]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-40-64))+r11]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-40-48))+r11]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-40-32))+r11]
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-40-16))+r11]
> > > > > >
> > > > > > +        mov     r14,QWORD[((-40))+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r13,QWORD[((-32))+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,QWORD[((-24))+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-16))+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbx,QWORD[((-8))+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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:
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$prologue]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$epilogue]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[64+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +shaext_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$prologue_shaext]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$epilogue_shaext]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((-8-64))+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,8
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +ssse3_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[208+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((-40-96))+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,12
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .pdata rdata align=4
> > > > > >
> > > > > > +ALIGN   4
> > > > > >
> > > > > > +        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_shaext wrt
> > > ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_sha1_block_data_order_shaext wrt
> > > ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_sha1_block_data_order_shaext 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:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      se_handler wrt ..imagebase
> > > > > >
> > > > > > +$L$SEH_info_sha1_block_data_order_shaext:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      shaext_handler wrt ..imagebase
> > > > > >
> > > > > > +$L$SEH_info_sha1_block_data_order_ssse3:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      ssse3_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
> > > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
> > mb-
> > > > > > x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..7cd5eae85c
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
> > > > x86_64.nasm
> > > > > > @@ -0,0 +1,3461 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/sha/asm/sha256-mb-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  sha256_multi_block
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +sha256_multi_block:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_sha256_multi_block:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
> > > > > >
> > > > > > +        bt      rcx,61
> > > > > >
> > > > > > +        jc      NEAR _shaext_shortcut
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-168))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > > > >
> > > > > > +        sub     rsp,288
> > > > > >
> > > > > > +        and     rsp,-256
> > > > > >
> > > > > > +        mov     QWORD[272+rsp],rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$body:
> > > > > >
> > > > > > +        lea     rbp,[((K256+128))]
> > > > > >
> > > > > > +        lea     rbx,[256+rsp]
> > > > > >
> > > > > > +        lea     rdi,[128+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$oop_grande:
> > > > > >
> > > > > > +        mov     DWORD[280+rsp],edx
> > > > > >
> > > > > > +        xor     edx,edx
> > > > > >
> > > > > > +        mov     r8,QWORD[rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[8+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[rbx],ecx
> > > > > >
> > > > > > +        cmovle  r8,rbp
> > > > > >
> > > > > > +        mov     r9,QWORD[16+rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[24+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[4+rbx],ecx
> > > > > >
> > > > > > +        cmovle  r9,rbp
> > > > > >
> > > > > > +        mov     r10,QWORD[32+rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[40+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[8+rbx],ecx
> > > > > >
> > > > > > +        cmovle  r10,rbp
> > > > > >
> > > > > > +        mov     r11,QWORD[48+rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[56+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[12+rbx],ecx
> > > > > >
> > > > > > +        cmovle  r11,rbp
> > > > > >
> > > > > > +        test    edx,edx
> > > > > >
> > > > > > +        jz      NEAR $L$done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[((0-128))+rdi]
> > > > > >
> > > > > > +        lea     rax,[128+rsp]
> > > > > >
> > > > > > +        movdqu  xmm9,XMMWORD[((32-128))+rdi]
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[((64-128))+rdi]
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[((96-128))+rdi]
> > > > > >
> > > > > > +        movdqu  xmm12,XMMWORD[((128-128))+rdi]
> > > > > >
> > > > > > +        movdqu  xmm13,XMMWORD[((160-128))+rdi]
> > > > > >
> > > > > > +        movdqu  xmm14,XMMWORD[((192-128))+rdi]
> > > > > >
> > > > > > +        movdqu  xmm15,XMMWORD[((224-128))+rdi]
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[$L$pbswap]
> > > > > >
> > > > > > +        jmp     NEAR $L$oop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$oop:
> > > > > >
> > > > > > +        movdqa  xmm4,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,xmm9
> > > > > >
> > > > > > +        movd    xmm5,DWORD[r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        movdqa  xmm2,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm14
> > > > > >
> > > > > > +        pand    xmm3,xmm13
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm8
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm8
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm9
> > > > > >
> > > > > > +        movdqa  xmm7,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm15,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm15,xmm4
> > > > > >
> > > > > > +        paddd   xmm11,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm15,xmm5
> > > > > >
> > > > > > +        paddd   xmm15,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[4+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[4+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[4+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[4+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-96))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm13
> > > > > >
> > > > > > +        pand    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm15
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm8
> > > > > >
> > > > > > +        movdqa  xmm7,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm14,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm14,xmm3
> > > > > >
> > > > > > +        paddd   xmm10,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm14,xmm5
> > > > > >
> > > > > > +        paddd   xmm14,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[8+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[8+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[8+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[8+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm12
> > > > > >
> > > > > > +        pand    xmm3,xmm11
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm14
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm15
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm13,xmm4
> > > > > >
> > > > > > +        paddd   xmm9,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm13,xmm5
> > > > > >
> > > > > > +        paddd   xmm13,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[12+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[12+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[12+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[12+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm9
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-32))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm11
> > > > > >
> > > > > > +        pand    xmm4,xmm10
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm13
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm13
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm12,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm12,xmm3
> > > > > >
> > > > > > +        paddd   xmm8,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm12,xmm5
> > > > > >
> > > > > > +        paddd   xmm12,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[16+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[16+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[16+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[16+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        movdqa  xmm2,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm10
> > > > > >
> > > > > > +        pand    xmm3,xmm9
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm12
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm12
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm11,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm11,xmm4
> > > > > >
> > > > > > +        paddd   xmm15,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm11,xmm5
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[20+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[20+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[20+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[20+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm15
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[32+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm9
> > > > > >
> > > > > > +        pand    xmm4,xmm8
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm10,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm10,xmm3
> > > > > >
> > > > > > +        paddd   xmm14,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm10,xmm5
> > > > > >
> > > > > > +        paddd   xmm10,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[24+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[24+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[24+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[24+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        movdqa  xmm2,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm8
> > > > > >
> > > > > > +        pand    xmm3,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm10
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm9,xmm4
> > > > > >
> > > > > > +        paddd   xmm13,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm9,xmm5
> > > > > >
> > > > > > +        paddd   xmm9,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[28+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[28+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[28+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[28+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm13
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[96+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm15
> > > > > >
> > > > > > +        pand    xmm4,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm9
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        paddd   xmm12,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm8,xmm5
> > > > > >
> > > > > > +        paddd   xmm8,xmm7
> > > > > >
> > > > > > +        lea     rbp,[256+rbp]
> > > > > >
> > > > > > +        movd    xmm5,DWORD[32+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[32+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[32+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[32+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        movdqa  xmm2,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm14
> > > > > >
> > > > > > +        pand    xmm3,xmm13
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm8
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm8
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm9
> > > > > >
> > > > > > +        movdqa  xmm7,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm15,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm15,xmm4
> > > > > >
> > > > > > +        paddd   xmm11,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm15,xmm5
> > > > > >
> > > > > > +        paddd   xmm15,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[36+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[36+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[36+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[36+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-96))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm13
> > > > > >
> > > > > > +        pand    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm15
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm8
> > > > > >
> > > > > > +        movdqa  xmm7,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm14,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm14,xmm3
> > > > > >
> > > > > > +        paddd   xmm10,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm14,xmm5
> > > > > >
> > > > > > +        paddd   xmm14,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[40+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[40+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[40+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[40+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm12
> > > > > >
> > > > > > +        pand    xmm3,xmm11
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm14
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm15
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm13,xmm4
> > > > > >
> > > > > > +        paddd   xmm9,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm13,xmm5
> > > > > >
> > > > > > +        paddd   xmm13,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[44+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[44+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[44+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[44+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm9
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-32))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm11
> > > > > >
> > > > > > +        pand    xmm4,xmm10
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm13
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm13
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm12,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm12,xmm3
> > > > > >
> > > > > > +        paddd   xmm8,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm12,xmm5
> > > > > >
> > > > > > +        paddd   xmm12,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[48+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[48+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[48+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[48+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        movdqa  xmm2,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm10
> > > > > >
> > > > > > +        pand    xmm3,xmm9
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm12
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm12
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm11,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm11,xmm4
> > > > > >
> > > > > > +        paddd   xmm15,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm11,xmm5
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[52+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[52+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[52+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[52+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm15
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[32+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm9
> > > > > >
> > > > > > +        pand    xmm4,xmm8
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm10,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm10,xmm3
> > > > > >
> > > > > > +        paddd   xmm14,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm10,xmm5
> > > > > >
> > > > > > +        paddd   xmm10,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[56+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[56+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[56+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[56+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        movdqa  xmm2,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm8
> > > > > >
> > > > > > +        pand    xmm3,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm10
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm9,xmm4
> > > > > >
> > > > > > +        paddd   xmm13,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm9,xmm5
> > > > > >
> > > > > > +        paddd   xmm9,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[60+r8]
> > > > > >
> > > > > > +        lea     r8,[64+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[60+r9]
> > > > > >
> > > > > > +        lea     r9,[64+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[60+r10]
> > > > > >
> > > > > > +        lea     r10,[64+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[60+r11]
> > > > > >
> > > > > > +        lea     r11,[64+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm13
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[96+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm13
> > > > > >
> > > > > > +        prefetcht0      [63+r8]
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm15
> > > > > >
> > > > > > +        pand    xmm4,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        prefetcht0      [63+r9]
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm9
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        prefetcht0      [63+r10]
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        prefetcht0      [63+r11]
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        paddd   xmm12,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm8,xmm5
> > > > > >
> > > > > > +        paddd   xmm8,xmm7
> > > > > >
> > > > > > +        lea     rbp,[256+rbp]
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +        mov     ecx,3
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_16_xx
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$oop_16_xx:
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm6
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm3,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psrld   xmm3,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm14
> > > > > >
> > > > > > +        pand    xmm3,xmm13
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm8
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm8
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm9
> > > > > >
> > > > > > +        movdqa  xmm7,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm15,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm15,xmm4
> > > > > >
> > > > > > +        paddd   xmm11,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm15,xmm5
> > > > > >
> > > > > > +        paddd   xmm15,xmm7
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +        movdqa  xmm1,xmm5
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm4,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrld   xmm4,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm6
> > > > > >
> > > > > > +        paddd   xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((-96))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm13
> > > > > >
> > > > > > +        pand    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm15
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm8
> > > > > >
> > > > > > +        movdqa  xmm7,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm14,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm14,xmm3
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm14,xmm7
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm6
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm3,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psrld   xmm3,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm12
> > > > > >
> > > > > > +        pand    xmm3,xmm11
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm14
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm15
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm13,xmm4
> > > > > >
> > > > > > +        paddd   xmm9,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm13,xmm5
> > > > > >
> > > > > > +        paddd   xmm13,xmm7
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +        movdqa  xmm1,xmm5
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm4,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrld   xmm4,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm6
> > > > > >
> > > > > > +        paddd   xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((-32))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm11
> > > > > >
> > > > > > +        pand    xmm4,xmm10
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm13
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm13
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm12,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm12,xmm3
> > > > > >
> > > > > > +        paddd   xmm8,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm12,xmm7
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm6
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm3,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psrld   xmm3,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm10
> > > > > >
> > > > > > +        pand    xmm3,xmm9
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm12
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm12
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm11,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm11,xmm4
> > > > > >
> > > > > > +        paddd   xmm15,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm11,xmm5
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +        movdqa  xmm1,xmm5
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm4,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrld   xmm4,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm6
> > > > > >
> > > > > > +        paddd   xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[32+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm9
> > > > > >
> > > > > > +        pand    xmm4,xmm8
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm10,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm10,xmm3
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        paddd   xmm10,xmm7
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm6
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm3,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psrld   xmm3,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm8
> > > > > >
> > > > > > +        pand    xmm3,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm10
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm9,xmm4
> > > > > >
> > > > > > +        paddd   xmm13,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm9,xmm5
> > > > > >
> > > > > > +        paddd   xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +        movdqa  xmm1,xmm5
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm4,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrld   xmm4,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm6
> > > > > >
> > > > > > +        paddd   xmm6,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[96+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm15
> > > > > >
> > > > > > +        pand    xmm4,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm9
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm8,xmm6
> > > > > >
> > > > > > +        paddd   xmm8,xmm7
> > > > > >
> > > > > > +        lea     rbp,[256+rbp]
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm6
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm3,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psrld   xmm3,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm14
> > > > > >
> > > > > > +        pand    xmm3,xmm13
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm8
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm8
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm9
> > > > > >
> > > > > > +        movdqa  xmm7,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm15,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm15,xmm4
> > > > > >
> > > > > > +        paddd   xmm11,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm15,xmm5
> > > > > >
> > > > > > +        paddd   xmm15,xmm7
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +        movdqa  xmm1,xmm5
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm4,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrld   xmm4,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm6
> > > > > >
> > > > > > +        paddd   xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((-96))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm13
> > > > > >
> > > > > > +        pand    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm15
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm8
> > > > > >
> > > > > > +        movdqa  xmm7,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm14,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm14,xmm3
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm14,xmm7
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm6
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm3,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psrld   xmm3,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm12
> > > > > >
> > > > > > +        pand    xmm3,xmm11
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm14
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm15
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm13,xmm4
> > > > > >
> > > > > > +        paddd   xmm9,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm13,xmm5
> > > > > >
> > > > > > +        paddd   xmm13,xmm7
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +        movdqa  xmm1,xmm5
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm4,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrld   xmm4,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm6
> > > > > >
> > > > > > +        paddd   xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((-32))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm11
> > > > > >
> > > > > > +        pand    xmm4,xmm10
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm13
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm13
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm12,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm12,xmm3
> > > > > >
> > > > > > +        paddd   xmm8,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm12,xmm7
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm6
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm3,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psrld   xmm3,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm10
> > > > > >
> > > > > > +        pand    xmm3,xmm9
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm12
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm12
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm11,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm11,xmm4
> > > > > >
> > > > > > +        paddd   xmm15,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm11,xmm5
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +        movdqa  xmm1,xmm5
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm4,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrld   xmm4,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm6
> > > > > >
> > > > > > +        paddd   xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[32+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm9
> > > > > >
> > > > > > +        pand    xmm4,xmm8
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm10,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm10,xmm3
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        paddd   xmm10,xmm7
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm6
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm3,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psrld   xmm3,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm8
> > > > > >
> > > > > > +        pand    xmm3,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm10
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm9,xmm4
> > > > > >
> > > > > > +        paddd   xmm13,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm9,xmm5
> > > > > >
> > > > > > +        paddd   xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +        movdqa  xmm1,xmm5
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm4,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrld   xmm4,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm6
> > > > > >
> > > > > > +        paddd   xmm6,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[96+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm15
> > > > > >
> > > > > > +        pand    xmm4,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm9
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm8,xmm6
> > > > > >
> > > > > > +        paddd   xmm8,xmm7
> > > > > >
> > > > > > +        lea     rbp,[256+rbp]
> > > > > >
> > > > > > +        dec     ecx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_16_xx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,1
> > > > > >
> > > > > > +        lea     rbp,[((K256+128))]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,XMMWORD[rbx]
> > > > > >
> > > > > > +        cmp     ecx,DWORD[rbx]
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        cmovge  r8,rbp
> > > > > >
> > > > > > +        cmp     ecx,DWORD[4+rbx]
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        cmovge  r9,rbp
> > > > > >
> > > > > > +        cmp     ecx,DWORD[8+rbx]
> > > > > >
> > > > > > +        pcmpgtd xmm6,xmm0
> > > > > >
> > > > > > +        cmovge  r10,rbp
> > > > > >
> > > > > > +        cmp     ecx,DWORD[12+rbx]
> > > > > >
> > > > > > +        paddd   xmm7,xmm6
> > > > > >
> > > > > > +        cmovge  r11,rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[((0-128))+rdi]
> > > > > >
> > > > > > +        pand    xmm8,xmm6
> > > > > >
> > > > > > +        movdqu  xmm1,XMMWORD[((32-128))+rdi]
> > > > > >
> > > > > > +        pand    xmm9,xmm6
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[((64-128))+rdi]
> > > > > >
> > > > > > +        pand    xmm10,xmm6
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[((96-128))+rdi]
> > > > > >
> > > > > > +        pand    xmm11,xmm6
> > > > > >
> > > > > > +        paddd   xmm8,xmm0
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[((128-128))+rdi]
> > > > > >
> > > > > > +        pand    xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm9,xmm1
> > > > > >
> > > > > > +        movdqu  xmm1,XMMWORD[((160-128))+rdi]
> > > > > >
> > > > > > +        pand    xmm13,xmm6
> > > > > >
> > > > > > +        paddd   xmm10,xmm2
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[((192-128))+rdi]
> > > > > >
> > > > > > +        pand    xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm11,xmm5
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[((224-128))+rdi]
> > > > > >
> > > > > > +        pand    xmm15,xmm6
> > > > > >
> > > > > > +        paddd   xmm12,xmm0
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        movdqu  XMMWORD[(0-128)+rdi],xmm8
> > > > > >
> > > > > > +        paddd   xmm14,xmm2
> > > > > >
> > > > > > +        movdqu  XMMWORD[(32-128)+rdi],xmm9
> > > > > >
> > > > > > +        paddd   xmm15,xmm5
> > > > > >
> > > > > > +        movdqu  XMMWORD[(64-128)+rdi],xmm10
> > > > > >
> > > > > > +        movdqu  XMMWORD[(96-128)+rdi],xmm11
> > > > > >
> > > > > > +        movdqu  XMMWORD[(128-128)+rdi],xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[(160-128)+rdi],xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[(192-128)+rdi],xmm14
> > > > > >
> > > > > > +        movdqu  XMMWORD[(224-128)+rdi],xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[rbx],xmm7
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[$L$pbswap]
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edx,DWORD[280+rsp]
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +        lea     rsi,[64+rsi]
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_grande
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$done:
> > > > > >
> > > > > > +        mov     rax,QWORD[272+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$epilogue:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_sha256_multi_block:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +sha256_multi_block_shaext:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_sha256_multi_block_shaext:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +_shaext_shortcut:
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-168))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > > > >
> > > > > > +        sub     rsp,288
> > > > > >
> > > > > > +        shl     edx,1
> > > > > >
> > > > > > +        and     rsp,-256
> > > > > >
> > > > > > +        lea     rdi,[128+rdi]
> > > > > >
> > > > > > +        mov     QWORD[272+rsp],rax
> > > > > >
> > > > > > +$L$body_shaext:
> > > > > >
> > > > > > +        lea     rbx,[256+rsp]
> > > > > >
> > > > > > +        lea     rbp,[((K256_shaext+128))]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$oop_grande_shaext:
> > > > > >
> > > > > > +        mov     DWORD[280+rsp],edx
> > > > > >
> > > > > > +        xor     edx,edx
> > > > > >
> > > > > > +        mov     r8,QWORD[rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[8+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[rbx],ecx
> > > > > >
> > > > > > +        cmovle  r8,rsp
> > > > > >
> > > > > > +        mov     r9,QWORD[16+rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[24+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[4+rbx],ecx
> > > > > >
> > > > > > +        cmovle  r9,rsp
> > > > > >
> > > > > > +        test    edx,edx
> > > > > >
> > > > > > +        jz      NEAR $L$done_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movq    xmm12,QWORD[((0-128))+rdi]
> > > > > >
> > > > > > +        movq    xmm4,QWORD[((32-128))+rdi]
> > > > > >
> > > > > > +        movq    xmm13,QWORD[((64-128))+rdi]
> > > > > >
> > > > > > +        movq    xmm5,QWORD[((96-128))+rdi]
> > > > > >
> > > > > > +        movq    xmm8,QWORD[((128-128))+rdi]
> > > > > >
> > > > > > +        movq    xmm9,QWORD[((160-128))+rdi]
> > > > > >
> > > > > > +        movq    xmm10,QWORD[((192-128))+rdi]
> > > > > >
> > > > > > +        movq    xmm11,QWORD[((224-128))+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        punpckldq       xmm12,xmm4
> > > > > >
> > > > > > +        punpckldq       xmm13,xmm5
> > > > > >
> > > > > > +        punpckldq       xmm8,xmm9
> > > > > >
> > > > > > +        punpckldq       xmm10,xmm11
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm14,xmm12
> > > > > >
> > > > > > +        movdqa  xmm15,xmm13
> > > > > >
> > > > > > +        punpcklqdq      xmm12,xmm8
> > > > > >
> > > > > > +        punpcklqdq      xmm13,xmm10
> > > > > >
> > > > > > +        punpckhqdq      xmm14,xmm8
> > > > > >
> > > > > > +        punpckhqdq      xmm15,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm12,xmm12,27
> > > > > >
> > > > > > +        pshufd  xmm13,xmm13,27
> > > > > >
> > > > > > +        pshufd  xmm14,xmm14,27
> > > > > >
> > > > > > +        pshufd  xmm15,xmm15,27
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$oop_shaext:
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[r8]
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[r9]
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[16+r8]
> > > > > >
> > > > > > +        movdqu  xmm9,XMMWORD[16+r9]
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[32+r8]
> > > > > >
> > > > > > +DB      102,15,56,0,227
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[32+r9]
> > > > > >
> > > > > > +DB      102,68,15,56,0,195
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[48+r8]
> > > > > >
> > > > > > +        lea     r8,[64+r8]
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[48+r9]
> > > > > >
> > > > > > +        lea     r9,[64+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((0-128))+rbp]
> > > > > >
> > > > > > +DB      102,15,56,0,235
> > > > > >
> > > > > > +        paddd   xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((0-128))+rbp]
> > > > > >
> > > > > > +DB      102,68,15,56,0,203
> > > > > >
> > > > > > +        paddd   xmm2,xmm8
> > > > > >
> > > > > > +        movdqa  XMMWORD[80+rsp],xmm13
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        pxor    xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  XMMWORD[112+rsp],xmm15
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqa  XMMWORD[64+rsp],xmm12
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        pxor    xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  XMMWORD[96+rsp],xmm14
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((16-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm5
> > > > > >
> > > > > > +DB      102,15,56,0,243
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((16-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm2,xmm9
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        prefetcht0      [127+r8]
> > > > > >
> > > > > > +DB      102,15,56,0,251
> > > > > >
> > > > > > +DB      102,68,15,56,0,211
> > > > > >
> > > > > > +        prefetcht0      [127+r9]
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +DB      102,68,15,56,0,219
> > > > > >
> > > > > > +DB      15,56,204,229
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((32-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm6
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((32-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm2,xmm10
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +DB      69,15,56,204,193
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm7
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +DB      102,15,58,15,222,4
> > > > > >
> > > > > > +        paddd   xmm4,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm11
> > > > > >
> > > > > > +DB      102,65,15,58,15,218,4
> > > > > >
> > > > > > +DB      15,56,204,238
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((48-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm7
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,202
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((48-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm8,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm11
> > > > > >
> > > > > > +DB      15,56,205,231
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm4
> > > > > >
> > > > > > +DB      102,15,58,15,223,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,195
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm5,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm8
> > > > > >
> > > > > > +DB      102,65,15,58,15,219,4
> > > > > >
> > > > > > +DB      15,56,204,247
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((64-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm4
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,211
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((64-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm9,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm8
> > > > > >
> > > > > > +DB      15,56,205,236
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm5
> > > > > >
> > > > > > +DB      102,15,58,15,220,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,200
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm6,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm9
> > > > > >
> > > > > > +DB      102,65,15,58,15,216,4
> > > > > >
> > > > > > +DB      15,56,204,252
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((80-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm5
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,216
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((80-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm10,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm9
> > > > > >
> > > > > > +DB      15,56,205,245
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm6
> > > > > >
> > > > > > +DB      102,15,58,15,221,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm7,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +DB      102,65,15,58,15,217,4
> > > > > >
> > > > > > +DB      15,56,204,229
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((96-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm6
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,193
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((96-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm10
> > > > > >
> > > > > > +DB      15,56,205,254
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm7
> > > > > >
> > > > > > +DB      102,15,58,15,222,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,218
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm4,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm11
> > > > > >
> > > > > > +DB      102,65,15,58,15,218,4
> > > > > >
> > > > > > +DB      15,56,204,238
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((112-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm7
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,202
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((112-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm8,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm11
> > > > > >
> > > > > > +DB      15,56,205,231
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm4
> > > > > >
> > > > > > +DB      102,15,58,15,223,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,195
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm5,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm8
> > > > > >
> > > > > > +DB      102,65,15,58,15,219,4
> > > > > >
> > > > > > +DB      15,56,204,247
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((128-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm4
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,211
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((128-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm9,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm8
> > > > > >
> > > > > > +DB      15,56,205,236
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm5
> > > > > >
> > > > > > +DB      102,15,58,15,220,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,200
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm6,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm9
> > > > > >
> > > > > > +DB      102,65,15,58,15,216,4
> > > > > >
> > > > > > +DB      15,56,204,252
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((144-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm5
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,216
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((144-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm10,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm9
> > > > > >
> > > > > > +DB      15,56,205,245
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm6
> > > > > >
> > > > > > +DB      102,15,58,15,221,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm7,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +DB      102,65,15,58,15,217,4
> > > > > >
> > > > > > +DB      15,56,204,229
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((160-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm6
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,193
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((160-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm10
> > > > > >
> > > > > > +DB      15,56,205,254
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm7
> > > > > >
> > > > > > +DB      102,15,58,15,222,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,218
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm4,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm11
> > > > > >
> > > > > > +DB      102,65,15,58,15,218,4
> > > > > >
> > > > > > +DB      15,56,204,238
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((176-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm7
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,202
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((176-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm8,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm11
> > > > > >
> > > > > > +DB      15,56,205,231
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm4
> > > > > >
> > > > > > +DB      102,15,58,15,223,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,195
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm5,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm8
> > > > > >
> > > > > > +DB      102,65,15,58,15,219,4
> > > > > >
> > > > > > +DB      15,56,204,247
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((192-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm4
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,211
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((192-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm9,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm8
> > > > > >
> > > > > > +DB      15,56,205,236
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm5
> > > > > >
> > > > > > +DB      102,15,58,15,220,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,200
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm6,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm9
> > > > > >
> > > > > > +DB      102,65,15,58,15,216,4
> > > > > >
> > > > > > +DB      15,56,204,252
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((208-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm5
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,216
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((208-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm10,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm9
> > > > > >
> > > > > > +DB      15,56,205,245
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm6
> > > > > >
> > > > > > +DB      102,15,58,15,221,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm7,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +DB      102,65,15,58,15,217,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((224-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm6
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((224-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm10
> > > > > >
> > > > > > +DB      15,56,205,254
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        mov     ecx,1
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,218
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((240-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm7
> > > > > >
> > > > > > +        movq    xmm7,QWORD[rbx]
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((240-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm2,xmm11
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        cmp     ecx,DWORD[rbx]
> > > > > >
> > > > > > +        cmovge  r8,rsp
> > > > > >
> > > > > > +        cmp     ecx,DWORD[4+rbx]
> > > > > >
> > > > > > +        cmovge  r9,rsp
> > > > > >
> > > > > > +        pshufd  xmm9,xmm7,0x00
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        pshufd  xmm10,xmm7,0x55
> > > > > >
> > > > > > +        movdqa  xmm11,xmm7
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        pcmpgtd xmm9,xmm6
> > > > > >
> > > > > > +        pcmpgtd xmm10,xmm6
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        pcmpgtd xmm11,xmm6
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pand    xmm13,xmm9
> > > > > >
> > > > > > +        pand    xmm15,xmm10
> > > > > >
> > > > > > +        pand    xmm12,xmm9
> > > > > >
> > > > > > +        pand    xmm14,xmm10
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm13,XMMWORD[80+rsp]
> > > > > >
> > > > > > +        paddd   xmm15,XMMWORD[112+rsp]
> > > > > >
> > > > > > +        paddd   xmm12,XMMWORD[64+rsp]
> > > > > >
> > > > > > +        paddd   xmm14,XMMWORD[96+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movq    QWORD[rbx],xmm11
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edx,DWORD[280+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm12,xmm12,27
> > > > > >
> > > > > > +        pshufd  xmm13,xmm13,27
> > > > > >
> > > > > > +        pshufd  xmm14,xmm14,27
> > > > > >
> > > > > > +        pshufd  xmm15,xmm15,27
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm5,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        punpckldq       xmm12,xmm14
> > > > > >
> > > > > > +        punpckhdq       xmm5,xmm14
> > > > > >
> > > > > > +        punpckldq       xmm13,xmm15
> > > > > >
> > > > > > +        punpckhdq       xmm6,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movq    QWORD[(0-128)+rdi],xmm12
> > > > > >
> > > > > > +        psrldq  xmm12,8
> > > > > >
> > > > > > +        movq    QWORD[(128-128)+rdi],xmm5
> > > > > >
> > > > > > +        psrldq  xmm5,8
> > > > > >
> > > > > > +        movq    QWORD[(32-128)+rdi],xmm12
> > > > > >
> > > > > > +        movq    QWORD[(160-128)+rdi],xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movq    QWORD[(64-128)+rdi],xmm13
> > > > > >
> > > > > > +        psrldq  xmm13,8
> > > > > >
> > > > > > +        movq    QWORD[(192-128)+rdi],xmm6
> > > > > >
> > > > > > +        psrldq  xmm6,8
> > > > > >
> > > > > > +        movq    QWORD[(96-128)+rdi],xmm13
> > > > > >
> > > > > > +        movq    QWORD[(224-128)+rdi],xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rdi,[8+rdi]
> > > > > >
> > > > > > +        lea     rsi,[32+rsi]
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_grande_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$done_shaext:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$epilogue_shaext:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_sha256_multi_block_shaext:
> > > > > >
> > > > > > +ALIGN   256
> > > > > >
> > > > > > +K256:
> > > > > >
> > > > > > +        DD      1116352408,1116352408,1116352408,1116352408
> > > > > >
> > > > > > +        DD      1116352408,1116352408,1116352408,1116352408
> > > > > >
> > > > > > +        DD      1899447441,1899447441,1899447441,1899447441
> > > > > >
> > > > > > +        DD      1899447441,1899447441,1899447441,1899447441
> > > > > >
> > > > > > +        DD      3049323471,3049323471,3049323471,3049323471
> > > > > >
> > > > > > +        DD      3049323471,3049323471,3049323471,3049323471
> > > > > >
> > > > > > +        DD      3921009573,3921009573,3921009573,3921009573
> > > > > >
> > > > > > +        DD      3921009573,3921009573,3921009573,3921009573
> > > > > >
> > > > > > +        DD      961987163,961987163,961987163,961987163
> > > > > >
> > > > > > +        DD      961987163,961987163,961987163,961987163
> > > > > >
> > > > > > +        DD      1508970993,1508970993,1508970993,1508970993
> > > > > >
> > > > > > +        DD      1508970993,1508970993,1508970993,1508970993
> > > > > >
> > > > > > +        DD      2453635748,2453635748,2453635748,2453635748
> > > > > >
> > > > > > +        DD      2453635748,2453635748,2453635748,2453635748
> > > > > >
> > > > > > +        DD      2870763221,2870763221,2870763221,2870763221
> > > > > >
> > > > > > +        DD      2870763221,2870763221,2870763221,2870763221
> > > > > >
> > > > > > +        DD      3624381080,3624381080,3624381080,3624381080
> > > > > >
> > > > > > +        DD      3624381080,3624381080,3624381080,3624381080
> > > > > >
> > > > > > +        DD      310598401,310598401,310598401,310598401
> > > > > >
> > > > > > +        DD      310598401,310598401,310598401,310598401
> > > > > >
> > > > > > +        DD      607225278,607225278,607225278,607225278
> > > > > >
> > > > > > +        DD      607225278,607225278,607225278,607225278
> > > > > >
> > > > > > +        DD      1426881987,1426881987,1426881987,1426881987
> > > > > >
> > > > > > +        DD      1426881987,1426881987,1426881987,1426881987
> > > > > >
> > > > > > +        DD      1925078388,1925078388,1925078388,1925078388
> > > > > >
> > > > > > +        DD      1925078388,1925078388,1925078388,1925078388
> > > > > >
> > > > > > +        DD      2162078206,2162078206,2162078206,2162078206
> > > > > >
> > > > > > +        DD      2162078206,2162078206,2162078206,2162078206
> > > > > >
> > > > > > +        DD      2614888103,2614888103,2614888103,2614888103
> > > > > >
> > > > > > +        DD      2614888103,2614888103,2614888103,2614888103
> > > > > >
> > > > > > +        DD      3248222580,3248222580,3248222580,3248222580
> > > > > >
> > > > > > +        DD      3248222580,3248222580,3248222580,3248222580
> > > > > >
> > > > > > +        DD      3835390401,3835390401,3835390401,3835390401
> > > > > >
> > > > > > +        DD      3835390401,3835390401,3835390401,3835390401
> > > > > >
> > > > > > +        DD      4022224774,4022224774,4022224774,4022224774
> > > > > >
> > > > > > +        DD      4022224774,4022224774,4022224774,4022224774
> > > > > >
> > > > > > +        DD      264347078,264347078,264347078,264347078
> > > > > >
> > > > > > +        DD      264347078,264347078,264347078,264347078
> > > > > >
> > > > > > +        DD      604807628,604807628,604807628,604807628
> > > > > >
> > > > > > +        DD      604807628,604807628,604807628,604807628
> > > > > >
> > > > > > +        DD      770255983,770255983,770255983,770255983
> > > > > >
> > > > > > +        DD      770255983,770255983,770255983,770255983
> > > > > >
> > > > > > +        DD      1249150122,1249150122,1249150122,1249150122
> > > > > >
> > > > > > +        DD      1249150122,1249150122,1249150122,1249150122
> > > > > >
> > > > > > +        DD      1555081692,1555081692,1555081692,1555081692
> > > > > >
> > > > > > +        DD      1555081692,1555081692,1555081692,1555081692
> > > > > >
> > > > > > +        DD      1996064986,1996064986,1996064986,1996064986
> > > > > >
> > > > > > +        DD      1996064986,1996064986,1996064986,1996064986
> > > > > >
> > > > > > +        DD      2554220882,2554220882,2554220882,2554220882
> > > > > >
> > > > > > +        DD      2554220882,2554220882,2554220882,2554220882
> > > > > >
> > > > > > +        DD      2821834349,2821834349,2821834349,2821834349
> > > > > >
> > > > > > +        DD      2821834349,2821834349,2821834349,2821834349
> > > > > >
> > > > > > +        DD      2952996808,2952996808,2952996808,2952996808
> > > > > >
> > > > > > +        DD      2952996808,2952996808,2952996808,2952996808
> > > > > >
> > > > > > +        DD      3210313671,3210313671,3210313671,3210313671
> > > > > >
> > > > > > +        DD      3210313671,3210313671,3210313671,3210313671
> > > > > >
> > > > > > +        DD      3336571891,3336571891,3336571891,3336571891
> > > > > >
> > > > > > +        DD      3336571891,3336571891,3336571891,3336571891
> > > > > >
> > > > > > +        DD      3584528711,3584528711,3584528711,3584528711
> > > > > >
> > > > > > +        DD      3584528711,3584528711,3584528711,3584528711
> > > > > >
> > > > > > +        DD      113926993,113926993,113926993,113926993
> > > > > >
> > > > > > +        DD      113926993,113926993,113926993,113926993
> > > > > >
> > > > > > +        DD      338241895,338241895,338241895,338241895
> > > > > >
> > > > > > +        DD      338241895,338241895,338241895,338241895
> > > > > >
> > > > > > +        DD      666307205,666307205,666307205,666307205
> > > > > >
> > > > > > +        DD      666307205,666307205,666307205,666307205
> > > > > >
> > > > > > +        DD      773529912,773529912,773529912,773529912
> > > > > >
> > > > > > +        DD      773529912,773529912,773529912,773529912
> > > > > >
> > > > > > +        DD      1294757372,1294757372,1294757372,1294757372
> > > > > >
> > > > > > +        DD      1294757372,1294757372,1294757372,1294757372
> > > > > >
> > > > > > +        DD      1396182291,1396182291,1396182291,1396182291
> > > > > >
> > > > > > +        DD      1396182291,1396182291,1396182291,1396182291
> > > > > >
> > > > > > +        DD      1695183700,1695183700,1695183700,1695183700
> > > > > >
> > > > > > +        DD      1695183700,1695183700,1695183700,1695183700
> > > > > >
> > > > > > +        DD      1986661051,1986661051,1986661051,1986661051
> > > > > >
> > > > > > +        DD      1986661051,1986661051,1986661051,1986661051
> > > > > >
> > > > > > +        DD      2177026350,2177026350,2177026350,2177026350
> > > > > >
> > > > > > +        DD      2177026350,2177026350,2177026350,2177026350
> > > > > >
> > > > > > +        DD      2456956037,2456956037,2456956037,2456956037
> > > > > >
> > > > > > +        DD      2456956037,2456956037,2456956037,2456956037
> > > > > >
> > > > > > +        DD      2730485921,2730485921,2730485921,2730485921
> > > > > >
> > > > > > +        DD      2730485921,2730485921,2730485921,2730485921
> > > > > >
> > > > > > +        DD      2820302411,2820302411,2820302411,2820302411
> > > > > >
> > > > > > +        DD      2820302411,2820302411,2820302411,2820302411
> > > > > >
> > > > > > +        DD      3259730800,3259730800,3259730800,3259730800
> > > > > >
> > > > > > +        DD      3259730800,3259730800,3259730800,3259730800
> > > > > >
> > > > > > +        DD      3345764771,3345764771,3345764771,3345764771
> > > > > >
> > > > > > +        DD      3345764771,3345764771,3345764771,3345764771
> > > > > >
> > > > > > +        DD      3516065817,3516065817,3516065817,3516065817
> > > > > >
> > > > > > +        DD      3516065817,3516065817,3516065817,3516065817
> > > > > >
> > > > > > +        DD      3600352804,3600352804,3600352804,3600352804
> > > > > >
> > > > > > +        DD      3600352804,3600352804,3600352804,3600352804
> > > > > >
> > > > > > +        DD      4094571909,4094571909,4094571909,4094571909
> > > > > >
> > > > > > +        DD      4094571909,4094571909,4094571909,4094571909
> > > > > >
> > > > > > +        DD      275423344,275423344,275423344,275423344
> > > > > >
> > > > > > +        DD      275423344,275423344,275423344,275423344
> > > > > >
> > > > > > +        DD      430227734,430227734,430227734,430227734
> > > > > >
> > > > > > +        DD      430227734,430227734,430227734,430227734
> > > > > >
> > > > > > +        DD      506948616,506948616,506948616,506948616
> > > > > >
> > > > > > +        DD      506948616,506948616,506948616,506948616
> > > > > >
> > > > > > +        DD      659060556,659060556,659060556,659060556
> > > > > >
> > > > > > +        DD      659060556,659060556,659060556,659060556
> > > > > >
> > > > > > +        DD      883997877,883997877,883997877,883997877
> > > > > >
> > > > > > +        DD      883997877,883997877,883997877,883997877
> > > > > >
> > > > > > +        DD      958139571,958139571,958139571,958139571
> > > > > >
> > > > > > +        DD      958139571,958139571,958139571,958139571
> > > > > >
> > > > > > +        DD      1322822218,1322822218,1322822218,1322822218
> > > > > >
> > > > > > +        DD      1322822218,1322822218,1322822218,1322822218
> > > > > >
> > > > > > +        DD      1537002063,1537002063,1537002063,1537002063
> > > > > >
> > > > > > +        DD      1537002063,1537002063,1537002063,1537002063
> > > > > >
> > > > > > +        DD      1747873779,1747873779,1747873779,1747873779
> > > > > >
> > > > > > +        DD      1747873779,1747873779,1747873779,1747873779
> > > > > >
> > > > > > +        DD      1955562222,1955562222,1955562222,1955562222
> > > > > >
> > > > > > +        DD      1955562222,1955562222,1955562222,1955562222
> > > > > >
> > > > > > +        DD      2024104815,2024104815,2024104815,2024104815
> > > > > >
> > > > > > +        DD      2024104815,2024104815,2024104815,2024104815
> > > > > >
> > > > > > +        DD      2227730452,2227730452,2227730452,2227730452
> > > > > >
> > > > > > +        DD      2227730452,2227730452,2227730452,2227730452
> > > > > >
> > > > > > +        DD      2361852424,2361852424,2361852424,2361852424
> > > > > >
> > > > > > +        DD      2361852424,2361852424,2361852424,2361852424
> > > > > >
> > > > > > +        DD      2428436474,2428436474,2428436474,2428436474
> > > > > >
> > > > > > +        DD      2428436474,2428436474,2428436474,2428436474
> > > > > >
> > > > > > +        DD      2756734187,2756734187,2756734187,2756734187
> > > > > >
> > > > > > +        DD      2756734187,2756734187,2756734187,2756734187
> > > > > >
> > > > > > +        DD      3204031479,3204031479,3204031479,3204031479
> > > > > >
> > > > > > +        DD      3204031479,3204031479,3204031479,3204031479
> > > > > >
> > > > > > +        DD      3329325298,3329325298,3329325298,3329325298
> > > > > >
> > > > > > +        DD      3329325298,3329325298,3329325298,3329325298
> > > > > >
> > > > > > +$L$pbswap:
> > > > > >
> > > > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > > >
> > > > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > > >
> > > > > > +K256_shaext:
> > > > > >
> > > > > > +        DD      0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
> > > > > >
> > > > > > +        DD      0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
> > > > > >
> > > > > > +        DD      0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
> > > > > >
> > > > > > +        DD      0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
> > > > > >
> > > > > > +        DD      0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
> > > > > >
> > > > > > +        DD      0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
> > > > > >
> > > > > > +        DD      0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
> > > > > >
> > > > > > +        DD      0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
> > > > > >
> > > > > > +        DD      0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
> > > > > >
> > > > > > +        DD      0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
> > > > > >
> > > > > > +        DD      0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
> > > > > >
> > > > > > +        DD      0xd192e819,0xd6990624,0xf40e3585,0x106aa070
> > > > > >
> > > > > > +        DD      0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
> > > > > >
> > > > > > +        DD      0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
> > > > > >
> > > > > > +        DD      0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
> > > > > >
> > > > > > +        DD      0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
> > > > > >
> > > > > > +DB      83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111
> > > > > >
> > > > > > +DB      99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114
> > > > > >
> > > > > > +DB      32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71
> > > > > >
> > > > > > +DB      65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112
> > > > > >
> > > > > > +DB      101,110,115,115,108,46,111,114,103,62,0
> > > > > >
> > > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[272+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > > >
> > > > > > +        mov     QWORD[144+r8],rbx
> > > > > >
> > > > > > +        mov     QWORD[160+r8],rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((-24-160))+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,20
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .pdata rdata align=4
> > > > > >
> > > > > > +ALIGN   4
> > > > > >
> > > > > > +        DD      $L$SEH_begin_sha256_multi_block wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_sha256_multi_block wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_sha256_multi_block wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_begin_sha256_multi_block_shaext wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_sha256_multi_block_shaext wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_sha256_multi_block_shaext wrt ..imagebase
> > > > > >
> > > > > > +section .xdata rdata align=8
> > > > > >
> > > > > > +ALIGN   8
> > > > > >
> > > > > > +$L$SEH_info_sha256_multi_block:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
> > > > > >
> > > > > > +$L$SEH_info_sha256_multi_block_shaext:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
> > > > x86_64.nasm
> > > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..70e49862a3
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
> > x86_64.nasm
> > > > > > @@ -0,0 +1,3313 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +global  sha256_block_data_order
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r11,[OPENSSL_ia32cap_P]
> > > > > >
> > > > > > +        mov     r9d,DWORD[r11]
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        mov     r11d,DWORD[8+r11]
> > > > > >
> > > > > > +        test    r11d,536870912
> > > > > >
> > > > > > +        jnz     NEAR _shaext_shortcut
> > > > > >
> > > > > > +        test    r10d,512
> > > > > >
> > > > > > +        jnz     NEAR $L$ssse3_shortcut
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        shl     rdx,4
> > > > > >
> > > > > > +        sub     rsp,16*4+4*8
> > > > > >
> > > > > > +        lea     rdx,[rdx*4+rsi]
> > > > > >
> > > > > > +        and     rsp,-64
> > > > > >
> > > > > > +        mov     QWORD[((64+0))+rsp],rdi
> > > > > >
> > > > > > +        mov     QWORD[((64+8))+rsp],rsi
> > > > > >
> > > > > > +        mov     QWORD[((64+16))+rsp],rdx
> > > > > >
> > > > > > +        mov     QWORD[88+rsp],rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$prologue:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        lea     rbp,[K256]
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     r12d,DWORD[rsi]
> > > > > >
> > > > > > +        mov     r13d,r8d
> > > > > >
> > > > > > +        mov     r14d,eax
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        and     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r11d
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,eax
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,ebx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r11d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r11d,edi
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     r11d,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[4+rsi]
> > > > > >
> > > > > > +        mov     r13d,edx
> > > > > >
> > > > > > +        mov     r14d,r11d
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[4+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r10d
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,r11d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r10d,r15d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     r10d,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[8+rsi]
> > > > > >
> > > > > > +        mov     r13d,ecx
> > > > > >
> > > > > > +        mov     r14d,r10d
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[8+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        and     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r9d
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,r10d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,r11d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r9d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r9d,edi
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     r9d,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[12+rsi]
> > > > > >
> > > > > > +        mov     r13d,ebx
> > > > > >
> > > > > > +        mov     r14d,r9d
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[12+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r8d
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,r9d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,r10d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r8d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r8d,r15d
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[20+rbp]
> > > > > >
> > > > > > +        add     r8d,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[16+rsi]
> > > > > >
> > > > > > +        mov     r13d,eax
> > > > > >
> > > > > > +        mov     r14d,r8d
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[16+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        and     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,edx
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,r8d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,r9d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     edx,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edx,edi
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     edx,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[20+rsi]
> > > > > >
> > > > > > +        mov     r13d,r11d
> > > > > >
> > > > > > +        mov     r14d,edx
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[20+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        and     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,r8d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     ecx,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     ecx,r15d
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     ecx,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[24+rsi]
> > > > > >
> > > > > > +        mov     r13d,r10d
> > > > > >
> > > > > > +        mov     r14d,ecx
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[24+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        and     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,ebx
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,ecx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,edx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     ebx,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     ebx,edi
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     ebx,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[28+rsi]
> > > > > >
> > > > > > +        mov     r13d,r9d
> > > > > >
> > > > > > +        mov     r14d,ebx
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[28+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        and     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     eax,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     eax,r15d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[20+rbp]
> > > > > >
> > > > > > +        add     eax,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[32+rsi]
> > > > > >
> > > > > > +        mov     r13d,r8d
> > > > > >
> > > > > > +        mov     r14d,eax
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[32+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        and     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r11d
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,eax
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,ebx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r11d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r11d,edi
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     r11d,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[36+rsi]
> > > > > >
> > > > > > +        mov     r13d,edx
> > > > > >
> > > > > > +        mov     r14d,r11d
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[36+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r10d
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,r11d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r10d,r15d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     r10d,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[40+rsi]
> > > > > >
> > > > > > +        mov     r13d,ecx
> > > > > >
> > > > > > +        mov     r14d,r10d
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[40+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        and     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r9d
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,r10d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,r11d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r9d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r9d,edi
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     r9d,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[44+rsi]
> > > > > >
> > > > > > +        mov     r13d,ebx
> > > > > >
> > > > > > +        mov     r14d,r9d
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[44+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r8d
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,r9d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,r10d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r8d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r8d,r15d
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[20+rbp]
> > > > > >
> > > > > > +        add     r8d,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[48+rsi]
> > > > > >
> > > > > > +        mov     r13d,eax
> > > > > >
> > > > > > +        mov     r14d,r8d
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[48+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        and     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,edx
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,r8d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,r9d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     edx,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edx,edi
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     edx,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[52+rsi]
> > > > > >
> > > > > > +        mov     r13d,r11d
> > > > > >
> > > > > > +        mov     r14d,edx
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[52+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        and     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,r8d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     ecx,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     ecx,r15d
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     ecx,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[56+rsi]
> > > > > >
> > > > > > +        mov     r13d,r10d
> > > > > >
> > > > > > +        mov     r14d,ecx
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[56+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        and     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,ebx
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,ecx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,edx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     ebx,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     ebx,edi
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     ebx,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[60+rsi]
> > > > > >
> > > > > > +        mov     r13d,r9d
> > > > > >
> > > > > > +        mov     r14d,ebx
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[60+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        and     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     eax,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     eax,r15d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[20+rbp]
> > > > > >
> > > > > > +        jmp     NEAR $L$rounds_16_xx
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$rounds_16_xx:
> > > > > >
> > > > > > +        mov     r13d,DWORD[4+rsp]
> > > > > >
> > > > > > +        mov     r15d,DWORD[56+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     eax,r14d
> > > > > >
> > > > > > +        mov     r14d,r15d
> > > > > >
> > > > > > +        ror     r15d,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15d,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[36+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[rsp]
> > > > > >
> > > > > > +        mov     r13d,r8d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +        mov     r14d,eax
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        and     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r11d
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,eax
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,ebx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r11d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r11d,edi
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[8+rsp]
> > > > > >
> > > > > > +        mov     edi,DWORD[60+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     r11d,r14d
> > > > > >
> > > > > > +        mov     r14d,edi
> > > > > >
> > > > > > +        ror     edi,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     edi,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[40+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[4+rsp]
> > > > > >
> > > > > > +        mov     r13d,edx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +        mov     r14d,r11d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[4+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r10d
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,r11d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r10d,r15d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[12+rsp]
> > > > > >
> > > > > > +        mov     r15d,DWORD[rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     r10d,r14d
> > > > > >
> > > > > > +        mov     r14d,r15d
> > > > > >
> > > > > > +        ror     r15d,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15d,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[44+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[8+rsp]
> > > > > >
> > > > > > +        mov     r13d,ecx
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +        mov     r14d,r10d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[8+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        and     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r9d
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,r10d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,r11d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r9d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r9d,edi
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[16+rsp]
> > > > > >
> > > > > > +        mov     edi,DWORD[4+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     r9d,r14d
> > > > > >
> > > > > > +        mov     r14d,edi
> > > > > >
> > > > > > +        ror     edi,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     edi,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[12+rsp]
> > > > > >
> > > > > > +        mov     r13d,ebx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +        mov     r14d,r9d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[12+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r8d
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,r9d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,r10d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r8d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r8d,r15d
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[20+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[20+rsp]
> > > > > >
> > > > > > +        mov     r15d,DWORD[8+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     r8d,r14d
> > > > > >
> > > > > > +        mov     r14d,r15d
> > > > > >
> > > > > > +        ror     r15d,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15d,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[52+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[16+rsp]
> > > > > >
> > > > > > +        mov     r13d,eax
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +        mov     r14d,r8d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[16+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        and     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,edx
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,r8d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,r9d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     edx,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edx,edi
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[24+rsp]
> > > > > >
> > > > > > +        mov     edi,DWORD[12+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     edx,r14d
> > > > > >
> > > > > > +        mov     r14d,edi
> > > > > >
> > > > > > +        ror     edi,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     edi,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[56+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[20+rsp]
> > > > > >
> > > > > > +        mov     r13d,r11d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +        mov     r14d,edx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[20+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        and     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,r8d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     ecx,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     ecx,r15d
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[28+rsp]
> > > > > >
> > > > > > +        mov     r15d,DWORD[16+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     ecx,r14d
> > > > > >
> > > > > > +        mov     r14d,r15d
> > > > > >
> > > > > > +        ror     r15d,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15d,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[60+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[24+rsp]
> > > > > >
> > > > > > +        mov     r13d,r10d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +        mov     r14d,ecx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[24+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        and     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,ebx
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,ecx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,edx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     ebx,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     ebx,edi
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[32+rsp]
> > > > > >
> > > > > > +        mov     edi,DWORD[20+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     ebx,r14d
> > > > > >
> > > > > > +        mov     r14d,edi
> > > > > >
> > > > > > +        ror     edi,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     edi,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[28+rsp]
> > > > > >
> > > > > > +        mov     r13d,r9d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +        mov     r14d,ebx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[28+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        and     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     eax,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     eax,r15d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[20+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[36+rsp]
> > > > > >
> > > > > > +        mov     r15d,DWORD[24+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     eax,r14d
> > > > > >
> > > > > > +        mov     r14d,r15d
> > > > > >
> > > > > > +        ror     r15d,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15d,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[4+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[32+rsp]
> > > > > >
> > > > > > +        mov     r13d,r8d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +        mov     r14d,eax
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[32+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        and     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r11d
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,eax
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,ebx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r11d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r11d,edi
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[40+rsp]
> > > > > >
> > > > > > +        mov     edi,DWORD[28+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     r11d,r14d
> > > > > >
> > > > > > +        mov     r14d,edi
> > > > > >
> > > > > > +        ror     edi,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     edi,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[8+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[36+rsp]
> > > > > >
> > > > > > +        mov     r13d,edx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +        mov     r14d,r11d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[36+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r10d
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,r11d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r10d,r15d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[44+rsp]
> > > > > >
> > > > > > +        mov     r15d,DWORD[32+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     r10d,r14d
> > > > > >
> > > > > > +        mov     r14d,r15d
> > > > > >
> > > > > > +        ror     r15d,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15d,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[12+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r13d,ecx
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +        mov     r14d,r10d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[40+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        and     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r9d
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,r10d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,r11d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r9d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r9d,edi
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[48+rsp]
> > > > > >
> > > > > > +        mov     edi,DWORD[36+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     r9d,r14d
> > > > > >
> > > > > > +        mov     r14d,edi
> > > > > >
> > > > > > +        ror     edi,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     edi,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[16+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[44+rsp]
> > > > > >
> > > > > > +        mov     r13d,ebx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +        mov     r14d,r9d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[44+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r8d
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,r9d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,r10d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r8d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r8d,r15d
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[20+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[52+rsp]
> > > > > >
> > > > > > +        mov     r15d,DWORD[40+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     r8d,r14d
> > > > > >
> > > > > > +        mov     r14d,r15d
> > > > > >
> > > > > > +        ror     r15d,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15d,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[20+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[48+rsp]
> > > > > >
> > > > > > +        mov     r13d,eax
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +        mov     r14d,r8d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[48+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        and     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,edx
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,r8d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,r9d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     edx,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edx,edi
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[56+rsp]
> > > > > >
> > > > > > +        mov     edi,DWORD[44+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     edx,r14d
> > > > > >
> > > > > > +        mov     r14d,edi
> > > > > >
> > > > > > +        ror     edi,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     edi,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[24+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[52+rsp]
> > > > > >
> > > > > > +        mov     r13d,r11d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +        mov     r14d,edx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[52+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        and     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,r8d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     ecx,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     ecx,r15d
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[60+rsp]
> > > > > >
> > > > > > +        mov     r15d,DWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     ecx,r14d
> > > > > >
> > > > > > +        mov     r14d,r15d
> > > > > >
> > > > > > +        ror     r15d,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15d,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[28+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[56+rsp]
> > > > > >
> > > > > > +        mov     r13d,r10d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +        mov     r14d,ecx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[56+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        and     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,ebx
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,ecx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,edx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     ebx,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     ebx,edi
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[rsp]
> > > > > >
> > > > > > +        mov     edi,DWORD[52+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     ebx,r14d
> > > > > >
> > > > > > +        mov     r14d,edi
> > > > > >
> > > > > > +        ror     edi,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     edi,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[32+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[60+rsp]
> > > > > >
> > > > > > +        mov     r13d,r9d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +        mov     r14d,ebx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[60+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        and     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     eax,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     eax,r15d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[20+rbp]
> > > > > >
> > > > > > +        cmp     BYTE[3+rbp],0
> > > > > >
> > > > > > +        jnz     NEAR $L$rounds_16_xx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,QWORD[((64+0))+rsp]
> > > > > >
> > > > > > +        add     eax,r14d
> > > > > >
> > > > > > +        lea     rsi,[64+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[((64+16))+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[88+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$epilogue:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_sha256_block_data_order:
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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      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
> > > > > >
> > > > > > +DB      32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
> > > > > >
> > > > > > +DB      111,114,103,62,0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +sha256_block_data_order_shaext:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_sha256_block_data_order_shaext:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +_shaext_shortcut:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-88))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-80)+rax],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-64)+rax],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-48)+rax],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-32)+rax],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-16)+rax],xmm10
> > > > > >
> > > > > > +$L$prologue_shaext:
> > > > > >
> > > > > > +        lea     rcx,[((K256+128))]
> > > > > >
> > > > > > +        movdqu  xmm1,XMMWORD[rdi]
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        movdqa  xmm7,XMMWORD[((512-128))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x1b
> > > > > >
> > > > > > +        pshufd  xmm1,xmm1,0xb1
> > > > > >
> > > > > > +        pshufd  xmm2,xmm2,0x1b
> > > > > >
> > > > > > +        movdqa  xmm8,xmm7
> > > > > >
> > > > > > +DB      102,15,58,15,202,8
> > > > > >
> > > > > > +        punpcklqdq      xmm2,xmm0
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$oop_shaext:
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[rsi]
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[16+rsi]
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[32+rsi]
> > > > > >
> > > > > > +DB      102,15,56,0,223
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[48+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((0-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm3
> > > > > >
> > > > > > +DB      102,15,56,0,231
> > > > > >
> > > > > > +        movdqa  xmm10,xmm2
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        movdqa  xmm9,xmm1
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((32-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm4
> > > > > >
> > > > > > +DB      102,15,56,0,239
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        lea     rsi,[64+rsi]
> > > > > >
> > > > > > +DB      15,56,204,220
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((64-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm5
> > > > > >
> > > > > > +DB      102,15,56,0,247
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +DB      102,15,58,15,253,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm3,xmm7
> > > > > >
> > > > > > +DB      15,56,204,229
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((96-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm6
> > > > > >
> > > > > > +DB      15,56,205,222
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm3
> > > > > >
> > > > > > +DB      102,15,58,15,254,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm4,xmm7
> > > > > >
> > > > > > +DB      15,56,204,238
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((128-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm3
> > > > > >
> > > > > > +DB      15,56,205,227
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm4
> > > > > >
> > > > > > +DB      102,15,58,15,251,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,204,243
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((160-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm4
> > > > > >
> > > > > > +DB      15,56,205,236
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +DB      102,15,58,15,252,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +DB      15,56,204,220
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((192-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm5
> > > > > >
> > > > > > +DB      15,56,205,245
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +DB      102,15,58,15,253,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm3,xmm7
> > > > > >
> > > > > > +DB      15,56,204,229
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((224-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm6
> > > > > >
> > > > > > +DB      15,56,205,222
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm3
> > > > > >
> > > > > > +DB      102,15,58,15,254,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm4,xmm7
> > > > > >
> > > > > > +DB      15,56,204,238
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((256-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm3
> > > > > >
> > > > > > +DB      15,56,205,227
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm4
> > > > > >
> > > > > > +DB      102,15,58,15,251,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,204,243
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((288-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm4
> > > > > >
> > > > > > +DB      15,56,205,236
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +DB      102,15,58,15,252,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +DB      15,56,204,220
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((320-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm5
> > > > > >
> > > > > > +DB      15,56,205,245
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +DB      102,15,58,15,253,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm3,xmm7
> > > > > >
> > > > > > +DB      15,56,204,229
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((352-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm6
> > > > > >
> > > > > > +DB      15,56,205,222
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm3
> > > > > >
> > > > > > +DB      102,15,58,15,254,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm4,xmm7
> > > > > >
> > > > > > +DB      15,56,204,238
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((384-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm3
> > > > > >
> > > > > > +DB      15,56,205,227
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm4
> > > > > >
> > > > > > +DB      102,15,58,15,251,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,204,243
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((416-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm4
> > > > > >
> > > > > > +DB      15,56,205,236
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +DB      102,15,58,15,252,4
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((448-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm5
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +DB      15,56,205,245
> > > > > >
> > > > > > +        movdqa  xmm7,xmm8
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((480-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm6
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        dec     rdx
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm2,xmm10
> > > > > >
> > > > > > +        paddd   xmm1,xmm9
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm2,xmm2,0xb1
> > > > > >
> > > > > > +        pshufd  xmm7,xmm1,0x1b
> > > > > >
> > > > > > +        pshufd  xmm1,xmm1,0xb1
> > > > > >
> > > > > > +        punpckhqdq      xmm1,xmm2
> > > > > >
> > > > > > +DB      102,15,58,15,215,8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  XMMWORD[rdi],xmm1
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rdi],xmm2
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-8-80))+rax]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-8-64))+rax]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-8-48))+rax]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-8-32))+rax]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-8-16))+rax]
> > > > > >
> > > > > > +        mov     rsp,rax
> > > > > >
> > > > > > +$L$epilogue_shaext:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_sha256_block_data_order_shaext:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ssse3_shortcut:
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        shl     rdx,4
> > > > > >
> > > > > > +        sub     rsp,160
> > > > > >
> > > > > > +        lea     rdx,[rdx*4+rsi]
> > > > > >
> > > > > > +        and     rsp,-64
> > > > > >
> > > > > > +        mov     QWORD[((64+0))+rsp],rdi
> > > > > >
> > > > > > +        mov     QWORD[((64+8))+rsp],rsi
> > > > > >
> > > > > > +        mov     QWORD[((64+16))+rsp],rdx
> > > > > >
> > > > > > +        mov     QWORD[88+rsp],rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[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_ssse3
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$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[48+rsi]
> > > > > >
> > > > > > +        lea     rbp,[K256]
> > > > > >
> > > > > > +DB      102,15,56,0,207
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[rbp]
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[32+rbp]
> > > > > >
> > > > > > +DB      102,15,56,0,215
> > > > > >
> > > > > > +        paddd   xmm4,xmm0
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[64+rbp]
> > > > > >
> > > > > > +DB      102,15,56,0,223
> > > > > >
> > > > > > +        movdqa  xmm7,XMMWORD[96+rbp]
> > > > > >
> > > > > > +        paddd   xmm5,xmm1
> > > > > >
> > > > > > +        paddd   xmm6,xmm2
> > > > > >
> > > > > > +        paddd   xmm7,xmm3
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm4
> > > > > >
> > > > > > +        mov     r14d,eax
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm5
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm7
> > > > > >
> > > > > > +        mov     r13d,r8d
> > > > > >
> > > > > > +        jmp     NEAR $L$ssse3_00_47
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ssse3_00_47:
> > > > > >
> > > > > > +        sub     rbp,-128
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        movdqa  xmm4,xmm1
> > > > > >
> > > > > > +        mov     eax,r14d
> > > > > >
> > > > > > +        mov     r12d,r9d
> > > > > >
> > > > > > +        movdqa  xmm7,xmm3
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        xor     r12d,r10d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +DB      102,15,58,15,224,4
> > > > > >
> > > > > > +        and     r12d,r8d
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +DB      102,15,58,15,250,4
> > > > > >
> > > > > > +        add     r11d,DWORD[rsp]
> > > > > >
> > > > > > +        mov     r15d,eax
> > > > > >
> > > > > > +        xor     r12d,r10d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        xor     r15d,ebx
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +        movdqa  xmm6,xmm4
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        psrld   xmm4,3
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        add     r11d,r13d
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        paddd   xmm0,xmm7
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     edx,r11d
> > > > > >
> > > > > > +        psrld   xmm6,7
> > > > > >
> > > > > > +        add     r11d,edi
> > > > > >
> > > > > > +        mov     r13d,edx
> > > > > >
> > > > > > +        pshufd  xmm7,xmm3,250
> > > > > >
> > > > > > +        add     r14d,r11d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        pslld   xmm5,14
> > > > > >
> > > > > > +        mov     r11d,r14d
> > > > > >
> > > > > > +        mov     r12d,r8d
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        xor     r12d,r9d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        psrld   xmm6,11
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        and     r12d,edx
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        pslld   xmm5,11
> > > > > >
> > > > > > +        add     r10d,DWORD[4+rsp]
> > > > > >
> > > > > > +        mov     edi,r11d
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +        xor     r12d,r9d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        psrld   xmm7,10
> > > > > >
> > > > > > +        add     r10d,r13d
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +        paddd   xmm0,xmm4
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     ecx,r10d
> > > > > >
> > > > > > +        psrlq   xmm6,17
> > > > > >
> > > > > > +        add     r10d,r15d
> > > > > >
> > > > > > +        mov     r13d,ecx
> > > > > >
> > > > > > +        add     r14d,r10d
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r10d,r14d
> > > > > >
> > > > > > +        mov     r12d,edx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        psrlq   xmm6,2
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        xor     r12d,r8d
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        and     r12d,ecx
> > > > > >
> > > > > > +        pshufd  xmm7,xmm7,128
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        add     r9d,DWORD[8+rsp]
> > > > > >
> > > > > > +        mov     r15d,r10d
> > > > > >
> > > > > > +        psrldq  xmm7,8
> > > > > >
> > > > > > +        xor     r12d,r8d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,r11d
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        paddd   xmm0,xmm7
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        add     r9d,r13d
> > > > > >
> > > > > > +        pshufd  xmm7,xmm0,80
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     ebx,r9d
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        add     r9d,edi
> > > > > >
> > > > > > +        mov     r13d,ebx
> > > > > >
> > > > > > +        psrld   xmm7,10
> > > > > >
> > > > > > +        add     r14d,r9d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        psrlq   xmm6,17
> > > > > >
> > > > > > +        mov     r9d,r14d
> > > > > >
> > > > > > +        mov     r12d,ecx
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        xor     r12d,edx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        psrlq   xmm6,2
> > > > > >
> > > > > > +        and     r12d,ebx
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        add     r8d,DWORD[12+rsp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        mov     edi,r9d
> > > > > >
> > > > > > +        xor     r12d,edx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        pshufd  xmm7,xmm7,8
> > > > > >
> > > > > > +        xor     edi,r10d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[rbp]
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        pslldq  xmm7,8
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        add     r8d,r13d
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +        paddd   xmm0,xmm7
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     eax,r8d
> > > > > >
> > > > > > +        add     r8d,r15d
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        mov     r13d,eax
> > > > > >
> > > > > > +        add     r14d,r8d
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        movdqa  xmm4,xmm2
> > > > > >
> > > > > > +        mov     r8d,r14d
> > > > > >
> > > > > > +        mov     r12d,ebx
> > > > > >
> > > > > > +        movdqa  xmm7,xmm0
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        xor     r12d,ecx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +DB      102,15,58,15,225,4
> > > > > >
> > > > > > +        and     r12d,eax
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +DB      102,15,58,15,251,4
> > > > > >
> > > > > > +        add     edx,DWORD[16+rsp]
> > > > > >
> > > > > > +        mov     r15d,r8d
> > > > > >
> > > > > > +        xor     r12d,ecx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        xor     r15d,r9d
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +        movdqa  xmm6,xmm4
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        psrld   xmm4,3
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        add     edx,r13d
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +        paddd   xmm1,xmm7
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r11d,edx
> > > > > >
> > > > > > +        psrld   xmm6,7
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        mov     r13d,r11d
> > > > > >
> > > > > > +        pshufd  xmm7,xmm0,250
> > > > > >
> > > > > > +        add     r14d,edx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        pslld   xmm5,14
> > > > > >
> > > > > > +        mov     edx,r14d
> > > > > >
> > > > > > +        mov     r12d,eax
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        xor     r12d,ebx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        psrld   xmm6,11
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        and     r12d,r11d
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        pslld   xmm5,11
> > > > > >
> > > > > > +        add     ecx,DWORD[20+rsp]
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +        xor     r12d,ebx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        xor     edi,r8d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        psrld   xmm7,10
> > > > > >
> > > > > > +        add     ecx,r13d
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +        paddd   xmm1,xmm4
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r10d,ecx
> > > > > >
> > > > > > +        psrlq   xmm6,17
> > > > > >
> > > > > > +        add     ecx,r15d
> > > > > >
> > > > > > +        mov     r13d,r10d
> > > > > >
> > > > > > +        add     r14d,ecx
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     ecx,r14d
> > > > > >
> > > > > > +        mov     r12d,r11d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        psrlq   xmm6,2
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        xor     r12d,eax
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        and     r12d,r10d
> > > > > >
> > > > > > +        pshufd  xmm7,xmm7,128
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        add     ebx,DWORD[24+rsp]
> > > > > >
> > > > > > +        mov     r15d,ecx
> > > > > >
> > > > > > +        psrldq  xmm7,8
> > > > > >
> > > > > > +        xor     r12d,eax
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,edx
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        paddd   xmm1,xmm7
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        add     ebx,r13d
> > > > > >
> > > > > > +        pshufd  xmm7,xmm1,80
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r9d,ebx
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        mov     r13d,r9d
> > > > > >
> > > > > > +        psrld   xmm7,10
> > > > > >
> > > > > > +        add     r14d,ebx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        psrlq   xmm6,17
> > > > > >
> > > > > > +        mov     ebx,r14d
> > > > > >
> > > > > > +        mov     r12d,r10d
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        xor     r12d,r11d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        psrlq   xmm6,2
> > > > > >
> > > > > > +        and     r12d,r9d
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        add     eax,DWORD[28+rsp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        xor     r12d,r11d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        pshufd  xmm7,xmm7,8
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[32+rbp]
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        pslldq  xmm7,8
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        add     eax,r13d
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +        paddd   xmm1,xmm7
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r8d,eax
> > > > > >
> > > > > > +        add     eax,r15d
> > > > > >
> > > > > > +        paddd   xmm6,xmm1
> > > > > >
> > > > > > +        mov     r13d,r8d
> > > > > >
> > > > > > +        add     r14d,eax
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm6
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        movdqa  xmm4,xmm3
> > > > > >
> > > > > > +        mov     eax,r14d
> > > > > >
> > > > > > +        mov     r12d,r9d
> > > > > >
> > > > > > +        movdqa  xmm7,xmm1
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        xor     r12d,r10d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +DB      102,15,58,15,226,4
> > > > > >
> > > > > > +        and     r12d,r8d
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +DB      102,15,58,15,248,4
> > > > > >
> > > > > > +        add     r11d,DWORD[32+rsp]
> > > > > >
> > > > > > +        mov     r15d,eax
> > > > > >
> > > > > > +        xor     r12d,r10d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        xor     r15d,ebx
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +        movdqa  xmm6,xmm4
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        psrld   xmm4,3
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        add     r11d,r13d
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        paddd   xmm2,xmm7
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     edx,r11d
> > > > > >
> > > > > > +        psrld   xmm6,7
> > > > > >
> > > > > > +        add     r11d,edi
> > > > > >
> > > > > > +        mov     r13d,edx
> > > > > >
> > > > > > +        pshufd  xmm7,xmm1,250
> > > > > >
> > > > > > +        add     r14d,r11d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        pslld   xmm5,14
> > > > > >
> > > > > > +        mov     r11d,r14d
> > > > > >
> > > > > > +        mov     r12d,r8d
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        xor     r12d,r9d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        psrld   xmm6,11
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        and     r12d,edx
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        pslld   xmm5,11
> > > > > >
> > > > > > +        add     r10d,DWORD[36+rsp]
> > > > > >
> > > > > > +        mov     edi,r11d
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +        xor     r12d,r9d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        psrld   xmm7,10
> > > > > >
> > > > > > +        add     r10d,r13d
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +        paddd   xmm2,xmm4
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     ecx,r10d
> > > > > >
> > > > > > +        psrlq   xmm6,17
> > > > > >
> > > > > > +        add     r10d,r15d
> > > > > >
> > > > > > +        mov     r13d,ecx
> > > > > >
> > > > > > +        add     r14d,r10d
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r10d,r14d
> > > > > >
> > > > > > +        mov     r12d,edx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        psrlq   xmm6,2
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        xor     r12d,r8d
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        and     r12d,ecx
> > > > > >
> > > > > > +        pshufd  xmm7,xmm7,128
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        add     r9d,DWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r15d,r10d
> > > > > >
> > > > > > +        psrldq  xmm7,8
> > > > > >
> > > > > > +        xor     r12d,r8d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,r11d
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        paddd   xmm2,xmm7
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        add     r9d,r13d
> > > > > >
> > > > > > +        pshufd  xmm7,xmm2,80
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     ebx,r9d
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        add     r9d,edi
> > > > > >
> > > > > > +        mov     r13d,ebx
> > > > > >
> > > > > > +        psrld   xmm7,10
> > > > > >
> > > > > > +        add     r14d,r9d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        psrlq   xmm6,17
> > > > > >
> > > > > > +        mov     r9d,r14d
> > > > > >
> > > > > > +        mov     r12d,ecx
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        xor     r12d,edx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        psrlq   xmm6,2
> > > > > >
> > > > > > +        and     r12d,ebx
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        add     r8d,DWORD[44+rsp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        mov     edi,r9d
> > > > > >
> > > > > > +        xor     r12d,edx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        pshufd  xmm7,xmm7,8
> > > > > >
> > > > > > +        xor     edi,r10d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[64+rbp]
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        pslldq  xmm7,8
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        add     r8d,r13d
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +        paddd   xmm2,xmm7
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     eax,r8d
> > > > > >
> > > > > > +        add     r8d,r15d
> > > > > >
> > > > > > +        paddd   xmm6,xmm2
> > > > > >
> > > > > > +        mov     r13d,eax
> > > > > >
> > > > > > +        add     r14d,r8d
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        mov     r8d,r14d
> > > > > >
> > > > > > +        mov     r12d,ebx
> > > > > >
> > > > > > +        movdqa  xmm7,xmm2
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        xor     r12d,ecx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +DB      102,15,58,15,227,4
> > > > > >
> > > > > > +        and     r12d,eax
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +DB      102,15,58,15,249,4
> > > > > >
> > > > > > +        add     edx,DWORD[48+rsp]
> > > > > >
> > > > > > +        mov     r15d,r8d
> > > > > >
> > > > > > +        xor     r12d,ecx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        xor     r15d,r9d
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +        movdqa  xmm6,xmm4
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        psrld   xmm4,3
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        add     edx,r13d
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +        paddd   xmm3,xmm7
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r11d,edx
> > > > > >
> > > > > > +        psrld   xmm6,7
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        mov     r13d,r11d
> > > > > >
> > > > > > +        pshufd  xmm7,xmm2,250
> > > > > >
> > > > > > +        add     r14d,edx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        pslld   xmm5,14
> > > > > >
> > > > > > +        mov     edx,r14d
> > > > > >
> > > > > > +        mov     r12d,eax
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        xor     r12d,ebx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        psrld   xmm6,11
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        and     r12d,r11d
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        pslld   xmm5,11
> > > > > >
> > > > > > +        add     ecx,DWORD[52+rsp]
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +        xor     r12d,ebx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        xor     edi,r8d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        psrld   xmm7,10
> > > > > >
> > > > > > +        add     ecx,r13d
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +        paddd   xmm3,xmm4
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r10d,ecx
> > > > > >
> > > > > > +        psrlq   xmm6,17
> > > > > >
> > > > > > +        add     ecx,r15d
> > > > > >
> > > > > > +        mov     r13d,r10d
> > > > > >
> > > > > > +        add     r14d,ecx
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     ecx,r14d
> > > > > >
> > > > > > +        mov     r12d,r11d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        psrlq   xmm6,2
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        xor     r12d,eax
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        and     r12d,r10d
> > > > > >
> > > > > > +        pshufd  xmm7,xmm7,128
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        add     ebx,DWORD[56+rsp]
> > > > > >
> > > > > > +        mov     r15d,ecx
> > > > > >
> > > > > > +        psrldq  xmm7,8
> > > > > >
> > > > > > +        xor     r12d,eax
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,edx
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        paddd   xmm3,xmm7
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        add     ebx,r13d
> > > > > >
> > > > > > +        pshufd  xmm7,xmm3,80
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r9d,ebx
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        mov     r13d,r9d
> > > > > >
> > > > > > +        psrld   xmm7,10
> > > > > >
> > > > > > +        add     r14d,ebx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        psrlq   xmm6,17
> > > > > >
> > > > > > +        mov     ebx,r14d
> > > > > >
> > > > > > +        mov     r12d,r10d
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        xor     r12d,r11d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        psrlq   xmm6,2
> > > > > >
> > > > > > +        and     r12d,r9d
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        add     eax,DWORD[60+rsp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        xor     r12d,r11d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        pshufd  xmm7,xmm7,8
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[96+rbp]
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        pslldq  xmm7,8
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        add     eax,r13d
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +        paddd   xmm3,xmm7
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r8d,eax
> > > > > >
> > > > > > +        add     eax,r15d
> > > > > >
> > > > > > +        paddd   xmm6,xmm3
> > > > > >
> > > > > > +        mov     r13d,r8d
> > > > > >
> > > > > > +        add     r14d,eax
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        xor     r12d,r10d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        and     r12d,r8d
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        add     r11d,DWORD[rsp]
> > > > > >
> > > > > > +        mov     r15d,eax
> > > > > >
> > > > > > +        xor     r12d,r10d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,ebx
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        add     r11d,r13d
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     edx,r11d
> > > > > >
> > > > > > +        add     r11d,edi
> > > > > >
> > > > > > +        mov     r13d,edx
> > > > > >
> > > > > > +        add     r14d,r11d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r11d,r14d
> > > > > >
> > > > > > +        mov     r12d,r8d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        xor     r12d,r9d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        and     r12d,edx
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        add     r10d,DWORD[4+rsp]
> > > > > >
> > > > > > +        mov     edi,r11d
> > > > > >
> > > > > > +        xor     r12d,r9d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        add     r10d,r13d
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     ecx,r10d
> > > > > >
> > > > > > +        add     r10d,r15d
> > > > > >
> > > > > > +        mov     r13d,ecx
> > > > > >
> > > > > > +        add     r14d,r10d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r10d,r14d
> > > > > >
> > > > > > +        mov     r12d,edx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        xor     r12d,r8d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        and     r12d,ecx
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        add     r9d,DWORD[8+rsp]
> > > > > >
> > > > > > +        mov     r15d,r10d
> > > > > >
> > > > > > +        xor     r12d,r8d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,r11d
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        add     r9d,r13d
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     ebx,r9d
> > > > > >
> > > > > > +        add     r9d,edi
> > > > > >
> > > > > > +        mov     r13d,ebx
> > > > > >
> > > > > > +        add     r14d,r9d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r9d,r14d
> > > > > >
> > > > > > +        mov     r12d,ecx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        xor     r12d,edx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        and     r12d,ebx
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        add     r8d,DWORD[12+rsp]
> > > > > >
> > > > > > +        mov     edi,r9d
> > > > > >
> > > > > > +        xor     r12d,edx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     edi,r10d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        add     r8d,r13d
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     eax,r8d
> > > > > >
> > > > > > +        add     r8d,r15d
> > > > > >
> > > > > > +        mov     r13d,eax
> > > > > >
> > > > > > +        add     r14d,r8d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r8d,r14d
> > > > > >
> > > > > > +        mov     r12d,ebx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        xor     r12d,ecx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        and     r12d,eax
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        add     edx,DWORD[16+rsp]
> > > > > >
> > > > > > +        mov     r15d,r8d
> > > > > >
> > > > > > +        xor     r12d,ecx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,r9d
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        add     edx,r13d
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r11d,edx
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        mov     r13d,r11d
> > > > > >
> > > > > > +        add     r14d,edx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edx,r14d
> > > > > >
> > > > > > +        mov     r12d,eax
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        xor     r12d,ebx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        and     r12d,r11d
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        add     ecx,DWORD[20+rsp]
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        xor     r12d,ebx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     edi,r8d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        add     ecx,r13d
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r10d,ecx
> > > > > >
> > > > > > +        add     ecx,r15d
> > > > > >
> > > > > > +        mov     r13d,r10d
> > > > > >
> > > > > > +        add     r14d,ecx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     ecx,r14d
> > > > > >
> > > > > > +        mov     r12d,r11d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        xor     r12d,eax
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        and     r12d,r10d
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        add     ebx,DWORD[24+rsp]
> > > > > >
> > > > > > +        mov     r15d,ecx
> > > > > >
> > > > > > +        xor     r12d,eax
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,edx
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        add     ebx,r13d
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r9d,ebx
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        mov     r13d,r9d
> > > > > >
> > > > > > +        add     r14d,ebx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     ebx,r14d
> > > > > >
> > > > > > +        mov     r12d,r10d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        xor     r12d,r11d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        and     r12d,r9d
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        add     eax,DWORD[28+rsp]
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        xor     r12d,r11d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        add     eax,r13d
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r8d,eax
> > > > > >
> > > > > > +        add     eax,r15d
> > > > > >
> > > > > > +        mov     r13d,r8d
> > > > > >
> > > > > > +        add     r14d,eax
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     eax,r14d
> > > > > >
> > > > > > +        mov     r12d,r9d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        xor     r12d,r10d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        and     r12d,r8d
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        add     r11d,DWORD[32+rsp]
> > > > > >
> > > > > > +        mov     r15d,eax
> > > > > >
> > > > > > +        xor     r12d,r10d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,ebx
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        add     r11d,r13d
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     edx,r11d
> > > > > >
> > > > > > +        add     r11d,edi
> > > > > >
> > > > > > +        mov     r13d,edx
> > > > > >
> > > > > > +        add     r14d,r11d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r11d,r14d
> > > > > >
> > > > > > +        mov     r12d,r8d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        xor     r12d,r9d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        and     r12d,edx
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        add     r10d,DWORD[36+rsp]
> > > > > >
> > > > > > +        mov     edi,r11d
> > > > > >
> > > > > > +        xor     r12d,r9d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        add     r10d,r13d
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     ecx,r10d
> > > > > >
> > > > > > +        add     r10d,r15d
> > > > > >
> > > > > > +        mov     r13d,ecx
> > > > > >
> > > > > > +        add     r14d,r10d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r10d,r14d
> > > > > >
> > > > > > +        mov     r12d,edx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        xor     r12d,r8d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        and     r12d,ecx
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        add     r9d,DWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r15d,r10d
> > > > > >
> > > > > > +        xor     r12d,r8d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,r11d
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        add     r9d,r13d
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     ebx,r9d
> > > > > >
> > > > > > +        add     r9d,edi
> > > > > >
> > > > > > +        mov     r13d,ebx
> > > > > >
> > > > > > +        add     r14d,r9d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r9d,r14d
> > > > > >
> > > > > > +        mov     r12d,ecx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        xor     r12d,edx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        and     r12d,ebx
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        add     r8d,DWORD[44+rsp]
> > > > > >
> > > > > > +        mov     edi,r9d
> > > > > >
> > > > > > +        xor     r12d,edx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     edi,r10d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        add     r8d,r13d
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     eax,r8d
> > > > > >
> > > > > > +        add     r8d,r15d
> > > > > >
> > > > > > +        mov     r13d,eax
> > > > > >
> > > > > > +        add     r14d,r8d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r8d,r14d
> > > > > >
> > > > > > +        mov     r12d,ebx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        xor     r12d,ecx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        and     r12d,eax
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        add     edx,DWORD[48+rsp]
> > > > > >
> > > > > > +        mov     r15d,r8d
> > > > > >
> > > > > > +        xor     r12d,ecx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,r9d
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        add     edx,r13d
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r11d,edx
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        mov     r13d,r11d
> > > > > >
> > > > > > +        add     r14d,edx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edx,r14d
> > > > > >
> > > > > > +        mov     r12d,eax
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        xor     r12d,ebx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        and     r12d,r11d
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        add     ecx,DWORD[52+rsp]
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        xor     r12d,ebx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     edi,r8d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        add     ecx,r13d
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r10d,ecx
> > > > > >
> > > > > > +        add     ecx,r15d
> > > > > >
> > > > > > +        mov     r13d,r10d
> > > > > >
> > > > > > +        add     r14d,ecx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     ecx,r14d
> > > > > >
> > > > > > +        mov     r12d,r11d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        xor     r12d,eax
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        and     r12d,r10d
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        add     ebx,DWORD[56+rsp]
> > > > > >
> > > > > > +        mov     r15d,ecx
> > > > > >
> > > > > > +        xor     r12d,eax
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,edx
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        add     ebx,r13d
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r9d,ebx
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        mov     r13d,r9d
> > > > > >
> > > > > > +        add     r14d,ebx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     ebx,r14d
> > > > > >
> > > > > > +        mov     r12d,r10d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        xor     r12d,r11d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        and     r12d,r9d
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        add     eax,DWORD[60+rsp]
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        xor     r12d,r11d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        add     eax,r13d
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r8d,eax
> > > > > >
> > > > > > +        add     eax,r15d
> > > > > >
> > > > > > +        mov     r13d,r8d
> > > > > >
> > > > > > +        add     r14d,eax
> > > > > >
> > > > > > +        mov     rdi,QWORD[((64+0))+rsp]
> > > > > >
> > > > > > +        mov     eax,r14d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[((64+16))+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[88+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[((-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$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:
> > > > > >
> > > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$in_prologue
> > > > > >
> > > > > > +        mov     rsi,rax
> > > > > >
> > > > > > +        mov     rax,QWORD[((64+24))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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,[$L$epilogue]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((64+32))+rsi]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,8
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +shaext_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$prologue_shaext]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$epilogue_shaext]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((-8-80))+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,10
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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_shaext
> > > > wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_sha256_block_data_order_shaext wrt
> > > ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_sha256_block_data_order_shaext 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_shaext:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      shaext_handler 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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-
> > > > x86_64.nasm
> > > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..c6397d4393
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-
> > x86_64.nasm
> > > > > > @@ -0,0 +1,1938 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +global  sha512_block_data_order
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        shl     rdx,4
> > > > > >
> > > > > > +        sub     rsp,16*8+4*8
> > > > > >
> > > > > > +        lea     rdx,[rdx*8+rsi]
> > > > > >
> > > > > > +        and     rsp,-64
> > > > > >
> > > > > > +        mov     QWORD[((128+0))+rsp],rdi
> > > > > >
> > > > > > +        mov     QWORD[((128+8))+rsp],rsi
> > > > > >
> > > > > > +        mov     QWORD[((128+16))+rsp],rdx
> > > > > >
> > > > > > +        mov     QWORD[152+rsp],rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$prologue:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +        mov     rdi,rbx
> > > > > >
> > > > > > +        lea     rbp,[K512]
> > > > > >
> > > > > > +        xor     rdi,rcx
> > > > > >
> > > > > > +        mov     r12,QWORD[rsi]
> > > > > >
> > > > > > +        mov     r13,r8
> > > > > >
> > > > > > +        mov     r14,rax
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[rsp],r12
> > > > > >
> > > > > > +        xor     r14,rax
> > > > > >
> > > > > > +        and     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r11
> > > > > >
> > > > > > +        xor     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,rax
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,rbx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r11,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r11,rdi
> > > > > >
> > > > > > +        add     rdx,r12
> > > > > >
> > > > > > +        add     r11,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        add     r11,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[8+rsi]
> > > > > >
> > > > > > +        mov     r13,rdx
> > > > > >
> > > > > > +        mov     r14,r11
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rdx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r11
> > > > > >
> > > > > > +        and     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r10
> > > > > >
> > > > > > +        xor     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rdx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,r11
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,rax
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r10,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r10,r15
> > > > > >
> > > > > > +        add     rcx,r12
> > > > > >
> > > > > > +        add     r10,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        add     r10,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[16+rsi]
> > > > > >
> > > > > > +        mov     r13,rcx
> > > > > >
> > > > > > +        mov     r14,r10
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rcx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r10
> > > > > >
> > > > > > +        and     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r9
> > > > > >
> > > > > > +        xor     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rcx
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,r10
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,r11
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r9,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r9,rdi
> > > > > >
> > > > > > +        add     rbx,r12
> > > > > >
> > > > > > +        add     r9,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        add     r9,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[24+rsi]
> > > > > >
> > > > > > +        mov     r13,rbx
> > > > > >
> > > > > > +        mov     r14,r9
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rbx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[24+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r9
> > > > > >
> > > > > > +        and     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r8
> > > > > >
> > > > > > +        xor     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rbx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,r9
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,r10
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r8,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r8,r15
> > > > > >
> > > > > > +        add     rax,r12
> > > > > >
> > > > > > +        add     r8,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        add     r8,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[32+rsi]
> > > > > >
> > > > > > +        mov     r13,rax
> > > > > >
> > > > > > +        mov     r14,r8
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rax
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[32+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r8
> > > > > >
> > > > > > +        and     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rdx
> > > > > >
> > > > > > +        xor     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rax
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,r8
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,r9
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rdx,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdx,rdi
> > > > > >
> > > > > > +        add     r11,r12
> > > > > >
> > > > > > +        add     rdx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        add     rdx,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[40+rsi]
> > > > > >
> > > > > > +        mov     r13,r11
> > > > > >
> > > > > > +        mov     r14,rdx
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r11
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[40+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rdx
> > > > > >
> > > > > > +        and     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rcx
> > > > > >
> > > > > > +        xor     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r11
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,rdx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,r8
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rcx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rcx,r15
> > > > > >
> > > > > > +        add     r10,r12
> > > > > >
> > > > > > +        add     rcx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        add     rcx,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[48+rsi]
> > > > > >
> > > > > > +        mov     r13,r10
> > > > > >
> > > > > > +        mov     r14,rcx
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r10
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[48+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rcx
> > > > > >
> > > > > > +        and     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rbx
> > > > > >
> > > > > > +        xor     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r10
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,rcx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,rdx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rbx,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rbx,rdi
> > > > > >
> > > > > > +        add     r9,r12
> > > > > >
> > > > > > +        add     rbx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        add     rbx,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[56+rsi]
> > > > > >
> > > > > > +        mov     r13,r9
> > > > > >
> > > > > > +        mov     r14,rbx
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r9
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[56+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rbx
> > > > > >
> > > > > > +        and     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rax
> > > > > >
> > > > > > +        xor     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r9
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,rbx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,rcx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rax,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rax,r15
> > > > > >
> > > > > > +        add     r8,r12
> > > > > >
> > > > > > +        add     rax,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        add     rax,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[64+rsi]
> > > > > >
> > > > > > +        mov     r13,r8
> > > > > >
> > > > > > +        mov     r14,rax
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[64+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rax
> > > > > >
> > > > > > +        and     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r11
> > > > > >
> > > > > > +        xor     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,rax
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,rbx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r11,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r11,rdi
> > > > > >
> > > > > > +        add     rdx,r12
> > > > > >
> > > > > > +        add     r11,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        add     r11,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[72+rsi]
> > > > > >
> > > > > > +        mov     r13,rdx
> > > > > >
> > > > > > +        mov     r14,r11
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rdx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[72+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r11
> > > > > >
> > > > > > +        and     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r10
> > > > > >
> > > > > > +        xor     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rdx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,r11
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,rax
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r10,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r10,r15
> > > > > >
> > > > > > +        add     rcx,r12
> > > > > >
> > > > > > +        add     r10,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        add     r10,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[80+rsi]
> > > > > >
> > > > > > +        mov     r13,rcx
> > > > > >
> > > > > > +        mov     r14,r10
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rcx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[80+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r10
> > > > > >
> > > > > > +        and     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r9
> > > > > >
> > > > > > +        xor     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rcx
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,r10
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,r11
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r9,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r9,rdi
> > > > > >
> > > > > > +        add     rbx,r12
> > > > > >
> > > > > > +        add     r9,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        add     r9,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[88+rsi]
> > > > > >
> > > > > > +        mov     r13,rbx
> > > > > >
> > > > > > +        mov     r14,r9
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rbx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[88+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r9
> > > > > >
> > > > > > +        and     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r8
> > > > > >
> > > > > > +        xor     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rbx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,r9
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,r10
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r8,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r8,r15
> > > > > >
> > > > > > +        add     rax,r12
> > > > > >
> > > > > > +        add     r8,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        add     r8,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[96+rsi]
> > > > > >
> > > > > > +        mov     r13,rax
> > > > > >
> > > > > > +        mov     r14,r8
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rax
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[96+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r8
> > > > > >
> > > > > > +        and     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rdx
> > > > > >
> > > > > > +        xor     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rax
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,r8
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,r9
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rdx,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdx,rdi
> > > > > >
> > > > > > +        add     r11,r12
> > > > > >
> > > > > > +        add     rdx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        add     rdx,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[104+rsi]
> > > > > >
> > > > > > +        mov     r13,r11
> > > > > >
> > > > > > +        mov     r14,rdx
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r11
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[104+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rdx
> > > > > >
> > > > > > +        and     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rcx
> > > > > >
> > > > > > +        xor     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r11
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,rdx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,r8
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rcx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rcx,r15
> > > > > >
> > > > > > +        add     r10,r12
> > > > > >
> > > > > > +        add     rcx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        add     rcx,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[112+rsi]
> > > > > >
> > > > > > +        mov     r13,r10
> > > > > >
> > > > > > +        mov     r14,rcx
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r10
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[112+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rcx
> > > > > >
> > > > > > +        and     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rbx
> > > > > >
> > > > > > +        xor     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r10
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,rcx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,rdx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rbx,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rbx,rdi
> > > > > >
> > > > > > +        add     r9,r12
> > > > > >
> > > > > > +        add     rbx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        add     rbx,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[120+rsi]
> > > > > >
> > > > > > +        mov     r13,r9
> > > > > >
> > > > > > +        mov     r14,rbx
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r9
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[120+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rbx
> > > > > >
> > > > > > +        and     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rax
> > > > > >
> > > > > > +        xor     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r9
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,rbx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,rcx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rax,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rax,r15
> > > > > >
> > > > > > +        add     r8,r12
> > > > > >
> > > > > > +        add     rax,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        jmp     NEAR $L$rounds_16_xx
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$rounds_16_xx:
> > > > > >
> > > > > > +        mov     r13,QWORD[8+rsp]
> > > > > >
> > > > > > +        mov     r15,QWORD[112+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     rax,r14
> > > > > >
> > > > > > +        mov     r14,r15
> > > > > >
> > > > > > +        ror     r15,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        add     r12,QWORD[72+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[rsp]
> > > > > >
> > > > > > +        mov     r13,r8
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +        mov     r14,rax
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[rsp],r12
> > > > > >
> > > > > > +        xor     r14,rax
> > > > > >
> > > > > > +        and     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r11
> > > > > >
> > > > > > +        xor     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,rax
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,rbx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r11,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r11,rdi
> > > > > >
> > > > > > +        add     rdx,r12
> > > > > >
> > > > > > +        add     r11,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[16+rsp]
> > > > > >
> > > > > > +        mov     rdi,QWORD[120+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     r11,r14
> > > > > >
> > > > > > +        mov     r14,rdi
> > > > > >
> > > > > > +        ror     rdi,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     rdi,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        add     r12,QWORD[80+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[8+rsp]
> > > > > >
> > > > > > +        mov     r13,rdx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +        mov     r14,r11
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rdx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r11
> > > > > >
> > > > > > +        and     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r10
> > > > > >
> > > > > > +        xor     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rdx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,r11
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,rax
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r10,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r10,r15
> > > > > >
> > > > > > +        add     rcx,r12
> > > > > >
> > > > > > +        add     r10,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[24+rsp]
> > > > > >
> > > > > > +        mov     r15,QWORD[rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     r10,r14
> > > > > >
> > > > > > +        mov     r14,r15
> > > > > >
> > > > > > +        ror     r15,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        add     r12,QWORD[88+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[16+rsp]
> > > > > >
> > > > > > +        mov     r13,rcx
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +        mov     r14,r10
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rcx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r10
> > > > > >
> > > > > > +        and     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r9
> > > > > >
> > > > > > +        xor     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rcx
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,r10
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,r11
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r9,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r9,rdi
> > > > > >
> > > > > > +        add     rbx,r12
> > > > > >
> > > > > > +        add     r9,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[32+rsp]
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     r9,r14
> > > > > >
> > > > > > +        mov     r14,rdi
> > > > > >
> > > > > > +        ror     rdi,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     rdi,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        add     r12,QWORD[96+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[24+rsp]
> > > > > >
> > > > > > +        mov     r13,rbx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +        mov     r14,r9
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rbx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[24+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r9
> > > > > >
> > > > > > +        and     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r8
> > > > > >
> > > > > > +        xor     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rbx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,r9
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,r10
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r8,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r8,r15
> > > > > >
> > > > > > +        add     rax,r12
> > > > > >
> > > > > > +        add     r8,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r15,QWORD[16+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     r8,r14
> > > > > >
> > > > > > +        mov     r14,r15
> > > > > >
> > > > > > +        ror     r15,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        add     r12,QWORD[104+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[32+rsp]
> > > > > >
> > > > > > +        mov     r13,rax
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +        mov     r14,r8
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rax
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[32+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r8
> > > > > >
> > > > > > +        and     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rdx
> > > > > >
> > > > > > +        xor     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rax
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,r8
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,r9
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rdx,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdx,rdi
> > > > > >
> > > > > > +        add     r11,r12
> > > > > >
> > > > > > +        add     rdx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[48+rsp]
> > > > > >
> > > > > > +        mov     rdi,QWORD[24+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     rdx,r14
> > > > > >
> > > > > > +        mov     r14,rdi
> > > > > >
> > > > > > +        ror     rdi,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     rdi,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        add     r12,QWORD[112+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r13,r11
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +        mov     r14,rdx
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r11
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[40+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rdx
> > > > > >
> > > > > > +        and     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rcx
> > > > > >
> > > > > > +        xor     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r11
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,rdx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,r8
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rcx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rcx,r15
> > > > > >
> > > > > > +        add     r10,r12
> > > > > >
> > > > > > +        add     rcx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[56+rsp]
> > > > > >
> > > > > > +        mov     r15,QWORD[32+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     rcx,r14
> > > > > >
> > > > > > +        mov     r14,r15
> > > > > >
> > > > > > +        ror     r15,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        add     r12,QWORD[120+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[48+rsp]
> > > > > >
> > > > > > +        mov     r13,r10
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +        mov     r14,rcx
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r10
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[48+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rcx
> > > > > >
> > > > > > +        and     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rbx
> > > > > >
> > > > > > +        xor     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r10
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,rcx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,rdx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rbx,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rbx,rdi
> > > > > >
> > > > > > +        add     r9,r12
> > > > > >
> > > > > > +        add     rbx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[64+rsp]
> > > > > >
> > > > > > +        mov     rdi,QWORD[40+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     rbx,r14
> > > > > >
> > > > > > +        mov     r14,rdi
> > > > > >
> > > > > > +        ror     rdi,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     rdi,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        add     r12,QWORD[rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[56+rsp]
> > > > > >
> > > > > > +        mov     r13,r9
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +        mov     r14,rbx
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r9
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[56+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rbx
> > > > > >
> > > > > > +        and     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rax
> > > > > >
> > > > > > +        xor     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r9
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,rbx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,rcx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rax,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rax,r15
> > > > > >
> > > > > > +        add     r8,r12
> > > > > >
> > > > > > +        add     rax,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[72+rsp]
> > > > > >
> > > > > > +        mov     r15,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     rax,r14
> > > > > >
> > > > > > +        mov     r14,r15
> > > > > >
> > > > > > +        ror     r15,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        add     r12,QWORD[8+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[64+rsp]
> > > > > >
> > > > > > +        mov     r13,r8
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +        mov     r14,rax
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[64+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rax
> > > > > >
> > > > > > +        and     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r11
> > > > > >
> > > > > > +        xor     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,rax
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,rbx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r11,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r11,rdi
> > > > > >
> > > > > > +        add     rdx,r12
> > > > > >
> > > > > > +        add     r11,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[80+rsp]
> > > > > >
> > > > > > +        mov     rdi,QWORD[56+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     r11,r14
> > > > > >
> > > > > > +        mov     r14,rdi
> > > > > >
> > > > > > +        ror     rdi,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     rdi,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        add     r12,QWORD[16+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[72+rsp]
> > > > > >
> > > > > > +        mov     r13,rdx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +        mov     r14,r11
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rdx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[72+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r11
> > > > > >
> > > > > > +        and     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r10
> > > > > >
> > > > > > +        xor     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rdx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,r11
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,rax
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r10,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r10,r15
> > > > > >
> > > > > > +        add     rcx,r12
> > > > > >
> > > > > > +        add     r10,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[88+rsp]
> > > > > >
> > > > > > +        mov     r15,QWORD[64+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     r10,r14
> > > > > >
> > > > > > +        mov     r14,r15
> > > > > >
> > > > > > +        ror     r15,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        add     r12,QWORD[24+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[80+rsp]
> > > > > >
> > > > > > +        mov     r13,rcx
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +        mov     r14,r10
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rcx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[80+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r10
> > > > > >
> > > > > > +        and     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r9
> > > > > >
> > > > > > +        xor     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rcx
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,r10
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,r11
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r9,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r9,rdi
> > > > > >
> > > > > > +        add     rbx,r12
> > > > > >
> > > > > > +        add     r9,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[96+rsp]
> > > > > >
> > > > > > +        mov     rdi,QWORD[72+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     r9,r14
> > > > > >
> > > > > > +        mov     r14,rdi
> > > > > >
> > > > > > +        ror     rdi,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     rdi,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        add     r12,QWORD[32+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[88+rsp]
> > > > > >
> > > > > > +        mov     r13,rbx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +        mov     r14,r9
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rbx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[88+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r9
> > > > > >
> > > > > > +        and     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r8
> > > > > >
> > > > > > +        xor     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rbx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,r9
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,r10
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r8,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r8,r15
> > > > > >
> > > > > > +        add     rax,r12
> > > > > >
> > > > > > +        add     r8,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[104+rsp]
> > > > > >
> > > > > > +        mov     r15,QWORD[80+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     r8,r14
> > > > > >
> > > > > > +        mov     r14,r15
> > > > > >
> > > > > > +        ror     r15,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        add     r12,QWORD[40+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[96+rsp]
> > > > > >
> > > > > > +        mov     r13,rax
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +        mov     r14,r8
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rax
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[96+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r8
> > > > > >
> > > > > > +        and     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rdx
> > > > > >
> > > > > > +        xor     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rax
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,r8
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,r9
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rdx,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdx,rdi
> > > > > >
> > > > > > +        add     r11,r12
> > > > > >
> > > > > > +        add     rdx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[112+rsp]
> > > > > >
> > > > > > +        mov     rdi,QWORD[88+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     rdx,r14
> > > > > >
> > > > > > +        mov     r14,rdi
> > > > > >
> > > > > > +        ror     rdi,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     rdi,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        add     r12,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[104+rsp]
> > > > > >
> > > > > > +        mov     r13,r11
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +        mov     r14,rdx
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r11
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[104+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rdx
> > > > > >
> > > > > > +        and     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rcx
> > > > > >
> > > > > > +        xor     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r11
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,rdx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,r8
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rcx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rcx,r15
> > > > > >
> > > > > > +        add     r10,r12
> > > > > >
> > > > > > +        add     rcx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[120+rsp]
> > > > > >
> > > > > > +        mov     r15,QWORD[96+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     rcx,r14
> > > > > >
> > > > > > +        mov     r14,r15
> > > > > >
> > > > > > +        ror     r15,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        add     r12,QWORD[56+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[112+rsp]
> > > > > >
> > > > > > +        mov     r13,r10
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +        mov     r14,rcx
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r10
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[112+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rcx
> > > > > >
> > > > > > +        and     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rbx
> > > > > >
> > > > > > +        xor     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r10
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,rcx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,rdx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rbx,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rbx,rdi
> > > > > >
> > > > > > +        add     r9,r12
> > > > > >
> > > > > > +        add     rbx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[rsp]
> > > > > >
> > > > > > +        mov     rdi,QWORD[104+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     rbx,r14
> > > > > >
> > > > > > +        mov     r14,rdi
> > > > > >
> > > > > > +        ror     rdi,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     rdi,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        add     r12,QWORD[64+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[120+rsp]
> > > > > >
> > > > > > +        mov     r13,r9
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +        mov     r14,rbx
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r9
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[120+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rbx
> > > > > >
> > > > > > +        and     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rax
> > > > > >
> > > > > > +        xor     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r9
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,rbx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,rcx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rax,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rax,r15
> > > > > >
> > > > > > +        add     r8,r12
> > > > > >
> > > > > > +        add     rax,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        cmp     BYTE[7+rbp],0
> > > > > >
> > > > > > +        jnz     NEAR $L$rounds_16_xx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,QWORD[((128+0))+rsp]
> > > > > >
> > > > > > +        add     rax,r14
> > > > > >
> > > > > > +        lea     rsi,[128+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[((128+16))+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[152+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$epilogue:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_sha512_block_data_order:
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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      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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$in_prologue
> > > > > >
> > > > > > +        mov     rsi,rax
> > > > > >
> > > > > > +        mov     rax,QWORD[((128+24))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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,[$L$epilogue]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((128+32))+rsi]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,12
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..2a3d5bcf72
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > > > > > @@ -0,0 +1,491 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/x86_64cpuid.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +EXTERN  OPENSSL_cpuid_setup
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .CRT$XCU rdata align=8
> > > > > >
> > > > > > +                DQ      OPENSSL_cpuid_setup
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +common  OPENSSL_ia32cap_P 16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  OPENSSL_atomic_add
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +OPENSSL_atomic_add:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,DWORD[rcx]
> > > > > >
> > > > > > +$L$spin:        lea     r8,[rax*1+rdx]
> > > > > >
> > > > > > +DB      0xf0
> > > > > >
> > > > > > +        cmpxchg DWORD[rcx],r8d
> > > > > >
> > > > > > +        jne     NEAR $L$spin
> > > > > >
> > > > > > +        mov     eax,r8d
> > > > > >
> > > > > > +DB      0x48,0x98
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  OPENSSL_rdtsc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +OPENSSL_rdtsc:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        rdtsc
> > > > > >
> > > > > > +        shl     rdx,32
> > > > > >
> > > > > > +        or      rax,rdx
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  OPENSSL_ia32_cpuid
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +OPENSSL_ia32_cpuid:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_OPENSSL_ia32_cpuid:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r8,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     eax,eax
> > > > > >
> > > > > > +        mov     QWORD[8+rdi],rax
> > > > > >
> > > > > > +        cpuid
> > > > > >
> > > > > > +        mov     r11d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     eax,eax
> > > > > >
> > > > > > +        cmp     ebx,0x756e6547
> > > > > >
> > > > > > +        setne   al
> > > > > >
> > > > > > +        mov     r9d,eax
> > > > > >
> > > > > > +        cmp     edx,0x49656e69
> > > > > >
> > > > > > +        setne   al
> > > > > >
> > > > > > +        or      r9d,eax
> > > > > >
> > > > > > +        cmp     ecx,0x6c65746e
> > > > > >
> > > > > > +        setne   al
> > > > > >
> > > > > > +        or      r9d,eax
> > > > > >
> > > > > > +        jz      NEAR $L$intel
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        cmp     ebx,0x68747541
> > > > > >
> > > > > > +        setne   al
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +        cmp     edx,0x69746E65
> > > > > >
> > > > > > +        setne   al
> > > > > >
> > > > > > +        or      r10d,eax
> > > > > >
> > > > > > +        cmp     ecx,0x444D4163
> > > > > >
> > > > > > +        setne   al
> > > > > >
> > > > > > +        or      r10d,eax
> > > > > >
> > > > > > +        jnz     NEAR $L$intel
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,0x80000000
> > > > > >
> > > > > > +        cpuid
> > > > > >
> > > > > > +        cmp     eax,0x80000001
> > > > > >
> > > > > > +        jb      NEAR $L$intel
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +        mov     eax,0x80000001
> > > > > >
> > > > > > +        cpuid
> > > > > >
> > > > > > +        or      r9d,ecx
> > > > > >
> > > > > > +        and     r9d,0x00000801
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        cmp     r10d,0x80000008
> > > > > >
> > > > > > +        jb      NEAR $L$intel
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,0x80000008
> > > > > >
> > > > > > +        cpuid
> > > > > >
> > > > > > +        movzx   r10,cl
> > > > > >
> > > > > > +        inc     r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,1
> > > > > >
> > > > > > +        cpuid
> > > > > >
> > > > > > +        bt      edx,28
> > > > > >
> > > > > > +        jnc     NEAR $L$generic
> > > > > >
> > > > > > +        shr     ebx,16
> > > > > >
> > > > > > +        cmp     bl,r10b
> > > > > >
> > > > > > +        ja      NEAR $L$generic
> > > > > >
> > > > > > +        and     edx,0xefffffff
> > > > > >
> > > > > > +        jmp     NEAR $L$generic
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$intel:
> > > > > >
> > > > > > +        cmp     r11d,4
> > > > > >
> > > > > > +        mov     r10d,-1
> > > > > >
> > > > > > +        jb      NEAR $L$nocacheinfo
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,4
> > > > > >
> > > > > > +        mov     ecx,0
> > > > > >
> > > > > > +        cpuid
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +        shr     r10d,14
> > > > > >
> > > > > > +        and     r10d,0xfff
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$nocacheinfo:
> > > > > >
> > > > > > +        mov     eax,1
> > > > > >
> > > > > > +        cpuid
> > > > > >
> > > > > > +        movd    xmm0,eax
> > > > > >
> > > > > > +        and     edx,0xbfefffff
> > > > > >
> > > > > > +        cmp     r9d,0
> > > > > >
> > > > > > +        jne     NEAR $L$notintel
> > > > > >
> > > > > > +        or      edx,0x40000000
> > > > > >
> > > > > > +        and     ah,15
> > > > > >
> > > > > > +        cmp     ah,15
> > > > > >
> > > > > > +        jne     NEAR $L$notP4
> > > > > >
> > > > > > +        or      edx,0x00100000
> > > > > >
> > > > > > +$L$notP4:
> > > > > >
> > > > > > +        cmp     ah,6
> > > > > >
> > > > > > +        jne     NEAR $L$notintel
> > > > > >
> > > > > > +        and     eax,0x0fff0ff0
> > > > > >
> > > > > > +        cmp     eax,0x00050670
> > > > > >
> > > > > > +        je      NEAR $L$knights
> > > > > >
> > > > > > +        cmp     eax,0x00080650
> > > > > >
> > > > > > +        jne     NEAR $L$notintel
> > > > > >
> > > > > > +$L$knights:
> > > > > >
> > > > > > +        and     ecx,0xfbffffff
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$notintel:
> > > > > >
> > > > > > +        bt      edx,28
> > > > > >
> > > > > > +        jnc     NEAR $L$generic
> > > > > >
> > > > > > +        and     edx,0xefffffff
> > > > > >
> > > > > > +        cmp     r10d,0
> > > > > >
> > > > > > +        je      NEAR $L$generic
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        or      edx,0x10000000
> > > > > >
> > > > > > +        shr     ebx,16
> > > > > >
> > > > > > +        cmp     bl,1
> > > > > >
> > > > > > +        ja      NEAR $L$generic
> > > > > >
> > > > > > +        and     edx,0xefffffff
> > > > > >
> > > > > > +$L$generic:
> > > > > >
> > > > > > +        and     r9d,0x00000800
> > > > > >
> > > > > > +        and     ecx,0xfffff7ff
> > > > > >
> > > > > > +        or      r9d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        cmp     r11d,7
> > > > > >
> > > > > > +        jb      NEAR $L$no_extended_info
> > > > > >
> > > > > > +        mov     eax,7
> > > > > >
> > > > > > +        xor     ecx,ecx
> > > > > >
> > > > > > +        cpuid
> > > > > >
> > > > > > +        bt      r9d,26
> > > > > >
> > > > > > +        jc      NEAR $L$notknights
> > > > > >
> > > > > > +        and     ebx,0xfff7ffff
> > > > > >
> > > > > > +$L$notknights:
> > > > > >
> > > > > > +        movd    eax,xmm0
> > > > > >
> > > > > > +        and     eax,0x0fff0ff0
> > > > > >
> > > > > > +        cmp     eax,0x00050650
> > > > > >
> > > > > > +        jne     NEAR $L$notskylakex
> > > > > >
> > > > > > +        and     ebx,0xfffeffff
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$notskylakex:
> > > > > >
> > > > > > +        mov     DWORD[8+rdi],ebx
> > > > > >
> > > > > > +        mov     DWORD[12+rdi],ecx
> > > > > >
> > > > > > +$L$no_extended_info:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        bt      r9d,27
> > > > > >
> > > > > > +        jnc     NEAR $L$clear_avx
> > > > > >
> > > > > > +        xor     ecx,ecx
> > > > > >
> > > > > > +DB      0x0f,0x01,0xd0
> > > > > >
> > > > > > +        and     eax,0xe6
> > > > > >
> > > > > > +        cmp     eax,0xe6
> > > > > >
> > > > > > +        je      NEAR $L$done
> > > > > >
> > > > > > +        and     DWORD[8+rdi],0x3fdeffff
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     eax,6
> > > > > >
> > > > > > +        cmp     eax,6
> > > > > >
> > > > > > +        je      NEAR $L$done
> > > > > >
> > > > > > +$L$clear_avx:
> > > > > >
> > > > > > +        mov     eax,0xefffe7ff
> > > > > >
> > > > > > +        and     r9d,eax
> > > > > >
> > > > > > +        mov     eax,0x3fdeffdf
> > > > > >
> > > > > > +        and     DWORD[8+rdi],eax
> > > > > >
> > > > > > +$L$done:
> > > > > >
> > > > > > +        shl     r9,32
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        mov     rbx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        or      rax,r9
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_OPENSSL_ia32_cpuid:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  OPENSSL_cleanse
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +OPENSSL_cleanse:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rax,rax
> > > > > >
> > > > > > +        cmp     rdx,15
> > > > > >
> > > > > > +        jae     NEAR $L$ot
> > > > > >
> > > > > > +        cmp     rdx,0
> > > > > >
> > > > > > +        je      NEAR $L$ret
> > > > > >
> > > > > > +$L$ittle:
> > > > > >
> > > > > > +        mov     BYTE[rcx],al
> > > > > >
> > > > > > +        sub     rdx,1
> > > > > >
> > > > > > +        lea     rcx,[1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$ittle
> > > > > >
> > > > > > +$L$ret:
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ot:
> > > > > >
> > > > > > +        test    rcx,7
> > > > > >
> > > > > > +        jz      NEAR $L$aligned
> > > > > >
> > > > > > +        mov     BYTE[rcx],al
> > > > > >
> > > > > > +        lea     rdx,[((-1))+rdx]
> > > > > >
> > > > > > +        lea     rcx,[1+rcx]
> > > > > >
> > > > > > +        jmp     NEAR $L$ot
> > > > > >
> > > > > > +$L$aligned:
> > > > > >
> > > > > > +        mov     QWORD[rcx],rax
> > > > > >
> > > > > > +        lea     rdx,[((-8))+rdx]
> > > > > >
> > > > > > +        test    rdx,-8
> > > > > >
> > > > > > +        lea     rcx,[8+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$aligned
> > > > > >
> > > > > > +        cmp     rdx,0
> > > > > >
> > > > > > +        jne     NEAR $L$ittle
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  CRYPTO_memcmp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +CRYPTO_memcmp:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rax,rax
> > > > > >
> > > > > > +        xor     r10,r10
> > > > > >
> > > > > > +        cmp     r8,0
> > > > > >
> > > > > > +        je      NEAR $L$no_data
> > > > > >
> > > > > > +        cmp     r8,16
> > > > > >
> > > > > > +        jne     NEAR $L$oop_cmp
> > > > > >
> > > > > > +        mov     r10,QWORD[rcx]
> > > > > >
> > > > > > +        mov     r11,QWORD[8+rcx]
> > > > > >
> > > > > > +        mov     r8,1
> > > > > >
> > > > > > +        xor     r10,QWORD[rdx]
> > > > > >
> > > > > > +        xor     r11,QWORD[8+rdx]
> > > > > >
> > > > > > +        or      r10,r11
> > > > > >
> > > > > > +        cmovnz  rax,r8
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$oop_cmp:
> > > > > >
> > > > > > +        mov     r10b,BYTE[rcx]
> > > > > >
> > > > > > +        lea     rcx,[1+rcx]
> > > > > >
> > > > > > +        xor     r10b,BYTE[rdx]
> > > > > >
> > > > > > +        lea     rdx,[1+rdx]
> > > > > >
> > > > > > +        or      al,r10b
> > > > > >
> > > > > > +        dec     r8
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_cmp
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +        shr     rax,63
> > > > > >
> > > > > > +$L$no_data:
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  OPENSSL_wipe_cpu
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +OPENSSL_wipe_cpu:
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        xor     rdx,rdx
> > > > > >
> > > > > > +        xor     r8,r8
> > > > > >
> > > > > > +        xor     r9,r9
> > > > > >
> > > > > > +        xor     r10,r10
> > > > > >
> > > > > > +        xor     r11,r11
> > > > > >
> > > > > > +        lea     rax,[8+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  OPENSSL_instrument_bus
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +OPENSSL_instrument_bus:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10,rcx
> > > > > >
> > > > > > +        mov     rcx,rdx
> > > > > >
> > > > > > +        mov     r11,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        rdtsc
> > > > > >
> > > > > > +        mov     r8d,eax
> > > > > >
> > > > > > +        mov     r9d,0
> > > > > >
> > > > > > +        clflush [r10]
> > > > > >
> > > > > > +DB      0xf0
> > > > > >
> > > > > > +        add     DWORD[r10],r9d
> > > > > >
> > > > > > +        jmp     NEAR $L$oop
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$oop: rdtsc
> > > > > >
> > > > > > +        mov     edx,eax
> > > > > >
> > > > > > +        sub     eax,r8d
> > > > > >
> > > > > > +        mov     r8d,edx
> > > > > >
> > > > > > +        mov     r9d,eax
> > > > > >
> > > > > > +        clflush [r10]
> > > > > >
> > > > > > +DB      0xf0
> > > > > >
> > > > > > +        add     DWORD[r10],eax
> > > > > >
> > > > > > +        lea     r10,[4+r10]
> > > > > >
> > > > > > +        sub     rcx,1
> > > > > >
> > > > > > +        jnz     NEAR $L$oop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,r11
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  OPENSSL_instrument_bus2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +OPENSSL_instrument_bus2:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10,rcx
> > > > > >
> > > > > > +        mov     rcx,rdx
> > > > > >
> > > > > > +        mov     r11,r8
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        rdtsc
> > > > > >
> > > > > > +        mov     r8d,eax
> > > > > >
> > > > > > +        mov     r9d,0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        clflush [r10]
> > > > > >
> > > > > > +DB      0xf0
> > > > > >
> > > > > > +        add     DWORD[r10],r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        rdtsc
> > > > > >
> > > > > > +        mov     edx,eax
> > > > > >
> > > > > > +        sub     eax,r8d
> > > > > >
> > > > > > +        mov     r8d,edx
> > > > > >
> > > > > > +        mov     r9d,eax
> > > > > >
> > > > > > +$L$oop2:
> > > > > >
> > > > > > +        clflush [r10]
> > > > > >
> > > > > > +DB      0xf0
> > > > > >
> > > > > > +        add     DWORD[r10],eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     r11,1
> > > > > >
> > > > > > +        jz      NEAR $L$done2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        rdtsc
> > > > > >
> > > > > > +        mov     edx,eax
> > > > > >
> > > > > > +        sub     eax,r8d
> > > > > >
> > > > > > +        mov     r8d,edx
> > > > > >
> > > > > > +        cmp     eax,r9d
> > > > > >
> > > > > > +        mov     r9d,eax
> > > > > >
> > > > > > +        mov     edx,0
> > > > > >
> > > > > > +        setne   dl
> > > > > >
> > > > > > +        sub     rcx,rdx
> > > > > >
> > > > > > +        lea     r10,[rdx*4+r10]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$done2:
> > > > > >
> > > > > > +        mov     rax,QWORD[8+rsp]
> > > > > >
> > > > > > +        sub     rax,rcx
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  OPENSSL_ia32_rdrand_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +OPENSSL_ia32_rdrand_bytes:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rax,rax
> > > > > >
> > > > > > +        cmp     rdx,0
> > > > > >
> > > > > > +        je      NEAR $L$done_rdrand_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r11,8
> > > > > >
> > > > > > +$L$oop_rdrand_bytes:
> > > > > >
> > > > > > +DB      73,15,199,242
> > > > > >
> > > > > > +        jc      NEAR $L$break_rdrand_bytes
> > > > > >
> > > > > > +        dec     r11
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_rdrand_bytes
> > > > > >
> > > > > > +        jmp     NEAR $L$done_rdrand_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$break_rdrand_bytes:
> > > > > >
> > > > > > +        cmp     rdx,8
> > > > > >
> > > > > > +        jb      NEAR $L$tail_rdrand_bytes
> > > > > >
> > > > > > +        mov     QWORD[rcx],r10
> > > > > >
> > > > > > +        lea     rcx,[8+rcx]
> > > > > >
> > > > > > +        add     rax,8
> > > > > >
> > > > > > +        sub     rdx,8
> > > > > >
> > > > > > +        jz      NEAR $L$done_rdrand_bytes
> > > > > >
> > > > > > +        mov     r11,8
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_rdrand_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$tail_rdrand_bytes:
> > > > > >
> > > > > > +        mov     BYTE[rcx],r10b
> > > > > >
> > > > > > +        lea     rcx,[1+rcx]
> > > > > >
> > > > > > +        inc     rax
> > > > > >
> > > > > > +        shr     r10,8
> > > > > >
> > > > > > +        dec     rdx
> > > > > >
> > > > > > +        jnz     NEAR $L$tail_rdrand_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$done_rdrand_bytes:
> > > > > >
> > > > > > +        xor     r10,r10
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  OPENSSL_ia32_rdseed_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +OPENSSL_ia32_rdseed_bytes:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rax,rax
> > > > > >
> > > > > > +        cmp     rdx,0
> > > > > >
> > > > > > +        je      NEAR $L$done_rdseed_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r11,8
> > > > > >
> > > > > > +$L$oop_rdseed_bytes:
> > > > > >
> > > > > > +DB      73,15,199,250
> > > > > >
> > > > > > +        jc      NEAR $L$break_rdseed_bytes
> > > > > >
> > > > > > +        dec     r11
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_rdseed_bytes
> > > > > >
> > > > > > +        jmp     NEAR $L$done_rdseed_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$break_rdseed_bytes:
> > > > > >
> > > > > > +        cmp     rdx,8
> > > > > >
> > > > > > +        jb      NEAR $L$tail_rdseed_bytes
> > > > > >
> > > > > > +        mov     QWORD[rcx],r10
> > > > > >
> > > > > > +        lea     rcx,[8+rcx]
> > > > > >
> > > > > > +        add     rax,8
> > > > > >
> > > > > > +        sub     rdx,8
> > > > > >
> > > > > > +        jz      NEAR $L$done_rdseed_bytes
> > > > > >
> > > > > > +        mov     r11,8
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_rdseed_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$tail_rdseed_bytes:
> > > > > >
> > > > > > +        mov     BYTE[rcx],r10b
> > > > > >
> > > > > > +        lea     rcx,[1+rcx]
> > > > > >
> > > > > > +        inc     rax
> > > > > >
> > > > > > +        shr     r10,8
> > > > > >
> > > > > > +        dec     rdx
> > > > > >
> > > > > > +        jnz     NEAR $L$tail_rdseed_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$done_rdseed_bytes:
> > > > > >
> > > > > > +        xor     r10,r10
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > --
> > > > > > 2.28.0.windows.1


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

* Re: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
  2020-08-18 16:15           ` Michael D Kinney
@ 2020-08-18 21:22             ` Zurcher, Christopher J
  2020-08-19 15:37               ` [edk2-devel] " Andrew Fish
  0 siblings, 1 reply; 42+ messages in thread
From: Zurcher, Christopher J @ 2020-08-18 21:22 UTC (permalink / raw)
  To: Kinney, Michael D, Yao, Jiewen, devel@edk2.groups.io
  Cc: Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel

Per the added header comment in process_files.pl:

# Due to the script wrapping required to process the OpenSSL
# configuration data, each native architecture must be processed
# individually by the maintainer (in addition to the standard version):
#   ./process_files.pl
#   ./process_files.pl X64
#   ./process_files.pl [Arch]

--
Christopher Zurcher

> -----Original Message-----
> From: Kinney, Michael D <michael.d.kinney@intel.com>
> Sent: Tuesday, August 18, 2020 09:15
> To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>; Yao, Jiewen
> <jiewen.yao@intel.com>; devel@edk2.groups.io; Kinney, Michael D
> <michael.d.kinney@intel.com>
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated
> assembly files for X64
> 
> Christopher,
> 
> Can you provide the details on how to generate the IA32 and X64 files?  What
> is the additional parameter?
> 
> Thanks,
> 
> Mike
> 
> > -----Original Message-----
> > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > Sent: Friday, August 14, 2020 12:35 PM
> > To: Yao, Jiewen <jiewen.yao@intel.com>; Kinney, Michael D
> <michael.d.kinney@intel.com>; devel@edk2.groups.io
> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated
> assembly files for X64
> >
> > The current OpenSSL "UEFI" configuration depends on the OpenSSL build
> happening in a Unix-like environment. For a Windows-based
> > build, this must be done in a wrapper such as Cygwin/git bash or WSL.
> Integrating the OpenSSL config step into the build process is
> > a non-trivial change.
> >
> > > > > That means, whenever we upgrade the openssl, we need manually
> generate
> > > > > them again.
> > > > > Any step by step, or readme to tell us how to do that?
> >
> > The process for generating these X64 files is virtually identical to the
> already-existing maintainer process for OpensslLib, with
> > only one additional argument required to process_files.pl.
> >
> > OpensslLib as it exists today in EDK2 already includes auto-generated files
> from the Perl configure process. If we want to re-
> > architect how we include OpenSSL into EDK2, I think that should be done in
> a different patch set. Additionally, such a large task
> > might be a waste of time with the release of OpenSSL 3 happening later this
> year. They are making changes to their build system, and
> > I think that if we are going to re-architect our side of it, we should wait
> until we are adopting OpenSSL 3.
> >
> > --
> > Christopher Zurcher
> >
> > > -----Original Message-----
> > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > Sent: Thursday, August 13, 2020 08:46
> > > To: Kinney, Michael D <michael.d.kinney@intel.com>; Zurcher, Christopher
> J
> > > <christopher.j.zurcher@intel.com>; devel@edk2.groups.io
> > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>;
> > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
> generated
> > > assembly files for X64
> > >
> > > Thank you Mike to help on this.
> > >
> > > I also believe that the best option is to integrate the auto-gen process
> in
> > > base tool.
> > >
> > >
> > >
> > > > -----Original Message-----
> > > > From: Kinney, Michael D <michael.d.kinney@intel.com>
> > > > Sent: Thursday, August 13, 2020 11:38 PM
> > > > To: Yao, Jiewen <jiewen.yao@intel.com>; Zurcher, Christopher J
> > > > <christopher.j.zurcher@intel.com>; devel@edk2.groups.io; Kinney,
> Michael D
> > > > <michael.d.kinney@intel.com>
> > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > <xiaoyux.lu@intel.com>;
> > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
> generated
> > > > assembly files for X64
> > > >
> > > > Hi Jiewen,
> > > >
> > > > For this use case, generating the files as part of the build process
> would
> > > add
> > > > a dependency in pearl.
> > > >
> > > > Based on other recent CryptoPkg changes and some being discussed in BZ,
> I
> > > am
> > > > seeing more changes to the OpenSLL .pl configuration files, and I am
> > > concerned
> > > > that based on platform requirements, we may need to build OpenSSL with
> > > > different .pl config file settings which would also add a pearl
> dependency
> > > > to the build.
> > > >
> > > > So exploring what it would take to add the pearl dependency to the
> build
> > > system
> > > > is worth exploring and if successful would eliminate the need to
> checkin
> > > these
> > > > types of autogenerated files.  This would also reduce maintenance of
> the
> > > > auto-genererated files when EDK II moves to a new version of OpenSSL.
> > > >
> > > > @Cristopher - Can you please share a branch that uses pearl to generate
> the
> > > > files
> > > > instead of checking them in?  I would like the BaseTools maintainers to
> > > review
> > > > that and evaluate adding the pearl dependency.  Hopefully, we can make
> the
> > > > pearl dependency detectable so it is only required if the build
> requires
> > > it.
> > > >
> > > > Thanks,
> > > >
> > > > Mike
> > > >
> > > > > -----Original Message-----
> > > > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > > > Sent: Thursday, August 13, 2020 8:25 AM
> > > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > > > devel@edk2.groups.io
> > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > <xiaoyux.lu@intel.com>; Kinney, Michael D
> > > > > <michael.d.kinney@intel.com>; Ard Biesheuvel
> <ard.biesheuvel@linaro.org>
> > > > > Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
> > > > generated assembly files for X64
> > > > >
> > > > > + Mike Kinney
> > > > >
> > > > > I am not sure if it is a right way to check in auto-generated file.
> > > > > That means, whenever we upgrade the openssl, we need manually
> generate
> > > > them again.
> > > > > Any step by step, or readme to tell us how to do that?
> > > > >
> > > > > Mike, would you please double confirm what is the right way for auto-
> > > > generated file in EDKII?
> > > > >
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > > > Sent: Tuesday, August 4, 2020 8:24 AM
> > > > > > To: devel@edk2.groups.io
> > > > > > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> > > > <jian.j.wang@intel.com>;
> > > > > > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > > > <ard.biesheuvel@linaro.org>
> > > > > > Subject: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
> generated
> > > > > > assembly files for X64
> > > > > >
> > > > > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> > > > > >
> > > > > > Adding the auto-generated assembly files for the X64 architecture.
> > > > > >
> > > > > > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > > > > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > > > > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > > > > > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > Signed-off-by: Christopher J Zurcher
> <christopher.j.zurcher@intel.com>
> > > > > > ---
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm
> |
> > > > 732
> > > > > > +++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm
> |
> > > > > > 1916 ++++++++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> x86_64.nasm |
> > > > > > 78 +
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
> |
> > > > 5103
> > > > > > ++++++++++++++++++++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
> |
> > > > 1173
> > > > > > +++++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm
> |
> > > > > > 1569 ++++++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm
> |
> > > > 3137
> > > > > > ++++++++++++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> |
> > > > 2884
> > > > > > +++++++++++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm
> |
> > > > > > 3461 +++++++++++++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
> |
> > > > 3313
> > > > > > +++++++++++++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
> |
> > > > 1938
> > > > > > ++++++++
> > > > > >  CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> |
> > > 491
> > > > ++
> > > > > >  12 files changed, 25795 insertions(+)
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
> > > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
> > > > > > x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..1a3ed1dd35
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
> x86_64.nasm
> > > > > > @@ -0,0 +1,732 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/aes/asm/aesni-mb-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not
> use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain
> a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  aesni_multi_cbc_encrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +aesni_multi_cbc_encrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_multi_cbc_encrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-168))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+rax],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+rax],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+rax],xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsp,48
> > > > > >
> > > > > > +        and     rsp,-64
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$enc4x_body:
> > > > > >
> > > > > > +        movdqu  xmm12,XMMWORD[rsi]
> > > > > >
> > > > > > +        lea     rsi,[120+rsi]
> > > > > >
> > > > > > +        lea     rdi,[80+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$enc4x_loop_grande:
> > > > > >
> > > > > > +        mov     DWORD[24+rsp],edx
> > > > > >
> > > > > > +        xor     edx,edx
> > > > > >
> > > > > > +        mov     ecx,DWORD[((-64))+rdi]
> > > > > >
> > > > > > +        mov     r8,QWORD[((-80))+rdi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        mov     r12,QWORD[((-72))+rdi]
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[((-56))+rdi]
> > > > > >
> > > > > > +        mov     DWORD[32+rsp],ecx
> > > > > >
> > > > > > +        cmovle  r8,rsp
> > > > > >
> > > > > > +        mov     ecx,DWORD[((-24))+rdi]
> > > > > >
> > > > > > +        mov     r9,QWORD[((-40))+rdi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        mov     r13,QWORD[((-32))+rdi]
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[((-16))+rdi]
> > > > > >
> > > > > > +        mov     DWORD[36+rsp],ecx
> > > > > >
> > > > > > +        cmovle  r9,rsp
> > > > > >
> > > > > > +        mov     ecx,DWORD[16+rdi]
> > > > > >
> > > > > > +        mov     r10,QWORD[rdi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        mov     r14,QWORD[8+rdi]
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[24+rdi]
> > > > > >
> > > > > > +        mov     DWORD[40+rsp],ecx
> > > > > >
> > > > > > +        cmovle  r10,rsp
> > > > > >
> > > > > > +        mov     ecx,DWORD[56+rdi]
> > > > > >
> > > > > > +        mov     r11,QWORD[40+rdi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        mov     r15,QWORD[48+rdi]
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        mov     DWORD[44+rsp],ecx
> > > > > >
> > > > > > +        cmovle  r11,rsp
> > > > > >
> > > > > > +        test    edx,edx
> > > > > >
> > > > > > +        jz      NEAR $L$enc4x_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((16-120))+rsi]
> > > > > >
> > > > > > +        pxor    xmm2,xmm12
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((32-120))+rsi]
> > > > > >
> > > > > > +        pxor    xmm3,xmm12
> > > > > >
> > > > > > +        mov     eax,DWORD[((240-120))+rsi]
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[r8]
> > > > > >
> > > > > > +        pxor    xmm5,xmm12
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[r9]
> > > > > >
> > > > > > +        pxor    xmm2,xmm6
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[r10]
> > > > > >
> > > > > > +        pxor    xmm3,xmm7
> > > > > >
> > > > > > +        movdqu  xmm9,XMMWORD[r11]
> > > > > >
> > > > > > +        pxor    xmm4,xmm8
> > > > > >
> > > > > > +        pxor    xmm5,xmm9
> > > > > >
> > > > > > +        movdqa  xmm10,XMMWORD[32+rsp]
> > > > > >
> > > > > > +        xor     rbx,rbx
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_enc4x
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$oop_enc4x:
> > > > > >
> > > > > > +        add     rbx,16
> > > > > >
> > > > > > +        lea     rbp,[16+rsp]
> > > > > >
> > > > > > +        mov     ecx,1
> > > > > >
> > > > > > +        sub     rbp,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        prefetcht0      [31+rbx*1+r8]
> > > > > >
> > > > > > +        prefetcht0      [31+rbx*1+r9]
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        prefetcht0      [31+rbx*1+r10]
> > > > > >
> > > > > > +        prefetcht0      [31+rbx*1+r10]
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((48-120))+rsi]
> > > > > >
> > > > > > +        cmp     ecx,DWORD[32+rsp]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +        cmovge  r8,rbp
> > > > > >
> > > > > > +        cmovg   r12,rbp
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-56))+rsi]
> > > > > >
> > > > > > +        cmp     ecx,DWORD[36+rsp]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +        cmovge  r9,rbp
> > > > > >
> > > > > > +        cmovg   r13,rbp
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-40))+rsi]
> > > > > >
> > > > > > +        cmp     ecx,DWORD[40+rsp]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +        cmovge  r10,rbp
> > > > > >
> > > > > > +        cmovg   r14,rbp
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-24))+rsi]
> > > > > >
> > > > > > +        cmp     ecx,DWORD[44+rsp]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +        cmovge  r11,rbp
> > > > > >
> > > > > > +        cmovg   r15,rbp
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-8))+rsi]
> > > > > >
> > > > > > +        movdqa  xmm11,xmm10
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        prefetcht0      [15+rbx*1+r12]
> > > > > >
> > > > > > +        prefetcht0      [15+rbx*1+r13]
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        prefetcht0      [15+rbx*1+r14]
> > > > > >
> > > > > > +        prefetcht0      [15+rbx*1+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((128-120))+rsi]
> > > > > >
> > > > > > +        pxor    xmm12,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        pcmpgtd xmm11,xmm12
> > > > > >
> > > > > > +        movdqu  xmm12,XMMWORD[((-120))+rsi]
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        paddd   xmm10,xmm11
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm10
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((144-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        cmp     eax,11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((160-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jb      NEAR $L$enc4x_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((176-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((192-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        je      NEAR $L$enc4x_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((208-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((224-120))+rsi]
> > > > > >
> > > > > > +        jmp     NEAR $L$enc4x_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$enc4x_tail:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[rbx*1+r8]
> > > > > >
> > > > > > +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,221,208
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[rbx*1+r9]
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +DB      102,15,56,221,216
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[rbx*1+r10]
> > > > > >
> > > > > > +        pxor    xmm7,xmm12
> > > > > >
> > > > > > +DB      102,15,56,221,224
> > > > > >
> > > > > > +        movdqu  xmm9,XMMWORD[rbx*1+r11]
> > > > > >
> > > > > > +        pxor    xmm8,xmm12
> > > > > >
> > > > > > +DB      102,15,56,221,232
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
> > > > > >
> > > > > > +        pxor    xmm9,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm6
> > > > > >
> > > > > > +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm7
> > > > > >
> > > > > > +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm8
> > > > > >
> > > > > > +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_enc4x
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[16+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edx,DWORD[24+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rdi,[160+rdi]
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$enc4x_loop_grande
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$enc4x_done:
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-216))+rax]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-200))+rax]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-184))+rax]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-168))+rax]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-152))+rax]
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-136))+rax]
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-120))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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$enc4x_epilogue:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_aesni_multi_cbc_encrypt:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  aesni_multi_cbc_decrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +aesni_multi_cbc_decrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_multi_cbc_decrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-168))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+rax],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+rax],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+rax],xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsp,48
> > > > > >
> > > > > > +        and     rsp,-64
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$dec4x_body:
> > > > > >
> > > > > > +        movdqu  xmm12,XMMWORD[rsi]
> > > > > >
> > > > > > +        lea     rsi,[120+rsi]
> > > > > >
> > > > > > +        lea     rdi,[80+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$dec4x_loop_grande:
> > > > > >
> > > > > > +        mov     DWORD[24+rsp],edx
> > > > > >
> > > > > > +        xor     edx,edx
> > > > > >
> > > > > > +        mov     ecx,DWORD[((-64))+rdi]
> > > > > >
> > > > > > +        mov     r8,QWORD[((-80))+rdi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        mov     r12,QWORD[((-72))+rdi]
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[((-56))+rdi]
> > > > > >
> > > > > > +        mov     DWORD[32+rsp],ecx
> > > > > >
> > > > > > +        cmovle  r8,rsp
> > > > > >
> > > > > > +        mov     ecx,DWORD[((-24))+rdi]
> > > > > >
> > > > > > +        mov     r9,QWORD[((-40))+rdi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        mov     r13,QWORD[((-32))+rdi]
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[((-16))+rdi]
> > > > > >
> > > > > > +        mov     DWORD[36+rsp],ecx
> > > > > >
> > > > > > +        cmovle  r9,rsp
> > > > > >
> > > > > > +        mov     ecx,DWORD[16+rdi]
> > > > > >
> > > > > > +        mov     r10,QWORD[rdi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        mov     r14,QWORD[8+rdi]
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[24+rdi]
> > > > > >
> > > > > > +        mov     DWORD[40+rsp],ecx
> > > > > >
> > > > > > +        cmovle  r10,rsp
> > > > > >
> > > > > > +        mov     ecx,DWORD[56+rdi]
> > > > > >
> > > > > > +        mov     r11,QWORD[40+rdi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        mov     r15,QWORD[48+rdi]
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        movdqu  xmm9,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        mov     DWORD[44+rsp],ecx
> > > > > >
> > > > > > +        cmovle  r11,rsp
> > > > > >
> > > > > > +        test    edx,edx
> > > > > >
> > > > > > +        jz      NEAR $L$dec4x_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((16-120))+rsi]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((32-120))+rsi]
> > > > > >
> > > > > > +        mov     eax,DWORD[((240-120))+rsi]
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[r8]
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[r9]
> > > > > >
> > > > > > +        pxor    xmm2,xmm12
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[r10]
> > > > > >
> > > > > > +        pxor    xmm3,xmm12
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[r11]
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm5,xmm12
> > > > > >
> > > > > > +        movdqa  xmm10,XMMWORD[32+rsp]
> > > > > >
> > > > > > +        xor     rbx,rbx
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_dec4x
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$oop_dec4x:
> > > > > >
> > > > > > +        add     rbx,16
> > > > > >
> > > > > > +        lea     rbp,[16+rsp]
> > > > > >
> > > > > > +        mov     ecx,1
> > > > > >
> > > > > > +        sub     rbp,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        prefetcht0      [31+rbx*1+r8]
> > > > > >
> > > > > > +        prefetcht0      [31+rbx*1+r9]
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        prefetcht0      [31+rbx*1+r10]
> > > > > >
> > > > > > +        prefetcht0      [31+rbx*1+r11]
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((48-120))+rsi]
> > > > > >
> > > > > > +        cmp     ecx,DWORD[32+rsp]
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +        cmovge  r8,rbp
> > > > > >
> > > > > > +        cmovg   r12,rbp
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-56))+rsi]
> > > > > >
> > > > > > +        cmp     ecx,DWORD[36+rsp]
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +        cmovge  r9,rbp
> > > > > >
> > > > > > +        cmovg   r13,rbp
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-40))+rsi]
> > > > > >
> > > > > > +        cmp     ecx,DWORD[40+rsp]
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +        cmovge  r10,rbp
> > > > > >
> > > > > > +        cmovg   r14,rbp
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-24))+rsi]
> > > > > >
> > > > > > +        cmp     ecx,DWORD[44+rsp]
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +        cmovge  r11,rbp
> > > > > >
> > > > > > +        cmovg   r15,rbp
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-8))+rsi]
> > > > > >
> > > > > > +        movdqa  xmm11,xmm10
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +        prefetcht0      [15+rbx*1+r12]
> > > > > >
> > > > > > +        prefetcht0      [15+rbx*1+r13]
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +        prefetcht0      [15+rbx*1+r14]
> > > > > >
> > > > > > +        prefetcht0      [15+rbx*1+r15]
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((128-120))+rsi]
> > > > > >
> > > > > > +        pxor    xmm12,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        pcmpgtd xmm11,xmm12
> > > > > >
> > > > > > +        movdqu  xmm12,XMMWORD[((-120))+rsi]
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        paddd   xmm10,xmm11
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm10
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((144-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        cmp     eax,11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((160-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jb      NEAR $L$dec4x_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((176-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((192-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        je      NEAR $L$dec4x_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((208-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[((224-120))+rsi]
> > > > > >
> > > > > > +        jmp     NEAR $L$dec4x_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$dec4x_tail:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +        pxor    xmm6,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm0
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +        pxor    xmm9,xmm0
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,223,214
> > > > > >
> > > > > > +DB      102,15,56,223,223
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[((-16))+rbx*1+r8]
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[((-16))+rbx*1+r9]
> > > > > >
> > > > > > +DB      102,65,15,56,223,224
> > > > > >
> > > > > > +DB      102,65,15,56,223,233
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[((-16))+rbx*1+r10]
> > > > > >
> > > > > > +        movdqu  xmm9,XMMWORD[((-16))+rbx*1+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rbx*1+r8]
> > > > > >
> > > > > > +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[rbx*1+r9]
> > > > > >
> > > > > > +        pxor    xmm2,xmm12
> > > > > >
> > > > > > +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[rbx*1+r10]
> > > > > >
> > > > > > +        pxor    xmm3,xmm12
> > > > > >
> > > > > > +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[rbx*1+r11]
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm5,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_dec4x
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[16+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edx,DWORD[24+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rdi,[160+rdi]
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$dec4x_loop_grande
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$dec4x_done:
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-216))+rax]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-200))+rax]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-184))+rax]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-168))+rax]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-152))+rax]
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-136))+rax]
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-120))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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$dec4x_epilogue:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_aesni_multi_cbc_decrypt:
> > > > > >
> > > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[16+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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     rsi,[((-56-160))+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,20
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .pdata rdata align=4
> > > > > >
> > > > > > +ALIGN   4
> > > > > >
> > > > > > +        DD      $L$SEH_begin_aesni_multi_cbc_encrypt wrt
> ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_aesni_multi_cbc_encrypt wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_aesni_multi_cbc_encrypt wrt
> ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_begin_aesni_multi_cbc_decrypt wrt
> ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_aesni_multi_cbc_decrypt wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_aesni_multi_cbc_decrypt wrt
> ..imagebase
> > > > > >
> > > > > > +section .xdata rdata align=8
> > > > > >
> > > > > > +ALIGN   8
> > > > > >
> > > > > > +$L$SEH_info_aesni_multi_cbc_encrypt:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$enc4x_body wrt ..imagebase,$L$enc4x_epilogue
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > +$L$SEH_info_aesni_multi_cbc_decrypt:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$dec4x_body wrt ..imagebase,$L$dec4x_epilogue
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
> sha1-
> > > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
> sha1-
> > > > > > x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..f4fd9ca50d
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
> > > > x86_64.nasm
> > > > > > @@ -0,0 +1,1916 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/aes/asm/aesni-sha1-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not
> use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain
> a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  aesni_cbc_sha1_enc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +aesni_cbc_sha1_enc:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+0))]
> > > > > >
> > > > > > +        mov     r11,QWORD[((OPENSSL_ia32cap_P+4))]
> > > > > >
> > > > > > +        bt      r11,61
> > > > > >
> > > > > > +        jc      NEAR aesni_cbc_sha1_enc_shaext
> > > > > >
> > > > > > +        jmp     NEAR aesni_cbc_sha1_enc_ssse3
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +aesni_cbc_sha1_enc_ssse3:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_cbc_sha1_enc_ssse3:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10,QWORD[56+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-264))+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+0)+rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+16)+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+32)+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+48)+rsp],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+64)+rsp],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+80)+rsp],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+96)+rsp],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+112)+rsp],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+128)+rsp],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(96+144)+rsp],xmm15
> > > > > >
> > > > > > +$L$prologue_ssse3:
> > > > > >
> > > > > > +        mov     r12,rdi
> > > > > >
> > > > > > +        mov     r13,rsi
> > > > > >
> > > > > > +        mov     r14,rdx
> > > > > >
> > > > > > +        lea     r15,[112+rcx]
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[r8]
> > > > > >
> > > > > > +        mov     QWORD[88+rsp],r8
> > > > > >
> > > > > > +        shl     r14,6
> > > > > >
> > > > > > +        sub     r13,r12
> > > > > >
> > > > > > +        mov     r8d,DWORD[((240-112))+r15]
> > > > > >
> > > > > > +        add     r14,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r11,[K_XX_XX]
> > > > > >
> > > > > > +        mov     eax,DWORD[r9]
> > > > > >
> > > > > > +        mov     ebx,DWORD[4+r9]
> > > > > >
> > > > > > +        mov     ecx,DWORD[8+r9]
> > > > > >
> > > > > > +        mov     edx,DWORD[12+r9]
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        mov     ebp,DWORD[16+r9]
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        and     esi,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[64+r11]
> > > > > >
> > > > > > +        movdqa  xmm13,XMMWORD[r11]
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[r10]
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[16+r10]
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[32+r10]
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[48+r10]
> > > > > >
> > > > > > +DB      102,15,56,0,227
> > > > > >
> > > > > > +DB      102,15,56,0,235
> > > > > >
> > > > > > +DB      102,15,56,0,243
> > > > > >
> > > > > > +        add     r10,64
> > > > > >
> > > > > > +        paddd   xmm4,xmm13
> > > > > >
> > > > > > +DB      102,15,56,0,251
> > > > > >
> > > > > > +        paddd   xmm5,xmm13
> > > > > >
> > > > > > +        paddd   xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm4
> > > > > >
> > > > > > +        psubd   xmm4,xmm13
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm5
> > > > > >
> > > > > > +        psubd   xmm5,xmm13
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > > > >
> > > > > > +        psubd   xmm6,xmm13
> > > > > >
> > > > > > +        movups  xmm15,XMMWORD[((-112))+r15]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_ssse3
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$oop_ssse3:
> > > > > >
> > > > > > +        ror     ebx,2
> > > > > >
> > > > > > +        movups  xmm14,XMMWORD[r12]
> > > > > >
> > > > > > +        xorps   xmm14,xmm15
> > > > > >
> > > > > > +        xorps   xmm2,xmm14
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        pshufd  xmm8,xmm4,238
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        movdqa  xmm12,xmm7
> > > > > >
> > > > > > +        paddd   xmm13,xmm7
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        add     ebp,DWORD[rsp]
> > > > > >
> > > > > > +        punpcklqdq      xmm8,xmm5
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        psrldq  xmm12,4
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm8,xmm4
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        pxor    xmm12,xmm6
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        add     edx,DWORD[4+rsp]
> > > > > >
> > > > > > +        pxor    xmm8,xmm12
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm13
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        and     esi,eax
> > > > > >
> > > > > > +        movdqa  xmm3,xmm8
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        movdqa  xmm12,xmm8
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        pslldq  xmm3,12
> > > > > >
> > > > > > +        paddd   xmm8,xmm8
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        add     ecx,DWORD[8+rsp]
> > > > > >
> > > > > > +        psrld   xmm12,31
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        movdqa  xmm13,xmm3
> > > > > >
> > > > > > +        and     edi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        psrld   xmm3,30
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        por     xmm8,xmm12
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        add     ebx,DWORD[12+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        pslld   xmm13,2
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[r11]
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        and     esi,edx
> > > > > >
> > > > > > +        pxor    xmm8,xmm13
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        pshufd  xmm9,xmm5,238
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        movdqa  xmm13,xmm8
> > > > > >
> > > > > > +        paddd   xmm3,xmm8
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        add     eax,DWORD[16+rsp]
> > > > > >
> > > > > > +        punpcklqdq      xmm9,xmm6
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        psrldq  xmm13,4
> > > > > >
> > > > > > +        and     edi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm9,xmm5
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        pxor    xmm13,xmm7
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        add     ebp,DWORD[20+rsp]
> > > > > >
> > > > > > +        pxor    xmm9,xmm13
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm3
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        and     esi,ebx
> > > > > >
> > > > > > +        movdqa  xmm12,xmm9
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        movdqa  xmm13,xmm9
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        pslldq  xmm12,12
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        add     edx,DWORD[24+rsp]
> > > > > >
> > > > > > +        psrld   xmm13,31
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        movdqa  xmm3,xmm12
> > > > > >
> > > > > > +        and     edi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        psrld   xmm12,30
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        por     xmm9,xmm13
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        add     ecx,DWORD[28+rsp]
> > > > > >
> > > > > > +        pslld   xmm3,2
> > > > > >
> > > > > > +        pxor    xmm9,xmm12
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        movdqa  xmm12,XMMWORD[16+r11]
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        and     esi,ebp
> > > > > >
> > > > > > +        pxor    xmm9,xmm3
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        pshufd  xmm10,xmm6,238
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        movdqa  xmm3,xmm9
> > > > > >
> > > > > > +        paddd   xmm12,xmm9
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        add     ebx,DWORD[32+rsp]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        punpcklqdq      xmm10,xmm7
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        psrldq  xmm3,4
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm10,xmm6
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        pxor    xmm3,xmm8
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        add     eax,DWORD[36+rsp]
> > > > > >
> > > > > > +        pxor    xmm10,xmm3
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm12
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        and     esi,ecx
> > > > > >
> > > > > > +        movdqa  xmm13,xmm10
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        pslldq  xmm13,12
> > > > > >
> > > > > > +        paddd   xmm10,xmm10
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        add     ebp,DWORD[40+rsp]
> > > > > >
> > > > > > +        psrld   xmm3,31
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        movdqa  xmm12,xmm13
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        psrld   xmm13,30
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        por     xmm10,xmm3
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        add     edx,DWORD[44+rsp]
> > > > > >
> > > > > > +        pslld   xmm12,2
> > > > > >
> > > > > > +        pxor    xmm10,xmm13
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        movdqa  xmm13,XMMWORD[16+r11]
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        and     esi,eax
> > > > > >
> > > > > > +        pxor    xmm10,xmm12
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        pshufd  xmm11,xmm7,238
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        movdqa  xmm12,xmm10
> > > > > >
> > > > > > +        paddd   xmm13,xmm10
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        add     ecx,DWORD[48+rsp]
> > > > > >
> > > > > > +        punpcklqdq      xmm11,xmm8
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        psrldq  xmm12,4
> > > > > >
> > > > > > +        and     edi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm11,xmm7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        pxor    xmm12,xmm9
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        add     ebx,DWORD[52+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        pxor    xmm11,xmm12
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm13
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        and     esi,edx
> > > > > >
> > > > > > +        movdqa  xmm3,xmm11
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        movdqa  xmm12,xmm11
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        pslldq  xmm3,12
> > > > > >
> > > > > > +        paddd   xmm11,xmm11
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        add     eax,DWORD[56+rsp]
> > > > > >
> > > > > > +        psrld   xmm12,31
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        movdqa  xmm13,xmm3
> > > > > >
> > > > > > +        and     edi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        psrld   xmm3,30
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        cmp     r8d,11
> > > > > >
> > > > > > +        jb      NEAR $L$aesenclast1
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        je      NEAR $L$aesenclast1
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +$L$aesenclast1:
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > > >
> > > > > > +        por     xmm11,xmm12
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        add     ebp,DWORD[60+rsp]
> > > > > >
> > > > > > +        pslld   xmm13,2
> > > > > >
> > > > > > +        pxor    xmm11,xmm3
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[16+r11]
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        and     esi,ebx
> > > > > >
> > > > > > +        pxor    xmm11,xmm13
> > > > > >
> > > > > > +        pshufd  xmm13,xmm10,238
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        pxor    xmm4,xmm8
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        add     edx,DWORD[rsp]
> > > > > >
> > > > > > +        punpcklqdq      xmm13,xmm11
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        movups  xmm14,XMMWORD[16+r12]
> > > > > >
> > > > > > +        xorps   xmm14,xmm15
> > > > > >
> > > > > > +        movups  XMMWORD[r13*1+r12],xmm2
> > > > > >
> > > > > > +        xorps   xmm2,xmm14
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        and     edi,eax
> > > > > >
> > > > > > +        movdqa  xmm12,xmm3
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        paddd   xmm3,xmm11
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm4,xmm13
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        add     ecx,DWORD[4+rsp]
> > > > > >
> > > > > > +        movdqa  xmm13,xmm4
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm3
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        and     esi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        pslld   xmm4,2
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        psrld   xmm13,30
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        add     ebx,DWORD[8+rsp]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        por     xmm4,xmm13
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        pshufd  xmm3,xmm11,238
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[12+rsp]
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm5,xmm9
> > > > > >
> > > > > > +        add     ebp,DWORD[16+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        punpcklqdq      xmm3,xmm4
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        pxor    xmm5,xmm6
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        movdqa  xmm13,xmm12
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        paddd   xmm12,xmm4
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm5,xmm3
> > > > > >
> > > > > > +        add     edx,DWORD[20+rsp]
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        movdqa  xmm3,xmm5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm12
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[24+rsp]
> > > > > >
> > > > > > +        pslld   xmm5,2
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        psrld   xmm3,30
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        por     xmm5,xmm3
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[28+rsp]
> > > > > >
> > > > > > +        pshufd  xmm12,xmm4,238
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        add     eax,DWORD[32+rsp]
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        punpcklqdq      xmm12,xmm5
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[32+r11]
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        paddd   xmm13,xmm5
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +        add     ebp,DWORD[36+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        movdqa  xmm12,xmm6
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm13
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[40+rsp]
> > > > > >
> > > > > > +        pslld   xmm6,2
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        psrld   xmm12,30
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        por     xmm6,xmm12
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[44+rsp]
> > > > > >
> > > > > > +        pshufd  xmm13,xmm5,238
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm7,xmm11
> > > > > >
> > > > > > +        add     ebx,DWORD[48+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        punpcklqdq      xmm13,xmm6
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        pxor    xmm7,xmm8
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        movdqa  xmm12,xmm3
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        paddd   xmm3,xmm6
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm7,xmm13
> > > > > >
> > > > > > +        add     eax,DWORD[52+rsp]
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        movdqa  xmm13,xmm7
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm3
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[56+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        pslld   xmm7,2
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        psrld   xmm13,30
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        por     xmm7,xmm13
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[60+rsp]
> > > > > >
> > > > > > +        pshufd  xmm3,xmm6,238
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm8,xmm4
> > > > > >
> > > > > > +        add     ecx,DWORD[rsp]
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        punpcklqdq      xmm3,xmm7
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        pxor    xmm8,xmm9
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        movdqa  xmm13,xmm12
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        paddd   xmm12,xmm7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        add     ebx,DWORD[4+rsp]
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        movdqa  xmm3,xmm8
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm12
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[8+rsp]
> > > > > >
> > > > > > +        pslld   xmm8,2
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        psrld   xmm3,30
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        por     xmm8,xmm3
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[12+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        pshufd  xmm12,xmm7,238
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm9,xmm5
> > > > > >
> > > > > > +        add     edx,DWORD[16+rsp]
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        punpcklqdq      xmm12,xmm8
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        pxor    xmm9,xmm10
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        movdqa  xmm3,xmm13
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm9,xmm12
> > > > > >
> > > > > > +        add     ecx,DWORD[20+rsp]
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        movdqa  xmm12,xmm9
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        cmp     r8d,11
> > > > > >
> > > > > > +        jb      NEAR $L$aesenclast2
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        je      NEAR $L$aesenclast2
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +$L$aesenclast2:
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm13
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[24+rsp]
> > > > > >
> > > > > > +        pslld   xmm9,2
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        psrld   xmm12,30
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        por     xmm9,xmm12
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[28+rsp]
> > > > > >
> > > > > > +        pshufd  xmm13,xmm8,238
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm10,xmm6
> > > > > >
> > > > > > +        add     ebp,DWORD[32+rsp]
> > > > > >
> > > > > > +        movups  xmm14,XMMWORD[32+r12]
> > > > > >
> > > > > > +        xorps   xmm14,xmm15
> > > > > >
> > > > > > +        movups  XMMWORD[16+r12*1+r13],xmm2
> > > > > >
> > > > > > +        xorps   xmm2,xmm14
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        and     esi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        punpcklqdq      xmm13,xmm9
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        pxor    xmm10,xmm11
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        movdqa  xmm12,xmm3
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        paddd   xmm3,xmm9
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm10,xmm13
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[36+rsp]
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        movdqa  xmm13,xmm10
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm3
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        pslld   xmm10,2
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        psrld   xmm13,30
> > > > > >
> > > > > > +        add     ecx,DWORD[40+rsp]
> > > > > >
> > > > > > +        and     esi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        por     xmm10,xmm13
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        pshufd  xmm3,xmm9,238
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[44+rsp]
> > > > > >
> > > > > > +        and     edi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm11,xmm7
> > > > > >
> > > > > > +        add     eax,DWORD[48+rsp]
> > > > > >
> > > > > > +        and     esi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        punpcklqdq      xmm3,xmm10
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        pxor    xmm11,xmm4
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        movdqa  xmm13,XMMWORD[48+r11]
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        paddd   xmm12,xmm10
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm11,xmm3
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[52+rsp]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        and     edi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm11
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm12
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        pslld   xmm11,2
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        psrld   xmm3,30
> > > > > >
> > > > > > +        add     edx,DWORD[56+rsp]
> > > > > >
> > > > > > +        and     esi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        por     xmm11,xmm3
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        pshufd  xmm12,xmm10,238
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[60+rsp]
> > > > > >
> > > > > > +        and     edi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm4,xmm8
> > > > > >
> > > > > > +        add     ebx,DWORD[rsp]
> > > > > >
> > > > > > +        and     esi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        punpcklqdq      xmm12,xmm11
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        movdqa  xmm3,xmm13
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        paddd   xmm13,xmm11
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[4+rsp]
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        movdqa  xmm12,xmm4
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm13
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        pslld   xmm4,2
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        psrld   xmm12,30
> > > > > >
> > > > > > +        add     ebp,DWORD[8+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        and     esi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        por     xmm4,xmm12
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        pshufd  xmm13,xmm11,238
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[12+rsp]
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm5,xmm9
> > > > > >
> > > > > > +        add     ecx,DWORD[16+rsp]
> > > > > >
> > > > > > +        and     esi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        punpcklqdq      xmm13,xmm4
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        pxor    xmm5,xmm6
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        movdqa  xmm12,xmm3
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        paddd   xmm3,xmm4
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[20+rsp]
> > > > > >
> > > > > > +        and     edi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        movdqa  xmm13,xmm5
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm3
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        pslld   xmm5,2
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        psrld   xmm13,30
> > > > > >
> > > > > > +        add     eax,DWORD[24+rsp]
> > > > > >
> > > > > > +        and     esi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        por     xmm5,xmm13
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        pshufd  xmm3,xmm4,238
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[28+rsp]
> > > > > >
> > > > > > +        cmp     r8d,11
> > > > > >
> > > > > > +        jb      NEAR $L$aesenclast3
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        je      NEAR $L$aesenclast3
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +$L$aesenclast3:
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > > >
> > > > > > +        and     edi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        add     edx,DWORD[32+rsp]
> > > > > >
> > > > > > +        and     esi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        punpcklqdq      xmm3,xmm5
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        movups  xmm14,XMMWORD[48+r12]
> > > > > >
> > > > > > +        xorps   xmm14,xmm15
> > > > > >
> > > > > > +        movups  XMMWORD[32+r12*1+r13],xmm2
> > > > > >
> > > > > > +        xorps   xmm2,xmm14
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-80))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        movdqa  xmm13,xmm12
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        paddd   xmm12,xmm5
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm6,xmm3
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[36+rsp]
> > > > > >
> > > > > > +        and     edi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm6
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm12
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        pslld   xmm6,2
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        psrld   xmm3,30
> > > > > >
> > > > > > +        add     ebx,DWORD[40+rsp]
> > > > > >
> > > > > > +        and     esi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        por     xmm6,xmm3
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-64))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        pshufd  xmm12,xmm5,238
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[44+rsp]
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm7,xmm11
> > > > > >
> > > > > > +        add     ebp,DWORD[48+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-48))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        punpcklqdq      xmm12,xmm6
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        pxor    xmm7,xmm8
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        movdqa  xmm3,xmm13
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm7,xmm12
> > > > > >
> > > > > > +        add     edx,DWORD[52+rsp]
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        movdqa  xmm12,xmm7
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm13
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[56+rsp]
> > > > > >
> > > > > > +        pslld   xmm7,2
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        psrld   xmm12,30
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-32))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        por     xmm7,xmm12
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[60+rsp]
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[rsp]
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        paddd   xmm3,xmm7
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm3
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[4+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-16))+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[8+rsp]
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[12+rsp]
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        cmp     r10,r14
> > > > > >
> > > > > > +        je      NEAR $L$done_ssse3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[64+r11]
> > > > > >
> > > > > > +        movdqa  xmm13,XMMWORD[r11]
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[r10]
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[16+r10]
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[32+r10]
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[48+r10]
> > > > > >
> > > > > > +DB      102,15,56,0,227
> > > > > >
> > > > > > +        add     r10,64
> > > > > >
> > > > > > +        add     ebx,DWORD[16+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +DB      102,15,56,0,235
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        paddd   xmm4,xmm13
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[20+rsp]
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm4
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        psubd   xmm4,xmm13
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[24+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[28+rsp]
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[32+rsp]
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +DB      102,15,56,0,243
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        paddd   xmm5,xmm13
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[36+rsp]
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm5
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        psubd   xmm5,xmm13
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[40+rsp]
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[44+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[48+rsp]
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +DB      102,15,56,0,251
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        paddd   xmm6,xmm13
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[52+rsp]
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        cmp     r8d,11
> > > > > >
> > > > > > +        jb      NEAR $L$aesenclast4
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        je      NEAR $L$aesenclast4
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +$L$aesenclast4:
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        psubd   xmm6,xmm13
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[56+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[60+rsp]
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        movups  XMMWORD[48+r12*1+r13],xmm2
> > > > > >
> > > > > > +        lea     r12,[64+r12]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     eax,DWORD[r9]
> > > > > >
> > > > > > +        add     esi,DWORD[4+r9]
> > > > > >
> > > > > > +        add     ecx,DWORD[8+r9]
> > > > > >
> > > > > > +        add     edx,DWORD[12+r9]
> > > > > >
> > > > > > +        mov     DWORD[r9],eax
> > > > > >
> > > > > > +        add     ebp,DWORD[16+r9]
> > > > > >
> > > > > > +        mov     DWORD[4+r9],esi
> > > > > >
> > > > > > +        mov     ebx,esi
> > > > > >
> > > > > > +        mov     DWORD[8+r9],ecx
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        mov     DWORD[12+r9],edx
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     DWORD[16+r9],ebp
> > > > > >
> > > > > > +        and     esi,edi
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_ssse3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$done_ssse3:
> > > > > >
> > > > > > +        add     ebx,DWORD[16+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[20+rsp]
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[24+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[28+rsp]
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[32+rsp]
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[36+rsp]
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[40+rsp]
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[44+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[48+rsp]
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[52+rsp]
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        cmp     r8d,11
> > > > > >
> > > > > > +        jb      NEAR $L$aesenclast5
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[80+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        je      NEAR $L$aesenclast5
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[96+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[112+r15]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +$L$aesenclast5:
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+r15]
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[56+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[60+rsp]
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        movups  XMMWORD[48+r12*1+r13],xmm2
> > > > > >
> > > > > > +        mov     r8,QWORD[88+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     eax,DWORD[r9]
> > > > > >
> > > > > > +        add     esi,DWORD[4+r9]
> > > > > >
> > > > > > +        add     ecx,DWORD[8+r9]
> > > > > >
> > > > > > +        mov     DWORD[r9],eax
> > > > > >
> > > > > > +        add     edx,DWORD[12+r9]
> > > > > >
> > > > > > +        mov     DWORD[4+r9],esi
> > > > > >
> > > > > > +        add     ebp,DWORD[16+r9]
> > > > > >
> > > > > > +        mov     DWORD[8+r9],ecx
> > > > > >
> > > > > > +        mov     DWORD[12+r9],edx
> > > > > >
> > > > > > +        mov     DWORD[16+r9],ebp
> > > > > >
> > > > > > +        movups  XMMWORD[r8],xmm2
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((96+0))+rsp]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((96+16))+rsp]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((96+32))+rsp]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((96+48))+rsp]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((96+64))+rsp]
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((96+80))+rsp]
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((96+96))+rsp]
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[((96+112))+rsp]
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[((96+128))+rsp]
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[((96+144))+rsp]
> > > > > >
> > > > > > +        lea     rsi,[264+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_aesni_cbc_sha1_enc_ssse3:
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +K_XX_XX:
> > > > > >
> > > > > > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > > > > >
> > > > > > +        DD      0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
> > > > > >
> > > > > > +        DD      0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
> > > > > >
> > > > > > +        DD      0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
> > > > > >
> > > > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > > >
> > > > > > +DB
> > > 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115
> > > > > >
> > > > > > +DB      116,105,116,99,104,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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +aesni_cbc_sha1_enc_shaext:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_cbc_sha1_enc_shaext:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10,QWORD[56+rsp]
> > > > > >
> > > > > > +        lea     rsp,[((-168))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-160)+rax],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-144)+rax],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-128)+rax],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-112)+rax],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-96)+rax],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-80)+rax],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-64)+rax],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-48)+rax],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-32)+rax],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-16)+rax],xmm15
> > > > > >
> > > > > > +$L$prologue_shaext:
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[r9]
> > > > > >
> > > > > > +        movd    xmm9,DWORD[16+r9]
> > > > > >
> > > > > > +        movdqa  xmm7,XMMWORD[((K_XX_XX+80))]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r11d,DWORD[240+rcx]
> > > > > >
> > > > > > +        sub     rsi,rdi
> > > > > >
> > > > > > +        movups  xmm15,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[r8]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[112+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm8,xmm8,27
> > > > > >
> > > > > > +        pshufd  xmm9,xmm9,27
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$oop_shaext:
> > > > > >
> > > > > > +        movups  xmm14,XMMWORD[rdi]
> > > > > >
> > > > > > +        xorps   xmm14,xmm15
> > > > > >
> > > > > > +        xorps   xmm2,xmm14
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[r10]
> > > > > >
> > > > > > +        movdqa  xmm12,xmm9
> > > > > >
> > > > > > +DB      102,15,56,0,223
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[16+r10]
> > > > > >
> > > > > > +        movdqa  xmm11,xmm8
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,0,231
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm9,xmm3
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[32+r10]
> > > > > >
> > > > > > +        lea     r10,[64+r10]
> > > > > >
> > > > > > +        pxor    xmm3,xmm12
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        pxor    xmm3,xmm12
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,239
> > > > > >
> > > > > > +DB      69,15,58,204,193,0
> > > > > >
> > > > > > +DB      68,15,56,200,212
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      15,56,201,220
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[((-16))+r10]
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,247
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      69,15,58,204,194,0
> > > > > >
> > > > > > +DB      68,15,56,200,205
> > > > > >
> > > > > > +        pxor    xmm3,xmm5
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,193,0
> > > > > >
> > > > > > +DB      68,15,56,200,214
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,222
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,194,0
> > > > > >
> > > > > > +DB      68,15,56,200,203
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,227
> > > > > >
> > > > > > +        pxor    xmm5,xmm3
> > > > > >
> > > > > > +DB      15,56,201,243
> > > > > >
> > > > > > +        cmp     r11d,11
> > > > > >
> > > > > > +        jb      NEAR $L$aesenclast6
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        je      NEAR $L$aesenclast6
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +$L$aesenclast6:
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,193,0
> > > > > >
> > > > > > +DB      68,15,56,200,212
> > > > > >
> > > > > > +        movups  xmm14,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        xorps   xmm14,xmm15
> > > > > >
> > > > > > +        movups  XMMWORD[rdi*1+rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm2,xmm14
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,220
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,194,1
> > > > > >
> > > > > > +DB      68,15,56,200,205
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +        pxor    xmm3,xmm5
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,193,1
> > > > > >
> > > > > > +DB      68,15,56,200,214
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,222
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,194,1
> > > > > >
> > > > > > +DB      68,15,56,200,203
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,227
> > > > > >
> > > > > > +        pxor    xmm5,xmm3
> > > > > >
> > > > > > +DB      15,56,201,243
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,193,1
> > > > > >
> > > > > > +DB      68,15,56,200,212
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,220
> > > > > >
> > > > > > +        cmp     r11d,11
> > > > > >
> > > > > > +        jb      NEAR $L$aesenclast7
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        je      NEAR $L$aesenclast7
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +$L$aesenclast7:
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,194,1
> > > > > >
> > > > > > +DB      68,15,56,200,205
> > > > > >
> > > > > > +        movups  xmm14,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        xorps   xmm14,xmm15
> > > > > >
> > > > > > +        movups  XMMWORD[16+rdi*1+rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm2,xmm14
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +        pxor    xmm3,xmm5
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,193,2
> > > > > >
> > > > > > +DB      68,15,56,200,214
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,222
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,194,2
> > > > > >
> > > > > > +DB      68,15,56,200,203
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,227
> > > > > >
> > > > > > +        pxor    xmm5,xmm3
> > > > > >
> > > > > > +DB      15,56,201,243
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,193,2
> > > > > >
> > > > > > +DB      68,15,56,200,212
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,220
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,194,2
> > > > > >
> > > > > > +DB      68,15,56,200,205
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +        pxor    xmm3,xmm5
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        cmp     r11d,11
> > > > > >
> > > > > > +        jb      NEAR $L$aesenclast8
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        je      NEAR $L$aesenclast8
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +$L$aesenclast8:
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,193,2
> > > > > >
> > > > > > +DB      68,15,56,200,214
> > > > > >
> > > > > > +        movups  xmm14,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        xorps   xmm14,xmm15
> > > > > >
> > > > > > +        movups  XMMWORD[32+rdi*1+rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm2,xmm14
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-80))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,222
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-64))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,194,3
> > > > > >
> > > > > > +DB      68,15,56,200,203
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-48))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      15,56,202,227
> > > > > >
> > > > > > +        pxor    xmm5,xmm3
> > > > > >
> > > > > > +DB      15,56,201,243
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-32))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,193,3
> > > > > >
> > > > > > +DB      68,15,56,200,212
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-16))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,194,3
> > > > > >
> > > > > > +DB      68,15,56,200,205
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqa  xmm5,xmm12
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,193,3
> > > > > >
> > > > > > +DB      68,15,56,200,214
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      69,15,58,204,194,3
> > > > > >
> > > > > > +DB      68,15,56,200,205
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        cmp     r11d,11
> > > > > >
> > > > > > +        jb      NEAR $L$aesenclast9
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[80+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        je      NEAR $L$aesenclast9
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[96+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[112+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +$L$aesenclast9:
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((16-112))+rcx]
> > > > > >
> > > > > > +        dec     rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm8,xmm11
> > > > > >
> > > > > > +        movups  XMMWORD[48+rdi*1+rsi],xmm2
> > > > > >
> > > > > > +        lea     rdi,[64+rdi]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm8,xmm8,27
> > > > > >
> > > > > > +        pshufd  xmm9,xmm9,27
> > > > > >
> > > > > > +        movups  XMMWORD[r8],xmm2
> > > > > >
> > > > > > +        movdqu  XMMWORD[r9],xmm8
> > > > > >
> > > > > > +        movd    DWORD[16+r9],xmm9
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-8-160))+rax]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-8-144))+rax]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-8-128))+rax]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-8-112))+rax]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-8-96))+rax]
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-8-80))+rax]
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-8-64))+rax]
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[((-8-48))+rax]
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[((-8-32))+rax]
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[((-8-16))+rax]
> > > > > >
> > > > > > +        mov     rsp,rax
> > > > > >
> > > > > > +$L$epilogue_shaext:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_aesni_cbc_sha1_enc_shaext:
> > > > > >
> > > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +ssse3_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +        lea     r10,[aesni_cbc_sha1_enc_shaext]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$seh_no_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,20
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +        lea     rax,[168+rax]
> > > > > >
> > > > > > +        jmp     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +$L$seh_no_shaext:
> > > > > >
> > > > > > +        lea     rsi,[96+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,20
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +        lea     rax,[264+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,QWORD[rax]
> > > > > >
> > > > > > +        mov     r14,QWORD[8+rax]
> > > > > >
> > > > > > +        mov     r13,QWORD[16+rax]
> > > > > >
> > > > > > +        mov     r12,QWORD[24+rax]
> > > > > >
> > > > > > +        mov     rbp,QWORD[32+rax]
> > > > > >
> > > > > > +        mov     rbx,QWORD[40+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$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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .pdata rdata align=4
> > > > > >
> > > > > > +ALIGN   4
> > > > > >
> > > > > > +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_ssse3 wrt
> ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_aesni_cbc_sha1_enc_ssse3 wrt
> ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_aesni_cbc_sha1_enc_ssse3 wrt
> ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_shaext wrt
> ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_aesni_cbc_sha1_enc_shaext wrt
> ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_aesni_cbc_sha1_enc_shaext wrt
> ..imagebase
> > > > > >
> > > > > > +section .xdata rdata align=8
> > > > > >
> > > > > > +ALIGN   8
> > > > > >
> > > > > > +$L$SEH_info_aesni_cbc_sha1_enc_ssse3:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      ssse3_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$prologue_ssse3 wrt
> ..imagebase,$L$epilogue_ssse3
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > +$L$SEH_info_aesni_cbc_sha1_enc_shaext:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      ssse3_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$prologue_shaext wrt
> ..imagebase,$L$epilogue_shaext
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
> sha256-
> > > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
> > > > sha256-
> > > > > > x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..f5c250b904
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
> > > > > > x86_64.nasm
> > > > > > @@ -0,0 +1,78 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/aes/asm/aesni-sha256-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not
> use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain
> a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +global  aesni_cbc_sha256_enc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +aesni_cbc_sha256_enc:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     eax,eax
> > > > > >
> > > > > > +        cmp     rcx,0
> > > > > >
> > > > > > +        je      NEAR $L$probe
> > > > > >
> > > > > > +        ud2
> > > > > >
> > > > > > +$L$probe:
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > > >
> > > > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > > >
> > > > > > +        DD      0,0,0,0,0,0,0,0,-1,-1,-1,-1
> > > > > >
> > > > > > +        DD      0,0,0,0,0,0,0,0
> > > > > >
> > > > > > +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54
> > > > > >
> > > > > > +DB      32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95
> > > > > >
> > > > > > +DB      54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98
> > > > > >
> > > > > > +DB
> 121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108
> > > > > >
> > > > > > +DB      46,111,114,103,62,0
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
> > > > x86_64.nasm
> > > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..57ee23ea8c
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
> > > > > > @@ -0,0 +1,5103 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/aes/asm/aesni-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2009-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not
> use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain
> a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +global  aesni_encrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[r8]
> > > > > >
> > > > > > +        lea     r8,[16+r8]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_enc1_1
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        movups  XMMWORD[rdx],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  aesni_decrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[r8]
> > > > > >
> > > > > > +        lea     r8,[16+r8]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_dec1_2
> > > > > >
> > > > > > +DB      102,15,56,223,209
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        movups  XMMWORD[rdx],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_encrypt2:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$enc_loop2:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,32
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_decrypt2:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$dec_loop2:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,32
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_encrypt3:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        xorps   xmm4,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$enc_loop3:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +        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[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$enc_loop3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,221,208
> > > > > >
> > > > > > +DB      102,15,56,221,216
> > > > > >
> > > > > > +DB      102,15,56,221,224
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_decrypt3:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        xorps   xmm4,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$dec_loop3:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +        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[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$dec_loop3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +DB      102,15,56,223,208
> > > > > >
> > > > > > +DB      102,15,56,223,216
> > > > > >
> > > > > > +DB      102,15,56,223,224
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_encrypt4:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        xorps   xmm4,xmm0
> > > > > >
> > > > > > +        xorps   xmm5,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +DB      0x0f,0x1f,0x00
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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[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[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $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
> > > > > >
> > > > > > +DB      102,15,56,221,208
> > > > > >
> > > > > > +DB      102,15,56,221,216
> > > > > >
> > > > > > +DB      102,15,56,221,224
> > > > > >
> > > > > > +DB      102,15,56,221,232
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_decrypt4:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        xorps   xmm4,xmm0
> > > > > >
> > > > > > +        xorps   xmm5,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +DB      0x0f,0x1f,0x00
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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[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[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $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
> > > > > >
> > > > > > +DB      102,15,56,223,208
> > > > > >
> > > > > > +DB      102,15,56,223,216
> > > > > >
> > > > > > +DB      102,15,56,223,224
> > > > > >
> > > > > > +DB      102,15,56,223,232
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_encrypt6:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        pxor    xmm5,xmm0
> > > > > >
> > > > > > +        pxor    xmm6,xmm0
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +        pxor    xmm7,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +        jmp     NEAR $L$enc_loop6_enter
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$enc_loop6:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +$L$enc_loop6_enter:
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +DB      102,15,56,220,241
> > > > > >
> > > > > > +DB      102,15,56,220,249
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +DB      102,15,56,220,240
> > > > > >
> > > > > > +DB      102,15,56,220,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $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
> > > > > >
> > > > > > +DB      102,15,56,221,208
> > > > > >
> > > > > > +DB      102,15,56,221,216
> > > > > >
> > > > > > +DB      102,15,56,221,224
> > > > > >
> > > > > > +DB      102,15,56,221,232
> > > > > >
> > > > > > +DB      102,15,56,221,240
> > > > > >
> > > > > > +DB      102,15,56,221,248
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_decrypt6:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        pxor    xmm5,xmm0
> > > > > >
> > > > > > +        pxor    xmm6,xmm0
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +        pxor    xmm7,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +        jmp     NEAR $L$dec_loop6_enter
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$dec_loop6:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +$L$dec_loop6_enter:
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +DB      102,15,56,222,241
> > > > > >
> > > > > > +DB      102,15,56,222,249
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $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
> > > > > >
> > > > > > +DB      102,15,56,223,208
> > > > > >
> > > > > > +DB      102,15,56,223,216
> > > > > >
> > > > > > +DB      102,15,56,223,224
> > > > > >
> > > > > > +DB      102,15,56,223,232
> > > > > >
> > > > > > +DB      102,15,56,223,240
> > > > > >
> > > > > > +DB      102,15,56,223,248
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_encrypt8:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm5,xmm0
> > > > > >
> > > > > > +        pxor    xmm6,xmm0
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        pxor    xmm7,xmm0
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        pxor    xmm9,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +        jmp     NEAR $L$enc_loop8_inner
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$enc_loop8:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +$L$enc_loop8_inner:
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +$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
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +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[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$enc_loop8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +DB      102,68,15,56,220,193
> > > > > >
> > > > > > +DB      102,68,15,56,220,201
> > > > > >
> > > > > > +DB      102,15,56,221,208
> > > > > >
> > > > > > +DB      102,15,56,221,216
> > > > > >
> > > > > > +DB      102,15,56,221,224
> > > > > >
> > > > > > +DB      102,15,56,221,232
> > > > > >
> > > > > > +DB      102,15,56,221,240
> > > > > >
> > > > > > +DB      102,15,56,221,248
> > > > > >
> > > > > > +DB      102,68,15,56,221,192
> > > > > >
> > > > > > +DB      102,68,15,56,221,200
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_aesni_decrypt8:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm5,xmm0
> > > > > >
> > > > > > +        pxor    xmm6,xmm0
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        pxor    xmm7,xmm0
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        pxor    xmm9,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +        jmp     NEAR $L$dec_loop8_inner
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$dec_loop8:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +$L$dec_loop8_inner:
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +DB      102,15,56,222,241
> > > > > >
> > > > > > +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[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
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +DB      102,68,15,56,222,192
> > > > > >
> > > > > > +DB      102,68,15,56,222,200
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$dec_loop8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +DB      102,68,15,56,222,193
> > > > > >
> > > > > > +DB      102,68,15,56,222,201
> > > > > >
> > > > > > +DB      102,15,56,223,208
> > > > > >
> > > > > > +DB      102,15,56,223,216
> > > > > >
> > > > > > +DB      102,15,56,223,224
> > > > > >
> > > > > > +DB      102,15,56,223,232
> > > > > >
> > > > > > +DB      102,15,56,223,240
> > > > > >
> > > > > > +DB      102,15,56,223,248
> > > > > >
> > > > > > +DB      102,68,15,56,223,192
> > > > > >
> > > > > > +DB      102,68,15,56,223,200
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  aesni_ecb_encrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +aesni_ecb_encrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_ecb_encrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-88))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +$L$ecb_enc_body:
> > > > > >
> > > > > > +        and     rdx,-16
> > > > > >
> > > > > > +        jz      NEAR $L$ecb_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,DWORD[240+rcx]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        mov     r11,rcx
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +        test    r8d,r8d
> > > > > >
> > > > > > +        jz      NEAR $L$ecb_decrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        cmp     rdx,0x80
> > > > > >
> > > > > > +        jb      NEAR $L$ecb_enc_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[rsi],xmm2
> > > > > >
> > > > > > +        mov     rcx,r11
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        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,0x80
> > > > > >
> > > > > > +        jnc     NEAR $L$ecb_enc_loop8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        mov     rcx,r11
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        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[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]
> > > > > >
> > > > > > +        xorps   xmm9,xmm9
> > > > > >
> > > > > > +        call    _aesni_encrypt8
> > > > > >
> > > > > > +        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[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_enc1_3:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > > >
> > > > > > +        lea     rcx,[16+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_enc1_3
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        jmp     NEAR $L$ecb_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ecb_enc_two:
> > > > > >
> > > > > > +        call    _aesni_encrypt2
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        jmp     NEAR $L$ecb_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ecb_enc_three:
> > > > > >
> > > > > > +        call    _aesni_encrypt3
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +        call    _aesni_encrypt4
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +        xorps   xmm7,xmm7
> > > > > >
> > > > > > +        call    _aesni_encrypt6
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +        call    _aesni_encrypt6
> > > > > >
> > > > > > +        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,0x80
> > > > > >
> > > > > > +        jb      NEAR $L$ecb_dec_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[rsi],xmm2
> > > > > >
> > > > > > +        mov     rcx,r11
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        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[r11]
> > > > > >
> > > > > > +        sub     rdx,0x80
> > > > > >
> > > > > > +        jnc     NEAR $L$ecb_dec_loop8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        mov     rcx,r11
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > > >
> > > > > > +        pxor    xmm8,xmm8
> > > > > >
> > > > > > +        movups  XMMWORD[112+rsi],xmm9
> > > > > >
> > > > > > +        pxor    xmm9,xmm9
> > > > > >
> > > > > > +        lea     rsi,[128+rsi]
> > > > > >
> > > > > > +        add     rdx,0x80
> > > > > >
> > > > > > +        jz      NEAR $L$ecb_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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]
> > > > > >
> > > > > > +        xorps   xmm9,xmm9
> > > > > >
> > > > > > +        call    _aesni_decrypt8
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > > >
> > > > > > +        pxor    xmm8,xmm8
> > > > > >
> > > > > > +        pxor    xmm9,xmm9
> > > > > >
> > > > > > +        jmp     NEAR $L$ecb_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ecb_dec_one:
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_dec1_4:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > > >
> > > > > > +        lea     rcx,[16+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_dec1_4
> > > > > >
> > > > > > +DB      102,15,56,223,209
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        jmp     NEAR $L$ecb_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ecb_dec_two:
> > > > > >
> > > > > > +        call    _aesni_decrypt2
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        jmp     NEAR $L$ecb_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ecb_dec_three:
> > > > > >
> > > > > > +        call    _aesni_decrypt3
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        jmp     NEAR $L$ecb_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ecb_dec_four:
> > > > > >
> > > > > > +        call    _aesni_decrypt4
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        jmp     NEAR $L$ecb_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ecb_dec_five:
> > > > > >
> > > > > > +        xorps   xmm7,xmm7
> > > > > >
> > > > > > +        call    _aesni_decrypt6
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +        jmp     NEAR $L$ecb_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ecb_dec_six:
> > > > > >
> > > > > > +        call    _aesni_decrypt6
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ecb_ret:
> > > > > >
> > > > > > +        xorps   xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > > >
> > > > > > +        lea     rsp,[88+rsp]
> > > > > >
> > > > > > +$L$ecb_enc_ret:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_aesni_ecb_encrypt:
> > > > > >
> > > > > > +global  aesni_ccm64_encrypt_blocks
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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,[rcx]
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[r9]
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +DB      102,15,56,0,247
> > > > > >
> > > > > > +        sub     r10,rax
> > > > > >
> > > > > > +        jmp     NEAR $L$ccm64_enc_outer
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ccm64_enc_outer:
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[r11]
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +        movups  xmm8,XMMWORD[rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > > >
> > > > > > +        xorps   xmm0,xmm8
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ccm64_enc2_loop:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,32
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        dec     rdx
> > > > > >
> > > > > > +DB      102,15,56,221,208
> > > > > >
> > > > > > +DB      102,15,56,221,216
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +        xorps   xmm8,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,215
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +        jnz     NEAR $L$ccm64_enc_outer
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[r9],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm8,xmm8
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +global  aesni_ccm64_decrypt_blocks
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_enc1_5:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        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[rdi]
> > > > > >
> > > > > > +        paddq   xmm6,xmm9
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +        sub     rax,r10
> > > > > >
> > > > > > +        lea     rcx,[32+r10*1+r11]
> > > > > >
> > > > > > +        mov     r10,rax
> > > > > >
> > > > > > +        jmp     NEAR $L$ccm64_dec_outer
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ccm64_dec_outer:
> > > > > >
> > > > > > +        xorps   xmm8,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm8
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +DB      102,15,56,0,215
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rdx,1
> > > > > >
> > > > > > +        jz      NEAR $L$ccm64_dec_break
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[r11]
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > > >
> > > > > > +        xorps   xmm8,xmm0
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +        xorps   xmm3,xmm8
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > > >
> > > > > > +        jmp     NEAR $L$ccm64_dec2_loop
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ccm64_dec2_loop:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,32
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        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,[16+rdi]
> > > > > >
> > > > > > +        jmp     NEAR $L$ccm64_dec_outer
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ccm64_dec_break:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,DWORD[240+r11]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[r11]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > > >
> > > > > > +        xorps   xmm8,xmm0
> > > > > >
> > > > > > +        lea     r11,[32+r11]
> > > > > >
> > > > > > +        xorps   xmm3,xmm8
> > > > > >
> > > > > > +$L$oop_enc1_6:
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[r11]
> > > > > >
> > > > > > +        lea     r11,[16+r11]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_enc1_6
> > > > > >
> > > > > > +DB      102,15,56,221,217
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[r9],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm8,xmm8
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +global  aesni_ctr32_encrypt_blocks
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        cmp     rdx,1
> > > > > >
> > > > > > +        jne     NEAR $L$ctr32_bulk
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[r8]
> > > > > >
> > > > > > +        movups  xmm3,XMMWORD[rdi]
> > > > > >
> > > > > > +        mov     edx,DWORD[240+rcx]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_enc1_7:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > > >
> > > > > > +        lea     rcx,[16+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_enc1_7
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        xorps   xmm2,xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm2,xmm2
> > > > > >
> > > > > > +        jmp     NEAR $L$ctr32_epilogue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ctr32_bulk:
> > > > > >
> > > > > > +        lea     r11,[rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsp,288
> > > > > >
> > > > > > +        and     rsp,-16
> > > > > >
> > > > > > +        movaps  XMMWORD[(-168)+r11],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[(-152)+r11],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[(-136)+r11],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+r11],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+r11],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+r11],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+r11],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+r11],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+r11],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-24)+r11],xmm15
> > > > > >
> > > > > > +$L$ctr32_body:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[r8]
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        mov     r8d,DWORD[12+r8]
> > > > > >
> > > > > > +        pxor    xmm2,xmm0
> > > > > >
> > > > > > +        mov     ebp,DWORD[12+rcx]
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm2
> > > > > >
> > > > > > +        bswap   r8d
> > > > > >
> > > > > > +        movdqa  xmm3,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm2
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        movdqa  XMMWORD[64+rsp],xmm2
> > > > > >
> > > > > > +        movdqa  XMMWORD[80+rsp],xmm2
> > > > > >
> > > > > > +        movdqa  XMMWORD[96+rsp],xmm2
> > > > > >
> > > > > > +        mov     r10,rdx
> > > > > >
> > > > > > +        movdqa  XMMWORD[112+rsp],xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rax,[1+r8]
> > > > > >
> > > > > > +        lea     rdx,[2+r8]
> > > > > >
> > > > > > +        bswap   eax
> > > > > >
> > > > > > +        bswap   edx
> > > > > >
> > > > > > +        xor     eax,ebp
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +DB      102,15,58,34,216,3
> > > > > >
> > > > > > +        lea     rax,[3+r8]
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm3
> > > > > >
> > > > > > +DB      102,15,58,34,226,3
> > > > > >
> > > > > > +        bswap   eax
> > > > > >
> > > > > > +        mov     rdx,r10
> > > > > >
> > > > > > +        lea     r10,[4+r8]
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm4
> > > > > >
> > > > > > +        xor     eax,ebp
> > > > > >
> > > > > > +        bswap   r10d
> > > > > >
> > > > > > +DB      102,15,58,34,232,3
> > > > > >
> > > > > > +        xor     r10d,ebp
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm5
> > > > > >
> > > > > > +        lea     r9,[5+r8]
> > > > > >
> > > > > > +        mov     DWORD[((64+12))+rsp],r10d
> > > > > >
> > > > > > +        bswap   r9d
> > > > > >
> > > > > > +        lea     r10,[6+r8]
> > > > > >
> > > > > > +        mov     eax,DWORD[240+rcx]
> > > > > >
> > > > > > +        xor     r9d,ebp
> > > > > >
> > > > > > +        bswap   r10d
> > > > > >
> > > > > > +        mov     DWORD[((80+12))+rsp],r9d
> > > > > >
> > > > > > +        xor     r10d,ebp
> > > > > >
> > > > > > +        lea     r9,[7+r8]
> > > > > >
> > > > > > +        mov     DWORD[((96+12))+rsp],r10d
> > > > > >
> > > > > > +        bswap   r9d
> > > > > >
> > > > > > +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
> > > > > >
> > > > > > +        xor     r9d,ebp
> > > > > >
> > > > > > +        and     r10d,71303168
> > > > > >
> > > > > > +        mov     DWORD[((112+12))+rsp],r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[64+rsp]
> > > > > >
> > > > > > +        movdqa  xmm7,XMMWORD[80+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        cmp     rdx,8
> > > > > >
> > > > > > +        jb      NEAR $L$ctr32_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rdx,6
> > > > > >
> > > > > > +        cmp     r10d,4194304
> > > > > >
> > > > > > +        je      NEAR $L$ctr32_6x
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rcx,[128+rcx]
> > > > > >
> > > > > > +        sub     rdx,2
> > > > > >
> > > > > > +        jmp     NEAR $L$ctr32_loop8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ctr32_6x:
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        mov     r10d,48
> > > > > >
> > > > > > +        bswap   ebp
> > > > > >
> > > > > > +        lea     rcx,[32+rax*1+rcx]
> > > > > >
> > > > > > +        sub     r10,rax
> > > > > >
> > > > > > +        jmp     NEAR $L$ctr32_loop6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ctr32_loop6:
> > > > > >
> > > > > > +        add     r8d,6
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-48))+r10*1+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        mov     eax,r8d
> > > > > >
> > > > > > +        xor     eax,ebp
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,12
> > > > > >
> > > > > > +        lea     eax,[1+r8]
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +        xor     eax,ebp
> > > > > >
> > > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,28
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        lea     eax,[2+r8]
> > > > > >
> > > > > > +        xor     eax,ebp
> > > > > >
> > > > > > +DB      102,15,56,220,241
> > > > > >
> > > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,44
> > > > > >
> > > > > > +        lea     eax,[3+r8]
> > > > > >
> > > > > > +DB      102,15,56,220,249
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((-32))+r10*1+rcx]
> > > > > >
> > > > > > +        xor     eax,ebp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,60
> > > > > >
> > > > > > +        lea     eax,[4+r8]
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        xor     eax,ebp
> > > > > >
> > > > > > +DB      0x0f,0x38,0xf1,0x44,0x24,76
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +        lea     eax,[5+r8]
> > > > > >
> > > > > > +        xor     eax,ebp
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +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[((-16))+r10*1+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    $L$enc_loop6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[rsp]
> > > > > >
> > > > > > +        pxor    xmm9,xmm3
> > > > > >
> > > > > > +        movaps  xmm3,XMMWORD[16+rsp]
> > > > > >
> > > > > > +        pxor    xmm10,xmm4
> > > > > >
> > > > > > +        movaps  xmm4,XMMWORD[32+rsp]
> > > > > >
> > > > > > +        pxor    xmm11,xmm5
> > > > > >
> > > > > > +        movaps  xmm5,XMMWORD[48+rsp]
> > > > > >
> > > > > > +        pxor    xmm12,xmm6
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[64+rsp]
> > > > > >
> > > > > > +        pxor    xmm13,xmm7
> > > > > >
> > > > > > +        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     NEAR $L$ctr32_loop6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     rdx,6
> > > > > >
> > > > > > +        jz      NEAR $L$ctr32_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     eax,[((-48))+r10]
> > > > > >
> > > > > > +        lea     rcx,[((-80))+r10*1+rcx]
> > > > > >
> > > > > > +        neg     eax
> > > > > >
> > > > > > +        shr     eax,4
> > > > > >
> > > > > > +        jmp     NEAR $L$ctr32_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ctr32_loop8:
> > > > > >
> > > > > > +        add     r8d,8
> > > > > >
> > > > > > +        movdqa  xmm8,XMMWORD[96+rsp]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        mov     r9d,r8d
> > > > > >
> > > > > > +        movdqa  xmm9,XMMWORD[112+rsp]
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        bswap   r9d
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((32-128))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +        xor     r9d,ebp
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        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[((48-128))+rcx]
> > > > > >
> > > > > > +        bswap   r9d
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        xor     r9d,ebp
> > > > > >
> > > > > > +DB      0x66,0x90
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +        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[((64-128))+rcx]
> > > > > >
> > > > > > +        bswap   r9d
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        xor     r9d,ebp
> > > > > >
> > > > > > +DB      0x66,0x90
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        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[((80-128))+rcx]
> > > > > >
> > > > > > +        bswap   r9d
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        xor     r9d,ebp
> > > > > >
> > > > > > +DB      0x66,0x90
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +        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[((96-128))+rcx]
> > > > > >
> > > > > > +        bswap   r9d
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        xor     r9d,ebp
> > > > > >
> > > > > > +DB      0x66,0x90
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        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[((112-128))+rcx]
> > > > > >
> > > > > > +        bswap   r9d
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        xor     r9d,ebp
> > > > > >
> > > > > > +DB      0x66,0x90
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +        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[((128-128))+rcx]
> > > > > >
> > > > > > +        bswap   r9d
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        xor     r9d,ebp
> > > > > >
> > > > > > +DB      0x66,0x90
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        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[((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,ebp
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[rdi]
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +        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[((160-128))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jb      NEAR $L$ctr32_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +DB      102,68,15,56,220,193
> > > > > >
> > > > > > +DB      102,68,15,56,220,201
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((176-128))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +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[((192-128))+rcx]
> > > > > >
> > > > > > +        je      NEAR $L$ctr32_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +DB      102,68,15,56,220,193
> > > > > >
> > > > > > +DB      102,68,15,56,220,201
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((208-128))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +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[((224-128))+rcx]
> > > > > >
> > > > > > +        jmp     NEAR $L$ctr32_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ctr32_enc_done:
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        pxor    xmm10,xmm0
> > > > > >
> > > > > > +        movdqu  xmm12,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        pxor    xmm11,xmm0
> > > > > >
> > > > > > +        movdqu  xmm13,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        pxor    xmm12,xmm0
> > > > > >
> > > > > > +        movdqu  xmm14,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        pxor    xmm13,xmm0
> > > > > >
> > > > > > +        movdqu  xmm15,XMMWORD[80+rdi]
> > > > > >
> > > > > > +        pxor    xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm0
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +DB      102,68,15,56,220,193
> > > > > >
> > > > > > +DB      102,68,15,56,220,201
> > > > > >
> > > > > > +        movdqu  xmm1,XMMWORD[96+rdi]
> > > > > >
> > > > > > +        lea     rdi,[128+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,65,15,56,221,210
> > > > > >
> > > > > > +        pxor    xmm1,xmm0
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[((112-128))+rdi]
> > > > > >
> > > > > > +DB      102,65,15,56,221,219
> > > > > >
> > > > > > +        pxor    xmm10,xmm0
> > > > > >
> > > > > > +        movdqa  xmm11,XMMWORD[rsp]
> > > > > >
> > > > > > +DB      102,65,15,56,221,228
> > > > > >
> > > > > > +DB      102,65,15,56,221,237
> > > > > >
> > > > > > +        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[48+rsp]
> > > > > >
> > > > > > +        movdqa  xmm15,XMMWORD[64+rsp]
> > > > > >
> > > > > > +DB      102,68,15,56,221,193
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[80+rsp]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((16-128))+rcx]
> > > > > >
> > > > > > +DB      102,69,15,56,221,202
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm12
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm13
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        movdqa  xmm5,xmm14
> > > > > >
> > > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        movdqa  xmm6,xmm15
> > > > > >
> > > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm0
> > > > > >
> > > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > > >
> > > > > > +        movups  XMMWORD[112+rsi],xmm9
> > > > > >
> > > > > > +        lea     rsi,[128+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rdx,8
> > > > > >
> > > > > > +        jnc     NEAR $L$ctr32_loop8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     rdx,8
> > > > > >
> > > > > > +        jz      NEAR $L$ctr32_done
> > > > > >
> > > > > > +        lea     rcx,[((-128))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ctr32_tail:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rcx,[16+rcx]
> > > > > >
> > > > > > +        cmp     rdx,4
> > > > > >
> > > > > > +        jb      NEAR $L$ctr32_loop3
> > > > > >
> > > > > > +        je      NEAR $L$ctr32_loop4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        movdqa  xmm8,XMMWORD[96+rsp]
> > > > > >
> > > > > > +        pxor    xmm9,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[16+rcx]
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        lea     rcx,[((32-16))+rax*1+rcx]
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +        add     rax,16
> > > > > >
> > > > > > +        movups  xmm10,XMMWORD[rdi]
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +DB      102,15,56,220,241
> > > > > >
> > > > > > +        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[48+rdi]
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        cmp     rdx,6
> > > > > >
> > > > > > +        jb      NEAR $L$ctr32_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm11,XMMWORD[80+rdi]
> > > > > >
> > > > > > +        xorps   xmm7,xmm11
> > > > > >
> > > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > > >
> > > > > > +        je      NEAR $L$ctr32_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm12,XMMWORD[96+rdi]
> > > > > >
> > > > > > +        xorps   xmm8,xmm12
> > > > > >
> > > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > > >
> > > > > > +        jmp     NEAR $L$ctr32_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ctr32_loop4:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        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[rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$ctr32_loop4
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +DB      102,15,56,221,217
> > > > > >
> > > > > > +        movups  xmm10,XMMWORD[rdi]
> > > > > >
> > > > > > +        movups  xmm11,XMMWORD[16+rdi]
> > > > > >
> > > > > > +DB      102,15,56,221,225
> > > > > >
> > > > > > +DB      102,15,56,221,233
> > > > > >
> > > > > > +        movups  xmm12,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        movups  xmm13,XMMWORD[48+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        jmp     NEAR $L$ctr32_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ctr32_loop3:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        lea     rcx,[16+rcx]
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +        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[rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        cmp     rdx,2
> > > > > >
> > > > > > +        jb      NEAR $L$ctr32_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm11,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        je      NEAR $L$ctr32_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm12,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ctr32_done:
> > > > > >
> > > > > > +        xorps   xmm0,xmm0
> > > > > >
> > > > > > +        xor     ebp,ebp
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-168))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-168)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-152))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-152)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-136))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-136)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-120))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-104))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-88))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-72))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[((-56))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[((-40))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[((-24))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-24)+r11],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-8))+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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:
> > > > > >
> > > > > > +global  aesni_xts_encrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +aesni_xts_encrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_xts_encrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r11,[rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsp,272
> > > > > >
> > > > > > +        and     rsp,-16
> > > > > >
> > > > > > +        movaps  XMMWORD[(-168)+r11],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[(-152)+r11],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[(-136)+r11],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+r11],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+r11],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+r11],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+r11],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+r11],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+r11],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-24)+r11],xmm15
> > > > > >
> > > > > > +$L$xts_enc_body:
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[r8]
> > > > > >
> > > > > > +        lea     r8,[16+r8]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_enc1_8
> > > > > >
> > > > > > +DB      102,15,56,221,209
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        mov     rbp,rcx
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        shl     r10d,4
> > > > > >
> > > > > > +        mov     r9,rdx
> > > > > >
> > > > > > +        and     rdx,-16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,XMMWORD[$L$xts_magic]
> > > > > >
> > > > > > +        movdqa  xmm15,xmm2
> > > > > >
> > > > > > +        pshufd  xmm9,xmm2,0x5f
> > > > > >
> > > > > > +        pxor    xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        movdqa  xmm10,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        pxor    xmm10,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        movdqa  xmm11,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        pxor    xmm11,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        movdqa  xmm12,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        pxor    xmm12,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        movdqa  xmm13,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        pxor    xmm13,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm15
> > > > > >
> > > > > > +        psrad   xmm9,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm9,xmm8
> > > > > >
> > > > > > +        pxor    xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rdx,16*6
> > > > > >
> > > > > > +        jc      NEAR $L$xts_enc_short
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,16+96
> > > > > >
> > > > > > +        lea     rcx,[32+r10*1+rbp]
> > > > > >
> > > > > > +        sub     rax,r10
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > > > >
> > > > > > +        mov     r10,rax
> > > > > >
> > > > > > +        lea     r8,[$L$xts_magic]
> > > > > >
> > > > > > +        jmp     NEAR $L$xts_enc_grandloop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$xts_enc_grandloop:
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        movdqa  xmm8,xmm0
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > > > >
> > > > > > +        pxor    xmm8,xmm15
> > > > > >
> > > > > > +        movdqa  xmm9,XMMWORD[96+rsp]
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rbp]
> > > > > >
> > > > > > +        lea     rdi,[96+rdi]
> > > > > >
> > > > > > +        pxor    xmm7,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm10,xmm9
> > > > > >
> > > > > > +DB      102,15,56,220,241
> > > > > >
> > > > > > +        pxor    xmm11,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm10
> > > > > >
> > > > > > +DB      102,15,56,220,249
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+rbp]
> > > > > >
> > > > > > +        pxor    xmm12,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        pxor    xmm13,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm11
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        pxor    xmm14,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm12
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +        pxor    xmm8,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[64+rsp],xmm14
> > > > > >
> > > > > > +DB      102,15,56,220,240
> > > > > >
> > > > > > +DB      102,15,56,220,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+rbp]
> > > > > >
> > > > > > +        movdqa  XMMWORD[80+rsp],xmm8
> > > > > >
> > > > > > +        pshufd  xmm9,xmm15,0x5f
> > > > > >
> > > > > > +        jmp     NEAR $L$xts_enc_loop6
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$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[((-64))+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
> > > > > >
> > > > > > +DB      102,15,56,220,240
> > > > > >
> > > > > > +DB      102,15,56,220,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$xts_enc_loop6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,XMMWORD[r8]
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        movups  xmm10,XMMWORD[rbp]
> > > > > >
> > > > > > +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[((-64))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        pxor    xmm10,xmm15
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        movaps  xmm12,xmm11
> > > > > >
> > > > > > +DB      102,15,56,220,240
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +DB      102,15,56,220,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-48))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        pxor    xmm11,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        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[((-32))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        pxor    xmm12,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +DB      102,15,56,220,240
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movaps  xmm14,xmm13
> > > > > >
> > > > > > +DB      102,15,56,220,248
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        pxor    xmm13,xmm15
> > > > > >
> > > > > > +        psrad   xmm0,31
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm0,xmm8
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        pxor    xmm15,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rbp]
> > > > > >
> > > > > > +DB      102,15,56,220,241
> > > > > >
> > > > > > +DB      102,15,56,220,249
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm14,xmm15
> > > > > >
> > > > > > +DB      102,15,56,221,84,36,0
> > > > > >
> > > > > > +        psrad   xmm9,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +DB      102,15,56,221,92,36,16
> > > > > >
> > > > > > +DB      102,15,56,221,100,36,32
> > > > > >
> > > > > > +        pand    xmm9,xmm8
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +DB      102,15,56,221,108,36,48
> > > > > >
> > > > > > +DB      102,15,56,221,116,36,64
> > > > > >
> > > > > > +DB      102,15,56,221,124,36,80
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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     NEAR $L$xts_enc_grandloop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,16+96
> > > > > >
> > > > > > +        sub     eax,r10d
> > > > > >
> > > > > > +        mov     rcx,rbp
> > > > > >
> > > > > > +        shr     eax,4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$xts_enc_short:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +        pxor    xmm10,xmm0
> > > > > >
> > > > > > +        add     rdx,16*6
> > > > > >
> > > > > > +        jz      NEAR $L$xts_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm11,xmm0
> > > > > >
> > > > > > +        cmp     rdx,0x20
> > > > > >
> > > > > > +        jb      NEAR $L$xts_enc_one
> > > > > >
> > > > > > +        pxor    xmm12,xmm0
> > > > > >
> > > > > > +        je      NEAR $L$xts_enc_two
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm13,xmm0
> > > > > >
> > > > > > +        cmp     rdx,0x40
> > > > > >
> > > > > > +        jb      NEAR $L$xts_enc_three
> > > > > >
> > > > > > +        pxor    xmm14,xmm0
> > > > > >
> > > > > > +        je      NEAR $L$xts_enc_four
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        lea     rdi,[80+rdi]
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _aesni_encrypt6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movdqa  xmm10,xmm15
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm5,xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        xorps   xmm6,xmm14
> > > > > >
> > > > > > +        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[rdi]
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_enc1_9:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        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[rsi],xmm2
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +        jmp     NEAR $L$xts_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$xts_enc_two:
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        lea     rdi,[32+rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _aesni_encrypt2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movdqa  xmm10,xmm12
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        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[rdi]
> > > > > >
> > > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        lea     rdi,[48+rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _aesni_encrypt3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movdqa  xmm10,xmm13
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +        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[rdi]
> > > > > >
> > > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movups  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        lea     rdi,[64+rdi]
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +        xorps   xmm5,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _aesni_encrypt4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movdqa  xmm10,xmm14
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +        and     r9,15
> > > > > >
> > > > > > +        jz      NEAR $L$xts_enc_ret
> > > > > >
> > > > > > +        mov     rdx,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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     NEAR $L$xts_enc_steal
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsi,r9
> > > > > >
> > > > > > +        mov     rcx,rbp
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[((-16))+rsi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_enc1_10:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        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[(-16)+rsi],xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$xts_enc_ret:
> > > > > >
> > > > > > +        xorps   xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-168))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-168)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-152))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-152)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-136))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-136)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-120))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-104))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-88))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-72))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[((-56))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[((-40))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[((-24))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-24)+r11],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-8))+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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:
> > > > > >
> > > > > > +global  aesni_xts_decrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +aesni_xts_decrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_xts_decrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r11,[rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsp,272
> > > > > >
> > > > > > +        and     rsp,-16
> > > > > >
> > > > > > +        movaps  XMMWORD[(-168)+r11],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[(-152)+r11],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[(-136)+r11],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+r11],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+r11],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+r11],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+r11],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+r11],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+r11],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-24)+r11],xmm15
> > > > > >
> > > > > > +$L$xts_dec_body:
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        setnz   al
> > > > > >
> > > > > > +        shl     rax,4
> > > > > >
> > > > > > +        sub     rdx,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        mov     rbp,rcx
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        shl     r10d,4
> > > > > >
> > > > > > +        mov     r9,rdx
> > > > > >
> > > > > > +        and     rdx,-16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,XMMWORD[$L$xts_magic]
> > > > > >
> > > > > > +        movdqa  xmm15,xmm2
> > > > > >
> > > > > > +        pshufd  xmm9,xmm2,0x5f
> > > > > >
> > > > > > +        pxor    xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        movdqa  xmm10,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        pxor    xmm10,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        movdqa  xmm11,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        pxor    xmm11,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        movdqa  xmm12,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        pxor    xmm12,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        movdqa  xmm13,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        pxor    xmm13,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm15
> > > > > >
> > > > > > +        psrad   xmm9,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm9,xmm8
> > > > > >
> > > > > > +        pxor    xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rdx,16*6
> > > > > >
> > > > > > +        jc      NEAR $L$xts_dec_short
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,16+96
> > > > > >
> > > > > > +        lea     rcx,[32+r10*1+rbp]
> > > > > >
> > > > > > +        sub     rax,r10
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > > > >
> > > > > > +        mov     r10,rax
> > > > > >
> > > > > > +        lea     r8,[$L$xts_magic]
> > > > > >
> > > > > > +        jmp     NEAR $L$xts_dec_grandloop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$xts_dec_grandloop:
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        movdqa  xmm8,xmm0
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > > > >
> > > > > > +        pxor    xmm8,xmm15
> > > > > >
> > > > > > +        movdqa  xmm9,XMMWORD[96+rsp]
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+rbp]
> > > > > >
> > > > > > +        lea     rdi,[96+rdi]
> > > > > >
> > > > > > +        pxor    xmm7,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm10,xmm9
> > > > > >
> > > > > > +DB      102,15,56,222,241
> > > > > >
> > > > > > +        pxor    xmm11,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm10
> > > > > >
> > > > > > +DB      102,15,56,222,249
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+rbp]
> > > > > >
> > > > > > +        pxor    xmm12,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +        pxor    xmm13,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm11
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +        pxor    xmm14,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm12
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +        pxor    xmm8,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[64+rsp],xmm14
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+rbp]
> > > > > >
> > > > > > +        movdqa  XMMWORD[80+rsp],xmm8
> > > > > >
> > > > > > +        pshufd  xmm9,xmm15,0x5f
> > > > > >
> > > > > > +        jmp     NEAR $L$xts_dec_loop6
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$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[((-64))+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
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$xts_dec_loop6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,XMMWORD[r8]
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        movups  xmm10,XMMWORD[rbp]
> > > > > >
> > > > > > +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[((-64))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +        pxor    xmm10,xmm15
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +        movaps  xmm12,xmm11
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movdqa  xmm14,xmm9
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-48))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        pxor    xmm11,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        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[((-32))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +        pxor    xmm12,xmm15
> > > > > >
> > > > > > +        psrad   xmm14,31
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm14,xmm8
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        movaps  xmm14,xmm13
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm9
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        pxor    xmm13,xmm15
> > > > > >
> > > > > > +        psrad   xmm0,31
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm0,xmm8
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        pxor    xmm15,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rbp]
> > > > > >
> > > > > > +DB      102,15,56,222,241
> > > > > >
> > > > > > +DB      102,15,56,222,249
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rbp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm14,xmm15
> > > > > >
> > > > > > +DB      102,15,56,223,84,36,0
> > > > > >
> > > > > > +        psrad   xmm9,31
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +DB      102,15,56,223,92,36,16
> > > > > >
> > > > > > +DB      102,15,56,223,100,36,32
> > > > > >
> > > > > > +        pand    xmm9,xmm8
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +DB      102,15,56,223,108,36,48
> > > > > >
> > > > > > +DB      102,15,56,223,116,36,64
> > > > > >
> > > > > > +DB      102,15,56,223,124,36,80
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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     NEAR $L$xts_dec_grandloop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,16+96
> > > > > >
> > > > > > +        sub     eax,r10d
> > > > > >
> > > > > > +        mov     rcx,rbp
> > > > > >
> > > > > > +        shr     eax,4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$xts_dec_short:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +        pxor    xmm10,xmm0
> > > > > >
> > > > > > +        pxor    xmm11,xmm0
> > > > > >
> > > > > > +        add     rdx,16*6
> > > > > >
> > > > > > +        jz      NEAR $L$xts_dec_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm12,xmm0
> > > > > >
> > > > > > +        cmp     rdx,0x20
> > > > > >
> > > > > > +        jb      NEAR $L$xts_dec_one
> > > > > >
> > > > > > +        pxor    xmm13,xmm0
> > > > > >
> > > > > > +        je      NEAR $L$xts_dec_two
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm14,xmm0
> > > > > >
> > > > > > +        cmp     rdx,0x40
> > > > > >
> > > > > > +        jb      NEAR $L$xts_dec_three
> > > > > >
> > > > > > +        je      NEAR $L$xts_dec_four
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        lea     rdi,[80+rdi]
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _aesni_decrypt6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm5,xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        xorps   xmm6,xmm14
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm14,xmm14
> > > > > >
> > > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pcmpgtd xmm14,xmm15
> > > > > >
> > > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        lea     rsi,[80+rsi]
> > > > > >
> > > > > > +        pshufd  xmm11,xmm14,0x13
> > > > > >
> > > > > > +        and     r9,15
> > > > > >
> > > > > > +        jz      NEAR $L$xts_dec_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm10,xmm15
> > > > > >
> > > > > > +        paddq   xmm15,xmm15
> > > > > >
> > > > > > +        pand    xmm11,xmm8
> > > > > >
> > > > > > +        pxor    xmm11,xmm15
> > > > > >
> > > > > > +        jmp     NEAR $L$xts_dec_done2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$xts_dec_one:
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_dec1_12:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        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[rsi],xmm2
> > > > > >
> > > > > > +        movdqa  xmm11,xmm12
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +        jmp     NEAR $L$xts_dec_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$xts_dec_two:
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        lea     rdi,[32+rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _aesni_decrypt2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movdqa  xmm10,xmm12
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        movdqa  xmm11,xmm13
> > > > > >
> > > > > > +        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[rdi]
> > > > > >
> > > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        lea     rdi,[48+rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _aesni_decrypt3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movdqa  xmm10,xmm13
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        movdqa  xmm11,xmm14
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +        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[rdi]
> > > > > >
> > > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movups  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        lea     rdi,[64+rdi]
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +        xorps   xmm5,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _aesni_decrypt4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movdqa  xmm10,xmm14
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqa  xmm11,xmm15
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +        and     r9,15
> > > > > >
> > > > > > +        jz      NEAR $L$xts_dec_ret
> > > > > >
> > > > > > +$L$xts_dec_done2:
> > > > > >
> > > > > > +        mov     rdx,r9
> > > > > >
> > > > > > +        mov     rcx,rbp
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm11
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_dec1_13:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        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[rsi],xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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     NEAR $L$xts_dec_steal
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsi,r9
> > > > > >
> > > > > > +        mov     rcx,rbp
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[rsi]
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_dec1_14:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        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[rsi],xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$xts_dec_ret:
> > > > > >
> > > > > > +        xorps   xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-168))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-168)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-152))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-152)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-136))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-136)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-120))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-104))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-88))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-72))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[((-56))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[((-40))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+r11],xmm0
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[((-24))+r11]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-24)+r11],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-8))+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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:
> > > > > >
> > > > > > +global  aesni_ocb_encrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +aesni_ocb_encrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_ocb_encrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rax,[rsp]
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-160))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[112+rsp],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[128+rsp],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[144+rsp],xmm15
> > > > > >
> > > > > > +$L$ocb_enc_body:
> > > > > >
> > > > > > +        mov     rbx,QWORD[56+rax]
> > > > > >
> > > > > > +        mov     rbp,QWORD[((56+8))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[240+rcx]
> > > > > >
> > > > > > +        mov     r11,rcx
> > > > > >
> > > > > > +        shl     r10d,4
> > > > > >
> > > > > > +        movups  xmm9,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm15,XMMWORD[r9]
> > > > > >
> > > > > > +        pxor    xmm9,xmm1
> > > > > >
> > > > > > +        pxor    xmm15,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,16+32
> > > > > >
> > > > > > +        lea     rcx,[32+r10*1+r11]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > > >
> > > > > > +        sub     rax,r10
> > > > > >
> > > > > > +        mov     r10,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[rbp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        test    r8,1
> > > > > >
> > > > > > +        jnz     NEAR $L$ocb_enc_odd
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        bsf     r12,r8
> > > > > >
> > > > > > +        add     r8,1
> > > > > >
> > > > > > +        shl     r12,4
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[r12*1+rbx]
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_encrypt1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm7
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +        sub     rdx,1
> > > > > >
> > > > > > +        jz      NEAR $L$ocb_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ocb_enc_odd:
> > > > > >
> > > > > > +        lea     r12,[1+r8]
> > > > > >
> > > > > > +        lea     r13,[3+r8]
> > > > > >
> > > > > > +        lea     r14,[5+r8]
> > > > > >
> > > > > > +        lea     r8,[6+r8]
> > > > > >
> > > > > > +        bsf     r12,r12
> > > > > >
> > > > > > +        bsf     r13,r13
> > > > > >
> > > > > > +        bsf     r14,r14
> > > > > >
> > > > > > +        shl     r12,4
> > > > > >
> > > > > > +        shl     r13,4
> > > > > >
> > > > > > +        shl     r14,4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rdx,6
> > > > > >
> > > > > > +        jc      NEAR $L$ocb_enc_short
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_enc_grandloop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ocb_enc_grandloop:
> > > > > >
> > > > > > +        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]
> > > > > >
> > > > > > +        lea     rdi,[96+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_encrypt6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        lea     rsi,[96+rsi]
> > > > > >
> > > > > > +        sub     rdx,6
> > > > > >
> > > > > > +        jnc     NEAR $L$ocb_enc_grandloop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ocb_enc_short:
> > > > > >
> > > > > > +        add     rdx,6
> > > > > >
> > > > > > +        jz      NEAR $L$ocb_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        cmp     rdx,2
> > > > > >
> > > > > > +        jb      NEAR $L$ocb_enc_one
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        je      NEAR $L$ocb_enc_two
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        cmp     rdx,4
> > > > > >
> > > > > > +        jb      NEAR $L$ocb_enc_three
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        je      NEAR $L$ocb_enc_four
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_encrypt6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm14
> > > > > >
> > > > > > +        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$ocb_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ocb_enc_one:
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_encrypt1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm7
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ocb_enc_two:
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_encrypt4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm11
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ocb_enc_three:
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_encrypt4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm12
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_enc_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ocb_enc_four:
> > > > > >
> > > > > > +        call    __ocb_encrypt4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm13
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ocb_enc_done:
> > > > > >
> > > > > > +        pxor    xmm15,xmm0
> > > > > >
> > > > > > +        movdqu  XMMWORD[rbp],xmm8
> > > > > >
> > > > > > +        movdqu  XMMWORD[r9],xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[64+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[80+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[96+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[112+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[128+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[128+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[144+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[144+rsp],xmm0
> > > > > >
> > > > > > +        lea     rax,[((160+40))+rsp]
> > > > > >
> > > > > > +$L$ocb_enc_pop:
> > > > > >
> > > > > > +        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$ocb_enc_epilogue:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_aesni_ocb_encrypt:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +__ocb_encrypt6:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > > > >
> > > > > > +        movdqa  xmm12,xmm10
> > > > > >
> > > > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > > > >
> > > > > > +        movdqa  xmm14,xmm10
> > > > > >
> > > > > > +        pxor    xmm10,xmm15
> > > > > >
> > > > > > +        movdqu  xmm15,XMMWORD[r14*1+rbx]
> > > > > >
> > > > > > +        pxor    xmm11,xmm10
> > > > > >
> > > > > > +        pxor    xmm8,xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        pxor    xmm12,xmm11
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        pxor    xmm13,xmm12
> > > > > >
> > > > > > +        pxor    xmm8,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm14,xmm13
> > > > > >
> > > > > > +        pxor    xmm8,xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        pxor    xmm8,xmm6
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm8,xmm7
> > > > > >
> > > > > > +        pxor    xmm7,xmm15
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r12,[1+r8]
> > > > > >
> > > > > > +        lea     r13,[3+r8]
> > > > > >
> > > > > > +        lea     r14,[5+r8]
> > > > > >
> > > > > > +        add     r8,6
> > > > > >
> > > > > > +        pxor    xmm10,xmm9
> > > > > >
> > > > > > +        bsf     r12,r12
> > > > > >
> > > > > > +        bsf     r13,r13
> > > > > >
> > > > > > +        bsf     r14,r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +DB      102,15,56,220,217
> > > > > >
> > > > > > +DB      102,15,56,220,225
> > > > > >
> > > > > > +DB      102,15,56,220,233
> > > > > >
> > > > > > +        pxor    xmm11,xmm9
> > > > > >
> > > > > > +        pxor    xmm12,xmm9
> > > > > >
> > > > > > +DB      102,15,56,220,241
> > > > > >
> > > > > > +        pxor    xmm13,xmm9
> > > > > >
> > > > > > +        pxor    xmm14,xmm9
> > > > > >
> > > > > > +DB      102,15,56,220,249
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+r11]
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +DB      102,15,56,220,216
> > > > > >
> > > > > > +DB      102,15,56,220,224
> > > > > >
> > > > > > +DB      102,15,56,220,232
> > > > > >
> > > > > > +DB      102,15,56,220,240
> > > > > >
> > > > > > +DB      102,15,56,220,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+r11]
> > > > > >
> > > > > > +        shl     r12,4
> > > > > >
> > > > > > +        shl     r13,4
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_enc_loop6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ocb_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[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
> > > > > >
> > > > > > +DB      102,15,56,220,240
> > > > > >
> > > > > > +DB      102,15,56,220,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > > > >
> > > > > > +        shl     r14,4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,65,15,56,221,210
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +DB      102,65,15,56,221,219
> > > > > >
> > > > > > +DB      102,65,15,56,221,228
> > > > > >
> > > > > > +DB      102,65,15,56,221,237
> > > > > >
> > > > > > +DB      102,65,15,56,221,246
> > > > > >
> > > > > > +DB      102,65,15,56,221,255
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +__ocb_encrypt4:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > > > >
> > > > > > +        movdqa  xmm12,xmm10
> > > > > >
> > > > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > > > >
> > > > > > +        pxor    xmm10,xmm15
> > > > > >
> > > > > > +        pxor    xmm11,xmm10
> > > > > >
> > > > > > +        pxor    xmm8,xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        pxor    xmm12,xmm11
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        pxor    xmm13,xmm12
> > > > > >
> > > > > > +        pxor    xmm8,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm8,xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm10,xmm9
> > > > > >
> > > > > > +        pxor    xmm11,xmm9
> > > > > >
> > > > > > +        pxor    xmm12,xmm9
> > > > > >
> > > > > > +        pxor    xmm13,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[48+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[64+r11]
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_enc_loop4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ocb_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[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[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,65,15,56,221,210
> > > > > >
> > > > > > +DB      102,65,15,56,221,219
> > > > > >
> > > > > > +DB      102,65,15,56,221,228
> > > > > >
> > > > > > +DB      102,65,15,56,221,237
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +__ocb_encrypt1:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm9
> > > > > >
> > > > > > +        pxor    xmm8,xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm7
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+r11]
> > > > > >
> > > > > > +        pxor    xmm7,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+r11]
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_enc_loop1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ocb_enc_loop1:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,32
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,208
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$ocb_enc_loop1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,221,215
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  aesni_ocb_decrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +aesni_ocb_decrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_ocb_decrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rax,[rsp]
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-160))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[112+rsp],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[128+rsp],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[144+rsp],xmm15
> > > > > >
> > > > > > +$L$ocb_dec_body:
> > > > > >
> > > > > > +        mov     rbx,QWORD[56+rax]
> > > > > >
> > > > > > +        mov     rbp,QWORD[((56+8))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[240+rcx]
> > > > > >
> > > > > > +        mov     r11,rcx
> > > > > >
> > > > > > +        shl     r10d,4
> > > > > >
> > > > > > +        movups  xmm9,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r10*1+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm15,XMMWORD[r9]
> > > > > >
> > > > > > +        pxor    xmm9,xmm1
> > > > > >
> > > > > > +        pxor    xmm15,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,16+32
> > > > > >
> > > > > > +        lea     rcx,[32+r10*1+r11]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > > >
> > > > > > +        sub     rax,r10
> > > > > >
> > > > > > +        mov     r10,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[rbp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        test    r8,1
> > > > > >
> > > > > > +        jnz     NEAR $L$ocb_dec_odd
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        bsf     r12,r8
> > > > > >
> > > > > > +        add     r8,1
> > > > > >
> > > > > > +        shl     r12,4
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[r12*1+rbx]
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_decrypt1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm7
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm8,xmm2
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +        sub     rdx,1
> > > > > >
> > > > > > +        jz      NEAR $L$ocb_dec_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ocb_dec_odd:
> > > > > >
> > > > > > +        lea     r12,[1+r8]
> > > > > >
> > > > > > +        lea     r13,[3+r8]
> > > > > >
> > > > > > +        lea     r14,[5+r8]
> > > > > >
> > > > > > +        lea     r8,[6+r8]
> > > > > >
> > > > > > +        bsf     r12,r12
> > > > > >
> > > > > > +        bsf     r13,r13
> > > > > >
> > > > > > +        bsf     r14,r14
> > > > > >
> > > > > > +        shl     r12,4
> > > > > >
> > > > > > +        shl     r13,4
> > > > > >
> > > > > > +        shl     r14,4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rdx,6
> > > > > >
> > > > > > +        jc      NEAR $L$ocb_dec_short
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_dec_grandloop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ocb_dec_grandloop:
> > > > > >
> > > > > > +        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]
> > > > > >
> > > > > > +        lea     rdi,[96+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_decrypt6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm8,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm8,xmm4
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm8,xmm5
> > > > > >
> > > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        pxor    xmm8,xmm6
> > > > > >
> > > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > > >
> > > > > > +        pxor    xmm8,xmm7
> > > > > >
> > > > > > +        lea     rsi,[96+rsi]
> > > > > >
> > > > > > +        sub     rdx,6
> > > > > >
> > > > > > +        jnc     NEAR $L$ocb_dec_grandloop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ocb_dec_short:
> > > > > >
> > > > > > +        add     rdx,6
> > > > > >
> > > > > > +        jz      NEAR $L$ocb_dec_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        cmp     rdx,2
> > > > > >
> > > > > > +        jb      NEAR $L$ocb_dec_one
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        je      NEAR $L$ocb_dec_two
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        cmp     rdx,4
> > > > > >
> > > > > > +        jb      NEAR $L$ocb_dec_three
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        je      NEAR $L$ocb_dec_four
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_decrypt6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm14
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm8,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm8,xmm4
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm8,xmm5
> > > > > >
> > > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        pxor    xmm8,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_dec_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ocb_dec_one:
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_decrypt1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm7
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm8,xmm2
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_dec_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ocb_dec_two:
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_decrypt4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm11
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm8,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        xorps   xmm8,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_dec_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ocb_dec_three:
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __ocb_decrypt4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm12
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        xorps   xmm8,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        xorps   xmm8,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        xorps   xmm8,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_dec_done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ocb_dec_four:
> > > > > >
> > > > > > +        call    __ocb_decrypt4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm15,xmm13
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm8,xmm2
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm8,xmm4
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm8,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ocb_dec_done:
> > > > > >
> > > > > > +        pxor    xmm15,xmm0
> > > > > >
> > > > > > +        movdqu  XMMWORD[rbp],xmm8
> > > > > >
> > > > > > +        movdqu  XMMWORD[r9],xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xorps   xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[16+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[32+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[48+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[64+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[80+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[96+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[112+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[128+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[128+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[144+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[144+rsp],xmm0
> > > > > >
> > > > > > +        lea     rax,[((160+40))+rsp]
> > > > > >
> > > > > > +$L$ocb_dec_pop:
> > > > > >
> > > > > > +        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$ocb_dec_epilogue:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_aesni_ocb_decrypt:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +__ocb_decrypt6:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > > > >
> > > > > > +        movdqa  xmm12,xmm10
> > > > > >
> > > > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > > > >
> > > > > > +        movdqa  xmm14,xmm10
> > > > > >
> > > > > > +        pxor    xmm10,xmm15
> > > > > >
> > > > > > +        movdqu  xmm15,XMMWORD[r14*1+rbx]
> > > > > >
> > > > > > +        pxor    xmm11,xmm10
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        pxor    xmm12,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        pxor    xmm13,xmm12
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm14,xmm13
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        pxor    xmm15,xmm14
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm15
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r12,[1+r8]
> > > > > >
> > > > > > +        lea     r13,[3+r8]
> > > > > >
> > > > > > +        lea     r14,[5+r8]
> > > > > >
> > > > > > +        add     r8,6
> > > > > >
> > > > > > +        pxor    xmm10,xmm9
> > > > > >
> > > > > > +        bsf     r12,r12
> > > > > >
> > > > > > +        bsf     r13,r13
> > > > > >
> > > > > > +        bsf     r14,r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        pxor    xmm11,xmm9
> > > > > >
> > > > > > +        pxor    xmm12,xmm9
> > > > > >
> > > > > > +DB      102,15,56,222,241
> > > > > >
> > > > > > +        pxor    xmm13,xmm9
> > > > > >
> > > > > > +        pxor    xmm14,xmm9
> > > > > >
> > > > > > +DB      102,15,56,222,249
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+r11]
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+r11]
> > > > > >
> > > > > > +        shl     r12,4
> > > > > >
> > > > > > +        shl     r13,4
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_dec_loop6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ocb_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[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
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > > > >
> > > > > > +        shl     r14,4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,65,15,56,223,210
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[rbx]
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +DB      102,65,15,56,223,219
> > > > > >
> > > > > > +DB      102,65,15,56,223,228
> > > > > >
> > > > > > +DB      102,65,15,56,223,237
> > > > > >
> > > > > > +DB      102,65,15,56,223,246
> > > > > >
> > > > > > +DB      102,65,15,56,223,255
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +__ocb_decrypt4:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm15,xmm9
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[r12*1+rbx]
> > > > > >
> > > > > > +        movdqa  xmm12,xmm10
> > > > > >
> > > > > > +        movdqu  xmm13,XMMWORD[r13*1+rbx]
> > > > > >
> > > > > > +        pxor    xmm10,xmm15
> > > > > >
> > > > > > +        pxor    xmm11,xmm10
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        pxor    xmm12,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        pxor    xmm13,xmm12
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm10,xmm9
> > > > > >
> > > > > > +        pxor    xmm11,xmm9
> > > > > >
> > > > > > +        pxor    xmm12,xmm9
> > > > > >
> > > > > > +        pxor    xmm13,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[48+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[64+r11]
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_dec_loop4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ocb_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[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[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$ocb_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[16+r11]
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,65,15,56,223,210
> > > > > >
> > > > > > +DB      102,65,15,56,223,219
> > > > > >
> > > > > > +DB      102,65,15,56,223,228
> > > > > >
> > > > > > +DB      102,65,15,56,223,237
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +__ocb_decrypt1:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm9
> > > > > >
> > > > > > +        pxor    xmm2,xmm7
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[32+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[48+r11]
> > > > > >
> > > > > > +        pxor    xmm7,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[64+r11]
> > > > > >
> > > > > > +        jmp     NEAR $L$ocb_dec_loop1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$ocb_dec_loop1:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rax*1+rcx]
> > > > > >
> > > > > > +        add     rax,32
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$ocb_dec_loop1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+r11]
> > > > > >
> > > > > > +        mov     rax,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,223,215
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  aesni_cbc_encrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +aesni_cbc_encrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_aesni_cbc_encrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        test    rdx,rdx
> > > > > >
> > > > > > +        jz      NEAR $L$cbc_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[240+rcx]
> > > > > >
> > > > > > +        mov     r11,rcx
> > > > > >
> > > > > > +        test    r9d,r9d
> > > > > >
> > > > > > +        jz      NEAR $L$cbc_decrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[r8]
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        cmp     rdx,16
> > > > > >
> > > > > > +        jb      NEAR $L$cbc_enc_tail
> > > > > >
> > > > > > +        sub     rdx,16
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_enc_loop
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_enc_loop:
> > > > > >
> > > > > > +        movups  xmm3,XMMWORD[rdi]
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        xorps   xmm3,xmm0
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm3
> > > > > >
> > > > > > +$L$oop_enc1_15:
> > > > > >
> > > > > > +DB      102,15,56,220,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        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[rsi],xmm2
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +        sub     rdx,16
> > > > > >
> > > > > > +        jnc     NEAR $L$cbc_enc_loop
> > > > > >
> > > > > > +        add     rdx,16
> > > > > >
> > > > > > +        jnz     NEAR $L$cbc_enc_tail
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        movups  XMMWORD[r8],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$cbc_enc_tail:
> > > > > >
> > > > > > +        mov     rcx,rdx
> > > > > >
> > > > > > +        xchg    rsi,rdi
> > > > > >
> > > > > > +        DD      0x9066A4F3
> > > > > >
> > > > > > +        mov     ecx,16
> > > > > >
> > > > > > +        sub     rcx,rdx
> > > > > >
> > > > > > +        xor     eax,eax
> > > > > >
> > > > > > +        DD      0x9066AAF3
> > > > > >
> > > > > > +        lea     rdi,[((-16))+rdi]
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        mov     rsi,rdi
> > > > > >
> > > > > > +        mov     rcx,r11
> > > > > >
> > > > > > +        xor     rdx,rdx
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_enc_loop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_decrypt:
> > > > > >
> > > > > > +        cmp     rdx,16
> > > > > >
> > > > > > +        jne     NEAR $L$cbc_decrypt_bulk
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[r8]
> > > > > >
> > > > > > +        movdqa  xmm4,xmm2
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_dec1_16:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        dec     r10d
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > > >
> > > > > > +        lea     rcx,[16+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_dec1_16
> > > > > >
> > > > > > +DB      102,15,56,223,209
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        movdqu  XMMWORD[r8],xmm4
> > > > > >
> > > > > > +        xorps   xmm2,xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_decrypt_bulk:
> > > > > >
> > > > > > +        lea     r11,[rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsp,176
> > > > > >
> > > > > > +        and     rsp,-16
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +        mov     rbp,rcx
> > > > > >
> > > > > > +        movups  xmm10,XMMWORD[r8]
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        cmp     rdx,0x50
> > > > > >
> > > > > > +        jbe     NEAR $L$cbc_dec_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        movdqa  xmm11,xmm2
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        movdqa  xmm12,xmm3
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        movdqa  xmm13,xmm4
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        movdqa  xmm14,xmm5
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > > > >
> > > > > > +        movdqa  xmm15,xmm6
> > > > > >
> > > > > > +        mov     r9d,DWORD[((OPENSSL_ia32cap_P+4))]
> > > > > >
> > > > > > +        cmp     rdx,0x70
> > > > > >
> > > > > > +        jbe     NEAR $L$cbc_dec_six_or_seven
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r9d,71303168
> > > > > >
> > > > > > +        sub     rdx,0x50
> > > > > >
> > > > > > +        cmp     r9d,4194304
> > > > > >
> > > > > > +        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[rsi],xmm9
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +$L$cbc_dec_loop8_enter:
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[96+rdi]
> > > > > >
> > > > > > +        pxor    xmm2,xmm0
> > > > > >
> > > > > > +        movdqu  xmm9,XMMWORD[112+rdi]
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((16-112))+rcx]
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        mov     rbp,-1
> > > > > >
> > > > > > +        cmp     rdx,0x70
> > > > > >
> > > > > > +        pxor    xmm5,xmm0
> > > > > >
> > > > > > +        pxor    xmm6,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm0
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        pxor    xmm9,xmm0
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((32-112))+rcx]
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +DB      102,68,15,56,222,193
> > > > > >
> > > > > > +        adc     rbp,0
> > > > > >
> > > > > > +        and     rbp,128
> > > > > >
> > > > > > +DB      102,68,15,56,222,201
> > > > > >
> > > > > > +        add     rbp,rdi
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((48-112))+rcx]
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +DB      102,68,15,56,222,192
> > > > > >
> > > > > > +DB      102,68,15,56,222,200
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((64-112))+rcx]
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +DB      102,68,15,56,222,193
> > > > > >
> > > > > > +DB      102,68,15,56,222,201
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((80-112))+rcx]
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +DB      102,68,15,56,222,192
> > > > > >
> > > > > > +DB      102,68,15,56,222,200
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((96-112))+rcx]
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +DB      102,68,15,56,222,193
> > > > > >
> > > > > > +DB      102,68,15,56,222,201
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((112-112))+rcx]
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +DB      102,68,15,56,222,192
> > > > > >
> > > > > > +DB      102,68,15,56,222,200
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((128-112))+rcx]
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +DB      102,68,15,56,222,193
> > > > > >
> > > > > > +DB      102,68,15,56,222,201
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((144-112))+rcx]
> > > > > >
> > > > > > +        cmp     eax,11
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +DB      102,68,15,56,222,192
> > > > > >
> > > > > > +DB      102,68,15,56,222,200
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +DB      102,15,56,222,241
> > > > > >
> > > > > > +DB      102,15,56,222,249
> > > > > >
> > > > > > +DB      102,68,15,56,222,193
> > > > > >
> > > > > > +DB      102,68,15,56,222,201
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((176-112))+rcx]
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +DB      102,68,15,56,222,192
> > > > > >
> > > > > > +DB      102,68,15,56,222,200
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +DB      102,15,56,222,241
> > > > > >
> > > > > > +DB      102,15,56,222,249
> > > > > >
> > > > > > +DB      102,68,15,56,222,193
> > > > > >
> > > > > > +DB      102,68,15,56,222,201
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[((208-112))+rcx]
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      102,15,56,222,208
> > > > > >
> > > > > > +DB      102,15,56,222,216
> > > > > >
> > > > > > +DB      102,15,56,222,224
> > > > > >
> > > > > > +DB      102,15,56,222,232
> > > > > >
> > > > > > +DB      102,15,56,222,240
> > > > > >
> > > > > > +DB      102,15,56,222,248
> > > > > >
> > > > > > +DB      102,68,15,56,222,192
> > > > > >
> > > > > > +DB      102,68,15,56,222,200
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((224-112))+rcx]
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_dec_done
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_dec_done:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +DB      102,15,56,222,217
> > > > > >
> > > > > > +        pxor    xmm10,xmm0
> > > > > >
> > > > > > +        pxor    xmm11,xmm0
> > > > > >
> > > > > > +DB      102,15,56,222,225
> > > > > >
> > > > > > +DB      102,15,56,222,233
> > > > > >
> > > > > > +        pxor    xmm12,xmm0
> > > > > >
> > > > > > +        pxor    xmm13,xmm0
> > > > > >
> > > > > > +DB      102,15,56,222,241
> > > > > >
> > > > > > +DB      102,15,56,222,249
> > > > > >
> > > > > > +        pxor    xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm15,xmm0
> > > > > >
> > > > > > +DB      102,68,15,56,222,193
> > > > > >
> > > > > > +DB      102,68,15,56,222,201
> > > > > >
> > > > > > +        movdqu  xmm1,XMMWORD[80+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,65,15,56,223,210
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[96+rdi]
> > > > > >
> > > > > > +        pxor    xmm1,xmm0
> > > > > >
> > > > > > +DB      102,65,15,56,223,219
> > > > > >
> > > > > > +        pxor    xmm10,xmm0
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[112+rdi]
> > > > > >
> > > > > > +DB      102,65,15,56,223,228
> > > > > >
> > > > > > +        lea     rdi,[128+rdi]
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[rbp]
> > > > > >
> > > > > > +DB      102,65,15,56,223,237
> > > > > >
> > > > > > +DB      102,65,15,56,223,246
> > > > > >
> > > > > > +        movdqu  xmm12,XMMWORD[16+rbp]
> > > > > >
> > > > > > +        movdqu  xmm13,XMMWORD[32+rbp]
> > > > > >
> > > > > > +DB      102,65,15,56,223,255
> > > > > >
> > > > > > +DB      102,68,15,56,223,193
> > > > > >
> > > > > > +        movdqu  xmm14,XMMWORD[48+rbp]
> > > > > >
> > > > > > +        movdqu  xmm15,XMMWORD[64+rbp]
> > > > > >
> > > > > > +DB      102,69,15,56,223,202
> > > > > >
> > > > > > +        movdqa  xmm10,xmm0
> > > > > >
> > > > > > +        movdqu  xmm1,XMMWORD[80+rbp]
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[((-112))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +        movups  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm12
> > > > > >
> > > > > > +        movups  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm13
> > > > > >
> > > > > > +        movups  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        movdqa  xmm5,xmm14
> > > > > >
> > > > > > +        movups  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        movdqa  xmm6,xmm15
> > > > > >
> > > > > > +        movups  XMMWORD[80+rsi],xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm1
> > > > > >
> > > > > > +        movups  XMMWORD[96+rsi],xmm8
> > > > > >
> > > > > > +        lea     rsi,[112+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rdx,0x80
> > > > > >
> > > > > > +        ja      NEAR $L$cbc_dec_loop8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movaps  xmm2,xmm9
> > > > > >
> > > > > > +        lea     rcx,[((-112))+rcx]
> > > > > >
> > > > > > +        add     rdx,0x70
> > > > > >
> > > > > > +        jle     NEAR $L$cbc_dec_clear_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,0x60
> > > > > >
> > > > > > +        ja      NEAR $L$cbc_dec_seven
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movaps  xmm8,xmm7
> > > > > >
> > > > > > +        call    _aesni_decrypt6
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movaps  xmm10,xmm8
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm15
> > > > > >
> > > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        lea     rsi,[80+rsi]
> > > > > >
> > > > > > +        movdqa  xmm2,xmm7
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_dec_seven:
> > > > > >
> > > > > > +        movups  xmm8,XMMWORD[96+rdi]
> > > > > >
> > > > > > +        xorps   xmm9,xmm9
> > > > > >
> > > > > > +        call    _aesni_decrypt8
> > > > > >
> > > > > > +        movups  xmm9,XMMWORD[80+rdi]
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movups  xmm10,XMMWORD[96+rdi]
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm15
> > > > > >
> > > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        pxor    xmm8,xmm9
> > > > > >
> > > > > > +        movdqu  XMMWORD[80+rsi],xmm7
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +        lea     rsi,[96+rsi]
> > > > > >
> > > > > > +        movdqa  xmm2,xmm8
> > > > > >
> > > > > > +        pxor    xmm8,xmm8
> > > > > >
> > > > > > +        pxor    xmm9,xmm9
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$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[32+rdi]
> > > > > >
> > > > > > +        movdqa  xmm12,xmm3
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        movdqa  xmm13,xmm4
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        movdqa  xmm14,xmm5
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[80+rdi]
> > > > > >
> > > > > > +        movdqa  xmm15,xmm6
> > > > > >
> > > > > > +$L$cbc_dec_loop6_enter:
> > > > > >
> > > > > > +        lea     rdi,[96+rdi]
> > > > > >
> > > > > > +        movdqa  xmm8,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _aesni_decrypt6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        mov     rcx,rbp
> > > > > >
> > > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm15
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        movdqu  XMMWORD[64+rsi],xmm6
> > > > > >
> > > > > > +        lea     rsi,[80+rsi]
> > > > > >
> > > > > > +        sub     rdx,0x60
> > > > > >
> > > > > > +        ja      NEAR $L$cbc_dec_loop6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm7
> > > > > >
> > > > > > +        add     rdx,0x50
> > > > > >
> > > > > > +        jle     NEAR $L$cbc_dec_clear_tail_collected
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm7
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$cbc_dec_tail:
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[rdi]
> > > > > >
> > > > > > +        sub     rdx,0x10
> > > > > >
> > > > > > +        jbe     NEAR $L$cbc_dec_one
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm3,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        movaps  xmm11,xmm2
> > > > > >
> > > > > > +        sub     rdx,0x10
> > > > > >
> > > > > > +        jbe     NEAR $L$cbc_dec_two
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm4,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        movaps  xmm12,xmm3
> > > > > >
> > > > > > +        sub     rdx,0x10
> > > > > >
> > > > > > +        jbe     NEAR $L$cbc_dec_three
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm5,XMMWORD[48+rdi]
> > > > > >
> > > > > > +        movaps  xmm13,xmm4
> > > > > >
> > > > > > +        sub     rdx,0x10
> > > > > >
> > > > > > +        jbe     NEAR $L$cbc_dec_four
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm6,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        movaps  xmm14,xmm5
> > > > > >
> > > > > > +        movaps  xmm15,xmm6
> > > > > >
> > > > > > +        xorps   xmm7,xmm7
> > > > > >
> > > > > > +        call    _aesni_decrypt6
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movaps  xmm10,xmm15
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqu  XMMWORD[48+rsi],xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        lea     rsi,[64+rsi]
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +        sub     rdx,0x10
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_dec_one:
> > > > > >
> > > > > > +        movaps  xmm11,xmm2
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        lea     rcx,[32+rcx]
> > > > > >
> > > > > > +        xorps   xmm2,xmm0
> > > > > >
> > > > > > +$L$oop_dec1_17:
> > > > > >
> > > > > > +DB      102,15,56,222,209
> > > > > >
> > > > > > +        dec     eax
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > > >
> > > > > > +        lea     rcx,[16+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_dec1_17
> > > > > >
> > > > > > +DB      102,15,56,223,209
> > > > > >
> > > > > > +        xorps   xmm2,xmm10
> > > > > >
> > > > > > +        movaps  xmm10,xmm11
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_dec_two:
> > > > > >
> > > > > > +        movaps  xmm12,xmm3
> > > > > >
> > > > > > +        call    _aesni_decrypt2
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movaps  xmm10,xmm12
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        lea     rsi,[16+rsi]
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_dec_three:
> > > > > >
> > > > > > +        movaps  xmm13,xmm4
> > > > > >
> > > > > > +        call    _aesni_decrypt3
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movaps  xmm10,xmm13
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        lea     rsi,[32+rsi]
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_dec_four:
> > > > > >
> > > > > > +        movaps  xmm14,xmm5
> > > > > >
> > > > > > +        call    _aesni_decrypt4
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        movaps  xmm10,xmm14
> > > > > >
> > > > > > +        pxor    xmm3,xmm11
> > > > > >
> > > > > > +        movdqu  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rsi],xmm3
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm5,xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rsi],xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        movdqa  xmm2,xmm5
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        lea     rsi,[48+rsi]
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_dec_tail_collected
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_dec_clear_tail_collected:
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +$L$cbc_dec_tail_collected:
> > > > > >
> > > > > > +        movups  XMMWORD[r8],xmm10
> > > > > >
> > > > > > +        and     rdx,15
> > > > > >
> > > > > > +        jnz     NEAR $L$cbc_dec_tail_partial
> > > > > >
> > > > > > +        movups  XMMWORD[rsi],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_dec_ret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_dec_tail_partial:
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        mov     rcx,16
> > > > > >
> > > > > > +        mov     rdi,rsi
> > > > > >
> > > > > > +        sub     rcx,rdx
> > > > > >
> > > > > > +        lea     rsi,[rsp]
> > > > > >
> > > > > > +        DD      0x9066A4F3
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$cbc_dec_ret:
> > > > > >
> > > > > > +        xorps   xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[16+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[32+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[48+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[64+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[64+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[80+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[80+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[96+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[96+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[112+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[112+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[128+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[128+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[144+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[144+rsp],xmm0
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[160+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[160+rsp],xmm0
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-8))+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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:
> > > > > >
> > > > > > +global  aesni_set_decrypt_key
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +aesni_set_decrypt_key:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      0x48,0x83,0xEC,0x08
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    __aesni_set_encrypt_key
> > > > > >
> > > > > > +        shl     edx,4
> > > > > >
> > > > > > +        test    eax,eax
> > > > > >
> > > > > > +        jnz     NEAR $L$dec_key_ret
> > > > > >
> > > > > > +        lea     rcx,[16+rdx*1+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[r8]
> > > > > >
> > > > > > +        movups  xmm1,XMMWORD[rcx]
> > > > > >
> > > > > > +DB      102,15,56,219,192
> > > > > >
> > > > > > +DB      102,15,56,219,201
> > > > > >
> > > > > > +        lea     r8,[16+r8]
> > > > > >
> > > > > > +        lea     rcx,[((-16))+rcx]
> > > > > >
> > > > > > +        movups  XMMWORD[16+rcx],xmm0
> > > > > >
> > > > > > +        movups  XMMWORD[(-16)+r8],xmm1
> > > > > >
> > > > > > +        cmp     rcx,r8
> > > > > >
> > > > > > +        ja      NEAR $L$dec_key_inverse
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[r8]
> > > > > >
> > > > > > +DB      102,15,56,219,192
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        movups  XMMWORD[rcx],xmm0
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +$L$dec_key_ret:
> > > > > >
> > > > > > +        add     rsp,8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_set_decrypt_key:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  aesni_set_encrypt_key
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +aesni_set_encrypt_key:
> > > > > >
> > > > > > +__aesni_set_encrypt_key:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      0x48,0x83,0xEC,0x08
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,-1
> > > > > >
> > > > > > +        test    rcx,rcx
> > > > > >
> > > > > > +        jz      NEAR $L$enc_key_ret
> > > > > >
> > > > > > +        test    r8,r8
> > > > > >
> > > > > > +        jz      NEAR $L$enc_key_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,268437504
> > > > > >
> > > > > > +        movups  xmm0,XMMWORD[rcx]
> > > > > >
> > > > > > +        xorps   xmm4,xmm4
> > > > > >
> > > > > > +        and     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
> > > > > >
> > > > > > +        lea     rax,[16+r8]
> > > > > >
> > > > > > +        cmp     edx,256
> > > > > >
> > > > > > +        je      NEAR $L$14rounds
> > > > > >
> > > > > > +        cmp     edx,192
> > > > > >
> > > > > > +        je      NEAR $L$12rounds
> > > > > >
> > > > > > +        cmp     edx,128
> > > > > >
> > > > > > +        jne     NEAR $L$bad_keybits
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$10rounds:
> > > > > >
> > > > > > +        mov     edx,9
> > > > > >
> > > > > > +        cmp     r10d,268435456
> > > > > >
> > > > > > +        je      NEAR $L$10rounds_alt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  XMMWORD[r8],xmm0
> > > > > >
> > > > > > +DB      102,15,58,223,200,1
> > > > > >
> > > > > > +        call    $L$key_expansion_128_cold
> > > > > >
> > > > > > +DB      102,15,58,223,200,2
> > > > > >
> > > > > > +        call    $L$key_expansion_128
> > > > > >
> > > > > > +DB      102,15,58,223,200,4
> > > > > >
> > > > > > +        call    $L$key_expansion_128
> > > > > >
> > > > > > +DB      102,15,58,223,200,8
> > > > > >
> > > > > > +        call    $L$key_expansion_128
> > > > > >
> > > > > > +DB      102,15,58,223,200,16
> > > > > >
> > > > > > +        call    $L$key_expansion_128
> > > > > >
> > > > > > +DB      102,15,58,223,200,32
> > > > > >
> > > > > > +        call    $L$key_expansion_128
> > > > > >
> > > > > > +DB      102,15,58,223,200,64
> > > > > >
> > > > > > +        call    $L$key_expansion_128
> > > > > >
> > > > > > +DB      102,15,58,223,200,128
> > > > > >
> > > > > > +        call    $L$key_expansion_128
> > > > > >
> > > > > > +DB      102,15,58,223,200,27
> > > > > >
> > > > > > +        call    $L$key_expansion_128
> > > > > >
> > > > > > +DB      102,15,58,223,200,54
> > > > > >
> > > > > > +        call    $L$key_expansion_128
> > > > > >
> > > > > > +        movups  XMMWORD[rax],xmm0
> > > > > >
> > > > > > +        mov     DWORD[80+rax],edx
> > > > > >
> > > > > > +        xor     eax,eax
> > > > > >
> > > > > > +        jmp     NEAR $L$enc_key_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$10rounds_alt:
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[$L$key_rotate]
> > > > > >
> > > > > > +        mov     r10d,8
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqu  XMMWORD[r8],xmm0
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_key128
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$oop_key128:
> > > > > >
> > > > > > +DB      102,15,56,0,197
> > > > > >
> > > > > > +DB      102,15,56,221,196
> > > > > >
> > > > > > +        pslld   xmm4,1
> > > > > >
> > > > > > +        lea     rax,[16+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm3,xmm2
> > > > > >
> > > > > > +        pslldq  xmm2,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +        pslldq  xmm2,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +        pslldq  xmm2,4
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqu  XMMWORD[(-16)+rax],xmm0
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        dec     r10d
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_key128
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1b]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,0,197
> > > > > >
> > > > > > +DB      102,15,56,221,196
> > > > > >
> > > > > > +        pslld   xmm4,1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm3,xmm2
> > > > > >
> > > > > > +        pslldq  xmm2,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +        pslldq  xmm2,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +        pslldq  xmm2,4
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqu  XMMWORD[rax],xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      102,15,56,0,197
> > > > > >
> > > > > > +DB      102,15,56,221,196
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm3,xmm2
> > > > > >
> > > > > > +        pslldq  xmm2,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +        pslldq  xmm2,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +        pslldq  xmm2,4
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rax],xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[96+rax],edx
> > > > > >
> > > > > > +        xor     eax,eax
> > > > > >
> > > > > > +        jmp     NEAR $L$enc_key_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$12rounds:
> > > > > >
> > > > > > +        movq    xmm2,QWORD[16+rcx]
> > > > > >
> > > > > > +        mov     edx,11
> > > > > >
> > > > > > +        cmp     r10d,268435456
> > > > > >
> > > > > > +        je      NEAR $L$12rounds_alt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movups  XMMWORD[r8],xmm0
> > > > > >
> > > > > > +DB      102,15,58,223,202,1
> > > > > >
> > > > > > +        call    $L$key_expansion_192a_cold
> > > > > >
> > > > > > +DB      102,15,58,223,202,2
> > > > > >
> > > > > > +        call    $L$key_expansion_192b
> > > > > >
> > > > > > +DB      102,15,58,223,202,4
> > > > > >
> > > > > > +        call    $L$key_expansion_192a
> > > > > >
> > > > > > +DB      102,15,58,223,202,8
> > > > > >
> > > > > > +        call    $L$key_expansion_192b
> > > > > >
> > > > > > +DB      102,15,58,223,202,16
> > > > > >
> > > > > > +        call    $L$key_expansion_192a
> > > > > >
> > > > > > +DB      102,15,58,223,202,32
> > > > > >
> > > > > > +        call    $L$key_expansion_192b
> > > > > >
> > > > > > +DB      102,15,58,223,202,64
> > > > > >
> > > > > > +        call    $L$key_expansion_192a
> > > > > >
> > > > > > +DB      102,15,58,223,202,128
> > > > > >
> > > > > > +        call    $L$key_expansion_192b
> > > > > >
> > > > > > +        movups  XMMWORD[rax],xmm0
> > > > > >
> > > > > > +        mov     DWORD[48+rax],edx
> > > > > >
> > > > > > +        xor     rax,rax
> > > > > >
> > > > > > +        jmp     NEAR $L$enc_key_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$12rounds_alt:
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[$L$key_rotate192]
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> > > > > >
> > > > > > +        mov     r10d,8
> > > > > >
> > > > > > +        movdqu  XMMWORD[r8],xmm0
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_key192
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$oop_key192:
> > > > > >
> > > > > > +        movq    QWORD[rax],xmm2
> > > > > >
> > > > > > +        movdqa  xmm1,xmm2
> > > > > >
> > > > > > +DB      102,15,56,0,213
> > > > > >
> > > > > > +DB      102,15,56,221,212
> > > > > >
> > > > > > +        pslld   xmm4,1
> > > > > >
> > > > > > +        lea     rax,[24+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,4
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm3,xmm0,0xff
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +        pslldq  xmm1,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +        movdqu  XMMWORD[(-16)+rax],xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        dec     r10d
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_key192
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[32+rax],edx
> > > > > >
> > > > > > +        xor     eax,eax
> > > > > >
> > > > > > +        jmp     NEAR $L$enc_key_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$14rounds:
> > > > > >
> > > > > > +        movups  xmm2,XMMWORD[16+rcx]
> > > > > >
> > > > > > +        mov     edx,13
> > > > > >
> > > > > > +        lea     rax,[16+rax]
> > > > > >
> > > > > > +        cmp     r10d,268435456
> > > > > >
> > > > > > +        je      NEAR $L$14rounds_alt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        call    $L$key_expansion_256b
> > > > > >
> > > > > > +DB      102,15,58,223,202,2
> > > > > >
> > > > > > +        call    $L$key_expansion_256a
> > > > > >
> > > > > > +DB      102,15,58,223,200,2
> > > > > >
> > > > > > +        call    $L$key_expansion_256b
> > > > > >
> > > > > > +DB      102,15,58,223,202,4
> > > > > >
> > > > > > +        call    $L$key_expansion_256a
> > > > > >
> > > > > > +DB      102,15,58,223,200,4
> > > > > >
> > > > > > +        call    $L$key_expansion_256b
> > > > > >
> > > > > > +DB      102,15,58,223,202,8
> > > > > >
> > > > > > +        call    $L$key_expansion_256a
> > > > > >
> > > > > > +DB      102,15,58,223,200,8
> > > > > >
> > > > > > +        call    $L$key_expansion_256b
> > > > > >
> > > > > > +DB      102,15,58,223,202,16
> > > > > >
> > > > > > +        call    $L$key_expansion_256a
> > > > > >
> > > > > > +DB      102,15,58,223,200,16
> > > > > >
> > > > > > +        call    $L$key_expansion_256b
> > > > > >
> > > > > > +DB      102,15,58,223,202,32
> > > > > >
> > > > > > +        call    $L$key_expansion_256a
> > > > > >
> > > > > > +DB      102,15,58,223,200,32
> > > > > >
> > > > > > +        call    $L$key_expansion_256b
> > > > > >
> > > > > > +DB      102,15,58,223,202,64
> > > > > >
> > > > > > +        call    $L$key_expansion_256a
> > > > > >
> > > > > > +        movups  XMMWORD[rax],xmm0
> > > > > >
> > > > > > +        mov     DWORD[16+rax],edx
> > > > > >
> > > > > > +        xor     rax,rax
> > > > > >
> > > > > > +        jmp     NEAR $L$enc_key_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$14rounds_alt:
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[$L$key_rotate]
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
> > > > > >
> > > > > > +        mov     r10d,7
> > > > > >
> > > > > > +        movdqu  XMMWORD[r8],xmm0
> > > > > >
> > > > > > +        movdqa  xmm1,xmm2
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+r8],xmm2
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_key256
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$oop_key256:
> > > > > >
> > > > > > +DB      102,15,56,0,213
> > > > > >
> > > > > > +DB      102,15,56,221,212
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,4
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pslld   xmm4,1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqu  XMMWORD[rax],xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        dec     r10d
> > > > > >
> > > > > > +        jz      NEAR $L$done_key256
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm2,xmm0,0xff
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +DB      102,15,56,221,211
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm3,xmm1
> > > > > >
> > > > > > +        pslldq  xmm1,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +        pslldq  xmm1,4
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +        pslldq  xmm1,4
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm2,xmm1
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rax],xmm2
> > > > > >
> > > > > > +        lea     rax,[32+rax]
> > > > > >
> > > > > > +        movdqa  xmm1,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_key256
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$done_key256:
> > > > > >
> > > > > > +        mov     DWORD[16+rax],edx
> > > > > >
> > > > > > +        xor     eax,eax
> > > > > >
> > > > > > +        jmp     NEAR $L$enc_key_ret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$bad_keybits:
> > > > > >
> > > > > > +        mov     rax,-2
> > > > > >
> > > > > > +$L$enc_key_ret:
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        add     rsp,8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +$L$SEH_end_set_encrypt_key:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$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
> > > > > >
> > > > > > +        xorps   xmm0,xmm4
> > > > > >
> > > > > > +        shufps  xmm1,xmm1,255
> > > > > >
> > > > > > +        xorps   xmm0,xmm1
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$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:
> > > > > >
> > > > > > +        shufps  xmm4,xmm0,16
> > > > > >
> > > > > > +        movdqa  xmm3,xmm2
> > > > > >
> > > > > > +        xorps   xmm0,xmm4
> > > > > >
> > > > > > +        shufps  xmm4,xmm0,140
> > > > > >
> > > > > > +        pslldq  xmm3,4
> > > > > >
> > > > > > +        xorps   xmm0,xmm4
> > > > > >
> > > > > > +        pshufd  xmm1,xmm1,85
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pshufd  xmm3,xmm0,255
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$key_expansion_192b:
> > > > > >
> > > > > > +        movaps  xmm3,xmm0
> > > > > >
> > > > > > +        shufps  xmm5,xmm0,68
> > > > > >
> > > > > > +        movups  XMMWORD[rax],xmm5
> > > > > >
> > > > > > +        shufps  xmm3,xmm2,78
> > > > > >
> > > > > > +        movups  XMMWORD[16+rax],xmm3
> > > > > >
> > > > > > +        lea     rax,[32+rax]
> > > > > >
> > > > > > +        jmp     NEAR $L$key_expansion_192b_warm
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$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
> > > > > >
> > > > > > +        xorps   xmm0,xmm4
> > > > > >
> > > > > > +        shufps  xmm1,xmm1,255
> > > > > >
> > > > > > +        xorps   xmm0,xmm1
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$key_expansion_256b:
> > > > > >
> > > > > > +        movups  XMMWORD[rax],xmm0
> > > > > >
> > > > > > +        lea     rax,[16+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        shufps  xmm4,xmm2,16
> > > > > >
> > > > > > +        xorps   xmm2,xmm4
> > > > > >
> > > > > > +        shufps  xmm4,xmm2,140
> > > > > >
> > > > > > +        xorps   xmm2,xmm4
> > > > > >
> > > > > > +        shufps  xmm1,xmm1,170
> > > > > >
> > > > > > +        xorps   xmm2,xmm1
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +$L$bswap_mask:
> > > > > >
> > > > > > +DB      15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
> > > > > >
> > > > > > +$L$increment32:
> > > > > >
> > > > > > +        DD      6,6,6,0
> > > > > >
> > > > > > +$L$increment64:
> > > > > >
> > > > > > +        DD      1,0,0,0
> > > > > >
> > > > > > +$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
> > > > > >
> > > > > > +$L$key_rotate:
> > > > > >
> > > > > > +        DD      0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
> > > > > >
> > > > > > +$L$key_rotate192:
> > > > > >
> > > > > > +        DD      0x04070605,0x04070605,0x04070605,0x04070605
> > > > > >
> > > > > > +$L$key_rcon1:
> > > > > >
> > > > > > +        DD      1,1,1,1
> > > > > >
> > > > > > +$L$key_rcon1b:
> > > > > >
> > > > > > +        DD      0x1b,0x1b,0x1b,0x1b
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
> > > > > >
> > > > > > +DB      83,45,78,73,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   64
> > > > > >
> > > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +ecb_ccm64_se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,8
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +        lea     rax,[88+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +ctr_xts_se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[208+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((-168))+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,20
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-8))+rax]
> > > > > >
> > > > > > +        mov     QWORD[160+r8],rbp
> > > > > >
> > > > > > +        jmp     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +ocb_se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[8+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$ocb_no_xmm
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,20
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +        lea     rax,[((160+40))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ocb_no_xmm:
> > > > > >
> > > > > > +        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     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +cbc_se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$cbc_decrypt_bulk]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$cbc_decrypt_body]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$cbc_ret]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[16+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,20
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[208+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-8))+rax]
> > > > > >
> > > > > > +        mov     QWORD[160+r8],rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .pdata rdata align=4
> > > > > >
> > > > > > +ALIGN   4
> > > > > >
> > > > > > +        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      $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      $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      $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      $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      $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_ocb_encrypt wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_aesni_ocb_encrypt wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_ocb_enc wrt ..imagebase
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        DD      $L$SEH_begin_aesni_ocb_decrypt wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_aesni_ocb_decrypt wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_ocb_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      aesni_set_decrypt_key wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_set_decrypt_key wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_key wrt ..imagebase
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      ecb_ccm64_se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret
> > > > wrt ..imagebase
> > > > > >
> > > > > > +$L$SEH_info_ccm64_enc:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      ecb_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      ecb_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      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      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      ctr_xts_se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$xts_dec_body wrt
> ..imagebase,$L$xts_dec_epilogue
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > +$L$SEH_info_ocb_enc:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      ocb_se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$ocb_enc_body wrt
> ..imagebase,$L$ocb_enc_epilogue
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$ocb_enc_pop wrt ..imagebase
> > > > > >
> > > > > > +        DD      0
> > > > > >
> > > > > > +$L$SEH_info_ocb_dec:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      ocb_se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$ocb_dec_body wrt
> ..imagebase,$L$ocb_dec_epilogue
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$ocb_dec_pop wrt ..imagebase
> > > > > >
> > > > > > +        DD      0
> > > > > >
> > > > > > +$L$SEH_info_cbc:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      cbc_se_handler wrt ..imagebase
> > > > > >
> > > > > > +$L$SEH_info_key:
> > > > > >
> > > > > > +DB      0x01,0x04,0x01,0x00
> > > > > >
> > > > > > +DB      0x04,0x02,0x00,0x00
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-
> > > > x86_64.nasm
> > > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..1c911fa294
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
> > > > > > @@ -0,0 +1,1173 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/aes/asm/vpaes-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not
> use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain
> a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_vpaes_encrypt_core:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r9,rdx
> > > > > >
> > > > > > +        mov     r11,16
> > > > > >
> > > > > > +        mov     eax,DWORD[240+rdx]
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[$L$k_ipt]
> > > > > >
> > > > > > +        pandn   xmm1,xmm0
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[r9]
> > > > > >
> > > > > > +        psrld   xmm1,4
> > > > > >
> > > > > > +        pand    xmm0,xmm9
> > > > > >
> > > > > > +DB      102,15,56,0,208
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[(($L$k_ipt+16))]
> > > > > >
> > > > > > +DB      102,15,56,0,193
> > > > > >
> > > > > > +        pxor    xmm2,xmm5
> > > > > >
> > > > > > +        add     r9,16
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        lea     r10,[$L$k_mc_backward]
> > > > > >
> > > > > > +        jmp     NEAR $L$enc_entry
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$enc_loop:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm13
> > > > > >
> > > > > > +        movdqa  xmm0,xmm12
> > > > > >
> > > > > > +DB      102,15,56,0,226
> > > > > >
> > > > > > +DB      102,15,56,0,195
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        movdqa  xmm5,xmm15
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((-64))+r10*1+r11]
> > > > > >
> > > > > > +DB      102,15,56,0,234
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[r10*1+r11]
> > > > > >
> > > > > > +        movdqa  xmm2,xmm14
> > > > > >
> > > > > > +DB      102,15,56,0,211
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm2,xmm5
> > > > > >
> > > > > > +DB      102,15,56,0,193
> > > > > >
> > > > > > +        add     r9,16
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +DB      102,15,56,0,220
> > > > > >
> > > > > > +        add     r11,16
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +DB      102,15,56,0,193
> > > > > >
> > > > > > +        and     r11,0x30
> > > > > >
> > > > > > +        sub     rax,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$enc_entry:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        movdqa  xmm5,xmm11
> > > > > >
> > > > > > +        pandn   xmm1,xmm0
> > > > > >
> > > > > > +        psrld   xmm1,4
> > > > > >
> > > > > > +        pand    xmm0,xmm9
> > > > > >
> > > > > > +DB      102,15,56,0,232
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +DB      102,15,56,0,217
> > > > > >
> > > > > > +        movdqa  xmm4,xmm10
> > > > > >
> > > > > > +        pxor    xmm3,xmm5
> > > > > >
> > > > > > +DB      102,15,56,0,224
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +DB      102,15,56,0,211
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +        pxor    xmm2,xmm0
> > > > > >
> > > > > > +DB      102,15,56,0,220
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[r9]
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +        jnz     NEAR $L$enc_loop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[64+r10*1+r11]
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +DB      102,15,56,0,193
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_vpaes_decrypt_core:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r9,rdx
> > > > > >
> > > > > > +        mov     eax,DWORD[240+rdx]
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[$L$k_dipt]
> > > > > >
> > > > > > +        pandn   xmm1,xmm0
> > > > > >
> > > > > > +        mov     r11,rax
> > > > > >
> > > > > > +        psrld   xmm1,4
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[r9]
> > > > > >
> > > > > > +        shl     r11,4
> > > > > >
> > > > > > +        pand    xmm0,xmm9
> > > > > >
> > > > > > +DB      102,15,56,0,208
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[(($L$k_dipt+16))]
> > > > > >
> > > > > > +        xor     r11,0x30
> > > > > >
> > > > > > +        lea     r10,[$L$k_dsbd]
> > > > > >
> > > > > > +DB      102,15,56,0,193
> > > > > >
> > > > > > +        and     r11,0x30
> > > > > >
> > > > > > +        pxor    xmm2,xmm5
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[(($L$k_mc_forward+48))]
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        add     r9,16
> > > > > >
> > > > > > +        add     r11,r10
> > > > > >
> > > > > > +        jmp     NEAR $L$dec_entry
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$dec_loop:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[r10]
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        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[32+r10]
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        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[64+r10]
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[80+r10]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,0,226
> > > > > >
> > > > > > +DB      102,15,56,0,197
> > > > > >
> > > > > > +DB      102,15,56,0,203
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        add     r9,16
> > > > > >
> > > > > > +DB      102,15,58,15,237,12
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        sub     rax,1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$dec_entry:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pandn   xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +        psrld   xmm1,4
> > > > > >
> > > > > > +        pand    xmm0,xmm9
> > > > > >
> > > > > > +DB      102,15,56,0,208
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +DB      102,15,56,0,217
> > > > > >
> > > > > > +        movdqa  xmm4,xmm10
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +DB      102,15,56,0,224
> > > > > >
> > > > > > +        pxor    xmm4,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +DB      102,15,56,0,211
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +        pxor    xmm2,xmm0
> > > > > >
> > > > > > +DB      102,15,56,0,220
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[r9]
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +        jnz     NEAR $L$dec_loop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[96+r10]
> > > > > >
> > > > > > +DB      102,15,56,0,226
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_vpaes_schedule_core:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _vpaes_preheat
> > > > > >
> > > > > > +        movdqa  xmm8,XMMWORD[$L$k_rcon]
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        lea     r11,[$L$k_ipt]
> > > > > >
> > > > > > +        call    _vpaes_schedule_transform
> > > > > >
> > > > > > +        movdqa  xmm7,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$k_sr]
> > > > > >
> > > > > > +        test    rcx,rcx
> > > > > >
> > > > > > +        jnz     NEAR $L$schedule_am_decrypting
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  XMMWORD[rdx],xmm0
> > > > > >
> > > > > > +        jmp     NEAR $L$schedule_go
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$schedule_am_decrypting:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> > > > > >
> > > > > > +DB      102,15,56,0,217
> > > > > >
> > > > > > +        movdqu  XMMWORD[rdx],xmm3
> > > > > >
> > > > > > +        xor     r8,0x30
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$schedule_go:
> > > > > >
> > > > > > +        cmp     esi,192
> > > > > >
> > > > > > +        ja      NEAR $L$schedule_256
> > > > > >
> > > > > > +        je      NEAR $L$schedule_192
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$schedule_128:
> > > > > >
> > > > > > +        mov     esi,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$oop_schedule_128:
> > > > > >
> > > > > > +        call    _vpaes_schedule_round
> > > > > >
> > > > > > +        dec     rsi
> > > > > >
> > > > > > +        jz      NEAR $L$schedule_mangle_last
> > > > > >
> > > > > > +        call    _vpaes_schedule_mangle
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_schedule_128
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$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:
> > > > > >
> > > > > > +        call    _vpaes_schedule_round
> > > > > >
> > > > > > +DB      102,15,58,15,198,8
> > > > > >
> > > > > > +        call    _vpaes_schedule_mangle
> > > > > >
> > > > > > +        call    _vpaes_schedule_192_smear
> > > > > >
> > > > > > +        call    _vpaes_schedule_mangle
> > > > > >
> > > > > > +        call    _vpaes_schedule_round
> > > > > >
> > > > > > +        dec     rsi
> > > > > >
> > > > > > +        jz      NEAR $L$schedule_mangle_last
> > > > > >
> > > > > > +        call    _vpaes_schedule_mangle
> > > > > >
> > > > > > +        call    _vpaes_schedule_192_smear
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_schedule_192
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$schedule_256:
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        call    _vpaes_schedule_transform
> > > > > >
> > > > > > +        mov     esi,7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$oop_schedule_256:
> > > > > >
> > > > > > +        call    _vpaes_schedule_mangle
> > > > > >
> > > > > > +        movdqa  xmm6,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        call    _vpaes_schedule_round
> > > > > >
> > > > > > +        dec     rsi
> > > > > >
> > > > > > +        jz      NEAR $L$schedule_mangle_last
> > > > > >
> > > > > > +        call    _vpaes_schedule_mangle
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0xFF
> > > > > >
> > > > > > +        movdqa  xmm5,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        call    _vpaes_schedule_low_round
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_schedule_256
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$schedule_mangle_last:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r11,[$L$k_deskew]
> > > > > >
> > > > > > +        test    rcx,rcx
> > > > > >
> > > > > > +        jnz     NEAR $L$schedule_mangle_last_dec
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> > > > > >
> > > > > > +DB      102,15,56,0,193
> > > > > >
> > > > > > +        lea     r11,[$L$k_opt]
> > > > > >
> > > > > > +        add     rdx,32
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$schedule_mangle_last_dec:
> > > > > >
> > > > > > +        add     rdx,-16
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[$L$k_s63]
> > > > > >
> > > > > > +        call    _vpaes_schedule_transform
> > > > > >
> > > > > > +        movdqu  XMMWORD[rdx],xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm7
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_vpaes_schedule_round:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +DB      102,65,15,58,15,200,15
> > > > > >
> > > > > > +DB      102,69,15,58,15,192,15
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0xFF
> > > > > >
> > > > > > +DB      102,15,58,15,192,1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +_vpaes_schedule_low_round:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm7
> > > > > >
> > > > > > +        pslldq  xmm7,4
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,xmm7
> > > > > >
> > > > > > +        pslldq  xmm7,8
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm7,XMMWORD[$L$k_s63]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pandn   xmm1,xmm0
> > > > > >
> > > > > > +        psrld   xmm1,4
> > > > > >
> > > > > > +        pand    xmm0,xmm9
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +DB      102,15,56,0,208
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +DB      102,15,56,0,217
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm10
> > > > > >
> > > > > > +DB      102,15,56,0,224
> > > > > >
> > > > > > +        pxor    xmm4,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +DB      102,15,56,0,211
> > > > > >
> > > > > > +        pxor    xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +DB      102,15,56,0,220
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +        movdqa  xmm4,xmm13
> > > > > >
> > > > > > +DB      102,15,56,0,226
> > > > > >
> > > > > > +        movdqa  xmm0,xmm12
> > > > > >
> > > > > > +DB      102,15,56,0,195
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm0
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_vpaes_schedule_transform:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pandn   xmm1,xmm0
> > > > > >
> > > > > > +        psrld   xmm1,4
> > > > > >
> > > > > > +        pand    xmm0,xmm9
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[r11]
> > > > > >
> > > > > > +DB      102,15,56,0,208
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[16+r11]
> > > > > >
> > > > > > +DB      102,15,56,0,193
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_vpaes_schedule_mangle:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[$L$k_mc_forward]
> > > > > >
> > > > > > +        test    rcx,rcx
> > > > > >
> > > > > > +        jnz     NEAR $L$schedule_mangle_dec
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     rdx,16
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[$L$k_s63]
> > > > > >
> > > > > > +DB      102,15,56,0,229
> > > > > >
> > > > > > +        movdqa  xmm3,xmm4
> > > > > >
> > > > > > +DB      102,15,56,0,229
> > > > > >
> > > > > > +        pxor    xmm3,xmm4
> > > > > >
> > > > > > +DB      102,15,56,0,229
> > > > > >
> > > > > > +        pxor    xmm3,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$schedule_mangle_both
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$schedule_mangle_dec:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r11,[$L$k_dksd]
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pandn   xmm1,xmm4
> > > > > >
> > > > > > +        psrld   xmm1,4
> > > > > >
> > > > > > +        pand    xmm4,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[r11]
> > > > > >
> > > > > > +DB      102,15,56,0,212
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[16+r11]
> > > > > >
> > > > > > +DB      102,15,56,0,217
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +DB      102,15,56,0,221
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[32+r11]
> > > > > >
> > > > > > +DB      102,15,56,0,212
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[48+r11]
> > > > > >
> > > > > > +DB      102,15,56,0,217
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +DB      102,15,56,0,221
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[64+r11]
> > > > > >
> > > > > > +DB      102,15,56,0,212
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[80+r11]
> > > > > >
> > > > > > +DB      102,15,56,0,217
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +DB      102,15,56,0,221
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[96+r11]
> > > > > >
> > > > > > +DB      102,15,56,0,212
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[112+r11]
> > > > > >
> > > > > > +DB      102,15,56,0,217
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     rdx,-16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$schedule_mangle_both:
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[r10*1+r8]
> > > > > >
> > > > > > +DB      102,15,56,0,217
> > > > > >
> > > > > > +        add     r8,-16
> > > > > >
> > > > > > +        and     r8,0x30
> > > > > >
> > > > > > +        movdqu  XMMWORD[rdx],xmm3
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  vpaes_set_encrypt_key
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[240+rdx],eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,0
> > > > > >
> > > > > > +        mov     r8d,0x30
> > > > > >
> > > > > > +        call    _vpaes_schedule_core
> > > > > >
> > > > > > +        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[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_vpaes_set_encrypt_key:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  vpaes_set_decrypt_key
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[240+rdx],eax
> > > > > >
> > > > > > +        shl     eax,4
> > > > > >
> > > > > > +        lea     rdx,[16+rax*1+rdx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,1
> > > > > >
> > > > > > +        mov     r8d,esi
> > > > > >
> > > > > > +        shr     r8d,1
> > > > > >
> > > > > > +        and     r8d,32
> > > > > >
> > > > > > +        xor     r8d,32
> > > > > >
> > > > > > +        call    _vpaes_schedule_core
> > > > > >
> > > > > > +        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[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_vpaes_set_decrypt_key:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  vpaes_encrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +vpaes_encrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_vpaes_encrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[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:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  vpaes_decrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +vpaes_decrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_vpaes_decrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[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:
> > > > > >
> > > > > > +global  vpaes_cbc_encrypt
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +vpaes_cbc_encrypt:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_vpaes_cbc_encrypt:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +        mov     r8,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r9,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xchg    rdx,rcx
> > > > > >
> > > > > > +        sub     rcx,16
> > > > > >
> > > > > > +        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      NEAR $L$cbc_dec_loop
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_enc_loop
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_enc_loop:
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > > > >
> > > > > > +        pxor    xmm0,xmm6
> > > > > >
> > > > > > +        call    _vpaes_encrypt_core
> > > > > >
> > > > > > +        movdqa  xmm6,xmm0
> > > > > >
> > > > > > +        movdqu  XMMWORD[rdi*1+rsi],xmm0
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +        sub     rcx,16
> > > > > >
> > > > > > +        jnc     NEAR $L$cbc_enc_loop
> > > > > >
> > > > > > +        jmp     NEAR $L$cbc_done
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$cbc_dec_loop:
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > > > >
> > > > > > +        movdqa  xmm7,xmm0
> > > > > >
> > > > > > +        call    _vpaes_decrypt_core
> > > > > >
> > > > > > +        pxor    xmm0,xmm6
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        movdqu  XMMWORD[rdi*1+rsi],xmm0
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +        sub     rcx,16
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +_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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +_vpaes_consts:
> > > > > >
> > > > > > +$L$k_inv:
> > > > > >
> > > > > > +        DQ      0x0E05060F0D080180,0x040703090A0B0C02
> > > > > >
> > > > > > +        DQ      0x01040A060F0B0780,0x030D0E0C02050809
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$k_s0F:
> > > > > >
> > > > > > +        DQ      0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$k_ipt:
> > > > > >
> > > > > > +        DQ      0xC2B2E8985A2A7000,0xCABAE09052227808
> > > > > >
> > > > > > +        DQ      0x4C01307D317C4D00,0xCD80B1FCB0FDCC81
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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      0x0407060500030201,0x0C0F0E0D080B0A09
> > > > > >
> > > > > > +        DQ      0x080B0A0904070605,0x000302010C0F0E0D
> > > > > >
> > > > > > +        DQ      0x0C0F0E0D080B0A09,0x0407060500030201
> > > > > >
> > > > > > +        DQ      0x000302010C0F0E0D,0x080B0A0904070605
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$k_mc_backward:
> > > > > >
> > > > > > +        DQ      0x0605040702010003,0x0E0D0C0F0A09080B
> > > > > >
> > > > > > +        DQ      0x020100030E0D0C0F,0x0A09080B06050407
> > > > > >
> > > > > > +        DQ      0x0E0D0C0F0A09080B,0x0605040702010003
> > > > > >
> > > > > > +        DQ      0x0A09080B06050407,0x020100030E0D0C0F
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$k_sr:
> > > > > >
> > > > > > +        DQ      0x0706050403020100,0x0F0E0D0C0B0A0908
> > > > > >
> > > > > > +        DQ      0x030E09040F0A0500,0x0B06010C07020D08
> > > > > >
> > > > > > +        DQ      0x0F060D040B020900,0x070E050C030A0108
> > > > > >
> > > > > > +        DQ      0x0B0E0104070A0D00,0x0306090C0F020508
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$k_rcon:
> > > > > >
> > > > > > +        DQ      0x1F8391B9AF9DEEB6,0x702A98084D7C7D81
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$k_s63:
> > > > > >
> > > > > > +        DQ      0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$k_opt:
> > > > > >
> > > > > > +        DQ      0xFF9F4929D6B66000,0xF7974121DEBE6808
> > > > > >
> > > > > > +        DQ      0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$k_deskew:
> > > > > >
> > > > > > +        DQ      0x07E4A34047A4E300,0x1DFEB95A5DBEF91A
> > > > > >
> > > > > > +        DQ      0x5F36B5DC83EA6900,0x2841C2ABF49D1E77
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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      0x0F505B040B545F00,0x154A411E114E451A
> > > > > >
> > > > > > +        DQ      0x86E383E660056500,0x12771772F491F194
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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
> > > > > >
> > > > > > +DB      109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32
> > > > > >
> > > > > > +DB      85,110,105,118,101,114,115,105,116,121,41,0
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[16+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,20
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +        lea     rax,[184+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .pdata rdata align=4
> > > > > >
> > > > > > +ALIGN   4
> > > > > >
> > > > > > +        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      $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      $L$SEH_begin_vpaes_encrypt wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_vpaes_encrypt wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_vpaes_encrypt wrt ..imagebase
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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      $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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .xdata rdata align=8
> > > > > >
> > > > > > +ALIGN   8
> > > > > >
> > > > > > +$L$SEH_info_vpaes_set_encrypt_key:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        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      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      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      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      se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt
> > > ..imagebase
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
> > > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
> > > > > > x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..60f283d5fb
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
> x86_64.nasm
> > > > > > @@ -0,0 +1,1569 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/modes/asm/ghash-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2010-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not
> use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain
> a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  gcm_gmult_4bit
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +gcm_gmult_4bit:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_gcm_gmult_4bit:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsp,280
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$gmult_prologue:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[8+rax*1+rsi]
> > > > > >
> > > > > > +        mov     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        and     bl,0xf0
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        jmp     NEAR $L$oop1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$oop1:
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        and     rdx,0xf
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        mov     al,BYTE[rcx*1+rdi]
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rbx*1+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        xor     r9,QWORD[rbx*1+rsi]
> > > > > >
> > > > > > +        mov     bl,al
> > > > > >
> > > > > > +        xor     r9,QWORD[rdx*8+r11]
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        dec     rcx
> > > > > >
> > > > > > +        js      NEAR $L$break1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        and     rdx,0xf
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        and     bl,0xf0
> > > > > >
> > > > > > +        xor     r9,QWORD[rdx*8+r11]
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        jmp     NEAR $L$oop1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$break1:
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        and     rdx,0xf
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        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,0xf
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rbx*1+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        xor     r9,QWORD[rbx*1+rsi]
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        xor     r9,QWORD[rdx*8+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        bswap   r8
> > > > > >
> > > > > > +        bswap   r9
> > > > > >
> > > > > > +        mov     QWORD[8+rdi],r8
> > > > > >
> > > > > > +        mov     QWORD[rdi],r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((280+48))+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbx,QWORD[((-8))+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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:
> > > > > >
> > > > > > +global  gcm_ghash_4bit
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +gcm_ghash_4bit:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_gcm_ghash_4bit:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +        mov     rcx,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     rsp,280
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ghash_prologue:
> > > > > >
> > > > > > +        mov     r14,rdx
> > > > > >
> > > > > > +        mov     r15,rcx
> > > > > >
> > > > > > +        sub     rsi,-128
> > > > > >
> > > > > > +        lea     rbp,[((16+128))+rsp]
> > > > > >
> > > > > > +        xor     edx,edx
> > > > > >
> > > > > > +        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[((16+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     rbx,QWORD[((16+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[rsp],dl
> > > > > >
> > > > > > +        or      rax,r10
> > > > > >
> > > > > > +        mov     dl,bl
> > > > > >
> > > > > > +        shr     rbx,4
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        mov     QWORD[rbp],r8
> > > > > >
> > > > > > +        mov     r8,QWORD[((32+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((0-128))+rbp],rax
> > > > > >
> > > > > > +        mov     rax,QWORD[((32+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[1+rsp],dl
> > > > > >
> > > > > > +        or      rbx,r10
> > > > > >
> > > > > > +        mov     dl,al
> > > > > >
> > > > > > +        shr     rax,4
> > > > > >
> > > > > > +        mov     r10,r8
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        mov     QWORD[8+rbp],r9
> > > > > >
> > > > > > +        mov     r9,QWORD[((48+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((8-128))+rbp],rbx
> > > > > >
> > > > > > +        mov     rbx,QWORD[((48+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[2+rsp],dl
> > > > > >
> > > > > > +        or      rax,r10
> > > > > >
> > > > > > +        mov     dl,bl
> > > > > >
> > > > > > +        shr     rbx,4
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        mov     QWORD[16+rbp],r8
> > > > > >
> > > > > > +        mov     r8,QWORD[((64+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((16-128))+rbp],rax
> > > > > >
> > > > > > +        mov     rax,QWORD[((64+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[3+rsp],dl
> > > > > >
> > > > > > +        or      rbx,r10
> > > > > >
> > > > > > +        mov     dl,al
> > > > > >
> > > > > > +        shr     rax,4
> > > > > >
> > > > > > +        mov     r10,r8
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        mov     QWORD[24+rbp],r9
> > > > > >
> > > > > > +        mov     r9,QWORD[((80+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((24-128))+rbp],rbx
> > > > > >
> > > > > > +        mov     rbx,QWORD[((80+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[4+rsp],dl
> > > > > >
> > > > > > +        or      rax,r10
> > > > > >
> > > > > > +        mov     dl,bl
> > > > > >
> > > > > > +        shr     rbx,4
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        mov     QWORD[32+rbp],r8
> > > > > >
> > > > > > +        mov     r8,QWORD[((96+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((32-128))+rbp],rax
> > > > > >
> > > > > > +        mov     rax,QWORD[((96+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[5+rsp],dl
> > > > > >
> > > > > > +        or      rbx,r10
> > > > > >
> > > > > > +        mov     dl,al
> > > > > >
> > > > > > +        shr     rax,4
> > > > > >
> > > > > > +        mov     r10,r8
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        mov     QWORD[40+rbp],r9
> > > > > >
> > > > > > +        mov     r9,QWORD[((112+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((40-128))+rbp],rbx
> > > > > >
> > > > > > +        mov     rbx,QWORD[((112+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[6+rsp],dl
> > > > > >
> > > > > > +        or      rax,r10
> > > > > >
> > > > > > +        mov     dl,bl
> > > > > >
> > > > > > +        shr     rbx,4
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        mov     QWORD[48+rbp],r8
> > > > > >
> > > > > > +        mov     r8,QWORD[((128+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((48-128))+rbp],rax
> > > > > >
> > > > > > +        mov     rax,QWORD[((128+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[7+rsp],dl
> > > > > >
> > > > > > +        or      rbx,r10
> > > > > >
> > > > > > +        mov     dl,al
> > > > > >
> > > > > > +        shr     rax,4
> > > > > >
> > > > > > +        mov     r10,r8
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        mov     QWORD[56+rbp],r9
> > > > > >
> > > > > > +        mov     r9,QWORD[((144+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((56-128))+rbp],rbx
> > > > > >
> > > > > > +        mov     rbx,QWORD[((144+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[8+rsp],dl
> > > > > >
> > > > > > +        or      rax,r10
> > > > > >
> > > > > > +        mov     dl,bl
> > > > > >
> > > > > > +        shr     rbx,4
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        mov     QWORD[64+rbp],r8
> > > > > >
> > > > > > +        mov     r8,QWORD[((160+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((64-128))+rbp],rax
> > > > > >
> > > > > > +        mov     rax,QWORD[((160+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[9+rsp],dl
> > > > > >
> > > > > > +        or      rbx,r10
> > > > > >
> > > > > > +        mov     dl,al
> > > > > >
> > > > > > +        shr     rax,4
> > > > > >
> > > > > > +        mov     r10,r8
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        mov     QWORD[72+rbp],r9
> > > > > >
> > > > > > +        mov     r9,QWORD[((176+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((72-128))+rbp],rbx
> > > > > >
> > > > > > +        mov     rbx,QWORD[((176+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[10+rsp],dl
> > > > > >
> > > > > > +        or      rax,r10
> > > > > >
> > > > > > +        mov     dl,bl
> > > > > >
> > > > > > +        shr     rbx,4
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        mov     QWORD[80+rbp],r8
> > > > > >
> > > > > > +        mov     r8,QWORD[((192+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((80-128))+rbp],rax
> > > > > >
> > > > > > +        mov     rax,QWORD[((192+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[11+rsp],dl
> > > > > >
> > > > > > +        or      rbx,r10
> > > > > >
> > > > > > +        mov     dl,al
> > > > > >
> > > > > > +        shr     rax,4
> > > > > >
> > > > > > +        mov     r10,r8
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        mov     QWORD[88+rbp],r9
> > > > > >
> > > > > > +        mov     r9,QWORD[((208+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((88-128))+rbp],rbx
> > > > > >
> > > > > > +        mov     rbx,QWORD[((208+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[12+rsp],dl
> > > > > >
> > > > > > +        or      rax,r10
> > > > > >
> > > > > > +        mov     dl,bl
> > > > > >
> > > > > > +        shr     rbx,4
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        mov     QWORD[96+rbp],r8
> > > > > >
> > > > > > +        mov     r8,QWORD[((224+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((96-128))+rbp],rax
> > > > > >
> > > > > > +        mov     rax,QWORD[((224+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[13+rsp],dl
> > > > > >
> > > > > > +        or      rbx,r10
> > > > > >
> > > > > > +        mov     dl,al
> > > > > >
> > > > > > +        shr     rax,4
> > > > > >
> > > > > > +        mov     r10,r8
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        mov     QWORD[104+rbp],r9
> > > > > >
> > > > > > +        mov     r9,QWORD[((240+0-128))+rsi]
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((104-128))+rbp],rbx
> > > > > >
> > > > > > +        mov     rbx,QWORD[((240+8-128))+rsi]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[14+rsp],dl
> > > > > >
> > > > > > +        or      rax,r10
> > > > > >
> > > > > > +        mov     dl,bl
> > > > > >
> > > > > > +        shr     rbx,4
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        mov     QWORD[112+rbp],r8
> > > > > >
> > > > > > +        shl     dl,4
> > > > > >
> > > > > > +        mov     QWORD[((112-128))+rbp],rax
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        mov     BYTE[15+rsp],dl
> > > > > >
> > > > > > +        or      rbx,r10
> > > > > >
> > > > > > +        mov     QWORD[120+rbp],r9
> > > > > >
> > > > > > +        mov     QWORD[((120-128))+rbp],rbx
> > > > > >
> > > > > > +        add     rsi,-128
> > > > > >
> > > > > > +        mov     r8,QWORD[8+rdi]
> > > > > >
> > > > > > +        mov     r9,QWORD[rdi]
> > > > > >
> > > > > > +        add     r15,r14
> > > > > >
> > > > > > +        lea     r11,[$L$rem_8bit]
> > > > > >
> > > > > > +        jmp     NEAR $L$outer_loop
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$outer_loop:
> > > > > >
> > > > > > +        xor     r9,QWORD[r14]
> > > > > >
> > > > > > +        mov     rdx,QWORD[8+r14]
> > > > > >
> > > > > > +        lea     r14,[16+r14]
> > > > > >
> > > > > > +        xor     rdx,r8
> > > > > >
> > > > > > +        mov     QWORD[rdi],r9
> > > > > >
> > > > > > +        mov     QWORD[8+rdi],rdx
> > > > > >
> > > > > > +        shr     rdx,32
> > > > > >
> > > > > > +        xor     rax,rax
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        movzx   ebx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        shr     ebx,4
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        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[rbx*1+rsp]
> > > > > >
> > > > > > +        shr     ecx,4
> > > > > >
> > > > > > +        xor     r12,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r12,r12b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > > >
> > > > > > +        movzx   ebx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > > >
> > > > > > +        shr     ebx,4
> > > > > >
> > > > > > +        shl     r12,48
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r12
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r13,r13b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > > >
> > > > > > +        movzx   ecx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > > >
> > > > > > +        shr     ecx,4
> > > > > >
> > > > > > +        shl     r13,48
> > > > > >
> > > > > > +        xor     r12,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r13
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r12,r12b
> > > > > >
> > > > > > +        mov     edx,DWORD[8+rdi]
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > > >
> > > > > > +        movzx   ebx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > > >
> > > > > > +        shr     ebx,4
> > > > > >
> > > > > > +        shl     r12,48
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r12
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r13,r13b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > > >
> > > > > > +        movzx   ecx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > > >
> > > > > > +        shr     ecx,4
> > > > > >
> > > > > > +        shl     r13,48
> > > > > >
> > > > > > +        xor     r12,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r13
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r12,r12b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > > >
> > > > > > +        movzx   ebx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > > >
> > > > > > +        shr     ebx,4
> > > > > >
> > > > > > +        shl     r12,48
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r12
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r13,r13b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > > >
> > > > > > +        movzx   ecx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > > >
> > > > > > +        shr     ecx,4
> > > > > >
> > > > > > +        shl     r13,48
> > > > > >
> > > > > > +        xor     r12,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r13
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r12,r12b
> > > > > >
> > > > > > +        mov     edx,DWORD[4+rdi]
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > > >
> > > > > > +        movzx   ebx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > > >
> > > > > > +        shr     ebx,4
> > > > > >
> > > > > > +        shl     r12,48
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r12
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r13,r13b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > > >
> > > > > > +        movzx   ecx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > > >
> > > > > > +        shr     ecx,4
> > > > > >
> > > > > > +        shl     r13,48
> > > > > >
> > > > > > +        xor     r12,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r13
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r12,r12b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > > >
> > > > > > +        movzx   ebx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > > >
> > > > > > +        shr     ebx,4
> > > > > >
> > > > > > +        shl     r12,48
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r12
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r13,r13b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > > >
> > > > > > +        movzx   ecx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > > >
> > > > > > +        shr     ecx,4
> > > > > >
> > > > > > +        shl     r13,48
> > > > > >
> > > > > > +        xor     r12,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r13
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r12,r12b
> > > > > >
> > > > > > +        mov     edx,DWORD[rdi]
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > > >
> > > > > > +        movzx   ebx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > > >
> > > > > > +        shr     ebx,4
> > > > > >
> > > > > > +        shl     r12,48
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r12
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r13,r13b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > > >
> > > > > > +        movzx   ecx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > > >
> > > > > > +        shr     ecx,4
> > > > > >
> > > > > > +        shl     r13,48
> > > > > >
> > > > > > +        xor     r12,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r13
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r12,r12b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rbx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r12,WORD[r12*2+r11]
> > > > > >
> > > > > > +        movzx   ebx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r13,BYTE[rcx*1+rsp]
> > > > > >
> > > > > > +        shr     ebx,4
> > > > > >
> > > > > > +        shl     r12,48
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r12
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r13,r13b
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rcx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        xor     r9,QWORD[rcx*8+rbp]
> > > > > >
> > > > > > +        rol     edx,8
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rax*1+rsi]
> > > > > >
> > > > > > +        xor     r9,QWORD[rax*1+rsi]
> > > > > >
> > > > > > +        mov     al,dl
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > > >
> > > > > > +        movzx   ecx,dl
> > > > > >
> > > > > > +        shl     al,4
> > > > > >
> > > > > > +        movzx   r12,BYTE[rbx*1+rsp]
> > > > > >
> > > > > > +        and     ecx,240
> > > > > >
> > > > > > +        shl     r13,48
> > > > > >
> > > > > > +        xor     r12,r8
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        xor     r9,r13
> > > > > >
> > > > > > +        shr     r8,8
> > > > > >
> > > > > > +        movzx   r12,r12b
> > > > > >
> > > > > > +        mov     edx,DWORD[((-4))+rdi]
> > > > > >
> > > > > > +        shr     r9,8
> > > > > >
> > > > > > +        xor     r8,QWORD[((-128))+rbx*8+rbp]
> > > > > >
> > > > > > +        shl     r10,56
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        movzx   r13,r8b
> > > > > >
> > > > > > +        shr     r8,4
> > > > > >
> > > > > > +        mov     r10,r9
> > > > > >
> > > > > > +        shl     r13b,4
> > > > > >
> > > > > > +        shr     r9,4
> > > > > >
> > > > > > +        xor     r8,QWORD[8+rcx*1+rsi]
> > > > > >
> > > > > > +        movzx   r13,WORD[r13*2+r11]
> > > > > >
> > > > > > +        shl     r10,60
> > > > > >
> > > > > > +        xor     r9,QWORD[rcx*1+rsi]
> > > > > >
> > > > > > +        xor     r8,r10
> > > > > >
> > > > > > +        shl     r13,48
> > > > > >
> > > > > > +        bswap   r8
> > > > > >
> > > > > > +        xor     r9,r13
> > > > > >
> > > > > > +        bswap   r9
> > > > > >
> > > > > > +        cmp     r14,r15
> > > > > >
> > > > > > +        jb      NEAR $L$outer_loop
> > > > > >
> > > > > > +        mov     QWORD[8+rdi],r8
> > > > > >
> > > > > > +        mov     QWORD[rdi],r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((280+48))+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$ghash_epilogue:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_gcm_ghash_4bit:
> > > > > >
> > > > > > +global  gcm_init_clmul
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +gcm_init_clmul:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$_init_clmul:
> > > > > >
> > > > > > +$L$SEH_begin_gcm_init_clmul:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      0x48,0x83,0xec,0x18
> > > > > >
> > > > > > +DB      0x0f,0x29,0x34,0x24
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdx]
> > > > > >
> > > > > > +        pshufd  xmm2,xmm2,78
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm4,xmm2,255
> > > > > >
> > > > > > +        movdqa  xmm3,xmm2
> > > > > >
> > > > > > +        psllq   xmm2,1
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        psrlq   xmm3,63
> > > > > >
> > > > > > +        pcmpgtd xmm5,xmm4
> > > > > >
> > > > > > +        pslldq  xmm3,8
> > > > > >
> > > > > > +        por     xmm2,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pand    xmm5,XMMWORD[$L$0x1c2_polynomial]
> > > > > >
> > > > > > +        pxor    xmm2,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm6,xmm2,78
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        pxor    xmm6,xmm2
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        pshufd  xmm3,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +DB      102,15,58,68,194,0
> > > > > >
> > > > > > +DB      102,15,58,68,202,17
> > > > > >
> > > > > > +DB      102,15,58,68,222,0
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm3
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pslldq  xmm4,8
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psllq   xmm0,57
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,8
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm1,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pshufd  xmm3,xmm2,78
> > > > > >
> > > > > > +        pshufd  xmm4,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm3,xmm2
> > > > > >
> > > > > > +        movdqu  XMMWORD[rcx],xmm2
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rcx],xmm0
> > > > > >
> > > > > > +DB      102,15,58,15,227,8
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rcx],xmm4
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        pshufd  xmm3,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +DB      102,15,58,68,194,0
> > > > > >
> > > > > > +DB      102,15,58,68,202,17
> > > > > >
> > > > > > +DB      102,15,58,68,222,0
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm3
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pslldq  xmm4,8
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psllq   xmm0,57
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,8
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm1,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        pshufd  xmm3,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +DB      102,15,58,68,194,0
> > > > > >
> > > > > > +DB      102,15,58,68,202,17
> > > > > >
> > > > > > +DB      102,15,58,68,222,0
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm3
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pslldq  xmm4,8
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psllq   xmm0,57
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,8
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm1,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pshufd  xmm3,xmm5,78
> > > > > >
> > > > > > +        pshufd  xmm4,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm3,xmm5
> > > > > >
> > > > > > +        movdqu  XMMWORD[48+rcx],xmm5
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        movdqu  XMMWORD[64+rcx],xmm0
> > > > > >
> > > > > > +DB      102,15,58,15,227,8
> > > > > >
> > > > > > +        movdqu  XMMWORD[80+rcx],xmm4
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[rsp]
> > > > > >
> > > > > > +        lea     rsp,[24+rsp]
> > > > > >
> > > > > > +$L$SEH_end_gcm_init_clmul:
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  gcm_gmult_clmul
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +DB      102,15,58,68,194,0
> > > > > >
> > > > > > +DB      102,15,58,68,202,17
> > > > > >
> > > > > > +DB      102,15,58,68,220,0
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm3
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pslldq  xmm4,8
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psllq   xmm0,57
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,8
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm1,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +DB      102,15,56,0,197
> > > > > >
> > > > > > +        movdqu  XMMWORD[rcx],xmm0
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  gcm_ghash_clmul
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +gcm_ghash_clmul:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$_ghash_clmul:
> > > > > >
> > > > > > +        lea     rax,[((-136))+rsp]
> > > > > >
> > > > > > +$L$SEH_begin_gcm_ghash_clmul:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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[rcx]
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[rdx]
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[32+rdx]
> > > > > >
> > > > > > +DB      102,65,15,56,0,194
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     r9,0x10
> > > > > >
> > > > > > +        jz      NEAR $L$odd_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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      NEAR $L$skip4x
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     r9,0x30
> > > > > >
> > > > > > +        mov     rax,0xA040608020C0E000
> > > > > >
> > > > > > +        movdqu  xmm14,XMMWORD[48+rdx]
> > > > > >
> > > > > > +        movdqu  xmm15,XMMWORD[64+rdx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        pshufd  xmm4,xmm3,78
> > > > > >
> > > > > > +        pxor    xmm4,xmm3
> > > > > >
> > > > > > +DB      102,15,58,68,218,0
> > > > > >
> > > > > > +DB      102,15,58,68,234,17
> > > > > >
> > > > > > +DB      102,15,58,68,231,0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm13,xmm11
> > > > > >
> > > > > > +        pshufd  xmm12,xmm11,78
> > > > > >
> > > > > > +        pxor    xmm12,xmm11
> > > > > >
> > > > > > +DB      102,68,15,58,68,222,0
> > > > > >
> > > > > > +DB      102,68,15,58,68,238,17
> > > > > >
> > > > > > +DB      102,68,15,58,68,231,16
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        xorps   xmm5,xmm13
> > > > > >
> > > > > > +        movups  xmm7,XMMWORD[80+rdx]
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        pshufd  xmm12,xmm11,78
> > > > > >
> > > > > > +        pxor    xmm0,xmm8
> > > > > >
> > > > > > +        pxor    xmm12,xmm11
> > > > > >
> > > > > > +DB      102,69,15,58,68,222,0
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        pshufd  xmm8,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +DB      102,69,15,58,68,238,17
> > > > > >
> > > > > > +DB      102,68,15,58,68,231,0
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        xorps   xmm5,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r8,[64+r8]
> > > > > >
> > > > > > +        sub     r9,0x40
> > > > > >
> > > > > > +        jc      NEAR $L$tail4x
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$mod4_loop
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$mod4_loop:
> > > > > >
> > > > > > +DB      102,65,15,58,68,199,0
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +        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[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[32+rdx]
> > > > > >
> > > > > > +        xorps   xmm8,xmm4
> > > > > >
> > > > > > +DB      102,68,15,58,68,218,0
> > > > > >
> > > > > > +        pshufd  xmm4,xmm3,78
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        pxor    xmm8,xmm1
> > > > > >
> > > > > > +        pxor    xmm4,xmm3
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      102,68,15,58,68,234,17
> > > > > >
> > > > > > +        pslldq  xmm8,8
> > > > > >
> > > > > > +        psrldq  xmm9,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,XMMWORD[$L$7_mask]
> > > > > >
> > > > > > +        pxor    xmm1,xmm9
> > > > > >
> > > > > > +DB      102,76,15,110,200
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pand    xmm8,xmm0
> > > > > >
> > > > > > +DB      102,69,15,56,0,200
> > > > > >
> > > > > > +        pxor    xmm9,xmm0
> > > > > >
> > > > > > +DB      102,68,15,58,68,231,0
> > > > > >
> > > > > > +        psllq   xmm9,57
> > > > > >
> > > > > > +        movdqa  xmm8,xmm9
> > > > > >
> > > > > > +        pslldq  xmm9,8
> > > > > >
> > > > > > +DB      102,15,58,68,222,0
> > > > > >
> > > > > > +        psrldq  xmm8,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm9
> > > > > >
> > > > > > +        pxor    xmm1,xmm8
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +DB      102,15,58,68,238,17
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        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[80+rdx]
> > > > > >
> > > > > > +DB      102,69,15,56,0,194
> > > > > >
> > > > > > +        pxor    xmm1,xmm9
> > > > > >
> > > > > > +        pxor    xmm9,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm13,xmm11
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        pshufd  xmm12,xmm11,78
> > > > > >
> > > > > > +        pxor    xmm0,xmm9
> > > > > >
> > > > > > +        pxor    xmm1,xmm8
> > > > > >
> > > > > > +        pxor    xmm12,xmm11
> > > > > >
> > > > > > +DB      102,69,15,58,68,222,0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      102,69,15,58,68,238,17
> > > > > >
> > > > > > +        xorps   xmm3,xmm11
> > > > > >
> > > > > > +        pshufd  xmm8,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,68,15,58,68,231,0
> > > > > >
> > > > > > +        xorps   xmm5,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r8,[64+r8]
> > > > > >
> > > > > > +        sub     r9,0x40
> > > > > >
> > > > > > +        jnc     NEAR $L$mod4_loop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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
> > > > > >
> > > > > > +        xorps   xmm4,xmm12
> > > > > >
> > > > > > +        xorps   xmm0,xmm3
> > > > > >
> > > > > > +        xorps   xmm1,xmm5
> > > > > >
> > > > > > +        pxor    xmm1,xmm0
> > > > > >
> > > > > > +        pxor    xmm8,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm8,xmm1
> > > > > >
> > > > > > +        pxor    xmm1,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +        psrldq  xmm8,8
> > > > > >
> > > > > > +        pslldq  xmm9,8
> > > > > >
> > > > > > +        pxor    xmm1,xmm8
> > > > > >
> > > > > > +        pxor    xmm0,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psllq   xmm0,57
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,8
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm1,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        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[r8]
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[16+r8]
> > > > > >
> > > > > > +DB      102,69,15,56,0,194
> > > > > >
> > > > > > +DB      102,65,15,56,0,218
> > > > > >
> > > > > > +        pxor    xmm0,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        pshufd  xmm4,xmm3,78
> > > > > >
> > > > > > +        pxor    xmm4,xmm3
> > > > > >
> > > > > > +DB      102,15,58,68,218,0
> > > > > >
> > > > > > +DB      102,15,58,68,234,17
> > > > > >
> > > > > > +DB      102,15,58,68,231,0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r8,[32+r8]
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        sub     r9,0x20
> > > > > >
> > > > > > +        jbe     NEAR $L$even_tail
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        jmp     NEAR $L$mod_loop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$mod_loop:
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm8,xmm4
> > > > > >
> > > > > > +        pshufd  xmm4,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,58,68,198,0
> > > > > >
> > > > > > +DB      102,15,58,68,206,17
> > > > > >
> > > > > > +DB      102,15,58,68,231,16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm5
> > > > > >
> > > > > > +        movdqu  xmm9,XMMWORD[r8]
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +DB      102,69,15,56,0,202
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[16+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm8,xmm1
> > > > > >
> > > > > > +        pxor    xmm1,xmm9
> > > > > >
> > > > > > +        pxor    xmm4,xmm8
> > > > > >
> > > > > > +DB      102,65,15,56,0,218
> > > > > >
> > > > > > +        movdqa  xmm8,xmm4
> > > > > >
> > > > > > +        psrldq  xmm8,8
> > > > > >
> > > > > > +        pslldq  xmm4,8
> > > > > >
> > > > > > +        pxor    xmm1,xmm8
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm0
> > > > > >
> > > > > > +        movdqa  xmm8,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +DB      102,15,58,68,218,0
> > > > > >
> > > > > > +        psllq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm8
> > > > > >
> > > > > > +        psllq   xmm0,57
> > > > > >
> > > > > > +        movdqa  xmm8,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,8
> > > > > >
> > > > > > +        psrldq  xmm8,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm9
> > > > > >
> > > > > > +        pshufd  xmm4,xmm5,78
> > > > > >
> > > > > > +        pxor    xmm1,xmm8
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +DB      102,15,58,68,234,17
> > > > > >
> > > > > > +        pxor    xmm1,xmm9
> > > > > >
> > > > > > +        pxor    xmm9,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm9
> > > > > >
> > > > > > +        lea     r8,[32+r8]
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +DB      102,15,58,68,231,0
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     r9,0x20
> > > > > >
> > > > > > +        ja      NEAR $L$mod_loop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$even_tail:
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm8,xmm4
> > > > > >
> > > > > > +        pshufd  xmm4,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,58,68,198,0
> > > > > >
> > > > > > +DB      102,15,58,68,206,17
> > > > > >
> > > > > > +DB      102,15,58,68,231,16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm5
> > > > > >
> > > > > > +        pxor    xmm8,xmm0
> > > > > >
> > > > > > +        pxor    xmm8,xmm1
> > > > > >
> > > > > > +        pxor    xmm4,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm4
> > > > > >
> > > > > > +        psrldq  xmm8,8
> > > > > >
> > > > > > +        pslldq  xmm4,8
> > > > > >
> > > > > > +        pxor    xmm1,xmm8
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psllq   xmm0,57
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,8
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm1,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        test    r9,r9
> > > > > >
> > > > > > +        jnz     NEAR $L$done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$odd_tail:
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[r8]
> > > > > >
> > > > > > +DB      102,69,15,56,0,194
> > > > > >
> > > > > > +        pxor    xmm0,xmm8
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        pshufd  xmm3,xmm0,78
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +DB      102,15,58,68,194,0
> > > > > >
> > > > > > +DB      102,15,58,68,202,17
> > > > > >
> > > > > > +DB      102,15,58,68,223,0
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm3,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm3
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pslldq  xmm4,8
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psllq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psllq   xmm0,57
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pslldq  xmm0,8
> > > > > >
> > > > > > +        psrldq  xmm3,8
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm1,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        psrlq   xmm0,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrlq   xmm0,1
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +$L$done:
> > > > > >
> > > > > > +DB      102,65,15,56,0,194
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  gcm_init_avx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +gcm_init_avx:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$_init_clmul
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  gcm_gmult_avx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +gcm_gmult_avx:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$_gmult_clmul
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  gcm_ghash_avx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +gcm_ghash_avx:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$_ghash_clmul
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +$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,0xc2
> > > > > >
> > > > > > +$L$7_mask:
> > > > > >
> > > > > > +        DD      7,0,7,0
> > > > > >
> > > > > > +$L$7_mask_poly:
> > > > > >
> > > > > > +        DD      7,0,450,0
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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
> > > 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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rax,[((48+280))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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_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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .pdata rdata align=4
> > > > > >
> > > > > > +ALIGN   4
> > > > > >
> > > > > > +        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      $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      $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      $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:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        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      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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
> > > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
> > > > > > x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..f3b7b0e35e
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
> x86_64.nasm
> > > > > > @@ -0,0 +1,3137 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/sha/asm/sha1-mb-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not
> use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain
> a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  sha1_multi_block
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +sha1_multi_block:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_sha1_multi_block:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
> > > > > >
> > > > > > +        bt      rcx,61
> > > > > >
> > > > > > +        jc      NEAR _shaext_shortcut
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-168))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > > > >
> > > > > > +        sub     rsp,288
> > > > > >
> > > > > > +        and     rsp,-256
> > > > > >
> > > > > > +        mov     QWORD[272+rsp],rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$body:
> > > > > >
> > > > > > +        lea     rbp,[K_XX_XX]
> > > > > >
> > > > > > +        lea     rbx,[256+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$oop_grande:
> > > > > >
> > > > > > +        mov     DWORD[280+rsp],edx
> > > > > >
> > > > > > +        xor     edx,edx
> > > > > >
> > > > > > +        mov     r8,QWORD[rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[8+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[rbx],ecx
> > > > > >
> > > > > > +        cmovle  r8,rbp
> > > > > >
> > > > > > +        mov     r9,QWORD[16+rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[24+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[4+rbx],ecx
> > > > > >
> > > > > > +        cmovle  r9,rbp
> > > > > >
> > > > > > +        mov     r10,QWORD[32+rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[40+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[8+rbx],ecx
> > > > > >
> > > > > > +        cmovle  r10,rbp
> > > > > >
> > > > > > +        mov     r11,QWORD[48+rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[56+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[12+rbx],ecx
> > > > > >
> > > > > > +        cmovle  r11,rbp
> > > > > >
> > > > > > +        test    edx,edx
> > > > > >
> > > > > > +        jz      NEAR $L$done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[rdi]
> > > > > >
> > > > > > +        lea     rax,[128+rsp]
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        movdqu  xmm12,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        movdqu  xmm13,XMMWORD[96+rdi]
> > > > > >
> > > > > > +        movdqu  xmm14,XMMWORD[128+rdi]
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[96+rbp]
> > > > > >
> > > > > > +        movdqa  xmm15,XMMWORD[((-32))+rbp]
> > > > > >
> > > > > > +        jmp     NEAR $L$oop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$oop:
> > > > > >
> > > > > > +        movd    xmm0,DWORD[r8]
> > > > > >
> > > > > > +        lea     r8,[64+r8]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[r9]
> > > > > >
> > > > > > +        lea     r9,[64+r9]
> > > > > >
> > > > > > +        movd    xmm3,DWORD[r10]
> > > > > >
> > > > > > +        lea     r10,[64+r10]
> > > > > >
> > > > > > +        movd    xmm4,DWORD[r11]
> > > > > >
> > > > > > +        lea     r11,[64+r11]
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm3
> > > > > >
> > > > > > +        movd    xmm1,DWORD[((-60))+r8]
> > > > > >
> > > > > > +        punpckldq       xmm2,xmm4
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-60))+r9]
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-60))+r10]
> > > > > >
> > > > > > +DB      102,15,56,0,197
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-60))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm1,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm13
> > > > > >
> > > > > > +        pand    xmm6,xmm12
> > > > > >
> > > > > > +        punpckldq       xmm1,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        movd    xmm2,DWORD[((-56))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-56))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,205
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-56))+r10]
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-56))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm2,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm12
> > > > > >
> > > > > > +        pand    xmm6,xmm11
> > > > > >
> > > > > > +        punpckldq       xmm2,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        movd    xmm3,DWORD[((-52))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-52))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,213
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-52))+r10]
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-52))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm3,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm11
> > > > > >
> > > > > > +        pand    xmm6,xmm10
> > > > > >
> > > > > > +        punpckldq       xmm3,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        movd    xmm4,DWORD[((-48))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-48))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,221
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-48))+r10]
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-48))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm4,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm10
> > > > > >
> > > > > > +        pand    xmm6,xmm14
> > > > > >
> > > > > > +        punpckldq       xmm4,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        movd    xmm0,DWORD[((-44))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-44))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,229
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-44))+r10]
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-44))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm14
> > > > > >
> > > > > > +        pand    xmm6,xmm13
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        movd    xmm1,DWORD[((-40))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-40))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,197
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-40))+r10]
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-40))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm1,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm13
> > > > > >
> > > > > > +        pand    xmm6,xmm12
> > > > > >
> > > > > > +        punpckldq       xmm1,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        movd    xmm2,DWORD[((-36))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-36))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,205
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-36))+r10]
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-36))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm2,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm12
> > > > > >
> > > > > > +        pand    xmm6,xmm11
> > > > > >
> > > > > > +        punpckldq       xmm2,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        movd    xmm3,DWORD[((-32))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-32))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,213
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-32))+r10]
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-32))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm3,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm11
> > > > > >
> > > > > > +        pand    xmm6,xmm10
> > > > > >
> > > > > > +        punpckldq       xmm3,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        movd    xmm4,DWORD[((-28))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-28))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,221
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-28))+r10]
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-28))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm4,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm10
> > > > > >
> > > > > > +        pand    xmm6,xmm14
> > > > > >
> > > > > > +        punpckldq       xmm4,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        movd    xmm0,DWORD[((-24))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-24))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,229
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-24))+r10]
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-24))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm14
> > > > > >
> > > > > > +        pand    xmm6,xmm13
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        movd    xmm1,DWORD[((-20))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-20))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,197
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-20))+r10]
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-20))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm1,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm13
> > > > > >
> > > > > > +        pand    xmm6,xmm12
> > > > > >
> > > > > > +        punpckldq       xmm1,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        movd    xmm2,DWORD[((-16))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-16))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,205
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-16))+r10]
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-16))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm2,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm12
> > > > > >
> > > > > > +        pand    xmm6,xmm11
> > > > > >
> > > > > > +        punpckldq       xmm2,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        movd    xmm3,DWORD[((-12))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-12))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,213
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-12))+r10]
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-12))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm3,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm11
> > > > > >
> > > > > > +        pand    xmm6,xmm10
> > > > > >
> > > > > > +        punpckldq       xmm3,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        movd    xmm4,DWORD[((-8))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-8))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,221
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-8))+r10]
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-8))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm4,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pandn   xmm7,xmm10
> > > > > >
> > > > > > +        pand    xmm6,xmm14
> > > > > >
> > > > > > +        punpckldq       xmm4,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        movd    xmm0,DWORD[((-4))+r8]
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        movd    xmm9,DWORD[((-4))+r9]
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,229
> > > > > >
> > > > > > +        movd    xmm8,DWORD[((-4))+r10]
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +        movd    xmm7,DWORD[((-4))+r11]
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        punpckldq       xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        prefetcht0      [63+r8]
> > > > > >
> > > > > > +        pandn   xmm7,xmm14
> > > > > >
> > > > > > +        pand    xmm6,xmm13
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm9
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        prefetcht0      [63+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        prefetcht0      [63+r10]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,197
> > > > > >
> > > > > > +        prefetcht0      [63+r11]
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pandn   xmm7,xmm13
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        pand    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pandn   xmm7,xmm12
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        pand    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pandn   xmm7,xmm11
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        pand    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pandn   xmm7,xmm10
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        pand    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pandn   xmm7,xmm14
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        pand    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        movdqa  xmm15,XMMWORD[rbp]
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        movdqa  xmm15,XMMWORD[32+rbp]
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        pand    xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        pand    xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        pand    xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        pand    xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        pand    xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        pand    xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        pand    xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        pand    xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        pand    xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        pand    xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        pand    xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        pand    xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        pand    xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        pand    xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        pand    xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        pand    xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        pand    xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        pand    xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        pand    xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        pand    xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        paddd   xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        pand    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        movdqa  xmm15,XMMWORD[64+rbp]
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm2
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm3
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm0
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm1
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pxor    xmm0,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm2
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm0
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        paddd   xmm0,xmm0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm0,xmm5
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        pxor    xmm1,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm14,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        paddd   xmm14,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm3
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm1
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm1,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm11,2
> > > > > >
> > > > > > +        paddd   xmm14,xmm8
> > > > > >
> > > > > > +        por     xmm1,xmm5
> > > > > >
> > > > > > +        por     xmm11,xmm7
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm6,xmm12
> > > > > >
> > > > > > +        pxor    xmm2,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm14
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm2
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm13,xmm6
> > > > > >
> > > > > > +        paddd   xmm2,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm10,2
> > > > > >
> > > > > > +        paddd   xmm13,xmm8
> > > > > >
> > > > > > +        por     xmm2,xmm5
> > > > > >
> > > > > > +        por     xmm10,xmm7
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm13
> > > > > >
> > > > > > +        movdqa  xmm6,xmm11
> > > > > >
> > > > > > +        pxor    xmm3,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm12,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm13
> > > > > >
> > > > > > +        paddd   xmm12,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm0
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm3
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm3,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm14,2
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        por     xmm3,xmm5
> > > > > >
> > > > > > +        por     xmm14,xmm7
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm11,xmm15
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm12
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm1
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        pxor    xmm6,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        psrld   xmm5,31
> > > > > >
> > > > > > +        paddd   xmm11,xmm6
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm13,2
> > > > > >
> > > > > > +        paddd   xmm11,xmm8
> > > > > >
> > > > > > +        por     xmm4,xmm5
> > > > > >
> > > > > > +        por     xmm13,xmm7
> > > > > >
> > > > > > +        movdqa  xmm8,xmm11
> > > > > >
> > > > > > +        paddd   xmm10,xmm15
> > > > > >
> > > > > > +        movdqa  xmm6,xmm14
> > > > > >
> > > > > > +        pslld   xmm8,5
> > > > > >
> > > > > > +        pxor    xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        psrld   xmm9,27
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pxor    xmm6,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pslld   xmm7,30
> > > > > >
> > > > > > +        por     xmm8,xmm9
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm12,2
> > > > > >
> > > > > > +        paddd   xmm10,xmm8
> > > > > >
> > > > > > +        por     xmm12,xmm7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[rbx]
> > > > > >
> > > > > > +        mov     ecx,1
> > > > > >
> > > > > > +        cmp     ecx,DWORD[rbx]
> > > > > >
> > > > > > +        pxor    xmm8,xmm8
> > > > > >
> > > > > > +        cmovge  r8,rbp
> > > > > >
> > > > > > +        cmp     ecx,DWORD[4+rbx]
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        cmovge  r9,rbp
> > > > > >
> > > > > > +        cmp     ecx,DWORD[8+rbx]
> > > > > >
> > > > > > +        pcmpgtd xmm1,xmm8
> > > > > >
> > > > > > +        cmovge  r10,rbp
> > > > > >
> > > > > > +        cmp     ecx,DWORD[12+rbx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm1
> > > > > >
> > > > > > +        cmovge  r11,rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[rdi]
> > > > > >
> > > > > > +        pand    xmm10,xmm1
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[32+rdi]
> > > > > >
> > > > > > +        pand    xmm11,xmm1
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[64+rdi]
> > > > > >
> > > > > > +        pand    xmm12,xmm1
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +        movdqu  xmm9,XMMWORD[96+rdi]
> > > > > >
> > > > > > +        pand    xmm13,xmm1
> > > > > >
> > > > > > +        paddd   xmm12,xmm8
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[128+rdi]
> > > > > >
> > > > > > +        pand    xmm14,xmm1
> > > > > >
> > > > > > +        movdqu  XMMWORD[rdi],xmm10
> > > > > >
> > > > > > +        paddd   xmm13,xmm9
> > > > > >
> > > > > > +        movdqu  XMMWORD[32+rdi],xmm11
> > > > > >
> > > > > > +        paddd   xmm14,xmm5
> > > > > >
> > > > > > +        movdqu  XMMWORD[64+rdi],xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[96+rdi],xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[128+rdi],xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[rbx],xmm0
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[96+rbp]
> > > > > >
> > > > > > +        movdqa  xmm15,XMMWORD[((-32))+rbp]
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edx,DWORD[280+rsp]
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +        lea     rsi,[64+rsi]
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_grande
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$done:
> > > > > >
> > > > > > +        mov     rax,QWORD[272+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$epilogue:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_sha1_multi_block:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +sha1_multi_block_shaext:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_sha1_multi_block_shaext:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +_shaext_shortcut:
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-168))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > > > >
> > > > > > +        sub     rsp,288
> > > > > >
> > > > > > +        shl     edx,1
> > > > > >
> > > > > > +        and     rsp,-256
> > > > > >
> > > > > > +        lea     rdi,[64+rdi]
> > > > > >
> > > > > > +        mov     QWORD[272+rsp],rax
> > > > > >
> > > > > > +$L$body_shaext:
> > > > > >
> > > > > > +        lea     rbx,[256+rsp]
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((K_XX_XX+128))]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$oop_grande_shaext:
> > > > > >
> > > > > > +        mov     DWORD[280+rsp],edx
> > > > > >
> > > > > > +        xor     edx,edx
> > > > > >
> > > > > > +        mov     r8,QWORD[rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[8+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[rbx],ecx
> > > > > >
> > > > > > +        cmovle  r8,rsp
> > > > > >
> > > > > > +        mov     r9,QWORD[16+rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[24+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[4+rbx],ecx
> > > > > >
> > > > > > +        cmovle  r9,rsp
> > > > > >
> > > > > > +        test    edx,edx
> > > > > >
> > > > > > +        jz      NEAR $L$done_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movq    xmm0,QWORD[((0-64))+rdi]
> > > > > >
> > > > > > +        movq    xmm4,QWORD[((32-64))+rdi]
> > > > > >
> > > > > > +        movq    xmm5,QWORD[((64-64))+rdi]
> > > > > >
> > > > > > +        movq    xmm6,QWORD[((96-64))+rdi]
> > > > > >
> > > > > > +        movq    xmm7,QWORD[((128-64))+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm4
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm8,xmm0
> > > > > >
> > > > > > +        punpcklqdq      xmm0,xmm5
> > > > > >
> > > > > > +        punpckhqdq      xmm8,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm1,xmm7,63
> > > > > >
> > > > > > +        pshufd  xmm9,xmm7,127
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,27
> > > > > >
> > > > > > +        pshufd  xmm8,xmm8,27
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$oop_shaext:
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[r8]
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[r9]
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[16+r8]
> > > > > >
> > > > > > +        movdqu  xmm12,XMMWORD[16+r9]
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[32+r8]
> > > > > >
> > > > > > +DB      102,15,56,0,227
> > > > > >
> > > > > > +        movdqu  xmm13,XMMWORD[32+r9]
> > > > > >
> > > > > > +DB      102,68,15,56,0,219
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[48+r8]
> > > > > >
> > > > > > +        lea     r8,[64+r8]
> > > > > >
> > > > > > +DB      102,15,56,0,235
> > > > > >
> > > > > > +        movdqu  xmm14,XMMWORD[48+r9]
> > > > > >
> > > > > > +        lea     r9,[64+r9]
> > > > > >
> > > > > > +DB      102,68,15,56,0,227
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[80+rsp],xmm1
> > > > > >
> > > > > > +        paddd   xmm1,xmm4
> > > > > >
> > > > > > +        movdqa  XMMWORD[112+rsp],xmm9
> > > > > >
> > > > > > +        paddd   xmm9,xmm11
> > > > > >
> > > > > > +        movdqa  XMMWORD[64+rsp],xmm0
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  XMMWORD[96+rsp],xmm8
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,0
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +DB      69,15,58,204,193,0
> > > > > >
> > > > > > +DB      69,15,56,200,212
> > > > > >
> > > > > > +DB      102,15,56,0,243
> > > > > >
> > > > > > +        prefetcht0      [127+r8]
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +DB      102,68,15,56,0,235
> > > > > >
> > > > > > +        prefetcht0      [127+r9]
> > > > > >
> > > > > > +DB      69,15,56,201,220
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +DB      102,15,56,0,251
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      102,68,15,56,0,243
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,0
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +DB      69,15,58,204,194,0
> > > > > >
> > > > > > +DB      69,15,56,200,205
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +        pxor    xmm11,xmm13
> > > > > >
> > > > > > +DB      69,15,56,201,229
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,0
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +DB      69,15,58,204,193,0
> > > > > >
> > > > > > +DB      69,15,56,200,214
> > > > > >
> > > > > > +DB      15,56,202,231
> > > > > >
> > > > > > +DB      69,15,56,202,222
> > > > > >
> > > > > > +        pxor    xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,201,247
> > > > > >
> > > > > > +        pxor    xmm12,xmm14
> > > > > >
> > > > > > +DB      69,15,56,201,238
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,0
> > > > > >
> > > > > > +DB      15,56,200,204
> > > > > >
> > > > > > +DB      69,15,58,204,194,0
> > > > > >
> > > > > > +DB      69,15,56,200,203
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +DB      69,15,56,202,227
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,252
> > > > > >
> > > > > > +        pxor    xmm13,xmm11
> > > > > >
> > > > > > +DB      69,15,56,201,243
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,0
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +DB      69,15,58,204,193,0
> > > > > >
> > > > > > +DB      69,15,56,200,212
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +DB      69,15,56,202,236
> > > > > >
> > > > > > +        pxor    xmm7,xmm5
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        pxor    xmm14,xmm12
> > > > > >
> > > > > > +DB      69,15,56,201,220
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,1
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +DB      69,15,58,204,194,1
> > > > > >
> > > > > > +DB      69,15,56,200,205
> > > > > >
> > > > > > +DB      15,56,202,254
> > > > > >
> > > > > > +DB      69,15,56,202,245
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +        pxor    xmm11,xmm13
> > > > > >
> > > > > > +DB      69,15,56,201,229
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,1
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +DB      69,15,58,204,193,1
> > > > > >
> > > > > > +DB      69,15,56,200,214
> > > > > >
> > > > > > +DB      15,56,202,231
> > > > > >
> > > > > > +DB      69,15,56,202,222
> > > > > >
> > > > > > +        pxor    xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,201,247
> > > > > >
> > > > > > +        pxor    xmm12,xmm14
> > > > > >
> > > > > > +DB      69,15,56,201,238
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,1
> > > > > >
> > > > > > +DB      15,56,200,204
> > > > > >
> > > > > > +DB      69,15,58,204,194,1
> > > > > >
> > > > > > +DB      69,15,56,200,203
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +DB      69,15,56,202,227
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,252
> > > > > >
> > > > > > +        pxor    xmm13,xmm11
> > > > > >
> > > > > > +DB      69,15,56,201,243
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,1
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +DB      69,15,58,204,193,1
> > > > > >
> > > > > > +DB      69,15,56,200,212
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +DB      69,15,56,202,236
> > > > > >
> > > > > > +        pxor    xmm7,xmm5
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        pxor    xmm14,xmm12
> > > > > >
> > > > > > +DB      69,15,56,201,220
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,1
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +DB      69,15,58,204,194,1
> > > > > >
> > > > > > +DB      69,15,56,200,205
> > > > > >
> > > > > > +DB      15,56,202,254
> > > > > >
> > > > > > +DB      69,15,56,202,245
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +        pxor    xmm11,xmm13
> > > > > >
> > > > > > +DB      69,15,56,201,229
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,2
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +DB      69,15,58,204,193,2
> > > > > >
> > > > > > +DB      69,15,56,200,214
> > > > > >
> > > > > > +DB      15,56,202,231
> > > > > >
> > > > > > +DB      69,15,56,202,222
> > > > > >
> > > > > > +        pxor    xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,201,247
> > > > > >
> > > > > > +        pxor    xmm12,xmm14
> > > > > >
> > > > > > +DB      69,15,56,201,238
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,2
> > > > > >
> > > > > > +DB      15,56,200,204
> > > > > >
> > > > > > +DB      69,15,58,204,194,2
> > > > > >
> > > > > > +DB      69,15,56,200,203
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +DB      69,15,56,202,227
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,252
> > > > > >
> > > > > > +        pxor    xmm13,xmm11
> > > > > >
> > > > > > +DB      69,15,56,201,243
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,2
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +DB      69,15,58,204,193,2
> > > > > >
> > > > > > +DB      69,15,56,200,212
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +DB      69,15,56,202,236
> > > > > >
> > > > > > +        pxor    xmm7,xmm5
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        pxor    xmm14,xmm12
> > > > > >
> > > > > > +DB      69,15,56,201,220
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,2
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +DB      69,15,58,204,194,2
> > > > > >
> > > > > > +DB      69,15,56,200,205
> > > > > >
> > > > > > +DB      15,56,202,254
> > > > > >
> > > > > > +DB      69,15,56,202,245
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +        pxor    xmm11,xmm13
> > > > > >
> > > > > > +DB      69,15,56,201,229
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,2
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +DB      69,15,58,204,193,2
> > > > > >
> > > > > > +DB      69,15,56,200,214
> > > > > >
> > > > > > +DB      15,56,202,231
> > > > > >
> > > > > > +DB      69,15,56,202,222
> > > > > >
> > > > > > +        pxor    xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,201,247
> > > > > >
> > > > > > +        pxor    xmm12,xmm14
> > > > > >
> > > > > > +DB      69,15,56,201,238
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,3
> > > > > >
> > > > > > +DB      15,56,200,204
> > > > > >
> > > > > > +DB      69,15,58,204,194,3
> > > > > >
> > > > > > +DB      69,15,56,200,203
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +DB      69,15,56,202,227
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,252
> > > > > >
> > > > > > +        pxor    xmm13,xmm11
> > > > > >
> > > > > > +DB      69,15,56,201,243
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,3
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +DB      69,15,58,204,193,3
> > > > > >
> > > > > > +DB      69,15,56,200,212
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +DB      69,15,56,202,236
> > > > > >
> > > > > > +        pxor    xmm7,xmm5
> > > > > >
> > > > > > +        pxor    xmm14,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,1
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        cmp     ecx,DWORD[rbx]
> > > > > >
> > > > > > +        cmovge  r8,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,3
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +DB      69,15,58,204,194,3
> > > > > >
> > > > > > +DB      69,15,56,200,205
> > > > > >
> > > > > > +DB      15,56,202,254
> > > > > >
> > > > > > +DB      69,15,56,202,245
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        cmp     ecx,DWORD[4+rbx]
> > > > > >
> > > > > > +        cmovge  r9,rsp
> > > > > >
> > > > > > +        movq    xmm6,QWORD[rbx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +DB      15,58,204,193,3
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +DB      69,15,58,204,193,3
> > > > > >
> > > > > > +DB      69,15,56,200,214
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm11,xmm6,0x00
> > > > > >
> > > > > > +        pshufd  xmm12,xmm6,0x55
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        pcmpgtd xmm11,xmm4
> > > > > >
> > > > > > +        pcmpgtd xmm12,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +DB      15,58,204,194,3
> > > > > >
> > > > > > +DB      15,56,200,204
> > > > > >
> > > > > > +DB      69,15,58,204,194,3
> > > > > >
> > > > > > +DB      68,15,56,200,204
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pcmpgtd xmm7,xmm4
> > > > > >
> > > > > > +        pand    xmm0,xmm11
> > > > > >
> > > > > > +        pand    xmm1,xmm11
> > > > > >
> > > > > > +        pand    xmm8,xmm12
> > > > > >
> > > > > > +        pand    xmm9,xmm12
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm0,XMMWORD[64+rsp]
> > > > > >
> > > > > > +        paddd   xmm1,XMMWORD[80+rsp]
> > > > > >
> > > > > > +        paddd   xmm8,XMMWORD[96+rsp]
> > > > > >
> > > > > > +        paddd   xmm9,XMMWORD[112+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movq    QWORD[rbx],xmm6
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edx,DWORD[280+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,27
> > > > > >
> > > > > > +        pshufd  xmm8,xmm8,27
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,xmm0
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm8
> > > > > >
> > > > > > +        punpckhdq       xmm6,xmm8
> > > > > >
> > > > > > +        punpckhdq       xmm1,xmm9
> > > > > >
> > > > > > +        movq    QWORD[(0-64)+rdi],xmm0
> > > > > >
> > > > > > +        psrldq  xmm0,8
> > > > > >
> > > > > > +        movq    QWORD[(64-64)+rdi],xmm6
> > > > > >
> > > > > > +        psrldq  xmm6,8
> > > > > >
> > > > > > +        movq    QWORD[(32-64)+rdi],xmm0
> > > > > >
> > > > > > +        psrldq  xmm1,8
> > > > > >
> > > > > > +        movq    QWORD[(96-64)+rdi],xmm6
> > > > > >
> > > > > > +        movq    QWORD[(128-64)+rdi],xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rdi,[8+rdi]
> > > > > >
> > > > > > +        lea     rsi,[32+rsi]
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_grande_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$done_shaext:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$epilogue_shaext:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_sha1_multi_block_shaext:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   256
> > > > > >
> > > > > > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > > > > >
> > > > > > +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > > > > >
> > > > > > +K_XX_XX:
> > > > > >
> > > > > > +        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,109,117,108,116,105,45,98,108,111,99,107
> > > > > >
> > > > > > +DB
> 32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120
> > > > > >
> > > > > > +DB      56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77
> > > > > >
> > > > > > +DB      83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110
> > > > > >
> > > > > > +DB      115,115,108,46,111,114,103,62,0
> > > > > >
> > > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[272+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > > >
> > > > > > +        mov     QWORD[144+r8],rbx
> > > > > >
> > > > > > +        mov     QWORD[160+r8],rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((-24-160))+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,20
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .pdata rdata align=4
> > > > > >
> > > > > > +ALIGN   4
> > > > > >
> > > > > > +        DD      $L$SEH_begin_sha1_multi_block wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_sha1_multi_block wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_sha1_multi_block wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_begin_sha1_multi_block_shaext wrt
> ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_sha1_multi_block_shaext wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_sha1_multi_block_shaext wrt
> ..imagebase
> > > > > >
> > > > > > +section .xdata rdata align=8
> > > > > >
> > > > > > +ALIGN   8
> > > > > >
> > > > > > +$L$SEH_info_sha1_multi_block:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$body wrt ..imagebase,$L$epilogue wrt
> ..imagebase
> > > > > >
> > > > > > +$L$SEH_info_sha1_multi_block_shaext:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-
> > > x86_64.nasm
> > > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..c6d68d348f
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
> > > > > > @@ -0,0 +1,2884 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/sha/asm/sha1-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2006-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not
> use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain
> a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  sha1_block_data_order
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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      NEAR $L$ialu
> > > > > >
> > > > > > +        test    r10d,536870912
> > > > > >
> > > > > > +        jnz     NEAR _shaext_shortcut
> > > > > >
> > > > > > +        jmp     NEAR _ssse3_shortcut
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ialu:
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r8,rdi
> > > > > >
> > > > > > +        sub     rsp,72
> > > > > >
> > > > > > +        mov     r9,rsi
> > > > > >
> > > > > > +        and     rsp,-64
> > > > > >
> > > > > > +        mov     r10,rdx
> > > > > >
> > > > > > +        mov     QWORD[64+rsp],rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$prologue:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[r9]
> > > > > >
> > > > > > +        bswap   edx
> > > > > >
> > > > > > +        mov     ebp,DWORD[4+r9]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[rsp],edx
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        bswap   ebp
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,edi
> > > > > >
> > > > > > +        lea     r13d,[1518500249+r13*1+rdx]
> > > > > >
> > > > > > +        add     r13d,ecx
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     edi,30
> > > > > >
> > > > > > +        add     r13d,eax
> > > > > >
> > > > > > +        mov     r14d,DWORD[8+r9]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[4+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        bswap   r14d
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,esi
> > > > > >
> > > > > > +        lea     r12d,[1518500249+r12*1+rbp]
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     esi,30
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        mov     edx,DWORD[12+r9]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[8+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        bswap   edx
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,r13d
> > > > > >
> > > > > > +        lea     r11d,[1518500249+r11*1+r14]
> > > > > >
> > > > > > +        add     r11d,ecx
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     r13d,30
> > > > > >
> > > > > > +        add     r11d,eax
> > > > > >
> > > > > > +        mov     ebp,DWORD[16+r9]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[12+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        bswap   ebp
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,r12d
> > > > > >
> > > > > > +        lea     edi,[1518500249+rdi*1+rdx]
> > > > > >
> > > > > > +        add     edi,ecx
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     r12d,30
> > > > > >
> > > > > > +        add     edi,eax
> > > > > >
> > > > > > +        mov     r14d,DWORD[20+r9]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[16+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        bswap   r14d
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,r11d
> > > > > >
> > > > > > +        lea     esi,[1518500249+rsi*1+rbp]
> > > > > >
> > > > > > +        add     esi,ecx
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     r11d,30
> > > > > >
> > > > > > +        add     esi,eax
> > > > > >
> > > > > > +        mov     edx,DWORD[24+r9]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[20+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        bswap   edx
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,edi
> > > > > >
> > > > > > +        lea     r13d,[1518500249+r13*1+r14]
> > > > > >
> > > > > > +        add     r13d,ecx
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     edi,30
> > > > > >
> > > > > > +        add     r13d,eax
> > > > > >
> > > > > > +        mov     ebp,DWORD[28+r9]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[24+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        bswap   ebp
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,esi
> > > > > >
> > > > > > +        lea     r12d,[1518500249+r12*1+rdx]
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     esi,30
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        mov     r14d,DWORD[32+r9]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[28+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        bswap   r14d
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,r13d
> > > > > >
> > > > > > +        lea     r11d,[1518500249+r11*1+rbp]
> > > > > >
> > > > > > +        add     r11d,ecx
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     r13d,30
> > > > > >
> > > > > > +        add     r11d,eax
> > > > > >
> > > > > > +        mov     edx,DWORD[36+r9]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[32+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        bswap   edx
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,r12d
> > > > > >
> > > > > > +        lea     edi,[1518500249+rdi*1+r14]
> > > > > >
> > > > > > +        add     edi,ecx
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     r12d,30
> > > > > >
> > > > > > +        add     edi,eax
> > > > > >
> > > > > > +        mov     ebp,DWORD[40+r9]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[36+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        bswap   ebp
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,r11d
> > > > > >
> > > > > > +        lea     esi,[1518500249+rsi*1+rdx]
> > > > > >
> > > > > > +        add     esi,ecx
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     r11d,30
> > > > > >
> > > > > > +        add     esi,eax
> > > > > >
> > > > > > +        mov     r14d,DWORD[44+r9]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[40+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        bswap   r14d
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,edi
> > > > > >
> > > > > > +        lea     r13d,[1518500249+r13*1+rbp]
> > > > > >
> > > > > > +        add     r13d,ecx
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     edi,30
> > > > > >
> > > > > > +        add     r13d,eax
> > > > > >
> > > > > > +        mov     edx,DWORD[48+r9]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[44+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        bswap   edx
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,esi
> > > > > >
> > > > > > +        lea     r12d,[1518500249+r12*1+r14]
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     esi,30
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        mov     ebp,DWORD[52+r9]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[48+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        bswap   ebp
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,r13d
> > > > > >
> > > > > > +        lea     r11d,[1518500249+r11*1+rdx]
> > > > > >
> > > > > > +        add     r11d,ecx
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     r13d,30
> > > > > >
> > > > > > +        add     r11d,eax
> > > > > >
> > > > > > +        mov     r14d,DWORD[56+r9]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[52+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        bswap   r14d
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,r12d
> > > > > >
> > > > > > +        lea     edi,[1518500249+rdi*1+rbp]
> > > > > >
> > > > > > +        add     edi,ecx
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     r12d,30
> > > > > >
> > > > > > +        add     edi,eax
> > > > > >
> > > > > > +        mov     edx,DWORD[60+r9]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[56+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        bswap   edx
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        and     eax,r11d
> > > > > >
> > > > > > +        lea     esi,[1518500249+rsi*1+r14]
> > > > > >
> > > > > > +        add     esi,ecx
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     r11d,30
> > > > > >
> > > > > > +        add     esi,eax
> > > > > >
> > > > > > +        xor     ebp,DWORD[rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[60+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     ebp,DWORD[8+rsp]
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        xor     ebp,DWORD[32+rsp]
> > > > > >
> > > > > > +        and     eax,edi
> > > > > >
> > > > > > +        lea     r13d,[1518500249+r13*1+rdx]
> > > > > >
> > > > > > +        rol     edi,30
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        add     r13d,ecx
> > > > > >
> > > > > > +        rol     ebp,1
> > > > > >
> > > > > > +        add     r13d,eax
> > > > > >
> > > > > > +        xor     r14d,DWORD[4+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     r14d,DWORD[12+rsp]
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        xor     r14d,DWORD[36+rsp]
> > > > > >
> > > > > > +        and     eax,esi
> > > > > >
> > > > > > +        lea     r12d,[1518500249+r12*1+rbp]
> > > > > >
> > > > > > +        rol     esi,30
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        rol     r14d,1
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        xor     edx,DWORD[8+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[4+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     edx,DWORD[16+rsp]
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        xor     edx,DWORD[40+rsp]
> > > > > >
> > > > > > +        and     eax,r13d
> > > > > >
> > > > > > +        lea     r11d,[1518500249+r11*1+r14]
> > > > > >
> > > > > > +        rol     r13d,30
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        add     r11d,ecx
> > > > > >
> > > > > > +        rol     edx,1
> > > > > >
> > > > > > +        add     r11d,eax
> > > > > >
> > > > > > +        xor     ebp,DWORD[12+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[8+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     ebp,DWORD[20+rsp]
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        xor     ebp,DWORD[44+rsp]
> > > > > >
> > > > > > +        and     eax,r12d
> > > > > >
> > > > > > +        lea     edi,[1518500249+rdi*1+rdx]
> > > > > >
> > > > > > +        rol     r12d,30
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        add     edi,ecx
> > > > > >
> > > > > > +        rol     ebp,1
> > > > > >
> > > > > > +        add     edi,eax
> > > > > >
> > > > > > +        xor     r14d,DWORD[16+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[12+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     r14d,DWORD[24+rsp]
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        xor     r14d,DWORD[48+rsp]
> > > > > >
> > > > > > +        and     eax,r11d
> > > > > >
> > > > > > +        lea     esi,[1518500249+rsi*1+rbp]
> > > > > >
> > > > > > +        rol     r11d,30
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        add     esi,ecx
> > > > > >
> > > > > > +        rol     r14d,1
> > > > > >
> > > > > > +        add     esi,eax
> > > > > >
> > > > > > +        xor     edx,DWORD[20+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[16+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     edx,DWORD[28+rsp]
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[24+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[20+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     ebp,DWORD[32+rsp]
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[28+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[24+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     r14d,DWORD[36+rsp]
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[32+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[28+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     edx,DWORD[40+rsp]
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[36+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[32+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     ebp,DWORD[44+rsp]
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[40+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[36+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     r14d,DWORD[48+rsp]
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[44+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[40+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     edx,DWORD[52+rsp]
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[48+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[44+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     ebp,DWORD[56+rsp]
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[52+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[48+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     r14d,DWORD[60+rsp]
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[56+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[52+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     edx,DWORD[rsp]
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[60+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[56+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     ebp,DWORD[4+rsp]
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[60+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     r14d,DWORD[8+rsp]
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[4+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     edx,DWORD[12+rsp]
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[8+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[4+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     ebp,DWORD[16+rsp]
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[12+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[8+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     r14d,DWORD[20+rsp]
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[16+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[12+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     edx,DWORD[24+rsp]
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[20+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[16+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     ebp,DWORD[28+rsp]
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[24+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[20+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     r14d,DWORD[32+rsp]
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[28+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[24+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     edx,DWORD[36+rsp]
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[32+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[28+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     ebp,DWORD[40+rsp]
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[36+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[32+rsp],ebp
> > > > > >
> > > > > > +        mov     ebx,r12d
> > > > > >
> > > > > > +        xor     r14d,DWORD[44+rsp]
> > > > > >
> > > > > > +        and     eax,r11d
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     r14d,DWORD[4+rsp]
> > > > > >
> > > > > > +        lea     r13d,[((-1894007588))+r13*1+rbp]
> > > > > >
> > > > > > +        xor     ebx,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r13d,eax
> > > > > >
> > > > > > +        rol     r14d,1
> > > > > >
> > > > > > +        and     ebx,edi
> > > > > >
> > > > > > +        add     r13d,ecx
> > > > > >
> > > > > > +        rol     edi,30
> > > > > >
> > > > > > +        add     r13d,ebx
> > > > > >
> > > > > > +        xor     edx,DWORD[40+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[36+rsp],r14d
> > > > > >
> > > > > > +        mov     ebx,r11d
> > > > > >
> > > > > > +        xor     edx,DWORD[48+rsp]
> > > > > >
> > > > > > +        and     eax,edi
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     edx,DWORD[8+rsp]
> > > > > >
> > > > > > +        lea     r12d,[((-1894007588))+r12*1+r14]
> > > > > >
> > > > > > +        xor     ebx,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        rol     edx,1
> > > > > >
> > > > > > +        and     ebx,esi
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        rol     esi,30
> > > > > >
> > > > > > +        add     r12d,ebx
> > > > > >
> > > > > > +        xor     ebp,DWORD[44+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[40+rsp],edx
> > > > > >
> > > > > > +        mov     ebx,edi
> > > > > >
> > > > > > +        xor     ebp,DWORD[52+rsp]
> > > > > >
> > > > > > +        and     eax,esi
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     ebp,DWORD[12+rsp]
> > > > > >
> > > > > > +        lea     r11d,[((-1894007588))+r11*1+rdx]
> > > > > >
> > > > > > +        xor     ebx,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r11d,eax
> > > > > >
> > > > > > +        rol     ebp,1
> > > > > >
> > > > > > +        and     ebx,r13d
> > > > > >
> > > > > > +        add     r11d,ecx
> > > > > >
> > > > > > +        rol     r13d,30
> > > > > >
> > > > > > +        add     r11d,ebx
> > > > > >
> > > > > > +        xor     r14d,DWORD[48+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[44+rsp],ebp
> > > > > >
> > > > > > +        mov     ebx,esi
> > > > > >
> > > > > > +        xor     r14d,DWORD[56+rsp]
> > > > > >
> > > > > > +        and     eax,r13d
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     r14d,DWORD[16+rsp]
> > > > > >
> > > > > > +        lea     edi,[((-1894007588))+rdi*1+rbp]
> > > > > >
> > > > > > +        xor     ebx,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     edi,eax
> > > > > >
> > > > > > +        rol     r14d,1
> > > > > >
> > > > > > +        and     ebx,r12d
> > > > > >
> > > > > > +        add     edi,ecx
> > > > > >
> > > > > > +        rol     r12d,30
> > > > > >
> > > > > > +        add     edi,ebx
> > > > > >
> > > > > > +        xor     edx,DWORD[52+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[48+rsp],r14d
> > > > > >
> > > > > > +        mov     ebx,r13d
> > > > > >
> > > > > > +        xor     edx,DWORD[60+rsp]
> > > > > >
> > > > > > +        and     eax,r12d
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     edx,DWORD[20+rsp]
> > > > > >
> > > > > > +        lea     esi,[((-1894007588))+rsi*1+r14]
> > > > > >
> > > > > > +        xor     ebx,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     esi,eax
> > > > > >
> > > > > > +        rol     edx,1
> > > > > >
> > > > > > +        and     ebx,r11d
> > > > > >
> > > > > > +        add     esi,ecx
> > > > > >
> > > > > > +        rol     r11d,30
> > > > > >
> > > > > > +        add     esi,ebx
> > > > > >
> > > > > > +        xor     ebp,DWORD[56+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[52+rsp],edx
> > > > > >
> > > > > > +        mov     ebx,r12d
> > > > > >
> > > > > > +        xor     ebp,DWORD[rsp]
> > > > > >
> > > > > > +        and     eax,r11d
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     ebp,DWORD[24+rsp]
> > > > > >
> > > > > > +        lea     r13d,[((-1894007588))+r13*1+rdx]
> > > > > >
> > > > > > +        xor     ebx,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r13d,eax
> > > > > >
> > > > > > +        rol     ebp,1
> > > > > >
> > > > > > +        and     ebx,edi
> > > > > >
> > > > > > +        add     r13d,ecx
> > > > > >
> > > > > > +        rol     edi,30
> > > > > >
> > > > > > +        add     r13d,ebx
> > > > > >
> > > > > > +        xor     r14d,DWORD[60+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[56+rsp],ebp
> > > > > >
> > > > > > +        mov     ebx,r11d
> > > > > >
> > > > > > +        xor     r14d,DWORD[4+rsp]
> > > > > >
> > > > > > +        and     eax,edi
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     r14d,DWORD[28+rsp]
> > > > > >
> > > > > > +        lea     r12d,[((-1894007588))+r12*1+rbp]
> > > > > >
> > > > > > +        xor     ebx,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        rol     r14d,1
> > > > > >
> > > > > > +        and     ebx,esi
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        rol     esi,30
> > > > > >
> > > > > > +        add     r12d,ebx
> > > > > >
> > > > > > +        xor     edx,DWORD[rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[60+rsp],r14d
> > > > > >
> > > > > > +        mov     ebx,edi
> > > > > >
> > > > > > +        xor     edx,DWORD[8+rsp]
> > > > > >
> > > > > > +        and     eax,esi
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     edx,DWORD[32+rsp]
> > > > > >
> > > > > > +        lea     r11d,[((-1894007588))+r11*1+r14]
> > > > > >
> > > > > > +        xor     ebx,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r11d,eax
> > > > > >
> > > > > > +        rol     edx,1
> > > > > >
> > > > > > +        and     ebx,r13d
> > > > > >
> > > > > > +        add     r11d,ecx
> > > > > >
> > > > > > +        rol     r13d,30
> > > > > >
> > > > > > +        add     r11d,ebx
> > > > > >
> > > > > > +        xor     ebp,DWORD[4+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[rsp],edx
> > > > > >
> > > > > > +        mov     ebx,esi
> > > > > >
> > > > > > +        xor     ebp,DWORD[12+rsp]
> > > > > >
> > > > > > +        and     eax,r13d
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     ebp,DWORD[36+rsp]
> > > > > >
> > > > > > +        lea     edi,[((-1894007588))+rdi*1+rdx]
> > > > > >
> > > > > > +        xor     ebx,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     edi,eax
> > > > > >
> > > > > > +        rol     ebp,1
> > > > > >
> > > > > > +        and     ebx,r12d
> > > > > >
> > > > > > +        add     edi,ecx
> > > > > >
> > > > > > +        rol     r12d,30
> > > > > >
> > > > > > +        add     edi,ebx
> > > > > >
> > > > > > +        xor     r14d,DWORD[8+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[4+rsp],ebp
> > > > > >
> > > > > > +        mov     ebx,r13d
> > > > > >
> > > > > > +        xor     r14d,DWORD[16+rsp]
> > > > > >
> > > > > > +        and     eax,r12d
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     r14d,DWORD[40+rsp]
> > > > > >
> > > > > > +        lea     esi,[((-1894007588))+rsi*1+rbp]
> > > > > >
> > > > > > +        xor     ebx,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     esi,eax
> > > > > >
> > > > > > +        rol     r14d,1
> > > > > >
> > > > > > +        and     ebx,r11d
> > > > > >
> > > > > > +        add     esi,ecx
> > > > > >
> > > > > > +        rol     r11d,30
> > > > > >
> > > > > > +        add     esi,ebx
> > > > > >
> > > > > > +        xor     edx,DWORD[12+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[8+rsp],r14d
> > > > > >
> > > > > > +        mov     ebx,r12d
> > > > > >
> > > > > > +        xor     edx,DWORD[20+rsp]
> > > > > >
> > > > > > +        and     eax,r11d
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     edx,DWORD[44+rsp]
> > > > > >
> > > > > > +        lea     r13d,[((-1894007588))+r13*1+r14]
> > > > > >
> > > > > > +        xor     ebx,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r13d,eax
> > > > > >
> > > > > > +        rol     edx,1
> > > > > >
> > > > > > +        and     ebx,edi
> > > > > >
> > > > > > +        add     r13d,ecx
> > > > > >
> > > > > > +        rol     edi,30
> > > > > >
> > > > > > +        add     r13d,ebx
> > > > > >
> > > > > > +        xor     ebp,DWORD[16+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[12+rsp],edx
> > > > > >
> > > > > > +        mov     ebx,r11d
> > > > > >
> > > > > > +        xor     ebp,DWORD[24+rsp]
> > > > > >
> > > > > > +        and     eax,edi
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     ebp,DWORD[48+rsp]
> > > > > >
> > > > > > +        lea     r12d,[((-1894007588))+r12*1+rdx]
> > > > > >
> > > > > > +        xor     ebx,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        rol     ebp,1
> > > > > >
> > > > > > +        and     ebx,esi
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        rol     esi,30
> > > > > >
> > > > > > +        add     r12d,ebx
> > > > > >
> > > > > > +        xor     r14d,DWORD[20+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[16+rsp],ebp
> > > > > >
> > > > > > +        mov     ebx,edi
> > > > > >
> > > > > > +        xor     r14d,DWORD[28+rsp]
> > > > > >
> > > > > > +        and     eax,esi
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     r14d,DWORD[52+rsp]
> > > > > >
> > > > > > +        lea     r11d,[((-1894007588))+r11*1+rbp]
> > > > > >
> > > > > > +        xor     ebx,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r11d,eax
> > > > > >
> > > > > > +        rol     r14d,1
> > > > > >
> > > > > > +        and     ebx,r13d
> > > > > >
> > > > > > +        add     r11d,ecx
> > > > > >
> > > > > > +        rol     r13d,30
> > > > > >
> > > > > > +        add     r11d,ebx
> > > > > >
> > > > > > +        xor     edx,DWORD[24+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[20+rsp],r14d
> > > > > >
> > > > > > +        mov     ebx,esi
> > > > > >
> > > > > > +        xor     edx,DWORD[32+rsp]
> > > > > >
> > > > > > +        and     eax,r13d
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     edx,DWORD[56+rsp]
> > > > > >
> > > > > > +        lea     edi,[((-1894007588))+rdi*1+r14]
> > > > > >
> > > > > > +        xor     ebx,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     edi,eax
> > > > > >
> > > > > > +        rol     edx,1
> > > > > >
> > > > > > +        and     ebx,r12d
> > > > > >
> > > > > > +        add     edi,ecx
> > > > > >
> > > > > > +        rol     r12d,30
> > > > > >
> > > > > > +        add     edi,ebx
> > > > > >
> > > > > > +        xor     ebp,DWORD[28+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[24+rsp],edx
> > > > > >
> > > > > > +        mov     ebx,r13d
> > > > > >
> > > > > > +        xor     ebp,DWORD[36+rsp]
> > > > > >
> > > > > > +        and     eax,r12d
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     ebp,DWORD[60+rsp]
> > > > > >
> > > > > > +        lea     esi,[((-1894007588))+rsi*1+rdx]
> > > > > >
> > > > > > +        xor     ebx,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     esi,eax
> > > > > >
> > > > > > +        rol     ebp,1
> > > > > >
> > > > > > +        and     ebx,r11d
> > > > > >
> > > > > > +        add     esi,ecx
> > > > > >
> > > > > > +        rol     r11d,30
> > > > > >
> > > > > > +        add     esi,ebx
> > > > > >
> > > > > > +        xor     r14d,DWORD[32+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[28+rsp],ebp
> > > > > >
> > > > > > +        mov     ebx,r12d
> > > > > >
> > > > > > +        xor     r14d,DWORD[40+rsp]
> > > > > >
> > > > > > +        and     eax,r11d
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     r14d,DWORD[rsp]
> > > > > >
> > > > > > +        lea     r13d,[((-1894007588))+r13*1+rbp]
> > > > > >
> > > > > > +        xor     ebx,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r13d,eax
> > > > > >
> > > > > > +        rol     r14d,1
> > > > > >
> > > > > > +        and     ebx,edi
> > > > > >
> > > > > > +        add     r13d,ecx
> > > > > >
> > > > > > +        rol     edi,30
> > > > > >
> > > > > > +        add     r13d,ebx
> > > > > >
> > > > > > +        xor     edx,DWORD[36+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[32+rsp],r14d
> > > > > >
> > > > > > +        mov     ebx,r11d
> > > > > >
> > > > > > +        xor     edx,DWORD[44+rsp]
> > > > > >
> > > > > > +        and     eax,edi
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     edx,DWORD[4+rsp]
> > > > > >
> > > > > > +        lea     r12d,[((-1894007588))+r12*1+r14]
> > > > > >
> > > > > > +        xor     ebx,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        rol     edx,1
> > > > > >
> > > > > > +        and     ebx,esi
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        rol     esi,30
> > > > > >
> > > > > > +        add     r12d,ebx
> > > > > >
> > > > > > +        xor     ebp,DWORD[40+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[36+rsp],edx
> > > > > >
> > > > > > +        mov     ebx,edi
> > > > > >
> > > > > > +        xor     ebp,DWORD[48+rsp]
> > > > > >
> > > > > > +        and     eax,esi
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     ebp,DWORD[8+rsp]
> > > > > >
> > > > > > +        lea     r11d,[((-1894007588))+r11*1+rdx]
> > > > > >
> > > > > > +        xor     ebx,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     r11d,eax
> > > > > >
> > > > > > +        rol     ebp,1
> > > > > >
> > > > > > +        and     ebx,r13d
> > > > > >
> > > > > > +        add     r11d,ecx
> > > > > >
> > > > > > +        rol     r13d,30
> > > > > >
> > > > > > +        add     r11d,ebx
> > > > > >
> > > > > > +        xor     r14d,DWORD[44+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[40+rsp],ebp
> > > > > >
> > > > > > +        mov     ebx,esi
> > > > > >
> > > > > > +        xor     r14d,DWORD[52+rsp]
> > > > > >
> > > > > > +        and     eax,r13d
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     r14d,DWORD[12+rsp]
> > > > > >
> > > > > > +        lea     edi,[((-1894007588))+rdi*1+rbp]
> > > > > >
> > > > > > +        xor     ebx,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     edi,eax
> > > > > >
> > > > > > +        rol     r14d,1
> > > > > >
> > > > > > +        and     ebx,r12d
> > > > > >
> > > > > > +        add     edi,ecx
> > > > > >
> > > > > > +        rol     r12d,30
> > > > > >
> > > > > > +        add     edi,ebx
> > > > > >
> > > > > > +        xor     edx,DWORD[48+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[44+rsp],r14d
> > > > > >
> > > > > > +        mov     ebx,r13d
> > > > > >
> > > > > > +        xor     edx,DWORD[56+rsp]
> > > > > >
> > > > > > +        and     eax,r12d
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     edx,DWORD[16+rsp]
> > > > > >
> > > > > > +        lea     esi,[((-1894007588))+rsi*1+r14]
> > > > > >
> > > > > > +        xor     ebx,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     esi,eax
> > > > > >
> > > > > > +        rol     edx,1
> > > > > >
> > > > > > +        and     ebx,r11d
> > > > > >
> > > > > > +        add     esi,ecx
> > > > > >
> > > > > > +        rol     r11d,30
> > > > > >
> > > > > > +        add     esi,ebx
> > > > > >
> > > > > > +        xor     ebp,DWORD[52+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[48+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     ebp,DWORD[60+rsp]
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[56+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[52+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     r14d,DWORD[rsp]
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[60+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[56+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     edx,DWORD[4+rsp]
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[60+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     ebp,DWORD[8+rsp]
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[4+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     r14d,DWORD[12+rsp]
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[8+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[4+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     edx,DWORD[16+rsp]
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[12+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[8+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     ebp,DWORD[20+rsp]
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[16+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +        mov     DWORD[12+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     r14d,DWORD[24+rsp]
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[20+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +        mov     DWORD[16+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     edx,DWORD[28+rsp]
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[24+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     DWORD[20+rsp],edx
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     ebp,DWORD[32+rsp]
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[28+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +        mov     DWORD[24+rsp],ebp
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     r14d,DWORD[36+rsp]
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[32+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +        mov     DWORD[28+rsp],r14d
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     edx,DWORD[40+rsp]
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[36+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     ebp,DWORD[44+rsp]
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[40+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     r14d,DWORD[48+rsp]
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[44+rsp]
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     edx,DWORD[52+rsp]
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[48+rsp]
> > > > > >
> > > > > > +        mov     eax,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,esi
> > > > > >
> > > > > > +        xor     ebp,DWORD[56+rsp]
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[52+rsp]
> > > > > >
> > > > > > +        mov     eax,esi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,r13d
> > > > > >
> > > > > > +        xor     r14d,DWORD[60+rsp]
> > > > > >
> > > > > > +        xor     eax,r11d
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[56+rsp]
> > > > > >
> > > > > > +        mov     eax,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,r12d
> > > > > >
> > > > > > +        xor     edx,DWORD[rsp]
> > > > > >
> > > > > > +        xor     eax,edi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        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[60+rsp]
> > > > > >
> > > > > > +        mov     eax,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,r11d
> > > > > >
> > > > > > +        xor     ebp,DWORD[4+rsp]
> > > > > >
> > > > > > +        xor     eax,esi
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        xor     ebp,DWORD[28+rsp]
> > > > > >
> > > > > > +        lea     edi,[((-899497514))+rdi*1+rdx]
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        add     edi,ecx
> > > > > >
> > > > > > +        rol     r12d,30
> > > > > >
> > > > > > +        add     edi,eax
> > > > > >
> > > > > > +        rol     ebp,1
> > > > > >
> > > > > > +        mov     eax,r11d
> > > > > >
> > > > > > +        mov     ecx,edi
> > > > > >
> > > > > > +        xor     eax,r13d
> > > > > >
> > > > > > +        lea     esi,[((-899497514))+rsi*1+rbp]
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        xor     eax,r12d
> > > > > >
> > > > > > +        add     esi,ecx
> > > > > >
> > > > > > +        rol     r11d,30
> > > > > >
> > > > > > +        add     esi,eax
> > > > > >
> > > > > > +        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,[64+r9]
> > > > > >
> > > > > > +        jnz     NEAR $L$loop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +sha1_block_data_order_shaext:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_sha1_block_data_order_shaext:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +_shaext_shortcut:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-72))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-64)+rax],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-48)+rax],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-32)+rax],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-16)+rax],xmm9
> > > > > >
> > > > > > +$L$prologue_shaext:
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[rdi]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[16+rdi]
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((K_XX_XX+160))]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[rsi]
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,27
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[16+rsi]
> > > > > >
> > > > > > +        pshufd  xmm1,xmm1,27
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[32+rsi]
> > > > > >
> > > > > > +DB      102,15,56,0,227
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[48+rsi]
> > > > > >
> > > > > > +DB      102,15,56,0,235
> > > > > >
> > > > > > +DB      102,15,56,0,243
> > > > > >
> > > > > > +        movdqa  xmm9,xmm1
> > > > > >
> > > > > > +DB      102,15,56,0,251
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$oop_shaext:
> > > > > >
> > > > > > +        dec     rdx
> > > > > >
> > > > > > +        lea     r8,[64+rsi]
> > > > > >
> > > > > > +        paddd   xmm1,xmm4
> > > > > >
> > > > > > +        cmovne  rsi,r8
> > > > > >
> > > > > > +        movdqa  xmm8,xmm0
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,0
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +DB      15,56,202,231
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,0
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +        pxor    xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +DB      15,56,201,247
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,0
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,252
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,0
> > > > > >
> > > > > > +DB      15,56,200,204
> > > > > >
> > > > > > +        pxor    xmm7,xmm5
> > > > > >
> > > > > > +DB      15,56,202,254
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,0
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +DB      15,56,202,231
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,1
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +        pxor    xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +DB      15,56,201,247
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,1
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,252
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,1
> > > > > >
> > > > > > +DB      15,56,200,204
> > > > > >
> > > > > > +        pxor    xmm7,xmm5
> > > > > >
> > > > > > +DB      15,56,202,254
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,1
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +DB      15,56,202,231
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,1
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +        pxor    xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +DB      15,56,201,247
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,2
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,252
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,2
> > > > > >
> > > > > > +DB      15,56,200,204
> > > > > >
> > > > > > +        pxor    xmm7,xmm5
> > > > > >
> > > > > > +DB      15,56,202,254
> > > > > >
> > > > > > +DB      15,56,201,229
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,2
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +DB      15,56,201,238
> > > > > >
> > > > > > +DB      15,56,202,231
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,2
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +        pxor    xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,202,236
> > > > > >
> > > > > > +DB      15,56,201,247
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,2
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +        pxor    xmm6,xmm4
> > > > > >
> > > > > > +DB      15,56,201,252
> > > > > >
> > > > > > +DB      15,56,202,245
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,3
> > > > > >
> > > > > > +DB      15,56,200,204
> > > > > >
> > > > > > +        pxor    xmm7,xmm5
> > > > > >
> > > > > > +DB      15,56,202,254
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[rsi]
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,3
> > > > > >
> > > > > > +DB      15,56,200,213
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[16+rsi]
> > > > > >
> > > > > > +DB      102,15,56,0,227
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,3
> > > > > >
> > > > > > +DB      15,56,200,206
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[32+rsi]
> > > > > >
> > > > > > +DB      102,15,56,0,235
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm0
> > > > > >
> > > > > > +DB      15,58,204,193,3
> > > > > >
> > > > > > +DB      15,56,200,215
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[48+rsi]
> > > > > >
> > > > > > +DB      102,15,56,0,243
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +DB      15,58,204,194,3
> > > > > >
> > > > > > +DB      65,15,56,200,201
> > > > > >
> > > > > > +DB      102,15,56,0,251
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm0,xmm8
> > > > > >
> > > > > > +        movdqa  xmm9,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,27
> > > > > >
> > > > > > +        pshufd  xmm1,xmm1,27
> > > > > >
> > > > > > +        movdqu  XMMWORD[rdi],xmm0
> > > > > >
> > > > > > +        movd    DWORD[16+rdi],xmm1
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-8-64))+rax]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-8-48))+rax]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-8-32))+rax]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-8-16))+rax]
> > > > > >
> > > > > > +        mov     rsp,rax
> > > > > >
> > > > > > +$L$epilogue_shaext:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_sha1_block_data_order_shaext:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +_ssse3_shortcut:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r11,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-160))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40-96)+r11],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40-80)+r11],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40-64)+r11],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40-48)+r11],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40-32)+r11],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40-16)+r11],xmm11
> > > > > >
> > > > > > +$L$prologue_ssse3:
> > > > > >
> > > > > > +        and     rsp,-64
> > > > > >
> > > > > > +        mov     r8,rdi
> > > > > >
> > > > > > +        mov     r9,rsi
> > > > > >
> > > > > > +        mov     r10,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        shl     r10,6
> > > > > >
> > > > > > +        add     r10,r9
> > > > > >
> > > > > > +        lea     r14,[((K_XX_XX+64))]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[16+r8]
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        and     esi,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[64+r14]
> > > > > >
> > > > > > +        movdqa  xmm9,XMMWORD[((-64))+r14]
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        add     r9,64
> > > > > >
> > > > > > +        paddd   xmm0,xmm9
> > > > > >
> > > > > > +DB      102,15,56,0,222
> > > > > >
> > > > > > +        paddd   xmm1,xmm9
> > > > > >
> > > > > > +        paddd   xmm2,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm0
> > > > > >
> > > > > > +        psubd   xmm0,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm1
> > > > > >
> > > > > > +        psubd   xmm1,xmm9
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm2
> > > > > >
> > > > > > +        psubd   xmm2,xmm9
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_ssse3
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$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[rsp]
> > > > > >
> > > > > > +        punpcklqdq      xmm4,xmm1
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        psrldq  xmm8,4
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        pxor    xmm8,xmm2
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        add     edx,DWORD[4+rsp]
> > > > > >
> > > > > > +        pxor    xmm4,xmm8
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        and     esi,eax
> > > > > >
> > > > > > +        movdqa  xmm10,xmm4
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        movdqa  xmm8,xmm4
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        pslldq  xmm10,12
> > > > > >
> > > > > > +        paddd   xmm4,xmm4
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        add     ecx,DWORD[8+rsp]
> > > > > >
> > > > > > +        psrld   xmm8,31
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        and     edi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        psrld   xmm10,30
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        por     xmm4,xmm8
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        add     ebx,DWORD[12+rsp]
> > > > > >
> > > > > > +        pslld   xmm9,2
> > > > > >
> > > > > > +        pxor    xmm4,xmm10
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        movdqa  xmm10,XMMWORD[((-64))+r14]
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        and     esi,edx
> > > > > >
> > > > > > +        pxor    xmm4,xmm9
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        pshufd  xmm5,xmm1,238
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        movdqa  xmm9,xmm4
> > > > > >
> > > > > > +        paddd   xmm10,xmm4
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        add     eax,DWORD[16+rsp]
> > > > > >
> > > > > > +        punpcklqdq      xmm5,xmm2
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        psrldq  xmm9,4
> > > > > >
> > > > > > +        and     edi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm5,xmm1
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        pxor    xmm9,xmm3
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        add     ebp,DWORD[20+rsp]
> > > > > >
> > > > > > +        pxor    xmm5,xmm9
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm10
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        and     esi,ebx
> > > > > >
> > > > > > +        movdqa  xmm8,xmm5
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        movdqa  xmm9,xmm5
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        pslldq  xmm8,12
> > > > > >
> > > > > > +        paddd   xmm5,xmm5
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        add     edx,DWORD[24+rsp]
> > > > > >
> > > > > > +        psrld   xmm9,31
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        movdqa  xmm10,xmm8
> > > > > >
> > > > > > +        and     edi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        psrld   xmm8,30
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        por     xmm5,xmm9
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        add     ecx,DWORD[28+rsp]
> > > > > >
> > > > > > +        pslld   xmm10,2
> > > > > >
> > > > > > +        pxor    xmm5,xmm8
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        movdqa  xmm8,XMMWORD[((-32))+r14]
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        and     esi,ebp
> > > > > >
> > > > > > +        pxor    xmm5,xmm10
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        pshufd  xmm6,xmm2,238
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        movdqa  xmm10,xmm5
> > > > > >
> > > > > > +        paddd   xmm8,xmm5
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        add     ebx,DWORD[32+rsp]
> > > > > >
> > > > > > +        punpcklqdq      xmm6,xmm3
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        psrldq  xmm10,4
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm6,xmm2
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        pxor    xmm10,xmm4
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        add     eax,DWORD[36+rsp]
> > > > > >
> > > > > > +        pxor    xmm6,xmm10
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm8
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        and     esi,ecx
> > > > > >
> > > > > > +        movdqa  xmm9,xmm6
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        movdqa  xmm10,xmm6
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        pslldq  xmm9,12
> > > > > >
> > > > > > +        paddd   xmm6,xmm6
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        add     ebp,DWORD[40+rsp]
> > > > > >
> > > > > > +        psrld   xmm10,31
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        movdqa  xmm8,xmm9
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        psrld   xmm9,30
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        por     xmm6,xmm10
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        add     edx,DWORD[44+rsp]
> > > > > >
> > > > > > +        pslld   xmm8,2
> > > > > >
> > > > > > +        pxor    xmm6,xmm9
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        movdqa  xmm9,XMMWORD[((-32))+r14]
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        and     esi,eax
> > > > > >
> > > > > > +        pxor    xmm6,xmm8
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        pshufd  xmm7,xmm3,238
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        movdqa  xmm8,xmm6
> > > > > >
> > > > > > +        paddd   xmm9,xmm6
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        add     ecx,DWORD[48+rsp]
> > > > > >
> > > > > > +        punpcklqdq      xmm7,xmm4
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        psrldq  xmm8,4
> > > > > >
> > > > > > +        and     edi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm7,xmm3
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        pxor    xmm8,xmm5
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        add     ebx,DWORD[52+rsp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm8
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm9
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        and     esi,edx
> > > > > >
> > > > > > +        movdqa  xmm10,xmm7
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        movdqa  xmm8,xmm7
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        pslldq  xmm10,12
> > > > > >
> > > > > > +        paddd   xmm7,xmm7
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        add     eax,DWORD[56+rsp]
> > > > > >
> > > > > > +        psrld   xmm8,31
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        movdqa  xmm9,xmm10
> > > > > >
> > > > > > +        and     edi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        psrld   xmm10,30
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        por     xmm7,xmm8
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        add     ebp,DWORD[60+rsp]
> > > > > >
> > > > > > +        pslld   xmm9,2
> > > > > >
> > > > > > +        pxor    xmm7,xmm10
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        movdqa  xmm10,XMMWORD[((-32))+r14]
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        and     esi,ebx
> > > > > >
> > > > > > +        pxor    xmm7,xmm9
> > > > > >
> > > > > > +        pshufd  xmm9,xmm6,238
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        add     edx,DWORD[rsp]
> > > > > >
> > > > > > +        punpcklqdq      xmm9,xmm7
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        and     edi,eax
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        paddd   xmm10,xmm7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm0,xmm9
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        add     ecx,DWORD[4+rsp]
> > > > > >
> > > > > > +        movdqa  xmm9,xmm0
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm10
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        and     esi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        pslld   xmm0,2
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        psrld   xmm9,30
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        add     ebx,DWORD[8+rsp]
> > > > > >
> > > > > > +        por     xmm0,xmm9
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        pshufd  xmm10,xmm7,238
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[12+rsp]
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm1,xmm5
> > > > > >
> > > > > > +        add     ebp,DWORD[16+rsp]
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        punpcklqdq      xmm10,xmm0
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        paddd   xmm8,xmm0
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm1,xmm10
> > > > > >
> > > > > > +        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[rsp],xmm8
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[24+rsp]
> > > > > >
> > > > > > +        pslld   xmm1,2
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        psrld   xmm10,30
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        por     xmm1,xmm10
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[28+rsp]
> > > > > >
> > > > > > +        pshufd  xmm8,xmm0,238
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm2,xmm6
> > > > > >
> > > > > > +        add     eax,DWORD[32+rsp]
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        punpcklqdq      xmm8,xmm1
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        movdqa  xmm10,XMMWORD[r14]
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        paddd   xmm9,xmm1
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm2,xmm8
> > > > > >
> > > > > > +        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[16+rsp],xmm9
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[40+rsp]
> > > > > >
> > > > > > +        pslld   xmm2,2
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        psrld   xmm8,30
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        por     xmm2,xmm8
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[44+rsp]
> > > > > >
> > > > > > +        pshufd  xmm9,xmm1,238
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm3,xmm7
> > > > > >
> > > > > > +        add     ebx,DWORD[48+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        punpcklqdq      xmm9,xmm2
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm4
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        paddd   xmm10,xmm2
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm3,xmm9
> > > > > >
> > > > > > +        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[32+rsp],xmm10
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[56+rsp]
> > > > > >
> > > > > > +        pslld   xmm3,2
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        psrld   xmm9,30
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        por     xmm3,xmm9
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[60+rsp]
> > > > > >
> > > > > > +        pshufd  xmm10,xmm2,238
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm4,xmm0
> > > > > >
> > > > > > +        add     ecx,DWORD[rsp]
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        punpcklqdq      xmm10,xmm3
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        paddd   xmm8,xmm3
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm4,xmm10
> > > > > >
> > > > > > +        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[48+rsp],xmm8
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[8+rsp]
> > > > > >
> > > > > > +        pslld   xmm4,2
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        psrld   xmm10,30
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        por     xmm4,xmm10
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[12+rsp]
> > > > > >
> > > > > > +        pshufd  xmm8,xmm3,238
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm5,xmm1
> > > > > >
> > > > > > +        add     edx,DWORD[16+rsp]
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        punpcklqdq      xmm8,xmm4
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        pxor    xmm5,xmm6
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        movdqa  xmm10,xmm9
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        paddd   xmm9,xmm4
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm5,xmm8
> > > > > >
> > > > > > +        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[rsp],xmm9
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[24+rsp]
> > > > > >
> > > > > > +        pslld   xmm5,2
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        psrld   xmm8,30
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        por     xmm5,xmm8
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[28+rsp]
> > > > > >
> > > > > > +        pshufd  xmm9,xmm4,238
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm6,xmm2
> > > > > >
> > > > > > +        add     ebp,DWORD[32+rsp]
> > > > > >
> > > > > > +        and     esi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        punpcklqdq      xmm9,xmm5
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        pxor    xmm6,xmm7
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        paddd   xmm10,xmm5
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm6,xmm9
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        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[16+rsp],xmm10
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        pslld   xmm6,2
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        psrld   xmm9,30
> > > > > >
> > > > > > +        add     ecx,DWORD[40+rsp]
> > > > > >
> > > > > > +        and     esi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        por     xmm6,xmm9
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        pshufd  xmm10,xmm5,238
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[44+rsp]
> > > > > >
> > > > > > +        and     edi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        pxor    xmm7,xmm3
> > > > > >
> > > > > > +        add     eax,DWORD[48+rsp]
> > > > > >
> > > > > > +        and     esi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        punpcklqdq      xmm10,xmm6
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        pxor    xmm7,xmm0
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        movdqa  xmm9,XMMWORD[32+r14]
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        paddd   xmm8,xmm6
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm7,xmm10
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        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[32+rsp],xmm8
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        pslld   xmm7,2
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        psrld   xmm10,30
> > > > > >
> > > > > > +        add     edx,DWORD[56+rsp]
> > > > > >
> > > > > > +        and     esi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        por     xmm7,xmm10
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        pshufd  xmm8,xmm6,238
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[60+rsp]
> > > > > >
> > > > > > +        and     edi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        add     ebx,DWORD[rsp]
> > > > > >
> > > > > > +        and     esi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        punpcklqdq      xmm8,xmm7
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        movdqa  xmm10,xmm9
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        paddd   xmm9,xmm7
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm0,xmm8
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        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[48+rsp],xmm9
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        pslld   xmm0,2
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        psrld   xmm8,30
> > > > > >
> > > > > > +        add     ebp,DWORD[8+rsp]
> > > > > >
> > > > > > +        and     esi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        por     xmm0,xmm8
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        pshufd  xmm9,xmm7,238
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[12+rsp]
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        pxor    xmm1,xmm5
> > > > > >
> > > > > > +        add     ecx,DWORD[16+rsp]
> > > > > >
> > > > > > +        and     esi,eax
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        punpcklqdq      xmm9,xmm0
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        paddd   xmm10,xmm0
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm1,xmm9
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        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[rsp],xmm10
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        pslld   xmm1,2
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        psrld   xmm9,30
> > > > > >
> > > > > > +        add     eax,DWORD[24+rsp]
> > > > > >
> > > > > > +        and     esi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        por     xmm1,xmm9
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        pshufd  xmm10,xmm0,238
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[28+rsp]
> > > > > >
> > > > > > +        and     edi,ecx
> > > > > >
> > > > > > +        xor     ecx,edx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm2,xmm6
> > > > > >
> > > > > > +        add     edx,DWORD[32+rsp]
> > > > > >
> > > > > > +        and     esi,ebx
> > > > > >
> > > > > > +        xor     ebx,ecx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        punpcklqdq      xmm10,xmm1
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        pxor    xmm2,xmm3
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        movdqa  xmm9,xmm8
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        paddd   xmm8,xmm1
> > > > > >
> > > > > > +        xor     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm2,xmm10
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        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[16+rsp],xmm8
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        pslld   xmm2,2
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        psrld   xmm10,30
> > > > > >
> > > > > > +        add     ebx,DWORD[40+rsp]
> > > > > >
> > > > > > +        and     esi,ebp
> > > > > >
> > > > > > +        xor     ebp,eax
> > > > > >
> > > > > > +        por     xmm2,xmm10
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        pshufd  xmm8,xmm1,238
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[44+rsp]
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +        xor     edx,ebp
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        pxor    xmm3,xmm7
> > > > > >
> > > > > > +        add     ebp,DWORD[48+rsp]
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        punpcklqdq      xmm8,xmm2
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        pxor    xmm3,xmm4
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        movdqa  xmm10,xmm9
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        paddd   xmm9,xmm2
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        pxor    xmm3,xmm8
> > > > > >
> > > > > > +        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[32+rsp],xmm9
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[56+rsp]
> > > > > >
> > > > > > +        pslld   xmm3,2
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        psrld   xmm8,30
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        por     xmm3,xmm8
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[60+rsp]
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[rsp]
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        paddd   xmm10,xmm3
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm10
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[4+rsp]
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[8+rsp]
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[12+rsp]
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        cmp     r9,r10
> > > > > >
> > > > > > +        je      NEAR $L$done_ssse3
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[64+r14]
> > > > > >
> > > > > > +        movdqa  xmm9,XMMWORD[((-64))+r14]
> > > > > >
> > > > > > +        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[16+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +DB      102,15,56,0,206
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        paddd   xmm0,xmm9
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[20+rsp]
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        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[24+rsp]
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[28+rsp]
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[32+rsp]
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +DB      102,15,56,0,214
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        paddd   xmm1,xmm9
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[36+rsp]
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        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[40+rsp]
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[44+rsp]
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[48+rsp]
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +DB      102,15,56,0,222
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        paddd   xmm2,xmm9
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[52+rsp]
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        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[56+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        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[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[8+r8],ecx
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        mov     DWORD[12+r8],edx
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     DWORD[16+r8],ebp
> > > > > >
> > > > > > +        and     esi,edi
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_ssse3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$done_ssse3:
> > > > > >
> > > > > > +        add     ebx,DWORD[16+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[20+rsp]
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        mov     esi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,edi
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[24+rsp]
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,esi
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[28+rsp]
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        mov     esi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[32+rsp]
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,esi
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[36+rsp]
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        mov     esi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        add     eax,DWORD[40+rsp]
> > > > > >
> > > > > > +        xor     esi,edx
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        rol     ebx,5
> > > > > >
> > > > > > +        add     eax,esi
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     ecx,7
> > > > > >
> > > > > > +        add     eax,ebx
> > > > > >
> > > > > > +        add     ebp,DWORD[44+rsp]
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     esi,eax
> > > > > >
> > > > > > +        rol     eax,5
> > > > > >
> > > > > > +        add     ebp,edi
> > > > > >
> > > > > > +        xor     esi,ecx
> > > > > >
> > > > > > +        ror     ebx,7
> > > > > >
> > > > > > +        add     ebp,eax
> > > > > >
> > > > > > +        add     edx,DWORD[48+rsp]
> > > > > >
> > > > > > +        xor     esi,ebx
> > > > > >
> > > > > > +        mov     edi,ebp
> > > > > >
> > > > > > +        rol     ebp,5
> > > > > >
> > > > > > +        add     edx,esi
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     eax,7
> > > > > >
> > > > > > +        add     edx,ebp
> > > > > >
> > > > > > +        add     ecx,DWORD[52+rsp]
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        mov     esi,edx
> > > > > >
> > > > > > +        rol     edx,5
> > > > > >
> > > > > > +        add     ecx,edi
> > > > > >
> > > > > > +        xor     esi,eax
> > > > > >
> > > > > > +        ror     ebp,7
> > > > > >
> > > > > > +        add     ecx,edx
> > > > > >
> > > > > > +        add     ebx,DWORD[56+rsp]
> > > > > >
> > > > > > +        xor     esi,ebp
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +        rol     ecx,5
> > > > > >
> > > > > > +        add     ebx,esi
> > > > > >
> > > > > > +        xor     edi,ebp
> > > > > >
> > > > > > +        ror     edx,7
> > > > > >
> > > > > > +        add     ebx,ecx
> > > > > >
> > > > > > +        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[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))+r11]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-40-80))+r11]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-40-64))+r11]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-40-48))+r11]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-40-32))+r11]
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-40-16))+r11]
> > > > > >
> > > > > > +        mov     r14,QWORD[((-40))+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r13,QWORD[((-32))+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,QWORD[((-24))+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-16))+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbx,QWORD[((-8))+r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[r11]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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:
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$prologue]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$epilogue]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[64+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +shaext_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$prologue_shaext]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$epilogue_shaext]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((-8-64))+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,8
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +ssse3_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[208+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$common_seh_tail
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((-40-96))+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,12
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .pdata rdata align=4
> > > > > >
> > > > > > +ALIGN   4
> > > > > >
> > > > > > +        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_shaext wrt
> > > ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_sha1_block_data_order_shaext wrt
> > > ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_sha1_block_data_order_shaext 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:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      se_handler wrt ..imagebase
> > > > > >
> > > > > > +$L$SEH_info_sha1_block_data_order_shaext:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      shaext_handler wrt ..imagebase
> > > > > >
> > > > > > +$L$SEH_info_sha1_block_data_order_ssse3:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      ssse3_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$prologue_ssse3 wrt
> ..imagebase,$L$epilogue_ssse3
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
> > > > > > x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
> mb-
> > > > > > x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..7cd5eae85c
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
> > > > x86_64.nasm
> > > > > > @@ -0,0 +1,3461 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/sha/asm/sha256-mb-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not
> use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain
> a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  sha256_multi_block
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +sha256_multi_block:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_sha256_multi_block:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
> > > > > >
> > > > > > +        bt      rcx,61
> > > > > >
> > > > > > +        jc      NEAR _shaext_shortcut
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-168))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > > > >
> > > > > > +        sub     rsp,288
> > > > > >
> > > > > > +        and     rsp,-256
> > > > > >
> > > > > > +        mov     QWORD[272+rsp],rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$body:
> > > > > >
> > > > > > +        lea     rbp,[((K256+128))]
> > > > > >
> > > > > > +        lea     rbx,[256+rsp]
> > > > > >
> > > > > > +        lea     rdi,[128+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$oop_grande:
> > > > > >
> > > > > > +        mov     DWORD[280+rsp],edx
> > > > > >
> > > > > > +        xor     edx,edx
> > > > > >
> > > > > > +        mov     r8,QWORD[rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[8+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[rbx],ecx
> > > > > >
> > > > > > +        cmovle  r8,rbp
> > > > > >
> > > > > > +        mov     r9,QWORD[16+rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[24+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[4+rbx],ecx
> > > > > >
> > > > > > +        cmovle  r9,rbp
> > > > > >
> > > > > > +        mov     r10,QWORD[32+rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[40+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[8+rbx],ecx
> > > > > >
> > > > > > +        cmovle  r10,rbp
> > > > > >
> > > > > > +        mov     r11,QWORD[48+rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[56+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[12+rbx],ecx
> > > > > >
> > > > > > +        cmovle  r11,rbp
> > > > > >
> > > > > > +        test    edx,edx
> > > > > >
> > > > > > +        jz      NEAR $L$done
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[((0-128))+rdi]
> > > > > >
> > > > > > +        lea     rax,[128+rsp]
> > > > > >
> > > > > > +        movdqu  xmm9,XMMWORD[((32-128))+rdi]
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[((64-128))+rdi]
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[((96-128))+rdi]
> > > > > >
> > > > > > +        movdqu  xmm12,XMMWORD[((128-128))+rdi]
> > > > > >
> > > > > > +        movdqu  xmm13,XMMWORD[((160-128))+rdi]
> > > > > >
> > > > > > +        movdqu  xmm14,XMMWORD[((192-128))+rdi]
> > > > > >
> > > > > > +        movdqu  xmm15,XMMWORD[((224-128))+rdi]
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[$L$pbswap]
> > > > > >
> > > > > > +        jmp     NEAR $L$oop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$oop:
> > > > > >
> > > > > > +        movdqa  xmm4,xmm10
> > > > > >
> > > > > > +        pxor    xmm4,xmm9
> > > > > >
> > > > > > +        movd    xmm5,DWORD[r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        movdqa  xmm2,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm14
> > > > > >
> > > > > > +        pand    xmm3,xmm13
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm8
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm8
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm9
> > > > > >
> > > > > > +        movdqa  xmm7,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm15,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm15,xmm4
> > > > > >
> > > > > > +        paddd   xmm11,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm15,xmm5
> > > > > >
> > > > > > +        paddd   xmm15,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[4+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[4+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[4+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[4+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-96))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm13
> > > > > >
> > > > > > +        pand    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm15
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm8
> > > > > >
> > > > > > +        movdqa  xmm7,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm14,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm14,xmm3
> > > > > >
> > > > > > +        paddd   xmm10,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm14,xmm5
> > > > > >
> > > > > > +        paddd   xmm14,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[8+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[8+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[8+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[8+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm12
> > > > > >
> > > > > > +        pand    xmm3,xmm11
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm14
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm15
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm13,xmm4
> > > > > >
> > > > > > +        paddd   xmm9,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm13,xmm5
> > > > > >
> > > > > > +        paddd   xmm13,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[12+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[12+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[12+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[12+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm9
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-32))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm11
> > > > > >
> > > > > > +        pand    xmm4,xmm10
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm13
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm13
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm12,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm12,xmm3
> > > > > >
> > > > > > +        paddd   xmm8,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm12,xmm5
> > > > > >
> > > > > > +        paddd   xmm12,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[16+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[16+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[16+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[16+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        movdqa  xmm2,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm10
> > > > > >
> > > > > > +        pand    xmm3,xmm9
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm12
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm12
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm11,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm11,xmm4
> > > > > >
> > > > > > +        paddd   xmm15,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm11,xmm5
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[20+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[20+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[20+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[20+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm15
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[32+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm9
> > > > > >
> > > > > > +        pand    xmm4,xmm8
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm10,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm10,xmm3
> > > > > >
> > > > > > +        paddd   xmm14,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm10,xmm5
> > > > > >
> > > > > > +        paddd   xmm10,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[24+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[24+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[24+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[24+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        movdqa  xmm2,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm8
> > > > > >
> > > > > > +        pand    xmm3,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm10
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm9,xmm4
> > > > > >
> > > > > > +        paddd   xmm13,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm9,xmm5
> > > > > >
> > > > > > +        paddd   xmm9,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[28+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[28+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[28+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[28+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm13
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[96+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm15
> > > > > >
> > > > > > +        pand    xmm4,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm9
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        paddd   xmm12,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm8,xmm5
> > > > > >
> > > > > > +        paddd   xmm8,xmm7
> > > > > >
> > > > > > +        lea     rbp,[256+rbp]
> > > > > >
> > > > > > +        movd    xmm5,DWORD[32+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[32+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[32+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[32+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        movdqa  xmm2,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm14
> > > > > >
> > > > > > +        pand    xmm3,xmm13
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm8
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm8
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm9
> > > > > >
> > > > > > +        movdqa  xmm7,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm15,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm15,xmm4
> > > > > >
> > > > > > +        paddd   xmm11,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm15,xmm5
> > > > > >
> > > > > > +        paddd   xmm15,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[36+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[36+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[36+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[36+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-96))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm13
> > > > > >
> > > > > > +        pand    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm15
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm8
> > > > > >
> > > > > > +        movdqa  xmm7,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm14,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm14,xmm3
> > > > > >
> > > > > > +        paddd   xmm10,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm14,xmm5
> > > > > >
> > > > > > +        paddd   xmm14,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[40+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[40+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[40+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[40+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm12
> > > > > >
> > > > > > +        pand    xmm3,xmm11
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm14
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm15
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm13,xmm4
> > > > > >
> > > > > > +        paddd   xmm9,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm13,xmm5
> > > > > >
> > > > > > +        paddd   xmm13,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[44+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[44+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[44+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[44+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm9
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-32))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm11
> > > > > >
> > > > > > +        pand    xmm4,xmm10
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm13
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm13
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm12,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm12,xmm3
> > > > > >
> > > > > > +        paddd   xmm8,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm12,xmm5
> > > > > >
> > > > > > +        paddd   xmm12,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[48+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[48+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[48+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[48+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm8
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        movdqa  xmm2,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm10
> > > > > >
> > > > > > +        pand    xmm3,xmm9
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm12
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm12
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm11,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm11,xmm4
> > > > > >
> > > > > > +        paddd   xmm15,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm11,xmm5
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[52+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[52+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[52+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[52+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm15
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[32+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm9
> > > > > >
> > > > > > +        pand    xmm4,xmm8
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm10,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm10,xmm3
> > > > > >
> > > > > > +        paddd   xmm14,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm10,xmm5
> > > > > >
> > > > > > +        paddd   xmm10,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[56+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[56+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[56+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[56+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        movdqa  xmm2,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm8
> > > > > >
> > > > > > +        pand    xmm3,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm10
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm9,xmm4
> > > > > >
> > > > > > +        paddd   xmm13,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm9,xmm5
> > > > > >
> > > > > > +        paddd   xmm9,xmm7
> > > > > >
> > > > > > +        movd    xmm5,DWORD[60+r8]
> > > > > >
> > > > > > +        lea     r8,[64+r8]
> > > > > >
> > > > > > +        movd    xmm0,DWORD[60+r9]
> > > > > >
> > > > > > +        lea     r9,[64+r9]
> > > > > >
> > > > > > +        movd    xmm1,DWORD[60+r10]
> > > > > >
> > > > > > +        lea     r10,[64+r10]
> > > > > >
> > > > > > +        movd    xmm2,DWORD[60+r11]
> > > > > >
> > > > > > +        lea     r11,[64+r11]
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm1
> > > > > >
> > > > > > +        punpckldq       xmm0,xmm2
> > > > > >
> > > > > > +        punpckldq       xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm13
> > > > > >
> > > > > > +DB      102,15,56,0,238
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[96+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm13
> > > > > >
> > > > > > +        prefetcht0      [63+r8]
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm15
> > > > > >
> > > > > > +        pand    xmm4,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        prefetcht0      [63+r9]
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm9
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        prefetcht0      [63+r10]
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        prefetcht0      [63+r11]
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        paddd   xmm12,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm8,xmm5
> > > > > >
> > > > > > +        paddd   xmm8,xmm7
> > > > > >
> > > > > > +        lea     rbp,[256+rbp]
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +        mov     ecx,3
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_16_xx
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$oop_16_xx:
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm6
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm3,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psrld   xmm3,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(0-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm14
> > > > > >
> > > > > > +        pand    xmm3,xmm13
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm8
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm8
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm9
> > > > > >
> > > > > > +        movdqa  xmm7,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm15,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm15,xmm4
> > > > > >
> > > > > > +        paddd   xmm11,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm15,xmm5
> > > > > >
> > > > > > +        paddd   xmm15,xmm7
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +        movdqa  xmm1,xmm5
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm4,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrld   xmm4,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(16-128)+rax],xmm6
> > > > > >
> > > > > > +        paddd   xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((-96))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm13
> > > > > >
> > > > > > +        pand    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm15
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm8
> > > > > >
> > > > > > +        movdqa  xmm7,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm14,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm14,xmm3
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm14,xmm7
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm6
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm3,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psrld   xmm3,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(32-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm12
> > > > > >
> > > > > > +        pand    xmm3,xmm11
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm14
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm15
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm13,xmm4
> > > > > >
> > > > > > +        paddd   xmm9,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm13,xmm5
> > > > > >
> > > > > > +        paddd   xmm13,xmm7
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +        movdqa  xmm1,xmm5
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm4,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrld   xmm4,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(48-128)+rax],xmm6
> > > > > >
> > > > > > +        paddd   xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((-32))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm11
> > > > > >
> > > > > > +        pand    xmm4,xmm10
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm13
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm13
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm12,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm12,xmm3
> > > > > >
> > > > > > +        paddd   xmm8,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm12,xmm7
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm6
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm3,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psrld   xmm3,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(64-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm10
> > > > > >
> > > > > > +        pand    xmm3,xmm9
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm12
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm12
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm11,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm11,xmm4
> > > > > >
> > > > > > +        paddd   xmm15,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm11,xmm5
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +        movdqa  xmm1,xmm5
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm4,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrld   xmm4,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(80-128)+rax],xmm6
> > > > > >
> > > > > > +        paddd   xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[32+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm9
> > > > > >
> > > > > > +        pand    xmm4,xmm8
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm10,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm10,xmm3
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        paddd   xmm10,xmm7
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm6
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm3,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psrld   xmm3,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(96-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm8
> > > > > >
> > > > > > +        pand    xmm3,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm10
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm9,xmm4
> > > > > >
> > > > > > +        paddd   xmm13,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm9,xmm5
> > > > > >
> > > > > > +        paddd   xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +        movdqa  xmm1,xmm5
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm4,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrld   xmm4,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(112-128)+rax],xmm6
> > > > > >
> > > > > > +        paddd   xmm6,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[96+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm15
> > > > > >
> > > > > > +        pand    xmm4,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm9
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm8,xmm6
> > > > > >
> > > > > > +        paddd   xmm8,xmm7
> > > > > >
> > > > > > +        lea     rbp,[256+rbp]
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((16-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm6
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm3,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psrld   xmm3,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(128-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-128))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm14
> > > > > >
> > > > > > +        pand    xmm3,xmm13
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm8
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm8
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm9
> > > > > >
> > > > > > +        movdqa  xmm7,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm15,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm15,xmm4
> > > > > >
> > > > > > +        paddd   xmm11,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm15,xmm5
> > > > > >
> > > > > > +        paddd   xmm15,xmm7
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((32-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +        movdqa  xmm1,xmm5
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm4,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrld   xmm4,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(144-128)+rax],xmm6
> > > > > >
> > > > > > +        paddd   xmm6,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((-96))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm13
> > > > > >
> > > > > > +        pand    xmm4,xmm12
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm15
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm8
> > > > > >
> > > > > > +        movdqa  xmm7,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm14,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm14,xmm3
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm14,xmm7
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((48-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm6
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm3,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psrld   xmm3,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(160-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((-64))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm12
> > > > > >
> > > > > > +        pand    xmm3,xmm11
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm14
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm15
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm13,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm13,xmm4
> > > > > >
> > > > > > +        paddd   xmm9,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm13,xmm5
> > > > > >
> > > > > > +        paddd   xmm13,xmm7
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((64-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +        movdqa  xmm1,xmm5
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((144-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm4,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrld   xmm4,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(176-128)+rax],xmm6
> > > > > >
> > > > > > +        paddd   xmm6,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((-32))+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm11
> > > > > >
> > > > > > +        pand    xmm4,xmm10
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm13
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm13
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm14
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm12,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm12,xmm3
> > > > > >
> > > > > > +        paddd   xmm8,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm12,xmm7
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((80-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm6
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((160-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm3,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psrld   xmm3,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(192-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm8
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm10
> > > > > >
> > > > > > +        pand    xmm3,xmm9
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm12
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm12
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm13
> > > > > >
> > > > > > +        movdqa  xmm7,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm11,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm11,xmm4
> > > > > >
> > > > > > +        paddd   xmm15,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm11,xmm5
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[((224-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((96-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +        movdqa  xmm1,xmm5
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((176-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm4,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrld   xmm4,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(208-128)+rax],xmm6
> > > > > >
> > > > > > +        paddd   xmm6,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[32+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm15
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm9
> > > > > >
> > > > > > +        pand    xmm4,xmm8
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm11
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm12
> > > > > >
> > > > > > +        movdqa  xmm7,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm10,xmm12
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm10,xmm3
> > > > > >
> > > > > > +        paddd   xmm14,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm10,xmm6
> > > > > >
> > > > > > +        paddd   xmm10,xmm7
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[((240-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[((112-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm6
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((192-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm3,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm3
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm3,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        psrld   xmm3,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(224-128)+rax],xmm5
> > > > > >
> > > > > > +        paddd   xmm5,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm5,XMMWORD[64+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm14
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm8
> > > > > >
> > > > > > +        pand    xmm3,xmm15
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm10
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm10
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm11
> > > > > >
> > > > > > +        movdqa  xmm7,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm3,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm5,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm4,xmm3
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm9,xmm11
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm9,xmm4
> > > > > >
> > > > > > +        paddd   xmm13,xmm5
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm9,xmm5
> > > > > >
> > > > > > +        paddd   xmm9,xmm7
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[((0-128))+rax]
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[((128-128))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +        movdqa  xmm1,xmm5
> > > > > >
> > > > > > +        psrld   xmm7,3
> > > > > >
> > > > > > +        movdqa  xmm2,xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,7
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((208-128))+rax]
> > > > > >
> > > > > > +        pslld   xmm2,14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm1,18-7
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,25-14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        psrld   xmm0,10
> > > > > >
> > > > > > +        movdqa  xmm1,xmm4
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm4,17
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm1,13
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        psrld   xmm4,19-17
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        pslld   xmm1,15-13
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm0,xmm1
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        movdqa  xmm7,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm2,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,6
> > > > > >
> > > > > > +        movdqa  xmm1,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,7
> > > > > >
> > > > > > +        movdqa  XMMWORD[(240-128)+rax],xmm6
> > > > > >
> > > > > > +        paddd   xmm6,xmm8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,11
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        pslld   xmm2,21-7
> > > > > >
> > > > > > +        paddd   xmm6,XMMWORD[96+rbp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm1,25-11
> > > > > >
> > > > > > +        movdqa  xmm0,xmm13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm4,xmm13
> > > > > >
> > > > > > +        pslld   xmm2,26-21
> > > > > >
> > > > > > +        pandn   xmm0,xmm15
> > > > > >
> > > > > > +        pand    xmm4,xmm14
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm1,xmm9
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +        movdqa  xmm2,xmm9
> > > > > >
> > > > > > +        psrld   xmm1,2
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +        pxor    xmm0,xmm4
> > > > > >
> > > > > > +        movdqa  xmm4,xmm10
> > > > > >
> > > > > > +        movdqa  xmm7,xmm9
> > > > > >
> > > > > > +        pslld   xmm2,10
> > > > > >
> > > > > > +        pxor    xmm4,xmm9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        pslld   xmm2,19-10
> > > > > >
> > > > > > +        pand    xmm3,xmm4
> > > > > >
> > > > > > +        pxor    xmm1,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        psrld   xmm7,22-13
> > > > > >
> > > > > > +        pxor    xmm1,xmm2
> > > > > >
> > > > > > +        movdqa  xmm8,xmm10
> > > > > >
> > > > > > +        pslld   xmm2,30-19
> > > > > >
> > > > > > +        pxor    xmm7,xmm1
> > > > > >
> > > > > > +        pxor    xmm8,xmm3
> > > > > >
> > > > > > +        paddd   xmm12,xmm6
> > > > > >
> > > > > > +        pxor    xmm7,xmm2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm8,xmm6
> > > > > >
> > > > > > +        paddd   xmm8,xmm7
> > > > > >
> > > > > > +        lea     rbp,[256+rbp]
> > > > > >
> > > > > > +        dec     ecx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_16_xx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     ecx,1
> > > > > >
> > > > > > +        lea     rbp,[((K256+128))]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm7,XMMWORD[rbx]
> > > > > >
> > > > > > +        cmp     ecx,DWORD[rbx]
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        cmovge  r8,rbp
> > > > > >
> > > > > > +        cmp     ecx,DWORD[4+rbx]
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        cmovge  r9,rbp
> > > > > >
> > > > > > +        cmp     ecx,DWORD[8+rbx]
> > > > > >
> > > > > > +        pcmpgtd xmm6,xmm0
> > > > > >
> > > > > > +        cmovge  r10,rbp
> > > > > >
> > > > > > +        cmp     ecx,DWORD[12+rbx]
> > > > > >
> > > > > > +        paddd   xmm7,xmm6
> > > > > >
> > > > > > +        cmovge  r11,rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[((0-128))+rdi]
> > > > > >
> > > > > > +        pand    xmm8,xmm6
> > > > > >
> > > > > > +        movdqu  xmm1,XMMWORD[((32-128))+rdi]
> > > > > >
> > > > > > +        pand    xmm9,xmm6
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[((64-128))+rdi]
> > > > > >
> > > > > > +        pand    xmm10,xmm6
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[((96-128))+rdi]
> > > > > >
> > > > > > +        pand    xmm11,xmm6
> > > > > >
> > > > > > +        paddd   xmm8,xmm0
> > > > > >
> > > > > > +        movdqu  xmm0,XMMWORD[((128-128))+rdi]
> > > > > >
> > > > > > +        pand    xmm12,xmm6
> > > > > >
> > > > > > +        paddd   xmm9,xmm1
> > > > > >
> > > > > > +        movdqu  xmm1,XMMWORD[((160-128))+rdi]
> > > > > >
> > > > > > +        pand    xmm13,xmm6
> > > > > >
> > > > > > +        paddd   xmm10,xmm2
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[((192-128))+rdi]
> > > > > >
> > > > > > +        pand    xmm14,xmm6
> > > > > >
> > > > > > +        paddd   xmm11,xmm5
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[((224-128))+rdi]
> > > > > >
> > > > > > +        pand    xmm15,xmm6
> > > > > >
> > > > > > +        paddd   xmm12,xmm0
> > > > > >
> > > > > > +        paddd   xmm13,xmm1
> > > > > >
> > > > > > +        movdqu  XMMWORD[(0-128)+rdi],xmm8
> > > > > >
> > > > > > +        paddd   xmm14,xmm2
> > > > > >
> > > > > > +        movdqu  XMMWORD[(32-128)+rdi],xmm9
> > > > > >
> > > > > > +        paddd   xmm15,xmm5
> > > > > >
> > > > > > +        movdqu  XMMWORD[(64-128)+rdi],xmm10
> > > > > >
> > > > > > +        movdqu  XMMWORD[(96-128)+rdi],xmm11
> > > > > >
> > > > > > +        movdqu  XMMWORD[(128-128)+rdi],xmm12
> > > > > >
> > > > > > +        movdqu  XMMWORD[(160-128)+rdi],xmm13
> > > > > >
> > > > > > +        movdqu  XMMWORD[(192-128)+rdi],xmm14
> > > > > >
> > > > > > +        movdqu  XMMWORD[(224-128)+rdi],xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  XMMWORD[rbx],xmm7
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[$L$pbswap]
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edx,DWORD[280+rsp]
> > > > > >
> > > > > > +        lea     rdi,[16+rdi]
> > > > > >
> > > > > > +        lea     rsi,[64+rsi]
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_grande
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$done:
> > > > > >
> > > > > > +        mov     rax,QWORD[272+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$epilogue:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_sha256_multi_block:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +sha256_multi_block_shaext:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_sha256_multi_block_shaext:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +_shaext_shortcut:
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-168))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[16+rsp],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[32+rsp],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[48+rsp],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-120)+rax],xmm10
> > > > > >
> > > > > > +        movaps  XMMWORD[(-104)+rax],xmm11
> > > > > >
> > > > > > +        movaps  XMMWORD[(-88)+rax],xmm12
> > > > > >
> > > > > > +        movaps  XMMWORD[(-72)+rax],xmm13
> > > > > >
> > > > > > +        movaps  XMMWORD[(-56)+rax],xmm14
> > > > > >
> > > > > > +        movaps  XMMWORD[(-40)+rax],xmm15
> > > > > >
> > > > > > +        sub     rsp,288
> > > > > >
> > > > > > +        shl     edx,1
> > > > > >
> > > > > > +        and     rsp,-256
> > > > > >
> > > > > > +        lea     rdi,[128+rdi]
> > > > > >
> > > > > > +        mov     QWORD[272+rsp],rax
> > > > > >
> > > > > > +$L$body_shaext:
> > > > > >
> > > > > > +        lea     rbx,[256+rsp]
> > > > > >
> > > > > > +        lea     rbp,[((K256_shaext+128))]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$oop_grande_shaext:
> > > > > >
> > > > > > +        mov     DWORD[280+rsp],edx
> > > > > >
> > > > > > +        xor     edx,edx
> > > > > >
> > > > > > +        mov     r8,QWORD[rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[8+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[rbx],ecx
> > > > > >
> > > > > > +        cmovle  r8,rsp
> > > > > >
> > > > > > +        mov     r9,QWORD[16+rsi]
> > > > > >
> > > > > > +        mov     ecx,DWORD[24+rsi]
> > > > > >
> > > > > > +        cmp     ecx,edx
> > > > > >
> > > > > > +        cmovg   edx,ecx
> > > > > >
> > > > > > +        test    ecx,ecx
> > > > > >
> > > > > > +        mov     DWORD[4+rbx],ecx
> > > > > >
> > > > > > +        cmovle  r9,rsp
> > > > > >
> > > > > > +        test    edx,edx
> > > > > >
> > > > > > +        jz      NEAR $L$done_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movq    xmm12,QWORD[((0-128))+rdi]
> > > > > >
> > > > > > +        movq    xmm4,QWORD[((32-128))+rdi]
> > > > > >
> > > > > > +        movq    xmm13,QWORD[((64-128))+rdi]
> > > > > >
> > > > > > +        movq    xmm5,QWORD[((96-128))+rdi]
> > > > > >
> > > > > > +        movq    xmm8,QWORD[((128-128))+rdi]
> > > > > >
> > > > > > +        movq    xmm9,QWORD[((160-128))+rdi]
> > > > > >
> > > > > > +        movq    xmm10,QWORD[((192-128))+rdi]
> > > > > >
> > > > > > +        movq    xmm11,QWORD[((224-128))+rdi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        punpckldq       xmm12,xmm4
> > > > > >
> > > > > > +        punpckldq       xmm13,xmm5
> > > > > >
> > > > > > +        punpckldq       xmm8,xmm9
> > > > > >
> > > > > > +        punpckldq       xmm10,xmm11
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm14,xmm12
> > > > > >
> > > > > > +        movdqa  xmm15,xmm13
> > > > > >
> > > > > > +        punpcklqdq      xmm12,xmm8
> > > > > >
> > > > > > +        punpcklqdq      xmm13,xmm10
> > > > > >
> > > > > > +        punpckhqdq      xmm14,xmm8
> > > > > >
> > > > > > +        punpckhqdq      xmm15,xmm10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm12,xmm12,27
> > > > > >
> > > > > > +        pshufd  xmm13,xmm13,27
> > > > > >
> > > > > > +        pshufd  xmm14,xmm14,27
> > > > > >
> > > > > > +        pshufd  xmm15,xmm15,27
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   32
> > > > > >
> > > > > > +$L$oop_shaext:
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[r8]
> > > > > >
> > > > > > +        movdqu  xmm8,XMMWORD[r9]
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[16+r8]
> > > > > >
> > > > > > +        movdqu  xmm9,XMMWORD[16+r9]
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[32+r8]
> > > > > >
> > > > > > +DB      102,15,56,0,227
> > > > > >
> > > > > > +        movdqu  xmm10,XMMWORD[32+r9]
> > > > > >
> > > > > > +DB      102,68,15,56,0,195
> > > > > >
> > > > > > +        movdqu  xmm7,XMMWORD[48+r8]
> > > > > >
> > > > > > +        lea     r8,[64+r8]
> > > > > >
> > > > > > +        movdqu  xmm11,XMMWORD[48+r9]
> > > > > >
> > > > > > +        lea     r9,[64+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((0-128))+rbp]
> > > > > >
> > > > > > +DB      102,15,56,0,235
> > > > > >
> > > > > > +        paddd   xmm0,xmm4
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqa  xmm1,xmm0
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((0-128))+rbp]
> > > > > >
> > > > > > +DB      102,68,15,56,0,203
> > > > > >
> > > > > > +        paddd   xmm2,xmm8
> > > > > >
> > > > > > +        movdqa  XMMWORD[80+rsp],xmm13
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        pxor    xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  XMMWORD[112+rsp],xmm15
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        pxor    xmm4,xmm12
> > > > > >
> > > > > > +        movdqa  XMMWORD[64+rsp],xmm12
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        pxor    xmm8,xmm14
> > > > > >
> > > > > > +        movdqa  XMMWORD[96+rsp],xmm14
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((16-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm5
> > > > > >
> > > > > > +DB      102,15,56,0,243
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((16-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm2,xmm9
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        prefetcht0      [127+r8]
> > > > > >
> > > > > > +DB      102,15,56,0,251
> > > > > >
> > > > > > +DB      102,68,15,56,0,211
> > > > > >
> > > > > > +        prefetcht0      [127+r9]
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +DB      102,68,15,56,0,219
> > > > > >
> > > > > > +DB      15,56,204,229
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((32-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm6
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((32-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm2,xmm10
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +DB      69,15,56,204,193
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm7
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +DB      102,15,58,15,222,4
> > > > > >
> > > > > > +        paddd   xmm4,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm11
> > > > > >
> > > > > > +DB      102,65,15,58,15,218,4
> > > > > >
> > > > > > +DB      15,56,204,238
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((48-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm7
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,202
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((48-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm8,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm11
> > > > > >
> > > > > > +DB      15,56,205,231
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm4
> > > > > >
> > > > > > +DB      102,15,58,15,223,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,195
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm5,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm8
> > > > > >
> > > > > > +DB      102,65,15,58,15,219,4
> > > > > >
> > > > > > +DB      15,56,204,247
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((64-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm4
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,211
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((64-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm9,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm8
> > > > > >
> > > > > > +DB      15,56,205,236
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm5
> > > > > >
> > > > > > +DB      102,15,58,15,220,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,200
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm6,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm9
> > > > > >
> > > > > > +DB      102,65,15,58,15,216,4
> > > > > >
> > > > > > +DB      15,56,204,252
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((80-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm5
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,216
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((80-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm10,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm9
> > > > > >
> > > > > > +DB      15,56,205,245
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm6
> > > > > >
> > > > > > +DB      102,15,58,15,221,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm7,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +DB      102,65,15,58,15,217,4
> > > > > >
> > > > > > +DB      15,56,204,229
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((96-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm6
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,193
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((96-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm10
> > > > > >
> > > > > > +DB      15,56,205,254
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm7
> > > > > >
> > > > > > +DB      102,15,58,15,222,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,218
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm4,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm11
> > > > > >
> > > > > > +DB      102,65,15,58,15,218,4
> > > > > >
> > > > > > +DB      15,56,204,238
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((112-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm7
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,202
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((112-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm8,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm11
> > > > > >
> > > > > > +DB      15,56,205,231
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm4
> > > > > >
> > > > > > +DB      102,15,58,15,223,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,195
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm5,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm8
> > > > > >
> > > > > > +DB      102,65,15,58,15,219,4
> > > > > >
> > > > > > +DB      15,56,204,247
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((128-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm4
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,211
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((128-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm9,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm8
> > > > > >
> > > > > > +DB      15,56,205,236
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm5
> > > > > >
> > > > > > +DB      102,15,58,15,220,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,200
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm6,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm9
> > > > > >
> > > > > > +DB      102,65,15,58,15,216,4
> > > > > >
> > > > > > +DB      15,56,204,252
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((144-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm5
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,216
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((144-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm10,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm9
> > > > > >
> > > > > > +DB      15,56,205,245
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm6
> > > > > >
> > > > > > +DB      102,15,58,15,221,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm7,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +DB      102,65,15,58,15,217,4
> > > > > >
> > > > > > +DB      15,56,204,229
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((160-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm6
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,193
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((160-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm10
> > > > > >
> > > > > > +DB      15,56,205,254
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm7
> > > > > >
> > > > > > +DB      102,15,58,15,222,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,218
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm4,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm11
> > > > > >
> > > > > > +DB      102,65,15,58,15,218,4
> > > > > >
> > > > > > +DB      15,56,204,238
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((176-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm7
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,202
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((176-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm8,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm11
> > > > > >
> > > > > > +DB      15,56,205,231
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm4
> > > > > >
> > > > > > +DB      102,15,58,15,223,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,195
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm5,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm8
> > > > > >
> > > > > > +DB      102,65,15,58,15,219,4
> > > > > >
> > > > > > +DB      15,56,204,247
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((192-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm4
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,211
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((192-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm9,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm8
> > > > > >
> > > > > > +DB      15,56,205,236
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm5
> > > > > >
> > > > > > +DB      102,15,58,15,220,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,200
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm6,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm9
> > > > > >
> > > > > > +DB      102,65,15,58,15,216,4
> > > > > >
> > > > > > +DB      15,56,204,252
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((208-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm5
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +DB      69,15,56,204,216
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((208-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm10,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm9
> > > > > >
> > > > > > +DB      15,56,205,245
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        movdqa  xmm3,xmm6
> > > > > >
> > > > > > +DB      102,15,58,15,221,4
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        paddd   xmm7,xmm3
> > > > > >
> > > > > > +        movdqa  xmm3,xmm10
> > > > > >
> > > > > > +DB      102,65,15,58,15,217,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((224-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm6
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((224-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm11,xmm3
> > > > > >
> > > > > > +        paddd   xmm2,xmm10
> > > > > >
> > > > > > +DB      15,56,205,254
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        mov     ecx,1
> > > > > >
> > > > > > +        pxor    xmm6,xmm6
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +DB      69,15,56,205,218
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        movdqa  xmm1,XMMWORD[((240-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm1,xmm7
> > > > > >
> > > > > > +        movq    xmm7,QWORD[rbx]
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        movdqa  xmm2,XMMWORD[((240-128))+rbp]
> > > > > >
> > > > > > +        paddd   xmm2,xmm11
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,xmm1
> > > > > >
> > > > > > +        cmp     ecx,DWORD[rbx]
> > > > > >
> > > > > > +        cmovge  r8,rsp
> > > > > >
> > > > > > +        cmp     ecx,DWORD[4+rbx]
> > > > > >
> > > > > > +        cmovge  r9,rsp
> > > > > >
> > > > > > +        pshufd  xmm9,xmm7,0x00
> > > > > >
> > > > > > +DB      69,15,56,203,236
> > > > > >
> > > > > > +        movdqa  xmm0,xmm2
> > > > > >
> > > > > > +        pshufd  xmm10,xmm7,0x55
> > > > > >
> > > > > > +        movdqa  xmm11,xmm7
> > > > > >
> > > > > > +DB      69,15,56,203,254
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x0e
> > > > > >
> > > > > > +        pcmpgtd xmm9,xmm6
> > > > > >
> > > > > > +        pcmpgtd xmm10,xmm6
> > > > > >
> > > > > > +DB      69,15,56,203,229
> > > > > >
> > > > > > +        pshufd  xmm0,xmm2,0x0e
> > > > > >
> > > > > > +        pcmpgtd xmm11,xmm6
> > > > > >
> > > > > > +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
> > > > > >
> > > > > > +DB      69,15,56,203,247
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pand    xmm13,xmm9
> > > > > >
> > > > > > +        pand    xmm15,xmm10
> > > > > >
> > > > > > +        pand    xmm12,xmm9
> > > > > >
> > > > > > +        pand    xmm14,xmm10
> > > > > >
> > > > > > +        paddd   xmm11,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm13,XMMWORD[80+rsp]
> > > > > >
> > > > > > +        paddd   xmm15,XMMWORD[112+rsp]
> > > > > >
> > > > > > +        paddd   xmm12,XMMWORD[64+rsp]
> > > > > >
> > > > > > +        paddd   xmm14,XMMWORD[96+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movq    QWORD[rbx],xmm11
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edx,DWORD[280+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm12,xmm12,27
> > > > > >
> > > > > > +        pshufd  xmm13,xmm13,27
> > > > > >
> > > > > > +        pshufd  xmm14,xmm14,27
> > > > > >
> > > > > > +        pshufd  xmm15,xmm15,27
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm5,xmm12
> > > > > >
> > > > > > +        movdqa  xmm6,xmm13
> > > > > >
> > > > > > +        punpckldq       xmm12,xmm14
> > > > > >
> > > > > > +        punpckhdq       xmm5,xmm14
> > > > > >
> > > > > > +        punpckldq       xmm13,xmm15
> > > > > >
> > > > > > +        punpckhdq       xmm6,xmm15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movq    QWORD[(0-128)+rdi],xmm12
> > > > > >
> > > > > > +        psrldq  xmm12,8
> > > > > >
> > > > > > +        movq    QWORD[(128-128)+rdi],xmm5
> > > > > >
> > > > > > +        psrldq  xmm5,8
> > > > > >
> > > > > > +        movq    QWORD[(32-128)+rdi],xmm12
> > > > > >
> > > > > > +        movq    QWORD[(160-128)+rdi],xmm5
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movq    QWORD[(64-128)+rdi],xmm13
> > > > > >
> > > > > > +        psrldq  xmm13,8
> > > > > >
> > > > > > +        movq    QWORD[(192-128)+rdi],xmm6
> > > > > >
> > > > > > +        psrldq  xmm6,8
> > > > > >
> > > > > > +        movq    QWORD[(96-128)+rdi],xmm13
> > > > > >
> > > > > > +        movq    QWORD[(224-128)+rdi],xmm6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rdi,[8+rdi]
> > > > > >
> > > > > > +        lea     rsi,[32+rsi]
> > > > > >
> > > > > > +        dec     edx
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_grande_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$done_shaext:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-184))+rax]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-168))+rax]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-152))+rax]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-136))+rax]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-120))+rax]
> > > > > >
> > > > > > +        movaps  xmm11,XMMWORD[((-104))+rax]
> > > > > >
> > > > > > +        movaps  xmm12,XMMWORD[((-88))+rax]
> > > > > >
> > > > > > +        movaps  xmm13,XMMWORD[((-72))+rax]
> > > > > >
> > > > > > +        movaps  xmm14,XMMWORD[((-56))+rax]
> > > > > >
> > > > > > +        movaps  xmm15,XMMWORD[((-40))+rax]
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$epilogue_shaext:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_sha256_multi_block_shaext:
> > > > > >
> > > > > > +ALIGN   256
> > > > > >
> > > > > > +K256:
> > > > > >
> > > > > > +        DD      1116352408,1116352408,1116352408,1116352408
> > > > > >
> > > > > > +        DD      1116352408,1116352408,1116352408,1116352408
> > > > > >
> > > > > > +        DD      1899447441,1899447441,1899447441,1899447441
> > > > > >
> > > > > > +        DD      1899447441,1899447441,1899447441,1899447441
> > > > > >
> > > > > > +        DD      3049323471,3049323471,3049323471,3049323471
> > > > > >
> > > > > > +        DD      3049323471,3049323471,3049323471,3049323471
> > > > > >
> > > > > > +        DD      3921009573,3921009573,3921009573,3921009573
> > > > > >
> > > > > > +        DD      3921009573,3921009573,3921009573,3921009573
> > > > > >
> > > > > > +        DD      961987163,961987163,961987163,961987163
> > > > > >
> > > > > > +        DD      961987163,961987163,961987163,961987163
> > > > > >
> > > > > > +        DD      1508970993,1508970993,1508970993,1508970993
> > > > > >
> > > > > > +        DD      1508970993,1508970993,1508970993,1508970993
> > > > > >
> > > > > > +        DD      2453635748,2453635748,2453635748,2453635748
> > > > > >
> > > > > > +        DD      2453635748,2453635748,2453635748,2453635748
> > > > > >
> > > > > > +        DD      2870763221,2870763221,2870763221,2870763221
> > > > > >
> > > > > > +        DD      2870763221,2870763221,2870763221,2870763221
> > > > > >
> > > > > > +        DD      3624381080,3624381080,3624381080,3624381080
> > > > > >
> > > > > > +        DD      3624381080,3624381080,3624381080,3624381080
> > > > > >
> > > > > > +        DD      310598401,310598401,310598401,310598401
> > > > > >
> > > > > > +        DD      310598401,310598401,310598401,310598401
> > > > > >
> > > > > > +        DD      607225278,607225278,607225278,607225278
> > > > > >
> > > > > > +        DD      607225278,607225278,607225278,607225278
> > > > > >
> > > > > > +        DD      1426881987,1426881987,1426881987,1426881987
> > > > > >
> > > > > > +        DD      1426881987,1426881987,1426881987,1426881987
> > > > > >
> > > > > > +        DD      1925078388,1925078388,1925078388,1925078388
> > > > > >
> > > > > > +        DD      1925078388,1925078388,1925078388,1925078388
> > > > > >
> > > > > > +        DD      2162078206,2162078206,2162078206,2162078206
> > > > > >
> > > > > > +        DD      2162078206,2162078206,2162078206,2162078206
> > > > > >
> > > > > > +        DD      2614888103,2614888103,2614888103,2614888103
> > > > > >
> > > > > > +        DD      2614888103,2614888103,2614888103,2614888103
> > > > > >
> > > > > > +        DD      3248222580,3248222580,3248222580,3248222580
> > > > > >
> > > > > > +        DD      3248222580,3248222580,3248222580,3248222580
> > > > > >
> > > > > > +        DD      3835390401,3835390401,3835390401,3835390401
> > > > > >
> > > > > > +        DD      3835390401,3835390401,3835390401,3835390401
> > > > > >
> > > > > > +        DD      4022224774,4022224774,4022224774,4022224774
> > > > > >
> > > > > > +        DD      4022224774,4022224774,4022224774,4022224774
> > > > > >
> > > > > > +        DD      264347078,264347078,264347078,264347078
> > > > > >
> > > > > > +        DD      264347078,264347078,264347078,264347078
> > > > > >
> > > > > > +        DD      604807628,604807628,604807628,604807628
> > > > > >
> > > > > > +        DD      604807628,604807628,604807628,604807628
> > > > > >
> > > > > > +        DD      770255983,770255983,770255983,770255983
> > > > > >
> > > > > > +        DD      770255983,770255983,770255983,770255983
> > > > > >
> > > > > > +        DD      1249150122,1249150122,1249150122,1249150122
> > > > > >
> > > > > > +        DD      1249150122,1249150122,1249150122,1249150122
> > > > > >
> > > > > > +        DD      1555081692,1555081692,1555081692,1555081692
> > > > > >
> > > > > > +        DD      1555081692,1555081692,1555081692,1555081692
> > > > > >
> > > > > > +        DD      1996064986,1996064986,1996064986,1996064986
> > > > > >
> > > > > > +        DD      1996064986,1996064986,1996064986,1996064986
> > > > > >
> > > > > > +        DD      2554220882,2554220882,2554220882,2554220882
> > > > > >
> > > > > > +        DD      2554220882,2554220882,2554220882,2554220882
> > > > > >
> > > > > > +        DD      2821834349,2821834349,2821834349,2821834349
> > > > > >
> > > > > > +        DD      2821834349,2821834349,2821834349,2821834349
> > > > > >
> > > > > > +        DD      2952996808,2952996808,2952996808,2952996808
> > > > > >
> > > > > > +        DD      2952996808,2952996808,2952996808,2952996808
> > > > > >
> > > > > > +        DD      3210313671,3210313671,3210313671,3210313671
> > > > > >
> > > > > > +        DD      3210313671,3210313671,3210313671,3210313671
> > > > > >
> > > > > > +        DD      3336571891,3336571891,3336571891,3336571891
> > > > > >
> > > > > > +        DD      3336571891,3336571891,3336571891,3336571891
> > > > > >
> > > > > > +        DD      3584528711,3584528711,3584528711,3584528711
> > > > > >
> > > > > > +        DD      3584528711,3584528711,3584528711,3584528711
> > > > > >
> > > > > > +        DD      113926993,113926993,113926993,113926993
> > > > > >
> > > > > > +        DD      113926993,113926993,113926993,113926993
> > > > > >
> > > > > > +        DD      338241895,338241895,338241895,338241895
> > > > > >
> > > > > > +        DD      338241895,338241895,338241895,338241895
> > > > > >
> > > > > > +        DD      666307205,666307205,666307205,666307205
> > > > > >
> > > > > > +        DD      666307205,666307205,666307205,666307205
> > > > > >
> > > > > > +        DD      773529912,773529912,773529912,773529912
> > > > > >
> > > > > > +        DD      773529912,773529912,773529912,773529912
> > > > > >
> > > > > > +        DD      1294757372,1294757372,1294757372,1294757372
> > > > > >
> > > > > > +        DD      1294757372,1294757372,1294757372,1294757372
> > > > > >
> > > > > > +        DD      1396182291,1396182291,1396182291,1396182291
> > > > > >
> > > > > > +        DD      1396182291,1396182291,1396182291,1396182291
> > > > > >
> > > > > > +        DD      1695183700,1695183700,1695183700,1695183700
> > > > > >
> > > > > > +        DD      1695183700,1695183700,1695183700,1695183700
> > > > > >
> > > > > > +        DD      1986661051,1986661051,1986661051,1986661051
> > > > > >
> > > > > > +        DD      1986661051,1986661051,1986661051,1986661051
> > > > > >
> > > > > > +        DD      2177026350,2177026350,2177026350,2177026350
> > > > > >
> > > > > > +        DD      2177026350,2177026350,2177026350,2177026350
> > > > > >
> > > > > > +        DD      2456956037,2456956037,2456956037,2456956037
> > > > > >
> > > > > > +        DD      2456956037,2456956037,2456956037,2456956037
> > > > > >
> > > > > > +        DD      2730485921,2730485921,2730485921,2730485921
> > > > > >
> > > > > > +        DD      2730485921,2730485921,2730485921,2730485921
> > > > > >
> > > > > > +        DD      2820302411,2820302411,2820302411,2820302411
> > > > > >
> > > > > > +        DD      2820302411,2820302411,2820302411,2820302411
> > > > > >
> > > > > > +        DD      3259730800,3259730800,3259730800,3259730800
> > > > > >
> > > > > > +        DD      3259730800,3259730800,3259730800,3259730800
> > > > > >
> > > > > > +        DD      3345764771,3345764771,3345764771,3345764771
> > > > > >
> > > > > > +        DD      3345764771,3345764771,3345764771,3345764771
> > > > > >
> > > > > > +        DD      3516065817,3516065817,3516065817,3516065817
> > > > > >
> > > > > > +        DD      3516065817,3516065817,3516065817,3516065817
> > > > > >
> > > > > > +        DD      3600352804,3600352804,3600352804,3600352804
> > > > > >
> > > > > > +        DD      3600352804,3600352804,3600352804,3600352804
> > > > > >
> > > > > > +        DD      4094571909,4094571909,4094571909,4094571909
> > > > > >
> > > > > > +        DD      4094571909,4094571909,4094571909,4094571909
> > > > > >
> > > > > > +        DD      275423344,275423344,275423344,275423344
> > > > > >
> > > > > > +        DD      275423344,275423344,275423344,275423344
> > > > > >
> > > > > > +        DD      430227734,430227734,430227734,430227734
> > > > > >
> > > > > > +        DD      430227734,430227734,430227734,430227734
> > > > > >
> > > > > > +        DD      506948616,506948616,506948616,506948616
> > > > > >
> > > > > > +        DD      506948616,506948616,506948616,506948616
> > > > > >
> > > > > > +        DD      659060556,659060556,659060556,659060556
> > > > > >
> > > > > > +        DD      659060556,659060556,659060556,659060556
> > > > > >
> > > > > > +        DD      883997877,883997877,883997877,883997877
> > > > > >
> > > > > > +        DD      883997877,883997877,883997877,883997877
> > > > > >
> > > > > > +        DD      958139571,958139571,958139571,958139571
> > > > > >
> > > > > > +        DD      958139571,958139571,958139571,958139571
> > > > > >
> > > > > > +        DD      1322822218,1322822218,1322822218,1322822218
> > > > > >
> > > > > > +        DD      1322822218,1322822218,1322822218,1322822218
> > > > > >
> > > > > > +        DD      1537002063,1537002063,1537002063,1537002063
> > > > > >
> > > > > > +        DD      1537002063,1537002063,1537002063,1537002063
> > > > > >
> > > > > > +        DD      1747873779,1747873779,1747873779,1747873779
> > > > > >
> > > > > > +        DD      1747873779,1747873779,1747873779,1747873779
> > > > > >
> > > > > > +        DD      1955562222,1955562222,1955562222,1955562222
> > > > > >
> > > > > > +        DD      1955562222,1955562222,1955562222,1955562222
> > > > > >
> > > > > > +        DD      2024104815,2024104815,2024104815,2024104815
> > > > > >
> > > > > > +        DD      2024104815,2024104815,2024104815,2024104815
> > > > > >
> > > > > > +        DD      2227730452,2227730452,2227730452,2227730452
> > > > > >
> > > > > > +        DD      2227730452,2227730452,2227730452,2227730452
> > > > > >
> > > > > > +        DD      2361852424,2361852424,2361852424,2361852424
> > > > > >
> > > > > > +        DD      2361852424,2361852424,2361852424,2361852424
> > > > > >
> > > > > > +        DD      2428436474,2428436474,2428436474,2428436474
> > > > > >
> > > > > > +        DD      2428436474,2428436474,2428436474,2428436474
> > > > > >
> > > > > > +        DD      2756734187,2756734187,2756734187,2756734187
> > > > > >
> > > > > > +        DD      2756734187,2756734187,2756734187,2756734187
> > > > > >
> > > > > > +        DD      3204031479,3204031479,3204031479,3204031479
> > > > > >
> > > > > > +        DD      3204031479,3204031479,3204031479,3204031479
> > > > > >
> > > > > > +        DD      3329325298,3329325298,3329325298,3329325298
> > > > > >
> > > > > > +        DD      3329325298,3329325298,3329325298,3329325298
> > > > > >
> > > > > > +$L$pbswap:
> > > > > >
> > > > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > > >
> > > > > > +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > > > > >
> > > > > > +K256_shaext:
> > > > > >
> > > > > > +        DD      0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
> > > > > >
> > > > > > +        DD      0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
> > > > > >
> > > > > > +        DD      0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
> > > > > >
> > > > > > +        DD      0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
> > > > > >
> > > > > > +        DD      0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
> > > > > >
> > > > > > +        DD      0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
> > > > > >
> > > > > > +        DD      0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
> > > > > >
> > > > > > +        DD      0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
> > > > > >
> > > > > > +        DD      0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
> > > > > >
> > > > > > +        DD      0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
> > > > > >
> > > > > > +        DD      0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
> > > > > >
> > > > > > +        DD      0xd192e819,0xd6990624,0xf40e3585,0x106aa070
> > > > > >
> > > > > > +        DD      0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
> > > > > >
> > > > > > +        DD      0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
> > > > > >
> > > > > > +        DD      0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
> > > > > >
> > > > > > +        DD      0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
> > > > > >
> > > > > > +DB      83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111
> > > > > >
> > > > > > +DB
> 99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114
> > > > > >
> > > > > > +DB      32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71
> > > > > >
> > > > > > +DB      65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112
> > > > > >
> > > > > > +DB      101,110,115,115,108,46,111,114,103,62,0
> > > > > >
> > > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[272+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rbx,QWORD[((-8))+rax]
> > > > > >
> > > > > > +        mov     rbp,QWORD[((-16))+rax]
> > > > > >
> > > > > > +        mov     QWORD[144+r8],rbx
> > > > > >
> > > > > > +        mov     QWORD[160+r8],rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((-24-160))+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,20
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .pdata rdata align=4
> > > > > >
> > > > > > +ALIGN   4
> > > > > >
> > > > > > +        DD      $L$SEH_begin_sha256_multi_block wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_sha256_multi_block wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_sha256_multi_block wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_begin_sha256_multi_block_shaext wrt
> ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_sha256_multi_block_shaext wrt
> ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_sha256_multi_block_shaext wrt
> ..imagebase
> > > > > >
> > > > > > +section .xdata rdata align=8
> > > > > >
> > > > > > +ALIGN   8
> > > > > >
> > > > > > +$L$SEH_info_sha256_multi_block:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$body wrt ..imagebase,$L$epilogue wrt
> ..imagebase
> > > > > >
> > > > > > +$L$SEH_info_sha256_multi_block_shaext:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      se_handler wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
> > > > > > wrt ..imagebase
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
> > > > x86_64.nasm
> > > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..70e49862a3
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
> x86_64.nasm
> > > > > > @@ -0,0 +1,3313 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not
> use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain
> a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +global  sha256_block_data_order
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r11,[OPENSSL_ia32cap_P]
> > > > > >
> > > > > > +        mov     r9d,DWORD[r11]
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        mov     r11d,DWORD[8+r11]
> > > > > >
> > > > > > +        test    r11d,536870912
> > > > > >
> > > > > > +        jnz     NEAR _shaext_shortcut
> > > > > >
> > > > > > +        test    r10d,512
> > > > > >
> > > > > > +        jnz     NEAR $L$ssse3_shortcut
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        shl     rdx,4
> > > > > >
> > > > > > +        sub     rsp,16*4+4*8
> > > > > >
> > > > > > +        lea     rdx,[rdx*4+rsi]
> > > > > >
> > > > > > +        and     rsp,-64
> > > > > >
> > > > > > +        mov     QWORD[((64+0))+rsp],rdi
> > > > > >
> > > > > > +        mov     QWORD[((64+8))+rsp],rsi
> > > > > >
> > > > > > +        mov     QWORD[((64+16))+rsp],rdx
> > > > > >
> > > > > > +        mov     QWORD[88+rsp],rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$prologue:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        lea     rbp,[K256]
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        mov     r12d,DWORD[rsi]
> > > > > >
> > > > > > +        mov     r13d,r8d
> > > > > >
> > > > > > +        mov     r14d,eax
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        and     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r11d
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,eax
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,ebx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r11d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r11d,edi
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     r11d,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[4+rsi]
> > > > > >
> > > > > > +        mov     r13d,edx
> > > > > >
> > > > > > +        mov     r14d,r11d
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[4+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r10d
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,r11d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r10d,r15d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     r10d,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[8+rsi]
> > > > > >
> > > > > > +        mov     r13d,ecx
> > > > > >
> > > > > > +        mov     r14d,r10d
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[8+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        and     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r9d
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,r10d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,r11d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r9d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r9d,edi
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     r9d,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[12+rsi]
> > > > > >
> > > > > > +        mov     r13d,ebx
> > > > > >
> > > > > > +        mov     r14d,r9d
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[12+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r8d
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,r9d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,r10d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r8d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r8d,r15d
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[20+rbp]
> > > > > >
> > > > > > +        add     r8d,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[16+rsi]
> > > > > >
> > > > > > +        mov     r13d,eax
> > > > > >
> > > > > > +        mov     r14d,r8d
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[16+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        and     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,edx
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,r8d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,r9d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     edx,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edx,edi
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     edx,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[20+rsi]
> > > > > >
> > > > > > +        mov     r13d,r11d
> > > > > >
> > > > > > +        mov     r14d,edx
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[20+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        and     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,r8d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     ecx,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     ecx,r15d
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     ecx,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[24+rsi]
> > > > > >
> > > > > > +        mov     r13d,r10d
> > > > > >
> > > > > > +        mov     r14d,ecx
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[24+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        and     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,ebx
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,ecx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,edx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     ebx,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     ebx,edi
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     ebx,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[28+rsi]
> > > > > >
> > > > > > +        mov     r13d,r9d
> > > > > >
> > > > > > +        mov     r14d,ebx
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[28+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        and     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     eax,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     eax,r15d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[20+rbp]
> > > > > >
> > > > > > +        add     eax,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[32+rsi]
> > > > > >
> > > > > > +        mov     r13d,r8d
> > > > > >
> > > > > > +        mov     r14d,eax
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[32+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        and     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r11d
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,eax
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,ebx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r11d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r11d,edi
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     r11d,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[36+rsi]
> > > > > >
> > > > > > +        mov     r13d,edx
> > > > > >
> > > > > > +        mov     r14d,r11d
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[36+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r10d
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,r11d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r10d,r15d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     r10d,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[40+rsi]
> > > > > >
> > > > > > +        mov     r13d,ecx
> > > > > >
> > > > > > +        mov     r14d,r10d
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[40+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        and     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r9d
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,r10d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,r11d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r9d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r9d,edi
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     r9d,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[44+rsi]
> > > > > >
> > > > > > +        mov     r13d,ebx
> > > > > >
> > > > > > +        mov     r14d,r9d
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[44+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r8d
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,r9d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,r10d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r8d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r8d,r15d
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[20+rbp]
> > > > > >
> > > > > > +        add     r8d,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[48+rsi]
> > > > > >
> > > > > > +        mov     r13d,eax
> > > > > >
> > > > > > +        mov     r14d,r8d
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[48+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        and     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,edx
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,r8d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,r9d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     edx,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edx,edi
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     edx,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[52+rsi]
> > > > > >
> > > > > > +        mov     r13d,r11d
> > > > > >
> > > > > > +        mov     r14d,edx
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[52+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        and     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,r8d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     ecx,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     ecx,r15d
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     ecx,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[56+rsi]
> > > > > >
> > > > > > +        mov     r13d,r10d
> > > > > >
> > > > > > +        mov     r14d,ecx
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[56+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        and     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,ebx
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,ecx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,edx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     ebx,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     ebx,edi
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        add     ebx,r14d
> > > > > >
> > > > > > +        mov     r12d,DWORD[60+rsi]
> > > > > >
> > > > > > +        mov     r13d,r9d
> > > > > >
> > > > > > +        mov     r14d,ebx
> > > > > >
> > > > > > +        bswap   r12d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[60+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        and     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     eax,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     eax,r15d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[20+rbp]
> > > > > >
> > > > > > +        jmp     NEAR $L$rounds_16_xx
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$rounds_16_xx:
> > > > > >
> > > > > > +        mov     r13d,DWORD[4+rsp]
> > > > > >
> > > > > > +        mov     r15d,DWORD[56+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     eax,r14d
> > > > > >
> > > > > > +        mov     r14d,r15d
> > > > > >
> > > > > > +        ror     r15d,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15d,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[36+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[rsp]
> > > > > >
> > > > > > +        mov     r13d,r8d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +        mov     r14d,eax
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        and     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r11d
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,eax
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,ebx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r11d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r11d,edi
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[8+rsp]
> > > > > >
> > > > > > +        mov     edi,DWORD[60+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     r11d,r14d
> > > > > >
> > > > > > +        mov     r14d,edi
> > > > > >
> > > > > > +        ror     edi,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     edi,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[40+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[4+rsp]
> > > > > >
> > > > > > +        mov     r13d,edx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +        mov     r14d,r11d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[4+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r10d
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,r11d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r10d,r15d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[12+rsp]
> > > > > >
> > > > > > +        mov     r15d,DWORD[rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     r10d,r14d
> > > > > >
> > > > > > +        mov     r14d,r15d
> > > > > >
> > > > > > +        ror     r15d,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15d,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[44+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[8+rsp]
> > > > > >
> > > > > > +        mov     r13d,ecx
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +        mov     r14d,r10d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[8+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        and     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r9d
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,r10d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,r11d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r9d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r9d,edi
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[16+rsp]
> > > > > >
> > > > > > +        mov     edi,DWORD[4+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     r9d,r14d
> > > > > >
> > > > > > +        mov     r14d,edi
> > > > > >
> > > > > > +        ror     edi,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     edi,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[12+rsp]
> > > > > >
> > > > > > +        mov     r13d,ebx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +        mov     r14d,r9d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[12+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r8d
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,r9d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,r10d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r8d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r8d,r15d
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[20+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[20+rsp]
> > > > > >
> > > > > > +        mov     r15d,DWORD[8+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     r8d,r14d
> > > > > >
> > > > > > +        mov     r14d,r15d
> > > > > >
> > > > > > +        ror     r15d,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15d,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[52+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[16+rsp]
> > > > > >
> > > > > > +        mov     r13d,eax
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +        mov     r14d,r8d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[16+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        and     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,edx
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,r8d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,r9d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     edx,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edx,edi
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[24+rsp]
> > > > > >
> > > > > > +        mov     edi,DWORD[12+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     edx,r14d
> > > > > >
> > > > > > +        mov     r14d,edi
> > > > > >
> > > > > > +        ror     edi,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     edi,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[56+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[20+rsp]
> > > > > >
> > > > > > +        mov     r13d,r11d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +        mov     r14d,edx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[20+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        and     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,r8d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     ecx,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     ecx,r15d
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[28+rsp]
> > > > > >
> > > > > > +        mov     r15d,DWORD[16+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     ecx,r14d
> > > > > >
> > > > > > +        mov     r14d,r15d
> > > > > >
> > > > > > +        ror     r15d,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15d,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[60+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[24+rsp]
> > > > > >
> > > > > > +        mov     r13d,r10d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +        mov     r14d,ecx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[24+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        and     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,ebx
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,ecx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,edx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     ebx,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     ebx,edi
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[32+rsp]
> > > > > >
> > > > > > +        mov     edi,DWORD[20+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     ebx,r14d
> > > > > >
> > > > > > +        mov     r14d,edi
> > > > > >
> > > > > > +        ror     edi,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     edi,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[28+rsp]
> > > > > >
> > > > > > +        mov     r13d,r9d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +        mov     r14d,ebx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[28+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        and     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     eax,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     eax,r15d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[20+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[36+rsp]
> > > > > >
> > > > > > +        mov     r15d,DWORD[24+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     eax,r14d
> > > > > >
> > > > > > +        mov     r14d,r15d
> > > > > >
> > > > > > +        ror     r15d,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15d,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[4+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[32+rsp]
> > > > > >
> > > > > > +        mov     r13d,r8d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +        mov     r14d,eax
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[32+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        and     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r11d
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,eax
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,ebx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r11d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r11d,edi
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[40+rsp]
> > > > > >
> > > > > > +        mov     edi,DWORD[28+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     r11d,r14d
> > > > > >
> > > > > > +        mov     r14d,edi
> > > > > >
> > > > > > +        ror     edi,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     edi,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[8+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[36+rsp]
> > > > > >
> > > > > > +        mov     r13d,edx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +        mov     r14d,r11d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[36+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        and     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r10d
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,r11d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r10d,r15d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[44+rsp]
> > > > > >
> > > > > > +        mov     r15d,DWORD[32+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     r10d,r14d
> > > > > >
> > > > > > +        mov     r14d,r15d
> > > > > >
> > > > > > +        ror     r15d,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15d,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[12+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r13d,ecx
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +        mov     r14d,r10d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[40+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        and     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r9d
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,r10d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,r11d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r9d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r9d,edi
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[48+rsp]
> > > > > >
> > > > > > +        mov     edi,DWORD[36+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     r9d,r14d
> > > > > >
> > > > > > +        mov     r14d,edi
> > > > > >
> > > > > > +        ror     edi,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     edi,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[16+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[44+rsp]
> > > > > >
> > > > > > +        mov     r13d,ebx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +        mov     r14d,r9d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[44+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        and     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,r8d
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,r9d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,r10d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     r8d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r8d,r15d
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[20+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[52+rsp]
> > > > > >
> > > > > > +        mov     r15d,DWORD[40+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     r8d,r14d
> > > > > >
> > > > > > +        mov     r14d,r15d
> > > > > >
> > > > > > +        ror     r15d,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15d,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[20+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[48+rsp]
> > > > > >
> > > > > > +        mov     r13d,eax
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +        mov     r14d,r8d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[48+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        and     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,edx
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,r8d
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,r9d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     edx,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edx,edi
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[56+rsp]
> > > > > >
> > > > > > +        mov     edi,DWORD[44+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     edx,r14d
> > > > > >
> > > > > > +        mov     r14d,edi
> > > > > >
> > > > > > +        ror     edi,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     edi,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[24+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[52+rsp]
> > > > > >
> > > > > > +        mov     r13d,r11d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +        mov     r14d,edx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[52+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        and     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,ecx
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,r8d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     ecx,r8d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     ecx,r15d
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[60+rsp]
> > > > > >
> > > > > > +        mov     r15d,DWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     ecx,r14d
> > > > > >
> > > > > > +        mov     r14d,r15d
> > > > > >
> > > > > > +        ror     r15d,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15d,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     r15d,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[28+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[56+rsp]
> > > > > >
> > > > > > +        mov     r13d,r10d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +        mov     r14d,ecx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r15d,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[56+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        and     r15d,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,ebx
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        add     r12d,r15d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15d,ecx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15d,edx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     ebx,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     ebx,edi
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[4+rbp]
> > > > > >
> > > > > > +        mov     r13d,DWORD[rsp]
> > > > > >
> > > > > > +        mov     edi,DWORD[52+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12d,r13d
> > > > > >
> > > > > > +        ror     r13d,11
> > > > > >
> > > > > > +        add     ebx,r14d
> > > > > >
> > > > > > +        mov     r14d,edi
> > > > > >
> > > > > > +        ror     edi,2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r12d
> > > > > >
> > > > > > +        shr     r12d,3
> > > > > >
> > > > > > +        ror     r13d,7
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        shr     r14d,10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     edi,17
> > > > > >
> > > > > > +        xor     r12d,r13d
> > > > > >
> > > > > > +        xor     edi,r14d
> > > > > >
> > > > > > +        add     r12d,DWORD[32+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12d,DWORD[60+rsp]
> > > > > >
> > > > > > +        mov     r13d,r9d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +        mov     r14d,ebx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edi,r10d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     DWORD[60+rsp],r12d
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        and     edi,r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        add     r12d,eax
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        add     r12d,edi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        add     r12d,DWORD[rbp]
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        mov     eax,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r12d,r13d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     eax,r15d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[20+rbp]
> > > > > >
> > > > > > +        cmp     BYTE[3+rbp],0
> > > > > >
> > > > > > +        jnz     NEAR $L$rounds_16_xx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,QWORD[((64+0))+rsp]
> > > > > >
> > > > > > +        add     eax,r14d
> > > > > >
> > > > > > +        lea     rsi,[64+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[((64+16))+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[88+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$epilogue:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_sha256_block_data_order:
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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      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
> > > > > >
> > > > > > +DB      32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
> > > > > >
> > > > > > +DB      111,114,103,62,0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +sha256_block_data_order_shaext:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_sha256_block_data_order_shaext:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +_shaext_shortcut:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsp,[((-88))+rsp]
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-80)+rax],xmm6
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-64)+rax],xmm7
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-48)+rax],xmm8
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-32)+rax],xmm9
> > > > > >
> > > > > > +        movaps  XMMWORD[(-8-16)+rax],xmm10
> > > > > >
> > > > > > +$L$prologue_shaext:
> > > > > >
> > > > > > +        lea     rcx,[((K256+128))]
> > > > > >
> > > > > > +        movdqu  xmm1,XMMWORD[rdi]
> > > > > >
> > > > > > +        movdqu  xmm2,XMMWORD[16+rdi]
> > > > > >
> > > > > > +        movdqa  xmm7,XMMWORD[((512-128))+rcx]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm0,xmm1,0x1b
> > > > > >
> > > > > > +        pshufd  xmm1,xmm1,0xb1
> > > > > >
> > > > > > +        pshufd  xmm2,xmm2,0x1b
> > > > > >
> > > > > > +        movdqa  xmm8,xmm7
> > > > > >
> > > > > > +DB      102,15,58,15,202,8
> > > > > >
> > > > > > +        punpcklqdq      xmm2,xmm0
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$oop_shaext:
> > > > > >
> > > > > > +        movdqu  xmm3,XMMWORD[rsi]
> > > > > >
> > > > > > +        movdqu  xmm4,XMMWORD[16+rsi]
> > > > > >
> > > > > > +        movdqu  xmm5,XMMWORD[32+rsi]
> > > > > >
> > > > > > +DB      102,15,56,0,223
> > > > > >
> > > > > > +        movdqu  xmm6,XMMWORD[48+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((0-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm3
> > > > > >
> > > > > > +DB      102,15,56,0,231
> > > > > >
> > > > > > +        movdqa  xmm10,xmm2
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        movdqa  xmm9,xmm1
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((32-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm4
> > > > > >
> > > > > > +DB      102,15,56,0,239
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        lea     rsi,[64+rsi]
> > > > > >
> > > > > > +DB      15,56,204,220
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((64-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm5
> > > > > >
> > > > > > +DB      102,15,56,0,247
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +DB      102,15,58,15,253,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm3,xmm7
> > > > > >
> > > > > > +DB      15,56,204,229
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((96-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm6
> > > > > >
> > > > > > +DB      15,56,205,222
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm3
> > > > > >
> > > > > > +DB      102,15,58,15,254,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm4,xmm7
> > > > > >
> > > > > > +DB      15,56,204,238
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((128-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm3
> > > > > >
> > > > > > +DB      15,56,205,227
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm4
> > > > > >
> > > > > > +DB      102,15,58,15,251,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,204,243
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((160-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm4
> > > > > >
> > > > > > +DB      15,56,205,236
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +DB      102,15,58,15,252,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +DB      15,56,204,220
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((192-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm5
> > > > > >
> > > > > > +DB      15,56,205,245
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +DB      102,15,58,15,253,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm3,xmm7
> > > > > >
> > > > > > +DB      15,56,204,229
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((224-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm6
> > > > > >
> > > > > > +DB      15,56,205,222
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm3
> > > > > >
> > > > > > +DB      102,15,58,15,254,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm4,xmm7
> > > > > >
> > > > > > +DB      15,56,204,238
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((256-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm3
> > > > > >
> > > > > > +DB      15,56,205,227
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm4
> > > > > >
> > > > > > +DB      102,15,58,15,251,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,204,243
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((288-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm4
> > > > > >
> > > > > > +DB      15,56,205,236
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +DB      102,15,58,15,252,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +DB      15,56,204,220
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((320-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm5
> > > > > >
> > > > > > +DB      15,56,205,245
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm6
> > > > > >
> > > > > > +DB      102,15,58,15,253,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm3,xmm7
> > > > > >
> > > > > > +DB      15,56,204,229
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((352-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm6
> > > > > >
> > > > > > +DB      15,56,205,222
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm3
> > > > > >
> > > > > > +DB      102,15,58,15,254,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm4,xmm7
> > > > > >
> > > > > > +DB      15,56,204,238
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((384-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm3
> > > > > >
> > > > > > +DB      15,56,205,227
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm4
> > > > > >
> > > > > > +DB      102,15,58,15,251,4
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +        paddd   xmm5,xmm7
> > > > > >
> > > > > > +DB      15,56,204,243
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((416-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm4
> > > > > >
> > > > > > +DB      15,56,205,236
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        movdqa  xmm7,xmm5
> > > > > >
> > > > > > +DB      102,15,58,15,252,4
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +        paddd   xmm6,xmm7
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((448-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm5
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +DB      15,56,205,245
> > > > > >
> > > > > > +        movdqa  xmm7,xmm8
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqa  xmm0,XMMWORD[((480-128))+rcx]
> > > > > >
> > > > > > +        paddd   xmm0,xmm6
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      15,56,203,209
> > > > > >
> > > > > > +        pshufd  xmm0,xmm0,0x0e
> > > > > >
> > > > > > +        dec     rdx
> > > > > >
> > > > > > +        nop
> > > > > >
> > > > > > +DB      15,56,203,202
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        paddd   xmm2,xmm10
> > > > > >
> > > > > > +        paddd   xmm1,xmm9
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_shaext
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        pshufd  xmm2,xmm2,0xb1
> > > > > >
> > > > > > +        pshufd  xmm7,xmm1,0x1b
> > > > > >
> > > > > > +        pshufd  xmm1,xmm1,0xb1
> > > > > >
> > > > > > +        punpckhqdq      xmm1,xmm2
> > > > > >
> > > > > > +DB      102,15,58,15,215,8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        movdqu  XMMWORD[rdi],xmm1
> > > > > >
> > > > > > +        movdqu  XMMWORD[16+rdi],xmm2
> > > > > >
> > > > > > +        movaps  xmm6,XMMWORD[((-8-80))+rax]
> > > > > >
> > > > > > +        movaps  xmm7,XMMWORD[((-8-64))+rax]
> > > > > >
> > > > > > +        movaps  xmm8,XMMWORD[((-8-48))+rax]
> > > > > >
> > > > > > +        movaps  xmm9,XMMWORD[((-8-32))+rax]
> > > > > >
> > > > > > +        movaps  xmm10,XMMWORD[((-8-16))+rax]
> > > > > >
> > > > > > +        mov     rsp,rax
> > > > > >
> > > > > > +$L$epilogue_shaext:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_sha256_block_data_order_shaext:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$ssse3_shortcut:
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        shl     rdx,4
> > > > > >
> > > > > > +        sub     rsp,160
> > > > > >
> > > > > > +        lea     rdx,[rdx*4+rsi]
> > > > > >
> > > > > > +        and     rsp,-64
> > > > > >
> > > > > > +        mov     QWORD[((64+0))+rsp],rdi
> > > > > >
> > > > > > +        mov     QWORD[((64+8))+rsp],rsi
> > > > > >
> > > > > > +        mov     QWORD[((64+16))+rsp],rdx
> > > > > >
> > > > > > +        mov     QWORD[88+rsp],rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[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_ssse3
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$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[48+rsi]
> > > > > >
> > > > > > +        lea     rbp,[K256]
> > > > > >
> > > > > > +DB      102,15,56,0,207
> > > > > >
> > > > > > +        movdqa  xmm4,XMMWORD[rbp]
> > > > > >
> > > > > > +        movdqa  xmm5,XMMWORD[32+rbp]
> > > > > >
> > > > > > +DB      102,15,56,0,215
> > > > > >
> > > > > > +        paddd   xmm4,xmm0
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[64+rbp]
> > > > > >
> > > > > > +DB      102,15,56,0,223
> > > > > >
> > > > > > +        movdqa  xmm7,XMMWORD[96+rbp]
> > > > > >
> > > > > > +        paddd   xmm5,xmm1
> > > > > >
> > > > > > +        paddd   xmm6,xmm2
> > > > > >
> > > > > > +        paddd   xmm7,xmm3
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm4
> > > > > >
> > > > > > +        mov     r14d,eax
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm5
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        movdqa  XMMWORD[48+rsp],xmm7
> > > > > >
> > > > > > +        mov     r13d,r8d
> > > > > >
> > > > > > +        jmp     NEAR $L$ssse3_00_47
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ssse3_00_47:
> > > > > >
> > > > > > +        sub     rbp,-128
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        movdqa  xmm4,xmm1
> > > > > >
> > > > > > +        mov     eax,r14d
> > > > > >
> > > > > > +        mov     r12d,r9d
> > > > > >
> > > > > > +        movdqa  xmm7,xmm3
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        xor     r12d,r10d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +DB      102,15,58,15,224,4
> > > > > >
> > > > > > +        and     r12d,r8d
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +DB      102,15,58,15,250,4
> > > > > >
> > > > > > +        add     r11d,DWORD[rsp]
> > > > > >
> > > > > > +        mov     r15d,eax
> > > > > >
> > > > > > +        xor     r12d,r10d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        xor     r15d,ebx
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +        movdqa  xmm6,xmm4
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        psrld   xmm4,3
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        add     r11d,r13d
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        paddd   xmm0,xmm7
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     edx,r11d
> > > > > >
> > > > > > +        psrld   xmm6,7
> > > > > >
> > > > > > +        add     r11d,edi
> > > > > >
> > > > > > +        mov     r13d,edx
> > > > > >
> > > > > > +        pshufd  xmm7,xmm3,250
> > > > > >
> > > > > > +        add     r14d,r11d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        pslld   xmm5,14
> > > > > >
> > > > > > +        mov     r11d,r14d
> > > > > >
> > > > > > +        mov     r12d,r8d
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        xor     r12d,r9d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        psrld   xmm6,11
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        and     r12d,edx
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        pslld   xmm5,11
> > > > > >
> > > > > > +        add     r10d,DWORD[4+rsp]
> > > > > >
> > > > > > +        mov     edi,r11d
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +        xor     r12d,r9d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        psrld   xmm7,10
> > > > > >
> > > > > > +        add     r10d,r13d
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +        paddd   xmm0,xmm4
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     ecx,r10d
> > > > > >
> > > > > > +        psrlq   xmm6,17
> > > > > >
> > > > > > +        add     r10d,r15d
> > > > > >
> > > > > > +        mov     r13d,ecx
> > > > > >
> > > > > > +        add     r14d,r10d
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r10d,r14d
> > > > > >
> > > > > > +        mov     r12d,edx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        psrlq   xmm6,2
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        xor     r12d,r8d
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        and     r12d,ecx
> > > > > >
> > > > > > +        pshufd  xmm7,xmm7,128
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        add     r9d,DWORD[8+rsp]
> > > > > >
> > > > > > +        mov     r15d,r10d
> > > > > >
> > > > > > +        psrldq  xmm7,8
> > > > > >
> > > > > > +        xor     r12d,r8d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,r11d
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        paddd   xmm0,xmm7
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        add     r9d,r13d
> > > > > >
> > > > > > +        pshufd  xmm7,xmm0,80
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     ebx,r9d
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        add     r9d,edi
> > > > > >
> > > > > > +        mov     r13d,ebx
> > > > > >
> > > > > > +        psrld   xmm7,10
> > > > > >
> > > > > > +        add     r14d,r9d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        psrlq   xmm6,17
> > > > > >
> > > > > > +        mov     r9d,r14d
> > > > > >
> > > > > > +        mov     r12d,ecx
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        xor     r12d,edx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        psrlq   xmm6,2
> > > > > >
> > > > > > +        and     r12d,ebx
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        add     r8d,DWORD[12+rsp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        mov     edi,r9d
> > > > > >
> > > > > > +        xor     r12d,edx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        pshufd  xmm7,xmm7,8
> > > > > >
> > > > > > +        xor     edi,r10d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[rbp]
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        pslldq  xmm7,8
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        add     r8d,r13d
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +        paddd   xmm0,xmm7
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     eax,r8d
> > > > > >
> > > > > > +        add     r8d,r15d
> > > > > >
> > > > > > +        paddd   xmm6,xmm0
> > > > > >
> > > > > > +        mov     r13d,eax
> > > > > >
> > > > > > +        add     r14d,r8d
> > > > > >
> > > > > > +        movdqa  XMMWORD[rsp],xmm6
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        movdqa  xmm4,xmm2
> > > > > >
> > > > > > +        mov     r8d,r14d
> > > > > >
> > > > > > +        mov     r12d,ebx
> > > > > >
> > > > > > +        movdqa  xmm7,xmm0
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        xor     r12d,ecx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +DB      102,15,58,15,225,4
> > > > > >
> > > > > > +        and     r12d,eax
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +DB      102,15,58,15,251,4
> > > > > >
> > > > > > +        add     edx,DWORD[16+rsp]
> > > > > >
> > > > > > +        mov     r15d,r8d
> > > > > >
> > > > > > +        xor     r12d,ecx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        xor     r15d,r9d
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +        movdqa  xmm6,xmm4
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        psrld   xmm4,3
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        add     edx,r13d
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +        paddd   xmm1,xmm7
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r11d,edx
> > > > > >
> > > > > > +        psrld   xmm6,7
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        mov     r13d,r11d
> > > > > >
> > > > > > +        pshufd  xmm7,xmm0,250
> > > > > >
> > > > > > +        add     r14d,edx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        pslld   xmm5,14
> > > > > >
> > > > > > +        mov     edx,r14d
> > > > > >
> > > > > > +        mov     r12d,eax
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        xor     r12d,ebx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        psrld   xmm6,11
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        and     r12d,r11d
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        pslld   xmm5,11
> > > > > >
> > > > > > +        add     ecx,DWORD[20+rsp]
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +        xor     r12d,ebx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        xor     edi,r8d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        psrld   xmm7,10
> > > > > >
> > > > > > +        add     ecx,r13d
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +        paddd   xmm1,xmm4
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r10d,ecx
> > > > > >
> > > > > > +        psrlq   xmm6,17
> > > > > >
> > > > > > +        add     ecx,r15d
> > > > > >
> > > > > > +        mov     r13d,r10d
> > > > > >
> > > > > > +        add     r14d,ecx
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     ecx,r14d
> > > > > >
> > > > > > +        mov     r12d,r11d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        psrlq   xmm6,2
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        xor     r12d,eax
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        and     r12d,r10d
> > > > > >
> > > > > > +        pshufd  xmm7,xmm7,128
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        add     ebx,DWORD[24+rsp]
> > > > > >
> > > > > > +        mov     r15d,ecx
> > > > > >
> > > > > > +        psrldq  xmm7,8
> > > > > >
> > > > > > +        xor     r12d,eax
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,edx
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        paddd   xmm1,xmm7
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        add     ebx,r13d
> > > > > >
> > > > > > +        pshufd  xmm7,xmm1,80
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r9d,ebx
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        mov     r13d,r9d
> > > > > >
> > > > > > +        psrld   xmm7,10
> > > > > >
> > > > > > +        add     r14d,ebx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        psrlq   xmm6,17
> > > > > >
> > > > > > +        mov     ebx,r14d
> > > > > >
> > > > > > +        mov     r12d,r10d
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        xor     r12d,r11d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        psrlq   xmm6,2
> > > > > >
> > > > > > +        and     r12d,r9d
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        add     eax,DWORD[28+rsp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        xor     r12d,r11d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        pshufd  xmm7,xmm7,8
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[32+rbp]
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        pslldq  xmm7,8
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        add     eax,r13d
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +        paddd   xmm1,xmm7
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r8d,eax
> > > > > >
> > > > > > +        add     eax,r15d
> > > > > >
> > > > > > +        paddd   xmm6,xmm1
> > > > > >
> > > > > > +        mov     r13d,r8d
> > > > > >
> > > > > > +        add     r14d,eax
> > > > > >
> > > > > > +        movdqa  XMMWORD[16+rsp],xmm6
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        movdqa  xmm4,xmm3
> > > > > >
> > > > > > +        mov     eax,r14d
> > > > > >
> > > > > > +        mov     r12d,r9d
> > > > > >
> > > > > > +        movdqa  xmm7,xmm1
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        xor     r12d,r10d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +DB      102,15,58,15,226,4
> > > > > >
> > > > > > +        and     r12d,r8d
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +DB      102,15,58,15,248,4
> > > > > >
> > > > > > +        add     r11d,DWORD[32+rsp]
> > > > > >
> > > > > > +        mov     r15d,eax
> > > > > >
> > > > > > +        xor     r12d,r10d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        xor     r15d,ebx
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +        movdqa  xmm6,xmm4
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        psrld   xmm4,3
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        add     r11d,r13d
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        paddd   xmm2,xmm7
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     edx,r11d
> > > > > >
> > > > > > +        psrld   xmm6,7
> > > > > >
> > > > > > +        add     r11d,edi
> > > > > >
> > > > > > +        mov     r13d,edx
> > > > > >
> > > > > > +        pshufd  xmm7,xmm1,250
> > > > > >
> > > > > > +        add     r14d,r11d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        pslld   xmm5,14
> > > > > >
> > > > > > +        mov     r11d,r14d
> > > > > >
> > > > > > +        mov     r12d,r8d
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        xor     r12d,r9d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        psrld   xmm6,11
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        and     r12d,edx
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        pslld   xmm5,11
> > > > > >
> > > > > > +        add     r10d,DWORD[36+rsp]
> > > > > >
> > > > > > +        mov     edi,r11d
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +        xor     r12d,r9d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        psrld   xmm7,10
> > > > > >
> > > > > > +        add     r10d,r13d
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +        paddd   xmm2,xmm4
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     ecx,r10d
> > > > > >
> > > > > > +        psrlq   xmm6,17
> > > > > >
> > > > > > +        add     r10d,r15d
> > > > > >
> > > > > > +        mov     r13d,ecx
> > > > > >
> > > > > > +        add     r14d,r10d
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r10d,r14d
> > > > > >
> > > > > > +        mov     r12d,edx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        psrlq   xmm6,2
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        xor     r12d,r8d
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        and     r12d,ecx
> > > > > >
> > > > > > +        pshufd  xmm7,xmm7,128
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        add     r9d,DWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r15d,r10d
> > > > > >
> > > > > > +        psrldq  xmm7,8
> > > > > >
> > > > > > +        xor     r12d,r8d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,r11d
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        paddd   xmm2,xmm7
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        add     r9d,r13d
> > > > > >
> > > > > > +        pshufd  xmm7,xmm2,80
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     ebx,r9d
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        add     r9d,edi
> > > > > >
> > > > > > +        mov     r13d,ebx
> > > > > >
> > > > > > +        psrld   xmm7,10
> > > > > >
> > > > > > +        add     r14d,r9d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        psrlq   xmm6,17
> > > > > >
> > > > > > +        mov     r9d,r14d
> > > > > >
> > > > > > +        mov     r12d,ecx
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        xor     r12d,edx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        psrlq   xmm6,2
> > > > > >
> > > > > > +        and     r12d,ebx
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        add     r8d,DWORD[44+rsp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        mov     edi,r9d
> > > > > >
> > > > > > +        xor     r12d,edx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        pshufd  xmm7,xmm7,8
> > > > > >
> > > > > > +        xor     edi,r10d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[64+rbp]
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        pslldq  xmm7,8
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        add     r8d,r13d
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +        paddd   xmm2,xmm7
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     eax,r8d
> > > > > >
> > > > > > +        add     r8d,r15d
> > > > > >
> > > > > > +        paddd   xmm6,xmm2
> > > > > >
> > > > > > +        mov     r13d,eax
> > > > > >
> > > > > > +        add     r14d,r8d
> > > > > >
> > > > > > +        movdqa  XMMWORD[32+rsp],xmm6
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        movdqa  xmm4,xmm0
> > > > > >
> > > > > > +        mov     r8d,r14d
> > > > > >
> > > > > > +        mov     r12d,ebx
> > > > > >
> > > > > > +        movdqa  xmm7,xmm2
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        xor     r12d,ecx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +DB      102,15,58,15,227,4
> > > > > >
> > > > > > +        and     r12d,eax
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +DB      102,15,58,15,249,4
> > > > > >
> > > > > > +        add     edx,DWORD[48+rsp]
> > > > > >
> > > > > > +        mov     r15d,r8d
> > > > > >
> > > > > > +        xor     r12d,ecx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        movdqa  xmm5,xmm4
> > > > > >
> > > > > > +        xor     r15d,r9d
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +        movdqa  xmm6,xmm4
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        psrld   xmm4,3
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        add     edx,r13d
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +        paddd   xmm3,xmm7
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r11d,edx
> > > > > >
> > > > > > +        psrld   xmm6,7
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        mov     r13d,r11d
> > > > > >
> > > > > > +        pshufd  xmm7,xmm2,250
> > > > > >
> > > > > > +        add     r14d,edx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        pslld   xmm5,14
> > > > > >
> > > > > > +        mov     edx,r14d
> > > > > >
> > > > > > +        mov     r12d,eax
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        xor     r12d,ebx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        psrld   xmm6,11
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        and     r12d,r11d
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        pslld   xmm5,11
> > > > > >
> > > > > > +        add     ecx,DWORD[52+rsp]
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        pxor    xmm4,xmm6
> > > > > >
> > > > > > +        xor     r12d,ebx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        xor     edi,r8d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +        pxor    xmm4,xmm5
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        psrld   xmm7,10
> > > > > >
> > > > > > +        add     ecx,r13d
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +        paddd   xmm3,xmm4
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r10d,ecx
> > > > > >
> > > > > > +        psrlq   xmm6,17
> > > > > >
> > > > > > +        add     ecx,r15d
> > > > > >
> > > > > > +        mov     r13d,r10d
> > > > > >
> > > > > > +        add     r14d,ecx
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     ecx,r14d
> > > > > >
> > > > > > +        mov     r12d,r11d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        psrlq   xmm6,2
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        xor     r12d,eax
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        and     r12d,r10d
> > > > > >
> > > > > > +        pshufd  xmm7,xmm7,128
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        add     ebx,DWORD[56+rsp]
> > > > > >
> > > > > > +        mov     r15d,ecx
> > > > > >
> > > > > > +        psrldq  xmm7,8
> > > > > >
> > > > > > +        xor     r12d,eax
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,edx
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        paddd   xmm3,xmm7
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        add     ebx,r13d
> > > > > >
> > > > > > +        pshufd  xmm7,xmm3,80
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r9d,ebx
> > > > > >
> > > > > > +        movdqa  xmm6,xmm7
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        mov     r13d,r9d
> > > > > >
> > > > > > +        psrld   xmm7,10
> > > > > >
> > > > > > +        add     r14d,ebx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        psrlq   xmm6,17
> > > > > >
> > > > > > +        mov     ebx,r14d
> > > > > >
> > > > > > +        mov     r12d,r10d
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        xor     r12d,r11d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        psrlq   xmm6,2
> > > > > >
> > > > > > +        and     r12d,r9d
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        add     eax,DWORD[60+rsp]
> > > > > >
> > > > > > +        pxor    xmm7,xmm6
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        xor     r12d,r11d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        pshufd  xmm7,xmm7,8
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +        movdqa  xmm6,XMMWORD[96+rbp]
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        pslldq  xmm7,8
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        add     eax,r13d
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +        paddd   xmm3,xmm7
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r8d,eax
> > > > > >
> > > > > > +        add     eax,r15d
> > > > > >
> > > > > > +        paddd   xmm6,xmm3
> > > > > >
> > > > > > +        mov     r13d,r8d
> > > > > >
> > > > > > +        add     r14d,eax
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        xor     r12d,r10d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        and     r12d,r8d
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        add     r11d,DWORD[rsp]
> > > > > >
> > > > > > +        mov     r15d,eax
> > > > > >
> > > > > > +        xor     r12d,r10d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,ebx
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        add     r11d,r13d
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     edx,r11d
> > > > > >
> > > > > > +        add     r11d,edi
> > > > > >
> > > > > > +        mov     r13d,edx
> > > > > >
> > > > > > +        add     r14d,r11d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r11d,r14d
> > > > > >
> > > > > > +        mov     r12d,r8d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        xor     r12d,r9d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        and     r12d,edx
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        add     r10d,DWORD[4+rsp]
> > > > > >
> > > > > > +        mov     edi,r11d
> > > > > >
> > > > > > +        xor     r12d,r9d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        add     r10d,r13d
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     ecx,r10d
> > > > > >
> > > > > > +        add     r10d,r15d
> > > > > >
> > > > > > +        mov     r13d,ecx
> > > > > >
> > > > > > +        add     r14d,r10d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r10d,r14d
> > > > > >
> > > > > > +        mov     r12d,edx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        xor     r12d,r8d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        and     r12d,ecx
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        add     r9d,DWORD[8+rsp]
> > > > > >
> > > > > > +        mov     r15d,r10d
> > > > > >
> > > > > > +        xor     r12d,r8d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,r11d
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        add     r9d,r13d
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     ebx,r9d
> > > > > >
> > > > > > +        add     r9d,edi
> > > > > >
> > > > > > +        mov     r13d,ebx
> > > > > >
> > > > > > +        add     r14d,r9d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r9d,r14d
> > > > > >
> > > > > > +        mov     r12d,ecx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        xor     r12d,edx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        and     r12d,ebx
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        add     r8d,DWORD[12+rsp]
> > > > > >
> > > > > > +        mov     edi,r9d
> > > > > >
> > > > > > +        xor     r12d,edx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     edi,r10d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        add     r8d,r13d
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     eax,r8d
> > > > > >
> > > > > > +        add     r8d,r15d
> > > > > >
> > > > > > +        mov     r13d,eax
> > > > > >
> > > > > > +        add     r14d,r8d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r8d,r14d
> > > > > >
> > > > > > +        mov     r12d,ebx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        xor     r12d,ecx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        and     r12d,eax
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        add     edx,DWORD[16+rsp]
> > > > > >
> > > > > > +        mov     r15d,r8d
> > > > > >
> > > > > > +        xor     r12d,ecx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,r9d
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        add     edx,r13d
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r11d,edx
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        mov     r13d,r11d
> > > > > >
> > > > > > +        add     r14d,edx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edx,r14d
> > > > > >
> > > > > > +        mov     r12d,eax
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        xor     r12d,ebx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        and     r12d,r11d
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        add     ecx,DWORD[20+rsp]
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        xor     r12d,ebx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     edi,r8d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        add     ecx,r13d
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r10d,ecx
> > > > > >
> > > > > > +        add     ecx,r15d
> > > > > >
> > > > > > +        mov     r13d,r10d
> > > > > >
> > > > > > +        add     r14d,ecx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     ecx,r14d
> > > > > >
> > > > > > +        mov     r12d,r11d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        xor     r12d,eax
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        and     r12d,r10d
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        add     ebx,DWORD[24+rsp]
> > > > > >
> > > > > > +        mov     r15d,ecx
> > > > > >
> > > > > > +        xor     r12d,eax
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,edx
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        add     ebx,r13d
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r9d,ebx
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        mov     r13d,r9d
> > > > > >
> > > > > > +        add     r14d,ebx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     ebx,r14d
> > > > > >
> > > > > > +        mov     r12d,r10d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        xor     r12d,r11d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        and     r12d,r9d
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        add     eax,DWORD[28+rsp]
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        xor     r12d,r11d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        add     eax,r13d
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r8d,eax
> > > > > >
> > > > > > +        add     eax,r15d
> > > > > >
> > > > > > +        mov     r13d,r8d
> > > > > >
> > > > > > +        add     r14d,eax
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     eax,r14d
> > > > > >
> > > > > > +        mov     r12d,r9d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        xor     r12d,r10d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        and     r12d,r8d
> > > > > >
> > > > > > +        xor     r13d,r8d
> > > > > >
> > > > > > +        add     r11d,DWORD[32+rsp]
> > > > > >
> > > > > > +        mov     r15d,eax
> > > > > >
> > > > > > +        xor     r12d,r10d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,ebx
> > > > > >
> > > > > > +        add     r11d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,eax
> > > > > >
> > > > > > +        add     r11d,r13d
> > > > > >
> > > > > > +        xor     edi,ebx
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     edx,r11d
> > > > > >
> > > > > > +        add     r11d,edi
> > > > > >
> > > > > > +        mov     r13d,edx
> > > > > >
> > > > > > +        add     r14d,r11d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r11d,r14d
> > > > > >
> > > > > > +        mov     r12d,r8d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        xor     r12d,r9d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        and     r12d,edx
> > > > > >
> > > > > > +        xor     r13d,edx
> > > > > >
> > > > > > +        add     r10d,DWORD[36+rsp]
> > > > > >
> > > > > > +        mov     edi,r11d
> > > > > >
> > > > > > +        xor     r12d,r9d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     edi,eax
> > > > > >
> > > > > > +        add     r10d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,r11d
> > > > > >
> > > > > > +        add     r10d,r13d
> > > > > >
> > > > > > +        xor     r15d,eax
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     ecx,r10d
> > > > > >
> > > > > > +        add     r10d,r15d
> > > > > >
> > > > > > +        mov     r13d,ecx
> > > > > >
> > > > > > +        add     r14d,r10d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r10d,r14d
> > > > > >
> > > > > > +        mov     r12d,edx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        xor     r12d,r8d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        and     r12d,ecx
> > > > > >
> > > > > > +        xor     r13d,ecx
> > > > > >
> > > > > > +        add     r9d,DWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r15d,r10d
> > > > > >
> > > > > > +        xor     r12d,r8d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,r11d
> > > > > >
> > > > > > +        add     r9d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,r10d
> > > > > >
> > > > > > +        add     r9d,r13d
> > > > > >
> > > > > > +        xor     edi,r11d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     ebx,r9d
> > > > > >
> > > > > > +        add     r9d,edi
> > > > > >
> > > > > > +        mov     r13d,ebx
> > > > > >
> > > > > > +        add     r14d,r9d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r9d,r14d
> > > > > >
> > > > > > +        mov     r12d,ecx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        xor     r12d,edx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        and     r12d,ebx
> > > > > >
> > > > > > +        xor     r13d,ebx
> > > > > >
> > > > > > +        add     r8d,DWORD[44+rsp]
> > > > > >
> > > > > > +        mov     edi,r9d
> > > > > >
> > > > > > +        xor     r12d,edx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     edi,r10d
> > > > > >
> > > > > > +        add     r8d,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,r9d
> > > > > >
> > > > > > +        add     r8d,r13d
> > > > > >
> > > > > > +        xor     r15d,r10d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     eax,r8d
> > > > > >
> > > > > > +        add     r8d,r15d
> > > > > >
> > > > > > +        mov     r13d,eax
> > > > > >
> > > > > > +        add     r14d,r8d
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     r8d,r14d
> > > > > >
> > > > > > +        mov     r12d,ebx
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        xor     r12d,ecx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        and     r12d,eax
> > > > > >
> > > > > > +        xor     r13d,eax
> > > > > >
> > > > > > +        add     edx,DWORD[48+rsp]
> > > > > >
> > > > > > +        mov     r15d,r8d
> > > > > >
> > > > > > +        xor     r12d,ecx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,r9d
> > > > > >
> > > > > > +        add     edx,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,r8d
> > > > > >
> > > > > > +        add     edx,r13d
> > > > > >
> > > > > > +        xor     edi,r9d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r11d,edx
> > > > > >
> > > > > > +        add     edx,edi
> > > > > >
> > > > > > +        mov     r13d,r11d
> > > > > >
> > > > > > +        add     r14d,edx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     edx,r14d
> > > > > >
> > > > > > +        mov     r12d,eax
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        xor     r12d,ebx
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        and     r12d,r11d
> > > > > >
> > > > > > +        xor     r13d,r11d
> > > > > >
> > > > > > +        add     ecx,DWORD[52+rsp]
> > > > > >
> > > > > > +        mov     edi,edx
> > > > > >
> > > > > > +        xor     r12d,ebx
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     edi,r8d
> > > > > >
> > > > > > +        add     ecx,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,edx
> > > > > >
> > > > > > +        add     ecx,r13d
> > > > > >
> > > > > > +        xor     r15d,r8d
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r10d,ecx
> > > > > >
> > > > > > +        add     ecx,r15d
> > > > > >
> > > > > > +        mov     r13d,r10d
> > > > > >
> > > > > > +        add     r14d,ecx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     ecx,r14d
> > > > > >
> > > > > > +        mov     r12d,r11d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        xor     r12d,eax
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        and     r12d,r10d
> > > > > >
> > > > > > +        xor     r13d,r10d
> > > > > >
> > > > > > +        add     ebx,DWORD[56+rsp]
> > > > > >
> > > > > > +        mov     r15d,ecx
> > > > > >
> > > > > > +        xor     r12d,eax
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     r15d,edx
> > > > > >
> > > > > > +        add     ebx,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     edi,r15d
> > > > > >
> > > > > > +        xor     r14d,ecx
> > > > > >
> > > > > > +        add     ebx,r13d
> > > > > >
> > > > > > +        xor     edi,edx
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r9d,ebx
> > > > > >
> > > > > > +        add     ebx,edi
> > > > > >
> > > > > > +        mov     r13d,r9d
> > > > > >
> > > > > > +        add     r14d,ebx
> > > > > >
> > > > > > +        ror     r13d,14
> > > > > >
> > > > > > +        mov     ebx,r14d
> > > > > >
> > > > > > +        mov     r12d,r10d
> > > > > >
> > > > > > +        ror     r14d,9
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        xor     r12d,r11d
> > > > > >
> > > > > > +        ror     r13d,5
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        and     r12d,r9d
> > > > > >
> > > > > > +        xor     r13d,r9d
> > > > > >
> > > > > > +        add     eax,DWORD[60+rsp]
> > > > > >
> > > > > > +        mov     edi,ebx
> > > > > >
> > > > > > +        xor     r12d,r11d
> > > > > >
> > > > > > +        ror     r14d,11
> > > > > >
> > > > > > +        xor     edi,ecx
> > > > > >
> > > > > > +        add     eax,r12d
> > > > > >
> > > > > > +        ror     r13d,6
> > > > > >
> > > > > > +        and     r15d,edi
> > > > > >
> > > > > > +        xor     r14d,ebx
> > > > > >
> > > > > > +        add     eax,r13d
> > > > > >
> > > > > > +        xor     r15d,ecx
> > > > > >
> > > > > > +        ror     r14d,2
> > > > > >
> > > > > > +        add     r8d,eax
> > > > > >
> > > > > > +        add     eax,r15d
> > > > > >
> > > > > > +        mov     r13d,r8d
> > > > > >
> > > > > > +        add     r14d,eax
> > > > > >
> > > > > > +        mov     rdi,QWORD[((64+0))+rsp]
> > > > > >
> > > > > > +        mov     eax,r14d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[((64+16))+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[88+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[((-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$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:
> > > > > >
> > > > > > +EXTERN  __imp_RtlVirtualUnwind
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$in_prologue
> > > > > >
> > > > > > +        mov     rsi,rax
> > > > > >
> > > > > > +        mov     rax,QWORD[((64+24))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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,[$L$epilogue]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((64+32))+rsi]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,8
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +shaext_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$prologue_shaext]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     r10,[$L$epilogue_shaext]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((-8-80))+rax]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,10
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        jmp     NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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_shaext
> > > > wrt ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_end_sha256_block_data_order_shaext wrt
> > > ..imagebase
> > > > > >
> > > > > > +        DD      $L$SEH_info_sha256_block_data_order_shaext 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_shaext:
> > > > > >
> > > > > > +DB      9,0,0,0
> > > > > >
> > > > > > +        DD      shaext_handler 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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-
> > > > x86_64.nasm
> > > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..c6397d4393
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-
> x86_64.nasm
> > > > > > @@ -0,0 +1,1938 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not
> use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain
> a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +EXTERN  OPENSSL_ia32cap_P
> > > > > >
> > > > > > +global  sha512_block_data_order
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +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:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +        mov     rsi,rdx
> > > > > >
> > > > > > +        mov     rdx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        shl     rdx,4
> > > > > >
> > > > > > +        sub     rsp,16*8+4*8
> > > > > >
> > > > > > +        lea     rdx,[rdx*8+rsi]
> > > > > >
> > > > > > +        and     rsp,-64
> > > > > >
> > > > > > +        mov     QWORD[((128+0))+rsp],rdi
> > > > > >
> > > > > > +        mov     QWORD[((128+8))+rsp],rsi
> > > > > >
> > > > > > +        mov     QWORD[((128+16))+rsp],rdx
> > > > > >
> > > > > > +        mov     QWORD[152+rsp],rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$prologue:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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:
> > > > > >
> > > > > > +        mov     rdi,rbx
> > > > > >
> > > > > > +        lea     rbp,[K512]
> > > > > >
> > > > > > +        xor     rdi,rcx
> > > > > >
> > > > > > +        mov     r12,QWORD[rsi]
> > > > > >
> > > > > > +        mov     r13,r8
> > > > > >
> > > > > > +        mov     r14,rax
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[rsp],r12
> > > > > >
> > > > > > +        xor     r14,rax
> > > > > >
> > > > > > +        and     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r11
> > > > > >
> > > > > > +        xor     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,rax
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,rbx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r11,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r11,rdi
> > > > > >
> > > > > > +        add     rdx,r12
> > > > > >
> > > > > > +        add     r11,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        add     r11,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[8+rsi]
> > > > > >
> > > > > > +        mov     r13,rdx
> > > > > >
> > > > > > +        mov     r14,r11
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rdx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r11
> > > > > >
> > > > > > +        and     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r10
> > > > > >
> > > > > > +        xor     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rdx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,r11
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,rax
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r10,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r10,r15
> > > > > >
> > > > > > +        add     rcx,r12
> > > > > >
> > > > > > +        add     r10,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        add     r10,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[16+rsi]
> > > > > >
> > > > > > +        mov     r13,rcx
> > > > > >
> > > > > > +        mov     r14,r10
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rcx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r10
> > > > > >
> > > > > > +        and     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r9
> > > > > >
> > > > > > +        xor     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rcx
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,r10
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,r11
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r9,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r9,rdi
> > > > > >
> > > > > > +        add     rbx,r12
> > > > > >
> > > > > > +        add     r9,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        add     r9,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[24+rsi]
> > > > > >
> > > > > > +        mov     r13,rbx
> > > > > >
> > > > > > +        mov     r14,r9
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rbx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[24+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r9
> > > > > >
> > > > > > +        and     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r8
> > > > > >
> > > > > > +        xor     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rbx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,r9
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,r10
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r8,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r8,r15
> > > > > >
> > > > > > +        add     rax,r12
> > > > > >
> > > > > > +        add     r8,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        add     r8,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[32+rsi]
> > > > > >
> > > > > > +        mov     r13,rax
> > > > > >
> > > > > > +        mov     r14,r8
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rax
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[32+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r8
> > > > > >
> > > > > > +        and     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rdx
> > > > > >
> > > > > > +        xor     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rax
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,r8
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,r9
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rdx,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdx,rdi
> > > > > >
> > > > > > +        add     r11,r12
> > > > > >
> > > > > > +        add     rdx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        add     rdx,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[40+rsi]
> > > > > >
> > > > > > +        mov     r13,r11
> > > > > >
> > > > > > +        mov     r14,rdx
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r11
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[40+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rdx
> > > > > >
> > > > > > +        and     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rcx
> > > > > >
> > > > > > +        xor     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r11
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,rdx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,r8
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rcx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rcx,r15
> > > > > >
> > > > > > +        add     r10,r12
> > > > > >
> > > > > > +        add     rcx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        add     rcx,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[48+rsi]
> > > > > >
> > > > > > +        mov     r13,r10
> > > > > >
> > > > > > +        mov     r14,rcx
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r10
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[48+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rcx
> > > > > >
> > > > > > +        and     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rbx
> > > > > >
> > > > > > +        xor     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r10
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,rcx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,rdx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rbx,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rbx,rdi
> > > > > >
> > > > > > +        add     r9,r12
> > > > > >
> > > > > > +        add     rbx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        add     rbx,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[56+rsi]
> > > > > >
> > > > > > +        mov     r13,r9
> > > > > >
> > > > > > +        mov     r14,rbx
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r9
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[56+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rbx
> > > > > >
> > > > > > +        and     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rax
> > > > > >
> > > > > > +        xor     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r9
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,rbx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,rcx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rax,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rax,r15
> > > > > >
> > > > > > +        add     r8,r12
> > > > > >
> > > > > > +        add     rax,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        add     rax,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[64+rsi]
> > > > > >
> > > > > > +        mov     r13,r8
> > > > > >
> > > > > > +        mov     r14,rax
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[64+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rax
> > > > > >
> > > > > > +        and     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r11
> > > > > >
> > > > > > +        xor     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,rax
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,rbx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r11,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r11,rdi
> > > > > >
> > > > > > +        add     rdx,r12
> > > > > >
> > > > > > +        add     r11,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        add     r11,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[72+rsi]
> > > > > >
> > > > > > +        mov     r13,rdx
> > > > > >
> > > > > > +        mov     r14,r11
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rdx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[72+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r11
> > > > > >
> > > > > > +        and     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r10
> > > > > >
> > > > > > +        xor     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rdx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,r11
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,rax
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r10,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r10,r15
> > > > > >
> > > > > > +        add     rcx,r12
> > > > > >
> > > > > > +        add     r10,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        add     r10,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[80+rsi]
> > > > > >
> > > > > > +        mov     r13,rcx
> > > > > >
> > > > > > +        mov     r14,r10
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rcx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[80+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r10
> > > > > >
> > > > > > +        and     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r9
> > > > > >
> > > > > > +        xor     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rcx
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,r10
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,r11
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r9,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r9,rdi
> > > > > >
> > > > > > +        add     rbx,r12
> > > > > >
> > > > > > +        add     r9,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        add     r9,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[88+rsi]
> > > > > >
> > > > > > +        mov     r13,rbx
> > > > > >
> > > > > > +        mov     r14,r9
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rbx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[88+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r9
> > > > > >
> > > > > > +        and     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r8
> > > > > >
> > > > > > +        xor     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rbx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,r9
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,r10
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r8,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r8,r15
> > > > > >
> > > > > > +        add     rax,r12
> > > > > >
> > > > > > +        add     r8,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        add     r8,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[96+rsi]
> > > > > >
> > > > > > +        mov     r13,rax
> > > > > >
> > > > > > +        mov     r14,r8
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rax
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[96+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r8
> > > > > >
> > > > > > +        and     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rdx
> > > > > >
> > > > > > +        xor     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rax
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,r8
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,r9
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rdx,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdx,rdi
> > > > > >
> > > > > > +        add     r11,r12
> > > > > >
> > > > > > +        add     rdx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        add     rdx,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[104+rsi]
> > > > > >
> > > > > > +        mov     r13,r11
> > > > > >
> > > > > > +        mov     r14,rdx
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r11
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[104+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rdx
> > > > > >
> > > > > > +        and     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rcx
> > > > > >
> > > > > > +        xor     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r11
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,rdx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,r8
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rcx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rcx,r15
> > > > > >
> > > > > > +        add     r10,r12
> > > > > >
> > > > > > +        add     rcx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        add     rcx,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[112+rsi]
> > > > > >
> > > > > > +        mov     r13,r10
> > > > > >
> > > > > > +        mov     r14,rcx
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r10
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[112+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rcx
> > > > > >
> > > > > > +        and     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rbx
> > > > > >
> > > > > > +        xor     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r10
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,rcx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,rdx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rbx,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rbx,rdi
> > > > > >
> > > > > > +        add     r9,r12
> > > > > >
> > > > > > +        add     rbx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        add     rbx,r14
> > > > > >
> > > > > > +        mov     r12,QWORD[120+rsi]
> > > > > >
> > > > > > +        mov     r13,r9
> > > > > >
> > > > > > +        mov     r14,rbx
> > > > > >
> > > > > > +        bswap   r12
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r9
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[120+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rbx
> > > > > >
> > > > > > +        and     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rax
> > > > > >
> > > > > > +        xor     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r9
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,rbx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,rcx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rax,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rax,r15
> > > > > >
> > > > > > +        add     r8,r12
> > > > > >
> > > > > > +        add     rax,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        jmp     NEAR $L$rounds_16_xx
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$rounds_16_xx:
> > > > > >
> > > > > > +        mov     r13,QWORD[8+rsp]
> > > > > >
> > > > > > +        mov     r15,QWORD[112+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     rax,r14
> > > > > >
> > > > > > +        mov     r14,r15
> > > > > >
> > > > > > +        ror     r15,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        add     r12,QWORD[72+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[rsp]
> > > > > >
> > > > > > +        mov     r13,r8
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +        mov     r14,rax
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[rsp],r12
> > > > > >
> > > > > > +        xor     r14,rax
> > > > > >
> > > > > > +        and     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r11
> > > > > >
> > > > > > +        xor     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,rax
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,rbx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r11,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r11,rdi
> > > > > >
> > > > > > +        add     rdx,r12
> > > > > >
> > > > > > +        add     r11,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[16+rsp]
> > > > > >
> > > > > > +        mov     rdi,QWORD[120+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     r11,r14
> > > > > >
> > > > > > +        mov     r14,rdi
> > > > > >
> > > > > > +        ror     rdi,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     rdi,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        add     r12,QWORD[80+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[8+rsp]
> > > > > >
> > > > > > +        mov     r13,rdx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +        mov     r14,r11
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rdx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r11
> > > > > >
> > > > > > +        and     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r10
> > > > > >
> > > > > > +        xor     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rdx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,r11
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,rax
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r10,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r10,r15
> > > > > >
> > > > > > +        add     rcx,r12
> > > > > >
> > > > > > +        add     r10,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[24+rsp]
> > > > > >
> > > > > > +        mov     r15,QWORD[rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     r10,r14
> > > > > >
> > > > > > +        mov     r14,r15
> > > > > >
> > > > > > +        ror     r15,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        add     r12,QWORD[88+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[16+rsp]
> > > > > >
> > > > > > +        mov     r13,rcx
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +        mov     r14,r10
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rcx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r10
> > > > > >
> > > > > > +        and     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r9
> > > > > >
> > > > > > +        xor     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rcx
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,r10
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,r11
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r9,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r9,rdi
> > > > > >
> > > > > > +        add     rbx,r12
> > > > > >
> > > > > > +        add     r9,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[32+rsp]
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     r9,r14
> > > > > >
> > > > > > +        mov     r14,rdi
> > > > > >
> > > > > > +        ror     rdi,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     rdi,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        add     r12,QWORD[96+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[24+rsp]
> > > > > >
> > > > > > +        mov     r13,rbx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +        mov     r14,r9
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rbx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[24+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r9
> > > > > >
> > > > > > +        and     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r8
> > > > > >
> > > > > > +        xor     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rbx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,r9
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,r10
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r8,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r8,r15
> > > > > >
> > > > > > +        add     rax,r12
> > > > > >
> > > > > > +        add     r8,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r15,QWORD[16+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     r8,r14
> > > > > >
> > > > > > +        mov     r14,r15
> > > > > >
> > > > > > +        ror     r15,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        add     r12,QWORD[104+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[32+rsp]
> > > > > >
> > > > > > +        mov     r13,rax
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +        mov     r14,r8
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rax
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[32+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r8
> > > > > >
> > > > > > +        and     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rdx
> > > > > >
> > > > > > +        xor     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rax
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,r8
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,r9
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rdx,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdx,rdi
> > > > > >
> > > > > > +        add     r11,r12
> > > > > >
> > > > > > +        add     rdx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[48+rsp]
> > > > > >
> > > > > > +        mov     rdi,QWORD[24+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     rdx,r14
> > > > > >
> > > > > > +        mov     r14,rdi
> > > > > >
> > > > > > +        ror     rdi,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     rdi,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        add     r12,QWORD[112+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[40+rsp]
> > > > > >
> > > > > > +        mov     r13,r11
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +        mov     r14,rdx
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r11
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[40+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rdx
> > > > > >
> > > > > > +        and     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rcx
> > > > > >
> > > > > > +        xor     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r11
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,rdx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,r8
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rcx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rcx,r15
> > > > > >
> > > > > > +        add     r10,r12
> > > > > >
> > > > > > +        add     rcx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[56+rsp]
> > > > > >
> > > > > > +        mov     r15,QWORD[32+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     rcx,r14
> > > > > >
> > > > > > +        mov     r14,r15
> > > > > >
> > > > > > +        ror     r15,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        add     r12,QWORD[120+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[48+rsp]
> > > > > >
> > > > > > +        mov     r13,r10
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +        mov     r14,rcx
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r10
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[48+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rcx
> > > > > >
> > > > > > +        and     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rbx
> > > > > >
> > > > > > +        xor     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r10
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,rcx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,rdx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rbx,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rbx,rdi
> > > > > >
> > > > > > +        add     r9,r12
> > > > > >
> > > > > > +        add     rbx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[64+rsp]
> > > > > >
> > > > > > +        mov     rdi,QWORD[40+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     rbx,r14
> > > > > >
> > > > > > +        mov     r14,rdi
> > > > > >
> > > > > > +        ror     rdi,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     rdi,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        add     r12,QWORD[rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[56+rsp]
> > > > > >
> > > > > > +        mov     r13,r9
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +        mov     r14,rbx
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r9
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[56+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rbx
> > > > > >
> > > > > > +        and     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rax
> > > > > >
> > > > > > +        xor     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r9
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,rbx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,rcx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rax,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rax,r15
> > > > > >
> > > > > > +        add     r8,r12
> > > > > >
> > > > > > +        add     rax,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[72+rsp]
> > > > > >
> > > > > > +        mov     r15,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     rax,r14
> > > > > >
> > > > > > +        mov     r14,r15
> > > > > >
> > > > > > +        ror     r15,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        add     r12,QWORD[8+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[64+rsp]
> > > > > >
> > > > > > +        mov     r13,r8
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +        mov     r14,rax
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[64+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rax
> > > > > >
> > > > > > +        and     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r11
> > > > > >
> > > > > > +        xor     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r8
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,rax
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,rbx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r11,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r11,rdi
> > > > > >
> > > > > > +        add     rdx,r12
> > > > > >
> > > > > > +        add     r11,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[80+rsp]
> > > > > >
> > > > > > +        mov     rdi,QWORD[56+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     r11,r14
> > > > > >
> > > > > > +        mov     r14,rdi
> > > > > >
> > > > > > +        ror     rdi,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     rdi,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        add     r12,QWORD[16+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[72+rsp]
> > > > > >
> > > > > > +        mov     r13,rdx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +        mov     r14,r11
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rdx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[72+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r11
> > > > > >
> > > > > > +        and     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r10
> > > > > >
> > > > > > +        xor     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rdx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,r11
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,rax
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r10,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r10,r15
> > > > > >
> > > > > > +        add     rcx,r12
> > > > > >
> > > > > > +        add     r10,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[88+rsp]
> > > > > >
> > > > > > +        mov     r15,QWORD[64+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     r10,r14
> > > > > >
> > > > > > +        mov     r14,r15
> > > > > >
> > > > > > +        ror     r15,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        add     r12,QWORD[24+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[80+rsp]
> > > > > >
> > > > > > +        mov     r13,rcx
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +        mov     r14,r10
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rcx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[80+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r10
> > > > > >
> > > > > > +        and     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r9
> > > > > >
> > > > > > +        xor     r15,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rcx
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,r10
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,r11
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r9,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r9,rdi
> > > > > >
> > > > > > +        add     rbx,r12
> > > > > >
> > > > > > +        add     r9,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[96+rsp]
> > > > > >
> > > > > > +        mov     rdi,QWORD[72+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     r9,r14
> > > > > >
> > > > > > +        mov     r14,rdi
> > > > > >
> > > > > > +        ror     rdi,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     rdi,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        add     r12,QWORD[32+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[88+rsp]
> > > > > >
> > > > > > +        mov     r13,rbx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +        mov     r14,r9
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rbx
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[88+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r9
> > > > > >
> > > > > > +        and     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,r8
> > > > > >
> > > > > > +        xor     rdi,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rbx
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,r9
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,r10
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     r8,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r8,r15
> > > > > >
> > > > > > +        add     rax,r12
> > > > > >
> > > > > > +        add     r8,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[104+rsp]
> > > > > >
> > > > > > +        mov     r15,QWORD[80+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     r8,r14
> > > > > >
> > > > > > +        mov     r14,r15
> > > > > >
> > > > > > +        ror     r15,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        add     r12,QWORD[40+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[96+rsp]
> > > > > >
> > > > > > +        mov     r13,rax
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +        mov     r14,r8
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,rax
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[96+rsp],r12
> > > > > >
> > > > > > +        xor     r14,r8
> > > > > >
> > > > > > +        and     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rdx
> > > > > >
> > > > > > +        xor     r15,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,rax
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,r8
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,r9
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rdx,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdx,rdi
> > > > > >
> > > > > > +        add     r11,r12
> > > > > >
> > > > > > +        add     rdx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[112+rsp]
> > > > > >
> > > > > > +        mov     rdi,QWORD[88+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     rdx,r14
> > > > > >
> > > > > > +        mov     r14,rdi
> > > > > >
> > > > > > +        ror     rdi,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     rdi,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        add     r12,QWORD[48+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[104+rsp]
> > > > > >
> > > > > > +        mov     r13,r11
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +        mov     r14,rdx
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r11
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[104+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rdx
> > > > > >
> > > > > > +        and     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rcx
> > > > > >
> > > > > > +        xor     rdi,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r11
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,rdx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,r8
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rcx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rcx,r15
> > > > > >
> > > > > > +        add     r10,r12
> > > > > >
> > > > > > +        add     rcx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[120+rsp]
> > > > > >
> > > > > > +        mov     r15,QWORD[96+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     rcx,r14
> > > > > >
> > > > > > +        mov     r14,r15
> > > > > >
> > > > > > +        ror     r15,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r15,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     r15,r14
> > > > > >
> > > > > > +        add     r12,QWORD[56+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[112+rsp]
> > > > > >
> > > > > > +        mov     r13,r10
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +        mov     r14,rcx
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     r15,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r10
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[112+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rcx
> > > > > >
> > > > > > +        and     r15,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rbx
> > > > > >
> > > > > > +        xor     r15,rax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r10
> > > > > >
> > > > > > +        add     r12,r15
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r15,rcx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r15,rdx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rbx,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     rdi,r15
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rbx,rdi
> > > > > >
> > > > > > +        add     r9,r12
> > > > > >
> > > > > > +        add     rbx,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[8+rbp]
> > > > > >
> > > > > > +        mov     r13,QWORD[rsp]
> > > > > >
> > > > > > +        mov     rdi,QWORD[104+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r12,r13
> > > > > >
> > > > > > +        ror     r13,7
> > > > > >
> > > > > > +        add     rbx,r14
> > > > > >
> > > > > > +        mov     r14,rdi
> > > > > >
> > > > > > +        ror     rdi,42
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r12
> > > > > >
> > > > > > +        shr     r12,7
> > > > > >
> > > > > > +        ror     r13,1
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        shr     r14,6
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     rdi,19
> > > > > >
> > > > > > +        xor     r12,r13
> > > > > >
> > > > > > +        xor     rdi,r14
> > > > > >
> > > > > > +        add     r12,QWORD[64+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        add     r12,QWORD[120+rsp]
> > > > > >
> > > > > > +        mov     r13,r9
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +        mov     r14,rbx
> > > > > >
> > > > > > +        ror     r13,23
> > > > > >
> > > > > > +        mov     rdi,r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     r13,r9
> > > > > >
> > > > > > +        ror     r14,5
> > > > > >
> > > > > > +        xor     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     QWORD[120+rsp],r12
> > > > > >
> > > > > > +        xor     r14,rbx
> > > > > >
> > > > > > +        and     rdi,r9
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r13,4
> > > > > >
> > > > > > +        add     r12,rax
> > > > > >
> > > > > > +        xor     rdi,r11
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        ror     r14,6
> > > > > >
> > > > > > +        xor     r13,r9
> > > > > >
> > > > > > +        add     r12,rdi
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,rbx
> > > > > >
> > > > > > +        add     r12,QWORD[rbp]
> > > > > >
> > > > > > +        xor     r14,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rdi,rcx
> > > > > >
> > > > > > +        ror     r13,14
> > > > > >
> > > > > > +        mov     rax,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     r15,rdi
> > > > > >
> > > > > > +        ror     r14,28
> > > > > >
> > > > > > +        add     r12,r13
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rax,r15
> > > > > >
> > > > > > +        add     r8,r12
> > > > > >
> > > > > > +        add     rax,r12
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rbp,[24+rbp]
> > > > > >
> > > > > > +        cmp     BYTE[7+rbp],0
> > > > > >
> > > > > > +        jnz     NEAR $L$rounds_16_xx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rdi,QWORD[((128+0))+rsp]
> > > > > >
> > > > > > +        add     rax,r14
> > > > > >
> > > > > > +        lea     rsi,[128+rsi]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[((128+16))+rsp]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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[152+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$epilogue:
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_sha512_block_data_order:
> > > > > >
> > > > > > +ALIGN   64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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      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
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +se_handler:
> > > > > >
> > > > > > +        push    rsi
> > > > > >
> > > > > > +        push    rdi
> > > > > >
> > > > > > +        push    rbx
> > > > > >
> > > > > > +        push    rbp
> > > > > >
> > > > > > +        push    r12
> > > > > >
> > > > > > +        push    r13
> > > > > >
> > > > > > +        push    r14
> > > > > >
> > > > > > +        push    r15
> > > > > >
> > > > > > +        pushfq
> > > > > >
> > > > > > +        sub     rsp,64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[120+r8]
> > > > > >
> > > > > > +        mov     rbx,QWORD[248+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,QWORD[8+r9]
> > > > > >
> > > > > > +        mov     r11,QWORD[56+r9]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,QWORD[152+r8]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,DWORD[4+r11]
> > > > > >
> > > > > > +        lea     r10,[r10*1+rsi]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jae     NEAR $L$in_prologue
> > > > > >
> > > > > > +        mov     rsi,rax
> > > > > >
> > > > > > +        mov     rax,QWORD[((128+24))+rax]
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        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,[$L$epilogue]
> > > > > >
> > > > > > +        cmp     rbx,r10
> > > > > >
> > > > > > +        jb      NEAR $L$in_prologue
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        lea     rsi,[((128+32))+rsi]
> > > > > >
> > > > > > +        lea     rdi,[512+r8]
> > > > > >
> > > > > > +        mov     ecx,12
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$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[40+r9]
> > > > > >
> > > > > > +        mov     rsi,r8
> > > > > >
> > > > > > +        mov     ecx,154
> > > > > >
> > > > > > +        DD      0xa548f3fc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rsi,r9
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        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
> > > > > >
> > > > > > +        popfq
> > > > > >
> > > > > > +        pop     r15
> > > > > >
> > > > > > +        pop     r14
> > > > > >
> > > > > > +        pop     r13
> > > > > >
> > > > > > +        pop     r12
> > > > > >
> > > > > > +        pop     rbp
> > > > > >
> > > > > > +        pop     rbx
> > > > > >
> > > > > > +        pop     rdi
> > > > > >
> > > > > > +        pop     rsi
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +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/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > > > > > b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > > > > > new file mode 100644
> > > > > > index 0000000000..2a3d5bcf72
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
> > > > > > @@ -0,0 +1,491 @@
> > > > > > +; WARNING: do not edit!
> > > > > >
> > > > > > +; Generated from openssl/crypto/x86_64cpuid.pl
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
> > > Reserved.
> > > > > >
> > > > > > +;
> > > > > >
> > > > > > +; Licensed under the OpenSSL license (the "License").  You may not
> use
> > > > > >
> > > > > > +; this file except in compliance with the License.  You can obtain
> a
> > > copy
> > > > > >
> > > > > > +; in the file LICENSE in the source distribution or at
> > > > > >
> > > > > > +; https://www.openssl.org/source/license.html
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +default rel
> > > > > >
> > > > > > +%define XMMWORD
> > > > > >
> > > > > > +%define YMMWORD
> > > > > >
> > > > > > +%define ZMMWORD
> > > > > >
> > > > > > +EXTERN  OPENSSL_cpuid_setup
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .CRT$XCU rdata align=8
> > > > > >
> > > > > > +                DQ      OPENSSL_cpuid_setup
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +common  OPENSSL_ia32cap_P 16
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +section .text code align=64
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  OPENSSL_atomic_add
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +OPENSSL_atomic_add:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,DWORD[rcx]
> > > > > >
> > > > > > +$L$spin:        lea     r8,[rax*1+rdx]
> > > > > >
> > > > > > +DB      0xf0
> > > > > >
> > > > > > +        cmpxchg DWORD[rcx],r8d
> > > > > >
> > > > > > +        jne     NEAR $L$spin
> > > > > >
> > > > > > +        mov     eax,r8d
> > > > > >
> > > > > > +DB      0x48,0x98
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  OPENSSL_rdtsc
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +OPENSSL_rdtsc:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        rdtsc
> > > > > >
> > > > > > +        shl     rdx,32
> > > > > >
> > > > > > +        or      rax,rdx
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  OPENSSL_ia32_cpuid
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +OPENSSL_ia32_cpuid:
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
> > > > > >
> > > > > > +        mov     QWORD[16+rsp],rsi
> > > > > >
> > > > > > +        mov     rax,rsp
> > > > > >
> > > > > > +$L$SEH_begin_OPENSSL_ia32_cpuid:
> > > > > >
> > > > > > +        mov     rdi,rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r8,rbx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     eax,eax
> > > > > >
> > > > > > +        mov     QWORD[8+rdi],rax
> > > > > >
> > > > > > +        cpuid
> > > > > >
> > > > > > +        mov     r11d,eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     eax,eax
> > > > > >
> > > > > > +        cmp     ebx,0x756e6547
> > > > > >
> > > > > > +        setne   al
> > > > > >
> > > > > > +        mov     r9d,eax
> > > > > >
> > > > > > +        cmp     edx,0x49656e69
> > > > > >
> > > > > > +        setne   al
> > > > > >
> > > > > > +        or      r9d,eax
> > > > > >
> > > > > > +        cmp     ecx,0x6c65746e
> > > > > >
> > > > > > +        setne   al
> > > > > >
> > > > > > +        or      r9d,eax
> > > > > >
> > > > > > +        jz      NEAR $L$intel
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        cmp     ebx,0x68747541
> > > > > >
> > > > > > +        setne   al
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +        cmp     edx,0x69746E65
> > > > > >
> > > > > > +        setne   al
> > > > > >
> > > > > > +        or      r10d,eax
> > > > > >
> > > > > > +        cmp     ecx,0x444D4163
> > > > > >
> > > > > > +        setne   al
> > > > > >
> > > > > > +        or      r10d,eax
> > > > > >
> > > > > > +        jnz     NEAR $L$intel
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,0x80000000
> > > > > >
> > > > > > +        cpuid
> > > > > >
> > > > > > +        cmp     eax,0x80000001
> > > > > >
> > > > > > +        jb      NEAR $L$intel
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +        mov     eax,0x80000001
> > > > > >
> > > > > > +        cpuid
> > > > > >
> > > > > > +        or      r9d,ecx
> > > > > >
> > > > > > +        and     r9d,0x00000801
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        cmp     r10d,0x80000008
> > > > > >
> > > > > > +        jb      NEAR $L$intel
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,0x80000008
> > > > > >
> > > > > > +        cpuid
> > > > > >
> > > > > > +        movzx   r10,cl
> > > > > >
> > > > > > +        inc     r10
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,1
> > > > > >
> > > > > > +        cpuid
> > > > > >
> > > > > > +        bt      edx,28
> > > > > >
> > > > > > +        jnc     NEAR $L$generic
> > > > > >
> > > > > > +        shr     ebx,16
> > > > > >
> > > > > > +        cmp     bl,r10b
> > > > > >
> > > > > > +        ja      NEAR $L$generic
> > > > > >
> > > > > > +        and     edx,0xefffffff
> > > > > >
> > > > > > +        jmp     NEAR $L$generic
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$intel:
> > > > > >
> > > > > > +        cmp     r11d,4
> > > > > >
> > > > > > +        mov     r10d,-1
> > > > > >
> > > > > > +        jb      NEAR $L$nocacheinfo
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     eax,4
> > > > > >
> > > > > > +        mov     ecx,0
> > > > > >
> > > > > > +        cpuid
> > > > > >
> > > > > > +        mov     r10d,eax
> > > > > >
> > > > > > +        shr     r10d,14
> > > > > >
> > > > > > +        and     r10d,0xfff
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$nocacheinfo:
> > > > > >
> > > > > > +        mov     eax,1
> > > > > >
> > > > > > +        cpuid
> > > > > >
> > > > > > +        movd    xmm0,eax
> > > > > >
> > > > > > +        and     edx,0xbfefffff
> > > > > >
> > > > > > +        cmp     r9d,0
> > > > > >
> > > > > > +        jne     NEAR $L$notintel
> > > > > >
> > > > > > +        or      edx,0x40000000
> > > > > >
> > > > > > +        and     ah,15
> > > > > >
> > > > > > +        cmp     ah,15
> > > > > >
> > > > > > +        jne     NEAR $L$notP4
> > > > > >
> > > > > > +        or      edx,0x00100000
> > > > > >
> > > > > > +$L$notP4:
> > > > > >
> > > > > > +        cmp     ah,6
> > > > > >
> > > > > > +        jne     NEAR $L$notintel
> > > > > >
> > > > > > +        and     eax,0x0fff0ff0
> > > > > >
> > > > > > +        cmp     eax,0x00050670
> > > > > >
> > > > > > +        je      NEAR $L$knights
> > > > > >
> > > > > > +        cmp     eax,0x00080650
> > > > > >
> > > > > > +        jne     NEAR $L$notintel
> > > > > >
> > > > > > +$L$knights:
> > > > > >
> > > > > > +        and     ecx,0xfbffffff
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$notintel:
> > > > > >
> > > > > > +        bt      edx,28
> > > > > >
> > > > > > +        jnc     NEAR $L$generic
> > > > > >
> > > > > > +        and     edx,0xefffffff
> > > > > >
> > > > > > +        cmp     r10d,0
> > > > > >
> > > > > > +        je      NEAR $L$generic
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        or      edx,0x10000000
> > > > > >
> > > > > > +        shr     ebx,16
> > > > > >
> > > > > > +        cmp     bl,1
> > > > > >
> > > > > > +        ja      NEAR $L$generic
> > > > > >
> > > > > > +        and     edx,0xefffffff
> > > > > >
> > > > > > +$L$generic:
> > > > > >
> > > > > > +        and     r9d,0x00000800
> > > > > >
> > > > > > +        and     ecx,0xfffff7ff
> > > > > >
> > > > > > +        or      r9d,ecx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10d,edx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        cmp     r11d,7
> > > > > >
> > > > > > +        jb      NEAR $L$no_extended_info
> > > > > >
> > > > > > +        mov     eax,7
> > > > > >
> > > > > > +        xor     ecx,ecx
> > > > > >
> > > > > > +        cpuid
> > > > > >
> > > > > > +        bt      r9d,26
> > > > > >
> > > > > > +        jc      NEAR $L$notknights
> > > > > >
> > > > > > +        and     ebx,0xfff7ffff
> > > > > >
> > > > > > +$L$notknights:
> > > > > >
> > > > > > +        movd    eax,xmm0
> > > > > >
> > > > > > +        and     eax,0x0fff0ff0
> > > > > >
> > > > > > +        cmp     eax,0x00050650
> > > > > >
> > > > > > +        jne     NEAR $L$notskylakex
> > > > > >
> > > > > > +        and     ebx,0xfffeffff
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$notskylakex:
> > > > > >
> > > > > > +        mov     DWORD[8+rdi],ebx
> > > > > >
> > > > > > +        mov     DWORD[12+rdi],ecx
> > > > > >
> > > > > > +$L$no_extended_info:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        bt      r9d,27
> > > > > >
> > > > > > +        jnc     NEAR $L$clear_avx
> > > > > >
> > > > > > +        xor     ecx,ecx
> > > > > >
> > > > > > +DB      0x0f,0x01,0xd0
> > > > > >
> > > > > > +        and     eax,0xe6
> > > > > >
> > > > > > +        cmp     eax,0xe6
> > > > > >
> > > > > > +        je      NEAR $L$done
> > > > > >
> > > > > > +        and     DWORD[8+rdi],0x3fdeffff
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        and     eax,6
> > > > > >
> > > > > > +        cmp     eax,6
> > > > > >
> > > > > > +        je      NEAR $L$done
> > > > > >
> > > > > > +$L$clear_avx:
> > > > > >
> > > > > > +        mov     eax,0xefffe7ff
> > > > > >
> > > > > > +        and     r9d,eax
> > > > > >
> > > > > > +        mov     eax,0x3fdeffdf
> > > > > >
> > > > > > +        and     DWORD[8+rdi],eax
> > > > > >
> > > > > > +$L$done:
> > > > > >
> > > > > > +        shl     r9,32
> > > > > >
> > > > > > +        mov     eax,r10d
> > > > > >
> > > > > > +        mov     rbx,r8
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        or      rax,r9
> > > > > >
> > > > > > +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
> > > > > >
> > > > > > +        mov     rsi,QWORD[16+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$SEH_end_OPENSSL_ia32_cpuid:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  OPENSSL_cleanse
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +OPENSSL_cleanse:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rax,rax
> > > > > >
> > > > > > +        cmp     rdx,15
> > > > > >
> > > > > > +        jae     NEAR $L$ot
> > > > > >
> > > > > > +        cmp     rdx,0
> > > > > >
> > > > > > +        je      NEAR $L$ret
> > > > > >
> > > > > > +$L$ittle:
> > > > > >
> > > > > > +        mov     BYTE[rcx],al
> > > > > >
> > > > > > +        sub     rdx,1
> > > > > >
> > > > > > +        lea     rcx,[1+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$ittle
> > > > > >
> > > > > > +$L$ret:
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$ot:
> > > > > >
> > > > > > +        test    rcx,7
> > > > > >
> > > > > > +        jz      NEAR $L$aligned
> > > > > >
> > > > > > +        mov     BYTE[rcx],al
> > > > > >
> > > > > > +        lea     rdx,[((-1))+rdx]
> > > > > >
> > > > > > +        lea     rcx,[1+rcx]
> > > > > >
> > > > > > +        jmp     NEAR $L$ot
> > > > > >
> > > > > > +$L$aligned:
> > > > > >
> > > > > > +        mov     QWORD[rcx],rax
> > > > > >
> > > > > > +        lea     rdx,[((-8))+rdx]
> > > > > >
> > > > > > +        test    rdx,-8
> > > > > >
> > > > > > +        lea     rcx,[8+rcx]
> > > > > >
> > > > > > +        jnz     NEAR $L$aligned
> > > > > >
> > > > > > +        cmp     rdx,0
> > > > > >
> > > > > > +        jne     NEAR $L$ittle
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  CRYPTO_memcmp
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +CRYPTO_memcmp:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rax,rax
> > > > > >
> > > > > > +        xor     r10,r10
> > > > > >
> > > > > > +        cmp     r8,0
> > > > > >
> > > > > > +        je      NEAR $L$no_data
> > > > > >
> > > > > > +        cmp     r8,16
> > > > > >
> > > > > > +        jne     NEAR $L$oop_cmp
> > > > > >
> > > > > > +        mov     r10,QWORD[rcx]
> > > > > >
> > > > > > +        mov     r11,QWORD[8+rcx]
> > > > > >
> > > > > > +        mov     r8,1
> > > > > >
> > > > > > +        xor     r10,QWORD[rdx]
> > > > > >
> > > > > > +        xor     r11,QWORD[8+rdx]
> > > > > >
> > > > > > +        or      r10,r11
> > > > > >
> > > > > > +        cmovnz  rax,r8
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$oop_cmp:
> > > > > >
> > > > > > +        mov     r10b,BYTE[rcx]
> > > > > >
> > > > > > +        lea     rcx,[1+rcx]
> > > > > >
> > > > > > +        xor     r10b,BYTE[rdx]
> > > > > >
> > > > > > +        lea     rdx,[1+rdx]
> > > > > >
> > > > > > +        or      al,r10b
> > > > > >
> > > > > > +        dec     r8
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_cmp
> > > > > >
> > > > > > +        neg     rax
> > > > > >
> > > > > > +        shr     rax,63
> > > > > >
> > > > > > +$L$no_data:
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  OPENSSL_wipe_cpu
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +OPENSSL_wipe_cpu:
> > > > > >
> > > > > > +        pxor    xmm0,xmm0
> > > > > >
> > > > > > +        pxor    xmm1,xmm1
> > > > > >
> > > > > > +        pxor    xmm2,xmm2
> > > > > >
> > > > > > +        pxor    xmm3,xmm3
> > > > > >
> > > > > > +        pxor    xmm4,xmm4
> > > > > >
> > > > > > +        pxor    xmm5,xmm5
> > > > > >
> > > > > > +        xor     rcx,rcx
> > > > > >
> > > > > > +        xor     rdx,rdx
> > > > > >
> > > > > > +        xor     r8,r8
> > > > > >
> > > > > > +        xor     r9,r9
> > > > > >
> > > > > > +        xor     r10,r10
> > > > > >
> > > > > > +        xor     r11,r11
> > > > > >
> > > > > > +        lea     rax,[8+rsp]
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  OPENSSL_instrument_bus
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +OPENSSL_instrument_bus:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10,rcx
> > > > > >
> > > > > > +        mov     rcx,rdx
> > > > > >
> > > > > > +        mov     r11,rdx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        rdtsc
> > > > > >
> > > > > > +        mov     r8d,eax
> > > > > >
> > > > > > +        mov     r9d,0
> > > > > >
> > > > > > +        clflush [r10]
> > > > > >
> > > > > > +DB      0xf0
> > > > > >
> > > > > > +        add     DWORD[r10],r9d
> > > > > >
> > > > > > +        jmp     NEAR $L$oop
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$oop: rdtsc
> > > > > >
> > > > > > +        mov     edx,eax
> > > > > >
> > > > > > +        sub     eax,r8d
> > > > > >
> > > > > > +        mov     r8d,edx
> > > > > >
> > > > > > +        mov     r9d,eax
> > > > > >
> > > > > > +        clflush [r10]
> > > > > >
> > > > > > +DB      0xf0
> > > > > >
> > > > > > +        add     DWORD[r10],eax
> > > > > >
> > > > > > +        lea     r10,[4+r10]
> > > > > >
> > > > > > +        sub     rcx,1
> > > > > >
> > > > > > +        jnz     NEAR $L$oop
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     rax,r11
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  OPENSSL_instrument_bus2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +OPENSSL_instrument_bus2:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r10,rcx
> > > > > >
> > > > > > +        mov     rcx,rdx
> > > > > >
> > > > > > +        mov     r11,r8
> > > > > >
> > > > > > +        mov     QWORD[8+rsp],rcx
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        rdtsc
> > > > > >
> > > > > > +        mov     r8d,eax
> > > > > >
> > > > > > +        mov     r9d,0
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        clflush [r10]
> > > > > >
> > > > > > +DB      0xf0
> > > > > >
> > > > > > +        add     DWORD[r10],r9d
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        rdtsc
> > > > > >
> > > > > > +        mov     edx,eax
> > > > > >
> > > > > > +        sub     eax,r8d
> > > > > >
> > > > > > +        mov     r8d,edx
> > > > > >
> > > > > > +        mov     r9d,eax
> > > > > >
> > > > > > +$L$oop2:
> > > > > >
> > > > > > +        clflush [r10]
> > > > > >
> > > > > > +DB      0xf0
> > > > > >
> > > > > > +        add     DWORD[r10],eax
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        sub     r11,1
> > > > > >
> > > > > > +        jz      NEAR $L$done2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        rdtsc
> > > > > >
> > > > > > +        mov     edx,eax
> > > > > >
> > > > > > +        sub     eax,r8d
> > > > > >
> > > > > > +        mov     r8d,edx
> > > > > >
> > > > > > +        cmp     eax,r9d
> > > > > >
> > > > > > +        mov     r9d,eax
> > > > > >
> > > > > > +        mov     edx,0
> > > > > >
> > > > > > +        setne   dl
> > > > > >
> > > > > > +        sub     rcx,rdx
> > > > > >
> > > > > > +        lea     r10,[rdx*4+r10]
> > > > > >
> > > > > > +        jnz     NEAR $L$oop2
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$done2:
> > > > > >
> > > > > > +        mov     rax,QWORD[8+rsp]
> > > > > >
> > > > > > +        sub     rax,rcx
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  OPENSSL_ia32_rdrand_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +OPENSSL_ia32_rdrand_bytes:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rax,rax
> > > > > >
> > > > > > +        cmp     rdx,0
> > > > > >
> > > > > > +        je      NEAR $L$done_rdrand_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r11,8
> > > > > >
> > > > > > +$L$oop_rdrand_bytes:
> > > > > >
> > > > > > +DB      73,15,199,242
> > > > > >
> > > > > > +        jc      NEAR $L$break_rdrand_bytes
> > > > > >
> > > > > > +        dec     r11
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_rdrand_bytes
> > > > > >
> > > > > > +        jmp     NEAR $L$done_rdrand_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$break_rdrand_bytes:
> > > > > >
> > > > > > +        cmp     rdx,8
> > > > > >
> > > > > > +        jb      NEAR $L$tail_rdrand_bytes
> > > > > >
> > > > > > +        mov     QWORD[rcx],r10
> > > > > >
> > > > > > +        lea     rcx,[8+rcx]
> > > > > >
> > > > > > +        add     rax,8
> > > > > >
> > > > > > +        sub     rdx,8
> > > > > >
> > > > > > +        jz      NEAR $L$done_rdrand_bytes
> > > > > >
> > > > > > +        mov     r11,8
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_rdrand_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$tail_rdrand_bytes:
> > > > > >
> > > > > > +        mov     BYTE[rcx],r10b
> > > > > >
> > > > > > +        lea     rcx,[1+rcx]
> > > > > >
> > > > > > +        inc     rax
> > > > > >
> > > > > > +        shr     r10,8
> > > > > >
> > > > > > +        dec     rdx
> > > > > >
> > > > > > +        jnz     NEAR $L$tail_rdrand_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$done_rdrand_bytes:
> > > > > >
> > > > > > +        xor     r10,r10
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +global  OPENSSL_ia32_rdseed_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +OPENSSL_ia32_rdseed_bytes:
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        xor     rax,rax
> > > > > >
> > > > > > +        cmp     rdx,0
> > > > > >
> > > > > > +        je      NEAR $L$done_rdseed_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        mov     r11,8
> > > > > >
> > > > > > +$L$oop_rdseed_bytes:
> > > > > >
> > > > > > +DB      73,15,199,250
> > > > > >
> > > > > > +        jc      NEAR $L$break_rdseed_bytes
> > > > > >
> > > > > > +        dec     r11
> > > > > >
> > > > > > +        jnz     NEAR $L$oop_rdseed_bytes
> > > > > >
> > > > > > +        jmp     NEAR $L$done_rdseed_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$break_rdseed_bytes:
> > > > > >
> > > > > > +        cmp     rdx,8
> > > > > >
> > > > > > +        jb      NEAR $L$tail_rdseed_bytes
> > > > > >
> > > > > > +        mov     QWORD[rcx],r10
> > > > > >
> > > > > > +        lea     rcx,[8+rcx]
> > > > > >
> > > > > > +        add     rax,8
> > > > > >
> > > > > > +        sub     rdx,8
> > > > > >
> > > > > > +        jz      NEAR $L$done_rdseed_bytes
> > > > > >
> > > > > > +        mov     r11,8
> > > > > >
> > > > > > +        jmp     NEAR $L$oop_rdseed_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +ALIGN   16
> > > > > >
> > > > > > +$L$tail_rdseed_bytes:
> > > > > >
> > > > > > +        mov     BYTE[rcx],r10b
> > > > > >
> > > > > > +        lea     rcx,[1+rcx]
> > > > > >
> > > > > > +        inc     rax
> > > > > >
> > > > > > +        shr     r10,8
> > > > > >
> > > > > > +        dec     rdx
> > > > > >
> > > > > > +        jnz     NEAR $L$tail_rdseed_bytes
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +$L$done_rdseed_bytes:
> > > > > >
> > > > > > +        xor     r10,r10
> > > > > >
> > > > > > +        DB      0F3h,0C3h               ;repret
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +
> > > > > >
> > > > > > --
> > > > > > 2.28.0.windows.1


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

* Re: [edk2-devel] [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
  2020-08-18 16:15             ` Michael D Kinney
@ 2020-08-18 21:33               ` Sean
  2020-08-18 23:29                 ` Andrew Fish
  2020-08-19 10:43                 ` Laszlo Ersek
  0 siblings, 2 replies; 42+ messages in thread
From: Sean @ 2020-08-18 21:33 UTC (permalink / raw)
  To: devel, michael.d.kinney, Wang, Jian J, Zurcher, Christopher J,
	Yao, Jiewen
  Cc: Lu, XiaoyuX, Ard Biesheuvel

Mike,

I am not technically a basetool maintainer but as an active user/dev in 
basetools, i would be opposed to bringing in perl as an edk2 dependency. 
Also introducing another language is counter to the goal of aligning on 
python and improving the python used within edk2.  From my perspective 
the openssl config case isn't strong enough to counter the above goal. 
In fact as you know we are trying to change the paradigm for 
Crypto/OpenSSL with the Crypto Driver 
(https://github.com/tianocore/edk2/tree/master/CryptoPkg/Driver) and 
BaseCryptLibOnProtocolPpi 
(https://github.com/tianocore/edk2/tree/master/CryptoPkg/Library/BaseCryptLibOnProtocolPpi) 
work so that everyday development doesn't need to compile openssl in 
their edk2 builds.

So I support leaving it as is which means if you have to change 
something in openssl config you deal with it and a special one off.

Just my 2 cents.

Thanks
Sean


On 8/18/2020 9:15 AM, Michael D Kinney wrote:
> Jian,
> 
> I want the BaseTools maintainers to evaluate these build requirements.
> 
> We already have a number of tool dependencies.  Adding one more for perl
> may be acceptable.
> 
> Mike
> 
>> -----Original Message-----
>> From: Wang, Jian J <jian.j.wang@intel.com>
>> Sent: Monday, August 17, 2020 7:37 PM
>> To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Kinney, Michael D
>> <michael.d.kinney@intel.com>; devel@edk2.groups.io
>> Cc: Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
>> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
>>
>> I agree with Christopher. Currently manual works are inevitable in openssl upgrade,
>> because perl script is used to automate part of code generation. It's hard to ask
>> Windows developers to install an extra interpreter like perl, considering it's not
>> popular in Windows environment.
>>
>> Regards,
>> Jian
>>
>>> -----Original Message-----
>>> From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
>>> Sent: Saturday, August 15, 2020 3:35 AM
>>> To: Yao, Jiewen <jiewen.yao@intel.com>; Kinney, Michael D
>>> <michael.d.kinney@intel.com>; devel@edk2.groups.io
>>> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
>>> Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated
>>> assembly files for X64
>>>
>>> The current OpenSSL "UEFI" configuration depends on the OpenSSL build
>>> happening in a Unix-like environment. For a Windows-based build, this must be
>>> done in a wrapper such as Cygwin/git bash or WSL. Integrating the OpenSSL
>>> config step into the build process is a non-trivial change.
>>>
>>>>>> That means, whenever we upgrade the openssl, we need manually
>>> generate
>>>>>> them again.
>>>>>> Any step by step, or readme to tell us how to do that?
>>>
>>> The process for generating these X64 files is virtually identical to the already-
>>> existing maintainer process for OpensslLib, with only one additional argument
>>> required to process_files.pl.
>>>
>>> OpensslLib as it exists today in EDK2 already includes auto-generated files from
>>> the Perl configure process. If we want to re-architect how we include OpenSSL
>>> into EDK2, I think that should be done in a different patch set. Additionally, such
>>> a large task might be a waste of time with the release of OpenSSL 3 happening
>>> later this year. They are making changes to their build system, and I think that if
>>> we are going to re-architect our side of it, we should wait until we are adopting
>>> OpenSSL 3.
>>>
>>> --
>>> Christopher Zurcher
>>>
>>>> -----Original Message-----
>>>> From: Yao, Jiewen <jiewen.yao@intel.com>
>>>> Sent: Thursday, August 13, 2020 08:46
>>>> To: Kinney, Michael D <michael.d.kinney@intel.com>; Zurcher, Christopher J
>>>> <christopher.j.zurcher@intel.com>; devel@edk2.groups.io
>>>> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
>>> <xiaoyux.lu@intel.com>;
>>>> Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>>> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
>>> generated
>>>> assembly files for X64
>>>>
>>>> Thank you Mike to help on this.
>>>>
>>>> I also believe that the best option is to integrate the auto-gen process in
>>>> base tool.
>>>>
>>>>
>>>>
>>>>> -----Original Message-----
>>>>> From: Kinney, Michael D <michael.d.kinney@intel.com>
>>>>> Sent: Thursday, August 13, 2020 11:38 PM
>>>>> To: Yao, Jiewen <jiewen.yao@intel.com>; Zurcher, Christopher J
>>>>> <christopher.j.zurcher@intel.com>; devel@edk2.groups.io; Kinney, Michael
>>> D
>>>>> <michael.d.kinney@intel.com>
>>>>> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
>>>> <xiaoyux.lu@intel.com>;
>>>>> Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>>>> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
>>> generated
>>>>> assembly files for X64
>>>>>
>>>>> Hi Jiewen,
>>>>>
>>>>> For this use case, generating the files as part of the build process would
>>>> add
>>>>> a dependency in pearl.
>>>>>
>>>>> Based on other recent CryptoPkg changes and some being discussed in BZ, I
>>>> am
>>>>> seeing more changes to the OpenSLL .pl configuration files, and I am
>>>> concerned
>>>>> that based on platform requirements, we may need to build OpenSSL with
>>>>> different .pl config file settings which would also add a pearl dependency
>>>>> to the build.
>>>>>
>>>>> So exploring what it would take to add the pearl dependency to the build
>>>> system
>>>>> is worth exploring and if successful would eliminate the need to checkin
>>>> these
>>>>> types of autogenerated files.  This would also reduce maintenance of the
>>>>> auto-genererated files when EDK II moves to a new version of OpenSSL.
>>>>>
>>>>> @Cristopher - Can you please share a branch that uses pearl to generate the
>>>>> files
>>>>> instead of checking them in?  I would like the BaseTools maintainers to
>>>> review
>>>>> that and evaluate adding the pearl dependency.  Hopefully, we can make the
>>>>> pearl dependency detectable so it is only required if the build requires
>>>> it.
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Mike
>>>>>
>>>>>> -----Original Message-----
>>>>>> From: Yao, Jiewen <jiewen.yao@intel.com>
>>>>>> Sent: Thursday, August 13, 2020 8:25 AM
>>>>>> To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
>>>>> devel@edk2.groups.io
>>>>>> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
>>>>> <xiaoyux.lu@intel.com>; Kinney, Michael D
>>>>>> <michael.d.kinney@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>>>>> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
>>>>> generated assembly files for X64
>>>>>>
>>>>>> + Mike Kinney
>>>>>>
>>>>>> I am not sure if it is a right way to check in auto-generated file.
>>>>>> That means, whenever we upgrade the openssl, we need manually
>>> generate
>>>>> them again.
>>>>>> Any step by step, or readme to tell us how to do that?
>>>>>>
>>>>>> Mike, would you please double confirm what is the right way for auto-
>>>>> generated file in EDKII?
>>>>>>
>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
>>>>>>> Sent: Tuesday, August 4, 2020 8:24 AM
>>>>>>> To: devel@edk2.groups.io
>>>>>>> Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
>>>>> <jian.j.wang@intel.com>;
>>>>>>> Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
>>>>> <ard.biesheuvel@linaro.org>
>>>>>>> Subject: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
>>> generated
>>>>>>> assembly files for X64
>>>>>>>
>>>>>>> BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
>>>>>>>
>>>>>>> Adding the auto-generated assembly files for the X64 architecture.
>>>>>>>
>>>>>>> Cc: Jiewen Yao <jiewen.yao@intel.com>
>>>>>>> Cc: Jian J Wang <jian.j.wang@intel.com>
>>>>>>> Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
>>>>>>> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>>>>>> Signed-off-by: Christopher J Zurcher <christopher.j.zurcher@intel.com>
>>>>>>> ---
>>>>>>>   CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm
>>> |
>>>>> 732
>>>>>>> +++
>>>>>>>   CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm
>>> |
>>>>>>> 1916 ++++++++
>>>>>>>   CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
>>> x86_64.nasm |
>>>>>>> 78 +
>>>>>>>   CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm        |
>>>>> 5103
>>>>>>> ++++++++++++++++++++
>>>>>>>   CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm        |
>>>>> 1173
>>>>>>> +++++
>>>>>>>   CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm
>>> |
>>>>>>> 1569 ++++++
>>>>>>>   CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm
>>> |
>>>>> 3137
>>>>>>> ++++++++++++
>>>>>>>   CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm         |
>>>>> 2884
>>>>>>> +++++++++++
>>>>>>>   CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm
>>> |
>>>>>>> 3461 +++++++++++++
>>>>>>>   CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
>>> |
>>>>> 3313
>>>>>>> +++++++++++++
>>>>>>>   CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
>>> |
>>>>> 1938
>>>>>>> ++++++++
>>>>>>>   CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm             |
>>>> 491
>>>>> ++
>>>>>>>   12 files changed, 25795 insertions(+)
>>>>>>>
>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
>>>>>>> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
>>>>>>> x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..1a3ed1dd35
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
>>> x86_64.nasm
>>>>>>> @@ -0,0 +1,732 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>>
>>>>>>> +; Generated from openssl/crypto/aes/asm/aesni-mb-x86_64.pl
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>
>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>> copy
>>>>>>>
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +default rel
>>>>>>>
>>>>>>> +%define XMMWORD
>>>>>>>
>>>>>>> +%define YMMWORD
>>>>>>>
>>>>>>> +%define ZMMWORD
>>>>>>>
>>>>>>> +section .text code align=64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  aesni_multi_cbc_encrypt
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +aesni_multi_cbc_encrypt:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_aesni_multi_cbc_encrypt:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>>
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>>
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>>
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>>
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm10
>>>>>>>
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm11
>>>>>>>
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm12
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-104)+rax],xmm13
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-88)+rax],xmm14
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-72)+rax],xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     rsp,48
>>>>>>>
>>>>>>> +        and     rsp,-64
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$enc4x_body:
>>>>>>>
>>>>>>> +        movdqu  xmm12,XMMWORD[rsi]
>>>>>>>
>>>>>>> +        lea     rsi,[120+rsi]
>>>>>>>
>>>>>>> +        lea     rdi,[80+rdi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$enc4x_loop_grande:
>>>>>>>
>>>>>>> +        mov     DWORD[24+rsp],edx
>>>>>>>
>>>>>>> +        xor     edx,edx
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[((-64))+rdi]
>>>>>>>
>>>>>>> +        mov     r8,QWORD[((-80))+rdi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        mov     r12,QWORD[((-72))+rdi]
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[((-56))+rdi]
>>>>>>>
>>>>>>> +        mov     DWORD[32+rsp],ecx
>>>>>>>
>>>>>>> +        cmovle  r8,rsp
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[((-24))+rdi]
>>>>>>>
>>>>>>> +        mov     r9,QWORD[((-40))+rdi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        mov     r13,QWORD[((-32))+rdi]
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        movdqu  xmm3,XMMWORD[((-16))+rdi]
>>>>>>>
>>>>>>> +        mov     DWORD[36+rsp],ecx
>>>>>>>
>>>>>>> +        cmovle  r9,rsp
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[16+rdi]
>>>>>>>
>>>>>>> +        mov     r10,QWORD[rdi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        mov     r14,QWORD[8+rdi]
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        movdqu  xmm4,XMMWORD[24+rdi]
>>>>>>>
>>>>>>> +        mov     DWORD[40+rsp],ecx
>>>>>>>
>>>>>>> +        cmovle  r10,rsp
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[56+rdi]
>>>>>>>
>>>>>>> +        mov     r11,QWORD[40+rdi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        mov     r15,QWORD[48+rdi]
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[64+rdi]
>>>>>>>
>>>>>>> +        mov     DWORD[44+rsp],ecx
>>>>>>>
>>>>>>> +        cmovle  r11,rsp
>>>>>>>
>>>>>>> +        test    edx,edx
>>>>>>>
>>>>>>> +        jz      NEAR $L$enc4x_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((16-120))+rsi]
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm12
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((32-120))+rsi]
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm12
>>>>>>>
>>>>>>> +        mov     eax,DWORD[((240-120))+rsi]
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[r8]
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm12
>>>>>>>
>>>>>>> +        movdqu  xmm7,XMMWORD[r9]
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm6
>>>>>>>
>>>>>>> +        movdqu  xmm8,XMMWORD[r10]
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm7
>>>>>>>
>>>>>>> +        movdqu  xmm9,XMMWORD[r11]
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm10,XMMWORD[32+rsp]
>>>>>>>
>>>>>>> +        xor     rbx,rbx
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_enc4x
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$oop_enc4x:
>>>>>>>
>>>>>>> +        add     rbx,16
>>>>>>>
>>>>>>> +        lea     rbp,[16+rsp]
>>>>>>>
>>>>>>> +        mov     ecx,1
>>>>>>>
>>>>>>> +        sub     rbp,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        prefetcht0      [31+rbx*1+r8]
>>>>>>>
>>>>>>> +        prefetcht0      [31+rbx*1+r9]
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +        prefetcht0      [31+rbx*1+r10]
>>>>>>>
>>>>>>> +        prefetcht0      [31+rbx*1+r10]
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +DB      102,15,56,220,233
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((48-120))+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[32+rsp]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      102,15,56,220,216
>>>>>>>
>>>>>>> +DB      102,15,56,220,224
>>>>>>>
>>>>>>> +        cmovge  r8,rbp
>>>>>>>
>>>>>>> +        cmovg   r12,rbp
>>>>>>>
>>>>>>> +DB      102,15,56,220,232
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-56))+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[36+rsp]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +        cmovge  r9,rbp
>>>>>>>
>>>>>>> +        cmovg   r13,rbp
>>>>>>>
>>>>>>> +DB      102,15,56,220,233
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-40))+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[40+rsp]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      102,15,56,220,216
>>>>>>>
>>>>>>> +DB      102,15,56,220,224
>>>>>>>
>>>>>>> +        cmovge  r10,rbp
>>>>>>>
>>>>>>> +        cmovg   r14,rbp
>>>>>>>
>>>>>>> +DB      102,15,56,220,232
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-24))+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[44+rsp]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +        cmovge  r11,rbp
>>>>>>>
>>>>>>> +        cmovg   r15,rbp
>>>>>>>
>>>>>>> +DB      102,15,56,220,233
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-8))+rsi]
>>>>>>>
>>>>>>> +        movdqa  xmm11,xmm10
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        prefetcht0      [15+rbx*1+r12]
>>>>>>>
>>>>>>> +        prefetcht0      [15+rbx*1+r13]
>>>>>>>
>>>>>>> +DB      102,15,56,220,216
>>>>>>>
>>>>>>> +        prefetcht0      [15+rbx*1+r14]
>>>>>>>
>>>>>>> +        prefetcht0      [15+rbx*1+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,224
>>>>>>>
>>>>>>> +DB      102,15,56,220,232
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((128-120))+rsi]
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        pcmpgtd xmm11,xmm12
>>>>>>>
>>>>>>> +        movdqu  xmm12,XMMWORD[((-120))+rsi]
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm11
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm10
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +DB      102,15,56,220,233
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((144-120))+rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        cmp     eax,11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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[((160-120))+rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        jb      NEAR $L$enc4x_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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[((176-120))+rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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[((192-120))+rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        je      NEAR $L$enc4x_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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[((208-120))+rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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[((224-120))+rsi]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$enc4x_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$enc4x_tail:
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +DB      102,15,56,220,233
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[rbx*1+r8]
>>>>>>>
>>>>>>> +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,221,208
>>>>>>>
>>>>>>> +        movdqu  xmm7,XMMWORD[rbx*1+r9]
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +DB      102,15,56,221,216
>>>>>>>
>>>>>>> +        movdqu  xmm8,XMMWORD[rbx*1+r10]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm12
>>>>>>>
>>>>>>> +DB      102,15,56,221,224
>>>>>>>
>>>>>>> +        movdqu  xmm9,XMMWORD[rbx*1+r11]
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm12
>>>>>>>
>>>>>>> +DB      102,15,56,221,232
>>>>>>>
>>>>>>> +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm6
>>>>>>>
>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm7
>>>>>>>
>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm8
>>>>>>>
>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        dec     edx
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_enc4x
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[16+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edx,DWORD[24+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rdi,[160+rdi]
>>>>>>>
>>>>>>> +        dec     edx
>>>>>>>
>>>>>>> +        jnz     NEAR $L$enc4x_loop_grande
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$enc4x_done:
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[((-216))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[((-200))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[((-184))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[((-168))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm10,XMMWORD[((-152))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm11,XMMWORD[((-136))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm12,XMMWORD[((-120))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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$enc4x_epilogue:
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$SEH_end_aesni_multi_cbc_encrypt:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  aesni_multi_cbc_decrypt
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +aesni_multi_cbc_decrypt:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_aesni_multi_cbc_decrypt:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>>
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>>
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>>
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>>
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm10
>>>>>>>
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm11
>>>>>>>
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm12
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-104)+rax],xmm13
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-88)+rax],xmm14
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-72)+rax],xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     rsp,48
>>>>>>>
>>>>>>> +        and     rsp,-64
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$dec4x_body:
>>>>>>>
>>>>>>> +        movdqu  xmm12,XMMWORD[rsi]
>>>>>>>
>>>>>>> +        lea     rsi,[120+rsi]
>>>>>>>
>>>>>>> +        lea     rdi,[80+rdi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$dec4x_loop_grande:
>>>>>>>
>>>>>>> +        mov     DWORD[24+rsp],edx
>>>>>>>
>>>>>>> +        xor     edx,edx
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[((-64))+rdi]
>>>>>>>
>>>>>>> +        mov     r8,QWORD[((-80))+rdi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        mov     r12,QWORD[((-72))+rdi]
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[((-56))+rdi]
>>>>>>>
>>>>>>> +        mov     DWORD[32+rsp],ecx
>>>>>>>
>>>>>>> +        cmovle  r8,rsp
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[((-24))+rdi]
>>>>>>>
>>>>>>> +        mov     r9,QWORD[((-40))+rdi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        mov     r13,QWORD[((-32))+rdi]
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        movdqu  xmm7,XMMWORD[((-16))+rdi]
>>>>>>>
>>>>>>> +        mov     DWORD[36+rsp],ecx
>>>>>>>
>>>>>>> +        cmovle  r9,rsp
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[16+rdi]
>>>>>>>
>>>>>>> +        mov     r10,QWORD[rdi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        mov     r14,QWORD[8+rdi]
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        movdqu  xmm8,XMMWORD[24+rdi]
>>>>>>>
>>>>>>> +        mov     DWORD[40+rsp],ecx
>>>>>>>
>>>>>>> +        cmovle  r10,rsp
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[56+rdi]
>>>>>>>
>>>>>>> +        mov     r11,QWORD[40+rdi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        mov     r15,QWORD[48+rdi]
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        movdqu  xmm9,XMMWORD[64+rdi]
>>>>>>>
>>>>>>> +        mov     DWORD[44+rsp],ecx
>>>>>>>
>>>>>>> +        cmovle  r11,rsp
>>>>>>>
>>>>>>> +        test    edx,edx
>>>>>>>
>>>>>>> +        jz      NEAR $L$dec4x_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((16-120))+rsi]
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((32-120))+rsi]
>>>>>>>
>>>>>>> +        mov     eax,DWORD[((240-120))+rsi]
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[r8]
>>>>>>>
>>>>>>> +        movdqu  xmm3,XMMWORD[r9]
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm12
>>>>>>>
>>>>>>> +        movdqu  xmm4,XMMWORD[r10]
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm12
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[r11]
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm10,XMMWORD[32+rsp]
>>>>>>>
>>>>>>> +        xor     rbx,rbx
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_dec4x
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$oop_dec4x:
>>>>>>>
>>>>>>> +        add     rbx,16
>>>>>>>
>>>>>>> +        lea     rbp,[16+rsp]
>>>>>>>
>>>>>>> +        mov     ecx,1
>>>>>>>
>>>>>>> +        sub     rbp,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +        prefetcht0      [31+rbx*1+r8]
>>>>>>>
>>>>>>> +        prefetcht0      [31+rbx*1+r9]
>>>>>>>
>>>>>>> +DB      102,15,56,222,217
>>>>>>>
>>>>>>> +        prefetcht0      [31+rbx*1+r10]
>>>>>>>
>>>>>>> +        prefetcht0      [31+rbx*1+r11]
>>>>>>>
>>>>>>> +DB      102,15,56,222,225
>>>>>>>
>>>>>>> +DB      102,15,56,222,233
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((48-120))+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[32+rsp]
>>>>>>>
>>>>>>> +DB      102,15,56,222,208
>>>>>>>
>>>>>>> +DB      102,15,56,222,216
>>>>>>>
>>>>>>> +DB      102,15,56,222,224
>>>>>>>
>>>>>>> +        cmovge  r8,rbp
>>>>>>>
>>>>>>> +        cmovg   r12,rbp
>>>>>>>
>>>>>>> +DB      102,15,56,222,232
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-56))+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[36+rsp]
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +DB      102,15,56,222,217
>>>>>>>
>>>>>>> +DB      102,15,56,222,225
>>>>>>>
>>>>>>> +        cmovge  r9,rbp
>>>>>>>
>>>>>>> +        cmovg   r13,rbp
>>>>>>>
>>>>>>> +DB      102,15,56,222,233
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-40))+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[40+rsp]
>>>>>>>
>>>>>>> +DB      102,15,56,222,208
>>>>>>>
>>>>>>> +DB      102,15,56,222,216
>>>>>>>
>>>>>>> +DB      102,15,56,222,224
>>>>>>>
>>>>>>> +        cmovge  r10,rbp
>>>>>>>
>>>>>>> +        cmovg   r14,rbp
>>>>>>>
>>>>>>> +DB      102,15,56,222,232
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-24))+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[44+rsp]
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +DB      102,15,56,222,217
>>>>>>>
>>>>>>> +DB      102,15,56,222,225
>>>>>>>
>>>>>>> +        cmovge  r11,rbp
>>>>>>>
>>>>>>> +        cmovg   r15,rbp
>>>>>>>
>>>>>>> +DB      102,15,56,222,233
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-8))+rsi]
>>>>>>>
>>>>>>> +        movdqa  xmm11,xmm10
>>>>>>>
>>>>>>> +DB      102,15,56,222,208
>>>>>>>
>>>>>>> +        prefetcht0      [15+rbx*1+r12]
>>>>>>>
>>>>>>> +        prefetcht0      [15+rbx*1+r13]
>>>>>>>
>>>>>>> +DB      102,15,56,222,216
>>>>>>>
>>>>>>> +        prefetcht0      [15+rbx*1+r14]
>>>>>>>
>>>>>>> +        prefetcht0      [15+rbx*1+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,222,224
>>>>>>>
>>>>>>> +DB      102,15,56,222,232
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((128-120))+rsi]
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +        pcmpgtd xmm11,xmm12
>>>>>>>
>>>>>>> +        movdqu  xmm12,XMMWORD[((-120))+rsi]
>>>>>>>
>>>>>>> +DB      102,15,56,222,217
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm11
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm10
>>>>>>>
>>>>>>> +DB      102,15,56,222,225
>>>>>>>
>>>>>>> +DB      102,15,56,222,233
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((144-120))+rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        cmp     eax,11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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[((160-120))+rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        jb      NEAR $L$dec4x_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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[((176-120))+rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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[((192-120))+rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        je      NEAR $L$dec4x_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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[((208-120))+rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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[((224-120))+rsi]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$dec4x_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$dec4x_tail:
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +DB      102,15,56,222,217
>>>>>>>
>>>>>>> +DB      102,15,56,222,225
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm0
>>>>>>>
>>>>>>> +DB      102,15,56,222,233
>>>>>>>
>>>>>>> +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm0
>>>>>>>
>>>>>>> +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,223,214
>>>>>>>
>>>>>>> +DB      102,15,56,223,223
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[((-16))+rbx*1+r8]
>>>>>>>
>>>>>>> +        movdqu  xmm7,XMMWORD[((-16))+rbx*1+r9]
>>>>>>>
>>>>>>> +DB      102,65,15,56,223,224
>>>>>>>
>>>>>>> +DB      102,65,15,56,223,233
>>>>>>>
>>>>>>> +        movdqu  xmm8,XMMWORD[((-16))+rbx*1+r10]
>>>>>>>
>>>>>>> +        movdqu  xmm9,XMMWORD[((-16))+rbx*1+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[rbx*1+r8]
>>>>>>>
>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
>>>>>>>
>>>>>>> +        movdqu  xmm3,XMMWORD[rbx*1+r9]
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm12
>>>>>>>
>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
>>>>>>>
>>>>>>> +        movdqu  xmm4,XMMWORD[rbx*1+r10]
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm12
>>>>>>>
>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[rbx*1+r11]
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        dec     edx
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_dec4x
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[16+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edx,DWORD[24+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rdi,[160+rdi]
>>>>>>>
>>>>>>> +        dec     edx
>>>>>>>
>>>>>>> +        jnz     NEAR $L$dec4x_loop_grande
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$dec4x_done:
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[((-216))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[((-200))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[((-184))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[((-168))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm10,XMMWORD[((-152))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm11,XMMWORD[((-136))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm12,XMMWORD[((-120))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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$dec4x_epilogue:
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$SEH_end_aesni_multi_cbc_decrypt:
>>>>>>>
>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +se_handler:
>>>>>>>
>>>>>>> +        push    rsi
>>>>>>>
>>>>>>> +        push    rdi
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +        pushfq
>>>>>>>
>>>>>>> +        sub     rsp,64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[16+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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     rsi,[((-56-160))+rax]
>>>>>>>
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>
>>>>>>> +        mov     ecx,20
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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[40+r9]
>>>>>>>
>>>>>>> +        mov     rsi,r8
>>>>>>>
>>>>>>> +        mov     ecx,154
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,r9
>>>>>>>
>>>>>>> +        xor     rcx,rcx
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +        popfq
>>>>>>>
>>>>>>> +        pop     r15
>>>>>>>
>>>>>>> +        pop     r14
>>>>>>>
>>>>>>> +        pop     r13
>>>>>>>
>>>>>>> +        pop     r12
>>>>>>>
>>>>>>> +        pop     rbp
>>>>>>>
>>>>>>> +        pop     rbx
>>>>>>>
>>>>>>> +        pop     rdi
>>>>>>>
>>>>>>> +        pop     rsi
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +section .pdata rdata align=4
>>>>>>>
>>>>>>> +ALIGN   4
>>>>>>>
>>>>>>> +        DD      $L$SEH_begin_aesni_multi_cbc_encrypt wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_end_aesni_multi_cbc_encrypt wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_info_aesni_multi_cbc_encrypt wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_begin_aesni_multi_cbc_decrypt wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_end_aesni_multi_cbc_decrypt wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_info_aesni_multi_cbc_decrypt wrt ..imagebase
>>>>>>>
>>>>>>> +section .xdata rdata align=8
>>>>>>>
>>>>>>> +ALIGN   8
>>>>>>>
>>>>>>> +$L$SEH_info_aesni_multi_cbc_encrypt:
>>>>>>>
>>>>>>> +DB      9,0,0,0
>>>>>>>
>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$enc4x_body wrt ..imagebase,$L$enc4x_epilogue
>>>>>>> wrt ..imagebase
>>>>>>>
>>>>>>> +$L$SEH_info_aesni_multi_cbc_decrypt:
>>>>>>>
>>>>>>> +DB      9,0,0,0
>>>>>>>
>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$dec4x_body wrt ..imagebase,$L$dec4x_epilogue
>>>>>>> wrt ..imagebase
>>>>>>>
>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
>>>>>>> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
>>> sha1-
>>>>>>> x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..f4fd9ca50d
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
>>>>> x86_64.nasm
>>>>>>> @@ -0,0 +1,1916 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>>
>>>>>>> +; Generated from openssl/crypto/aes/asm/aesni-sha1-x86_64.pl
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>
>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>> copy
>>>>>>>
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +default rel
>>>>>>>
>>>>>>> +%define XMMWORD
>>>>>>>
>>>>>>> +%define YMMWORD
>>>>>>>
>>>>>>> +%define ZMMWORD
>>>>>>>
>>>>>>> +section .text code align=64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  aesni_cbc_sha1_enc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +aesni_cbc_sha1_enc:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+0))]
>>>>>>>
>>>>>>> +        mov     r11,QWORD[((OPENSSL_ia32cap_P+4))]
>>>>>>>
>>>>>>> +        bt      r11,61
>>>>>>>
>>>>>>> +        jc      NEAR aesni_cbc_sha1_enc_shaext
>>>>>>>
>>>>>>> +        jmp     NEAR aesni_cbc_sha1_enc_ssse3
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +aesni_cbc_sha1_enc_ssse3:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_aesni_cbc_sha1_enc_ssse3:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +        mov     rcx,r9
>>>>>>>
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10,QWORD[56+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[((-264))+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(96+0)+rsp],xmm6
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(96+16)+rsp],xmm7
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(96+32)+rsp],xmm8
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(96+48)+rsp],xmm9
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(96+64)+rsp],xmm10
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(96+80)+rsp],xmm11
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(96+96)+rsp],xmm12
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(96+112)+rsp],xmm13
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(96+128)+rsp],xmm14
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(96+144)+rsp],xmm15
>>>>>>>
>>>>>>> +$L$prologue_ssse3:
>>>>>>>
>>>>>>> +        mov     r12,rdi
>>>>>>>
>>>>>>> +        mov     r13,rsi
>>>>>>>
>>>>>>> +        mov     r14,rdx
>>>>>>>
>>>>>>> +        lea     r15,[112+rcx]
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[r8]
>>>>>>>
>>>>>>> +        mov     QWORD[88+rsp],r8
>>>>>>>
>>>>>>> +        shl     r14,6
>>>>>>>
>>>>>>> +        sub     r13,r12
>>>>>>>
>>>>>>> +        mov     r8d,DWORD[((240-112))+r15]
>>>>>>>
>>>>>>> +        add     r14,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r11,[K_XX_XX]
>>>>>>>
>>>>>>> +        mov     eax,DWORD[r9]
>>>>>>>
>>>>>>> +        mov     ebx,DWORD[4+r9]
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[8+r9]
>>>>>>>
>>>>>>> +        mov     edx,DWORD[12+r9]
>>>>>>>
>>>>>>> +        mov     esi,ebx
>>>>>>>
>>>>>>> +        mov     ebp,DWORD[16+r9]
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        and     esi,edi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[64+r11]
>>>>>>>
>>>>>>> +        movdqa  xmm13,XMMWORD[r11]
>>>>>>>
>>>>>>> +        movdqu  xmm4,XMMWORD[r10]
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[16+r10]
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[32+r10]
>>>>>>>
>>>>>>> +        movdqu  xmm7,XMMWORD[48+r10]
>>>>>>>
>>>>>>> +DB      102,15,56,0,227
>>>>>>>
>>>>>>> +DB      102,15,56,0,235
>>>>>>>
>>>>>>> +DB      102,15,56,0,243
>>>>>>>
>>>>>>> +        add     r10,64
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm13
>>>>>>>
>>>>>>> +DB      102,15,56,0,251
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm13
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm13
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[rsp],xmm4
>>>>>>>
>>>>>>> +        psubd   xmm4,xmm13
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm5
>>>>>>>
>>>>>>> +        psubd   xmm5,xmm13
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm6
>>>>>>>
>>>>>>> +        psubd   xmm6,xmm13
>>>>>>>
>>>>>>> +        movups  xmm15,XMMWORD[((-112))+r15]
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+r15]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_ssse3
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$oop_ssse3:
>>>>>>>
>>>>>>> +        ror     ebx,2
>>>>>>>
>>>>>>> +        movups  xmm14,XMMWORD[r12]
>>>>>>>
>>>>>>> +        xorps   xmm14,xmm15
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm14
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-80))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        pshufd  xmm8,xmm4,238
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm7
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm7
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +        add     ebp,DWORD[rsp]
>>>>>>>
>>>>>>> +        punpcklqdq      xmm8,xmm5
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,esi
>>>>>>>
>>>>>>> +        psrldq  xmm12,4
>>>>>>>
>>>>>>> +        and     edi,ebx
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm4
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm6
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        mov     esi,ebp
>>>>>>>
>>>>>>> +        add     edx,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm12
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm13
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-64))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        and     esi,eax
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm8
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        pslldq  xmm3,12
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm8
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        add     ecx,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        psrld   xmm12,31
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,esi
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm3
>>>>>>>
>>>>>>> +        and     edi,ebp
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        psrld   xmm3,30
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        por     xmm8,xmm12
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        mov     esi,ecx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-48))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        pslld   xmm13,2
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[r11]
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        and     esi,edx
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm13
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        pshufd  xmm9,xmm5,238
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm8
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm8
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        add     eax,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        punpcklqdq      xmm9,xmm6
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,esi
>>>>>>>
>>>>>>> +        psrldq  xmm13,4
>>>>>>>
>>>>>>> +        and     edi,ecx
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm5
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-32))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm7
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        mov     esi,eax
>>>>>>>
>>>>>>> +        add     ebp,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm13
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[rsp],xmm3
>>>>>>>
>>>>>>> +        add     ebp,edi
>>>>>>>
>>>>>>> +        and     esi,ebx
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm9
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm9
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        pslldq  xmm12,12
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>
>>>>>>> +        mov     edi,ebp
>>>>>>>
>>>>>>> +        add     edx,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        psrld   xmm13,31
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,esi
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-16))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>>
>>>>>>> +        and     edi,eax
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        psrld   xmm12,30
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        por     xmm9,xmm13
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        mov     esi,edx
>>>>>>>
>>>>>>> +        add     ecx,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        pslld   xmm3,2
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm12
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        movdqa  xmm12,XMMWORD[16+r11]
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,edi
>>>>>>>
>>>>>>> +        and     esi,ebp
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm3
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        pshufd  xmm10,xmm6,238
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm9
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        punpcklqdq      xmm10,xmm7
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        psrldq  xmm3,4
>>>>>>>
>>>>>>> +        and     edi,edx
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm6
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm8
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        mov     esi,ebx
>>>>>>>
>>>>>>> +        add     eax,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm3
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm12
>>>>>>>
>>>>>>> +        add     eax,edi
>>>>>>>
>>>>>>> +        and     esi,ecx
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm10
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        pslldq  xmm13,12
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm10
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +        add     ebp,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        psrld   xmm3,31
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,esi
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm13
>>>>>>>
>>>>>>> +        and     edi,ebx
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        psrld   xmm13,30
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        por     xmm10,xmm3
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        mov     esi,ebp
>>>>>>>
>>>>>>> +        add     edx,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        pslld   xmm12,2
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm13
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        movdqa  xmm13,XMMWORD[16+r11]
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        and     esi,eax
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm12
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        pshufd  xmm11,xmm7,238
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm10
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm10
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        add     ecx,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        punpcklqdq      xmm11,xmm8
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,esi
>>>>>>>
>>>>>>> +        psrldq  xmm12,4
>>>>>>>
>>>>>>> +        and     edi,ebp
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm7
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm9
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        mov     esi,ecx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[48+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm12
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm13
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        and     esi,edx
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm11
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        pslldq  xmm3,12
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm11
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        add     eax,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        psrld   xmm12,31
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,esi
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm3
>>>>>>>
>>>>>>> +        and     edi,ecx
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        psrld   xmm3,30
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        cmp     r8d,11
>>>>>>>
>>>>>>> +        jb      NEAR $L$aesenclast1
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[64+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[80+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        je      NEAR $L$aesenclast1
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[96+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[112+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +$L$aesenclast1:
>>>>>>>
>>>>>>> +DB      102,15,56,221,209
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+r15]
>>>>>>>
>>>>>>> +        por     xmm11,xmm12
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        mov     esi,eax
>>>>>>>
>>>>>>> +        add     ebp,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        pslld   xmm13,2
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm3
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[16+r11]
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,edi
>>>>>>>
>>>>>>> +        and     esi,ebx
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm13
>>>>>>>
>>>>>>> +        pshufd  xmm13,xmm10,238
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm8
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        mov     edi,ebp
>>>>>>>
>>>>>>> +        add     edx,DWORD[rsp]
>>>>>>>
>>>>>>> +        punpcklqdq      xmm13,xmm11
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>
>>>>>>> +        add     edx,esi
>>>>>>>
>>>>>>> +        movups  xmm14,XMMWORD[16+r12]
>>>>>>>
>>>>>>> +        xorps   xmm14,xmm15
>>>>>>>
>>>>>>> +        movups  XMMWORD[r13*1+r12],xmm2
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm14
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-80))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        and     edi,eax
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm3
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm11
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm13
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        mov     esi,edx
>>>>>>>
>>>>>>> +        add     ecx,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm4
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm3
>>>>>>>
>>>>>>> +        add     ecx,edi
>>>>>>>
>>>>>>> +        and     esi,ebp
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        pslld   xmm4,2
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        psrld   xmm13,30
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-64))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        por     xmm4,xmm13
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        pshufd  xmm3,xmm11,238
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        and     edi,edx
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        mov     esi,ebx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,edi
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm9
>>>>>>>
>>>>>>> +        add     ebp,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-48))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        punpcklqdq      xmm3,xmm4
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm6
>>>>>>>
>>>>>>> +        add     ebp,esi
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm12
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm4
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm3
>>>>>>>
>>>>>>> +        add     edx,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        mov     esi,ebp
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm5
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[rsp],xmm12
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        add     ecx,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        pslld   xmm5,2
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        psrld   xmm3,30
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,esi
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-32))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        por     xmm5,xmm3
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        pshufd  xmm12,xmm4,238
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        mov     esi,ecx
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +        add     eax,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        punpcklqdq      xmm12,xmm5
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +        add     eax,esi
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[32+r11]
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm5
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +        add     ebp,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-16))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        mov     esi,eax
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm6
>>>>>>>
>>>>>>> +        add     ebp,edi
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm13
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        pslld   xmm6,2
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        mov     edi,ebp
>>>>>>>
>>>>>>> +        psrld   xmm12,30
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        por     xmm6,xmm12
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        add     ecx,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        pshufd  xmm13,xmm5,238
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        mov     esi,edx
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,edi
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm11
>>>>>>>
>>>>>>> +        add     ebx,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        punpcklqdq      xmm13,xmm6
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm8
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm3
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm6
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm13
>>>>>>>
>>>>>>> +        add     eax,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        mov     esi,ebx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm7
>>>>>>>
>>>>>>> +        add     eax,edi
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm3
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        add     ebp,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        pslld   xmm7,2
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +        psrld   xmm13,30
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,esi
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        por     xmm7,xmm13
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        pshufd  xmm3,xmm6,238
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        mov     esi,ebp
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm4
>>>>>>>
>>>>>>> +        add     ecx,DWORD[rsp]
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        punpcklqdq      xmm3,xmm7
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm9
>>>>>>>
>>>>>>> +        add     ecx,esi
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm12
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm7
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>
>>>>>>> +        add     ebx,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        mov     esi,ecx
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm12
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        pslld   xmm8,2
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        psrld   xmm3,30
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,esi
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        por     xmm8,xmm3
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        add     ebp,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[48+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        pshufd  xmm12,xmm7,238
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        mov     esi,eax
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,edi
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm5
>>>>>>>
>>>>>>> +        add     edx,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        punpcklqdq      xmm12,xmm8
>>>>>>>
>>>>>>> +        mov     edi,ebp
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm10
>>>>>>>
>>>>>>> +        add     edx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm12
>>>>>>>
>>>>>>> +        add     ecx,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        mov     esi,edx
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm9
>>>>>>>
>>>>>>> +        add     ecx,edi
>>>>>>>
>>>>>>> +        cmp     r8d,11
>>>>>>>
>>>>>>> +        jb      NEAR $L$aesenclast2
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[64+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[80+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        je      NEAR $L$aesenclast2
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[96+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[112+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +$L$aesenclast2:
>>>>>>>
>>>>>>> +DB      102,15,56,221,209
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+r15]
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[rsp],xmm13
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        pslld   xmm9,2
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        psrld   xmm12,30
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        por     xmm9,xmm12
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        pshufd  xmm13,xmm8,238
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        mov     esi,ebx
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,edi
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm6
>>>>>>>
>>>>>>> +        add     ebp,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        movups  xmm14,XMMWORD[32+r12]
>>>>>>>
>>>>>>> +        xorps   xmm14,xmm15
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+r12*1+r13],xmm2
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm14
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-80))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        and     esi,ecx
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        punpcklqdq      xmm13,xmm9
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm11
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,esi
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm3
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm9
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm13
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        and     edi,ebx
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm10
>>>>>>>
>>>>>>> +        mov     esi,ebp
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm3
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-64))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        pslld   xmm10,2
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        psrld   xmm13,30
>>>>>>>
>>>>>>> +        add     ecx,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        and     esi,eax
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        por     xmm10,xmm13
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        pshufd  xmm3,xmm9,238
>>>>>>>
>>>>>>> +        add     ecx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        and     edi,ebp
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-48))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        mov     esi,ecx
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm7
>>>>>>>
>>>>>>> +        add     eax,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        and     esi,edx
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        punpcklqdq      xmm3,xmm10
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm4
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,esi
>>>>>>>
>>>>>>> +        movdqa  xmm13,XMMWORD[48+r11]
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm10
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm3
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        add     ebp,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-32))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        and     edi,ecx
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>>
>>>>>>> +        mov     esi,eax
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm12
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,edi
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        pslld   xmm11,2
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        psrld   xmm3,30
>>>>>>>
>>>>>>> +        add     edx,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        and     esi,ebx
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        por     xmm11,xmm3
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        mov     edi,ebp
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        pshufd  xmm12,xmm10,238
>>>>>>>
>>>>>>> +        add     edx,esi
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-16))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        add     ecx,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        and     edi,eax
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        mov     esi,edx
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm8
>>>>>>>
>>>>>>> +        add     ebx,DWORD[rsp]
>>>>>>>
>>>>>>> +        and     esi,ebp
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        punpcklqdq      xmm12,xmm11
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm11
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        and     edi,edx
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm4
>>>>>>>
>>>>>>> +        mov     esi,ebx
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm13
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,edi
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        pslld   xmm4,2
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        psrld   xmm12,30
>>>>>>>
>>>>>>> +        add     ebp,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        and     esi,ecx
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        por     xmm4,xmm12
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        pshufd  xmm13,xmm11,238
>>>>>>>
>>>>>>> +        add     ebp,esi
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        and     edi,ebx
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        mov     esi,ebp
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm9
>>>>>>>
>>>>>>> +        add     ecx,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        and     esi,eax
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        punpcklqdq      xmm13,xmm4
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm6
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,esi
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm3
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm4
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        and     edi,ebp
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[48+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm5
>>>>>>>
>>>>>>> +        mov     esi,ecx
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[rsp],xmm3
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        pslld   xmm5,2
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        psrld   xmm13,30
>>>>>>>
>>>>>>> +        add     eax,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        and     esi,edx
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        por     xmm5,xmm13
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        pshufd  xmm3,xmm4,238
>>>>>>>
>>>>>>> +        add     eax,esi
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        add     ebp,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        cmp     r8d,11
>>>>>>>
>>>>>>> +        jb      NEAR $L$aesenclast3
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[64+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[80+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        je      NEAR $L$aesenclast3
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[96+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[112+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +$L$aesenclast3:
>>>>>>>
>>>>>>> +DB      102,15,56,221,209
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+r15]
>>>>>>>
>>>>>>> +        and     edi,ecx
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        mov     esi,eax
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,edi
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +        add     edx,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        and     esi,ebx
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        punpcklqdq      xmm3,xmm5
>>>>>>>
>>>>>>> +        mov     edi,ebp
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,esi
>>>>>>>
>>>>>>> +        movups  xmm14,XMMWORD[48+r12]
>>>>>>>
>>>>>>> +        xorps   xmm14,xmm15
>>>>>>>
>>>>>>> +        movups  XMMWORD[32+r12*1+r13],xmm2
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm14
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-80))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm12
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm5
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm3
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        add     ecx,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        and     edi,eax
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm6
>>>>>>>
>>>>>>> +        mov     esi,edx
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm12
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        pslld   xmm6,2
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        psrld   xmm3,30
>>>>>>>
>>>>>>> +        add     ebx,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        and     esi,ebp
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        por     xmm6,xmm3
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-64))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        pshufd  xmm12,xmm5,238
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        and     edi,edx
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        mov     esi,ebx
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,edi
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm11
>>>>>>>
>>>>>>> +        add     ebp,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-48))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        punpcklqdq      xmm12,xmm6
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm8
>>>>>>>
>>>>>>> +        add     ebp,esi
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm12
>>>>>>>
>>>>>>> +        add     edx,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        mov     esi,ebp
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm7
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm13
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        add     ecx,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        pslld   xmm7,2
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        psrld   xmm12,30
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,esi
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-32))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        por     xmm7,xmm12
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        mov     esi,ecx
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[rsp]
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm7
>>>>>>>
>>>>>>> +        add     eax,esi
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm3
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        add     ebp,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-16))+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        mov     esi,eax
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,edi
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        mov     edi,ebp
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        add     ecx,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        mov     esi,edx
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,edi
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        cmp     r10,r14
>>>>>>>
>>>>>>> +        je      NEAR $L$done_ssse3
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[64+r11]
>>>>>>>
>>>>>>> +        movdqa  xmm13,XMMWORD[r11]
>>>>>>>
>>>>>>> +        movdqu  xmm4,XMMWORD[r10]
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[16+r10]
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[32+r10]
>>>>>>>
>>>>>>> +        movdqu  xmm7,XMMWORD[48+r10]
>>>>>>>
>>>>>>> +DB      102,15,56,0,227
>>>>>>>
>>>>>>> +        add     r10,64
>>>>>>>
>>>>>>> +        add     ebx,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +DB      102,15,56,0,235
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm13
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        mov     esi,ebx
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[rsp],xmm4
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,edi
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        psubd   xmm4,xmm13
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        add     ebp,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,esi
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        mov     esi,ebp
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        add     ecx,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +DB      102,15,56,0,243
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,esi
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm13
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        mov     esi,ecx
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm5
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        psubd   xmm5,xmm13
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,esi
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        add     ebp,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[48+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        mov     esi,eax
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,edi
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        mov     edi,ebp
>>>>>>>
>>>>>>> +DB      102,15,56,0,251
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm13
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        add     ecx,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        mov     esi,edx
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm6
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,edi
>>>>>>>
>>>>>>> +        cmp     r8d,11
>>>>>>>
>>>>>>> +        jb      NEAR $L$aesenclast4
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[64+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[80+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        je      NEAR $L$aesenclast4
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[96+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[112+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +$L$aesenclast4:
>>>>>>>
>>>>>>> +DB      102,15,56,221,209
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+r15]
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        psubd   xmm6,xmm13
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        mov     esi,ebx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,edi
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        movups  XMMWORD[48+r12*1+r13],xmm2
>>>>>>>
>>>>>>> +        lea     r12,[64+r12]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     eax,DWORD[r9]
>>>>>>>
>>>>>>> +        add     esi,DWORD[4+r9]
>>>>>>>
>>>>>>> +        add     ecx,DWORD[8+r9]
>>>>>>>
>>>>>>> +        add     edx,DWORD[12+r9]
>>>>>>>
>>>>>>> +        mov     DWORD[r9],eax
>>>>>>>
>>>>>>> +        add     ebp,DWORD[16+r9]
>>>>>>>
>>>>>>> +        mov     DWORD[4+r9],esi
>>>>>>>
>>>>>>> +        mov     ebx,esi
>>>>>>>
>>>>>>> +        mov     DWORD[8+r9],ecx
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        mov     DWORD[12+r9],edx
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        mov     DWORD[16+r9],ebp
>>>>>>>
>>>>>>> +        and     esi,edi
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_ssse3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$done_ssse3:
>>>>>>>
>>>>>>> +        add     ebx,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        mov     esi,ebx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,edi
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        add     ebp,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,esi
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        mov     esi,ebp
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        add     ecx,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,esi
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        mov     esi,ecx
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,esi
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        add     ebp,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[48+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        mov     esi,eax
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,edi
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        mov     edi,ebp
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        add     ecx,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        mov     esi,edx
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,edi
>>>>>>>
>>>>>>> +        cmp     r8d,11
>>>>>>>
>>>>>>> +        jb      NEAR $L$aesenclast5
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[64+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[80+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        je      NEAR $L$aesenclast5
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[96+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[112+r15]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +$L$aesenclast5:
>>>>>>>
>>>>>>> +DB      102,15,56,221,209
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+r15]
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        mov     esi,ebx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,edi
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        movups  XMMWORD[48+r12*1+r13],xmm2
>>>>>>>
>>>>>>> +        mov     r8,QWORD[88+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     eax,DWORD[r9]
>>>>>>>
>>>>>>> +        add     esi,DWORD[4+r9]
>>>>>>>
>>>>>>> +        add     ecx,DWORD[8+r9]
>>>>>>>
>>>>>>> +        mov     DWORD[r9],eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[12+r9]
>>>>>>>
>>>>>>> +        mov     DWORD[4+r9],esi
>>>>>>>
>>>>>>> +        add     ebp,DWORD[16+r9]
>>>>>>>
>>>>>>> +        mov     DWORD[8+r9],ecx
>>>>>>>
>>>>>>> +        mov     DWORD[12+r9],edx
>>>>>>>
>>>>>>> +        mov     DWORD[16+r9],ebp
>>>>>>>
>>>>>>> +        movups  XMMWORD[r8],xmm2
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[((96+0))+rsp]
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[((96+16))+rsp]
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[((96+32))+rsp]
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[((96+48))+rsp]
>>>>>>>
>>>>>>> +        movaps  xmm10,XMMWORD[((96+64))+rsp]
>>>>>>>
>>>>>>> +        movaps  xmm11,XMMWORD[((96+80))+rsp]
>>>>>>>
>>>>>>> +        movaps  xmm12,XMMWORD[((96+96))+rsp]
>>>>>>>
>>>>>>> +        movaps  xmm13,XMMWORD[((96+112))+rsp]
>>>>>>>
>>>>>>> +        movaps  xmm14,XMMWORD[((96+128))+rsp]
>>>>>>>
>>>>>>> +        movaps  xmm15,XMMWORD[((96+144))+rsp]
>>>>>>>
>>>>>>> +        lea     rsi,[264+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_aesni_cbc_sha1_enc_ssse3:
>>>>>>>
>>>>>>> +ALIGN   64
>>>>>>>
>>>>>>> +K_XX_XX:
>>>>>>>
>>>>>>> +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
>>>>>>>
>>>>>>> +        DD      0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
>>>>>>>
>>>>>>> +        DD      0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
>>>>>>>
>>>>>>> +        DD      0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
>>>>>>>
>>>>>>> +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
>>>>>>>
>>>>>>> +DB
>>>> 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115
>>>>>>>
>>>>>>> +DB      116,105,116,99,104,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
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +aesni_cbc_sha1_enc_shaext:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_aesni_cbc_sha1_enc_shaext:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +        mov     rcx,r9
>>>>>>>
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10,QWORD[56+rsp]
>>>>>>>
>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-8-160)+rax],xmm6
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-8-144)+rax],xmm7
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-8-128)+rax],xmm8
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-8-112)+rax],xmm9
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-8-96)+rax],xmm10
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-8-80)+rax],xmm11
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-8-64)+rax],xmm12
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-8-48)+rax],xmm13
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-8-32)+rax],xmm14
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-8-16)+rax],xmm15
>>>>>>>
>>>>>>> +$L$prologue_shaext:
>>>>>>>
>>>>>>> +        movdqu  xmm8,XMMWORD[r9]
>>>>>>>
>>>>>>> +        movd    xmm9,DWORD[16+r9]
>>>>>>>
>>>>>>> +        movdqa  xmm7,XMMWORD[((K_XX_XX+80))]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r11d,DWORD[240+rcx]
>>>>>>>
>>>>>>> +        sub     rsi,rdi
>>>>>>>
>>>>>>> +        movups  xmm15,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        movups  xmm2,XMMWORD[r8]
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[112+rcx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pshufd  xmm8,xmm8,27
>>>>>>>
>>>>>>> +        pshufd  xmm9,xmm9,27
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_shaext
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$oop_shaext:
>>>>>>>
>>>>>>> +        movups  xmm14,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        xorps   xmm14,xmm15
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm14
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-80))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        movdqu  xmm3,XMMWORD[r10]
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,0,223
>>>>>>>
>>>>>>> +        movdqu  xmm4,XMMWORD[16+r10]
>>>>>>>
>>>>>>> +        movdqa  xmm11,xmm8
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-64))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +DB      102,15,56,0,231
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm3
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[32+r10]
>>>>>>>
>>>>>>> +        lea     r10,[64+r10]
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm12
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-48))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,239
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,0
>>>>>>>
>>>>>>> +DB      68,15,56,200,212
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-32))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +DB      15,56,201,220
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[((-16))+r10]
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,247
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-16))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,0
>>>>>>>
>>>>>>> +DB      68,15,56,200,205
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm5
>>>>>>>
>>>>>>> +DB      15,56,201,229
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,0
>>>>>>>
>>>>>>> +DB      68,15,56,200,214
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      15,56,202,222
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +DB      15,56,201,238
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,0
>>>>>>>
>>>>>>> +DB      68,15,56,200,203
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[48+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      15,56,202,227
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm3
>>>>>>>
>>>>>>> +DB      15,56,201,243
>>>>>>>
>>>>>>> +        cmp     r11d,11
>>>>>>>
>>>>>>> +        jb      NEAR $L$aesenclast6
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[64+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[80+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        je      NEAR $L$aesenclast6
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[96+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[112+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +$L$aesenclast6:
>>>>>>>
>>>>>>> +DB      102,15,56,221,209
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+rcx]
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,0
>>>>>>>
>>>>>>> +DB      68,15,56,200,212
>>>>>>>
>>>>>>> +        movups  xmm14,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +        xorps   xmm14,xmm15
>>>>>>>
>>>>>>> +        movups  XMMWORD[rdi*1+rsi],xmm2
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm14
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-80))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      15,56,202,236
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>
>>>>>>> +DB      15,56,201,220
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-64))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,1
>>>>>>>
>>>>>>> +DB      68,15,56,200,205
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-48))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      15,56,202,245
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm5
>>>>>>>
>>>>>>> +DB      15,56,201,229
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-32))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,1
>>>>>>>
>>>>>>> +DB      68,15,56,200,214
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-16))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      15,56,202,222
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +DB      15,56,201,238
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,1
>>>>>>>
>>>>>>> +DB      68,15,56,200,203
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      15,56,202,227
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm3
>>>>>>>
>>>>>>> +DB      15,56,201,243
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,1
>>>>>>>
>>>>>>> +DB      68,15,56,200,212
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[48+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      15,56,202,236
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>
>>>>>>> +DB      15,56,201,220
>>>>>>>
>>>>>>> +        cmp     r11d,11
>>>>>>>
>>>>>>> +        jb      NEAR $L$aesenclast7
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[64+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[80+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        je      NEAR $L$aesenclast7
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[96+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[112+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +$L$aesenclast7:
>>>>>>>
>>>>>>> +DB      102,15,56,221,209
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+rcx]
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,1
>>>>>>>
>>>>>>> +DB      68,15,56,200,205
>>>>>>>
>>>>>>> +        movups  xmm14,XMMWORD[32+rdi]
>>>>>>>
>>>>>>> +        xorps   xmm14,xmm15
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rdi*1+rsi],xmm2
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm14
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-80))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      15,56,202,245
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm5
>>>>>>>
>>>>>>> +DB      15,56,201,229
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-64))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,2
>>>>>>>
>>>>>>> +DB      68,15,56,200,214
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-48))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      15,56,202,222
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +DB      15,56,201,238
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-32))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,2
>>>>>>>
>>>>>>> +DB      68,15,56,200,203
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-16))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      15,56,202,227
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm3
>>>>>>>
>>>>>>> +DB      15,56,201,243
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,2
>>>>>>>
>>>>>>> +DB      68,15,56,200,212
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      15,56,202,236
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>
>>>>>>> +DB      15,56,201,220
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,2
>>>>>>>
>>>>>>> +DB      68,15,56,200,205
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[48+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      15,56,202,245
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm5
>>>>>>>
>>>>>>> +DB      15,56,201,229
>>>>>>>
>>>>>>> +        cmp     r11d,11
>>>>>>>
>>>>>>> +        jb      NEAR $L$aesenclast8
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[64+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[80+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        je      NEAR $L$aesenclast8
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[96+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[112+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +$L$aesenclast8:
>>>>>>>
>>>>>>> +DB      102,15,56,221,209
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+rcx]
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,2
>>>>>>>
>>>>>>> +DB      68,15,56,200,214
>>>>>>>
>>>>>>> +        movups  xmm14,XMMWORD[48+rdi]
>>>>>>>
>>>>>>> +        xorps   xmm14,xmm15
>>>>>>>
>>>>>>> +        movups  XMMWORD[32+rdi*1+rsi],xmm2
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm14
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-80))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      15,56,202,222
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +DB      15,56,201,238
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-64))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,3
>>>>>>>
>>>>>>> +DB      68,15,56,200,203
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-48))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      15,56,202,227
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm3
>>>>>>>
>>>>>>> +DB      15,56,201,243
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-32))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,3
>>>>>>>
>>>>>>> +DB      68,15,56,200,212
>>>>>>>
>>>>>>> +DB      15,56,202,236
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-16))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,3
>>>>>>>
>>>>>>> +DB      68,15,56,200,205
>>>>>>>
>>>>>>> +DB      15,56,202,245
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,3
>>>>>>>
>>>>>>> +DB      68,15,56,200,214
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,3
>>>>>>>
>>>>>>> +DB      68,15,56,200,205
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[48+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        cmp     r11d,11
>>>>>>>
>>>>>>> +        jb      NEAR $L$aesenclast9
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[64+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[80+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        je      NEAR $L$aesenclast9
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[96+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[112+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +$L$aesenclast9:
>>>>>>>
>>>>>>> +DB      102,15,56,221,209
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+rcx]
>>>>>>>
>>>>>>> +        dec     rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm11
>>>>>>>
>>>>>>> +        movups  XMMWORD[48+rdi*1+rsi],xmm2
>>>>>>>
>>>>>>> +        lea     rdi,[64+rdi]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_shaext
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pshufd  xmm8,xmm8,27
>>>>>>>
>>>>>>> +        pshufd  xmm9,xmm9,27
>>>>>>>
>>>>>>> +        movups  XMMWORD[r8],xmm2
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[r9],xmm8
>>>>>>>
>>>>>>> +        movd    DWORD[16+r9],xmm9
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[((-8-160))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[((-8-144))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[((-8-128))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[((-8-112))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm10,XMMWORD[((-8-96))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm11,XMMWORD[((-8-80))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm12,XMMWORD[((-8-64))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm13,XMMWORD[((-8-48))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm14,XMMWORD[((-8-32))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm15,XMMWORD[((-8-16))+rax]
>>>>>>>
>>>>>>> +        mov     rsp,rax
>>>>>>>
>>>>>>> +$L$epilogue_shaext:
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$SEH_end_aesni_cbc_sha1_enc_shaext:
>>>>>>>
>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +ssse3_handler:
>>>>>>>
>>>>>>> +        push    rsi
>>>>>>>
>>>>>>> +        push    rdi
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +        pushfq
>>>>>>>
>>>>>>> +        sub     rsp,64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +        lea     r10,[aesni_cbc_sha1_enc_shaext]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$seh_no_shaext
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsi,[rax]
>>>>>>>
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>
>>>>>>> +        mov     ecx,20
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +        lea     rax,[168+rax]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +$L$seh_no_shaext:
>>>>>>>
>>>>>>> +        lea     rsi,[96+rax]
>>>>>>>
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>
>>>>>>> +        mov     ecx,20
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +        lea     rax,[264+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15,QWORD[rax]
>>>>>>>
>>>>>>> +        mov     r14,QWORD[8+rax]
>>>>>>>
>>>>>>> +        mov     r13,QWORD[16+rax]
>>>>>>>
>>>>>>> +        mov     r12,QWORD[24+rax]
>>>>>>>
>>>>>>> +        mov     rbp,QWORD[32+rax]
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[40+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$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[40+r9]
>>>>>>>
>>>>>>> +        mov     rsi,r8
>>>>>>>
>>>>>>> +        mov     ecx,154
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,r9
>>>>>>>
>>>>>>> +        xor     rcx,rcx
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +        popfq
>>>>>>>
>>>>>>> +        pop     r15
>>>>>>>
>>>>>>> +        pop     r14
>>>>>>>
>>>>>>> +        pop     r13
>>>>>>>
>>>>>>> +        pop     r12
>>>>>>>
>>>>>>> +        pop     rbp
>>>>>>>
>>>>>>> +        pop     rbx
>>>>>>>
>>>>>>> +        pop     rdi
>>>>>>>
>>>>>>> +        pop     rsi
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +section .pdata rdata align=4
>>>>>>>
>>>>>>> +ALIGN   4
>>>>>>>
>>>>>>> +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_end_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_info_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_shaext wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_end_aesni_cbc_sha1_enc_shaext wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_info_aesni_cbc_sha1_enc_shaext wrt ..imagebase
>>>>>>>
>>>>>>> +section .xdata rdata align=8
>>>>>>>
>>>>>>> +ALIGN   8
>>>>>>>
>>>>>>> +$L$SEH_info_aesni_cbc_sha1_enc_ssse3:
>>>>>>>
>>>>>>> +DB      9,0,0,0
>>>>>>>
>>>>>>> +        DD      ssse3_handler wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
>>>>>>> wrt ..imagebase
>>>>>>>
>>>>>>> +$L$SEH_info_aesni_cbc_sha1_enc_shaext:
>>>>>>>
>>>>>>> +DB      9,0,0,0
>>>>>>>
>>>>>>> +        DD      ssse3_handler wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$prologue_shaext wrt ..imagebase,$L$epilogue_shaext
>>>>>>> wrt ..imagebase
>>>>>>>
>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
>>>>>>> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
>>>>> sha256-
>>>>>>> x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..f5c250b904
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
>>>>>>> x86_64.nasm
>>>>>>> @@ -0,0 +1,78 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>>
>>>>>>> +; Generated from openssl/crypto/aes/asm/aesni-sha256-x86_64.pl
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>
>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>> copy
>>>>>>>
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +default rel
>>>>>>>
>>>>>>> +%define XMMWORD
>>>>>>>
>>>>>>> +%define YMMWORD
>>>>>>>
>>>>>>> +%define ZMMWORD
>>>>>>>
>>>>>>> +section .text code align=64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>
>>>>>>> +global  aesni_cbc_sha256_enc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +aesni_cbc_sha256_enc:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     eax,eax
>>>>>>>
>>>>>>> +        cmp     rcx,0
>>>>>>>
>>>>>>> +        je      NEAR $L$probe
>>>>>>>
>>>>>>> +        ud2
>>>>>>>
>>>>>>> +$L$probe:
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
>>>>>>>
>>>>>>> +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
>>>>>>>
>>>>>>> +        DD      0,0,0,0,0,0,0,0,-1,-1,-1,-1
>>>>>>>
>>>>>>> +        DD      0,0,0,0,0,0,0,0
>>>>>>>
>>>>>>> +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54
>>>>>>>
>>>>>>> +DB      32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95
>>>>>>>
>>>>>>> +DB      54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98
>>>>>>>
>>>>>>> +DB      121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108
>>>>>>>
>>>>>>> +DB      46,111,114,103,62,0
>>>>>>>
>>>>>>> +ALIGN   64
>>>>>>>
>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
>>>>> x86_64.nasm
>>>>>>> b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..57ee23ea8c
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
>>>>>>> @@ -0,0 +1,5103 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>>
>>>>>>> +; Generated from openssl/crypto/aes/asm/aesni-x86_64.pl
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Copyright 2009-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>
>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>> copy
>>>>>>>
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +default rel
>>>>>>>
>>>>>>> +%define XMMWORD
>>>>>>>
>>>>>>> +%define YMMWORD
>>>>>>>
>>>>>>> +%define ZMMWORD
>>>>>>>
>>>>>>> +section .text code align=64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>
>>>>>>> +global  aesni_encrypt
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +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:
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        dec     eax
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[r8]
>>>>>>>
>>>>>>> +        lea     r8,[16+r8]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_enc1_1
>>>>>>>
>>>>>>> +DB      102,15,56,221,209
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>
>>>>>>> +        movups  XMMWORD[rdx],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  aesni_decrypt
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +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:
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +        dec     eax
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[r8]
>>>>>>>
>>>>>>> +        lea     r8,[16+r8]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_dec1_2
>>>>>>>
>>>>>>> +DB      102,15,56,223,209
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>
>>>>>>> +        movups  XMMWORD[rdx],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +_aesni_encrypt2:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        shl     eax,4
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>
>>>>>>> +        neg     rax
>>>>>>>
>>>>>>> +        add     rax,16
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$enc_loop2:
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[rax*1+rcx]
>>>>>>>
>>>>>>> +        add     rax,32
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      102,15,56,220,216
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +_aesni_decrypt2:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        shl     eax,4
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>
>>>>>>> +        neg     rax
>>>>>>>
>>>>>>> +        add     rax,16
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$dec_loop2:
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +DB      102,15,56,222,217
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[rax*1+rcx]
>>>>>>>
>>>>>>> +        add     rax,32
>>>>>>>
>>>>>>> +DB      102,15,56,222,208
>>>>>>>
>>>>>>> +DB      102,15,56,222,216
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +_aesni_encrypt3:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        shl     eax,4
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>
>>>>>>> +        xorps   xmm4,xmm0
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>
>>>>>>> +        neg     rax
>>>>>>>
>>>>>>> +        add     rax,16
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$enc_loop3:
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +        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[((-16))+rax*1+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$enc_loop3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +DB      102,15,56,221,208
>>>>>>>
>>>>>>> +DB      102,15,56,221,216
>>>>>>>
>>>>>>> +DB      102,15,56,221,224
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +_aesni_decrypt3:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        shl     eax,4
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>
>>>>>>> +        xorps   xmm4,xmm0
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>
>>>>>>> +        neg     rax
>>>>>>>
>>>>>>> +        add     rax,16
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$dec_loop3:
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +DB      102,15,56,222,217
>>>>>>>
>>>>>>> +DB      102,15,56,222,225
>>>>>>>
>>>>>>> +        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[((-16))+rax*1+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$dec_loop3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +DB      102,15,56,222,217
>>>>>>>
>>>>>>> +DB      102,15,56,222,225
>>>>>>>
>>>>>>> +DB      102,15,56,223,208
>>>>>>>
>>>>>>> +DB      102,15,56,223,216
>>>>>>>
>>>>>>> +DB      102,15,56,223,224
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +_aesni_encrypt4:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        shl     eax,4
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>
>>>>>>> +        xorps   xmm4,xmm0
>>>>>>>
>>>>>>> +        xorps   xmm5,xmm0
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>
>>>>>>> +        neg     rax
>>>>>>>
>>>>>>> +DB      0x0f,0x1f,0x00
>>>>>>>
>>>>>>> +        add     rax,16
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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[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[((-16))+rax*1+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $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
>>>>>>>
>>>>>>> +DB      102,15,56,221,208
>>>>>>>
>>>>>>> +DB      102,15,56,221,216
>>>>>>>
>>>>>>> +DB      102,15,56,221,224
>>>>>>>
>>>>>>> +DB      102,15,56,221,232
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +_aesni_decrypt4:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        shl     eax,4
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>
>>>>>>> +        xorps   xmm4,xmm0
>>>>>>>
>>>>>>> +        xorps   xmm5,xmm0
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>
>>>>>>> +        neg     rax
>>>>>>>
>>>>>>> +DB      0x0f,0x1f,0x00
>>>>>>>
>>>>>>> +        add     rax,16
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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[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[((-16))+rax*1+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $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
>>>>>>>
>>>>>>> +DB      102,15,56,223,208
>>>>>>>
>>>>>>> +DB      102,15,56,223,216
>>>>>>>
>>>>>>> +DB      102,15,56,223,224
>>>>>>>
>>>>>>> +DB      102,15,56,223,232
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +_aesni_encrypt6:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        shl     eax,4
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>
>>>>>>> +        neg     rax
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm0
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm0
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rax*1+rcx]
>>>>>>>
>>>>>>> +        add     rax,16
>>>>>>>
>>>>>>> +        jmp     NEAR $L$enc_loop6_enter
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$enc_loop6:
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +$L$enc_loop6_enter:
>>>>>>>
>>>>>>> +DB      102,15,56,220,233
>>>>>>>
>>>>>>> +DB      102,15,56,220,241
>>>>>>>
>>>>>>> +DB      102,15,56,220,249
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +DB      102,15,56,220,240
>>>>>>>
>>>>>>> +DB      102,15,56,220,248
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $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
>>>>>>>
>>>>>>> +DB      102,15,56,221,208
>>>>>>>
>>>>>>> +DB      102,15,56,221,216
>>>>>>>
>>>>>>> +DB      102,15,56,221,224
>>>>>>>
>>>>>>> +DB      102,15,56,221,232
>>>>>>>
>>>>>>> +DB      102,15,56,221,240
>>>>>>>
>>>>>>> +DB      102,15,56,221,248
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +_aesni_decrypt6:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        shl     eax,4
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>
>>>>>>> +        neg     rax
>>>>>>>
>>>>>>> +DB      102,15,56,222,217
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm0
>>>>>>>
>>>>>>> +DB      102,15,56,222,225
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm0
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rax*1+rcx]
>>>>>>>
>>>>>>> +        add     rax,16
>>>>>>>
>>>>>>> +        jmp     NEAR $L$dec_loop6_enter
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$dec_loop6:
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +DB      102,15,56,222,217
>>>>>>>
>>>>>>> +DB      102,15,56,222,225
>>>>>>>
>>>>>>> +$L$dec_loop6_enter:
>>>>>>>
>>>>>>> +DB      102,15,56,222,233
>>>>>>>
>>>>>>> +DB      102,15,56,222,241
>>>>>>>
>>>>>>> +DB      102,15,56,222,249
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +DB      102,15,56,222,240
>>>>>>>
>>>>>>> +DB      102,15,56,222,248
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $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
>>>>>>>
>>>>>>> +DB      102,15,56,223,208
>>>>>>>
>>>>>>> +DB      102,15,56,223,216
>>>>>>>
>>>>>>> +DB      102,15,56,223,224
>>>>>>>
>>>>>>> +DB      102,15,56,223,232
>>>>>>>
>>>>>>> +DB      102,15,56,223,240
>>>>>>>
>>>>>>> +DB      102,15,56,223,248
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +_aesni_encrypt8:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        shl     eax,4
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm0
>>>>>>>
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>
>>>>>>> +        neg     rax
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm0
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rax*1+rcx]
>>>>>>>
>>>>>>> +        add     rax,16
>>>>>>>
>>>>>>> +        jmp     NEAR $L$enc_loop8_inner
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$enc_loop8:
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +$L$enc_loop8_inner:
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +DB      102,15,56,220,233
>>>>>>>
>>>>>>> +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
>>>>>>>
>>>>>>> +$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
>>>>>>>
>>>>>>> +DB      102,15,56,220,224
>>>>>>>
>>>>>>> +DB      102,15,56,220,232
>>>>>>>
>>>>>>> +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[((-16))+rax*1+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$enc_loop8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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
>>>>>>>
>>>>>>> +DB      102,68,15,56,220,193
>>>>>>>
>>>>>>> +DB      102,68,15,56,220,201
>>>>>>>
>>>>>>> +DB      102,15,56,221,208
>>>>>>>
>>>>>>> +DB      102,15,56,221,216
>>>>>>>
>>>>>>> +DB      102,15,56,221,224
>>>>>>>
>>>>>>> +DB      102,15,56,221,232
>>>>>>>
>>>>>>> +DB      102,15,56,221,240
>>>>>>>
>>>>>>> +DB      102,15,56,221,248
>>>>>>>
>>>>>>> +DB      102,68,15,56,221,192
>>>>>>>
>>>>>>> +DB      102,68,15,56,221,200
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +_aesni_decrypt8:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        shl     eax,4
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm0
>>>>>>>
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>
>>>>>>> +        neg     rax
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>
>>>>>>> +DB      102,15,56,222,217
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm0
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rax*1+rcx]
>>>>>>>
>>>>>>> +        add     rax,16
>>>>>>>
>>>>>>> +        jmp     NEAR $L$dec_loop8_inner
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$dec_loop8:
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +DB      102,15,56,222,217
>>>>>>>
>>>>>>> +$L$dec_loop8_inner:
>>>>>>>
>>>>>>> +DB      102,15,56,222,225
>>>>>>>
>>>>>>> +DB      102,15,56,222,233
>>>>>>>
>>>>>>> +DB      102,15,56,222,241
>>>>>>>
>>>>>>> +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[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
>>>>>>>
>>>>>>> +DB      102,15,56,222,240
>>>>>>>
>>>>>>> +DB      102,15,56,222,248
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,192
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,200
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$dec_loop8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,193
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,201
>>>>>>>
>>>>>>> +DB      102,15,56,223,208
>>>>>>>
>>>>>>> +DB      102,15,56,223,216
>>>>>>>
>>>>>>> +DB      102,15,56,223,224
>>>>>>>
>>>>>>> +DB      102,15,56,223,232
>>>>>>>
>>>>>>> +DB      102,15,56,223,240
>>>>>>>
>>>>>>> +DB      102,15,56,223,248
>>>>>>>
>>>>>>> +DB      102,68,15,56,223,192
>>>>>>>
>>>>>>> +DB      102,68,15,56,223,200
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  aesni_ecb_encrypt
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +aesni_ecb_encrypt:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_aesni_ecb_encrypt:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +        mov     rcx,r9
>>>>>>>
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[((-88))+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>>
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>>
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>>
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>>
>>>>>>> +$L$ecb_enc_body:
>>>>>>>
>>>>>>> +        and     rdx,-16
>>>>>>>
>>>>>>> +        jz      NEAR $L$ecb_ret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     eax,DWORD[240+rcx]
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        mov     r11,rcx
>>>>>>>
>>>>>>> +        mov     r10d,eax
>>>>>>>
>>>>>>> +        test    r8d,r8d
>>>>>>>
>>>>>>> +        jz      NEAR $L$ecb_decrypt
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        cmp     rdx,0x80
>>>>>>>
>>>>>>> +        jb      NEAR $L$ecb_enc_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[rsi],xmm2
>>>>>>>
>>>>>>> +        mov     rcx,r11
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        mov     eax,r10d
>>>>>>>
>>>>>>> +        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,0x80
>>>>>>>
>>>>>>> +        jnc     NEAR $L$ecb_enc_loop8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        mov     rcx,r11
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        mov     eax,r10d
>>>>>>>
>>>>>>> +        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[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]
>>>>>>>
>>>>>>> +        xorps   xmm9,xmm9
>>>>>>>
>>>>>>> +        call    _aesni_encrypt8
>>>>>>>
>>>>>>> +        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[rcx]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +$L$oop_enc1_3:
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        dec     eax
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_enc1_3
>>>>>>>
>>>>>>> +DB      102,15,56,221,209
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ecb_enc_two:
>>>>>>>
>>>>>>> +        call    _aesni_encrypt2
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ecb_enc_three:
>>>>>>>
>>>>>>> +        call    _aesni_encrypt3
>>>>>>>
>>>>>>> +        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:
>>>>>>>
>>>>>>> +        call    _aesni_encrypt4
>>>>>>>
>>>>>>> +        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:
>>>>>>>
>>>>>>> +        xorps   xmm7,xmm7
>>>>>>>
>>>>>>> +        call    _aesni_encrypt6
>>>>>>>
>>>>>>> +        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:
>>>>>>>
>>>>>>> +        call    _aesni_encrypt6
>>>>>>>
>>>>>>> +        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,0x80
>>>>>>>
>>>>>>> +        jb      NEAR $L$ecb_dec_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[rsi],xmm2
>>>>>>>
>>>>>>> +        mov     rcx,r11
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        mov     eax,r10d
>>>>>>>
>>>>>>> +        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[r11]
>>>>>>>
>>>>>>> +        sub     rdx,0x80
>>>>>>>
>>>>>>> +        jnc     NEAR $L$ecb_dec_loop8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        mov     rcx,r11
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        mov     eax,r10d
>>>>>>>
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>
>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>
>>>>>>> +        movups  XMMWORD[96+rsi],xmm8
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm8
>>>>>>>
>>>>>>> +        movups  XMMWORD[112+rsi],xmm9
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm9
>>>>>>>
>>>>>>> +        lea     rsi,[128+rsi]
>>>>>>>
>>>>>>> +        add     rdx,0x80
>>>>>>>
>>>>>>> +        jz      NEAR $L$ecb_ret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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]
>>>>>>>
>>>>>>> +        xorps   xmm9,xmm9
>>>>>>>
>>>>>>> +        call    _aesni_decrypt8
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>
>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>
>>>>>>> +        movups  XMMWORD[96+rsi],xmm8
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm9
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ecb_dec_one:
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +$L$oop_dec1_4:
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +        dec     eax
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_dec1_4
>>>>>>>
>>>>>>> +DB      102,15,56,223,209
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ecb_dec_two:
>>>>>>>
>>>>>>> +        call    _aesni_decrypt2
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ecb_dec_three:
>>>>>>>
>>>>>>> +        call    _aesni_decrypt3
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ecb_dec_four:
>>>>>>>
>>>>>>> +        call    _aesni_decrypt4
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ecb_dec_five:
>>>>>>>
>>>>>>> +        xorps   xmm7,xmm7
>>>>>>>
>>>>>>> +        call    _aesni_decrypt6
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ecb_dec_six:
>>>>>>>
>>>>>>> +        call    _aesni_decrypt6
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>
>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$ecb_ret:
>>>>>>>
>>>>>>> +        xorps   xmm0,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[16+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[32+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[48+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>>
>>>>>>> +        lea     rsp,[88+rsp]
>>>>>>>
>>>>>>> +$L$ecb_enc_ret:
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$SEH_end_aesni_ecb_encrypt:
>>>>>>>
>>>>>>> +global  aesni_ccm64_encrypt_blocks
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +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:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +        mov     rcx,r9
>>>>>>>
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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,[rcx]
>>>>>>>
>>>>>>> +        movdqu  xmm3,XMMWORD[r9]
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,0,247
>>>>>>>
>>>>>>> +        sub     r10,rax
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ccm64_enc_outer
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ccm64_enc_outer:
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[r11]
>>>>>>>
>>>>>>> +        mov     rax,r10
>>>>>>>
>>>>>>> +        movups  xmm8,XMMWORD[rdi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>>
>>>>>>> +        xorps   xmm0,xmm8
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$ccm64_enc2_loop:
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[rax*1+rcx]
>>>>>>>
>>>>>>> +        add     rax,32
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      102,15,56,220,216
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +        dec     rdx
>>>>>>>
>>>>>>> +DB      102,15,56,221,208
>>>>>>>
>>>>>>> +DB      102,15,56,221,216
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>
>>>>>>> +        xorps   xmm8,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,215
>>>>>>>
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$ccm64_enc_outer
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        movups  XMMWORD[r9],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[16+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[32+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[48+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>>
>>>>>>> +        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:
>>>>>>>
>>>>>>> +global  aesni_ccm64_decrypt_blocks
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +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:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +        mov     rcx,r9
>>>>>>>
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[rcx]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +$L$oop_enc1_5:
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        dec     eax
>>>>>>>
>>>>>>> +        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[rdi]
>>>>>>>
>>>>>>> +        paddq   xmm6,xmm9
>>>>>>>
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>
>>>>>>> +        sub     rax,r10
>>>>>>>
>>>>>>> +        lea     rcx,[32+r10*1+r11]
>>>>>>>
>>>>>>> +        mov     r10,rax
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ccm64_dec_outer
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ccm64_dec_outer:
>>>>>>>
>>>>>>> +        xorps   xmm8,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm8
>>>>>>>
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>
>>>>>>> +DB      102,15,56,0,215
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     rdx,1
>>>>>>>
>>>>>>> +        jz      NEAR $L$ccm64_dec_break
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[r11]
>>>>>>>
>>>>>>> +        mov     rax,r10
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>>
>>>>>>> +        xorps   xmm8,xmm0
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm8
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ccm64_dec2_loop
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ccm64_dec2_loop:
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[rax*1+rcx]
>>>>>>>
>>>>>>> +        add     rax,32
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      102,15,56,220,216
>>>>>>>
>>>>>>> +        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,[16+rdi]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ccm64_dec_outer
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ccm64_dec_break:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     eax,DWORD[240+r11]
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[r11]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>>
>>>>>>> +        xorps   xmm8,xmm0
>>>>>>>
>>>>>>> +        lea     r11,[32+r11]
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm8
>>>>>>>
>>>>>>> +$L$oop_enc1_6:
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +        dec     eax
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[r11]
>>>>>>>
>>>>>>> +        lea     r11,[16+r11]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_enc1_6
>>>>>>>
>>>>>>> +DB      102,15,56,221,217
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        movups  XMMWORD[r9],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[16+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[32+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[48+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>>
>>>>>>> +        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:
>>>>>>>
>>>>>>> +global  aesni_ctr32_encrypt_blocks
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +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:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +        mov     rcx,r9
>>>>>>>
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        cmp     rdx,1
>>>>>>>
>>>>>>> +        jne     NEAR $L$ctr32_bulk
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm2,XMMWORD[r8]
>>>>>>>
>>>>>>> +        movups  xmm3,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        mov     edx,DWORD[240+rcx]
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +$L$oop_enc1_7:
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        dec     edx
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_enc1_7
>>>>>>>
>>>>>>> +DB      102,15,56,221,209
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm2
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ctr32_epilogue
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ctr32_bulk:
>>>>>>>
>>>>>>> +        lea     r11,[rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     rsp,288
>>>>>>>
>>>>>>> +        and     rsp,-16
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-168)+r11],xmm6
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-152)+r11],xmm7
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-136)+r11],xmm8
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-120)+r11],xmm9
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-104)+r11],xmm10
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-88)+r11],xmm11
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-72)+r11],xmm12
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-56)+r11],xmm13
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-40)+r11],xmm14
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-24)+r11],xmm15
>>>>>>>
>>>>>>> +$L$ctr32_body:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[r8]
>>>>>>>
>>>>>>> +        movdqu  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        mov     r8d,DWORD[12+r8]
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm0
>>>>>>>
>>>>>>> +        mov     ebp,DWORD[12+rcx]
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[rsp],xmm2
>>>>>>>
>>>>>>> +        bswap   r8d
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[64+rsp],xmm2
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[80+rsp],xmm2
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[96+rsp],xmm2
>>>>>>>
>>>>>>> +        mov     r10,rdx
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[112+rsp],xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rax,[1+r8]
>>>>>>>
>>>>>>> +        lea     rdx,[2+r8]
>>>>>>>
>>>>>>> +        bswap   eax
>>>>>>>
>>>>>>> +        bswap   edx
>>>>>>>
>>>>>>> +        xor     eax,ebp
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +DB      102,15,58,34,216,3
>>>>>>>
>>>>>>> +        lea     rax,[3+r8]
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm3
>>>>>>>
>>>>>>> +DB      102,15,58,34,226,3
>>>>>>>
>>>>>>> +        bswap   eax
>>>>>>>
>>>>>>> +        mov     rdx,r10
>>>>>>>
>>>>>>> +        lea     r10,[4+r8]
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm4
>>>>>>>
>>>>>>> +        xor     eax,ebp
>>>>>>>
>>>>>>> +        bswap   r10d
>>>>>>>
>>>>>>> +DB      102,15,58,34,232,3
>>>>>>>
>>>>>>> +        xor     r10d,ebp
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm5
>>>>>>>
>>>>>>> +        lea     r9,[5+r8]
>>>>>>>
>>>>>>> +        mov     DWORD[((64+12))+rsp],r10d
>>>>>>>
>>>>>>> +        bswap   r9d
>>>>>>>
>>>>>>> +        lea     r10,[6+r8]
>>>>>>>
>>>>>>> +        mov     eax,DWORD[240+rcx]
>>>>>>>
>>>>>>> +        xor     r9d,ebp
>>>>>>>
>>>>>>> +        bswap   r10d
>>>>>>>
>>>>>>> +        mov     DWORD[((80+12))+rsp],r9d
>>>>>>>
>>>>>>> +        xor     r10d,ebp
>>>>>>>
>>>>>>> +        lea     r9,[7+r8]
>>>>>>>
>>>>>>> +        mov     DWORD[((96+12))+rsp],r10d
>>>>>>>
>>>>>>> +        bswap   r9d
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
>>>>>>>
>>>>>>> +        xor     r9d,ebp
>>>>>>>
>>>>>>> +        and     r10d,71303168
>>>>>>>
>>>>>>> +        mov     DWORD[((112+12))+rsp],r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,XMMWORD[64+rsp]
>>>>>>>
>>>>>>> +        movdqa  xmm7,XMMWORD[80+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        cmp     rdx,8
>>>>>>>
>>>>>>> +        jb      NEAR $L$ctr32_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     rdx,6
>>>>>>>
>>>>>>> +        cmp     r10d,4194304
>>>>>>>
>>>>>>> +        je      NEAR $L$ctr32_6x
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rcx,[128+rcx]
>>>>>>>
>>>>>>> +        sub     rdx,2
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ctr32_loop8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ctr32_6x:
>>>>>>>
>>>>>>> +        shl     eax,4
>>>>>>>
>>>>>>> +        mov     r10d,48
>>>>>>>
>>>>>>> +        bswap   ebp
>>>>>>>
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>
>>>>>>> +        sub     r10,rax
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ctr32_loop6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ctr32_loop6:
>>>>>>>
>>>>>>> +        add     r8d,6
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-48))+r10*1+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        mov     eax,r8d
>>>>>>>
>>>>>>> +        xor     eax,ebp
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +DB      0x0f,0x38,0xf1,0x44,0x24,12
>>>>>>>
>>>>>>> +        lea     eax,[1+r8]
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +        xor     eax,ebp
>>>>>>>
>>>>>>> +DB      0x0f,0x38,0xf1,0x44,0x24,28
>>>>>>>
>>>>>>> +DB      102,15,56,220,233
>>>>>>>
>>>>>>> +        lea     eax,[2+r8]
>>>>>>>
>>>>>>> +        xor     eax,ebp
>>>>>>>
>>>>>>> +DB      102,15,56,220,241
>>>>>>>
>>>>>>> +DB      0x0f,0x38,0xf1,0x44,0x24,44
>>>>>>>
>>>>>>> +        lea     eax,[3+r8]
>>>>>>>
>>>>>>> +DB      102,15,56,220,249
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((-32))+r10*1+rcx]
>>>>>>>
>>>>>>> +        xor     eax,ebp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      0x0f,0x38,0xf1,0x44,0x24,60
>>>>>>>
>>>>>>> +        lea     eax,[4+r8]
>>>>>>>
>>>>>>> +DB      102,15,56,220,216
>>>>>>>
>>>>>>> +        xor     eax,ebp
>>>>>>>
>>>>>>> +DB      0x0f,0x38,0xf1,0x44,0x24,76
>>>>>>>
>>>>>>> +DB      102,15,56,220,224
>>>>>>>
>>>>>>> +        lea     eax,[5+r8]
>>>>>>>
>>>>>>> +        xor     eax,ebp
>>>>>>>
>>>>>>> +DB      102,15,56,220,232
>>>>>>>
>>>>>>> +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[((-16))+r10*1+rcx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    $L$enc_loop6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[rsp]
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm3
>>>>>>>
>>>>>>> +        movaps  xmm3,XMMWORD[16+rsp]
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm4
>>>>>>>
>>>>>>> +        movaps  xmm4,XMMWORD[32+rsp]
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm5
>>>>>>>
>>>>>>> +        movaps  xmm5,XMMWORD[48+rsp]
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm6
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[64+rsp]
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm7
>>>>>>>
>>>>>>> +        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     NEAR $L$ctr32_loop6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     rdx,6
>>>>>>>
>>>>>>> +        jz      NEAR $L$ctr32_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     eax,[((-48))+r10]
>>>>>>>
>>>>>>> +        lea     rcx,[((-80))+r10*1+rcx]
>>>>>>>
>>>>>>> +        neg     eax
>>>>>>>
>>>>>>> +        shr     eax,4
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ctr32_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$ctr32_loop8:
>>>>>>>
>>>>>>> +        add     r8d,8
>>>>>>>
>>>>>>> +        movdqa  xmm8,XMMWORD[96+rsp]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        mov     r9d,r8d
>>>>>>>
>>>>>>> +        movdqa  xmm9,XMMWORD[112+rsp]
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +        bswap   r9d
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((32-128))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +        xor     r9d,ebp
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +DB      102,15,56,220,233
>>>>>>>
>>>>>>> +        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[((48-128))+rcx]
>>>>>>>
>>>>>>> +        bswap   r9d
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      102,15,56,220,216
>>>>>>>
>>>>>>> +        xor     r9d,ebp
>>>>>>>
>>>>>>> +DB      0x66,0x90
>>>>>>>
>>>>>>> +DB      102,15,56,220,224
>>>>>>>
>>>>>>> +DB      102,15,56,220,232
>>>>>>>
>>>>>>> +        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[((64-128))+rcx]
>>>>>>>
>>>>>>> +        bswap   r9d
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +        xor     r9d,ebp
>>>>>>>
>>>>>>> +DB      0x66,0x90
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +DB      102,15,56,220,233
>>>>>>>
>>>>>>> +        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[((80-128))+rcx]
>>>>>>>
>>>>>>> +        bswap   r9d
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      102,15,56,220,216
>>>>>>>
>>>>>>> +        xor     r9d,ebp
>>>>>>>
>>>>>>> +DB      0x66,0x90
>>>>>>>
>>>>>>> +DB      102,15,56,220,224
>>>>>>>
>>>>>>> +DB      102,15,56,220,232
>>>>>>>
>>>>>>> +        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[((96-128))+rcx]
>>>>>>>
>>>>>>> +        bswap   r9d
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +        xor     r9d,ebp
>>>>>>>
>>>>>>> +DB      0x66,0x90
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +DB      102,15,56,220,233
>>>>>>>
>>>>>>> +        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[((112-128))+rcx]
>>>>>>>
>>>>>>> +        bswap   r9d
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      102,15,56,220,216
>>>>>>>
>>>>>>> +        xor     r9d,ebp
>>>>>>>
>>>>>>> +DB      0x66,0x90
>>>>>>>
>>>>>>> +DB      102,15,56,220,224
>>>>>>>
>>>>>>> +DB      102,15,56,220,232
>>>>>>>
>>>>>>> +        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[((128-128))+rcx]
>>>>>>>
>>>>>>> +        bswap   r9d
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +        xor     r9d,ebp
>>>>>>>
>>>>>>> +DB      0x66,0x90
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +DB      102,15,56,220,233
>>>>>>>
>>>>>>> +        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[((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,ebp
>>>>>>>
>>>>>>> +        movdqu  xmm10,XMMWORD[rdi]
>>>>>>>
>>>>>>> +DB      102,15,56,220,232
>>>>>>>
>>>>>>> +        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[((160-128))+rcx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        jb      NEAR $L$ctr32_enc_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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
>>>>>>>
>>>>>>> +DB      102,68,15,56,220,193
>>>>>>>
>>>>>>> +DB      102,68,15,56,220,201
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((176-128))+rcx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      102,15,56,220,216
>>>>>>>
>>>>>>> +DB      102,15,56,220,224
>>>>>>>
>>>>>>> +DB      102,15,56,220,232
>>>>>>>
>>>>>>> +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[((192-128))+rcx]
>>>>>>>
>>>>>>> +        je      NEAR $L$ctr32_enc_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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
>>>>>>>
>>>>>>> +DB      102,68,15,56,220,193
>>>>>>>
>>>>>>> +DB      102,68,15,56,220,201
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((208-128))+rcx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      102,15,56,220,216
>>>>>>>
>>>>>>> +DB      102,15,56,220,224
>>>>>>>
>>>>>>> +DB      102,15,56,220,232
>>>>>>>
>>>>>>> +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[((224-128))+rcx]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ctr32_enc_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ctr32_enc_done:
>>>>>>>
>>>>>>> +        movdqu  xmm11,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm0
>>>>>>>
>>>>>>> +        movdqu  xmm12,XMMWORD[32+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm0
>>>>>>>
>>>>>>> +        movdqu  xmm13,XMMWORD[48+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm0
>>>>>>>
>>>>>>> +        movdqu  xmm14,XMMWORD[64+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm0
>>>>>>>
>>>>>>> +        movdqu  xmm15,XMMWORD[80+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm0
>>>>>>>
>>>>>>> +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
>>>>>>>
>>>>>>> +DB      102,68,15,56,220,193
>>>>>>>
>>>>>>> +DB      102,68,15,56,220,201
>>>>>>>
>>>>>>> +        movdqu  xmm1,XMMWORD[96+rdi]
>>>>>>>
>>>>>>> +        lea     rdi,[128+rdi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,65,15,56,221,210
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm0
>>>>>>>
>>>>>>> +        movdqu  xmm10,XMMWORD[((112-128))+rdi]
>>>>>>>
>>>>>>> +DB      102,65,15,56,221,219
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm11,XMMWORD[rsp]
>>>>>>>
>>>>>>> +DB      102,65,15,56,221,228
>>>>>>>
>>>>>>> +DB      102,65,15,56,221,237
>>>>>>>
>>>>>>> +        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[48+rsp]
>>>>>>>
>>>>>>> +        movdqa  xmm15,XMMWORD[64+rsp]
>>>>>>>
>>>>>>> +DB      102,68,15,56,221,193
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[80+rsp]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((16-128))+rcx]
>>>>>>>
>>>>>>> +DB      102,69,15,56,221,202
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>>
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>>
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm14
>>>>>>>
>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm15
>>>>>>>
>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm0
>>>>>>>
>>>>>>> +        movups  XMMWORD[96+rsi],xmm8
>>>>>>>
>>>>>>> +        movups  XMMWORD[112+rsi],xmm9
>>>>>>>
>>>>>>> +        lea     rsi,[128+rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     rdx,8
>>>>>>>
>>>>>>> +        jnc     NEAR $L$ctr32_loop8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     rdx,8
>>>>>>>
>>>>>>> +        jz      NEAR $L$ctr32_done
>>>>>>>
>>>>>>> +        lea     rcx,[((-128))+rcx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$ctr32_tail:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>>
>>>>>>> +        cmp     rdx,4
>>>>>>>
>>>>>>> +        jb      NEAR $L$ctr32_loop3
>>>>>>>
>>>>>>> +        je      NEAR $L$ctr32_loop4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        shl     eax,4
>>>>>>>
>>>>>>> +        movdqa  xmm8,XMMWORD[96+rsp]
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +        lea     rcx,[((32-16))+rax*1+rcx]
>>>>>>>
>>>>>>> +        neg     rax
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +        add     rax,16
>>>>>>>
>>>>>>> +        movups  xmm10,XMMWORD[rdi]
>>>>>>>
>>>>>>> +DB      102,15,56,220,233
>>>>>>>
>>>>>>> +DB      102,15,56,220,241
>>>>>>>
>>>>>>> +        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[48+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>
>>>>>>> +        movdqu  xmm10,XMMWORD[64+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[64+rsi],xmm6
>>>>>>>
>>>>>>> +        cmp     rdx,6
>>>>>>>
>>>>>>> +        jb      NEAR $L$ctr32_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm11,XMMWORD[80+rdi]
>>>>>>>
>>>>>>> +        xorps   xmm7,xmm11
>>>>>>>
>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>>
>>>>>>> +        je      NEAR $L$ctr32_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm12,XMMWORD[96+rdi]
>>>>>>>
>>>>>>> +        xorps   xmm8,xmm12
>>>>>>>
>>>>>>> +        movups  XMMWORD[96+rsi],xmm8
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ctr32_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$ctr32_loop4:
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        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[rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$ctr32_loop4
>>>>>>>
>>>>>>> +DB      102,15,56,221,209
>>>>>>>
>>>>>>> +DB      102,15,56,221,217
>>>>>>>
>>>>>>> +        movups  xmm10,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        movups  xmm11,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +DB      102,15,56,221,225
>>>>>>>
>>>>>>> +DB      102,15,56,221,233
>>>>>>>
>>>>>>> +        movups  xmm12,XMMWORD[32+rdi]
>>>>>>>
>>>>>>> +        movups  xmm13,XMMWORD[48+rdi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ctr32_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$ctr32_loop3:
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>>
>>>>>>> +        dec     eax
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +        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[rdi]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        cmp     rdx,2
>>>>>>>
>>>>>>> +        jb      NEAR $L$ctr32_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm11,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        je      NEAR $L$ctr32_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm12,XMMWORD[32+rdi]
>>>>>>>
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$ctr32_done:
>>>>>>>
>>>>>>> +        xorps   xmm0,xmm0
>>>>>>>
>>>>>>> +        xor     ebp,ebp
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[((-168))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-168)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[((-152))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-152)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[((-136))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-136)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[((-120))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-120)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm10,XMMWORD[((-104))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-104)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm11,XMMWORD[((-88))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-88)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm12,XMMWORD[((-72))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-72)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm13,XMMWORD[((-56))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-56)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm14,XMMWORD[((-40))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-40)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm15,XMMWORD[((-24))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-24)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[112+rsp],xmm0
>>>>>>>
>>>>>>> +        mov     rbp,QWORD[((-8))+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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:
>>>>>>>
>>>>>>> +global  aesni_xts_encrypt
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +aesni_xts_encrypt:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_aesni_xts_encrypt:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +        mov     rcx,r9
>>>>>>>
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r11,[rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     rsp,272
>>>>>>>
>>>>>>> +        and     rsp,-16
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-168)+r11],xmm6
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-152)+r11],xmm7
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-136)+r11],xmm8
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-120)+r11],xmm9
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-104)+r11],xmm10
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-88)+r11],xmm11
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-72)+r11],xmm12
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-56)+r11],xmm13
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-40)+r11],xmm14
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-24)+r11],xmm15
>>>>>>>
>>>>>>> +$L$xts_enc_body:
>>>>>>>
>>>>>>> +        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:
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        dec     eax
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[r8]
>>>>>>>
>>>>>>> +        lea     r8,[16+r8]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_enc1_8
>>>>>>>
>>>>>>> +DB      102,15,56,221,209
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        mov     rbp,rcx
>>>>>>>
>>>>>>> +        mov     eax,r10d
>>>>>>>
>>>>>>> +        shl     r10d,4
>>>>>>>
>>>>>>> +        mov     r9,rdx
>>>>>>>
>>>>>>> +        and     rdx,-16
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+r10*1+rcx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,XMMWORD[$L$xts_magic]
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm2
>>>>>>>
>>>>>>> +        pshufd  xmm9,xmm2,0x5f
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm15
>>>>>>>
>>>>>>> +        psrad   xmm14,31
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +        pand    xmm14,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm11,xmm15
>>>>>>>
>>>>>>> +        psrad   xmm14,31
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +        pand    xmm14,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm15
>>>>>>>
>>>>>>> +        psrad   xmm14,31
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +        pand    xmm14,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm15
>>>>>>>
>>>>>>> +        psrad   xmm14,31
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +        pand    xmm14,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm15
>>>>>>>
>>>>>>> +        psrad   xmm9,31
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +        pand    xmm9,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     rdx,16*6
>>>>>>>
>>>>>>> +        jc      NEAR $L$xts_enc_short
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     eax,16+96
>>>>>>>
>>>>>>> +        lea     rcx,[32+r10*1+rbp]
>>>>>>>
>>>>>>> +        sub     rax,r10
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rbp]
>>>>>>>
>>>>>>> +        mov     r10,rax
>>>>>>>
>>>>>>> +        lea     r8,[$L$xts_magic]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$xts_enc_grandloop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$xts_enc_grandloop:
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm0
>>>>>>>
>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>
>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +        movdqu  xmm7,XMMWORD[80+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm15
>>>>>>>
>>>>>>> +        movdqa  xmm9,XMMWORD[96+rsp]
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +DB      102,15,56,220,233
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+rbp]
>>>>>>>
>>>>>>> +        lea     rdi,[96+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,220,241
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm9
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[rsp],xmm10
>>>>>>>
>>>>>>> +DB      102,15,56,220,249
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[48+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm9
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm11
>>>>>>>
>>>>>>> +DB      102,15,56,220,216
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm9
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm12
>>>>>>>
>>>>>>> +DB      102,15,56,220,224
>>>>>>>
>>>>>>> +DB      102,15,56,220,232
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm9
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[64+rsp],xmm14
>>>>>>>
>>>>>>> +DB      102,15,56,220,240
>>>>>>>
>>>>>>> +DB      102,15,56,220,248
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[64+rbp]
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[80+rsp],xmm8
>>>>>>>
>>>>>>> +        pshufd  xmm9,xmm15,0x5f
>>>>>>>
>>>>>>> +        jmp     NEAR $L$xts_enc_loop6
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$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[((-64))+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
>>>>>>>
>>>>>>> +DB      102,15,56,220,240
>>>>>>>
>>>>>>> +DB      102,15,56,220,248
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$xts_enc_loop6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,XMMWORD[r8]
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +        psrad   xmm14,31
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +        pand    xmm14,xmm8
>>>>>>>
>>>>>>> +        movups  xmm10,XMMWORD[rbp]
>>>>>>>
>>>>>>> +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[((-64))+rcx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm15
>>>>>>>
>>>>>>> +DB      102,15,56,220,216
>>>>>>>
>>>>>>> +        psrad   xmm14,31
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +DB      102,15,56,220,224
>>>>>>>
>>>>>>> +DB      102,15,56,220,232
>>>>>>>
>>>>>>> +        pand    xmm14,xmm8
>>>>>>>
>>>>>>> +        movaps  xmm12,xmm11
>>>>>>>
>>>>>>> +DB      102,15,56,220,240
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,220,248
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-48))+rcx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm15
>>>>>>>
>>>>>>> +        psrad   xmm14,31
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +        pand    xmm14,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +DB      102,15,56,220,233
>>>>>>>
>>>>>>> +        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[((-32))+rcx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm15
>>>>>>>
>>>>>>> +        psrad   xmm14,31
>>>>>>>
>>>>>>> +DB      102,15,56,220,216
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +        pand    xmm14,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,220,224
>>>>>>>
>>>>>>> +DB      102,15,56,220,232
>>>>>>>
>>>>>>> +DB      102,15,56,220,240
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>
>>>>>>> +        movaps  xmm14,xmm13
>>>>>>>
>>>>>>> +DB      102,15,56,220,248
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm9
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm15
>>>>>>>
>>>>>>> +        psrad   xmm0,31
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +        pand    xmm0,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +DB      102,15,56,220,233
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm0
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rbp]
>>>>>>>
>>>>>>> +DB      102,15,56,220,241
>>>>>>>
>>>>>>> +DB      102,15,56,220,249
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rbp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm15
>>>>>>>
>>>>>>> +DB      102,15,56,221,84,36,0
>>>>>>>
>>>>>>> +        psrad   xmm9,31
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +DB      102,15,56,221,92,36,16
>>>>>>>
>>>>>>> +DB      102,15,56,221,100,36,32
>>>>>>>
>>>>>>> +        pand    xmm9,xmm8
>>>>>>>
>>>>>>> +        mov     rax,r10
>>>>>>>
>>>>>>> +DB      102,15,56,221,108,36,48
>>>>>>>
>>>>>>> +DB      102,15,56,221,116,36,64
>>>>>>>
>>>>>>> +DB      102,15,56,221,124,36,80
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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     NEAR $L$xts_enc_grandloop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     eax,16+96
>>>>>>>
>>>>>>> +        sub     eax,r10d
>>>>>>>
>>>>>>> +        mov     rcx,rbp
>>>>>>>
>>>>>>> +        shr     eax,4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$xts_enc_short:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,eax
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm0
>>>>>>>
>>>>>>> +        add     rdx,16*6
>>>>>>>
>>>>>>> +        jz      NEAR $L$xts_enc_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm0
>>>>>>>
>>>>>>> +        cmp     rdx,0x20
>>>>>>>
>>>>>>> +        jb      NEAR $L$xts_enc_one
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm0
>>>>>>>
>>>>>>> +        je      NEAR $L$xts_enc_two
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm0
>>>>>>>
>>>>>>> +        cmp     rdx,0x40
>>>>>>>
>>>>>>> +        jb      NEAR $L$xts_enc_three
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm0
>>>>>>>
>>>>>>> +        je      NEAR $L$xts_enc_four
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>>
>>>>>>> +        lea     rdi,[80+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    _aesni_encrypt6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm15
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        xorps   xmm5,xmm13
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        xorps   xmm6,xmm14
>>>>>>>
>>>>>>> +        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[rdi]
>>>>>>>
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +$L$oop_enc1_9:
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        dec     eax
>>>>>>>
>>>>>>> +        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[rsi],xmm2
>>>>>>>
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$xts_enc_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$xts_enc_two:
>>>>>>>
>>>>>>> +        movups  xmm2,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +        lea     rdi,[32+rdi]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    _aesni_encrypt2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm12
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>
>>>>>>> +        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[rdi]
>>>>>>>
>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +        movups  xmm4,XMMWORD[32+rdi]
>>>>>>>
>>>>>>> +        lea     rdi,[48+rdi]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    _aesni_encrypt3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm13
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>
>>>>>>> +        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[rdi]
>>>>>>>
>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +        movups  xmm4,XMMWORD[32+rdi]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>
>>>>>>> +        movups  xmm5,XMMWORD[48+rdi]
>>>>>>>
>>>>>>> +        lea     rdi,[64+rdi]
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>
>>>>>>> +        xorps   xmm5,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    _aesni_encrypt4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>
>>>>>>> +        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:
>>>>>>>
>>>>>>> +        and     r9,15
>>>>>>>
>>>>>>> +        jz      NEAR $L$xts_enc_ret
>>>>>>>
>>>>>>> +        mov     rdx,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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     NEAR $L$xts_enc_steal
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     rsi,r9
>>>>>>>
>>>>>>> +        mov     rcx,rbp
>>>>>>>
>>>>>>> +        mov     eax,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm2,XMMWORD[((-16))+rsi]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +$L$oop_enc1_10:
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        dec     eax
>>>>>>>
>>>>>>> +        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[(-16)+rsi],xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$xts_enc_ret:
>>>>>>>
>>>>>>> +        xorps   xmm0,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[((-168))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-168)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[((-152))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-152)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[((-136))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-136)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[((-120))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-120)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm10,XMMWORD[((-104))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-104)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm11,XMMWORD[((-88))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-88)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm12,XMMWORD[((-72))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-72)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm13,XMMWORD[((-56))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-56)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm14,XMMWORD[((-40))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-40)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm15,XMMWORD[((-24))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-24)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm0
>>>>>>>
>>>>>>> +        mov     rbp,QWORD[((-8))+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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:
>>>>>>>
>>>>>>> +global  aesni_xts_decrypt
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +aesni_xts_decrypt:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_aesni_xts_decrypt:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +        mov     rcx,r9
>>>>>>>
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r11,[rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     rsp,272
>>>>>>>
>>>>>>> +        and     rsp,-16
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-168)+r11],xmm6
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-152)+r11],xmm7
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-136)+r11],xmm8
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-120)+r11],xmm9
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-104)+r11],xmm10
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-88)+r11],xmm11
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-72)+r11],xmm12
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-56)+r11],xmm13
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-40)+r11],xmm14
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-24)+r11],xmm15
>>>>>>>
>>>>>>> +$L$xts_dec_body:
>>>>>>>
>>>>>>> +        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:
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        dec     eax
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +        setnz   al
>>>>>>>
>>>>>>> +        shl     rax,4
>>>>>>>
>>>>>>> +        sub     rdx,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        mov     rbp,rcx
>>>>>>>
>>>>>>> +        mov     eax,r10d
>>>>>>>
>>>>>>> +        shl     r10d,4
>>>>>>>
>>>>>>> +        mov     r9,rdx
>>>>>>>
>>>>>>> +        and     rdx,-16
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+r10*1+rcx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,XMMWORD[$L$xts_magic]
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm2
>>>>>>>
>>>>>>> +        pshufd  xmm9,xmm2,0x5f
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm15
>>>>>>>
>>>>>>> +        psrad   xmm14,31
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +        pand    xmm14,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm11,xmm15
>>>>>>>
>>>>>>> +        psrad   xmm14,31
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +        pand    xmm14,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm15
>>>>>>>
>>>>>>> +        psrad   xmm14,31
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +        pand    xmm14,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm15
>>>>>>>
>>>>>>> +        psrad   xmm14,31
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +        pand    xmm14,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm15
>>>>>>>
>>>>>>> +        psrad   xmm9,31
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +        pand    xmm9,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     rdx,16*6
>>>>>>>
>>>>>>> +        jc      NEAR $L$xts_dec_short
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     eax,16+96
>>>>>>>
>>>>>>> +        lea     rcx,[32+r10*1+rbp]
>>>>>>>
>>>>>>> +        sub     rax,r10
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rbp]
>>>>>>>
>>>>>>> +        mov     r10,rax
>>>>>>>
>>>>>>> +        lea     r8,[$L$xts_magic]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$xts_dec_grandloop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$xts_dec_grandloop:
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm0
>>>>>>>
>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>
>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +DB      102,15,56,222,217
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>
>>>>>>> +DB      102,15,56,222,225
>>>>>>>
>>>>>>> +        movdqu  xmm7,XMMWORD[80+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm15
>>>>>>>
>>>>>>> +        movdqa  xmm9,XMMWORD[96+rsp]
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +DB      102,15,56,222,233
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+rbp]
>>>>>>>
>>>>>>> +        lea     rdi,[96+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,222,241
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm9
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[rsp],xmm10
>>>>>>>
>>>>>>> +DB      102,15,56,222,249
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[48+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,222,208
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm9
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm11
>>>>>>>
>>>>>>> +DB      102,15,56,222,216
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm9
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm12
>>>>>>>
>>>>>>> +DB      102,15,56,222,224
>>>>>>>
>>>>>>> +DB      102,15,56,222,232
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm9
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[64+rsp],xmm14
>>>>>>>
>>>>>>> +DB      102,15,56,222,240
>>>>>>>
>>>>>>> +DB      102,15,56,222,248
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[64+rbp]
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[80+rsp],xmm8
>>>>>>>
>>>>>>> +        pshufd  xmm9,xmm15,0x5f
>>>>>>>
>>>>>>> +        jmp     NEAR $L$xts_dec_loop6
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$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[((-64))+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
>>>>>>>
>>>>>>> +DB      102,15,56,222,240
>>>>>>>
>>>>>>> +DB      102,15,56,222,248
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$xts_dec_loop6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,XMMWORD[r8]
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +        psrad   xmm14,31
>>>>>>>
>>>>>>> +DB      102,15,56,222,217
>>>>>>>
>>>>>>> +        pand    xmm14,xmm8
>>>>>>>
>>>>>>> +        movups  xmm10,XMMWORD[rbp]
>>>>>>>
>>>>>>> +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[((-64))+rcx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,222,208
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm15
>>>>>>>
>>>>>>> +DB      102,15,56,222,216
>>>>>>>
>>>>>>> +        psrad   xmm14,31
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +DB      102,15,56,222,224
>>>>>>>
>>>>>>> +DB      102,15,56,222,232
>>>>>>>
>>>>>>> +        pand    xmm14,xmm8
>>>>>>>
>>>>>>> +        movaps  xmm12,xmm11
>>>>>>>
>>>>>>> +DB      102,15,56,222,240
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,222,248
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-48))+rcx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm15
>>>>>>>
>>>>>>> +        psrad   xmm14,31
>>>>>>>
>>>>>>> +DB      102,15,56,222,217
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +        pand    xmm14,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,222,225
>>>>>>>
>>>>>>> +DB      102,15,56,222,233
>>>>>>>
>>>>>>> +        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[((-32))+rcx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,222,208
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm15
>>>>>>>
>>>>>>> +        psrad   xmm14,31
>>>>>>>
>>>>>>> +DB      102,15,56,222,216
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +        pand    xmm14,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,222,224
>>>>>>>
>>>>>>> +DB      102,15,56,222,232
>>>>>>>
>>>>>>> +DB      102,15,56,222,240
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>
>>>>>>> +        movaps  xmm14,xmm13
>>>>>>>
>>>>>>> +DB      102,15,56,222,248
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm9
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm15
>>>>>>>
>>>>>>> +        psrad   xmm0,31
>>>>>>>
>>>>>>> +DB      102,15,56,222,217
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +        pand    xmm0,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,222,225
>>>>>>>
>>>>>>> +DB      102,15,56,222,233
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm0
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rbp]
>>>>>>>
>>>>>>> +DB      102,15,56,222,241
>>>>>>>
>>>>>>> +DB      102,15,56,222,249
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rbp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm15
>>>>>>>
>>>>>>> +DB      102,15,56,223,84,36,0
>>>>>>>
>>>>>>> +        psrad   xmm9,31
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +DB      102,15,56,223,92,36,16
>>>>>>>
>>>>>>> +DB      102,15,56,223,100,36,32
>>>>>>>
>>>>>>> +        pand    xmm9,xmm8
>>>>>>>
>>>>>>> +        mov     rax,r10
>>>>>>>
>>>>>>> +DB      102,15,56,223,108,36,48
>>>>>>>
>>>>>>> +DB      102,15,56,223,116,36,64
>>>>>>>
>>>>>>> +DB      102,15,56,223,124,36,80
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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     NEAR $L$xts_dec_grandloop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     eax,16+96
>>>>>>>
>>>>>>> +        sub     eax,r10d
>>>>>>>
>>>>>>> +        mov     rcx,rbp
>>>>>>>
>>>>>>> +        shr     eax,4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$xts_dec_short:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,eax
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm0
>>>>>>>
>>>>>>> +        add     rdx,16*6
>>>>>>>
>>>>>>> +        jz      NEAR $L$xts_dec_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm0
>>>>>>>
>>>>>>> +        cmp     rdx,0x20
>>>>>>>
>>>>>>> +        jb      NEAR $L$xts_dec_one
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm0
>>>>>>>
>>>>>>> +        je      NEAR $L$xts_dec_two
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm0
>>>>>>>
>>>>>>> +        cmp     rdx,0x40
>>>>>>>
>>>>>>> +        jb      NEAR $L$xts_dec_three
>>>>>>>
>>>>>>> +        je      NEAR $L$xts_dec_four
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>>
>>>>>>> +        lea     rdi,[80+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    _aesni_decrypt6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        xorps   xmm5,xmm13
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        xorps   xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm14
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>>
>>>>>>> +        pcmpgtd xmm14,xmm15
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[64+rsi],xmm6
>>>>>>>
>>>>>>> +        lea     rsi,[80+rsi]
>>>>>>>
>>>>>>> +        pshufd  xmm11,xmm14,0x13
>>>>>>>
>>>>>>> +        and     r9,15
>>>>>>>
>>>>>>> +        jz      NEAR $L$xts_dec_ret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm15
>>>>>>>
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>
>>>>>>> +        pand    xmm11,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm15
>>>>>>>
>>>>>>> +        jmp     NEAR $L$xts_dec_done2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$xts_dec_one:
>>>>>>>
>>>>>>> +        movups  xmm2,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +$L$oop_dec1_12:
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +        dec     eax
>>>>>>>
>>>>>>> +        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[rsi],xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm11,xmm12
>>>>>>>
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$xts_dec_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$xts_dec_two:
>>>>>>>
>>>>>>> +        movups  xmm2,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +        lea     rdi,[32+rdi]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    _aesni_decrypt2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm12
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm11,xmm13
>>>>>>>
>>>>>>> +        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[rdi]
>>>>>>>
>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +        movups  xmm4,XMMWORD[32+rdi]
>>>>>>>
>>>>>>> +        lea     rdi,[48+rdi]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    _aesni_decrypt3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm13
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm11,xmm14
>>>>>>>
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>
>>>>>>> +        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[rdi]
>>>>>>>
>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +        movups  xmm4,XMMWORD[32+rdi]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>
>>>>>>> +        movups  xmm5,XMMWORD[48+rdi]
>>>>>>>
>>>>>>> +        lea     rdi,[64+rdi]
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>
>>>>>>> +        xorps   xmm5,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    _aesni_decrypt4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm11,xmm15
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>
>>>>>>> +        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:
>>>>>>>
>>>>>>> +        and     r9,15
>>>>>>>
>>>>>>> +        jz      NEAR $L$xts_dec_ret
>>>>>>>
>>>>>>> +$L$xts_dec_done2:
>>>>>>>
>>>>>>> +        mov     rdx,r9
>>>>>>>
>>>>>>> +        mov     rcx,rbp
>>>>>>>
>>>>>>> +        mov     eax,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm2,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm11
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +$L$oop_dec1_13:
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +        dec     eax
>>>>>>>
>>>>>>> +        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[rsi],xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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     NEAR $L$xts_dec_steal
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     rsi,r9
>>>>>>>
>>>>>>> +        mov     rcx,rbp
>>>>>>>
>>>>>>> +        mov     eax,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm2,XMMWORD[rsi]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +$L$oop_dec1_14:
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +        dec     eax
>>>>>>>
>>>>>>> +        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[rsi],xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$xts_dec_ret:
>>>>>>>
>>>>>>> +        xorps   xmm0,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[((-168))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-168)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[((-152))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-152)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[((-136))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-136)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[((-120))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-120)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm10,XMMWORD[((-104))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-104)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm11,XMMWORD[((-88))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-88)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm12,XMMWORD[((-72))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-72)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm13,XMMWORD[((-56))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-56)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm14,XMMWORD[((-40))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-40)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm15,XMMWORD[((-24))+r11]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-24)+r11],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm0
>>>>>>>
>>>>>>> +        mov     rbp,QWORD[((-8))+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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:
>>>>>>>
>>>>>>> +global  aesni_ocb_encrypt
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +aesni_ocb_encrypt:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_aesni_ocb_encrypt:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +        mov     rcx,r9
>>>>>>>
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rax,[rsp]
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[((-160))+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>>
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>>
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>>
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>>
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm10
>>>>>>>
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm11
>>>>>>>
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm12
>>>>>>>
>>>>>>> +        movaps  XMMWORD[112+rsp],xmm13
>>>>>>>
>>>>>>> +        movaps  XMMWORD[128+rsp],xmm14
>>>>>>>
>>>>>>> +        movaps  XMMWORD[144+rsp],xmm15
>>>>>>>
>>>>>>> +$L$ocb_enc_body:
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[56+rax]
>>>>>>>
>>>>>>> +        mov     rbp,QWORD[((56+8))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[240+rcx]
>>>>>>>
>>>>>>> +        mov     r11,rcx
>>>>>>>
>>>>>>> +        shl     r10d,4
>>>>>>>
>>>>>>> +        movups  xmm9,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+r10*1+rcx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  xmm15,XMMWORD[r9]
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     eax,16+32
>>>>>>>
>>>>>>> +        lea     rcx,[32+r10*1+r11]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>>
>>>>>>> +        sub     rax,r10
>>>>>>>
>>>>>>> +        mov     r10,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  xmm10,XMMWORD[rbx]
>>>>>>>
>>>>>>> +        movdqu  xmm8,XMMWORD[rbp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        test    r8,1
>>>>>>>
>>>>>>> +        jnz     NEAR $L$ocb_enc_odd
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        bsf     r12,r8
>>>>>>>
>>>>>>> +        add     r8,1
>>>>>>>
>>>>>>> +        shl     r12,4
>>>>>>>
>>>>>>> +        movdqu  xmm7,XMMWORD[r12*1+rbx]
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    __ocb_encrypt1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm7
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>
>>>>>>> +        sub     rdx,1
>>>>>>>
>>>>>>> +        jz      NEAR $L$ocb_enc_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$ocb_enc_odd:
>>>>>>>
>>>>>>> +        lea     r12,[1+r8]
>>>>>>>
>>>>>>> +        lea     r13,[3+r8]
>>>>>>>
>>>>>>> +        lea     r14,[5+r8]
>>>>>>>
>>>>>>> +        lea     r8,[6+r8]
>>>>>>>
>>>>>>> +        bsf     r12,r12
>>>>>>>
>>>>>>> +        bsf     r13,r13
>>>>>>>
>>>>>>> +        bsf     r14,r14
>>>>>>>
>>>>>>> +        shl     r12,4
>>>>>>>
>>>>>>> +        shl     r13,4
>>>>>>>
>>>>>>> +        shl     r14,4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     rdx,6
>>>>>>>
>>>>>>> +        jc      NEAR $L$ocb_enc_short
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ocb_enc_grandloop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$ocb_enc_grandloop:
>>>>>>>
>>>>>>> +        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]
>>>>>>>
>>>>>>> +        lea     rdi,[96+rdi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    __ocb_encrypt6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +        lea     rsi,[96+rsi]
>>>>>>>
>>>>>>> +        sub     rdx,6
>>>>>>>
>>>>>>> +        jnc     NEAR $L$ocb_enc_grandloop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$ocb_enc_short:
>>>>>>>
>>>>>>> +        add     rdx,6
>>>>>>>
>>>>>>> +        jz      NEAR $L$ocb_enc_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        cmp     rdx,2
>>>>>>>
>>>>>>> +        jb      NEAR $L$ocb_enc_one
>>>>>>>
>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +        je      NEAR $L$ocb_enc_two
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>>
>>>>>>> +        cmp     rdx,4
>>>>>>>
>>>>>>> +        jb      NEAR $L$ocb_enc_three
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>>
>>>>>>> +        je      NEAR $L$ocb_enc_four
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    __ocb_encrypt6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm14
>>>>>>>
>>>>>>> +        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$ocb_enc_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ocb_enc_one:
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    __ocb_encrypt1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm7
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ocb_enc_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ocb_enc_two:
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    __ocb_encrypt4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm11
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ocb_enc_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ocb_enc_three:
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    __ocb_encrypt4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm12
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ocb_enc_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ocb_enc_four:
>>>>>>>
>>>>>>> +        call    __ocb_encrypt4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm13
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$ocb_enc_done:
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm0
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rbp],xmm8
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[r9],xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xorps   xmm0,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[16+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[32+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[48+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm10,XMMWORD[64+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm11,XMMWORD[80+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm12,XMMWORD[96+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm13,XMMWORD[112+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[112+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm14,XMMWORD[128+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[128+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm15,XMMWORD[144+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[144+rsp],xmm0
>>>>>>>
>>>>>>> +        lea     rax,[((160+40))+rsp]
>>>>>>>
>>>>>>> +$L$ocb_enc_pop:
>>>>>>>
>>>>>>> +        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$ocb_enc_epilogue:
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$SEH_end_aesni_ocb_encrypt:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +__ocb_encrypt6:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>
>>>>>>> +        movdqu  xmm11,XMMWORD[r12*1+rbx]
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm10
>>>>>>>
>>>>>>> +        movdqu  xmm13,XMMWORD[r13*1+rbx]
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm15
>>>>>>>
>>>>>>> +        movdqu  xmm15,XMMWORD[r14*1+rbx]
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm6
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm15
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r12,[1+r8]
>>>>>>>
>>>>>>> +        lea     r13,[3+r8]
>>>>>>>
>>>>>>> +        lea     r14,[5+r8]
>>>>>>>
>>>>>>> +        add     r8,6
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm9
>>>>>>>
>>>>>>> +        bsf     r12,r12
>>>>>>>
>>>>>>> +        bsf     r13,r13
>>>>>>>
>>>>>>> +        bsf     r14,r14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +DB      102,15,56,220,217
>>>>>>>
>>>>>>> +DB      102,15,56,220,225
>>>>>>>
>>>>>>> +DB      102,15,56,220,233
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,220,241
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,220,249
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[48+r11]
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +DB      102,15,56,220,216
>>>>>>>
>>>>>>> +DB      102,15,56,220,224
>>>>>>>
>>>>>>> +DB      102,15,56,220,232
>>>>>>>
>>>>>>> +DB      102,15,56,220,240
>>>>>>>
>>>>>>> +DB      102,15,56,220,248
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[64+r11]
>>>>>>>
>>>>>>> +        shl     r12,4
>>>>>>>
>>>>>>> +        shl     r13,4
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ocb_enc_loop6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$ocb_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[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
>>>>>>>
>>>>>>> +DB      102,15,56,220,240
>>>>>>>
>>>>>>> +DB      102,15,56,220,248
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$ocb_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[16+r11]
>>>>>>>
>>>>>>> +        shl     r14,4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,65,15,56,221,210
>>>>>>>
>>>>>>> +        movdqu  xmm10,XMMWORD[rbx]
>>>>>>>
>>>>>>> +        mov     rax,r10
>>>>>>>
>>>>>>> +DB      102,65,15,56,221,219
>>>>>>>
>>>>>>> +DB      102,65,15,56,221,228
>>>>>>>
>>>>>>> +DB      102,65,15,56,221,237
>>>>>>>
>>>>>>> +DB      102,65,15,56,221,246
>>>>>>>
>>>>>>> +DB      102,65,15,56,221,255
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +__ocb_encrypt4:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>
>>>>>>> +        movdqu  xmm11,XMMWORD[r12*1+rbx]
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm10
>>>>>>>
>>>>>>> +        movdqu  xmm13,XMMWORD[r13*1+rbx]
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm15
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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[48+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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[64+r11]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ocb_enc_loop4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$ocb_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[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[((-16))+rax*1+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$ocb_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[16+r11]
>>>>>>>
>>>>>>> +        mov     rax,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,65,15,56,221,210
>>>>>>>
>>>>>>> +DB      102,65,15,56,221,219
>>>>>>>
>>>>>>> +DB      102,65,15,56,221,228
>>>>>>>
>>>>>>> +DB      102,65,15,56,221,237
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +__ocb_encrypt1:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm15
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm7
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[48+r11]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[64+r11]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ocb_enc_loop1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$ocb_enc_loop1:
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[rax*1+rcx]
>>>>>>>
>>>>>>> +        add     rax,32
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,220,208
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$ocb_enc_loop1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>>
>>>>>>> +        mov     rax,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,221,215
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  aesni_ocb_decrypt
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +aesni_ocb_decrypt:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_aesni_ocb_decrypt:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +        mov     rcx,r9
>>>>>>>
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rax,[rsp]
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[((-160))+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>>
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>>
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>>
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>>
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm10
>>>>>>>
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm11
>>>>>>>
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm12
>>>>>>>
>>>>>>> +        movaps  XMMWORD[112+rsp],xmm13
>>>>>>>
>>>>>>> +        movaps  XMMWORD[128+rsp],xmm14
>>>>>>>
>>>>>>> +        movaps  XMMWORD[144+rsp],xmm15
>>>>>>>
>>>>>>> +$L$ocb_dec_body:
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[56+rax]
>>>>>>>
>>>>>>> +        mov     rbp,QWORD[((56+8))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[240+rcx]
>>>>>>>
>>>>>>> +        mov     r11,rcx
>>>>>>>
>>>>>>> +        shl     r10d,4
>>>>>>>
>>>>>>> +        movups  xmm9,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+r10*1+rcx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  xmm15,XMMWORD[r9]
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     eax,16+32
>>>>>>>
>>>>>>> +        lea     rcx,[32+r10*1+r11]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>>
>>>>>>> +        sub     rax,r10
>>>>>>>
>>>>>>> +        mov     r10,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  xmm10,XMMWORD[rbx]
>>>>>>>
>>>>>>> +        movdqu  xmm8,XMMWORD[rbp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        test    r8,1
>>>>>>>
>>>>>>> +        jnz     NEAR $L$ocb_dec_odd
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        bsf     r12,r8
>>>>>>>
>>>>>>> +        add     r8,1
>>>>>>>
>>>>>>> +        shl     r12,4
>>>>>>>
>>>>>>> +        movdqu  xmm7,XMMWORD[r12*1+rbx]
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    __ocb_decrypt1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm7
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        xorps   xmm8,xmm2
>>>>>>>
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>
>>>>>>> +        sub     rdx,1
>>>>>>>
>>>>>>> +        jz      NEAR $L$ocb_dec_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$ocb_dec_odd:
>>>>>>>
>>>>>>> +        lea     r12,[1+r8]
>>>>>>>
>>>>>>> +        lea     r13,[3+r8]
>>>>>>>
>>>>>>> +        lea     r14,[5+r8]
>>>>>>>
>>>>>>> +        lea     r8,[6+r8]
>>>>>>>
>>>>>>> +        bsf     r12,r12
>>>>>>>
>>>>>>> +        bsf     r13,r13
>>>>>>>
>>>>>>> +        bsf     r14,r14
>>>>>>>
>>>>>>> +        shl     r12,4
>>>>>>>
>>>>>>> +        shl     r13,4
>>>>>>>
>>>>>>> +        shl     r14,4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     rdx,6
>>>>>>>
>>>>>>> +        jc      NEAR $L$ocb_dec_short
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ocb_dec_grandloop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$ocb_dec_grandloop:
>>>>>>>
>>>>>>> +        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]
>>>>>>>
>>>>>>> +        lea     rdi,[96+rdi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    __ocb_decrypt6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm2
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm4
>>>>>>>
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm5
>>>>>>>
>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm6
>>>>>>>
>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm7
>>>>>>>
>>>>>>> +        lea     rsi,[96+rsi]
>>>>>>>
>>>>>>> +        sub     rdx,6
>>>>>>>
>>>>>>> +        jnc     NEAR $L$ocb_dec_grandloop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$ocb_dec_short:
>>>>>>>
>>>>>>> +        add     rdx,6
>>>>>>>
>>>>>>> +        jz      NEAR $L$ocb_dec_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        cmp     rdx,2
>>>>>>>
>>>>>>> +        jb      NEAR $L$ocb_dec_one
>>>>>>>
>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +        je      NEAR $L$ocb_dec_two
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>>
>>>>>>> +        cmp     rdx,4
>>>>>>>
>>>>>>> +        jb      NEAR $L$ocb_dec_three
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>>
>>>>>>> +        je      NEAR $L$ocb_dec_four
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    __ocb_decrypt6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm14
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm2
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm4
>>>>>>>
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm5
>>>>>>>
>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ocb_dec_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ocb_dec_one:
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    __ocb_decrypt1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm7
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        xorps   xmm8,xmm2
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ocb_dec_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ocb_dec_two:
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    __ocb_decrypt4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm11
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        xorps   xmm8,xmm2
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        xorps   xmm8,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ocb_dec_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ocb_dec_three:
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    __ocb_decrypt4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm12
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        xorps   xmm8,xmm2
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        xorps   xmm8,xmm3
>>>>>>>
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        xorps   xmm8,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ocb_dec_done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ocb_dec_four:
>>>>>>>
>>>>>>> +        call    __ocb_decrypt4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm13
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm2
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm4
>>>>>>>
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$ocb_dec_done:
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm0
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rbp],xmm8
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[r9],xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xorps   xmm0,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[16+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[32+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[48+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm10,XMMWORD[64+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm11,XMMWORD[80+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm12,XMMWORD[96+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm13,XMMWORD[112+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[112+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm14,XMMWORD[128+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[128+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm15,XMMWORD[144+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[144+rsp],xmm0
>>>>>>>
>>>>>>> +        lea     rax,[((160+40))+rsp]
>>>>>>>
>>>>>>> +$L$ocb_dec_pop:
>>>>>>>
>>>>>>> +        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$ocb_dec_epilogue:
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$SEH_end_aesni_ocb_decrypt:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +__ocb_decrypt6:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>
>>>>>>> +        movdqu  xmm11,XMMWORD[r12*1+rbx]
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm10
>>>>>>>
>>>>>>> +        movdqu  xmm13,XMMWORD[r13*1+rbx]
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm15
>>>>>>>
>>>>>>> +        movdqu  xmm15,XMMWORD[r14*1+rbx]
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm15
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r12,[1+r8]
>>>>>>>
>>>>>>> +        lea     r13,[3+r8]
>>>>>>>
>>>>>>> +        lea     r14,[5+r8]
>>>>>>>
>>>>>>> +        add     r8,6
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm9
>>>>>>>
>>>>>>> +        bsf     r12,r12
>>>>>>>
>>>>>>> +        bsf     r13,r13
>>>>>>>
>>>>>>> +        bsf     r14,r14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +DB      102,15,56,222,217
>>>>>>>
>>>>>>> +DB      102,15,56,222,225
>>>>>>>
>>>>>>> +DB      102,15,56,222,233
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,222,241
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,222,249
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[48+r11]
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,222,208
>>>>>>>
>>>>>>> +DB      102,15,56,222,216
>>>>>>>
>>>>>>> +DB      102,15,56,222,224
>>>>>>>
>>>>>>> +DB      102,15,56,222,232
>>>>>>>
>>>>>>> +DB      102,15,56,222,240
>>>>>>>
>>>>>>> +DB      102,15,56,222,248
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[64+r11]
>>>>>>>
>>>>>>> +        shl     r12,4
>>>>>>>
>>>>>>> +        shl     r13,4
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ocb_dec_loop6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$ocb_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[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
>>>>>>>
>>>>>>> +DB      102,15,56,222,240
>>>>>>>
>>>>>>> +DB      102,15,56,222,248
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$ocb_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[16+r11]
>>>>>>>
>>>>>>> +        shl     r14,4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,65,15,56,223,210
>>>>>>>
>>>>>>> +        movdqu  xmm10,XMMWORD[rbx]
>>>>>>>
>>>>>>> +        mov     rax,r10
>>>>>>>
>>>>>>> +DB      102,65,15,56,223,219
>>>>>>>
>>>>>>> +DB      102,65,15,56,223,228
>>>>>>>
>>>>>>> +DB      102,65,15,56,223,237
>>>>>>>
>>>>>>> +DB      102,65,15,56,223,246
>>>>>>>
>>>>>>> +DB      102,65,15,56,223,255
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +__ocb_decrypt4:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>
>>>>>>> +        movdqu  xmm11,XMMWORD[r12*1+rbx]
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm10
>>>>>>>
>>>>>>> +        movdqu  xmm13,XMMWORD[r13*1+rbx]
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm15
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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[48+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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[64+r11]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ocb_dec_loop4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$ocb_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[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[((-16))+rax*1+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$ocb_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[16+r11]
>>>>>>>
>>>>>>> +        mov     rax,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,65,15,56,223,210
>>>>>>>
>>>>>>> +DB      102,65,15,56,223,219
>>>>>>>
>>>>>>> +DB      102,65,15,56,223,228
>>>>>>>
>>>>>>> +DB      102,65,15,56,223,237
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +__ocb_decrypt1:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm15
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm7
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[48+r11]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,222,208
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[64+r11]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ocb_dec_loop1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$ocb_dec_loop1:
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[rax*1+rcx]
>>>>>>>
>>>>>>> +        add     rax,32
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,222,208
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$ocb_dec_loop1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>>
>>>>>>> +        mov     rax,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,223,215
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  aesni_cbc_encrypt
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +aesni_cbc_encrypt:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_aesni_cbc_encrypt:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +        mov     rcx,r9
>>>>>>>
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        test    rdx,rdx
>>>>>>>
>>>>>>> +        jz      NEAR $L$cbc_ret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[240+rcx]
>>>>>>>
>>>>>>> +        mov     r11,rcx
>>>>>>>
>>>>>>> +        test    r9d,r9d
>>>>>>>
>>>>>>> +        jz      NEAR $L$cbc_decrypt
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm2,XMMWORD[r8]
>>>>>>>
>>>>>>> +        mov     eax,r10d
>>>>>>>
>>>>>>> +        cmp     rdx,16
>>>>>>>
>>>>>>> +        jb      NEAR $L$cbc_enc_tail
>>>>>>>
>>>>>>> +        sub     rdx,16
>>>>>>>
>>>>>>> +        jmp     NEAR $L$cbc_enc_loop
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$cbc_enc_loop:
>>>>>>>
>>>>>>> +        movups  xmm3,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm3
>>>>>>>
>>>>>>> +$L$oop_enc1_15:
>>>>>>>
>>>>>>> +DB      102,15,56,220,209
>>>>>>>
>>>>>>> +        dec     eax
>>>>>>>
>>>>>>> +        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[rsi],xmm2
>>>>>>>
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>
>>>>>>> +        sub     rdx,16
>>>>>>>
>>>>>>> +        jnc     NEAR $L$cbc_enc_loop
>>>>>>>
>>>>>>> +        add     rdx,16
>>>>>>>
>>>>>>> +        jnz     NEAR $L$cbc_enc_tail
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>
>>>>>>> +        movups  XMMWORD[r8],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        jmp     NEAR $L$cbc_ret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$cbc_enc_tail:
>>>>>>>
>>>>>>> +        mov     rcx,rdx
>>>>>>>
>>>>>>> +        xchg    rsi,rdi
>>>>>>>
>>>>>>> +        DD      0x9066A4F3
>>>>>>>
>>>>>>> +        mov     ecx,16
>>>>>>>
>>>>>>> +        sub     rcx,rdx
>>>>>>>
>>>>>>> +        xor     eax,eax
>>>>>>>
>>>>>>> +        DD      0x9066AAF3
>>>>>>>
>>>>>>> +        lea     rdi,[((-16))+rdi]
>>>>>>>
>>>>>>> +        mov     eax,r10d
>>>>>>>
>>>>>>> +        mov     rsi,rdi
>>>>>>>
>>>>>>> +        mov     rcx,r11
>>>>>>>
>>>>>>> +        xor     rdx,rdx
>>>>>>>
>>>>>>> +        jmp     NEAR $L$cbc_enc_loop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$cbc_decrypt:
>>>>>>>
>>>>>>> +        cmp     rdx,16
>>>>>>>
>>>>>>> +        jne     NEAR $L$cbc_decrypt_bulk
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        movdqu  xmm3,XMMWORD[r8]
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm2
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +$L$oop_dec1_16:
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +        dec     r10d
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_dec1_16
>>>>>>>
>>>>>>> +DB      102,15,56,223,209
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[r8],xmm4
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        jmp     NEAR $L$cbc_ret
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$cbc_decrypt_bulk:
>>>>>>>
>>>>>>> +        lea     r11,[rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     rsp,176
>>>>>>>
>>>>>>> +        and     rsp,-16
>>>>>>>
>>>>>>> +        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:
>>>>>>>
>>>>>>> +        mov     rbp,rcx
>>>>>>>
>>>>>>> +        movups  xmm10,XMMWORD[r8]
>>>>>>>
>>>>>>> +        mov     eax,r10d
>>>>>>>
>>>>>>> +        cmp     rdx,0x50
>>>>>>>
>>>>>>> +        jbe     NEAR $L$cbc_dec_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +        movdqa  xmm11,xmm2
>>>>>>>
>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm3
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm4
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm5
>>>>>>>
>>>>>>> +        movdqu  xmm7,XMMWORD[80+rdi]
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm6
>>>>>>>
>>>>>>> +        mov     r9d,DWORD[((OPENSSL_ia32cap_P+4))]
>>>>>>>
>>>>>>> +        cmp     rdx,0x70
>>>>>>>
>>>>>>> +        jbe     NEAR $L$cbc_dec_six_or_seven
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r9d,71303168
>>>>>>>
>>>>>>> +        sub     rdx,0x50
>>>>>>>
>>>>>>> +        cmp     r9d,4194304
>>>>>>>
>>>>>>> +        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[rsi],xmm9
>>>>>>>
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>
>>>>>>> +$L$cbc_dec_loop8_enter:
>>>>>>>
>>>>>>> +        movdqu  xmm8,XMMWORD[96+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm0
>>>>>>>
>>>>>>> +        movdqu  xmm9,XMMWORD[112+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((16-112))+rcx]
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>
>>>>>>> +        mov     rbp,-1
>>>>>>>
>>>>>>> +        cmp     rdx,0x70
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm0
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((32-112))+rcx]
>>>>>>>
>>>>>>> +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
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,193
>>>>>>>
>>>>>>> +        adc     rbp,0
>>>>>>>
>>>>>>> +        and     rbp,128
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,201
>>>>>>>
>>>>>>> +        add     rbp,rdi
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((48-112))+rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,222,208
>>>>>>>
>>>>>>> +DB      102,15,56,222,216
>>>>>>>
>>>>>>> +DB      102,15,56,222,224
>>>>>>>
>>>>>>> +DB      102,15,56,222,232
>>>>>>>
>>>>>>> +DB      102,15,56,222,240
>>>>>>>
>>>>>>> +DB      102,15,56,222,248
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,192
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,200
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((64-112))+rcx]
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +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
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,193
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,201
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((80-112))+rcx]
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +DB      102,15,56,222,208
>>>>>>>
>>>>>>> +DB      102,15,56,222,216
>>>>>>>
>>>>>>> +DB      102,15,56,222,224
>>>>>>>
>>>>>>> +DB      102,15,56,222,232
>>>>>>>
>>>>>>> +DB      102,15,56,222,240
>>>>>>>
>>>>>>> +DB      102,15,56,222,248
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,192
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,200
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((96-112))+rcx]
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +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
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,193
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,201
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((112-112))+rcx]
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +DB      102,15,56,222,208
>>>>>>>
>>>>>>> +DB      102,15,56,222,216
>>>>>>>
>>>>>>> +DB      102,15,56,222,224
>>>>>>>
>>>>>>> +DB      102,15,56,222,232
>>>>>>>
>>>>>>> +DB      102,15,56,222,240
>>>>>>>
>>>>>>> +DB      102,15,56,222,248
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,192
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,200
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((128-112))+rcx]
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +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
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,193
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,201
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((144-112))+rcx]
>>>>>>>
>>>>>>> +        cmp     eax,11
>>>>>>>
>>>>>>> +DB      102,15,56,222,208
>>>>>>>
>>>>>>> +DB      102,15,56,222,216
>>>>>>>
>>>>>>> +DB      102,15,56,222,224
>>>>>>>
>>>>>>> +DB      102,15,56,222,232
>>>>>>>
>>>>>>> +DB      102,15,56,222,240
>>>>>>>
>>>>>>> +DB      102,15,56,222,248
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,192
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,200
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +DB      102,15,56,222,233
>>>>>>>
>>>>>>> +DB      102,15,56,222,241
>>>>>>>
>>>>>>> +DB      102,15,56,222,249
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,193
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,201
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((176-112))+rcx]
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +DB      102,15,56,222,208
>>>>>>>
>>>>>>> +DB      102,15,56,222,216
>>>>>>>
>>>>>>> +DB      102,15,56,222,224
>>>>>>>
>>>>>>> +DB      102,15,56,222,232
>>>>>>>
>>>>>>> +DB      102,15,56,222,240
>>>>>>>
>>>>>>> +DB      102,15,56,222,248
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,192
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,200
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +DB      102,15,56,222,233
>>>>>>>
>>>>>>> +DB      102,15,56,222,241
>>>>>>>
>>>>>>> +DB      102,15,56,222,249
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,193
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,201
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[((208-112))+rcx]
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +DB      102,15,56,222,208
>>>>>>>
>>>>>>> +DB      102,15,56,222,216
>>>>>>>
>>>>>>> +DB      102,15,56,222,224
>>>>>>>
>>>>>>> +DB      102,15,56,222,232
>>>>>>>
>>>>>>> +DB      102,15,56,222,240
>>>>>>>
>>>>>>> +DB      102,15,56,222,248
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,192
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,200
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((224-112))+rcx]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$cbc_dec_done
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$cbc_dec_done:
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +DB      102,15,56,222,217
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm0
>>>>>>>
>>>>>>> +DB      102,15,56,222,225
>>>>>>>
>>>>>>> +DB      102,15,56,222,233
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm0
>>>>>>>
>>>>>>> +DB      102,15,56,222,241
>>>>>>>
>>>>>>> +DB      102,15,56,222,249
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm0
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,193
>>>>>>>
>>>>>>> +DB      102,68,15,56,222,201
>>>>>>>
>>>>>>> +        movdqu  xmm1,XMMWORD[80+rdi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,65,15,56,223,210
>>>>>>>
>>>>>>> +        movdqu  xmm10,XMMWORD[96+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm0
>>>>>>>
>>>>>>> +DB      102,65,15,56,223,219
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm0
>>>>>>>
>>>>>>> +        movdqu  xmm0,XMMWORD[112+rdi]
>>>>>>>
>>>>>>> +DB      102,65,15,56,223,228
>>>>>>>
>>>>>>> +        lea     rdi,[128+rdi]
>>>>>>>
>>>>>>> +        movdqu  xmm11,XMMWORD[rbp]
>>>>>>>
>>>>>>> +DB      102,65,15,56,223,237
>>>>>>>
>>>>>>> +DB      102,65,15,56,223,246
>>>>>>>
>>>>>>> +        movdqu  xmm12,XMMWORD[16+rbp]
>>>>>>>
>>>>>>> +        movdqu  xmm13,XMMWORD[32+rbp]
>>>>>>>
>>>>>>> +DB      102,65,15,56,223,255
>>>>>>>
>>>>>>> +DB      102,68,15,56,223,193
>>>>>>>
>>>>>>> +        movdqu  xmm14,XMMWORD[48+rbp]
>>>>>>>
>>>>>>> +        movdqu  xmm15,XMMWORD[64+rbp]
>>>>>>>
>>>>>>> +DB      102,69,15,56,223,202
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm0
>>>>>>>
>>>>>>> +        movdqu  xmm1,XMMWORD[80+rbp]
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[((-112))+rcx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>>
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>>
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm14
>>>>>>>
>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm15
>>>>>>>
>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm1
>>>>>>>
>>>>>>> +        movups  XMMWORD[96+rsi],xmm8
>>>>>>>
>>>>>>> +        lea     rsi,[112+rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     rdx,0x80
>>>>>>>
>>>>>>> +        ja      NEAR $L$cbc_dec_loop8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movaps  xmm2,xmm9
>>>>>>>
>>>>>>> +        lea     rcx,[((-112))+rcx]
>>>>>>>
>>>>>>> +        add     rdx,0x70
>>>>>>>
>>>>>>> +        jle     NEAR $L$cbc_dec_clear_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,0x60
>>>>>>>
>>>>>>> +        ja      NEAR $L$cbc_dec_seven
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movaps  xmm8,xmm7
>>>>>>>
>>>>>>> +        call    _aesni_decrypt6
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>
>>>>>>> +        movaps  xmm10,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm15
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[64+rsi],xmm6
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>
>>>>>>> +        lea     rsi,[80+rsi]
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>
>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$cbc_dec_seven:
>>>>>>>
>>>>>>> +        movups  xmm8,XMMWORD[96+rdi]
>>>>>>>
>>>>>>> +        xorps   xmm9,xmm9
>>>>>>>
>>>>>>> +        call    _aesni_decrypt8
>>>>>>>
>>>>>>> +        movups  xmm9,XMMWORD[80+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>
>>>>>>> +        movups  xmm10,XMMWORD[96+rdi]
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm15
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[64+rsi],xmm6
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm9
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[80+rsi],xmm7
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>
>>>>>>> +        lea     rsi,[96+rsi]
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm9
>>>>>>>
>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$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[32+rdi]
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm3
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm4
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm5
>>>>>>>
>>>>>>> +        movdqu  xmm7,XMMWORD[80+rdi]
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm6
>>>>>>>
>>>>>>> +$L$cbc_dec_loop6_enter:
>>>>>>>
>>>>>>> +        lea     rdi,[96+rdi]
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    _aesni_decrypt6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +        mov     rcx,rbp
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm15
>>>>>>>
>>>>>>> +        mov     eax,r10d
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[64+rsi],xmm6
>>>>>>>
>>>>>>> +        lea     rsi,[80+rsi]
>>>>>>>
>>>>>>> +        sub     rdx,0x60
>>>>>>>
>>>>>>> +        ja      NEAR $L$cbc_dec_loop6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm7
>>>>>>>
>>>>>>> +        add     rdx,0x50
>>>>>>>
>>>>>>> +        jle     NEAR $L$cbc_dec_clear_tail_collected
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm7
>>>>>>>
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$cbc_dec_tail:
>>>>>>>
>>>>>>> +        movups  xmm2,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        sub     rdx,0x10
>>>>>>>
>>>>>>> +        jbe     NEAR $L$cbc_dec_one
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +        movaps  xmm11,xmm2
>>>>>>>
>>>>>>> +        sub     rdx,0x10
>>>>>>>
>>>>>>> +        jbe     NEAR $L$cbc_dec_two
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm4,XMMWORD[32+rdi]
>>>>>>>
>>>>>>> +        movaps  xmm12,xmm3
>>>>>>>
>>>>>>> +        sub     rdx,0x10
>>>>>>>
>>>>>>> +        jbe     NEAR $L$cbc_dec_three
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm5,XMMWORD[48+rdi]
>>>>>>>
>>>>>>> +        movaps  xmm13,xmm4
>>>>>>>
>>>>>>> +        sub     rdx,0x10
>>>>>>>
>>>>>>> +        jbe     NEAR $L$cbc_dec_four
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm6,XMMWORD[64+rdi]
>>>>>>>
>>>>>>> +        movaps  xmm14,xmm5
>>>>>>>
>>>>>>> +        movaps  xmm15,xmm6
>>>>>>>
>>>>>>> +        xorps   xmm7,xmm7
>>>>>>>
>>>>>>> +        call    _aesni_decrypt6
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>
>>>>>>> +        movaps  xmm10,xmm15
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +        lea     rsi,[64+rsi]
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>
>>>>>>> +        sub     rdx,0x10
>>>>>>>
>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$cbc_dec_one:
>>>>>>>
>>>>>>> +        movaps  xmm11,xmm2
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>
>>>>>>> +$L$oop_dec1_17:
>>>>>>>
>>>>>>> +DB      102,15,56,222,209
>>>>>>>
>>>>>>> +        dec     eax
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_dec1_17
>>>>>>>
>>>>>>> +DB      102,15,56,223,209
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>
>>>>>>> +        movaps  xmm10,xmm11
>>>>>>>
>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$cbc_dec_two:
>>>>>>>
>>>>>>> +        movaps  xmm12,xmm3
>>>>>>>
>>>>>>> +        call    _aesni_decrypt2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>
>>>>>>> +        movaps  xmm10,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$cbc_dec_three:
>>>>>>>
>>>>>>> +        movaps  xmm13,xmm4
>>>>>>>
>>>>>>> +        call    _aesni_decrypt3
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>
>>>>>>> +        movaps  xmm10,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        lea     rsi,[32+rsi]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$cbc_dec_four:
>>>>>>>
>>>>>>> +        movaps  xmm14,xmm5
>>>>>>>
>>>>>>> +        call    _aesni_decrypt4
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>
>>>>>>> +        movaps  xmm10,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +        lea     rsi,[48+rsi]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$cbc_dec_clear_tail_collected:
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +$L$cbc_dec_tail_collected:
>>>>>>>
>>>>>>> +        movups  XMMWORD[r8],xmm10
>>>>>>>
>>>>>>> +        and     rdx,15
>>>>>>>
>>>>>>> +        jnz     NEAR $L$cbc_dec_tail_partial
>>>>>>>
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        jmp     NEAR $L$cbc_dec_ret
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$cbc_dec_tail_partial:
>>>>>>>
>>>>>>> +        movaps  XMMWORD[rsp],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        mov     rcx,16
>>>>>>>
>>>>>>> +        mov     rdi,rsi
>>>>>>>
>>>>>>> +        sub     rcx,rdx
>>>>>>>
>>>>>>> +        lea     rsi,[rsp]
>>>>>>>
>>>>>>> +        DD      0x9066A4F3
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[rsp],xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$cbc_dec_ret:
>>>>>>>
>>>>>>> +        xorps   xmm0,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[16+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[32+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[48+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[64+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm10,XMMWORD[80+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm11,XMMWORD[96+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm12,XMMWORD[112+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[112+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm13,XMMWORD[128+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[128+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm14,XMMWORD[144+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[144+rsp],xmm0
>>>>>>>
>>>>>>> +        movaps  xmm15,XMMWORD[160+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[160+rsp],xmm0
>>>>>>>
>>>>>>> +        mov     rbp,QWORD[((-8))+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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:
>>>>>>>
>>>>>>> +global  aesni_set_decrypt_key
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +aesni_set_decrypt_key:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      0x48,0x83,0xEC,0x08
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    __aesni_set_encrypt_key
>>>>>>>
>>>>>>> +        shl     edx,4
>>>>>>>
>>>>>>> +        test    eax,eax
>>>>>>>
>>>>>>> +        jnz     NEAR $L$dec_key_ret
>>>>>>>
>>>>>>> +        lea     rcx,[16+rdx*1+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[r8]
>>>>>>>
>>>>>>> +        movups  xmm1,XMMWORD[rcx]
>>>>>>>
>>>>>>> +DB      102,15,56,219,192
>>>>>>>
>>>>>>> +DB      102,15,56,219,201
>>>>>>>
>>>>>>> +        lea     r8,[16+r8]
>>>>>>>
>>>>>>> +        lea     rcx,[((-16))+rcx]
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rcx],xmm0
>>>>>>>
>>>>>>> +        movups  XMMWORD[(-16)+r8],xmm1
>>>>>>>
>>>>>>> +        cmp     rcx,r8
>>>>>>>
>>>>>>> +        ja      NEAR $L$dec_key_inverse
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[r8]
>>>>>>>
>>>>>>> +DB      102,15,56,219,192
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>
>>>>>>> +        movups  XMMWORD[rcx],xmm0
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>
>>>>>>> +$L$dec_key_ret:
>>>>>>>
>>>>>>> +        add     rsp,8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$SEH_end_set_decrypt_key:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  aesni_set_encrypt_key
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +aesni_set_encrypt_key:
>>>>>>>
>>>>>>> +__aesni_set_encrypt_key:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      0x48,0x83,0xEC,0x08
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,-1
>>>>>>>
>>>>>>> +        test    rcx,rcx
>>>>>>>
>>>>>>> +        jz      NEAR $L$enc_key_ret
>>>>>>>
>>>>>>> +        test    r8,r8
>>>>>>>
>>>>>>> +        jz      NEAR $L$enc_key_ret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,268437504
>>>>>>>
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>
>>>>>>> +        xorps   xmm4,xmm4
>>>>>>>
>>>>>>> +        and     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
>>>>>>>
>>>>>>> +        lea     rax,[16+r8]
>>>>>>>
>>>>>>> +        cmp     edx,256
>>>>>>>
>>>>>>> +        je      NEAR $L$14rounds
>>>>>>>
>>>>>>> +        cmp     edx,192
>>>>>>>
>>>>>>> +        je      NEAR $L$12rounds
>>>>>>>
>>>>>>> +        cmp     edx,128
>>>>>>>
>>>>>>> +        jne     NEAR $L$bad_keybits
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$10rounds:
>>>>>>>
>>>>>>> +        mov     edx,9
>>>>>>>
>>>>>>> +        cmp     r10d,268435456
>>>>>>>
>>>>>>> +        je      NEAR $L$10rounds_alt
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  XMMWORD[r8],xmm0
>>>>>>>
>>>>>>> +DB      102,15,58,223,200,1
>>>>>>>
>>>>>>> +        call    $L$key_expansion_128_cold
>>>>>>>
>>>>>>> +DB      102,15,58,223,200,2
>>>>>>>
>>>>>>> +        call    $L$key_expansion_128
>>>>>>>
>>>>>>> +DB      102,15,58,223,200,4
>>>>>>>
>>>>>>> +        call    $L$key_expansion_128
>>>>>>>
>>>>>>> +DB      102,15,58,223,200,8
>>>>>>>
>>>>>>> +        call    $L$key_expansion_128
>>>>>>>
>>>>>>> +DB      102,15,58,223,200,16
>>>>>>>
>>>>>>> +        call    $L$key_expansion_128
>>>>>>>
>>>>>>> +DB      102,15,58,223,200,32
>>>>>>>
>>>>>>> +        call    $L$key_expansion_128
>>>>>>>
>>>>>>> +DB      102,15,58,223,200,64
>>>>>>>
>>>>>>> +        call    $L$key_expansion_128
>>>>>>>
>>>>>>> +DB      102,15,58,223,200,128
>>>>>>>
>>>>>>> +        call    $L$key_expansion_128
>>>>>>>
>>>>>>> +DB      102,15,58,223,200,27
>>>>>>>
>>>>>>> +        call    $L$key_expansion_128
>>>>>>>
>>>>>>> +DB      102,15,58,223,200,54
>>>>>>>
>>>>>>> +        call    $L$key_expansion_128
>>>>>>>
>>>>>>> +        movups  XMMWORD[rax],xmm0
>>>>>>>
>>>>>>> +        mov     DWORD[80+rax],edx
>>>>>>>
>>>>>>> +        xor     eax,eax
>>>>>>>
>>>>>>> +        jmp     NEAR $L$enc_key_ret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$10rounds_alt:
>>>>>>>
>>>>>>> +        movdqa  xmm5,XMMWORD[$L$key_rotate]
>>>>>>>
>>>>>>> +        mov     r10d,8
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[r8],xmm0
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_key128
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$oop_key128:
>>>>>>>
>>>>>>> +DB      102,15,56,0,197
>>>>>>>
>>>>>>> +DB      102,15,56,221,196
>>>>>>>
>>>>>>> +        pslld   xmm4,1
>>>>>>>
>>>>>>> +        lea     rax,[16+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm2
>>>>>>>
>>>>>>> +        pslldq  xmm2,4
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>
>>>>>>> +        pslldq  xmm2,4
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>
>>>>>>> +        pslldq  xmm2,4
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[(-16)+rax],xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        dec     r10d
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_key128
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[$L$key_rcon1b]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,0,197
>>>>>>>
>>>>>>> +DB      102,15,56,221,196
>>>>>>>
>>>>>>> +        pslld   xmm4,1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm2
>>>>>>>
>>>>>>> +        pslldq  xmm2,4
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>
>>>>>>> +        pslldq  xmm2,4
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>
>>>>>>> +        pslldq  xmm2,4
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rax],xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +DB      102,15,56,0,197
>>>>>>>
>>>>>>> +DB      102,15,56,221,196
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm2
>>>>>>>
>>>>>>> +        pslldq  xmm2,4
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>
>>>>>>> +        pslldq  xmm2,4
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>
>>>>>>> +        pslldq  xmm2,4
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[16+rax],xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[96+rax],edx
>>>>>>>
>>>>>>> +        xor     eax,eax
>>>>>>>
>>>>>>> +        jmp     NEAR $L$enc_key_ret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$12rounds:
>>>>>>>
>>>>>>> +        movq    xmm2,QWORD[16+rcx]
>>>>>>>
>>>>>>> +        mov     edx,11
>>>>>>>
>>>>>>> +        cmp     r10d,268435456
>>>>>>>
>>>>>>> +        je      NEAR $L$12rounds_alt
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movups  XMMWORD[r8],xmm0
>>>>>>>
>>>>>>> +DB      102,15,58,223,202,1
>>>>>>>
>>>>>>> +        call    $L$key_expansion_192a_cold
>>>>>>>
>>>>>>> +DB      102,15,58,223,202,2
>>>>>>>
>>>>>>> +        call    $L$key_expansion_192b
>>>>>>>
>>>>>>> +DB      102,15,58,223,202,4
>>>>>>>
>>>>>>> +        call    $L$key_expansion_192a
>>>>>>>
>>>>>>> +DB      102,15,58,223,202,8
>>>>>>>
>>>>>>> +        call    $L$key_expansion_192b
>>>>>>>
>>>>>>> +DB      102,15,58,223,202,16
>>>>>>>
>>>>>>> +        call    $L$key_expansion_192a
>>>>>>>
>>>>>>> +DB      102,15,58,223,202,32
>>>>>>>
>>>>>>> +        call    $L$key_expansion_192b
>>>>>>>
>>>>>>> +DB      102,15,58,223,202,64
>>>>>>>
>>>>>>> +        call    $L$key_expansion_192a
>>>>>>>
>>>>>>> +DB      102,15,58,223,202,128
>>>>>>>
>>>>>>> +        call    $L$key_expansion_192b
>>>>>>>
>>>>>>> +        movups  XMMWORD[rax],xmm0
>>>>>>>
>>>>>>> +        mov     DWORD[48+rax],edx
>>>>>>>
>>>>>>> +        xor     rax,rax
>>>>>>>
>>>>>>> +        jmp     NEAR $L$enc_key_ret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$12rounds_alt:
>>>>>>>
>>>>>>> +        movdqa  xmm5,XMMWORD[$L$key_rotate192]
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
>>>>>>>
>>>>>>> +        mov     r10d,8
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[r8],xmm0
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_key192
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$oop_key192:
>>>>>>>
>>>>>>> +        movq    QWORD[rax],xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm2
>>>>>>>
>>>>>>> +DB      102,15,56,0,213
>>>>>>>
>>>>>>> +DB      102,15,56,221,212
>>>>>>>
>>>>>>> +        pslld   xmm4,1
>>>>>>>
>>>>>>> +        lea     rax,[24+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        pslldq  xmm0,4
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        pslldq  xmm0,4
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        pslldq  xmm0,4
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pshufd  xmm3,xmm0,0xff
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>
>>>>>>> +        pslldq  xmm1,4
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[(-16)+rax],xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        dec     r10d
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_key192
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[32+rax],edx
>>>>>>>
>>>>>>> +        xor     eax,eax
>>>>>>>
>>>>>>> +        jmp     NEAR $L$enc_key_ret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$14rounds:
>>>>>>>
>>>>>>> +        movups  xmm2,XMMWORD[16+rcx]
>>>>>>>
>>>>>>> +        mov     edx,13
>>>>>>>
>>>>>>> +        lea     rax,[16+rax]
>>>>>>>
>>>>>>> +        cmp     r10d,268435456
>>>>>>>
>>>>>>> +        je      NEAR $L$14rounds_alt
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +        call    $L$key_expansion_256b
>>>>>>>
>>>>>>> +DB      102,15,58,223,202,2
>>>>>>>
>>>>>>> +        call    $L$key_expansion_256a
>>>>>>>
>>>>>>> +DB      102,15,58,223,200,2
>>>>>>>
>>>>>>> +        call    $L$key_expansion_256b
>>>>>>>
>>>>>>> +DB      102,15,58,223,202,4
>>>>>>>
>>>>>>> +        call    $L$key_expansion_256a
>>>>>>>
>>>>>>> +DB      102,15,58,223,200,4
>>>>>>>
>>>>>>> +        call    $L$key_expansion_256b
>>>>>>>
>>>>>>> +DB      102,15,58,223,202,8
>>>>>>>
>>>>>>> +        call    $L$key_expansion_256a
>>>>>>>
>>>>>>> +DB      102,15,58,223,200,8
>>>>>>>
>>>>>>> +        call    $L$key_expansion_256b
>>>>>>>
>>>>>>> +DB      102,15,58,223,202,16
>>>>>>>
>>>>>>> +        call    $L$key_expansion_256a
>>>>>>>
>>>>>>> +DB      102,15,58,223,200,16
>>>>>>>
>>>>>>> +        call    $L$key_expansion_256b
>>>>>>>
>>>>>>> +DB      102,15,58,223,202,32
>>>>>>>
>>>>>>> +        call    $L$key_expansion_256a
>>>>>>>
>>>>>>> +DB      102,15,58,223,200,32
>>>>>>>
>>>>>>> +        call    $L$key_expansion_256b
>>>>>>>
>>>>>>> +DB      102,15,58,223,202,64
>>>>>>>
>>>>>>> +        call    $L$key_expansion_256a
>>>>>>>
>>>>>>> +        movups  XMMWORD[rax],xmm0
>>>>>>>
>>>>>>> +        mov     DWORD[16+rax],edx
>>>>>>>
>>>>>>> +        xor     rax,rax
>>>>>>>
>>>>>>> +        jmp     NEAR $L$enc_key_ret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$14rounds_alt:
>>>>>>>
>>>>>>> +        movdqa  xmm5,XMMWORD[$L$key_rotate]
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
>>>>>>>
>>>>>>> +        mov     r10d,7
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[r8],xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[16+r8],xmm2
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_key256
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$oop_key256:
>>>>>>>
>>>>>>> +DB      102,15,56,0,213
>>>>>>>
>>>>>>> +DB      102,15,56,221,212
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        pslldq  xmm0,4
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        pslldq  xmm0,4
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        pslldq  xmm0,4
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        pslld   xmm4,1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rax],xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        dec     r10d
>>>>>>>
>>>>>>> +        jz      NEAR $L$done_key256
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pshufd  xmm2,xmm0,0xff
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +DB      102,15,56,221,211
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm1
>>>>>>>
>>>>>>> +        pslldq  xmm1,4
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>
>>>>>>> +        pslldq  xmm1,4
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>
>>>>>>> +        pslldq  xmm1,4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm1
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[16+rax],xmm2
>>>>>>>
>>>>>>> +        lea     rax,[32+rax]
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_key256
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$done_key256:
>>>>>>>
>>>>>>> +        mov     DWORD[16+rax],edx
>>>>>>>
>>>>>>> +        xor     eax,eax
>>>>>>>
>>>>>>> +        jmp     NEAR $L$enc_key_ret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$bad_keybits:
>>>>>>>
>>>>>>> +        mov     rax,-2
>>>>>>>
>>>>>>> +$L$enc_key_ret:
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +        add     rsp,8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +$L$SEH_end_set_encrypt_key:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$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
>>>>>>>
>>>>>>> +        xorps   xmm0,xmm4
>>>>>>>
>>>>>>> +        shufps  xmm1,xmm1,255
>>>>>>>
>>>>>>> +        xorps   xmm0,xmm1
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$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:
>>>>>>>
>>>>>>> +        shufps  xmm4,xmm0,16
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm2
>>>>>>>
>>>>>>> +        xorps   xmm0,xmm4
>>>>>>>
>>>>>>> +        shufps  xmm4,xmm0,140
>>>>>>>
>>>>>>> +        pslldq  xmm3,4
>>>>>>>
>>>>>>> +        xorps   xmm0,xmm4
>>>>>>>
>>>>>>> +        pshufd  xmm1,xmm1,85
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        pshufd  xmm3,xmm0,255
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$key_expansion_192b:
>>>>>>>
>>>>>>> +        movaps  xmm3,xmm0
>>>>>>>
>>>>>>> +        shufps  xmm5,xmm0,68
>>>>>>>
>>>>>>> +        movups  XMMWORD[rax],xmm5
>>>>>>>
>>>>>>> +        shufps  xmm3,xmm2,78
>>>>>>>
>>>>>>> +        movups  XMMWORD[16+rax],xmm3
>>>>>>>
>>>>>>> +        lea     rax,[32+rax]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$key_expansion_192b_warm
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$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
>>>>>>>
>>>>>>> +        xorps   xmm0,xmm4
>>>>>>>
>>>>>>> +        shufps  xmm1,xmm1,255
>>>>>>>
>>>>>>> +        xorps   xmm0,xmm1
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$key_expansion_256b:
>>>>>>>
>>>>>>> +        movups  XMMWORD[rax],xmm0
>>>>>>>
>>>>>>> +        lea     rax,[16+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        shufps  xmm4,xmm2,16
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm4
>>>>>>>
>>>>>>> +        shufps  xmm4,xmm2,140
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm4
>>>>>>>
>>>>>>> +        shufps  xmm1,xmm1,170
>>>>>>>
>>>>>>> +        xorps   xmm2,xmm1
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   64
>>>>>>>
>>>>>>> +$L$bswap_mask:
>>>>>>>
>>>>>>> +DB      15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
>>>>>>>
>>>>>>> +$L$increment32:
>>>>>>>
>>>>>>> +        DD      6,6,6,0
>>>>>>>
>>>>>>> +$L$increment64:
>>>>>>>
>>>>>>> +        DD      1,0,0,0
>>>>>>>
>>>>>>> +$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
>>>>>>>
>>>>>>> +$L$key_rotate:
>>>>>>>
>>>>>>> +        DD      0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
>>>>>>>
>>>>>>> +$L$key_rotate192:
>>>>>>>
>>>>>>> +        DD      0x04070605,0x04070605,0x04070605,0x04070605
>>>>>>>
>>>>>>> +$L$key_rcon1:
>>>>>>>
>>>>>>> +        DD      1,1,1,1
>>>>>>>
>>>>>>> +$L$key_rcon1b:
>>>>>>>
>>>>>>> +        DD      0x1b,0x1b,0x1b,0x1b
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
>>>>>>>
>>>>>>> +DB      83,45,78,73,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   64
>>>>>>>
>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +ecb_ccm64_se_handler:
>>>>>>>
>>>>>>> +        push    rsi
>>>>>>>
>>>>>>> +        push    rdi
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +        pushfq
>>>>>>>
>>>>>>> +        sub     rsp,64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsi,[rax]
>>>>>>>
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>
>>>>>>> +        mov     ecx,8
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +        lea     rax,[88+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        jmp     NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +ctr_xts_se_handler:
>>>>>>>
>>>>>>> +        push    rsi
>>>>>>>
>>>>>>> +        push    rdi
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +        pushfq
>>>>>>>
>>>>>>> +        sub     rsp,64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[208+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsi,[((-168))+rax]
>>>>>>>
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>
>>>>>>> +        mov     ecx,20
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rbp,QWORD[((-8))+rax]
>>>>>>>
>>>>>>> +        mov     QWORD[160+r8],rbp
>>>>>>>
>>>>>>> +        jmp     NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +ocb_se_handler:
>>>>>>>
>>>>>>> +        push    rsi
>>>>>>>
>>>>>>> +        push    rdi
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +        pushfq
>>>>>>>
>>>>>>> +        sub     rsp,64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[8+r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jae     NEAR $L$ocb_no_xmm
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsi,[rax]
>>>>>>>
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>
>>>>>>> +        mov     ecx,20
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +        lea     rax,[((160+40))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$ocb_no_xmm:
>>>>>>>
>>>>>>> +        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     NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +cbc_se_handler:
>>>>>>>
>>>>>>> +        push    rsi
>>>>>>>
>>>>>>> +        push    rdi
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +        pushfq
>>>>>>>
>>>>>>> +        sub     rsp,64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r10,[$L$cbc_decrypt_bulk]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r10,[$L$cbc_decrypt_body]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r10,[$L$cbc_ret]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsi,[16+rax]
>>>>>>>
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>
>>>>>>> +        mov     ecx,20
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[208+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rbp,QWORD[((-8))+rax]
>>>>>>>
>>>>>>> +        mov     QWORD[160+r8],rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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[40+r9]
>>>>>>>
>>>>>>> +        mov     rsi,r8
>>>>>>>
>>>>>>> +        mov     ecx,154
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,r9
>>>>>>>
>>>>>>> +        xor     rcx,rcx
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +        popfq
>>>>>>>
>>>>>>> +        pop     r15
>>>>>>>
>>>>>>> +        pop     r14
>>>>>>>
>>>>>>> +        pop     r13
>>>>>>>
>>>>>>> +        pop     r12
>>>>>>>
>>>>>>> +        pop     rbp
>>>>>>>
>>>>>>> +        pop     rbx
>>>>>>>
>>>>>>> +        pop     rdi
>>>>>>>
>>>>>>> +        pop     rsi
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +section .pdata rdata align=4
>>>>>>>
>>>>>>> +ALIGN   4
>>>>>>>
>>>>>>> +        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      $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      $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      $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      $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      $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_ocb_encrypt wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_end_aesni_ocb_encrypt wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_info_ocb_enc wrt ..imagebase
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        DD      $L$SEH_begin_aesni_ocb_decrypt wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_end_aesni_ocb_decrypt wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_info_ocb_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      aesni_set_decrypt_key wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_end_set_decrypt_key wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_info_key wrt ..imagebase
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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:
>>>>>>>
>>>>>>> +DB      9,0,0,0
>>>>>>>
>>>>>>> +        DD      ecb_ccm64_se_handler wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret
>>>>> wrt ..imagebase
>>>>>>>
>>>>>>> +$L$SEH_info_ccm64_enc:
>>>>>>>
>>>>>>> +DB      9,0,0,0
>>>>>>>
>>>>>>> +        DD      ecb_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      ecb_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      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      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      ctr_xts_se_handler wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue
>>>>>>> wrt ..imagebase
>>>>>>>
>>>>>>> +$L$SEH_info_ocb_enc:
>>>>>>>
>>>>>>> +DB      9,0,0,0
>>>>>>>
>>>>>>> +        DD      ocb_se_handler wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$ocb_enc_body wrt ..imagebase,$L$ocb_enc_epilogue
>>>>>>> wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$ocb_enc_pop wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      0
>>>>>>>
>>>>>>> +$L$SEH_info_ocb_dec:
>>>>>>>
>>>>>>> +DB      9,0,0,0
>>>>>>>
>>>>>>> +        DD      ocb_se_handler wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$ocb_dec_body wrt ..imagebase,$L$ocb_dec_epilogue
>>>>>>> wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$ocb_dec_pop wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      0
>>>>>>>
>>>>>>> +$L$SEH_info_cbc:
>>>>>>>
>>>>>>> +DB      9,0,0,0
>>>>>>>
>>>>>>> +        DD      cbc_se_handler wrt ..imagebase
>>>>>>>
>>>>>>> +$L$SEH_info_key:
>>>>>>>
>>>>>>> +DB      0x01,0x04,0x01,0x00
>>>>>>>
>>>>>>> +DB      0x04,0x02,0x00,0x00
>>>>>>>
>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-
>>>>> x86_64.nasm
>>>>>>> b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..1c911fa294
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
>>>>>>> @@ -0,0 +1,1173 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>>
>>>>>>> +; Generated from openssl/crypto/aes/asm/vpaes-x86_64.pl
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>
>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>> copy
>>>>>>>
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +default rel
>>>>>>>
>>>>>>> +%define XMMWORD
>>>>>>>
>>>>>>> +%define YMMWORD
>>>>>>>
>>>>>>> +%define ZMMWORD
>>>>>>>
>>>>>>> +section .text code align=64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +_vpaes_encrypt_core:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r9,rdx
>>>>>>>
>>>>>>> +        mov     r11,16
>>>>>>>
>>>>>>> +        mov     eax,DWORD[240+rdx]
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[$L$k_ipt]
>>>>>>>
>>>>>>> +        pandn   xmm1,xmm0
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[r9]
>>>>>>>
>>>>>>> +        psrld   xmm1,4
>>>>>>>
>>>>>>> +        pand    xmm0,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,0,208
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[(($L$k_ipt+16))]
>>>>>>>
>>>>>>> +DB      102,15,56,0,193
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm5
>>>>>>>
>>>>>>> +        add     r9,16
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        lea     r10,[$L$k_mc_backward]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$enc_entry
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$enc_loop:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm12
>>>>>>>
>>>>>>> +DB      102,15,56,0,226
>>>>>>>
>>>>>>> +DB      102,15,56,0,195
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm15
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((-64))+r10*1+r11]
>>>>>>>
>>>>>>> +DB      102,15,56,0,234
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[r10*1+r11]
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>>
>>>>>>> +DB      102,15,56,0,211
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm5
>>>>>>>
>>>>>>> +DB      102,15,56,0,193
>>>>>>>
>>>>>>> +        add     r9,16
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +DB      102,15,56,0,220
>>>>>>>
>>>>>>> +        add     r11,16
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +DB      102,15,56,0,193
>>>>>>>
>>>>>>> +        and     r11,0x30
>>>>>>>
>>>>>>> +        sub     rax,1
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$enc_entry:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm11
>>>>>>>
>>>>>>> +        pandn   xmm1,xmm0
>>>>>>>
>>>>>>> +        psrld   xmm1,4
>>>>>>>
>>>>>>> +        pand    xmm0,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,0,232
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +DB      102,15,56,0,217
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm5
>>>>>>>
>>>>>>> +DB      102,15,56,0,224
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>
>>>>>>> +DB      102,15,56,0,211
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm0
>>>>>>>
>>>>>>> +DB      102,15,56,0,220
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[r9]
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>
>>>>>>> +        jnz     NEAR $L$enc_loop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[64+r10*1+r11]
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +DB      102,15,56,0,193
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +_vpaes_decrypt_core:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r9,rdx
>>>>>>>
>>>>>>> +        mov     eax,DWORD[240+rdx]
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[$L$k_dipt]
>>>>>>>
>>>>>>> +        pandn   xmm1,xmm0
>>>>>>>
>>>>>>> +        mov     r11,rax
>>>>>>>
>>>>>>> +        psrld   xmm1,4
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[r9]
>>>>>>>
>>>>>>> +        shl     r11,4
>>>>>>>
>>>>>>> +        pand    xmm0,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,0,208
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[(($L$k_dipt+16))]
>>>>>>>
>>>>>>> +        xor     r11,0x30
>>>>>>>
>>>>>>> +        lea     r10,[$L$k_dsbd]
>>>>>>>
>>>>>>> +DB      102,15,56,0,193
>>>>>>>
>>>>>>> +        and     r11,0x30
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm5
>>>>>>>
>>>>>>> +        movdqa  xmm5,XMMWORD[(($L$k_mc_forward+48))]
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        add     r9,16
>>>>>>>
>>>>>>> +        add     r11,r10
>>>>>>>
>>>>>>> +        jmp     NEAR $L$dec_entry
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$dec_loop:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[r10]
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        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[32+r10]
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        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[64+r10]
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[80+r10]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,0,226
>>>>>>>
>>>>>>> +DB      102,15,56,0,197
>>>>>>>
>>>>>>> +DB      102,15,56,0,203
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        add     r9,16
>>>>>>>
>>>>>>> +DB      102,15,58,15,237,12
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        sub     rax,1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$dec_entry:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>
>>>>>>> +        pandn   xmm1,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>
>>>>>>> +        psrld   xmm1,4
>>>>>>>
>>>>>>> +        pand    xmm0,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,0,208
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +DB      102,15,56,0,217
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>
>>>>>>> +DB      102,15,56,0,224
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>
>>>>>>> +DB      102,15,56,0,211
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm0
>>>>>>>
>>>>>>> +DB      102,15,56,0,220
>>>>>>>
>>>>>>> +        movdqu  xmm0,XMMWORD[r9]
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>
>>>>>>> +        jnz     NEAR $L$dec_loop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[96+r10]
>>>>>>>
>>>>>>> +DB      102,15,56,0,226
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +_vpaes_schedule_core:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    _vpaes_preheat
>>>>>>>
>>>>>>> +        movdqa  xmm8,XMMWORD[$L$k_rcon]
>>>>>>>
>>>>>>> +        movdqu  xmm0,XMMWORD[rdi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        lea     r11,[$L$k_ipt]
>>>>>>>
>>>>>>> +        call    _vpaes_schedule_transform
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r10,[$L$k_sr]
>>>>>>>
>>>>>>> +        test    rcx,rcx
>>>>>>>
>>>>>>> +        jnz     NEAR $L$schedule_am_decrypting
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rdx],xmm0
>>>>>>>
>>>>>>> +        jmp     NEAR $L$schedule_go
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$schedule_am_decrypting:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[r10*1+r8]
>>>>>>>
>>>>>>> +DB      102,15,56,0,217
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rdx],xmm3
>>>>>>>
>>>>>>> +        xor     r8,0x30
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$schedule_go:
>>>>>>>
>>>>>>> +        cmp     esi,192
>>>>>>>
>>>>>>> +        ja      NEAR $L$schedule_256
>>>>>>>
>>>>>>> +        je      NEAR $L$schedule_192
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$schedule_128:
>>>>>>>
>>>>>>> +        mov     esi,10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$oop_schedule_128:
>>>>>>>
>>>>>>> +        call    _vpaes_schedule_round
>>>>>>>
>>>>>>> +        dec     rsi
>>>>>>>
>>>>>>> +        jz      NEAR $L$schedule_mangle_last
>>>>>>>
>>>>>>> +        call    _vpaes_schedule_mangle
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_schedule_128
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$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:
>>>>>>>
>>>>>>> +        call    _vpaes_schedule_round
>>>>>>>
>>>>>>> +DB      102,15,58,15,198,8
>>>>>>>
>>>>>>> +        call    _vpaes_schedule_mangle
>>>>>>>
>>>>>>> +        call    _vpaes_schedule_192_smear
>>>>>>>
>>>>>>> +        call    _vpaes_schedule_mangle
>>>>>>>
>>>>>>> +        call    _vpaes_schedule_round
>>>>>>>
>>>>>>> +        dec     rsi
>>>>>>>
>>>>>>> +        jz      NEAR $L$schedule_mangle_last
>>>>>>>
>>>>>>> +        call    _vpaes_schedule_mangle
>>>>>>>
>>>>>>> +        call    _vpaes_schedule_192_smear
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_schedule_192
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$schedule_256:
>>>>>>>
>>>>>>> +        movdqu  xmm0,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +        call    _vpaes_schedule_transform
>>>>>>>
>>>>>>> +        mov     esi,7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$oop_schedule_256:
>>>>>>>
>>>>>>> +        call    _vpaes_schedule_mangle
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        call    _vpaes_schedule_round
>>>>>>>
>>>>>>> +        dec     rsi
>>>>>>>
>>>>>>> +        jz      NEAR $L$schedule_mangle_last
>>>>>>>
>>>>>>> +        call    _vpaes_schedule_mangle
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,0xFF
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>
>>>>>>> +        call    _vpaes_schedule_low_round
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_schedule_256
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$schedule_mangle_last:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r11,[$L$k_deskew]
>>>>>>>
>>>>>>> +        test    rcx,rcx
>>>>>>>
>>>>>>> +        jnz     NEAR $L$schedule_mangle_last_dec
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[r10*1+r8]
>>>>>>>
>>>>>>> +DB      102,15,56,0,193
>>>>>>>
>>>>>>> +        lea     r11,[$L$k_opt]
>>>>>>>
>>>>>>> +        add     rdx,32
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$schedule_mangle_last_dec:
>>>>>>>
>>>>>>> +        add     rdx,-16
>>>>>>>
>>>>>>> +        pxor    xmm0,XMMWORD[$L$k_s63]
>>>>>>>
>>>>>>> +        call    _vpaes_schedule_transform
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rdx],xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +_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
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +_vpaes_schedule_round:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>
>>>>>>> +DB      102,65,15,58,15,200,15
>>>>>>>
>>>>>>> +DB      102,69,15,58,15,192,15
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,0xFF
>>>>>>>
>>>>>>> +DB      102,15,58,15,192,1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +_vpaes_schedule_low_round:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm7
>>>>>>>
>>>>>>> +        pslldq  xmm7,4
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm7
>>>>>>>
>>>>>>> +        pslldq  xmm7,8
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm7,XMMWORD[$L$k_s63]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>
>>>>>>> +        pandn   xmm1,xmm0
>>>>>>>
>>>>>>> +        psrld   xmm1,4
>>>>>>>
>>>>>>> +        pand    xmm0,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>
>>>>>>> +DB      102,15,56,0,208
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>
>>>>>>> +DB      102,15,56,0,217
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>>
>>>>>>> +DB      102,15,56,0,224
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>
>>>>>>> +DB      102,15,56,0,211
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>
>>>>>>> +DB      102,15,56,0,220
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>>
>>>>>>> +DB      102,15,56,0,226
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm12
>>>>>>>
>>>>>>> +DB      102,15,56,0,195
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm0
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +_vpaes_schedule_transform:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>
>>>>>>> +        pandn   xmm1,xmm0
>>>>>>>
>>>>>>> +        psrld   xmm1,4
>>>>>>>
>>>>>>> +        pand    xmm0,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[r11]
>>>>>>>
>>>>>>> +DB      102,15,56,0,208
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[16+r11]
>>>>>>>
>>>>>>> +DB      102,15,56,0,193
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +_vpaes_schedule_mangle:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm5,XMMWORD[$L$k_mc_forward]
>>>>>>>
>>>>>>> +        test    rcx,rcx
>>>>>>>
>>>>>>> +        jnz     NEAR $L$schedule_mangle_dec
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     rdx,16
>>>>>>>
>>>>>>> +        pxor    xmm4,XMMWORD[$L$k_s63]
>>>>>>>
>>>>>>> +DB      102,15,56,0,229
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm4
>>>>>>>
>>>>>>> +DB      102,15,56,0,229
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm4
>>>>>>>
>>>>>>> +DB      102,15,56,0,229
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        jmp     NEAR $L$schedule_mangle_both
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$schedule_mangle_dec:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r11,[$L$k_dksd]
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>
>>>>>>> +        pandn   xmm1,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm1,4
>>>>>>>
>>>>>>> +        pand    xmm4,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[r11]
>>>>>>>
>>>>>>> +DB      102,15,56,0,212
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[16+r11]
>>>>>>>
>>>>>>> +DB      102,15,56,0,217
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>
>>>>>>> +DB      102,15,56,0,221
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[32+r11]
>>>>>>>
>>>>>>> +DB      102,15,56,0,212
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[48+r11]
>>>>>>>
>>>>>>> +DB      102,15,56,0,217
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>
>>>>>>> +DB      102,15,56,0,221
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[64+r11]
>>>>>>>
>>>>>>> +DB      102,15,56,0,212
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[80+r11]
>>>>>>>
>>>>>>> +DB      102,15,56,0,217
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>
>>>>>>> +DB      102,15,56,0,221
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[96+r11]
>>>>>>>
>>>>>>> +DB      102,15,56,0,212
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[112+r11]
>>>>>>>
>>>>>>> +DB      102,15,56,0,217
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     rdx,-16
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$schedule_mangle_both:
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[r10*1+r8]
>>>>>>>
>>>>>>> +DB      102,15,56,0,217
>>>>>>>
>>>>>>> +        add     r8,-16
>>>>>>>
>>>>>>> +        and     r8,0x30
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rdx],xmm3
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  vpaes_set_encrypt_key
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +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:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[240+rdx],eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     ecx,0
>>>>>>>
>>>>>>> +        mov     r8d,0x30
>>>>>>>
>>>>>>> +        call    _vpaes_schedule_core
>>>>>>>
>>>>>>> +        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[8+rsp]        ;WIN64 epilogue
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$SEH_end_vpaes_set_encrypt_key:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  vpaes_set_decrypt_key
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +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:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[240+rdx],eax
>>>>>>>
>>>>>>> +        shl     eax,4
>>>>>>>
>>>>>>> +        lea     rdx,[16+rax*1+rdx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     ecx,1
>>>>>>>
>>>>>>> +        mov     r8d,esi
>>>>>>>
>>>>>>> +        shr     r8d,1
>>>>>>>
>>>>>>> +        and     r8d,32
>>>>>>>
>>>>>>> +        xor     r8d,32
>>>>>>>
>>>>>>> +        call    _vpaes_schedule_core
>>>>>>>
>>>>>>> +        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[8+rsp]        ;WIN64 epilogue
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$SEH_end_vpaes_set_decrypt_key:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  vpaes_encrypt
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +vpaes_encrypt:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_vpaes_encrypt:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[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:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  vpaes_decrypt
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +vpaes_decrypt:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_vpaes_decrypt:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[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:
>>>>>>>
>>>>>>> +global  vpaes_cbc_encrypt
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +vpaes_cbc_encrypt:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_vpaes_cbc_encrypt:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +        mov     rcx,r9
>>>>>>>
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xchg    rdx,rcx
>>>>>>>
>>>>>>> +        sub     rcx,16
>>>>>>>
>>>>>>> +        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      NEAR $L$cbc_dec_loop
>>>>>>>
>>>>>>> +        jmp     NEAR $L$cbc_enc_loop
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$cbc_enc_loop:
>>>>>>>
>>>>>>> +        movdqu  xmm0,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm6
>>>>>>>
>>>>>>> +        call    _vpaes_encrypt_core
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm0
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rdi*1+rsi],xmm0
>>>>>>>
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>
>>>>>>> +        sub     rcx,16
>>>>>>>
>>>>>>> +        jnc     NEAR $L$cbc_enc_loop
>>>>>>>
>>>>>>> +        jmp     NEAR $L$cbc_done
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$cbc_dec_loop:
>>>>>>>
>>>>>>> +        movdqu  xmm0,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm0
>>>>>>>
>>>>>>> +        call    _vpaes_decrypt_core
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm6
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rdi*1+rsi],xmm0
>>>>>>>
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>
>>>>>>> +        sub     rcx,16
>>>>>>>
>>>>>>> +        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:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +_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
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   64
>>>>>>>
>>>>>>> +_vpaes_consts:
>>>>>>>
>>>>>>> +$L$k_inv:
>>>>>>>
>>>>>>> +        DQ      0x0E05060F0D080180,0x040703090A0B0C02
>>>>>>>
>>>>>>> +        DQ      0x01040A060F0B0780,0x030D0E0C02050809
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$k_s0F:
>>>>>>>
>>>>>>> +        DQ      0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$k_ipt:
>>>>>>>
>>>>>>> +        DQ      0xC2B2E8985A2A7000,0xCABAE09052227808
>>>>>>>
>>>>>>> +        DQ      0x4C01307D317C4D00,0xCD80B1FCB0FDCC81
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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      0x0407060500030201,0x0C0F0E0D080B0A09
>>>>>>>
>>>>>>> +        DQ      0x080B0A0904070605,0x000302010C0F0E0D
>>>>>>>
>>>>>>> +        DQ      0x0C0F0E0D080B0A09,0x0407060500030201
>>>>>>>
>>>>>>> +        DQ      0x000302010C0F0E0D,0x080B0A0904070605
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$k_mc_backward:
>>>>>>>
>>>>>>> +        DQ      0x0605040702010003,0x0E0D0C0F0A09080B
>>>>>>>
>>>>>>> +        DQ      0x020100030E0D0C0F,0x0A09080B06050407
>>>>>>>
>>>>>>> +        DQ      0x0E0D0C0F0A09080B,0x0605040702010003
>>>>>>>
>>>>>>> +        DQ      0x0A09080B06050407,0x020100030E0D0C0F
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$k_sr:
>>>>>>>
>>>>>>> +        DQ      0x0706050403020100,0x0F0E0D0C0B0A0908
>>>>>>>
>>>>>>> +        DQ      0x030E09040F0A0500,0x0B06010C07020D08
>>>>>>>
>>>>>>> +        DQ      0x0F060D040B020900,0x070E050C030A0108
>>>>>>>
>>>>>>> +        DQ      0x0B0E0104070A0D00,0x0306090C0F020508
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$k_rcon:
>>>>>>>
>>>>>>> +        DQ      0x1F8391B9AF9DEEB6,0x702A98084D7C7D81
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$k_s63:
>>>>>>>
>>>>>>> +        DQ      0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$k_opt:
>>>>>>>
>>>>>>> +        DQ      0xFF9F4929D6B66000,0xF7974121DEBE6808
>>>>>>>
>>>>>>> +        DQ      0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$k_deskew:
>>>>>>>
>>>>>>> +        DQ      0x07E4A34047A4E300,0x1DFEB95A5DBEF91A
>>>>>>>
>>>>>>> +        DQ      0x5F36B5DC83EA6900,0x2841C2ABF49D1E77
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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      0x0F505B040B545F00,0x154A411E114E451A
>>>>>>>
>>>>>>> +        DQ      0x86E383E660056500,0x12771772F491F194
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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
>>>>>>>
>>>>>>> +DB      109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32
>>>>>>>
>>>>>>> +DB      85,110,105,118,101,114,115,105,116,121,41,0
>>>>>>>
>>>>>>> +ALIGN   64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +se_handler:
>>>>>>>
>>>>>>> +        push    rsi
>>>>>>>
>>>>>>> +        push    rdi
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +        pushfq
>>>>>>>
>>>>>>> +        sub     rsp,64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsi,[16+rax]
>>>>>>>
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>
>>>>>>> +        mov     ecx,20
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +        lea     rax,[184+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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[40+r9]
>>>>>>>
>>>>>>> +        mov     rsi,r8
>>>>>>>
>>>>>>> +        mov     ecx,154
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,r9
>>>>>>>
>>>>>>> +        xor     rcx,rcx
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +        popfq
>>>>>>>
>>>>>>> +        pop     r15
>>>>>>>
>>>>>>> +        pop     r14
>>>>>>>
>>>>>>> +        pop     r13
>>>>>>>
>>>>>>> +        pop     r12
>>>>>>>
>>>>>>> +        pop     rbp
>>>>>>>
>>>>>>> +        pop     rbx
>>>>>>>
>>>>>>> +        pop     rdi
>>>>>>>
>>>>>>> +        pop     rsi
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +section .pdata rdata align=4
>>>>>>>
>>>>>>> +ALIGN   4
>>>>>>>
>>>>>>> +        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      $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      $L$SEH_begin_vpaes_encrypt wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_end_vpaes_encrypt wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_info_vpaes_encrypt wrt ..imagebase
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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      $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
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +section .xdata rdata align=8
>>>>>>>
>>>>>>> +ALIGN   8
>>>>>>>
>>>>>>> +$L$SEH_info_vpaes_set_encrypt_key:
>>>>>>>
>>>>>>> +DB      9,0,0,0
>>>>>>>
>>>>>>> +        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      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      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      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      se_handler wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt
>>>> ..imagebase
>>>>>>>
>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
>>>>>>> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
>>>>>>> x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..60f283d5fb
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
>>> x86_64.nasm
>>>>>>> @@ -0,0 +1,1569 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>>
>>>>>>> +; Generated from openssl/crypto/modes/asm/ghash-x86_64.pl
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Copyright 2010-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>
>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>> copy
>>>>>>>
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +default rel
>>>>>>>
>>>>>>> +%define XMMWORD
>>>>>>>
>>>>>>> +%define YMMWORD
>>>>>>>
>>>>>>> +%define ZMMWORD
>>>>>>>
>>>>>>> +section .text code align=64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  gcm_gmult_4bit
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +gcm_gmult_4bit:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_gcm_gmult_4bit:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     rsp,280
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$gmult_prologue:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[8+rax*1+rsi]
>>>>>>>
>>>>>>> +        mov     r9,QWORD[rax*1+rsi]
>>>>>>>
>>>>>>> +        and     bl,0xf0
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$oop1:
>>>>>>>
>>>>>>> +        shr     r8,4
>>>>>>>
>>>>>>> +        and     rdx,0xf
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        mov     al,BYTE[rcx*1+rdi]
>>>>>>>
>>>>>>> +        shr     r9,4
>>>>>>>
>>>>>>> +        xor     r8,QWORD[8+rbx*1+rsi]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rbx*1+rsi]
>>>>>>>
>>>>>>> +        mov     bl,al
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rdx*8+r11]
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +        shl     al,4
>>>>>>>
>>>>>>> +        xor     r8,r10
>>>>>>>
>>>>>>> +        dec     rcx
>>>>>>>
>>>>>>> +        js      NEAR $L$break1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        shr     r8,4
>>>>>>>
>>>>>>> +        and     rdx,0xf
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        shr     r9,4
>>>>>>>
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>
>>>>>>> +        and     bl,0xf0
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rdx*8+r11]
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +        xor     r8,r10
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$break1:
>>>>>>>
>>>>>>> +        shr     r8,4
>>>>>>>
>>>>>>> +        and     rdx,0xf
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        shr     r9,4
>>>>>>>
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        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,0xf
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        shr     r9,4
>>>>>>>
>>>>>>> +        xor     r8,QWORD[8+rbx*1+rsi]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rbx*1+rsi]
>>>>>>>
>>>>>>> +        xor     r8,r10
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rdx*8+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        bswap   r8
>>>>>>>
>>>>>>> +        bswap   r9
>>>>>>>
>>>>>>> +        mov     QWORD[8+rdi],r8
>>>>>>>
>>>>>>> +        mov     QWORD[rdi],r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsi,[((280+48))+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[((-8))+rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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:
>>>>>>>
>>>>>>> +global  gcm_ghash_4bit
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +gcm_ghash_4bit:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_gcm_ghash_4bit:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +        mov     rcx,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     rsp,280
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$ghash_prologue:
>>>>>>>
>>>>>>> +        mov     r14,rdx
>>>>>>>
>>>>>>> +        mov     r15,rcx
>>>>>>>
>>>>>>> +        sub     rsi,-128
>>>>>>>
>>>>>>> +        lea     rbp,[((16+128))+rsp]
>>>>>>>
>>>>>>> +        xor     edx,edx
>>>>>>>
>>>>>>> +        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[((16+0-128))+rsi]
>>>>>>>
>>>>>>> +        shl     dl,4
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[((16+8-128))+rsi]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        mov     BYTE[rsp],dl
>>>>>>>
>>>>>>> +        or      rax,r10
>>>>>>>
>>>>>>> +        mov     dl,bl
>>>>>>>
>>>>>>> +        shr     rbx,4
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        shr     r9,4
>>>>>>>
>>>>>>> +        mov     QWORD[rbp],r8
>>>>>>>
>>>>>>> +        mov     r8,QWORD[((32+0-128))+rsi]
>>>>>>>
>>>>>>> +        shl     dl,4
>>>>>>>
>>>>>>> +        mov     QWORD[((0-128))+rbp],rax
>>>>>>>
>>>>>>> +        mov     rax,QWORD[((32+8-128))+rsi]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        mov     BYTE[1+rsp],dl
>>>>>>>
>>>>>>> +        or      rbx,r10
>>>>>>>
>>>>>>> +        mov     dl,al
>>>>>>>
>>>>>>> +        shr     rax,4
>>>>>>>
>>>>>>> +        mov     r10,r8
>>>>>>>
>>>>>>> +        shr     r8,4
>>>>>>>
>>>>>>> +        mov     QWORD[8+rbp],r9
>>>>>>>
>>>>>>> +        mov     r9,QWORD[((48+0-128))+rsi]
>>>>>>>
>>>>>>> +        shl     dl,4
>>>>>>>
>>>>>>> +        mov     QWORD[((8-128))+rbp],rbx
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[((48+8-128))+rsi]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        mov     BYTE[2+rsp],dl
>>>>>>>
>>>>>>> +        or      rax,r10
>>>>>>>
>>>>>>> +        mov     dl,bl
>>>>>>>
>>>>>>> +        shr     rbx,4
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        shr     r9,4
>>>>>>>
>>>>>>> +        mov     QWORD[16+rbp],r8
>>>>>>>
>>>>>>> +        mov     r8,QWORD[((64+0-128))+rsi]
>>>>>>>
>>>>>>> +        shl     dl,4
>>>>>>>
>>>>>>> +        mov     QWORD[((16-128))+rbp],rax
>>>>>>>
>>>>>>> +        mov     rax,QWORD[((64+8-128))+rsi]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        mov     BYTE[3+rsp],dl
>>>>>>>
>>>>>>> +        or      rbx,r10
>>>>>>>
>>>>>>> +        mov     dl,al
>>>>>>>
>>>>>>> +        shr     rax,4
>>>>>>>
>>>>>>> +        mov     r10,r8
>>>>>>>
>>>>>>> +        shr     r8,4
>>>>>>>
>>>>>>> +        mov     QWORD[24+rbp],r9
>>>>>>>
>>>>>>> +        mov     r9,QWORD[((80+0-128))+rsi]
>>>>>>>
>>>>>>> +        shl     dl,4
>>>>>>>
>>>>>>> +        mov     QWORD[((24-128))+rbp],rbx
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[((80+8-128))+rsi]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        mov     BYTE[4+rsp],dl
>>>>>>>
>>>>>>> +        or      rax,r10
>>>>>>>
>>>>>>> +        mov     dl,bl
>>>>>>>
>>>>>>> +        shr     rbx,4
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        shr     r9,4
>>>>>>>
>>>>>>> +        mov     QWORD[32+rbp],r8
>>>>>>>
>>>>>>> +        mov     r8,QWORD[((96+0-128))+rsi]
>>>>>>>
>>>>>>> +        shl     dl,4
>>>>>>>
>>>>>>> +        mov     QWORD[((32-128))+rbp],rax
>>>>>>>
>>>>>>> +        mov     rax,QWORD[((96+8-128))+rsi]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        mov     BYTE[5+rsp],dl
>>>>>>>
>>>>>>> +        or      rbx,r10
>>>>>>>
>>>>>>> +        mov     dl,al
>>>>>>>
>>>>>>> +        shr     rax,4
>>>>>>>
>>>>>>> +        mov     r10,r8
>>>>>>>
>>>>>>> +        shr     r8,4
>>>>>>>
>>>>>>> +        mov     QWORD[40+rbp],r9
>>>>>>>
>>>>>>> +        mov     r9,QWORD[((112+0-128))+rsi]
>>>>>>>
>>>>>>> +        shl     dl,4
>>>>>>>
>>>>>>> +        mov     QWORD[((40-128))+rbp],rbx
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[((112+8-128))+rsi]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        mov     BYTE[6+rsp],dl
>>>>>>>
>>>>>>> +        or      rax,r10
>>>>>>>
>>>>>>> +        mov     dl,bl
>>>>>>>
>>>>>>> +        shr     rbx,4
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        shr     r9,4
>>>>>>>
>>>>>>> +        mov     QWORD[48+rbp],r8
>>>>>>>
>>>>>>> +        mov     r8,QWORD[((128+0-128))+rsi]
>>>>>>>
>>>>>>> +        shl     dl,4
>>>>>>>
>>>>>>> +        mov     QWORD[((48-128))+rbp],rax
>>>>>>>
>>>>>>> +        mov     rax,QWORD[((128+8-128))+rsi]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        mov     BYTE[7+rsp],dl
>>>>>>>
>>>>>>> +        or      rbx,r10
>>>>>>>
>>>>>>> +        mov     dl,al
>>>>>>>
>>>>>>> +        shr     rax,4
>>>>>>>
>>>>>>> +        mov     r10,r8
>>>>>>>
>>>>>>> +        shr     r8,4
>>>>>>>
>>>>>>> +        mov     QWORD[56+rbp],r9
>>>>>>>
>>>>>>> +        mov     r9,QWORD[((144+0-128))+rsi]
>>>>>>>
>>>>>>> +        shl     dl,4
>>>>>>>
>>>>>>> +        mov     QWORD[((56-128))+rbp],rbx
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[((144+8-128))+rsi]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        mov     BYTE[8+rsp],dl
>>>>>>>
>>>>>>> +        or      rax,r10
>>>>>>>
>>>>>>> +        mov     dl,bl
>>>>>>>
>>>>>>> +        shr     rbx,4
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        shr     r9,4
>>>>>>>
>>>>>>> +        mov     QWORD[64+rbp],r8
>>>>>>>
>>>>>>> +        mov     r8,QWORD[((160+0-128))+rsi]
>>>>>>>
>>>>>>> +        shl     dl,4
>>>>>>>
>>>>>>> +        mov     QWORD[((64-128))+rbp],rax
>>>>>>>
>>>>>>> +        mov     rax,QWORD[((160+8-128))+rsi]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        mov     BYTE[9+rsp],dl
>>>>>>>
>>>>>>> +        or      rbx,r10
>>>>>>>
>>>>>>> +        mov     dl,al
>>>>>>>
>>>>>>> +        shr     rax,4
>>>>>>>
>>>>>>> +        mov     r10,r8
>>>>>>>
>>>>>>> +        shr     r8,4
>>>>>>>
>>>>>>> +        mov     QWORD[72+rbp],r9
>>>>>>>
>>>>>>> +        mov     r9,QWORD[((176+0-128))+rsi]
>>>>>>>
>>>>>>> +        shl     dl,4
>>>>>>>
>>>>>>> +        mov     QWORD[((72-128))+rbp],rbx
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[((176+8-128))+rsi]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        mov     BYTE[10+rsp],dl
>>>>>>>
>>>>>>> +        or      rax,r10
>>>>>>>
>>>>>>> +        mov     dl,bl
>>>>>>>
>>>>>>> +        shr     rbx,4
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        shr     r9,4
>>>>>>>
>>>>>>> +        mov     QWORD[80+rbp],r8
>>>>>>>
>>>>>>> +        mov     r8,QWORD[((192+0-128))+rsi]
>>>>>>>
>>>>>>> +        shl     dl,4
>>>>>>>
>>>>>>> +        mov     QWORD[((80-128))+rbp],rax
>>>>>>>
>>>>>>> +        mov     rax,QWORD[((192+8-128))+rsi]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        mov     BYTE[11+rsp],dl
>>>>>>>
>>>>>>> +        or      rbx,r10
>>>>>>>
>>>>>>> +        mov     dl,al
>>>>>>>
>>>>>>> +        shr     rax,4
>>>>>>>
>>>>>>> +        mov     r10,r8
>>>>>>>
>>>>>>> +        shr     r8,4
>>>>>>>
>>>>>>> +        mov     QWORD[88+rbp],r9
>>>>>>>
>>>>>>> +        mov     r9,QWORD[((208+0-128))+rsi]
>>>>>>>
>>>>>>> +        shl     dl,4
>>>>>>>
>>>>>>> +        mov     QWORD[((88-128))+rbp],rbx
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[((208+8-128))+rsi]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        mov     BYTE[12+rsp],dl
>>>>>>>
>>>>>>> +        or      rax,r10
>>>>>>>
>>>>>>> +        mov     dl,bl
>>>>>>>
>>>>>>> +        shr     rbx,4
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        shr     r9,4
>>>>>>>
>>>>>>> +        mov     QWORD[96+rbp],r8
>>>>>>>
>>>>>>> +        mov     r8,QWORD[((224+0-128))+rsi]
>>>>>>>
>>>>>>> +        shl     dl,4
>>>>>>>
>>>>>>> +        mov     QWORD[((96-128))+rbp],rax
>>>>>>>
>>>>>>> +        mov     rax,QWORD[((224+8-128))+rsi]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        mov     BYTE[13+rsp],dl
>>>>>>>
>>>>>>> +        or      rbx,r10
>>>>>>>
>>>>>>> +        mov     dl,al
>>>>>>>
>>>>>>> +        shr     rax,4
>>>>>>>
>>>>>>> +        mov     r10,r8
>>>>>>>
>>>>>>> +        shr     r8,4
>>>>>>>
>>>>>>> +        mov     QWORD[104+rbp],r9
>>>>>>>
>>>>>>> +        mov     r9,QWORD[((240+0-128))+rsi]
>>>>>>>
>>>>>>> +        shl     dl,4
>>>>>>>
>>>>>>> +        mov     QWORD[((104-128))+rbp],rbx
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[((240+8-128))+rsi]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        mov     BYTE[14+rsp],dl
>>>>>>>
>>>>>>> +        or      rax,r10
>>>>>>>
>>>>>>> +        mov     dl,bl
>>>>>>>
>>>>>>> +        shr     rbx,4
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        shr     r9,4
>>>>>>>
>>>>>>> +        mov     QWORD[112+rbp],r8
>>>>>>>
>>>>>>> +        shl     dl,4
>>>>>>>
>>>>>>> +        mov     QWORD[((112-128))+rbp],rax
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        mov     BYTE[15+rsp],dl
>>>>>>>
>>>>>>> +        or      rbx,r10
>>>>>>>
>>>>>>> +        mov     QWORD[120+rbp],r9
>>>>>>>
>>>>>>> +        mov     QWORD[((120-128))+rbp],rbx
>>>>>>>
>>>>>>> +        add     rsi,-128
>>>>>>>
>>>>>>> +        mov     r8,QWORD[8+rdi]
>>>>>>>
>>>>>>> +        mov     r9,QWORD[rdi]
>>>>>>>
>>>>>>> +        add     r15,r14
>>>>>>>
>>>>>>> +        lea     r11,[$L$rem_8bit]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$outer_loop
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$outer_loop:
>>>>>>>
>>>>>>> +        xor     r9,QWORD[r14]
>>>>>>>
>>>>>>> +        mov     rdx,QWORD[8+r14]
>>>>>>>
>>>>>>> +        lea     r14,[16+r14]
>>>>>>>
>>>>>>> +        xor     rdx,r8
>>>>>>>
>>>>>>> +        mov     QWORD[rdi],r9
>>>>>>>
>>>>>>> +        mov     QWORD[8+rdi],rdx
>>>>>>>
>>>>>>> +        shr     rdx,32
>>>>>>>
>>>>>>> +        xor     rax,rax
>>>>>>>
>>>>>>> +        rol     edx,8
>>>>>>>
>>>>>>> +        mov     al,dl
>>>>>>>
>>>>>>> +        movzx   ebx,dl
>>>>>>>
>>>>>>> +        shl     al,4
>>>>>>>
>>>>>>> +        shr     ebx,4
>>>>>>>
>>>>>>> +        rol     edx,8
>>>>>>>
>>>>>>> +        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[rbx*1+rsp]
>>>>>>>
>>>>>>> +        shr     ecx,4
>>>>>>>
>>>>>>> +        xor     r12,r8
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        shr     r8,8
>>>>>>>
>>>>>>> +        movzx   r12,r12b
>>>>>>>
>>>>>>> +        shr     r9,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>>
>>>>>>> +        shl     r10,56
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>>
>>>>>>> +        rol     edx,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>
>>>>>>> +        mov     al,dl
>>>>>>>
>>>>>>> +        xor     r8,r10
>>>>>>>
>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>>
>>>>>>> +        movzx   ebx,dl
>>>>>>>
>>>>>>> +        shl     al,4
>>>>>>>
>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>>
>>>>>>> +        shr     ebx,4
>>>>>>>
>>>>>>> +        shl     r12,48
>>>>>>>
>>>>>>> +        xor     r13,r8
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        xor     r9,r12
>>>>>>>
>>>>>>> +        shr     r8,8
>>>>>>>
>>>>>>> +        movzx   r13,r13b
>>>>>>>
>>>>>>> +        shr     r9,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>>
>>>>>>> +        shl     r10,56
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>>
>>>>>>> +        rol     edx,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>
>>>>>>> +        mov     al,dl
>>>>>>>
>>>>>>> +        xor     r8,r10
>>>>>>>
>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>>
>>>>>>> +        movzx   ecx,dl
>>>>>>>
>>>>>>> +        shl     al,4
>>>>>>>
>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>>
>>>>>>> +        shr     ecx,4
>>>>>>>
>>>>>>> +        shl     r13,48
>>>>>>>
>>>>>>> +        xor     r12,r8
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        xor     r9,r13
>>>>>>>
>>>>>>> +        shr     r8,8
>>>>>>>
>>>>>>> +        movzx   r12,r12b
>>>>>>>
>>>>>>> +        mov     edx,DWORD[8+rdi]
>>>>>>>
>>>>>>> +        shr     r9,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>>
>>>>>>> +        shl     r10,56
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>>
>>>>>>> +        rol     edx,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>
>>>>>>> +        mov     al,dl
>>>>>>>
>>>>>>> +        xor     r8,r10
>>>>>>>
>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>>
>>>>>>> +        movzx   ebx,dl
>>>>>>>
>>>>>>> +        shl     al,4
>>>>>>>
>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>>
>>>>>>> +        shr     ebx,4
>>>>>>>
>>>>>>> +        shl     r12,48
>>>>>>>
>>>>>>> +        xor     r13,r8
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        xor     r9,r12
>>>>>>>
>>>>>>> +        shr     r8,8
>>>>>>>
>>>>>>> +        movzx   r13,r13b
>>>>>>>
>>>>>>> +        shr     r9,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>>
>>>>>>> +        shl     r10,56
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>>
>>>>>>> +        rol     edx,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>
>>>>>>> +        mov     al,dl
>>>>>>>
>>>>>>> +        xor     r8,r10
>>>>>>>
>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>>
>>>>>>> +        movzx   ecx,dl
>>>>>>>
>>>>>>> +        shl     al,4
>>>>>>>
>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>>
>>>>>>> +        shr     ecx,4
>>>>>>>
>>>>>>> +        shl     r13,48
>>>>>>>
>>>>>>> +        xor     r12,r8
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        xor     r9,r13
>>>>>>>
>>>>>>> +        shr     r8,8
>>>>>>>
>>>>>>> +        movzx   r12,r12b
>>>>>>>
>>>>>>> +        shr     r9,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>>
>>>>>>> +        shl     r10,56
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>>
>>>>>>> +        rol     edx,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>
>>>>>>> +        mov     al,dl
>>>>>>>
>>>>>>> +        xor     r8,r10
>>>>>>>
>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>>
>>>>>>> +        movzx   ebx,dl
>>>>>>>
>>>>>>> +        shl     al,4
>>>>>>>
>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>>
>>>>>>> +        shr     ebx,4
>>>>>>>
>>>>>>> +        shl     r12,48
>>>>>>>
>>>>>>> +        xor     r13,r8
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        xor     r9,r12
>>>>>>>
>>>>>>> +        shr     r8,8
>>>>>>>
>>>>>>> +        movzx   r13,r13b
>>>>>>>
>>>>>>> +        shr     r9,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>>
>>>>>>> +        shl     r10,56
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>>
>>>>>>> +        rol     edx,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>
>>>>>>> +        mov     al,dl
>>>>>>>
>>>>>>> +        xor     r8,r10
>>>>>>>
>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>>
>>>>>>> +        movzx   ecx,dl
>>>>>>>
>>>>>>> +        shl     al,4
>>>>>>>
>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>>
>>>>>>> +        shr     ecx,4
>>>>>>>
>>>>>>> +        shl     r13,48
>>>>>>>
>>>>>>> +        xor     r12,r8
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        xor     r9,r13
>>>>>>>
>>>>>>> +        shr     r8,8
>>>>>>>
>>>>>>> +        movzx   r12,r12b
>>>>>>>
>>>>>>> +        mov     edx,DWORD[4+rdi]
>>>>>>>
>>>>>>> +        shr     r9,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>>
>>>>>>> +        shl     r10,56
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>>
>>>>>>> +        rol     edx,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>
>>>>>>> +        mov     al,dl
>>>>>>>
>>>>>>> +        xor     r8,r10
>>>>>>>
>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>>
>>>>>>> +        movzx   ebx,dl
>>>>>>>
>>>>>>> +        shl     al,4
>>>>>>>
>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>>
>>>>>>> +        shr     ebx,4
>>>>>>>
>>>>>>> +        shl     r12,48
>>>>>>>
>>>>>>> +        xor     r13,r8
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        xor     r9,r12
>>>>>>>
>>>>>>> +        shr     r8,8
>>>>>>>
>>>>>>> +        movzx   r13,r13b
>>>>>>>
>>>>>>> +        shr     r9,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>>
>>>>>>> +        shl     r10,56
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>>
>>>>>>> +        rol     edx,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>
>>>>>>> +        mov     al,dl
>>>>>>>
>>>>>>> +        xor     r8,r10
>>>>>>>
>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>>
>>>>>>> +        movzx   ecx,dl
>>>>>>>
>>>>>>> +        shl     al,4
>>>>>>>
>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>>
>>>>>>> +        shr     ecx,4
>>>>>>>
>>>>>>> +        shl     r13,48
>>>>>>>
>>>>>>> +        xor     r12,r8
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        xor     r9,r13
>>>>>>>
>>>>>>> +        shr     r8,8
>>>>>>>
>>>>>>> +        movzx   r12,r12b
>>>>>>>
>>>>>>> +        shr     r9,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>>
>>>>>>> +        shl     r10,56
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>>
>>>>>>> +        rol     edx,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>
>>>>>>> +        mov     al,dl
>>>>>>>
>>>>>>> +        xor     r8,r10
>>>>>>>
>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>>
>>>>>>> +        movzx   ebx,dl
>>>>>>>
>>>>>>> +        shl     al,4
>>>>>>>
>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>>
>>>>>>> +        shr     ebx,4
>>>>>>>
>>>>>>> +        shl     r12,48
>>>>>>>
>>>>>>> +        xor     r13,r8
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        xor     r9,r12
>>>>>>>
>>>>>>> +        shr     r8,8
>>>>>>>
>>>>>>> +        movzx   r13,r13b
>>>>>>>
>>>>>>> +        shr     r9,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>>
>>>>>>> +        shl     r10,56
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>>
>>>>>>> +        rol     edx,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>
>>>>>>> +        mov     al,dl
>>>>>>>
>>>>>>> +        xor     r8,r10
>>>>>>>
>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>>
>>>>>>> +        movzx   ecx,dl
>>>>>>>
>>>>>>> +        shl     al,4
>>>>>>>
>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>>
>>>>>>> +        shr     ecx,4
>>>>>>>
>>>>>>> +        shl     r13,48
>>>>>>>
>>>>>>> +        xor     r12,r8
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        xor     r9,r13
>>>>>>>
>>>>>>> +        shr     r8,8
>>>>>>>
>>>>>>> +        movzx   r12,r12b
>>>>>>>
>>>>>>> +        mov     edx,DWORD[rdi]
>>>>>>>
>>>>>>> +        shr     r9,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>>
>>>>>>> +        shl     r10,56
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>>
>>>>>>> +        rol     edx,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>
>>>>>>> +        mov     al,dl
>>>>>>>
>>>>>>> +        xor     r8,r10
>>>>>>>
>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>>
>>>>>>> +        movzx   ebx,dl
>>>>>>>
>>>>>>> +        shl     al,4
>>>>>>>
>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>>
>>>>>>> +        shr     ebx,4
>>>>>>>
>>>>>>> +        shl     r12,48
>>>>>>>
>>>>>>> +        xor     r13,r8
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        xor     r9,r12
>>>>>>>
>>>>>>> +        shr     r8,8
>>>>>>>
>>>>>>> +        movzx   r13,r13b
>>>>>>>
>>>>>>> +        shr     r9,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>>
>>>>>>> +        shl     r10,56
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>>
>>>>>>> +        rol     edx,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>
>>>>>>> +        mov     al,dl
>>>>>>>
>>>>>>> +        xor     r8,r10
>>>>>>>
>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>>
>>>>>>> +        movzx   ecx,dl
>>>>>>>
>>>>>>> +        shl     al,4
>>>>>>>
>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>>
>>>>>>> +        shr     ecx,4
>>>>>>>
>>>>>>> +        shl     r13,48
>>>>>>>
>>>>>>> +        xor     r12,r8
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        xor     r9,r13
>>>>>>>
>>>>>>> +        shr     r8,8
>>>>>>>
>>>>>>> +        movzx   r12,r12b
>>>>>>>
>>>>>>> +        shr     r9,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>>
>>>>>>> +        shl     r10,56
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>>
>>>>>>> +        rol     edx,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>
>>>>>>> +        mov     al,dl
>>>>>>>
>>>>>>> +        xor     r8,r10
>>>>>>>
>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>>
>>>>>>> +        movzx   ebx,dl
>>>>>>>
>>>>>>> +        shl     al,4
>>>>>>>
>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>>
>>>>>>> +        shr     ebx,4
>>>>>>>
>>>>>>> +        shl     r12,48
>>>>>>>
>>>>>>> +        xor     r13,r8
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        xor     r9,r12
>>>>>>>
>>>>>>> +        shr     r8,8
>>>>>>>
>>>>>>> +        movzx   r13,r13b
>>>>>>>
>>>>>>> +        shr     r9,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>>
>>>>>>> +        shl     r10,56
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>>
>>>>>>> +        rol     edx,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>
>>>>>>> +        mov     al,dl
>>>>>>>
>>>>>>> +        xor     r8,r10
>>>>>>>
>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>>
>>>>>>> +        movzx   ecx,dl
>>>>>>>
>>>>>>> +        shl     al,4
>>>>>>>
>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>>
>>>>>>> +        and     ecx,240
>>>>>>>
>>>>>>> +        shl     r13,48
>>>>>>>
>>>>>>> +        xor     r12,r8
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        xor     r9,r13
>>>>>>>
>>>>>>> +        shr     r8,8
>>>>>>>
>>>>>>> +        movzx   r12,r12b
>>>>>>>
>>>>>>> +        mov     edx,DWORD[((-4))+rdi]
>>>>>>>
>>>>>>> +        shr     r9,8
>>>>>>>
>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>>
>>>>>>> +        shl     r10,56
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +        movzx   r13,r8b
>>>>>>>
>>>>>>> +        shr     r8,4
>>>>>>>
>>>>>>> +        mov     r10,r9
>>>>>>>
>>>>>>> +        shl     r13b,4
>>>>>>>
>>>>>>> +        shr     r9,4
>>>>>>>
>>>>>>> +        xor     r8,QWORD[8+rcx*1+rsi]
>>>>>>>
>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>>
>>>>>>> +        shl     r10,60
>>>>>>>
>>>>>>> +        xor     r9,QWORD[rcx*1+rsi]
>>>>>>>
>>>>>>> +        xor     r8,r10
>>>>>>>
>>>>>>> +        shl     r13,48
>>>>>>>
>>>>>>> +        bswap   r8
>>>>>>>
>>>>>>> +        xor     r9,r13
>>>>>>>
>>>>>>> +        bswap   r9
>>>>>>>
>>>>>>> +        cmp     r14,r15
>>>>>>>
>>>>>>> +        jb      NEAR $L$outer_loop
>>>>>>>
>>>>>>> +        mov     QWORD[8+rdi],r8
>>>>>>>
>>>>>>> +        mov     QWORD[rdi],r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsi,[((280+48))+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$ghash_epilogue:
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$SEH_end_gcm_ghash_4bit:
>>>>>>>
>>>>>>> +global  gcm_init_clmul
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +gcm_init_clmul:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$_init_clmul:
>>>>>>>
>>>>>>> +$L$SEH_begin_gcm_init_clmul:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      0x48,0x83,0xec,0x18
>>>>>>>
>>>>>>> +DB      0x0f,0x29,0x34,0x24
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[rdx]
>>>>>>>
>>>>>>> +        pshufd  xmm2,xmm2,78
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pshufd  xmm4,xmm2,255
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm2
>>>>>>>
>>>>>>> +        psllq   xmm2,1
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +        psrlq   xmm3,63
>>>>>>>
>>>>>>> +        pcmpgtd xmm5,xmm4
>>>>>>>
>>>>>>> +        pslldq  xmm3,8
>>>>>>>
>>>>>>> +        por     xmm2,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pand    xmm5,XMMWORD[$L$0x1c2_polynomial]
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pshufd  xmm6,xmm2,78
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +        pshufd  xmm3,xmm0,78
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +DB      102,15,58,68,194,0
>>>>>>>
>>>>>>> +DB      102,15,58,68,202,17
>>>>>>>
>>>>>>> +DB      102,15,58,68,222,0
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm3
>>>>>>>
>>>>>>> +        psrldq  xmm3,8
>>>>>>>
>>>>>>> +        pslldq  xmm4,8
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        psllq   xmm0,5
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        psllq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        psllq   xmm0,57
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        pslldq  xmm0,8
>>>>>>>
>>>>>>> +        psrldq  xmm3,8
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        psrlq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>
>>>>>>> +        psrlq   xmm0,5
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        psrlq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        pshufd  xmm3,xmm2,78
>>>>>>>
>>>>>>> +        pshufd  xmm4,xmm0,78
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rcx],xmm2
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[16+rcx],xmm0
>>>>>>>
>>>>>>> +DB      102,15,58,15,227,8
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[32+rcx],xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +        pshufd  xmm3,xmm0,78
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +DB      102,15,58,68,194,0
>>>>>>>
>>>>>>> +DB      102,15,58,68,202,17
>>>>>>>
>>>>>>> +DB      102,15,58,68,222,0
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm3
>>>>>>>
>>>>>>> +        psrldq  xmm3,8
>>>>>>>
>>>>>>> +        pslldq  xmm4,8
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        psllq   xmm0,5
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        psllq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        psllq   xmm0,57
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        pslldq  xmm0,8
>>>>>>>
>>>>>>> +        psrldq  xmm3,8
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        psrlq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>
>>>>>>> +        psrlq   xmm0,5
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        psrlq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +        pshufd  xmm3,xmm0,78
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +DB      102,15,58,68,194,0
>>>>>>>
>>>>>>> +DB      102,15,58,68,202,17
>>>>>>>
>>>>>>> +DB      102,15,58,68,222,0
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm3
>>>>>>>
>>>>>>> +        psrldq  xmm3,8
>>>>>>>
>>>>>>> +        pslldq  xmm4,8
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        psllq   xmm0,5
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        psllq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        psllq   xmm0,57
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        pslldq  xmm0,8
>>>>>>>
>>>>>>> +        psrldq  xmm3,8
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        psrlq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>
>>>>>>> +        psrlq   xmm0,5
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        psrlq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        pshufd  xmm3,xmm5,78
>>>>>>>
>>>>>>> +        pshufd  xmm4,xmm0,78
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm5
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[48+rcx],xmm5
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[64+rcx],xmm0
>>>>>>>
>>>>>>> +DB      102,15,58,15,227,8
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[80+rcx],xmm4
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[rsp]
>>>>>>>
>>>>>>> +        lea     rsp,[24+rsp]
>>>>>>>
>>>>>>> +$L$SEH_end_gcm_init_clmul:
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  gcm_gmult_clmul
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +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
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +DB      102,15,58,68,194,0
>>>>>>>
>>>>>>> +DB      102,15,58,68,202,17
>>>>>>>
>>>>>>> +DB      102,15,58,68,220,0
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm3
>>>>>>>
>>>>>>> +        psrldq  xmm3,8
>>>>>>>
>>>>>>> +        pslldq  xmm4,8
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        psllq   xmm0,5
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        psllq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        psllq   xmm0,57
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        pslldq  xmm0,8
>>>>>>>
>>>>>>> +        psrldq  xmm3,8
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        psrlq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>
>>>>>>> +        psrlq   xmm0,5
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        psrlq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +DB      102,15,56,0,197
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rcx],xmm0
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  gcm_ghash_clmul
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +gcm_ghash_clmul:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$_ghash_clmul:
>>>>>>>
>>>>>>> +        lea     rax,[((-136))+rsp]
>>>>>>>
>>>>>>> +$L$SEH_begin_gcm_ghash_clmul:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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[rcx]
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[rdx]
>>>>>>>
>>>>>>> +        movdqu  xmm7,XMMWORD[32+rdx]
>>>>>>>
>>>>>>> +DB      102,65,15,56,0,194
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     r9,0x10
>>>>>>>
>>>>>>> +        jz      NEAR $L$odd_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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      NEAR $L$skip4x
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     r9,0x30
>>>>>>>
>>>>>>> +        mov     rax,0xA040608020C0E000
>>>>>>>
>>>>>>> +        movdqu  xmm14,XMMWORD[48+rdx]
>>>>>>>
>>>>>>> +        movdqu  xmm15,XMMWORD[64+rdx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +        pshufd  xmm4,xmm3,78
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm3
>>>>>>>
>>>>>>> +DB      102,15,58,68,218,0
>>>>>>>
>>>>>>> +DB      102,15,58,68,234,17
>>>>>>>
>>>>>>> +DB      102,15,58,68,231,0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm11
>>>>>>>
>>>>>>> +        pshufd  xmm12,xmm11,78
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm11
>>>>>>>
>>>>>>> +DB      102,68,15,58,68,222,0
>>>>>>>
>>>>>>> +DB      102,68,15,58,68,238,17
>>>>>>>
>>>>>>> +DB      102,68,15,58,68,231,16
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>
>>>>>>> +        xorps   xmm5,xmm13
>>>>>>>
>>>>>>> +        movups  xmm7,XMMWORD[80+rdx]
>>>>>>>
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +        pshufd  xmm12,xmm11,78
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm11
>>>>>>>
>>>>>>> +DB      102,69,15,58,68,222,0
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +        pshufd  xmm8,xmm0,78
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>
>>>>>>> +DB      102,69,15,58,68,238,17
>>>>>>>
>>>>>>> +DB      102,68,15,58,68,231,0
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>
>>>>>>> +        xorps   xmm5,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r8,[64+r8]
>>>>>>>
>>>>>>> +        sub     r9,0x40
>>>>>>>
>>>>>>> +        jc      NEAR $L$tail4x
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        jmp     NEAR $L$mod4_loop
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$mod4_loop:
>>>>>>>
>>>>>>> +DB      102,65,15,58,68,199,0
>>>>>>>
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>
>>>>>>> +        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[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[32+rdx]
>>>>>>>
>>>>>>> +        xorps   xmm8,xmm4
>>>>>>>
>>>>>>> +DB      102,68,15,58,68,218,0
>>>>>>>
>>>>>>> +        pshufd  xmm4,xmm3,78
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      102,68,15,58,68,234,17
>>>>>>>
>>>>>>> +        pslldq  xmm8,8
>>>>>>>
>>>>>>> +        psrldq  xmm9,8
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm8,XMMWORD[$L$7_mask]
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm9
>>>>>>>
>>>>>>> +DB      102,76,15,110,200
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pand    xmm8,xmm0
>>>>>>>
>>>>>>> +DB      102,69,15,56,0,200
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm0
>>>>>>>
>>>>>>> +DB      102,68,15,58,68,231,0
>>>>>>>
>>>>>>> +        psllq   xmm9,57
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm9
>>>>>>>
>>>>>>> +        pslldq  xmm9,8
>>>>>>>
>>>>>>> +DB      102,15,58,68,222,0
>>>>>>>
>>>>>>> +        psrldq  xmm8,8
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm8
>>>>>>>
>>>>>>> +        movdqu  xmm8,XMMWORD[r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm0
>>>>>>>
>>>>>>> +        psrlq   xmm0,1
>>>>>>>
>>>>>>> +DB      102,15,58,68,238,17
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>
>>>>>>> +        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[80+rdx]
>>>>>>>
>>>>>>> +DB      102,69,15,56,0,194
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm0
>>>>>>>
>>>>>>> +        psrlq   xmm0,5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        pshufd  xmm12,xmm11,78
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm11
>>>>>>>
>>>>>>> +DB      102,69,15,58,68,222,0
>>>>>>>
>>>>>>> +        psrlq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +DB      102,69,15,58,68,238,17
>>>>>>>
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>
>>>>>>> +        pshufd  xmm8,xmm0,78
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,68,15,58,68,231,0
>>>>>>>
>>>>>>> +        xorps   xmm5,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r8,[64+r8]
>>>>>>>
>>>>>>> +        sub     r9,0x40
>>>>>>>
>>>>>>> +        jnc     NEAR $L$mod4_loop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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
>>>>>>>
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>
>>>>>>> +        xorps   xmm0,xmm3
>>>>>>>
>>>>>>> +        xorps   xmm1,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +        psrldq  xmm8,8
>>>>>>>
>>>>>>> +        pslldq  xmm9,8
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        psllq   xmm0,5
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        psllq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        psllq   xmm0,57
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        pslldq  xmm0,8
>>>>>>>
>>>>>>> +        psrldq  xmm3,8
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        psrlq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>
>>>>>>> +        psrlq   xmm0,5
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        psrlq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        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[r8]
>>>>>>>
>>>>>>> +        movdqu  xmm3,XMMWORD[16+r8]
>>>>>>>
>>>>>>> +DB      102,69,15,56,0,194
>>>>>>>
>>>>>>> +DB      102,65,15,56,0,218
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>
>>>>>>> +        pshufd  xmm4,xmm3,78
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm3
>>>>>>>
>>>>>>> +DB      102,15,58,68,218,0
>>>>>>>
>>>>>>> +DB      102,15,58,68,234,17
>>>>>>>
>>>>>>> +DB      102,15,58,68,231,0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r8,[32+r8]
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +        sub     r9,0x20
>>>>>>>
>>>>>>> +        jbe     NEAR $L$even_tail
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +        jmp     NEAR $L$mod_loop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$mod_loop:
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm4
>>>>>>>
>>>>>>> +        pshufd  xmm4,xmm0,78
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,58,68,198,0
>>>>>>>
>>>>>>> +DB      102,15,58,68,206,17
>>>>>>>
>>>>>>> +DB      102,15,58,68,231,16
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm5
>>>>>>>
>>>>>>> +        movdqu  xmm9,XMMWORD[r8]
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>
>>>>>>> +DB      102,69,15,56,0,202
>>>>>>>
>>>>>>> +        movdqu  xmm3,XMMWORD[16+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm8
>>>>>>>
>>>>>>> +DB      102,65,15,56,0,218
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm4
>>>>>>>
>>>>>>> +        psrldq  xmm8,8
>>>>>>>
>>>>>>> +        pslldq  xmm4,8
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm0
>>>>>>>
>>>>>>> +        psllq   xmm0,5
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>
>>>>>>> +DB      102,15,58,68,218,0
>>>>>>>
>>>>>>> +        psllq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm8
>>>>>>>
>>>>>>> +        psllq   xmm0,57
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm0
>>>>>>>
>>>>>>> +        pslldq  xmm0,8
>>>>>>>
>>>>>>> +        psrldq  xmm8,8
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm9
>>>>>>>
>>>>>>> +        pshufd  xmm4,xmm5,78
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm0
>>>>>>>
>>>>>>> +        psrlq   xmm0,1
>>>>>>>
>>>>>>> +DB      102,15,58,68,234,17
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm0
>>>>>>>
>>>>>>> +        psrlq   xmm0,5
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm9
>>>>>>>
>>>>>>> +        lea     r8,[32+r8]
>>>>>>>
>>>>>>> +        psrlq   xmm0,1
>>>>>>>
>>>>>>> +DB      102,15,58,68,231,0
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     r9,0x20
>>>>>>>
>>>>>>> +        ja      NEAR $L$mod_loop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$even_tail:
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm4
>>>>>>>
>>>>>>> +        pshufd  xmm4,xmm0,78
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,58,68,198,0
>>>>>>>
>>>>>>> +DB      102,15,58,68,206,17
>>>>>>>
>>>>>>> +DB      102,15,58,68,231,16
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm4
>>>>>>>
>>>>>>> +        psrldq  xmm8,8
>>>>>>>
>>>>>>> +        pslldq  xmm4,8
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        psllq   xmm0,5
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        psllq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        psllq   xmm0,57
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        pslldq  xmm0,8
>>>>>>>
>>>>>>> +        psrldq  xmm3,8
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        psrlq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>
>>>>>>> +        psrlq   xmm0,5
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        psrlq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        test    r9,r9
>>>>>>>
>>>>>>> +        jnz     NEAR $L$done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$odd_tail:
>>>>>>>
>>>>>>> +        movdqu  xmm8,XMMWORD[r8]
>>>>>>>
>>>>>>> +DB      102,69,15,56,0,194
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +        pshufd  xmm3,xmm0,78
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +DB      102,15,58,68,194,0
>>>>>>>
>>>>>>> +DB      102,15,58,68,202,17
>>>>>>>
>>>>>>> +DB      102,15,58,68,223,0
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm3
>>>>>>>
>>>>>>> +        psrldq  xmm3,8
>>>>>>>
>>>>>>> +        pslldq  xmm4,8
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        psllq   xmm0,5
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        psllq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        psllq   xmm0,57
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        pslldq  xmm0,8
>>>>>>>
>>>>>>> +        psrldq  xmm3,8
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        psrlq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>
>>>>>>> +        psrlq   xmm0,5
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        psrlq   xmm0,1
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +$L$done:
>>>>>>>
>>>>>>> +DB      102,65,15,56,0,194
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  gcm_init_avx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +gcm_init_avx:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        jmp     NEAR $L$_init_clmul
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  gcm_gmult_avx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +gcm_gmult_avx:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        jmp     NEAR $L$_gmult_clmul
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  gcm_ghash_avx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +gcm_ghash_avx:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        jmp     NEAR $L$_ghash_clmul
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   64
>>>>>>>
>>>>>>> +$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,0xc2
>>>>>>>
>>>>>>> +$L$7_mask:
>>>>>>>
>>>>>>> +        DD      7,0,7,0
>>>>>>>
>>>>>>> +$L$7_mask_poly:
>>>>>>>
>>>>>>> +        DD      7,0,450,0
>>>>>>>
>>>>>>> +ALIGN   64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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
>>>> 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
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +se_handler:
>>>>>>>
>>>>>>> +        push    rsi
>>>>>>>
>>>>>>> +        push    rdi
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +        pushfq
>>>>>>>
>>>>>>> +        sub     rsp,64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rax,[((48+280))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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_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[40+r9]
>>>>>>>
>>>>>>> +        mov     rsi,r8
>>>>>>>
>>>>>>> +        mov     ecx,154
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,r9
>>>>>>>
>>>>>>> +        xor     rcx,rcx
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +        popfq
>>>>>>>
>>>>>>> +        pop     r15
>>>>>>>
>>>>>>> +        pop     r14
>>>>>>>
>>>>>>> +        pop     r13
>>>>>>>
>>>>>>> +        pop     r12
>>>>>>>
>>>>>>> +        pop     rbp
>>>>>>>
>>>>>>> +        pop     rbx
>>>>>>>
>>>>>>> +        pop     rdi
>>>>>>>
>>>>>>> +        pop     rsi
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +section .pdata rdata align=4
>>>>>>>
>>>>>>> +ALIGN   4
>>>>>>>
>>>>>>> +        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      $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      $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      $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:
>>>>>>>
>>>>>>> +DB      9,0,0,0
>>>>>>>
>>>>>>> +        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      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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
>>>>>>> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
>>>>>>> x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..f3b7b0e35e
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
>>> x86_64.nasm
>>>>>>> @@ -0,0 +1,3137 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>>
>>>>>>> +; Generated from openssl/crypto/sha/asm/sha1-mb-x86_64.pl
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>
>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>> copy
>>>>>>>
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +default rel
>>>>>>>
>>>>>>> +%define XMMWORD
>>>>>>>
>>>>>>> +%define YMMWORD
>>>>>>>
>>>>>>> +%define ZMMWORD
>>>>>>>
>>>>>>> +section .text code align=64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  sha1_multi_block
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +sha1_multi_block:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_sha1_multi_block:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
>>>>>>>
>>>>>>> +        bt      rcx,61
>>>>>>>
>>>>>>> +        jc      NEAR _shaext_shortcut
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>>
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>>
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>>
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-120)+rax],xmm10
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-104)+rax],xmm11
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-88)+rax],xmm12
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-72)+rax],xmm13
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-56)+rax],xmm14
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-40)+rax],xmm15
>>>>>>>
>>>>>>> +        sub     rsp,288
>>>>>>>
>>>>>>> +        and     rsp,-256
>>>>>>>
>>>>>>> +        mov     QWORD[272+rsp],rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$body:
>>>>>>>
>>>>>>> +        lea     rbp,[K_XX_XX]
>>>>>>>
>>>>>>> +        lea     rbx,[256+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$oop_grande:
>>>>>>>
>>>>>>> +        mov     DWORD[280+rsp],edx
>>>>>>>
>>>>>>> +        xor     edx,edx
>>>>>>>
>>>>>>> +        mov     r8,QWORD[rsi]
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[8+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        mov     DWORD[rbx],ecx
>>>>>>>
>>>>>>> +        cmovle  r8,rbp
>>>>>>>
>>>>>>> +        mov     r9,QWORD[16+rsi]
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[24+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        mov     DWORD[4+rbx],ecx
>>>>>>>
>>>>>>> +        cmovle  r9,rbp
>>>>>>>
>>>>>>> +        mov     r10,QWORD[32+rsi]
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[40+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        mov     DWORD[8+rbx],ecx
>>>>>>>
>>>>>>> +        cmovle  r10,rbp
>>>>>>>
>>>>>>> +        mov     r11,QWORD[48+rsi]
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[56+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        mov     DWORD[12+rbx],ecx
>>>>>>>
>>>>>>> +        cmovle  r11,rbp
>>>>>>>
>>>>>>> +        test    edx,edx
>>>>>>>
>>>>>>> +        jz      NEAR $L$done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  xmm10,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        lea     rax,[128+rsp]
>>>>>>>
>>>>>>> +        movdqu  xmm11,XMMWORD[32+rdi]
>>>>>>>
>>>>>>> +        movdqu  xmm12,XMMWORD[64+rdi]
>>>>>>>
>>>>>>> +        movdqu  xmm13,XMMWORD[96+rdi]
>>>>>>>
>>>>>>> +        movdqu  xmm14,XMMWORD[128+rdi]
>>>>>>>
>>>>>>> +        movdqa  xmm5,XMMWORD[96+rbp]
>>>>>>>
>>>>>>> +        movdqa  xmm15,XMMWORD[((-32))+rbp]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$oop:
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[r8]
>>>>>>>
>>>>>>> +        lea     r8,[64+r8]
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[r9]
>>>>>>>
>>>>>>> +        lea     r9,[64+r9]
>>>>>>>
>>>>>>> +        movd    xmm3,DWORD[r10]
>>>>>>>
>>>>>>> +        lea     r10,[64+r10]
>>>>>>>
>>>>>>> +        movd    xmm4,DWORD[r11]
>>>>>>>
>>>>>>> +        lea     r11,[64+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm3
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[((-60))+r8]
>>>>>>>
>>>>>>> +        punpckldq       xmm2,xmm4
>>>>>>>
>>>>>>> +        movd    xmm9,DWORD[((-60))+r9]
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>
>>>>>>> +        movd    xmm8,DWORD[((-60))+r10]
>>>>>>>
>>>>>>> +DB      102,15,56,0,197
>>>>>>>
>>>>>>> +        movd    xmm7,DWORD[((-60))+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm1,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm13
>>>>>>>
>>>>>>> +        pand    xmm6,xmm12
>>>>>>>
>>>>>>> +        punpckldq       xmm1,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm0
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[((-56))+r8]
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        movd    xmm9,DWORD[((-56))+r9]
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm11,2
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,205
>>>>>>>
>>>>>>> +        movd    xmm8,DWORD[((-56))+r10]
>>>>>>>
>>>>>>> +        por     xmm11,xmm7
>>>>>>>
>>>>>>> +        movd    xmm7,DWORD[((-56))+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm2,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm12
>>>>>>>
>>>>>>> +        pand    xmm6,xmm11
>>>>>>>
>>>>>>> +        punpckldq       xmm2,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm1
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>
>>>>>>> +        movd    xmm3,DWORD[((-52))+r8]
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        movd    xmm9,DWORD[((-52))+r9]
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm10,2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,213
>>>>>>>
>>>>>>> +        movd    xmm8,DWORD[((-52))+r10]
>>>>>>>
>>>>>>> +        por     xmm10,xmm7
>>>>>>>
>>>>>>> +        movd    xmm7,DWORD[((-52))+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm3,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm11
>>>>>>>
>>>>>>> +        pand    xmm6,xmm10
>>>>>>>
>>>>>>> +        punpckldq       xmm3,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>
>>>>>>> +        movd    xmm4,DWORD[((-48))+r8]
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        movd    xmm9,DWORD[((-48))+r9]
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm14,2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,221
>>>>>>>
>>>>>>> +        movd    xmm8,DWORD[((-48))+r10]
>>>>>>>
>>>>>>> +        por     xmm14,xmm7
>>>>>>>
>>>>>>> +        movd    xmm7,DWORD[((-48))+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm4,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm10
>>>>>>>
>>>>>>> +        pand    xmm6,xmm14
>>>>>>>
>>>>>>> +        punpckldq       xmm4,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm3
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[((-44))+r8]
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        movd    xmm9,DWORD[((-44))+r9]
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm13,2
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,229
>>>>>>>
>>>>>>> +        movd    xmm8,DWORD[((-44))+r10]
>>>>>>>
>>>>>>> +        por     xmm13,xmm7
>>>>>>>
>>>>>>> +        movd    xmm7,DWORD[((-44))+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm14
>>>>>>>
>>>>>>> +        pand    xmm6,xmm13
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm4
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[((-40))+r8]
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        movd    xmm9,DWORD[((-40))+r9]
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm12,2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,197
>>>>>>>
>>>>>>> +        movd    xmm8,DWORD[((-40))+r10]
>>>>>>>
>>>>>>> +        por     xmm12,xmm7
>>>>>>>
>>>>>>> +        movd    xmm7,DWORD[((-40))+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm1,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm13
>>>>>>>
>>>>>>> +        pand    xmm6,xmm12
>>>>>>>
>>>>>>> +        punpckldq       xmm1,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm0
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[((-36))+r8]
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        movd    xmm9,DWORD[((-36))+r9]
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm11,2
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,205
>>>>>>>
>>>>>>> +        movd    xmm8,DWORD[((-36))+r10]
>>>>>>>
>>>>>>> +        por     xmm11,xmm7
>>>>>>>
>>>>>>> +        movd    xmm7,DWORD[((-36))+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm2,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm12
>>>>>>>
>>>>>>> +        pand    xmm6,xmm11
>>>>>>>
>>>>>>> +        punpckldq       xmm2,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm1
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>
>>>>>>> +        movd    xmm3,DWORD[((-32))+r8]
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        movd    xmm9,DWORD[((-32))+r9]
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm10,2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,213
>>>>>>>
>>>>>>> +        movd    xmm8,DWORD[((-32))+r10]
>>>>>>>
>>>>>>> +        por     xmm10,xmm7
>>>>>>>
>>>>>>> +        movd    xmm7,DWORD[((-32))+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm3,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm11
>>>>>>>
>>>>>>> +        pand    xmm6,xmm10
>>>>>>>
>>>>>>> +        punpckldq       xmm3,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>
>>>>>>> +        movd    xmm4,DWORD[((-28))+r8]
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        movd    xmm9,DWORD[((-28))+r9]
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm14,2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,221
>>>>>>>
>>>>>>> +        movd    xmm8,DWORD[((-28))+r10]
>>>>>>>
>>>>>>> +        por     xmm14,xmm7
>>>>>>>
>>>>>>> +        movd    xmm7,DWORD[((-28))+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm4,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm10
>>>>>>>
>>>>>>> +        pand    xmm6,xmm14
>>>>>>>
>>>>>>> +        punpckldq       xmm4,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(128-128)+rax],xmm3
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[((-24))+r8]
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        movd    xmm9,DWORD[((-24))+r9]
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm13,2
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,229
>>>>>>>
>>>>>>> +        movd    xmm8,DWORD[((-24))+r10]
>>>>>>>
>>>>>>> +        por     xmm13,xmm7
>>>>>>>
>>>>>>> +        movd    xmm7,DWORD[((-24))+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm14
>>>>>>>
>>>>>>> +        pand    xmm6,xmm13
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(144-128)+rax],xmm4
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[((-20))+r8]
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        movd    xmm9,DWORD[((-20))+r9]
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm12,2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,197
>>>>>>>
>>>>>>> +        movd    xmm8,DWORD[((-20))+r10]
>>>>>>>
>>>>>>> +        por     xmm12,xmm7
>>>>>>>
>>>>>>> +        movd    xmm7,DWORD[((-20))+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm1,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm13
>>>>>>>
>>>>>>> +        pand    xmm6,xmm12
>>>>>>>
>>>>>>> +        punpckldq       xmm1,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(160-128)+rax],xmm0
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[((-16))+r8]
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        movd    xmm9,DWORD[((-16))+r9]
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm11,2
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,205
>>>>>>>
>>>>>>> +        movd    xmm8,DWORD[((-16))+r10]
>>>>>>>
>>>>>>> +        por     xmm11,xmm7
>>>>>>>
>>>>>>> +        movd    xmm7,DWORD[((-16))+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm2,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm12
>>>>>>>
>>>>>>> +        pand    xmm6,xmm11
>>>>>>>
>>>>>>> +        punpckldq       xmm2,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(176-128)+rax],xmm1
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>
>>>>>>> +        movd    xmm3,DWORD[((-12))+r8]
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        movd    xmm9,DWORD[((-12))+r9]
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm10,2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,213
>>>>>>>
>>>>>>> +        movd    xmm8,DWORD[((-12))+r10]
>>>>>>>
>>>>>>> +        por     xmm10,xmm7
>>>>>>>
>>>>>>> +        movd    xmm7,DWORD[((-12))+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm3,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm11
>>>>>>>
>>>>>>> +        pand    xmm6,xmm10
>>>>>>>
>>>>>>> +        punpckldq       xmm3,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(192-128)+rax],xmm2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>
>>>>>>> +        movd    xmm4,DWORD[((-8))+r8]
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        movd    xmm9,DWORD[((-8))+r9]
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm14,2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,221
>>>>>>>
>>>>>>> +        movd    xmm8,DWORD[((-8))+r10]
>>>>>>>
>>>>>>> +        por     xmm14,xmm7
>>>>>>>
>>>>>>> +        movd    xmm7,DWORD[((-8))+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm4,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm10
>>>>>>>
>>>>>>> +        pand    xmm6,xmm14
>>>>>>>
>>>>>>> +        punpckldq       xmm4,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(208-128)+rax],xmm3
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[((-4))+r8]
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        movd    xmm9,DWORD[((-4))+r9]
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm13,2
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,229
>>>>>>>
>>>>>>> +        movd    xmm8,DWORD[((-4))+r10]
>>>>>>>
>>>>>>> +        por     xmm13,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((0-128))+rax]
>>>>>>>
>>>>>>> +        movd    xmm7,DWORD[((-4))+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        prefetcht0      [63+r8]
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm14
>>>>>>>
>>>>>>> +        pand    xmm6,xmm13
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(224-128)+rax],xmm4
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +        prefetcht0      [63+r9]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +        prefetcht0      [63+r10]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm12,2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,197
>>>>>>>
>>>>>>> +        prefetcht0      [63+r11]
>>>>>>>
>>>>>>> +        por     xmm12,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((16-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[((32-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm1,XMMWORD[((128-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>
>>>>>>> +        pand    xmm6,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(240-128)+rax],xmm0
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm11,2
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>
>>>>>>> +        por     xmm1,xmm5
>>>>>>>
>>>>>>> +        por     xmm11,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[((48-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm2,XMMWORD[((144-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>
>>>>>>> +        pand    xmm6,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm1
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm10,2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>
>>>>>>> +        por     xmm2,xmm5
>>>>>>>
>>>>>>> +        por     xmm10,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((64-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm3,XMMWORD[((160-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>
>>>>>>> +        pand    xmm6,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm14,2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>
>>>>>>> +        por     xmm3,xmm5
>>>>>>>
>>>>>>> +        por     xmm14,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((80-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm4,XMMWORD[((176-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>
>>>>>>> +        pand    xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm3
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm13,2
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>
>>>>>>> +        por     xmm4,xmm5
>>>>>>>
>>>>>>> +        por     xmm13,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((96-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm0,XMMWORD[((192-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>
>>>>>>> +        pandn   xmm7,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>
>>>>>>> +        pand    xmm6,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm4
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm12,2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>
>>>>>>> +        por     xmm0,xmm5
>>>>>>>
>>>>>>> +        por     xmm12,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm15,XMMWORD[rbp]
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[((112-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm1,XMMWORD[((208-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm0
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm11,2
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>
>>>>>>> +        por     xmm1,xmm5
>>>>>>>
>>>>>>> +        por     xmm11,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[((128-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm2,XMMWORD[((224-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm1
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm10,2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>
>>>>>>> +        por     xmm2,xmm5
>>>>>>>
>>>>>>> +        por     xmm10,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((144-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm3,XMMWORD[((240-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm14,2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>
>>>>>>> +        por     xmm3,xmm5
>>>>>>>
>>>>>>> +        por     xmm14,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((160-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm4,XMMWORD[((0-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm3
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm13,2
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>
>>>>>>> +        por     xmm4,xmm5
>>>>>>>
>>>>>>> +        por     xmm13,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((176-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm0,XMMWORD[((16-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(128-128)+rax],xmm4
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm12,2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>
>>>>>>> +        por     xmm0,xmm5
>>>>>>>
>>>>>>> +        por     xmm12,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[((192-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm1,XMMWORD[((32-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(144-128)+rax],xmm0
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm11,2
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>
>>>>>>> +        por     xmm1,xmm5
>>>>>>>
>>>>>>> +        por     xmm11,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[((208-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm2,XMMWORD[((48-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(160-128)+rax],xmm1
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm10,2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>
>>>>>>> +        por     xmm2,xmm5
>>>>>>>
>>>>>>> +        por     xmm10,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((224-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm3,XMMWORD[((64-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(176-128)+rax],xmm2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm14,2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>
>>>>>>> +        por     xmm3,xmm5
>>>>>>>
>>>>>>> +        por     xmm14,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((240-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm4,XMMWORD[((80-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(192-128)+rax],xmm3
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm13,2
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>
>>>>>>> +        por     xmm4,xmm5
>>>>>>>
>>>>>>> +        por     xmm13,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((0-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm0,XMMWORD[((96-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(208-128)+rax],xmm4
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm12,2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>
>>>>>>> +        por     xmm0,xmm5
>>>>>>>
>>>>>>> +        por     xmm12,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[((16-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm1,XMMWORD[((112-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(224-128)+rax],xmm0
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm11,2
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>
>>>>>>> +        por     xmm1,xmm5
>>>>>>>
>>>>>>> +        por     xmm11,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[((32-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm2,XMMWORD[((128-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(240-128)+rax],xmm1
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm10,2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>
>>>>>>> +        por     xmm2,xmm5
>>>>>>>
>>>>>>> +        por     xmm10,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((48-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm3,XMMWORD[((144-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm14,2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>
>>>>>>> +        por     xmm3,xmm5
>>>>>>>
>>>>>>> +        por     xmm14,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((64-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm4,XMMWORD[((160-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm3
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm13,2
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>
>>>>>>> +        por     xmm4,xmm5
>>>>>>>
>>>>>>> +        por     xmm13,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((80-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm0,XMMWORD[((176-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm4
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm12,2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>
>>>>>>> +        por     xmm0,xmm5
>>>>>>>
>>>>>>> +        por     xmm12,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[((96-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm1,XMMWORD[((192-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm0
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm11,2
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>
>>>>>>> +        por     xmm1,xmm5
>>>>>>>
>>>>>>> +        por     xmm11,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[((112-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm2,XMMWORD[((208-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm1
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm10,2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>
>>>>>>> +        por     xmm2,xmm5
>>>>>>>
>>>>>>> +        por     xmm10,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((128-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm3,XMMWORD[((224-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm14,2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>
>>>>>>> +        por     xmm3,xmm5
>>>>>>>
>>>>>>> +        por     xmm14,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((144-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm4,XMMWORD[((240-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm3
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm13,2
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>
>>>>>>> +        por     xmm4,xmm5
>>>>>>>
>>>>>>> +        por     xmm13,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((160-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm0,XMMWORD[((0-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm4
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm12,2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>
>>>>>>> +        por     xmm0,xmm5
>>>>>>>
>>>>>>> +        por     xmm12,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm15,XMMWORD[32+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[((176-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm1,XMMWORD[((16-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>
>>>>>>> +        pand    xmm7,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(128-128)+rax],xmm0
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm11,2
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>
>>>>>>> +        por     xmm1,xmm5
>>>>>>>
>>>>>>> +        por     xmm11,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[((192-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm2,XMMWORD[((32-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>
>>>>>>> +        pand    xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(144-128)+rax],xmm1
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm10,2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>
>>>>>>> +        por     xmm2,xmm5
>>>>>>>
>>>>>>> +        por     xmm10,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((208-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm3,XMMWORD[((48-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>
>>>>>>> +        pand    xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(160-128)+rax],xmm2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm14,2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>
>>>>>>> +        por     xmm3,xmm5
>>>>>>>
>>>>>>> +        por     xmm14,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((224-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm4,XMMWORD[((64-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>
>>>>>>> +        pand    xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(176-128)+rax],xmm3
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm13,2
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>
>>>>>>> +        por     xmm4,xmm5
>>>>>>>
>>>>>>> +        por     xmm13,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((240-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm0,XMMWORD[((80-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +        pand    xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(192-128)+rax],xmm4
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm12,2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>
>>>>>>> +        por     xmm0,xmm5
>>>>>>>
>>>>>>> +        por     xmm12,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[((0-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm1,XMMWORD[((96-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>
>>>>>>> +        pand    xmm7,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(208-128)+rax],xmm0
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm11,2
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>
>>>>>>> +        por     xmm1,xmm5
>>>>>>>
>>>>>>> +        por     xmm11,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[((16-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm2,XMMWORD[((112-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>
>>>>>>> +        pand    xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(224-128)+rax],xmm1
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm10,2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>
>>>>>>> +        por     xmm2,xmm5
>>>>>>>
>>>>>>> +        por     xmm10,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((32-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm3,XMMWORD[((128-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>
>>>>>>> +        pand    xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(240-128)+rax],xmm2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm14,2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>
>>>>>>> +        por     xmm3,xmm5
>>>>>>>
>>>>>>> +        por     xmm14,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((48-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm4,XMMWORD[((144-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>
>>>>>>> +        pand    xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm3
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm13,2
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>
>>>>>>> +        por     xmm4,xmm5
>>>>>>>
>>>>>>> +        por     xmm13,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((64-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm0,XMMWORD[((160-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +        pand    xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm4
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm12,2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>
>>>>>>> +        por     xmm0,xmm5
>>>>>>>
>>>>>>> +        por     xmm12,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[((80-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm1,XMMWORD[((176-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>
>>>>>>> +        pand    xmm7,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm0
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm11,2
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>
>>>>>>> +        por     xmm1,xmm5
>>>>>>>
>>>>>>> +        por     xmm11,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[((96-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm2,XMMWORD[((192-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>
>>>>>>> +        pand    xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm1
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm10,2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>
>>>>>>> +        por     xmm2,xmm5
>>>>>>>
>>>>>>> +        por     xmm10,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((112-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm3,XMMWORD[((208-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>
>>>>>>> +        pand    xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm14,2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>
>>>>>>> +        por     xmm3,xmm5
>>>>>>>
>>>>>>> +        por     xmm14,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((128-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm4,XMMWORD[((224-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>
>>>>>>> +        pand    xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm3
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm13,2
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>
>>>>>>> +        por     xmm4,xmm5
>>>>>>>
>>>>>>> +        por     xmm13,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((144-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm0,XMMWORD[((240-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +        pand    xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm4
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm12,2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>
>>>>>>> +        por     xmm0,xmm5
>>>>>>>
>>>>>>> +        por     xmm12,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[((160-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm1,XMMWORD[((0-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>
>>>>>>> +        pand    xmm7,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm0
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm11,2
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>
>>>>>>> +        por     xmm1,xmm5
>>>>>>>
>>>>>>> +        por     xmm11,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[((176-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm2,XMMWORD[((16-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>
>>>>>>> +        pand    xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(128-128)+rax],xmm1
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm10,2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>
>>>>>>> +        por     xmm2,xmm5
>>>>>>>
>>>>>>> +        por     xmm10,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((192-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm3,XMMWORD[((32-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>
>>>>>>> +        pand    xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(144-128)+rax],xmm2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm14,2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>
>>>>>>> +        por     xmm3,xmm5
>>>>>>>
>>>>>>> +        por     xmm14,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((208-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm4,XMMWORD[((48-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>
>>>>>>> +        pand    xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(160-128)+rax],xmm3
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm13,2
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>
>>>>>>> +        por     xmm4,xmm5
>>>>>>>
>>>>>>> +        por     xmm13,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((224-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm0,XMMWORD[((64-128))+rax]
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +        pand    xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(176-128)+rax],xmm4
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        pand    xmm6,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm12,2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>
>>>>>>> +        por     xmm0,xmm5
>>>>>>>
>>>>>>> +        por     xmm12,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm15,XMMWORD[64+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[((240-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm1,XMMWORD[((80-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(192-128)+rax],xmm0
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm11,2
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>
>>>>>>> +        por     xmm1,xmm5
>>>>>>>
>>>>>>> +        por     xmm11,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[((0-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm2,XMMWORD[((96-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(208-128)+rax],xmm1
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm10,2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>
>>>>>>> +        por     xmm2,xmm5
>>>>>>>
>>>>>>> +        por     xmm10,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((16-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm3,XMMWORD[((112-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(224-128)+rax],xmm2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm14,2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>
>>>>>>> +        por     xmm3,xmm5
>>>>>>>
>>>>>>> +        por     xmm14,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((32-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm4,XMMWORD[((128-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(240-128)+rax],xmm3
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm13,2
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>
>>>>>>> +        por     xmm4,xmm5
>>>>>>>
>>>>>>> +        por     xmm13,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((48-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm0,XMMWORD[((144-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm4
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm12,2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>
>>>>>>> +        por     xmm0,xmm5
>>>>>>>
>>>>>>> +        por     xmm12,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[((64-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm1,XMMWORD[((160-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm0
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm11,2
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>
>>>>>>> +        por     xmm1,xmm5
>>>>>>>
>>>>>>> +        por     xmm11,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[((80-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm2,XMMWORD[((176-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm1
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm10,2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>
>>>>>>> +        por     xmm2,xmm5
>>>>>>>
>>>>>>> +        por     xmm10,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((96-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm3,XMMWORD[((192-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm14,2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>
>>>>>>> +        por     xmm3,xmm5
>>>>>>>
>>>>>>> +        por     xmm14,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((112-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm4,XMMWORD[((208-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm3
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm13,2
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>
>>>>>>> +        por     xmm4,xmm5
>>>>>>>
>>>>>>> +        por     xmm13,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((128-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm0,XMMWORD[((224-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm4
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm12,2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>
>>>>>>> +        por     xmm0,xmm5
>>>>>>>
>>>>>>> +        por     xmm12,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[((144-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm1,XMMWORD[((240-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm0
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm11,2
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>
>>>>>>> +        por     xmm1,xmm5
>>>>>>>
>>>>>>> +        por     xmm11,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[((160-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm2,XMMWORD[((0-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm1
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm10,2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>
>>>>>>> +        por     xmm2,xmm5
>>>>>>>
>>>>>>> +        por     xmm10,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((176-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm3,XMMWORD[((16-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm14,2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>
>>>>>>> +        por     xmm3,xmm5
>>>>>>>
>>>>>>> +        por     xmm14,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((192-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm4,XMMWORD[((32-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm13,2
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>
>>>>>>> +        por     xmm4,xmm5
>>>>>>>
>>>>>>> +        por     xmm13,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((208-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm0,XMMWORD[((48-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm12,2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>
>>>>>>> +        por     xmm0,xmm5
>>>>>>>
>>>>>>> +        por     xmm12,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[((224-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm1,XMMWORD[((64-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm11,2
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>
>>>>>>> +        por     xmm1,xmm5
>>>>>>>
>>>>>>> +        por     xmm11,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[((240-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm2,XMMWORD[((80-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm10,2
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>
>>>>>>> +        por     xmm2,xmm5
>>>>>>>
>>>>>>> +        por     xmm10,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((0-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm3,XMMWORD[((96-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm14,2
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>
>>>>>>> +        por     xmm3,xmm5
>>>>>>>
>>>>>>> +        por     xmm14,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((16-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm4,XMMWORD[((112-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm5,31
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm13,2
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>
>>>>>>> +        por     xmm4,xmm5
>>>>>>>
>>>>>>> +        por     xmm13,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm8,5
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm9,27
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pslld   xmm7,30
>>>>>>>
>>>>>>> +        por     xmm8,xmm9
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm12,2
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>
>>>>>>> +        por     xmm12,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[rbx]
>>>>>>>
>>>>>>> +        mov     ecx,1
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[rbx]
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm8
>>>>>>>
>>>>>>> +        cmovge  r8,rbp
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[4+rbx]
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +        cmovge  r9,rbp
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[8+rbx]
>>>>>>>
>>>>>>> +        pcmpgtd xmm1,xmm8
>>>>>>>
>>>>>>> +        cmovge  r10,rbp
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[12+rbx]
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm1
>>>>>>>
>>>>>>> +        cmovge  r11,rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        pand    xmm10,xmm1
>>>>>>>
>>>>>>> +        movdqu  xmm7,XMMWORD[32+rdi]
>>>>>>>
>>>>>>> +        pand    xmm11,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +        movdqu  xmm8,XMMWORD[64+rdi]
>>>>>>>
>>>>>>> +        pand    xmm12,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>
>>>>>>> +        movdqu  xmm9,XMMWORD[96+rdi]
>>>>>>>
>>>>>>> +        pand    xmm13,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[128+rdi]
>>>>>>>
>>>>>>> +        pand    xmm14,xmm1
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rdi],xmm10
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm9
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[32+rdi],xmm11
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm5
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[64+rdi],xmm12
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[96+rdi],xmm13
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[128+rdi],xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[rbx],xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm5,XMMWORD[96+rbp]
>>>>>>>
>>>>>>> +        movdqa  xmm15,XMMWORD[((-32))+rbp]
>>>>>>>
>>>>>>> +        dec     edx
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edx,DWORD[280+rsp]
>>>>>>>
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>
>>>>>>> +        lea     rsi,[64+rsi]
>>>>>>>
>>>>>>> +        dec     edx
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_grande
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$done:
>>>>>>>
>>>>>>> +        mov     rax,QWORD[272+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[((-184))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[((-168))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[((-152))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[((-136))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm10,XMMWORD[((-120))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm11,XMMWORD[((-104))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm12,XMMWORD[((-88))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm13,XMMWORD[((-72))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm14,XMMWORD[((-56))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm15,XMMWORD[((-40))+rax]
>>>>>>>
>>>>>>> +        mov     rbp,QWORD[((-16))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[((-8))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$epilogue:
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$SEH_end_sha1_multi_block:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +sha1_multi_block_shaext:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_sha1_multi_block_shaext:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +_shaext_shortcut:
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>>
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>>
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>>
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-120)+rax],xmm10
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-104)+rax],xmm11
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-88)+rax],xmm12
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-72)+rax],xmm13
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-56)+rax],xmm14
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-40)+rax],xmm15
>>>>>>>
>>>>>>> +        sub     rsp,288
>>>>>>>
>>>>>>> +        shl     edx,1
>>>>>>>
>>>>>>> +        and     rsp,-256
>>>>>>>
>>>>>>> +        lea     rdi,[64+rdi]
>>>>>>>
>>>>>>> +        mov     QWORD[272+rsp],rax
>>>>>>>
>>>>>>> +$L$body_shaext:
>>>>>>>
>>>>>>> +        lea     rbx,[256+rsp]
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[((K_XX_XX+128))]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$oop_grande_shaext:
>>>>>>>
>>>>>>> +        mov     DWORD[280+rsp],edx
>>>>>>>
>>>>>>> +        xor     edx,edx
>>>>>>>
>>>>>>> +        mov     r8,QWORD[rsi]
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[8+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        mov     DWORD[rbx],ecx
>>>>>>>
>>>>>>> +        cmovle  r8,rsp
>>>>>>>
>>>>>>> +        mov     r9,QWORD[16+rsi]
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[24+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        mov     DWORD[4+rbx],ecx
>>>>>>>
>>>>>>> +        cmovle  r9,rsp
>>>>>>>
>>>>>>> +        test    edx,edx
>>>>>>>
>>>>>>> +        jz      NEAR $L$done_shaext
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movq    xmm0,QWORD[((0-64))+rdi]
>>>>>>>
>>>>>>> +        movq    xmm4,QWORD[((32-64))+rdi]
>>>>>>>
>>>>>>> +        movq    xmm5,QWORD[((64-64))+rdi]
>>>>>>>
>>>>>>> +        movq    xmm6,QWORD[((96-64))+rdi]
>>>>>>>
>>>>>>> +        movq    xmm7,QWORD[((128-64))+rdi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm4
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm0
>>>>>>>
>>>>>>> +        punpcklqdq      xmm0,xmm5
>>>>>>>
>>>>>>> +        punpckhqdq      xmm8,xmm5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pshufd  xmm1,xmm7,63
>>>>>>>
>>>>>>> +        pshufd  xmm9,xmm7,127
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,27
>>>>>>>
>>>>>>> +        pshufd  xmm8,xmm8,27
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_shaext
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$oop_shaext:
>>>>>>>
>>>>>>> +        movdqu  xmm4,XMMWORD[r8]
>>>>>>>
>>>>>>> +        movdqu  xmm11,XMMWORD[r9]
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[16+r8]
>>>>>>>
>>>>>>> +        movdqu  xmm12,XMMWORD[16+r9]
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[32+r8]
>>>>>>>
>>>>>>> +DB      102,15,56,0,227
>>>>>>>
>>>>>>> +        movdqu  xmm13,XMMWORD[32+r9]
>>>>>>>
>>>>>>> +DB      102,68,15,56,0,219
>>>>>>>
>>>>>>> +        movdqu  xmm7,XMMWORD[48+r8]
>>>>>>>
>>>>>>> +        lea     r8,[64+r8]
>>>>>>>
>>>>>>> +DB      102,15,56,0,235
>>>>>>>
>>>>>>> +        movdqu  xmm14,XMMWORD[48+r9]
>>>>>>>
>>>>>>> +        lea     r9,[64+r9]
>>>>>>>
>>>>>>> +DB      102,68,15,56,0,227
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[80+rsp],xmm1
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm4
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[112+rsp],xmm9
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm11
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[64+rsp],xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[96+rsp],xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,193,0
>>>>>>>
>>>>>>> +DB      15,56,200,213
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,0
>>>>>>>
>>>>>>> +DB      69,15,56,200,212
>>>>>>>
>>>>>>> +DB      102,15,56,0,243
>>>>>>>
>>>>>>> +        prefetcht0      [127+r8]
>>>>>>>
>>>>>>> +DB      15,56,201,229
>>>>>>>
>>>>>>> +DB      102,68,15,56,0,235
>>>>>>>
>>>>>>> +        prefetcht0      [127+r9]
>>>>>>>
>>>>>>> +DB      69,15,56,201,220
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +DB      102,15,56,0,251
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +DB      102,68,15,56,0,243
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,194,0
>>>>>>>
>>>>>>> +DB      15,56,200,206
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,0
>>>>>>>
>>>>>>> +DB      69,15,56,200,205
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +DB      15,56,201,238
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm13
>>>>>>>
>>>>>>> +DB      69,15,56,201,229
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,193,0
>>>>>>>
>>>>>>> +DB      15,56,200,215
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,0
>>>>>>>
>>>>>>> +DB      69,15,56,200,214
>>>>>>>
>>>>>>> +DB      15,56,202,231
>>>>>>>
>>>>>>> +DB      69,15,56,202,222
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm7
>>>>>>>
>>>>>>> +DB      15,56,201,247
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm14
>>>>>>>
>>>>>>> +DB      69,15,56,201,238
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,194,0
>>>>>>>
>>>>>>> +DB      15,56,200,204
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,0
>>>>>>>
>>>>>>> +DB      69,15,56,200,203
>>>>>>>
>>>>>>> +DB      15,56,202,236
>>>>>>>
>>>>>>> +DB      69,15,56,202,227
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>
>>>>>>> +DB      15,56,201,252
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm11
>>>>>>>
>>>>>>> +DB      69,15,56,201,243
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,193,0
>>>>>>>
>>>>>>> +DB      15,56,200,213
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,0
>>>>>>>
>>>>>>> +DB      69,15,56,200,212
>>>>>>>
>>>>>>> +DB      15,56,202,245
>>>>>>>
>>>>>>> +DB      69,15,56,202,236
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm5
>>>>>>>
>>>>>>> +DB      15,56,201,229
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm12
>>>>>>>
>>>>>>> +DB      69,15,56,201,220
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,194,1
>>>>>>>
>>>>>>> +DB      15,56,200,206
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,1
>>>>>>>
>>>>>>> +DB      69,15,56,200,205
>>>>>>>
>>>>>>> +DB      15,56,202,254
>>>>>>>
>>>>>>> +DB      69,15,56,202,245
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +DB      15,56,201,238
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm13
>>>>>>>
>>>>>>> +DB      69,15,56,201,229
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,193,1
>>>>>>>
>>>>>>> +DB      15,56,200,215
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,1
>>>>>>>
>>>>>>> +DB      69,15,56,200,214
>>>>>>>
>>>>>>> +DB      15,56,202,231
>>>>>>>
>>>>>>> +DB      69,15,56,202,222
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm7
>>>>>>>
>>>>>>> +DB      15,56,201,247
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm14
>>>>>>>
>>>>>>> +DB      69,15,56,201,238
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,194,1
>>>>>>>
>>>>>>> +DB      15,56,200,204
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,1
>>>>>>>
>>>>>>> +DB      69,15,56,200,203
>>>>>>>
>>>>>>> +DB      15,56,202,236
>>>>>>>
>>>>>>> +DB      69,15,56,202,227
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>
>>>>>>> +DB      15,56,201,252
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm11
>>>>>>>
>>>>>>> +DB      69,15,56,201,243
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,193,1
>>>>>>>
>>>>>>> +DB      15,56,200,213
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,1
>>>>>>>
>>>>>>> +DB      69,15,56,200,212
>>>>>>>
>>>>>>> +DB      15,56,202,245
>>>>>>>
>>>>>>> +DB      69,15,56,202,236
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm5
>>>>>>>
>>>>>>> +DB      15,56,201,229
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm12
>>>>>>>
>>>>>>> +DB      69,15,56,201,220
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,194,1
>>>>>>>
>>>>>>> +DB      15,56,200,206
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,1
>>>>>>>
>>>>>>> +DB      69,15,56,200,205
>>>>>>>
>>>>>>> +DB      15,56,202,254
>>>>>>>
>>>>>>> +DB      69,15,56,202,245
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +DB      15,56,201,238
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm13
>>>>>>>
>>>>>>> +DB      69,15,56,201,229
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,193,2
>>>>>>>
>>>>>>> +DB      15,56,200,215
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,2
>>>>>>>
>>>>>>> +DB      69,15,56,200,214
>>>>>>>
>>>>>>> +DB      15,56,202,231
>>>>>>>
>>>>>>> +DB      69,15,56,202,222
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm7
>>>>>>>
>>>>>>> +DB      15,56,201,247
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm14
>>>>>>>
>>>>>>> +DB      69,15,56,201,238
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,194,2
>>>>>>>
>>>>>>> +DB      15,56,200,204
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,2
>>>>>>>
>>>>>>> +DB      69,15,56,200,203
>>>>>>>
>>>>>>> +DB      15,56,202,236
>>>>>>>
>>>>>>> +DB      69,15,56,202,227
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>
>>>>>>> +DB      15,56,201,252
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm11
>>>>>>>
>>>>>>> +DB      69,15,56,201,243
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,193,2
>>>>>>>
>>>>>>> +DB      15,56,200,213
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,2
>>>>>>>
>>>>>>> +DB      69,15,56,200,212
>>>>>>>
>>>>>>> +DB      15,56,202,245
>>>>>>>
>>>>>>> +DB      69,15,56,202,236
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm5
>>>>>>>
>>>>>>> +DB      15,56,201,229
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm12
>>>>>>>
>>>>>>> +DB      69,15,56,201,220
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,194,2
>>>>>>>
>>>>>>> +DB      15,56,200,206
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,2
>>>>>>>
>>>>>>> +DB      69,15,56,200,205
>>>>>>>
>>>>>>> +DB      15,56,202,254
>>>>>>>
>>>>>>> +DB      69,15,56,202,245
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +DB      15,56,201,238
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm13
>>>>>>>
>>>>>>> +DB      69,15,56,201,229
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,193,2
>>>>>>>
>>>>>>> +DB      15,56,200,215
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,2
>>>>>>>
>>>>>>> +DB      69,15,56,200,214
>>>>>>>
>>>>>>> +DB      15,56,202,231
>>>>>>>
>>>>>>> +DB      69,15,56,202,222
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm7
>>>>>>>
>>>>>>> +DB      15,56,201,247
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm14
>>>>>>>
>>>>>>> +DB      69,15,56,201,238
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,194,3
>>>>>>>
>>>>>>> +DB      15,56,200,204
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,3
>>>>>>>
>>>>>>> +DB      69,15,56,200,203
>>>>>>>
>>>>>>> +DB      15,56,202,236
>>>>>>>
>>>>>>> +DB      69,15,56,202,227
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>
>>>>>>> +DB      15,56,201,252
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm11
>>>>>>>
>>>>>>> +DB      69,15,56,201,243
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,193,3
>>>>>>>
>>>>>>> +DB      15,56,200,213
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,3
>>>>>>>
>>>>>>> +DB      69,15,56,200,212
>>>>>>>
>>>>>>> +DB      15,56,202,245
>>>>>>>
>>>>>>> +DB      69,15,56,202,236
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     ecx,1
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[rbx]
>>>>>>>
>>>>>>> +        cmovge  r8,rsp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,194,3
>>>>>>>
>>>>>>> +DB      15,56,200,206
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,3
>>>>>>>
>>>>>>> +DB      69,15,56,200,205
>>>>>>>
>>>>>>> +DB      15,56,202,254
>>>>>>>
>>>>>>> +DB      69,15,56,202,245
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[4+rbx]
>>>>>>>
>>>>>>> +        cmovge  r9,rsp
>>>>>>>
>>>>>>> +        movq    xmm6,QWORD[rbx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,193,3
>>>>>>>
>>>>>>> +DB      15,56,200,215
>>>>>>>
>>>>>>> +DB      69,15,58,204,193,3
>>>>>>>
>>>>>>> +DB      69,15,56,200,214
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pshufd  xmm11,xmm6,0x00
>>>>>>>
>>>>>>> +        pshufd  xmm12,xmm6,0x55
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>
>>>>>>> +        pcmpgtd xmm11,xmm4
>>>>>>>
>>>>>>> +        pcmpgtd xmm12,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +DB      15,58,204,194,3
>>>>>>>
>>>>>>> +DB      15,56,200,204
>>>>>>>
>>>>>>> +DB      69,15,58,204,194,3
>>>>>>>
>>>>>>> +DB      68,15,56,200,204
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pcmpgtd xmm7,xmm4
>>>>>>>
>>>>>>> +        pand    xmm0,xmm11
>>>>>>>
>>>>>>> +        pand    xmm1,xmm11
>>>>>>>
>>>>>>> +        pand    xmm8,xmm12
>>>>>>>
>>>>>>> +        pand    xmm9,xmm12
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm0,XMMWORD[64+rsp]
>>>>>>>
>>>>>>> +        paddd   xmm1,XMMWORD[80+rsp]
>>>>>>>
>>>>>>> +        paddd   xmm8,XMMWORD[96+rsp]
>>>>>>>
>>>>>>> +        paddd   xmm9,XMMWORD[112+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movq    QWORD[rbx],xmm6
>>>>>>>
>>>>>>> +        dec     edx
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_shaext
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edx,DWORD[280+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,27
>>>>>>>
>>>>>>> +        pshufd  xmm8,xmm8,27
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm0
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm8
>>>>>>>
>>>>>>> +        punpckhdq       xmm6,xmm8
>>>>>>>
>>>>>>> +        punpckhdq       xmm1,xmm9
>>>>>>>
>>>>>>> +        movq    QWORD[(0-64)+rdi],xmm0
>>>>>>>
>>>>>>> +        psrldq  xmm0,8
>>>>>>>
>>>>>>> +        movq    QWORD[(64-64)+rdi],xmm6
>>>>>>>
>>>>>>> +        psrldq  xmm6,8
>>>>>>>
>>>>>>> +        movq    QWORD[(32-64)+rdi],xmm0
>>>>>>>
>>>>>>> +        psrldq  xmm1,8
>>>>>>>
>>>>>>> +        movq    QWORD[(96-64)+rdi],xmm6
>>>>>>>
>>>>>>> +        movq    QWORD[(128-64)+rdi],xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rdi,[8+rdi]
>>>>>>>
>>>>>>> +        lea     rsi,[32+rsi]
>>>>>>>
>>>>>>> +        dec     edx
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_grande_shaext
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$done_shaext:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[((-184))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[((-168))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[((-152))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[((-136))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm10,XMMWORD[((-120))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm11,XMMWORD[((-104))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm12,XMMWORD[((-88))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm13,XMMWORD[((-72))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm14,XMMWORD[((-56))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm15,XMMWORD[((-40))+rax]
>>>>>>>
>>>>>>> +        mov     rbp,QWORD[((-16))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[((-8))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$epilogue_shaext:
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$SEH_end_sha1_multi_block_shaext:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   256
>>>>>>>
>>>>>>> +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
>>>>>>>
>>>>>>> +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
>>>>>>>
>>>>>>> +K_XX_XX:
>>>>>>>
>>>>>>> +        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,109,117,108,116,105,45,98,108,111,99,107
>>>>>>>
>>>>>>> +DB      32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120
>>>>>>>
>>>>>>> +DB      56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77
>>>>>>>
>>>>>>> +DB      83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110
>>>>>>>
>>>>>>> +DB      115,115,108,46,111,114,103,62,0
>>>>>>>
>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +se_handler:
>>>>>>>
>>>>>>> +        push    rsi
>>>>>>>
>>>>>>> +        push    rdi
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +        pushfq
>>>>>>>
>>>>>>> +        sub     rsp,64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[272+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[((-8))+rax]
>>>>>>>
>>>>>>> +        mov     rbp,QWORD[((-16))+rax]
>>>>>>>
>>>>>>> +        mov     QWORD[144+r8],rbx
>>>>>>>
>>>>>>> +        mov     QWORD[160+r8],rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsi,[((-24-160))+rax]
>>>>>>>
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>
>>>>>>> +        mov     ecx,20
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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[40+r9]
>>>>>>>
>>>>>>> +        mov     rsi,r8
>>>>>>>
>>>>>>> +        mov     ecx,154
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,r9
>>>>>>>
>>>>>>> +        xor     rcx,rcx
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +        popfq
>>>>>>>
>>>>>>> +        pop     r15
>>>>>>>
>>>>>>> +        pop     r14
>>>>>>>
>>>>>>> +        pop     r13
>>>>>>>
>>>>>>> +        pop     r12
>>>>>>>
>>>>>>> +        pop     rbp
>>>>>>>
>>>>>>> +        pop     rbx
>>>>>>>
>>>>>>> +        pop     rdi
>>>>>>>
>>>>>>> +        pop     rsi
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +section .pdata rdata align=4
>>>>>>>
>>>>>>> +ALIGN   4
>>>>>>>
>>>>>>> +        DD      $L$SEH_begin_sha1_multi_block wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_end_sha1_multi_block wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_info_sha1_multi_block wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_begin_sha1_multi_block_shaext wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_end_sha1_multi_block_shaext wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_info_sha1_multi_block_shaext wrt ..imagebase
>>>>>>>
>>>>>>> +section .xdata rdata align=8
>>>>>>>
>>>>>>> +ALIGN   8
>>>>>>>
>>>>>>> +$L$SEH_info_sha1_multi_block:
>>>>>>>
>>>>>>> +DB      9,0,0,0
>>>>>>>
>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
>>>>>>>
>>>>>>> +$L$SEH_info_sha1_multi_block_shaext:
>>>>>>>
>>>>>>> +DB      9,0,0,0
>>>>>>>
>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
>>>>>>> wrt ..imagebase
>>>>>>>
>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-
>>>> x86_64.nasm
>>>>>>> b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..c6d68d348f
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
>>>>>>> @@ -0,0 +1,2884 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>>
>>>>>>> +; Generated from openssl/crypto/sha/asm/sha1-x86_64.pl
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Copyright 2006-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>
>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>> copy
>>>>>>>
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +default rel
>>>>>>>
>>>>>>> +%define XMMWORD
>>>>>>>
>>>>>>> +%define YMMWORD
>>>>>>>
>>>>>>> +%define ZMMWORD
>>>>>>>
>>>>>>> +section .text code align=64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  sha1_block_data_order
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +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:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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      NEAR $L$ialu
>>>>>>>
>>>>>>> +        test    r10d,536870912
>>>>>>>
>>>>>>> +        jnz     NEAR _shaext_shortcut
>>>>>>>
>>>>>>> +        jmp     NEAR _ssse3_shortcut
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ialu:
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r8,rdi
>>>>>>>
>>>>>>> +        sub     rsp,72
>>>>>>>
>>>>>>> +        mov     r9,rsi
>>>>>>>
>>>>>>> +        and     rsp,-64
>>>>>>>
>>>>>>> +        mov     r10,rdx
>>>>>>>
>>>>>>> +        mov     QWORD[64+rsp],rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$prologue:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[r9]
>>>>>>>
>>>>>>> +        bswap   edx
>>>>>>>
>>>>>>> +        mov     ebp,DWORD[4+r9]
>>>>>>>
>>>>>>> +        mov     eax,r12d
>>>>>>>
>>>>>>> +        mov     DWORD[rsp],edx
>>>>>>>
>>>>>>> +        mov     ecx,esi
>>>>>>>
>>>>>>> +        bswap   ebp
>>>>>>>
>>>>>>> +        xor     eax,r11d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        and     eax,edi
>>>>>>>
>>>>>>> +        lea     r13d,[1518500249+r13*1+rdx]
>>>>>>>
>>>>>>> +        add     r13d,ecx
>>>>>>>
>>>>>>> +        xor     eax,r12d
>>>>>>>
>>>>>>> +        rol     edi,30
>>>>>>>
>>>>>>> +        add     r13d,eax
>>>>>>>
>>>>>>> +        mov     r14d,DWORD[8+r9]
>>>>>>>
>>>>>>> +        mov     eax,r11d
>>>>>>>
>>>>>>> +        mov     DWORD[4+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ecx,r13d
>>>>>>>
>>>>>>> +        bswap   r14d
>>>>>>>
>>>>>>> +        xor     eax,edi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        and     eax,esi
>>>>>>>
>>>>>>> +        lea     r12d,[1518500249+r12*1+rbp]
>>>>>>>
>>>>>>> +        add     r12d,ecx
>>>>>>>
>>>>>>> +        xor     eax,r11d
>>>>>>>
>>>>>>> +        rol     esi,30
>>>>>>>
>>>>>>> +        add     r12d,eax
>>>>>>>
>>>>>>> +        mov     edx,DWORD[12+r9]
>>>>>>>
>>>>>>> +        mov     eax,edi
>>>>>>>
>>>>>>> +        mov     DWORD[8+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ecx,r12d
>>>>>>>
>>>>>>> +        bswap   edx
>>>>>>>
>>>>>>> +        xor     eax,esi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        and     eax,r13d
>>>>>>>
>>>>>>> +        lea     r11d,[1518500249+r11*1+r14]
>>>>>>>
>>>>>>> +        add     r11d,ecx
>>>>>>>
>>>>>>> +        xor     eax,edi
>>>>>>>
>>>>>>> +        rol     r13d,30
>>>>>>>
>>>>>>> +        add     r11d,eax
>>>>>>>
>>>>>>> +        mov     ebp,DWORD[16+r9]
>>>>>>>
>>>>>>> +        mov     eax,esi
>>>>>>>
>>>>>>> +        mov     DWORD[12+rsp],edx
>>>>>>>
>>>>>>> +        mov     ecx,r11d
>>>>>>>
>>>>>>> +        bswap   ebp
>>>>>>>
>>>>>>> +        xor     eax,r13d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        and     eax,r12d
>>>>>>>
>>>>>>> +        lea     edi,[1518500249+rdi*1+rdx]
>>>>>>>
>>>>>>> +        add     edi,ecx
>>>>>>>
>>>>>>> +        xor     eax,esi
>>>>>>>
>>>>>>> +        rol     r12d,30
>>>>>>>
>>>>>>> +        add     edi,eax
>>>>>>>
>>>>>>> +        mov     r14d,DWORD[20+r9]
>>>>>>>
>>>>>>> +        mov     eax,r13d
>>>>>>>
>>>>>>> +        mov     DWORD[16+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ecx,edi
>>>>>>>
>>>>>>> +        bswap   r14d
>>>>>>>
>>>>>>> +        xor     eax,r12d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        and     eax,r11d
>>>>>>>
>>>>>>> +        lea     esi,[1518500249+rsi*1+rbp]
>>>>>>>
>>>>>>> +        add     esi,ecx
>>>>>>>
>>>>>>> +        xor     eax,r13d
>>>>>>>
>>>>>>> +        rol     r11d,30
>>>>>>>
>>>>>>> +        add     esi,eax
>>>>>>>
>>>>>>> +        mov     edx,DWORD[24+r9]
>>>>>>>
>>>>>>> +        mov     eax,r12d
>>>>>>>
>>>>>>> +        mov     DWORD[20+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ecx,esi
>>>>>>>
>>>>>>> +        bswap   edx
>>>>>>>
>>>>>>> +        xor     eax,r11d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        and     eax,edi
>>>>>>>
>>>>>>> +        lea     r13d,[1518500249+r13*1+r14]
>>>>>>>
>>>>>>> +        add     r13d,ecx
>>>>>>>
>>>>>>> +        xor     eax,r12d
>>>>>>>
>>>>>>> +        rol     edi,30
>>>>>>>
>>>>>>> +        add     r13d,eax
>>>>>>>
>>>>>>> +        mov     ebp,DWORD[28+r9]
>>>>>>>
>>>>>>> +        mov     eax,r11d
>>>>>>>
>>>>>>> +        mov     DWORD[24+rsp],edx
>>>>>>>
>>>>>>> +        mov     ecx,r13d
>>>>>>>
>>>>>>> +        bswap   ebp
>>>>>>>
>>>>>>> +        xor     eax,edi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        and     eax,esi
>>>>>>>
>>>>>>> +        lea     r12d,[1518500249+r12*1+rdx]
>>>>>>>
>>>>>>> +        add     r12d,ecx
>>>>>>>
>>>>>>> +        xor     eax,r11d
>>>>>>>
>>>>>>> +        rol     esi,30
>>>>>>>
>>>>>>> +        add     r12d,eax
>>>>>>>
>>>>>>> +        mov     r14d,DWORD[32+r9]
>>>>>>>
>>>>>>> +        mov     eax,edi
>>>>>>>
>>>>>>> +        mov     DWORD[28+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ecx,r12d
>>>>>>>
>>>>>>> +        bswap   r14d
>>>>>>>
>>>>>>> +        xor     eax,esi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        and     eax,r13d
>>>>>>>
>>>>>>> +        lea     r11d,[1518500249+r11*1+rbp]
>>>>>>>
>>>>>>> +        add     r11d,ecx
>>>>>>>
>>>>>>> +        xor     eax,edi
>>>>>>>
>>>>>>> +        rol     r13d,30
>>>>>>>
>>>>>>> +        add     r11d,eax
>>>>>>>
>>>>>>> +        mov     edx,DWORD[36+r9]
>>>>>>>
>>>>>>> +        mov     eax,esi
>>>>>>>
>>>>>>> +        mov     DWORD[32+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ecx,r11d
>>>>>>>
>>>>>>> +        bswap   edx
>>>>>>>
>>>>>>> +        xor     eax,r13d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        and     eax,r12d
>>>>>>>
>>>>>>> +        lea     edi,[1518500249+rdi*1+r14]
>>>>>>>
>>>>>>> +        add     edi,ecx
>>>>>>>
>>>>>>> +        xor     eax,esi
>>>>>>>
>>>>>>> +        rol     r12d,30
>>>>>>>
>>>>>>> +        add     edi,eax
>>>>>>>
>>>>>>> +        mov     ebp,DWORD[40+r9]
>>>>>>>
>>>>>>> +        mov     eax,r13d
>>>>>>>
>>>>>>> +        mov     DWORD[36+rsp],edx
>>>>>>>
>>>>>>> +        mov     ecx,edi
>>>>>>>
>>>>>>> +        bswap   ebp
>>>>>>>
>>>>>>> +        xor     eax,r12d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        and     eax,r11d
>>>>>>>
>>>>>>> +        lea     esi,[1518500249+rsi*1+rdx]
>>>>>>>
>>>>>>> +        add     esi,ecx
>>>>>>>
>>>>>>> +        xor     eax,r13d
>>>>>>>
>>>>>>> +        rol     r11d,30
>>>>>>>
>>>>>>> +        add     esi,eax
>>>>>>>
>>>>>>> +        mov     r14d,DWORD[44+r9]
>>>>>>>
>>>>>>> +        mov     eax,r12d
>>>>>>>
>>>>>>> +        mov     DWORD[40+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ecx,esi
>>>>>>>
>>>>>>> +        bswap   r14d
>>>>>>>
>>>>>>> +        xor     eax,r11d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        and     eax,edi
>>>>>>>
>>>>>>> +        lea     r13d,[1518500249+r13*1+rbp]
>>>>>>>
>>>>>>> +        add     r13d,ecx
>>>>>>>
>>>>>>> +        xor     eax,r12d
>>>>>>>
>>>>>>> +        rol     edi,30
>>>>>>>
>>>>>>> +        add     r13d,eax
>>>>>>>
>>>>>>> +        mov     edx,DWORD[48+r9]
>>>>>>>
>>>>>>> +        mov     eax,r11d
>>>>>>>
>>>>>>> +        mov     DWORD[44+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ecx,r13d
>>>>>>>
>>>>>>> +        bswap   edx
>>>>>>>
>>>>>>> +        xor     eax,edi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        and     eax,esi
>>>>>>>
>>>>>>> +        lea     r12d,[1518500249+r12*1+r14]
>>>>>>>
>>>>>>> +        add     r12d,ecx
>>>>>>>
>>>>>>> +        xor     eax,r11d
>>>>>>>
>>>>>>> +        rol     esi,30
>>>>>>>
>>>>>>> +        add     r12d,eax
>>>>>>>
>>>>>>> +        mov     ebp,DWORD[52+r9]
>>>>>>>
>>>>>>> +        mov     eax,edi
>>>>>>>
>>>>>>> +        mov     DWORD[48+rsp],edx
>>>>>>>
>>>>>>> +        mov     ecx,r12d
>>>>>>>
>>>>>>> +        bswap   ebp
>>>>>>>
>>>>>>> +        xor     eax,esi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        and     eax,r13d
>>>>>>>
>>>>>>> +        lea     r11d,[1518500249+r11*1+rdx]
>>>>>>>
>>>>>>> +        add     r11d,ecx
>>>>>>>
>>>>>>> +        xor     eax,edi
>>>>>>>
>>>>>>> +        rol     r13d,30
>>>>>>>
>>>>>>> +        add     r11d,eax
>>>>>>>
>>>>>>> +        mov     r14d,DWORD[56+r9]
>>>>>>>
>>>>>>> +        mov     eax,esi
>>>>>>>
>>>>>>> +        mov     DWORD[52+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ecx,r11d
>>>>>>>
>>>>>>> +        bswap   r14d
>>>>>>>
>>>>>>> +        xor     eax,r13d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        and     eax,r12d
>>>>>>>
>>>>>>> +        lea     edi,[1518500249+rdi*1+rbp]
>>>>>>>
>>>>>>> +        add     edi,ecx
>>>>>>>
>>>>>>> +        xor     eax,esi
>>>>>>>
>>>>>>> +        rol     r12d,30
>>>>>>>
>>>>>>> +        add     edi,eax
>>>>>>>
>>>>>>> +        mov     edx,DWORD[60+r9]
>>>>>>>
>>>>>>> +        mov     eax,r13d
>>>>>>>
>>>>>>> +        mov     DWORD[56+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ecx,edi
>>>>>>>
>>>>>>> +        bswap   edx
>>>>>>>
>>>>>>> +        xor     eax,r12d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        and     eax,r11d
>>>>>>>
>>>>>>> +        lea     esi,[1518500249+rsi*1+r14]
>>>>>>>
>>>>>>> +        add     esi,ecx
>>>>>>>
>>>>>>> +        xor     eax,r13d
>>>>>>>
>>>>>>> +        rol     r11d,30
>>>>>>>
>>>>>>> +        add     esi,eax
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[rsp]
>>>>>>>
>>>>>>> +        mov     eax,r12d
>>>>>>>
>>>>>>> +        mov     DWORD[60+rsp],edx
>>>>>>>
>>>>>>> +        mov     ecx,esi
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r11d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        and     eax,edi
>>>>>>>
>>>>>>> +        lea     r13d,[1518500249+r13*1+rdx]
>>>>>>>
>>>>>>> +        rol     edi,30
>>>>>>>
>>>>>>> +        xor     eax,r12d
>>>>>>>
>>>>>>> +        add     r13d,ecx
>>>>>>>
>>>>>>> +        rol     ebp,1
>>>>>>>
>>>>>>> +        add     r13d,eax
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r11d
>>>>>>>
>>>>>>> +        mov     DWORD[rsp],ebp
>>>>>>>
>>>>>>> +        mov     ecx,r13d
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        xor     eax,edi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        and     eax,esi
>>>>>>>
>>>>>>> +        lea     r12d,[1518500249+r12*1+rbp]
>>>>>>>
>>>>>>> +        rol     esi,30
>>>>>>>
>>>>>>> +        xor     eax,r11d
>>>>>>>
>>>>>>> +        add     r12d,ecx
>>>>>>>
>>>>>>> +        rol     r14d,1
>>>>>>>
>>>>>>> +        add     r12d,eax
>>>>>>>
>>>>>>> +        xor     edx,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        mov     eax,edi
>>>>>>>
>>>>>>> +        mov     DWORD[4+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ecx,r12d
>>>>>>>
>>>>>>> +        xor     edx,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        xor     eax,esi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        xor     edx,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        and     eax,r13d
>>>>>>>
>>>>>>> +        lea     r11d,[1518500249+r11*1+r14]
>>>>>>>
>>>>>>> +        rol     r13d,30
>>>>>>>
>>>>>>> +        xor     eax,edi
>>>>>>>
>>>>>>> +        add     r11d,ecx
>>>>>>>
>>>>>>> +        rol     edx,1
>>>>>>>
>>>>>>> +        add     r11d,eax
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        mov     eax,esi
>>>>>>>
>>>>>>> +        mov     DWORD[8+rsp],edx
>>>>>>>
>>>>>>> +        mov     ecx,r11d
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r13d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        and     eax,r12d
>>>>>>>
>>>>>>> +        lea     edi,[1518500249+rdi*1+rdx]
>>>>>>>
>>>>>>> +        rol     r12d,30
>>>>>>>
>>>>>>> +        xor     eax,esi
>>>>>>>
>>>>>>> +        add     edi,ecx
>>>>>>>
>>>>>>> +        rol     ebp,1
>>>>>>>
>>>>>>> +        add     edi,eax
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r13d
>>>>>>>
>>>>>>> +        mov     DWORD[12+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ecx,edi
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r12d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        and     eax,r11d
>>>>>>>
>>>>>>> +        lea     esi,[1518500249+rsi*1+rbp]
>>>>>>>
>>>>>>> +        rol     r11d,30
>>>>>>>
>>>>>>> +        xor     eax,r13d
>>>>>>>
>>>>>>> +        add     esi,ecx
>>>>>>>
>>>>>>> +        rol     r14d,1
>>>>>>>
>>>>>>> +        add     esi,eax
>>>>>>>
>>>>>>> +        xor     edx,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        mov     eax,edi
>>>>>>>
>>>>>>> +        mov     DWORD[16+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ecx,esi
>>>>>>>
>>>>>>> +        xor     edx,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r12d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[24+rsp]
>>>>>>>
>>>>>>> +        mov     eax,esi
>>>>>>>
>>>>>>> +        mov     DWORD[20+rsp],edx
>>>>>>>
>>>>>>> +        mov     ecx,r13d
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r11d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[28+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r13d
>>>>>>>
>>>>>>> +        mov     DWORD[24+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ecx,r12d
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        xor     eax,edi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[32+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r12d
>>>>>>>
>>>>>>> +        mov     DWORD[28+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ecx,r11d
>>>>>>>
>>>>>>> +        xor     edx,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        xor     eax,esi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[36+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r11d
>>>>>>>
>>>>>>> +        mov     DWORD[32+rsp],edx
>>>>>>>
>>>>>>> +        mov     ecx,edi
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r13d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[40+rsp]
>>>>>>>
>>>>>>> +        mov     eax,edi
>>>>>>>
>>>>>>> +        mov     DWORD[36+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ecx,esi
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r12d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[44+rsp]
>>>>>>>
>>>>>>> +        mov     eax,esi
>>>>>>>
>>>>>>> +        mov     DWORD[40+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ecx,r13d
>>>>>>>
>>>>>>> +        xor     edx,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r11d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[48+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r13d
>>>>>>>
>>>>>>> +        mov     DWORD[44+rsp],edx
>>>>>>>
>>>>>>> +        mov     ecx,r12d
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        xor     eax,edi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[52+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r12d
>>>>>>>
>>>>>>> +        mov     DWORD[48+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ecx,r11d
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        xor     eax,esi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[56+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r11d
>>>>>>>
>>>>>>> +        mov     DWORD[52+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ecx,edi
>>>>>>>
>>>>>>> +        xor     edx,DWORD[rsp]
>>>>>>>
>>>>>>> +        xor     eax,r13d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[60+rsp]
>>>>>>>
>>>>>>> +        mov     eax,edi
>>>>>>>
>>>>>>> +        mov     DWORD[56+rsp],edx
>>>>>>>
>>>>>>> +        mov     ecx,esi
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r12d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[rsp]
>>>>>>>
>>>>>>> +        mov     eax,esi
>>>>>>>
>>>>>>> +        mov     DWORD[60+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ecx,r13d
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r11d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[4+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r13d
>>>>>>>
>>>>>>> +        mov     DWORD[rsp],r14d
>>>>>>>
>>>>>>> +        mov     ecx,r12d
>>>>>>>
>>>>>>> +        xor     edx,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        xor     eax,edi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[8+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r12d
>>>>>>>
>>>>>>> +        mov     DWORD[4+rsp],edx
>>>>>>>
>>>>>>> +        mov     ecx,r11d
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        xor     eax,esi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[12+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r11d
>>>>>>>
>>>>>>> +        mov     DWORD[8+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ecx,edi
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r13d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[16+rsp]
>>>>>>>
>>>>>>> +        mov     eax,edi
>>>>>>>
>>>>>>> +        mov     DWORD[12+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ecx,esi
>>>>>>>
>>>>>>> +        xor     edx,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r12d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[20+rsp]
>>>>>>>
>>>>>>> +        mov     eax,esi
>>>>>>>
>>>>>>> +        mov     DWORD[16+rsp],edx
>>>>>>>
>>>>>>> +        mov     ecx,r13d
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r11d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[24+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r13d
>>>>>>>
>>>>>>> +        mov     DWORD[20+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ecx,r12d
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        xor     eax,edi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[28+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r12d
>>>>>>>
>>>>>>> +        mov     DWORD[24+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ecx,r11d
>>>>>>>
>>>>>>> +        xor     edx,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        xor     eax,esi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[32+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r11d
>>>>>>>
>>>>>>> +        mov     DWORD[28+rsp],edx
>>>>>>>
>>>>>>> +        mov     ecx,edi
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r13d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[36+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r12d
>>>>>>>
>>>>>>> +        mov     DWORD[32+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ebx,r12d
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        and     eax,r11d
>>>>>>>
>>>>>>> +        mov     ecx,esi
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        lea     r13d,[((-1894007588))+r13*1+rbp]
>>>>>>>
>>>>>>> +        xor     ebx,r11d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     r13d,eax
>>>>>>>
>>>>>>> +        rol     r14d,1
>>>>>>>
>>>>>>> +        and     ebx,edi
>>>>>>>
>>>>>>> +        add     r13d,ecx
>>>>>>>
>>>>>>> +        rol     edi,30
>>>>>>>
>>>>>>> +        add     r13d,ebx
>>>>>>>
>>>>>>> +        xor     edx,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r11d
>>>>>>>
>>>>>>> +        mov     DWORD[36+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ebx,r11d
>>>>>>>
>>>>>>> +        xor     edx,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        and     eax,edi
>>>>>>>
>>>>>>> +        mov     ecx,r13d
>>>>>>>
>>>>>>> +        xor     edx,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        lea     r12d,[((-1894007588))+r12*1+r14]
>>>>>>>
>>>>>>> +        xor     ebx,edi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     r12d,eax
>>>>>>>
>>>>>>> +        rol     edx,1
>>>>>>>
>>>>>>> +        and     ebx,esi
>>>>>>>
>>>>>>> +        add     r12d,ecx
>>>>>>>
>>>>>>> +        rol     esi,30
>>>>>>>
>>>>>>> +        add     r12d,ebx
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        mov     eax,edi
>>>>>>>
>>>>>>> +        mov     DWORD[40+rsp],edx
>>>>>>>
>>>>>>> +        mov     ebx,edi
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        and     eax,esi
>>>>>>>
>>>>>>> +        mov     ecx,r12d
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        lea     r11d,[((-1894007588))+r11*1+rdx]
>>>>>>>
>>>>>>> +        xor     ebx,esi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     r11d,eax
>>>>>>>
>>>>>>> +        rol     ebp,1
>>>>>>>
>>>>>>> +        and     ebx,r13d
>>>>>>>
>>>>>>> +        add     r11d,ecx
>>>>>>>
>>>>>>> +        rol     r13d,30
>>>>>>>
>>>>>>> +        add     r11d,ebx
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        mov     eax,esi
>>>>>>>
>>>>>>> +        mov     DWORD[44+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ebx,esi
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        and     eax,r13d
>>>>>>>
>>>>>>> +        mov     ecx,r11d
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        lea     edi,[((-1894007588))+rdi*1+rbp]
>>>>>>>
>>>>>>> +        xor     ebx,r13d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     edi,eax
>>>>>>>
>>>>>>> +        rol     r14d,1
>>>>>>>
>>>>>>> +        and     ebx,r12d
>>>>>>>
>>>>>>> +        add     edi,ecx
>>>>>>>
>>>>>>> +        rol     r12d,30
>>>>>>>
>>>>>>> +        add     edi,ebx
>>>>>>>
>>>>>>> +        xor     edx,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r13d
>>>>>>>
>>>>>>> +        mov     DWORD[48+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ebx,r13d
>>>>>>>
>>>>>>> +        xor     edx,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        and     eax,r12d
>>>>>>>
>>>>>>> +        mov     ecx,edi
>>>>>>>
>>>>>>> +        xor     edx,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        lea     esi,[((-1894007588))+rsi*1+r14]
>>>>>>>
>>>>>>> +        xor     ebx,r12d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     esi,eax
>>>>>>>
>>>>>>> +        rol     edx,1
>>>>>>>
>>>>>>> +        and     ebx,r11d
>>>>>>>
>>>>>>> +        add     esi,ecx
>>>>>>>
>>>>>>> +        rol     r11d,30
>>>>>>>
>>>>>>> +        add     esi,ebx
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r12d
>>>>>>>
>>>>>>> +        mov     DWORD[52+rsp],edx
>>>>>>>
>>>>>>> +        mov     ebx,r12d
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[rsp]
>>>>>>>
>>>>>>> +        and     eax,r11d
>>>>>>>
>>>>>>> +        mov     ecx,esi
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        lea     r13d,[((-1894007588))+r13*1+rdx]
>>>>>>>
>>>>>>> +        xor     ebx,r11d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     r13d,eax
>>>>>>>
>>>>>>> +        rol     ebp,1
>>>>>>>
>>>>>>> +        and     ebx,edi
>>>>>>>
>>>>>>> +        add     r13d,ecx
>>>>>>>
>>>>>>> +        rol     edi,30
>>>>>>>
>>>>>>> +        add     r13d,ebx
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r11d
>>>>>>>
>>>>>>> +        mov     DWORD[56+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ebx,r11d
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        and     eax,edi
>>>>>>>
>>>>>>> +        mov     ecx,r13d
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        lea     r12d,[((-1894007588))+r12*1+rbp]
>>>>>>>
>>>>>>> +        xor     ebx,edi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     r12d,eax
>>>>>>>
>>>>>>> +        rol     r14d,1
>>>>>>>
>>>>>>> +        and     ebx,esi
>>>>>>>
>>>>>>> +        add     r12d,ecx
>>>>>>>
>>>>>>> +        rol     esi,30
>>>>>>>
>>>>>>> +        add     r12d,ebx
>>>>>>>
>>>>>>> +        xor     edx,DWORD[rsp]
>>>>>>>
>>>>>>> +        mov     eax,edi
>>>>>>>
>>>>>>> +        mov     DWORD[60+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ebx,edi
>>>>>>>
>>>>>>> +        xor     edx,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        and     eax,esi
>>>>>>>
>>>>>>> +        mov     ecx,r12d
>>>>>>>
>>>>>>> +        xor     edx,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        lea     r11d,[((-1894007588))+r11*1+r14]
>>>>>>>
>>>>>>> +        xor     ebx,esi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     r11d,eax
>>>>>>>
>>>>>>> +        rol     edx,1
>>>>>>>
>>>>>>> +        and     ebx,r13d
>>>>>>>
>>>>>>> +        add     r11d,ecx
>>>>>>>
>>>>>>> +        rol     r13d,30
>>>>>>>
>>>>>>> +        add     r11d,ebx
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        mov     eax,esi
>>>>>>>
>>>>>>> +        mov     DWORD[rsp],edx
>>>>>>>
>>>>>>> +        mov     ebx,esi
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        and     eax,r13d
>>>>>>>
>>>>>>> +        mov     ecx,r11d
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        lea     edi,[((-1894007588))+rdi*1+rdx]
>>>>>>>
>>>>>>> +        xor     ebx,r13d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     edi,eax
>>>>>>>
>>>>>>> +        rol     ebp,1
>>>>>>>
>>>>>>> +        and     ebx,r12d
>>>>>>>
>>>>>>> +        add     edi,ecx
>>>>>>>
>>>>>>> +        rol     r12d,30
>>>>>>>
>>>>>>> +        add     edi,ebx
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r13d
>>>>>>>
>>>>>>> +        mov     DWORD[4+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ebx,r13d
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        and     eax,r12d
>>>>>>>
>>>>>>> +        mov     ecx,edi
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        lea     esi,[((-1894007588))+rsi*1+rbp]
>>>>>>>
>>>>>>> +        xor     ebx,r12d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     esi,eax
>>>>>>>
>>>>>>> +        rol     r14d,1
>>>>>>>
>>>>>>> +        and     ebx,r11d
>>>>>>>
>>>>>>> +        add     esi,ecx
>>>>>>>
>>>>>>> +        rol     r11d,30
>>>>>>>
>>>>>>> +        add     esi,ebx
>>>>>>>
>>>>>>> +        xor     edx,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r12d
>>>>>>>
>>>>>>> +        mov     DWORD[8+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ebx,r12d
>>>>>>>
>>>>>>> +        xor     edx,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        and     eax,r11d
>>>>>>>
>>>>>>> +        mov     ecx,esi
>>>>>>>
>>>>>>> +        xor     edx,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        lea     r13d,[((-1894007588))+r13*1+r14]
>>>>>>>
>>>>>>> +        xor     ebx,r11d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     r13d,eax
>>>>>>>
>>>>>>> +        rol     edx,1
>>>>>>>
>>>>>>> +        and     ebx,edi
>>>>>>>
>>>>>>> +        add     r13d,ecx
>>>>>>>
>>>>>>> +        rol     edi,30
>>>>>>>
>>>>>>> +        add     r13d,ebx
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r11d
>>>>>>>
>>>>>>> +        mov     DWORD[12+rsp],edx
>>>>>>>
>>>>>>> +        mov     ebx,r11d
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        and     eax,edi
>>>>>>>
>>>>>>> +        mov     ecx,r13d
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        lea     r12d,[((-1894007588))+r12*1+rdx]
>>>>>>>
>>>>>>> +        xor     ebx,edi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     r12d,eax
>>>>>>>
>>>>>>> +        rol     ebp,1
>>>>>>>
>>>>>>> +        and     ebx,esi
>>>>>>>
>>>>>>> +        add     r12d,ecx
>>>>>>>
>>>>>>> +        rol     esi,30
>>>>>>>
>>>>>>> +        add     r12d,ebx
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        mov     eax,edi
>>>>>>>
>>>>>>> +        mov     DWORD[16+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ebx,edi
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        and     eax,esi
>>>>>>>
>>>>>>> +        mov     ecx,r12d
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        lea     r11d,[((-1894007588))+r11*1+rbp]
>>>>>>>
>>>>>>> +        xor     ebx,esi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     r11d,eax
>>>>>>>
>>>>>>> +        rol     r14d,1
>>>>>>>
>>>>>>> +        and     ebx,r13d
>>>>>>>
>>>>>>> +        add     r11d,ecx
>>>>>>>
>>>>>>> +        rol     r13d,30
>>>>>>>
>>>>>>> +        add     r11d,ebx
>>>>>>>
>>>>>>> +        xor     edx,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        mov     eax,esi
>>>>>>>
>>>>>>> +        mov     DWORD[20+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ebx,esi
>>>>>>>
>>>>>>> +        xor     edx,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        and     eax,r13d
>>>>>>>
>>>>>>> +        mov     ecx,r11d
>>>>>>>
>>>>>>> +        xor     edx,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        lea     edi,[((-1894007588))+rdi*1+r14]
>>>>>>>
>>>>>>> +        xor     ebx,r13d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     edi,eax
>>>>>>>
>>>>>>> +        rol     edx,1
>>>>>>>
>>>>>>> +        and     ebx,r12d
>>>>>>>
>>>>>>> +        add     edi,ecx
>>>>>>>
>>>>>>> +        rol     r12d,30
>>>>>>>
>>>>>>> +        add     edi,ebx
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r13d
>>>>>>>
>>>>>>> +        mov     DWORD[24+rsp],edx
>>>>>>>
>>>>>>> +        mov     ebx,r13d
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        and     eax,r12d
>>>>>>>
>>>>>>> +        mov     ecx,edi
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        lea     esi,[((-1894007588))+rsi*1+rdx]
>>>>>>>
>>>>>>> +        xor     ebx,r12d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     esi,eax
>>>>>>>
>>>>>>> +        rol     ebp,1
>>>>>>>
>>>>>>> +        and     ebx,r11d
>>>>>>>
>>>>>>> +        add     esi,ecx
>>>>>>>
>>>>>>> +        rol     r11d,30
>>>>>>>
>>>>>>> +        add     esi,ebx
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r12d
>>>>>>>
>>>>>>> +        mov     DWORD[28+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ebx,r12d
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        and     eax,r11d
>>>>>>>
>>>>>>> +        mov     ecx,esi
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[rsp]
>>>>>>>
>>>>>>> +        lea     r13d,[((-1894007588))+r13*1+rbp]
>>>>>>>
>>>>>>> +        xor     ebx,r11d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     r13d,eax
>>>>>>>
>>>>>>> +        rol     r14d,1
>>>>>>>
>>>>>>> +        and     ebx,edi
>>>>>>>
>>>>>>> +        add     r13d,ecx
>>>>>>>
>>>>>>> +        rol     edi,30
>>>>>>>
>>>>>>> +        add     r13d,ebx
>>>>>>>
>>>>>>> +        xor     edx,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r11d
>>>>>>>
>>>>>>> +        mov     DWORD[32+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ebx,r11d
>>>>>>>
>>>>>>> +        xor     edx,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        and     eax,edi
>>>>>>>
>>>>>>> +        mov     ecx,r13d
>>>>>>>
>>>>>>> +        xor     edx,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        lea     r12d,[((-1894007588))+r12*1+r14]
>>>>>>>
>>>>>>> +        xor     ebx,edi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     r12d,eax
>>>>>>>
>>>>>>> +        rol     edx,1
>>>>>>>
>>>>>>> +        and     ebx,esi
>>>>>>>
>>>>>>> +        add     r12d,ecx
>>>>>>>
>>>>>>> +        rol     esi,30
>>>>>>>
>>>>>>> +        add     r12d,ebx
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        mov     eax,edi
>>>>>>>
>>>>>>> +        mov     DWORD[36+rsp],edx
>>>>>>>
>>>>>>> +        mov     ebx,edi
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        and     eax,esi
>>>>>>>
>>>>>>> +        mov     ecx,r12d
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        lea     r11d,[((-1894007588))+r11*1+rdx]
>>>>>>>
>>>>>>> +        xor     ebx,esi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     r11d,eax
>>>>>>>
>>>>>>> +        rol     ebp,1
>>>>>>>
>>>>>>> +        and     ebx,r13d
>>>>>>>
>>>>>>> +        add     r11d,ecx
>>>>>>>
>>>>>>> +        rol     r13d,30
>>>>>>>
>>>>>>> +        add     r11d,ebx
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        mov     eax,esi
>>>>>>>
>>>>>>> +        mov     DWORD[40+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ebx,esi
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        and     eax,r13d
>>>>>>>
>>>>>>> +        mov     ecx,r11d
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        lea     edi,[((-1894007588))+rdi*1+rbp]
>>>>>>>
>>>>>>> +        xor     ebx,r13d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     edi,eax
>>>>>>>
>>>>>>> +        rol     r14d,1
>>>>>>>
>>>>>>> +        and     ebx,r12d
>>>>>>>
>>>>>>> +        add     edi,ecx
>>>>>>>
>>>>>>> +        rol     r12d,30
>>>>>>>
>>>>>>> +        add     edi,ebx
>>>>>>>
>>>>>>> +        xor     edx,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r13d
>>>>>>>
>>>>>>> +        mov     DWORD[44+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ebx,r13d
>>>>>>>
>>>>>>> +        xor     edx,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        and     eax,r12d
>>>>>>>
>>>>>>> +        mov     ecx,edi
>>>>>>>
>>>>>>> +        xor     edx,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        lea     esi,[((-1894007588))+rsi*1+r14]
>>>>>>>
>>>>>>> +        xor     ebx,r12d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     esi,eax
>>>>>>>
>>>>>>> +        rol     edx,1
>>>>>>>
>>>>>>> +        and     ebx,r11d
>>>>>>>
>>>>>>> +        add     esi,ecx
>>>>>>>
>>>>>>> +        rol     r11d,30
>>>>>>>
>>>>>>> +        add     esi,ebx
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        mov     eax,edi
>>>>>>>
>>>>>>> +        mov     DWORD[48+rsp],edx
>>>>>>>
>>>>>>> +        mov     ecx,esi
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r12d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[56+rsp]
>>>>>>>
>>>>>>> +        mov     eax,esi
>>>>>>>
>>>>>>> +        mov     DWORD[52+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ecx,r13d
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[rsp]
>>>>>>>
>>>>>>> +        xor     eax,r11d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[60+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r13d
>>>>>>>
>>>>>>> +        mov     DWORD[56+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ecx,r12d
>>>>>>>
>>>>>>> +        xor     edx,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        xor     eax,edi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[rsp]
>>>>>>>
>>>>>>> +        mov     eax,r12d
>>>>>>>
>>>>>>> +        mov     DWORD[60+rsp],edx
>>>>>>>
>>>>>>> +        mov     ecx,r11d
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        xor     eax,esi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[4+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r11d
>>>>>>>
>>>>>>> +        mov     DWORD[rsp],ebp
>>>>>>>
>>>>>>> +        mov     ecx,edi
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r13d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[8+rsp]
>>>>>>>
>>>>>>> +        mov     eax,edi
>>>>>>>
>>>>>>> +        mov     DWORD[4+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ecx,esi
>>>>>>>
>>>>>>> +        xor     edx,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r12d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[12+rsp]
>>>>>>>
>>>>>>> +        mov     eax,esi
>>>>>>>
>>>>>>> +        mov     DWORD[8+rsp],edx
>>>>>>>
>>>>>>> +        mov     ecx,r13d
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r11d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[16+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r13d
>>>>>>>
>>>>>>> +        mov     DWORD[12+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ecx,r12d
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        xor     eax,edi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[20+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r12d
>>>>>>>
>>>>>>> +        mov     DWORD[16+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ecx,r11d
>>>>>>>
>>>>>>> +        xor     edx,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        xor     eax,esi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[24+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r11d
>>>>>>>
>>>>>>> +        mov     DWORD[20+rsp],edx
>>>>>>>
>>>>>>> +        mov     ecx,edi
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r13d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[28+rsp]
>>>>>>>
>>>>>>> +        mov     eax,edi
>>>>>>>
>>>>>>> +        mov     DWORD[24+rsp],ebp
>>>>>>>
>>>>>>> +        mov     ecx,esi
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r12d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[32+rsp]
>>>>>>>
>>>>>>> +        mov     eax,esi
>>>>>>>
>>>>>>> +        mov     DWORD[28+rsp],r14d
>>>>>>>
>>>>>>> +        mov     ecx,r13d
>>>>>>>
>>>>>>> +        xor     edx,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r11d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[36+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     ecx,r12d
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        xor     eax,edi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[40+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     ecx,r11d
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        xor     eax,esi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[44+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     ecx,edi
>>>>>>>
>>>>>>> +        xor     edx,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r13d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[48+rsp]
>>>>>>>
>>>>>>> +        mov     eax,edi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     ecx,esi
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r12d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[52+rsp]
>>>>>>>
>>>>>>> +        mov     eax,esi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     ecx,r13d
>>>>>>>
>>>>>>> +        xor     r14d,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        xor     eax,r11d
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[56+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     ecx,r12d
>>>>>>>
>>>>>>> +        xor     edx,DWORD[rsp]
>>>>>>>
>>>>>>> +        xor     eax,edi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        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[60+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     ecx,r11d
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        xor     eax,esi
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        xor     ebp,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        lea     edi,[((-899497514))+rdi*1+rdx]
>>>>>>>
>>>>>>> +        xor     eax,r13d
>>>>>>>
>>>>>>> +        add     edi,ecx
>>>>>>>
>>>>>>> +        rol     r12d,30
>>>>>>>
>>>>>>> +        add     edi,eax
>>>>>>>
>>>>>>> +        rol     ebp,1
>>>>>>>
>>>>>>> +        mov     eax,r11d
>>>>>>>
>>>>>>> +        mov     ecx,edi
>>>>>>>
>>>>>>> +        xor     eax,r13d
>>>>>>>
>>>>>>> +        lea     esi,[((-899497514))+rsi*1+rbp]
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        xor     eax,r12d
>>>>>>>
>>>>>>> +        add     esi,ecx
>>>>>>>
>>>>>>> +        rol     r11d,30
>>>>>>>
>>>>>>> +        add     esi,eax
>>>>>>>
>>>>>>> +        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,[64+r9]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$loop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +sha1_block_data_order_shaext:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_sha1_block_data_order_shaext:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +_shaext_shortcut:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[((-72))+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-8-64)+rax],xmm6
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-8-48)+rax],xmm7
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-8-32)+rax],xmm8
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-8-16)+rax],xmm9
>>>>>>>
>>>>>>> +$L$prologue_shaext:
>>>>>>>
>>>>>>> +        movdqu  xmm0,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[16+rdi]
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[((K_XX_XX+160))]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  xmm4,XMMWORD[rsi]
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,27
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[16+rsi]
>>>>>>>
>>>>>>> +        pshufd  xmm1,xmm1,27
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[32+rsi]
>>>>>>>
>>>>>>> +DB      102,15,56,0,227
>>>>>>>
>>>>>>> +        movdqu  xmm7,XMMWORD[48+rsi]
>>>>>>>
>>>>>>> +DB      102,15,56,0,235
>>>>>>>
>>>>>>> +DB      102,15,56,0,243
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm1
>>>>>>>
>>>>>>> +DB      102,15,56,0,251
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_shaext
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$oop_shaext:
>>>>>>>
>>>>>>> +        dec     rdx
>>>>>>>
>>>>>>> +        lea     r8,[64+rsi]
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm4
>>>>>>>
>>>>>>> +        cmovne  rsi,r8
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm0
>>>>>>>
>>>>>>> +DB      15,56,201,229
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,193,0
>>>>>>>
>>>>>>> +DB      15,56,200,213
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +DB      15,56,201,238
>>>>>>>
>>>>>>> +DB      15,56,202,231
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,194,0
>>>>>>>
>>>>>>> +DB      15,56,200,206
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm7
>>>>>>>
>>>>>>> +DB      15,56,202,236
>>>>>>>
>>>>>>> +DB      15,56,201,247
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,193,0
>>>>>>>
>>>>>>> +DB      15,56,200,215
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>
>>>>>>> +DB      15,56,201,252
>>>>>>>
>>>>>>> +DB      15,56,202,245
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,194,0
>>>>>>>
>>>>>>> +DB      15,56,200,204
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm5
>>>>>>>
>>>>>>> +DB      15,56,202,254
>>>>>>>
>>>>>>> +DB      15,56,201,229
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,193,0
>>>>>>>
>>>>>>> +DB      15,56,200,213
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +DB      15,56,201,238
>>>>>>>
>>>>>>> +DB      15,56,202,231
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,194,1
>>>>>>>
>>>>>>> +DB      15,56,200,206
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm7
>>>>>>>
>>>>>>> +DB      15,56,202,236
>>>>>>>
>>>>>>> +DB      15,56,201,247
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,193,1
>>>>>>>
>>>>>>> +DB      15,56,200,215
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>
>>>>>>> +DB      15,56,201,252
>>>>>>>
>>>>>>> +DB      15,56,202,245
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,194,1
>>>>>>>
>>>>>>> +DB      15,56,200,204
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm5
>>>>>>>
>>>>>>> +DB      15,56,202,254
>>>>>>>
>>>>>>> +DB      15,56,201,229
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,193,1
>>>>>>>
>>>>>>> +DB      15,56,200,213
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +DB      15,56,201,238
>>>>>>>
>>>>>>> +DB      15,56,202,231
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,194,1
>>>>>>>
>>>>>>> +DB      15,56,200,206
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm7
>>>>>>>
>>>>>>> +DB      15,56,202,236
>>>>>>>
>>>>>>> +DB      15,56,201,247
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,193,2
>>>>>>>
>>>>>>> +DB      15,56,200,215
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>
>>>>>>> +DB      15,56,201,252
>>>>>>>
>>>>>>> +DB      15,56,202,245
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,194,2
>>>>>>>
>>>>>>> +DB      15,56,200,204
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm5
>>>>>>>
>>>>>>> +DB      15,56,202,254
>>>>>>>
>>>>>>> +DB      15,56,201,229
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,193,2
>>>>>>>
>>>>>>> +DB      15,56,200,213
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +DB      15,56,201,238
>>>>>>>
>>>>>>> +DB      15,56,202,231
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,194,2
>>>>>>>
>>>>>>> +DB      15,56,200,206
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm7
>>>>>>>
>>>>>>> +DB      15,56,202,236
>>>>>>>
>>>>>>> +DB      15,56,201,247
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,193,2
>>>>>>>
>>>>>>> +DB      15,56,200,215
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>
>>>>>>> +DB      15,56,201,252
>>>>>>>
>>>>>>> +DB      15,56,202,245
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,194,3
>>>>>>>
>>>>>>> +DB      15,56,200,204
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm5
>>>>>>>
>>>>>>> +DB      15,56,202,254
>>>>>>>
>>>>>>> +        movdqu  xmm4,XMMWORD[rsi]
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,193,3
>>>>>>>
>>>>>>> +DB      15,56,200,213
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[16+rsi]
>>>>>>>
>>>>>>> +DB      102,15,56,0,227
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,194,3
>>>>>>>
>>>>>>> +DB      15,56,200,206
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[32+rsi]
>>>>>>>
>>>>>>> +DB      102,15,56,0,235
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,193,3
>>>>>>>
>>>>>>> +DB      15,56,200,215
>>>>>>>
>>>>>>> +        movdqu  xmm7,XMMWORD[48+rsi]
>>>>>>>
>>>>>>> +DB      102,15,56,0,243
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +DB      15,58,204,194,3
>>>>>>>
>>>>>>> +DB      65,15,56,200,201
>>>>>>>
>>>>>>> +DB      102,15,56,0,251
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_shaext
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,27
>>>>>>>
>>>>>>> +        pshufd  xmm1,xmm1,27
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rdi],xmm0
>>>>>>>
>>>>>>> +        movd    DWORD[16+rdi],xmm1
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[((-8-64))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[((-8-48))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[((-8-32))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[((-8-16))+rax]
>>>>>>>
>>>>>>> +        mov     rsp,rax
>>>>>>>
>>>>>>> +$L$epilogue_shaext:
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$SEH_end_sha1_block_data_order_shaext:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +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:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +_ssse3_shortcut:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r11,rsp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[((-160))+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-40-96)+r11],xmm6
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-40-80)+r11],xmm7
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-40-64)+r11],xmm8
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-40-48)+r11],xmm9
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-40-32)+r11],xmm10
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-40-16)+r11],xmm11
>>>>>>>
>>>>>>> +$L$prologue_ssse3:
>>>>>>>
>>>>>>> +        and     rsp,-64
>>>>>>>
>>>>>>> +        mov     r8,rdi
>>>>>>>
>>>>>>> +        mov     r9,rsi
>>>>>>>
>>>>>>> +        mov     r10,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        shl     r10,6
>>>>>>>
>>>>>>> +        add     r10,r9
>>>>>>>
>>>>>>> +        lea     r14,[((K_XX_XX+64))]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[16+r8]
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        and     esi,edi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm6,XMMWORD[64+r14]
>>>>>>>
>>>>>>> +        movdqa  xmm9,XMMWORD[((-64))+r14]
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +        add     r9,64
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,0,222
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm9
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm9
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[rsp],xmm0
>>>>>>>
>>>>>>> +        psubd   xmm0,xmm9
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm1
>>>>>>>
>>>>>>> +        psubd   xmm1,xmm9
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm2
>>>>>>>
>>>>>>> +        psubd   xmm2,xmm9
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_ssse3
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$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[rsp]
>>>>>>>
>>>>>>> +        punpcklqdq      xmm4,xmm1
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,esi
>>>>>>>
>>>>>>> +        psrldq  xmm8,4
>>>>>>>
>>>>>>> +        and     edi,ebx
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm2
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        mov     esi,ebp
>>>>>>>
>>>>>>> +        add     edx,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm8
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm9
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        and     esi,eax
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm4
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm4
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        pslldq  xmm10,12
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        add     ecx,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        psrld   xmm8,31
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,esi
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>
>>>>>>> +        and     edi,ebp
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        psrld   xmm10,30
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        por     xmm4,xmm8
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        mov     esi,ecx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        pslld   xmm9,2
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm10
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        movdqa  xmm10,XMMWORD[((-64))+r14]
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        and     esi,edx
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm9
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        pshufd  xmm5,xmm1,238
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        add     eax,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        punpcklqdq      xmm5,xmm2
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,esi
>>>>>>>
>>>>>>> +        psrldq  xmm9,4
>>>>>>>
>>>>>>> +        and     edi,ecx
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm1
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm3
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        mov     esi,eax
>>>>>>>
>>>>>>> +        add     ebp,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm9
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[rsp],xmm10
>>>>>>>
>>>>>>> +        add     ebp,edi
>>>>>>>
>>>>>>> +        and     esi,ebx
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm5
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm5
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        pslldq  xmm8,12
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm5
>>>>>>>
>>>>>>> +        mov     edi,ebp
>>>>>>>
>>>>>>> +        add     edx,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        psrld   xmm9,31
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,esi
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>
>>>>>>> +        and     edi,eax
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        psrld   xmm8,30
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        por     xmm5,xmm9
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        mov     esi,edx
>>>>>>>
>>>>>>> +        add     ecx,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        pslld   xmm10,2
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm8
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        movdqa  xmm8,XMMWORD[((-32))+r14]
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,edi
>>>>>>>
>>>>>>> +        and     esi,ebp
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm10
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        pshufd  xmm6,xmm2,238
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm5
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        punpcklqdq      xmm6,xmm3
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        psrldq  xmm10,4
>>>>>>>
>>>>>>> +        and     edi,edx
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm2
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm4
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        mov     esi,ebx
>>>>>>>
>>>>>>> +        add     eax,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm8
>>>>>>>
>>>>>>> +        add     eax,edi
>>>>>>>
>>>>>>> +        and     esi,ecx
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm6
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm6
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        pslldq  xmm9,12
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm6
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +        add     ebp,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        psrld   xmm10,31
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,esi
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm9
>>>>>>>
>>>>>>> +        and     edi,ebx
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        psrld   xmm9,30
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        por     xmm6,xmm10
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        mov     esi,ebp
>>>>>>>
>>>>>>> +        add     edx,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        pslld   xmm8,2
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm9
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        movdqa  xmm9,XMMWORD[((-32))+r14]
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        and     esi,eax
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm8
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        pshufd  xmm7,xmm3,238
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm6
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        add     ecx,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        punpcklqdq      xmm7,xmm4
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,esi
>>>>>>>
>>>>>>> +        psrldq  xmm8,4
>>>>>>>
>>>>>>> +        and     edi,ebp
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm3
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm5
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        mov     esi,ecx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm8
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm9
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        and     esi,edx
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm7
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm7
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        pslldq  xmm10,12
>>>>>>>
>>>>>>> +        paddd   xmm7,xmm7
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        add     eax,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        psrld   xmm8,31
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,esi
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>
>>>>>>> +        and     edi,ecx
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        psrld   xmm10,30
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        por     xmm7,xmm8
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        mov     esi,eax
>>>>>>>
>>>>>>> +        add     ebp,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        pslld   xmm9,2
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm10
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        movdqa  xmm10,XMMWORD[((-32))+r14]
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,edi
>>>>>>>
>>>>>>> +        and     esi,ebx
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm9
>>>>>>>
>>>>>>> +        pshufd  xmm9,xmm6,238
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        mov     edi,ebp
>>>>>>>
>>>>>>> +        add     edx,DWORD[rsp]
>>>>>>>
>>>>>>> +        punpcklqdq      xmm9,xmm7
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        add     edx,esi
>>>>>>>
>>>>>>> +        and     edi,eax
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm7
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm9
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        mov     esi,edx
>>>>>>>
>>>>>>> +        add     ecx,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm0
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm10
>>>>>>>
>>>>>>> +        add     ecx,edi
>>>>>>>
>>>>>>> +        and     esi,ebp
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        pslld   xmm0,2
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        psrld   xmm9,30
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        por     xmm0,xmm9
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        pshufd  xmm10,xmm7,238
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        and     edi,edx
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        mov     esi,ebx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,edi
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm5
>>>>>>>
>>>>>>> +        add     ebp,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        punpcklqdq      xmm10,xmm0
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        add     ebp,esi
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm0
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm10
>>>>>>>
>>>>>>> +        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[rsp],xmm8
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        add     ecx,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        pslld   xmm1,2
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        psrld   xmm10,30
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,esi
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        por     xmm1,xmm10
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        pshufd  xmm8,xmm0,238
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        mov     esi,ecx
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm6
>>>>>>>
>>>>>>> +        add     eax,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        punpcklqdq      xmm8,xmm1
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>
>>>>>>> +        add     eax,esi
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        movdqa  xmm10,XMMWORD[r14]
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm1
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm8
>>>>>>>
>>>>>>> +        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[16+rsp],xmm9
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        pslld   xmm2,2
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        mov     edi,ebp
>>>>>>>
>>>>>>> +        psrld   xmm8,30
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        por     xmm2,xmm8
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        add     ecx,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        pshufd  xmm9,xmm1,238
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        mov     esi,edx
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,edi
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm7
>>>>>>>
>>>>>>> +        add     ebx,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        punpcklqdq      xmm9,xmm2
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm4
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm2
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm9
>>>>>>>
>>>>>>> +        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[32+rsp],xmm10
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        add     ebp,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        pslld   xmm3,2
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +        psrld   xmm9,30
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,esi
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        por     xmm3,xmm9
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        pshufd  xmm10,xmm2,238
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        mov     esi,ebp
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>
>>>>>>> +        add     ecx,DWORD[rsp]
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        punpcklqdq      xmm10,xmm3
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>
>>>>>>> +        add     ecx,esi
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm3
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm10
>>>>>>>
>>>>>>> +        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[48+rsp],xmm8
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        pslld   xmm4,2
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        psrld   xmm10,30
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,esi
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        por     xmm4,xmm10
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        add     ebp,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        pshufd  xmm8,xmm3,238
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        mov     esi,eax
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,edi
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm1
>>>>>>>
>>>>>>> +        add     edx,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        punpcklqdq      xmm8,xmm4
>>>>>>>
>>>>>>> +        mov     edi,ebp
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm6
>>>>>>>
>>>>>>> +        add     edx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm9
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm4
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm8
>>>>>>>
>>>>>>> +        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[rsp],xmm9
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        pslld   xmm5,2
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        psrld   xmm8,30
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        por     xmm5,xmm8
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        pshufd  xmm9,xmm4,238
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        mov     esi,ebx
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,edi
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm2
>>>>>>>
>>>>>>> +        add     ebp,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        and     esi,ecx
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        punpcklqdq      xmm9,xmm5
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,esi
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm5
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm9
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        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[16+rsp],xmm10
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        pslld   xmm6,2
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        psrld   xmm9,30
>>>>>>>
>>>>>>> +        add     ecx,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        and     esi,eax
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        por     xmm6,xmm9
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        pshufd  xmm10,xmm5,238
>>>>>>>
>>>>>>> +        add     ecx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        and     edi,ebp
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        mov     esi,ecx
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm3
>>>>>>>
>>>>>>> +        add     eax,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        and     esi,edx
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        punpcklqdq      xmm10,xmm6
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm0
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,esi
>>>>>>>
>>>>>>> +        movdqa  xmm9,XMMWORD[32+r14]
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm6
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm10
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        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[32+rsp],xmm8
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,edi
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        pslld   xmm7,2
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        psrld   xmm10,30
>>>>>>>
>>>>>>> +        add     edx,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        and     esi,ebx
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        por     xmm7,xmm10
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        mov     edi,ebp
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        pshufd  xmm8,xmm6,238
>>>>>>>
>>>>>>> +        add     edx,esi
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        add     ecx,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        and     edi,eax
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        mov     esi,edx
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        add     ebx,DWORD[rsp]
>>>>>>>
>>>>>>> +        and     esi,ebp
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        punpcklqdq      xmm8,xmm7
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm9
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm7
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm8
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        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[48+rsp],xmm9
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,edi
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        pslld   xmm0,2
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        psrld   xmm8,30
>>>>>>>
>>>>>>> +        add     ebp,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        and     esi,ecx
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        por     xmm0,xmm8
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        pshufd  xmm9,xmm7,238
>>>>>>>
>>>>>>> +        add     ebp,esi
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        and     edi,ebx
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        mov     esi,ebp
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm5
>>>>>>>
>>>>>>> +        add     ecx,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        and     esi,eax
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        punpcklqdq      xmm9,xmm0
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,esi
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm0
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm9
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        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[rsp],xmm10
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        pslld   xmm1,2
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        psrld   xmm9,30
>>>>>>>
>>>>>>> +        add     eax,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        and     esi,edx
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        por     xmm1,xmm9
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        pshufd  xmm10,xmm0,238
>>>>>>>
>>>>>>> +        add     eax,esi
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        add     ebp,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        and     edi,ecx
>>>>>>>
>>>>>>> +        xor     ecx,edx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        mov     esi,eax
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,edi
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm6
>>>>>>>
>>>>>>> +        add     edx,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        and     esi,ebx
>>>>>>>
>>>>>>> +        xor     ebx,ecx
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        punpcklqdq      xmm10,xmm1
>>>>>>>
>>>>>>> +        mov     edi,ebp
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,esi
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm1
>>>>>>>
>>>>>>> +        xor     eax,ebx
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        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[16+rsp],xmm8
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        pslld   xmm2,2
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        psrld   xmm10,30
>>>>>>>
>>>>>>> +        add     ebx,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        and     esi,ebp
>>>>>>>
>>>>>>> +        xor     ebp,eax
>>>>>>>
>>>>>>> +        por     xmm2,xmm10
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        pshufd  xmm8,xmm1,238
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        and     edi,edx
>>>>>>>
>>>>>>> +        xor     edx,ebp
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        mov     esi,ebx
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,edi
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm7
>>>>>>>
>>>>>>> +        add     ebp,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        punpcklqdq      xmm8,xmm2
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm4
>>>>>>>
>>>>>>> +        add     ebp,esi
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm9
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm2
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm8
>>>>>>>
>>>>>>> +        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[32+rsp],xmm9
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        add     ecx,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        pslld   xmm3,2
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        psrld   xmm8,30
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,esi
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        por     xmm3,xmm8
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        mov     esi,ecx
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[rsp]
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm3
>>>>>>>
>>>>>>> +        add     eax,esi
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm10
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        add     ebp,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        mov     esi,eax
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,edi
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        mov     edi,ebp
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        add     ecx,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        mov     esi,edx
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,edi
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        cmp     r9,r10
>>>>>>>
>>>>>>> +        je      NEAR $L$done_ssse3
>>>>>>>
>>>>>>> +        movdqa  xmm6,XMMWORD[64+r14]
>>>>>>>
>>>>>>> +        movdqa  xmm9,XMMWORD[((-64))+r14]
>>>>>>>
>>>>>>> +        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[16+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +DB      102,15,56,0,206
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm9
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        mov     esi,ebx
>>>>>>>
>>>>>>> +        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[24+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,esi
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        mov     esi,ebp
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        add     ecx,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +DB      102,15,56,0,214
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,esi
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm9
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        mov     esi,ecx
>>>>>>>
>>>>>>> +        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[40+rsp]
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,esi
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        add     ebp,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        mov     esi,eax
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,edi
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        mov     edi,ebp
>>>>>>>
>>>>>>> +DB      102,15,56,0,222
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm9
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        add     ecx,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        mov     esi,edx
>>>>>>>
>>>>>>> +        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[56+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        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[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[8+r8],ecx
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        mov     DWORD[12+r8],edx
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        mov     DWORD[16+r8],ebp
>>>>>>>
>>>>>>> +        and     esi,edi
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_ssse3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$done_ssse3:
>>>>>>>
>>>>>>> +        add     ebx,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        mov     esi,ebx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,edi
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        add     ebp,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,esi
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        mov     esi,ebp
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        add     ecx,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,esi
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        mov     esi,ecx
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        add     eax,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        xor     esi,edx
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        rol     ebx,5
>>>>>>>
>>>>>>> +        add     eax,esi
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        ror     ecx,7
>>>>>>>
>>>>>>> +        add     eax,ebx
>>>>>>>
>>>>>>> +        add     ebp,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        mov     esi,eax
>>>>>>>
>>>>>>> +        rol     eax,5
>>>>>>>
>>>>>>> +        add     ebp,edi
>>>>>>>
>>>>>>> +        xor     esi,ecx
>>>>>>>
>>>>>>> +        ror     ebx,7
>>>>>>>
>>>>>>> +        add     ebp,eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ebx
>>>>>>>
>>>>>>> +        mov     edi,ebp
>>>>>>>
>>>>>>> +        rol     ebp,5
>>>>>>>
>>>>>>> +        add     edx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        ror     eax,7
>>>>>>>
>>>>>>> +        add     edx,ebp
>>>>>>>
>>>>>>> +        add     ecx,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        mov     esi,edx
>>>>>>>
>>>>>>> +        rol     edx,5
>>>>>>>
>>>>>>> +        add     ecx,edi
>>>>>>>
>>>>>>> +        xor     esi,eax
>>>>>>>
>>>>>>> +        ror     ebp,7
>>>>>>>
>>>>>>> +        add     ecx,edx
>>>>>>>
>>>>>>> +        add     ebx,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        xor     esi,ebp
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +        rol     ecx,5
>>>>>>>
>>>>>>> +        add     ebx,esi
>>>>>>>
>>>>>>> +        xor     edi,ebp
>>>>>>>
>>>>>>> +        ror     edx,7
>>>>>>>
>>>>>>> +        add     ebx,ecx
>>>>>>>
>>>>>>> +        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[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))+r11]
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[((-40-80))+r11]
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[((-40-64))+r11]
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[((-40-48))+r11]
>>>>>>>
>>>>>>> +        movaps  xmm10,XMMWORD[((-40-32))+r11]
>>>>>>>
>>>>>>> +        movaps  xmm11,XMMWORD[((-40-16))+r11]
>>>>>>>
>>>>>>> +        mov     r14,QWORD[((-40))+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r13,QWORD[((-32))+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12,QWORD[((-24))+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rbp,QWORD[((-16))+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[((-8))+r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[r11]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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:
>>>>>>>
>>>>>>> +ALIGN   64
>>>>>>>
>>>>>>> +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
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +se_handler:
>>>>>>>
>>>>>>> +        push    rsi
>>>>>>>
>>>>>>> +        push    rdi
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +        pushfq
>>>>>>>
>>>>>>> +        sub     rsp,64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r10,[$L$prologue]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r10,[$L$epilogue]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[64+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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     NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +shaext_handler:
>>>>>>>
>>>>>>> +        push    rsi
>>>>>>>
>>>>>>> +        push    rdi
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +        pushfq
>>>>>>>
>>>>>>> +        sub     rsp,64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r10,[$L$prologue_shaext]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r10,[$L$epilogue_shaext]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsi,[((-8-64))+rax]
>>>>>>>
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>
>>>>>>> +        mov     ecx,8
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        jmp     NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +ssse3_handler:
>>>>>>>
>>>>>>> +        push    rsi
>>>>>>>
>>>>>>> +        push    rdi
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +        pushfq
>>>>>>>
>>>>>>> +        sub     rsp,64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[208+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsi,[((-40-96))+rax]
>>>>>>>
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>
>>>>>>> +        mov     ecx,12
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[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[40+r9]
>>>>>>>
>>>>>>> +        mov     rsi,r8
>>>>>>>
>>>>>>> +        mov     ecx,154
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,r9
>>>>>>>
>>>>>>> +        xor     rcx,rcx
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +        popfq
>>>>>>>
>>>>>>> +        pop     r15
>>>>>>>
>>>>>>> +        pop     r14
>>>>>>>
>>>>>>> +        pop     r13
>>>>>>>
>>>>>>> +        pop     r12
>>>>>>>
>>>>>>> +        pop     rbp
>>>>>>>
>>>>>>> +        pop     rbx
>>>>>>>
>>>>>>> +        pop     rdi
>>>>>>>
>>>>>>> +        pop     rsi
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +section .pdata rdata align=4
>>>>>>>
>>>>>>> +ALIGN   4
>>>>>>>
>>>>>>> +        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_shaext wrt
>>>> ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_end_sha1_block_data_order_shaext wrt
>>>> ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_info_sha1_block_data_order_shaext 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:
>>>>>>>
>>>>>>> +DB      9,0,0,0
>>>>>>>
>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>>
>>>>>>> +$L$SEH_info_sha1_block_data_order_shaext:
>>>>>>>
>>>>>>> +DB      9,0,0,0
>>>>>>>
>>>>>>> +        DD      shaext_handler wrt ..imagebase
>>>>>>>
>>>>>>> +$L$SEH_info_sha1_block_data_order_ssse3:
>>>>>>>
>>>>>>> +DB      9,0,0,0
>>>>>>>
>>>>>>> +        DD      ssse3_handler wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
>>>>>>> wrt ..imagebase
>>>>>>>
>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
>>>>>>> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
>>> mb-
>>>>>>> x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..7cd5eae85c
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
>>>>> x86_64.nasm
>>>>>>> @@ -0,0 +1,3461 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>>
>>>>>>> +; Generated from openssl/crypto/sha/asm/sha256-mb-x86_64.pl
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>
>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>> copy
>>>>>>>
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +default rel
>>>>>>>
>>>>>>> +%define XMMWORD
>>>>>>>
>>>>>>> +%define YMMWORD
>>>>>>>
>>>>>>> +%define ZMMWORD
>>>>>>>
>>>>>>> +section .text code align=64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  sha256_multi_block
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +sha256_multi_block:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_sha256_multi_block:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
>>>>>>>
>>>>>>> +        bt      rcx,61
>>>>>>>
>>>>>>> +        jc      NEAR _shaext_shortcut
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>>
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>>
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>>
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-120)+rax],xmm10
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-104)+rax],xmm11
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-88)+rax],xmm12
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-72)+rax],xmm13
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-56)+rax],xmm14
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-40)+rax],xmm15
>>>>>>>
>>>>>>> +        sub     rsp,288
>>>>>>>
>>>>>>> +        and     rsp,-256
>>>>>>>
>>>>>>> +        mov     QWORD[272+rsp],rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$body:
>>>>>>>
>>>>>>> +        lea     rbp,[((K256+128))]
>>>>>>>
>>>>>>> +        lea     rbx,[256+rsp]
>>>>>>>
>>>>>>> +        lea     rdi,[128+rdi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$oop_grande:
>>>>>>>
>>>>>>> +        mov     DWORD[280+rsp],edx
>>>>>>>
>>>>>>> +        xor     edx,edx
>>>>>>>
>>>>>>> +        mov     r8,QWORD[rsi]
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[8+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        mov     DWORD[rbx],ecx
>>>>>>>
>>>>>>> +        cmovle  r8,rbp
>>>>>>>
>>>>>>> +        mov     r9,QWORD[16+rsi]
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[24+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        mov     DWORD[4+rbx],ecx
>>>>>>>
>>>>>>> +        cmovle  r9,rbp
>>>>>>>
>>>>>>> +        mov     r10,QWORD[32+rsi]
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[40+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        mov     DWORD[8+rbx],ecx
>>>>>>>
>>>>>>> +        cmovle  r10,rbp
>>>>>>>
>>>>>>> +        mov     r11,QWORD[48+rsi]
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[56+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        mov     DWORD[12+rbx],ecx
>>>>>>>
>>>>>>> +        cmovle  r11,rbp
>>>>>>>
>>>>>>> +        test    edx,edx
>>>>>>>
>>>>>>> +        jz      NEAR $L$done
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  xmm8,XMMWORD[((0-128))+rdi]
>>>>>>>
>>>>>>> +        lea     rax,[128+rsp]
>>>>>>>
>>>>>>> +        movdqu  xmm9,XMMWORD[((32-128))+rdi]
>>>>>>>
>>>>>>> +        movdqu  xmm10,XMMWORD[((64-128))+rdi]
>>>>>>>
>>>>>>> +        movdqu  xmm11,XMMWORD[((96-128))+rdi]
>>>>>>>
>>>>>>> +        movdqu  xmm12,XMMWORD[((128-128))+rdi]
>>>>>>>
>>>>>>> +        movdqu  xmm13,XMMWORD[((160-128))+rdi]
>>>>>>>
>>>>>>> +        movdqu  xmm14,XMMWORD[((192-128))+rdi]
>>>>>>>
>>>>>>> +        movdqu  xmm15,XMMWORD[((224-128))+rdi]
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[$L$pbswap]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$oop:
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm9
>>>>>>>
>>>>>>> +        movd    xmm5,DWORD[r8]
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[r9]
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[r10]
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +DB      102,15,56,0,238
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((-128))+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm14
>>>>>>>
>>>>>>> +        pand    xmm3,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm4,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm15,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm15,xmm7
>>>>>>>
>>>>>>> +        movd    xmm5,DWORD[4+r8]
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[4+r9]
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[4+r10]
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[4+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>
>>>>>>> +DB      102,15,56,0,238
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((-96))+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm13
>>>>>>>
>>>>>>> +        pand    xmm4,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm8
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm7
>>>>>>>
>>>>>>> +        movd    xmm5,DWORD[8+r8]
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[8+r9]
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[8+r10]
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[8+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +DB      102,15,56,0,238
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((-64))+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm12
>>>>>>>
>>>>>>> +        pand    xmm3,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm15
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm4,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm7
>>>>>>>
>>>>>>> +        movd    xmm5,DWORD[12+r8]
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[12+r9]
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[12+r10]
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[12+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,0,238
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((-32))+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm11
>>>>>>>
>>>>>>> +        pand    xmm4,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm7
>>>>>>>
>>>>>>> +        movd    xmm5,DWORD[16+r8]
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[16+r9]
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[16+r10]
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[16+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,238
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm4,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm11,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm15,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>
>>>>>>> +        movd    xmm5,DWORD[20+r8]
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[20+r9]
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[20+r10]
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[20+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>>
>>>>>>> +DB      102,15,56,0,238
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[32+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm9
>>>>>>>
>>>>>>> +        pand    xmm4,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm7
>>>>>>>
>>>>>>> +        movd    xmm5,DWORD[24+r8]
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[24+r9]
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[24+r10]
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[24+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +DB      102,15,56,0,238
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[64+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm8
>>>>>>>
>>>>>>> +        pand    xmm3,xmm15
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm4,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm7
>>>>>>>
>>>>>>> +        movd    xmm5,DWORD[28+r8]
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[28+r9]
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[28+r10]
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[28+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>>
>>>>>>> +DB      102,15,56,0,238
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[96+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm15
>>>>>>>
>>>>>>> +        pand    xmm4,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm7
>>>>>>>
>>>>>>> +        lea     rbp,[256+rbp]
>>>>>>>
>>>>>>> +        movd    xmm5,DWORD[32+r8]
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[32+r9]
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[32+r10]
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[32+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +DB      102,15,56,0,238
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(128-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((-128))+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm14
>>>>>>>
>>>>>>> +        pand    xmm3,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm4,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm15,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm15,xmm7
>>>>>>>
>>>>>>> +        movd    xmm5,DWORD[36+r8]
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[36+r9]
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[36+r10]
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[36+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>
>>>>>>> +DB      102,15,56,0,238
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(144-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((-96))+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm13
>>>>>>>
>>>>>>> +        pand    xmm4,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm8
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm7
>>>>>>>
>>>>>>> +        movd    xmm5,DWORD[40+r8]
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[40+r9]
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[40+r10]
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[40+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +DB      102,15,56,0,238
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(160-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((-64))+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm12
>>>>>>>
>>>>>>> +        pand    xmm3,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm15
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm4,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm7
>>>>>>>
>>>>>>> +        movd    xmm5,DWORD[44+r8]
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[44+r9]
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[44+r10]
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[44+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>>
>>>>>>> +DB      102,15,56,0,238
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(176-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((-32))+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm11
>>>>>>>
>>>>>>> +        pand    xmm4,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm7
>>>>>>>
>>>>>>> +        movd    xmm5,DWORD[48+r8]
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[48+r9]
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[48+r10]
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[48+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>>
>>>>>>> +DB      102,15,56,0,238
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(192-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm4,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm11,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm15,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>
>>>>>>> +        movd    xmm5,DWORD[52+r8]
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[52+r9]
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[52+r10]
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[52+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>>
>>>>>>> +DB      102,15,56,0,238
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(208-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[32+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm9
>>>>>>>
>>>>>>> +        pand    xmm4,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm7
>>>>>>>
>>>>>>> +        movd    xmm5,DWORD[56+r8]
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[56+r9]
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[56+r10]
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[56+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +DB      102,15,56,0,238
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(224-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[64+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm8
>>>>>>>
>>>>>>> +        pand    xmm3,xmm15
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm4,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm7
>>>>>>>
>>>>>>> +        movd    xmm5,DWORD[60+r8]
>>>>>>>
>>>>>>> +        lea     r8,[64+r8]
>>>>>>>
>>>>>>> +        movd    xmm0,DWORD[60+r9]
>>>>>>>
>>>>>>> +        lea     r9,[64+r9]
>>>>>>>
>>>>>>> +        movd    xmm1,DWORD[60+r10]
>>>>>>>
>>>>>>> +        lea     r10,[64+r10]
>>>>>>>
>>>>>>> +        movd    xmm2,DWORD[60+r11]
>>>>>>>
>>>>>>> +        lea     r11,[64+r11]
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>>
>>>>>>> +DB      102,15,56,0,238
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(240-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[96+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm13
>>>>>>>
>>>>>>> +        prefetcht0      [63+r8]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm15
>>>>>>>
>>>>>>> +        pand    xmm4,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        prefetcht0      [63+r9]
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        prefetcht0      [63+r10]
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        prefetcht0      [63+r11]
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm7
>>>>>>>
>>>>>>> +        lea     rbp,[256+rbp]
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[((0-128))+rax]
>>>>>>>
>>>>>>> +        mov     ecx,3
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_16_xx
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$oop_16_xx:
>>>>>>>
>>>>>>> +        movdqa  xmm6,XMMWORD[((16-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((144-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>>
>>>>>>> +        psrld   xmm7,3
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,7
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((224-128))+rax]
>>>>>>>
>>>>>>> +        pslld   xmm2,14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm1,18-7
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,25-14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm0,10
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm3,17
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm1,13
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm3,19-17
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        pslld   xmm1,15-13
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((-128))+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm14
>>>>>>>
>>>>>>> +        pand    xmm3,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm4,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm15,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm15,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm5,XMMWORD[((32-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm6,XMMWORD[((160-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>>
>>>>>>> +        psrld   xmm7,3
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,7
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((240-128))+rax]
>>>>>>>
>>>>>>> +        pslld   xmm2,14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm1,18-7
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,25-14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm0,10
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm4,17
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm1,13
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm4,19-17
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        pslld   xmm1,15-13
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm6
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm6,XMMWORD[((-96))+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm13
>>>>>>>
>>>>>>> +        pand    xmm4,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm8
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm6,XMMWORD[((48-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((176-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>>
>>>>>>> +        psrld   xmm7,3
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,7
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((0-128))+rax]
>>>>>>>
>>>>>>> +        pslld   xmm2,14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm1,18-7
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,25-14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm0,10
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm3,17
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm1,13
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm3,19-17
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        pslld   xmm1,15-13
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((-64))+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm12
>>>>>>>
>>>>>>> +        pand    xmm3,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm15
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm4,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm5,XMMWORD[((64-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm6,XMMWORD[((192-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>>
>>>>>>> +        psrld   xmm7,3
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,7
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((16-128))+rax]
>>>>>>>
>>>>>>> +        pslld   xmm2,14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm1,18-7
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,25-14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm0,10
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm4,17
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm1,13
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm4,19-17
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        pslld   xmm1,15-13
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm6
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm6,XMMWORD[((-32))+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm11
>>>>>>>
>>>>>>> +        pand    xmm4,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm6
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm6,XMMWORD[((80-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((208-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>>
>>>>>>> +        psrld   xmm7,3
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,7
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((32-128))+rax]
>>>>>>>
>>>>>>> +        pslld   xmm2,14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm1,18-7
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,25-14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm0,10
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm3,17
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm1,13
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm3,19-17
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        pslld   xmm1,15-13
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm4,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm11,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm15,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm5,XMMWORD[((96-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm6,XMMWORD[((224-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>>
>>>>>>> +        psrld   xmm7,3
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,7
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((48-128))+rax]
>>>>>>>
>>>>>>> +        pslld   xmm2,14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm1,18-7
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,25-14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm0,10
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm4,17
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm1,13
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm4,19-17
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        pslld   xmm1,15-13
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm6
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm6,XMMWORD[32+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm9
>>>>>>>
>>>>>>> +        pand    xmm4,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm6,XMMWORD[((112-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((240-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>>
>>>>>>> +        psrld   xmm7,3
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,7
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((64-128))+rax]
>>>>>>>
>>>>>>> +        pslld   xmm2,14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm1,18-7
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,25-14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm0,10
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm3,17
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm1,13
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm3,19-17
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        pslld   xmm1,15-13
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[64+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm8
>>>>>>>
>>>>>>> +        pand    xmm3,xmm15
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm4,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm5,XMMWORD[((128-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm6,XMMWORD[((0-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>>
>>>>>>> +        psrld   xmm7,3
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,7
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((80-128))+rax]
>>>>>>>
>>>>>>> +        pslld   xmm2,14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm1,18-7
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,25-14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm0,10
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm4,17
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm1,13
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm4,19-17
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        pslld   xmm1,15-13
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm6
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm6,XMMWORD[96+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm15
>>>>>>>
>>>>>>> +        pand    xmm4,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm7
>>>>>>>
>>>>>>> +        lea     rbp,[256+rbp]
>>>>>>>
>>>>>>> +        movdqa  xmm6,XMMWORD[((144-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((16-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>>
>>>>>>> +        psrld   xmm7,3
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,7
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((96-128))+rax]
>>>>>>>
>>>>>>> +        pslld   xmm2,14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm1,18-7
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,25-14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm0,10
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm3,17
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm1,13
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm3,19-17
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        pslld   xmm1,15-13
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(128-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((-128))+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm14
>>>>>>>
>>>>>>> +        pand    xmm3,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm4,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm15,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm15,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm15,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm5,XMMWORD[((160-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm6,XMMWORD[((32-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>>
>>>>>>> +        psrld   xmm7,3
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,7
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((112-128))+rax]
>>>>>>>
>>>>>>> +        pslld   xmm2,14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm1,18-7
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,25-14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm0,10
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm4,17
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm1,13
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm4,19-17
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        pslld   xmm1,15-13
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(144-128)+rax],xmm6
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm6,XMMWORD[((-96))+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm13
>>>>>>>
>>>>>>> +        pand    xmm4,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm8
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm8
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm14,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm6,XMMWORD[((176-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((48-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>>
>>>>>>> +        psrld   xmm7,3
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,7
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((128-128))+rax]
>>>>>>>
>>>>>>> +        pslld   xmm2,14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm1,18-7
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,25-14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm0,10
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm3,17
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm1,13
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm3,19-17
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        pslld   xmm1,15-13
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(160-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((-64))+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm12
>>>>>>>
>>>>>>> +        pand    xmm3,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm15
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm4,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm13,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm13,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm5,XMMWORD[((192-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm6,XMMWORD[((64-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>>
>>>>>>> +        psrld   xmm7,3
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,7
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((144-128))+rax]
>>>>>>>
>>>>>>> +        pslld   xmm2,14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm1,18-7
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,25-14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm0,10
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm4,17
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm1,13
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm4,19-17
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        pslld   xmm1,15-13
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(176-128)+rax],xmm6
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm6,XMMWORD[((-32))+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm11
>>>>>>>
>>>>>>> +        pand    xmm4,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm12,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm12,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm6
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm6,XMMWORD[((208-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((80-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>>
>>>>>>> +        psrld   xmm7,3
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,7
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((160-128))+rax]
>>>>>>>
>>>>>>> +        pslld   xmm2,14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm1,18-7
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,25-14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm0,10
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm3,17
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm1,13
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm3,19-17
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        pslld   xmm1,15-13
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(192-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm4,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm11,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm11,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm15,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm5,XMMWORD[((224-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm6,XMMWORD[((96-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>>
>>>>>>> +        psrld   xmm7,3
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,7
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((176-128))+rax]
>>>>>>>
>>>>>>> +        pslld   xmm2,14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm1,18-7
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,25-14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm0,10
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm4,17
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm1,13
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm4,19-17
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        pslld   xmm1,15-13
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(208-128)+rax],xmm6
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm6,XMMWORD[32+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm15
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm9
>>>>>>>
>>>>>>> +        pand    xmm4,xmm8
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm12
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm10,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm6,XMMWORD[((240-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[((112-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>>
>>>>>>> +        psrld   xmm7,3
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,7
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((192-128))+rax]
>>>>>>>
>>>>>>> +        pslld   xmm2,14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm1,18-7
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,25-14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm0,10
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm3,17
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm1,13
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        psrld   xmm3,19-17
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        pslld   xmm1,15-13
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(224-128)+rax],xmm5
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm5,XMMWORD[64+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm14
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm8
>>>>>>>
>>>>>>> +        pand    xmm3,xmm15
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm4,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm9,xmm4
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm5
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm5
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm5,XMMWORD[((0-128))+rax]
>>>>>>>
>>>>>>> +        paddd   xmm6,XMMWORD[((128-128))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>>
>>>>>>> +        psrld   xmm7,3
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,7
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((208-128))+rax]
>>>>>>>
>>>>>>> +        pslld   xmm2,14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm1,18-7
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,25-14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        psrld   xmm0,10
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm4,17
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm1,13
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        psrld   xmm4,19-17
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        pslld   xmm1,15-13
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,6
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm2,7
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[(240-128)+rax],xmm6
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,11
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        pslld   xmm2,21-7
>>>>>>>
>>>>>>> +        paddd   xmm6,XMMWORD[96+rbp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm1,25-11
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>>
>>>>>>> +        pslld   xmm2,26-21
>>>>>>>
>>>>>>> +        pandn   xmm0,xmm15
>>>>>>>
>>>>>>> +        pand    xmm4,xmm14
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>>
>>>>>>> +        psrld   xmm1,2
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>>
>>>>>>> +        pslld   xmm2,10
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>
>>>>>>> +        pslld   xmm2,19-10
>>>>>>>
>>>>>>> +        pand    xmm3,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        psrld   xmm7,22-13
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>
>>>>>>> +        pslld   xmm2,30-19
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm7
>>>>>>>
>>>>>>> +        lea     rbp,[256+rbp]
>>>>>>>
>>>>>>> +        dec     ecx
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_16_xx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     ecx,1
>>>>>>>
>>>>>>> +        lea     rbp,[((K256+128))]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm7,XMMWORD[rbx]
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[rbx]
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>
>>>>>>> +        cmovge  r8,rbp
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[4+rbx]
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>
>>>>>>> +        cmovge  r9,rbp
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[8+rbx]
>>>>>>>
>>>>>>> +        pcmpgtd xmm6,xmm0
>>>>>>>
>>>>>>> +        cmovge  r10,rbp
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[12+rbx]
>>>>>>>
>>>>>>> +        paddd   xmm7,xmm6
>>>>>>>
>>>>>>> +        cmovge  r11,rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  xmm0,XMMWORD[((0-128))+rdi]
>>>>>>>
>>>>>>> +        pand    xmm8,xmm6
>>>>>>>
>>>>>>> +        movdqu  xmm1,XMMWORD[((32-128))+rdi]
>>>>>>>
>>>>>>> +        pand    xmm9,xmm6
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[((64-128))+rdi]
>>>>>>>
>>>>>>> +        pand    xmm10,xmm6
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[((96-128))+rdi]
>>>>>>>
>>>>>>> +        pand    xmm11,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm0
>>>>>>>
>>>>>>> +        movdqu  xmm0,XMMWORD[((128-128))+rdi]
>>>>>>>
>>>>>>> +        pand    xmm12,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm1
>>>>>>>
>>>>>>> +        movdqu  xmm1,XMMWORD[((160-128))+rdi]
>>>>>>>
>>>>>>> +        pand    xmm13,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm2
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[((192-128))+rdi]
>>>>>>>
>>>>>>> +        pand    xmm14,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm5
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[((224-128))+rdi]
>>>>>>>
>>>>>>> +        pand    xmm15,xmm6
>>>>>>>
>>>>>>> +        paddd   xmm12,xmm0
>>>>>>>
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[(0-128)+rdi],xmm8
>>>>>>>
>>>>>>> +        paddd   xmm14,xmm2
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[(32-128)+rdi],xmm9
>>>>>>>
>>>>>>> +        paddd   xmm15,xmm5
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[(64-128)+rdi],xmm10
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[(96-128)+rdi],xmm11
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[(128-128)+rdi],xmm12
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[(160-128)+rdi],xmm13
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[(192-128)+rdi],xmm14
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[(224-128)+rdi],xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[rbx],xmm7
>>>>>>>
>>>>>>> +        movdqa  xmm6,XMMWORD[$L$pbswap]
>>>>>>>
>>>>>>> +        dec     edx
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edx,DWORD[280+rsp]
>>>>>>>
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>
>>>>>>> +        lea     rsi,[64+rsi]
>>>>>>>
>>>>>>> +        dec     edx
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_grande
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$done:
>>>>>>>
>>>>>>> +        mov     rax,QWORD[272+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[((-184))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[((-168))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[((-152))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[((-136))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm10,XMMWORD[((-120))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm11,XMMWORD[((-104))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm12,XMMWORD[((-88))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm13,XMMWORD[((-72))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm14,XMMWORD[((-56))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm15,XMMWORD[((-40))+rax]
>>>>>>>
>>>>>>> +        mov     rbp,QWORD[((-16))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[((-8))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$epilogue:
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$SEH_end_sha256_multi_block:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +sha256_multi_block_shaext:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_sha256_multi_block_shaext:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +_shaext_shortcut:
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>>
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>>
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>>
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-120)+rax],xmm10
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-104)+rax],xmm11
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-88)+rax],xmm12
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-72)+rax],xmm13
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-56)+rax],xmm14
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-40)+rax],xmm15
>>>>>>>
>>>>>>> +        sub     rsp,288
>>>>>>>
>>>>>>> +        shl     edx,1
>>>>>>>
>>>>>>> +        and     rsp,-256
>>>>>>>
>>>>>>> +        lea     rdi,[128+rdi]
>>>>>>>
>>>>>>> +        mov     QWORD[272+rsp],rax
>>>>>>>
>>>>>>> +$L$body_shaext:
>>>>>>>
>>>>>>> +        lea     rbx,[256+rsp]
>>>>>>>
>>>>>>> +        lea     rbp,[((K256_shaext+128))]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$oop_grande_shaext:
>>>>>>>
>>>>>>> +        mov     DWORD[280+rsp],edx
>>>>>>>
>>>>>>> +        xor     edx,edx
>>>>>>>
>>>>>>> +        mov     r8,QWORD[rsi]
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[8+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        mov     DWORD[rbx],ecx
>>>>>>>
>>>>>>> +        cmovle  r8,rsp
>>>>>>>
>>>>>>> +        mov     r9,QWORD[16+rsi]
>>>>>>>
>>>>>>> +        mov     ecx,DWORD[24+rsi]
>>>>>>>
>>>>>>> +        cmp     ecx,edx
>>>>>>>
>>>>>>> +        cmovg   edx,ecx
>>>>>>>
>>>>>>> +        test    ecx,ecx
>>>>>>>
>>>>>>> +        mov     DWORD[4+rbx],ecx
>>>>>>>
>>>>>>> +        cmovle  r9,rsp
>>>>>>>
>>>>>>> +        test    edx,edx
>>>>>>>
>>>>>>> +        jz      NEAR $L$done_shaext
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movq    xmm12,QWORD[((0-128))+rdi]
>>>>>>>
>>>>>>> +        movq    xmm4,QWORD[((32-128))+rdi]
>>>>>>>
>>>>>>> +        movq    xmm13,QWORD[((64-128))+rdi]
>>>>>>>
>>>>>>> +        movq    xmm5,QWORD[((96-128))+rdi]
>>>>>>>
>>>>>>> +        movq    xmm8,QWORD[((128-128))+rdi]
>>>>>>>
>>>>>>> +        movq    xmm9,QWORD[((160-128))+rdi]
>>>>>>>
>>>>>>> +        movq    xmm10,QWORD[((192-128))+rdi]
>>>>>>>
>>>>>>> +        movq    xmm11,QWORD[((224-128))+rdi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        punpckldq       xmm12,xmm4
>>>>>>>
>>>>>>> +        punpckldq       xmm13,xmm5
>>>>>>>
>>>>>>> +        punpckldq       xmm8,xmm9
>>>>>>>
>>>>>>> +        punpckldq       xmm10,xmm11
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm14,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm15,xmm13
>>>>>>>
>>>>>>> +        punpcklqdq      xmm12,xmm8
>>>>>>>
>>>>>>> +        punpcklqdq      xmm13,xmm10
>>>>>>>
>>>>>>> +        punpckhqdq      xmm14,xmm8
>>>>>>>
>>>>>>> +        punpckhqdq      xmm15,xmm10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pshufd  xmm12,xmm12,27
>>>>>>>
>>>>>>> +        pshufd  xmm13,xmm13,27
>>>>>>>
>>>>>>> +        pshufd  xmm14,xmm14,27
>>>>>>>
>>>>>>> +        pshufd  xmm15,xmm15,27
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_shaext
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   32
>>>>>>>
>>>>>>> +$L$oop_shaext:
>>>>>>>
>>>>>>> +        movdqu  xmm4,XMMWORD[r8]
>>>>>>>
>>>>>>> +        movdqu  xmm8,XMMWORD[r9]
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[16+r8]
>>>>>>>
>>>>>>> +        movdqu  xmm9,XMMWORD[16+r9]
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[32+r8]
>>>>>>>
>>>>>>> +DB      102,15,56,0,227
>>>>>>>
>>>>>>> +        movdqu  xmm10,XMMWORD[32+r9]
>>>>>>>
>>>>>>> +DB      102,68,15,56,0,195
>>>>>>>
>>>>>>> +        movdqu  xmm7,XMMWORD[48+r8]
>>>>>>>
>>>>>>> +        lea     r8,[64+r8]
>>>>>>>
>>>>>>> +        movdqu  xmm11,XMMWORD[48+r9]
>>>>>>>
>>>>>>> +        lea     r9,[64+r9]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((0-128))+rbp]
>>>>>>>
>>>>>>> +DB      102,15,56,0,235
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((0-128))+rbp]
>>>>>>>
>>>>>>> +DB      102,68,15,56,0,203
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm8
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[80+rsp],xmm13
>>>>>>>
>>>>>>> +DB      69,15,56,203,236
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[112+rsp],xmm15
>>>>>>>
>>>>>>> +DB      69,15,56,203,254
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[64+rsp],xmm12
>>>>>>>
>>>>>>> +DB      69,15,56,203,229
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>
>>>>>>> +        pxor    xmm8,xmm14
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[96+rsp],xmm14
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((16-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm5
>>>>>>>
>>>>>>> +DB      102,15,56,0,243
>>>>>>>
>>>>>>> +DB      69,15,56,203,247
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((16-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm9
>>>>>>>
>>>>>>> +DB      69,15,56,203,236
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>
>>>>>>> +        prefetcht0      [127+r8]
>>>>>>>
>>>>>>> +DB      102,15,56,0,251
>>>>>>>
>>>>>>> +DB      102,68,15,56,0,211
>>>>>>>
>>>>>>> +        prefetcht0      [127+r9]
>>>>>>>
>>>>>>> +DB      69,15,56,203,254
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>
>>>>>>> +DB      102,68,15,56,0,219
>>>>>>>
>>>>>>> +DB      15,56,204,229
>>>>>>>
>>>>>>> +DB      69,15,56,203,229
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((32-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm6
>>>>>>>
>>>>>>> +DB      69,15,56,203,247
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((32-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm10
>>>>>>>
>>>>>>> +DB      69,15,56,203,236
>>>>>>>
>>>>>>> +DB      69,15,56,204,193
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm7
>>>>>>>
>>>>>>> +DB      69,15,56,203,254
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>
>>>>>>> +DB      102,15,58,15,222,4
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>>
>>>>>>> +DB      102,65,15,58,15,218,4
>>>>>>>
>>>>>>> +DB      15,56,204,238
>>>>>>>
>>>>>>> +DB      69,15,56,203,229
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((48-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm7
>>>>>>>
>>>>>>> +DB      69,15,56,203,247
>>>>>>>
>>>>>>> +DB      69,15,56,204,202
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((48-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm11
>>>>>>>
>>>>>>> +DB      15,56,205,231
>>>>>>>
>>>>>>> +DB      69,15,56,203,236
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm4
>>>>>>>
>>>>>>> +DB      102,15,58,15,223,4
>>>>>>>
>>>>>>> +DB      69,15,56,203,254
>>>>>>>
>>>>>>> +DB      69,15,56,205,195
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>>
>>>>>>> +DB      102,65,15,58,15,219,4
>>>>>>>
>>>>>>> +DB      15,56,204,247
>>>>>>>
>>>>>>> +DB      69,15,56,203,229
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((64-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm4
>>>>>>>
>>>>>>> +DB      69,15,56,203,247
>>>>>>>
>>>>>>> +DB      69,15,56,204,211
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((64-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm8
>>>>>>>
>>>>>>> +DB      15,56,205,236
>>>>>>>
>>>>>>> +DB      69,15,56,203,236
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm5
>>>>>>>
>>>>>>> +DB      102,15,58,15,220,4
>>>>>>>
>>>>>>> +DB      69,15,56,203,254
>>>>>>>
>>>>>>> +DB      69,15,56,205,200
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>>
>>>>>>> +DB      102,65,15,58,15,216,4
>>>>>>>
>>>>>>> +DB      15,56,204,252
>>>>>>>
>>>>>>> +DB      69,15,56,203,229
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((80-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm5
>>>>>>>
>>>>>>> +DB      69,15,56,203,247
>>>>>>>
>>>>>>> +DB      69,15,56,204,216
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((80-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm9
>>>>>>>
>>>>>>> +DB      15,56,205,245
>>>>>>>
>>>>>>> +DB      69,15,56,203,236
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm6
>>>>>>>
>>>>>>> +DB      102,15,58,15,221,4
>>>>>>>
>>>>>>> +DB      69,15,56,203,254
>>>>>>>
>>>>>>> +DB      69,15,56,205,209
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>
>>>>>>> +        paddd   xmm7,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>
>>>>>>> +DB      102,65,15,58,15,217,4
>>>>>>>
>>>>>>> +DB      15,56,204,229
>>>>>>>
>>>>>>> +DB      69,15,56,203,229
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((96-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm6
>>>>>>>
>>>>>>> +DB      69,15,56,203,247
>>>>>>>
>>>>>>> +DB      69,15,56,204,193
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((96-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm10
>>>>>>>
>>>>>>> +DB      15,56,205,254
>>>>>>>
>>>>>>> +DB      69,15,56,203,236
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm7
>>>>>>>
>>>>>>> +DB      102,15,58,15,222,4
>>>>>>>
>>>>>>> +DB      69,15,56,203,254
>>>>>>>
>>>>>>> +DB      69,15,56,205,218
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>>
>>>>>>> +DB      102,65,15,58,15,218,4
>>>>>>>
>>>>>>> +DB      15,56,204,238
>>>>>>>
>>>>>>> +DB      69,15,56,203,229
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((112-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm7
>>>>>>>
>>>>>>> +DB      69,15,56,203,247
>>>>>>>
>>>>>>> +DB      69,15,56,204,202
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((112-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm11
>>>>>>>
>>>>>>> +DB      15,56,205,231
>>>>>>>
>>>>>>> +DB      69,15,56,203,236
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm4
>>>>>>>
>>>>>>> +DB      102,15,58,15,223,4
>>>>>>>
>>>>>>> +DB      69,15,56,203,254
>>>>>>>
>>>>>>> +DB      69,15,56,205,195
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>>
>>>>>>> +DB      102,65,15,58,15,219,4
>>>>>>>
>>>>>>> +DB      15,56,204,247
>>>>>>>
>>>>>>> +DB      69,15,56,203,229
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((128-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm4
>>>>>>>
>>>>>>> +DB      69,15,56,203,247
>>>>>>>
>>>>>>> +DB      69,15,56,204,211
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((128-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm8
>>>>>>>
>>>>>>> +DB      15,56,205,236
>>>>>>>
>>>>>>> +DB      69,15,56,203,236
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm5
>>>>>>>
>>>>>>> +DB      102,15,58,15,220,4
>>>>>>>
>>>>>>> +DB      69,15,56,203,254
>>>>>>>
>>>>>>> +DB      69,15,56,205,200
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>>
>>>>>>> +DB      102,65,15,58,15,216,4
>>>>>>>
>>>>>>> +DB      15,56,204,252
>>>>>>>
>>>>>>> +DB      69,15,56,203,229
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((144-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm5
>>>>>>>
>>>>>>> +DB      69,15,56,203,247
>>>>>>>
>>>>>>> +DB      69,15,56,204,216
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((144-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm9
>>>>>>>
>>>>>>> +DB      15,56,205,245
>>>>>>>
>>>>>>> +DB      69,15,56,203,236
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm6
>>>>>>>
>>>>>>> +DB      102,15,58,15,221,4
>>>>>>>
>>>>>>> +DB      69,15,56,203,254
>>>>>>>
>>>>>>> +DB      69,15,56,205,209
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>
>>>>>>> +        paddd   xmm7,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>
>>>>>>> +DB      102,65,15,58,15,217,4
>>>>>>>
>>>>>>> +DB      15,56,204,229
>>>>>>>
>>>>>>> +DB      69,15,56,203,229
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((160-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm6
>>>>>>>
>>>>>>> +DB      69,15,56,203,247
>>>>>>>
>>>>>>> +DB      69,15,56,204,193
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((160-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm10
>>>>>>>
>>>>>>> +DB      15,56,205,254
>>>>>>>
>>>>>>> +DB      69,15,56,203,236
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm7
>>>>>>>
>>>>>>> +DB      102,15,58,15,222,4
>>>>>>>
>>>>>>> +DB      69,15,56,203,254
>>>>>>>
>>>>>>> +DB      69,15,56,205,218
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>>
>>>>>>> +DB      102,65,15,58,15,218,4
>>>>>>>
>>>>>>> +DB      15,56,204,238
>>>>>>>
>>>>>>> +DB      69,15,56,203,229
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((176-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm7
>>>>>>>
>>>>>>> +DB      69,15,56,203,247
>>>>>>>
>>>>>>> +DB      69,15,56,204,202
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((176-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm8,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm11
>>>>>>>
>>>>>>> +DB      15,56,205,231
>>>>>>>
>>>>>>> +DB      69,15,56,203,236
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm4
>>>>>>>
>>>>>>> +DB      102,15,58,15,223,4
>>>>>>>
>>>>>>> +DB      69,15,56,203,254
>>>>>>>
>>>>>>> +DB      69,15,56,205,195
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>>
>>>>>>> +DB      102,65,15,58,15,219,4
>>>>>>>
>>>>>>> +DB      15,56,204,247
>>>>>>>
>>>>>>> +DB      69,15,56,203,229
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((192-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm4
>>>>>>>
>>>>>>> +DB      69,15,56,203,247
>>>>>>>
>>>>>>> +DB      69,15,56,204,211
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((192-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm9,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm8
>>>>>>>
>>>>>>> +DB      15,56,205,236
>>>>>>>
>>>>>>> +DB      69,15,56,203,236
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm5
>>>>>>>
>>>>>>> +DB      102,15,58,15,220,4
>>>>>>>
>>>>>>> +DB      69,15,56,203,254
>>>>>>>
>>>>>>> +DB      69,15,56,205,200
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>>
>>>>>>> +DB      102,65,15,58,15,216,4
>>>>>>>
>>>>>>> +DB      15,56,204,252
>>>>>>>
>>>>>>> +DB      69,15,56,203,229
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((208-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm5
>>>>>>>
>>>>>>> +DB      69,15,56,203,247
>>>>>>>
>>>>>>> +DB      69,15,56,204,216
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((208-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm10,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm9
>>>>>>>
>>>>>>> +DB      15,56,205,245
>>>>>>>
>>>>>>> +DB      69,15,56,203,236
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm6
>>>>>>>
>>>>>>> +DB      102,15,58,15,221,4
>>>>>>>
>>>>>>> +DB      69,15,56,203,254
>>>>>>>
>>>>>>> +DB      69,15,56,205,209
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>
>>>>>>> +        paddd   xmm7,xmm3
>>>>>>>
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>
>>>>>>> +DB      102,65,15,58,15,217,4
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +DB      69,15,56,203,229
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((224-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm6
>>>>>>>
>>>>>>> +DB      69,15,56,203,247
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((224-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm10
>>>>>>>
>>>>>>> +DB      15,56,205,254
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +DB      69,15,56,203,236
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>
>>>>>>> +        mov     ecx,1
>>>>>>>
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>
>>>>>>> +DB      69,15,56,203,254
>>>>>>>
>>>>>>> +DB      69,15,56,205,218
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm1,XMMWORD[((240-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm7
>>>>>>>
>>>>>>> +        movq    xmm7,QWORD[rbx]
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +DB      69,15,56,203,229
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm2,XMMWORD[((240-128))+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm11
>>>>>>>
>>>>>>> +DB      69,15,56,203,247
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[rbx]
>>>>>>>
>>>>>>> +        cmovge  r8,rsp
>>>>>>>
>>>>>>> +        cmp     ecx,DWORD[4+rbx]
>>>>>>>
>>>>>>> +        cmovge  r9,rsp
>>>>>>>
>>>>>>> +        pshufd  xmm9,xmm7,0x00
>>>>>>>
>>>>>>> +DB      69,15,56,203,236
>>>>>>>
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>
>>>>>>> +        pshufd  xmm10,xmm7,0x55
>>>>>>>
>>>>>>> +        movdqa  xmm11,xmm7
>>>>>>>
>>>>>>> +DB      69,15,56,203,254
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>
>>>>>>> +        pcmpgtd xmm9,xmm6
>>>>>>>
>>>>>>> +        pcmpgtd xmm10,xmm6
>>>>>>>
>>>>>>> +DB      69,15,56,203,229
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>
>>>>>>> +        pcmpgtd xmm11,xmm6
>>>>>>>
>>>>>>> +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
>>>>>>>
>>>>>>> +DB      69,15,56,203,247
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pand    xmm13,xmm9
>>>>>>>
>>>>>>> +        pand    xmm15,xmm10
>>>>>>>
>>>>>>> +        pand    xmm12,xmm9
>>>>>>>
>>>>>>> +        pand    xmm14,xmm10
>>>>>>>
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm13,XMMWORD[80+rsp]
>>>>>>>
>>>>>>> +        paddd   xmm15,XMMWORD[112+rsp]
>>>>>>>
>>>>>>> +        paddd   xmm12,XMMWORD[64+rsp]
>>>>>>>
>>>>>>> +        paddd   xmm14,XMMWORD[96+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movq    QWORD[rbx],xmm11
>>>>>>>
>>>>>>> +        dec     edx
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_shaext
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edx,DWORD[280+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pshufd  xmm12,xmm12,27
>>>>>>>
>>>>>>> +        pshufd  xmm13,xmm13,27
>>>>>>>
>>>>>>> +        pshufd  xmm14,xmm14,27
>>>>>>>
>>>>>>> +        pshufd  xmm15,xmm15,27
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm12
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>
>>>>>>> +        punpckldq       xmm12,xmm14
>>>>>>>
>>>>>>> +        punpckhdq       xmm5,xmm14
>>>>>>>
>>>>>>> +        punpckldq       xmm13,xmm15
>>>>>>>
>>>>>>> +        punpckhdq       xmm6,xmm15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movq    QWORD[(0-128)+rdi],xmm12
>>>>>>>
>>>>>>> +        psrldq  xmm12,8
>>>>>>>
>>>>>>> +        movq    QWORD[(128-128)+rdi],xmm5
>>>>>>>
>>>>>>> +        psrldq  xmm5,8
>>>>>>>
>>>>>>> +        movq    QWORD[(32-128)+rdi],xmm12
>>>>>>>
>>>>>>> +        movq    QWORD[(160-128)+rdi],xmm5
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movq    QWORD[(64-128)+rdi],xmm13
>>>>>>>
>>>>>>> +        psrldq  xmm13,8
>>>>>>>
>>>>>>> +        movq    QWORD[(192-128)+rdi],xmm6
>>>>>>>
>>>>>>> +        psrldq  xmm6,8
>>>>>>>
>>>>>>> +        movq    QWORD[(96-128)+rdi],xmm13
>>>>>>>
>>>>>>> +        movq    QWORD[(224-128)+rdi],xmm6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rdi,[8+rdi]
>>>>>>>
>>>>>>> +        lea     rsi,[32+rsi]
>>>>>>>
>>>>>>> +        dec     edx
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_grande_shaext
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$done_shaext:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[((-184))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[((-168))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[((-152))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[((-136))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm10,XMMWORD[((-120))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm11,XMMWORD[((-104))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm12,XMMWORD[((-88))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm13,XMMWORD[((-72))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm14,XMMWORD[((-56))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm15,XMMWORD[((-40))+rax]
>>>>>>>
>>>>>>> +        mov     rbp,QWORD[((-16))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[((-8))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$epilogue_shaext:
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$SEH_end_sha256_multi_block_shaext:
>>>>>>>
>>>>>>> +ALIGN   256
>>>>>>>
>>>>>>> +K256:
>>>>>>>
>>>>>>> +        DD      1116352408,1116352408,1116352408,1116352408
>>>>>>>
>>>>>>> +        DD      1116352408,1116352408,1116352408,1116352408
>>>>>>>
>>>>>>> +        DD      1899447441,1899447441,1899447441,1899447441
>>>>>>>
>>>>>>> +        DD      1899447441,1899447441,1899447441,1899447441
>>>>>>>
>>>>>>> +        DD      3049323471,3049323471,3049323471,3049323471
>>>>>>>
>>>>>>> +        DD      3049323471,3049323471,3049323471,3049323471
>>>>>>>
>>>>>>> +        DD      3921009573,3921009573,3921009573,3921009573
>>>>>>>
>>>>>>> +        DD      3921009573,3921009573,3921009573,3921009573
>>>>>>>
>>>>>>> +        DD      961987163,961987163,961987163,961987163
>>>>>>>
>>>>>>> +        DD      961987163,961987163,961987163,961987163
>>>>>>>
>>>>>>> +        DD      1508970993,1508970993,1508970993,1508970993
>>>>>>>
>>>>>>> +        DD      1508970993,1508970993,1508970993,1508970993
>>>>>>>
>>>>>>> +        DD      2453635748,2453635748,2453635748,2453635748
>>>>>>>
>>>>>>> +        DD      2453635748,2453635748,2453635748,2453635748
>>>>>>>
>>>>>>> +        DD      2870763221,2870763221,2870763221,2870763221
>>>>>>>
>>>>>>> +        DD      2870763221,2870763221,2870763221,2870763221
>>>>>>>
>>>>>>> +        DD      3624381080,3624381080,3624381080,3624381080
>>>>>>>
>>>>>>> +        DD      3624381080,3624381080,3624381080,3624381080
>>>>>>>
>>>>>>> +        DD      310598401,310598401,310598401,310598401
>>>>>>>
>>>>>>> +        DD      310598401,310598401,310598401,310598401
>>>>>>>
>>>>>>> +        DD      607225278,607225278,607225278,607225278
>>>>>>>
>>>>>>> +        DD      607225278,607225278,607225278,607225278
>>>>>>>
>>>>>>> +        DD      1426881987,1426881987,1426881987,1426881987
>>>>>>>
>>>>>>> +        DD      1426881987,1426881987,1426881987,1426881987
>>>>>>>
>>>>>>> +        DD      1925078388,1925078388,1925078388,1925078388
>>>>>>>
>>>>>>> +        DD      1925078388,1925078388,1925078388,1925078388
>>>>>>>
>>>>>>> +        DD      2162078206,2162078206,2162078206,2162078206
>>>>>>>
>>>>>>> +        DD      2162078206,2162078206,2162078206,2162078206
>>>>>>>
>>>>>>> +        DD      2614888103,2614888103,2614888103,2614888103
>>>>>>>
>>>>>>> +        DD      2614888103,2614888103,2614888103,2614888103
>>>>>>>
>>>>>>> +        DD      3248222580,3248222580,3248222580,3248222580
>>>>>>>
>>>>>>> +        DD      3248222580,3248222580,3248222580,3248222580
>>>>>>>
>>>>>>> +        DD      3835390401,3835390401,3835390401,3835390401
>>>>>>>
>>>>>>> +        DD      3835390401,3835390401,3835390401,3835390401
>>>>>>>
>>>>>>> +        DD      4022224774,4022224774,4022224774,4022224774
>>>>>>>
>>>>>>> +        DD      4022224774,4022224774,4022224774,4022224774
>>>>>>>
>>>>>>> +        DD      264347078,264347078,264347078,264347078
>>>>>>>
>>>>>>> +        DD      264347078,264347078,264347078,264347078
>>>>>>>
>>>>>>> +        DD      604807628,604807628,604807628,604807628
>>>>>>>
>>>>>>> +        DD      604807628,604807628,604807628,604807628
>>>>>>>
>>>>>>> +        DD      770255983,770255983,770255983,770255983
>>>>>>>
>>>>>>> +        DD      770255983,770255983,770255983,770255983
>>>>>>>
>>>>>>> +        DD      1249150122,1249150122,1249150122,1249150122
>>>>>>>
>>>>>>> +        DD      1249150122,1249150122,1249150122,1249150122
>>>>>>>
>>>>>>> +        DD      1555081692,1555081692,1555081692,1555081692
>>>>>>>
>>>>>>> +        DD      1555081692,1555081692,1555081692,1555081692
>>>>>>>
>>>>>>> +        DD      1996064986,1996064986,1996064986,1996064986
>>>>>>>
>>>>>>> +        DD      1996064986,1996064986,1996064986,1996064986
>>>>>>>
>>>>>>> +        DD      2554220882,2554220882,2554220882,2554220882
>>>>>>>
>>>>>>> +        DD      2554220882,2554220882,2554220882,2554220882
>>>>>>>
>>>>>>> +        DD      2821834349,2821834349,2821834349,2821834349
>>>>>>>
>>>>>>> +        DD      2821834349,2821834349,2821834349,2821834349
>>>>>>>
>>>>>>> +        DD      2952996808,2952996808,2952996808,2952996808
>>>>>>>
>>>>>>> +        DD      2952996808,2952996808,2952996808,2952996808
>>>>>>>
>>>>>>> +        DD      3210313671,3210313671,3210313671,3210313671
>>>>>>>
>>>>>>> +        DD      3210313671,3210313671,3210313671,3210313671
>>>>>>>
>>>>>>> +        DD      3336571891,3336571891,3336571891,3336571891
>>>>>>>
>>>>>>> +        DD      3336571891,3336571891,3336571891,3336571891
>>>>>>>
>>>>>>> +        DD      3584528711,3584528711,3584528711,3584528711
>>>>>>>
>>>>>>> +        DD      3584528711,3584528711,3584528711,3584528711
>>>>>>>
>>>>>>> +        DD      113926993,113926993,113926993,113926993
>>>>>>>
>>>>>>> +        DD      113926993,113926993,113926993,113926993
>>>>>>>
>>>>>>> +        DD      338241895,338241895,338241895,338241895
>>>>>>>
>>>>>>> +        DD      338241895,338241895,338241895,338241895
>>>>>>>
>>>>>>> +        DD      666307205,666307205,666307205,666307205
>>>>>>>
>>>>>>> +        DD      666307205,666307205,666307205,666307205
>>>>>>>
>>>>>>> +        DD      773529912,773529912,773529912,773529912
>>>>>>>
>>>>>>> +        DD      773529912,773529912,773529912,773529912
>>>>>>>
>>>>>>> +        DD      1294757372,1294757372,1294757372,1294757372
>>>>>>>
>>>>>>> +        DD      1294757372,1294757372,1294757372,1294757372
>>>>>>>
>>>>>>> +        DD      1396182291,1396182291,1396182291,1396182291
>>>>>>>
>>>>>>> +        DD      1396182291,1396182291,1396182291,1396182291
>>>>>>>
>>>>>>> +        DD      1695183700,1695183700,1695183700,1695183700
>>>>>>>
>>>>>>> +        DD      1695183700,1695183700,1695183700,1695183700
>>>>>>>
>>>>>>> +        DD      1986661051,1986661051,1986661051,1986661051
>>>>>>>
>>>>>>> +        DD      1986661051,1986661051,1986661051,1986661051
>>>>>>>
>>>>>>> +        DD      2177026350,2177026350,2177026350,2177026350
>>>>>>>
>>>>>>> +        DD      2177026350,2177026350,2177026350,2177026350
>>>>>>>
>>>>>>> +        DD      2456956037,2456956037,2456956037,2456956037
>>>>>>>
>>>>>>> +        DD      2456956037,2456956037,2456956037,2456956037
>>>>>>>
>>>>>>> +        DD      2730485921,2730485921,2730485921,2730485921
>>>>>>>
>>>>>>> +        DD      2730485921,2730485921,2730485921,2730485921
>>>>>>>
>>>>>>> +        DD      2820302411,2820302411,2820302411,2820302411
>>>>>>>
>>>>>>> +        DD      2820302411,2820302411,2820302411,2820302411
>>>>>>>
>>>>>>> +        DD      3259730800,3259730800,3259730800,3259730800
>>>>>>>
>>>>>>> +        DD      3259730800,3259730800,3259730800,3259730800
>>>>>>>
>>>>>>> +        DD      3345764771,3345764771,3345764771,3345764771
>>>>>>>
>>>>>>> +        DD      3345764771,3345764771,3345764771,3345764771
>>>>>>>
>>>>>>> +        DD      3516065817,3516065817,3516065817,3516065817
>>>>>>>
>>>>>>> +        DD      3516065817,3516065817,3516065817,3516065817
>>>>>>>
>>>>>>> +        DD      3600352804,3600352804,3600352804,3600352804
>>>>>>>
>>>>>>> +        DD      3600352804,3600352804,3600352804,3600352804
>>>>>>>
>>>>>>> +        DD      4094571909,4094571909,4094571909,4094571909
>>>>>>>
>>>>>>> +        DD      4094571909,4094571909,4094571909,4094571909
>>>>>>>
>>>>>>> +        DD      275423344,275423344,275423344,275423344
>>>>>>>
>>>>>>> +        DD      275423344,275423344,275423344,275423344
>>>>>>>
>>>>>>> +        DD      430227734,430227734,430227734,430227734
>>>>>>>
>>>>>>> +        DD      430227734,430227734,430227734,430227734
>>>>>>>
>>>>>>> +        DD      506948616,506948616,506948616,506948616
>>>>>>>
>>>>>>> +        DD      506948616,506948616,506948616,506948616
>>>>>>>
>>>>>>> +        DD      659060556,659060556,659060556,659060556
>>>>>>>
>>>>>>> +        DD      659060556,659060556,659060556,659060556
>>>>>>>
>>>>>>> +        DD      883997877,883997877,883997877,883997877
>>>>>>>
>>>>>>> +        DD      883997877,883997877,883997877,883997877
>>>>>>>
>>>>>>> +        DD      958139571,958139571,958139571,958139571
>>>>>>>
>>>>>>> +        DD      958139571,958139571,958139571,958139571
>>>>>>>
>>>>>>> +        DD      1322822218,1322822218,1322822218,1322822218
>>>>>>>
>>>>>>> +        DD      1322822218,1322822218,1322822218,1322822218
>>>>>>>
>>>>>>> +        DD      1537002063,1537002063,1537002063,1537002063
>>>>>>>
>>>>>>> +        DD      1537002063,1537002063,1537002063,1537002063
>>>>>>>
>>>>>>> +        DD      1747873779,1747873779,1747873779,1747873779
>>>>>>>
>>>>>>> +        DD      1747873779,1747873779,1747873779,1747873779
>>>>>>>
>>>>>>> +        DD      1955562222,1955562222,1955562222,1955562222
>>>>>>>
>>>>>>> +        DD      1955562222,1955562222,1955562222,1955562222
>>>>>>>
>>>>>>> +        DD      2024104815,2024104815,2024104815,2024104815
>>>>>>>
>>>>>>> +        DD      2024104815,2024104815,2024104815,2024104815
>>>>>>>
>>>>>>> +        DD      2227730452,2227730452,2227730452,2227730452
>>>>>>>
>>>>>>> +        DD      2227730452,2227730452,2227730452,2227730452
>>>>>>>
>>>>>>> +        DD      2361852424,2361852424,2361852424,2361852424
>>>>>>>
>>>>>>> +        DD      2361852424,2361852424,2361852424,2361852424
>>>>>>>
>>>>>>> +        DD      2428436474,2428436474,2428436474,2428436474
>>>>>>>
>>>>>>> +        DD      2428436474,2428436474,2428436474,2428436474
>>>>>>>
>>>>>>> +        DD      2756734187,2756734187,2756734187,2756734187
>>>>>>>
>>>>>>> +        DD      2756734187,2756734187,2756734187,2756734187
>>>>>>>
>>>>>>> +        DD      3204031479,3204031479,3204031479,3204031479
>>>>>>>
>>>>>>> +        DD      3204031479,3204031479,3204031479,3204031479
>>>>>>>
>>>>>>> +        DD      3329325298,3329325298,3329325298,3329325298
>>>>>>>
>>>>>>> +        DD      3329325298,3329325298,3329325298,3329325298
>>>>>>>
>>>>>>> +$L$pbswap:
>>>>>>>
>>>>>>> +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
>>>>>>>
>>>>>>> +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
>>>>>>>
>>>>>>> +K256_shaext:
>>>>>>>
>>>>>>> +        DD      0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
>>>>>>>
>>>>>>> +        DD      0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
>>>>>>>
>>>>>>> +        DD      0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
>>>>>>>
>>>>>>> +        DD      0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
>>>>>>>
>>>>>>> +        DD      0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
>>>>>>>
>>>>>>> +        DD      0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
>>>>>>>
>>>>>>> +        DD      0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
>>>>>>>
>>>>>>> +        DD      0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
>>>>>>>
>>>>>>> +        DD      0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
>>>>>>>
>>>>>>> +        DD      0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
>>>>>>>
>>>>>>> +        DD      0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
>>>>>>>
>>>>>>> +        DD      0xd192e819,0xd6990624,0xf40e3585,0x106aa070
>>>>>>>
>>>>>>> +        DD      0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
>>>>>>>
>>>>>>> +        DD      0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
>>>>>>>
>>>>>>> +        DD      0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
>>>>>>>
>>>>>>> +        DD      0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
>>>>>>>
>>>>>>> +DB      83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111
>>>>>>>
>>>>>>> +DB      99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114
>>>>>>>
>>>>>>> +DB      32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71
>>>>>>>
>>>>>>> +DB      65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112
>>>>>>>
>>>>>>> +DB      101,110,115,115,108,46,111,114,103,62,0
>>>>>>>
>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +se_handler:
>>>>>>>
>>>>>>> +        push    rsi
>>>>>>>
>>>>>>> +        push    rdi
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +        pushfq
>>>>>>>
>>>>>>> +        sub     rsp,64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[272+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[((-8))+rax]
>>>>>>>
>>>>>>> +        mov     rbp,QWORD[((-16))+rax]
>>>>>>>
>>>>>>> +        mov     QWORD[144+r8],rbx
>>>>>>>
>>>>>>> +        mov     QWORD[160+r8],rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsi,[((-24-160))+rax]
>>>>>>>
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>
>>>>>>> +        mov     ecx,20
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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[40+r9]
>>>>>>>
>>>>>>> +        mov     rsi,r8
>>>>>>>
>>>>>>> +        mov     ecx,154
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,r9
>>>>>>>
>>>>>>> +        xor     rcx,rcx
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +        popfq
>>>>>>>
>>>>>>> +        pop     r15
>>>>>>>
>>>>>>> +        pop     r14
>>>>>>>
>>>>>>> +        pop     r13
>>>>>>>
>>>>>>> +        pop     r12
>>>>>>>
>>>>>>> +        pop     rbp
>>>>>>>
>>>>>>> +        pop     rbx
>>>>>>>
>>>>>>> +        pop     rdi
>>>>>>>
>>>>>>> +        pop     rsi
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +section .pdata rdata align=4
>>>>>>>
>>>>>>> +ALIGN   4
>>>>>>>
>>>>>>> +        DD      $L$SEH_begin_sha256_multi_block wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_end_sha256_multi_block wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_info_sha256_multi_block wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_begin_sha256_multi_block_shaext wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_end_sha256_multi_block_shaext wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_info_sha256_multi_block_shaext wrt ..imagebase
>>>>>>>
>>>>>>> +section .xdata rdata align=8
>>>>>>>
>>>>>>> +ALIGN   8
>>>>>>>
>>>>>>> +$L$SEH_info_sha256_multi_block:
>>>>>>>
>>>>>>> +DB      9,0,0,0
>>>>>>>
>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
>>>>>>>
>>>>>>> +$L$SEH_info_sha256_multi_block_shaext:
>>>>>>>
>>>>>>> +DB      9,0,0,0
>>>>>>>
>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
>>>>>>> wrt ..imagebase
>>>>>>>
>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
>>>>> x86_64.nasm
>>>>>>> b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..70e49862a3
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
>>> x86_64.nasm
>>>>>>> @@ -0,0 +1,3313 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>>
>>>>>>> +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>
>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>> copy
>>>>>>>
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +default rel
>>>>>>>
>>>>>>> +%define XMMWORD
>>>>>>>
>>>>>>> +%define YMMWORD
>>>>>>>
>>>>>>> +%define ZMMWORD
>>>>>>>
>>>>>>> +section .text code align=64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>
>>>>>>> +global  sha256_block_data_order
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +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:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r11,[OPENSSL_ia32cap_P]
>>>>>>>
>>>>>>> +        mov     r9d,DWORD[r11]
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>
>>>>>>> +        mov     r11d,DWORD[8+r11]
>>>>>>>
>>>>>>> +        test    r11d,536870912
>>>>>>>
>>>>>>> +        jnz     NEAR _shaext_shortcut
>>>>>>>
>>>>>>> +        test    r10d,512
>>>>>>>
>>>>>>> +        jnz     NEAR $L$ssse3_shortcut
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        shl     rdx,4
>>>>>>>
>>>>>>> +        sub     rsp,16*4+4*8
>>>>>>>
>>>>>>> +        lea     rdx,[rdx*4+rsi]
>>>>>>>
>>>>>>> +        and     rsp,-64
>>>>>>>
>>>>>>> +        mov     QWORD[((64+0))+rsp],rdi
>>>>>>>
>>>>>>> +        mov     QWORD[((64+8))+rsp],rsi
>>>>>>>
>>>>>>> +        mov     QWORD[((64+16))+rsp],rdx
>>>>>>>
>>>>>>> +        mov     QWORD[88+rsp],rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$prologue:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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:
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        lea     rbp,[K256]
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        mov     r12d,DWORD[rsi]
>>>>>>>
>>>>>>> +        mov     r13d,r8d
>>>>>>>
>>>>>>> +        mov     r14d,eax
>>>>>>>
>>>>>>> +        bswap   r12d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r15d,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r8d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r15d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,eax
>>>>>>>
>>>>>>> +        and     r15d,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,r11d
>>>>>>>
>>>>>>> +        xor     r15d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,r8d
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15d,eax
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15d,ebx
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     r11d,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r11d,edi
>>>>>>>
>>>>>>> +        add     edx,r12d
>>>>>>>
>>>>>>> +        add     r11d,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        add     r11d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,DWORD[4+rsi]
>>>>>>>
>>>>>>> +        mov     r13d,edx
>>>>>>>
>>>>>>> +        mov     r14d,r11d
>>>>>>>
>>>>>>> +        bswap   r12d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     edi,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,edx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     edi,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[4+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,r11d
>>>>>>>
>>>>>>> +        and     edi,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,r10d
>>>>>>>
>>>>>>> +        xor     edi,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,edx
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edi,r11d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     r10d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r10d,r15d
>>>>>>>
>>>>>>> +        add     ecx,r12d
>>>>>>>
>>>>>>> +        add     r10d,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        add     r10d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,DWORD[8+rsi]
>>>>>>>
>>>>>>> +        mov     r13d,ecx
>>>>>>>
>>>>>>> +        mov     r14d,r10d
>>>>>>>
>>>>>>> +        bswap   r12d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r15d,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,ecx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r15d,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[8+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,r10d
>>>>>>>
>>>>>>> +        and     r15d,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,r9d
>>>>>>>
>>>>>>> +        xor     r15d,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,ecx
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15d,r10d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15d,r11d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     r9d,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r9d,edi
>>>>>>>
>>>>>>> +        add     ebx,r12d
>>>>>>>
>>>>>>> +        add     r9d,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        add     r9d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,DWORD[12+rsi]
>>>>>>>
>>>>>>> +        mov     r13d,ebx
>>>>>>>
>>>>>>> +        mov     r14d,r9d
>>>>>>>
>>>>>>> +        bswap   r12d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,ebx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[12+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,r9d
>>>>>>>
>>>>>>> +        and     edi,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,r8d
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,ebx
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edi,r9d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edi,r10d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     r8d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r8d,r15d
>>>>>>>
>>>>>>> +        add     eax,r12d
>>>>>>>
>>>>>>> +        add     r8d,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>>
>>>>>>> +        add     r8d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,DWORD[16+rsi]
>>>>>>>
>>>>>>> +        mov     r13d,eax
>>>>>>>
>>>>>>> +        mov     r14d,r8d
>>>>>>>
>>>>>>> +        bswap   r12d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r15d,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,eax
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r15d,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[16+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,r8d
>>>>>>>
>>>>>>> +        and     r15d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,edx
>>>>>>>
>>>>>>> +        xor     r15d,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,eax
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15d,r8d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15d,r9d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     edx,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edx,edi
>>>>>>>
>>>>>>> +        add     r11d,r12d
>>>>>>>
>>>>>>> +        add     edx,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        add     edx,r14d
>>>>>>>
>>>>>>> +        mov     r12d,DWORD[20+rsi]
>>>>>>>
>>>>>>> +        mov     r13d,r11d
>>>>>>>
>>>>>>> +        mov     r14d,edx
>>>>>>>
>>>>>>> +        bswap   r12d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r11d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[20+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,edx
>>>>>>>
>>>>>>> +        and     edi,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,ecx
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,r11d
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edi,r8d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     ecx,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     ecx,r15d
>>>>>>>
>>>>>>> +        add     r10d,r12d
>>>>>>>
>>>>>>> +        add     ecx,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        add     ecx,r14d
>>>>>>>
>>>>>>> +        mov     r12d,DWORD[24+rsi]
>>>>>>>
>>>>>>> +        mov     r13d,r10d
>>>>>>>
>>>>>>> +        mov     r14d,ecx
>>>>>>>
>>>>>>> +        bswap   r12d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r15d,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r10d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r15d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[24+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,ecx
>>>>>>>
>>>>>>> +        and     r15d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,ebx
>>>>>>>
>>>>>>> +        xor     r15d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,r10d
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15d,ecx
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15d,edx
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     ebx,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     ebx,edi
>>>>>>>
>>>>>>> +        add     r9d,r12d
>>>>>>>
>>>>>>> +        add     ebx,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        add     ebx,r14d
>>>>>>>
>>>>>>> +        mov     r12d,DWORD[28+rsi]
>>>>>>>
>>>>>>> +        mov     r13d,r9d
>>>>>>>
>>>>>>> +        mov     r14d,ebx
>>>>>>>
>>>>>>> +        bswap   r12d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     edi,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r9d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     edi,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[28+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,ebx
>>>>>>>
>>>>>>> +        and     edi,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,eax
>>>>>>>
>>>>>>> +        xor     edi,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,r9d
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     eax,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     eax,r15d
>>>>>>>
>>>>>>> +        add     r8d,r12d
>>>>>>>
>>>>>>> +        add     eax,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>>
>>>>>>> +        add     eax,r14d
>>>>>>>
>>>>>>> +        mov     r12d,DWORD[32+rsi]
>>>>>>>
>>>>>>> +        mov     r13d,r8d
>>>>>>>
>>>>>>> +        mov     r14d,eax
>>>>>>>
>>>>>>> +        bswap   r12d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r15d,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r8d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r15d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[32+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,eax
>>>>>>>
>>>>>>> +        and     r15d,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,r11d
>>>>>>>
>>>>>>> +        xor     r15d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,r8d
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15d,eax
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15d,ebx
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     r11d,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r11d,edi
>>>>>>>
>>>>>>> +        add     edx,r12d
>>>>>>>
>>>>>>> +        add     r11d,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        add     r11d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,DWORD[36+rsi]
>>>>>>>
>>>>>>> +        mov     r13d,edx
>>>>>>>
>>>>>>> +        mov     r14d,r11d
>>>>>>>
>>>>>>> +        bswap   r12d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     edi,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,edx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     edi,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[36+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,r11d
>>>>>>>
>>>>>>> +        and     edi,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,r10d
>>>>>>>
>>>>>>> +        xor     edi,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,edx
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edi,r11d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     r10d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r10d,r15d
>>>>>>>
>>>>>>> +        add     ecx,r12d
>>>>>>>
>>>>>>> +        add     r10d,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        add     r10d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,DWORD[40+rsi]
>>>>>>>
>>>>>>> +        mov     r13d,ecx
>>>>>>>
>>>>>>> +        mov     r14d,r10d
>>>>>>>
>>>>>>> +        bswap   r12d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r15d,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,ecx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r15d,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[40+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,r10d
>>>>>>>
>>>>>>> +        and     r15d,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,r9d
>>>>>>>
>>>>>>> +        xor     r15d,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,ecx
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15d,r10d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15d,r11d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     r9d,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r9d,edi
>>>>>>>
>>>>>>> +        add     ebx,r12d
>>>>>>>
>>>>>>> +        add     r9d,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        add     r9d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,DWORD[44+rsi]
>>>>>>>
>>>>>>> +        mov     r13d,ebx
>>>>>>>
>>>>>>> +        mov     r14d,r9d
>>>>>>>
>>>>>>> +        bswap   r12d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,ebx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[44+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,r9d
>>>>>>>
>>>>>>> +        and     edi,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,r8d
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,ebx
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edi,r9d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edi,r10d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     r8d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r8d,r15d
>>>>>>>
>>>>>>> +        add     eax,r12d
>>>>>>>
>>>>>>> +        add     r8d,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>>
>>>>>>> +        add     r8d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,DWORD[48+rsi]
>>>>>>>
>>>>>>> +        mov     r13d,eax
>>>>>>>
>>>>>>> +        mov     r14d,r8d
>>>>>>>
>>>>>>> +        bswap   r12d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r15d,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,eax
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r15d,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[48+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,r8d
>>>>>>>
>>>>>>> +        and     r15d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,edx
>>>>>>>
>>>>>>> +        xor     r15d,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,eax
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15d,r8d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15d,r9d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     edx,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edx,edi
>>>>>>>
>>>>>>> +        add     r11d,r12d
>>>>>>>
>>>>>>> +        add     edx,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        add     edx,r14d
>>>>>>>
>>>>>>> +        mov     r12d,DWORD[52+rsi]
>>>>>>>
>>>>>>> +        mov     r13d,r11d
>>>>>>>
>>>>>>> +        mov     r14d,edx
>>>>>>>
>>>>>>> +        bswap   r12d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r11d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[52+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,edx
>>>>>>>
>>>>>>> +        and     edi,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,ecx
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,r11d
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edi,r8d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     ecx,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     ecx,r15d
>>>>>>>
>>>>>>> +        add     r10d,r12d
>>>>>>>
>>>>>>> +        add     ecx,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        add     ecx,r14d
>>>>>>>
>>>>>>> +        mov     r12d,DWORD[56+rsi]
>>>>>>>
>>>>>>> +        mov     r13d,r10d
>>>>>>>
>>>>>>> +        mov     r14d,ecx
>>>>>>>
>>>>>>> +        bswap   r12d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r15d,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r10d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r15d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[56+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,ecx
>>>>>>>
>>>>>>> +        and     r15d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,ebx
>>>>>>>
>>>>>>> +        xor     r15d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,r10d
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15d,ecx
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15d,edx
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     ebx,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     ebx,edi
>>>>>>>
>>>>>>> +        add     r9d,r12d
>>>>>>>
>>>>>>> +        add     ebx,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        add     ebx,r14d
>>>>>>>
>>>>>>> +        mov     r12d,DWORD[60+rsi]
>>>>>>>
>>>>>>> +        mov     r13d,r9d
>>>>>>>
>>>>>>> +        mov     r14d,ebx
>>>>>>>
>>>>>>> +        bswap   r12d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     edi,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r9d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     edi,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[60+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,ebx
>>>>>>>
>>>>>>> +        and     edi,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,eax
>>>>>>>
>>>>>>> +        xor     edi,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,r9d
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     eax,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     eax,r15d
>>>>>>>
>>>>>>> +        add     r8d,r12d
>>>>>>>
>>>>>>> +        add     eax,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$rounds_16_xx
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$rounds_16_xx:
>>>>>>>
>>>>>>> +        mov     r13d,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,DWORD[56+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12d,r13d
>>>>>>>
>>>>>>> +        ror     r13d,11
>>>>>>>
>>>>>>> +        add     eax,r14d
>>>>>>>
>>>>>>> +        mov     r14d,r15d
>>>>>>>
>>>>>>> +        ror     r15d,2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r12d
>>>>>>>
>>>>>>> +        shr     r12d,3
>>>>>>>
>>>>>>> +        ror     r13d,7
>>>>>>>
>>>>>>> +        xor     r15d,r14d
>>>>>>>
>>>>>>> +        shr     r14d,10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r15d,17
>>>>>>>
>>>>>>> +        xor     r12d,r13d
>>>>>>>
>>>>>>> +        xor     r15d,r14d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[36+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rsp]
>>>>>>>
>>>>>>> +        mov     r13d,r8d
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +        mov     r14d,eax
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r15d,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r8d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r15d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,eax
>>>>>>>
>>>>>>> +        and     r15d,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,r11d
>>>>>>>
>>>>>>> +        xor     r15d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,r8d
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15d,eax
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15d,ebx
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     r11d,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r11d,edi
>>>>>>>
>>>>>>> +        add     edx,r12d
>>>>>>>
>>>>>>> +        add     r11d,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        mov     r13d,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        mov     edi,DWORD[60+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12d,r13d
>>>>>>>
>>>>>>> +        ror     r13d,11
>>>>>>>
>>>>>>> +        add     r11d,r14d
>>>>>>>
>>>>>>> +        mov     r14d,edi
>>>>>>>
>>>>>>> +        ror     edi,2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r12d
>>>>>>>
>>>>>>> +        shr     r12d,3
>>>>>>>
>>>>>>> +        ror     r13d,7
>>>>>>>
>>>>>>> +        xor     edi,r14d
>>>>>>>
>>>>>>> +        shr     r14d,10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     edi,17
>>>>>>>
>>>>>>> +        xor     r12d,r13d
>>>>>>>
>>>>>>> +        xor     edi,r14d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[40+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12d,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        mov     r13d,edx
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +        mov     r14d,r11d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     edi,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,edx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     edi,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[4+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,r11d
>>>>>>>
>>>>>>> +        and     edi,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,r10d
>>>>>>>
>>>>>>> +        xor     edi,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,edx
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edi,r11d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     r10d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r10d,r15d
>>>>>>>
>>>>>>> +        add     ecx,r12d
>>>>>>>
>>>>>>> +        add     r10d,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        mov     r13d,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,DWORD[rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12d,r13d
>>>>>>>
>>>>>>> +        ror     r13d,11
>>>>>>>
>>>>>>> +        add     r10d,r14d
>>>>>>>
>>>>>>> +        mov     r14d,r15d
>>>>>>>
>>>>>>> +        ror     r15d,2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r12d
>>>>>>>
>>>>>>> +        shr     r12d,3
>>>>>>>
>>>>>>> +        ror     r13d,7
>>>>>>>
>>>>>>> +        xor     r15d,r14d
>>>>>>>
>>>>>>> +        shr     r14d,10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r15d,17
>>>>>>>
>>>>>>> +        xor     r12d,r13d
>>>>>>>
>>>>>>> +        xor     r15d,r14d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[44+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12d,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        mov     r13d,ecx
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +        mov     r14d,r10d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r15d,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,ecx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r15d,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[8+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,r10d
>>>>>>>
>>>>>>> +        and     r15d,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,r9d
>>>>>>>
>>>>>>> +        xor     r15d,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,ecx
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15d,r10d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15d,r11d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     r9d,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r9d,edi
>>>>>>>
>>>>>>> +        add     ebx,r12d
>>>>>>>
>>>>>>> +        add     r9d,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        mov     r13d,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        mov     edi,DWORD[4+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12d,r13d
>>>>>>>
>>>>>>> +        ror     r13d,11
>>>>>>>
>>>>>>> +        add     r9d,r14d
>>>>>>>
>>>>>>> +        mov     r14d,edi
>>>>>>>
>>>>>>> +        ror     edi,2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r12d
>>>>>>>
>>>>>>> +        shr     r12d,3
>>>>>>>
>>>>>>> +        ror     r13d,7
>>>>>>>
>>>>>>> +        xor     edi,r14d
>>>>>>>
>>>>>>> +        shr     r14d,10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     edi,17
>>>>>>>
>>>>>>> +        xor     r12d,r13d
>>>>>>>
>>>>>>> +        xor     edi,r14d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[48+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12d,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        mov     r13d,ebx
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +        mov     r14d,r9d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,ebx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[12+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,r9d
>>>>>>>
>>>>>>> +        and     edi,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,r8d
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,ebx
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edi,r9d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edi,r10d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     r8d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r8d,r15d
>>>>>>>
>>>>>>> +        add     eax,r12d
>>>>>>>
>>>>>>> +        add     r8d,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>>
>>>>>>> +        mov     r13d,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,DWORD[8+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12d,r13d
>>>>>>>
>>>>>>> +        ror     r13d,11
>>>>>>>
>>>>>>> +        add     r8d,r14d
>>>>>>>
>>>>>>> +        mov     r14d,r15d
>>>>>>>
>>>>>>> +        ror     r15d,2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r12d
>>>>>>>
>>>>>>> +        shr     r12d,3
>>>>>>>
>>>>>>> +        ror     r13d,7
>>>>>>>
>>>>>>> +        xor     r15d,r14d
>>>>>>>
>>>>>>> +        shr     r14d,10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r15d,17
>>>>>>>
>>>>>>> +        xor     r12d,r13d
>>>>>>>
>>>>>>> +        xor     r15d,r14d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[52+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12d,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        mov     r13d,eax
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +        mov     r14d,r8d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r15d,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,eax
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r15d,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[16+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,r8d
>>>>>>>
>>>>>>> +        and     r15d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,edx
>>>>>>>
>>>>>>> +        xor     r15d,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,eax
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15d,r8d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15d,r9d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     edx,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edx,edi
>>>>>>>
>>>>>>> +        add     r11d,r12d
>>>>>>>
>>>>>>> +        add     edx,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        mov     r13d,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        mov     edi,DWORD[12+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12d,r13d
>>>>>>>
>>>>>>> +        ror     r13d,11
>>>>>>>
>>>>>>> +        add     edx,r14d
>>>>>>>
>>>>>>> +        mov     r14d,edi
>>>>>>>
>>>>>>> +        ror     edi,2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r12d
>>>>>>>
>>>>>>> +        shr     r12d,3
>>>>>>>
>>>>>>> +        ror     r13d,7
>>>>>>>
>>>>>>> +        xor     edi,r14d
>>>>>>>
>>>>>>> +        shr     r14d,10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     edi,17
>>>>>>>
>>>>>>> +        xor     r12d,r13d
>>>>>>>
>>>>>>> +        xor     edi,r14d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[56+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12d,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        mov     r13d,r11d
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +        mov     r14d,edx
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r11d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[20+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,edx
>>>>>>>
>>>>>>> +        and     edi,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,ecx
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,r11d
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edi,r8d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     ecx,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     ecx,r15d
>>>>>>>
>>>>>>> +        add     r10d,r12d
>>>>>>>
>>>>>>> +        add     ecx,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        mov     r13d,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,DWORD[16+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12d,r13d
>>>>>>>
>>>>>>> +        ror     r13d,11
>>>>>>>
>>>>>>> +        add     ecx,r14d
>>>>>>>
>>>>>>> +        mov     r14d,r15d
>>>>>>>
>>>>>>> +        ror     r15d,2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r12d
>>>>>>>
>>>>>>> +        shr     r12d,3
>>>>>>>
>>>>>>> +        ror     r13d,7
>>>>>>>
>>>>>>> +        xor     r15d,r14d
>>>>>>>
>>>>>>> +        shr     r14d,10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r15d,17
>>>>>>>
>>>>>>> +        xor     r12d,r13d
>>>>>>>
>>>>>>> +        xor     r15d,r14d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[60+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12d,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        mov     r13d,r10d
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +        mov     r14d,ecx
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r15d,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r10d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r15d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[24+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,ecx
>>>>>>>
>>>>>>> +        and     r15d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,ebx
>>>>>>>
>>>>>>> +        xor     r15d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,r10d
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15d,ecx
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15d,edx
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     ebx,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     ebx,edi
>>>>>>>
>>>>>>> +        add     r9d,r12d
>>>>>>>
>>>>>>> +        add     ebx,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        mov     r13d,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        mov     edi,DWORD[20+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12d,r13d
>>>>>>>
>>>>>>> +        ror     r13d,11
>>>>>>>
>>>>>>> +        add     ebx,r14d
>>>>>>>
>>>>>>> +        mov     r14d,edi
>>>>>>>
>>>>>>> +        ror     edi,2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r12d
>>>>>>>
>>>>>>> +        shr     r12d,3
>>>>>>>
>>>>>>> +        ror     r13d,7
>>>>>>>
>>>>>>> +        xor     edi,r14d
>>>>>>>
>>>>>>> +        shr     r14d,10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     edi,17
>>>>>>>
>>>>>>> +        xor     r12d,r13d
>>>>>>>
>>>>>>> +        xor     edi,r14d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12d,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        mov     r13d,r9d
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +        mov     r14d,ebx
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     edi,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r9d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     edi,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[28+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,ebx
>>>>>>>
>>>>>>> +        and     edi,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,eax
>>>>>>>
>>>>>>> +        xor     edi,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,r9d
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     eax,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     eax,r15d
>>>>>>>
>>>>>>> +        add     r8d,r12d
>>>>>>>
>>>>>>> +        add     eax,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>>
>>>>>>> +        mov     r13d,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,DWORD[24+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12d,r13d
>>>>>>>
>>>>>>> +        ror     r13d,11
>>>>>>>
>>>>>>> +        add     eax,r14d
>>>>>>>
>>>>>>> +        mov     r14d,r15d
>>>>>>>
>>>>>>> +        ror     r15d,2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r12d
>>>>>>>
>>>>>>> +        shr     r12d,3
>>>>>>>
>>>>>>> +        ror     r13d,7
>>>>>>>
>>>>>>> +        xor     r15d,r14d
>>>>>>>
>>>>>>> +        shr     r14d,10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r15d,17
>>>>>>>
>>>>>>> +        xor     r12d,r13d
>>>>>>>
>>>>>>> +        xor     r15d,r14d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[4+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12d,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        mov     r13d,r8d
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +        mov     r14d,eax
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r15d,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r8d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r15d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[32+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,eax
>>>>>>>
>>>>>>> +        and     r15d,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,r11d
>>>>>>>
>>>>>>> +        xor     r15d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,r8d
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15d,eax
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15d,ebx
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     r11d,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r11d,edi
>>>>>>>
>>>>>>> +        add     edx,r12d
>>>>>>>
>>>>>>> +        add     r11d,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        mov     r13d,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        mov     edi,DWORD[28+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12d,r13d
>>>>>>>
>>>>>>> +        ror     r13d,11
>>>>>>>
>>>>>>> +        add     r11d,r14d
>>>>>>>
>>>>>>> +        mov     r14d,edi
>>>>>>>
>>>>>>> +        ror     edi,2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r12d
>>>>>>>
>>>>>>> +        shr     r12d,3
>>>>>>>
>>>>>>> +        ror     r13d,7
>>>>>>>
>>>>>>> +        xor     edi,r14d
>>>>>>>
>>>>>>> +        shr     r14d,10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     edi,17
>>>>>>>
>>>>>>> +        xor     r12d,r13d
>>>>>>>
>>>>>>> +        xor     edi,r14d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[8+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12d,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        mov     r13d,edx
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +        mov     r14d,r11d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     edi,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,edx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     edi,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[36+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,r11d
>>>>>>>
>>>>>>> +        and     edi,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,r10d
>>>>>>>
>>>>>>> +        xor     edi,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,edx
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edi,r11d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     r10d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r10d,r15d
>>>>>>>
>>>>>>> +        add     ecx,r12d
>>>>>>>
>>>>>>> +        add     r10d,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        mov     r13d,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,DWORD[32+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12d,r13d
>>>>>>>
>>>>>>> +        ror     r13d,11
>>>>>>>
>>>>>>> +        add     r10d,r14d
>>>>>>>
>>>>>>> +        mov     r14d,r15d
>>>>>>>
>>>>>>> +        ror     r15d,2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r12d
>>>>>>>
>>>>>>> +        shr     r12d,3
>>>>>>>
>>>>>>> +        ror     r13d,7
>>>>>>>
>>>>>>> +        xor     r15d,r14d
>>>>>>>
>>>>>>> +        shr     r14d,10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r15d,17
>>>>>>>
>>>>>>> +        xor     r12d,r13d
>>>>>>>
>>>>>>> +        xor     r15d,r14d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[12+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12d,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        mov     r13d,ecx
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +        mov     r14d,r10d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r15d,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,ecx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r15d,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[40+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,r10d
>>>>>>>
>>>>>>> +        and     r15d,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,r9d
>>>>>>>
>>>>>>> +        xor     r15d,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,ecx
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15d,r10d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15d,r11d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     r9d,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r9d,edi
>>>>>>>
>>>>>>> +        add     ebx,r12d
>>>>>>>
>>>>>>> +        add     r9d,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        mov     r13d,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        mov     edi,DWORD[36+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12d,r13d
>>>>>>>
>>>>>>> +        ror     r13d,11
>>>>>>>
>>>>>>> +        add     r9d,r14d
>>>>>>>
>>>>>>> +        mov     r14d,edi
>>>>>>>
>>>>>>> +        ror     edi,2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r12d
>>>>>>>
>>>>>>> +        shr     r12d,3
>>>>>>>
>>>>>>> +        ror     r13d,7
>>>>>>>
>>>>>>> +        xor     edi,r14d
>>>>>>>
>>>>>>> +        shr     r14d,10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     edi,17
>>>>>>>
>>>>>>> +        xor     r12d,r13d
>>>>>>>
>>>>>>> +        xor     edi,r14d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[16+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12d,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        mov     r13d,ebx
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +        mov     r14d,r9d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     edi,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,ebx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[44+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,r9d
>>>>>>>
>>>>>>> +        and     edi,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,r8d
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,ebx
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edi,r9d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edi,r10d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     r8d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r8d,r15d
>>>>>>>
>>>>>>> +        add     eax,r12d
>>>>>>>
>>>>>>> +        add     r8d,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>>
>>>>>>> +        mov     r13d,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,DWORD[40+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12d,r13d
>>>>>>>
>>>>>>> +        ror     r13d,11
>>>>>>>
>>>>>>> +        add     r8d,r14d
>>>>>>>
>>>>>>> +        mov     r14d,r15d
>>>>>>>
>>>>>>> +        ror     r15d,2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r12d
>>>>>>>
>>>>>>> +        shr     r12d,3
>>>>>>>
>>>>>>> +        ror     r13d,7
>>>>>>>
>>>>>>> +        xor     r15d,r14d
>>>>>>>
>>>>>>> +        shr     r14d,10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r15d,17
>>>>>>>
>>>>>>> +        xor     r12d,r13d
>>>>>>>
>>>>>>> +        xor     r15d,r14d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[20+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12d,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        mov     r13d,eax
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +        mov     r14d,r8d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r15d,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,eax
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r15d,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[48+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,r8d
>>>>>>>
>>>>>>> +        and     r15d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,edx
>>>>>>>
>>>>>>> +        xor     r15d,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,eax
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15d,r8d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15d,r9d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     edx,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edx,edi
>>>>>>>
>>>>>>> +        add     r11d,r12d
>>>>>>>
>>>>>>> +        add     edx,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        mov     r13d,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        mov     edi,DWORD[44+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12d,r13d
>>>>>>>
>>>>>>> +        ror     r13d,11
>>>>>>>
>>>>>>> +        add     edx,r14d
>>>>>>>
>>>>>>> +        mov     r14d,edi
>>>>>>>
>>>>>>> +        ror     edi,2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r12d
>>>>>>>
>>>>>>> +        shr     r12d,3
>>>>>>>
>>>>>>> +        ror     r13d,7
>>>>>>>
>>>>>>> +        xor     edi,r14d
>>>>>>>
>>>>>>> +        shr     r14d,10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     edi,17
>>>>>>>
>>>>>>> +        xor     r12d,r13d
>>>>>>>
>>>>>>> +        xor     edi,r14d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[24+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12d,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        mov     r13d,r11d
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +        mov     r14d,edx
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     edi,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r11d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[52+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,edx
>>>>>>>
>>>>>>> +        and     edi,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,ecx
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,r11d
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edi,r8d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     ecx,r8d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     ecx,r15d
>>>>>>>
>>>>>>> +        add     r10d,r12d
>>>>>>>
>>>>>>> +        add     ecx,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        mov     r13d,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,DWORD[48+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12d,r13d
>>>>>>>
>>>>>>> +        ror     r13d,11
>>>>>>>
>>>>>>> +        add     ecx,r14d
>>>>>>>
>>>>>>> +        mov     r14d,r15d
>>>>>>>
>>>>>>> +        ror     r15d,2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r12d
>>>>>>>
>>>>>>> +        shr     r12d,3
>>>>>>>
>>>>>>> +        ror     r13d,7
>>>>>>>
>>>>>>> +        xor     r15d,r14d
>>>>>>>
>>>>>>> +        shr     r14d,10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r15d,17
>>>>>>>
>>>>>>> +        xor     r12d,r13d
>>>>>>>
>>>>>>> +        xor     r15d,r14d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[28+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12d,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        mov     r13d,r10d
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +        mov     r14d,ecx
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r15d,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r10d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r15d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[56+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,ecx
>>>>>>>
>>>>>>> +        and     r15d,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,ebx
>>>>>>>
>>>>>>> +        xor     r15d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,r10d
>>>>>>>
>>>>>>> +        add     r12d,r15d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15d,ecx
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15d,edx
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     ebx,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     ebx,edi
>>>>>>>
>>>>>>> +        add     r9d,r12d
>>>>>>>
>>>>>>> +        add     ebx,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>
>>>>>>> +        mov     r13d,DWORD[rsp]
>>>>>>>
>>>>>>> +        mov     edi,DWORD[52+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12d,r13d
>>>>>>>
>>>>>>> +        ror     r13d,11
>>>>>>>
>>>>>>> +        add     ebx,r14d
>>>>>>>
>>>>>>> +        mov     r14d,edi
>>>>>>>
>>>>>>> +        ror     edi,2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r12d
>>>>>>>
>>>>>>> +        shr     r12d,3
>>>>>>>
>>>>>>> +        ror     r13d,7
>>>>>>>
>>>>>>> +        xor     edi,r14d
>>>>>>>
>>>>>>> +        shr     r14d,10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     edi,17
>>>>>>>
>>>>>>> +        xor     r12d,r13d
>>>>>>>
>>>>>>> +        xor     edi,r14d
>>>>>>>
>>>>>>> +        add     r12d,DWORD[32+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12d,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        mov     r13d,r9d
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +        mov     r14d,ebx
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     edi,r10d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13d,r9d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     edi,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     DWORD[60+rsp],r12d
>>>>>>>
>>>>>>> +        xor     r14d,ebx
>>>>>>>
>>>>>>> +        and     edi,r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        add     r12d,eax
>>>>>>>
>>>>>>> +        xor     edi,r11d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r13d,r9d
>>>>>>>
>>>>>>> +        add     r12d,edi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14d,ebx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        mov     eax,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r12d,r13d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     eax,r15d
>>>>>>>
>>>>>>> +        add     r8d,r12d
>>>>>>>
>>>>>>> +        add     eax,r12d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>>
>>>>>>> +        cmp     BYTE[3+rbp],0
>>>>>>>
>>>>>>> +        jnz     NEAR $L$rounds_16_xx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[((64+0))+rsp]
>>>>>>>
>>>>>>> +        add     eax,r14d
>>>>>>>
>>>>>>> +        lea     rsi,[64+rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[((64+16))+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[88+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$epilogue:
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$SEH_end_sha256_block_data_order:
>>>>>>>
>>>>>>> +ALIGN   64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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      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
>>>>>>>
>>>>>>> +DB      32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
>>>>>>>
>>>>>>> +DB      111,114,103,62,0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   64
>>>>>>>
>>>>>>> +sha256_block_data_order_shaext:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_sha256_block_data_order_shaext:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +_shaext_shortcut:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsp,[((-88))+rsp]
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-8-80)+rax],xmm6
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-8-64)+rax],xmm7
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-8-48)+rax],xmm8
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-8-32)+rax],xmm9
>>>>>>>
>>>>>>> +        movaps  XMMWORD[(-8-16)+rax],xmm10
>>>>>>>
>>>>>>> +$L$prologue_shaext:
>>>>>>>
>>>>>>> +        lea     rcx,[((K256+128))]
>>>>>>>
>>>>>>> +        movdqu  xmm1,XMMWORD[rdi]
>>>>>>>
>>>>>>> +        movdqu  xmm2,XMMWORD[16+rdi]
>>>>>>>
>>>>>>> +        movdqa  xmm7,XMMWORD[((512-128))+rcx]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm1,0x1b
>>>>>>>
>>>>>>> +        pshufd  xmm1,xmm1,0xb1
>>>>>>>
>>>>>>> +        pshufd  xmm2,xmm2,0x1b
>>>>>>>
>>>>>>> +        movdqa  xmm8,xmm7
>>>>>>>
>>>>>>> +DB      102,15,58,15,202,8
>>>>>>>
>>>>>>> +        punpcklqdq      xmm2,xmm0
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_shaext
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$oop_shaext:
>>>>>>>
>>>>>>> +        movdqu  xmm3,XMMWORD[rsi]
>>>>>>>
>>>>>>> +        movdqu  xmm4,XMMWORD[16+rsi]
>>>>>>>
>>>>>>> +        movdqu  xmm5,XMMWORD[32+rsi]
>>>>>>>
>>>>>>> +DB      102,15,56,0,223
>>>>>>>
>>>>>>> +        movdqu  xmm6,XMMWORD[48+rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((0-128))+rcx]
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm3
>>>>>>>
>>>>>>> +DB      102,15,56,0,231
>>>>>>>
>>>>>>> +        movdqa  xmm10,xmm2
>>>>>>>
>>>>>>> +DB      15,56,203,209
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +        movdqa  xmm9,xmm1
>>>>>>>
>>>>>>> +DB      15,56,203,202
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((32-128))+rcx]
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm4
>>>>>>>
>>>>>>> +DB      102,15,56,0,239
>>>>>>>
>>>>>>> +DB      15,56,203,209
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>
>>>>>>> +        lea     rsi,[64+rsi]
>>>>>>>
>>>>>>> +DB      15,56,204,220
>>>>>>>
>>>>>>> +DB      15,56,203,202
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((64-128))+rcx]
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm5
>>>>>>>
>>>>>>> +DB      102,15,56,0,247
>>>>>>>
>>>>>>> +DB      15,56,203,209
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>
>>>>>>> +DB      102,15,58,15,253,4
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm7
>>>>>>>
>>>>>>> +DB      15,56,204,229
>>>>>>>
>>>>>>> +DB      15,56,203,202
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((96-128))+rcx]
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm6
>>>>>>>
>>>>>>> +DB      15,56,205,222
>>>>>>>
>>>>>>> +DB      15,56,203,209
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm3
>>>>>>>
>>>>>>> +DB      102,15,58,15,254,4
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm7
>>>>>>>
>>>>>>> +DB      15,56,204,238
>>>>>>>
>>>>>>> +DB      15,56,203,202
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((128-128))+rcx]
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm3
>>>>>>>
>>>>>>> +DB      15,56,205,227
>>>>>>>
>>>>>>> +DB      15,56,203,209
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm4
>>>>>>>
>>>>>>> +DB      102,15,58,15,251,4
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +DB      15,56,204,243
>>>>>>>
>>>>>>> +DB      15,56,203,202
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((160-128))+rcx]
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm4
>>>>>>>
>>>>>>> +DB      15,56,205,236
>>>>>>>
>>>>>>> +DB      15,56,203,209
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>
>>>>>>> +DB      102,15,58,15,252,4
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +DB      15,56,204,220
>>>>>>>
>>>>>>> +DB      15,56,203,202
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((192-128))+rcx]
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm5
>>>>>>>
>>>>>>> +DB      15,56,205,245
>>>>>>>
>>>>>>> +DB      15,56,203,209
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>
>>>>>>> +DB      102,15,58,15,253,4
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm7
>>>>>>>
>>>>>>> +DB      15,56,204,229
>>>>>>>
>>>>>>> +DB      15,56,203,202
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((224-128))+rcx]
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm6
>>>>>>>
>>>>>>> +DB      15,56,205,222
>>>>>>>
>>>>>>> +DB      15,56,203,209
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm3
>>>>>>>
>>>>>>> +DB      102,15,58,15,254,4
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm7
>>>>>>>
>>>>>>> +DB      15,56,204,238
>>>>>>>
>>>>>>> +DB      15,56,203,202
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((256-128))+rcx]
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm3
>>>>>>>
>>>>>>> +DB      15,56,205,227
>>>>>>>
>>>>>>> +DB      15,56,203,209
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm4
>>>>>>>
>>>>>>> +DB      102,15,58,15,251,4
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +DB      15,56,204,243
>>>>>>>
>>>>>>> +DB      15,56,203,202
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((288-128))+rcx]
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm4
>>>>>>>
>>>>>>> +DB      15,56,205,236
>>>>>>>
>>>>>>> +DB      15,56,203,209
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>
>>>>>>> +DB      102,15,58,15,252,4
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +DB      15,56,204,220
>>>>>>>
>>>>>>> +DB      15,56,203,202
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((320-128))+rcx]
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm5
>>>>>>>
>>>>>>> +DB      15,56,205,245
>>>>>>>
>>>>>>> +DB      15,56,203,209
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>
>>>>>>> +DB      102,15,58,15,253,4
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm7
>>>>>>>
>>>>>>> +DB      15,56,204,229
>>>>>>>
>>>>>>> +DB      15,56,203,202
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((352-128))+rcx]
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm6
>>>>>>>
>>>>>>> +DB      15,56,205,222
>>>>>>>
>>>>>>> +DB      15,56,203,209
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm3
>>>>>>>
>>>>>>> +DB      102,15,58,15,254,4
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm7
>>>>>>>
>>>>>>> +DB      15,56,204,238
>>>>>>>
>>>>>>> +DB      15,56,203,202
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((384-128))+rcx]
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm3
>>>>>>>
>>>>>>> +DB      15,56,205,227
>>>>>>>
>>>>>>> +DB      15,56,203,209
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm4
>>>>>>>
>>>>>>> +DB      102,15,58,15,251,4
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>
>>>>>>> +DB      15,56,204,243
>>>>>>>
>>>>>>> +DB      15,56,203,202
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((416-128))+rcx]
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm4
>>>>>>>
>>>>>>> +DB      15,56,205,236
>>>>>>>
>>>>>>> +DB      15,56,203,209
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>
>>>>>>> +DB      102,15,58,15,252,4
>>>>>>>
>>>>>>> +DB      15,56,203,202
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((448-128))+rcx]
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm5
>>>>>>>
>>>>>>> +DB      15,56,203,209
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>
>>>>>>> +DB      15,56,205,245
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>>
>>>>>>> +DB      15,56,203,202
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqa  xmm0,XMMWORD[((480-128))+rcx]
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm6
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +DB      15,56,203,209
>>>>>>>
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>
>>>>>>> +        dec     rdx
>>>>>>>
>>>>>>> +        nop
>>>>>>>
>>>>>>> +DB      15,56,203,202
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm10
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm9
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_shaext
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        pshufd  xmm2,xmm2,0xb1
>>>>>>>
>>>>>>> +        pshufd  xmm7,xmm1,0x1b
>>>>>>>
>>>>>>> +        pshufd  xmm1,xmm1,0xb1
>>>>>>>
>>>>>>> +        punpckhqdq      xmm1,xmm2
>>>>>>>
>>>>>>> +DB      102,15,58,15,215,8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[rdi],xmm1
>>>>>>>
>>>>>>> +        movdqu  XMMWORD[16+rdi],xmm2
>>>>>>>
>>>>>>> +        movaps  xmm6,XMMWORD[((-8-80))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm7,XMMWORD[((-8-64))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm8,XMMWORD[((-8-48))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm9,XMMWORD[((-8-32))+rax]
>>>>>>>
>>>>>>> +        movaps  xmm10,XMMWORD[((-8-16))+rax]
>>>>>>>
>>>>>>> +        mov     rsp,rax
>>>>>>>
>>>>>>> +$L$epilogue_shaext:
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$SEH_end_sha256_block_data_order_shaext:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   64
>>>>>>>
>>>>>>> +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:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$ssse3_shortcut:
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        shl     rdx,4
>>>>>>>
>>>>>>> +        sub     rsp,160
>>>>>>>
>>>>>>> +        lea     rdx,[rdx*4+rsi]
>>>>>>>
>>>>>>> +        and     rsp,-64
>>>>>>>
>>>>>>> +        mov     QWORD[((64+0))+rsp],rdi
>>>>>>>
>>>>>>> +        mov     QWORD[((64+8))+rsp],rsi
>>>>>>>
>>>>>>> +        mov     QWORD[((64+16))+rsp],rdx
>>>>>>>
>>>>>>> +        mov     QWORD[88+rsp],rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[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_ssse3
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$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[48+rsi]
>>>>>>>
>>>>>>> +        lea     rbp,[K256]
>>>>>>>
>>>>>>> +DB      102,15,56,0,207
>>>>>>>
>>>>>>> +        movdqa  xmm4,XMMWORD[rbp]
>>>>>>>
>>>>>>> +        movdqa  xmm5,XMMWORD[32+rbp]
>>>>>>>
>>>>>>> +DB      102,15,56,0,215
>>>>>>>
>>>>>>> +        paddd   xmm4,xmm0
>>>>>>>
>>>>>>> +        movdqa  xmm6,XMMWORD[64+rbp]
>>>>>>>
>>>>>>> +DB      102,15,56,0,223
>>>>>>>
>>>>>>> +        movdqa  xmm7,XMMWORD[96+rbp]
>>>>>>>
>>>>>>> +        paddd   xmm5,xmm1
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm2
>>>>>>>
>>>>>>> +        paddd   xmm7,xmm3
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[rsp],xmm4
>>>>>>>
>>>>>>> +        mov     r14d,eax
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm5
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm6
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm7
>>>>>>>
>>>>>>> +        mov     r13d,r8d
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ssse3_00_47
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ssse3_00_47:
>>>>>>>
>>>>>>> +        sub     rbp,-128
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm1
>>>>>>>
>>>>>>> +        mov     eax,r14d
>>>>>>>
>>>>>>> +        mov     r12d,r9d
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm3
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,r8d
>>>>>>>
>>>>>>> +        xor     r12d,r10d
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,eax
>>>>>>>
>>>>>>> +DB      102,15,58,15,224,4
>>>>>>>
>>>>>>> +        and     r12d,r8d
>>>>>>>
>>>>>>> +        xor     r13d,r8d
>>>>>>>
>>>>>>> +DB      102,15,58,15,250,4
>>>>>>>
>>>>>>> +        add     r11d,DWORD[rsp]
>>>>>>>
>>>>>>> +        mov     r15d,eax
>>>>>>>
>>>>>>> +        xor     r12d,r10d
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>
>>>>>>> +        xor     r15d,ebx
>>>>>>>
>>>>>>> +        add     r11d,r12d
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm4
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        psrld   xmm4,3
>>>>>>>
>>>>>>> +        xor     r14d,eax
>>>>>>>
>>>>>>> +        add     r11d,r13d
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm7
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     edx,r11d
>>>>>>>
>>>>>>> +        psrld   xmm6,7
>>>>>>>
>>>>>>> +        add     r11d,edi
>>>>>>>
>>>>>>> +        mov     r13d,edx
>>>>>>>
>>>>>>> +        pshufd  xmm7,xmm3,250
>>>>>>>
>>>>>>> +        add     r14d,r11d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        pslld   xmm5,14
>>>>>>>
>>>>>>> +        mov     r11d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,r8d
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,edx
>>>>>>>
>>>>>>> +        xor     r12d,r9d
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        psrld   xmm6,11
>>>>>>>
>>>>>>> +        xor     r14d,r11d
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>
>>>>>>> +        and     r12d,edx
>>>>>>>
>>>>>>> +        xor     r13d,edx
>>>>>>>
>>>>>>> +        pslld   xmm5,11
>>>>>>>
>>>>>>> +        add     r10d,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        mov     edi,r11d
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +        xor     r12d,r9d
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        add     r10d,r12d
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        xor     r14d,r11d
>>>>>>>
>>>>>>> +        psrld   xmm7,10
>>>>>>>
>>>>>>> +        add     r10d,r13d
>>>>>>>
>>>>>>> +        xor     r15d,eax
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm4
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     ecx,r10d
>>>>>>>
>>>>>>> +        psrlq   xmm6,17
>>>>>>>
>>>>>>> +        add     r10d,r15d
>>>>>>>
>>>>>>> +        mov     r13d,ecx
>>>>>>>
>>>>>>> +        add     r14d,r10d
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r10d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,edx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        psrlq   xmm6,2
>>>>>>>
>>>>>>> +        xor     r13d,ecx
>>>>>>>
>>>>>>> +        xor     r12d,r8d
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,r10d
>>>>>>>
>>>>>>> +        and     r12d,ecx
>>>>>>>
>>>>>>> +        pshufd  xmm7,xmm7,128
>>>>>>>
>>>>>>> +        xor     r13d,ecx
>>>>>>>
>>>>>>> +        add     r9d,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,r10d
>>>>>>>
>>>>>>> +        psrldq  xmm7,8
>>>>>>>
>>>>>>> +        xor     r12d,r8d
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r15d,r11d
>>>>>>>
>>>>>>> +        add     r9d,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm7
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        xor     r14d,r10d
>>>>>>>
>>>>>>> +        add     r9d,r13d
>>>>>>>
>>>>>>> +        pshufd  xmm7,xmm0,80
>>>>>>>
>>>>>>> +        xor     edi,r11d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     ebx,r9d
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>
>>>>>>> +        add     r9d,edi
>>>>>>>
>>>>>>> +        mov     r13d,ebx
>>>>>>>
>>>>>>> +        psrld   xmm7,10
>>>>>>>
>>>>>>> +        add     r14d,r9d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        psrlq   xmm6,17
>>>>>>>
>>>>>>> +        mov     r9d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,ecx
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,ebx
>>>>>>>
>>>>>>> +        xor     r12d,edx
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,r9d
>>>>>>>
>>>>>>> +        psrlq   xmm6,2
>>>>>>>
>>>>>>> +        and     r12d,ebx
>>>>>>>
>>>>>>> +        xor     r13d,ebx
>>>>>>>
>>>>>>> +        add     r8d,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>
>>>>>>> +        mov     edi,r9d
>>>>>>>
>>>>>>> +        xor     r12d,edx
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        pshufd  xmm7,xmm7,8
>>>>>>>
>>>>>>> +        xor     edi,r10d
>>>>>>>
>>>>>>> +        add     r8d,r12d
>>>>>>>
>>>>>>> +        movdqa  xmm6,XMMWORD[rbp]
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        pslldq  xmm7,8
>>>>>>>
>>>>>>> +        xor     r14d,r9d
>>>>>>>
>>>>>>> +        add     r8d,r13d
>>>>>>>
>>>>>>> +        xor     r15d,r10d
>>>>>>>
>>>>>>> +        paddd   xmm0,xmm7
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     eax,r8d
>>>>>>>
>>>>>>> +        add     r8d,r15d
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>
>>>>>>> +        mov     r13d,eax
>>>>>>>
>>>>>>> +        add     r14d,r8d
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[rsp],xmm6
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm2
>>>>>>>
>>>>>>> +        mov     r8d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,ebx
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm0
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,eax
>>>>>>>
>>>>>>> +        xor     r12d,ecx
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,r8d
>>>>>>>
>>>>>>> +DB      102,15,58,15,225,4
>>>>>>>
>>>>>>> +        and     r12d,eax
>>>>>>>
>>>>>>> +        xor     r13d,eax
>>>>>>>
>>>>>>> +DB      102,15,58,15,251,4
>>>>>>>
>>>>>>> +        add     edx,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,r8d
>>>>>>>
>>>>>>> +        xor     r12d,ecx
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>
>>>>>>> +        xor     r15d,r9d
>>>>>>>
>>>>>>> +        add     edx,r12d
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm4
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        psrld   xmm4,3
>>>>>>>
>>>>>>> +        xor     r14d,r8d
>>>>>>>
>>>>>>> +        add     edx,r13d
>>>>>>>
>>>>>>> +        xor     edi,r9d
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm7
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r11d,edx
>>>>>>>
>>>>>>> +        psrld   xmm6,7
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        mov     r13d,r11d
>>>>>>>
>>>>>>> +        pshufd  xmm7,xmm0,250
>>>>>>>
>>>>>>> +        add     r14d,edx
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        pslld   xmm5,14
>>>>>>>
>>>>>>> +        mov     edx,r14d
>>>>>>>
>>>>>>> +        mov     r12d,eax
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,r11d
>>>>>>>
>>>>>>> +        xor     r12d,ebx
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        psrld   xmm6,11
>>>>>>>
>>>>>>> +        xor     r14d,edx
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>
>>>>>>> +        and     r12d,r11d
>>>>>>>
>>>>>>> +        xor     r13d,r11d
>>>>>>>
>>>>>>> +        pslld   xmm5,11
>>>>>>>
>>>>>>> +        add     ecx,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +        xor     r12d,ebx
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>
>>>>>>> +        xor     edi,r8d
>>>>>>>
>>>>>>> +        add     ecx,r12d
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        xor     r14d,edx
>>>>>>>
>>>>>>> +        psrld   xmm7,10
>>>>>>>
>>>>>>> +        add     ecx,r13d
>>>>>>>
>>>>>>> +        xor     r15d,r8d
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm4
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r10d,ecx
>>>>>>>
>>>>>>> +        psrlq   xmm6,17
>>>>>>>
>>>>>>> +        add     ecx,r15d
>>>>>>>
>>>>>>> +        mov     r13d,r10d
>>>>>>>
>>>>>>> +        add     r14d,ecx
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     ecx,r14d
>>>>>>>
>>>>>>> +        mov     r12d,r11d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        psrlq   xmm6,2
>>>>>>>
>>>>>>> +        xor     r13d,r10d
>>>>>>>
>>>>>>> +        xor     r12d,eax
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,ecx
>>>>>>>
>>>>>>> +        and     r12d,r10d
>>>>>>>
>>>>>>> +        pshufd  xmm7,xmm7,128
>>>>>>>
>>>>>>> +        xor     r13d,r10d
>>>>>>>
>>>>>>> +        add     ebx,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,ecx
>>>>>>>
>>>>>>> +        psrldq  xmm7,8
>>>>>>>
>>>>>>> +        xor     r12d,eax
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r15d,edx
>>>>>>>
>>>>>>> +        add     ebx,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm7
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        xor     r14d,ecx
>>>>>>>
>>>>>>> +        add     ebx,r13d
>>>>>>>
>>>>>>> +        pshufd  xmm7,xmm1,80
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r9d,ebx
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        mov     r13d,r9d
>>>>>>>
>>>>>>> +        psrld   xmm7,10
>>>>>>>
>>>>>>> +        add     r14d,ebx
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        psrlq   xmm6,17
>>>>>>>
>>>>>>> +        mov     ebx,r14d
>>>>>>>
>>>>>>> +        mov     r12d,r10d
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,r9d
>>>>>>>
>>>>>>> +        xor     r12d,r11d
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,ebx
>>>>>>>
>>>>>>> +        psrlq   xmm6,2
>>>>>>>
>>>>>>> +        and     r12d,r9d
>>>>>>>
>>>>>>> +        xor     r13d,r9d
>>>>>>>
>>>>>>> +        add     eax,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        xor     r12d,r11d
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        pshufd  xmm7,xmm7,8
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        add     eax,r12d
>>>>>>>
>>>>>>> +        movdqa  xmm6,XMMWORD[32+rbp]
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        pslldq  xmm7,8
>>>>>>>
>>>>>>> +        xor     r14d,ebx
>>>>>>>
>>>>>>> +        add     eax,r13d
>>>>>>>
>>>>>>> +        xor     r15d,ecx
>>>>>>>
>>>>>>> +        paddd   xmm1,xmm7
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r8d,eax
>>>>>>>
>>>>>>> +        add     eax,r15d
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm1
>>>>>>>
>>>>>>> +        mov     r13d,r8d
>>>>>>>
>>>>>>> +        add     r14d,eax
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm6
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm3
>>>>>>>
>>>>>>> +        mov     eax,r14d
>>>>>>>
>>>>>>> +        mov     r12d,r9d
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm1
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,r8d
>>>>>>>
>>>>>>> +        xor     r12d,r10d
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,eax
>>>>>>>
>>>>>>> +DB      102,15,58,15,226,4
>>>>>>>
>>>>>>> +        and     r12d,r8d
>>>>>>>
>>>>>>> +        xor     r13d,r8d
>>>>>>>
>>>>>>> +DB      102,15,58,15,248,4
>>>>>>>
>>>>>>> +        add     r11d,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,eax
>>>>>>>
>>>>>>> +        xor     r12d,r10d
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>
>>>>>>> +        xor     r15d,ebx
>>>>>>>
>>>>>>> +        add     r11d,r12d
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm4
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        psrld   xmm4,3
>>>>>>>
>>>>>>> +        xor     r14d,eax
>>>>>>>
>>>>>>> +        add     r11d,r13d
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm7
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     edx,r11d
>>>>>>>
>>>>>>> +        psrld   xmm6,7
>>>>>>>
>>>>>>> +        add     r11d,edi
>>>>>>>
>>>>>>> +        mov     r13d,edx
>>>>>>>
>>>>>>> +        pshufd  xmm7,xmm1,250
>>>>>>>
>>>>>>> +        add     r14d,r11d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        pslld   xmm5,14
>>>>>>>
>>>>>>> +        mov     r11d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,r8d
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,edx
>>>>>>>
>>>>>>> +        xor     r12d,r9d
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        psrld   xmm6,11
>>>>>>>
>>>>>>> +        xor     r14d,r11d
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>
>>>>>>> +        and     r12d,edx
>>>>>>>
>>>>>>> +        xor     r13d,edx
>>>>>>>
>>>>>>> +        pslld   xmm5,11
>>>>>>>
>>>>>>> +        add     r10d,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        mov     edi,r11d
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +        xor     r12d,r9d
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        add     r10d,r12d
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        xor     r14d,r11d
>>>>>>>
>>>>>>> +        psrld   xmm7,10
>>>>>>>
>>>>>>> +        add     r10d,r13d
>>>>>>>
>>>>>>> +        xor     r15d,eax
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm4
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     ecx,r10d
>>>>>>>
>>>>>>> +        psrlq   xmm6,17
>>>>>>>
>>>>>>> +        add     r10d,r15d
>>>>>>>
>>>>>>> +        mov     r13d,ecx
>>>>>>>
>>>>>>> +        add     r14d,r10d
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r10d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,edx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        psrlq   xmm6,2
>>>>>>>
>>>>>>> +        xor     r13d,ecx
>>>>>>>
>>>>>>> +        xor     r12d,r8d
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,r10d
>>>>>>>
>>>>>>> +        and     r12d,ecx
>>>>>>>
>>>>>>> +        pshufd  xmm7,xmm7,128
>>>>>>>
>>>>>>> +        xor     r13d,ecx
>>>>>>>
>>>>>>> +        add     r9d,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,r10d
>>>>>>>
>>>>>>> +        psrldq  xmm7,8
>>>>>>>
>>>>>>> +        xor     r12d,r8d
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r15d,r11d
>>>>>>>
>>>>>>> +        add     r9d,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm7
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        xor     r14d,r10d
>>>>>>>
>>>>>>> +        add     r9d,r13d
>>>>>>>
>>>>>>> +        pshufd  xmm7,xmm2,80
>>>>>>>
>>>>>>> +        xor     edi,r11d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     ebx,r9d
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>
>>>>>>> +        add     r9d,edi
>>>>>>>
>>>>>>> +        mov     r13d,ebx
>>>>>>>
>>>>>>> +        psrld   xmm7,10
>>>>>>>
>>>>>>> +        add     r14d,r9d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        psrlq   xmm6,17
>>>>>>>
>>>>>>> +        mov     r9d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,ecx
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,ebx
>>>>>>>
>>>>>>> +        xor     r12d,edx
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,r9d
>>>>>>>
>>>>>>> +        psrlq   xmm6,2
>>>>>>>
>>>>>>> +        and     r12d,ebx
>>>>>>>
>>>>>>> +        xor     r13d,ebx
>>>>>>>
>>>>>>> +        add     r8d,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>
>>>>>>> +        mov     edi,r9d
>>>>>>>
>>>>>>> +        xor     r12d,edx
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        pshufd  xmm7,xmm7,8
>>>>>>>
>>>>>>> +        xor     edi,r10d
>>>>>>>
>>>>>>> +        add     r8d,r12d
>>>>>>>
>>>>>>> +        movdqa  xmm6,XMMWORD[64+rbp]
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        pslldq  xmm7,8
>>>>>>>
>>>>>>> +        xor     r14d,r9d
>>>>>>>
>>>>>>> +        add     r8d,r13d
>>>>>>>
>>>>>>> +        xor     r15d,r10d
>>>>>>>
>>>>>>> +        paddd   xmm2,xmm7
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     eax,r8d
>>>>>>>
>>>>>>> +        add     r8d,r15d
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm2
>>>>>>>
>>>>>>> +        mov     r13d,eax
>>>>>>>
>>>>>>> +        add     r14d,r8d
>>>>>>>
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm6
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>
>>>>>>> +        mov     r8d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,ebx
>>>>>>>
>>>>>>> +        movdqa  xmm7,xmm2
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,eax
>>>>>>>
>>>>>>> +        xor     r12d,ecx
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,r8d
>>>>>>>
>>>>>>> +DB      102,15,58,15,227,4
>>>>>>>
>>>>>>> +        and     r12d,eax
>>>>>>>
>>>>>>> +        xor     r13d,eax
>>>>>>>
>>>>>>> +DB      102,15,58,15,249,4
>>>>>>>
>>>>>>> +        add     edx,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,r8d
>>>>>>>
>>>>>>> +        xor     r12d,ecx
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>
>>>>>>> +        xor     r15d,r9d
>>>>>>>
>>>>>>> +        add     edx,r12d
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm4
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        psrld   xmm4,3
>>>>>>>
>>>>>>> +        xor     r14d,r8d
>>>>>>>
>>>>>>> +        add     edx,r13d
>>>>>>>
>>>>>>> +        xor     edi,r9d
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm7
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r11d,edx
>>>>>>>
>>>>>>> +        psrld   xmm6,7
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        mov     r13d,r11d
>>>>>>>
>>>>>>> +        pshufd  xmm7,xmm2,250
>>>>>>>
>>>>>>> +        add     r14d,edx
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        pslld   xmm5,14
>>>>>>>
>>>>>>> +        mov     edx,r14d
>>>>>>>
>>>>>>> +        mov     r12d,eax
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,r11d
>>>>>>>
>>>>>>> +        xor     r12d,ebx
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        psrld   xmm6,11
>>>>>>>
>>>>>>> +        xor     r14d,edx
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>
>>>>>>> +        and     r12d,r11d
>>>>>>>
>>>>>>> +        xor     r13d,r11d
>>>>>>>
>>>>>>> +        pslld   xmm5,11
>>>>>>>
>>>>>>> +        add     ecx,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>
>>>>>>> +        xor     r12d,ebx
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>
>>>>>>> +        xor     edi,r8d
>>>>>>>
>>>>>>> +        add     ecx,r12d
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        xor     r14d,edx
>>>>>>>
>>>>>>> +        psrld   xmm7,10
>>>>>>>
>>>>>>> +        add     ecx,r13d
>>>>>>>
>>>>>>> +        xor     r15d,r8d
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm4
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r10d,ecx
>>>>>>>
>>>>>>> +        psrlq   xmm6,17
>>>>>>>
>>>>>>> +        add     ecx,r15d
>>>>>>>
>>>>>>> +        mov     r13d,r10d
>>>>>>>
>>>>>>> +        add     r14d,ecx
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     ecx,r14d
>>>>>>>
>>>>>>> +        mov     r12d,r11d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        psrlq   xmm6,2
>>>>>>>
>>>>>>> +        xor     r13d,r10d
>>>>>>>
>>>>>>> +        xor     r12d,eax
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,ecx
>>>>>>>
>>>>>>> +        and     r12d,r10d
>>>>>>>
>>>>>>> +        pshufd  xmm7,xmm7,128
>>>>>>>
>>>>>>> +        xor     r13d,r10d
>>>>>>>
>>>>>>> +        add     ebx,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,ecx
>>>>>>>
>>>>>>> +        psrldq  xmm7,8
>>>>>>>
>>>>>>> +        xor     r12d,eax
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r15d,edx
>>>>>>>
>>>>>>> +        add     ebx,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm7
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        xor     r14d,ecx
>>>>>>>
>>>>>>> +        add     ebx,r13d
>>>>>>>
>>>>>>> +        pshufd  xmm7,xmm3,80
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r9d,ebx
>>>>>>>
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        mov     r13d,r9d
>>>>>>>
>>>>>>> +        psrld   xmm7,10
>>>>>>>
>>>>>>> +        add     r14d,ebx
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        psrlq   xmm6,17
>>>>>>>
>>>>>>> +        mov     ebx,r14d
>>>>>>>
>>>>>>> +        mov     r12d,r10d
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,r9d
>>>>>>>
>>>>>>> +        xor     r12d,r11d
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,ebx
>>>>>>>
>>>>>>> +        psrlq   xmm6,2
>>>>>>>
>>>>>>> +        and     r12d,r9d
>>>>>>>
>>>>>>> +        xor     r13d,r9d
>>>>>>>
>>>>>>> +        add     eax,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        xor     r12d,r11d
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        pshufd  xmm7,xmm7,8
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        add     eax,r12d
>>>>>>>
>>>>>>> +        movdqa  xmm6,XMMWORD[96+rbp]
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        pslldq  xmm7,8
>>>>>>>
>>>>>>> +        xor     r14d,ebx
>>>>>>>
>>>>>>> +        add     eax,r13d
>>>>>>>
>>>>>>> +        xor     r15d,ecx
>>>>>>>
>>>>>>> +        paddd   xmm3,xmm7
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r8d,eax
>>>>>>>
>>>>>>> +        add     eax,r15d
>>>>>>>
>>>>>>> +        paddd   xmm6,xmm3
>>>>>>>
>>>>>>> +        mov     r13d,r8d
>>>>>>>
>>>>>>> +        add     r14d,eax
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,r8d
>>>>>>>
>>>>>>> +        xor     r12d,r10d
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,eax
>>>>>>>
>>>>>>> +        and     r12d,r8d
>>>>>>>
>>>>>>> +        xor     r13d,r8d
>>>>>>>
>>>>>>> +        add     r11d,DWORD[rsp]
>>>>>>>
>>>>>>> +        mov     r15d,eax
>>>>>>>
>>>>>>> +        xor     r12d,r10d
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r15d,ebx
>>>>>>>
>>>>>>> +        add     r11d,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        xor     r14d,eax
>>>>>>>
>>>>>>> +        add     r11d,r13d
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     edx,r11d
>>>>>>>
>>>>>>> +        add     r11d,edi
>>>>>>>
>>>>>>> +        mov     r13d,edx
>>>>>>>
>>>>>>> +        add     r14d,r11d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r11d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,r8d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,edx
>>>>>>>
>>>>>>> +        xor     r12d,r9d
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,r11d
>>>>>>>
>>>>>>> +        and     r12d,edx
>>>>>>>
>>>>>>> +        xor     r13d,edx
>>>>>>>
>>>>>>> +        add     r10d,DWORD[4+rsp]
>>>>>>>
>>>>>>> +        mov     edi,r11d
>>>>>>>
>>>>>>> +        xor     r12d,r9d
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        add     r10d,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        xor     r14d,r11d
>>>>>>>
>>>>>>> +        add     r10d,r13d
>>>>>>>
>>>>>>> +        xor     r15d,eax
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     ecx,r10d
>>>>>>>
>>>>>>> +        add     r10d,r15d
>>>>>>>
>>>>>>> +        mov     r13d,ecx
>>>>>>>
>>>>>>> +        add     r14d,r10d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r10d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,edx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,ecx
>>>>>>>
>>>>>>> +        xor     r12d,r8d
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,r10d
>>>>>>>
>>>>>>> +        and     r12d,ecx
>>>>>>>
>>>>>>> +        xor     r13d,ecx
>>>>>>>
>>>>>>> +        add     r9d,DWORD[8+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,r10d
>>>>>>>
>>>>>>> +        xor     r12d,r8d
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r15d,r11d
>>>>>>>
>>>>>>> +        add     r9d,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        xor     r14d,r10d
>>>>>>>
>>>>>>> +        add     r9d,r13d
>>>>>>>
>>>>>>> +        xor     edi,r11d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     ebx,r9d
>>>>>>>
>>>>>>> +        add     r9d,edi
>>>>>>>
>>>>>>> +        mov     r13d,ebx
>>>>>>>
>>>>>>> +        add     r14d,r9d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r9d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,ecx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,ebx
>>>>>>>
>>>>>>> +        xor     r12d,edx
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,r9d
>>>>>>>
>>>>>>> +        and     r12d,ebx
>>>>>>>
>>>>>>> +        xor     r13d,ebx
>>>>>>>
>>>>>>> +        add     r8d,DWORD[12+rsp]
>>>>>>>
>>>>>>> +        mov     edi,r9d
>>>>>>>
>>>>>>> +        xor     r12d,edx
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     edi,r10d
>>>>>>>
>>>>>>> +        add     r8d,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        xor     r14d,r9d
>>>>>>>
>>>>>>> +        add     r8d,r13d
>>>>>>>
>>>>>>> +        xor     r15d,r10d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     eax,r8d
>>>>>>>
>>>>>>> +        add     r8d,r15d
>>>>>>>
>>>>>>> +        mov     r13d,eax
>>>>>>>
>>>>>>> +        add     r14d,r8d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r8d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,ebx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,eax
>>>>>>>
>>>>>>> +        xor     r12d,ecx
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,r8d
>>>>>>>
>>>>>>> +        and     r12d,eax
>>>>>>>
>>>>>>> +        xor     r13d,eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[16+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,r8d
>>>>>>>
>>>>>>> +        xor     r12d,ecx
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r15d,r9d
>>>>>>>
>>>>>>> +        add     edx,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        xor     r14d,r8d
>>>>>>>
>>>>>>> +        add     edx,r13d
>>>>>>>
>>>>>>> +        xor     edi,r9d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r11d,edx
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        mov     r13d,r11d
>>>>>>>
>>>>>>> +        add     r14d,edx
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     edx,r14d
>>>>>>>
>>>>>>> +        mov     r12d,eax
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,r11d
>>>>>>>
>>>>>>> +        xor     r12d,ebx
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,edx
>>>>>>>
>>>>>>> +        and     r12d,r11d
>>>>>>>
>>>>>>> +        xor     r13d,r11d
>>>>>>>
>>>>>>> +        add     ecx,DWORD[20+rsp]
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        xor     r12d,ebx
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     edi,r8d
>>>>>>>
>>>>>>> +        add     ecx,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        xor     r14d,edx
>>>>>>>
>>>>>>> +        add     ecx,r13d
>>>>>>>
>>>>>>> +        xor     r15d,r8d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r10d,ecx
>>>>>>>
>>>>>>> +        add     ecx,r15d
>>>>>>>
>>>>>>> +        mov     r13d,r10d
>>>>>>>
>>>>>>> +        add     r14d,ecx
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     ecx,r14d
>>>>>>>
>>>>>>> +        mov     r12d,r11d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,r10d
>>>>>>>
>>>>>>> +        xor     r12d,eax
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,ecx
>>>>>>>
>>>>>>> +        and     r12d,r10d
>>>>>>>
>>>>>>> +        xor     r13d,r10d
>>>>>>>
>>>>>>> +        add     ebx,DWORD[24+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,ecx
>>>>>>>
>>>>>>> +        xor     r12d,eax
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r15d,edx
>>>>>>>
>>>>>>> +        add     ebx,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        xor     r14d,ecx
>>>>>>>
>>>>>>> +        add     ebx,r13d
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r9d,ebx
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        mov     r13d,r9d
>>>>>>>
>>>>>>> +        add     r14d,ebx
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     ebx,r14d
>>>>>>>
>>>>>>> +        mov     r12d,r10d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,r9d
>>>>>>>
>>>>>>> +        xor     r12d,r11d
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,ebx
>>>>>>>
>>>>>>> +        and     r12d,r9d
>>>>>>>
>>>>>>> +        xor     r13d,r9d
>>>>>>>
>>>>>>> +        add     eax,DWORD[28+rsp]
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        xor     r12d,r11d
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        add     eax,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        xor     r14d,ebx
>>>>>>>
>>>>>>> +        add     eax,r13d
>>>>>>>
>>>>>>> +        xor     r15d,ecx
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r8d,eax
>>>>>>>
>>>>>>> +        add     eax,r15d
>>>>>>>
>>>>>>> +        mov     r13d,r8d
>>>>>>>
>>>>>>> +        add     r14d,eax
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     eax,r14d
>>>>>>>
>>>>>>> +        mov     r12d,r9d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,r8d
>>>>>>>
>>>>>>> +        xor     r12d,r10d
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,eax
>>>>>>>
>>>>>>> +        and     r12d,r8d
>>>>>>>
>>>>>>> +        xor     r13d,r8d
>>>>>>>
>>>>>>> +        add     r11d,DWORD[32+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,eax
>>>>>>>
>>>>>>> +        xor     r12d,r10d
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r15d,ebx
>>>>>>>
>>>>>>> +        add     r11d,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        xor     r14d,eax
>>>>>>>
>>>>>>> +        add     r11d,r13d
>>>>>>>
>>>>>>> +        xor     edi,ebx
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     edx,r11d
>>>>>>>
>>>>>>> +        add     r11d,edi
>>>>>>>
>>>>>>> +        mov     r13d,edx
>>>>>>>
>>>>>>> +        add     r14d,r11d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r11d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,r8d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,edx
>>>>>>>
>>>>>>> +        xor     r12d,r9d
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,r11d
>>>>>>>
>>>>>>> +        and     r12d,edx
>>>>>>>
>>>>>>> +        xor     r13d,edx
>>>>>>>
>>>>>>> +        add     r10d,DWORD[36+rsp]
>>>>>>>
>>>>>>> +        mov     edi,r11d
>>>>>>>
>>>>>>> +        xor     r12d,r9d
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     edi,eax
>>>>>>>
>>>>>>> +        add     r10d,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        xor     r14d,r11d
>>>>>>>
>>>>>>> +        add     r10d,r13d
>>>>>>>
>>>>>>> +        xor     r15d,eax
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     ecx,r10d
>>>>>>>
>>>>>>> +        add     r10d,r15d
>>>>>>>
>>>>>>> +        mov     r13d,ecx
>>>>>>>
>>>>>>> +        add     r14d,r10d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r10d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,edx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,ecx
>>>>>>>
>>>>>>> +        xor     r12d,r8d
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,r10d
>>>>>>>
>>>>>>> +        and     r12d,ecx
>>>>>>>
>>>>>>> +        xor     r13d,ecx
>>>>>>>
>>>>>>> +        add     r9d,DWORD[40+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,r10d
>>>>>>>
>>>>>>> +        xor     r12d,r8d
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r15d,r11d
>>>>>>>
>>>>>>> +        add     r9d,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        xor     r14d,r10d
>>>>>>>
>>>>>>> +        add     r9d,r13d
>>>>>>>
>>>>>>> +        xor     edi,r11d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     ebx,r9d
>>>>>>>
>>>>>>> +        add     r9d,edi
>>>>>>>
>>>>>>> +        mov     r13d,ebx
>>>>>>>
>>>>>>> +        add     r14d,r9d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r9d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,ecx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,ebx
>>>>>>>
>>>>>>> +        xor     r12d,edx
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,r9d
>>>>>>>
>>>>>>> +        and     r12d,ebx
>>>>>>>
>>>>>>> +        xor     r13d,ebx
>>>>>>>
>>>>>>> +        add     r8d,DWORD[44+rsp]
>>>>>>>
>>>>>>> +        mov     edi,r9d
>>>>>>>
>>>>>>> +        xor     r12d,edx
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     edi,r10d
>>>>>>>
>>>>>>> +        add     r8d,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        xor     r14d,r9d
>>>>>>>
>>>>>>> +        add     r8d,r13d
>>>>>>>
>>>>>>> +        xor     r15d,r10d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     eax,r8d
>>>>>>>
>>>>>>> +        add     r8d,r15d
>>>>>>>
>>>>>>> +        mov     r13d,eax
>>>>>>>
>>>>>>> +        add     r14d,r8d
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     r8d,r14d
>>>>>>>
>>>>>>> +        mov     r12d,ebx
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,eax
>>>>>>>
>>>>>>> +        xor     r12d,ecx
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,r8d
>>>>>>>
>>>>>>> +        and     r12d,eax
>>>>>>>
>>>>>>> +        xor     r13d,eax
>>>>>>>
>>>>>>> +        add     edx,DWORD[48+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,r8d
>>>>>>>
>>>>>>> +        xor     r12d,ecx
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r15d,r9d
>>>>>>>
>>>>>>> +        add     edx,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        xor     r14d,r8d
>>>>>>>
>>>>>>> +        add     edx,r13d
>>>>>>>
>>>>>>> +        xor     edi,r9d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r11d,edx
>>>>>>>
>>>>>>> +        add     edx,edi
>>>>>>>
>>>>>>> +        mov     r13d,r11d
>>>>>>>
>>>>>>> +        add     r14d,edx
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     edx,r14d
>>>>>>>
>>>>>>> +        mov     r12d,eax
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,r11d
>>>>>>>
>>>>>>> +        xor     r12d,ebx
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,edx
>>>>>>>
>>>>>>> +        and     r12d,r11d
>>>>>>>
>>>>>>> +        xor     r13d,r11d
>>>>>>>
>>>>>>> +        add     ecx,DWORD[52+rsp]
>>>>>>>
>>>>>>> +        mov     edi,edx
>>>>>>>
>>>>>>> +        xor     r12d,ebx
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     edi,r8d
>>>>>>>
>>>>>>> +        add     ecx,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        xor     r14d,edx
>>>>>>>
>>>>>>> +        add     ecx,r13d
>>>>>>>
>>>>>>> +        xor     r15d,r8d
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r10d,ecx
>>>>>>>
>>>>>>> +        add     ecx,r15d
>>>>>>>
>>>>>>> +        mov     r13d,r10d
>>>>>>>
>>>>>>> +        add     r14d,ecx
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     ecx,r14d
>>>>>>>
>>>>>>> +        mov     r12d,r11d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,r10d
>>>>>>>
>>>>>>> +        xor     r12d,eax
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,ecx
>>>>>>>
>>>>>>> +        and     r12d,r10d
>>>>>>>
>>>>>>> +        xor     r13d,r10d
>>>>>>>
>>>>>>> +        add     ebx,DWORD[56+rsp]
>>>>>>>
>>>>>>> +        mov     r15d,ecx
>>>>>>>
>>>>>>> +        xor     r12d,eax
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     r15d,edx
>>>>>>>
>>>>>>> +        add     ebx,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     edi,r15d
>>>>>>>
>>>>>>> +        xor     r14d,ecx
>>>>>>>
>>>>>>> +        add     ebx,r13d
>>>>>>>
>>>>>>> +        xor     edi,edx
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r9d,ebx
>>>>>>>
>>>>>>> +        add     ebx,edi
>>>>>>>
>>>>>>> +        mov     r13d,r9d
>>>>>>>
>>>>>>> +        add     r14d,ebx
>>>>>>>
>>>>>>> +        ror     r13d,14
>>>>>>>
>>>>>>> +        mov     ebx,r14d
>>>>>>>
>>>>>>> +        mov     r12d,r10d
>>>>>>>
>>>>>>> +        ror     r14d,9
>>>>>>>
>>>>>>> +        xor     r13d,r9d
>>>>>>>
>>>>>>> +        xor     r12d,r11d
>>>>>>>
>>>>>>> +        ror     r13d,5
>>>>>>>
>>>>>>> +        xor     r14d,ebx
>>>>>>>
>>>>>>> +        and     r12d,r9d
>>>>>>>
>>>>>>> +        xor     r13d,r9d
>>>>>>>
>>>>>>> +        add     eax,DWORD[60+rsp]
>>>>>>>
>>>>>>> +        mov     edi,ebx
>>>>>>>
>>>>>>> +        xor     r12d,r11d
>>>>>>>
>>>>>>> +        ror     r14d,11
>>>>>>>
>>>>>>> +        xor     edi,ecx
>>>>>>>
>>>>>>> +        add     eax,r12d
>>>>>>>
>>>>>>> +        ror     r13d,6
>>>>>>>
>>>>>>> +        and     r15d,edi
>>>>>>>
>>>>>>> +        xor     r14d,ebx
>>>>>>>
>>>>>>> +        add     eax,r13d
>>>>>>>
>>>>>>> +        xor     r15d,ecx
>>>>>>>
>>>>>>> +        ror     r14d,2
>>>>>>>
>>>>>>> +        add     r8d,eax
>>>>>>>
>>>>>>> +        add     eax,r15d
>>>>>>>
>>>>>>> +        mov     r13d,r8d
>>>>>>>
>>>>>>> +        add     r14d,eax
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[((64+0))+rsp]
>>>>>>>
>>>>>>> +        mov     eax,r14d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[((64+16))+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[88+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[((-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$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:
>>>>>>>
>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +se_handler:
>>>>>>>
>>>>>>> +        push    rsi
>>>>>>>
>>>>>>> +        push    rdi
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +        pushfq
>>>>>>>
>>>>>>> +        sub     rsp,64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>>
>>>>>>> +        mov     rsi,rax
>>>>>>>
>>>>>>> +        mov     rax,QWORD[((64+24))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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,[$L$epilogue]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsi,[((64+32))+rsi]
>>>>>>>
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>
>>>>>>> +        mov     ecx,8
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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[40+r9]
>>>>>>>
>>>>>>> +        mov     rsi,r8
>>>>>>>
>>>>>>> +        mov     ecx,154
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,r9
>>>>>>>
>>>>>>> +        xor     rcx,rcx
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +        popfq
>>>>>>>
>>>>>>> +        pop     r15
>>>>>>>
>>>>>>> +        pop     r14
>>>>>>>
>>>>>>> +        pop     r13
>>>>>>>
>>>>>>> +        pop     r12
>>>>>>>
>>>>>>> +        pop     rbp
>>>>>>>
>>>>>>> +        pop     rbx
>>>>>>>
>>>>>>> +        pop     rdi
>>>>>>>
>>>>>>> +        pop     rsi
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +shaext_handler:
>>>>>>>
>>>>>>> +        push    rsi
>>>>>>>
>>>>>>> +        push    rdi
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +        pushfq
>>>>>>>
>>>>>>> +        sub     rsp,64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r10,[$L$prologue_shaext]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     r10,[$L$epilogue_shaext]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsi,[((-8-80))+rax]
>>>>>>>
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>
>>>>>>> +        mov     ecx,10
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        jmp     NEAR $L$in_prologue
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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_shaext
>>>>> wrt ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_end_sha256_block_data_order_shaext wrt
>>>> ..imagebase
>>>>>>>
>>>>>>> +        DD      $L$SEH_info_sha256_block_data_order_shaext 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_shaext:
>>>>>>>
>>>>>>> +DB      9,0,0,0
>>>>>>>
>>>>>>> +        DD      shaext_handler 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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-
>>>>> x86_64.nasm
>>>>>>> b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..c6397d4393
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-
>>> x86_64.nasm
>>>>>>> @@ -0,0 +1,1938 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>>
>>>>>>> +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>
>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>> copy
>>>>>>>
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +default rel
>>>>>>>
>>>>>>> +%define XMMWORD
>>>>>>>
>>>>>>> +%define YMMWORD
>>>>>>>
>>>>>>> +%define ZMMWORD
>>>>>>>
>>>>>>> +section .text code align=64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>
>>>>>>> +global  sha512_block_data_order
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +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:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +        mov     rsi,rdx
>>>>>>>
>>>>>>> +        mov     rdx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        shl     rdx,4
>>>>>>>
>>>>>>> +        sub     rsp,16*8+4*8
>>>>>>>
>>>>>>> +        lea     rdx,[rdx*8+rsi]
>>>>>>>
>>>>>>> +        and     rsp,-64
>>>>>>>
>>>>>>> +        mov     QWORD[((128+0))+rsp],rdi
>>>>>>>
>>>>>>> +        mov     QWORD[((128+8))+rsp],rsi
>>>>>>>
>>>>>>> +        mov     QWORD[((128+16))+rsp],rdx
>>>>>>>
>>>>>>> +        mov     QWORD[152+rsp],rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$prologue:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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:
>>>>>>>
>>>>>>> +        mov     rdi,rbx
>>>>>>>
>>>>>>> +        lea     rbp,[K512]
>>>>>>>
>>>>>>> +        xor     rdi,rcx
>>>>>>>
>>>>>>> +        mov     r12,QWORD[rsi]
>>>>>>>
>>>>>>> +        mov     r13,r8
>>>>>>>
>>>>>>> +        mov     r14,rax
>>>>>>>
>>>>>>> +        bswap   r12
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     r15,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r8
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     r15,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,rax
>>>>>>>
>>>>>>> +        and     r15,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,r11
>>>>>>>
>>>>>>> +        xor     r15,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,r8
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15,rax
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15,rbx
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     r11,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     rdi,r15
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r11,rdi
>>>>>>>
>>>>>>> +        add     rdx,r12
>>>>>>>
>>>>>>> +        add     r11,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>
>>>>>>> +        add     r11,r14
>>>>>>>
>>>>>>> +        mov     r12,QWORD[8+rsi]
>>>>>>>
>>>>>>> +        mov     r13,rdx
>>>>>>>
>>>>>>> +        mov     r14,r11
>>>>>>>
>>>>>>> +        bswap   r12
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     rdi,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,rdx
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     rdi,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,r11
>>>>>>>
>>>>>>> +        and     rdi,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,r10
>>>>>>>
>>>>>>> +        xor     rdi,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,rdx
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rdi,r11
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdi,rax
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     r10,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15,rdi
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r10,r15
>>>>>>>
>>>>>>> +        add     rcx,r12
>>>>>>>
>>>>>>> +        add     r10,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>
>>>>>>> +        add     r10,r14
>>>>>>>
>>>>>>> +        mov     r12,QWORD[16+rsi]
>>>>>>>
>>>>>>> +        mov     r13,rcx
>>>>>>>
>>>>>>> +        mov     r14,r10
>>>>>>>
>>>>>>> +        bswap   r12
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     r15,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,rcx
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     r15,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,r10
>>>>>>>
>>>>>>> +        and     r15,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,r9
>>>>>>>
>>>>>>> +        xor     r15,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,rcx
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15,r10
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15,r11
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     r9,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     rdi,r15
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r9,rdi
>>>>>>>
>>>>>>> +        add     rbx,r12
>>>>>>>
>>>>>>> +        add     r9,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>
>>>>>>> +        add     r9,r14
>>>>>>>
>>>>>>> +        mov     r12,QWORD[24+rsi]
>>>>>>>
>>>>>>> +        mov     r13,rbx
>>>>>>>
>>>>>>> +        mov     r14,r9
>>>>>>>
>>>>>>> +        bswap   r12
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,rbx
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     rdi,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[24+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,r9
>>>>>>>
>>>>>>> +        and     rdi,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,r8
>>>>>>>
>>>>>>> +        xor     rdi,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,rbx
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rdi,r9
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdi,r10
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     r8,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15,rdi
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r8,r15
>>>>>>>
>>>>>>> +        add     rax,r12
>>>>>>>
>>>>>>> +        add     r8,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>
>>>>>>> +        add     r8,r14
>>>>>>>
>>>>>>> +        mov     r12,QWORD[32+rsi]
>>>>>>>
>>>>>>> +        mov     r13,rax
>>>>>>>
>>>>>>> +        mov     r14,r8
>>>>>>>
>>>>>>> +        bswap   r12
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     r15,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,rax
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     r15,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[32+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,r8
>>>>>>>
>>>>>>> +        and     r15,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,rdx
>>>>>>>
>>>>>>> +        xor     r15,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,rax
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15,r8
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15,r9
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     rdx,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     rdi,r15
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdx,rdi
>>>>>>>
>>>>>>> +        add     r11,r12
>>>>>>>
>>>>>>> +        add     rdx,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>
>>>>>>> +        add     rdx,r14
>>>>>>>
>>>>>>> +        mov     r12,QWORD[40+rsi]
>>>>>>>
>>>>>>> +        mov     r13,r11
>>>>>>>
>>>>>>> +        mov     r14,rdx
>>>>>>>
>>>>>>> +        bswap   r12
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     rdi,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r11
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     rdi,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[40+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,rdx
>>>>>>>
>>>>>>> +        and     rdi,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,rcx
>>>>>>>
>>>>>>> +        xor     rdi,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,r11
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rdi,rdx
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdi,r8
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     rcx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15,rdi
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rcx,r15
>>>>>>>
>>>>>>> +        add     r10,r12
>>>>>>>
>>>>>>> +        add     rcx,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>
>>>>>>> +        add     rcx,r14
>>>>>>>
>>>>>>> +        mov     r12,QWORD[48+rsi]
>>>>>>>
>>>>>>> +        mov     r13,r10
>>>>>>>
>>>>>>> +        mov     r14,rcx
>>>>>>>
>>>>>>> +        bswap   r12
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     r15,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r10
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     r15,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[48+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,rcx
>>>>>>>
>>>>>>> +        and     r15,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,rbx
>>>>>>>
>>>>>>> +        xor     r15,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,r10
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15,rcx
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15,rdx
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     rbx,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     rdi,r15
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rbx,rdi
>>>>>>>
>>>>>>> +        add     r9,r12
>>>>>>>
>>>>>>> +        add     rbx,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>
>>>>>>> +        add     rbx,r14
>>>>>>>
>>>>>>> +        mov     r12,QWORD[56+rsi]
>>>>>>>
>>>>>>> +        mov     r13,r9
>>>>>>>
>>>>>>> +        mov     r14,rbx
>>>>>>>
>>>>>>> +        bswap   r12
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     rdi,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r9
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     rdi,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[56+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,rbx
>>>>>>>
>>>>>>> +        and     rdi,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,rax
>>>>>>>
>>>>>>> +        xor     rdi,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,r9
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rdi,rbx
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdi,rcx
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     rax,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15,rdi
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rax,r15
>>>>>>>
>>>>>>> +        add     r8,r12
>>>>>>>
>>>>>>> +        add     rax,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>
>>>>>>> +        add     rax,r14
>>>>>>>
>>>>>>> +        mov     r12,QWORD[64+rsi]
>>>>>>>
>>>>>>> +        mov     r13,r8
>>>>>>>
>>>>>>> +        mov     r14,rax
>>>>>>>
>>>>>>> +        bswap   r12
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     r15,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r8
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     r15,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[64+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,rax
>>>>>>>
>>>>>>> +        and     r15,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,r11
>>>>>>>
>>>>>>> +        xor     r15,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,r8
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15,rax
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15,rbx
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     r11,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     rdi,r15
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r11,rdi
>>>>>>>
>>>>>>> +        add     rdx,r12
>>>>>>>
>>>>>>> +        add     r11,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>
>>>>>>> +        add     r11,r14
>>>>>>>
>>>>>>> +        mov     r12,QWORD[72+rsi]
>>>>>>>
>>>>>>> +        mov     r13,rdx
>>>>>>>
>>>>>>> +        mov     r14,r11
>>>>>>>
>>>>>>> +        bswap   r12
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     rdi,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,rdx
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     rdi,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[72+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,r11
>>>>>>>
>>>>>>> +        and     rdi,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,r10
>>>>>>>
>>>>>>> +        xor     rdi,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,rdx
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rdi,r11
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdi,rax
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     r10,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15,rdi
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r10,r15
>>>>>>>
>>>>>>> +        add     rcx,r12
>>>>>>>
>>>>>>> +        add     r10,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>
>>>>>>> +        add     r10,r14
>>>>>>>
>>>>>>> +        mov     r12,QWORD[80+rsi]
>>>>>>>
>>>>>>> +        mov     r13,rcx
>>>>>>>
>>>>>>> +        mov     r14,r10
>>>>>>>
>>>>>>> +        bswap   r12
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     r15,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,rcx
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     r15,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[80+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,r10
>>>>>>>
>>>>>>> +        and     r15,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,r9
>>>>>>>
>>>>>>> +        xor     r15,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,rcx
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15,r10
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15,r11
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     r9,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     rdi,r15
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r9,rdi
>>>>>>>
>>>>>>> +        add     rbx,r12
>>>>>>>
>>>>>>> +        add     r9,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>
>>>>>>> +        add     r9,r14
>>>>>>>
>>>>>>> +        mov     r12,QWORD[88+rsi]
>>>>>>>
>>>>>>> +        mov     r13,rbx
>>>>>>>
>>>>>>> +        mov     r14,r9
>>>>>>>
>>>>>>> +        bswap   r12
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,rbx
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     rdi,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[88+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,r9
>>>>>>>
>>>>>>> +        and     rdi,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,r8
>>>>>>>
>>>>>>> +        xor     rdi,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,rbx
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rdi,r9
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdi,r10
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     r8,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15,rdi
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r8,r15
>>>>>>>
>>>>>>> +        add     rax,r12
>>>>>>>
>>>>>>> +        add     r8,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>
>>>>>>> +        add     r8,r14
>>>>>>>
>>>>>>> +        mov     r12,QWORD[96+rsi]
>>>>>>>
>>>>>>> +        mov     r13,rax
>>>>>>>
>>>>>>> +        mov     r14,r8
>>>>>>>
>>>>>>> +        bswap   r12
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     r15,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,rax
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     r15,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[96+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,r8
>>>>>>>
>>>>>>> +        and     r15,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,rdx
>>>>>>>
>>>>>>> +        xor     r15,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,rax
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15,r8
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15,r9
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     rdx,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     rdi,r15
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdx,rdi
>>>>>>>
>>>>>>> +        add     r11,r12
>>>>>>>
>>>>>>> +        add     rdx,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>
>>>>>>> +        add     rdx,r14
>>>>>>>
>>>>>>> +        mov     r12,QWORD[104+rsi]
>>>>>>>
>>>>>>> +        mov     r13,r11
>>>>>>>
>>>>>>> +        mov     r14,rdx
>>>>>>>
>>>>>>> +        bswap   r12
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     rdi,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r11
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     rdi,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[104+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,rdx
>>>>>>>
>>>>>>> +        and     rdi,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,rcx
>>>>>>>
>>>>>>> +        xor     rdi,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,r11
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rdi,rdx
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdi,r8
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     rcx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15,rdi
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rcx,r15
>>>>>>>
>>>>>>> +        add     r10,r12
>>>>>>>
>>>>>>> +        add     rcx,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>
>>>>>>> +        add     rcx,r14
>>>>>>>
>>>>>>> +        mov     r12,QWORD[112+rsi]
>>>>>>>
>>>>>>> +        mov     r13,r10
>>>>>>>
>>>>>>> +        mov     r14,rcx
>>>>>>>
>>>>>>> +        bswap   r12
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     r15,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r10
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     r15,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[112+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,rcx
>>>>>>>
>>>>>>> +        and     r15,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,rbx
>>>>>>>
>>>>>>> +        xor     r15,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,r10
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15,rcx
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15,rdx
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     rbx,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     rdi,r15
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rbx,rdi
>>>>>>>
>>>>>>> +        add     r9,r12
>>>>>>>
>>>>>>> +        add     rbx,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>
>>>>>>> +        add     rbx,r14
>>>>>>>
>>>>>>> +        mov     r12,QWORD[120+rsi]
>>>>>>>
>>>>>>> +        mov     r13,r9
>>>>>>>
>>>>>>> +        mov     r14,rbx
>>>>>>>
>>>>>>> +        bswap   r12
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     rdi,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r9
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     rdi,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[120+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,rbx
>>>>>>>
>>>>>>> +        and     rdi,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,rax
>>>>>>>
>>>>>>> +        xor     rdi,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,r9
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rdi,rbx
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdi,rcx
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     rax,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15,rdi
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rax,r15
>>>>>>>
>>>>>>> +        add     r8,r12
>>>>>>>
>>>>>>> +        add     rax,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$rounds_16_xx
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$rounds_16_xx:
>>>>>>>
>>>>>>> +        mov     r13,QWORD[8+rsp]
>>>>>>>
>>>>>>> +        mov     r15,QWORD[112+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12,r13
>>>>>>>
>>>>>>> +        ror     r13,7
>>>>>>>
>>>>>>> +        add     rax,r14
>>>>>>>
>>>>>>> +        mov     r14,r15
>>>>>>>
>>>>>>> +        ror     r15,42
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r12
>>>>>>>
>>>>>>> +        shr     r12,7
>>>>>>>
>>>>>>> +        ror     r13,1
>>>>>>>
>>>>>>> +        xor     r15,r14
>>>>>>>
>>>>>>> +        shr     r14,6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r15,19
>>>>>>>
>>>>>>> +        xor     r12,r13
>>>>>>>
>>>>>>> +        xor     r15,r14
>>>>>>>
>>>>>>> +        add     r12,QWORD[72+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12,QWORD[rsp]
>>>>>>>
>>>>>>> +        mov     r13,r8
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +        mov     r14,rax
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     r15,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r8
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     r15,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,rax
>>>>>>>
>>>>>>> +        and     r15,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,r11
>>>>>>>
>>>>>>> +        xor     r15,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,r8
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15,rax
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15,rbx
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     r11,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     rdi,r15
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r11,rdi
>>>>>>>
>>>>>>> +        add     rdx,r12
>>>>>>>
>>>>>>> +        add     r11,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>
>>>>>>> +        mov     r13,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[120+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12,r13
>>>>>>>
>>>>>>> +        ror     r13,7
>>>>>>>
>>>>>>> +        add     r11,r14
>>>>>>>
>>>>>>> +        mov     r14,rdi
>>>>>>>
>>>>>>> +        ror     rdi,42
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r12
>>>>>>>
>>>>>>> +        shr     r12,7
>>>>>>>
>>>>>>> +        ror     r13,1
>>>>>>>
>>>>>>> +        xor     rdi,r14
>>>>>>>
>>>>>>> +        shr     r14,6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     rdi,19
>>>>>>>
>>>>>>> +        xor     r12,r13
>>>>>>>
>>>>>>> +        xor     rdi,r14
>>>>>>>
>>>>>>> +        add     r12,QWORD[80+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12,QWORD[8+rsp]
>>>>>>>
>>>>>>> +        mov     r13,rdx
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +        mov     r14,r11
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     rdi,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,rdx
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     rdi,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,r11
>>>>>>>
>>>>>>> +        and     rdi,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,r10
>>>>>>>
>>>>>>> +        xor     rdi,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,rdx
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rdi,r11
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdi,rax
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     r10,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15,rdi
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r10,r15
>>>>>>>
>>>>>>> +        add     rcx,r12
>>>>>>>
>>>>>>> +        add     r10,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>
>>>>>>> +        mov     r13,QWORD[24+rsp]
>>>>>>>
>>>>>>> +        mov     r15,QWORD[rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12,r13
>>>>>>>
>>>>>>> +        ror     r13,7
>>>>>>>
>>>>>>> +        add     r10,r14
>>>>>>>
>>>>>>> +        mov     r14,r15
>>>>>>>
>>>>>>> +        ror     r15,42
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r12
>>>>>>>
>>>>>>> +        shr     r12,7
>>>>>>>
>>>>>>> +        ror     r13,1
>>>>>>>
>>>>>>> +        xor     r15,r14
>>>>>>>
>>>>>>> +        shr     r14,6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r15,19
>>>>>>>
>>>>>>> +        xor     r12,r13
>>>>>>>
>>>>>>> +        xor     r15,r14
>>>>>>>
>>>>>>> +        add     r12,QWORD[88+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        mov     r13,rcx
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +        mov     r14,r10
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     r15,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,rcx
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     r15,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,r10
>>>>>>>
>>>>>>> +        and     r15,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,r9
>>>>>>>
>>>>>>> +        xor     r15,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,rcx
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15,r10
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15,r11
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     r9,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     rdi,r15
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r9,rdi
>>>>>>>
>>>>>>> +        add     rbx,r12
>>>>>>>
>>>>>>> +        add     r9,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>
>>>>>>> +        mov     r13,QWORD[32+rsp]
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[8+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12,r13
>>>>>>>
>>>>>>> +        ror     r13,7
>>>>>>>
>>>>>>> +        add     r9,r14
>>>>>>>
>>>>>>> +        mov     r14,rdi
>>>>>>>
>>>>>>> +        ror     rdi,42
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r12
>>>>>>>
>>>>>>> +        shr     r12,7
>>>>>>>
>>>>>>> +        ror     r13,1
>>>>>>>
>>>>>>> +        xor     rdi,r14
>>>>>>>
>>>>>>> +        shr     r14,6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     rdi,19
>>>>>>>
>>>>>>> +        xor     r12,r13
>>>>>>>
>>>>>>> +        xor     rdi,r14
>>>>>>>
>>>>>>> +        add     r12,QWORD[96+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12,QWORD[24+rsp]
>>>>>>>
>>>>>>> +        mov     r13,rbx
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +        mov     r14,r9
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,rbx
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     rdi,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[24+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,r9
>>>>>>>
>>>>>>> +        and     rdi,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,r8
>>>>>>>
>>>>>>> +        xor     rdi,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,rbx
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rdi,r9
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdi,r10
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     r8,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15,rdi
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r8,r15
>>>>>>>
>>>>>>> +        add     rax,r12
>>>>>>>
>>>>>>> +        add     r8,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>
>>>>>>> +        mov     r13,QWORD[40+rsp]
>>>>>>>
>>>>>>> +        mov     r15,QWORD[16+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12,r13
>>>>>>>
>>>>>>> +        ror     r13,7
>>>>>>>
>>>>>>> +        add     r8,r14
>>>>>>>
>>>>>>> +        mov     r14,r15
>>>>>>>
>>>>>>> +        ror     r15,42
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r12
>>>>>>>
>>>>>>> +        shr     r12,7
>>>>>>>
>>>>>>> +        ror     r13,1
>>>>>>>
>>>>>>> +        xor     r15,r14
>>>>>>>
>>>>>>> +        shr     r14,6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r15,19
>>>>>>>
>>>>>>> +        xor     r12,r13
>>>>>>>
>>>>>>> +        xor     r15,r14
>>>>>>>
>>>>>>> +        add     r12,QWORD[104+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12,QWORD[32+rsp]
>>>>>>>
>>>>>>> +        mov     r13,rax
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +        mov     r14,r8
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     r15,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,rax
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     r15,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[32+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,r8
>>>>>>>
>>>>>>> +        and     r15,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,rdx
>>>>>>>
>>>>>>> +        xor     r15,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,rax
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15,r8
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15,r9
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     rdx,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     rdi,r15
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdx,rdi
>>>>>>>
>>>>>>> +        add     r11,r12
>>>>>>>
>>>>>>> +        add     rdx,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>
>>>>>>> +        mov     r13,QWORD[48+rsp]
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[24+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12,r13
>>>>>>>
>>>>>>> +        ror     r13,7
>>>>>>>
>>>>>>> +        add     rdx,r14
>>>>>>>
>>>>>>> +        mov     r14,rdi
>>>>>>>
>>>>>>> +        ror     rdi,42
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r12
>>>>>>>
>>>>>>> +        shr     r12,7
>>>>>>>
>>>>>>> +        ror     r13,1
>>>>>>>
>>>>>>> +        xor     rdi,r14
>>>>>>>
>>>>>>> +        shr     r14,6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     rdi,19
>>>>>>>
>>>>>>> +        xor     r12,r13
>>>>>>>
>>>>>>> +        xor     rdi,r14
>>>>>>>
>>>>>>> +        add     r12,QWORD[112+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12,QWORD[40+rsp]
>>>>>>>
>>>>>>> +        mov     r13,r11
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +        mov     r14,rdx
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     rdi,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r11
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     rdi,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[40+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,rdx
>>>>>>>
>>>>>>> +        and     rdi,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,rcx
>>>>>>>
>>>>>>> +        xor     rdi,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,r11
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rdi,rdx
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdi,r8
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     rcx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15,rdi
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rcx,r15
>>>>>>>
>>>>>>> +        add     r10,r12
>>>>>>>
>>>>>>> +        add     rcx,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>
>>>>>>> +        mov     r13,QWORD[56+rsp]
>>>>>>>
>>>>>>> +        mov     r15,QWORD[32+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12,r13
>>>>>>>
>>>>>>> +        ror     r13,7
>>>>>>>
>>>>>>> +        add     rcx,r14
>>>>>>>
>>>>>>> +        mov     r14,r15
>>>>>>>
>>>>>>> +        ror     r15,42
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r12
>>>>>>>
>>>>>>> +        shr     r12,7
>>>>>>>
>>>>>>> +        ror     r13,1
>>>>>>>
>>>>>>> +        xor     r15,r14
>>>>>>>
>>>>>>> +        shr     r14,6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r15,19
>>>>>>>
>>>>>>> +        xor     r12,r13
>>>>>>>
>>>>>>> +        xor     r15,r14
>>>>>>>
>>>>>>> +        add     r12,QWORD[120+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12,QWORD[48+rsp]
>>>>>>>
>>>>>>> +        mov     r13,r10
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +        mov     r14,rcx
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     r15,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r10
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     r15,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[48+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,rcx
>>>>>>>
>>>>>>> +        and     r15,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,rbx
>>>>>>>
>>>>>>> +        xor     r15,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,r10
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15,rcx
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15,rdx
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     rbx,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     rdi,r15
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rbx,rdi
>>>>>>>
>>>>>>> +        add     r9,r12
>>>>>>>
>>>>>>> +        add     rbx,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>
>>>>>>> +        mov     r13,QWORD[64+rsp]
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[40+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12,r13
>>>>>>>
>>>>>>> +        ror     r13,7
>>>>>>>
>>>>>>> +        add     rbx,r14
>>>>>>>
>>>>>>> +        mov     r14,rdi
>>>>>>>
>>>>>>> +        ror     rdi,42
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r12
>>>>>>>
>>>>>>> +        shr     r12,7
>>>>>>>
>>>>>>> +        ror     r13,1
>>>>>>>
>>>>>>> +        xor     rdi,r14
>>>>>>>
>>>>>>> +        shr     r14,6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     rdi,19
>>>>>>>
>>>>>>> +        xor     r12,r13
>>>>>>>
>>>>>>> +        xor     rdi,r14
>>>>>>>
>>>>>>> +        add     r12,QWORD[rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12,QWORD[56+rsp]
>>>>>>>
>>>>>>> +        mov     r13,r9
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +        mov     r14,rbx
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     rdi,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r9
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     rdi,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[56+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,rbx
>>>>>>>
>>>>>>> +        and     rdi,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,rax
>>>>>>>
>>>>>>> +        xor     rdi,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,r9
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rdi,rbx
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdi,rcx
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     rax,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15,rdi
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rax,r15
>>>>>>>
>>>>>>> +        add     r8,r12
>>>>>>>
>>>>>>> +        add     rax,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>
>>>>>>> +        mov     r13,QWORD[72+rsp]
>>>>>>>
>>>>>>> +        mov     r15,QWORD[48+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12,r13
>>>>>>>
>>>>>>> +        ror     r13,7
>>>>>>>
>>>>>>> +        add     rax,r14
>>>>>>>
>>>>>>> +        mov     r14,r15
>>>>>>>
>>>>>>> +        ror     r15,42
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r12
>>>>>>>
>>>>>>> +        shr     r12,7
>>>>>>>
>>>>>>> +        ror     r13,1
>>>>>>>
>>>>>>> +        xor     r15,r14
>>>>>>>
>>>>>>> +        shr     r14,6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r15,19
>>>>>>>
>>>>>>> +        xor     r12,r13
>>>>>>>
>>>>>>> +        xor     r15,r14
>>>>>>>
>>>>>>> +        add     r12,QWORD[8+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12,QWORD[64+rsp]
>>>>>>>
>>>>>>> +        mov     r13,r8
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +        mov     r14,rax
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     r15,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r8
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     r15,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[64+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,rax
>>>>>>>
>>>>>>> +        and     r15,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,r11
>>>>>>>
>>>>>>> +        xor     r15,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,r8
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15,rax
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15,rbx
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     r11,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     rdi,r15
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r11,rdi
>>>>>>>
>>>>>>> +        add     rdx,r12
>>>>>>>
>>>>>>> +        add     r11,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>
>>>>>>> +        mov     r13,QWORD[80+rsp]
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[56+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12,r13
>>>>>>>
>>>>>>> +        ror     r13,7
>>>>>>>
>>>>>>> +        add     r11,r14
>>>>>>>
>>>>>>> +        mov     r14,rdi
>>>>>>>
>>>>>>> +        ror     rdi,42
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r12
>>>>>>>
>>>>>>> +        shr     r12,7
>>>>>>>
>>>>>>> +        ror     r13,1
>>>>>>>
>>>>>>> +        xor     rdi,r14
>>>>>>>
>>>>>>> +        shr     r14,6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     rdi,19
>>>>>>>
>>>>>>> +        xor     r12,r13
>>>>>>>
>>>>>>> +        xor     rdi,r14
>>>>>>>
>>>>>>> +        add     r12,QWORD[16+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12,QWORD[72+rsp]
>>>>>>>
>>>>>>> +        mov     r13,rdx
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +        mov     r14,r11
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     rdi,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,rdx
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     rdi,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[72+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,r11
>>>>>>>
>>>>>>> +        and     rdi,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,r10
>>>>>>>
>>>>>>> +        xor     rdi,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,rdx
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rdi,r11
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdi,rax
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     r10,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15,rdi
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r10,r15
>>>>>>>
>>>>>>> +        add     rcx,r12
>>>>>>>
>>>>>>> +        add     r10,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>
>>>>>>> +        mov     r13,QWORD[88+rsp]
>>>>>>>
>>>>>>> +        mov     r15,QWORD[64+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12,r13
>>>>>>>
>>>>>>> +        ror     r13,7
>>>>>>>
>>>>>>> +        add     r10,r14
>>>>>>>
>>>>>>> +        mov     r14,r15
>>>>>>>
>>>>>>> +        ror     r15,42
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r12
>>>>>>>
>>>>>>> +        shr     r12,7
>>>>>>>
>>>>>>> +        ror     r13,1
>>>>>>>
>>>>>>> +        xor     r15,r14
>>>>>>>
>>>>>>> +        shr     r14,6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r15,19
>>>>>>>
>>>>>>> +        xor     r12,r13
>>>>>>>
>>>>>>> +        xor     r15,r14
>>>>>>>
>>>>>>> +        add     r12,QWORD[24+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12,QWORD[80+rsp]
>>>>>>>
>>>>>>> +        mov     r13,rcx
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +        mov     r14,r10
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     r15,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,rcx
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     r15,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[80+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,r10
>>>>>>>
>>>>>>> +        and     r15,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,r9
>>>>>>>
>>>>>>> +        xor     r15,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,rcx
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15,r10
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15,r11
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     r9,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     rdi,r15
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r9,rdi
>>>>>>>
>>>>>>> +        add     rbx,r12
>>>>>>>
>>>>>>> +        add     r9,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>
>>>>>>> +        mov     r13,QWORD[96+rsp]
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[72+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12,r13
>>>>>>>
>>>>>>> +        ror     r13,7
>>>>>>>
>>>>>>> +        add     r9,r14
>>>>>>>
>>>>>>> +        mov     r14,rdi
>>>>>>>
>>>>>>> +        ror     rdi,42
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r12
>>>>>>>
>>>>>>> +        shr     r12,7
>>>>>>>
>>>>>>> +        ror     r13,1
>>>>>>>
>>>>>>> +        xor     rdi,r14
>>>>>>>
>>>>>>> +        shr     r14,6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     rdi,19
>>>>>>>
>>>>>>> +        xor     r12,r13
>>>>>>>
>>>>>>> +        xor     rdi,r14
>>>>>>>
>>>>>>> +        add     r12,QWORD[32+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12,QWORD[88+rsp]
>>>>>>>
>>>>>>> +        mov     r13,rbx
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +        mov     r14,r9
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,rbx
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     rdi,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[88+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,r9
>>>>>>>
>>>>>>> +        and     rdi,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,r8
>>>>>>>
>>>>>>> +        xor     rdi,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,rbx
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rdi,r9
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdi,r10
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     r8,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15,rdi
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r8,r15
>>>>>>>
>>>>>>> +        add     rax,r12
>>>>>>>
>>>>>>> +        add     r8,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>
>>>>>>> +        mov     r13,QWORD[104+rsp]
>>>>>>>
>>>>>>> +        mov     r15,QWORD[80+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12,r13
>>>>>>>
>>>>>>> +        ror     r13,7
>>>>>>>
>>>>>>> +        add     r8,r14
>>>>>>>
>>>>>>> +        mov     r14,r15
>>>>>>>
>>>>>>> +        ror     r15,42
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r12
>>>>>>>
>>>>>>> +        shr     r12,7
>>>>>>>
>>>>>>> +        ror     r13,1
>>>>>>>
>>>>>>> +        xor     r15,r14
>>>>>>>
>>>>>>> +        shr     r14,6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r15,19
>>>>>>>
>>>>>>> +        xor     r12,r13
>>>>>>>
>>>>>>> +        xor     r15,r14
>>>>>>>
>>>>>>> +        add     r12,QWORD[40+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12,QWORD[96+rsp]
>>>>>>>
>>>>>>> +        mov     r13,rax
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +        mov     r14,r8
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     r15,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,rax
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     r15,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[96+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,r8
>>>>>>>
>>>>>>> +        and     r15,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,rdx
>>>>>>>
>>>>>>> +        xor     r15,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,rax
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15,r8
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15,r9
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     rdx,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     rdi,r15
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdx,rdi
>>>>>>>
>>>>>>> +        add     r11,r12
>>>>>>>
>>>>>>> +        add     rdx,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>
>>>>>>> +        mov     r13,QWORD[112+rsp]
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[88+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12,r13
>>>>>>>
>>>>>>> +        ror     r13,7
>>>>>>>
>>>>>>> +        add     rdx,r14
>>>>>>>
>>>>>>> +        mov     r14,rdi
>>>>>>>
>>>>>>> +        ror     rdi,42
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r12
>>>>>>>
>>>>>>> +        shr     r12,7
>>>>>>>
>>>>>>> +        ror     r13,1
>>>>>>>
>>>>>>> +        xor     rdi,r14
>>>>>>>
>>>>>>> +        shr     r14,6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     rdi,19
>>>>>>>
>>>>>>> +        xor     r12,r13
>>>>>>>
>>>>>>> +        xor     rdi,r14
>>>>>>>
>>>>>>> +        add     r12,QWORD[48+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12,QWORD[104+rsp]
>>>>>>>
>>>>>>> +        mov     r13,r11
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +        mov     r14,rdx
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     rdi,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r11
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     rdi,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[104+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,rdx
>>>>>>>
>>>>>>> +        and     rdi,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,rcx
>>>>>>>
>>>>>>> +        xor     rdi,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,r11
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rdi,rdx
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdi,r8
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     rcx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15,rdi
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rcx,r15
>>>>>>>
>>>>>>> +        add     r10,r12
>>>>>>>
>>>>>>> +        add     rcx,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>
>>>>>>> +        mov     r13,QWORD[120+rsp]
>>>>>>>
>>>>>>> +        mov     r15,QWORD[96+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12,r13
>>>>>>>
>>>>>>> +        ror     r13,7
>>>>>>>
>>>>>>> +        add     rcx,r14
>>>>>>>
>>>>>>> +        mov     r14,r15
>>>>>>>
>>>>>>> +        ror     r15,42
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r12
>>>>>>>
>>>>>>> +        shr     r12,7
>>>>>>>
>>>>>>> +        ror     r13,1
>>>>>>>
>>>>>>> +        xor     r15,r14
>>>>>>>
>>>>>>> +        shr     r14,6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r15,19
>>>>>>>
>>>>>>> +        xor     r12,r13
>>>>>>>
>>>>>>> +        xor     r15,r14
>>>>>>>
>>>>>>> +        add     r12,QWORD[56+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12,QWORD[112+rsp]
>>>>>>>
>>>>>>> +        mov     r13,r10
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +        mov     r14,rcx
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     r15,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r10
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     r15,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[112+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,rcx
>>>>>>>
>>>>>>> +        and     r15,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,rbx
>>>>>>>
>>>>>>> +        xor     r15,rax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,r10
>>>>>>>
>>>>>>> +        add     r12,r15
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r15,rcx
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r15,rdx
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     rbx,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     rdi,r15
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rbx,rdi
>>>>>>>
>>>>>>> +        add     r9,r12
>>>>>>>
>>>>>>> +        add     rbx,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>
>>>>>>> +        mov     r13,QWORD[rsp]
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[104+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r12,r13
>>>>>>>
>>>>>>> +        ror     r13,7
>>>>>>>
>>>>>>> +        add     rbx,r14
>>>>>>>
>>>>>>> +        mov     r14,rdi
>>>>>>>
>>>>>>> +        ror     rdi,42
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r12
>>>>>>>
>>>>>>> +        shr     r12,7
>>>>>>>
>>>>>>> +        ror     r13,1
>>>>>>>
>>>>>>> +        xor     rdi,r14
>>>>>>>
>>>>>>> +        shr     r14,6
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     rdi,19
>>>>>>>
>>>>>>> +        xor     r12,r13
>>>>>>>
>>>>>>> +        xor     rdi,r14
>>>>>>>
>>>>>>> +        add     r12,QWORD[64+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        add     r12,QWORD[120+rsp]
>>>>>>>
>>>>>>> +        mov     r13,r9
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +        mov     r14,rbx
>>>>>>>
>>>>>>> +        ror     r13,23
>>>>>>>
>>>>>>> +        mov     rdi,r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     r13,r9
>>>>>>>
>>>>>>> +        ror     r14,5
>>>>>>>
>>>>>>> +        xor     rdi,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     QWORD[120+rsp],r12
>>>>>>>
>>>>>>> +        xor     r14,rbx
>>>>>>>
>>>>>>> +        and     rdi,r9
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r13,4
>>>>>>>
>>>>>>> +        add     r12,rax
>>>>>>>
>>>>>>> +        xor     rdi,r11
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        ror     r14,6
>>>>>>>
>>>>>>> +        xor     r13,r9
>>>>>>>
>>>>>>> +        add     r12,rdi
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rdi,rbx
>>>>>>>
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>
>>>>>>> +        xor     r14,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rdi,rcx
>>>>>>>
>>>>>>> +        ror     r13,14
>>>>>>>
>>>>>>> +        mov     rax,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     r15,rdi
>>>>>>>
>>>>>>> +        ror     r14,28
>>>>>>>
>>>>>>> +        add     r12,r13
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rax,r15
>>>>>>>
>>>>>>> +        add     r8,r12
>>>>>>>
>>>>>>> +        add     rax,r12
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>
>>>>>>> +        cmp     BYTE[7+rbp],0
>>>>>>>
>>>>>>> +        jnz     NEAR $L$rounds_16_xx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[((128+0))+rsp]
>>>>>>>
>>>>>>> +        add     rax,r14
>>>>>>>
>>>>>>> +        lea     rsi,[128+rsi]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[((128+16))+rsp]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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[152+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$epilogue:
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$SEH_end_sha512_block_data_order:
>>>>>>>
>>>>>>> +ALIGN   64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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      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
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +se_handler:
>>>>>>>
>>>>>>> +        push    rsi
>>>>>>>
>>>>>>> +        push    rdi
>>>>>>>
>>>>>>> +        push    rbx
>>>>>>>
>>>>>>> +        push    rbp
>>>>>>>
>>>>>>> +        push    r12
>>>>>>>
>>>>>>> +        push    r13
>>>>>>>
>>>>>>> +        push    r14
>>>>>>>
>>>>>>> +        push    r15
>>>>>>>
>>>>>>> +        pushfq
>>>>>>>
>>>>>>> +        sub     rsp,64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>>
>>>>>>> +        mov     rsi,rax
>>>>>>>
>>>>>>> +        mov     rax,QWORD[((128+24))+rax]
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        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,[$L$epilogue]
>>>>>>>
>>>>>>> +        cmp     rbx,r10
>>>>>>>
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        lea     rsi,[((128+32))+rsi]
>>>>>>>
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>
>>>>>>> +        mov     ecx,12
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$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[40+r9]
>>>>>>>
>>>>>>> +        mov     rsi,r8
>>>>>>>
>>>>>>> +        mov     ecx,154
>>>>>>>
>>>>>>> +        DD      0xa548f3fc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rsi,r9
>>>>>>>
>>>>>>> +        xor     rcx,rcx
>>>>>>>
>>>>>>> +        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
>>>>>>>
>>>>>>> +        popfq
>>>>>>>
>>>>>>> +        pop     r15
>>>>>>>
>>>>>>> +        pop     r14
>>>>>>>
>>>>>>> +        pop     r13
>>>>>>>
>>>>>>> +        pop     r12
>>>>>>>
>>>>>>> +        pop     rbp
>>>>>>>
>>>>>>> +        pop     rbx
>>>>>>>
>>>>>>> +        pop     rdi
>>>>>>>
>>>>>>> +        pop     rsi
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +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/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
>>>>>>> b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..2a3d5bcf72
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
>>>>>>> @@ -0,0 +1,491 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>>
>>>>>>> +; Generated from openssl/crypto/x86_64cpuid.pl
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>>
>>>>>>> +;
>>>>>>>
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>
>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>> copy
>>>>>>>
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +default rel
>>>>>>>
>>>>>>> +%define XMMWORD
>>>>>>>
>>>>>>> +%define YMMWORD
>>>>>>>
>>>>>>> +%define ZMMWORD
>>>>>>>
>>>>>>> +EXTERN  OPENSSL_cpuid_setup
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +section .CRT$XCU rdata align=8
>>>>>>>
>>>>>>> +                DQ      OPENSSL_cpuid_setup
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +common  OPENSSL_ia32cap_P 16
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +section .text code align=64
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  OPENSSL_atomic_add
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +OPENSSL_atomic_add:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     eax,DWORD[rcx]
>>>>>>>
>>>>>>> +$L$spin:        lea     r8,[rax*1+rdx]
>>>>>>>
>>>>>>> +DB      0xf0
>>>>>>>
>>>>>>> +        cmpxchg DWORD[rcx],r8d
>>>>>>>
>>>>>>> +        jne     NEAR $L$spin
>>>>>>>
>>>>>>> +        mov     eax,r8d
>>>>>>>
>>>>>>> +DB      0x48,0x98
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  OPENSSL_rdtsc
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +OPENSSL_rdtsc:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        rdtsc
>>>>>>>
>>>>>>> +        shl     rdx,32
>>>>>>>
>>>>>>> +        or      rax,rdx
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  OPENSSL_ia32_cpuid
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +OPENSSL_ia32_cpuid:
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>
>>>>>>> +        mov     rax,rsp
>>>>>>>
>>>>>>> +$L$SEH_begin_OPENSSL_ia32_cpuid:
>>>>>>>
>>>>>>> +        mov     rdi,rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r8,rbx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     eax,eax
>>>>>>>
>>>>>>> +        mov     QWORD[8+rdi],rax
>>>>>>>
>>>>>>> +        cpuid
>>>>>>>
>>>>>>> +        mov     r11d,eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     eax,eax
>>>>>>>
>>>>>>> +        cmp     ebx,0x756e6547
>>>>>>>
>>>>>>> +        setne   al
>>>>>>>
>>>>>>> +        mov     r9d,eax
>>>>>>>
>>>>>>> +        cmp     edx,0x49656e69
>>>>>>>
>>>>>>> +        setne   al
>>>>>>>
>>>>>>> +        or      r9d,eax
>>>>>>>
>>>>>>> +        cmp     ecx,0x6c65746e
>>>>>>>
>>>>>>> +        setne   al
>>>>>>>
>>>>>>> +        or      r9d,eax
>>>>>>>
>>>>>>> +        jz      NEAR $L$intel
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        cmp     ebx,0x68747541
>>>>>>>
>>>>>>> +        setne   al
>>>>>>>
>>>>>>> +        mov     r10d,eax
>>>>>>>
>>>>>>> +        cmp     edx,0x69746E65
>>>>>>>
>>>>>>> +        setne   al
>>>>>>>
>>>>>>> +        or      r10d,eax
>>>>>>>
>>>>>>> +        cmp     ecx,0x444D4163
>>>>>>>
>>>>>>> +        setne   al
>>>>>>>
>>>>>>> +        or      r10d,eax
>>>>>>>
>>>>>>> +        jnz     NEAR $L$intel
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     eax,0x80000000
>>>>>>>
>>>>>>> +        cpuid
>>>>>>>
>>>>>>> +        cmp     eax,0x80000001
>>>>>>>
>>>>>>> +        jb      NEAR $L$intel
>>>>>>>
>>>>>>> +        mov     r10d,eax
>>>>>>>
>>>>>>> +        mov     eax,0x80000001
>>>>>>>
>>>>>>> +        cpuid
>>>>>>>
>>>>>>> +        or      r9d,ecx
>>>>>>>
>>>>>>> +        and     r9d,0x00000801
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        cmp     r10d,0x80000008
>>>>>>>
>>>>>>> +        jb      NEAR $L$intel
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     eax,0x80000008
>>>>>>>
>>>>>>> +        cpuid
>>>>>>>
>>>>>>> +        movzx   r10,cl
>>>>>>>
>>>>>>> +        inc     r10
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     eax,1
>>>>>>>
>>>>>>> +        cpuid
>>>>>>>
>>>>>>> +        bt      edx,28
>>>>>>>
>>>>>>> +        jnc     NEAR $L$generic
>>>>>>>
>>>>>>> +        shr     ebx,16
>>>>>>>
>>>>>>> +        cmp     bl,r10b
>>>>>>>
>>>>>>> +        ja      NEAR $L$generic
>>>>>>>
>>>>>>> +        and     edx,0xefffffff
>>>>>>>
>>>>>>> +        jmp     NEAR $L$generic
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$intel:
>>>>>>>
>>>>>>> +        cmp     r11d,4
>>>>>>>
>>>>>>> +        mov     r10d,-1
>>>>>>>
>>>>>>> +        jb      NEAR $L$nocacheinfo
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     eax,4
>>>>>>>
>>>>>>> +        mov     ecx,0
>>>>>>>
>>>>>>> +        cpuid
>>>>>>>
>>>>>>> +        mov     r10d,eax
>>>>>>>
>>>>>>> +        shr     r10d,14
>>>>>>>
>>>>>>> +        and     r10d,0xfff
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$nocacheinfo:
>>>>>>>
>>>>>>> +        mov     eax,1
>>>>>>>
>>>>>>> +        cpuid
>>>>>>>
>>>>>>> +        movd    xmm0,eax
>>>>>>>
>>>>>>> +        and     edx,0xbfefffff
>>>>>>>
>>>>>>> +        cmp     r9d,0
>>>>>>>
>>>>>>> +        jne     NEAR $L$notintel
>>>>>>>
>>>>>>> +        or      edx,0x40000000
>>>>>>>
>>>>>>> +        and     ah,15
>>>>>>>
>>>>>>> +        cmp     ah,15
>>>>>>>
>>>>>>> +        jne     NEAR $L$notP4
>>>>>>>
>>>>>>> +        or      edx,0x00100000
>>>>>>>
>>>>>>> +$L$notP4:
>>>>>>>
>>>>>>> +        cmp     ah,6
>>>>>>>
>>>>>>> +        jne     NEAR $L$notintel
>>>>>>>
>>>>>>> +        and     eax,0x0fff0ff0
>>>>>>>
>>>>>>> +        cmp     eax,0x00050670
>>>>>>>
>>>>>>> +        je      NEAR $L$knights
>>>>>>>
>>>>>>> +        cmp     eax,0x00080650
>>>>>>>
>>>>>>> +        jne     NEAR $L$notintel
>>>>>>>
>>>>>>> +$L$knights:
>>>>>>>
>>>>>>> +        and     ecx,0xfbffffff
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$notintel:
>>>>>>>
>>>>>>> +        bt      edx,28
>>>>>>>
>>>>>>> +        jnc     NEAR $L$generic
>>>>>>>
>>>>>>> +        and     edx,0xefffffff
>>>>>>>
>>>>>>> +        cmp     r10d,0
>>>>>>>
>>>>>>> +        je      NEAR $L$generic
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        or      edx,0x10000000
>>>>>>>
>>>>>>> +        shr     ebx,16
>>>>>>>
>>>>>>> +        cmp     bl,1
>>>>>>>
>>>>>>> +        ja      NEAR $L$generic
>>>>>>>
>>>>>>> +        and     edx,0xefffffff
>>>>>>>
>>>>>>> +$L$generic:
>>>>>>>
>>>>>>> +        and     r9d,0x00000800
>>>>>>>
>>>>>>> +        and     ecx,0xfffff7ff
>>>>>>>
>>>>>>> +        or      r9d,ecx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10d,edx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        cmp     r11d,7
>>>>>>>
>>>>>>> +        jb      NEAR $L$no_extended_info
>>>>>>>
>>>>>>> +        mov     eax,7
>>>>>>>
>>>>>>> +        xor     ecx,ecx
>>>>>>>
>>>>>>> +        cpuid
>>>>>>>
>>>>>>> +        bt      r9d,26
>>>>>>>
>>>>>>> +        jc      NEAR $L$notknights
>>>>>>>
>>>>>>> +        and     ebx,0xfff7ffff
>>>>>>>
>>>>>>> +$L$notknights:
>>>>>>>
>>>>>>> +        movd    eax,xmm0
>>>>>>>
>>>>>>> +        and     eax,0x0fff0ff0
>>>>>>>
>>>>>>> +        cmp     eax,0x00050650
>>>>>>>
>>>>>>> +        jne     NEAR $L$notskylakex
>>>>>>>
>>>>>>> +        and     ebx,0xfffeffff
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$notskylakex:
>>>>>>>
>>>>>>> +        mov     DWORD[8+rdi],ebx
>>>>>>>
>>>>>>> +        mov     DWORD[12+rdi],ecx
>>>>>>>
>>>>>>> +$L$no_extended_info:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        bt      r9d,27
>>>>>>>
>>>>>>> +        jnc     NEAR $L$clear_avx
>>>>>>>
>>>>>>> +        xor     ecx,ecx
>>>>>>>
>>>>>>> +DB      0x0f,0x01,0xd0
>>>>>>>
>>>>>>> +        and     eax,0xe6
>>>>>>>
>>>>>>> +        cmp     eax,0xe6
>>>>>>>
>>>>>>> +        je      NEAR $L$done
>>>>>>>
>>>>>>> +        and     DWORD[8+rdi],0x3fdeffff
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        and     eax,6
>>>>>>>
>>>>>>> +        cmp     eax,6
>>>>>>>
>>>>>>> +        je      NEAR $L$done
>>>>>>>
>>>>>>> +$L$clear_avx:
>>>>>>>
>>>>>>> +        mov     eax,0xefffe7ff
>>>>>>>
>>>>>>> +        and     r9d,eax
>>>>>>>
>>>>>>> +        mov     eax,0x3fdeffdf
>>>>>>>
>>>>>>> +        and     DWORD[8+rdi],eax
>>>>>>>
>>>>>>> +$L$done:
>>>>>>>
>>>>>>> +        shl     r9,32
>>>>>>>
>>>>>>> +        mov     eax,r10d
>>>>>>>
>>>>>>> +        mov     rbx,r8
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        or      rax,r9
>>>>>>>
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$SEH_end_OPENSSL_ia32_cpuid:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  OPENSSL_cleanse
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +OPENSSL_cleanse:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rax,rax
>>>>>>>
>>>>>>> +        cmp     rdx,15
>>>>>>>
>>>>>>> +        jae     NEAR $L$ot
>>>>>>>
>>>>>>> +        cmp     rdx,0
>>>>>>>
>>>>>>> +        je      NEAR $L$ret
>>>>>>>
>>>>>>> +$L$ittle:
>>>>>>>
>>>>>>> +        mov     BYTE[rcx],al
>>>>>>>
>>>>>>> +        sub     rdx,1
>>>>>>>
>>>>>>> +        lea     rcx,[1+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$ittle
>>>>>>>
>>>>>>> +$L$ret:
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$ot:
>>>>>>>
>>>>>>> +        test    rcx,7
>>>>>>>
>>>>>>> +        jz      NEAR $L$aligned
>>>>>>>
>>>>>>> +        mov     BYTE[rcx],al
>>>>>>>
>>>>>>> +        lea     rdx,[((-1))+rdx]
>>>>>>>
>>>>>>> +        lea     rcx,[1+rcx]
>>>>>>>
>>>>>>> +        jmp     NEAR $L$ot
>>>>>>>
>>>>>>> +$L$aligned:
>>>>>>>
>>>>>>> +        mov     QWORD[rcx],rax
>>>>>>>
>>>>>>> +        lea     rdx,[((-8))+rdx]
>>>>>>>
>>>>>>> +        test    rdx,-8
>>>>>>>
>>>>>>> +        lea     rcx,[8+rcx]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$aligned
>>>>>>>
>>>>>>> +        cmp     rdx,0
>>>>>>>
>>>>>>> +        jne     NEAR $L$ittle
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  CRYPTO_memcmp
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +CRYPTO_memcmp:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rax,rax
>>>>>>>
>>>>>>> +        xor     r10,r10
>>>>>>>
>>>>>>> +        cmp     r8,0
>>>>>>>
>>>>>>> +        je      NEAR $L$no_data
>>>>>>>
>>>>>>> +        cmp     r8,16
>>>>>>>
>>>>>>> +        jne     NEAR $L$oop_cmp
>>>>>>>
>>>>>>> +        mov     r10,QWORD[rcx]
>>>>>>>
>>>>>>> +        mov     r11,QWORD[8+rcx]
>>>>>>>
>>>>>>> +        mov     r8,1
>>>>>>>
>>>>>>> +        xor     r10,QWORD[rdx]
>>>>>>>
>>>>>>> +        xor     r11,QWORD[8+rdx]
>>>>>>>
>>>>>>> +        or      r10,r11
>>>>>>>
>>>>>>> +        cmovnz  rax,r8
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$oop_cmp:
>>>>>>>
>>>>>>> +        mov     r10b,BYTE[rcx]
>>>>>>>
>>>>>>> +        lea     rcx,[1+rcx]
>>>>>>>
>>>>>>> +        xor     r10b,BYTE[rdx]
>>>>>>>
>>>>>>> +        lea     rdx,[1+rdx]
>>>>>>>
>>>>>>> +        or      al,r10b
>>>>>>>
>>>>>>> +        dec     r8
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_cmp
>>>>>>>
>>>>>>> +        neg     rax
>>>>>>>
>>>>>>> +        shr     rax,63
>>>>>>>
>>>>>>> +$L$no_data:
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  OPENSSL_wipe_cpu
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +OPENSSL_wipe_cpu:
>>>>>>>
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>
>>>>>>> +        xor     rcx,rcx
>>>>>>>
>>>>>>> +        xor     rdx,rdx
>>>>>>>
>>>>>>> +        xor     r8,r8
>>>>>>>
>>>>>>> +        xor     r9,r9
>>>>>>>
>>>>>>> +        xor     r10,r10
>>>>>>>
>>>>>>> +        xor     r11,r11
>>>>>>>
>>>>>>> +        lea     rax,[8+rsp]
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  OPENSSL_instrument_bus
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +OPENSSL_instrument_bus:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10,rcx
>>>>>>>
>>>>>>> +        mov     rcx,rdx
>>>>>>>
>>>>>>> +        mov     r11,rdx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        rdtsc
>>>>>>>
>>>>>>> +        mov     r8d,eax
>>>>>>>
>>>>>>> +        mov     r9d,0
>>>>>>>
>>>>>>> +        clflush [r10]
>>>>>>>
>>>>>>> +DB      0xf0
>>>>>>>
>>>>>>> +        add     DWORD[r10],r9d
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$oop: rdtsc
>>>>>>>
>>>>>>> +        mov     edx,eax
>>>>>>>
>>>>>>> +        sub     eax,r8d
>>>>>>>
>>>>>>> +        mov     r8d,edx
>>>>>>>
>>>>>>> +        mov     r9d,eax
>>>>>>>
>>>>>>> +        clflush [r10]
>>>>>>>
>>>>>>> +DB      0xf0
>>>>>>>
>>>>>>> +        add     DWORD[r10],eax
>>>>>>>
>>>>>>> +        lea     r10,[4+r10]
>>>>>>>
>>>>>>> +        sub     rcx,1
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     rax,r11
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  OPENSSL_instrument_bus2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +OPENSSL_instrument_bus2:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r10,rcx
>>>>>>>
>>>>>>> +        mov     rcx,rdx
>>>>>>>
>>>>>>> +        mov     r11,r8
>>>>>>>
>>>>>>> +        mov     QWORD[8+rsp],rcx
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        rdtsc
>>>>>>>
>>>>>>> +        mov     r8d,eax
>>>>>>>
>>>>>>> +        mov     r9d,0
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        clflush [r10]
>>>>>>>
>>>>>>> +DB      0xf0
>>>>>>>
>>>>>>> +        add     DWORD[r10],r9d
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        rdtsc
>>>>>>>
>>>>>>> +        mov     edx,eax
>>>>>>>
>>>>>>> +        sub     eax,r8d
>>>>>>>
>>>>>>> +        mov     r8d,edx
>>>>>>>
>>>>>>> +        mov     r9d,eax
>>>>>>>
>>>>>>> +$L$oop2:
>>>>>>>
>>>>>>> +        clflush [r10]
>>>>>>>
>>>>>>> +DB      0xf0
>>>>>>>
>>>>>>> +        add     DWORD[r10],eax
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        sub     r11,1
>>>>>>>
>>>>>>> +        jz      NEAR $L$done2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        rdtsc
>>>>>>>
>>>>>>> +        mov     edx,eax
>>>>>>>
>>>>>>> +        sub     eax,r8d
>>>>>>>
>>>>>>> +        mov     r8d,edx
>>>>>>>
>>>>>>> +        cmp     eax,r9d
>>>>>>>
>>>>>>> +        mov     r9d,eax
>>>>>>>
>>>>>>> +        mov     edx,0
>>>>>>>
>>>>>>> +        setne   dl
>>>>>>>
>>>>>>> +        sub     rcx,rdx
>>>>>>>
>>>>>>> +        lea     r10,[rdx*4+r10]
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop2
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$done2:
>>>>>>>
>>>>>>> +        mov     rax,QWORD[8+rsp]
>>>>>>>
>>>>>>> +        sub     rax,rcx
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  OPENSSL_ia32_rdrand_bytes
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +OPENSSL_ia32_rdrand_bytes:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rax,rax
>>>>>>>
>>>>>>> +        cmp     rdx,0
>>>>>>>
>>>>>>> +        je      NEAR $L$done_rdrand_bytes
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r11,8
>>>>>>>
>>>>>>> +$L$oop_rdrand_bytes:
>>>>>>>
>>>>>>> +DB      73,15,199,242
>>>>>>>
>>>>>>> +        jc      NEAR $L$break_rdrand_bytes
>>>>>>>
>>>>>>> +        dec     r11
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_rdrand_bytes
>>>>>>>
>>>>>>> +        jmp     NEAR $L$done_rdrand_bytes
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$break_rdrand_bytes:
>>>>>>>
>>>>>>> +        cmp     rdx,8
>>>>>>>
>>>>>>> +        jb      NEAR $L$tail_rdrand_bytes
>>>>>>>
>>>>>>> +        mov     QWORD[rcx],r10
>>>>>>>
>>>>>>> +        lea     rcx,[8+rcx]
>>>>>>>
>>>>>>> +        add     rax,8
>>>>>>>
>>>>>>> +        sub     rdx,8
>>>>>>>
>>>>>>> +        jz      NEAR $L$done_rdrand_bytes
>>>>>>>
>>>>>>> +        mov     r11,8
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_rdrand_bytes
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$tail_rdrand_bytes:
>>>>>>>
>>>>>>> +        mov     BYTE[rcx],r10b
>>>>>>>
>>>>>>> +        lea     rcx,[1+rcx]
>>>>>>>
>>>>>>> +        inc     rax
>>>>>>>
>>>>>>> +        shr     r10,8
>>>>>>>
>>>>>>> +        dec     rdx
>>>>>>>
>>>>>>> +        jnz     NEAR $L$tail_rdrand_bytes
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$done_rdrand_bytes:
>>>>>>>
>>>>>>> +        xor     r10,r10
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +global  OPENSSL_ia32_rdseed_bytes
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +OPENSSL_ia32_rdseed_bytes:
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        xor     rax,rax
>>>>>>>
>>>>>>> +        cmp     rdx,0
>>>>>>>
>>>>>>> +        je      NEAR $L$done_rdseed_bytes
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +        mov     r11,8
>>>>>>>
>>>>>>> +$L$oop_rdseed_bytes:
>>>>>>>
>>>>>>> +DB      73,15,199,250
>>>>>>>
>>>>>>> +        jc      NEAR $L$break_rdseed_bytes
>>>>>>>
>>>>>>> +        dec     r11
>>>>>>>
>>>>>>> +        jnz     NEAR $L$oop_rdseed_bytes
>>>>>>>
>>>>>>> +        jmp     NEAR $L$done_rdseed_bytes
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$break_rdseed_bytes:
>>>>>>>
>>>>>>> +        cmp     rdx,8
>>>>>>>
>>>>>>> +        jb      NEAR $L$tail_rdseed_bytes
>>>>>>>
>>>>>>> +        mov     QWORD[rcx],r10
>>>>>>>
>>>>>>> +        lea     rcx,[8+rcx]
>>>>>>>
>>>>>>> +        add     rax,8
>>>>>>>
>>>>>>> +        sub     rdx,8
>>>>>>>
>>>>>>> +        jz      NEAR $L$done_rdseed_bytes
>>>>>>>
>>>>>>> +        mov     r11,8
>>>>>>>
>>>>>>> +        jmp     NEAR $L$oop_rdseed_bytes
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +ALIGN   16
>>>>>>>
>>>>>>> +$L$tail_rdseed_bytes:
>>>>>>>
>>>>>>> +        mov     BYTE[rcx],r10b
>>>>>>>
>>>>>>> +        lea     rcx,[1+rcx]
>>>>>>>
>>>>>>> +        inc     rax
>>>>>>>
>>>>>>> +        shr     r10,8
>>>>>>>
>>>>>>> +        dec     rdx
>>>>>>>
>>>>>>> +        jnz     NEAR $L$tail_rdseed_bytes
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +$L$done_rdseed_bytes:
>>>>>>>
>>>>>>> +        xor     r10,r10
>>>>>>>
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> +
>>>>>>>
>>>>>>> --
>>>>>>> 2.28.0.windows.1
> 
> 
> 
> 

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

* Re: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
  2020-08-13 15:03   ` Yao, Jiewen
@ 2020-08-18 22:49     ` Zurcher, Christopher J
       [not found]     ` <162C7E6ED8CEF542.12673@groups.io>
  1 sibling, 0 replies; 42+ messages in thread
From: Zurcher, Christopher J @ 2020-08-18 22:49 UTC (permalink / raw)
  To: Yao, Jiewen, devel@edk2.groups.io
  Cc: Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel

After further review, the ApiHooks.c file may no longer be needed since we are no longer including the AVX instructions. I will look over the dependencies and send a new patch set if I can eliminate the API hooks file.

Thanks,
Christopher Zurcher

> -----Original Message-----
> From: Yao, Jiewen <jiewen.yao@intel.com>
> Sent: Thursday, August 13, 2020 08:04
> To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> devel@edk2.groups.io
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: RE: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction
> support for X64
> 
> Hi Christopher
> Thanks.
> 
> 1) Would you please help me understand more on "ApiHooks.c contains a stub
> function for a Windows API call" ?
> Why we need this?
> If it is compiler specific in openssl, should we submit patch to openssl to
> exclude this with OPENSSL_SYS_UEFI? That should be a cleaner solution for
> UEFI.
> 
> 2) Would you please describe what compiler you have tried? VS? GCC? LLVM?
> 
> 3) Would you please describe what unit test you have done?
> 
> Thank you
> Yao Jiewen
> 
> 
> > -----Original Message-----
> > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > Sent: Tuesday, August 4, 2020 8:24 AM
> > To: devel@edk2.groups.io
> > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> <jian.j.wang@intel.com>;
> > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> <ard.biesheuvel@linaro.org>
> > Subject: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction
> support
> > for X64
> >
> > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> >
> > Adding OpensslLibX64.inf and modifying process_files.pl to process this
> > file and generate the necessary assembly files.
> > ApiHooks.c contains a stub function for a Windows API call.
> > uefi-asm.conf contains the limited assembly configurations for OpenSSL.
> >
> > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > Cc: Jian J Wang <jian.j.wang@intel.com>
> > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Signed-off-by: Christopher J Zurcher <christopher.j.zurcher@intel.com>
> > ---
> >  CryptoPkg/Library/OpensslLib/OpensslLib.inf          |   2 +-
> >  CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf    |   2 +-
> >  CryptoPkg/Library/OpensslLib/OpensslLibX64.inf       | 656
> > ++++++++++++++++++++
> >  CryptoPkg/Library/Include/openssl/opensslconf.h      |   3 -
> >  CryptoPkg/Library/OpensslLib/ApiHooks.c              |  18 +
> >  CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c |  34 +
> >  CryptoPkg/Library/OpensslLib/process_files.pl        | 223 +++++--
> >  CryptoPkg/Library/OpensslLib/uefi-asm.conf           |  15 +
> >  8 files changed, 903 insertions(+), 50 deletions(-)
> >
> > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > index dbbe5386a1..bd62d86936 100644
> > --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > @@ -16,7 +16,7 @@
> >    VERSION_STRING                 = 1.0
> >
> >    LIBRARY_CLASS                  = OpensslLib
> >
> >    DEFINE OPENSSL_PATH            = openssl
> >
> > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT
> > -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
> >
> > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT
> > -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -
> > DOPENSSL_NO_ASM
> >
> >
> >
> >  #
> >
> >  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
> >
> > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > index 616ccd9f62..2b7324a990 100644
> > --- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > @@ -16,7 +16,7 @@
> >    VERSION_STRING                 = 1.0
> >
> >    LIBRARY_CLASS                  = OpensslLib
> >
> >    DEFINE OPENSSL_PATH            = openssl
> >
> > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT
> > -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
> >
> > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT
> > -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -
> > DOPENSSL_NO_ASM
> >
> >
> >
> >  #
> >
> >  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
> >
> > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > new file mode 100644
> > index 0000000000..825eea0254
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > @@ -0,0 +1,656 @@
> > +## @file
> >
> > +#  This module provides OpenSSL Library implementation.
> >
> > +#
> >
> > +#  Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved.<BR>
> >
> > +#  (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
> >
> > +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > +#
> >
> > +##
> >
> > +
> >
> > +[Defines]
> >
> > +  INF_VERSION                    = 0x00010005
> >
> > +  BASE_NAME                      = OpensslLibX64
> >
> > +  MODULE_UNI_FILE                = OpensslLib.uni
> >
> > +  FILE_GUID                      = 18125E50-0117-4DD0-BE54-4784AD995FEF
> >
> > +  MODULE_TYPE                    = BASE
> >
> > +  VERSION_STRING                 = 1.0
> >
> > +  LIBRARY_CLASS                  = OpensslLib
> >
> > +  DEFINE OPENSSL_PATH            = openssl
> >
> > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT
> > -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
> >
> > +  DEFINE OPENSSL_FLAGS_CONFIG    = -DOPENSSL_CPUID_OBJ -DSHA1_ASM -
> > DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM
> >
> > +  CONSTRUCTOR                    = OpensslLibConstructor
> >
> > +
> >
> > +#
> >
> > +#  VALID_ARCHITECTURES           = X64
> >
> > +#
> >
> > +
> >
> > +[Sources]
> >
> > +  OpensslLibConstructor.c
> >
> > +  $(OPENSSL_PATH)/e_os.h
> >
> > +  $(OPENSSL_PATH)/ms/uplink.h
> >
> > +# Autogenerated files list starts here
> >
> > +  X64/crypto/aes/aesni-mb-x86_64.nasm
> >
> > +  X64/crypto/aes/aesni-sha1-x86_64.nasm
> >
> > +  X64/crypto/aes/aesni-sha256-x86_64.nasm
> >
> > +  X64/crypto/aes/aesni-x86_64.nasm
> >
> > +  X64/crypto/aes/vpaes-x86_64.nasm
> >
> > +  X64/crypto/modes/ghash-x86_64.nasm
> >
> > +  X64/crypto/sha/sha1-mb-x86_64.nasm
> >
> > +  X64/crypto/sha/sha1-x86_64.nasm
> >
> > +  X64/crypto/sha/sha256-mb-x86_64.nasm
> >
> > +  X64/crypto/sha/sha256-x86_64.nasm
> >
> > +  X64/crypto/sha/sha512-x86_64.nasm
> >
> > +  X64/crypto/x86_64cpuid.nasm
> >
> > +  $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
> >
> > +  $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
> >
> > +  $(OPENSSL_PATH)/crypto/aes/aes_core.c
> >
> > +  $(OPENSSL_PATH)/crypto/aes/aes_ige.c
> >
> > +  $(OPENSSL_PATH)/crypto/aes/aes_misc.c
> >
> > +  $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
> >
> > +  $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
> >
> > +  $(OPENSSL_PATH)/crypto/aria/aria.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/a_digest.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/a_dup.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/a_gentm.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/a_int.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/a_object.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/a_octet.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/a_print.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/a_sign.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/a_strex.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/a_strnid.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/a_time.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/a_type.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/a_utctm.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/a_utf8.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/a_verify.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/asn1_err.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/asn1_par.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/asn_mime.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/asn_moid.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/asn_pack.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/f_int.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/f_string.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/n_pkey.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/nsseq.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/t_bitst.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/t_pkey.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/t_spki.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/tasn_new.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/x_algor.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/x_bignum.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/x_info.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/x_int64.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/x_long.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/x_pkey.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/x_sig.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/x_spki.c
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/x_val.c
> >
> > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.c
> >
> > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
> >
> > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.c
> >
> > +  $(OPENSSL_PATH)/crypto/async/async.c
> >
> > +  $(OPENSSL_PATH)/crypto/async/async_err.c
> >
> > +  $(OPENSSL_PATH)/crypto/async/async_wait.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/b_addr.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/b_dump.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/b_sock.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/b_sock2.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/bf_buff.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/bf_nbio.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/bf_null.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/bio_cb.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/bio_err.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/bio_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/bio_meth.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/bss_acpt.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/bss_bio.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/bss_conn.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/bss_dgram.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/bss_fd.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/bss_file.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/bss_log.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/bss_mem.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/bss_null.c
> >
> > +  $(OPENSSL_PATH)/crypto/bio/bss_sock.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_add.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_asm.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_blind.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_const.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_ctx.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_depr.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_dh.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_div.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_err.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_exp.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_exp2.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_gcd.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_intern.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_kron.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_mod.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_mont.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_mpi.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_mul.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_nist.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_print.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_rand.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_recp.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_shift.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_sqr.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_srp.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_word.c
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_x931p.c
> >
> > +  $(OPENSSL_PATH)/crypto/buffer/buf_err.c
> >
> > +  $(OPENSSL_PATH)/crypto/buffer/buffer.c
> >
> > +  $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c
> >
> > +  $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c
> >
> > +  $(OPENSSL_PATH)/crypto/cmac/cmac.c
> >
> > +  $(OPENSSL_PATH)/crypto/comp/c_zlib.c
> >
> > +  $(OPENSSL_PATH)/crypto/comp/comp_err.c
> >
> > +  $(OPENSSL_PATH)/crypto/comp/comp_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/conf/conf_api.c
> >
> > +  $(OPENSSL_PATH)/crypto/conf/conf_def.c
> >
> > +  $(OPENSSL_PATH)/crypto/conf/conf_err.c
> >
> > +  $(OPENSSL_PATH)/crypto/conf/conf_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/conf/conf_mall.c
> >
> > +  $(OPENSSL_PATH)/crypto/conf/conf_mod.c
> >
> > +  $(OPENSSL_PATH)/crypto/conf/conf_sap.c
> >
> > +  $(OPENSSL_PATH)/crypto/conf/conf_ssl.c
> >
> > +  $(OPENSSL_PATH)/crypto/cpt_err.c
> >
> > +  $(OPENSSL_PATH)/crypto/cryptlib.c
> >
> > +  $(OPENSSL_PATH)/crypto/ctype.c
> >
> > +  $(OPENSSL_PATH)/crypto/cversion.c
> >
> > +  $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
> >
> > +  $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
> >
> > +  $(OPENSSL_PATH)/crypto/dh/dh_check.c
> >
> > +  $(OPENSSL_PATH)/crypto/dh/dh_depr.c
> >
> > +  $(OPENSSL_PATH)/crypto/dh/dh_err.c
> >
> > +  $(OPENSSL_PATH)/crypto/dh/dh_gen.c
> >
> > +  $(OPENSSL_PATH)/crypto/dh/dh_kdf.c
> >
> > +  $(OPENSSL_PATH)/crypto/dh/dh_key.c
> >
> > +  $(OPENSSL_PATH)/crypto/dh/dh_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/dh/dh_meth.c
> >
> > +  $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c
> >
> > +  $(OPENSSL_PATH)/crypto/dh/dh_prn.c
> >
> > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
> >
> > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
> >
> > +  $(OPENSSL_PATH)/crypto/dso/dso_dl.c
> >
> > +  $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
> >
> > +  $(OPENSSL_PATH)/crypto/dso/dso_err.c
> >
> > +  $(OPENSSL_PATH)/crypto/dso/dso_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
> >
> > +  $(OPENSSL_PATH)/crypto/dso/dso_vms.c
> >
> > +  $(OPENSSL_PATH)/crypto/dso/dso_win32.c
> >
> > +  $(OPENSSL_PATH)/crypto/ebcdic.c
> >
> > +  $(OPENSSL_PATH)/crypto/err/err.c
> >
> > +  $(OPENSSL_PATH)/crypto/err/err_prn.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/bio_enc.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/bio_md.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/bio_ok.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/c_allc.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/c_alld.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/digest.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_aes.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_aria.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_bf.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_camellia.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_cast.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_des.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_des3.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_idea.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_null.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_old.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_rc2.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_rc4.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_rc5.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_seed.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_sm4.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/encode.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/evp_cnf.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/evp_enc.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/evp_err.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/evp_key.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/evp_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/evp_pbe.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/evp_pkey.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/m_md2.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/m_md4.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/m_md5.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/m_mdc2.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/m_null.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/m_ripemd.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/m_sha1.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/m_sha3.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/m_sigver.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/m_wp.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/names.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/p_dec.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/p_enc.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/p_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/p_open.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/p_seal.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/p_sign.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/p_verify.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
> >
> > +  $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/ex_data.c
> >
> > +  $(OPENSSL_PATH)/crypto/getenv.c
> >
> > +  $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
> >
> > +  $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c
> >
> > +  $(OPENSSL_PATH)/crypto/hmac/hmac.c
> >
> > +  $(OPENSSL_PATH)/crypto/init.c
> >
> > +  $(OPENSSL_PATH)/crypto/kdf/hkdf.c
> >
> > +  $(OPENSSL_PATH)/crypto/kdf/kdf_err.c
> >
> > +  $(OPENSSL_PATH)/crypto/kdf/scrypt.c
> >
> > +  $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c
> >
> > +  $(OPENSSL_PATH)/crypto/lhash/lh_stats.c
> >
> > +  $(OPENSSL_PATH)/crypto/lhash/lhash.c
> >
> > +  $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
> >
> > +  $(OPENSSL_PATH)/crypto/md5/md5_one.c
> >
> > +  $(OPENSSL_PATH)/crypto/mem.c
> >
> > +  $(OPENSSL_PATH)/crypto/mem_dbg.c
> >
> > +  $(OPENSSL_PATH)/crypto/mem_sec.c
> >
> > +  $(OPENSSL_PATH)/crypto/modes/cbc128.c
> >
> > +  $(OPENSSL_PATH)/crypto/modes/ccm128.c
> >
> > +  $(OPENSSL_PATH)/crypto/modes/cfb128.c
> >
> > +  $(OPENSSL_PATH)/crypto/modes/ctr128.c
> >
> > +  $(OPENSSL_PATH)/crypto/modes/cts128.c
> >
> > +  $(OPENSSL_PATH)/crypto/modes/gcm128.c
> >
> > +  $(OPENSSL_PATH)/crypto/modes/ocb128.c
> >
> > +  $(OPENSSL_PATH)/crypto/modes/ofb128.c
> >
> > +  $(OPENSSL_PATH)/crypto/modes/wrap128.c
> >
> > +  $(OPENSSL_PATH)/crypto/modes/xts128.c
> >
> > +  $(OPENSSL_PATH)/crypto/o_dir.c
> >
> > +  $(OPENSSL_PATH)/crypto/o_fips.c
> >
> > +  $(OPENSSL_PATH)/crypto/o_fopen.c
> >
> > +  $(OPENSSL_PATH)/crypto/o_init.c
> >
> > +  $(OPENSSL_PATH)/crypto/o_str.c
> >
> > +  $(OPENSSL_PATH)/crypto/o_time.c
> >
> > +  $(OPENSSL_PATH)/crypto/objects/o_names.c
> >
> > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.c
> >
> > +  $(OPENSSL_PATH)/crypto/objects/obj_err.c
> >
> > +  $(OPENSSL_PATH)/crypto/objects/obj_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.c
> >
> > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c
> >
> > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c
> >
> > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c
> >
> > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c
> >
> > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c
> >
> > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c
> >
> > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c
> >
> > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c
> >
> > +  $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c
> >
> > +  $(OPENSSL_PATH)/crypto/pem/pem_all.c
> >
> > +  $(OPENSSL_PATH)/crypto/pem/pem_err.c
> >
> > +  $(OPENSSL_PATH)/crypto/pem/pem_info.c
> >
> > +  $(OPENSSL_PATH)/crypto/pem/pem_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/pem/pem_oth.c
> >
> > +  $(OPENSSL_PATH)/crypto/pem/pem_pk8.c
> >
> > +  $(OPENSSL_PATH)/crypto/pem/pem_pkey.c
> >
> > +  $(OPENSSL_PATH)/crypto/pem/pem_sign.c
> >
> > +  $(OPENSSL_PATH)/crypto/pem/pem_x509.c
> >
> > +  $(OPENSSL_PATH)/crypto/pem/pem_xaux.c
> >
> > +  $(OPENSSL_PATH)/crypto/pem/pvkfmt.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c
> >
> > +  $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c
> >
> > +  $(OPENSSL_PATH)/crypto/rand/drbg_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/rand/rand_egd.c
> >
> > +  $(OPENSSL_PATH)/crypto/rand/rand_err.c
> >
> > +  $(OPENSSL_PATH)/crypto/rand/rand_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/rand/rand_unix.c
> >
> > +  $(OPENSSL_PATH)/crypto/rand/rand_vms.c
> >
> > +  $(OPENSSL_PATH)/crypto/rand/rand_win.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_err.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_none.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
> >
> > +  $(OPENSSL_PATH)/crypto/sha/keccak1600.c
> >
> > +  $(OPENSSL_PATH)/crypto/sha/sha1_one.c
> >
> > +  $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
> >
> > +  $(OPENSSL_PATH)/crypto/sha/sha256.c
> >
> > +  $(OPENSSL_PATH)/crypto/sha/sha512.c
> >
> > +  $(OPENSSL_PATH)/crypto/siphash/siphash.c
> >
> > +  $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
> >
> > +  $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> >
> > +  $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
> >
> > +  $(OPENSSL_PATH)/crypto/sm3/sm3.c
> >
> > +  $(OPENSSL_PATH)/crypto/sm4/sm4.c
> >
> > +  $(OPENSSL_PATH)/crypto/stack/stack.c
> >
> > +  $(OPENSSL_PATH)/crypto/threads_none.c
> >
> > +  $(OPENSSL_PATH)/crypto/threads_pthread.c
> >
> > +  $(OPENSSL_PATH)/crypto/threads_win.c
> >
> > +  $(OPENSSL_PATH)/crypto/txt_db/txt_db.c
> >
> > +  $(OPENSSL_PATH)/crypto/ui/ui_err.c
> >
> > +  $(OPENSSL_PATH)/crypto/ui/ui_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/ui/ui_null.c
> >
> > +  $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
> >
> > +  $(OPENSSL_PATH)/crypto/ui/ui_util.c
> >
> > +  $(OPENSSL_PATH)/crypto/uid.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/by_dir.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/by_file.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/t_crl.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/t_req.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/t_x509.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509_att.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509_cmp.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509_d2.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509_def.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509_err.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509_ext.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509_lu.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509_meth.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509_obj.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509_r2x.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509_req.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509_set.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509_trs.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509_txt.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509_v3.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509_vfy.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509_vpm.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509cset.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509name.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509rset.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509spki.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509type.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x_all.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x_attrib.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x_crl.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x_exten.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x_name.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x_pubkey.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x_req.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x_x509.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x_x509a.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_info.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_int.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3err.c
> >
> > +  $(OPENSSL_PATH)/crypto/arm_arch.h
> >
> > +  $(OPENSSL_PATH)/crypto/mips_arch.h
> >
> > +  $(OPENSSL_PATH)/crypto/ppc_arch.h
> >
> > +  $(OPENSSL_PATH)/crypto/s390x_arch.h
> >
> > +  $(OPENSSL_PATH)/crypto/sparc_arch.h
> >
> > +  $(OPENSSL_PATH)/crypto/vms_rms.h
> >
> > +  $(OPENSSL_PATH)/crypto/aes/aes_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/charmap.h
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/standard_methods.h
> >
> > +  $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
> >
> > +  $(OPENSSL_PATH)/crypto/async/async_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.h
> >
> > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.h
> >
> > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.h
> >
> > +  $(OPENSSL_PATH)/crypto/bio/bio_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.h
> >
> > +  $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h
> >
> > +  $(OPENSSL_PATH)/crypto/comp/comp_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/conf/conf_def.h
> >
> > +  $(OPENSSL_PATH)/crypto/conf/conf_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/dh/dh_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/dso/dso_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/evp/evp_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/md5/md5_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/modes/modes_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.h
> >
> > +  $(OPENSSL_PATH)/crypto/objects/obj_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.h
> >
> > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/rand/rand_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/sha/sha_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/store/store_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/ui/ui_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/x509/x509_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h
> >
> > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h
> >
> > +  $(OPENSSL_PATH)/ssl/bio_ssl.c
> >
> > +  $(OPENSSL_PATH)/ssl/d1_lib.c
> >
> > +  $(OPENSSL_PATH)/ssl/d1_msg.c
> >
> > +  $(OPENSSL_PATH)/ssl/d1_srtp.c
> >
> > +  $(OPENSSL_PATH)/ssl/methods.c
> >
> > +  $(OPENSSL_PATH)/ssl/packet.c
> >
> > +  $(OPENSSL_PATH)/ssl/pqueue.c
> >
> > +  $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c
> >
> > +  $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c
> >
> > +  $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c
> >
> > +  $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c
> >
> > +  $(OPENSSL_PATH)/ssl/record/ssl3_record.c
> >
> > +  $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c
> >
> > +  $(OPENSSL_PATH)/ssl/s3_cbc.c
> >
> > +  $(OPENSSL_PATH)/ssl/s3_enc.c
> >
> > +  $(OPENSSL_PATH)/ssl/s3_lib.c
> >
> > +  $(OPENSSL_PATH)/ssl/s3_msg.c
> >
> > +  $(OPENSSL_PATH)/ssl/ssl_asn1.c
> >
> > +  $(OPENSSL_PATH)/ssl/ssl_cert.c
> >
> > +  $(OPENSSL_PATH)/ssl/ssl_ciph.c
> >
> > +  $(OPENSSL_PATH)/ssl/ssl_conf.c
> >
> > +  $(OPENSSL_PATH)/ssl/ssl_err.c
> >
> > +  $(OPENSSL_PATH)/ssl/ssl_init.c
> >
> > +  $(OPENSSL_PATH)/ssl/ssl_lib.c
> >
> > +  $(OPENSSL_PATH)/ssl/ssl_mcnf.c
> >
> > +  $(OPENSSL_PATH)/ssl/ssl_rsa.c
> >
> > +  $(OPENSSL_PATH)/ssl/ssl_sess.c
> >
> > +  $(OPENSSL_PATH)/ssl/ssl_stat.c
> >
> > +  $(OPENSSL_PATH)/ssl/ssl_txt.c
> >
> > +  $(OPENSSL_PATH)/ssl/ssl_utst.c
> >
> > +  $(OPENSSL_PATH)/ssl/statem/extensions.c
> >
> > +  $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c
> >
> > +  $(OPENSSL_PATH)/ssl/statem/extensions_cust.c
> >
> > +  $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c
> >
> > +  $(OPENSSL_PATH)/ssl/statem/statem.c
> >
> > +  $(OPENSSL_PATH)/ssl/statem/statem_clnt.c
> >
> > +  $(OPENSSL_PATH)/ssl/statem/statem_dtls.c
> >
> > +  $(OPENSSL_PATH)/ssl/statem/statem_lib.c
> >
> > +  $(OPENSSL_PATH)/ssl/statem/statem_srvr.c
> >
> > +  $(OPENSSL_PATH)/ssl/t1_enc.c
> >
> > +  $(OPENSSL_PATH)/ssl/t1_lib.c
> >
> > +  $(OPENSSL_PATH)/ssl/t1_trce.c
> >
> > +  $(OPENSSL_PATH)/ssl/tls13_enc.c
> >
> > +  $(OPENSSL_PATH)/ssl/tls_srp.c
> >
> > +  $(OPENSSL_PATH)/ssl/packet_local.h
> >
> > +  $(OPENSSL_PATH)/ssl/ssl_cert_table.h
> >
> > +  $(OPENSSL_PATH)/ssl/ssl_local.h
> >
> > +  $(OPENSSL_PATH)/ssl/record/record.h
> >
> > +  $(OPENSSL_PATH)/ssl/record/record_local.h
> >
> > +  $(OPENSSL_PATH)/ssl/statem/statem.h
> >
> > +  $(OPENSSL_PATH)/ssl/statem/statem_local.h
> >
> > +# Autogenerated files list ends here
> >
> > +  buildinf.h
> >
> > +  rand_pool_noise.h
> >
> > +  ossl_store.c
> >
> > +  rand_pool.c
> >
> > +
> >
> > +[Sources.X64]
> >
> > +  rand_pool_noise_tsc.c
> >
> > +  ApiHooks.c
> >
> > +
> >
> > +[Packages]
> >
> > +  MdePkg/MdePkg.dec
> >
> > +  CryptoPkg/CryptoPkg.dec
> >
> > +
> >
> > +[LibraryClasses]
> >
> > +  BaseLib
> >
> > +  DebugLib
> >
> > +  TimerLib
> >
> > +  PrintLib
> >
> > +
> >
> > +[BuildOptions]
> >
> > +  #
> >
> > +  # Disables the following Visual Studio compiler warnings brought by
> openssl
> > source,
> >
> > +  # so we do not break the build with /WX option:
> >
> > +  #   C4090: 'function' : different 'const' qualifiers
> >
> > +  #   C4132: 'object' : const object should be initialized (tls13_enc.c)
> >
> > +  #   C4210: nonstandard extension used: function given file scope
> >
> > +  #   C4244: conversion from type1 to type2, possible loss of data
> >
> > +  #   C4245: conversion from type1 to type2, signed/unsigned mismatch
> >
> > +  #   C4267: conversion from size_t to type, possible loss of data
> >
> > +  #   C4306: 'identifier' : conversion from 'type1' to 'type2' of greater
> size
> >
> > +  #   C4310: cast truncates constant value
> >
> > +  #   C4389: 'operator' : signed/unsigned mismatch (xxxx)
> >
> > +  #   C4700: uninitialized local variable 'name' used. (conf_sap.c(71))
> >
> > +  #   C4702: unreachable code
> >
> > +  #   C4706: assignment within conditional expression
> >
> > +  #   C4819: The file contains a character that cannot be represented in
> the
> > current code page
> >
> > +  #
> >
> > +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER
> > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132 /wd4210
> > /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700 /wd4389 /wd4702
> > /wd4706 /wd4819
> >
> > +
> >
> > +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> >
> > +
> >
> > +  #
> >
> > +  # Suppress the following build warnings in openssl so we don't break the
> build
> > with -Werror
> >
> > +  #   -Werror=maybe-uninitialized: there exist some other paths for which
> the
> > variable is not initialized.
> >
> > +  #   -Werror=format: Check calls to printf and scanf, etc., to make sure
> that the
> > arguments supplied have
> >
> > +  #                   types appropriate to the format string specified.
> >
> > +  #   -Werror=unused-but-set-variable: Warn whenever a local variable is
> > assigned to, but otherwise unused (aside from its declaration).
> >
> > +  #
> >
> > +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> > $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-
> > error=format -Wno-format -Wno-error=unused-but-set-variable -
> > DNO_MSABI_VA_FUNCS
> >
> > +
> >
> > +  # suppress the following warnings in openssl so we don't break the build
> with
> > warnings-as-errors:
> >
> > +  # 1295: Deprecated declaration <entity> - give arg types
> >
> > +  #  550: <entity> was set but never used
> >
> > +  # 1293: assignment in condition
> >
> > +  #  111: statement is unreachable (invariably "break;" after "return X;"
> in case
> > statement)
> >
> > +  #   68: integer conversion resulted in a change of sign ("if (Status ==
> -1)")
> >
> > +  #  177: <entity> was declared but never referenced
> >
> > +  #  223: function <entity> declared implicitly
> >
> > +  #  144: a value of type <type> cannot be used to initialize an entity of
> type
> > <type>
> >
> > +  #  513: a value of type <type> cannot be assigned to an entity of type
> <type>
> >
> > +  #  188: enumerated type mixed with another type (i.e. passing an integer
> as an
> > enum without a cast)
> >
> > +  # 1296: Extended constant initialiser used
> >
> > +  #  128: loop is not reachable - may be emitted inappropriately if code
> follows
> > a conditional return
> >
> > +  #       from the function that evaluates to true at compile time
> >
> > +  #  546: transfer of control bypasses initialization - may be emitted
> > inappropriately if the uninitialized
> >
> > +  #       variable is never referenced after the jump
> >
> > +  #    1: ignore "#1-D: last line of file ends without a newline"
> >
> > +  # 3017: <entity> may be used before being set (NOTE: This was fixed in
> > OpenSSL 1.1 HEAD with
> >
> > +  #       commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and can be
> > dropped then.)
> >
> > +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -U_WIN64
> > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-
> > error=uninitialized
> >
> > diff --git a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > index 3a2544ea5c..e8f73c4d10 100644
> > --- a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > +++ b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > @@ -112,9 +112,6 @@ extern "C" {
> >  #ifndef OPENSSL_NO_ASAN
> >
> >  # define OPENSSL_NO_ASAN
> >
> >  #endif
> >
> > -#ifndef OPENSSL_NO_ASM
> >
> > -# define OPENSSL_NO_ASM
> >
> > -#endif
> >
> >  #ifndef OPENSSL_NO_ASYNC
> >
> >  # define OPENSSL_NO_ASYNC
> >
> >  #endif
> >
> > diff --git a/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > new file mode 100644
> > index 0000000000..58cff16838
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > @@ -0,0 +1,18 @@
> > +/** @file
> >
> > +  OpenSSL Library API hooks.
> >
> > +
> >
> > +Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
> >
> > +SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > +
> >
> > +**/
> >
> > +
> >
> > +#include <Uefi.h>
> >
> > +
> >
> > +VOID *
> >
> > +__imp_RtlVirtualUnwind (
> >
> > +  VOID *    Args
> >
> > +  )
> >
> > +{
> >
> > +  return NULL;
> >
> > +}
> >
> > +
> >
> > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > new file mode 100644
> > index 0000000000..ef20d2b84e
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > @@ -0,0 +1,34 @@
> > +/** @file
> >
> > +  Constructor to initialize CPUID data for OpenSSL assembly operations.
> >
> > +
> >
> > +Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
> >
> > +SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > +
> >
> > +**/
> >
> > +
> >
> > +#include <Uefi.h>
> >
> > +
> >
> > +extern void OPENSSL_cpuid_setup (void);
> >
> > +
> >
> > +/**
> >
> > +  Constructor routine for OpensslLib.
> >
> > +
> >
> > +  The constructor calls an internal OpenSSL function which fetches a local
> copy
> >
> > +  of the hardware capability flags, used to enable native crypto
> instructions.
> >
> > +
> >
> > +  @param  None
> >
> > +
> >
> > +  @retval EFI_SUCCESS         The construction succeeded.
> >
> > +
> >
> > +**/
> >
> > +EFI_STATUS
> >
> > +EFIAPI
> >
> > +OpensslLibConstructor (
> >
> > +  VOID
> >
> > +  )
> >
> > +{
> >
> > +  OPENSSL_cpuid_setup ();
> >
> > +
> >
> > +  return EFI_SUCCESS;
> >
> > +}
> >
> > +
> >
> > diff --git a/CryptoPkg/Library/OpensslLib/process_files.pl
> > b/CryptoPkg/Library/OpensslLib/process_files.pl
> > index 57ce195394..472f59bc8e 100755
> > --- a/CryptoPkg/Library/OpensslLib/process_files.pl
> > +++ b/CryptoPkg/Library/OpensslLib/process_files.pl
> > @@ -9,9 +9,63 @@
> >  # do not need to do this, since the results are stored in the EDK2
> >
> >  # git repository for them.
> >
> >  #
> >
> > +# Due to the script wrapping required to process the OpenSSL
> >
> > +# configuration data, each native architecture must be processed
> >
> > +# individually by the maintainer (in addition to the standard version):
> >
> > +#   ./process_files.pl
> >
> > +#   ./process_files.pl X64
> >
> > +#   ./process_files.pl [Arch]
> >
> > +
> >
> >  use strict;
> >
> >  use Cwd;
> >
> >  use File::Copy;
> >
> > +use File::Basename;
> >
> > +use File::Path qw(make_path remove_tree);
> >
> > +use Text::Tabs;
> >
> > +
> >
> > +#
> >
> > +# OpenSSL perlasm generator script does not transfer the copyright header
> >
> > +#
> >
> > +sub copy_license_header
> >
> > +{
> >
> > +    my @args = split / /, shift;    #Separate args by spaces
> >
> > +    my $source = $args[1];          #Source file is second (after "perl")
> >
> > +    my $target = pop @args;         #Target file is always last
> >
> > +    chop ($target);                 #Remove newline char
> >
> > +
> >
> > +    my $temp_file_name = "license.tmp";
> >
> > +    open (my $source_file, "<" . $source) || die $source;
> >
> > +    open (my $target_file, "<" . $target) || die $target;
> >
> > +    open (my $temp_file, ">" . $temp_file_name) || die $temp_file_name;
> >
> > +
> >
> > +    #Add "generated file" warning
> >
> > +    $source =~ s/^..//;             #Remove leading "./"
> >
> > +    print ($temp_file "; WARNING: do not edit!\r\n");
> >
> > +    print ($temp_file "; Generated from $source\r\n");
> >
> > +    print ($temp_file ";\r\n");
> >
> > +
> >
> > +    #Copy source file header to temp file
> >
> > +    while (my $line = <$source_file>) {
> >
> > +        next if ($line =~ /#!/);    #Ignore shebang line
> >
> > +        $line =~ s/#/;/;            #Fix comment character for assembly
> >
> > +        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace, fixup line
> endings
> >
> > +        print ($temp_file $line);
> >
> > +        last if ($line =~ /http/);  #Last line of copyright header
> contains a web link
> >
> > +    }
> >
> > +    print ($temp_file "\r\n");
> >
> > +    #Retrieve generated assembly contents
> >
> > +    while (my $line = <$target_file>) {
> >
> > +        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace, fixup line
> endings
> >
> > +        print ($temp_file expand ($line));  #expand() replaces tabs with
> spaces
> >
> > +    }
> >
> > +
> >
> > +    close ($source_file);
> >
> > +    close ($target_file);
> >
> > +    close ($temp_file);
> >
> > +
> >
> > +    move ($temp_file_name, $target) ||
> >
> > +        die "Cannot replace \"" . $target . "\"!";
> >
> > +}
> >
> >
> >
> >  #
> >
> >  # Find the openssl directory name for use lib. We have to do this
> >
> > @@ -21,10 +75,41 @@ use File::Copy;
> >  #
> >
> >  my $inf_file;
> >
> >  my $OPENSSL_PATH;
> >
> > +my $uefi_config;
> >
> > +my $extension;
> >
> > +my $arch;
> >
> >  my @inf;
> >
> >
> >
> >  BEGIN {
> >
> >      $inf_file = "OpensslLib.inf";
> >
> > +    $uefi_config = "UEFI";
> >
> > +    $arch = shift;
> >
> > +
> >
> > +    if (defined $arch) {
> >
> > +        if (uc ($arch) eq "X64") {
> >
> > +            $arch = "X64";
> >
> > +            $inf_file = "OpensslLibX64.inf";
> >
> > +            $uefi_config = "UEFI-x86_64";
> >
> > +            $extension = "nasm";
> >
> > +        } else {
> >
> > +            die "Unsupported architecture \"" . $arch . "\"!";
> >
> > +        }
> >
> > +        if ($extension eq "nasm") {
> >
> > +            if (`nasm -v 2>&1`) {
> >
> > +                #Presence of nasm executable will trigger inclusion of AVX
> instructions
> >
> > +                die "\nCannot run assembly generators with NASM in
> path!\n\n";
> >
> > +            }
> >
> > +        }
> >
> > +
> >
> > +        # Prepare assembly folder
> >
> > +        if (-d $arch) {
> >
> > +            remove_tree ($arch, {safe => 1}) ||
> >
> > +                die "Cannot clean assembly folder \"" . $arch . "\"!";
> >
> > +        } else {
> >
> > +            mkdir $arch ||
> >
> > +                die "Cannot create assembly folder \"" . $arch . "\"!";
> >
> > +        }
> >
> > +    }
> >
> >
> >
> >      # Read the contents of the inf file
> >
> >      open( FD, "<" . $inf_file ) ||
> >
> > @@ -47,9 +132,9 @@ BEGIN {
> >              # Configure UEFI
> >
> >              system(
> >
> >                  "./Configure",
> >
> > -                "UEFI",
> >
> > +                "--config=../uefi-asm.conf",
> >
> > +                "$uefi_config",
> >
> >                  "no-afalgeng",
> >
> > -                "no-asm",
> >
> >                  "no-async",
> >
> >                  "no-autoerrinit",
> >
> >                  "no-autoload-config",
> >
> > @@ -129,23 +214,53 @@ BEGIN {
> >  # Retrieve file lists from OpenSSL configdata
> >
> >  #
> >
> >  use configdata qw/%unified_info/;
> >
> > +use configdata qw/%config/;
> >
> > +use configdata qw/%target/;
> >
> > +
> >
> > +#
> >
> > +# Collect build flags from configdata
> >
> > +#
> >
> > +my $flags = "";
> >
> > +foreach my $f (@{$config{lib_defines}}) {
> >
> > +    $flags .= " -D$f";
> >
> > +}
> >
> >
> >
> >  my @cryptofilelist = ();
> >
> >  my @sslfilelist = ();
> >
> > +my @asmfilelist = ();
> >
> > +my @asmbuild = ();
> >
> >  foreach my $product ((@{$unified_info{libraries}},
> >
> >                        @{$unified_info{engines}})) {
> >
> >      foreach my $o (@{$unified_info{sources}->{$product}}) {
> >
> >          foreach my $s (@{$unified_info{sources}->{$o}}) {
> >
> > -            next if ($unified_info{generate}->{$s});
> >
> > -            next if $s =~ "crypto/bio/b_print.c";
> >
> > -
> >
> >              # No need to add unused files in UEFI.
> >
> >              # So it can reduce porting time, compile time, library size.
> >
> > +            next if $s =~ "crypto/bio/b_print.c";
> >
> >              next if $s =~ "crypto/rand/randfile.c";
> >
> >              next if $s =~ "crypto/store/";
> >
> >              next if $s =~ "crypto/err/err_all.c";
> >
> >              next if $s =~ "crypto/aes/aes_ecb.c";
> >
> >
> >
> > +            if ($unified_info{generate}->{$s}) {
> >
> > +                if (defined $arch) {
> >
> > +                    my $buildstring = "perl";
> >
> > +                    foreach my $arg (@{$unified_info{generate}->{$s}}) {
> >
> > +                        if ($arg =~ ".pl") {
> >
> > +                            $buildstring .= " ./openssl/$arg";
> >
> > +                        } elsif ($arg =~ "PERLASM_SCHEME") {
> >
> > +                            $buildstring .= " $target{perlasm_scheme}";
> >
> > +                        } elsif ($arg =~ "LIB_CFLAGS") {
> >
> > +                            $buildstring .= "$flags";
> >
> > +                        }
> >
> > +                    }
> >
> > +                    ($s, my $path, undef) = fileparse($s, qr/\.[^.]*/);
> >
> > +                    $buildstring .= " ./$arch/$path$s.$extension";
> >
> > +                    make_path ("./$arch/$path");
> >
> > +                    push @asmbuild, "$buildstring\n";
> >
> > +                    push @asmfilelist, "  $arch/$path$s.$extension\r\n";
> >
> > +                }
> >
> > +                next;
> >
> > +            }
> >
> >              if ($product =~ "libssl") {
> >
> >                  push @sslfilelist, '  $(OPENSSL_PATH)/' . $s . "\r\n";
> >
> >                  next;
> >
> > @@ -183,15 +298,31 @@ foreach (@headers){
> >  }
> >
> >
> >
> >
> >
> > +#
> >
> > +# Generate assembly files
> >
> > +#
> >
> > +if (@asmbuild) {
> >
> > +    print "\n--> Generating assembly files ... ";
> >
> > +    foreach my $buildstring (@asmbuild) {
> >
> > +        system ("$buildstring");
> >
> > +        copy_license_header ($buildstring);
> >
> > +    }
> >
> > +    print "Done!";
> >
> > +}
> >
> > +
> >
> >  #
> >
> >  # Update OpensslLib.inf with autogenerated file list
> >
> >  #
> >
> >  my @new_inf = ();
> >
> >  my $subbing = 0;
> >
> > -print "\n--> Updating OpensslLib.inf ... ";
> >
> > +print "\n--> Updating $inf_file ... ";
> >
> >  foreach (@inf) {
> >
> > +    if ($_ =~ "DEFINE OPENSSL_FLAGS_CONFIG") {
> >
> > +        push @new_inf, "  DEFINE OPENSSL_FLAGS_CONFIG    =" . $flags .
> "\r\n";
> >
> > +        next;
> >
> > +    }
> >
> >      if ( $_ =~ "# Autogenerated files list starts here" ) {
> >
> > -        push @new_inf, $_, @cryptofilelist, @sslfilelist;
> >
> > +        push @new_inf, $_, @asmfilelist, @cryptofilelist, @sslfilelist;
> >
> >          $subbing = 1;
> >
> >          next;
> >
> >      }
> >
> > @@ -216,49 +347,51 @@ rename( $new_inf_file, $inf_file ) ||
> >      die "rename $inf_file";
> >
> >  print "Done!";
> >
> >
> >
> > -#
> >
> > -# Update OpensslLibCrypto.inf with auto-generated file list (no libssl)
> >
> > -#
> >
> > -$inf_file = "OpensslLibCrypto.inf";
> >
> > -
> >
> > -# Read the contents of the inf file
> >
> > -@inf = ();
> >
> > -@new_inf = ();
> >
> > -open( FD, "<" . $inf_file ) ||
> >
> > -    die "Cannot open \"" . $inf_file . "\"!";
> >
> > -@inf = (<FD>);
> >
> > -close(FD) ||
> >
> > -    die "Cannot close \"" . $inf_file . "\"!";
> >
> > +if (!defined $arch) {
> >
> > +    #
> >
> > +    # Update OpensslLibCrypto.inf with auto-generated file list (no
> libssl)
> >
> > +    #
> >
> > +    $inf_file = "OpensslLibCrypto.inf";
> >
> >
> >
> > -$subbing = 0;
> >
> > -print "\n--> Updating OpensslLibCrypto.inf ... ";
> >
> > -foreach (@inf) {
> >
> > -    if ( $_ =~ "# Autogenerated files list starts here" ) {
> >
> > -        push @new_inf, $_, @cryptofilelist;
> >
> > -        $subbing = 1;
> >
> > -        next;
> >
> > -    }
> >
> > -    if ( $_ =~ "# Autogenerated files list ends here" ) {
> >
> > -        push @new_inf, $_;
> >
> > -        $subbing = 0;
> >
> > -        next;
> >
> > +    # Read the contents of the inf file
> >
> > +    @inf = ();
> >
> > +    @new_inf = ();
> >
> > +    open( FD, "<" . $inf_file ) ||
> >
> > +        die "Cannot open \"" . $inf_file . "\"!";
> >
> > +    @inf = (<FD>);
> >
> > +    close(FD) ||
> >
> > +        die "Cannot close \"" . $inf_file . "\"!";
> >
> > +
> >
> > +    $subbing = 0;
> >
> > +    print "\n--> Updating OpensslLibCrypto.inf ... ";
> >
> > +    foreach (@inf) {
> >
> > +        if ( $_ =~ "# Autogenerated files list starts here" ) {
> >
> > +            push @new_inf, $_, @cryptofilelist;
> >
> > +            $subbing = 1;
> >
> > +            next;
> >
> > +        }
> >
> > +        if ( $_ =~ "# Autogenerated files list ends here" ) {
> >
> > +            push @new_inf, $_;
> >
> > +            $subbing = 0;
> >
> > +            next;
> >
> > +        }
> >
> > +
> >
> > +        push @new_inf, $_
> >
> > +            unless ($subbing);
> >
> >      }
> >
> >
> >
> > -    push @new_inf, $_
> >
> > -        unless ($subbing);
> >
> > +    $new_inf_file = $inf_file . ".new";
> >
> > +    open( FD, ">" . $new_inf_file ) ||
> >
> > +        die $new_inf_file;
> >
> > +    print( FD @new_inf ) ||
> >
> > +        die $new_inf_file;
> >
> > +    close(FD) ||
> >
> > +        die $new_inf_file;
> >
> > +    rename( $new_inf_file, $inf_file ) ||
> >
> > +        die "rename $inf_file";
> >
> > +    print "Done!";
> >
> >  }
> >
> >
> >
> > -$new_inf_file = $inf_file . ".new";
> >
> > -open( FD, ">" . $new_inf_file ) ||
> >
> > -    die $new_inf_file;
> >
> > -print( FD @new_inf ) ||
> >
> > -    die $new_inf_file;
> >
> > -close(FD) ||
> >
> > -    die $new_inf_file;
> >
> > -rename( $new_inf_file, $inf_file ) ||
> >
> > -    die "rename $inf_file";
> >
> > -print "Done!";
> >
> > -
> >
> >  #
> >
> >  # Copy opensslconf.h and dso_conf.h generated from OpenSSL Configuration
> >
> >  #
> >
> > diff --git a/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > new file mode 100644
> > index 0000000000..55eedbf3ba
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > @@ -0,0 +1,15 @@
> > +## -*- mode: perl; -*-
> >
> > +## UEFI assembly openssl configuration targets.
> >
> > +
> >
> > +my %targets = (
> >
> > +#### UEFI
> >
> > +    "UEFI-x86_64" => {
> >
> > +        perlasm_scheme  => "nasm",
> >
> > +        # inherit_from    => [ "UEFI",  asm("x86_64_asm") ],
> >
> > +        inherit_from    => [ "UEFI" ],
> >
> > +        cpuid_asm_src   => "x86_64cpuid.s",
> >
> > +        aes_asm_src     => "aes_core.c aes_cbc.c vpaes-x86_64.s aesni-
> x86_64.s
> > aesni-sha1-x86_64.s aesni-sha256-x86_64.s aesni-mb-x86_64.s",
> >
> > +        sha1_asm_src    => "sha1-x86_64.s sha256-x86_64.s sha512-x86_64.s
> > sha1-mb-x86_64.s sha256-mb-x86_64.s",
> >
> > +        modes_asm_src   => "ghash-x86_64.s",
> >
> > +    },
> >
> > +);
> >
> > --
> > 2.28.0.windows.1


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

* Re: [edk2-devel] [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
  2020-08-18 21:33               ` [edk2-devel] " Sean
@ 2020-08-18 23:29                 ` Andrew Fish
  2020-08-19 16:33                   ` Liming Gao
  2020-08-19 10:43                 ` Laszlo Ersek
  1 sibling, 1 reply; 42+ messages in thread
From: Andrew Fish @ 2020-08-18 23:29 UTC (permalink / raw)
  To: devel, spbrogan
  Cc: Mike Kinney, Wang, Jian J, Zurcher, Christopher J, Yao, Jiewen,
	Lu, XiaoyuX, Ard Biesheuvel

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

Sean,

I agree it is reasonable to think hard about adding extra dependencies to building. 

Seems Perl is very popular in Openssl:
/Volumes/Case/edk2(master)>find . -iname '*.pl' | wc -l
     283

Thanks,

Andrew Fish

> On Aug 18, 2020, at 2:33 PM, Sean <spbrogan@outlook.com> wrote:
> 
> Mike,
> 
> I am not technically a basetool maintainer but as an active user/dev in basetools, i would be opposed to bringing in perl as an edk2 dependency. Also introducing another language is counter to the goal of aligning on python and improving the python used within edk2.  From my perspective the openssl config case isn't strong enough to counter the above goal. In fact as you know we are trying to change the paradigm for Crypto/OpenSSL with the Crypto Driver (https://github.com/tianocore/edk2/tree/master/CryptoPkg/Driver) and BaseCryptLibOnProtocolPpi (https://github.com/tianocore/edk2/tree/master/CryptoPkg/Library/BaseCryptLibOnProtocolPpi) work so that everyday development doesn't need to compile openssl in their edk2 builds.
> 
> So I support leaving it as is which means if you have to change something in openssl config you deal with it and a special one off.
> 
> Just my 2 cents.
> 
> Thanks
> Sean
> 
> 
> On 8/18/2020 9:15 AM, Michael D Kinney wrote:
>> Jian,
>> I want the BaseTools maintainers to evaluate these build requirements.
>> We already have a number of tool dependencies.  Adding one more for perl
>> may be acceptable.
>> Mike
>>> -----Original Message-----
>>> From: Wang, Jian J <jian.j.wang@intel.com>
>>> Sent: Monday, August 17, 2020 7:37 PM
>>> To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Kinney, Michael D
>>> <michael.d.kinney@intel.com>; devel@edk2.groups.io
>>> Cc: Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
>>> 
>>> I agree with Christopher. Currently manual works are inevitable in openssl upgrade,
>>> because perl script is used to automate part of code generation. It's hard to ask
>>> Windows developers to install an extra interpreter like perl, considering it's not
>>> popular in Windows environment.
>>> 
>>> Regards,
>>> Jian
>>> 
>>>> -----Original Message-----
>>>> From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
>>>> Sent: Saturday, August 15, 2020 3:35 AM
>>>> To: Yao, Jiewen <jiewen.yao@intel.com>; Kinney, Michael D
>>>> <michael.d.kinney@intel.com>; devel@edk2.groups.io
>>>> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
>>>> Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>>> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated
>>>> assembly files for X64
>>>> 
>>>> The current OpenSSL "UEFI" configuration depends on the OpenSSL build
>>>> happening in a Unix-like environment. For a Windows-based build, this must be
>>>> done in a wrapper such as Cygwin/git bash or WSL. Integrating the OpenSSL
>>>> config step into the build process is a non-trivial change.
>>>> 
>>>>>>> That means, whenever we upgrade the openssl, we need manually
>>>> generate
>>>>>>> them again.
>>>>>>> Any step by step, or readme to tell us how to do that?
>>>> 
>>>> The process for generating these X64 files is virtually identical to the already-
>>>> existing maintainer process for OpensslLib, with only one additional argument
>>>> required to process_files.pl.
>>>> 
>>>> OpensslLib as it exists today in EDK2 already includes auto-generated files from
>>>> the Perl configure process. If we want to re-architect how we include OpenSSL
>>>> into EDK2, I think that should be done in a different patch set. Additionally, such
>>>> a large task might be a waste of time with the release of OpenSSL 3 happening
>>>> later this year. They are making changes to their build system, and I think that if
>>>> we are going to re-architect our side of it, we should wait until we are adopting
>>>> OpenSSL 3.
>>>> 
>>>> --
>>>> Christopher Zurcher
>>>> 
>>>>> -----Original Message-----
>>>>> From: Yao, Jiewen <jiewen.yao@intel.com>
>>>>> Sent: Thursday, August 13, 2020 08:46
>>>>> To: Kinney, Michael D <michael.d.kinney@intel.com>; Zurcher, Christopher J
>>>>> <christopher.j.zurcher@intel.com>; devel@edk2.groups.io
>>>>> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
>>>> <xiaoyux.lu@intel.com>;
>>>>> Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>>>> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
>>>> generated
>>>>> assembly files for X64
>>>>> 
>>>>> Thank you Mike to help on this.
>>>>> 
>>>>> I also believe that the best option is to integrate the auto-gen process in
>>>>> base tool.
>>>>> 
>>>>> 
>>>>> 
>>>>>> -----Original Message-----
>>>>>> From: Kinney, Michael D <michael.d.kinney@intel.com>
>>>>>> Sent: Thursday, August 13, 2020 11:38 PM
>>>>>> To: Yao, Jiewen <jiewen.yao@intel.com>; Zurcher, Christopher J
>>>>>> <christopher.j.zurcher@intel.com>; devel@edk2.groups.io; Kinney, Michael
>>>> D
>>>>>> <michael.d.kinney@intel.com>
>>>>>> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
>>>>> <xiaoyux.lu@intel.com>;
>>>>>> Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>>>>> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
>>>> generated
>>>>>> assembly files for X64
>>>>>> 
>>>>>> Hi Jiewen,
>>>>>> 
>>>>>> For this use case, generating the files as part of the build process would
>>>>> add
>>>>>> a dependency in pearl.
>>>>>> 
>>>>>> Based on other recent CryptoPkg changes and some being discussed in BZ, I
>>>>> am
>>>>>> seeing more changes to the OpenSLL .pl configuration files, and I am
>>>>> concerned
>>>>>> that based on platform requirements, we may need to build OpenSSL with
>>>>>> different .pl config file settings which would also add a pearl dependency
>>>>>> to the build.
>>>>>> 
>>>>>> So exploring what it would take to add the pearl dependency to the build
>>>>> system
>>>>>> is worth exploring and if successful would eliminate the need to checkin
>>>>> these
>>>>>> types of autogenerated files.  This would also reduce maintenance of the
>>>>>> auto-genererated files when EDK II moves to a new version of OpenSSL.
>>>>>> 
>>>>>> @Cristopher - Can you please share a branch that uses pearl to generate the
>>>>>> files
>>>>>> instead of checking them in?  I would like the BaseTools maintainers to
>>>>> review
>>>>>> that and evaluate adding the pearl dependency.  Hopefully, we can make the
>>>>>> pearl dependency detectable so it is only required if the build requires
>>>>> it.
>>>>>> 
>>>>>> Thanks,
>>>>>> 
>>>>>> Mike
>>>>>> 
>>>>>>> -----Original Message-----
>>>>>>> From: Yao, Jiewen <jiewen.yao@intel.com>
>>>>>>> Sent: Thursday, August 13, 2020 8:25 AM
>>>>>>> To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
>>>>>> devel@edk2.groups.io
>>>>>>> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
>>>>>> <xiaoyux.lu@intel.com>; Kinney, Michael D
>>>>>>> <michael.d.kinney@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>>>>>> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
>>>>>> generated assembly files for X64
>>>>>>> 
>>>>>>> + Mike Kinney
>>>>>>> 
>>>>>>> I am not sure if it is a right way to check in auto-generated file.
>>>>>>> That means, whenever we upgrade the openssl, we need manually
>>>> generate
>>>>>> them again.
>>>>>>> Any step by step, or readme to tell us how to do that?
>>>>>>> 
>>>>>>> Mike, would you please double confirm what is the right way for auto-
>>>>>> generated file in EDKII?
>>>>>>> 
>>>>>>> 
>>>>>>>> -----Original Message-----
>>>>>>>> From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
>>>>>>>> Sent: Tuesday, August 4, 2020 8:24 AM
>>>>>>>> To: devel@edk2.groups.io
>>>>>>>> Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
>>>>>> <jian.j.wang@intel.com>;
>>>>>>>> Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
>>>>>> <ard.biesheuvel@linaro.org>
>>>>>>>> Subject: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
>>>> generated
>>>>>>>> assembly files for X64
>>>>>>>> 
>>>>>>>> BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
>>>>>>>> 
>>>>>>>> Adding the auto-generated assembly files for the X64 architecture.
>>>>>>>> 
>>>>>>>> Cc: Jiewen Yao <jiewen.yao@intel.com>
>>>>>>>> Cc: Jian J Wang <jian.j.wang@intel.com>
>>>>>>>> Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
>>>>>>>> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>>>>>>> Signed-off-by: Christopher J Zurcher <christopher.j.zurcher@intel.com>
>>>>>>>> ---
>>>>>>>>  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm
>>>> |
>>>>>> 732
>>>>>>>> +++
>>>>>>>>  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm
>>>> |
>>>>>>>> 1916 ++++++++
>>>>>>>>  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
>>>> x86_64.nasm |
>>>>>>>> 78 +
>>>>>>>>  CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm        |
>>>>>> 5103
>>>>>>>> ++++++++++++++++++++
>>>>>>>>  CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm        |
>>>>>> 1173
>>>>>>>> +++++
>>>>>>>>  CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm
>>>> |
>>>>>>>> 1569 ++++++
>>>>>>>>  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm
>>>> |
>>>>>> 3137
>>>>>>>> ++++++++++++
>>>>>>>>  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm         |
>>>>>> 2884
>>>>>>>> +++++++++++
>>>>>>>>  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm
>>>> |
>>>>>>>> 3461 +++++++++++++
>>>>>>>>  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
>>>> |
>>>>>> 3313
>>>>>>>> +++++++++++++
>>>>>>>>  CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
>>>> |
>>>>>> 1938
>>>>>>>> ++++++++
>>>>>>>>  CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm             |
>>>>> 491
>>>>>> ++
>>>>>>>>  12 files changed, 25795 insertions(+)
>>>>>>>> 
>>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
>>>>>>>> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
>>>>>>>> x86_64.nasm
>>>>>>>> new file mode 100644
>>>>>>>> index 0000000000..1a3ed1dd35
>>>>>>>> --- /dev/null
>>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
>>>> x86_64.nasm
>>>>>>>> @@ -0,0 +1,732 @@
>>>>>>>> +; WARNING: do not edit!
>>>>>>>> 
>>>>>>>> +; Generated from openssl/crypto/aes/asm/aesni-mb-x86_64.pl
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
>>>>> Reserved.
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>> 
>>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>>> copy
>>>>>>>> 
>>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>> 
>>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +default rel
>>>>>>>> 
>>>>>>>> +%define XMMWORD
>>>>>>>> 
>>>>>>>> +%define YMMWORD
>>>>>>>> 
>>>>>>>> +%define ZMMWORD
>>>>>>>> 
>>>>>>>> +section .text code align=64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  aesni_multi_cbc_encrypt
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +aesni_multi_cbc_encrypt:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_aesni_multi_cbc_encrypt:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[64+rsp],xmm10
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[80+rsp],xmm11
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[96+rsp],xmm12
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-104)+rax],xmm13
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-88)+rax],xmm14
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-72)+rax],xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     rsp,48
>>>>>>>> 
>>>>>>>> +        and     rsp,-64
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$enc4x_body:
>>>>>>>> 
>>>>>>>> +        movdqu  xmm12,XMMWORD[rsi]
>>>>>>>> 
>>>>>>>> +        lea     rsi,[120+rsi]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[80+rdi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$enc4x_loop_grande:
>>>>>>>> 
>>>>>>>> +        mov     DWORD[24+rsp],edx
>>>>>>>> 
>>>>>>>> +        xor     edx,edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[((-64))+rdi]
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[((-80))+rdi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[((-72))+rdi]
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[((-56))+rdi]
>>>>>>>> 
>>>>>>>> +        mov     DWORD[32+rsp],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r8,rsp
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[((-24))+rdi]
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[((-40))+rdi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[((-32))+rdi]
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        movdqu  xmm3,XMMWORD[((-16))+rdi]
>>>>>>>> 
>>>>>>>> +        mov     DWORD[36+rsp],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r9,rsp
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        mov     r10,QWORD[rdi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        mov     r14,QWORD[8+rdi]
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        movdqu  xmm4,XMMWORD[24+rdi]
>>>>>>>> 
>>>>>>>> +        mov     DWORD[40+rsp],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r10,rsp
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[56+rdi]
>>>>>>>> 
>>>>>>>> +        mov     r11,QWORD[40+rdi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        mov     r15,QWORD[48+rdi]
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[64+rdi]
>>>>>>>> 
>>>>>>>> +        mov     DWORD[44+rsp],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r11,rsp
>>>>>>>> 
>>>>>>>> +        test    edx,edx
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$enc4x_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((16-120))+rsi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm12
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((32-120))+rsi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm12
>>>>>>>> 
>>>>>>>> +        mov     eax,DWORD[((240-120))+rsi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  xmm7,XMMWORD[r9]
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm6
>>>>>>>> 
>>>>>>>> +        movdqu  xmm8,XMMWORD[r10]
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm7
>>>>>>>> 
>>>>>>>> +        movdqu  xmm9,XMMWORD[r11]
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,XMMWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        xor     rbx,rbx
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_enc4x
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$oop_enc4x:
>>>>>>>> 
>>>>>>>> +        add     rbx,16
>>>>>>>> 
>>>>>>>> +        lea     rbp,[16+rsp]
>>>>>>>> 
>>>>>>>> +        mov     ecx,1
>>>>>>>> 
>>>>>>>> +        sub     rbp,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        prefetcht0      [31+rbx*1+r8]
>>>>>>>> 
>>>>>>>> +        prefetcht0      [31+rbx*1+r9]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +        prefetcht0      [31+rbx*1+r10]
>>>>>>>> 
>>>>>>>> +        prefetcht0      [31+rbx*1+r10]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,233
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((48-120))+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,224
>>>>>>>> 
>>>>>>>> +        cmovge  r8,rbp
>>>>>>>> 
>>>>>>>> +        cmovg   r12,rbp
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,232
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-56))+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +        cmovge  r9,rbp
>>>>>>>> 
>>>>>>>> +        cmovg   r13,rbp
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,233
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-40))+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,224
>>>>>>>> 
>>>>>>>> +        cmovge  r10,rbp
>>>>>>>> 
>>>>>>>> +        cmovg   r14,rbp
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,232
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-24))+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +        cmovge  r11,rbp
>>>>>>>> 
>>>>>>>> +        cmovg   r15,rbp
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,233
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-8))+rsi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm11,xmm10
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        prefetcht0      [15+rbx*1+r12]
>>>>>>>> 
>>>>>>>> +        prefetcht0      [15+rbx*1+r13]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,216
>>>>>>>> 
>>>>>>>> +        prefetcht0      [15+rbx*1+r14]
>>>>>>>> 
>>>>>>>> +        prefetcht0      [15+rbx*1+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,232
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((128-120))+rsi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        pcmpgtd xmm11,xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  xmm12,XMMWORD[((-120))+rsi]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm10
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,233
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((144-120))+rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        cmp     eax,11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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[((160-120))+rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$enc4x_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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[((176-120))+rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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[((192-120))+rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$enc4x_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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[((208-120))+rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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[((224-120))+rsi]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$enc4x_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$enc4x_tail:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,233
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[rbx*1+r8]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,208
>>>>>>>> 
>>>>>>>> +        movdqu  xmm7,XMMWORD[rbx*1+r9]
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,216
>>>>>>>> 
>>>>>>>> +        movdqu  xmm8,XMMWORD[rbx*1+r10]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm12
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,224
>>>>>>>> 
>>>>>>>> +        movdqu  xmm9,XMMWORD[rbx*1+r11]
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm12
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,232
>>>>>>>> 
>>>>>>>> +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm6
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm7
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm8
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        dec     edx
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_enc4x
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edx,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rdi,[160+rdi]
>>>>>>>> 
>>>>>>>> +        dec     edx
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$enc4x_loop_grande
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$enc4x_done:
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[((-216))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[((-200))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[((-184))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[((-168))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,XMMWORD[((-152))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm11,XMMWORD[((-136))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm12,XMMWORD[((-120))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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$enc4x_epilogue:
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$SEH_end_aesni_multi_cbc_encrypt:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  aesni_multi_cbc_decrypt
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +aesni_multi_cbc_decrypt:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_aesni_multi_cbc_decrypt:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[64+rsp],xmm10
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[80+rsp],xmm11
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[96+rsp],xmm12
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-104)+rax],xmm13
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-88)+rax],xmm14
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-72)+rax],xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     rsp,48
>>>>>>>> 
>>>>>>>> +        and     rsp,-64
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$dec4x_body:
>>>>>>>> 
>>>>>>>> +        movdqu  xmm12,XMMWORD[rsi]
>>>>>>>> 
>>>>>>>> +        lea     rsi,[120+rsi]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[80+rdi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$dec4x_loop_grande:
>>>>>>>> 
>>>>>>>> +        mov     DWORD[24+rsp],edx
>>>>>>>> 
>>>>>>>> +        xor     edx,edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[((-64))+rdi]
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[((-80))+rdi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[((-72))+rdi]
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[((-56))+rdi]
>>>>>>>> 
>>>>>>>> +        mov     DWORD[32+rsp],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r8,rsp
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[((-24))+rdi]
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[((-40))+rdi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[((-32))+rdi]
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        movdqu  xmm7,XMMWORD[((-16))+rdi]
>>>>>>>> 
>>>>>>>> +        mov     DWORD[36+rsp],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r9,rsp
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        mov     r10,QWORD[rdi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        mov     r14,QWORD[8+rdi]
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        movdqu  xmm8,XMMWORD[24+rdi]
>>>>>>>> 
>>>>>>>> +        mov     DWORD[40+rsp],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r10,rsp
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[56+rdi]
>>>>>>>> 
>>>>>>>> +        mov     r11,QWORD[40+rdi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        mov     r15,QWORD[48+rdi]
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        movdqu  xmm9,XMMWORD[64+rdi]
>>>>>>>> 
>>>>>>>> +        mov     DWORD[44+rsp],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r11,rsp
>>>>>>>> 
>>>>>>>> +        test    edx,edx
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$dec4x_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((16-120))+rsi]
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((32-120))+rsi]
>>>>>>>> 
>>>>>>>> +        mov     eax,DWORD[((240-120))+rsi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm3,XMMWORD[r9]
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  xmm4,XMMWORD[r10]
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[r11]
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,XMMWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        xor     rbx,rbx
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_dec4x
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$oop_dec4x:
>>>>>>>> 
>>>>>>>> +        add     rbx,16
>>>>>>>> 
>>>>>>>> +        lea     rbp,[16+rsp]
>>>>>>>> 
>>>>>>>> +        mov     ecx,1
>>>>>>>> 
>>>>>>>> +        sub     rbp,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +        prefetcht0      [31+rbx*1+r8]
>>>>>>>> 
>>>>>>>> +        prefetcht0      [31+rbx*1+r9]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,217
>>>>>>>> 
>>>>>>>> +        prefetcht0      [31+rbx*1+r10]
>>>>>>>> 
>>>>>>>> +        prefetcht0      [31+rbx*1+r11]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,233
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((48-120))+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,224
>>>>>>>> 
>>>>>>>> +        cmovge  r8,rbp
>>>>>>>> 
>>>>>>>> +        cmovg   r12,rbp
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,232
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-56))+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,217
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,225
>>>>>>>> 
>>>>>>>> +        cmovge  r9,rbp
>>>>>>>> 
>>>>>>>> +        cmovg   r13,rbp
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,233
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-40))+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,224
>>>>>>>> 
>>>>>>>> +        cmovge  r10,rbp
>>>>>>>> 
>>>>>>>> +        cmovg   r14,rbp
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,232
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-24))+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,217
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,225
>>>>>>>> 
>>>>>>>> +        cmovge  r11,rbp
>>>>>>>> 
>>>>>>>> +        cmovg   r15,rbp
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,233
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-8))+rsi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm11,xmm10
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,208
>>>>>>>> 
>>>>>>>> +        prefetcht0      [15+rbx*1+r12]
>>>>>>>> 
>>>>>>>> +        prefetcht0      [15+rbx*1+r13]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,216
>>>>>>>> 
>>>>>>>> +        prefetcht0      [15+rbx*1+r14]
>>>>>>>> 
>>>>>>>> +        prefetcht0      [15+rbx*1+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,232
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((128-120))+rsi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +        pcmpgtd xmm11,xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  xmm12,XMMWORD[((-120))+rsi]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,217
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm10
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,233
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((144-120))+rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        cmp     eax,11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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[((160-120))+rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$dec4x_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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[((176-120))+rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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[((192-120))+rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$dec4x_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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[((208-120))+rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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[((224-120))+rsi]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$dec4x_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$dec4x_tail:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,217
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,225
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,233
>>>>>>>> 
>>>>>>>> +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm0
>>>>>>>> 
>>>>>>>> +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,214
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,223
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[((-16))+rbx*1+r8]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm7,XMMWORD[((-16))+rbx*1+r9]
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,223,224
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,223,233
>>>>>>>> 
>>>>>>>> +        movdqu  xmm8,XMMWORD[((-16))+rbx*1+r10]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm9,XMMWORD[((-16))+rbx*1+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[rbx*1+r8]
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
>>>>>>>> 
>>>>>>>> +        movdqu  xmm3,XMMWORD[rbx*1+r9]
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm12
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
>>>>>>>> 
>>>>>>>> +        movdqu  xmm4,XMMWORD[rbx*1+r10]
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm12
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[rbx*1+r11]
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        dec     edx
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_dec4x
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edx,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rdi,[160+rdi]
>>>>>>>> 
>>>>>>>> +        dec     edx
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$dec4x_loop_grande
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$dec4x_done:
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[((-216))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[((-200))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[((-184))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[((-168))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,XMMWORD[((-152))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm11,XMMWORD[((-136))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm12,XMMWORD[((-120))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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$dec4x_epilogue:
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$SEH_end_aesni_multi_cbc_decrypt:
>>>>>>>> 
>>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +se_handler:
>>>>>>>> 
>>>>>>>> +        push    rsi
>>>>>>>> 
>>>>>>>> +        push    rdi
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +        pushfq
>>>>>>>> 
>>>>>>>> +        sub     rsp,64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>> 
>>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[16+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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     rsi,[((-56-160))+rax]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>> 
>>>>>>>> +        mov     ecx,20
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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[40+r9]
>>>>>>>> 
>>>>>>>> +        mov     rsi,r8
>>>>>>>> 
>>>>>>>> +        mov     ecx,154
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,r9
>>>>>>>> 
>>>>>>>> +        xor     rcx,rcx
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +        popfq
>>>>>>>> 
>>>>>>>> +        pop     r15
>>>>>>>> 
>>>>>>>> +        pop     r14
>>>>>>>> 
>>>>>>>> +        pop     r13
>>>>>>>> 
>>>>>>>> +        pop     r12
>>>>>>>> 
>>>>>>>> +        pop     rbp
>>>>>>>> 
>>>>>>>> +        pop     rbx
>>>>>>>> 
>>>>>>>> +        pop     rdi
>>>>>>>> 
>>>>>>>> +        pop     rsi
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +section .pdata rdata align=4
>>>>>>>> 
>>>>>>>> +ALIGN   4
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_begin_aesni_multi_cbc_encrypt wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_end_aesni_multi_cbc_encrypt wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_info_aesni_multi_cbc_encrypt wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_begin_aesni_multi_cbc_decrypt wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_end_aesni_multi_cbc_decrypt wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_info_aesni_multi_cbc_decrypt wrt ..imagebase
>>>>>>>> 
>>>>>>>> +section .xdata rdata align=8
>>>>>>>> 
>>>>>>>> +ALIGN   8
>>>>>>>> 
>>>>>>>> +$L$SEH_info_aesni_multi_cbc_encrypt:
>>>>>>>> 
>>>>>>>> +DB      9,0,0,0
>>>>>>>> 
>>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$enc4x_body wrt ..imagebase,$L$enc4x_epilogue
>>>>>>>> wrt ..imagebase
>>>>>>>> 
>>>>>>>> +$L$SEH_info_aesni_multi_cbc_decrypt:
>>>>>>>> 
>>>>>>>> +DB      9,0,0,0
>>>>>>>> 
>>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$dec4x_body wrt ..imagebase,$L$dec4x_epilogue
>>>>>>>> wrt ..imagebase
>>>>>>>> 
>>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
>>>>>>>> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
>>>> sha1-
>>>>>>>> x86_64.nasm
>>>>>>>> new file mode 100644
>>>>>>>> index 0000000000..f4fd9ca50d
>>>>>>>> --- /dev/null
>>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
>>>>>> x86_64.nasm
>>>>>>>> @@ -0,0 +1,1916 @@
>>>>>>>> +; WARNING: do not edit!
>>>>>>>> 
>>>>>>>> +; Generated from openssl/crypto/aes/asm/aesni-sha1-x86_64.pl
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights
>>>>> Reserved.
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>> 
>>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>>> copy
>>>>>>>> 
>>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>> 
>>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +default rel
>>>>>>>> 
>>>>>>>> +%define XMMWORD
>>>>>>>> 
>>>>>>>> +%define YMMWORD
>>>>>>>> 
>>>>>>>> +%define ZMMWORD
>>>>>>>> 
>>>>>>>> +section .text code align=64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  aesni_cbc_sha1_enc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +aesni_cbc_sha1_enc:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+0))]
>>>>>>>> 
>>>>>>>> +        mov     r11,QWORD[((OPENSSL_ia32cap_P+4))]
>>>>>>>> 
>>>>>>>> +        bt      r11,61
>>>>>>>> 
>>>>>>>> +        jc      NEAR aesni_cbc_sha1_enc_shaext
>>>>>>>> 
>>>>>>>> +        jmp     NEAR aesni_cbc_sha1_enc_ssse3
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +aesni_cbc_sha1_enc_ssse3:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_aesni_cbc_sha1_enc_ssse3:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +        mov     rcx,r9
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10,QWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[((-264))+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(96+0)+rsp],xmm6
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(96+16)+rsp],xmm7
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(96+32)+rsp],xmm8
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(96+48)+rsp],xmm9
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(96+64)+rsp],xmm10
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(96+80)+rsp],xmm11
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(96+96)+rsp],xmm12
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(96+112)+rsp],xmm13
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(96+128)+rsp],xmm14
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(96+144)+rsp],xmm15
>>>>>>>> 
>>>>>>>> +$L$prologue_ssse3:
>>>>>>>> 
>>>>>>>> +        mov     r12,rdi
>>>>>>>> 
>>>>>>>> +        mov     r13,rsi
>>>>>>>> 
>>>>>>>> +        mov     r14,rdx
>>>>>>>> 
>>>>>>>> +        lea     r15,[112+rcx]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +        mov     QWORD[88+rsp],r8
>>>>>>>> 
>>>>>>>> +        shl     r14,6
>>>>>>>> 
>>>>>>>> +        sub     r13,r12
>>>>>>>> 
>>>>>>>> +        mov     r8d,DWORD[((240-112))+r15]
>>>>>>>> 
>>>>>>>> +        add     r14,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r11,[K_XX_XX]
>>>>>>>> 
>>>>>>>> +        mov     eax,DWORD[r9]
>>>>>>>> 
>>>>>>>> +        mov     ebx,DWORD[4+r9]
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[8+r9]
>>>>>>>> 
>>>>>>>> +        mov     edx,DWORD[12+r9]
>>>>>>>> 
>>>>>>>> +        mov     esi,ebx
>>>>>>>> 
>>>>>>>> +        mov     ebp,DWORD[16+r9]
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        and     esi,edi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[64+r11]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,XMMWORD[r11]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm4,XMMWORD[r10]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[16+r10]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[32+r10]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm7,XMMWORD[48+r10]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,227
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,235
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,243
>>>>>>>> 
>>>>>>>> +        add     r10,64
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm13
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,251
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[rsp],xmm4
>>>>>>>> 
>>>>>>>> +        psubd   xmm4,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm5
>>>>>>>> 
>>>>>>>> +        psubd   xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm6
>>>>>>>> 
>>>>>>>> +        psubd   xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        movups  xmm15,XMMWORD[((-112))+r15]
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+r15]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_ssse3
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$oop_ssse3:
>>>>>>>> 
>>>>>>>> +        ror     ebx,2
>>>>>>>> 
>>>>>>>> +        movups  xmm14,XMMWORD[r12]
>>>>>>>> 
>>>>>>>> +        xorps   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm14
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-80))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        pshufd  xmm8,xmm4,238
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm8,xmm5
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,esi
>>>>>>>> 
>>>>>>>> +        psrldq  xmm12,4
>>>>>>>> 
>>>>>>>> +        and     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm4
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm6
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        mov     esi,ebp
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm13
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-64))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        and     esi,eax
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm8
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        pslldq  xmm3,12
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm8
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,31
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,esi
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm3
>>>>>>>> 
>>>>>>>> +        and     edi,ebp
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,30
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        mov     esi,ecx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-48))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        pslld   xmm13,2
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[r11]
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        and     esi,edx
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm13
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        pshufd  xmm9,xmm5,238
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm8
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm8
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm9,xmm6
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,esi
>>>>>>>> 
>>>>>>>> +        psrldq  xmm13,4
>>>>>>>> 
>>>>>>>> +        and     edi,ecx
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm5
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-32))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        mov     esi,eax
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm13
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[rsp],xmm3
>>>>>>>> 
>>>>>>>> +        add     ebp,edi
>>>>>>>> 
>>>>>>>> +        and     esi,ebx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm9
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm9
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        pslldq  xmm12,12
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +        mov     edi,ebp
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,31
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,esi
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-16))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>>> 
>>>>>>>> +        and     edi,eax
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,30
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        por     xmm9,xmm13
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        mov     esi,edx
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        pslld   xmm3,2
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm12
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,XMMWORD[16+r11]
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,edi
>>>>>>>> 
>>>>>>>> +        and     esi,ebp
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm3
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        pshufd  xmm10,xmm6,238
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm9
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        psrldq  xmm3,4
>>>>>>>> 
>>>>>>>> +        and     edi,edx
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm6
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm8
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        mov     esi,ebx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm3
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm12
>>>>>>>> 
>>>>>>>> +        add     eax,edi
>>>>>>>> 
>>>>>>>> +        and     esi,ecx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm10
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        pslldq  xmm13,12
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm10
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,31
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,esi
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm13
>>>>>>>> 
>>>>>>>> +        and     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,30
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        por     xmm10,xmm3
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        mov     esi,ebp
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        pslld   xmm12,2
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm13
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,XMMWORD[16+r11]
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        and     esi,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm12
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        pshufd  xmm11,xmm7,238
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm10
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm10
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm11,xmm8
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,esi
>>>>>>>> 
>>>>>>>> +        psrldq  xmm12,4
>>>>>>>> 
>>>>>>>> +        and     edi,ebp
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm9
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        mov     esi,ecx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[48+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm12
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm13
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        and     esi,edx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm11
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        pslldq  xmm3,12
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm11
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,31
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,esi
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm3
>>>>>>>> 
>>>>>>>> +        and     edi,ecx
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,30
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        cmp     r8d,11
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$aesenclast1
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[64+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[80+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$aesenclast1
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[96+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[112+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +$L$aesenclast1:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,209
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+r15]
>>>>>>>> 
>>>>>>>> +        por     xmm11,xmm12
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        mov     esi,eax
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        pslld   xmm13,2
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[16+r11]
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,edi
>>>>>>>> 
>>>>>>>> +        and     esi,ebx
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm13
>>>>>>>> 
>>>>>>>> +        pshufd  xmm13,xmm10,238
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm8
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        mov     edi,ebp
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm13,xmm11
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        add     edx,esi
>>>>>>>> 
>>>>>>>> +        movups  xmm14,XMMWORD[16+r12]
>>>>>>>> 
>>>>>>>> +        xorps   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[r13*1+r12],xmm2
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm14
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-80))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        and     edi,eax
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm3
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm13
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        mov     esi,edx
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm4
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm3
>>>>>>>> 
>>>>>>>> +        add     ecx,edi
>>>>>>>> 
>>>>>>>> +        and     esi,ebp
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        pslld   xmm4,2
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,30
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-64))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        por     xmm4,xmm13
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        pshufd  xmm3,xmm11,238
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        and     edi,edx
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        mov     esi,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm9
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-48))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm6
>>>>>>>> 
>>>>>>>> +        add     ebp,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm12
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm4
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        mov     esi,ebp
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm5
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[rsp],xmm12
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        pslld   xmm5,2
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,30
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,esi
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-32))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        por     xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        pshufd  xmm12,xmm4,238
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        mov     esi,ecx
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm12,xmm5
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        add     eax,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[32+r11]
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm5
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-16))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        mov     esi,eax
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm6
>>>>>>>> 
>>>>>>>> +        add     ebp,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm13
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        pslld   xmm6,2
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        mov     edi,ebp
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,30
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        por     xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        pshufd  xmm13,xmm5,238
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        mov     esi,edx
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,edi
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm13,xmm6
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm8
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm3
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm6
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm13
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        mov     esi,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        add     eax,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm3
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,2
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,30
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        por     xmm7,xmm13
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        pshufd  xmm3,xmm6,238
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        mov     esi,ebp
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm4
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm3,xmm7
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        add     ecx,esi
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm12
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        mov     esi,ecx
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm12
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,2
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,30
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm3
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[48+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        pshufd  xmm12,xmm7,238
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        mov     esi,eax
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm5
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm12,xmm8
>>>>>>>> 
>>>>>>>> +        mov     edi,ebp
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm10
>>>>>>>> 
>>>>>>>> +        add     edx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm12
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        mov     esi,edx
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm9
>>>>>>>> 
>>>>>>>> +        add     ecx,edi
>>>>>>>> 
>>>>>>>> +        cmp     r8d,11
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$aesenclast2
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[64+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[80+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$aesenclast2
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[96+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[112+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +$L$aesenclast2:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,209
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+r15]
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[rsp],xmm13
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        pslld   xmm9,2
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,30
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        por     xmm9,xmm12
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        pshufd  xmm13,xmm8,238
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        mov     esi,ebx
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm6
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        movups  xmm14,XMMWORD[32+r12]
>>>>>>>> 
>>>>>>>> +        xorps   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+r12*1+r13],xmm2
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm14
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-80))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        and     esi,ecx
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm13,xmm9
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm11
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,esi
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm3
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm9
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm13
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        and     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm10
>>>>>>>> 
>>>>>>>> +        mov     esi,ebp
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm3
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-64))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        pslld   xmm10,2
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,30
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        and     esi,eax
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        por     xmm10,xmm13
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        pshufd  xmm3,xmm9,238
>>>>>>>> 
>>>>>>>> +        add     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        and     edi,ebp
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-48))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        mov     esi,ecx
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        and     esi,edx
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm3,xmm10
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm4
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,esi
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,XMMWORD[48+r11]
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm10
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-32))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        and     edi,ecx
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        mov     esi,eax
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm12
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        pslld   xmm11,2
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,30
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        and     esi,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        por     xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        mov     edi,ebp
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        pshufd  xmm12,xmm10,238
>>>>>>>> 
>>>>>>>> +        add     edx,esi
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-16))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        and     edi,eax
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        mov     esi,edx
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm8
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        and     esi,ebp
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm12,xmm11
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm11
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        and     edi,edx
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm4
>>>>>>>> 
>>>>>>>> +        mov     esi,ebx
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm13
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        pslld   xmm4,2
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,30
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        and     esi,ecx
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        por     xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        pshufd  xmm13,xmm11,238
>>>>>>>> 
>>>>>>>> +        add     ebp,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        and     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        mov     esi,ebp
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm9
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        and     esi,eax
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm13,xmm4
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm6
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,esi
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm3
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        and     edi,ebp
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[48+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm5
>>>>>>>> 
>>>>>>>> +        mov     esi,ecx
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[rsp],xmm3
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        pslld   xmm5,2
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,30
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        and     esi,edx
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        por     xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        pshufd  xmm3,xmm4,238
>>>>>>>> 
>>>>>>>> +        add     eax,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        cmp     r8d,11
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$aesenclast3
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[64+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[80+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$aesenclast3
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[96+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[112+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +$L$aesenclast3:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,209
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+r15]
>>>>>>>> 
>>>>>>>> +        and     edi,ecx
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        mov     esi,eax
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        and     esi,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm3,xmm5
>>>>>>>> 
>>>>>>>> +        mov     edi,ebp
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,esi
>>>>>>>> 
>>>>>>>> +        movups  xmm14,XMMWORD[48+r12]
>>>>>>>> 
>>>>>>>> +        xorps   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[32+r12*1+r13],xmm2
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm14
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-80))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm12
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm5
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm3
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        and     edi,eax
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm6
>>>>>>>> 
>>>>>>>> +        mov     esi,edx
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm12
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        pslld   xmm6,2
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,30
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        and     esi,ebp
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        por     xmm6,xmm3
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-64))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        pshufd  xmm12,xmm5,238
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        and     edi,edx
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        mov     esi,ebx
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-48))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm12,xmm6
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm8
>>>>>>>> 
>>>>>>>> +        add     ebp,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        mov     esi,ebp
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm13
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,2
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,30
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,esi
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-32))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        por     xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        mov     esi,ecx
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm7
>>>>>>>> 
>>>>>>>> +        add     eax,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm3
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-16))+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        mov     esi,eax
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        mov     edi,ebp
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        mov     esi,edx
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,edi
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        cmp     r10,r14
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$done_ssse3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[64+r11]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,XMMWORD[r11]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm4,XMMWORD[r10]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[16+r10]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[32+r10]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm7,XMMWORD[48+r10]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,227
>>>>>>>> 
>>>>>>>> +        add     r10,64
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,235
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm13
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        mov     esi,ebx
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[rsp],xmm4
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        psubd   xmm4,xmm13
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        mov     esi,ebp
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,243
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,esi
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        mov     esi,ecx
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm5
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        psubd   xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[48+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        mov     esi,eax
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        mov     edi,ebp
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,251
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        mov     esi,edx
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm6
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,edi
>>>>>>>> 
>>>>>>>> +        cmp     r8d,11
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$aesenclast4
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[64+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[80+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$aesenclast4
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[96+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[112+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +$L$aesenclast4:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,209
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+r15]
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        psubd   xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        mov     esi,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,edi
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[48+r12*1+r13],xmm2
>>>>>>>> 
>>>>>>>> +        lea     r12,[64+r12]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[r9]
>>>>>>>> 
>>>>>>>> +        add     esi,DWORD[4+r9]
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[8+r9]
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[12+r9]
>>>>>>>> 
>>>>>>>> +        mov     DWORD[r9],eax
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[16+r9]
>>>>>>>> 
>>>>>>>> +        mov     DWORD[4+r9],esi
>>>>>>>> 
>>>>>>>> +        mov     ebx,esi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[8+r9],ecx
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        mov     DWORD[12+r9],edx
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        mov     DWORD[16+r9],ebp
>>>>>>>> 
>>>>>>>> +        and     esi,edi
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_ssse3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$done_ssse3:
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        mov     esi,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        mov     esi,ebp
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,esi
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        mov     esi,ecx
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[48+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        mov     esi,eax
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        mov     edi,ebp
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        mov     esi,edx
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,edi
>>>>>>>> 
>>>>>>>> +        cmp     r8d,11
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$aesenclast5
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[64+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[80+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$aesenclast5
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[96+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[112+r15]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +$L$aesenclast5:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,209
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+r15]
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        mov     esi,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,edi
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[48+r12*1+r13],xmm2
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[88+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[r9]
>>>>>>>> 
>>>>>>>> +        add     esi,DWORD[4+r9]
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[8+r9]
>>>>>>>> 
>>>>>>>> +        mov     DWORD[r9],eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[12+r9]
>>>>>>>> 
>>>>>>>> +        mov     DWORD[4+r9],esi
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[16+r9]
>>>>>>>> 
>>>>>>>> +        mov     DWORD[8+r9],ecx
>>>>>>>> 
>>>>>>>> +        mov     DWORD[12+r9],edx
>>>>>>>> 
>>>>>>>> +        mov     DWORD[16+r9],ebp
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[r8],xmm2
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[((96+0))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[((96+16))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[((96+32))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[((96+48))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,XMMWORD[((96+64))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  xmm11,XMMWORD[((96+80))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  xmm12,XMMWORD[((96+96))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  xmm13,XMMWORD[((96+112))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  xmm14,XMMWORD[((96+128))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  xmm15,XMMWORD[((96+144))+rsp]
>>>>>>>> 
>>>>>>>> +        lea     rsi,[264+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_aesni_cbc_sha1_enc_ssse3:
>>>>>>>> 
>>>>>>>> +ALIGN   64
>>>>>>>> 
>>>>>>>> +K_XX_XX:
>>>>>>>> 
>>>>>>>> +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
>>>>>>>> 
>>>>>>>> +        DD      0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
>>>>>>>> 
>>>>>>>> +        DD      0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
>>>>>>>> 
>>>>>>>> +        DD      0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
>>>>>>>> 
>>>>>>>> +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
>>>>>>>> 
>>>>>>>> +DB
>>>>> 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115
>>>>>>>> 
>>>>>>>> +DB      116,105,116,99,104,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
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +aesni_cbc_sha1_enc_shaext:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_aesni_cbc_sha1_enc_shaext:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +        mov     rcx,r9
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10,QWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-8-160)+rax],xmm6
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-8-144)+rax],xmm7
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-8-128)+rax],xmm8
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-8-112)+rax],xmm9
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-8-96)+rax],xmm10
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-8-80)+rax],xmm11
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-8-64)+rax],xmm12
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-8-48)+rax],xmm13
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-8-32)+rax],xmm14
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-8-16)+rax],xmm15
>>>>>>>> 
>>>>>>>> +$L$prologue_shaext:
>>>>>>>> 
>>>>>>>> +        movdqu  xmm8,XMMWORD[r9]
>>>>>>>> 
>>>>>>>> +        movd    xmm9,DWORD[16+r9]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,XMMWORD[((K_XX_XX+80))]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r11d,DWORD[240+rcx]
>>>>>>>> 
>>>>>>>> +        sub     rsi,rdi
>>>>>>>> 
>>>>>>>> +        movups  xmm15,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        movups  xmm2,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[112+rcx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pshufd  xmm8,xmm8,27
>>>>>>>> 
>>>>>>>> +        pshufd  xmm9,xmm9,27
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_shaext
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$oop_shaext:
>>>>>>>> 
>>>>>>>> +        movups  xmm14,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm14
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-80))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        movdqu  xmm3,XMMWORD[r10]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,223
>>>>>>>> 
>>>>>>>> +        movdqu  xmm4,XMMWORD[16+r10]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm11,xmm8
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-64))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,231
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm3
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[32+r10]
>>>>>>>> 
>>>>>>>> +        lea     r10,[64+r10]
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm12
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-48))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,239
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,0
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,212
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-32))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +DB      15,56,201,220
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[((-16))+r10]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,247
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-16))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,0
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,205
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm5
>>>>>>>> 
>>>>>>>> +DB      15,56,201,229
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,0
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,214
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      15,56,202,222
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +DB      15,56,201,238
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,0
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,203
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[48+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      15,56,202,227
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm3
>>>>>>>> 
>>>>>>>> +DB      15,56,201,243
>>>>>>>> 
>>>>>>>> +        cmp     r11d,11
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$aesenclast6
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[64+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[80+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$aesenclast6
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[96+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[112+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +$L$aesenclast6:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,209
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+rcx]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,0
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,212
>>>>>>>> 
>>>>>>>> +        movups  xmm14,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rdi*1+rsi],xmm2
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm14
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-80))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      15,56,202,236
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>> 
>>>>>>>> +DB      15,56,201,220
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-64))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,1
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,205
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-48))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      15,56,202,245
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm5
>>>>>>>> 
>>>>>>>> +DB      15,56,201,229
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-32))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,1
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,214
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-16))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      15,56,202,222
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +DB      15,56,201,238
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,1
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,203
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      15,56,202,227
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm3
>>>>>>>> 
>>>>>>>> +DB      15,56,201,243
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,1
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,212
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[48+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      15,56,202,236
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>> 
>>>>>>>> +DB      15,56,201,220
>>>>>>>> 
>>>>>>>> +        cmp     r11d,11
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$aesenclast7
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[64+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[80+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$aesenclast7
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[96+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[112+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +$L$aesenclast7:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,209
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+rcx]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,1
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,205
>>>>>>>> 
>>>>>>>> +        movups  xmm14,XMMWORD[32+rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rdi*1+rsi],xmm2
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm14
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-80))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      15,56,202,245
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm5
>>>>>>>> 
>>>>>>>> +DB      15,56,201,229
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-64))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,2
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,214
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-48))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      15,56,202,222
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +DB      15,56,201,238
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-32))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,2
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,203
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-16))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      15,56,202,227
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm3
>>>>>>>> 
>>>>>>>> +DB      15,56,201,243
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,2
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,212
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      15,56,202,236
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>> 
>>>>>>>> +DB      15,56,201,220
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,2
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,205
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[48+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      15,56,202,245
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm5
>>>>>>>> 
>>>>>>>> +DB      15,56,201,229
>>>>>>>> 
>>>>>>>> +        cmp     r11d,11
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$aesenclast8
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[64+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[80+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$aesenclast8
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[96+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[112+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +$L$aesenclast8:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,209
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+rcx]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,2
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,214
>>>>>>>> 
>>>>>>>> +        movups  xmm14,XMMWORD[48+rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[32+rdi*1+rsi],xmm2
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm14
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-80))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      15,56,202,222
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +DB      15,56,201,238
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-64))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,3
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,203
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-48))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      15,56,202,227
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm3
>>>>>>>> 
>>>>>>>> +DB      15,56,201,243
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-32))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,3
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,212
>>>>>>>> 
>>>>>>>> +DB      15,56,202,236
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-16))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,3
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,205
>>>>>>>> 
>>>>>>>> +DB      15,56,202,245
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,3
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,214
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,3
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,205
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[48+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        cmp     r11d,11
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$aesenclast9
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[64+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[80+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$aesenclast9
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[96+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[112+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +$L$aesenclast9:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,209
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+rcx]
>>>>>>>> 
>>>>>>>> +        dec     rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm11
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[48+rdi*1+rsi],xmm2
>>>>>>>> 
>>>>>>>> +        lea     rdi,[64+rdi]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_shaext
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pshufd  xmm8,xmm8,27
>>>>>>>> 
>>>>>>>> +        pshufd  xmm9,xmm9,27
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[r8],xmm2
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[r9],xmm8
>>>>>>>> 
>>>>>>>> +        movd    DWORD[16+r9],xmm9
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[((-8-160))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[((-8-144))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[((-8-128))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[((-8-112))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,XMMWORD[((-8-96))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm11,XMMWORD[((-8-80))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm12,XMMWORD[((-8-64))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm13,XMMWORD[((-8-48))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm14,XMMWORD[((-8-32))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm15,XMMWORD[((-8-16))+rax]
>>>>>>>> 
>>>>>>>> +        mov     rsp,rax
>>>>>>>> 
>>>>>>>> +$L$epilogue_shaext:
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$SEH_end_aesni_cbc_sha1_enc_shaext:
>>>>>>>> 
>>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +ssse3_handler:
>>>>>>>> 
>>>>>>>> +        push    rsi
>>>>>>>> 
>>>>>>>> +        push    rdi
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +        pushfq
>>>>>>>> 
>>>>>>>> +        sub     rsp,64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>> 
>>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +        lea     r10,[aesni_cbc_sha1_enc_shaext]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$seh_no_shaext
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsi,[rax]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>> 
>>>>>>>> +        mov     ecx,20
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +        lea     rax,[168+rax]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +$L$seh_no_shaext:
>>>>>>>> 
>>>>>>>> +        lea     rsi,[96+rax]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>> 
>>>>>>>> +        mov     ecx,20
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +        lea     rax,[264+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15,QWORD[rax]
>>>>>>>> 
>>>>>>>> +        mov     r14,QWORD[8+rax]
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[16+rax]
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[24+rax]
>>>>>>>> 
>>>>>>>> +        mov     rbp,QWORD[32+rax]
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[40+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$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[40+r9]
>>>>>>>> 
>>>>>>>> +        mov     rsi,r8
>>>>>>>> 
>>>>>>>> +        mov     ecx,154
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,r9
>>>>>>>> 
>>>>>>>> +        xor     rcx,rcx
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +        popfq
>>>>>>>> 
>>>>>>>> +        pop     r15
>>>>>>>> 
>>>>>>>> +        pop     r14
>>>>>>>> 
>>>>>>>> +        pop     r13
>>>>>>>> 
>>>>>>>> +        pop     r12
>>>>>>>> 
>>>>>>>> +        pop     rbp
>>>>>>>> 
>>>>>>>> +        pop     rbx
>>>>>>>> 
>>>>>>>> +        pop     rdi
>>>>>>>> 
>>>>>>>> +        pop     rsi
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +section .pdata rdata align=4
>>>>>>>> 
>>>>>>>> +ALIGN   4
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_end_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_info_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_shaext wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_end_aesni_cbc_sha1_enc_shaext wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_info_aesni_cbc_sha1_enc_shaext wrt ..imagebase
>>>>>>>> 
>>>>>>>> +section .xdata rdata align=8
>>>>>>>> 
>>>>>>>> +ALIGN   8
>>>>>>>> 
>>>>>>>> +$L$SEH_info_aesni_cbc_sha1_enc_ssse3:
>>>>>>>> 
>>>>>>>> +DB      9,0,0,0
>>>>>>>> 
>>>>>>>> +        DD      ssse3_handler wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
>>>>>>>> wrt ..imagebase
>>>>>>>> 
>>>>>>>> +$L$SEH_info_aesni_cbc_sha1_enc_shaext:
>>>>>>>> 
>>>>>>>> +DB      9,0,0,0
>>>>>>>> 
>>>>>>>> +        DD      ssse3_handler wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$prologue_shaext wrt ..imagebase,$L$epilogue_shaext
>>>>>>>> wrt ..imagebase
>>>>>>>> 
>>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
>>>>>>>> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
>>>>>> sha256-
>>>>>>>> x86_64.nasm
>>>>>>>> new file mode 100644
>>>>>>>> index 0000000000..f5c250b904
>>>>>>>> --- /dev/null
>>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
>>>>>>>> x86_64.nasm
>>>>>>>> @@ -0,0 +1,78 @@
>>>>>>>> +; WARNING: do not edit!
>>>>>>>> 
>>>>>>>> +; Generated from openssl/crypto/aes/asm/aesni-sha256-x86_64.pl
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
>>>>> Reserved.
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>> 
>>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>>> copy
>>>>>>>> 
>>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>> 
>>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +default rel
>>>>>>>> 
>>>>>>>> +%define XMMWORD
>>>>>>>> 
>>>>>>>> +%define YMMWORD
>>>>>>>> 
>>>>>>>> +%define ZMMWORD
>>>>>>>> 
>>>>>>>> +section .text code align=64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>> 
>>>>>>>> +global  aesni_cbc_sha256_enc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +aesni_cbc_sha256_enc:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     eax,eax
>>>>>>>> 
>>>>>>>> +        cmp     rcx,0
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$probe
>>>>>>>> 
>>>>>>>> +        ud2
>>>>>>>> 
>>>>>>>> +$L$probe:
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
>>>>>>>> 
>>>>>>>> +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
>>>>>>>> 
>>>>>>>> +        DD      0,0,0,0,0,0,0,0,-1,-1,-1,-1
>>>>>>>> 
>>>>>>>> +        DD      0,0,0,0,0,0,0,0
>>>>>>>> 
>>>>>>>> +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54
>>>>>>>> 
>>>>>>>> +DB      32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95
>>>>>>>> 
>>>>>>>> +DB      54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98
>>>>>>>> 
>>>>>>>> +DB      121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108
>>>>>>>> 
>>>>>>>> +DB      46,111,114,103,62,0
>>>>>>>> 
>>>>>>>> +ALIGN   64
>>>>>>>> 
>>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
>>>>>> x86_64.nasm
>>>>>>>> b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
>>>>>>>> new file mode 100644
>>>>>>>> index 0000000000..57ee23ea8c
>>>>>>>> --- /dev/null
>>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
>>>>>>>> @@ -0,0 +1,5103 @@
>>>>>>>> +; WARNING: do not edit!
>>>>>>>> 
>>>>>>>> +; Generated from openssl/crypto/aes/asm/aesni-x86_64.pl
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Copyright 2009-2020 The OpenSSL Project Authors. All Rights
>>>>> Reserved.
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>> 
>>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>>> copy
>>>>>>>> 
>>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>> 
>>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +default rel
>>>>>>>> 
>>>>>>>> +%define XMMWORD
>>>>>>>> 
>>>>>>>> +%define YMMWORD
>>>>>>>> 
>>>>>>>> +%define ZMMWORD
>>>>>>>> 
>>>>>>>> +section .text code align=64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>> 
>>>>>>>> +global  aesni_encrypt
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +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:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        dec     eax
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +        lea     r8,[16+r8]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_enc1_1
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,209
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rdx],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  aesni_decrypt
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +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:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +        dec     eax
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +        lea     r8,[16+r8]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_dec1_2
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,209
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rdx],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +_aesni_encrypt2:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        shl     eax,4
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        neg     rax
>>>>>>>> 
>>>>>>>> +        add     rax,16
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$enc_loop2:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        add     rax,32
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,216
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +_aesni_decrypt2:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        shl     eax,4
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        neg     rax
>>>>>>>> 
>>>>>>>> +        add     rax,16
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$dec_loop2:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,217
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        add     rax,32
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,216
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +_aesni_encrypt3:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        shl     eax,4
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        xorps   xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        neg     rax
>>>>>>>> 
>>>>>>>> +        add     rax,16
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$enc_loop3:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +        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[((-16))+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$enc_loop3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,224
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +_aesni_decrypt3:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        shl     eax,4
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        xorps   xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        neg     rax
>>>>>>>> 
>>>>>>>> +        add     rax,16
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$dec_loop3:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,217
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,225
>>>>>>>> 
>>>>>>>> +        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[((-16))+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$dec_loop3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,217
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,224
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +_aesni_encrypt4:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        shl     eax,4
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        xorps   xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        xorps   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        neg     rax
>>>>>>>> 
>>>>>>>> +DB      0x0f,0x1f,0x00
>>>>>>>> 
>>>>>>>> +        add     rax,16
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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[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[((-16))+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $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
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,232
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +_aesni_decrypt4:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        shl     eax,4
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        xorps   xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        xorps   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        neg     rax
>>>>>>>> 
>>>>>>>> +DB      0x0f,0x1f,0x00
>>>>>>>> 
>>>>>>>> +        add     rax,16
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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[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[((-16))+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $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
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,232
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +_aesni_encrypt6:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        shl     eax,4
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        neg     rax
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm0
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        add     rax,16
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$enc_loop6_enter
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$enc_loop6:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +$L$enc_loop6_enter:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,233
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,241
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,249
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,248
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $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
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,232
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,248
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +_aesni_decrypt6:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        shl     eax,4
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        neg     rax
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,217
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,225
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm0
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        add     rax,16
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$dec_loop6_enter
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$dec_loop6:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,217
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,225
>>>>>>>> 
>>>>>>>> +$L$dec_loop6_enter:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,233
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,241
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,249
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,248
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $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
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,232
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,248
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +_aesni_encrypt8:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        shl     eax,4
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        neg     rax
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm0
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        add     rax,16
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$enc_loop8_inner
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$enc_loop8:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +$L$enc_loop8_inner:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,233
>>>>>>>> 
>>>>>>>> +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
>>>>>>>> 
>>>>>>>> +$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
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,232
>>>>>>>> 
>>>>>>>> +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[((-16))+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$enc_loop8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,220,193
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,220,201
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,232
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,248
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,221,192
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,221,200
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +_aesni_decrypt8:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        shl     eax,4
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        neg     rax
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,217
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm0
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        add     rax,16
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$dec_loop8_inner
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$dec_loop8:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,217
>>>>>>>> 
>>>>>>>> +$L$dec_loop8_inner:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,233
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,241
>>>>>>>> 
>>>>>>>> +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[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
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,248
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,192
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,200
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$dec_loop8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,193
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,201
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,232
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,248
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,223,192
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,223,200
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  aesni_ecb_encrypt
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +aesni_ecb_encrypt:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_aesni_ecb_encrypt:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +        mov     rcx,r9
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[((-88))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>>> 
>>>>>>>> +$L$ecb_enc_body:
>>>>>>>> 
>>>>>>>> +        and     rdx,-16
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$ecb_ret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     eax,DWORD[240+rcx]
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        mov     r11,rcx
>>>>>>>> 
>>>>>>>> +        mov     r10d,eax
>>>>>>>> 
>>>>>>>> +        test    r8d,r8d
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$ecb_decrypt
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        cmp     rdx,0x80
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$ecb_enc_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        mov     rcx,r11
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        mov     eax,r10d
>>>>>>>> 
>>>>>>>> +        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,0x80
>>>>>>>> 
>>>>>>>> +        jnc     NEAR $L$ecb_enc_loop8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        mov     rcx,r11
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        mov     eax,r10d
>>>>>>>> 
>>>>>>>> +        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[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]
>>>>>>>> 
>>>>>>>> +        xorps   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +        call    _aesni_encrypt8
>>>>>>>> 
>>>>>>>> +        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[rcx]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +$L$oop_enc1_3:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        dec     eax
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_enc1_3
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,209
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ecb_enc_two:
>>>>>>>> 
>>>>>>>> +        call    _aesni_encrypt2
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ecb_enc_three:
>>>>>>>> 
>>>>>>>> +        call    _aesni_encrypt3
>>>>>>>> 
>>>>>>>> +        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:
>>>>>>>> 
>>>>>>>> +        call    _aesni_encrypt4
>>>>>>>> 
>>>>>>>> +        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:
>>>>>>>> 
>>>>>>>> +        xorps   xmm7,xmm7
>>>>>>>> 
>>>>>>>> +        call    _aesni_encrypt6
>>>>>>>> 
>>>>>>>> +        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:
>>>>>>>> 
>>>>>>>> +        call    _aesni_encrypt6
>>>>>>>> 
>>>>>>>> +        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,0x80
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$ecb_dec_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        mov     rcx,r11
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        mov     eax,r10d
>>>>>>>> 
>>>>>>>> +        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[r11]
>>>>>>>> 
>>>>>>>> +        sub     rdx,0x80
>>>>>>>> 
>>>>>>>> +        jnc     NEAR $L$ecb_dec_loop8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        mov     rcx,r11
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        mov     eax,r10d
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[96+rsi],xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm8
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[112+rsi],xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm9
>>>>>>>> 
>>>>>>>> +        lea     rsi,[128+rsi]
>>>>>>>> 
>>>>>>>> +        add     rdx,0x80
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$ecb_ret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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]
>>>>>>>> 
>>>>>>>> +        xorps   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +        call    _aesni_decrypt8
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[96+rsi],xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm9
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ecb_dec_one:
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +$L$oop_dec1_4:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +        dec     eax
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_dec1_4
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,209
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ecb_dec_two:
>>>>>>>> 
>>>>>>>> +        call    _aesni_decrypt2
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ecb_dec_three:
>>>>>>>> 
>>>>>>>> +        call    _aesni_decrypt3
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ecb_dec_four:
>>>>>>>> 
>>>>>>>> +        call    _aesni_decrypt4
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ecb_dec_five:
>>>>>>>> 
>>>>>>>> +        xorps   xmm7,xmm7
>>>>>>>> 
>>>>>>>> +        call    _aesni_decrypt6
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ecb_dec_six:
>>>>>>>> 
>>>>>>>> +        call    _aesni_decrypt6
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$ecb_ret:
>>>>>>>> 
>>>>>>>> +        xorps   xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        lea     rsp,[88+rsp]
>>>>>>>> 
>>>>>>>> +$L$ecb_enc_ret:
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$SEH_end_aesni_ecb_encrypt:
>>>>>>>> 
>>>>>>>> +global  aesni_ccm64_encrypt_blocks
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +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:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +        mov     rcx,r9
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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,[rcx]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm3,XMMWORD[r9]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,247
>>>>>>>> 
>>>>>>>> +        sub     r10,rax
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ccm64_enc_outer
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ccm64_enc_outer:
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[r11]
>>>>>>>> 
>>>>>>>> +        mov     rax,r10
>>>>>>>> 
>>>>>>>> +        movups  xmm8,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>>> 
>>>>>>>> +        xorps   xmm0,xmm8
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$ccm64_enc2_loop:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        add     rax,32
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,216
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +        dec     rdx
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,216
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm8,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,215
>>>>>>>> 
>>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$ccm64_enc_outer
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[r9],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        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:
>>>>>>>> 
>>>>>>>> +global  aesni_ccm64_decrypt_blocks
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +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:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +        mov     rcx,r9
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[rcx]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +$L$oop_enc1_5:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        dec     eax
>>>>>>>> 
>>>>>>>> +        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[rdi]
>>>>>>>> 
>>>>>>>> +        paddq   xmm6,xmm9
>>>>>>>> 
>>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>> 
>>>>>>>> +        sub     rax,r10
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+r10*1+r11]
>>>>>>>> 
>>>>>>>> +        mov     r10,rax
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ccm64_dec_outer
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ccm64_dec_outer:
>>>>>>>> 
>>>>>>>> +        xorps   xmm8,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm8
>>>>>>>> 
>>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,215
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     rdx,1
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$ccm64_dec_break
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[r11]
>>>>>>>> 
>>>>>>>> +        mov     rax,r10
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>>> 
>>>>>>>> +        xorps   xmm8,xmm0
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm8
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ccm64_dec2_loop
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ccm64_dec2_loop:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        add     rax,32
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,216
>>>>>>>> 
>>>>>>>> +        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,[16+rdi]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ccm64_dec_outer
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ccm64_dec_break:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     eax,DWORD[240+r11]
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[r11]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>>> 
>>>>>>>> +        xorps   xmm8,xmm0
>>>>>>>> 
>>>>>>>> +        lea     r11,[32+r11]
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm8
>>>>>>>> 
>>>>>>>> +$L$oop_enc1_6:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +        dec     eax
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[r11]
>>>>>>>> 
>>>>>>>> +        lea     r11,[16+r11]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_enc1_6
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,217
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[r9],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        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:
>>>>>>>> 
>>>>>>>> +global  aesni_ctr32_encrypt_blocks
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +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:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +        mov     rcx,r9
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        cmp     rdx,1
>>>>>>>> 
>>>>>>>> +        jne     NEAR $L$ctr32_bulk
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm2,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +        movups  xmm3,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        mov     edx,DWORD[240+rcx]
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +$L$oop_enc1_7:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        dec     edx
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_enc1_7
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,209
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ctr32_epilogue
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ctr32_bulk:
>>>>>>>> 
>>>>>>>> +        lea     r11,[rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     rsp,288
>>>>>>>> 
>>>>>>>> +        and     rsp,-16
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-168)+r11],xmm6
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-152)+r11],xmm7
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-136)+r11],xmm8
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-120)+r11],xmm9
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-104)+r11],xmm10
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-88)+r11],xmm11
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-72)+r11],xmm12
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-56)+r11],xmm13
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-40)+r11],xmm14
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-24)+r11],xmm15
>>>>>>>> 
>>>>>>>> +$L$ctr32_body:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        mov     r8d,DWORD[12+r8]
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        mov     ebp,DWORD[12+rcx]
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[rsp],xmm2
>>>>>>>> 
>>>>>>>> +        bswap   r8d
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[64+rsp],xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[80+rsp],xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[96+rsp],xmm2
>>>>>>>> 
>>>>>>>> +        mov     r10,rdx
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[112+rsp],xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rax,[1+r8]
>>>>>>>> 
>>>>>>>> +        lea     rdx,[2+r8]
>>>>>>>> 
>>>>>>>> +        bswap   eax
>>>>>>>> 
>>>>>>>> +        bswap   edx
>>>>>>>> 
>>>>>>>> +        xor     eax,ebp
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +DB      102,15,58,34,216,3
>>>>>>>> 
>>>>>>>> +        lea     rax,[3+r8]
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm3
>>>>>>>> 
>>>>>>>> +DB      102,15,58,34,226,3
>>>>>>>> 
>>>>>>>> +        bswap   eax
>>>>>>>> 
>>>>>>>> +        mov     rdx,r10
>>>>>>>> 
>>>>>>>> +        lea     r10,[4+r8]
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm4
>>>>>>>> 
>>>>>>>> +        xor     eax,ebp
>>>>>>>> 
>>>>>>>> +        bswap   r10d
>>>>>>>> 
>>>>>>>> +DB      102,15,58,34,232,3
>>>>>>>> 
>>>>>>>> +        xor     r10d,ebp
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm5
>>>>>>>> 
>>>>>>>> +        lea     r9,[5+r8]
>>>>>>>> 
>>>>>>>> +        mov     DWORD[((64+12))+rsp],r10d
>>>>>>>> 
>>>>>>>> +        bswap   r9d
>>>>>>>> 
>>>>>>>> +        lea     r10,[6+r8]
>>>>>>>> 
>>>>>>>> +        mov     eax,DWORD[240+rcx]
>>>>>>>> 
>>>>>>>> +        xor     r9d,ebp
>>>>>>>> 
>>>>>>>> +        bswap   r10d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[((80+12))+rsp],r9d
>>>>>>>> 
>>>>>>>> +        xor     r10d,ebp
>>>>>>>> 
>>>>>>>> +        lea     r9,[7+r8]
>>>>>>>> 
>>>>>>>> +        mov     DWORD[((96+12))+rsp],r10d
>>>>>>>> 
>>>>>>>> +        bswap   r9d
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
>>>>>>>> 
>>>>>>>> +        xor     r9d,ebp
>>>>>>>> 
>>>>>>>> +        and     r10d,71303168
>>>>>>>> 
>>>>>>>> +        mov     DWORD[((112+12))+rsp],r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,XMMWORD[64+rsp]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,XMMWORD[80+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        cmp     rdx,8
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$ctr32_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     rdx,6
>>>>>>>> 
>>>>>>>> +        cmp     r10d,4194304
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$ctr32_6x
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rcx,[128+rcx]
>>>>>>>> 
>>>>>>>> +        sub     rdx,2
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ctr32_loop8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ctr32_6x:
>>>>>>>> 
>>>>>>>> +        shl     eax,4
>>>>>>>> 
>>>>>>>> +        mov     r10d,48
>>>>>>>> 
>>>>>>>> +        bswap   ebp
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        sub     r10,rax
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ctr32_loop6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ctr32_loop6:
>>>>>>>> 
>>>>>>>> +        add     r8d,6
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-48))+r10*1+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        mov     eax,r8d
>>>>>>>> 
>>>>>>>> +        xor     eax,ebp
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +DB      0x0f,0x38,0xf1,0x44,0x24,12
>>>>>>>> 
>>>>>>>> +        lea     eax,[1+r8]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +        xor     eax,ebp
>>>>>>>> 
>>>>>>>> +DB      0x0f,0x38,0xf1,0x44,0x24,28
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,233
>>>>>>>> 
>>>>>>>> +        lea     eax,[2+r8]
>>>>>>>> 
>>>>>>>> +        xor     eax,ebp
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,241
>>>>>>>> 
>>>>>>>> +DB      0x0f,0x38,0xf1,0x44,0x24,44
>>>>>>>> 
>>>>>>>> +        lea     eax,[3+r8]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,249
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((-32))+r10*1+rcx]
>>>>>>>> 
>>>>>>>> +        xor     eax,ebp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      0x0f,0x38,0xf1,0x44,0x24,60
>>>>>>>> 
>>>>>>>> +        lea     eax,[4+r8]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,216
>>>>>>>> 
>>>>>>>> +        xor     eax,ebp
>>>>>>>> 
>>>>>>>> +DB      0x0f,0x38,0xf1,0x44,0x24,76
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,224
>>>>>>>> 
>>>>>>>> +        lea     eax,[5+r8]
>>>>>>>> 
>>>>>>>> +        xor     eax,ebp
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,232
>>>>>>>> 
>>>>>>>> +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[((-16))+r10*1+rcx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    $L$enc_loop6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[rsp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm3
>>>>>>>> 
>>>>>>>> +        movaps  xmm3,XMMWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        movaps  xmm4,XMMWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm5
>>>>>>>> 
>>>>>>>> +        movaps  xmm5,XMMWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm6
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[64+rsp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        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     NEAR $L$ctr32_loop6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     rdx,6
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$ctr32_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     eax,[((-48))+r10]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[((-80))+r10*1+rcx]
>>>>>>>> 
>>>>>>>> +        neg     eax
>>>>>>>> 
>>>>>>>> +        shr     eax,4
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ctr32_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$ctr32_loop8:
>>>>>>>> 
>>>>>>>> +        add     r8d,8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,XMMWORD[96+rsp]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        mov     r9d,r8d
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,XMMWORD[112+rsp]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +        bswap   r9d
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((32-128))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +        xor     r9d,ebp
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,233
>>>>>>>> 
>>>>>>>> +        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[((48-128))+rcx]
>>>>>>>> 
>>>>>>>> +        bswap   r9d
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,216
>>>>>>>> 
>>>>>>>> +        xor     r9d,ebp
>>>>>>>> 
>>>>>>>> +DB      0x66,0x90
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,232
>>>>>>>> 
>>>>>>>> +        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[((64-128))+rcx]
>>>>>>>> 
>>>>>>>> +        bswap   r9d
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +        xor     r9d,ebp
>>>>>>>> 
>>>>>>>> +DB      0x66,0x90
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,233
>>>>>>>> 
>>>>>>>> +        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[((80-128))+rcx]
>>>>>>>> 
>>>>>>>> +        bswap   r9d
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,216
>>>>>>>> 
>>>>>>>> +        xor     r9d,ebp
>>>>>>>> 
>>>>>>>> +DB      0x66,0x90
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,232
>>>>>>>> 
>>>>>>>> +        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[((96-128))+rcx]
>>>>>>>> 
>>>>>>>> +        bswap   r9d
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +        xor     r9d,ebp
>>>>>>>> 
>>>>>>>> +DB      0x66,0x90
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,233
>>>>>>>> 
>>>>>>>> +        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[((112-128))+rcx]
>>>>>>>> 
>>>>>>>> +        bswap   r9d
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,216
>>>>>>>> 
>>>>>>>> +        xor     r9d,ebp
>>>>>>>> 
>>>>>>>> +DB      0x66,0x90
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,232
>>>>>>>> 
>>>>>>>> +        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[((128-128))+rcx]
>>>>>>>> 
>>>>>>>> +        bswap   r9d
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +        xor     r9d,ebp
>>>>>>>> 
>>>>>>>> +DB      0x66,0x90
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,233
>>>>>>>> 
>>>>>>>> +        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[((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,ebp
>>>>>>>> 
>>>>>>>> +        movdqu  xmm10,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,232
>>>>>>>> 
>>>>>>>> +        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[((160-128))+rcx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$ctr32_enc_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,220,193
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,220,201
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((176-128))+rcx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,232
>>>>>>>> 
>>>>>>>> +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[((192-128))+rcx]
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$ctr32_enc_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,220,193
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,220,201
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((208-128))+rcx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,232
>>>>>>>> 
>>>>>>>> +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[((224-128))+rcx]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ctr32_enc_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ctr32_enc_done:
>>>>>>>> 
>>>>>>>> +        movdqu  xmm11,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm0
>>>>>>>> 
>>>>>>>> +        movdqu  xmm12,XMMWORD[32+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm0
>>>>>>>> 
>>>>>>>> +        movdqu  xmm13,XMMWORD[48+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm0
>>>>>>>> 
>>>>>>>> +        movdqu  xmm14,XMMWORD[64+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm0
>>>>>>>> 
>>>>>>>> +        movdqu  xmm15,XMMWORD[80+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm0
>>>>>>>> 
>>>>>>>> +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
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,220,193
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,220,201
>>>>>>>> 
>>>>>>>> +        movdqu  xmm1,XMMWORD[96+rdi]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[128+rdi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,221,210
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        movdqu  xmm10,XMMWORD[((112-128))+rdi]
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,221,219
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm11,XMMWORD[rsp]
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,221,228
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,221,237
>>>>>>>> 
>>>>>>>> +        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[48+rsp]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,XMMWORD[64+rsp]
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,221,193
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[80+rsp]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((16-128))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,69,15,56,221,202
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm14
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm15
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm0
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[96+rsi],xmm8
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[112+rsi],xmm9
>>>>>>>> 
>>>>>>>> +        lea     rsi,[128+rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     rdx,8
>>>>>>>> 
>>>>>>>> +        jnc     NEAR $L$ctr32_loop8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     rdx,8
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$ctr32_done
>>>>>>>> 
>>>>>>>> +        lea     rcx,[((-128))+rcx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$ctr32_tail:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>>> 
>>>>>>>> +        cmp     rdx,4
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$ctr32_loop3
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$ctr32_loop4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        shl     eax,4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,XMMWORD[96+rsp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +        lea     rcx,[((32-16))+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        neg     rax
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +        add     rax,16
>>>>>>>> 
>>>>>>>> +        movups  xmm10,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,233
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,241
>>>>>>>> 
>>>>>>>> +        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[48+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movdqu  xmm10,XMMWORD[64+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[64+rsi],xmm6
>>>>>>>> 
>>>>>>>> +        cmp     rdx,6
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$ctr32_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm11,XMMWORD[80+rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$ctr32_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm12,XMMWORD[96+rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[96+rsi],xmm8
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ctr32_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$ctr32_loop4:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        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[rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$ctr32_loop4
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,217
>>>>>>>> 
>>>>>>>> +        movups  xmm10,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        movups  xmm11,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,233
>>>>>>>> 
>>>>>>>> +        movups  xmm12,XMMWORD[32+rdi]
>>>>>>>> 
>>>>>>>> +        movups  xmm13,XMMWORD[48+rdi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ctr32_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$ctr32_loop3:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>>> 
>>>>>>>> +        dec     eax
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +        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[rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        cmp     rdx,2
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$ctr32_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm11,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$ctr32_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm12,XMMWORD[32+rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$ctr32_done:
>>>>>>>> 
>>>>>>>> +        xorps   xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        xor     ebp,ebp
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[((-168))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-168)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[((-152))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-152)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[((-136))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-136)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[((-120))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-120)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,XMMWORD[((-104))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-104)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm11,XMMWORD[((-88))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-88)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm12,XMMWORD[((-72))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-72)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm13,XMMWORD[((-56))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-56)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm14,XMMWORD[((-40))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-40)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm15,XMMWORD[((-24))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-24)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[64+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[80+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[96+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[112+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        mov     rbp,QWORD[((-8))+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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:
>>>>>>>> 
>>>>>>>> +global  aesni_xts_encrypt
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +aesni_xts_encrypt:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_aesni_xts_encrypt:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +        mov     rcx,r9
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r11,[rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     rsp,272
>>>>>>>> 
>>>>>>>> +        and     rsp,-16
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-168)+r11],xmm6
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-152)+r11],xmm7
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-136)+r11],xmm8
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-120)+r11],xmm9
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-104)+r11],xmm10
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-88)+r11],xmm11
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-72)+r11],xmm12
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-56)+r11],xmm13
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-40)+r11],xmm14
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-24)+r11],xmm15
>>>>>>>> 
>>>>>>>> +$L$xts_enc_body:
>>>>>>>> 
>>>>>>>> +        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:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        dec     eax
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +        lea     r8,[16+r8]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_enc1_8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,209
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        mov     rbp,rcx
>>>>>>>> 
>>>>>>>> +        mov     eax,r10d
>>>>>>>> 
>>>>>>>> +        shl     r10d,4
>>>>>>>> 
>>>>>>>> +        mov     r9,rdx
>>>>>>>> 
>>>>>>>> +        and     rdx,-16
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+r10*1+rcx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,XMMWORD[$L$xts_magic]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm2
>>>>>>>> 
>>>>>>>> +        pshufd  xmm9,xmm2,0x5f
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        psrad   xmm14,31
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        psrad   xmm14,31
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        psrad   xmm14,31
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        psrad   xmm14,31
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        psrad   xmm9,31
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm9,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[96+rsp],xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     rdx,16*6
>>>>>>>> 
>>>>>>>> +        jc      NEAR $L$xts_enc_short
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     eax,16+96
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+r10*1+rbp]
>>>>>>>> 
>>>>>>>> +        sub     rax,r10
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r10,rax
>>>>>>>> 
>>>>>>>> +        lea     r8,[$L$xts_magic]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$xts_enc_grandloop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$xts_enc_grandloop:
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm0
>>>>>>>> 
>>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +        movdqu  xmm7,XMMWORD[80+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm15
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,XMMWORD[96+rsp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,233
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+rbp]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[96+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,241
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[rsp],xmm10
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,249
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[48+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm11
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,216
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm12
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,232
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[64+rsp],xmm14
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,248
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[64+rbp]
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[80+rsp],xmm8
>>>>>>>> 
>>>>>>>> +        pshufd  xmm9,xmm15,0x5f
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$xts_enc_loop6
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$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[((-64))+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
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,248
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$xts_enc_loop6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +        psrad   xmm14,31
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +        pand    xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        movups  xmm10,XMMWORD[rbp]
>>>>>>>> 
>>>>>>>> +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[((-64))+rcx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm15
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,216
>>>>>>>> 
>>>>>>>> +        psrad   xmm14,31
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,232
>>>>>>>> 
>>>>>>>> +        pand    xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        movaps  xmm12,xmm11
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,240
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,248
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-48))+rcx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        psrad   xmm14,31
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm14,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,233
>>>>>>>> 
>>>>>>>> +        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[((-32))+rcx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        psrad   xmm14,31
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,216
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm14,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,232
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,240
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>> 
>>>>>>>> +        movaps  xmm14,xmm13
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,248
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm9
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        psrad   xmm0,31
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm0,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,233
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm0
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rbp]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,241
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,249
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rbp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm15
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,84,36,0
>>>>>>>> 
>>>>>>>> +        psrad   xmm9,31
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,92,36,16
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,100,36,32
>>>>>>>> 
>>>>>>>> +        pand    xmm9,xmm8
>>>>>>>> 
>>>>>>>> +        mov     rax,r10
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,108,36,48
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,116,36,64
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,124,36,80
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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     NEAR $L$xts_enc_grandloop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     eax,16+96
>>>>>>>> 
>>>>>>>> +        sub     eax,r10d
>>>>>>>> 
>>>>>>>> +        mov     rcx,rbp
>>>>>>>> 
>>>>>>>> +        shr     eax,4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$xts_enc_short:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm0
>>>>>>>> 
>>>>>>>> +        add     rdx,16*6
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$xts_enc_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm0
>>>>>>>> 
>>>>>>>> +        cmp     rdx,0x20
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$xts_enc_one
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm0
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$xts_enc_two
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm0
>>>>>>>> 
>>>>>>>> +        cmp     rdx,0x40
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$xts_enc_three
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$xts_enc_four
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[80+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    _aesni_encrypt6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        xorps   xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        xorps   xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        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[rdi]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +$L$oop_enc1_9:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        dec     eax
>>>>>>>> 
>>>>>>>> +        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[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$xts_enc_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$xts_enc_two:
>>>>>>>> 
>>>>>>>> +        movups  xmm2,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[32+rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    _aesni_encrypt2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm12
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        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[rdi]
>>>>>>>> 
>>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        movups  xmm4,XMMWORD[32+rdi]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[48+rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    _aesni_encrypt3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm13
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        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[rdi]
>>>>>>>> 
>>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        movups  xmm4,XMMWORD[32+rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movups  xmm5,XMMWORD[48+rdi]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[64+rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        xorps   xmm5,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    _aesni_encrypt4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        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:
>>>>>>>> 
>>>>>>>> +        and     r9,15
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$xts_enc_ret
>>>>>>>> 
>>>>>>>> +        mov     rdx,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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     NEAR $L$xts_enc_steal
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     rsi,r9
>>>>>>>> 
>>>>>>>> +        mov     rcx,rbp
>>>>>>>> 
>>>>>>>> +        mov     eax,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm2,XMMWORD[((-16))+rsi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +$L$oop_enc1_10:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        dec     eax
>>>>>>>> 
>>>>>>>> +        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[(-16)+rsi],xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$xts_enc_ret:
>>>>>>>> 
>>>>>>>> +        xorps   xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[((-168))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-168)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[((-152))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-152)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[((-136))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-136)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[((-120))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-120)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,XMMWORD[((-104))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-104)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm11,XMMWORD[((-88))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-88)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm12,XMMWORD[((-72))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-72)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm13,XMMWORD[((-56))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-56)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm14,XMMWORD[((-40))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-40)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm15,XMMWORD[((-24))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-24)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[64+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[80+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[96+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        mov     rbp,QWORD[((-8))+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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:
>>>>>>>> 
>>>>>>>> +global  aesni_xts_decrypt
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +aesni_xts_decrypt:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_aesni_xts_decrypt:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +        mov     rcx,r9
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r11,[rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     rsp,272
>>>>>>>> 
>>>>>>>> +        and     rsp,-16
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-168)+r11],xmm6
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-152)+r11],xmm7
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-136)+r11],xmm8
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-120)+r11],xmm9
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-104)+r11],xmm10
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-88)+r11],xmm11
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-72)+r11],xmm12
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-56)+r11],xmm13
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-40)+r11],xmm14
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-24)+r11],xmm15
>>>>>>>> 
>>>>>>>> +$L$xts_dec_body:
>>>>>>>> 
>>>>>>>> +        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:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        dec     eax
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +        setnz   al
>>>>>>>> 
>>>>>>>> +        shl     rax,4
>>>>>>>> 
>>>>>>>> +        sub     rdx,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        mov     rbp,rcx
>>>>>>>> 
>>>>>>>> +        mov     eax,r10d
>>>>>>>> 
>>>>>>>> +        shl     r10d,4
>>>>>>>> 
>>>>>>>> +        mov     r9,rdx
>>>>>>>> 
>>>>>>>> +        and     rdx,-16
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+r10*1+rcx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,XMMWORD[$L$xts_magic]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm2
>>>>>>>> 
>>>>>>>> +        pshufd  xmm9,xmm2,0x5f
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        psrad   xmm14,31
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        psrad   xmm14,31
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        psrad   xmm14,31
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        psrad   xmm14,31
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        psrad   xmm9,31
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm9,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[96+rsp],xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     rdx,16*6
>>>>>>>> 
>>>>>>>> +        jc      NEAR $L$xts_dec_short
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     eax,16+96
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+r10*1+rbp]
>>>>>>>> 
>>>>>>>> +        sub     rax,r10
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r10,rax
>>>>>>>> 
>>>>>>>> +        lea     r8,[$L$xts_magic]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$xts_dec_grandloop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$xts_dec_grandloop:
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm0
>>>>>>>> 
>>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,217
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,225
>>>>>>>> 
>>>>>>>> +        movdqu  xmm7,XMMWORD[80+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm15
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,XMMWORD[96+rsp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,233
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+rbp]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[96+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,241
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[rsp],xmm10
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,249
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[48+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,208
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm11
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,216
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm12
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,232
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[64+rsp],xmm14
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,248
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[64+rbp]
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[80+rsp],xmm8
>>>>>>>> 
>>>>>>>> +        pshufd  xmm9,xmm15,0x5f
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$xts_dec_loop6
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$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[((-64))+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
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,248
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$xts_dec_loop6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +        psrad   xmm14,31
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,217
>>>>>>>> 
>>>>>>>> +        pand    xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        movups  xmm10,XMMWORD[rbp]
>>>>>>>> 
>>>>>>>> +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[((-64))+rcx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,208
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm15
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,216
>>>>>>>> 
>>>>>>>> +        psrad   xmm14,31
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,232
>>>>>>>> 
>>>>>>>> +        pand    xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        movaps  xmm12,xmm11
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,240
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,248
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-48))+rcx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        psrad   xmm14,31
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,217
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm14,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,233
>>>>>>>> 
>>>>>>>> +        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[((-32))+rcx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,208
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        psrad   xmm14,31
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,216
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm14,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,232
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,240
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>> 
>>>>>>>> +        movaps  xmm14,xmm13
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,248
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm9
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        psrad   xmm0,31
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,217
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm0,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,233
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm0
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rbp]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,241
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,249
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rbp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm15
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,84,36,0
>>>>>>>> 
>>>>>>>> +        psrad   xmm9,31
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,92,36,16
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,100,36,32
>>>>>>>> 
>>>>>>>> +        pand    xmm9,xmm8
>>>>>>>> 
>>>>>>>> +        mov     rax,r10
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,108,36,48
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,116,36,64
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,124,36,80
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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     NEAR $L$xts_dec_grandloop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     eax,16+96
>>>>>>>> 
>>>>>>>> +        sub     eax,r10d
>>>>>>>> 
>>>>>>>> +        mov     rcx,rbp
>>>>>>>> 
>>>>>>>> +        shr     eax,4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$xts_dec_short:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm0
>>>>>>>> 
>>>>>>>> +        add     rdx,16*6
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$xts_dec_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm0
>>>>>>>> 
>>>>>>>> +        cmp     rdx,0x20
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$xts_dec_one
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm0
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$xts_dec_two
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        cmp     rdx,0x40
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$xts_dec_three
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$xts_dec_four
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[80+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    _aesni_decrypt6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        xorps   xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        xorps   xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm14
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>>> 
>>>>>>>> +        pcmpgtd xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[64+rsi],xmm6
>>>>>>>> 
>>>>>>>> +        lea     rsi,[80+rsi]
>>>>>>>> 
>>>>>>>> +        pshufd  xmm11,xmm14,0x13
>>>>>>>> 
>>>>>>>> +        and     r9,15
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$xts_dec_ret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        paddq   xmm15,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm11,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$xts_dec_done2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$xts_dec_one:
>>>>>>>> 
>>>>>>>> +        movups  xmm2,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +$L$oop_dec1_12:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +        dec     eax
>>>>>>>> 
>>>>>>>> +        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[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm11,xmm12
>>>>>>>> 
>>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$xts_dec_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$xts_dec_two:
>>>>>>>> 
>>>>>>>> +        movups  xmm2,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[32+rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    _aesni_decrypt2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm12
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm11,xmm13
>>>>>>>> 
>>>>>>>> +        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[rdi]
>>>>>>>> 
>>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        movups  xmm4,XMMWORD[32+rdi]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[48+rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    _aesni_decrypt3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm13
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm11,xmm14
>>>>>>>> 
>>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        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[rdi]
>>>>>>>> 
>>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        movups  xmm4,XMMWORD[32+rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movups  xmm5,XMMWORD[48+rdi]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[64+rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        xorps   xmm5,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    _aesni_decrypt4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        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:
>>>>>>>> 
>>>>>>>> +        and     r9,15
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$xts_dec_ret
>>>>>>>> 
>>>>>>>> +$L$xts_dec_done2:
>>>>>>>> 
>>>>>>>> +        mov     rdx,r9
>>>>>>>> 
>>>>>>>> +        mov     rcx,rbp
>>>>>>>> 
>>>>>>>> +        mov     eax,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm2,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm11
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +$L$oop_dec1_13:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +        dec     eax
>>>>>>>> 
>>>>>>>> +        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[rsi],xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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     NEAR $L$xts_dec_steal
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     rsi,r9
>>>>>>>> 
>>>>>>>> +        mov     rcx,rbp
>>>>>>>> 
>>>>>>>> +        mov     eax,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm2,XMMWORD[rsi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +$L$oop_dec1_14:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +        dec     eax
>>>>>>>> 
>>>>>>>> +        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[rsi],xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$xts_dec_ret:
>>>>>>>> 
>>>>>>>> +        xorps   xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[((-168))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-168)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[((-152))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-152)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[((-136))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-136)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[((-120))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-120)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,XMMWORD[((-104))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-104)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm11,XMMWORD[((-88))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-88)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm12,XMMWORD[((-72))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-72)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm13,XMMWORD[((-56))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-56)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm14,XMMWORD[((-40))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-40)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm15,XMMWORD[((-24))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-24)+r11],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[64+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[80+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[96+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        mov     rbp,QWORD[((-8))+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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:
>>>>>>>> 
>>>>>>>> +global  aesni_ocb_encrypt
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +aesni_ocb_encrypt:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_aesni_ocb_encrypt:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +        mov     rcx,r9
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rax,[rsp]
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[((-160))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[64+rsp],xmm10
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[80+rsp],xmm11
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[96+rsp],xmm12
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[112+rsp],xmm13
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[128+rsp],xmm14
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[144+rsp],xmm15
>>>>>>>> 
>>>>>>>> +$L$ocb_enc_body:
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[56+rax]
>>>>>>>> 
>>>>>>>> +        mov     rbp,QWORD[((56+8))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[240+rcx]
>>>>>>>> 
>>>>>>>> +        mov     r11,rcx
>>>>>>>> 
>>>>>>>> +        shl     r10d,4
>>>>>>>> 
>>>>>>>> +        movups  xmm9,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+r10*1+rcx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  xmm15,XMMWORD[r9]
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     eax,16+32
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+r10*1+r11]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>>> 
>>>>>>>> +        sub     rax,r10
>>>>>>>> 
>>>>>>>> +        mov     r10,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  xmm10,XMMWORD[rbx]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm8,XMMWORD[rbp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        test    r8,1
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$ocb_enc_odd
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        bsf     r12,r8
>>>>>>>> 
>>>>>>>> +        add     r8,1
>>>>>>>> 
>>>>>>>> +        shl     r12,4
>>>>>>>> 
>>>>>>>> +        movdqu  xmm7,XMMWORD[r12*1+rbx]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    __ocb_encrypt1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm7
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>> 
>>>>>>>> +        sub     rdx,1
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$ocb_enc_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$ocb_enc_odd:
>>>>>>>> 
>>>>>>>> +        lea     r12,[1+r8]
>>>>>>>> 
>>>>>>>> +        lea     r13,[3+r8]
>>>>>>>> 
>>>>>>>> +        lea     r14,[5+r8]
>>>>>>>> 
>>>>>>>> +        lea     r8,[6+r8]
>>>>>>>> 
>>>>>>>> +        bsf     r12,r12
>>>>>>>> 
>>>>>>>> +        bsf     r13,r13
>>>>>>>> 
>>>>>>>> +        bsf     r14,r14
>>>>>>>> 
>>>>>>>> +        shl     r12,4
>>>>>>>> 
>>>>>>>> +        shl     r13,4
>>>>>>>> 
>>>>>>>> +        shl     r14,4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     rdx,6
>>>>>>>> 
>>>>>>>> +        jc      NEAR $L$ocb_enc_short
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ocb_enc_grandloop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$ocb_enc_grandloop:
>>>>>>>> 
>>>>>>>> +        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]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[96+rdi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    __ocb_encrypt6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +        lea     rsi,[96+rsi]
>>>>>>>> 
>>>>>>>> +        sub     rdx,6
>>>>>>>> 
>>>>>>>> +        jnc     NEAR $L$ocb_enc_grandloop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$ocb_enc_short:
>>>>>>>> 
>>>>>>>> +        add     rdx,6
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$ocb_enc_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        cmp     rdx,2
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$ocb_enc_one
>>>>>>>> 
>>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$ocb_enc_two
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>>> 
>>>>>>>> +        cmp     rdx,4
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$ocb_enc_three
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$ocb_enc_four
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    __ocb_encrypt6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm14
>>>>>>>> 
>>>>>>>> +        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$ocb_enc_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ocb_enc_one:
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    __ocb_encrypt1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm7
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ocb_enc_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ocb_enc_two:
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    __ocb_encrypt4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm11
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ocb_enc_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ocb_enc_three:
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    __ocb_encrypt4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm12
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ocb_enc_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ocb_enc_four:
>>>>>>>> 
>>>>>>>> +        call    __ocb_encrypt4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm13
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$ocb_enc_done:
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm0
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rbp],xmm8
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[r9],xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xorps   xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,XMMWORD[64+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[64+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm11,XMMWORD[80+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[80+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm12,XMMWORD[96+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[96+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm13,XMMWORD[112+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[112+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm14,XMMWORD[128+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[128+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm15,XMMWORD[144+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[144+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        lea     rax,[((160+40))+rsp]
>>>>>>>> 
>>>>>>>> +$L$ocb_enc_pop:
>>>>>>>> 
>>>>>>>> +        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$ocb_enc_epilogue:
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$SEH_end_aesni_ocb_encrypt:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +__ocb_encrypt6:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>> 
>>>>>>>> +        movdqu  xmm11,XMMWORD[r12*1+rbx]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm10
>>>>>>>> 
>>>>>>>> +        movdqu  xmm13,XMMWORD[r13*1+rbx]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        movdqu  xmm15,XMMWORD[r14*1+rbx]
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm15
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r12,[1+r8]
>>>>>>>> 
>>>>>>>> +        lea     r13,[3+r8]
>>>>>>>> 
>>>>>>>> +        lea     r14,[5+r8]
>>>>>>>> 
>>>>>>>> +        add     r8,6
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm9
>>>>>>>> 
>>>>>>>> +        bsf     r12,r12
>>>>>>>> 
>>>>>>>> +        bsf     r13,r13
>>>>>>>> 
>>>>>>>> +        bsf     r14,r14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,217
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,233
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,241
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,249
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[48+r11]
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,232
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,248
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[64+r11]
>>>>>>>> 
>>>>>>>> +        shl     r12,4
>>>>>>>> 
>>>>>>>> +        shl     r13,4
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ocb_enc_loop6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$ocb_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[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
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,248
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$ocb_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[16+r11]
>>>>>>>> 
>>>>>>>> +        shl     r14,4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,221,210
>>>>>>>> 
>>>>>>>> +        movdqu  xmm10,XMMWORD[rbx]
>>>>>>>> 
>>>>>>>> +        mov     rax,r10
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,221,219
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,221,228
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,221,237
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,221,246
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,221,255
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +__ocb_encrypt4:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>> 
>>>>>>>> +        movdqu  xmm11,XMMWORD[r12*1+rbx]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm10
>>>>>>>> 
>>>>>>>> +        movdqu  xmm13,XMMWORD[r13*1+rbx]
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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[48+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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[64+r11]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ocb_enc_loop4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$ocb_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[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[((-16))+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$ocb_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[16+r11]
>>>>>>>> 
>>>>>>>> +        mov     rax,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,221,210
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,221,219
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,221,228
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,221,237
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +__ocb_encrypt1:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm15
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm7
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[48+r11]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[64+r11]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ocb_enc_loop1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$ocb_enc_loop1:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        add     rax,32
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,208
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$ocb_enc_loop1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>>> 
>>>>>>>> +        mov     rax,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,215
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  aesni_ocb_decrypt
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +aesni_ocb_decrypt:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_aesni_ocb_decrypt:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +        mov     rcx,r9
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rax,[rsp]
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[((-160))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[64+rsp],xmm10
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[80+rsp],xmm11
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[96+rsp],xmm12
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[112+rsp],xmm13
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[128+rsp],xmm14
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[144+rsp],xmm15
>>>>>>>> 
>>>>>>>> +$L$ocb_dec_body:
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[56+rax]
>>>>>>>> 
>>>>>>>> +        mov     rbp,QWORD[((56+8))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[240+rcx]
>>>>>>>> 
>>>>>>>> +        mov     r11,rcx
>>>>>>>> 
>>>>>>>> +        shl     r10d,4
>>>>>>>> 
>>>>>>>> +        movups  xmm9,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+r10*1+rcx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  xmm15,XMMWORD[r9]
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     eax,16+32
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+r10*1+r11]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>>> 
>>>>>>>> +        sub     rax,r10
>>>>>>>> 
>>>>>>>> +        mov     r10,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  xmm10,XMMWORD[rbx]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm8,XMMWORD[rbp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        test    r8,1
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$ocb_dec_odd
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        bsf     r12,r8
>>>>>>>> 
>>>>>>>> +        add     r8,1
>>>>>>>> 
>>>>>>>> +        shl     r12,4
>>>>>>>> 
>>>>>>>> +        movdqu  xmm7,XMMWORD[r12*1+rbx]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    __ocb_decrypt1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm7
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        xorps   xmm8,xmm2
>>>>>>>> 
>>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>> 
>>>>>>>> +        sub     rdx,1
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$ocb_dec_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$ocb_dec_odd:
>>>>>>>> 
>>>>>>>> +        lea     r12,[1+r8]
>>>>>>>> 
>>>>>>>> +        lea     r13,[3+r8]
>>>>>>>> 
>>>>>>>> +        lea     r14,[5+r8]
>>>>>>>> 
>>>>>>>> +        lea     r8,[6+r8]
>>>>>>>> 
>>>>>>>> +        bsf     r12,r12
>>>>>>>> 
>>>>>>>> +        bsf     r13,r13
>>>>>>>> 
>>>>>>>> +        bsf     r14,r14
>>>>>>>> 
>>>>>>>> +        shl     r12,4
>>>>>>>> 
>>>>>>>> +        shl     r13,4
>>>>>>>> 
>>>>>>>> +        shl     r14,4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     rdx,6
>>>>>>>> 
>>>>>>>> +        jc      NEAR $L$ocb_dec_short
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ocb_dec_grandloop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$ocb_dec_grandloop:
>>>>>>>> 
>>>>>>>> +        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]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[96+rdi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    __ocb_decrypt6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm2
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm4
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm5
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm6
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm7
>>>>>>>> 
>>>>>>>> +        lea     rsi,[96+rsi]
>>>>>>>> 
>>>>>>>> +        sub     rdx,6
>>>>>>>> 
>>>>>>>> +        jnc     NEAR $L$ocb_dec_grandloop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$ocb_dec_short:
>>>>>>>> 
>>>>>>>> +        add     rdx,6
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$ocb_dec_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        cmp     rdx,2
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$ocb_dec_one
>>>>>>>> 
>>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$ocb_dec_two
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>>> 
>>>>>>>> +        cmp     rdx,4
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$ocb_dec_three
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$ocb_dec_four
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    __ocb_decrypt6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm14
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm2
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm4
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm5
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ocb_dec_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ocb_dec_one:
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    __ocb_decrypt1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm7
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        xorps   xmm8,xmm2
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ocb_dec_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ocb_dec_two:
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    __ocb_decrypt4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm11
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        xorps   xmm8,xmm2
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        xorps   xmm8,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ocb_dec_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ocb_dec_three:
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    __ocb_decrypt4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm12
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        xorps   xmm8,xmm2
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        xorps   xmm8,xmm3
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        xorps   xmm8,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ocb_dec_done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ocb_dec_four:
>>>>>>>> 
>>>>>>>> +        call    __ocb_decrypt4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm13
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm2
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm4
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$ocb_dec_done:
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm0
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rbp],xmm8
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[r9],xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xorps   xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,XMMWORD[64+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[64+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm11,XMMWORD[80+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[80+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm12,XMMWORD[96+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[96+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm13,XMMWORD[112+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[112+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm14,XMMWORD[128+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[128+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm15,XMMWORD[144+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[144+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        lea     rax,[((160+40))+rsp]
>>>>>>>> 
>>>>>>>> +$L$ocb_dec_pop:
>>>>>>>> 
>>>>>>>> +        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$ocb_dec_epilogue:
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$SEH_end_aesni_ocb_decrypt:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +__ocb_decrypt6:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>> 
>>>>>>>> +        movdqu  xmm11,XMMWORD[r12*1+rbx]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm10
>>>>>>>> 
>>>>>>>> +        movdqu  xmm13,XMMWORD[r13*1+rbx]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        movdqu  xmm15,XMMWORD[r14*1+rbx]
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm15
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r12,[1+r8]
>>>>>>>> 
>>>>>>>> +        lea     r13,[3+r8]
>>>>>>>> 
>>>>>>>> +        lea     r14,[5+r8]
>>>>>>>> 
>>>>>>>> +        add     r8,6
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm9
>>>>>>>> 
>>>>>>>> +        bsf     r12,r12
>>>>>>>> 
>>>>>>>> +        bsf     r13,r13
>>>>>>>> 
>>>>>>>> +        bsf     r14,r14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,217
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,233
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,241
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,249
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[48+r11]
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,232
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,248
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[64+r11]
>>>>>>>> 
>>>>>>>> +        shl     r12,4
>>>>>>>> 
>>>>>>>> +        shl     r13,4
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ocb_dec_loop6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$ocb_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[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
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,248
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$ocb_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[16+r11]
>>>>>>>> 
>>>>>>>> +        shl     r14,4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,223,210
>>>>>>>> 
>>>>>>>> +        movdqu  xmm10,XMMWORD[rbx]
>>>>>>>> 
>>>>>>>> +        mov     rax,r10
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,223,219
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,223,228
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,223,237
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,223,246
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,223,255
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +__ocb_decrypt4:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm9
>>>>>>>> 
>>>>>>>> +        movdqu  xmm11,XMMWORD[r12*1+rbx]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm10
>>>>>>>> 
>>>>>>>> +        movdqu  xmm13,XMMWORD[r13*1+rbx]
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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[48+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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[64+r11]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ocb_dec_loop4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$ocb_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[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[((-16))+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$ocb_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[16+r11]
>>>>>>>> 
>>>>>>>> +        mov     rax,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,223,210
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,223,219
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,223,228
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,223,237
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +__ocb_decrypt1:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm15
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm7
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[48+r11]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,208
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[64+r11]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ocb_dec_loop1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$ocb_dec_loop1:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        add     rax,32
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,208
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$ocb_dec_loop1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>>> 
>>>>>>>> +        mov     rax,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,215
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  aesni_cbc_encrypt
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +aesni_cbc_encrypt:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_aesni_cbc_encrypt:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +        mov     rcx,r9
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        test    rdx,rdx
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$cbc_ret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[240+rcx]
>>>>>>>> 
>>>>>>>> +        mov     r11,rcx
>>>>>>>> 
>>>>>>>> +        test    r9d,r9d
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$cbc_decrypt
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm2,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +        mov     eax,r10d
>>>>>>>> 
>>>>>>>> +        cmp     rdx,16
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$cbc_enc_tail
>>>>>>>> 
>>>>>>>> +        sub     rdx,16
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$cbc_enc_loop
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$cbc_enc_loop:
>>>>>>>> 
>>>>>>>> +        movups  xmm3,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm3
>>>>>>>> 
>>>>>>>> +$L$oop_enc1_15:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,220,209
>>>>>>>> 
>>>>>>>> +        dec     eax
>>>>>>>> 
>>>>>>>> +        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[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>> 
>>>>>>>> +        sub     rdx,16
>>>>>>>> 
>>>>>>>> +        jnc     NEAR $L$cbc_enc_loop
>>>>>>>> 
>>>>>>>> +        add     rdx,16
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$cbc_enc_tail
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[r8],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$cbc_ret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$cbc_enc_tail:
>>>>>>>> 
>>>>>>>> +        mov     rcx,rdx
>>>>>>>> 
>>>>>>>> +        xchg    rsi,rdi
>>>>>>>> 
>>>>>>>> +        DD      0x9066A4F3
>>>>>>>> 
>>>>>>>> +        mov     ecx,16
>>>>>>>> 
>>>>>>>> +        sub     rcx,rdx
>>>>>>>> 
>>>>>>>> +        xor     eax,eax
>>>>>>>> 
>>>>>>>> +        DD      0x9066AAF3
>>>>>>>> 
>>>>>>>> +        lea     rdi,[((-16))+rdi]
>>>>>>>> 
>>>>>>>> +        mov     eax,r10d
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdi
>>>>>>>> 
>>>>>>>> +        mov     rcx,r11
>>>>>>>> 
>>>>>>>> +        xor     rdx,rdx
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$cbc_enc_loop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$cbc_decrypt:
>>>>>>>> 
>>>>>>>> +        cmp     rdx,16
>>>>>>>> 
>>>>>>>> +        jne     NEAR $L$cbc_decrypt_bulk
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm3,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm2
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +$L$oop_dec1_16:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +        dec     r10d
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_dec1_16
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,209
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[r8],xmm4
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$cbc_ret
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$cbc_decrypt_bulk:
>>>>>>>> 
>>>>>>>> +        lea     r11,[rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     rsp,176
>>>>>>>> 
>>>>>>>> +        and     rsp,-16
>>>>>>>> 
>>>>>>>> +        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:
>>>>>>>> 
>>>>>>>> +        mov     rbp,rcx
>>>>>>>> 
>>>>>>>> +        movups  xmm10,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +        mov     eax,r10d
>>>>>>>> 
>>>>>>>> +        cmp     rdx,0x50
>>>>>>>> 
>>>>>>>> +        jbe     NEAR $L$cbc_dec_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm11,xmm2
>>>>>>>> 
>>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm3
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm4
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm5
>>>>>>>> 
>>>>>>>> +        movdqu  xmm7,XMMWORD[80+rdi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm6
>>>>>>>> 
>>>>>>>> +        mov     r9d,DWORD[((OPENSSL_ia32cap_P+4))]
>>>>>>>> 
>>>>>>>> +        cmp     rdx,0x70
>>>>>>>> 
>>>>>>>> +        jbe     NEAR $L$cbc_dec_six_or_seven
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r9d,71303168
>>>>>>>> 
>>>>>>>> +        sub     rdx,0x50
>>>>>>>> 
>>>>>>>> +        cmp     r9d,4194304
>>>>>>>> 
>>>>>>>> +        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[rsi],xmm9
>>>>>>>> 
>>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>> 
>>>>>>>> +$L$cbc_dec_loop8_enter:
>>>>>>>> 
>>>>>>>> +        movdqu  xmm8,XMMWORD[96+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        movdqu  xmm9,XMMWORD[112+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((16-112))+rcx]
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        mov     rbp,-1
>>>>>>>> 
>>>>>>>> +        cmp     rdx,0x70
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm0
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((32-112))+rcx]
>>>>>>>> 
>>>>>>>> +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
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,193
>>>>>>>> 
>>>>>>>> +        adc     rbp,0
>>>>>>>> 
>>>>>>>> +        and     rbp,128
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,201
>>>>>>>> 
>>>>>>>> +        add     rbp,rdi
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((48-112))+rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,232
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,248
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,192
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,200
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((64-112))+rcx]
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +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
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,193
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,201
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((80-112))+rcx]
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,232
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,248
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,192
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,200
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((96-112))+rcx]
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +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
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,193
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,201
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((112-112))+rcx]
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,232
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,248
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,192
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,200
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((128-112))+rcx]
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +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
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,193
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,201
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((144-112))+rcx]
>>>>>>>> 
>>>>>>>> +        cmp     eax,11
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,232
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,248
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,192
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,200
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,233
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,241
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,249
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,193
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,201
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((176-112))+rcx]
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,232
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,248
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,192
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,200
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,233
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,241
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,249
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,193
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,201
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[((208-112))+rcx]
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,208
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,216
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,224
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,232
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,240
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,248
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,192
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,200
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((224-112))+rcx]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$cbc_dec_done
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$cbc_dec_done:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,217
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,225
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,233
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,241
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,249
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,193
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,222,201
>>>>>>>> 
>>>>>>>> +        movdqu  xmm1,XMMWORD[80+rdi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,223,210
>>>>>>>> 
>>>>>>>> +        movdqu  xmm10,XMMWORD[96+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,223,219
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm0
>>>>>>>> 
>>>>>>>> +        movdqu  xmm0,XMMWORD[112+rdi]
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,223,228
>>>>>>>> 
>>>>>>>> +        lea     rdi,[128+rdi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm11,XMMWORD[rbp]
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,223,237
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,223,246
>>>>>>>> 
>>>>>>>> +        movdqu  xmm12,XMMWORD[16+rbp]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm13,XMMWORD[32+rbp]
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,223,255
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,223,193
>>>>>>>> 
>>>>>>>> +        movdqu  xmm14,XMMWORD[48+rbp]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm15,XMMWORD[64+rbp]
>>>>>>>> 
>>>>>>>> +DB      102,69,15,56,223,202
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm0
>>>>>>>> 
>>>>>>>> +        movdqu  xmm1,XMMWORD[80+rbp]
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[((-112))+rcx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm14
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm15
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[96+rsi],xmm8
>>>>>>>> 
>>>>>>>> +        lea     rsi,[112+rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     rdx,0x80
>>>>>>>> 
>>>>>>>> +        ja      NEAR $L$cbc_dec_loop8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movaps  xmm2,xmm9
>>>>>>>> 
>>>>>>>> +        lea     rcx,[((-112))+rcx]
>>>>>>>> 
>>>>>>>> +        add     rdx,0x70
>>>>>>>> 
>>>>>>>> +        jle     NEAR $L$cbc_dec_clear_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,0x60
>>>>>>>> 
>>>>>>>> +        ja      NEAR $L$cbc_dec_seven
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,xmm7
>>>>>>>> 
>>>>>>>> +        call    _aesni_decrypt6
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm15
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[64+rsi],xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>> 
>>>>>>>> +        lea     rsi,[80+rsi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$cbc_dec_seven:
>>>>>>>> 
>>>>>>>> +        movups  xmm8,XMMWORD[96+rdi]
>>>>>>>> 
>>>>>>>> +        xorps   xmm9,xmm9
>>>>>>>> 
>>>>>>>> +        call    _aesni_decrypt8
>>>>>>>> 
>>>>>>>> +        movups  xmm9,XMMWORD[80+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movups  xmm10,XMMWORD[96+rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm15
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[64+rsi],xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[80+rsi],xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>> 
>>>>>>>> +        lea     rsi,[96+rsi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm9
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$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[32+rdi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm3
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm4
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm5
>>>>>>>> 
>>>>>>>> +        movdqu  xmm7,XMMWORD[80+rdi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm6
>>>>>>>> 
>>>>>>>> +$L$cbc_dec_loop6_enter:
>>>>>>>> 
>>>>>>>> +        lea     rdi,[96+rdi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    _aesni_decrypt6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        mov     rcx,rbp
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm15
>>>>>>>> 
>>>>>>>> +        mov     eax,r10d
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[64+rsi],xmm6
>>>>>>>> 
>>>>>>>> +        lea     rsi,[80+rsi]
>>>>>>>> 
>>>>>>>> +        sub     rdx,0x60
>>>>>>>> 
>>>>>>>> +        ja      NEAR $L$cbc_dec_loop6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm7
>>>>>>>> 
>>>>>>>> +        add     rdx,0x50
>>>>>>>> 
>>>>>>>> +        jle     NEAR $L$cbc_dec_clear_tail_collected
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm7
>>>>>>>> 
>>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$cbc_dec_tail:
>>>>>>>> 
>>>>>>>> +        movups  xmm2,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        sub     rdx,0x10
>>>>>>>> 
>>>>>>>> +        jbe     NEAR $L$cbc_dec_one
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        movaps  xmm11,xmm2
>>>>>>>> 
>>>>>>>> +        sub     rdx,0x10
>>>>>>>> 
>>>>>>>> +        jbe     NEAR $L$cbc_dec_two
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm4,XMMWORD[32+rdi]
>>>>>>>> 
>>>>>>>> +        movaps  xmm12,xmm3
>>>>>>>> 
>>>>>>>> +        sub     rdx,0x10
>>>>>>>> 
>>>>>>>> +        jbe     NEAR $L$cbc_dec_three
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm5,XMMWORD[48+rdi]
>>>>>>>> 
>>>>>>>> +        movaps  xmm13,xmm4
>>>>>>>> 
>>>>>>>> +        sub     rdx,0x10
>>>>>>>> 
>>>>>>>> +        jbe     NEAR $L$cbc_dec_four
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm6,XMMWORD[64+rdi]
>>>>>>>> 
>>>>>>>> +        movaps  xmm14,xmm5
>>>>>>>> 
>>>>>>>> +        movaps  xmm15,xmm6
>>>>>>>> 
>>>>>>>> +        xorps   xmm7,xmm7
>>>>>>>> 
>>>>>>>> +        call    _aesni_decrypt6
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +        lea     rsi,[64+rsi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>> 
>>>>>>>> +        sub     rdx,0x10
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$cbc_dec_one:
>>>>>>>> 
>>>>>>>> +        movaps  xmm11,xmm2
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm0
>>>>>>>> 
>>>>>>>> +$L$oop_dec1_17:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,222,209
>>>>>>>> 
>>>>>>>> +        dec     eax
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_dec1_17
>>>>>>>> 
>>>>>>>> +DB      102,15,56,223,209
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,xmm11
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$cbc_dec_two:
>>>>>>>> 
>>>>>>>> +        movaps  xmm12,xmm3
>>>>>>>> 
>>>>>>>> +        call    _aesni_decrypt2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$cbc_dec_three:
>>>>>>>> 
>>>>>>>> +        movaps  xmm13,xmm4
>>>>>>>> 
>>>>>>>> +        call    _aesni_decrypt3
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        lea     rsi,[32+rsi]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$cbc_dec_four:
>>>>>>>> 
>>>>>>>> +        movaps  xmm14,xmm5
>>>>>>>> 
>>>>>>>> +        call    _aesni_decrypt4
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +        lea     rsi,[48+rsi]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$cbc_dec_clear_tail_collected:
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +$L$cbc_dec_tail_collected:
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[r8],xmm10
>>>>>>>> 
>>>>>>>> +        and     rdx,15
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$cbc_dec_tail_partial
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$cbc_dec_ret
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$cbc_dec_tail_partial:
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[rsp],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        mov     rcx,16
>>>>>>>> 
>>>>>>>> +        mov     rdi,rsi
>>>>>>>> 
>>>>>>>> +        sub     rcx,rdx
>>>>>>>> 
>>>>>>>> +        lea     rsi,[rsp]
>>>>>>>> 
>>>>>>>> +        DD      0x9066A4F3
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[rsp],xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$cbc_dec_ret:
>>>>>>>> 
>>>>>>>> +        xorps   xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[64+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[64+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,XMMWORD[80+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[80+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm11,XMMWORD[96+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[96+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm12,XMMWORD[112+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[112+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm13,XMMWORD[128+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[128+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm14,XMMWORD[144+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[144+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movaps  xmm15,XMMWORD[160+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[160+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        mov     rbp,QWORD[((-8))+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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:
>>>>>>>> 
>>>>>>>> +global  aesni_set_decrypt_key
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +aesni_set_decrypt_key:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      0x48,0x83,0xEC,0x08
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    __aesni_set_encrypt_key
>>>>>>>> 
>>>>>>>> +        shl     edx,4
>>>>>>>> 
>>>>>>>> +        test    eax,eax
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$dec_key_ret
>>>>>>>> 
>>>>>>>> +        lea     rcx,[16+rdx*1+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[r8]
>>>>>>>> 
>>>>>>>> +        movups  xmm1,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,219,192
>>>>>>>> 
>>>>>>>> +DB      102,15,56,219,201
>>>>>>>> 
>>>>>>>> +        lea     r8,[16+r8]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[((-16))+rcx]
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rcx],xmm0
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[(-16)+r8],xmm1
>>>>>>>> 
>>>>>>>> +        cmp     rcx,r8
>>>>>>>> 
>>>>>>>> +        ja      NEAR $L$dec_key_inverse
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,219,192
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rcx],xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>> 
>>>>>>>> +$L$dec_key_ret:
>>>>>>>> 
>>>>>>>> +        add     rsp,8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$SEH_end_set_decrypt_key:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  aesni_set_encrypt_key
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +aesni_set_encrypt_key:
>>>>>>>> 
>>>>>>>> +__aesni_set_encrypt_key:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      0x48,0x83,0xEC,0x08
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,-1
>>>>>>>> 
>>>>>>>> +        test    rcx,rcx
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$enc_key_ret
>>>>>>>> 
>>>>>>>> +        test    r8,r8
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$enc_key_ret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,268437504
>>>>>>>> 
>>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        and     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
>>>>>>>> 
>>>>>>>> +        lea     rax,[16+r8]
>>>>>>>> 
>>>>>>>> +        cmp     edx,256
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$14rounds
>>>>>>>> 
>>>>>>>> +        cmp     edx,192
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$12rounds
>>>>>>>> 
>>>>>>>> +        cmp     edx,128
>>>>>>>> 
>>>>>>>> +        jne     NEAR $L$bad_keybits
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$10rounds:
>>>>>>>> 
>>>>>>>> +        mov     edx,9
>>>>>>>> 
>>>>>>>> +        cmp     r10d,268435456
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$10rounds_alt
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[r8],xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,200,1
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_128_cold
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,200,2
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_128
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,200,4
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_128
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,200,8
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_128
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,200,16
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_128
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,200,32
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_128
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,200,64
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_128
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,200,128
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_128
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,200,27
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_128
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,200,54
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_128
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rax],xmm0
>>>>>>>> 
>>>>>>>> +        mov     DWORD[80+rax],edx
>>>>>>>> 
>>>>>>>> +        xor     eax,eax
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$enc_key_ret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$10rounds_alt:
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,XMMWORD[$L$key_rotate]
>>>>>>>> 
>>>>>>>> +        mov     r10d,8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[r8],xmm0
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_key128
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$oop_key128:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,197
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,196
>>>>>>>> 
>>>>>>>> +        pslld   xmm4,1
>>>>>>>> 
>>>>>>>> +        lea     rax,[16+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm2
>>>>>>>> 
>>>>>>>> +        pslldq  xmm2,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>> 
>>>>>>>> +        pslldq  xmm2,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>> 
>>>>>>>> +        pslldq  xmm2,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[(-16)+rax],xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        dec     r10d
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_key128
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[$L$key_rcon1b]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,197
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,196
>>>>>>>> 
>>>>>>>> +        pslld   xmm4,1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm2
>>>>>>>> 
>>>>>>>> +        pslldq  xmm2,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>> 
>>>>>>>> +        pslldq  xmm2,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>> 
>>>>>>>> +        pslldq  xmm2,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rax],xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,197
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,196
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm2
>>>>>>>> 
>>>>>>>> +        pslldq  xmm2,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>> 
>>>>>>>> +        pslldq  xmm2,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>> 
>>>>>>>> +        pslldq  xmm2,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[16+rax],xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[96+rax],edx
>>>>>>>> 
>>>>>>>> +        xor     eax,eax
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$enc_key_ret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$12rounds:
>>>>>>>> 
>>>>>>>> +        movq    xmm2,QWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        mov     edx,11
>>>>>>>> 
>>>>>>>> +        cmp     r10d,268435456
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$12rounds_alt
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[r8],xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,202,1
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_192a_cold
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,202,2
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_192b
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,202,4
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_192a
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,202,8
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_192b
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,202,16
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_192a
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,202,32
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_192b
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,202,64
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_192a
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,202,128
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_192b
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rax],xmm0
>>>>>>>> 
>>>>>>>> +        mov     DWORD[48+rax],edx
>>>>>>>> 
>>>>>>>> +        xor     rax,rax
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$enc_key_ret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$12rounds_alt:
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,XMMWORD[$L$key_rotate192]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
>>>>>>>> 
>>>>>>>> +        mov     r10d,8
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[r8],xmm0
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_key192
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$oop_key192:
>>>>>>>> 
>>>>>>>> +        movq    QWORD[rax],xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm2
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,213
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,212
>>>>>>>> 
>>>>>>>> +        pslld   xmm4,1
>>>>>>>> 
>>>>>>>> +        lea     rax,[24+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pslldq  xmm0,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pslldq  xmm0,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pslldq  xmm0,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pshufd  xmm3,xmm0,0xff
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>> 
>>>>>>>> +        pslldq  xmm1,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[(-16)+rax],xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        dec     r10d
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_key192
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[32+rax],edx
>>>>>>>> 
>>>>>>>> +        xor     eax,eax
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$enc_key_ret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$14rounds:
>>>>>>>> 
>>>>>>>> +        movups  xmm2,XMMWORD[16+rcx]
>>>>>>>> 
>>>>>>>> +        mov     edx,13
>>>>>>>> 
>>>>>>>> +        lea     rax,[16+rax]
>>>>>>>> 
>>>>>>>> +        cmp     r10d,268435456
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$14rounds_alt
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_256b
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,202,2
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_256a
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,200,2
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_256b
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,202,4
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_256a
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,200,4
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_256b
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,202,8
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_256a
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,200,8
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_256b
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,202,16
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_256a
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,200,16
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_256b
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,202,32
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_256a
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,200,32
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_256b
>>>>>>>> 
>>>>>>>> +DB      102,15,58,223,202,64
>>>>>>>> 
>>>>>>>> +        call    $L$key_expansion_256a
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rax],xmm0
>>>>>>>> 
>>>>>>>> +        mov     DWORD[16+rax],edx
>>>>>>>> 
>>>>>>>> +        xor     rax,rax
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$enc_key_ret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$14rounds_alt:
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,XMMWORD[$L$key_rotate]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
>>>>>>>> 
>>>>>>>> +        mov     r10d,7
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[r8],xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[16+r8],xmm2
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_key256
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$oop_key256:
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,213
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,212
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pslldq  xmm0,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pslldq  xmm0,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pslldq  xmm0,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        pslld   xmm4,1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rax],xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        dec     r10d
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$done_key256
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pshufd  xmm2,xmm0,0xff
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +DB      102,15,56,221,211
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm1
>>>>>>>> 
>>>>>>>> +        pslldq  xmm1,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>> 
>>>>>>>> +        pslldq  xmm1,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>> 
>>>>>>>> +        pslldq  xmm1,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm1
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[16+rax],xmm2
>>>>>>>> 
>>>>>>>> +        lea     rax,[32+rax]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_key256
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$done_key256:
>>>>>>>> 
>>>>>>>> +        mov     DWORD[16+rax],edx
>>>>>>>> 
>>>>>>>> +        xor     eax,eax
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$enc_key_ret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$bad_keybits:
>>>>>>>> 
>>>>>>>> +        mov     rax,-2
>>>>>>>> 
>>>>>>>> +$L$enc_key_ret:
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +        add     rsp,8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +$L$SEH_end_set_encrypt_key:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$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
>>>>>>>> 
>>>>>>>> +        xorps   xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        shufps  xmm1,xmm1,255
>>>>>>>> 
>>>>>>>> +        xorps   xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$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:
>>>>>>>> 
>>>>>>>> +        shufps  xmm4,xmm0,16
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm2
>>>>>>>> 
>>>>>>>> +        xorps   xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        shufps  xmm4,xmm0,140
>>>>>>>> 
>>>>>>>> +        pslldq  xmm3,4
>>>>>>>> 
>>>>>>>> +        xorps   xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        pshufd  xmm1,xmm1,85
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        pshufd  xmm3,xmm0,255
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$key_expansion_192b:
>>>>>>>> 
>>>>>>>> +        movaps  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        shufps  xmm5,xmm0,68
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rax],xmm5
>>>>>>>> 
>>>>>>>> +        shufps  xmm3,xmm2,78
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[16+rax],xmm3
>>>>>>>> 
>>>>>>>> +        lea     rax,[32+rax]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$key_expansion_192b_warm
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$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
>>>>>>>> 
>>>>>>>> +        xorps   xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        shufps  xmm1,xmm1,255
>>>>>>>> 
>>>>>>>> +        xorps   xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$key_expansion_256b:
>>>>>>>> 
>>>>>>>> +        movups  XMMWORD[rax],xmm0
>>>>>>>> 
>>>>>>>> +        lea     rax,[16+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        shufps  xmm4,xmm2,16
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        shufps  xmm4,xmm2,140
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        shufps  xmm1,xmm1,170
>>>>>>>> 
>>>>>>>> +        xorps   xmm2,xmm1
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   64
>>>>>>>> 
>>>>>>>> +$L$bswap_mask:
>>>>>>>> 
>>>>>>>> +DB      15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
>>>>>>>> 
>>>>>>>> +$L$increment32:
>>>>>>>> 
>>>>>>>> +        DD      6,6,6,0
>>>>>>>> 
>>>>>>>> +$L$increment64:
>>>>>>>> 
>>>>>>>> +        DD      1,0,0,0
>>>>>>>> 
>>>>>>>> +$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
>>>>>>>> 
>>>>>>>> +$L$key_rotate:
>>>>>>>> 
>>>>>>>> +        DD      0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
>>>>>>>> 
>>>>>>>> +$L$key_rotate192:
>>>>>>>> 
>>>>>>>> +        DD      0x04070605,0x04070605,0x04070605,0x04070605
>>>>>>>> 
>>>>>>>> +$L$key_rcon1:
>>>>>>>> 
>>>>>>>> +        DD      1,1,1,1
>>>>>>>> 
>>>>>>>> +$L$key_rcon1b:
>>>>>>>> 
>>>>>>>> +        DD      0x1b,0x1b,0x1b,0x1b
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
>>>>>>>> 
>>>>>>>> +DB      83,45,78,73,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   64
>>>>>>>> 
>>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +ecb_ccm64_se_handler:
>>>>>>>> 
>>>>>>>> +        push    rsi
>>>>>>>> 
>>>>>>>> +        push    rdi
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +        pushfq
>>>>>>>> 
>>>>>>>> +        sub     rsp,64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>> 
>>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsi,[rax]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>> 
>>>>>>>> +        mov     ecx,8
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +        lea     rax,[88+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +ctr_xts_se_handler:
>>>>>>>> 
>>>>>>>> +        push    rsi
>>>>>>>> 
>>>>>>>> +        push    rdi
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +        pushfq
>>>>>>>> 
>>>>>>>> +        sub     rsp,64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>> 
>>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[208+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsi,[((-168))+rax]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>> 
>>>>>>>> +        mov     ecx,20
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rbp,QWORD[((-8))+rax]
>>>>>>>> 
>>>>>>>> +        mov     QWORD[160+r8],rbp
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +ocb_se_handler:
>>>>>>>> 
>>>>>>>> +        push    rsi
>>>>>>>> 
>>>>>>>> +        push    rdi
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +        pushfq
>>>>>>>> 
>>>>>>>> +        sub     rsp,64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>> 
>>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[8+r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jae     NEAR $L$ocb_no_xmm
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsi,[rax]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>> 
>>>>>>>> +        mov     ecx,20
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +        lea     rax,[((160+40))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$ocb_no_xmm:
>>>>>>>> 
>>>>>>>> +        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     NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +cbc_se_handler:
>>>>>>>> 
>>>>>>>> +        push    rsi
>>>>>>>> 
>>>>>>>> +        push    rdi
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +        pushfq
>>>>>>>> 
>>>>>>>> +        sub     rsp,64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r10,[$L$cbc_decrypt_bulk]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r10,[$L$cbc_decrypt_body]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r10,[$L$cbc_ret]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsi,[16+rax]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>> 
>>>>>>>> +        mov     ecx,20
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[208+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rbp,QWORD[((-8))+rax]
>>>>>>>> 
>>>>>>>> +        mov     QWORD[160+r8],rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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[40+r9]
>>>>>>>> 
>>>>>>>> +        mov     rsi,r8
>>>>>>>> 
>>>>>>>> +        mov     ecx,154
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,r9
>>>>>>>> 
>>>>>>>> +        xor     rcx,rcx
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +        popfq
>>>>>>>> 
>>>>>>>> +        pop     r15
>>>>>>>> 
>>>>>>>> +        pop     r14
>>>>>>>> 
>>>>>>>> +        pop     r13
>>>>>>>> 
>>>>>>>> +        pop     r12
>>>>>>>> 
>>>>>>>> +        pop     rbp
>>>>>>>> 
>>>>>>>> +        pop     rbx
>>>>>>>> 
>>>>>>>> +        pop     rdi
>>>>>>>> 
>>>>>>>> +        pop     rsi
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +section .pdata rdata align=4
>>>>>>>> 
>>>>>>>> +ALIGN   4
>>>>>>>> 
>>>>>>>> +        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      $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      $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      $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      $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      $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_ocb_encrypt wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_end_aesni_ocb_encrypt wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_info_ocb_enc wrt ..imagebase
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_begin_aesni_ocb_decrypt wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_end_aesni_ocb_decrypt wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_info_ocb_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      aesni_set_decrypt_key wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_end_set_decrypt_key wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_info_key wrt ..imagebase
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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:
>>>>>>>> 
>>>>>>>> +DB      9,0,0,0
>>>>>>>> 
>>>>>>>> +        DD      ecb_ccm64_se_handler wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret
>>>>>> wrt ..imagebase
>>>>>>>> 
>>>>>>>> +$L$SEH_info_ccm64_enc:
>>>>>>>> 
>>>>>>>> +DB      9,0,0,0
>>>>>>>> 
>>>>>>>> +        DD      ecb_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      ecb_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      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      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      ctr_xts_se_handler wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue
>>>>>>>> wrt ..imagebase
>>>>>>>> 
>>>>>>>> +$L$SEH_info_ocb_enc:
>>>>>>>> 
>>>>>>>> +DB      9,0,0,0
>>>>>>>> 
>>>>>>>> +        DD      ocb_se_handler wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$ocb_enc_body wrt ..imagebase,$L$ocb_enc_epilogue
>>>>>>>> wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$ocb_enc_pop wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      0
>>>>>>>> 
>>>>>>>> +$L$SEH_info_ocb_dec:
>>>>>>>> 
>>>>>>>> +DB      9,0,0,0
>>>>>>>> 
>>>>>>>> +        DD      ocb_se_handler wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$ocb_dec_body wrt ..imagebase,$L$ocb_dec_epilogue
>>>>>>>> wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$ocb_dec_pop wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      0
>>>>>>>> 
>>>>>>>> +$L$SEH_info_cbc:
>>>>>>>> 
>>>>>>>> +DB      9,0,0,0
>>>>>>>> 
>>>>>>>> +        DD      cbc_se_handler wrt ..imagebase
>>>>>>>> 
>>>>>>>> +$L$SEH_info_key:
>>>>>>>> 
>>>>>>>> +DB      0x01,0x04,0x01,0x00
>>>>>>>> 
>>>>>>>> +DB      0x04,0x02,0x00,0x00
>>>>>>>> 
>>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-
>>>>>> x86_64.nasm
>>>>>>>> b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
>>>>>>>> new file mode 100644
>>>>>>>> index 0000000000..1c911fa294
>>>>>>>> --- /dev/null
>>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
>>>>>>>> @@ -0,0 +1,1173 @@
>>>>>>>> +; WARNING: do not edit!
>>>>>>>> 
>>>>>>>> +; Generated from openssl/crypto/aes/asm/vpaes-x86_64.pl
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights
>>>>> Reserved.
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>> 
>>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>>> copy
>>>>>>>> 
>>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>> 
>>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +default rel
>>>>>>>> 
>>>>>>>> +%define XMMWORD
>>>>>>>> 
>>>>>>>> +%define YMMWORD
>>>>>>>> 
>>>>>>>> +%define ZMMWORD
>>>>>>>> 
>>>>>>>> +section .text code align=64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +_vpaes_encrypt_core:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r9,rdx
>>>>>>>> 
>>>>>>>> +        mov     r11,16
>>>>>>>> 
>>>>>>>> +        mov     eax,DWORD[240+rdx]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[$L$k_ipt]
>>>>>>>> 
>>>>>>>> +        pandn   xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[r9]
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,4
>>>>>>>> 
>>>>>>>> +        pand    xmm0,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,208
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[(($L$k_ipt+16))]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,193
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm5
>>>>>>>> 
>>>>>>>> +        add     r9,16
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        lea     r10,[$L$k_mc_backward]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$enc_entry
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$enc_loop:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm12
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,226
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,195
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm15
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((-64))+r10*1+r11]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,234
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[r10*1+r11]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,211
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm5
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,193
>>>>>>>> 
>>>>>>>> +        add     r9,16
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,220
>>>>>>>> 
>>>>>>>> +        add     r11,16
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,193
>>>>>>>> 
>>>>>>>> +        and     r11,0x30
>>>>>>>> 
>>>>>>>> +        sub     rax,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$enc_entry:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm11
>>>>>>>> 
>>>>>>>> +        pandn   xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,4
>>>>>>>> 
>>>>>>>> +        pand    xmm0,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,232
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,217
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm5
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,224
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,211
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,220
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[r9]
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$enc_loop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[64+r10*1+r11]
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,193
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +_vpaes_decrypt_core:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r9,rdx
>>>>>>>> 
>>>>>>>> +        mov     eax,DWORD[240+rdx]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[$L$k_dipt]
>>>>>>>> 
>>>>>>>> +        pandn   xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        mov     r11,rax
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,4
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[r9]
>>>>>>>> 
>>>>>>>> +        shl     r11,4
>>>>>>>> 
>>>>>>>> +        pand    xmm0,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,208
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[(($L$k_dipt+16))]
>>>>>>>> 
>>>>>>>> +        xor     r11,0x30
>>>>>>>> 
>>>>>>>> +        lea     r10,[$L$k_dsbd]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,193
>>>>>>>> 
>>>>>>>> +        and     r11,0x30
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,XMMWORD[(($L$k_mc_forward+48))]
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        add     r9,16
>>>>>>>> 
>>>>>>>> +        add     r11,r10
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$dec_entry
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$dec_loop:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[r10]
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        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[32+r10]
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        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[64+r10]
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[80+r10]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,226
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,197
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,203
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        add     r9,16
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,237,12
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        sub     rax,1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$dec_entry:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        pandn   xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,4
>>>>>>>> 
>>>>>>>> +        pand    xmm0,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,208
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,217
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,224
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,211
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,220
>>>>>>>> 
>>>>>>>> +        movdqu  xmm0,XMMWORD[r9]
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$dec_loop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[96+r10]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,226
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +_vpaes_schedule_core:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    _vpaes_preheat
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,XMMWORD[$L$k_rcon]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm0,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        lea     r11,[$L$k_ipt]
>>>>>>>> 
>>>>>>>> +        call    _vpaes_schedule_transform
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r10,[$L$k_sr]
>>>>>>>> 
>>>>>>>> +        test    rcx,rcx
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$schedule_am_decrypting
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rdx],xmm0
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$schedule_go
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$schedule_am_decrypting:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[r10*1+r8]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,217
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rdx],xmm3
>>>>>>>> 
>>>>>>>> +        xor     r8,0x30
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$schedule_go:
>>>>>>>> 
>>>>>>>> +        cmp     esi,192
>>>>>>>> 
>>>>>>>> +        ja      NEAR $L$schedule_256
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$schedule_192
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$schedule_128:
>>>>>>>> 
>>>>>>>> +        mov     esi,10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$oop_schedule_128:
>>>>>>>> 
>>>>>>>> +        call    _vpaes_schedule_round
>>>>>>>> 
>>>>>>>> +        dec     rsi
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$schedule_mangle_last
>>>>>>>> 
>>>>>>>> +        call    _vpaes_schedule_mangle
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_schedule_128
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$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:
>>>>>>>> 
>>>>>>>> +        call    _vpaes_schedule_round
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,198,8
>>>>>>>> 
>>>>>>>> +        call    _vpaes_schedule_mangle
>>>>>>>> 
>>>>>>>> +        call    _vpaes_schedule_192_smear
>>>>>>>> 
>>>>>>>> +        call    _vpaes_schedule_mangle
>>>>>>>> 
>>>>>>>> +        call    _vpaes_schedule_round
>>>>>>>> 
>>>>>>>> +        dec     rsi
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$schedule_mangle_last
>>>>>>>> 
>>>>>>>> +        call    _vpaes_schedule_mangle
>>>>>>>> 
>>>>>>>> +        call    _vpaes_schedule_192_smear
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_schedule_192
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$schedule_256:
>>>>>>>> 
>>>>>>>> +        movdqu  xmm0,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        call    _vpaes_schedule_transform
>>>>>>>> 
>>>>>>>> +        mov     esi,7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$oop_schedule_256:
>>>>>>>> 
>>>>>>>> +        call    _vpaes_schedule_mangle
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        call    _vpaes_schedule_round
>>>>>>>> 
>>>>>>>> +        dec     rsi
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$schedule_mangle_last
>>>>>>>> 
>>>>>>>> +        call    _vpaes_schedule_mangle
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,0xFF
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        call    _vpaes_schedule_low_round
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_schedule_256
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$schedule_mangle_last:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r11,[$L$k_deskew]
>>>>>>>> 
>>>>>>>> +        test    rcx,rcx
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$schedule_mangle_last_dec
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[r10*1+r8]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,193
>>>>>>>> 
>>>>>>>> +        lea     r11,[$L$k_opt]
>>>>>>>> 
>>>>>>>> +        add     rdx,32
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$schedule_mangle_last_dec:
>>>>>>>> 
>>>>>>>> +        add     rdx,-16
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,XMMWORD[$L$k_s63]
>>>>>>>> 
>>>>>>>> +        call    _vpaes_schedule_transform
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rdx],xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm7
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +_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
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +_vpaes_schedule_round:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>> 
>>>>>>>> +DB      102,65,15,58,15,200,15
>>>>>>>> 
>>>>>>>> +DB      102,69,15,58,15,192,15
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,0xFF
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,192,1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +_vpaes_schedule_low_round:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm7
>>>>>>>> 
>>>>>>>> +        pslldq  xmm7,4
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm7
>>>>>>>> 
>>>>>>>> +        pslldq  xmm7,8
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,XMMWORD[$L$k_s63]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        pandn   xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,4
>>>>>>>> 
>>>>>>>> +        pand    xmm0,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,208
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,217
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,224
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,211
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,220
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,226
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm12
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,195
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm0
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +_vpaes_schedule_transform:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        pandn   xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,4
>>>>>>>> 
>>>>>>>> +        pand    xmm0,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[r11]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,208
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[16+r11]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,193
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +_vpaes_schedule_mangle:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,XMMWORD[$L$k_mc_forward]
>>>>>>>> 
>>>>>>>> +        test    rcx,rcx
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$schedule_mangle_dec
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     rdx,16
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,XMMWORD[$L$k_s63]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,229
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm4
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,229
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,229
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$schedule_mangle_both
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$schedule_mangle_dec:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r11,[$L$k_dksd]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        pandn   xmm1,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,4
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[r11]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,212
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[16+r11]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,217
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,221
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[32+r11]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,212
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[48+r11]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,217
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,221
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[64+r11]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,212
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[80+r11]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,217
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,221
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[96+r11]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,212
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[112+r11]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,217
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     rdx,-16
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$schedule_mangle_both:
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[r10*1+r8]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,217
>>>>>>>> 
>>>>>>>> +        add     r8,-16
>>>>>>>> 
>>>>>>>> +        and     r8,0x30
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rdx],xmm3
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  vpaes_set_encrypt_key
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +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:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[240+rdx],eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     ecx,0
>>>>>>>> 
>>>>>>>> +        mov     r8d,0x30
>>>>>>>> 
>>>>>>>> +        call    _vpaes_schedule_core
>>>>>>>> 
>>>>>>>> +        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[8+rsp]        ;WIN64 epilogue
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$SEH_end_vpaes_set_encrypt_key:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  vpaes_set_decrypt_key
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +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:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[240+rdx],eax
>>>>>>>> 
>>>>>>>> +        shl     eax,4
>>>>>>>> 
>>>>>>>> +        lea     rdx,[16+rax*1+rdx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     ecx,1
>>>>>>>> 
>>>>>>>> +        mov     r8d,esi
>>>>>>>> 
>>>>>>>> +        shr     r8d,1
>>>>>>>> 
>>>>>>>> +        and     r8d,32
>>>>>>>> 
>>>>>>>> +        xor     r8d,32
>>>>>>>> 
>>>>>>>> +        call    _vpaes_schedule_core
>>>>>>>> 
>>>>>>>> +        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[8+rsp]        ;WIN64 epilogue
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$SEH_end_vpaes_set_decrypt_key:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  vpaes_encrypt
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +vpaes_encrypt:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_vpaes_encrypt:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[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:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  vpaes_decrypt
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +vpaes_decrypt:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_vpaes_decrypt:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[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:
>>>>>>>> 
>>>>>>>> +global  vpaes_cbc_encrypt
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +vpaes_cbc_encrypt:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_vpaes_cbc_encrypt:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +        mov     rcx,r9
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xchg    rdx,rcx
>>>>>>>> 
>>>>>>>> +        sub     rcx,16
>>>>>>>> 
>>>>>>>> +        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      NEAR $L$cbc_dec_loop
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$cbc_enc_loop
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$cbc_enc_loop:
>>>>>>>> 
>>>>>>>> +        movdqu  xmm0,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm6
>>>>>>>> 
>>>>>>>> +        call    _vpaes_encrypt_core
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rdi*1+rsi],xmm0
>>>>>>>> 
>>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>> 
>>>>>>>> +        sub     rcx,16
>>>>>>>> 
>>>>>>>> +        jnc     NEAR $L$cbc_enc_loop
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$cbc_done
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$cbc_dec_loop:
>>>>>>>> 
>>>>>>>> +        movdqu  xmm0,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm0
>>>>>>>> 
>>>>>>>> +        call    _vpaes_decrypt_core
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rdi*1+rsi],xmm0
>>>>>>>> 
>>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>> 
>>>>>>>> +        sub     rcx,16
>>>>>>>> 
>>>>>>>> +        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:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +_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
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   64
>>>>>>>> 
>>>>>>>> +_vpaes_consts:
>>>>>>>> 
>>>>>>>> +$L$k_inv:
>>>>>>>> 
>>>>>>>> +        DQ      0x0E05060F0D080180,0x040703090A0B0C02
>>>>>>>> 
>>>>>>>> +        DQ      0x01040A060F0B0780,0x030D0E0C02050809
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$k_s0F:
>>>>>>>> 
>>>>>>>> +        DQ      0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$k_ipt:
>>>>>>>> 
>>>>>>>> +        DQ      0xC2B2E8985A2A7000,0xCABAE09052227808
>>>>>>>> 
>>>>>>>> +        DQ      0x4C01307D317C4D00,0xCD80B1FCB0FDCC81
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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      0x0407060500030201,0x0C0F0E0D080B0A09
>>>>>>>> 
>>>>>>>> +        DQ      0x080B0A0904070605,0x000302010C0F0E0D
>>>>>>>> 
>>>>>>>> +        DQ      0x0C0F0E0D080B0A09,0x0407060500030201
>>>>>>>> 
>>>>>>>> +        DQ      0x000302010C0F0E0D,0x080B0A0904070605
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$k_mc_backward:
>>>>>>>> 
>>>>>>>> +        DQ      0x0605040702010003,0x0E0D0C0F0A09080B
>>>>>>>> 
>>>>>>>> +        DQ      0x020100030E0D0C0F,0x0A09080B06050407
>>>>>>>> 
>>>>>>>> +        DQ      0x0E0D0C0F0A09080B,0x0605040702010003
>>>>>>>> 
>>>>>>>> +        DQ      0x0A09080B06050407,0x020100030E0D0C0F
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$k_sr:
>>>>>>>> 
>>>>>>>> +        DQ      0x0706050403020100,0x0F0E0D0C0B0A0908
>>>>>>>> 
>>>>>>>> +        DQ      0x030E09040F0A0500,0x0B06010C07020D08
>>>>>>>> 
>>>>>>>> +        DQ      0x0F060D040B020900,0x070E050C030A0108
>>>>>>>> 
>>>>>>>> +        DQ      0x0B0E0104070A0D00,0x0306090C0F020508
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$k_rcon:
>>>>>>>> 
>>>>>>>> +        DQ      0x1F8391B9AF9DEEB6,0x702A98084D7C7D81
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$k_s63:
>>>>>>>> 
>>>>>>>> +        DQ      0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$k_opt:
>>>>>>>> 
>>>>>>>> +        DQ      0xFF9F4929D6B66000,0xF7974121DEBE6808
>>>>>>>> 
>>>>>>>> +        DQ      0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$k_deskew:
>>>>>>>> 
>>>>>>>> +        DQ      0x07E4A34047A4E300,0x1DFEB95A5DBEF91A
>>>>>>>> 
>>>>>>>> +        DQ      0x5F36B5DC83EA6900,0x2841C2ABF49D1E77
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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      0x0F505B040B545F00,0x154A411E114E451A
>>>>>>>> 
>>>>>>>> +        DQ      0x86E383E660056500,0x12771772F491F194
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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
>>>>>>>> 
>>>>>>>> +DB      109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32
>>>>>>>> 
>>>>>>>> +DB      85,110,105,118,101,114,115,105,116,121,41,0
>>>>>>>> 
>>>>>>>> +ALIGN   64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +se_handler:
>>>>>>>> 
>>>>>>>> +        push    rsi
>>>>>>>> 
>>>>>>>> +        push    rdi
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +        pushfq
>>>>>>>> 
>>>>>>>> +        sub     rsp,64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>> 
>>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsi,[16+rax]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>> 
>>>>>>>> +        mov     ecx,20
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +        lea     rax,[184+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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[40+r9]
>>>>>>>> 
>>>>>>>> +        mov     rsi,r8
>>>>>>>> 
>>>>>>>> +        mov     ecx,154
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,r9
>>>>>>>> 
>>>>>>>> +        xor     rcx,rcx
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +        popfq
>>>>>>>> 
>>>>>>>> +        pop     r15
>>>>>>>> 
>>>>>>>> +        pop     r14
>>>>>>>> 
>>>>>>>> +        pop     r13
>>>>>>>> 
>>>>>>>> +        pop     r12
>>>>>>>> 
>>>>>>>> +        pop     rbp
>>>>>>>> 
>>>>>>>> +        pop     rbx
>>>>>>>> 
>>>>>>>> +        pop     rdi
>>>>>>>> 
>>>>>>>> +        pop     rsi
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +section .pdata rdata align=4
>>>>>>>> 
>>>>>>>> +ALIGN   4
>>>>>>>> 
>>>>>>>> +        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      $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      $L$SEH_begin_vpaes_encrypt wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_end_vpaes_encrypt wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_info_vpaes_encrypt wrt ..imagebase
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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      $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
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +section .xdata rdata align=8
>>>>>>>> 
>>>>>>>> +ALIGN   8
>>>>>>>> 
>>>>>>>> +$L$SEH_info_vpaes_set_encrypt_key:
>>>>>>>> 
>>>>>>>> +DB      9,0,0,0
>>>>>>>> 
>>>>>>>> +        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      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      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      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      se_handler wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt
>>>>> ..imagebase
>>>>>>>> 
>>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
>>>>>>>> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
>>>>>>>> x86_64.nasm
>>>>>>>> new file mode 100644
>>>>>>>> index 0000000000..60f283d5fb
>>>>>>>> --- /dev/null
>>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
>>>> x86_64.nasm
>>>>>>>> @@ -0,0 +1,1569 @@
>>>>>>>> +; WARNING: do not edit!
>>>>>>>> 
>>>>>>>> +; Generated from openssl/crypto/modes/asm/ghash-x86_64.pl
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Copyright 2010-2020 The OpenSSL Project Authors. All Rights
>>>>> Reserved.
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>> 
>>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>>> copy
>>>>>>>> 
>>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>> 
>>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +default rel
>>>>>>>> 
>>>>>>>> +%define XMMWORD
>>>>>>>> 
>>>>>>>> +%define YMMWORD
>>>>>>>> 
>>>>>>>> +%define ZMMWORD
>>>>>>>> 
>>>>>>>> +section .text code align=64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  gcm_gmult_4bit
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +gcm_gmult_4bit:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_gcm_gmult_4bit:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     rsp,280
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$gmult_prologue:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[8+rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        and     bl,0xf0
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$oop1:
>>>>>>>> 
>>>>>>>> +        shr     r8,4
>>>>>>>> 
>>>>>>>> +        and     rdx,0xf
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        mov     al,BYTE[rcx*1+rdi]
>>>>>>>> 
>>>>>>>> +        shr     r9,4
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[8+rbx*1+rsi]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rbx*1+rsi]
>>>>>>>> 
>>>>>>>> +        mov     bl,al
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rdx*8+r11]
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +        shl     al,4
>>>>>>>> 
>>>>>>>> +        xor     r8,r10
>>>>>>>> 
>>>>>>>> +        dec     rcx
>>>>>>>> 
>>>>>>>> +        js      NEAR $L$break1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        shr     r8,4
>>>>>>>> 
>>>>>>>> +        and     rdx,0xf
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        shr     r9,4
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        and     bl,0xf0
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rdx*8+r11]
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +        xor     r8,r10
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$break1:
>>>>>>>> 
>>>>>>>> +        shr     r8,4
>>>>>>>> 
>>>>>>>> +        and     rdx,0xf
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        shr     r9,4
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        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,0xf
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        shr     r9,4
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[8+rbx*1+rsi]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rbx*1+rsi]
>>>>>>>> 
>>>>>>>> +        xor     r8,r10
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rdx*8+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        bswap   r8
>>>>>>>> 
>>>>>>>> +        bswap   r9
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rdi],r8
>>>>>>>> 
>>>>>>>> +        mov     QWORD[rdi],r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsi,[((280+48))+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[((-8))+rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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:
>>>>>>>> 
>>>>>>>> +global  gcm_ghash_4bit
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +gcm_ghash_4bit:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_gcm_ghash_4bit:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +        mov     rcx,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     rsp,280
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$ghash_prologue:
>>>>>>>> 
>>>>>>>> +        mov     r14,rdx
>>>>>>>> 
>>>>>>>> +        mov     r15,rcx
>>>>>>>> 
>>>>>>>> +        sub     rsi,-128
>>>>>>>> 
>>>>>>>> +        lea     rbp,[((16+128))+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edx,edx
>>>>>>>> 
>>>>>>>> +        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[((16+0-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     dl,4
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[((16+8-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        mov     BYTE[rsp],dl
>>>>>>>> 
>>>>>>>> +        or      rax,r10
>>>>>>>> 
>>>>>>>> +        mov     dl,bl
>>>>>>>> 
>>>>>>>> +        shr     rbx,4
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        shr     r9,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[rbp],r8
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[((32+0-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     dl,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((0-128))+rbp],rax
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[((32+8-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        mov     BYTE[1+rsp],dl
>>>>>>>> 
>>>>>>>> +        or      rbx,r10
>>>>>>>> 
>>>>>>>> +        mov     dl,al
>>>>>>>> 
>>>>>>>> +        shr     rax,4
>>>>>>>> 
>>>>>>>> +        mov     r10,r8
>>>>>>>> 
>>>>>>>> +        shr     r8,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rbp],r9
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[((48+0-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     dl,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((8-128))+rbp],rbx
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[((48+8-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        mov     BYTE[2+rsp],dl
>>>>>>>> 
>>>>>>>> +        or      rax,r10
>>>>>>>> 
>>>>>>>> +        mov     dl,bl
>>>>>>>> 
>>>>>>>> +        shr     rbx,4
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        shr     r9,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rbp],r8
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[((64+0-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     dl,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((16-128))+rbp],rax
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[((64+8-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        mov     BYTE[3+rsp],dl
>>>>>>>> 
>>>>>>>> +        or      rbx,r10
>>>>>>>> 
>>>>>>>> +        mov     dl,al
>>>>>>>> 
>>>>>>>> +        shr     rax,4
>>>>>>>> 
>>>>>>>> +        mov     r10,r8
>>>>>>>> 
>>>>>>>> +        shr     r8,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[24+rbp],r9
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[((80+0-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     dl,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((24-128))+rbp],rbx
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[((80+8-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        mov     BYTE[4+rsp],dl
>>>>>>>> 
>>>>>>>> +        or      rax,r10
>>>>>>>> 
>>>>>>>> +        mov     dl,bl
>>>>>>>> 
>>>>>>>> +        shr     rbx,4
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        shr     r9,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[32+rbp],r8
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[((96+0-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     dl,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((32-128))+rbp],rax
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[((96+8-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        mov     BYTE[5+rsp],dl
>>>>>>>> 
>>>>>>>> +        or      rbx,r10
>>>>>>>> 
>>>>>>>> +        mov     dl,al
>>>>>>>> 
>>>>>>>> +        shr     rax,4
>>>>>>>> 
>>>>>>>> +        mov     r10,r8
>>>>>>>> 
>>>>>>>> +        shr     r8,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[40+rbp],r9
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[((112+0-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     dl,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((40-128))+rbp],rbx
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[((112+8-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        mov     BYTE[6+rsp],dl
>>>>>>>> 
>>>>>>>> +        or      rax,r10
>>>>>>>> 
>>>>>>>> +        mov     dl,bl
>>>>>>>> 
>>>>>>>> +        shr     rbx,4
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        shr     r9,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[48+rbp],r8
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[((128+0-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     dl,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((48-128))+rbp],rax
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[((128+8-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        mov     BYTE[7+rsp],dl
>>>>>>>> 
>>>>>>>> +        or      rbx,r10
>>>>>>>> 
>>>>>>>> +        mov     dl,al
>>>>>>>> 
>>>>>>>> +        shr     rax,4
>>>>>>>> 
>>>>>>>> +        mov     r10,r8
>>>>>>>> 
>>>>>>>> +        shr     r8,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[56+rbp],r9
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[((144+0-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     dl,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((56-128))+rbp],rbx
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[((144+8-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        mov     BYTE[8+rsp],dl
>>>>>>>> 
>>>>>>>> +        or      rax,r10
>>>>>>>> 
>>>>>>>> +        mov     dl,bl
>>>>>>>> 
>>>>>>>> +        shr     rbx,4
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        shr     r9,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[64+rbp],r8
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[((160+0-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     dl,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((64-128))+rbp],rax
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[((160+8-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        mov     BYTE[9+rsp],dl
>>>>>>>> 
>>>>>>>> +        or      rbx,r10
>>>>>>>> 
>>>>>>>> +        mov     dl,al
>>>>>>>> 
>>>>>>>> +        shr     rax,4
>>>>>>>> 
>>>>>>>> +        mov     r10,r8
>>>>>>>> 
>>>>>>>> +        shr     r8,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[72+rbp],r9
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[((176+0-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     dl,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((72-128))+rbp],rbx
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[((176+8-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        mov     BYTE[10+rsp],dl
>>>>>>>> 
>>>>>>>> +        or      rax,r10
>>>>>>>> 
>>>>>>>> +        mov     dl,bl
>>>>>>>> 
>>>>>>>> +        shr     rbx,4
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        shr     r9,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[80+rbp],r8
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[((192+0-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     dl,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((80-128))+rbp],rax
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[((192+8-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        mov     BYTE[11+rsp],dl
>>>>>>>> 
>>>>>>>> +        or      rbx,r10
>>>>>>>> 
>>>>>>>> +        mov     dl,al
>>>>>>>> 
>>>>>>>> +        shr     rax,4
>>>>>>>> 
>>>>>>>> +        mov     r10,r8
>>>>>>>> 
>>>>>>>> +        shr     r8,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[88+rbp],r9
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[((208+0-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     dl,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((88-128))+rbp],rbx
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[((208+8-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        mov     BYTE[12+rsp],dl
>>>>>>>> 
>>>>>>>> +        or      rax,r10
>>>>>>>> 
>>>>>>>> +        mov     dl,bl
>>>>>>>> 
>>>>>>>> +        shr     rbx,4
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        shr     r9,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[96+rbp],r8
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[((224+0-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     dl,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((96-128))+rbp],rax
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[((224+8-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        mov     BYTE[13+rsp],dl
>>>>>>>> 
>>>>>>>> +        or      rbx,r10
>>>>>>>> 
>>>>>>>> +        mov     dl,al
>>>>>>>> 
>>>>>>>> +        shr     rax,4
>>>>>>>> 
>>>>>>>> +        mov     r10,r8
>>>>>>>> 
>>>>>>>> +        shr     r8,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[104+rbp],r9
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[((240+0-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     dl,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((104-128))+rbp],rbx
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[((240+8-128))+rsi]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        mov     BYTE[14+rsp],dl
>>>>>>>> 
>>>>>>>> +        or      rax,r10
>>>>>>>> 
>>>>>>>> +        mov     dl,bl
>>>>>>>> 
>>>>>>>> +        shr     rbx,4
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        shr     r9,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[112+rbp],r8
>>>>>>>> 
>>>>>>>> +        shl     dl,4
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((112-128))+rbp],rax
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        mov     BYTE[15+rsp],dl
>>>>>>>> 
>>>>>>>> +        or      rbx,r10
>>>>>>>> 
>>>>>>>> +        mov     QWORD[120+rbp],r9
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((120-128))+rbp],rbx
>>>>>>>> 
>>>>>>>> +        add     rsi,-128
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[8+rdi]
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[rdi]
>>>>>>>> 
>>>>>>>> +        add     r15,r14
>>>>>>>> 
>>>>>>>> +        lea     r11,[$L$rem_8bit]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$outer_loop
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$outer_loop:
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[r14]
>>>>>>>> 
>>>>>>>> +        mov     rdx,QWORD[8+r14]
>>>>>>>> 
>>>>>>>> +        lea     r14,[16+r14]
>>>>>>>> 
>>>>>>>> +        xor     rdx,r8
>>>>>>>> 
>>>>>>>> +        mov     QWORD[rdi],r9
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rdi],rdx
>>>>>>>> 
>>>>>>>> +        shr     rdx,32
>>>>>>>> 
>>>>>>>> +        xor     rax,rax
>>>>>>>> 
>>>>>>>> +        rol     edx,8
>>>>>>>> 
>>>>>>>> +        mov     al,dl
>>>>>>>> 
>>>>>>>> +        movzx   ebx,dl
>>>>>>>> 
>>>>>>>> +        shl     al,4
>>>>>>>> 
>>>>>>>> +        shr     ebx,4
>>>>>>>> 
>>>>>>>> +        rol     edx,8
>>>>>>>> 
>>>>>>>> +        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[rbx*1+rsp]
>>>>>>>> 
>>>>>>>> +        shr     ecx,4
>>>>>>>> 
>>>>>>>> +        xor     r12,r8
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        shr     r8,8
>>>>>>>> 
>>>>>>>> +        movzx   r12,r12b
>>>>>>>> 
>>>>>>>> +        shr     r9,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>>> 
>>>>>>>> +        shl     r10,56
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>>> 
>>>>>>>> +        rol     edx,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        mov     al,dl
>>>>>>>> 
>>>>>>>> +        xor     r8,r10
>>>>>>>> 
>>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>>> 
>>>>>>>> +        movzx   ebx,dl
>>>>>>>> 
>>>>>>>> +        shl     al,4
>>>>>>>> 
>>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>>> 
>>>>>>>> +        shr     ebx,4
>>>>>>>> 
>>>>>>>> +        shl     r12,48
>>>>>>>> 
>>>>>>>> +        xor     r13,r8
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        xor     r9,r12
>>>>>>>> 
>>>>>>>> +        shr     r8,8
>>>>>>>> 
>>>>>>>> +        movzx   r13,r13b
>>>>>>>> 
>>>>>>>> +        shr     r9,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>>> 
>>>>>>>> +        shl     r10,56
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>>> 
>>>>>>>> +        rol     edx,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        mov     al,dl
>>>>>>>> 
>>>>>>>> +        xor     r8,r10
>>>>>>>> 
>>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>>> 
>>>>>>>> +        movzx   ecx,dl
>>>>>>>> 
>>>>>>>> +        shl     al,4
>>>>>>>> 
>>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>>> 
>>>>>>>> +        shr     ecx,4
>>>>>>>> 
>>>>>>>> +        shl     r13,48
>>>>>>>> 
>>>>>>>> +        xor     r12,r8
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        xor     r9,r13
>>>>>>>> 
>>>>>>>> +        shr     r8,8
>>>>>>>> 
>>>>>>>> +        movzx   r12,r12b
>>>>>>>> 
>>>>>>>> +        mov     edx,DWORD[8+rdi]
>>>>>>>> 
>>>>>>>> +        shr     r9,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>>> 
>>>>>>>> +        shl     r10,56
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>>> 
>>>>>>>> +        rol     edx,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        mov     al,dl
>>>>>>>> 
>>>>>>>> +        xor     r8,r10
>>>>>>>> 
>>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>>> 
>>>>>>>> +        movzx   ebx,dl
>>>>>>>> 
>>>>>>>> +        shl     al,4
>>>>>>>> 
>>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>>> 
>>>>>>>> +        shr     ebx,4
>>>>>>>> 
>>>>>>>> +        shl     r12,48
>>>>>>>> 
>>>>>>>> +        xor     r13,r8
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        xor     r9,r12
>>>>>>>> 
>>>>>>>> +        shr     r8,8
>>>>>>>> 
>>>>>>>> +        movzx   r13,r13b
>>>>>>>> 
>>>>>>>> +        shr     r9,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>>> 
>>>>>>>> +        shl     r10,56
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>>> 
>>>>>>>> +        rol     edx,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        mov     al,dl
>>>>>>>> 
>>>>>>>> +        xor     r8,r10
>>>>>>>> 
>>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>>> 
>>>>>>>> +        movzx   ecx,dl
>>>>>>>> 
>>>>>>>> +        shl     al,4
>>>>>>>> 
>>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>>> 
>>>>>>>> +        shr     ecx,4
>>>>>>>> 
>>>>>>>> +        shl     r13,48
>>>>>>>> 
>>>>>>>> +        xor     r12,r8
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        xor     r9,r13
>>>>>>>> 
>>>>>>>> +        shr     r8,8
>>>>>>>> 
>>>>>>>> +        movzx   r12,r12b
>>>>>>>> 
>>>>>>>> +        shr     r9,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>>> 
>>>>>>>> +        shl     r10,56
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>>> 
>>>>>>>> +        rol     edx,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        mov     al,dl
>>>>>>>> 
>>>>>>>> +        xor     r8,r10
>>>>>>>> 
>>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>>> 
>>>>>>>> +        movzx   ebx,dl
>>>>>>>> 
>>>>>>>> +        shl     al,4
>>>>>>>> 
>>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>>> 
>>>>>>>> +        shr     ebx,4
>>>>>>>> 
>>>>>>>> +        shl     r12,48
>>>>>>>> 
>>>>>>>> +        xor     r13,r8
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        xor     r9,r12
>>>>>>>> 
>>>>>>>> +        shr     r8,8
>>>>>>>> 
>>>>>>>> +        movzx   r13,r13b
>>>>>>>> 
>>>>>>>> +        shr     r9,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>>> 
>>>>>>>> +        shl     r10,56
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>>> 
>>>>>>>> +        rol     edx,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        mov     al,dl
>>>>>>>> 
>>>>>>>> +        xor     r8,r10
>>>>>>>> 
>>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>>> 
>>>>>>>> +        movzx   ecx,dl
>>>>>>>> 
>>>>>>>> +        shl     al,4
>>>>>>>> 
>>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>>> 
>>>>>>>> +        shr     ecx,4
>>>>>>>> 
>>>>>>>> +        shl     r13,48
>>>>>>>> 
>>>>>>>> +        xor     r12,r8
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        xor     r9,r13
>>>>>>>> 
>>>>>>>> +        shr     r8,8
>>>>>>>> 
>>>>>>>> +        movzx   r12,r12b
>>>>>>>> 
>>>>>>>> +        mov     edx,DWORD[4+rdi]
>>>>>>>> 
>>>>>>>> +        shr     r9,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>>> 
>>>>>>>> +        shl     r10,56
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>>> 
>>>>>>>> +        rol     edx,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        mov     al,dl
>>>>>>>> 
>>>>>>>> +        xor     r8,r10
>>>>>>>> 
>>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>>> 
>>>>>>>> +        movzx   ebx,dl
>>>>>>>> 
>>>>>>>> +        shl     al,4
>>>>>>>> 
>>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>>> 
>>>>>>>> +        shr     ebx,4
>>>>>>>> 
>>>>>>>> +        shl     r12,48
>>>>>>>> 
>>>>>>>> +        xor     r13,r8
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        xor     r9,r12
>>>>>>>> 
>>>>>>>> +        shr     r8,8
>>>>>>>> 
>>>>>>>> +        movzx   r13,r13b
>>>>>>>> 
>>>>>>>> +        shr     r9,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>>> 
>>>>>>>> +        shl     r10,56
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>>> 
>>>>>>>> +        rol     edx,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        mov     al,dl
>>>>>>>> 
>>>>>>>> +        xor     r8,r10
>>>>>>>> 
>>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>>> 
>>>>>>>> +        movzx   ecx,dl
>>>>>>>> 
>>>>>>>> +        shl     al,4
>>>>>>>> 
>>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>>> 
>>>>>>>> +        shr     ecx,4
>>>>>>>> 
>>>>>>>> +        shl     r13,48
>>>>>>>> 
>>>>>>>> +        xor     r12,r8
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        xor     r9,r13
>>>>>>>> 
>>>>>>>> +        shr     r8,8
>>>>>>>> 
>>>>>>>> +        movzx   r12,r12b
>>>>>>>> 
>>>>>>>> +        shr     r9,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>>> 
>>>>>>>> +        shl     r10,56
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>>> 
>>>>>>>> +        rol     edx,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        mov     al,dl
>>>>>>>> 
>>>>>>>> +        xor     r8,r10
>>>>>>>> 
>>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>>> 
>>>>>>>> +        movzx   ebx,dl
>>>>>>>> 
>>>>>>>> +        shl     al,4
>>>>>>>> 
>>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>>> 
>>>>>>>> +        shr     ebx,4
>>>>>>>> 
>>>>>>>> +        shl     r12,48
>>>>>>>> 
>>>>>>>> +        xor     r13,r8
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        xor     r9,r12
>>>>>>>> 
>>>>>>>> +        shr     r8,8
>>>>>>>> 
>>>>>>>> +        movzx   r13,r13b
>>>>>>>> 
>>>>>>>> +        shr     r9,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>>> 
>>>>>>>> +        shl     r10,56
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>>> 
>>>>>>>> +        rol     edx,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        mov     al,dl
>>>>>>>> 
>>>>>>>> +        xor     r8,r10
>>>>>>>> 
>>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>>> 
>>>>>>>> +        movzx   ecx,dl
>>>>>>>> 
>>>>>>>> +        shl     al,4
>>>>>>>> 
>>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>>> 
>>>>>>>> +        shr     ecx,4
>>>>>>>> 
>>>>>>>> +        shl     r13,48
>>>>>>>> 
>>>>>>>> +        xor     r12,r8
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        xor     r9,r13
>>>>>>>> 
>>>>>>>> +        shr     r8,8
>>>>>>>> 
>>>>>>>> +        movzx   r12,r12b
>>>>>>>> 
>>>>>>>> +        mov     edx,DWORD[rdi]
>>>>>>>> 
>>>>>>>> +        shr     r9,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>>> 
>>>>>>>> +        shl     r10,56
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>>> 
>>>>>>>> +        rol     edx,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        mov     al,dl
>>>>>>>> 
>>>>>>>> +        xor     r8,r10
>>>>>>>> 
>>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>>> 
>>>>>>>> +        movzx   ebx,dl
>>>>>>>> 
>>>>>>>> +        shl     al,4
>>>>>>>> 
>>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>>> 
>>>>>>>> +        shr     ebx,4
>>>>>>>> 
>>>>>>>> +        shl     r12,48
>>>>>>>> 
>>>>>>>> +        xor     r13,r8
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        xor     r9,r12
>>>>>>>> 
>>>>>>>> +        shr     r8,8
>>>>>>>> 
>>>>>>>> +        movzx   r13,r13b
>>>>>>>> 
>>>>>>>> +        shr     r9,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>>> 
>>>>>>>> +        shl     r10,56
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>>> 
>>>>>>>> +        rol     edx,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        mov     al,dl
>>>>>>>> 
>>>>>>>> +        xor     r8,r10
>>>>>>>> 
>>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>>> 
>>>>>>>> +        movzx   ecx,dl
>>>>>>>> 
>>>>>>>> +        shl     al,4
>>>>>>>> 
>>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>>> 
>>>>>>>> +        shr     ecx,4
>>>>>>>> 
>>>>>>>> +        shl     r13,48
>>>>>>>> 
>>>>>>>> +        xor     r12,r8
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        xor     r9,r13
>>>>>>>> 
>>>>>>>> +        shr     r8,8
>>>>>>>> 
>>>>>>>> +        movzx   r12,r12b
>>>>>>>> 
>>>>>>>> +        shr     r9,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>>> 
>>>>>>>> +        shl     r10,56
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>>> 
>>>>>>>> +        rol     edx,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        mov     al,dl
>>>>>>>> 
>>>>>>>> +        xor     r8,r10
>>>>>>>> 
>>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>>> 
>>>>>>>> +        movzx   ebx,dl
>>>>>>>> 
>>>>>>>> +        shl     al,4
>>>>>>>> 
>>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>>> 
>>>>>>>> +        shr     ebx,4
>>>>>>>> 
>>>>>>>> +        shl     r12,48
>>>>>>>> 
>>>>>>>> +        xor     r13,r8
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        xor     r9,r12
>>>>>>>> 
>>>>>>>> +        shr     r8,8
>>>>>>>> 
>>>>>>>> +        movzx   r13,r13b
>>>>>>>> 
>>>>>>>> +        shr     r9,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>>> 
>>>>>>>> +        shl     r10,56
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>>> 
>>>>>>>> +        rol     edx,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>>> 
>>>>>>>> +        mov     al,dl
>>>>>>>> 
>>>>>>>> +        xor     r8,r10
>>>>>>>> 
>>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>>> 
>>>>>>>> +        movzx   ecx,dl
>>>>>>>> 
>>>>>>>> +        shl     al,4
>>>>>>>> 
>>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>>> 
>>>>>>>> +        and     ecx,240
>>>>>>>> 
>>>>>>>> +        shl     r13,48
>>>>>>>> 
>>>>>>>> +        xor     r12,r8
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        xor     r9,r13
>>>>>>>> 
>>>>>>>> +        shr     r8,8
>>>>>>>> 
>>>>>>>> +        movzx   r12,r12b
>>>>>>>> 
>>>>>>>> +        mov     edx,DWORD[((-4))+rdi]
>>>>>>>> 
>>>>>>>> +        shr     r9,8
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>>> 
>>>>>>>> +        shl     r10,56
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +        movzx   r13,r8b
>>>>>>>> 
>>>>>>>> +        shr     r8,4
>>>>>>>> 
>>>>>>>> +        mov     r10,r9
>>>>>>>> 
>>>>>>>> +        shl     r13b,4
>>>>>>>> 
>>>>>>>> +        shr     r9,4
>>>>>>>> 
>>>>>>>> +        xor     r8,QWORD[8+rcx*1+rsi]
>>>>>>>> 
>>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>>> 
>>>>>>>> +        shl     r10,60
>>>>>>>> 
>>>>>>>> +        xor     r9,QWORD[rcx*1+rsi]
>>>>>>>> 
>>>>>>>> +        xor     r8,r10
>>>>>>>> 
>>>>>>>> +        shl     r13,48
>>>>>>>> 
>>>>>>>> +        bswap   r8
>>>>>>>> 
>>>>>>>> +        xor     r9,r13
>>>>>>>> 
>>>>>>>> +        bswap   r9
>>>>>>>> 
>>>>>>>> +        cmp     r14,r15
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$outer_loop
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rdi],r8
>>>>>>>> 
>>>>>>>> +        mov     QWORD[rdi],r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsi,[((280+48))+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$ghash_epilogue:
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$SEH_end_gcm_ghash_4bit:
>>>>>>>> 
>>>>>>>> +global  gcm_init_clmul
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +gcm_init_clmul:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$_init_clmul:
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_gcm_init_clmul:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      0x48,0x83,0xec,0x18
>>>>>>>> 
>>>>>>>> +DB      0x0f,0x29,0x34,0x24
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[rdx]
>>>>>>>> 
>>>>>>>> +        pshufd  xmm2,xmm2,78
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pshufd  xmm4,xmm2,255
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm2
>>>>>>>> 
>>>>>>>> +        psllq   xmm2,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +        psrlq   xmm3,63
>>>>>>>> 
>>>>>>>> +        pcmpgtd xmm5,xmm4
>>>>>>>> 
>>>>>>>> +        pslldq  xmm3,8
>>>>>>>> 
>>>>>>>> +        por     xmm2,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pand    xmm5,XMMWORD[$L$0x1c2_polynomial]
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pshufd  xmm6,xmm2,78
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        pshufd  xmm3,xmm0,78
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,194,0
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,202,17
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,222,0
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        psrldq  xmm3,8
>>>>>>>> 
>>>>>>>> +        pslldq  xmm4,8
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,57
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pslldq  xmm0,8
>>>>>>>> 
>>>>>>>> +        psrldq  xmm3,8
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        pshufd  xmm3,xmm2,78
>>>>>>>> 
>>>>>>>> +        pshufd  xmm4,xmm0,78
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm2
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rcx],xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[16+rcx],xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,227,8
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[32+rcx],xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        pshufd  xmm3,xmm0,78
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,194,0
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,202,17
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,222,0
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        psrldq  xmm3,8
>>>>>>>> 
>>>>>>>> +        pslldq  xmm4,8
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,57
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pslldq  xmm0,8
>>>>>>>> 
>>>>>>>> +        psrldq  xmm3,8
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        pshufd  xmm3,xmm0,78
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,194,0
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,202,17
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,222,0
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        psrldq  xmm3,8
>>>>>>>> 
>>>>>>>> +        pslldq  xmm4,8
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,57
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pslldq  xmm0,8
>>>>>>>> 
>>>>>>>> +        psrldq  xmm3,8
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        pshufd  xmm3,xmm5,78
>>>>>>>> 
>>>>>>>> +        pshufd  xmm4,xmm0,78
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm5
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[48+rcx],xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[64+rcx],xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,227,8
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[80+rcx],xmm4
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[rsp]
>>>>>>>> 
>>>>>>>> +        lea     rsp,[24+rsp]
>>>>>>>> 
>>>>>>>> +$L$SEH_end_gcm_init_clmul:
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  gcm_gmult_clmul
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +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
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,194,0
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,202,17
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,220,0
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        psrldq  xmm3,8
>>>>>>>> 
>>>>>>>> +        pslldq  xmm4,8
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,57
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pslldq  xmm0,8
>>>>>>>> 
>>>>>>>> +        psrldq  xmm3,8
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,197
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rcx],xmm0
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  gcm_ghash_clmul
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +gcm_ghash_clmul:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$_ghash_clmul:
>>>>>>>> 
>>>>>>>> +        lea     rax,[((-136))+rsp]
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_gcm_ghash_clmul:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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[rcx]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[rdx]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm7,XMMWORD[32+rdx]
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,0,194
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     r9,0x10
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$odd_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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      NEAR $L$skip4x
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     r9,0x30
>>>>>>>> 
>>>>>>>> +        mov     rax,0xA040608020C0E000
>>>>>>>> 
>>>>>>>> +        movdqu  xmm14,XMMWORD[48+rdx]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm15,XMMWORD[64+rdx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +        pshufd  xmm4,xmm3,78
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm3
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,218,0
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,234,17
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,231,0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm11
>>>>>>>> 
>>>>>>>> +        pshufd  xmm12,xmm11,78
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm11
>>>>>>>> 
>>>>>>>> +DB      102,68,15,58,68,222,0
>>>>>>>> 
>>>>>>>> +DB      102,68,15,58,68,238,17
>>>>>>>> 
>>>>>>>> +DB      102,68,15,58,68,231,16
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        xorps   xmm5,xmm13
>>>>>>>> 
>>>>>>>> +        movups  xmm7,XMMWORD[80+rdx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +        pshufd  xmm12,xmm11,78
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm11
>>>>>>>> 
>>>>>>>> +DB      102,69,15,58,68,222,0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        pshufd  xmm8,xmm0,78
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,69,15,58,68,238,17
>>>>>>>> 
>>>>>>>> +DB      102,68,15,58,68,231,0
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        xorps   xmm5,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r8,[64+r8]
>>>>>>>> 
>>>>>>>> +        sub     r9,0x40
>>>>>>>> 
>>>>>>>> +        jc      NEAR $L$tail4x
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$mod4_loop
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$mod4_loop:
>>>>>>>> 
>>>>>>>> +DB      102,65,15,58,68,199,0
>>>>>>>> 
>>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        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[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[32+rdx]
>>>>>>>> 
>>>>>>>> +        xorps   xmm8,xmm4
>>>>>>>> 
>>>>>>>> +DB      102,68,15,58,68,218,0
>>>>>>>> 
>>>>>>>> +        pshufd  xmm4,xmm3,78
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,68,15,58,68,234,17
>>>>>>>> 
>>>>>>>> +        pslldq  xmm8,8
>>>>>>>> 
>>>>>>>> +        psrldq  xmm9,8
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,XMMWORD[$L$7_mask]
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,76,15,110,200
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pand    xmm8,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,69,15,56,0,200
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,68,15,58,68,231,0
>>>>>>>> 
>>>>>>>> +        psllq   xmm9,57
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        pslldq  xmm9,8
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,222,0
>>>>>>>> 
>>>>>>>> +        psrldq  xmm8,8
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm8
>>>>>>>> 
>>>>>>>> +        movdqu  xmm8,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm0
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,1
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,238,17
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        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[80+rdx]
>>>>>>>> 
>>>>>>>> +DB      102,69,15,56,0,194
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm0
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        pshufd  xmm12,xmm11,78
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm11
>>>>>>>> 
>>>>>>>> +DB      102,69,15,58,68,222,0
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,69,15,58,68,238,17
>>>>>>>> 
>>>>>>>> +        xorps   xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        pshufd  xmm8,xmm0,78
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,68,15,58,68,231,0
>>>>>>>> 
>>>>>>>> +        xorps   xmm5,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r8,[64+r8]
>>>>>>>> 
>>>>>>>> +        sub     r9,0x40
>>>>>>>> 
>>>>>>>> +        jnc     NEAR $L$mod4_loop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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
>>>>>>>> 
>>>>>>>> +        xorps   xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        xorps   xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        xorps   xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +        psrldq  xmm8,8
>>>>>>>> 
>>>>>>>> +        pslldq  xmm9,8
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,57
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pslldq  xmm0,8
>>>>>>>> 
>>>>>>>> +        psrldq  xmm3,8
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        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[r8]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm3,XMMWORD[16+r8]
>>>>>>>> 
>>>>>>>> +DB      102,69,15,56,0,194
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,0,218
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        pshufd  xmm4,xmm3,78
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm3
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,218,0
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,234,17
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,231,0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r8,[32+r8]
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +        sub     r9,0x20
>>>>>>>> 
>>>>>>>> +        jbe     NEAR $L$even_tail
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$mod_loop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$mod_loop:
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm4
>>>>>>>> 
>>>>>>>> +        pshufd  xmm4,xmm0,78
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,198,0
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,206,17
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,231,16
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        movdqu  xmm9,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,69,15,56,0,202
>>>>>>>> 
>>>>>>>> +        movdqu  xmm3,XMMWORD[16+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,0,218
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm4
>>>>>>>> 
>>>>>>>> +        psrldq  xmm8,8
>>>>>>>> 
>>>>>>>> +        pslldq  xmm4,8
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm0
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,218,0
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm8
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,57
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm0
>>>>>>>> 
>>>>>>>> +        pslldq  xmm0,8
>>>>>>>> 
>>>>>>>> +        psrldq  xmm8,8
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm9
>>>>>>>> 
>>>>>>>> +        pshufd  xmm4,xmm5,78
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm0
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,1
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,234,17
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm0
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm9
>>>>>>>> 
>>>>>>>> +        lea     r8,[32+r8]
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,1
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,231,0
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     r9,0x20
>>>>>>>> 
>>>>>>>> +        ja      NEAR $L$mod_loop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$even_tail:
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm4
>>>>>>>> 
>>>>>>>> +        pshufd  xmm4,xmm0,78
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,198,0
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,206,17
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,231,16
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm4
>>>>>>>> 
>>>>>>>> +        psrldq  xmm8,8
>>>>>>>> 
>>>>>>>> +        pslldq  xmm4,8
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,57
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pslldq  xmm0,8
>>>>>>>> 
>>>>>>>> +        psrldq  xmm3,8
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        test    r9,r9
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$odd_tail:
>>>>>>>> 
>>>>>>>> +        movdqu  xmm8,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +DB      102,69,15,56,0,194
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        pshufd  xmm3,xmm0,78
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,194,0
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,202,17
>>>>>>>> 
>>>>>>>> +DB      102,15,58,68,223,0
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        psrldq  xmm3,8
>>>>>>>> 
>>>>>>>> +        pslldq  xmm4,8
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        psllq   xmm0,57
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pslldq  xmm0,8
>>>>>>>> 
>>>>>>>> +        psrldq  xmm3,8
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        psrlq   xmm0,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +$L$done:
>>>>>>>> 
>>>>>>>> +DB      102,65,15,56,0,194
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  gcm_init_avx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +gcm_init_avx:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$_init_clmul
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  gcm_gmult_avx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +gcm_gmult_avx:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$_gmult_clmul
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  gcm_ghash_avx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +gcm_ghash_avx:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$_ghash_clmul
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   64
>>>>>>>> 
>>>>>>>> +$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,0xc2
>>>>>>>> 
>>>>>>>> +$L$7_mask:
>>>>>>>> 
>>>>>>>> +        DD      7,0,7,0
>>>>>>>> 
>>>>>>>> +$L$7_mask_poly:
>>>>>>>> 
>>>>>>>> +        DD      7,0,450,0
>>>>>>>> 
>>>>>>>> +ALIGN   64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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
>>>>> 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
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +se_handler:
>>>>>>>> 
>>>>>>>> +        push    rsi
>>>>>>>> 
>>>>>>>> +        push    rdi
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +        pushfq
>>>>>>>> 
>>>>>>>> +        sub     rsp,64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>> 
>>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rax,[((48+280))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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_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[40+r9]
>>>>>>>> 
>>>>>>>> +        mov     rsi,r8
>>>>>>>> 
>>>>>>>> +        mov     ecx,154
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,r9
>>>>>>>> 
>>>>>>>> +        xor     rcx,rcx
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +        popfq
>>>>>>>> 
>>>>>>>> +        pop     r15
>>>>>>>> 
>>>>>>>> +        pop     r14
>>>>>>>> 
>>>>>>>> +        pop     r13
>>>>>>>> 
>>>>>>>> +        pop     r12
>>>>>>>> 
>>>>>>>> +        pop     rbp
>>>>>>>> 
>>>>>>>> +        pop     rbx
>>>>>>>> 
>>>>>>>> +        pop     rdi
>>>>>>>> 
>>>>>>>> +        pop     rsi
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +section .pdata rdata align=4
>>>>>>>> 
>>>>>>>> +ALIGN   4
>>>>>>>> 
>>>>>>>> +        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      $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      $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      $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:
>>>>>>>> 
>>>>>>>> +DB      9,0,0,0
>>>>>>>> 
>>>>>>>> +        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      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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
>>>>>>>> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
>>>>>>>> x86_64.nasm
>>>>>>>> new file mode 100644
>>>>>>>> index 0000000000..f3b7b0e35e
>>>>>>>> --- /dev/null
>>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
>>>> x86_64.nasm
>>>>>>>> @@ -0,0 +1,3137 @@
>>>>>>>> +; WARNING: do not edit!
>>>>>>>> 
>>>>>>>> +; Generated from openssl/crypto/sha/asm/sha1-mb-x86_64.pl
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
>>>>> Reserved.
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>> 
>>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>>> copy
>>>>>>>> 
>>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>> 
>>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +default rel
>>>>>>>> 
>>>>>>>> +%define XMMWORD
>>>>>>>> 
>>>>>>>> +%define YMMWORD
>>>>>>>> 
>>>>>>>> +%define ZMMWORD
>>>>>>>> 
>>>>>>>> +section .text code align=64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  sha1_multi_block
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +sha1_multi_block:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_sha1_multi_block:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
>>>>>>>> 
>>>>>>>> +        bt      rcx,61
>>>>>>>> 
>>>>>>>> +        jc      NEAR _shaext_shortcut
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-120)+rax],xmm10
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-104)+rax],xmm11
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-88)+rax],xmm12
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-72)+rax],xmm13
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-56)+rax],xmm14
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-40)+rax],xmm15
>>>>>>>> 
>>>>>>>> +        sub     rsp,288
>>>>>>>> 
>>>>>>>> +        and     rsp,-256
>>>>>>>> 
>>>>>>>> +        mov     QWORD[272+rsp],rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$body:
>>>>>>>> 
>>>>>>>> +        lea     rbp,[K_XX_XX]
>>>>>>>> 
>>>>>>>> +        lea     rbx,[256+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$oop_grande:
>>>>>>>> 
>>>>>>>> +        mov     DWORD[280+rsp],edx
>>>>>>>> 
>>>>>>>> +        xor     edx,edx
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[rsi]
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[8+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        mov     DWORD[rbx],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r8,rbp
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[16+rsi]
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[24+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        mov     DWORD[4+rbx],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r9,rbp
>>>>>>>> 
>>>>>>>> +        mov     r10,QWORD[32+rsi]
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[40+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        mov     DWORD[8+rbx],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r10,rbp
>>>>>>>> 
>>>>>>>> +        mov     r11,QWORD[48+rsi]
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[56+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        mov     DWORD[12+rbx],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r11,rbp
>>>>>>>> 
>>>>>>>> +        test    edx,edx
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  xmm10,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        lea     rax,[128+rsp]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm11,XMMWORD[32+rdi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm12,XMMWORD[64+rdi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm13,XMMWORD[96+rdi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm14,XMMWORD[128+rdi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,XMMWORD[96+rbp]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,XMMWORD[((-32))+rbp]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$oop:
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[r8]
>>>>>>>> 
>>>>>>>> +        lea     r8,[64+r8]
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[r9]
>>>>>>>> 
>>>>>>>> +        lea     r9,[64+r9]
>>>>>>>> 
>>>>>>>> +        movd    xmm3,DWORD[r10]
>>>>>>>> 
>>>>>>>> +        lea     r10,[64+r10]
>>>>>>>> 
>>>>>>>> +        movd    xmm4,DWORD[r11]
>>>>>>>> 
>>>>>>>> +        lea     r11,[64+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[((-60))+r8]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        movd    xmm9,DWORD[((-60))+r9]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movd    xmm8,DWORD[((-60))+r10]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,197
>>>>>>>> 
>>>>>>>> +        movd    xmm7,DWORD[((-60))+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm1,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm13
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[((-56))+r8]
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        movd    xmm9,DWORD[((-56))+r9]
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm11,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,205
>>>>>>>> 
>>>>>>>> +        movd    xmm8,DWORD[((-56))+r10]
>>>>>>>> 
>>>>>>>> +        por     xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm7,DWORD[((-56))+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm2,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm2,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>> 
>>>>>>>> +        movd    xmm3,DWORD[((-52))+r8]
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        movd    xmm9,DWORD[((-52))+r9]
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,213
>>>>>>>> 
>>>>>>>> +        movd    xmm8,DWORD[((-52))+r10]
>>>>>>>> 
>>>>>>>> +        por     xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm7,DWORD[((-52))+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm3,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm3,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>> 
>>>>>>>> +        movd    xmm4,DWORD[((-48))+r8]
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        movd    xmm9,DWORD[((-48))+r9]
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm14,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,221
>>>>>>>> 
>>>>>>>> +        movd    xmm8,DWORD[((-48))+r10]
>>>>>>>> 
>>>>>>>> +        por     xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm7,DWORD[((-48))+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm4,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm4,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[((-44))+r8]
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        movd    xmm9,DWORD[((-44))+r9]
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,229
>>>>>>>> 
>>>>>>>> +        movd    xmm8,DWORD[((-44))+r10]
>>>>>>>> 
>>>>>>>> +        por     xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm7,DWORD[((-44))+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm14
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[((-40))+r8]
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        movd    xmm9,DWORD[((-40))+r9]
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,197
>>>>>>>> 
>>>>>>>> +        movd    xmm8,DWORD[((-40))+r10]
>>>>>>>> 
>>>>>>>> +        por     xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm7,DWORD[((-40))+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm1,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm13
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[((-36))+r8]
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        movd    xmm9,DWORD[((-36))+r9]
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm11,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,205
>>>>>>>> 
>>>>>>>> +        movd    xmm8,DWORD[((-36))+r10]
>>>>>>>> 
>>>>>>>> +        por     xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm7,DWORD[((-36))+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm2,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm2,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>> 
>>>>>>>> +        movd    xmm3,DWORD[((-32))+r8]
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        movd    xmm9,DWORD[((-32))+r9]
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,213
>>>>>>>> 
>>>>>>>> +        movd    xmm8,DWORD[((-32))+r10]
>>>>>>>> 
>>>>>>>> +        por     xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm7,DWORD[((-32))+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm3,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm3,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>> 
>>>>>>>> +        movd    xmm4,DWORD[((-28))+r8]
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        movd    xmm9,DWORD[((-28))+r9]
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm14,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,221
>>>>>>>> 
>>>>>>>> +        movd    xmm8,DWORD[((-28))+r10]
>>>>>>>> 
>>>>>>>> +        por     xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm7,DWORD[((-28))+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm4,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm4,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(128-128)+rax],xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[((-24))+r8]
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        movd    xmm9,DWORD[((-24))+r9]
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,229
>>>>>>>> 
>>>>>>>> +        movd    xmm8,DWORD[((-24))+r10]
>>>>>>>> 
>>>>>>>> +        por     xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm7,DWORD[((-24))+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm14
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(144-128)+rax],xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[((-20))+r8]
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        movd    xmm9,DWORD[((-20))+r9]
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,197
>>>>>>>> 
>>>>>>>> +        movd    xmm8,DWORD[((-20))+r10]
>>>>>>>> 
>>>>>>>> +        por     xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm7,DWORD[((-20))+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm1,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm13
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(160-128)+rax],xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[((-16))+r8]
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        movd    xmm9,DWORD[((-16))+r9]
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm11,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,205
>>>>>>>> 
>>>>>>>> +        movd    xmm8,DWORD[((-16))+r10]
>>>>>>>> 
>>>>>>>> +        por     xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm7,DWORD[((-16))+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm2,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm2,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(176-128)+rax],xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>> 
>>>>>>>> +        movd    xmm3,DWORD[((-12))+r8]
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        movd    xmm9,DWORD[((-12))+r9]
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,213
>>>>>>>> 
>>>>>>>> +        movd    xmm8,DWORD[((-12))+r10]
>>>>>>>> 
>>>>>>>> +        por     xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm7,DWORD[((-12))+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm3,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm3,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(192-128)+rax],xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>> 
>>>>>>>> +        movd    xmm4,DWORD[((-8))+r8]
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        movd    xmm9,DWORD[((-8))+r9]
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm14,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,221
>>>>>>>> 
>>>>>>>> +        movd    xmm8,DWORD[((-8))+r10]
>>>>>>>> 
>>>>>>>> +        por     xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm7,DWORD[((-8))+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm4,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm4,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(208-128)+rax],xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[((-4))+r8]
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        movd    xmm9,DWORD[((-4))+r9]
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,229
>>>>>>>> 
>>>>>>>> +        movd    xmm8,DWORD[((-4))+r10]
>>>>>>>> 
>>>>>>>> +        por     xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((0-128))+rax]
>>>>>>>> 
>>>>>>>> +        movd    xmm7,DWORD[((-4))+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        prefetcht0      [63+r8]
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm14
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(224-128)+rax],xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        prefetcht0      [63+r9]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +        prefetcht0      [63+r10]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,197
>>>>>>>> 
>>>>>>>> +        prefetcht0      [63+r11]
>>>>>>>> 
>>>>>>>> +        por     xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((16-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[((32-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,XMMWORD[((128-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(240-128)+rax],xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm11,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[((48-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,XMMWORD[((144-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm2,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((64-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,XMMWORD[((160-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm14,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm3,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((80-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,XMMWORD[((176-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((96-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,XMMWORD[((192-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        pandn   xmm7,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm0,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,XMMWORD[rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[((112-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,XMMWORD[((208-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm11,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[((128-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,XMMWORD[((224-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm2,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((144-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,XMMWORD[((240-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm14,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm3,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((160-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,XMMWORD[((0-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((176-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,XMMWORD[((16-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(128-128)+rax],xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm0,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[((192-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,XMMWORD[((32-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(144-128)+rax],xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm11,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[((208-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,XMMWORD[((48-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(160-128)+rax],xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm2,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((224-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,XMMWORD[((64-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(176-128)+rax],xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm14,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm3,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((240-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,XMMWORD[((80-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(192-128)+rax],xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((0-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,XMMWORD[((96-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(208-128)+rax],xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm0,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[((16-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,XMMWORD[((112-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(224-128)+rax],xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm11,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[((32-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,XMMWORD[((128-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(240-128)+rax],xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm2,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((48-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,XMMWORD[((144-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm14,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm3,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((64-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,XMMWORD[((160-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((80-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,XMMWORD[((176-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm0,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[((96-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,XMMWORD[((192-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm11,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[((112-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,XMMWORD[((208-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm2,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((128-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,XMMWORD[((224-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm14,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm3,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((144-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,XMMWORD[((240-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((160-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,XMMWORD[((0-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm0,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,XMMWORD[32+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[((176-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,XMMWORD[((16-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(128-128)+rax],xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm11,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[((192-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,XMMWORD[((32-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(144-128)+rax],xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm2,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((208-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,XMMWORD[((48-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(160-128)+rax],xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm14,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm3,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((224-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,XMMWORD[((64-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(176-128)+rax],xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((240-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,XMMWORD[((80-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(192-128)+rax],xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm0,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[((0-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,XMMWORD[((96-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(208-128)+rax],xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm11,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[((16-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,XMMWORD[((112-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(224-128)+rax],xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm2,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((32-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,XMMWORD[((128-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(240-128)+rax],xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm14,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm3,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((48-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,XMMWORD[((144-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((64-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,XMMWORD[((160-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm0,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[((80-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,XMMWORD[((176-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm11,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[((96-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,XMMWORD[((192-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm2,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((112-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,XMMWORD[((208-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm14,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm3,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((128-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,XMMWORD[((224-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((144-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,XMMWORD[((240-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm0,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[((160-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,XMMWORD[((0-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm11,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[((176-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,XMMWORD[((16-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(128-128)+rax],xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm2,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((192-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,XMMWORD[((32-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(144-128)+rax],xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm14,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm3,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((208-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,XMMWORD[((48-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(160-128)+rax],xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((224-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,XMMWORD[((64-128))+rax]
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +        pand    xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(176-128)+rax],xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        pand    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm0,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,XMMWORD[64+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[((240-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,XMMWORD[((80-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(192-128)+rax],xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm11,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[((0-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,XMMWORD[((96-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(208-128)+rax],xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm2,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((16-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,XMMWORD[((112-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(224-128)+rax],xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm14,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm3,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((32-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,XMMWORD[((128-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(240-128)+rax],xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((48-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,XMMWORD[((144-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm0,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[((64-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,XMMWORD[((160-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm11,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[((80-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,XMMWORD[((176-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm2,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((96-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,XMMWORD[((192-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm14,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm3,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((112-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,XMMWORD[((208-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((128-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,XMMWORD[((224-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm0,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[((144-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,XMMWORD[((240-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm11,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[((160-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,XMMWORD[((0-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm2,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((176-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,XMMWORD[((16-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm14,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm3,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((192-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,XMMWORD[((32-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((208-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,XMMWORD[((48-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm0,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[((224-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,XMMWORD[((64-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm11,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[((240-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,XMMWORD[((80-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm2,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((0-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,XMMWORD[((96-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm14,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm3,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((16-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,XMMWORD[((112-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm5,31
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm13,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        por     xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm15
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,27
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,30
>>>>>>>> 
>>>>>>>> +        por     xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm12,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm8
>>>>>>>> 
>>>>>>>> +        por     xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[rbx]
>>>>>>>> 
>>>>>>>> +        mov     ecx,1
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[rbx]
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm8
>>>>>>>> 
>>>>>>>> +        cmovge  r8,rbp
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[4+rbx]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        cmovge  r9,rbp
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[8+rbx]
>>>>>>>> 
>>>>>>>> +        pcmpgtd xmm1,xmm8
>>>>>>>> 
>>>>>>>> +        cmovge  r10,rbp
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[12+rbx]
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        cmovge  r11,rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        pand    xmm10,xmm1
>>>>>>>> 
>>>>>>>> +        movdqu  xmm7,XMMWORD[32+rdi]
>>>>>>>> 
>>>>>>>> +        pand    xmm11,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +        movdqu  xmm8,XMMWORD[64+rdi]
>>>>>>>> 
>>>>>>>> +        pand    xmm12,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        movdqu  xmm9,XMMWORD[96+rdi]
>>>>>>>> 
>>>>>>>> +        pand    xmm13,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm8
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[128+rdi]
>>>>>>>> 
>>>>>>>> +        pand    xmm14,xmm1
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rdi],xmm10
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm9
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[32+rdi],xmm11
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm5
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[64+rdi],xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[96+rdi],xmm13
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[128+rdi],xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[rbx],xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,XMMWORD[96+rbp]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,XMMWORD[((-32))+rbp]
>>>>>>>> 
>>>>>>>> +        dec     edx
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edx,DWORD[280+rsp]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>> 
>>>>>>>> +        lea     rsi,[64+rsi]
>>>>>>>> 
>>>>>>>> +        dec     edx
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_grande
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$done:
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[272+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[((-184))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[((-168))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[((-152))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[((-136))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,XMMWORD[((-120))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm11,XMMWORD[((-104))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm12,XMMWORD[((-88))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm13,XMMWORD[((-72))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm14,XMMWORD[((-56))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm15,XMMWORD[((-40))+rax]
>>>>>>>> 
>>>>>>>> +        mov     rbp,QWORD[((-16))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[((-8))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$epilogue:
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$SEH_end_sha1_multi_block:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +sha1_multi_block_shaext:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_sha1_multi_block_shaext:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +_shaext_shortcut:
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-120)+rax],xmm10
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-104)+rax],xmm11
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-88)+rax],xmm12
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-72)+rax],xmm13
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-56)+rax],xmm14
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-40)+rax],xmm15
>>>>>>>> 
>>>>>>>> +        sub     rsp,288
>>>>>>>> 
>>>>>>>> +        shl     edx,1
>>>>>>>> 
>>>>>>>> +        and     rsp,-256
>>>>>>>> 
>>>>>>>> +        lea     rdi,[64+rdi]
>>>>>>>> 
>>>>>>>> +        mov     QWORD[272+rsp],rax
>>>>>>>> 
>>>>>>>> +$L$body_shaext:
>>>>>>>> 
>>>>>>>> +        lea     rbx,[256+rsp]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[((K_XX_XX+128))]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$oop_grande_shaext:
>>>>>>>> 
>>>>>>>> +        mov     DWORD[280+rsp],edx
>>>>>>>> 
>>>>>>>> +        xor     edx,edx
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[rsi]
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[8+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        mov     DWORD[rbx],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r8,rsp
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[16+rsi]
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[24+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        mov     DWORD[4+rbx],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r9,rsp
>>>>>>>> 
>>>>>>>> +        test    edx,edx
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$done_shaext
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movq    xmm0,QWORD[((0-64))+rdi]
>>>>>>>> 
>>>>>>>> +        movq    xmm4,QWORD[((32-64))+rdi]
>>>>>>>> 
>>>>>>>> +        movq    xmm5,QWORD[((64-64))+rdi]
>>>>>>>> 
>>>>>>>> +        movq    xmm6,QWORD[((96-64))+rdi]
>>>>>>>> 
>>>>>>>> +        movq    xmm7,QWORD[((128-64))+rdi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm0
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm0,xmm5
>>>>>>>> 
>>>>>>>> +        punpckhqdq      xmm8,xmm5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pshufd  xmm1,xmm7,63
>>>>>>>> 
>>>>>>>> +        pshufd  xmm9,xmm7,127
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,27
>>>>>>>> 
>>>>>>>> +        pshufd  xmm8,xmm8,27
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_shaext
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$oop_shaext:
>>>>>>>> 
>>>>>>>> +        movdqu  xmm4,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm11,XMMWORD[r9]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[16+r8]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm12,XMMWORD[16+r9]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[32+r8]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,227
>>>>>>>> 
>>>>>>>> +        movdqu  xmm13,XMMWORD[32+r9]
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,0,219
>>>>>>>> 
>>>>>>>> +        movdqu  xmm7,XMMWORD[48+r8]
>>>>>>>> 
>>>>>>>> +        lea     r8,[64+r8]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,235
>>>>>>>> 
>>>>>>>> +        movdqu  xmm14,XMMWORD[48+r9]
>>>>>>>> 
>>>>>>>> +        lea     r9,[64+r9]
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,0,227
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[80+rsp],xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[112+rsp],xmm9
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[64+rsp],xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[96+rsp],xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,0
>>>>>>>> 
>>>>>>>> +DB      15,56,200,213
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,0
>>>>>>>> 
>>>>>>>> +DB      69,15,56,200,212
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,243
>>>>>>>> 
>>>>>>>> +        prefetcht0      [127+r8]
>>>>>>>> 
>>>>>>>> +DB      15,56,201,229
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,0,235
>>>>>>>> 
>>>>>>>> +        prefetcht0      [127+r9]
>>>>>>>> 
>>>>>>>> +DB      69,15,56,201,220
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,251
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,0,243
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,0
>>>>>>>> 
>>>>>>>> +DB      15,56,200,206
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,0
>>>>>>>> 
>>>>>>>> +DB      69,15,56,200,205
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +DB      15,56,201,238
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm13
>>>>>>>> 
>>>>>>>> +DB      69,15,56,201,229
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,0
>>>>>>>> 
>>>>>>>> +DB      15,56,200,215
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,0
>>>>>>>> 
>>>>>>>> +DB      69,15,56,200,214
>>>>>>>> 
>>>>>>>> +DB      15,56,202,231
>>>>>>>> 
>>>>>>>> +DB      69,15,56,202,222
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm7
>>>>>>>> 
>>>>>>>> +DB      15,56,201,247
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm14
>>>>>>>> 
>>>>>>>> +DB      69,15,56,201,238
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,0
>>>>>>>> 
>>>>>>>> +DB      15,56,200,204
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,0
>>>>>>>> 
>>>>>>>> +DB      69,15,56,200,203
>>>>>>>> 
>>>>>>>> +DB      15,56,202,236
>>>>>>>> 
>>>>>>>> +DB      69,15,56,202,227
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>> 
>>>>>>>> +DB      15,56,201,252
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm11
>>>>>>>> 
>>>>>>>> +DB      69,15,56,201,243
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,0
>>>>>>>> 
>>>>>>>> +DB      15,56,200,213
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,0
>>>>>>>> 
>>>>>>>> +DB      69,15,56,200,212
>>>>>>>> 
>>>>>>>> +DB      15,56,202,245
>>>>>>>> 
>>>>>>>> +DB      69,15,56,202,236
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm5
>>>>>>>> 
>>>>>>>> +DB      15,56,201,229
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm12
>>>>>>>> 
>>>>>>>> +DB      69,15,56,201,220
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,1
>>>>>>>> 
>>>>>>>> +DB      15,56,200,206
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,1
>>>>>>>> 
>>>>>>>> +DB      69,15,56,200,205
>>>>>>>> 
>>>>>>>> +DB      15,56,202,254
>>>>>>>> 
>>>>>>>> +DB      69,15,56,202,245
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +DB      15,56,201,238
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm13
>>>>>>>> 
>>>>>>>> +DB      69,15,56,201,229
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,1
>>>>>>>> 
>>>>>>>> +DB      15,56,200,215
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,1
>>>>>>>> 
>>>>>>>> +DB      69,15,56,200,214
>>>>>>>> 
>>>>>>>> +DB      15,56,202,231
>>>>>>>> 
>>>>>>>> +DB      69,15,56,202,222
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm7
>>>>>>>> 
>>>>>>>> +DB      15,56,201,247
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm14
>>>>>>>> 
>>>>>>>> +DB      69,15,56,201,238
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,1
>>>>>>>> 
>>>>>>>> +DB      15,56,200,204
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,1
>>>>>>>> 
>>>>>>>> +DB      69,15,56,200,203
>>>>>>>> 
>>>>>>>> +DB      15,56,202,236
>>>>>>>> 
>>>>>>>> +DB      69,15,56,202,227
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>> 
>>>>>>>> +DB      15,56,201,252
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm11
>>>>>>>> 
>>>>>>>> +DB      69,15,56,201,243
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,1
>>>>>>>> 
>>>>>>>> +DB      15,56,200,213
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,1
>>>>>>>> 
>>>>>>>> +DB      69,15,56,200,212
>>>>>>>> 
>>>>>>>> +DB      15,56,202,245
>>>>>>>> 
>>>>>>>> +DB      69,15,56,202,236
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm5
>>>>>>>> 
>>>>>>>> +DB      15,56,201,229
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm12
>>>>>>>> 
>>>>>>>> +DB      69,15,56,201,220
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,1
>>>>>>>> 
>>>>>>>> +DB      15,56,200,206
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,1
>>>>>>>> 
>>>>>>>> +DB      69,15,56,200,205
>>>>>>>> 
>>>>>>>> +DB      15,56,202,254
>>>>>>>> 
>>>>>>>> +DB      69,15,56,202,245
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +DB      15,56,201,238
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm13
>>>>>>>> 
>>>>>>>> +DB      69,15,56,201,229
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,2
>>>>>>>> 
>>>>>>>> +DB      15,56,200,215
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,2
>>>>>>>> 
>>>>>>>> +DB      69,15,56,200,214
>>>>>>>> 
>>>>>>>> +DB      15,56,202,231
>>>>>>>> 
>>>>>>>> +DB      69,15,56,202,222
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm7
>>>>>>>> 
>>>>>>>> +DB      15,56,201,247
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm14
>>>>>>>> 
>>>>>>>> +DB      69,15,56,201,238
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,2
>>>>>>>> 
>>>>>>>> +DB      15,56,200,204
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,2
>>>>>>>> 
>>>>>>>> +DB      69,15,56,200,203
>>>>>>>> 
>>>>>>>> +DB      15,56,202,236
>>>>>>>> 
>>>>>>>> +DB      69,15,56,202,227
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>> 
>>>>>>>> +DB      15,56,201,252
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm11
>>>>>>>> 
>>>>>>>> +DB      69,15,56,201,243
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,2
>>>>>>>> 
>>>>>>>> +DB      15,56,200,213
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,2
>>>>>>>> 
>>>>>>>> +DB      69,15,56,200,212
>>>>>>>> 
>>>>>>>> +DB      15,56,202,245
>>>>>>>> 
>>>>>>>> +DB      69,15,56,202,236
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm5
>>>>>>>> 
>>>>>>>> +DB      15,56,201,229
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm12
>>>>>>>> 
>>>>>>>> +DB      69,15,56,201,220
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,2
>>>>>>>> 
>>>>>>>> +DB      15,56,200,206
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,2
>>>>>>>> 
>>>>>>>> +DB      69,15,56,200,205
>>>>>>>> 
>>>>>>>> +DB      15,56,202,254
>>>>>>>> 
>>>>>>>> +DB      69,15,56,202,245
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +DB      15,56,201,238
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm13
>>>>>>>> 
>>>>>>>> +DB      69,15,56,201,229
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,2
>>>>>>>> 
>>>>>>>> +DB      15,56,200,215
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,2
>>>>>>>> 
>>>>>>>> +DB      69,15,56,200,214
>>>>>>>> 
>>>>>>>> +DB      15,56,202,231
>>>>>>>> 
>>>>>>>> +DB      69,15,56,202,222
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm7
>>>>>>>> 
>>>>>>>> +DB      15,56,201,247
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm14
>>>>>>>> 
>>>>>>>> +DB      69,15,56,201,238
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,3
>>>>>>>> 
>>>>>>>> +DB      15,56,200,204
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,3
>>>>>>>> 
>>>>>>>> +DB      69,15,56,200,203
>>>>>>>> 
>>>>>>>> +DB      15,56,202,236
>>>>>>>> 
>>>>>>>> +DB      69,15,56,202,227
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>> 
>>>>>>>> +DB      15,56,201,252
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm11
>>>>>>>> 
>>>>>>>> +DB      69,15,56,201,243
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,3
>>>>>>>> 
>>>>>>>> +DB      15,56,200,213
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,3
>>>>>>>> 
>>>>>>>> +DB      69,15,56,200,212
>>>>>>>> 
>>>>>>>> +DB      15,56,202,245
>>>>>>>> 
>>>>>>>> +DB      69,15,56,202,236
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     ecx,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[rbx]
>>>>>>>> 
>>>>>>>> +        cmovge  r8,rsp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,3
>>>>>>>> 
>>>>>>>> +DB      15,56,200,206
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,3
>>>>>>>> 
>>>>>>>> +DB      69,15,56,200,205
>>>>>>>> 
>>>>>>>> +DB      15,56,202,254
>>>>>>>> 
>>>>>>>> +DB      69,15,56,202,245
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[4+rbx]
>>>>>>>> 
>>>>>>>> +        cmovge  r9,rsp
>>>>>>>> 
>>>>>>>> +        movq    xmm6,QWORD[rbx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,3
>>>>>>>> 
>>>>>>>> +DB      15,56,200,215
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,193,3
>>>>>>>> 
>>>>>>>> +DB      69,15,56,200,214
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pshufd  xmm11,xmm6,0x00
>>>>>>>> 
>>>>>>>> +        pshufd  xmm12,xmm6,0x55
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        pcmpgtd xmm11,xmm4
>>>>>>>> 
>>>>>>>> +        pcmpgtd xmm12,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,3
>>>>>>>> 
>>>>>>>> +DB      15,56,200,204
>>>>>>>> 
>>>>>>>> +DB      69,15,58,204,194,3
>>>>>>>> 
>>>>>>>> +DB      68,15,56,200,204
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pcmpgtd xmm7,xmm4
>>>>>>>> 
>>>>>>>> +        pand    xmm0,xmm11
>>>>>>>> 
>>>>>>>> +        pand    xmm1,xmm11
>>>>>>>> 
>>>>>>>> +        pand    xmm8,xmm12
>>>>>>>> 
>>>>>>>> +        pand    xmm9,xmm12
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,XMMWORD[64+rsp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,XMMWORD[80+rsp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,XMMWORD[96+rsp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,XMMWORD[112+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movq    QWORD[rbx],xmm6
>>>>>>>> 
>>>>>>>> +        dec     edx
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_shaext
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edx,DWORD[280+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,27
>>>>>>>> 
>>>>>>>> +        pshufd  xmm8,xmm8,27
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm8
>>>>>>>> 
>>>>>>>> +        punpckhdq       xmm6,xmm8
>>>>>>>> 
>>>>>>>> +        punpckhdq       xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        movq    QWORD[(0-64)+rdi],xmm0
>>>>>>>> 
>>>>>>>> +        psrldq  xmm0,8
>>>>>>>> 
>>>>>>>> +        movq    QWORD[(64-64)+rdi],xmm6
>>>>>>>> 
>>>>>>>> +        psrldq  xmm6,8
>>>>>>>> 
>>>>>>>> +        movq    QWORD[(32-64)+rdi],xmm0
>>>>>>>> 
>>>>>>>> +        psrldq  xmm1,8
>>>>>>>> 
>>>>>>>> +        movq    QWORD[(96-64)+rdi],xmm6
>>>>>>>> 
>>>>>>>> +        movq    QWORD[(128-64)+rdi],xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rdi,[8+rdi]
>>>>>>>> 
>>>>>>>> +        lea     rsi,[32+rsi]
>>>>>>>> 
>>>>>>>> +        dec     edx
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_grande_shaext
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$done_shaext:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[((-184))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[((-168))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[((-152))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[((-136))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,XMMWORD[((-120))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm11,XMMWORD[((-104))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm12,XMMWORD[((-88))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm13,XMMWORD[((-72))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm14,XMMWORD[((-56))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm15,XMMWORD[((-40))+rax]
>>>>>>>> 
>>>>>>>> +        mov     rbp,QWORD[((-16))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[((-8))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$epilogue_shaext:
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$SEH_end_sha1_multi_block_shaext:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   256
>>>>>>>> 
>>>>>>>> +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
>>>>>>>> 
>>>>>>>> +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
>>>>>>>> 
>>>>>>>> +K_XX_XX:
>>>>>>>> 
>>>>>>>> +        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,109,117,108,116,105,45,98,108,111,99,107
>>>>>>>> 
>>>>>>>> +DB      32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120
>>>>>>>> 
>>>>>>>> +DB      56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77
>>>>>>>> 
>>>>>>>> +DB      83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110
>>>>>>>> 
>>>>>>>> +DB      115,115,108,46,111,114,103,62,0
>>>>>>>> 
>>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +se_handler:
>>>>>>>> 
>>>>>>>> +        push    rsi
>>>>>>>> 
>>>>>>>> +        push    rdi
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +        pushfq
>>>>>>>> 
>>>>>>>> +        sub     rsp,64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>> 
>>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[272+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[((-8))+rax]
>>>>>>>> 
>>>>>>>> +        mov     rbp,QWORD[((-16))+rax]
>>>>>>>> 
>>>>>>>> +        mov     QWORD[144+r8],rbx
>>>>>>>> 
>>>>>>>> +        mov     QWORD[160+r8],rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsi,[((-24-160))+rax]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>> 
>>>>>>>> +        mov     ecx,20
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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[40+r9]
>>>>>>>> 
>>>>>>>> +        mov     rsi,r8
>>>>>>>> 
>>>>>>>> +        mov     ecx,154
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,r9
>>>>>>>> 
>>>>>>>> +        xor     rcx,rcx
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +        popfq
>>>>>>>> 
>>>>>>>> +        pop     r15
>>>>>>>> 
>>>>>>>> +        pop     r14
>>>>>>>> 
>>>>>>>> +        pop     r13
>>>>>>>> 
>>>>>>>> +        pop     r12
>>>>>>>> 
>>>>>>>> +        pop     rbp
>>>>>>>> 
>>>>>>>> +        pop     rbx
>>>>>>>> 
>>>>>>>> +        pop     rdi
>>>>>>>> 
>>>>>>>> +        pop     rsi
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +section .pdata rdata align=4
>>>>>>>> 
>>>>>>>> +ALIGN   4
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_begin_sha1_multi_block wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_end_sha1_multi_block wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_info_sha1_multi_block wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_begin_sha1_multi_block_shaext wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_end_sha1_multi_block_shaext wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_info_sha1_multi_block_shaext wrt ..imagebase
>>>>>>>> 
>>>>>>>> +section .xdata rdata align=8
>>>>>>>> 
>>>>>>>> +ALIGN   8
>>>>>>>> 
>>>>>>>> +$L$SEH_info_sha1_multi_block:
>>>>>>>> 
>>>>>>>> +DB      9,0,0,0
>>>>>>>> 
>>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
>>>>>>>> 
>>>>>>>> +$L$SEH_info_sha1_multi_block_shaext:
>>>>>>>> 
>>>>>>>> +DB      9,0,0,0
>>>>>>>> 
>>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
>>>>>>>> wrt ..imagebase
>>>>>>>> 
>>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-
>>>>> x86_64.nasm
>>>>>>>> b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
>>>>>>>> new file mode 100644
>>>>>>>> index 0000000000..c6d68d348f
>>>>>>>> --- /dev/null
>>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
>>>>>>>> @@ -0,0 +1,2884 @@
>>>>>>>> +; WARNING: do not edit!
>>>>>>>> 
>>>>>>>> +; Generated from openssl/crypto/sha/asm/sha1-x86_64.pl
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Copyright 2006-2020 The OpenSSL Project Authors. All Rights
>>>>> Reserved.
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>> 
>>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>>> copy
>>>>>>>> 
>>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>> 
>>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +default rel
>>>>>>>> 
>>>>>>>> +%define XMMWORD
>>>>>>>> 
>>>>>>>> +%define YMMWORD
>>>>>>>> 
>>>>>>>> +%define ZMMWORD
>>>>>>>> 
>>>>>>>> +section .text code align=64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  sha1_block_data_order
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +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:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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      NEAR $L$ialu
>>>>>>>> 
>>>>>>>> +        test    r10d,536870912
>>>>>>>> 
>>>>>>>> +        jnz     NEAR _shaext_shortcut
>>>>>>>> 
>>>>>>>> +        jmp     NEAR _ssse3_shortcut
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ialu:
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r8,rdi
>>>>>>>> 
>>>>>>>> +        sub     rsp,72
>>>>>>>> 
>>>>>>>> +        mov     r9,rsi
>>>>>>>> 
>>>>>>>> +        and     rsp,-64
>>>>>>>> 
>>>>>>>> +        mov     r10,rdx
>>>>>>>> 
>>>>>>>> +        mov     QWORD[64+rsp],rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$prologue:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[r9]
>>>>>>>> 
>>>>>>>> +        bswap   edx
>>>>>>>> 
>>>>>>>> +        mov     ebp,DWORD[4+r9]
>>>>>>>> 
>>>>>>>> +        mov     eax,r12d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,esi
>>>>>>>> 
>>>>>>>> +        bswap   ebp
>>>>>>>> 
>>>>>>>> +        xor     eax,r11d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        and     eax,edi
>>>>>>>> 
>>>>>>>> +        lea     r13d,[1518500249+r13*1+rdx]
>>>>>>>> 
>>>>>>>> +        add     r13d,ecx
>>>>>>>> 
>>>>>>>> +        xor     eax,r12d
>>>>>>>> 
>>>>>>>> +        rol     edi,30
>>>>>>>> 
>>>>>>>> +        add     r13d,eax
>>>>>>>> 
>>>>>>>> +        mov     r14d,DWORD[8+r9]
>>>>>>>> 
>>>>>>>> +        mov     eax,r11d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[4+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ecx,r13d
>>>>>>>> 
>>>>>>>> +        bswap   r14d
>>>>>>>> 
>>>>>>>> +        xor     eax,edi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        and     eax,esi
>>>>>>>> 
>>>>>>>> +        lea     r12d,[1518500249+r12*1+rbp]
>>>>>>>> 
>>>>>>>> +        add     r12d,ecx
>>>>>>>> 
>>>>>>>> +        xor     eax,r11d
>>>>>>>> 
>>>>>>>> +        rol     esi,30
>>>>>>>> 
>>>>>>>> +        add     r12d,eax
>>>>>>>> 
>>>>>>>> +        mov     edx,DWORD[12+r9]
>>>>>>>> 
>>>>>>>> +        mov     eax,edi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[8+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ecx,r12d
>>>>>>>> 
>>>>>>>> +        bswap   edx
>>>>>>>> 
>>>>>>>> +        xor     eax,esi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        and     eax,r13d
>>>>>>>> 
>>>>>>>> +        lea     r11d,[1518500249+r11*1+r14]
>>>>>>>> 
>>>>>>>> +        add     r11d,ecx
>>>>>>>> 
>>>>>>>> +        xor     eax,edi
>>>>>>>> 
>>>>>>>> +        rol     r13d,30
>>>>>>>> 
>>>>>>>> +        add     r11d,eax
>>>>>>>> 
>>>>>>>> +        mov     ebp,DWORD[16+r9]
>>>>>>>> 
>>>>>>>> +        mov     eax,esi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[12+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,r11d
>>>>>>>> 
>>>>>>>> +        bswap   ebp
>>>>>>>> 
>>>>>>>> +        xor     eax,r13d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        and     eax,r12d
>>>>>>>> 
>>>>>>>> +        lea     edi,[1518500249+rdi*1+rdx]
>>>>>>>> 
>>>>>>>> +        add     edi,ecx
>>>>>>>> 
>>>>>>>> +        xor     eax,esi
>>>>>>>> 
>>>>>>>> +        rol     r12d,30
>>>>>>>> 
>>>>>>>> +        add     edi,eax
>>>>>>>> 
>>>>>>>> +        mov     r14d,DWORD[20+r9]
>>>>>>>> 
>>>>>>>> +        mov     eax,r13d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[16+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ecx,edi
>>>>>>>> 
>>>>>>>> +        bswap   r14d
>>>>>>>> 
>>>>>>>> +        xor     eax,r12d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        and     eax,r11d
>>>>>>>> 
>>>>>>>> +        lea     esi,[1518500249+rsi*1+rbp]
>>>>>>>> 
>>>>>>>> +        add     esi,ecx
>>>>>>>> 
>>>>>>>> +        xor     eax,r13d
>>>>>>>> 
>>>>>>>> +        rol     r11d,30
>>>>>>>> 
>>>>>>>> +        add     esi,eax
>>>>>>>> 
>>>>>>>> +        mov     edx,DWORD[24+r9]
>>>>>>>> 
>>>>>>>> +        mov     eax,r12d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[20+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ecx,esi
>>>>>>>> 
>>>>>>>> +        bswap   edx
>>>>>>>> 
>>>>>>>> +        xor     eax,r11d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        and     eax,edi
>>>>>>>> 
>>>>>>>> +        lea     r13d,[1518500249+r13*1+r14]
>>>>>>>> 
>>>>>>>> +        add     r13d,ecx
>>>>>>>> 
>>>>>>>> +        xor     eax,r12d
>>>>>>>> 
>>>>>>>> +        rol     edi,30
>>>>>>>> 
>>>>>>>> +        add     r13d,eax
>>>>>>>> 
>>>>>>>> +        mov     ebp,DWORD[28+r9]
>>>>>>>> 
>>>>>>>> +        mov     eax,r11d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[24+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,r13d
>>>>>>>> 
>>>>>>>> +        bswap   ebp
>>>>>>>> 
>>>>>>>> +        xor     eax,edi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        and     eax,esi
>>>>>>>> 
>>>>>>>> +        lea     r12d,[1518500249+r12*1+rdx]
>>>>>>>> 
>>>>>>>> +        add     r12d,ecx
>>>>>>>> 
>>>>>>>> +        xor     eax,r11d
>>>>>>>> 
>>>>>>>> +        rol     esi,30
>>>>>>>> 
>>>>>>>> +        add     r12d,eax
>>>>>>>> 
>>>>>>>> +        mov     r14d,DWORD[32+r9]
>>>>>>>> 
>>>>>>>> +        mov     eax,edi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[28+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ecx,r12d
>>>>>>>> 
>>>>>>>> +        bswap   r14d
>>>>>>>> 
>>>>>>>> +        xor     eax,esi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        and     eax,r13d
>>>>>>>> 
>>>>>>>> +        lea     r11d,[1518500249+r11*1+rbp]
>>>>>>>> 
>>>>>>>> +        add     r11d,ecx
>>>>>>>> 
>>>>>>>> +        xor     eax,edi
>>>>>>>> 
>>>>>>>> +        rol     r13d,30
>>>>>>>> 
>>>>>>>> +        add     r11d,eax
>>>>>>>> 
>>>>>>>> +        mov     edx,DWORD[36+r9]
>>>>>>>> 
>>>>>>>> +        mov     eax,esi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[32+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ecx,r11d
>>>>>>>> 
>>>>>>>> +        bswap   edx
>>>>>>>> 
>>>>>>>> +        xor     eax,r13d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        and     eax,r12d
>>>>>>>> 
>>>>>>>> +        lea     edi,[1518500249+rdi*1+r14]
>>>>>>>> 
>>>>>>>> +        add     edi,ecx
>>>>>>>> 
>>>>>>>> +        xor     eax,esi
>>>>>>>> 
>>>>>>>> +        rol     r12d,30
>>>>>>>> 
>>>>>>>> +        add     edi,eax
>>>>>>>> 
>>>>>>>> +        mov     ebp,DWORD[40+r9]
>>>>>>>> 
>>>>>>>> +        mov     eax,r13d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[36+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,edi
>>>>>>>> 
>>>>>>>> +        bswap   ebp
>>>>>>>> 
>>>>>>>> +        xor     eax,r12d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        and     eax,r11d
>>>>>>>> 
>>>>>>>> +        lea     esi,[1518500249+rsi*1+rdx]
>>>>>>>> 
>>>>>>>> +        add     esi,ecx
>>>>>>>> 
>>>>>>>> +        xor     eax,r13d
>>>>>>>> 
>>>>>>>> +        rol     r11d,30
>>>>>>>> 
>>>>>>>> +        add     esi,eax
>>>>>>>> 
>>>>>>>> +        mov     r14d,DWORD[44+r9]
>>>>>>>> 
>>>>>>>> +        mov     eax,r12d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[40+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ecx,esi
>>>>>>>> 
>>>>>>>> +        bswap   r14d
>>>>>>>> 
>>>>>>>> +        xor     eax,r11d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        and     eax,edi
>>>>>>>> 
>>>>>>>> +        lea     r13d,[1518500249+r13*1+rbp]
>>>>>>>> 
>>>>>>>> +        add     r13d,ecx
>>>>>>>> 
>>>>>>>> +        xor     eax,r12d
>>>>>>>> 
>>>>>>>> +        rol     edi,30
>>>>>>>> 
>>>>>>>> +        add     r13d,eax
>>>>>>>> 
>>>>>>>> +        mov     edx,DWORD[48+r9]
>>>>>>>> 
>>>>>>>> +        mov     eax,r11d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[44+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ecx,r13d
>>>>>>>> 
>>>>>>>> +        bswap   edx
>>>>>>>> 
>>>>>>>> +        xor     eax,edi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        and     eax,esi
>>>>>>>> 
>>>>>>>> +        lea     r12d,[1518500249+r12*1+r14]
>>>>>>>> 
>>>>>>>> +        add     r12d,ecx
>>>>>>>> 
>>>>>>>> +        xor     eax,r11d
>>>>>>>> 
>>>>>>>> +        rol     esi,30
>>>>>>>> 
>>>>>>>> +        add     r12d,eax
>>>>>>>> 
>>>>>>>> +        mov     ebp,DWORD[52+r9]
>>>>>>>> 
>>>>>>>> +        mov     eax,edi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[48+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,r12d
>>>>>>>> 
>>>>>>>> +        bswap   ebp
>>>>>>>> 
>>>>>>>> +        xor     eax,esi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        and     eax,r13d
>>>>>>>> 
>>>>>>>> +        lea     r11d,[1518500249+r11*1+rdx]
>>>>>>>> 
>>>>>>>> +        add     r11d,ecx
>>>>>>>> 
>>>>>>>> +        xor     eax,edi
>>>>>>>> 
>>>>>>>> +        rol     r13d,30
>>>>>>>> 
>>>>>>>> +        add     r11d,eax
>>>>>>>> 
>>>>>>>> +        mov     r14d,DWORD[56+r9]
>>>>>>>> 
>>>>>>>> +        mov     eax,esi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[52+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ecx,r11d
>>>>>>>> 
>>>>>>>> +        bswap   r14d
>>>>>>>> 
>>>>>>>> +        xor     eax,r13d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        and     eax,r12d
>>>>>>>> 
>>>>>>>> +        lea     edi,[1518500249+rdi*1+rbp]
>>>>>>>> 
>>>>>>>> +        add     edi,ecx
>>>>>>>> 
>>>>>>>> +        xor     eax,esi
>>>>>>>> 
>>>>>>>> +        rol     r12d,30
>>>>>>>> 
>>>>>>>> +        add     edi,eax
>>>>>>>> 
>>>>>>>> +        mov     edx,DWORD[60+r9]
>>>>>>>> 
>>>>>>>> +        mov     eax,r13d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[56+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ecx,edi
>>>>>>>> 
>>>>>>>> +        bswap   edx
>>>>>>>> 
>>>>>>>> +        xor     eax,r12d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        and     eax,r11d
>>>>>>>> 
>>>>>>>> +        lea     esi,[1518500249+rsi*1+r14]
>>>>>>>> 
>>>>>>>> +        add     esi,ecx
>>>>>>>> 
>>>>>>>> +        xor     eax,r13d
>>>>>>>> 
>>>>>>>> +        rol     r11d,30
>>>>>>>> 
>>>>>>>> +        add     esi,eax
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r12d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[60+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r11d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,edi
>>>>>>>> 
>>>>>>>> +        lea     r13d,[1518500249+r13*1+rdx]
>>>>>>>> 
>>>>>>>> +        rol     edi,30
>>>>>>>> 
>>>>>>>> +        xor     eax,r12d
>>>>>>>> 
>>>>>>>> +        add     r13d,ecx
>>>>>>>> 
>>>>>>>> +        rol     ebp,1
>>>>>>>> 
>>>>>>>> +        add     r13d,eax
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r11d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ecx,r13d
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,edi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,esi
>>>>>>>> 
>>>>>>>> +        lea     r12d,[1518500249+r12*1+rbp]
>>>>>>>> 
>>>>>>>> +        rol     esi,30
>>>>>>>> 
>>>>>>>> +        xor     eax,r11d
>>>>>>>> 
>>>>>>>> +        add     r12d,ecx
>>>>>>>> 
>>>>>>>> +        rol     r14d,1
>>>>>>>> 
>>>>>>>> +        add     r12d,eax
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,edi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[4+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ecx,r12d
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,esi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,r13d
>>>>>>>> 
>>>>>>>> +        lea     r11d,[1518500249+r11*1+r14]
>>>>>>>> 
>>>>>>>> +        rol     r13d,30
>>>>>>>> 
>>>>>>>> +        xor     eax,edi
>>>>>>>> 
>>>>>>>> +        add     r11d,ecx
>>>>>>>> 
>>>>>>>> +        rol     edx,1
>>>>>>>> 
>>>>>>>> +        add     r11d,eax
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,esi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[8+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,r11d
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r13d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,r12d
>>>>>>>> 
>>>>>>>> +        lea     edi,[1518500249+rdi*1+rdx]
>>>>>>>> 
>>>>>>>> +        rol     r12d,30
>>>>>>>> 
>>>>>>>> +        xor     eax,esi
>>>>>>>> 
>>>>>>>> +        add     edi,ecx
>>>>>>>> 
>>>>>>>> +        rol     ebp,1
>>>>>>>> 
>>>>>>>> +        add     edi,eax
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r13d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[12+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r12d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,r11d
>>>>>>>> 
>>>>>>>> +        lea     esi,[1518500249+rsi*1+rbp]
>>>>>>>> 
>>>>>>>> +        rol     r11d,30
>>>>>>>> 
>>>>>>>> +        xor     eax,r13d
>>>>>>>> 
>>>>>>>> +        add     esi,ecx
>>>>>>>> 
>>>>>>>> +        rol     r14d,1
>>>>>>>> 
>>>>>>>> +        add     esi,eax
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,edi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[16+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r12d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[24+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,esi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[20+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,r13d
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r11d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[28+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r13d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[24+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ecx,r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,edi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[32+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r12d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[28+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ecx,r11d
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,esi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[36+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r11d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[32+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r13d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,edi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[36+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r12d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[44+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,esi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[40+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ecx,r13d
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r11d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[48+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r13d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[44+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,r12d
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,edi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[52+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r12d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[48+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ecx,r11d
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,esi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[56+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r11d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[52+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r13d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[60+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,edi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[56+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r12d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,esi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[60+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ecx,r13d
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r11d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[4+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r13d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ecx,r12d
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,edi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[8+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r12d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[4+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,r11d
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,esi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[12+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r11d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[8+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r13d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[16+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,edi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[12+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r12d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[20+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,esi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[16+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,r13d
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r11d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[24+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r13d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[20+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ecx,r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,edi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[28+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r12d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[24+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ecx,r11d
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,esi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[32+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r11d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[28+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r13d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[36+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r12d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[32+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ebx,r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,r11d
>>>>>>>> 
>>>>>>>> +        mov     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        lea     r13d,[((-1894007588))+r13*1+rbp]
>>>>>>>> 
>>>>>>>> +        xor     ebx,r11d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     r13d,eax
>>>>>>>> 
>>>>>>>> +        rol     r14d,1
>>>>>>>> 
>>>>>>>> +        and     ebx,edi
>>>>>>>> 
>>>>>>>> +        add     r13d,ecx
>>>>>>>> 
>>>>>>>> +        rol     edi,30
>>>>>>>> 
>>>>>>>> +        add     r13d,ebx
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r11d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[36+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ebx,r11d
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,edi
>>>>>>>> 
>>>>>>>> +        mov     ecx,r13d
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        lea     r12d,[((-1894007588))+r12*1+r14]
>>>>>>>> 
>>>>>>>> +        xor     ebx,edi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     r12d,eax
>>>>>>>> 
>>>>>>>> +        rol     edx,1
>>>>>>>> 
>>>>>>>> +        and     ebx,esi
>>>>>>>> 
>>>>>>>> +        add     r12d,ecx
>>>>>>>> 
>>>>>>>> +        rol     esi,30
>>>>>>>> 
>>>>>>>> +        add     r12d,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,edi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[40+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ebx,edi
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,esi
>>>>>>>> 
>>>>>>>> +        mov     ecx,r12d
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        lea     r11d,[((-1894007588))+r11*1+rdx]
>>>>>>>> 
>>>>>>>> +        xor     ebx,esi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     r11d,eax
>>>>>>>> 
>>>>>>>> +        rol     ebp,1
>>>>>>>> 
>>>>>>>> +        and     ebx,r13d
>>>>>>>> 
>>>>>>>> +        add     r11d,ecx
>>>>>>>> 
>>>>>>>> +        rol     r13d,30
>>>>>>>> 
>>>>>>>> +        add     r11d,ebx
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,esi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[44+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ebx,esi
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,r13d
>>>>>>>> 
>>>>>>>> +        mov     ecx,r11d
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        lea     edi,[((-1894007588))+rdi*1+rbp]
>>>>>>>> 
>>>>>>>> +        xor     ebx,r13d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     edi,eax
>>>>>>>> 
>>>>>>>> +        rol     r14d,1
>>>>>>>> 
>>>>>>>> +        and     ebx,r12d
>>>>>>>> 
>>>>>>>> +        add     edi,ecx
>>>>>>>> 
>>>>>>>> +        rol     r12d,30
>>>>>>>> 
>>>>>>>> +        add     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r13d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[48+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ebx,r13d
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,r12d
>>>>>>>> 
>>>>>>>> +        mov     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        lea     esi,[((-1894007588))+rsi*1+r14]
>>>>>>>> 
>>>>>>>> +        xor     ebx,r12d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     esi,eax
>>>>>>>> 
>>>>>>>> +        rol     edx,1
>>>>>>>> 
>>>>>>>> +        and     ebx,r11d
>>>>>>>> 
>>>>>>>> +        add     esi,ecx
>>>>>>>> 
>>>>>>>> +        rol     r11d,30
>>>>>>>> 
>>>>>>>> +        add     esi,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r12d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[52+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ebx,r12d
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,r11d
>>>>>>>> 
>>>>>>>> +        mov     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        lea     r13d,[((-1894007588))+r13*1+rdx]
>>>>>>>> 
>>>>>>>> +        xor     ebx,r11d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     r13d,eax
>>>>>>>> 
>>>>>>>> +        rol     ebp,1
>>>>>>>> 
>>>>>>>> +        and     ebx,edi
>>>>>>>> 
>>>>>>>> +        add     r13d,ecx
>>>>>>>> 
>>>>>>>> +        rol     edi,30
>>>>>>>> 
>>>>>>>> +        add     r13d,ebx
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r11d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[56+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ebx,r11d
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,edi
>>>>>>>> 
>>>>>>>> +        mov     ecx,r13d
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        lea     r12d,[((-1894007588))+r12*1+rbp]
>>>>>>>> 
>>>>>>>> +        xor     ebx,edi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     r12d,eax
>>>>>>>> 
>>>>>>>> +        rol     r14d,1
>>>>>>>> 
>>>>>>>> +        and     ebx,esi
>>>>>>>> 
>>>>>>>> +        add     r12d,ecx
>>>>>>>> 
>>>>>>>> +        rol     esi,30
>>>>>>>> 
>>>>>>>> +        add     r12d,ebx
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,edi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[60+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ebx,edi
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,esi
>>>>>>>> 
>>>>>>>> +        mov     ecx,r12d
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        lea     r11d,[((-1894007588))+r11*1+r14]
>>>>>>>> 
>>>>>>>> +        xor     ebx,esi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     r11d,eax
>>>>>>>> 
>>>>>>>> +        rol     edx,1
>>>>>>>> 
>>>>>>>> +        and     ebx,r13d
>>>>>>>> 
>>>>>>>> +        add     r11d,ecx
>>>>>>>> 
>>>>>>>> +        rol     r13d,30
>>>>>>>> 
>>>>>>>> +        add     r11d,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,esi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ebx,esi
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,r13d
>>>>>>>> 
>>>>>>>> +        mov     ecx,r11d
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        lea     edi,[((-1894007588))+rdi*1+rdx]
>>>>>>>> 
>>>>>>>> +        xor     ebx,r13d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     edi,eax
>>>>>>>> 
>>>>>>>> +        rol     ebp,1
>>>>>>>> 
>>>>>>>> +        and     ebx,r12d
>>>>>>>> 
>>>>>>>> +        add     edi,ecx
>>>>>>>> 
>>>>>>>> +        rol     r12d,30
>>>>>>>> 
>>>>>>>> +        add     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r13d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[4+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ebx,r13d
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,r12d
>>>>>>>> 
>>>>>>>> +        mov     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        lea     esi,[((-1894007588))+rsi*1+rbp]
>>>>>>>> 
>>>>>>>> +        xor     ebx,r12d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     esi,eax
>>>>>>>> 
>>>>>>>> +        rol     r14d,1
>>>>>>>> 
>>>>>>>> +        and     ebx,r11d
>>>>>>>> 
>>>>>>>> +        add     esi,ecx
>>>>>>>> 
>>>>>>>> +        rol     r11d,30
>>>>>>>> 
>>>>>>>> +        add     esi,ebx
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r12d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[8+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ebx,r12d
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,r11d
>>>>>>>> 
>>>>>>>> +        mov     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        lea     r13d,[((-1894007588))+r13*1+r14]
>>>>>>>> 
>>>>>>>> +        xor     ebx,r11d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     r13d,eax
>>>>>>>> 
>>>>>>>> +        rol     edx,1
>>>>>>>> 
>>>>>>>> +        and     ebx,edi
>>>>>>>> 
>>>>>>>> +        add     r13d,ecx
>>>>>>>> 
>>>>>>>> +        rol     edi,30
>>>>>>>> 
>>>>>>>> +        add     r13d,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r11d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[12+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ebx,r11d
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,edi
>>>>>>>> 
>>>>>>>> +        mov     ecx,r13d
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        lea     r12d,[((-1894007588))+r12*1+rdx]
>>>>>>>> 
>>>>>>>> +        xor     ebx,edi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     r12d,eax
>>>>>>>> 
>>>>>>>> +        rol     ebp,1
>>>>>>>> 
>>>>>>>> +        and     ebx,esi
>>>>>>>> 
>>>>>>>> +        add     r12d,ecx
>>>>>>>> 
>>>>>>>> +        rol     esi,30
>>>>>>>> 
>>>>>>>> +        add     r12d,ebx
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,edi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[16+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ebx,edi
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,esi
>>>>>>>> 
>>>>>>>> +        mov     ecx,r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        lea     r11d,[((-1894007588))+r11*1+rbp]
>>>>>>>> 
>>>>>>>> +        xor     ebx,esi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     r11d,eax
>>>>>>>> 
>>>>>>>> +        rol     r14d,1
>>>>>>>> 
>>>>>>>> +        and     ebx,r13d
>>>>>>>> 
>>>>>>>> +        add     r11d,ecx
>>>>>>>> 
>>>>>>>> +        rol     r13d,30
>>>>>>>> 
>>>>>>>> +        add     r11d,ebx
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,esi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[20+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ebx,esi
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,r13d
>>>>>>>> 
>>>>>>>> +        mov     ecx,r11d
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        lea     edi,[((-1894007588))+rdi*1+r14]
>>>>>>>> 
>>>>>>>> +        xor     ebx,r13d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     edi,eax
>>>>>>>> 
>>>>>>>> +        rol     edx,1
>>>>>>>> 
>>>>>>>> +        and     ebx,r12d
>>>>>>>> 
>>>>>>>> +        add     edi,ecx
>>>>>>>> 
>>>>>>>> +        rol     r12d,30
>>>>>>>> 
>>>>>>>> +        add     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r13d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[24+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ebx,r13d
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,r12d
>>>>>>>> 
>>>>>>>> +        mov     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        lea     esi,[((-1894007588))+rsi*1+rdx]
>>>>>>>> 
>>>>>>>> +        xor     ebx,r12d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     esi,eax
>>>>>>>> 
>>>>>>>> +        rol     ebp,1
>>>>>>>> 
>>>>>>>> +        and     ebx,r11d
>>>>>>>> 
>>>>>>>> +        add     esi,ecx
>>>>>>>> 
>>>>>>>> +        rol     r11d,30
>>>>>>>> 
>>>>>>>> +        add     esi,ebx
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r12d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[28+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ebx,r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,r11d
>>>>>>>> 
>>>>>>>> +        mov     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        lea     r13d,[((-1894007588))+r13*1+rbp]
>>>>>>>> 
>>>>>>>> +        xor     ebx,r11d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     r13d,eax
>>>>>>>> 
>>>>>>>> +        rol     r14d,1
>>>>>>>> 
>>>>>>>> +        and     ebx,edi
>>>>>>>> 
>>>>>>>> +        add     r13d,ecx
>>>>>>>> 
>>>>>>>> +        rol     edi,30
>>>>>>>> 
>>>>>>>> +        add     r13d,ebx
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r11d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[32+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ebx,r11d
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,edi
>>>>>>>> 
>>>>>>>> +        mov     ecx,r13d
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        lea     r12d,[((-1894007588))+r12*1+r14]
>>>>>>>> 
>>>>>>>> +        xor     ebx,edi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     r12d,eax
>>>>>>>> 
>>>>>>>> +        rol     edx,1
>>>>>>>> 
>>>>>>>> +        and     ebx,esi
>>>>>>>> 
>>>>>>>> +        add     r12d,ecx
>>>>>>>> 
>>>>>>>> +        rol     esi,30
>>>>>>>> 
>>>>>>>> +        add     r12d,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,edi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[36+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ebx,edi
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,esi
>>>>>>>> 
>>>>>>>> +        mov     ecx,r12d
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        lea     r11d,[((-1894007588))+r11*1+rdx]
>>>>>>>> 
>>>>>>>> +        xor     ebx,esi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     r11d,eax
>>>>>>>> 
>>>>>>>> +        rol     ebp,1
>>>>>>>> 
>>>>>>>> +        and     ebx,r13d
>>>>>>>> 
>>>>>>>> +        add     r11d,ecx
>>>>>>>> 
>>>>>>>> +        rol     r13d,30
>>>>>>>> 
>>>>>>>> +        add     r11d,ebx
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,esi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[40+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ebx,esi
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,r13d
>>>>>>>> 
>>>>>>>> +        mov     ecx,r11d
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        lea     edi,[((-1894007588))+rdi*1+rbp]
>>>>>>>> 
>>>>>>>> +        xor     ebx,r13d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     edi,eax
>>>>>>>> 
>>>>>>>> +        rol     r14d,1
>>>>>>>> 
>>>>>>>> +        and     ebx,r12d
>>>>>>>> 
>>>>>>>> +        add     edi,ecx
>>>>>>>> 
>>>>>>>> +        rol     r12d,30
>>>>>>>> 
>>>>>>>> +        add     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r13d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[44+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ebx,r13d
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        and     eax,r12d
>>>>>>>> 
>>>>>>>> +        mov     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        lea     esi,[((-1894007588))+rsi*1+r14]
>>>>>>>> 
>>>>>>>> +        xor     ebx,r12d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     esi,eax
>>>>>>>> 
>>>>>>>> +        rol     edx,1
>>>>>>>> 
>>>>>>>> +        and     ebx,r11d
>>>>>>>> 
>>>>>>>> +        add     esi,ecx
>>>>>>>> 
>>>>>>>> +        rol     r11d,30
>>>>>>>> 
>>>>>>>> +        add     esi,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,edi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[48+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r12d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[56+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,esi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[52+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ecx,r13d
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r11d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[60+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r13d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[56+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ecx,r12d
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,edi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r12d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[60+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,r11d
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,esi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[4+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r11d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r13d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[8+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,edi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[4+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r12d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[12+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,esi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[8+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,r13d
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r11d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[16+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r13d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[12+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ecx,r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,edi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[20+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r12d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[16+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ecx,r11d
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,esi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[24+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r11d
>>>>>>>> 
>>>>>>>> +        mov     DWORD[20+rsp],edx
>>>>>>>> 
>>>>>>>> +        mov     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r13d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[28+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,edi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[24+rsp],ebp
>>>>>>>> 
>>>>>>>> +        mov     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r12d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[32+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,esi
>>>>>>>> 
>>>>>>>> +        mov     DWORD[28+rsp],r14d
>>>>>>>> 
>>>>>>>> +        mov     ecx,r13d
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r11d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[36+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     ecx,r12d
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,edi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     ecx,r11d
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,esi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[44+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r13d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[48+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,edi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r12d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[52+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,esi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     ecx,r13d
>>>>>>>> 
>>>>>>>> +        xor     r14d,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,r11d
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[56+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     ecx,r12d
>>>>>>>> 
>>>>>>>> +        xor     edx,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,edi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        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[60+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     ecx,r11d
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        xor     eax,esi
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        xor     ebp,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        lea     edi,[((-899497514))+rdi*1+rdx]
>>>>>>>> 
>>>>>>>> +        xor     eax,r13d
>>>>>>>> 
>>>>>>>> +        add     edi,ecx
>>>>>>>> 
>>>>>>>> +        rol     r12d,30
>>>>>>>> 
>>>>>>>> +        add     edi,eax
>>>>>>>> 
>>>>>>>> +        rol     ebp,1
>>>>>>>> 
>>>>>>>> +        mov     eax,r11d
>>>>>>>> 
>>>>>>>> +        mov     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     eax,r13d
>>>>>>>> 
>>>>>>>> +        lea     esi,[((-899497514))+rsi*1+rbp]
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        xor     eax,r12d
>>>>>>>> 
>>>>>>>> +        add     esi,ecx
>>>>>>>> 
>>>>>>>> +        rol     r11d,30
>>>>>>>> 
>>>>>>>> +        add     esi,eax
>>>>>>>> 
>>>>>>>> +        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,[64+r9]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$loop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +sha1_block_data_order_shaext:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_sha1_block_data_order_shaext:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +_shaext_shortcut:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[((-72))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-8-64)+rax],xmm6
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-8-48)+rax],xmm7
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-8-32)+rax],xmm8
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-8-16)+rax],xmm9
>>>>>>>> 
>>>>>>>> +$L$prologue_shaext:
>>>>>>>> 
>>>>>>>> +        movdqu  xmm0,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[((K_XX_XX+160))]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  xmm4,XMMWORD[rsi]
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,27
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[16+rsi]
>>>>>>>> 
>>>>>>>> +        pshufd  xmm1,xmm1,27
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[32+rsi]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,227
>>>>>>>> 
>>>>>>>> +        movdqu  xmm7,XMMWORD[48+rsi]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,235
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,243
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm1
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,251
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_shaext
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$oop_shaext:
>>>>>>>> 
>>>>>>>> +        dec     rdx
>>>>>>>> 
>>>>>>>> +        lea     r8,[64+rsi]
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm4
>>>>>>>> 
>>>>>>>> +        cmovne  rsi,r8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,56,201,229
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,0
>>>>>>>> 
>>>>>>>> +DB      15,56,200,213
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +DB      15,56,201,238
>>>>>>>> 
>>>>>>>> +DB      15,56,202,231
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,0
>>>>>>>> 
>>>>>>>> +DB      15,56,200,206
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm7
>>>>>>>> 
>>>>>>>> +DB      15,56,202,236
>>>>>>>> 
>>>>>>>> +DB      15,56,201,247
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,0
>>>>>>>> 
>>>>>>>> +DB      15,56,200,215
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>> 
>>>>>>>> +DB      15,56,201,252
>>>>>>>> 
>>>>>>>> +DB      15,56,202,245
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,0
>>>>>>>> 
>>>>>>>> +DB      15,56,200,204
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm5
>>>>>>>> 
>>>>>>>> +DB      15,56,202,254
>>>>>>>> 
>>>>>>>> +DB      15,56,201,229
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,0
>>>>>>>> 
>>>>>>>> +DB      15,56,200,213
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +DB      15,56,201,238
>>>>>>>> 
>>>>>>>> +DB      15,56,202,231
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,1
>>>>>>>> 
>>>>>>>> +DB      15,56,200,206
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm7
>>>>>>>> 
>>>>>>>> +DB      15,56,202,236
>>>>>>>> 
>>>>>>>> +DB      15,56,201,247
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,1
>>>>>>>> 
>>>>>>>> +DB      15,56,200,215
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>> 
>>>>>>>> +DB      15,56,201,252
>>>>>>>> 
>>>>>>>> +DB      15,56,202,245
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,1
>>>>>>>> 
>>>>>>>> +DB      15,56,200,204
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm5
>>>>>>>> 
>>>>>>>> +DB      15,56,202,254
>>>>>>>> 
>>>>>>>> +DB      15,56,201,229
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,1
>>>>>>>> 
>>>>>>>> +DB      15,56,200,213
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +DB      15,56,201,238
>>>>>>>> 
>>>>>>>> +DB      15,56,202,231
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,1
>>>>>>>> 
>>>>>>>> +DB      15,56,200,206
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm7
>>>>>>>> 
>>>>>>>> +DB      15,56,202,236
>>>>>>>> 
>>>>>>>> +DB      15,56,201,247
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,2
>>>>>>>> 
>>>>>>>> +DB      15,56,200,215
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>> 
>>>>>>>> +DB      15,56,201,252
>>>>>>>> 
>>>>>>>> +DB      15,56,202,245
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,2
>>>>>>>> 
>>>>>>>> +DB      15,56,200,204
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm5
>>>>>>>> 
>>>>>>>> +DB      15,56,202,254
>>>>>>>> 
>>>>>>>> +DB      15,56,201,229
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,2
>>>>>>>> 
>>>>>>>> +DB      15,56,200,213
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +DB      15,56,201,238
>>>>>>>> 
>>>>>>>> +DB      15,56,202,231
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,2
>>>>>>>> 
>>>>>>>> +DB      15,56,200,206
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm7
>>>>>>>> 
>>>>>>>> +DB      15,56,202,236
>>>>>>>> 
>>>>>>>> +DB      15,56,201,247
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,2
>>>>>>>> 
>>>>>>>> +DB      15,56,200,215
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm4
>>>>>>>> 
>>>>>>>> +DB      15,56,201,252
>>>>>>>> 
>>>>>>>> +DB      15,56,202,245
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,3
>>>>>>>> 
>>>>>>>> +DB      15,56,200,204
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm5
>>>>>>>> 
>>>>>>>> +DB      15,56,202,254
>>>>>>>> 
>>>>>>>> +        movdqu  xmm4,XMMWORD[rsi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,3
>>>>>>>> 
>>>>>>>> +DB      15,56,200,213
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[16+rsi]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,227
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,3
>>>>>>>> 
>>>>>>>> +DB      15,56,200,206
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[32+rsi]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,235
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,193,3
>>>>>>>> 
>>>>>>>> +DB      15,56,200,215
>>>>>>>> 
>>>>>>>> +        movdqu  xmm7,XMMWORD[48+rsi]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,243
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +DB      15,58,204,194,3
>>>>>>>> 
>>>>>>>> +DB      65,15,56,200,201
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,251
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_shaext
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,27
>>>>>>>> 
>>>>>>>> +        pshufd  xmm1,xmm1,27
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rdi],xmm0
>>>>>>>> 
>>>>>>>> +        movd    DWORD[16+rdi],xmm1
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[((-8-64))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[((-8-48))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[((-8-32))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[((-8-16))+rax]
>>>>>>>> 
>>>>>>>> +        mov     rsp,rax
>>>>>>>> 
>>>>>>>> +$L$epilogue_shaext:
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$SEH_end_sha1_block_data_order_shaext:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +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:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +_ssse3_shortcut:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r11,rsp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[((-160))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-40-96)+r11],xmm6
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-40-80)+r11],xmm7
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-40-64)+r11],xmm8
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-40-48)+r11],xmm9
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-40-32)+r11],xmm10
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-40-16)+r11],xmm11
>>>>>>>> 
>>>>>>>> +$L$prologue_ssse3:
>>>>>>>> 
>>>>>>>> +        and     rsp,-64
>>>>>>>> 
>>>>>>>> +        mov     r8,rdi
>>>>>>>> 
>>>>>>>> +        mov     r9,rsi
>>>>>>>> 
>>>>>>>> +        mov     r10,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        shl     r10,6
>>>>>>>> 
>>>>>>>> +        add     r10,r9
>>>>>>>> 
>>>>>>>> +        lea     r14,[((K_XX_XX+64))]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[16+r8]
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        and     esi,edi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,XMMWORD[64+r14]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,XMMWORD[((-64))+r14]
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +        add     r9,64
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,222
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[rsp],xmm0
>>>>>>>> 
>>>>>>>> +        psubd   xmm0,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm1
>>>>>>>> 
>>>>>>>> +        psubd   xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm2
>>>>>>>> 
>>>>>>>> +        psubd   xmm2,xmm9
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_ssse3
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$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[rsp]
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,esi
>>>>>>>> 
>>>>>>>> +        psrldq  xmm8,4
>>>>>>>> 
>>>>>>>> +        and     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm2
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        mov     esi,ebp
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm8
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm9
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        and     esi,eax
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm4
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        pslldq  xmm10,12
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        psrld   xmm8,31
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,esi
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>> 
>>>>>>>> +        and     edi,ebp
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,30
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        por     xmm4,xmm8
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        mov     esi,ecx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        pslld   xmm9,2
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm10
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,XMMWORD[((-64))+r14]
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        and     esi,edx
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm9
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        pshufd  xmm5,xmm1,238
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm5,xmm2
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,esi
>>>>>>>> 
>>>>>>>> +        psrldq  xmm9,4
>>>>>>>> 
>>>>>>>> +        and     edi,ecx
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm3
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        mov     esi,eax
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm9
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[rsp],xmm10
>>>>>>>> 
>>>>>>>> +        add     ebp,edi
>>>>>>>> 
>>>>>>>> +        and     esi,ebx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm5
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm5
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        pslldq  xmm8,12
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm5
>>>>>>>> 
>>>>>>>> +        mov     edi,ebp
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,31
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,esi
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>>> 
>>>>>>>> +        and     edi,eax
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        psrld   xmm8,30
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        por     xmm5,xmm9
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        mov     esi,edx
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        pslld   xmm10,2
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm8
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,XMMWORD[((-32))+r14]
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,edi
>>>>>>>> 
>>>>>>>> +        and     esi,ebp
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm10
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        pshufd  xmm6,xmm2,238
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm5
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm6,xmm3
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        psrldq  xmm10,4
>>>>>>>> 
>>>>>>>> +        and     edi,edx
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm2
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm4
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        mov     esi,ebx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm8
>>>>>>>> 
>>>>>>>> +        add     eax,edi
>>>>>>>> 
>>>>>>>> +        and     esi,ecx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm6
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm6
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        pslldq  xmm9,12
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm6
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,31
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,esi
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        and     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,30
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        por     xmm6,xmm10
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        mov     esi,ebp
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        pslld   xmm8,2
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm9
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,XMMWORD[((-32))+r14]
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        and     esi,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm8
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        pshufd  xmm7,xmm3,238
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm6
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm7,xmm4
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,esi
>>>>>>>> 
>>>>>>>> +        psrldq  xmm8,4
>>>>>>>> 
>>>>>>>> +        and     edi,ebp
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm3
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm5
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        mov     esi,ecx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm8
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm9
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        and     esi,edx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm7
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        pslldq  xmm10,12
>>>>>>>> 
>>>>>>>> +        paddd   xmm7,xmm7
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        psrld   xmm8,31
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,esi
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>>> 
>>>>>>>> +        and     edi,ecx
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,30
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        por     xmm7,xmm8
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        mov     esi,eax
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        pslld   xmm9,2
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,XMMWORD[((-32))+r14]
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,edi
>>>>>>>> 
>>>>>>>> +        and     esi,ebx
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm9
>>>>>>>> 
>>>>>>>> +        pshufd  xmm9,xmm6,238
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        mov     edi,ebp
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        add     edx,esi
>>>>>>>> 
>>>>>>>> +        and     edi,eax
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm9
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        mov     esi,edx
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm0
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm10
>>>>>>>> 
>>>>>>>> +        add     ecx,edi
>>>>>>>> 
>>>>>>>> +        and     esi,ebp
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        pslld   xmm0,2
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,30
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        por     xmm0,xmm9
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        pshufd  xmm10,xmm7,238
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        and     edi,edx
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        mov     esi,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm10,xmm0
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        add     ebp,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm0
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm10
>>>>>>>> 
>>>>>>>> +        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[rsp],xmm8
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,2
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,30
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        por     xmm1,xmm10
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        pshufd  xmm8,xmm0,238
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        mov     esi,ecx
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm6
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm8,xmm1
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>> 
>>>>>>>> +        add     eax,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,XMMWORD[r14]
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm1
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm8
>>>>>>>> 
>>>>>>>> +        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[16+rsp],xmm9
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,2
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        mov     edi,ebp
>>>>>>>> 
>>>>>>>> +        psrld   xmm8,30
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        por     xmm2,xmm8
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        pshufd  xmm9,xmm1,238
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        mov     esi,edx
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm7
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm9,xmm2
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm2
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm9
>>>>>>>> 
>>>>>>>> +        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[32+rsp],xmm10
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        pslld   xmm3,2
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,30
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        por     xmm3,xmm9
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        pshufd  xmm10,xmm2,238
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        mov     esi,ebp
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm10,xmm3
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        add     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm3
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm10
>>>>>>>> 
>>>>>>>> +        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[48+rsp],xmm8
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        pslld   xmm4,2
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,30
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        por     xmm4,xmm10
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        pshufd  xmm8,xmm3,238
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        mov     esi,eax
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm8,xmm4
>>>>>>>> 
>>>>>>>> +        mov     edi,ebp
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm6
>>>>>>>> 
>>>>>>>> +        add     edx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm9
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm4
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm8
>>>>>>>> 
>>>>>>>> +        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[rsp],xmm9
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        pslld   xmm5,2
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        psrld   xmm8,30
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        por     xmm5,xmm8
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        pshufd  xmm9,xmm4,238
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        mov     esi,ebx
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm2
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        and     esi,ecx
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm9,xmm5
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,esi
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm5
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm9
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        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[16+rsp],xmm10
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        pslld   xmm6,2
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,30
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        and     esi,eax
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        por     xmm6,xmm9
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        pshufd  xmm10,xmm5,238
>>>>>>>> 
>>>>>>>> +        add     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        and     edi,ebp
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        mov     esi,ecx
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm3
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        and     esi,edx
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm10,xmm6
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm0
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,esi
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,XMMWORD[32+r14]
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm6
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        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[32+rsp],xmm8
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        pslld   xmm7,2
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,30
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        and     esi,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        por     xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        mov     edi,ebp
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        pshufd  xmm8,xmm6,238
>>>>>>>> 
>>>>>>>> +        add     edx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        and     edi,eax
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        mov     esi,edx
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        and     esi,ebp
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm8,xmm7
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm9
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm8
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        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[48+rsp],xmm9
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        pslld   xmm0,2
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        psrld   xmm8,30
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        and     esi,ecx
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        por     xmm0,xmm8
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        pshufd  xmm9,xmm7,238
>>>>>>>> 
>>>>>>>> +        add     ebp,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        and     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        mov     esi,ebp
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        and     esi,eax
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm9,xmm0
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,esi
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm0
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        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[rsp],xmm10
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,2
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        psrld   xmm9,30
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        and     esi,edx
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        por     xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        pshufd  xmm10,xmm0,238
>>>>>>>> 
>>>>>>>> +        add     eax,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        and     edi,ecx
>>>>>>>> 
>>>>>>>> +        xor     ecx,edx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        mov     esi,eax
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm6
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        and     esi,ebx
>>>>>>>> 
>>>>>>>> +        xor     ebx,ecx
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm10,xmm1
>>>>>>>> 
>>>>>>>> +        mov     edi,ebp
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm3
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,esi
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm1
>>>>>>>> 
>>>>>>>> +        xor     eax,ebx
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        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[16+rsp],xmm8
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,2
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        psrld   xmm10,30
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        and     esi,ebp
>>>>>>>> 
>>>>>>>> +        xor     ebp,eax
>>>>>>>> 
>>>>>>>> +        por     xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        pshufd  xmm8,xmm1,238
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        and     edi,edx
>>>>>>>> 
>>>>>>>> +        xor     edx,ebp
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        mov     esi,ebx
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm7
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm8,xmm2
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        add     ebp,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm9
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm2
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm8
>>>>>>>> 
>>>>>>>> +        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[32+rsp],xmm9
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        pslld   xmm3,2
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        psrld   xmm8,30
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        por     xmm3,xmm8
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        mov     esi,ecx
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm3
>>>>>>>> 
>>>>>>>> +        add     eax,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm10
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        mov     esi,eax
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        mov     edi,ebp
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        mov     esi,edx
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        cmp     r9,r10
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$done_ssse3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,XMMWORD[64+r14]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,XMMWORD[((-64))+r14]
>>>>>>>> 
>>>>>>>> +        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[16+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,206
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm9
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        mov     esi,ebx
>>>>>>>> 
>>>>>>>> +        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[24+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        mov     esi,ebp
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,214
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        mov     esi,ecx
>>>>>>>> 
>>>>>>>> +        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[40+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        mov     esi,eax
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        mov     edi,ebp
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,222
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm9
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        mov     esi,edx
>>>>>>>> 
>>>>>>>> +        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[56+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        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[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[8+r8],ecx
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        mov     DWORD[12+r8],edx
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        mov     DWORD[16+r8],ebp
>>>>>>>> 
>>>>>>>> +        and     esi,edi
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_ssse3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$done_ssse3:
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        mov     esi,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        mov     esi,ebp
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        mov     esi,ecx
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,edx
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        rol     ebx,5
>>>>>>>> 
>>>>>>>> +        add     eax,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        ror     ecx,7
>>>>>>>> 
>>>>>>>> +        add     eax,ebx
>>>>>>>> 
>>>>>>>> +        add     ebp,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        mov     esi,eax
>>>>>>>> 
>>>>>>>> +        rol     eax,5
>>>>>>>> 
>>>>>>>> +        add     ebp,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,ecx
>>>>>>>> 
>>>>>>>> +        ror     ebx,7
>>>>>>>> 
>>>>>>>> +        add     ebp,eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ebx
>>>>>>>> 
>>>>>>>> +        mov     edi,ebp
>>>>>>>> 
>>>>>>>> +        rol     ebp,5
>>>>>>>> 
>>>>>>>> +        add     edx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        ror     eax,7
>>>>>>>> 
>>>>>>>> +        add     edx,ebp
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        mov     esi,edx
>>>>>>>> 
>>>>>>>> +        rol     edx,5
>>>>>>>> 
>>>>>>>> +        add     ecx,edi
>>>>>>>> 
>>>>>>>> +        xor     esi,eax
>>>>>>>> 
>>>>>>>> +        ror     ebp,7
>>>>>>>> 
>>>>>>>> +        add     ecx,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        xor     esi,ebp
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +        rol     ecx,5
>>>>>>>> 
>>>>>>>> +        add     ebx,esi
>>>>>>>> 
>>>>>>>> +        xor     edi,ebp
>>>>>>>> 
>>>>>>>> +        ror     edx,7
>>>>>>>> 
>>>>>>>> +        add     ebx,ecx
>>>>>>>> 
>>>>>>>> +        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[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))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[((-40-80))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[((-40-64))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[((-40-48))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,XMMWORD[((-40-32))+r11]
>>>>>>>> 
>>>>>>>> +        movaps  xmm11,XMMWORD[((-40-16))+r11]
>>>>>>>> 
>>>>>>>> +        mov     r14,QWORD[((-40))+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[((-32))+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[((-24))+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rbp,QWORD[((-16))+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[((-8))+r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[r11]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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:
>>>>>>>> 
>>>>>>>> +ALIGN   64
>>>>>>>> 
>>>>>>>> +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
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +se_handler:
>>>>>>>> 
>>>>>>>> +        push    rsi
>>>>>>>> 
>>>>>>>> +        push    rdi
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +        pushfq
>>>>>>>> 
>>>>>>>> +        sub     rsp,64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r10,[$L$prologue]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r10,[$L$epilogue]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[64+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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     NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +shaext_handler:
>>>>>>>> 
>>>>>>>> +        push    rsi
>>>>>>>> 
>>>>>>>> +        push    rdi
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +        pushfq
>>>>>>>> 
>>>>>>>> +        sub     rsp,64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r10,[$L$prologue_shaext]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r10,[$L$epilogue_shaext]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsi,[((-8-64))+rax]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>> 
>>>>>>>> +        mov     ecx,8
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +ssse3_handler:
>>>>>>>> 
>>>>>>>> +        push    rsi
>>>>>>>> 
>>>>>>>> +        push    rdi
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +        pushfq
>>>>>>>> 
>>>>>>>> +        sub     rsp,64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>> 
>>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[208+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsi,[((-40-96))+rax]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>> 
>>>>>>>> +        mov     ecx,12
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[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[40+r9]
>>>>>>>> 
>>>>>>>> +        mov     rsi,r8
>>>>>>>> 
>>>>>>>> +        mov     ecx,154
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,r9
>>>>>>>> 
>>>>>>>> +        xor     rcx,rcx
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +        popfq
>>>>>>>> 
>>>>>>>> +        pop     r15
>>>>>>>> 
>>>>>>>> +        pop     r14
>>>>>>>> 
>>>>>>>> +        pop     r13
>>>>>>>> 
>>>>>>>> +        pop     r12
>>>>>>>> 
>>>>>>>> +        pop     rbp
>>>>>>>> 
>>>>>>>> +        pop     rbx
>>>>>>>> 
>>>>>>>> +        pop     rdi
>>>>>>>> 
>>>>>>>> +        pop     rsi
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +section .pdata rdata align=4
>>>>>>>> 
>>>>>>>> +ALIGN   4
>>>>>>>> 
>>>>>>>> +        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_shaext wrt
>>>>> ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_end_sha1_block_data_order_shaext wrt
>>>>> ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_info_sha1_block_data_order_shaext 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:
>>>>>>>> 
>>>>>>>> +DB      9,0,0,0
>>>>>>>> 
>>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>>> 
>>>>>>>> +$L$SEH_info_sha1_block_data_order_shaext:
>>>>>>>> 
>>>>>>>> +DB      9,0,0,0
>>>>>>>> 
>>>>>>>> +        DD      shaext_handler wrt ..imagebase
>>>>>>>> 
>>>>>>>> +$L$SEH_info_sha1_block_data_order_ssse3:
>>>>>>>> 
>>>>>>>> +DB      9,0,0,0
>>>>>>>> 
>>>>>>>> +        DD      ssse3_handler wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
>>>>>>>> wrt ..imagebase
>>>>>>>> 
>>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
>>>>>>>> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
>>>> mb-
>>>>>>>> x86_64.nasm
>>>>>>>> new file mode 100644
>>>>>>>> index 0000000000..7cd5eae85c
>>>>>>>> --- /dev/null
>>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
>>>>>> x86_64.nasm
>>>>>>>> @@ -0,0 +1,3461 @@
>>>>>>>> +; WARNING: do not edit!
>>>>>>>> 
>>>>>>>> +; Generated from openssl/crypto/sha/asm/sha256-mb-x86_64.pl
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
>>>>> Reserved.
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>> 
>>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>>> copy
>>>>>>>> 
>>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>> 
>>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +default rel
>>>>>>>> 
>>>>>>>> +%define XMMWORD
>>>>>>>> 
>>>>>>>> +%define YMMWORD
>>>>>>>> 
>>>>>>>> +%define ZMMWORD
>>>>>>>> 
>>>>>>>> +section .text code align=64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  sha256_multi_block
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +sha256_multi_block:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_sha256_multi_block:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
>>>>>>>> 
>>>>>>>> +        bt      rcx,61
>>>>>>>> 
>>>>>>>> +        jc      NEAR _shaext_shortcut
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-120)+rax],xmm10
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-104)+rax],xmm11
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-88)+rax],xmm12
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-72)+rax],xmm13
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-56)+rax],xmm14
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-40)+rax],xmm15
>>>>>>>> 
>>>>>>>> +        sub     rsp,288
>>>>>>>> 
>>>>>>>> +        and     rsp,-256
>>>>>>>> 
>>>>>>>> +        mov     QWORD[272+rsp],rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$body:
>>>>>>>> 
>>>>>>>> +        lea     rbp,[((K256+128))]
>>>>>>>> 
>>>>>>>> +        lea     rbx,[256+rsp]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[128+rdi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$oop_grande:
>>>>>>>> 
>>>>>>>> +        mov     DWORD[280+rsp],edx
>>>>>>>> 
>>>>>>>> +        xor     edx,edx
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[rsi]
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[8+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        mov     DWORD[rbx],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r8,rbp
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[16+rsi]
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[24+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        mov     DWORD[4+rbx],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r9,rbp
>>>>>>>> 
>>>>>>>> +        mov     r10,QWORD[32+rsi]
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[40+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        mov     DWORD[8+rbx],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r10,rbp
>>>>>>>> 
>>>>>>>> +        mov     r11,QWORD[48+rsi]
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[56+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        mov     DWORD[12+rbx],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r11,rbp
>>>>>>>> 
>>>>>>>> +        test    edx,edx
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$done
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  xmm8,XMMWORD[((0-128))+rdi]
>>>>>>>> 
>>>>>>>> +        lea     rax,[128+rsp]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm9,XMMWORD[((32-128))+rdi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm10,XMMWORD[((64-128))+rdi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm11,XMMWORD[((96-128))+rdi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm12,XMMWORD[((128-128))+rdi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm13,XMMWORD[((160-128))+rdi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm14,XMMWORD[((192-128))+rdi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm15,XMMWORD[((224-128))+rdi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[$L$pbswap]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$oop:
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm9
>>>>>>>> 
>>>>>>>> +        movd    xmm5,DWORD[r8]
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[r9]
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[r10]
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,238
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((-128))+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm14
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm15,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm15,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm5,DWORD[4+r8]
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[4+r9]
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[4+r10]
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[4+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,238
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((-96))+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm13
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm5,DWORD[8+r8]
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[8+r9]
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[8+r10]
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[8+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,238
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((-64))+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm12
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm15
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm5,DWORD[12+r8]
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[12+r9]
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[12+r10]
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[12+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,238
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((-32))+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm11
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm5,DWORD[16+r8]
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[16+r9]
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[16+r10]
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[16+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,238
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm11,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm15,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm5,DWORD[20+r8]
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[20+r9]
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[20+r10]
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[20+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,238
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[32+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm9
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm5,DWORD[24+r8]
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[24+r9]
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[24+r10]
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[24+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,238
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[64+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm8
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm15
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm5,DWORD[28+r8]
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[28+r9]
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[28+r10]
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[28+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,238
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[96+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm7
>>>>>>>> 
>>>>>>>> +        lea     rbp,[256+rbp]
>>>>>>>> 
>>>>>>>> +        movd    xmm5,DWORD[32+r8]
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[32+r9]
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[32+r10]
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[32+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,238
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(128-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((-128))+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm14
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm15,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm15,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm5,DWORD[36+r8]
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[36+r9]
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[36+r10]
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[36+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,238
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(144-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((-96))+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm13
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm5,DWORD[40+r8]
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[40+r9]
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[40+r10]
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[40+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,238
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(160-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((-64))+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm12
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm15
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm5,DWORD[44+r8]
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[44+r9]
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[44+r10]
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[44+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,238
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(176-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((-32))+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm11
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm5,DWORD[48+r8]
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[48+r9]
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[48+r10]
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[48+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,238
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(192-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm11,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm15,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm5,DWORD[52+r8]
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[52+r9]
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[52+r10]
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[52+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,238
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(208-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[32+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm9
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm5,DWORD[56+r8]
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[56+r9]
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[56+r10]
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[56+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,238
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(224-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[64+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm8
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm15
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        movd    xmm5,DWORD[60+r8]
>>>>>>>> 
>>>>>>>> +        lea     r8,[64+r8]
>>>>>>>> 
>>>>>>>> +        movd    xmm0,DWORD[60+r9]
>>>>>>>> 
>>>>>>>> +        lea     r9,[64+r9]
>>>>>>>> 
>>>>>>>> +        movd    xmm1,DWORD[60+r10]
>>>>>>>> 
>>>>>>>> +        lea     r10,[64+r10]
>>>>>>>> 
>>>>>>>> +        movd    xmm2,DWORD[60+r11]
>>>>>>>> 
>>>>>>>> +        lea     r11,[64+r11]
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,238
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(240-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[96+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm13
>>>>>>>> 
>>>>>>>> +        prefetcht0      [63+r8]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        prefetcht0      [63+r9]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        prefetcht0      [63+r10]
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        prefetcht0      [63+r11]
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm7
>>>>>>>> 
>>>>>>>> +        lea     rbp,[256+rbp]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[((0-128))+rax]
>>>>>>>> 
>>>>>>>> +        mov     ecx,3
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_16_xx
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$oop_16_xx:
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,XMMWORD[((16-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((144-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((224-128))+rax]
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,18-7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,25-14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm0,10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,17
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,13
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,19-17
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,15-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((-128))+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm14
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm15,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm15,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,XMMWORD[((32-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,XMMWORD[((160-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((240-128))+rax]
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,18-7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,25-14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm0,10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,17
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,13
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,19-17
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,15-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,XMMWORD[((-96))+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm13
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,XMMWORD[((48-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((176-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((0-128))+rax]
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,18-7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,25-14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm0,10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,17
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,13
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,19-17
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,15-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((-64))+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm12
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm15
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,XMMWORD[((64-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,XMMWORD[((192-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((16-128))+rax]
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,18-7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,25-14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm0,10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,17
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,13
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,19-17
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,15-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,XMMWORD[((-32))+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm11
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,XMMWORD[((80-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((208-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((32-128))+rax]
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,18-7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,25-14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm0,10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,17
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,13
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,19-17
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,15-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm11,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm15,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,XMMWORD[((96-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,XMMWORD[((224-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((48-128))+rax]
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,18-7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,25-14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm0,10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,17
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,13
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,19-17
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,15-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,XMMWORD[32+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm9
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,XMMWORD[((112-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((240-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((64-128))+rax]
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,18-7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,25-14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm0,10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,17
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,13
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,19-17
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,15-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[64+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm8
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm15
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,XMMWORD[((128-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,XMMWORD[((0-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((80-128))+rax]
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,18-7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,25-14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm0,10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,17
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,13
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,19-17
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,15-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,XMMWORD[96+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm7
>>>>>>>> 
>>>>>>>> +        lea     rbp,[256+rbp]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,XMMWORD[((144-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((16-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((96-128))+rax]
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,18-7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,25-14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm0,10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,17
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,13
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,19-17
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,15-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(128-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((-128))+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm14
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm15,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm15,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm15,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,XMMWORD[((160-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,XMMWORD[((32-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((112-128))+rax]
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,18-7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,25-14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm0,10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,17
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,13
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,19-17
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,15-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(144-128)+rax],xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,XMMWORD[((-96))+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm13
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm14,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,XMMWORD[((176-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((48-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((128-128))+rax]
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,18-7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,25-14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm0,10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,17
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,13
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,19-17
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,15-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(160-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((-64))+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm12
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm15
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm13,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,XMMWORD[((192-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,XMMWORD[((64-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((144-128))+rax]
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,18-7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,25-14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm0,10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,17
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,13
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,19-17
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,15-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(176-128)+rax],xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,XMMWORD[((-32))+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm11
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm12,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm12,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,XMMWORD[((208-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((80-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((160-128))+rax]
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,18-7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,25-14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm0,10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,17
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,13
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,19-17
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,15-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(192-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm11,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm11,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm15,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,XMMWORD[((224-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,XMMWORD[((96-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((176-128))+rax]
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,18-7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,25-14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm0,10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,17
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,13
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,19-17
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,15-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(208-128)+rax],xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,XMMWORD[32+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm15
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm9
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm8
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm12
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm10,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,XMMWORD[((240-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[((112-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((192-128))+rax]
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,18-7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,25-14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm0,10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,17
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,13
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        psrld   xmm3,19-17
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,15-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(224-128)+rax],xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,XMMWORD[64+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm14
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm8
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm15
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm9,xmm4
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm5
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm5
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,XMMWORD[((0-128))+rax]
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,XMMWORD[((128-128))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((208-128))+rax]
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,18-7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,25-14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        psrld   xmm0,10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,17
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,13
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,19-17
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        pslld   xmm1,15-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,7
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[(240-128)+rax],xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,11
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,21-7
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,XMMWORD[96+rbp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,25-11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,26-21
>>>>>>>> 
>>>>>>>> +        pandn   xmm0,xmm15
>>>>>>>> 
>>>>>>>> +        pand    xmm4,xmm14
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>>> 
>>>>>>>> +        psrld   xmm1,2
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,10
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,19-10
>>>>>>>> 
>>>>>>>> +        pand    xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,22-13
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>>> 
>>>>>>>> +        pslld   xmm2,30-19
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm6
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm7
>>>>>>>> 
>>>>>>>> +        lea     rbp,[256+rbp]
>>>>>>>> 
>>>>>>>> +        dec     ecx
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_16_xx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     ecx,1
>>>>>>>> 
>>>>>>>> +        lea     rbp,[((K256+128))]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,XMMWORD[rbx]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[rbx]
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        cmovge  r8,rbp
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[4+rbx]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        cmovge  r9,rbp
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[8+rbx]
>>>>>>>> 
>>>>>>>> +        pcmpgtd xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        cmovge  r10,rbp
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[12+rbx]
>>>>>>>> 
>>>>>>>> +        paddd   xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        cmovge  r11,rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  xmm0,XMMWORD[((0-128))+rdi]
>>>>>>>> 
>>>>>>>> +        pand    xmm8,xmm6
>>>>>>>> 
>>>>>>>> +        movdqu  xmm1,XMMWORD[((32-128))+rdi]
>>>>>>>> 
>>>>>>>> +        pand    xmm9,xmm6
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[((64-128))+rdi]
>>>>>>>> 
>>>>>>>> +        pand    xmm10,xmm6
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[((96-128))+rdi]
>>>>>>>> 
>>>>>>>> +        pand    xmm11,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm0
>>>>>>>> 
>>>>>>>> +        movdqu  xmm0,XMMWORD[((128-128))+rdi]
>>>>>>>> 
>>>>>>>> +        pand    xmm12,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm1
>>>>>>>> 
>>>>>>>> +        movdqu  xmm1,XMMWORD[((160-128))+rdi]
>>>>>>>> 
>>>>>>>> +        pand    xmm13,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm2
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[((192-128))+rdi]
>>>>>>>> 
>>>>>>>> +        pand    xmm14,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm5
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[((224-128))+rdi]
>>>>>>>> 
>>>>>>>> +        pand    xmm15,xmm6
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,xmm0
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,xmm1
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[(0-128)+rdi],xmm8
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,xmm2
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[(32-128)+rdi],xmm9
>>>>>>>> 
>>>>>>>> +        paddd   xmm15,xmm5
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[(64-128)+rdi],xmm10
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[(96-128)+rdi],xmm11
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[(128-128)+rdi],xmm12
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[(160-128)+rdi],xmm13
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[(192-128)+rdi],xmm14
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[(224-128)+rdi],xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[rbx],xmm7
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,XMMWORD[$L$pbswap]
>>>>>>>> 
>>>>>>>> +        dec     edx
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edx,DWORD[280+rsp]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>>> 
>>>>>>>> +        lea     rsi,[64+rsi]
>>>>>>>> 
>>>>>>>> +        dec     edx
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_grande
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$done:
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[272+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[((-184))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[((-168))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[((-152))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[((-136))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,XMMWORD[((-120))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm11,XMMWORD[((-104))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm12,XMMWORD[((-88))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm13,XMMWORD[((-72))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm14,XMMWORD[((-56))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm15,XMMWORD[((-40))+rax]
>>>>>>>> 
>>>>>>>> +        mov     rbp,QWORD[((-16))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[((-8))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$epilogue:
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$SEH_end_sha256_multi_block:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +sha256_multi_block_shaext:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_sha256_multi_block_shaext:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +_shaext_shortcut:
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-120)+rax],xmm10
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-104)+rax],xmm11
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-88)+rax],xmm12
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-72)+rax],xmm13
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-56)+rax],xmm14
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-40)+rax],xmm15
>>>>>>>> 
>>>>>>>> +        sub     rsp,288
>>>>>>>> 
>>>>>>>> +        shl     edx,1
>>>>>>>> 
>>>>>>>> +        and     rsp,-256
>>>>>>>> 
>>>>>>>> +        lea     rdi,[128+rdi]
>>>>>>>> 
>>>>>>>> +        mov     QWORD[272+rsp],rax
>>>>>>>> 
>>>>>>>> +$L$body_shaext:
>>>>>>>> 
>>>>>>>> +        lea     rbx,[256+rsp]
>>>>>>>> 
>>>>>>>> +        lea     rbp,[((K256_shaext+128))]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$oop_grande_shaext:
>>>>>>>> 
>>>>>>>> +        mov     DWORD[280+rsp],edx
>>>>>>>> 
>>>>>>>> +        xor     edx,edx
>>>>>>>> 
>>>>>>>> +        mov     r8,QWORD[rsi]
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[8+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        mov     DWORD[rbx],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r8,rsp
>>>>>>>> 
>>>>>>>> +        mov     r9,QWORD[16+rsi]
>>>>>>>> 
>>>>>>>> +        mov     ecx,DWORD[24+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     ecx,edx
>>>>>>>> 
>>>>>>>> +        cmovg   edx,ecx
>>>>>>>> 
>>>>>>>> +        test    ecx,ecx
>>>>>>>> 
>>>>>>>> +        mov     DWORD[4+rbx],ecx
>>>>>>>> 
>>>>>>>> +        cmovle  r9,rsp
>>>>>>>> 
>>>>>>>> +        test    edx,edx
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$done_shaext
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movq    xmm12,QWORD[((0-128))+rdi]
>>>>>>>> 
>>>>>>>> +        movq    xmm4,QWORD[((32-128))+rdi]
>>>>>>>> 
>>>>>>>> +        movq    xmm13,QWORD[((64-128))+rdi]
>>>>>>>> 
>>>>>>>> +        movq    xmm5,QWORD[((96-128))+rdi]
>>>>>>>> 
>>>>>>>> +        movq    xmm8,QWORD[((128-128))+rdi]
>>>>>>>> 
>>>>>>>> +        movq    xmm9,QWORD[((160-128))+rdi]
>>>>>>>> 
>>>>>>>> +        movq    xmm10,QWORD[((192-128))+rdi]
>>>>>>>> 
>>>>>>>> +        movq    xmm11,QWORD[((224-128))+rdi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm12,xmm4
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm13,xmm5
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm8,xmm9
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm10,xmm11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm14,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm15,xmm13
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm12,xmm8
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm13,xmm10
>>>>>>>> 
>>>>>>>> +        punpckhqdq      xmm14,xmm8
>>>>>>>> 
>>>>>>>> +        punpckhqdq      xmm15,xmm10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pshufd  xmm12,xmm12,27
>>>>>>>> 
>>>>>>>> +        pshufd  xmm13,xmm13,27
>>>>>>>> 
>>>>>>>> +        pshufd  xmm14,xmm14,27
>>>>>>>> 
>>>>>>>> +        pshufd  xmm15,xmm15,27
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_shaext
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   32
>>>>>>>> 
>>>>>>>> +$L$oop_shaext:
>>>>>>>> 
>>>>>>>> +        movdqu  xmm4,XMMWORD[r8]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm8,XMMWORD[r9]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[16+r8]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm9,XMMWORD[16+r9]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[32+r8]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,227
>>>>>>>> 
>>>>>>>> +        movdqu  xmm10,XMMWORD[32+r9]
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,0,195
>>>>>>>> 
>>>>>>>> +        movdqu  xmm7,XMMWORD[48+r8]
>>>>>>>> 
>>>>>>>> +        lea     r8,[64+r8]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm11,XMMWORD[48+r9]
>>>>>>>> 
>>>>>>>> +        lea     r9,[64+r9]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((0-128))+rbp]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,235
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((0-128))+rbp]
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,0,203
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm8
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[80+rsp],xmm13
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,236
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[112+rsp],xmm15
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,254
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[64+rsp],xmm12
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,229
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>> 
>>>>>>>> +        pxor    xmm8,xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[96+rsp],xmm14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((16-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm5
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,243
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,247
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((16-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm9
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,236
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        prefetcht0      [127+r8]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,251
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,0,211
>>>>>>>> 
>>>>>>>> +        prefetcht0      [127+r9]
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,254
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>> 
>>>>>>>> +DB      102,68,15,56,0,219
>>>>>>>> 
>>>>>>>> +DB      15,56,204,229
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,229
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((32-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm6
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,247
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((32-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,236
>>>>>>>> 
>>>>>>>> +DB      69,15,56,204,193
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm7
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,254
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,222,4
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>>> 
>>>>>>>> +DB      102,65,15,58,15,218,4
>>>>>>>> 
>>>>>>>> +DB      15,56,204,238
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,229
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((48-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm7
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,247
>>>>>>>> 
>>>>>>>> +DB      69,15,56,204,202
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((48-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm11
>>>>>>>> 
>>>>>>>> +DB      15,56,205,231
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,236
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm4
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,223,4
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,254
>>>>>>>> 
>>>>>>>> +DB      69,15,56,205,195
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,65,15,58,15,219,4
>>>>>>>> 
>>>>>>>> +DB      15,56,204,247
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,229
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((64-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm4
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,247
>>>>>>>> 
>>>>>>>> +DB      69,15,56,204,211
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((64-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,56,205,236
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,236
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm5
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,220,4
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,254
>>>>>>>> 
>>>>>>>> +DB      69,15,56,205,200
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,65,15,58,15,216,4
>>>>>>>> 
>>>>>>>> +DB      15,56,204,252
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,229
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((80-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm5
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,247
>>>>>>>> 
>>>>>>>> +DB      69,15,56,204,216
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((80-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm9
>>>>>>>> 
>>>>>>>> +DB      15,56,205,245
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,236
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm6
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,221,4
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,254
>>>>>>>> 
>>>>>>>> +DB      69,15,56,205,209
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>> 
>>>>>>>> +        paddd   xmm7,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>> 
>>>>>>>> +DB      102,65,15,58,15,217,4
>>>>>>>> 
>>>>>>>> +DB      15,56,204,229
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,229
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((96-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm6
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,247
>>>>>>>> 
>>>>>>>> +DB      69,15,56,204,193
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((96-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +DB      15,56,205,254
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,236
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm7
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,222,4
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,254
>>>>>>>> 
>>>>>>>> +DB      69,15,56,205,218
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>>> 
>>>>>>>> +DB      102,65,15,58,15,218,4
>>>>>>>> 
>>>>>>>> +DB      15,56,204,238
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,229
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((112-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm7
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,247
>>>>>>>> 
>>>>>>>> +DB      69,15,56,204,202
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((112-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm11
>>>>>>>> 
>>>>>>>> +DB      15,56,205,231
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,236
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm4
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,223,4
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,254
>>>>>>>> 
>>>>>>>> +DB      69,15,56,205,195
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,65,15,58,15,219,4
>>>>>>>> 
>>>>>>>> +DB      15,56,204,247
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,229
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((128-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm4
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,247
>>>>>>>> 
>>>>>>>> +DB      69,15,56,204,211
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((128-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,56,205,236
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,236
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm5
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,220,4
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,254
>>>>>>>> 
>>>>>>>> +DB      69,15,56,205,200
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,65,15,58,15,216,4
>>>>>>>> 
>>>>>>>> +DB      15,56,204,252
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,229
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((144-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm5
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,247
>>>>>>>> 
>>>>>>>> +DB      69,15,56,204,216
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((144-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm9
>>>>>>>> 
>>>>>>>> +DB      15,56,205,245
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,236
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm6
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,221,4
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,254
>>>>>>>> 
>>>>>>>> +DB      69,15,56,205,209
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>> 
>>>>>>>> +        paddd   xmm7,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>> 
>>>>>>>> +DB      102,65,15,58,15,217,4
>>>>>>>> 
>>>>>>>> +DB      15,56,204,229
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,229
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((160-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm6
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,247
>>>>>>>> 
>>>>>>>> +DB      69,15,56,204,193
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((160-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +DB      15,56,205,254
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,236
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm7
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,222,4
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,254
>>>>>>>> 
>>>>>>>> +DB      69,15,56,205,218
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>>> 
>>>>>>>> +DB      102,65,15,58,15,218,4
>>>>>>>> 
>>>>>>>> +DB      15,56,204,238
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,229
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((176-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm7
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,247
>>>>>>>> 
>>>>>>>> +DB      69,15,56,204,202
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((176-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm8,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm11
>>>>>>>> 
>>>>>>>> +DB      15,56,205,231
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,236
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm4
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,223,4
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,254
>>>>>>>> 
>>>>>>>> +DB      69,15,56,205,195
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>>> 
>>>>>>>> +DB      102,65,15,58,15,219,4
>>>>>>>> 
>>>>>>>> +DB      15,56,204,247
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,229
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((192-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm4
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,247
>>>>>>>> 
>>>>>>>> +DB      69,15,56,204,211
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((192-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm9,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,56,205,236
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,236
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm5
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,220,4
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,254
>>>>>>>> 
>>>>>>>> +DB      69,15,56,205,200
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>>> 
>>>>>>>> +DB      102,65,15,58,15,216,4
>>>>>>>> 
>>>>>>>> +DB      15,56,204,252
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,229
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((208-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm5
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,247
>>>>>>>> 
>>>>>>>> +DB      69,15,56,204,216
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((208-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm10,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm9
>>>>>>>> 
>>>>>>>> +DB      15,56,205,245
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,236
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm6
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,221,4
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,254
>>>>>>>> 
>>>>>>>> +DB      69,15,56,205,209
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>> 
>>>>>>>> +        paddd   xmm7,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>>> 
>>>>>>>> +DB      102,65,15,58,15,217,4
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,229
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((224-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm6
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,247
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((224-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm3
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +DB      15,56,205,254
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,236
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        mov     ecx,1
>>>>>>>> 
>>>>>>>> +        pxor    xmm6,xmm6
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,254
>>>>>>>> 
>>>>>>>> +DB      69,15,56,205,218
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm1,XMMWORD[((240-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm7
>>>>>>>> 
>>>>>>>> +        movq    xmm7,QWORD[rbx]
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,229
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm2,XMMWORD[((240-128))+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm11
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,247
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[rbx]
>>>>>>>> 
>>>>>>>> +        cmovge  r8,rsp
>>>>>>>> 
>>>>>>>> +        cmp     ecx,DWORD[4+rbx]
>>>>>>>> 
>>>>>>>> +        cmovge  r9,rsp
>>>>>>>> 
>>>>>>>> +        pshufd  xmm9,xmm7,0x00
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,236
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>>> 
>>>>>>>> +        pshufd  xmm10,xmm7,0x55
>>>>>>>> 
>>>>>>>> +        movdqa  xmm11,xmm7
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,254
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>>> 
>>>>>>>> +        pcmpgtd xmm9,xmm6
>>>>>>>> 
>>>>>>>> +        pcmpgtd xmm10,xmm6
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,229
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>>> 
>>>>>>>> +        pcmpgtd xmm11,xmm6
>>>>>>>> 
>>>>>>>> +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
>>>>>>>> 
>>>>>>>> +DB      69,15,56,203,247
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pand    xmm13,xmm9
>>>>>>>> 
>>>>>>>> +        pand    xmm15,xmm10
>>>>>>>> 
>>>>>>>> +        pand    xmm12,xmm9
>>>>>>>> 
>>>>>>>> +        pand    xmm14,xmm10
>>>>>>>> 
>>>>>>>> +        paddd   xmm11,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm13,XMMWORD[80+rsp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm15,XMMWORD[112+rsp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm12,XMMWORD[64+rsp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm14,XMMWORD[96+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movq    QWORD[rbx],xmm11
>>>>>>>> 
>>>>>>>> +        dec     edx
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_shaext
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edx,DWORD[280+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pshufd  xmm12,xmm12,27
>>>>>>>> 
>>>>>>>> +        pshufd  xmm13,xmm13,27
>>>>>>>> 
>>>>>>>> +        pshufd  xmm14,xmm14,27
>>>>>>>> 
>>>>>>>> +        pshufd  xmm15,xmm15,27
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm12
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm12,xmm14
>>>>>>>> 
>>>>>>>> +        punpckhdq       xmm5,xmm14
>>>>>>>> 
>>>>>>>> +        punpckldq       xmm13,xmm15
>>>>>>>> 
>>>>>>>> +        punpckhdq       xmm6,xmm15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movq    QWORD[(0-128)+rdi],xmm12
>>>>>>>> 
>>>>>>>> +        psrldq  xmm12,8
>>>>>>>> 
>>>>>>>> +        movq    QWORD[(128-128)+rdi],xmm5
>>>>>>>> 
>>>>>>>> +        psrldq  xmm5,8
>>>>>>>> 
>>>>>>>> +        movq    QWORD[(32-128)+rdi],xmm12
>>>>>>>> 
>>>>>>>> +        movq    QWORD[(160-128)+rdi],xmm5
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movq    QWORD[(64-128)+rdi],xmm13
>>>>>>>> 
>>>>>>>> +        psrldq  xmm13,8
>>>>>>>> 
>>>>>>>> +        movq    QWORD[(192-128)+rdi],xmm6
>>>>>>>> 
>>>>>>>> +        psrldq  xmm6,8
>>>>>>>> 
>>>>>>>> +        movq    QWORD[(96-128)+rdi],xmm13
>>>>>>>> 
>>>>>>>> +        movq    QWORD[(224-128)+rdi],xmm6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rdi,[8+rdi]
>>>>>>>> 
>>>>>>>> +        lea     rsi,[32+rsi]
>>>>>>>> 
>>>>>>>> +        dec     edx
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_grande_shaext
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$done_shaext:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[((-184))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[((-168))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[((-152))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[((-136))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,XMMWORD[((-120))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm11,XMMWORD[((-104))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm12,XMMWORD[((-88))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm13,XMMWORD[((-72))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm14,XMMWORD[((-56))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm15,XMMWORD[((-40))+rax]
>>>>>>>> 
>>>>>>>> +        mov     rbp,QWORD[((-16))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[((-8))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$epilogue_shaext:
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$SEH_end_sha256_multi_block_shaext:
>>>>>>>> 
>>>>>>>> +ALIGN   256
>>>>>>>> 
>>>>>>>> +K256:
>>>>>>>> 
>>>>>>>> +        DD      1116352408,1116352408,1116352408,1116352408
>>>>>>>> 
>>>>>>>> +        DD      1116352408,1116352408,1116352408,1116352408
>>>>>>>> 
>>>>>>>> +        DD      1899447441,1899447441,1899447441,1899447441
>>>>>>>> 
>>>>>>>> +        DD      1899447441,1899447441,1899447441,1899447441
>>>>>>>> 
>>>>>>>> +        DD      3049323471,3049323471,3049323471,3049323471
>>>>>>>> 
>>>>>>>> +        DD      3049323471,3049323471,3049323471,3049323471
>>>>>>>> 
>>>>>>>> +        DD      3921009573,3921009573,3921009573,3921009573
>>>>>>>> 
>>>>>>>> +        DD      3921009573,3921009573,3921009573,3921009573
>>>>>>>> 
>>>>>>>> +        DD      961987163,961987163,961987163,961987163
>>>>>>>> 
>>>>>>>> +        DD      961987163,961987163,961987163,961987163
>>>>>>>> 
>>>>>>>> +        DD      1508970993,1508970993,1508970993,1508970993
>>>>>>>> 
>>>>>>>> +        DD      1508970993,1508970993,1508970993,1508970993
>>>>>>>> 
>>>>>>>> +        DD      2453635748,2453635748,2453635748,2453635748
>>>>>>>> 
>>>>>>>> +        DD      2453635748,2453635748,2453635748,2453635748
>>>>>>>> 
>>>>>>>> +        DD      2870763221,2870763221,2870763221,2870763221
>>>>>>>> 
>>>>>>>> +        DD      2870763221,2870763221,2870763221,2870763221
>>>>>>>> 
>>>>>>>> +        DD      3624381080,3624381080,3624381080,3624381080
>>>>>>>> 
>>>>>>>> +        DD      3624381080,3624381080,3624381080,3624381080
>>>>>>>> 
>>>>>>>> +        DD      310598401,310598401,310598401,310598401
>>>>>>>> 
>>>>>>>> +        DD      310598401,310598401,310598401,310598401
>>>>>>>> 
>>>>>>>> +        DD      607225278,607225278,607225278,607225278
>>>>>>>> 
>>>>>>>> +        DD      607225278,607225278,607225278,607225278
>>>>>>>> 
>>>>>>>> +        DD      1426881987,1426881987,1426881987,1426881987
>>>>>>>> 
>>>>>>>> +        DD      1426881987,1426881987,1426881987,1426881987
>>>>>>>> 
>>>>>>>> +        DD      1925078388,1925078388,1925078388,1925078388
>>>>>>>> 
>>>>>>>> +        DD      1925078388,1925078388,1925078388,1925078388
>>>>>>>> 
>>>>>>>> +        DD      2162078206,2162078206,2162078206,2162078206
>>>>>>>> 
>>>>>>>> +        DD      2162078206,2162078206,2162078206,2162078206
>>>>>>>> 
>>>>>>>> +        DD      2614888103,2614888103,2614888103,2614888103
>>>>>>>> 
>>>>>>>> +        DD      2614888103,2614888103,2614888103,2614888103
>>>>>>>> 
>>>>>>>> +        DD      3248222580,3248222580,3248222580,3248222580
>>>>>>>> 
>>>>>>>> +        DD      3248222580,3248222580,3248222580,3248222580
>>>>>>>> 
>>>>>>>> +        DD      3835390401,3835390401,3835390401,3835390401
>>>>>>>> 
>>>>>>>> +        DD      3835390401,3835390401,3835390401,3835390401
>>>>>>>> 
>>>>>>>> +        DD      4022224774,4022224774,4022224774,4022224774
>>>>>>>> 
>>>>>>>> +        DD      4022224774,4022224774,4022224774,4022224774
>>>>>>>> 
>>>>>>>> +        DD      264347078,264347078,264347078,264347078
>>>>>>>> 
>>>>>>>> +        DD      264347078,264347078,264347078,264347078
>>>>>>>> 
>>>>>>>> +        DD      604807628,604807628,604807628,604807628
>>>>>>>> 
>>>>>>>> +        DD      604807628,604807628,604807628,604807628
>>>>>>>> 
>>>>>>>> +        DD      770255983,770255983,770255983,770255983
>>>>>>>> 
>>>>>>>> +        DD      770255983,770255983,770255983,770255983
>>>>>>>> 
>>>>>>>> +        DD      1249150122,1249150122,1249150122,1249150122
>>>>>>>> 
>>>>>>>> +        DD      1249150122,1249150122,1249150122,1249150122
>>>>>>>> 
>>>>>>>> +        DD      1555081692,1555081692,1555081692,1555081692
>>>>>>>> 
>>>>>>>> +        DD      1555081692,1555081692,1555081692,1555081692
>>>>>>>> 
>>>>>>>> +        DD      1996064986,1996064986,1996064986,1996064986
>>>>>>>> 
>>>>>>>> +        DD      1996064986,1996064986,1996064986,1996064986
>>>>>>>> 
>>>>>>>> +        DD      2554220882,2554220882,2554220882,2554220882
>>>>>>>> 
>>>>>>>> +        DD      2554220882,2554220882,2554220882,2554220882
>>>>>>>> 
>>>>>>>> +        DD      2821834349,2821834349,2821834349,2821834349
>>>>>>>> 
>>>>>>>> +        DD      2821834349,2821834349,2821834349,2821834349
>>>>>>>> 
>>>>>>>> +        DD      2952996808,2952996808,2952996808,2952996808
>>>>>>>> 
>>>>>>>> +        DD      2952996808,2952996808,2952996808,2952996808
>>>>>>>> 
>>>>>>>> +        DD      3210313671,3210313671,3210313671,3210313671
>>>>>>>> 
>>>>>>>> +        DD      3210313671,3210313671,3210313671,3210313671
>>>>>>>> 
>>>>>>>> +        DD      3336571891,3336571891,3336571891,3336571891
>>>>>>>> 
>>>>>>>> +        DD      3336571891,3336571891,3336571891,3336571891
>>>>>>>> 
>>>>>>>> +        DD      3584528711,3584528711,3584528711,3584528711
>>>>>>>> 
>>>>>>>> +        DD      3584528711,3584528711,3584528711,3584528711
>>>>>>>> 
>>>>>>>> +        DD      113926993,113926993,113926993,113926993
>>>>>>>> 
>>>>>>>> +        DD      113926993,113926993,113926993,113926993
>>>>>>>> 
>>>>>>>> +        DD      338241895,338241895,338241895,338241895
>>>>>>>> 
>>>>>>>> +        DD      338241895,338241895,338241895,338241895
>>>>>>>> 
>>>>>>>> +        DD      666307205,666307205,666307205,666307205
>>>>>>>> 
>>>>>>>> +        DD      666307205,666307205,666307205,666307205
>>>>>>>> 
>>>>>>>> +        DD      773529912,773529912,773529912,773529912
>>>>>>>> 
>>>>>>>> +        DD      773529912,773529912,773529912,773529912
>>>>>>>> 
>>>>>>>> +        DD      1294757372,1294757372,1294757372,1294757372
>>>>>>>> 
>>>>>>>> +        DD      1294757372,1294757372,1294757372,1294757372
>>>>>>>> 
>>>>>>>> +        DD      1396182291,1396182291,1396182291,1396182291
>>>>>>>> 
>>>>>>>> +        DD      1396182291,1396182291,1396182291,1396182291
>>>>>>>> 
>>>>>>>> +        DD      1695183700,1695183700,1695183700,1695183700
>>>>>>>> 
>>>>>>>> +        DD      1695183700,1695183700,1695183700,1695183700
>>>>>>>> 
>>>>>>>> +        DD      1986661051,1986661051,1986661051,1986661051
>>>>>>>> 
>>>>>>>> +        DD      1986661051,1986661051,1986661051,1986661051
>>>>>>>> 
>>>>>>>> +        DD      2177026350,2177026350,2177026350,2177026350
>>>>>>>> 
>>>>>>>> +        DD      2177026350,2177026350,2177026350,2177026350
>>>>>>>> 
>>>>>>>> +        DD      2456956037,2456956037,2456956037,2456956037
>>>>>>>> 
>>>>>>>> +        DD      2456956037,2456956037,2456956037,2456956037
>>>>>>>> 
>>>>>>>> +        DD      2730485921,2730485921,2730485921,2730485921
>>>>>>>> 
>>>>>>>> +        DD      2730485921,2730485921,2730485921,2730485921
>>>>>>>> 
>>>>>>>> +        DD      2820302411,2820302411,2820302411,2820302411
>>>>>>>> 
>>>>>>>> +        DD      2820302411,2820302411,2820302411,2820302411
>>>>>>>> 
>>>>>>>> +        DD      3259730800,3259730800,3259730800,3259730800
>>>>>>>> 
>>>>>>>> +        DD      3259730800,3259730800,3259730800,3259730800
>>>>>>>> 
>>>>>>>> +        DD      3345764771,3345764771,3345764771,3345764771
>>>>>>>> 
>>>>>>>> +        DD      3345764771,3345764771,3345764771,3345764771
>>>>>>>> 
>>>>>>>> +        DD      3516065817,3516065817,3516065817,3516065817
>>>>>>>> 
>>>>>>>> +        DD      3516065817,3516065817,3516065817,3516065817
>>>>>>>> 
>>>>>>>> +        DD      3600352804,3600352804,3600352804,3600352804
>>>>>>>> 
>>>>>>>> +        DD      3600352804,3600352804,3600352804,3600352804
>>>>>>>> 
>>>>>>>> +        DD      4094571909,4094571909,4094571909,4094571909
>>>>>>>> 
>>>>>>>> +        DD      4094571909,4094571909,4094571909,4094571909
>>>>>>>> 
>>>>>>>> +        DD      275423344,275423344,275423344,275423344
>>>>>>>> 
>>>>>>>> +        DD      275423344,275423344,275423344,275423344
>>>>>>>> 
>>>>>>>> +        DD      430227734,430227734,430227734,430227734
>>>>>>>> 
>>>>>>>> +        DD      430227734,430227734,430227734,430227734
>>>>>>>> 
>>>>>>>> +        DD      506948616,506948616,506948616,506948616
>>>>>>>> 
>>>>>>>> +        DD      506948616,506948616,506948616,506948616
>>>>>>>> 
>>>>>>>> +        DD      659060556,659060556,659060556,659060556
>>>>>>>> 
>>>>>>>> +        DD      659060556,659060556,659060556,659060556
>>>>>>>> 
>>>>>>>> +        DD      883997877,883997877,883997877,883997877
>>>>>>>> 
>>>>>>>> +        DD      883997877,883997877,883997877,883997877
>>>>>>>> 
>>>>>>>> +        DD      958139571,958139571,958139571,958139571
>>>>>>>> 
>>>>>>>> +        DD      958139571,958139571,958139571,958139571
>>>>>>>> 
>>>>>>>> +        DD      1322822218,1322822218,1322822218,1322822218
>>>>>>>> 
>>>>>>>> +        DD      1322822218,1322822218,1322822218,1322822218
>>>>>>>> 
>>>>>>>> +        DD      1537002063,1537002063,1537002063,1537002063
>>>>>>>> 
>>>>>>>> +        DD      1537002063,1537002063,1537002063,1537002063
>>>>>>>> 
>>>>>>>> +        DD      1747873779,1747873779,1747873779,1747873779
>>>>>>>> 
>>>>>>>> +        DD      1747873779,1747873779,1747873779,1747873779
>>>>>>>> 
>>>>>>>> +        DD      1955562222,1955562222,1955562222,1955562222
>>>>>>>> 
>>>>>>>> +        DD      1955562222,1955562222,1955562222,1955562222
>>>>>>>> 
>>>>>>>> +        DD      2024104815,2024104815,2024104815,2024104815
>>>>>>>> 
>>>>>>>> +        DD      2024104815,2024104815,2024104815,2024104815
>>>>>>>> 
>>>>>>>> +        DD      2227730452,2227730452,2227730452,2227730452
>>>>>>>> 
>>>>>>>> +        DD      2227730452,2227730452,2227730452,2227730452
>>>>>>>> 
>>>>>>>> +        DD      2361852424,2361852424,2361852424,2361852424
>>>>>>>> 
>>>>>>>> +        DD      2361852424,2361852424,2361852424,2361852424
>>>>>>>> 
>>>>>>>> +        DD      2428436474,2428436474,2428436474,2428436474
>>>>>>>> 
>>>>>>>> +        DD      2428436474,2428436474,2428436474,2428436474
>>>>>>>> 
>>>>>>>> +        DD      2756734187,2756734187,2756734187,2756734187
>>>>>>>> 
>>>>>>>> +        DD      2756734187,2756734187,2756734187,2756734187
>>>>>>>> 
>>>>>>>> +        DD      3204031479,3204031479,3204031479,3204031479
>>>>>>>> 
>>>>>>>> +        DD      3204031479,3204031479,3204031479,3204031479
>>>>>>>> 
>>>>>>>> +        DD      3329325298,3329325298,3329325298,3329325298
>>>>>>>> 
>>>>>>>> +        DD      3329325298,3329325298,3329325298,3329325298
>>>>>>>> 
>>>>>>>> +$L$pbswap:
>>>>>>>> 
>>>>>>>> +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
>>>>>>>> 
>>>>>>>> +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
>>>>>>>> 
>>>>>>>> +K256_shaext:
>>>>>>>> 
>>>>>>>> +        DD      0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
>>>>>>>> 
>>>>>>>> +        DD      0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
>>>>>>>> 
>>>>>>>> +        DD      0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
>>>>>>>> 
>>>>>>>> +        DD      0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
>>>>>>>> 
>>>>>>>> +        DD      0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
>>>>>>>> 
>>>>>>>> +        DD      0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
>>>>>>>> 
>>>>>>>> +        DD      0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
>>>>>>>> 
>>>>>>>> +        DD      0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
>>>>>>>> 
>>>>>>>> +        DD      0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
>>>>>>>> 
>>>>>>>> +        DD      0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
>>>>>>>> 
>>>>>>>> +        DD      0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
>>>>>>>> 
>>>>>>>> +        DD      0xd192e819,0xd6990624,0xf40e3585,0x106aa070
>>>>>>>> 
>>>>>>>> +        DD      0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
>>>>>>>> 
>>>>>>>> +        DD      0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
>>>>>>>> 
>>>>>>>> +        DD      0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
>>>>>>>> 
>>>>>>>> +        DD      0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
>>>>>>>> 
>>>>>>>> +DB      83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111
>>>>>>>> 
>>>>>>>> +DB      99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114
>>>>>>>> 
>>>>>>>> +DB      32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71
>>>>>>>> 
>>>>>>>> +DB      65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112
>>>>>>>> 
>>>>>>>> +DB      101,110,115,115,108,46,111,114,103,62,0
>>>>>>>> 
>>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +se_handler:
>>>>>>>> 
>>>>>>>> +        push    rsi
>>>>>>>> 
>>>>>>>> +        push    rdi
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +        pushfq
>>>>>>>> 
>>>>>>>> +        sub     rsp,64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>> 
>>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[272+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[((-8))+rax]
>>>>>>>> 
>>>>>>>> +        mov     rbp,QWORD[((-16))+rax]
>>>>>>>> 
>>>>>>>> +        mov     QWORD[144+r8],rbx
>>>>>>>> 
>>>>>>>> +        mov     QWORD[160+r8],rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsi,[((-24-160))+rax]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>> 
>>>>>>>> +        mov     ecx,20
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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[40+r9]
>>>>>>>> 
>>>>>>>> +        mov     rsi,r8
>>>>>>>> 
>>>>>>>> +        mov     ecx,154
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,r9
>>>>>>>> 
>>>>>>>> +        xor     rcx,rcx
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +        popfq
>>>>>>>> 
>>>>>>>> +        pop     r15
>>>>>>>> 
>>>>>>>> +        pop     r14
>>>>>>>> 
>>>>>>>> +        pop     r13
>>>>>>>> 
>>>>>>>> +        pop     r12
>>>>>>>> 
>>>>>>>> +        pop     rbp
>>>>>>>> 
>>>>>>>> +        pop     rbx
>>>>>>>> 
>>>>>>>> +        pop     rdi
>>>>>>>> 
>>>>>>>> +        pop     rsi
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +section .pdata rdata align=4
>>>>>>>> 
>>>>>>>> +ALIGN   4
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_begin_sha256_multi_block wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_end_sha256_multi_block wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_info_sha256_multi_block wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_begin_sha256_multi_block_shaext wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_end_sha256_multi_block_shaext wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_info_sha256_multi_block_shaext wrt ..imagebase
>>>>>>>> 
>>>>>>>> +section .xdata rdata align=8
>>>>>>>> 
>>>>>>>> +ALIGN   8
>>>>>>>> 
>>>>>>>> +$L$SEH_info_sha256_multi_block:
>>>>>>>> 
>>>>>>>> +DB      9,0,0,0
>>>>>>>> 
>>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
>>>>>>>> 
>>>>>>>> +$L$SEH_info_sha256_multi_block_shaext:
>>>>>>>> 
>>>>>>>> +DB      9,0,0,0
>>>>>>>> 
>>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
>>>>>>>> wrt ..imagebase
>>>>>>>> 
>>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
>>>>>> x86_64.nasm
>>>>>>>> b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
>>>>>>>> new file mode 100644
>>>>>>>> index 0000000000..70e49862a3
>>>>>>>> --- /dev/null
>>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
>>>> x86_64.nasm
>>>>>>>> @@ -0,0 +1,3313 @@
>>>>>>>> +; WARNING: do not edit!
>>>>>>>> 
>>>>>>>> +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
>>>>> Reserved.
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>> 
>>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>>> copy
>>>>>>>> 
>>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>> 
>>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +default rel
>>>>>>>> 
>>>>>>>> +%define XMMWORD
>>>>>>>> 
>>>>>>>> +%define YMMWORD
>>>>>>>> 
>>>>>>>> +%define ZMMWORD
>>>>>>>> 
>>>>>>>> +section .text code align=64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>> 
>>>>>>>> +global  sha256_block_data_order
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +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:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r11,[OPENSSL_ia32cap_P]
>>>>>>>> 
>>>>>>>> +        mov     r9d,DWORD[r11]
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>> 
>>>>>>>> +        mov     r11d,DWORD[8+r11]
>>>>>>>> 
>>>>>>>> +        test    r11d,536870912
>>>>>>>> 
>>>>>>>> +        jnz     NEAR _shaext_shortcut
>>>>>>>> 
>>>>>>>> +        test    r10d,512
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$ssse3_shortcut
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        shl     rdx,4
>>>>>>>> 
>>>>>>>> +        sub     rsp,16*4+4*8
>>>>>>>> 
>>>>>>>> +        lea     rdx,[rdx*4+rsi]
>>>>>>>> 
>>>>>>>> +        and     rsp,-64
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((64+0))+rsp],rdi
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((64+8))+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((64+16))+rsp],rdx
>>>>>>>> 
>>>>>>>> +        mov     QWORD[88+rsp],rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$prologue:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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:
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        lea     rbp,[K256]
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        mov     r12d,DWORD[rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13d,r8d
>>>>>>>> 
>>>>>>>> +        mov     r14d,eax
>>>>>>>> 
>>>>>>>> +        bswap   r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r15d,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r8d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r15d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,eax
>>>>>>>> 
>>>>>>>> +        and     r15d,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,r11d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,r8d
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15d,eax
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     r11d,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r11d,edi
>>>>>>>> 
>>>>>>>> +        add     edx,r12d
>>>>>>>> 
>>>>>>>> +        add     r11d,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        add     r11d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,DWORD[4+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13d,edx
>>>>>>>> 
>>>>>>>> +        mov     r14d,r11d
>>>>>>>> 
>>>>>>>> +        bswap   r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     edi,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,edx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     edi,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[4+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r11d
>>>>>>>> 
>>>>>>>> +        and     edi,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,r10d
>>>>>>>> 
>>>>>>>> +        xor     edi,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,edx
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edi,r11d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     r10d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r10d,r15d
>>>>>>>> 
>>>>>>>> +        add     ecx,r12d
>>>>>>>> 
>>>>>>>> +        add     r10d,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        add     r10d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,DWORD[8+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13d,ecx
>>>>>>>> 
>>>>>>>> +        mov     r14d,r10d
>>>>>>>> 
>>>>>>>> +        bswap   r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r15d,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r15d,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[8+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r10d
>>>>>>>> 
>>>>>>>> +        and     r15d,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,r9d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,ecx
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15d,r10d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     r9d,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r9d,edi
>>>>>>>> 
>>>>>>>> +        add     ebx,r12d
>>>>>>>> 
>>>>>>>> +        add     r9d,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        add     r9d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,DWORD[12+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13d,ebx
>>>>>>>> 
>>>>>>>> +        mov     r14d,r9d
>>>>>>>> 
>>>>>>>> +        bswap   r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[12+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r9d
>>>>>>>> 
>>>>>>>> +        and     edi,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,r8d
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,ebx
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edi,r9d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edi,r10d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     r8d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r8d,r15d
>>>>>>>> 
>>>>>>>> +        add     eax,r12d
>>>>>>>> 
>>>>>>>> +        add     r8d,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>>> 
>>>>>>>> +        add     r8d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,DWORD[16+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13d,eax
>>>>>>>> 
>>>>>>>> +        mov     r14d,r8d
>>>>>>>> 
>>>>>>>> +        bswap   r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r15d,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,eax
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r15d,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[16+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r8d
>>>>>>>> 
>>>>>>>> +        and     r15d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,edx
>>>>>>>> 
>>>>>>>> +        xor     r15d,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,eax
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15d,r8d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     edx,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edx,edi
>>>>>>>> 
>>>>>>>> +        add     r11d,r12d
>>>>>>>> 
>>>>>>>> +        add     edx,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        add     edx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,DWORD[20+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13d,r11d
>>>>>>>> 
>>>>>>>> +        mov     r14d,edx
>>>>>>>> 
>>>>>>>> +        bswap   r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[20+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,edx
>>>>>>>> 
>>>>>>>> +        and     edi,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,ecx
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,r11d
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edi,r8d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     ecx,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     ecx,r15d
>>>>>>>> 
>>>>>>>> +        add     r10d,r12d
>>>>>>>> 
>>>>>>>> +        add     ecx,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        add     ecx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,DWORD[24+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13d,r10d
>>>>>>>> 
>>>>>>>> +        mov     r14d,ecx
>>>>>>>> 
>>>>>>>> +        bswap   r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r15d,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r15d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[24+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,ecx
>>>>>>>> 
>>>>>>>> +        and     r15d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,ebx
>>>>>>>> 
>>>>>>>> +        xor     r15d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,r10d
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15d,ecx
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15d,edx
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     ebx,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     ebx,edi
>>>>>>>> 
>>>>>>>> +        add     r9d,r12d
>>>>>>>> 
>>>>>>>> +        add     ebx,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        add     ebx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,DWORD[28+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13d,r9d
>>>>>>>> 
>>>>>>>> +        mov     r14d,ebx
>>>>>>>> 
>>>>>>>> +        bswap   r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     edi,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     edi,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[28+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,ebx
>>>>>>>> 
>>>>>>>> +        and     edi,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,eax
>>>>>>>> 
>>>>>>>> +        xor     edi,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,r9d
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     eax,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     eax,r15d
>>>>>>>> 
>>>>>>>> +        add     r8d,r12d
>>>>>>>> 
>>>>>>>> +        add     eax,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>>> 
>>>>>>>> +        add     eax,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,DWORD[32+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13d,r8d
>>>>>>>> 
>>>>>>>> +        mov     r14d,eax
>>>>>>>> 
>>>>>>>> +        bswap   r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r15d,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r8d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r15d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[32+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,eax
>>>>>>>> 
>>>>>>>> +        and     r15d,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,r11d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,r8d
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15d,eax
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     r11d,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r11d,edi
>>>>>>>> 
>>>>>>>> +        add     edx,r12d
>>>>>>>> 
>>>>>>>> +        add     r11d,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        add     r11d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,DWORD[36+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13d,edx
>>>>>>>> 
>>>>>>>> +        mov     r14d,r11d
>>>>>>>> 
>>>>>>>> +        bswap   r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     edi,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,edx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     edi,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[36+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r11d
>>>>>>>> 
>>>>>>>> +        and     edi,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,r10d
>>>>>>>> 
>>>>>>>> +        xor     edi,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,edx
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edi,r11d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     r10d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r10d,r15d
>>>>>>>> 
>>>>>>>> +        add     ecx,r12d
>>>>>>>> 
>>>>>>>> +        add     r10d,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        add     r10d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,DWORD[40+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13d,ecx
>>>>>>>> 
>>>>>>>> +        mov     r14d,r10d
>>>>>>>> 
>>>>>>>> +        bswap   r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r15d,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r15d,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[40+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r10d
>>>>>>>> 
>>>>>>>> +        and     r15d,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,r9d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,ecx
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15d,r10d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     r9d,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r9d,edi
>>>>>>>> 
>>>>>>>> +        add     ebx,r12d
>>>>>>>> 
>>>>>>>> +        add     r9d,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        add     r9d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,DWORD[44+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13d,ebx
>>>>>>>> 
>>>>>>>> +        mov     r14d,r9d
>>>>>>>> 
>>>>>>>> +        bswap   r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[44+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r9d
>>>>>>>> 
>>>>>>>> +        and     edi,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,r8d
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,ebx
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edi,r9d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edi,r10d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     r8d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r8d,r15d
>>>>>>>> 
>>>>>>>> +        add     eax,r12d
>>>>>>>> 
>>>>>>>> +        add     r8d,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>>> 
>>>>>>>> +        add     r8d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,DWORD[48+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13d,eax
>>>>>>>> 
>>>>>>>> +        mov     r14d,r8d
>>>>>>>> 
>>>>>>>> +        bswap   r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r15d,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,eax
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r15d,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[48+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r8d
>>>>>>>> 
>>>>>>>> +        and     r15d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,edx
>>>>>>>> 
>>>>>>>> +        xor     r15d,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,eax
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15d,r8d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     edx,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edx,edi
>>>>>>>> 
>>>>>>>> +        add     r11d,r12d
>>>>>>>> 
>>>>>>>> +        add     edx,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        add     edx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,DWORD[52+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13d,r11d
>>>>>>>> 
>>>>>>>> +        mov     r14d,edx
>>>>>>>> 
>>>>>>>> +        bswap   r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[52+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,edx
>>>>>>>> 
>>>>>>>> +        and     edi,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,ecx
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,r11d
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edi,r8d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     ecx,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     ecx,r15d
>>>>>>>> 
>>>>>>>> +        add     r10d,r12d
>>>>>>>> 
>>>>>>>> +        add     ecx,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        add     ecx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,DWORD[56+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13d,r10d
>>>>>>>> 
>>>>>>>> +        mov     r14d,ecx
>>>>>>>> 
>>>>>>>> +        bswap   r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r15d,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r15d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[56+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,ecx
>>>>>>>> 
>>>>>>>> +        and     r15d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,ebx
>>>>>>>> 
>>>>>>>> +        xor     r15d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,r10d
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15d,ecx
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15d,edx
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     ebx,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     ebx,edi
>>>>>>>> 
>>>>>>>> +        add     r9d,r12d
>>>>>>>> 
>>>>>>>> +        add     ebx,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        add     ebx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,DWORD[60+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13d,r9d
>>>>>>>> 
>>>>>>>> +        mov     r14d,ebx
>>>>>>>> 
>>>>>>>> +        bswap   r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     edi,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     edi,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[60+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,ebx
>>>>>>>> 
>>>>>>>> +        and     edi,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,eax
>>>>>>>> 
>>>>>>>> +        xor     edi,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,r9d
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     eax,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     eax,r15d
>>>>>>>> 
>>>>>>>> +        add     r8d,r12d
>>>>>>>> 
>>>>>>>> +        add     eax,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$rounds_16_xx
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$rounds_16_xx:
>>>>>>>> 
>>>>>>>> +        mov     r13d,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12d,r13d
>>>>>>>> 
>>>>>>>> +        ror     r13d,11
>>>>>>>> 
>>>>>>>> +        add     eax,r14d
>>>>>>>> 
>>>>>>>> +        mov     r14d,r15d
>>>>>>>> 
>>>>>>>> +        ror     r15d,2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r12d
>>>>>>>> 
>>>>>>>> +        shr     r12d,3
>>>>>>>> 
>>>>>>>> +        ror     r13d,7
>>>>>>>> 
>>>>>>>> +        xor     r15d,r14d
>>>>>>>> 
>>>>>>>> +        shr     r14d,10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r15d,17
>>>>>>>> 
>>>>>>>> +        xor     r12d,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r14d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,r8d
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +        mov     r14d,eax
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r15d,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r8d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r15d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,eax
>>>>>>>> 
>>>>>>>> +        and     r15d,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,r11d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,r8d
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15d,eax
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     r11d,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r11d,edi
>>>>>>>> 
>>>>>>>> +        add     edx,r12d
>>>>>>>> 
>>>>>>>> +        add     r11d,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12d,r13d
>>>>>>>> 
>>>>>>>> +        ror     r13d,11
>>>>>>>> 
>>>>>>>> +        add     r11d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r14d,edi
>>>>>>>> 
>>>>>>>> +        ror     edi,2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r12d
>>>>>>>> 
>>>>>>>> +        shr     r12d,3
>>>>>>>> 
>>>>>>>> +        ror     r13d,7
>>>>>>>> 
>>>>>>>> +        xor     edi,r14d
>>>>>>>> 
>>>>>>>> +        shr     r14d,10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     edi,17
>>>>>>>> 
>>>>>>>> +        xor     r12d,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,r14d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,edx
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +        mov     r14d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     edi,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,edx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     edi,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[4+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r11d
>>>>>>>> 
>>>>>>>> +        and     edi,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,r10d
>>>>>>>> 
>>>>>>>> +        xor     edi,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,edx
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edi,r11d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     r10d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r10d,r15d
>>>>>>>> 
>>>>>>>> +        add     ecx,r12d
>>>>>>>> 
>>>>>>>> +        add     r10d,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12d,r13d
>>>>>>>> 
>>>>>>>> +        ror     r13d,11
>>>>>>>> 
>>>>>>>> +        add     r10d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r14d,r15d
>>>>>>>> 
>>>>>>>> +        ror     r15d,2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r12d
>>>>>>>> 
>>>>>>>> +        shr     r12d,3
>>>>>>>> 
>>>>>>>> +        ror     r13d,7
>>>>>>>> 
>>>>>>>> +        xor     r15d,r14d
>>>>>>>> 
>>>>>>>> +        shr     r14d,10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r15d,17
>>>>>>>> 
>>>>>>>> +        xor     r12d,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r14d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,ecx
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +        mov     r14d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r15d,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r15d,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[8+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r10d
>>>>>>>> 
>>>>>>>> +        and     r15d,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,r9d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,ecx
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15d,r10d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     r9d,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r9d,edi
>>>>>>>> 
>>>>>>>> +        add     ebx,r12d
>>>>>>>> 
>>>>>>>> +        add     r9d,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12d,r13d
>>>>>>>> 
>>>>>>>> +        ror     r13d,11
>>>>>>>> 
>>>>>>>> +        add     r9d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r14d,edi
>>>>>>>> 
>>>>>>>> +        ror     edi,2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r12d
>>>>>>>> 
>>>>>>>> +        shr     r12d,3
>>>>>>>> 
>>>>>>>> +        ror     r13d,7
>>>>>>>> 
>>>>>>>> +        xor     edi,r14d
>>>>>>>> 
>>>>>>>> +        shr     r14d,10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     edi,17
>>>>>>>> 
>>>>>>>> +        xor     r12d,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,r14d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,ebx
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +        mov     r14d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[12+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r9d
>>>>>>>> 
>>>>>>>> +        and     edi,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,r8d
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,ebx
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edi,r9d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edi,r10d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     r8d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r8d,r15d
>>>>>>>> 
>>>>>>>> +        add     eax,r12d
>>>>>>>> 
>>>>>>>> +        add     r8d,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12d,r13d
>>>>>>>> 
>>>>>>>> +        ror     r13d,11
>>>>>>>> 
>>>>>>>> +        add     r8d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r14d,r15d
>>>>>>>> 
>>>>>>>> +        ror     r15d,2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r12d
>>>>>>>> 
>>>>>>>> +        shr     r12d,3
>>>>>>>> 
>>>>>>>> +        ror     r13d,7
>>>>>>>> 
>>>>>>>> +        xor     r15d,r14d
>>>>>>>> 
>>>>>>>> +        shr     r14d,10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r15d,17
>>>>>>>> 
>>>>>>>> +        xor     r12d,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r14d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,eax
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +        mov     r14d,r8d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r15d,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,eax
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r15d,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[16+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r8d
>>>>>>>> 
>>>>>>>> +        and     r15d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,edx
>>>>>>>> 
>>>>>>>> +        xor     r15d,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,eax
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15d,r8d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     edx,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edx,edi
>>>>>>>> 
>>>>>>>> +        add     r11d,r12d
>>>>>>>> 
>>>>>>>> +        add     edx,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12d,r13d
>>>>>>>> 
>>>>>>>> +        ror     r13d,11
>>>>>>>> 
>>>>>>>> +        add     edx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r14d,edi
>>>>>>>> 
>>>>>>>> +        ror     edi,2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r12d
>>>>>>>> 
>>>>>>>> +        shr     r12d,3
>>>>>>>> 
>>>>>>>> +        ror     r13d,7
>>>>>>>> 
>>>>>>>> +        xor     edi,r14d
>>>>>>>> 
>>>>>>>> +        shr     r14d,10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     edi,17
>>>>>>>> 
>>>>>>>> +        xor     r12d,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,r14d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,r11d
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +        mov     r14d,edx
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[20+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,edx
>>>>>>>> 
>>>>>>>> +        and     edi,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,ecx
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,r11d
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edi,r8d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     ecx,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     ecx,r15d
>>>>>>>> 
>>>>>>>> +        add     r10d,r12d
>>>>>>>> 
>>>>>>>> +        add     ecx,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12d,r13d
>>>>>>>> 
>>>>>>>> +        ror     r13d,11
>>>>>>>> 
>>>>>>>> +        add     ecx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r14d,r15d
>>>>>>>> 
>>>>>>>> +        ror     r15d,2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r12d
>>>>>>>> 
>>>>>>>> +        shr     r12d,3
>>>>>>>> 
>>>>>>>> +        ror     r13d,7
>>>>>>>> 
>>>>>>>> +        xor     r15d,r14d
>>>>>>>> 
>>>>>>>> +        shr     r14d,10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r15d,17
>>>>>>>> 
>>>>>>>> +        xor     r12d,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r14d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,r10d
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +        mov     r14d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r15d,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r15d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[24+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,ecx
>>>>>>>> 
>>>>>>>> +        and     r15d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,ebx
>>>>>>>> 
>>>>>>>> +        xor     r15d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,r10d
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15d,ecx
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15d,edx
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     ebx,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     ebx,edi
>>>>>>>> 
>>>>>>>> +        add     r9d,r12d
>>>>>>>> 
>>>>>>>> +        add     ebx,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12d,r13d
>>>>>>>> 
>>>>>>>> +        ror     r13d,11
>>>>>>>> 
>>>>>>>> +        add     ebx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r14d,edi
>>>>>>>> 
>>>>>>>> +        ror     edi,2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r12d
>>>>>>>> 
>>>>>>>> +        shr     r12d,3
>>>>>>>> 
>>>>>>>> +        ror     r13d,7
>>>>>>>> 
>>>>>>>> +        xor     edi,r14d
>>>>>>>> 
>>>>>>>> +        shr     r14d,10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     edi,17
>>>>>>>> 
>>>>>>>> +        xor     r12d,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,r14d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,r9d
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +        mov     r14d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     edi,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     edi,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[28+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,ebx
>>>>>>>> 
>>>>>>>> +        and     edi,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,eax
>>>>>>>> 
>>>>>>>> +        xor     edi,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,r9d
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     eax,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     eax,r15d
>>>>>>>> 
>>>>>>>> +        add     r8d,r12d
>>>>>>>> 
>>>>>>>> +        add     eax,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12d,r13d
>>>>>>>> 
>>>>>>>> +        ror     r13d,11
>>>>>>>> 
>>>>>>>> +        add     eax,r14d
>>>>>>>> 
>>>>>>>> +        mov     r14d,r15d
>>>>>>>> 
>>>>>>>> +        ror     r15d,2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r12d
>>>>>>>> 
>>>>>>>> +        shr     r12d,3
>>>>>>>> 
>>>>>>>> +        ror     r13d,7
>>>>>>>> 
>>>>>>>> +        xor     r15d,r14d
>>>>>>>> 
>>>>>>>> +        shr     r14d,10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r15d,17
>>>>>>>> 
>>>>>>>> +        xor     r12d,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r14d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,r8d
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +        mov     r14d,eax
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r15d,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r8d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r15d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[32+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,eax
>>>>>>>> 
>>>>>>>> +        and     r15d,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,r11d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,r8d
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15d,eax
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     r11d,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r11d,edi
>>>>>>>> 
>>>>>>>> +        add     edx,r12d
>>>>>>>> 
>>>>>>>> +        add     r11d,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12d,r13d
>>>>>>>> 
>>>>>>>> +        ror     r13d,11
>>>>>>>> 
>>>>>>>> +        add     r11d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r14d,edi
>>>>>>>> 
>>>>>>>> +        ror     edi,2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r12d
>>>>>>>> 
>>>>>>>> +        shr     r12d,3
>>>>>>>> 
>>>>>>>> +        ror     r13d,7
>>>>>>>> 
>>>>>>>> +        xor     edi,r14d
>>>>>>>> 
>>>>>>>> +        shr     r14d,10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     edi,17
>>>>>>>> 
>>>>>>>> +        xor     r12d,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,r14d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,edx
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +        mov     r14d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     edi,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,edx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     edi,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[36+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r11d
>>>>>>>> 
>>>>>>>> +        and     edi,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,r10d
>>>>>>>> 
>>>>>>>> +        xor     edi,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,edx
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edi,r11d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     r10d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r10d,r15d
>>>>>>>> 
>>>>>>>> +        add     ecx,r12d
>>>>>>>> 
>>>>>>>> +        add     r10d,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12d,r13d
>>>>>>>> 
>>>>>>>> +        ror     r13d,11
>>>>>>>> 
>>>>>>>> +        add     r10d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r14d,r15d
>>>>>>>> 
>>>>>>>> +        ror     r15d,2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r12d
>>>>>>>> 
>>>>>>>> +        shr     r12d,3
>>>>>>>> 
>>>>>>>> +        ror     r13d,7
>>>>>>>> 
>>>>>>>> +        xor     r15d,r14d
>>>>>>>> 
>>>>>>>> +        shr     r14d,10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r15d,17
>>>>>>>> 
>>>>>>>> +        xor     r12d,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r14d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,ecx
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +        mov     r14d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r15d,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r15d,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[40+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r10d
>>>>>>>> 
>>>>>>>> +        and     r15d,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,r9d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,ecx
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15d,r10d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     r9d,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r9d,edi
>>>>>>>> 
>>>>>>>> +        add     ebx,r12d
>>>>>>>> 
>>>>>>>> +        add     r9d,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12d,r13d
>>>>>>>> 
>>>>>>>> +        ror     r13d,11
>>>>>>>> 
>>>>>>>> +        add     r9d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r14d,edi
>>>>>>>> 
>>>>>>>> +        ror     edi,2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r12d
>>>>>>>> 
>>>>>>>> +        shr     r12d,3
>>>>>>>> 
>>>>>>>> +        ror     r13d,7
>>>>>>>> 
>>>>>>>> +        xor     edi,r14d
>>>>>>>> 
>>>>>>>> +        shr     r14d,10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     edi,17
>>>>>>>> 
>>>>>>>> +        xor     r12d,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,r14d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,ebx
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +        mov     r14d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     edi,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[44+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r9d
>>>>>>>> 
>>>>>>>> +        and     edi,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,r8d
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,ebx
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edi,r9d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edi,r10d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     r8d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r8d,r15d
>>>>>>>> 
>>>>>>>> +        add     eax,r12d
>>>>>>>> 
>>>>>>>> +        add     r8d,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12d,r13d
>>>>>>>> 
>>>>>>>> +        ror     r13d,11
>>>>>>>> 
>>>>>>>> +        add     r8d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r14d,r15d
>>>>>>>> 
>>>>>>>> +        ror     r15d,2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r12d
>>>>>>>> 
>>>>>>>> +        shr     r12d,3
>>>>>>>> 
>>>>>>>> +        ror     r13d,7
>>>>>>>> 
>>>>>>>> +        xor     r15d,r14d
>>>>>>>> 
>>>>>>>> +        shr     r14d,10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r15d,17
>>>>>>>> 
>>>>>>>> +        xor     r12d,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r14d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,eax
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +        mov     r14d,r8d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r15d,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,eax
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r15d,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[48+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r8d
>>>>>>>> 
>>>>>>>> +        and     r15d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,edx
>>>>>>>> 
>>>>>>>> +        xor     r15d,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,eax
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15d,r8d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     edx,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edx,edi
>>>>>>>> 
>>>>>>>> +        add     r11d,r12d
>>>>>>>> 
>>>>>>>> +        add     edx,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12d,r13d
>>>>>>>> 
>>>>>>>> +        ror     r13d,11
>>>>>>>> 
>>>>>>>> +        add     edx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r14d,edi
>>>>>>>> 
>>>>>>>> +        ror     edi,2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r12d
>>>>>>>> 
>>>>>>>> +        shr     r12d,3
>>>>>>>> 
>>>>>>>> +        ror     r13d,7
>>>>>>>> 
>>>>>>>> +        xor     edi,r14d
>>>>>>>> 
>>>>>>>> +        shr     r14d,10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     edi,17
>>>>>>>> 
>>>>>>>> +        xor     r12d,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,r14d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,r11d
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +        mov     r14d,edx
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     edi,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[52+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,edx
>>>>>>>> 
>>>>>>>> +        and     edi,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,ecx
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,r11d
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edi,r8d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     ecx,r8d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     ecx,r15d
>>>>>>>> 
>>>>>>>> +        add     r10d,r12d
>>>>>>>> 
>>>>>>>> +        add     ecx,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12d,r13d
>>>>>>>> 
>>>>>>>> +        ror     r13d,11
>>>>>>>> 
>>>>>>>> +        add     ecx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r14d,r15d
>>>>>>>> 
>>>>>>>> +        ror     r15d,2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r12d
>>>>>>>> 
>>>>>>>> +        shr     r12d,3
>>>>>>>> 
>>>>>>>> +        ror     r13d,7
>>>>>>>> 
>>>>>>>> +        xor     r15d,r14d
>>>>>>>> 
>>>>>>>> +        shr     r14d,10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r15d,17
>>>>>>>> 
>>>>>>>> +        xor     r12d,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r14d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,r10d
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +        mov     r14d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r15d,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r15d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[56+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,ecx
>>>>>>>> 
>>>>>>>> +        and     r15d,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,ebx
>>>>>>>> 
>>>>>>>> +        xor     r15d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,r10d
>>>>>>>> 
>>>>>>>> +        add     r12d,r15d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15d,ecx
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15d,edx
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     ebx,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     ebx,edi
>>>>>>>> 
>>>>>>>> +        add     r9d,r12d
>>>>>>>> 
>>>>>>>> +        add     ebx,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12d,r13d
>>>>>>>> 
>>>>>>>> +        ror     r13d,11
>>>>>>>> 
>>>>>>>> +        add     ebx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r14d,edi
>>>>>>>> 
>>>>>>>> +        ror     edi,2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r12d
>>>>>>>> 
>>>>>>>> +        shr     r12d,3
>>>>>>>> 
>>>>>>>> +        ror     r13d,7
>>>>>>>> 
>>>>>>>> +        xor     edi,r14d
>>>>>>>> 
>>>>>>>> +        shr     r14d,10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     edi,17
>>>>>>>> 
>>>>>>>> +        xor     r12d,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,r14d
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13d,r9d
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +        mov     r14d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     edi,r10d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     edi,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     DWORD[60+rsp],r12d
>>>>>>>> 
>>>>>>>> +        xor     r14d,ebx
>>>>>>>> 
>>>>>>>> +        and     edi,r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        add     r12d,eax
>>>>>>>> 
>>>>>>>> +        xor     edi,r11d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r13d,r9d
>>>>>>>> 
>>>>>>>> +        add     r12d,edi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14d,ebx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        mov     eax,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r12d,r13d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     eax,r15d
>>>>>>>> 
>>>>>>>> +        add     r8d,r12d
>>>>>>>> 
>>>>>>>> +        add     eax,r12d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>>> 
>>>>>>>> +        cmp     BYTE[3+rbp],0
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$rounds_16_xx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[((64+0))+rsp]
>>>>>>>> 
>>>>>>>> +        add     eax,r14d
>>>>>>>> 
>>>>>>>> +        lea     rsi,[64+rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[((64+16))+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[88+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$epilogue:
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$SEH_end_sha256_block_data_order:
>>>>>>>> 
>>>>>>>> +ALIGN   64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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      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
>>>>>>>> 
>>>>>>>> +DB      32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
>>>>>>>> 
>>>>>>>> +DB      111,114,103,62,0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   64
>>>>>>>> 
>>>>>>>> +sha256_block_data_order_shaext:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_sha256_block_data_order_shaext:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +_shaext_shortcut:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsp,[((-88))+rsp]
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-8-80)+rax],xmm6
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-8-64)+rax],xmm7
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-8-48)+rax],xmm8
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-8-32)+rax],xmm9
>>>>>>>> 
>>>>>>>> +        movaps  XMMWORD[(-8-16)+rax],xmm10
>>>>>>>> 
>>>>>>>> +$L$prologue_shaext:
>>>>>>>> 
>>>>>>>> +        lea     rcx,[((K256+128))]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm1,XMMWORD[rdi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm2,XMMWORD[16+rdi]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,XMMWORD[((512-128))+rcx]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm1,0x1b
>>>>>>>> 
>>>>>>>> +        pshufd  xmm1,xmm1,0xb1
>>>>>>>> 
>>>>>>>> +        pshufd  xmm2,xmm2,0x1b
>>>>>>>> 
>>>>>>>> +        movdqa  xmm8,xmm7
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,202,8
>>>>>>>> 
>>>>>>>> +        punpcklqdq      xmm2,xmm0
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_shaext
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$oop_shaext:
>>>>>>>> 
>>>>>>>> +        movdqu  xmm3,XMMWORD[rsi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm4,XMMWORD[16+rsi]
>>>>>>>> 
>>>>>>>> +        movdqu  xmm5,XMMWORD[32+rsi]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,223
>>>>>>>> 
>>>>>>>> +        movdqu  xmm6,XMMWORD[48+rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((0-128))+rcx]
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm3
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,231
>>>>>>>> 
>>>>>>>> +        movdqa  xmm10,xmm2
>>>>>>>> 
>>>>>>>> +DB      15,56,203,209
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +        movdqa  xmm9,xmm1
>>>>>>>> 
>>>>>>>> +DB      15,56,203,202
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((32-128))+rcx]
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm4
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,239
>>>>>>>> 
>>>>>>>> +DB      15,56,203,209
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>> 
>>>>>>>> +        lea     rsi,[64+rsi]
>>>>>>>> 
>>>>>>>> +DB      15,56,204,220
>>>>>>>> 
>>>>>>>> +DB      15,56,203,202
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((64-128))+rcx]
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm5
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,247
>>>>>>>> 
>>>>>>>> +DB      15,56,203,209
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,253,4
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm7
>>>>>>>> 
>>>>>>>> +DB      15,56,204,229
>>>>>>>> 
>>>>>>>> +DB      15,56,203,202
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((96-128))+rcx]
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm6
>>>>>>>> 
>>>>>>>> +DB      15,56,205,222
>>>>>>>> 
>>>>>>>> +DB      15,56,203,209
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm3
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,254,4
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm7
>>>>>>>> 
>>>>>>>> +DB      15,56,204,238
>>>>>>>> 
>>>>>>>> +DB      15,56,203,202
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((128-128))+rcx]
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm3
>>>>>>>> 
>>>>>>>> +DB      15,56,205,227
>>>>>>>> 
>>>>>>>> +DB      15,56,203,209
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm4
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,251,4
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +DB      15,56,204,243
>>>>>>>> 
>>>>>>>> +DB      15,56,203,202
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((160-128))+rcx]
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm4
>>>>>>>> 
>>>>>>>> +DB      15,56,205,236
>>>>>>>> 
>>>>>>>> +DB      15,56,203,209
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,252,4
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +DB      15,56,204,220
>>>>>>>> 
>>>>>>>> +DB      15,56,203,202
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((192-128))+rcx]
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm5
>>>>>>>> 
>>>>>>>> +DB      15,56,205,245
>>>>>>>> 
>>>>>>>> +DB      15,56,203,209
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,253,4
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm7
>>>>>>>> 
>>>>>>>> +DB      15,56,204,229
>>>>>>>> 
>>>>>>>> +DB      15,56,203,202
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((224-128))+rcx]
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm6
>>>>>>>> 
>>>>>>>> +DB      15,56,205,222
>>>>>>>> 
>>>>>>>> +DB      15,56,203,209
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm3
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,254,4
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm7
>>>>>>>> 
>>>>>>>> +DB      15,56,204,238
>>>>>>>> 
>>>>>>>> +DB      15,56,203,202
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((256-128))+rcx]
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm3
>>>>>>>> 
>>>>>>>> +DB      15,56,205,227
>>>>>>>> 
>>>>>>>> +DB      15,56,203,209
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm4
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,251,4
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +DB      15,56,204,243
>>>>>>>> 
>>>>>>>> +DB      15,56,203,202
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((288-128))+rcx]
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm4
>>>>>>>> 
>>>>>>>> +DB      15,56,205,236
>>>>>>>> 
>>>>>>>> +DB      15,56,203,209
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,252,4
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +DB      15,56,204,220
>>>>>>>> 
>>>>>>>> +DB      15,56,203,202
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((320-128))+rcx]
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm5
>>>>>>>> 
>>>>>>>> +DB      15,56,205,245
>>>>>>>> 
>>>>>>>> +DB      15,56,203,209
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,253,4
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm7
>>>>>>>> 
>>>>>>>> +DB      15,56,204,229
>>>>>>>> 
>>>>>>>> +DB      15,56,203,202
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((352-128))+rcx]
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm6
>>>>>>>> 
>>>>>>>> +DB      15,56,205,222
>>>>>>>> 
>>>>>>>> +DB      15,56,203,209
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm3
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,254,4
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm7
>>>>>>>> 
>>>>>>>> +DB      15,56,204,238
>>>>>>>> 
>>>>>>>> +DB      15,56,203,202
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((384-128))+rcx]
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm3
>>>>>>>> 
>>>>>>>> +DB      15,56,205,227
>>>>>>>> 
>>>>>>>> +DB      15,56,203,209
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm4
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,251,4
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm7
>>>>>>>> 
>>>>>>>> +DB      15,56,204,243
>>>>>>>> 
>>>>>>>> +DB      15,56,203,202
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((416-128))+rcx]
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm4
>>>>>>>> 
>>>>>>>> +DB      15,56,205,236
>>>>>>>> 
>>>>>>>> +DB      15,56,203,209
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,252,4
>>>>>>>> 
>>>>>>>> +DB      15,56,203,202
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm7
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((448-128))+rcx]
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm5
>>>>>>>> 
>>>>>>>> +DB      15,56,203,209
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>> 
>>>>>>>> +DB      15,56,205,245
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>>> 
>>>>>>>> +DB      15,56,203,202
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqa  xmm0,XMMWORD[((480-128))+rcx]
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm6
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +DB      15,56,203,209
>>>>>>>> 
>>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>>> 
>>>>>>>> +        dec     rdx
>>>>>>>> 
>>>>>>>> +        nop
>>>>>>>> 
>>>>>>>> +DB      15,56,203,202
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm10
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm9
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_shaext
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        pshufd  xmm2,xmm2,0xb1
>>>>>>>> 
>>>>>>>> +        pshufd  xmm7,xmm1,0x1b
>>>>>>>> 
>>>>>>>> +        pshufd  xmm1,xmm1,0xb1
>>>>>>>> 
>>>>>>>> +        punpckhqdq      xmm1,xmm2
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,215,8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[rdi],xmm1
>>>>>>>> 
>>>>>>>> +        movdqu  XMMWORD[16+rdi],xmm2
>>>>>>>> 
>>>>>>>> +        movaps  xmm6,XMMWORD[((-8-80))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm7,XMMWORD[((-8-64))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm8,XMMWORD[((-8-48))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm9,XMMWORD[((-8-32))+rax]
>>>>>>>> 
>>>>>>>> +        movaps  xmm10,XMMWORD[((-8-16))+rax]
>>>>>>>> 
>>>>>>>> +        mov     rsp,rax
>>>>>>>> 
>>>>>>>> +$L$epilogue_shaext:
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$SEH_end_sha256_block_data_order_shaext:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   64
>>>>>>>> 
>>>>>>>> +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:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$ssse3_shortcut:
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        shl     rdx,4
>>>>>>>> 
>>>>>>>> +        sub     rsp,160
>>>>>>>> 
>>>>>>>> +        lea     rdx,[rdx*4+rsi]
>>>>>>>> 
>>>>>>>> +        and     rsp,-64
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((64+0))+rsp],rdi
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((64+8))+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((64+16))+rsp],rdx
>>>>>>>> 
>>>>>>>> +        mov     QWORD[88+rsp],rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[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_ssse3
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$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[48+rsi]
>>>>>>>> 
>>>>>>>> +        lea     rbp,[K256]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,207
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,XMMWORD[rbp]
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,XMMWORD[32+rbp]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,215
>>>>>>>> 
>>>>>>>> +        paddd   xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,XMMWORD[64+rbp]
>>>>>>>> 
>>>>>>>> +DB      102,15,56,0,223
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,XMMWORD[96+rbp]
>>>>>>>> 
>>>>>>>> +        paddd   xmm5,xmm1
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm2
>>>>>>>> 
>>>>>>>> +        paddd   xmm7,xmm3
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[rsp],xmm4
>>>>>>>> 
>>>>>>>> +        mov     r14d,eax
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm5
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm6
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm7
>>>>>>>> 
>>>>>>>> +        mov     r13d,r8d
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ssse3_00_47
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ssse3_00_47:
>>>>>>>> 
>>>>>>>> +        sub     rbp,-128
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm1
>>>>>>>> 
>>>>>>>> +        mov     eax,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,r9d
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm3
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,r8d
>>>>>>>> 
>>>>>>>> +        xor     r12d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,eax
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,224,4
>>>>>>>> 
>>>>>>>> +        and     r12d,r8d
>>>>>>>> 
>>>>>>>> +        xor     r13d,r8d
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,250,4
>>>>>>>> 
>>>>>>>> +        add     r11d,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,eax
>>>>>>>> 
>>>>>>>> +        xor     r12d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>> 
>>>>>>>> +        xor     r15d,ebx
>>>>>>>> 
>>>>>>>> +        add     r11d,r12d
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm4
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,3
>>>>>>>> 
>>>>>>>> +        xor     r14d,eax
>>>>>>>> 
>>>>>>>> +        add     r11d,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm7
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     edx,r11d
>>>>>>>> 
>>>>>>>> +        psrld   xmm6,7
>>>>>>>> 
>>>>>>>> +        add     r11d,edi
>>>>>>>> 
>>>>>>>> +        mov     r13d,edx
>>>>>>>> 
>>>>>>>> +        pshufd  xmm7,xmm3,250
>>>>>>>> 
>>>>>>>> +        add     r14d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        pslld   xmm5,14
>>>>>>>> 
>>>>>>>> +        mov     r11d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,r8d
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,edx
>>>>>>>> 
>>>>>>>> +        xor     r12d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        psrld   xmm6,11
>>>>>>>> 
>>>>>>>> +        xor     r14d,r11d
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        and     r12d,edx
>>>>>>>> 
>>>>>>>> +        xor     r13d,edx
>>>>>>>> 
>>>>>>>> +        pslld   xmm5,11
>>>>>>>> 
>>>>>>>> +        add     r10d,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,r11d
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +        xor     r12d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        add     r10d,r12d
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        xor     r14d,r11d
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,10
>>>>>>>> 
>>>>>>>> +        add     r10d,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,eax
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm4
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     ecx,r10d
>>>>>>>> 
>>>>>>>> +        psrlq   xmm6,17
>>>>>>>> 
>>>>>>>> +        add     r10d,r15d
>>>>>>>> 
>>>>>>>> +        mov     r13d,ecx
>>>>>>>> 
>>>>>>>> +        add     r14d,r10d
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r10d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,edx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        psrlq   xmm6,2
>>>>>>>> 
>>>>>>>> +        xor     r13d,ecx
>>>>>>>> 
>>>>>>>> +        xor     r12d,r8d
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,r10d
>>>>>>>> 
>>>>>>>> +        and     r12d,ecx
>>>>>>>> 
>>>>>>>> +        pshufd  xmm7,xmm7,128
>>>>>>>> 
>>>>>>>> +        xor     r13d,ecx
>>>>>>>> 
>>>>>>>> +        add     r9d,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,r10d
>>>>>>>> 
>>>>>>>> +        psrldq  xmm7,8
>>>>>>>> 
>>>>>>>> +        xor     r12d,r8d
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r15d,r11d
>>>>>>>> 
>>>>>>>> +        add     r9d,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm7
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r10d
>>>>>>>> 
>>>>>>>> +        add     r9d,r13d
>>>>>>>> 
>>>>>>>> +        pshufd  xmm7,xmm0,80
>>>>>>>> 
>>>>>>>> +        xor     edi,r11d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     ebx,r9d
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        add     r9d,edi
>>>>>>>> 
>>>>>>>> +        mov     r13d,ebx
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,10
>>>>>>>> 
>>>>>>>> +        add     r14d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        psrlq   xmm6,17
>>>>>>>> 
>>>>>>>> +        mov     r9d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,ecx
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,ebx
>>>>>>>> 
>>>>>>>> +        xor     r12d,edx
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,r9d
>>>>>>>> 
>>>>>>>> +        psrlq   xmm6,2
>>>>>>>> 
>>>>>>>> +        and     r12d,ebx
>>>>>>>> 
>>>>>>>> +        xor     r13d,ebx
>>>>>>>> 
>>>>>>>> +        add     r8d,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        mov     edi,r9d
>>>>>>>> 
>>>>>>>> +        xor     r12d,edx
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        pshufd  xmm7,xmm7,8
>>>>>>>> 
>>>>>>>> +        xor     edi,r10d
>>>>>>>> 
>>>>>>>> +        add     r8d,r12d
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,XMMWORD[rbp]
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        pslldq  xmm7,8
>>>>>>>> 
>>>>>>>> +        xor     r14d,r9d
>>>>>>>> 
>>>>>>>> +        add     r8d,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r10d
>>>>>>>> 
>>>>>>>> +        paddd   xmm0,xmm7
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     eax,r8d
>>>>>>>> 
>>>>>>>> +        add     r8d,r15d
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm0
>>>>>>>> 
>>>>>>>> +        mov     r13d,eax
>>>>>>>> 
>>>>>>>> +        add     r14d,r8d
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[rsp],xmm6
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm2
>>>>>>>> 
>>>>>>>> +        mov     r8d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,ebx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm0
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,eax
>>>>>>>> 
>>>>>>>> +        xor     r12d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,r8d
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,225,4
>>>>>>>> 
>>>>>>>> +        and     r12d,eax
>>>>>>>> 
>>>>>>>> +        xor     r13d,eax
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,251,4
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,r8d
>>>>>>>> 
>>>>>>>> +        xor     r12d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>> 
>>>>>>>> +        xor     r15d,r9d
>>>>>>>> 
>>>>>>>> +        add     edx,r12d
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm4
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,3
>>>>>>>> 
>>>>>>>> +        xor     r14d,r8d
>>>>>>>> 
>>>>>>>> +        add     edx,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,r9d
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm7
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r11d,edx
>>>>>>>> 
>>>>>>>> +        psrld   xmm6,7
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        mov     r13d,r11d
>>>>>>>> 
>>>>>>>> +        pshufd  xmm7,xmm0,250
>>>>>>>> 
>>>>>>>> +        add     r14d,edx
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        pslld   xmm5,14
>>>>>>>> 
>>>>>>>> +        mov     edx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,r11d
>>>>>>>> 
>>>>>>>> +        xor     r12d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        psrld   xmm6,11
>>>>>>>> 
>>>>>>>> +        xor     r14d,edx
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        and     r12d,r11d
>>>>>>>> 
>>>>>>>> +        xor     r13d,r11d
>>>>>>>> 
>>>>>>>> +        pslld   xmm5,11
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +        xor     r12d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        xor     edi,r8d
>>>>>>>> 
>>>>>>>> +        add     ecx,r12d
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        xor     r14d,edx
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,10
>>>>>>>> 
>>>>>>>> +        add     ecx,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r8d
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm4
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r10d,ecx
>>>>>>>> 
>>>>>>>> +        psrlq   xmm6,17
>>>>>>>> 
>>>>>>>> +        add     ecx,r15d
>>>>>>>> 
>>>>>>>> +        mov     r13d,r10d
>>>>>>>> 
>>>>>>>> +        add     r14d,ecx
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     ecx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        psrlq   xmm6,2
>>>>>>>> 
>>>>>>>> +        xor     r13d,r10d
>>>>>>>> 
>>>>>>>> +        xor     r12d,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,ecx
>>>>>>>> 
>>>>>>>> +        and     r12d,r10d
>>>>>>>> 
>>>>>>>> +        pshufd  xmm7,xmm7,128
>>>>>>>> 
>>>>>>>> +        xor     r13d,r10d
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,ecx
>>>>>>>> 
>>>>>>>> +        psrldq  xmm7,8
>>>>>>>> 
>>>>>>>> +        xor     r12d,eax
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r15d,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm7
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        xor     r14d,ecx
>>>>>>>> 
>>>>>>>> +        add     ebx,r13d
>>>>>>>> 
>>>>>>>> +        pshufd  xmm7,xmm1,80
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r9d,ebx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        mov     r13d,r9d
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,10
>>>>>>>> 
>>>>>>>> +        add     r14d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        psrlq   xmm6,17
>>>>>>>> 
>>>>>>>> +        mov     ebx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,r10d
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,r9d
>>>>>>>> 
>>>>>>>> +        xor     r12d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,ebx
>>>>>>>> 
>>>>>>>> +        psrlq   xmm6,2
>>>>>>>> 
>>>>>>>> +        and     r12d,r9d
>>>>>>>> 
>>>>>>>> +        xor     r13d,r9d
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     r12d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        pshufd  xmm7,xmm7,8
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,r12d
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,XMMWORD[32+rbp]
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        pslldq  xmm7,8
>>>>>>>> 
>>>>>>>> +        xor     r14d,ebx
>>>>>>>> 
>>>>>>>> +        add     eax,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,ecx
>>>>>>>> 
>>>>>>>> +        paddd   xmm1,xmm7
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r8d,eax
>>>>>>>> 
>>>>>>>> +        add     eax,r15d
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm1
>>>>>>>> 
>>>>>>>> +        mov     r13d,r8d
>>>>>>>> 
>>>>>>>> +        add     r14d,eax
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm6
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm3
>>>>>>>> 
>>>>>>>> +        mov     eax,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,r9d
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm1
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,r8d
>>>>>>>> 
>>>>>>>> +        xor     r12d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,eax
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,226,4
>>>>>>>> 
>>>>>>>> +        and     r12d,r8d
>>>>>>>> 
>>>>>>>> +        xor     r13d,r8d
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,248,4
>>>>>>>> 
>>>>>>>> +        add     r11d,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,eax
>>>>>>>> 
>>>>>>>> +        xor     r12d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>> 
>>>>>>>> +        xor     r15d,ebx
>>>>>>>> 
>>>>>>>> +        add     r11d,r12d
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm4
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,3
>>>>>>>> 
>>>>>>>> +        xor     r14d,eax
>>>>>>>> 
>>>>>>>> +        add     r11d,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm7
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     edx,r11d
>>>>>>>> 
>>>>>>>> +        psrld   xmm6,7
>>>>>>>> 
>>>>>>>> +        add     r11d,edi
>>>>>>>> 
>>>>>>>> +        mov     r13d,edx
>>>>>>>> 
>>>>>>>> +        pshufd  xmm7,xmm1,250
>>>>>>>> 
>>>>>>>> +        add     r14d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        pslld   xmm5,14
>>>>>>>> 
>>>>>>>> +        mov     r11d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,r8d
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,edx
>>>>>>>> 
>>>>>>>> +        xor     r12d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        psrld   xmm6,11
>>>>>>>> 
>>>>>>>> +        xor     r14d,r11d
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        and     r12d,edx
>>>>>>>> 
>>>>>>>> +        xor     r13d,edx
>>>>>>>> 
>>>>>>>> +        pslld   xmm5,11
>>>>>>>> 
>>>>>>>> +        add     r10d,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,r11d
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +        xor     r12d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        add     r10d,r12d
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        xor     r14d,r11d
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,10
>>>>>>>> 
>>>>>>>> +        add     r10d,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,eax
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm4
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     ecx,r10d
>>>>>>>> 
>>>>>>>> +        psrlq   xmm6,17
>>>>>>>> 
>>>>>>>> +        add     r10d,r15d
>>>>>>>> 
>>>>>>>> +        mov     r13d,ecx
>>>>>>>> 
>>>>>>>> +        add     r14d,r10d
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r10d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,edx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        psrlq   xmm6,2
>>>>>>>> 
>>>>>>>> +        xor     r13d,ecx
>>>>>>>> 
>>>>>>>> +        xor     r12d,r8d
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,r10d
>>>>>>>> 
>>>>>>>> +        and     r12d,ecx
>>>>>>>> 
>>>>>>>> +        pshufd  xmm7,xmm7,128
>>>>>>>> 
>>>>>>>> +        xor     r13d,ecx
>>>>>>>> 
>>>>>>>> +        add     r9d,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,r10d
>>>>>>>> 
>>>>>>>> +        psrldq  xmm7,8
>>>>>>>> 
>>>>>>>> +        xor     r12d,r8d
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r15d,r11d
>>>>>>>> 
>>>>>>>> +        add     r9d,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm7
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r10d
>>>>>>>> 
>>>>>>>> +        add     r9d,r13d
>>>>>>>> 
>>>>>>>> +        pshufd  xmm7,xmm2,80
>>>>>>>> 
>>>>>>>> +        xor     edi,r11d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     ebx,r9d
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        add     r9d,edi
>>>>>>>> 
>>>>>>>> +        mov     r13d,ebx
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,10
>>>>>>>> 
>>>>>>>> +        add     r14d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        psrlq   xmm6,17
>>>>>>>> 
>>>>>>>> +        mov     r9d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,ecx
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,ebx
>>>>>>>> 
>>>>>>>> +        xor     r12d,edx
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,r9d
>>>>>>>> 
>>>>>>>> +        psrlq   xmm6,2
>>>>>>>> 
>>>>>>>> +        and     r12d,ebx
>>>>>>>> 
>>>>>>>> +        xor     r13d,ebx
>>>>>>>> 
>>>>>>>> +        add     r8d,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        mov     edi,r9d
>>>>>>>> 
>>>>>>>> +        xor     r12d,edx
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        pshufd  xmm7,xmm7,8
>>>>>>>> 
>>>>>>>> +        xor     edi,r10d
>>>>>>>> 
>>>>>>>> +        add     r8d,r12d
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,XMMWORD[64+rbp]
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        pslldq  xmm7,8
>>>>>>>> 
>>>>>>>> +        xor     r14d,r9d
>>>>>>>> 
>>>>>>>> +        add     r8d,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r10d
>>>>>>>> 
>>>>>>>> +        paddd   xmm2,xmm7
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     eax,r8d
>>>>>>>> 
>>>>>>>> +        add     r8d,r15d
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm2
>>>>>>>> 
>>>>>>>> +        mov     r13d,eax
>>>>>>>> 
>>>>>>>> +        add     r14d,r8d
>>>>>>>> 
>>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm6
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>>> 
>>>>>>>> +        mov     r8d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,ebx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm7,xmm2
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,eax
>>>>>>>> 
>>>>>>>> +        xor     r12d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,r8d
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,227,4
>>>>>>>> 
>>>>>>>> +        and     r12d,eax
>>>>>>>> 
>>>>>>>> +        xor     r13d,eax
>>>>>>>> 
>>>>>>>> +DB      102,15,58,15,249,4
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,r8d
>>>>>>>> 
>>>>>>>> +        xor     r12d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>>> 
>>>>>>>> +        xor     r15d,r9d
>>>>>>>> 
>>>>>>>> +        add     edx,r12d
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm4
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        psrld   xmm4,3
>>>>>>>> 
>>>>>>>> +        xor     r14d,r8d
>>>>>>>> 
>>>>>>>> +        add     edx,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,r9d
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm7
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r11d,edx
>>>>>>>> 
>>>>>>>> +        psrld   xmm6,7
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        mov     r13d,r11d
>>>>>>>> 
>>>>>>>> +        pshufd  xmm7,xmm2,250
>>>>>>>> 
>>>>>>>> +        add     r14d,edx
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        pslld   xmm5,14
>>>>>>>> 
>>>>>>>> +        mov     edx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,r11d
>>>>>>>> 
>>>>>>>> +        xor     r12d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        psrld   xmm6,11
>>>>>>>> 
>>>>>>>> +        xor     r14d,edx
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        and     r12d,r11d
>>>>>>>> 
>>>>>>>> +        xor     r13d,r11d
>>>>>>>> 
>>>>>>>> +        pslld   xmm5,11
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm6
>>>>>>>> 
>>>>>>>> +        xor     r12d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        xor     edi,r8d
>>>>>>>> 
>>>>>>>> +        add     ecx,r12d
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm5
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        xor     r14d,edx
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,10
>>>>>>>> 
>>>>>>>> +        add     ecx,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r8d
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm4
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r10d,ecx
>>>>>>>> 
>>>>>>>> +        psrlq   xmm6,17
>>>>>>>> 
>>>>>>>> +        add     ecx,r15d
>>>>>>>> 
>>>>>>>> +        mov     r13d,r10d
>>>>>>>> 
>>>>>>>> +        add     r14d,ecx
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     ecx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        psrlq   xmm6,2
>>>>>>>> 
>>>>>>>> +        xor     r13d,r10d
>>>>>>>> 
>>>>>>>> +        xor     r12d,eax
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,ecx
>>>>>>>> 
>>>>>>>> +        and     r12d,r10d
>>>>>>>> 
>>>>>>>> +        pshufd  xmm7,xmm7,128
>>>>>>>> 
>>>>>>>> +        xor     r13d,r10d
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,ecx
>>>>>>>> 
>>>>>>>> +        psrldq  xmm7,8
>>>>>>>> 
>>>>>>>> +        xor     r12d,eax
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r15d,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm7
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        xor     r14d,ecx
>>>>>>>> 
>>>>>>>> +        add     ebx,r13d
>>>>>>>> 
>>>>>>>> +        pshufd  xmm7,xmm3,80
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r9d,ebx
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        mov     r13d,r9d
>>>>>>>> 
>>>>>>>> +        psrld   xmm7,10
>>>>>>>> 
>>>>>>>> +        add     r14d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        psrlq   xmm6,17
>>>>>>>> 
>>>>>>>> +        mov     ebx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,r10d
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,r9d
>>>>>>>> 
>>>>>>>> +        xor     r12d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,ebx
>>>>>>>> 
>>>>>>>> +        psrlq   xmm6,2
>>>>>>>> 
>>>>>>>> +        and     r12d,r9d
>>>>>>>> 
>>>>>>>> +        xor     r13d,r9d
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        pxor    xmm7,xmm6
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     r12d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        pshufd  xmm7,xmm7,8
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,r12d
>>>>>>>> 
>>>>>>>> +        movdqa  xmm6,XMMWORD[96+rbp]
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        pslldq  xmm7,8
>>>>>>>> 
>>>>>>>> +        xor     r14d,ebx
>>>>>>>> 
>>>>>>>> +        add     eax,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,ecx
>>>>>>>> 
>>>>>>>> +        paddd   xmm3,xmm7
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r8d,eax
>>>>>>>> 
>>>>>>>> +        add     eax,r15d
>>>>>>>> 
>>>>>>>> +        paddd   xmm6,xmm3
>>>>>>>> 
>>>>>>>> +        mov     r13d,r8d
>>>>>>>> 
>>>>>>>> +        add     r14d,eax
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,r8d
>>>>>>>> 
>>>>>>>> +        xor     r12d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,eax
>>>>>>>> 
>>>>>>>> +        and     r12d,r8d
>>>>>>>> 
>>>>>>>> +        xor     r13d,r8d
>>>>>>>> 
>>>>>>>> +        add     r11d,DWORD[rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,eax
>>>>>>>> 
>>>>>>>> +        xor     r12d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r15d,ebx
>>>>>>>> 
>>>>>>>> +        add     r11d,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        xor     r14d,eax
>>>>>>>> 
>>>>>>>> +        add     r11d,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     edx,r11d
>>>>>>>> 
>>>>>>>> +        add     r11d,edi
>>>>>>>> 
>>>>>>>> +        mov     r13d,edx
>>>>>>>> 
>>>>>>>> +        add     r14d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r11d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,r8d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,edx
>>>>>>>> 
>>>>>>>> +        xor     r12d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,r11d
>>>>>>>> 
>>>>>>>> +        and     r12d,edx
>>>>>>>> 
>>>>>>>> +        xor     r13d,edx
>>>>>>>> 
>>>>>>>> +        add     r10d,DWORD[4+rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,r11d
>>>>>>>> 
>>>>>>>> +        xor     r12d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        add     r10d,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        xor     r14d,r11d
>>>>>>>> 
>>>>>>>> +        add     r10d,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,eax
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     ecx,r10d
>>>>>>>> 
>>>>>>>> +        add     r10d,r15d
>>>>>>>> 
>>>>>>>> +        mov     r13d,ecx
>>>>>>>> 
>>>>>>>> +        add     r14d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r10d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,edx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,ecx
>>>>>>>> 
>>>>>>>> +        xor     r12d,r8d
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,r10d
>>>>>>>> 
>>>>>>>> +        and     r12d,ecx
>>>>>>>> 
>>>>>>>> +        xor     r13d,ecx
>>>>>>>> 
>>>>>>>> +        add     r9d,DWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,r10d
>>>>>>>> 
>>>>>>>> +        xor     r12d,r8d
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r15d,r11d
>>>>>>>> 
>>>>>>>> +        add     r9d,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r10d
>>>>>>>> 
>>>>>>>> +        add     r9d,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,r11d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     ebx,r9d
>>>>>>>> 
>>>>>>>> +        add     r9d,edi
>>>>>>>> 
>>>>>>>> +        mov     r13d,ebx
>>>>>>>> 
>>>>>>>> +        add     r14d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r9d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,ebx
>>>>>>>> 
>>>>>>>> +        xor     r12d,edx
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,r9d
>>>>>>>> 
>>>>>>>> +        and     r12d,ebx
>>>>>>>> 
>>>>>>>> +        xor     r13d,ebx
>>>>>>>> 
>>>>>>>> +        add     r8d,DWORD[12+rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,r9d
>>>>>>>> 
>>>>>>>> +        xor     r12d,edx
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     edi,r10d
>>>>>>>> 
>>>>>>>> +        add     r8d,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        xor     r14d,r9d
>>>>>>>> 
>>>>>>>> +        add     r8d,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     eax,r8d
>>>>>>>> 
>>>>>>>> +        add     r8d,r15d
>>>>>>>> 
>>>>>>>> +        mov     r13d,eax
>>>>>>>> 
>>>>>>>> +        add     r14d,r8d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r8d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,eax
>>>>>>>> 
>>>>>>>> +        xor     r12d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,r8d
>>>>>>>> 
>>>>>>>> +        and     r12d,eax
>>>>>>>> 
>>>>>>>> +        xor     r13d,eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,r8d
>>>>>>>> 
>>>>>>>> +        xor     r12d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r15d,r9d
>>>>>>>> 
>>>>>>>> +        add     edx,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r8d
>>>>>>>> 
>>>>>>>> +        add     edx,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,r9d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r11d,edx
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        mov     r13d,r11d
>>>>>>>> 
>>>>>>>> +        add     r14d,edx
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     edx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,eax
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,r11d
>>>>>>>> 
>>>>>>>> +        xor     r12d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,edx
>>>>>>>> 
>>>>>>>> +        and     r12d,r11d
>>>>>>>> 
>>>>>>>> +        xor     r13d,r11d
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[20+rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        xor     r12d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     edi,r8d
>>>>>>>> 
>>>>>>>> +        add     ecx,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        xor     r14d,edx
>>>>>>>> 
>>>>>>>> +        add     ecx,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r8d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r10d,ecx
>>>>>>>> 
>>>>>>>> +        add     ecx,r15d
>>>>>>>> 
>>>>>>>> +        mov     r13d,r10d
>>>>>>>> 
>>>>>>>> +        add     r14d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     ecx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,r10d
>>>>>>>> 
>>>>>>>> +        xor     r12d,eax
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,ecx
>>>>>>>> 
>>>>>>>> +        and     r12d,r10d
>>>>>>>> 
>>>>>>>> +        xor     r13d,r10d
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,ecx
>>>>>>>> 
>>>>>>>> +        xor     r12d,eax
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r15d,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        xor     r14d,ecx
>>>>>>>> 
>>>>>>>> +        add     ebx,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r9d,ebx
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        mov     r13d,r9d
>>>>>>>> 
>>>>>>>> +        add     r14d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     ebx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,r9d
>>>>>>>> 
>>>>>>>> +        xor     r12d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,ebx
>>>>>>>> 
>>>>>>>> +        and     r12d,r9d
>>>>>>>> 
>>>>>>>> +        xor     r13d,r9d
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[28+rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     r12d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        xor     r14d,ebx
>>>>>>>> 
>>>>>>>> +        add     eax,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r8d,eax
>>>>>>>> 
>>>>>>>> +        add     eax,r15d
>>>>>>>> 
>>>>>>>> +        mov     r13d,r8d
>>>>>>>> 
>>>>>>>> +        add     r14d,eax
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     eax,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,r8d
>>>>>>>> 
>>>>>>>> +        xor     r12d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,eax
>>>>>>>> 
>>>>>>>> +        and     r12d,r8d
>>>>>>>> 
>>>>>>>> +        xor     r13d,r8d
>>>>>>>> 
>>>>>>>> +        add     r11d,DWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,eax
>>>>>>>> 
>>>>>>>> +        xor     r12d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r15d,ebx
>>>>>>>> 
>>>>>>>> +        add     r11d,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        xor     r14d,eax
>>>>>>>> 
>>>>>>>> +        add     r11d,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,ebx
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     edx,r11d
>>>>>>>> 
>>>>>>>> +        add     r11d,edi
>>>>>>>> 
>>>>>>>> +        mov     r13d,edx
>>>>>>>> 
>>>>>>>> +        add     r14d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r11d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,r8d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,edx
>>>>>>>> 
>>>>>>>> +        xor     r12d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,r11d
>>>>>>>> 
>>>>>>>> +        and     r12d,edx
>>>>>>>> 
>>>>>>>> +        xor     r13d,edx
>>>>>>>> 
>>>>>>>> +        add     r10d,DWORD[36+rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,r11d
>>>>>>>> 
>>>>>>>> +        xor     r12d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     edi,eax
>>>>>>>> 
>>>>>>>> +        add     r10d,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        xor     r14d,r11d
>>>>>>>> 
>>>>>>>> +        add     r10d,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,eax
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     ecx,r10d
>>>>>>>> 
>>>>>>>> +        add     r10d,r15d
>>>>>>>> 
>>>>>>>> +        mov     r13d,ecx
>>>>>>>> 
>>>>>>>> +        add     r14d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r10d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,edx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,ecx
>>>>>>>> 
>>>>>>>> +        xor     r12d,r8d
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,r10d
>>>>>>>> 
>>>>>>>> +        and     r12d,ecx
>>>>>>>> 
>>>>>>>> +        xor     r13d,ecx
>>>>>>>> 
>>>>>>>> +        add     r9d,DWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,r10d
>>>>>>>> 
>>>>>>>> +        xor     r12d,r8d
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r15d,r11d
>>>>>>>> 
>>>>>>>> +        add     r9d,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r10d
>>>>>>>> 
>>>>>>>> +        add     r9d,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,r11d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     ebx,r9d
>>>>>>>> 
>>>>>>>> +        add     r9d,edi
>>>>>>>> 
>>>>>>>> +        mov     r13d,ebx
>>>>>>>> 
>>>>>>>> +        add     r14d,r9d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r9d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,ebx
>>>>>>>> 
>>>>>>>> +        xor     r12d,edx
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,r9d
>>>>>>>> 
>>>>>>>> +        and     r12d,ebx
>>>>>>>> 
>>>>>>>> +        xor     r13d,ebx
>>>>>>>> 
>>>>>>>> +        add     r8d,DWORD[44+rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,r9d
>>>>>>>> 
>>>>>>>> +        xor     r12d,edx
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     edi,r10d
>>>>>>>> 
>>>>>>>> +        add     r8d,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        xor     r14d,r9d
>>>>>>>> 
>>>>>>>> +        add     r8d,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     eax,r8d
>>>>>>>> 
>>>>>>>> +        add     r8d,r15d
>>>>>>>> 
>>>>>>>> +        mov     r13d,eax
>>>>>>>> 
>>>>>>>> +        add     r14d,r8d
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     r8d,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,eax
>>>>>>>> 
>>>>>>>> +        xor     r12d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,r8d
>>>>>>>> 
>>>>>>>> +        and     r12d,eax
>>>>>>>> 
>>>>>>>> +        xor     r13d,eax
>>>>>>>> 
>>>>>>>> +        add     edx,DWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,r8d
>>>>>>>> 
>>>>>>>> +        xor     r12d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r15d,r9d
>>>>>>>> 
>>>>>>>> +        add     edx,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        xor     r14d,r8d
>>>>>>>> 
>>>>>>>> +        add     edx,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,r9d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r11d,edx
>>>>>>>> 
>>>>>>>> +        add     edx,edi
>>>>>>>> 
>>>>>>>> +        mov     r13d,r11d
>>>>>>>> 
>>>>>>>> +        add     r14d,edx
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     edx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,eax
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,r11d
>>>>>>>> 
>>>>>>>> +        xor     r12d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,edx
>>>>>>>> 
>>>>>>>> +        and     r12d,r11d
>>>>>>>> 
>>>>>>>> +        xor     r13d,r11d
>>>>>>>> 
>>>>>>>> +        add     ecx,DWORD[52+rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,edx
>>>>>>>> 
>>>>>>>> +        xor     r12d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     edi,r8d
>>>>>>>> 
>>>>>>>> +        add     ecx,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        xor     r14d,edx
>>>>>>>> 
>>>>>>>> +        add     ecx,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,r8d
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r10d,ecx
>>>>>>>> 
>>>>>>>> +        add     ecx,r15d
>>>>>>>> 
>>>>>>>> +        mov     r13d,r10d
>>>>>>>> 
>>>>>>>> +        add     r14d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     ecx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,r10d
>>>>>>>> 
>>>>>>>> +        xor     r12d,eax
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,ecx
>>>>>>>> 
>>>>>>>> +        and     r12d,r10d
>>>>>>>> 
>>>>>>>> +        xor     r13d,r10d
>>>>>>>> 
>>>>>>>> +        add     ebx,DWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15d,ecx
>>>>>>>> 
>>>>>>>> +        xor     r12d,eax
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     r15d,edx
>>>>>>>> 
>>>>>>>> +        add     ebx,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     edi,r15d
>>>>>>>> 
>>>>>>>> +        xor     r14d,ecx
>>>>>>>> 
>>>>>>>> +        add     ebx,r13d
>>>>>>>> 
>>>>>>>> +        xor     edi,edx
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r9d,ebx
>>>>>>>> 
>>>>>>>> +        add     ebx,edi
>>>>>>>> 
>>>>>>>> +        mov     r13d,r9d
>>>>>>>> 
>>>>>>>> +        add     r14d,ebx
>>>>>>>> 
>>>>>>>> +        ror     r13d,14
>>>>>>>> 
>>>>>>>> +        mov     ebx,r14d
>>>>>>>> 
>>>>>>>> +        mov     r12d,r10d
>>>>>>>> 
>>>>>>>> +        ror     r14d,9
>>>>>>>> 
>>>>>>>> +        xor     r13d,r9d
>>>>>>>> 
>>>>>>>> +        xor     r12d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r13d,5
>>>>>>>> 
>>>>>>>> +        xor     r14d,ebx
>>>>>>>> 
>>>>>>>> +        and     r12d,r9d
>>>>>>>> 
>>>>>>>> +        xor     r13d,r9d
>>>>>>>> 
>>>>>>>> +        add     eax,DWORD[60+rsp]
>>>>>>>> 
>>>>>>>> +        mov     edi,ebx
>>>>>>>> 
>>>>>>>> +        xor     r12d,r11d
>>>>>>>> 
>>>>>>>> +        ror     r14d,11
>>>>>>>> 
>>>>>>>> +        xor     edi,ecx
>>>>>>>> 
>>>>>>>> +        add     eax,r12d
>>>>>>>> 
>>>>>>>> +        ror     r13d,6
>>>>>>>> 
>>>>>>>> +        and     r15d,edi
>>>>>>>> 
>>>>>>>> +        xor     r14d,ebx
>>>>>>>> 
>>>>>>>> +        add     eax,r13d
>>>>>>>> 
>>>>>>>> +        xor     r15d,ecx
>>>>>>>> 
>>>>>>>> +        ror     r14d,2
>>>>>>>> 
>>>>>>>> +        add     r8d,eax
>>>>>>>> 
>>>>>>>> +        add     eax,r15d
>>>>>>>> 
>>>>>>>> +        mov     r13d,r8d
>>>>>>>> 
>>>>>>>> +        add     r14d,eax
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[((64+0))+rsp]
>>>>>>>> 
>>>>>>>> +        mov     eax,r14d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[((64+16))+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[88+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[((-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$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:
>>>>>>>> 
>>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +se_handler:
>>>>>>>> 
>>>>>>>> +        push    rsi
>>>>>>>> 
>>>>>>>> +        push    rdi
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +        pushfq
>>>>>>>> 
>>>>>>>> +        sub     rsp,64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>> 
>>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>>> 
>>>>>>>> +        mov     rsi,rax
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[((64+24))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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,[$L$epilogue]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsi,[((64+32))+rsi]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>> 
>>>>>>>> +        mov     ecx,8
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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[40+r9]
>>>>>>>> 
>>>>>>>> +        mov     rsi,r8
>>>>>>>> 
>>>>>>>> +        mov     ecx,154
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,r9
>>>>>>>> 
>>>>>>>> +        xor     rcx,rcx
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +        popfq
>>>>>>>> 
>>>>>>>> +        pop     r15
>>>>>>>> 
>>>>>>>> +        pop     r14
>>>>>>>> 
>>>>>>>> +        pop     r13
>>>>>>>> 
>>>>>>>> +        pop     r12
>>>>>>>> 
>>>>>>>> +        pop     rbp
>>>>>>>> 
>>>>>>>> +        pop     rbx
>>>>>>>> 
>>>>>>>> +        pop     rdi
>>>>>>>> 
>>>>>>>> +        pop     rsi
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +shaext_handler:
>>>>>>>> 
>>>>>>>> +        push    rsi
>>>>>>>> 
>>>>>>>> +        push    rdi
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +        pushfq
>>>>>>>> 
>>>>>>>> +        sub     rsp,64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r10,[$L$prologue_shaext]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     r10,[$L$epilogue_shaext]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsi,[((-8-80))+rax]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>> 
>>>>>>>> +        mov     ecx,10
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$in_prologue
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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_shaext
>>>>>> wrt ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_end_sha256_block_data_order_shaext wrt
>>>>> ..imagebase
>>>>>>>> 
>>>>>>>> +        DD      $L$SEH_info_sha256_block_data_order_shaext 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_shaext:
>>>>>>>> 
>>>>>>>> +DB      9,0,0,0
>>>>>>>> 
>>>>>>>> +        DD      shaext_handler 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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-
>>>>>> x86_64.nasm
>>>>>>>> b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
>>>>>>>> new file mode 100644
>>>>>>>> index 0000000000..c6397d4393
>>>>>>>> --- /dev/null
>>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-
>>>> x86_64.nasm
>>>>>>>> @@ -0,0 +1,1938 @@
>>>>>>>> +; WARNING: do not edit!
>>>>>>>> 
>>>>>>>> +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
>>>>> Reserved.
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>> 
>>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>>> copy
>>>>>>>> 
>>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>> 
>>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +default rel
>>>>>>>> 
>>>>>>>> +%define XMMWORD
>>>>>>>> 
>>>>>>>> +%define YMMWORD
>>>>>>>> 
>>>>>>>> +%define ZMMWORD
>>>>>>>> 
>>>>>>>> +section .text code align=64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>>> 
>>>>>>>> +global  sha512_block_data_order
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +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:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     rsi,rdx
>>>>>>>> 
>>>>>>>> +        mov     rdx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        shl     rdx,4
>>>>>>>> 
>>>>>>>> +        sub     rsp,16*8+4*8
>>>>>>>> 
>>>>>>>> +        lea     rdx,[rdx*8+rsi]
>>>>>>>> 
>>>>>>>> +        and     rsp,-64
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((128+0))+rsp],rdi
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((128+8))+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     QWORD[((128+16))+rsp],rdx
>>>>>>>> 
>>>>>>>> +        mov     QWORD[152+rsp],rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$prologue:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rbx
>>>>>>>> 
>>>>>>>> +        lea     rbp,[K512]
>>>>>>>> 
>>>>>>>> +        xor     rdi,rcx
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13,r8
>>>>>>>> 
>>>>>>>> +        mov     r14,rax
>>>>>>>> 
>>>>>>>> +        bswap   r12
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     r15,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r8
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     r15,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,rax
>>>>>>>> 
>>>>>>>> +        and     r15,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,r11
>>>>>>>> 
>>>>>>>> +        xor     r15,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,r8
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15,rax
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15,rbx
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     r11,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     rdi,r15
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r11,rdi
>>>>>>>> 
>>>>>>>> +        add     rdx,r12
>>>>>>>> 
>>>>>>>> +        add     r11,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>> 
>>>>>>>> +        add     r11,r14
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[8+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13,rdx
>>>>>>>> 
>>>>>>>> +        mov     r14,r11
>>>>>>>> 
>>>>>>>> +        bswap   r12
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     rdi,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,rdx
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     rdi,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,r11
>>>>>>>> 
>>>>>>>> +        and     rdi,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,r10
>>>>>>>> 
>>>>>>>> +        xor     rdi,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,rdx
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rdi,r11
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdi,rax
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     r10,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15,rdi
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r10,r15
>>>>>>>> 
>>>>>>>> +        add     rcx,r12
>>>>>>>> 
>>>>>>>> +        add     r10,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>> 
>>>>>>>> +        add     r10,r14
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[16+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13,rcx
>>>>>>>> 
>>>>>>>> +        mov     r14,r10
>>>>>>>> 
>>>>>>>> +        bswap   r12
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     r15,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,rcx
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     r15,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,r10
>>>>>>>> 
>>>>>>>> +        and     r15,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,r9
>>>>>>>> 
>>>>>>>> +        xor     r15,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,rcx
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15,r10
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15,r11
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     r9,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     rdi,r15
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r9,rdi
>>>>>>>> 
>>>>>>>> +        add     rbx,r12
>>>>>>>> 
>>>>>>>> +        add     r9,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>> 
>>>>>>>> +        add     r9,r14
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[24+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13,rbx
>>>>>>>> 
>>>>>>>> +        mov     r14,r9
>>>>>>>> 
>>>>>>>> +        bswap   r12
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,rbx
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     rdi,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[24+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,r9
>>>>>>>> 
>>>>>>>> +        and     rdi,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,r8
>>>>>>>> 
>>>>>>>> +        xor     rdi,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,rbx
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rdi,r9
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdi,r10
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     r8,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15,rdi
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r8,r15
>>>>>>>> 
>>>>>>>> +        add     rax,r12
>>>>>>>> 
>>>>>>>> +        add     r8,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>> 
>>>>>>>> +        add     r8,r14
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[32+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13,rax
>>>>>>>> 
>>>>>>>> +        mov     r14,r8
>>>>>>>> 
>>>>>>>> +        bswap   r12
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     r15,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,rax
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     r15,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[32+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,r8
>>>>>>>> 
>>>>>>>> +        and     r15,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,rdx
>>>>>>>> 
>>>>>>>> +        xor     r15,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,rax
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15,r8
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15,r9
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     rdx,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     rdi,r15
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdx,rdi
>>>>>>>> 
>>>>>>>> +        add     r11,r12
>>>>>>>> 
>>>>>>>> +        add     rdx,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>> 
>>>>>>>> +        add     rdx,r14
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[40+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13,r11
>>>>>>>> 
>>>>>>>> +        mov     r14,rdx
>>>>>>>> 
>>>>>>>> +        bswap   r12
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     rdi,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r11
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     rdi,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[40+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,rdx
>>>>>>>> 
>>>>>>>> +        and     rdi,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,rcx
>>>>>>>> 
>>>>>>>> +        xor     rdi,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,r11
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rdi,rdx
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdi,r8
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     rcx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15,rdi
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rcx,r15
>>>>>>>> 
>>>>>>>> +        add     r10,r12
>>>>>>>> 
>>>>>>>> +        add     rcx,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>> 
>>>>>>>> +        add     rcx,r14
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[48+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13,r10
>>>>>>>> 
>>>>>>>> +        mov     r14,rcx
>>>>>>>> 
>>>>>>>> +        bswap   r12
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     r15,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r10
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     r15,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[48+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,rcx
>>>>>>>> 
>>>>>>>> +        and     r15,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,rbx
>>>>>>>> 
>>>>>>>> +        xor     r15,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,r10
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15,rcx
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15,rdx
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     rbx,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     rdi,r15
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rbx,rdi
>>>>>>>> 
>>>>>>>> +        add     r9,r12
>>>>>>>> 
>>>>>>>> +        add     rbx,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>> 
>>>>>>>> +        add     rbx,r14
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[56+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13,r9
>>>>>>>> 
>>>>>>>> +        mov     r14,rbx
>>>>>>>> 
>>>>>>>> +        bswap   r12
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     rdi,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r9
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     rdi,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[56+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,rbx
>>>>>>>> 
>>>>>>>> +        and     rdi,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,rax
>>>>>>>> 
>>>>>>>> +        xor     rdi,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,r9
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rdi,rbx
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdi,rcx
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     rax,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15,rdi
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rax,r15
>>>>>>>> 
>>>>>>>> +        add     r8,r12
>>>>>>>> 
>>>>>>>> +        add     rax,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>> 
>>>>>>>> +        add     rax,r14
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[64+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13,r8
>>>>>>>> 
>>>>>>>> +        mov     r14,rax
>>>>>>>> 
>>>>>>>> +        bswap   r12
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     r15,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r8
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     r15,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[64+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,rax
>>>>>>>> 
>>>>>>>> +        and     r15,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,r11
>>>>>>>> 
>>>>>>>> +        xor     r15,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,r8
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15,rax
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15,rbx
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     r11,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     rdi,r15
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r11,rdi
>>>>>>>> 
>>>>>>>> +        add     rdx,r12
>>>>>>>> 
>>>>>>>> +        add     r11,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>> 
>>>>>>>> +        add     r11,r14
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[72+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13,rdx
>>>>>>>> 
>>>>>>>> +        mov     r14,r11
>>>>>>>> 
>>>>>>>> +        bswap   r12
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     rdi,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,rdx
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     rdi,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[72+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,r11
>>>>>>>> 
>>>>>>>> +        and     rdi,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,r10
>>>>>>>> 
>>>>>>>> +        xor     rdi,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,rdx
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rdi,r11
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdi,rax
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     r10,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15,rdi
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r10,r15
>>>>>>>> 
>>>>>>>> +        add     rcx,r12
>>>>>>>> 
>>>>>>>> +        add     r10,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>> 
>>>>>>>> +        add     r10,r14
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[80+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13,rcx
>>>>>>>> 
>>>>>>>> +        mov     r14,r10
>>>>>>>> 
>>>>>>>> +        bswap   r12
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     r15,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,rcx
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     r15,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[80+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,r10
>>>>>>>> 
>>>>>>>> +        and     r15,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,r9
>>>>>>>> 
>>>>>>>> +        xor     r15,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,rcx
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15,r10
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15,r11
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     r9,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     rdi,r15
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r9,rdi
>>>>>>>> 
>>>>>>>> +        add     rbx,r12
>>>>>>>> 
>>>>>>>> +        add     r9,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>> 
>>>>>>>> +        add     r9,r14
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[88+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13,rbx
>>>>>>>> 
>>>>>>>> +        mov     r14,r9
>>>>>>>> 
>>>>>>>> +        bswap   r12
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,rbx
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     rdi,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[88+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,r9
>>>>>>>> 
>>>>>>>> +        and     rdi,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,r8
>>>>>>>> 
>>>>>>>> +        xor     rdi,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,rbx
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rdi,r9
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdi,r10
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     r8,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15,rdi
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r8,r15
>>>>>>>> 
>>>>>>>> +        add     rax,r12
>>>>>>>> 
>>>>>>>> +        add     r8,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>> 
>>>>>>>> +        add     r8,r14
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[96+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13,rax
>>>>>>>> 
>>>>>>>> +        mov     r14,r8
>>>>>>>> 
>>>>>>>> +        bswap   r12
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     r15,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,rax
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     r15,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[96+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,r8
>>>>>>>> 
>>>>>>>> +        and     r15,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,rdx
>>>>>>>> 
>>>>>>>> +        xor     r15,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,rax
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15,r8
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15,r9
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     rdx,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     rdi,r15
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdx,rdi
>>>>>>>> 
>>>>>>>> +        add     r11,r12
>>>>>>>> 
>>>>>>>> +        add     rdx,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>> 
>>>>>>>> +        add     rdx,r14
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[104+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13,r11
>>>>>>>> 
>>>>>>>> +        mov     r14,rdx
>>>>>>>> 
>>>>>>>> +        bswap   r12
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     rdi,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r11
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     rdi,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[104+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,rdx
>>>>>>>> 
>>>>>>>> +        and     rdi,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,rcx
>>>>>>>> 
>>>>>>>> +        xor     rdi,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,r11
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rdi,rdx
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdi,r8
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     rcx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15,rdi
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rcx,r15
>>>>>>>> 
>>>>>>>> +        add     r10,r12
>>>>>>>> 
>>>>>>>> +        add     rcx,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>> 
>>>>>>>> +        add     rcx,r14
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[112+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13,r10
>>>>>>>> 
>>>>>>>> +        mov     r14,rcx
>>>>>>>> 
>>>>>>>> +        bswap   r12
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     r15,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r10
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     r15,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[112+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,rcx
>>>>>>>> 
>>>>>>>> +        and     r15,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,rbx
>>>>>>>> 
>>>>>>>> +        xor     r15,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,r10
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15,rcx
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15,rdx
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     rbx,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     rdi,r15
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rbx,rdi
>>>>>>>> 
>>>>>>>> +        add     r9,r12
>>>>>>>> 
>>>>>>>> +        add     rbx,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>> 
>>>>>>>> +        add     rbx,r14
>>>>>>>> 
>>>>>>>> +        mov     r12,QWORD[120+rsi]
>>>>>>>> 
>>>>>>>> +        mov     r13,r9
>>>>>>>> 
>>>>>>>> +        mov     r14,rbx
>>>>>>>> 
>>>>>>>> +        bswap   r12
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     rdi,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r9
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     rdi,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[120+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,rbx
>>>>>>>> 
>>>>>>>> +        and     rdi,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,rax
>>>>>>>> 
>>>>>>>> +        xor     rdi,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,r9
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rdi,rbx
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdi,rcx
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     rax,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15,rdi
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rax,r15
>>>>>>>> 
>>>>>>>> +        add     r8,r12
>>>>>>>> 
>>>>>>>> +        add     rax,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$rounds_16_xx
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$rounds_16_xx:
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15,QWORD[112+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12,r13
>>>>>>>> 
>>>>>>>> +        ror     r13,7
>>>>>>>> 
>>>>>>>> +        add     rax,r14
>>>>>>>> 
>>>>>>>> +        mov     r14,r15
>>>>>>>> 
>>>>>>>> +        ror     r15,42
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r12
>>>>>>>> 
>>>>>>>> +        shr     r12,7
>>>>>>>> 
>>>>>>>> +        ror     r13,1
>>>>>>>> 
>>>>>>>> +        xor     r15,r14
>>>>>>>> 
>>>>>>>> +        shr     r14,6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r15,19
>>>>>>>> 
>>>>>>>> +        xor     r12,r13
>>>>>>>> 
>>>>>>>> +        xor     r15,r14
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[72+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13,r8
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +        mov     r14,rax
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     r15,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r8
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     r15,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,rax
>>>>>>>> 
>>>>>>>> +        and     r15,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,r11
>>>>>>>> 
>>>>>>>> +        xor     r15,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,r8
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15,rax
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15,rbx
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     r11,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     rdi,r15
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r11,rdi
>>>>>>>> 
>>>>>>>> +        add     rdx,r12
>>>>>>>> 
>>>>>>>> +        add     r11,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[120+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12,r13
>>>>>>>> 
>>>>>>>> +        ror     r13,7
>>>>>>>> 
>>>>>>>> +        add     r11,r14
>>>>>>>> 
>>>>>>>> +        mov     r14,rdi
>>>>>>>> 
>>>>>>>> +        ror     rdi,42
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r12
>>>>>>>> 
>>>>>>>> +        shr     r12,7
>>>>>>>> 
>>>>>>>> +        ror     r13,1
>>>>>>>> 
>>>>>>>> +        xor     rdi,r14
>>>>>>>> 
>>>>>>>> +        shr     r14,6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     rdi,19
>>>>>>>> 
>>>>>>>> +        xor     r12,r13
>>>>>>>> 
>>>>>>>> +        xor     rdi,r14
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[80+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13,rdx
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +        mov     r14,r11
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     rdi,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,rdx
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     rdi,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,r11
>>>>>>>> 
>>>>>>>> +        and     rdi,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,r10
>>>>>>>> 
>>>>>>>> +        xor     rdi,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,rdx
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rdi,r11
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdi,rax
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     r10,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15,rdi
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r10,r15
>>>>>>>> 
>>>>>>>> +        add     rcx,r12
>>>>>>>> 
>>>>>>>> +        add     r10,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15,QWORD[rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12,r13
>>>>>>>> 
>>>>>>>> +        ror     r13,7
>>>>>>>> 
>>>>>>>> +        add     r10,r14
>>>>>>>> 
>>>>>>>> +        mov     r14,r15
>>>>>>>> 
>>>>>>>> +        ror     r15,42
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r12
>>>>>>>> 
>>>>>>>> +        shr     r12,7
>>>>>>>> 
>>>>>>>> +        ror     r13,1
>>>>>>>> 
>>>>>>>> +        xor     r15,r14
>>>>>>>> 
>>>>>>>> +        shr     r14,6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r15,19
>>>>>>>> 
>>>>>>>> +        xor     r12,r13
>>>>>>>> 
>>>>>>>> +        xor     r15,r14
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[88+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13,rcx
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +        mov     r14,r10
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     r15,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,rcx
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     r15,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,r10
>>>>>>>> 
>>>>>>>> +        and     r15,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,r9
>>>>>>>> 
>>>>>>>> +        xor     r15,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,rcx
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15,r10
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15,r11
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     r9,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     rdi,r15
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r9,rdi
>>>>>>>> 
>>>>>>>> +        add     rbx,r12
>>>>>>>> 
>>>>>>>> +        add     r9,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12,r13
>>>>>>>> 
>>>>>>>> +        ror     r13,7
>>>>>>>> 
>>>>>>>> +        add     r9,r14
>>>>>>>> 
>>>>>>>> +        mov     r14,rdi
>>>>>>>> 
>>>>>>>> +        ror     rdi,42
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r12
>>>>>>>> 
>>>>>>>> +        shr     r12,7
>>>>>>>> 
>>>>>>>> +        ror     r13,1
>>>>>>>> 
>>>>>>>> +        xor     rdi,r14
>>>>>>>> 
>>>>>>>> +        shr     r14,6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     rdi,19
>>>>>>>> 
>>>>>>>> +        xor     r12,r13
>>>>>>>> 
>>>>>>>> +        xor     rdi,r14
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[96+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13,rbx
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +        mov     r14,r9
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,rbx
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     rdi,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[24+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,r9
>>>>>>>> 
>>>>>>>> +        and     rdi,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,r8
>>>>>>>> 
>>>>>>>> +        xor     rdi,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,rbx
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rdi,r9
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdi,r10
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     r8,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15,rdi
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r8,r15
>>>>>>>> 
>>>>>>>> +        add     rax,r12
>>>>>>>> 
>>>>>>>> +        add     r8,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12,r13
>>>>>>>> 
>>>>>>>> +        ror     r13,7
>>>>>>>> 
>>>>>>>> +        add     r8,r14
>>>>>>>> 
>>>>>>>> +        mov     r14,r15
>>>>>>>> 
>>>>>>>> +        ror     r15,42
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r12
>>>>>>>> 
>>>>>>>> +        shr     r12,7
>>>>>>>> 
>>>>>>>> +        ror     r13,1
>>>>>>>> 
>>>>>>>> +        xor     r15,r14
>>>>>>>> 
>>>>>>>> +        shr     r14,6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r15,19
>>>>>>>> 
>>>>>>>> +        xor     r12,r13
>>>>>>>> 
>>>>>>>> +        xor     r15,r14
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[104+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13,rax
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +        mov     r14,r8
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     r15,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,rax
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     r15,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[32+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,r8
>>>>>>>> 
>>>>>>>> +        and     r15,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,rdx
>>>>>>>> 
>>>>>>>> +        xor     r15,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,rax
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15,r8
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15,r9
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     rdx,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     rdi,r15
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdx,rdi
>>>>>>>> 
>>>>>>>> +        add     r11,r12
>>>>>>>> 
>>>>>>>> +        add     rdx,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12,r13
>>>>>>>> 
>>>>>>>> +        ror     r13,7
>>>>>>>> 
>>>>>>>> +        add     rdx,r14
>>>>>>>> 
>>>>>>>> +        mov     r14,rdi
>>>>>>>> 
>>>>>>>> +        ror     rdi,42
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r12
>>>>>>>> 
>>>>>>>> +        shr     r12,7
>>>>>>>> 
>>>>>>>> +        ror     r13,1
>>>>>>>> 
>>>>>>>> +        xor     rdi,r14
>>>>>>>> 
>>>>>>>> +        shr     r14,6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     rdi,19
>>>>>>>> 
>>>>>>>> +        xor     r12,r13
>>>>>>>> 
>>>>>>>> +        xor     rdi,r14
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[112+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13,r11
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +        mov     r14,rdx
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     rdi,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r11
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     rdi,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[40+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,rdx
>>>>>>>> 
>>>>>>>> +        and     rdi,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,rcx
>>>>>>>> 
>>>>>>>> +        xor     rdi,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,r11
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rdi,rdx
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdi,r8
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     rcx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15,rdi
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rcx,r15
>>>>>>>> 
>>>>>>>> +        add     r10,r12
>>>>>>>> 
>>>>>>>> +        add     rcx,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15,QWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12,r13
>>>>>>>> 
>>>>>>>> +        ror     r13,7
>>>>>>>> 
>>>>>>>> +        add     rcx,r14
>>>>>>>> 
>>>>>>>> +        mov     r14,r15
>>>>>>>> 
>>>>>>>> +        ror     r15,42
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r12
>>>>>>>> 
>>>>>>>> +        shr     r12,7
>>>>>>>> 
>>>>>>>> +        ror     r13,1
>>>>>>>> 
>>>>>>>> +        xor     r15,r14
>>>>>>>> 
>>>>>>>> +        shr     r14,6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r15,19
>>>>>>>> 
>>>>>>>> +        xor     r12,r13
>>>>>>>> 
>>>>>>>> +        xor     r15,r14
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[120+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13,r10
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +        mov     r14,rcx
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     r15,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r10
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     r15,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[48+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,rcx
>>>>>>>> 
>>>>>>>> +        and     r15,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,rbx
>>>>>>>> 
>>>>>>>> +        xor     r15,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,r10
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15,rcx
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15,rdx
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     rbx,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     rdi,r15
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rbx,rdi
>>>>>>>> 
>>>>>>>> +        add     r9,r12
>>>>>>>> 
>>>>>>>> +        add     rbx,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[64+rsp]
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12,r13
>>>>>>>> 
>>>>>>>> +        ror     r13,7
>>>>>>>> 
>>>>>>>> +        add     rbx,r14
>>>>>>>> 
>>>>>>>> +        mov     r14,rdi
>>>>>>>> 
>>>>>>>> +        ror     rdi,42
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r12
>>>>>>>> 
>>>>>>>> +        shr     r12,7
>>>>>>>> 
>>>>>>>> +        ror     r13,1
>>>>>>>> 
>>>>>>>> +        xor     rdi,r14
>>>>>>>> 
>>>>>>>> +        shr     r14,6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     rdi,19
>>>>>>>> 
>>>>>>>> +        xor     r12,r13
>>>>>>>> 
>>>>>>>> +        xor     rdi,r14
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13,r9
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +        mov     r14,rbx
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     rdi,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r9
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     rdi,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[56+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,rbx
>>>>>>>> 
>>>>>>>> +        and     rdi,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,rax
>>>>>>>> 
>>>>>>>> +        xor     rdi,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,r9
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rdi,rbx
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdi,rcx
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     rax,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15,rdi
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rax,r15
>>>>>>>> 
>>>>>>>> +        add     r8,r12
>>>>>>>> 
>>>>>>>> +        add     rax,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[72+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15,QWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12,r13
>>>>>>>> 
>>>>>>>> +        ror     r13,7
>>>>>>>> 
>>>>>>>> +        add     rax,r14
>>>>>>>> 
>>>>>>>> +        mov     r14,r15
>>>>>>>> 
>>>>>>>> +        ror     r15,42
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r12
>>>>>>>> 
>>>>>>>> +        shr     r12,7
>>>>>>>> 
>>>>>>>> +        ror     r13,1
>>>>>>>> 
>>>>>>>> +        xor     r15,r14
>>>>>>>> 
>>>>>>>> +        shr     r14,6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r15,19
>>>>>>>> 
>>>>>>>> +        xor     r12,r13
>>>>>>>> 
>>>>>>>> +        xor     r15,r14
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[64+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13,r8
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +        mov     r14,rax
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     r15,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r8
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     r15,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[64+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,rax
>>>>>>>> 
>>>>>>>> +        and     r15,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,r11
>>>>>>>> 
>>>>>>>> +        xor     r15,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,r8
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15,rax
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15,rbx
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     r11,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     rdi,r15
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r11,rdi
>>>>>>>> 
>>>>>>>> +        add     rdx,r12
>>>>>>>> 
>>>>>>>> +        add     r11,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[80+rsp]
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12,r13
>>>>>>>> 
>>>>>>>> +        ror     r13,7
>>>>>>>> 
>>>>>>>> +        add     r11,r14
>>>>>>>> 
>>>>>>>> +        mov     r14,rdi
>>>>>>>> 
>>>>>>>> +        ror     rdi,42
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r12
>>>>>>>> 
>>>>>>>> +        shr     r12,7
>>>>>>>> 
>>>>>>>> +        ror     r13,1
>>>>>>>> 
>>>>>>>> +        xor     rdi,r14
>>>>>>>> 
>>>>>>>> +        shr     r14,6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     rdi,19
>>>>>>>> 
>>>>>>>> +        xor     r12,r13
>>>>>>>> 
>>>>>>>> +        xor     rdi,r14
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[72+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13,rdx
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +        mov     r14,r11
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     rdi,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,rdx
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     rdi,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[72+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,r11
>>>>>>>> 
>>>>>>>> +        and     rdi,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,r10
>>>>>>>> 
>>>>>>>> +        xor     rdi,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,rdx
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rdi,r11
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdi,rax
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     r10,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15,rdi
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r10,r15
>>>>>>>> 
>>>>>>>> +        add     rcx,r12
>>>>>>>> 
>>>>>>>> +        add     r10,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[88+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15,QWORD[64+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12,r13
>>>>>>>> 
>>>>>>>> +        ror     r13,7
>>>>>>>> 
>>>>>>>> +        add     r10,r14
>>>>>>>> 
>>>>>>>> +        mov     r14,r15
>>>>>>>> 
>>>>>>>> +        ror     r15,42
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r12
>>>>>>>> 
>>>>>>>> +        shr     r12,7
>>>>>>>> 
>>>>>>>> +        ror     r13,1
>>>>>>>> 
>>>>>>>> +        xor     r15,r14
>>>>>>>> 
>>>>>>>> +        shr     r14,6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r15,19
>>>>>>>> 
>>>>>>>> +        xor     r12,r13
>>>>>>>> 
>>>>>>>> +        xor     r15,r14
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[24+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[80+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13,rcx
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +        mov     r14,r10
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     r15,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,rcx
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     r15,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[80+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,r10
>>>>>>>> 
>>>>>>>> +        and     r15,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,r9
>>>>>>>> 
>>>>>>>> +        xor     r15,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,rcx
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15,r10
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15,r11
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     r9,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     rdi,r15
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r9,rdi
>>>>>>>> 
>>>>>>>> +        add     rbx,r12
>>>>>>>> 
>>>>>>>> +        add     r9,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[96+rsp]
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[72+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12,r13
>>>>>>>> 
>>>>>>>> +        ror     r13,7
>>>>>>>> 
>>>>>>>> +        add     r9,r14
>>>>>>>> 
>>>>>>>> +        mov     r14,rdi
>>>>>>>> 
>>>>>>>> +        ror     rdi,42
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r12
>>>>>>>> 
>>>>>>>> +        shr     r12,7
>>>>>>>> 
>>>>>>>> +        ror     r13,1
>>>>>>>> 
>>>>>>>> +        xor     rdi,r14
>>>>>>>> 
>>>>>>>> +        shr     r14,6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     rdi,19
>>>>>>>> 
>>>>>>>> +        xor     r12,r13
>>>>>>>> 
>>>>>>>> +        xor     rdi,r14
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[32+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[88+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13,rbx
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +        mov     r14,r9
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,rbx
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     rdi,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[88+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,r9
>>>>>>>> 
>>>>>>>> +        and     rdi,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,r8
>>>>>>>> 
>>>>>>>> +        xor     rdi,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,rbx
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rdi,r9
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdi,r10
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     r8,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15,rdi
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r8,r15
>>>>>>>> 
>>>>>>>> +        add     rax,r12
>>>>>>>> 
>>>>>>>> +        add     r8,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[104+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15,QWORD[80+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12,r13
>>>>>>>> 
>>>>>>>> +        ror     r13,7
>>>>>>>> 
>>>>>>>> +        add     r8,r14
>>>>>>>> 
>>>>>>>> +        mov     r14,r15
>>>>>>>> 
>>>>>>>> +        ror     r15,42
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r12
>>>>>>>> 
>>>>>>>> +        shr     r12,7
>>>>>>>> 
>>>>>>>> +        ror     r13,1
>>>>>>>> 
>>>>>>>> +        xor     r15,r14
>>>>>>>> 
>>>>>>>> +        shr     r14,6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r15,19
>>>>>>>> 
>>>>>>>> +        xor     r12,r13
>>>>>>>> 
>>>>>>>> +        xor     r15,r14
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[40+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[96+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13,rax
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +        mov     r14,r8
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     r15,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,rax
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     r15,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[96+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,r8
>>>>>>>> 
>>>>>>>> +        and     r15,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,rdx
>>>>>>>> 
>>>>>>>> +        xor     r15,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,rax
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15,r8
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15,r9
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     rdx,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     rdi,r15
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdx,rdi
>>>>>>>> 
>>>>>>>> +        add     r11,r12
>>>>>>>> 
>>>>>>>> +        add     rdx,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[112+rsp]
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[88+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12,r13
>>>>>>>> 
>>>>>>>> +        ror     r13,7
>>>>>>>> 
>>>>>>>> +        add     rdx,r14
>>>>>>>> 
>>>>>>>> +        mov     r14,rdi
>>>>>>>> 
>>>>>>>> +        ror     rdi,42
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r12
>>>>>>>> 
>>>>>>>> +        shr     r12,7
>>>>>>>> 
>>>>>>>> +        ror     r13,1
>>>>>>>> 
>>>>>>>> +        xor     rdi,r14
>>>>>>>> 
>>>>>>>> +        shr     r14,6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     rdi,19
>>>>>>>> 
>>>>>>>> +        xor     r12,r13
>>>>>>>> 
>>>>>>>> +        xor     rdi,r14
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[48+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[104+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13,r11
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +        mov     r14,rdx
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     rdi,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r11
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     rdi,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[104+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,rdx
>>>>>>>> 
>>>>>>>> +        and     rdi,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,rcx
>>>>>>>> 
>>>>>>>> +        xor     rdi,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,r11
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rdi,rdx
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdi,r8
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     rcx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15,rdi
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rcx,r15
>>>>>>>> 
>>>>>>>> +        add     r10,r12
>>>>>>>> 
>>>>>>>> +        add     rcx,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[120+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r15,QWORD[96+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12,r13
>>>>>>>> 
>>>>>>>> +        ror     r13,7
>>>>>>>> 
>>>>>>>> +        add     rcx,r14
>>>>>>>> 
>>>>>>>> +        mov     r14,r15
>>>>>>>> 
>>>>>>>> +        ror     r15,42
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r12
>>>>>>>> 
>>>>>>>> +        shr     r12,7
>>>>>>>> 
>>>>>>>> +        ror     r13,1
>>>>>>>> 
>>>>>>>> +        xor     r15,r14
>>>>>>>> 
>>>>>>>> +        shr     r14,6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r15,19
>>>>>>>> 
>>>>>>>> +        xor     r12,r13
>>>>>>>> 
>>>>>>>> +        xor     r15,r14
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[56+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[112+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13,r10
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +        mov     r14,rcx
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     r15,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r10
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     r15,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[112+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,rcx
>>>>>>>> 
>>>>>>>> +        and     r15,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,rbx
>>>>>>>> 
>>>>>>>> +        xor     r15,rax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,r10
>>>>>>>> 
>>>>>>>> +        add     r12,r15
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r15,rcx
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r15,rdx
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     rbx,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     rdi,r15
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rbx,rdi
>>>>>>>> 
>>>>>>>> +        add     r9,r12
>>>>>>>> 
>>>>>>>> +        add     rbx,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>>> 
>>>>>>>> +        mov     r13,QWORD[rsp]
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[104+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r12,r13
>>>>>>>> 
>>>>>>>> +        ror     r13,7
>>>>>>>> 
>>>>>>>> +        add     rbx,r14
>>>>>>>> 
>>>>>>>> +        mov     r14,rdi
>>>>>>>> 
>>>>>>>> +        ror     rdi,42
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r12
>>>>>>>> 
>>>>>>>> +        shr     r12,7
>>>>>>>> 
>>>>>>>> +        ror     r13,1
>>>>>>>> 
>>>>>>>> +        xor     rdi,r14
>>>>>>>> 
>>>>>>>> +        shr     r14,6
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     rdi,19
>>>>>>>> 
>>>>>>>> +        xor     r12,r13
>>>>>>>> 
>>>>>>>> +        xor     rdi,r14
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[64+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[120+rsp]
>>>>>>>> 
>>>>>>>> +        mov     r13,r9
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +        mov     r14,rbx
>>>>>>>> 
>>>>>>>> +        ror     r13,23
>>>>>>>> 
>>>>>>>> +        mov     rdi,r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     r13,r9
>>>>>>>> 
>>>>>>>> +        ror     r14,5
>>>>>>>> 
>>>>>>>> +        xor     rdi,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     QWORD[120+rsp],r12
>>>>>>>> 
>>>>>>>> +        xor     r14,rbx
>>>>>>>> 
>>>>>>>> +        and     rdi,r9
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r13,4
>>>>>>>> 
>>>>>>>> +        add     r12,rax
>>>>>>>> 
>>>>>>>> +        xor     rdi,r11
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        ror     r14,6
>>>>>>>> 
>>>>>>>> +        xor     r13,r9
>>>>>>>> 
>>>>>>>> +        add     r12,rdi
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rdi,rbx
>>>>>>>> 
>>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>>> 
>>>>>>>> +        xor     r14,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rdi,rcx
>>>>>>>> 
>>>>>>>> +        ror     r13,14
>>>>>>>> 
>>>>>>>> +        mov     rax,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     r15,rdi
>>>>>>>> 
>>>>>>>> +        ror     r14,28
>>>>>>>> 
>>>>>>>> +        add     r12,r13
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rax,r15
>>>>>>>> 
>>>>>>>> +        add     r8,r12
>>>>>>>> 
>>>>>>>> +        add     rax,r12
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>>> 
>>>>>>>> +        cmp     BYTE[7+rbp],0
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$rounds_16_xx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[((128+0))+rsp]
>>>>>>>> 
>>>>>>>> +        add     rax,r14
>>>>>>>> 
>>>>>>>> +        lea     rsi,[128+rsi]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[((128+16))+rsp]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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[152+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$epilogue:
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$SEH_end_sha512_block_data_order:
>>>>>>>> 
>>>>>>>> +ALIGN   64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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      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
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +se_handler:
>>>>>>>> 
>>>>>>>> +        push    rsi
>>>>>>>> 
>>>>>>>> +        push    rdi
>>>>>>>> 
>>>>>>>> +        push    rbx
>>>>>>>> 
>>>>>>>> +        push    rbp
>>>>>>>> 
>>>>>>>> +        push    r12
>>>>>>>> 
>>>>>>>> +        push    r13
>>>>>>>> 
>>>>>>>> +        push    r14
>>>>>>>> 
>>>>>>>> +        push    r15
>>>>>>>> 
>>>>>>>> +        pushfq
>>>>>>>> 
>>>>>>>> +        sub     rsp,64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>>> 
>>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>>> 
>>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>>> 
>>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>>> 
>>>>>>>> +        mov     rsi,rax
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[((128+24))+rax]
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        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,[$L$epilogue]
>>>>>>>> 
>>>>>>>> +        cmp     rbx,r10
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        lea     rsi,[((128+32))+rsi]
>>>>>>>> 
>>>>>>>> +        lea     rdi,[512+r8]
>>>>>>>> 
>>>>>>>> +        mov     ecx,12
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$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[40+r9]
>>>>>>>> 
>>>>>>>> +        mov     rsi,r8
>>>>>>>> 
>>>>>>>> +        mov     ecx,154
>>>>>>>> 
>>>>>>>> +        DD      0xa548f3fc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rsi,r9
>>>>>>>> 
>>>>>>>> +        xor     rcx,rcx
>>>>>>>> 
>>>>>>>> +        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
>>>>>>>> 
>>>>>>>> +        popfq
>>>>>>>> 
>>>>>>>> +        pop     r15
>>>>>>>> 
>>>>>>>> +        pop     r14
>>>>>>>> 
>>>>>>>> +        pop     r13
>>>>>>>> 
>>>>>>>> +        pop     r12
>>>>>>>> 
>>>>>>>> +        pop     rbp
>>>>>>>> 
>>>>>>>> +        pop     rbx
>>>>>>>> 
>>>>>>>> +        pop     rdi
>>>>>>>> 
>>>>>>>> +        pop     rsi
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +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/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
>>>>>>>> b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
>>>>>>>> new file mode 100644
>>>>>>>> index 0000000000..2a3d5bcf72
>>>>>>>> --- /dev/null
>>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
>>>>>>>> @@ -0,0 +1,491 @@
>>>>>>>> +; WARNING: do not edit!
>>>>>>>> 
>>>>>>>> +; Generated from openssl/crypto/x86_64cpuid.pl
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
>>>>> Reserved.
>>>>>>>> 
>>>>>>>> +;
>>>>>>>> 
>>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not use
>>>>>>>> 
>>>>>>>> +; this file except in compliance with the License.  You can obtain a
>>>>> copy
>>>>>>>> 
>>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>>> 
>>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +default rel
>>>>>>>> 
>>>>>>>> +%define XMMWORD
>>>>>>>> 
>>>>>>>> +%define YMMWORD
>>>>>>>> 
>>>>>>>> +%define ZMMWORD
>>>>>>>> 
>>>>>>>> +EXTERN  OPENSSL_cpuid_setup
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +section .CRT$XCU rdata align=8
>>>>>>>> 
>>>>>>>> +                DQ      OPENSSL_cpuid_setup
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +common  OPENSSL_ia32cap_P 16
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +section .text code align=64
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  OPENSSL_atomic_add
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +OPENSSL_atomic_add:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     eax,DWORD[rcx]
>>>>>>>> 
>>>>>>>> +$L$spin:        lea     r8,[rax*1+rdx]
>>>>>>>> 
>>>>>>>> +DB      0xf0
>>>>>>>> 
>>>>>>>> +        cmpxchg DWORD[rcx],r8d
>>>>>>>> 
>>>>>>>> +        jne     NEAR $L$spin
>>>>>>>> 
>>>>>>>> +        mov     eax,r8d
>>>>>>>> 
>>>>>>>> +DB      0x48,0x98
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  OPENSSL_rdtsc
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +OPENSSL_rdtsc:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        rdtsc
>>>>>>>> 
>>>>>>>> +        shl     rdx,32
>>>>>>>> 
>>>>>>>> +        or      rax,rdx
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  OPENSSL_ia32_cpuid
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +OPENSSL_ia32_cpuid:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>>> 
>>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>>> 
>>>>>>>> +        mov     rax,rsp
>>>>>>>> 
>>>>>>>> +$L$SEH_begin_OPENSSL_ia32_cpuid:
>>>>>>>> 
>>>>>>>> +        mov     rdi,rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r8,rbx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     eax,eax
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rdi],rax
>>>>>>>> 
>>>>>>>> +        cpuid
>>>>>>>> 
>>>>>>>> +        mov     r11d,eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     eax,eax
>>>>>>>> 
>>>>>>>> +        cmp     ebx,0x756e6547
>>>>>>>> 
>>>>>>>> +        setne   al
>>>>>>>> 
>>>>>>>> +        mov     r9d,eax
>>>>>>>> 
>>>>>>>> +        cmp     edx,0x49656e69
>>>>>>>> 
>>>>>>>> +        setne   al
>>>>>>>> 
>>>>>>>> +        or      r9d,eax
>>>>>>>> 
>>>>>>>> +        cmp     ecx,0x6c65746e
>>>>>>>> 
>>>>>>>> +        setne   al
>>>>>>>> 
>>>>>>>> +        or      r9d,eax
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$intel
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        cmp     ebx,0x68747541
>>>>>>>> 
>>>>>>>> +        setne   al
>>>>>>>> 
>>>>>>>> +        mov     r10d,eax
>>>>>>>> 
>>>>>>>> +        cmp     edx,0x69746E65
>>>>>>>> 
>>>>>>>> +        setne   al
>>>>>>>> 
>>>>>>>> +        or      r10d,eax
>>>>>>>> 
>>>>>>>> +        cmp     ecx,0x444D4163
>>>>>>>> 
>>>>>>>> +        setne   al
>>>>>>>> 
>>>>>>>> +        or      r10d,eax
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$intel
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     eax,0x80000000
>>>>>>>> 
>>>>>>>> +        cpuid
>>>>>>>> 
>>>>>>>> +        cmp     eax,0x80000001
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$intel
>>>>>>>> 
>>>>>>>> +        mov     r10d,eax
>>>>>>>> 
>>>>>>>> +        mov     eax,0x80000001
>>>>>>>> 
>>>>>>>> +        cpuid
>>>>>>>> 
>>>>>>>> +        or      r9d,ecx
>>>>>>>> 
>>>>>>>> +        and     r9d,0x00000801
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        cmp     r10d,0x80000008
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$intel
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     eax,0x80000008
>>>>>>>> 
>>>>>>>> +        cpuid
>>>>>>>> 
>>>>>>>> +        movzx   r10,cl
>>>>>>>> 
>>>>>>>> +        inc     r10
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     eax,1
>>>>>>>> 
>>>>>>>> +        cpuid
>>>>>>>> 
>>>>>>>> +        bt      edx,28
>>>>>>>> 
>>>>>>>> +        jnc     NEAR $L$generic
>>>>>>>> 
>>>>>>>> +        shr     ebx,16
>>>>>>>> 
>>>>>>>> +        cmp     bl,r10b
>>>>>>>> 
>>>>>>>> +        ja      NEAR $L$generic
>>>>>>>> 
>>>>>>>> +        and     edx,0xefffffff
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$generic
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$intel:
>>>>>>>> 
>>>>>>>> +        cmp     r11d,4
>>>>>>>> 
>>>>>>>> +        mov     r10d,-1
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$nocacheinfo
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     eax,4
>>>>>>>> 
>>>>>>>> +        mov     ecx,0
>>>>>>>> 
>>>>>>>> +        cpuid
>>>>>>>> 
>>>>>>>> +        mov     r10d,eax
>>>>>>>> 
>>>>>>>> +        shr     r10d,14
>>>>>>>> 
>>>>>>>> +        and     r10d,0xfff
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$nocacheinfo:
>>>>>>>> 
>>>>>>>> +        mov     eax,1
>>>>>>>> 
>>>>>>>> +        cpuid
>>>>>>>> 
>>>>>>>> +        movd    xmm0,eax
>>>>>>>> 
>>>>>>>> +        and     edx,0xbfefffff
>>>>>>>> 
>>>>>>>> +        cmp     r9d,0
>>>>>>>> 
>>>>>>>> +        jne     NEAR $L$notintel
>>>>>>>> 
>>>>>>>> +        or      edx,0x40000000
>>>>>>>> 
>>>>>>>> +        and     ah,15
>>>>>>>> 
>>>>>>>> +        cmp     ah,15
>>>>>>>> 
>>>>>>>> +        jne     NEAR $L$notP4
>>>>>>>> 
>>>>>>>> +        or      edx,0x00100000
>>>>>>>> 
>>>>>>>> +$L$notP4:
>>>>>>>> 
>>>>>>>> +        cmp     ah,6
>>>>>>>> 
>>>>>>>> +        jne     NEAR $L$notintel
>>>>>>>> 
>>>>>>>> +        and     eax,0x0fff0ff0
>>>>>>>> 
>>>>>>>> +        cmp     eax,0x00050670
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$knights
>>>>>>>> 
>>>>>>>> +        cmp     eax,0x00080650
>>>>>>>> 
>>>>>>>> +        jne     NEAR $L$notintel
>>>>>>>> 
>>>>>>>> +$L$knights:
>>>>>>>> 
>>>>>>>> +        and     ecx,0xfbffffff
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$notintel:
>>>>>>>> 
>>>>>>>> +        bt      edx,28
>>>>>>>> 
>>>>>>>> +        jnc     NEAR $L$generic
>>>>>>>> 
>>>>>>>> +        and     edx,0xefffffff
>>>>>>>> 
>>>>>>>> +        cmp     r10d,0
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$generic
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        or      edx,0x10000000
>>>>>>>> 
>>>>>>>> +        shr     ebx,16
>>>>>>>> 
>>>>>>>> +        cmp     bl,1
>>>>>>>> 
>>>>>>>> +        ja      NEAR $L$generic
>>>>>>>> 
>>>>>>>> +        and     edx,0xefffffff
>>>>>>>> 
>>>>>>>> +$L$generic:
>>>>>>>> 
>>>>>>>> +        and     r9d,0x00000800
>>>>>>>> 
>>>>>>>> +        and     ecx,0xfffff7ff
>>>>>>>> 
>>>>>>>> +        or      r9d,ecx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10d,edx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        cmp     r11d,7
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$no_extended_info
>>>>>>>> 
>>>>>>>> +        mov     eax,7
>>>>>>>> 
>>>>>>>> +        xor     ecx,ecx
>>>>>>>> 
>>>>>>>> +        cpuid
>>>>>>>> 
>>>>>>>> +        bt      r9d,26
>>>>>>>> 
>>>>>>>> +        jc      NEAR $L$notknights
>>>>>>>> 
>>>>>>>> +        and     ebx,0xfff7ffff
>>>>>>>> 
>>>>>>>> +$L$notknights:
>>>>>>>> 
>>>>>>>> +        movd    eax,xmm0
>>>>>>>> 
>>>>>>>> +        and     eax,0x0fff0ff0
>>>>>>>> 
>>>>>>>> +        cmp     eax,0x00050650
>>>>>>>> 
>>>>>>>> +        jne     NEAR $L$notskylakex
>>>>>>>> 
>>>>>>>> +        and     ebx,0xfffeffff
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$notskylakex:
>>>>>>>> 
>>>>>>>> +        mov     DWORD[8+rdi],ebx
>>>>>>>> 
>>>>>>>> +        mov     DWORD[12+rdi],ecx
>>>>>>>> 
>>>>>>>> +$L$no_extended_info:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        bt      r9d,27
>>>>>>>> 
>>>>>>>> +        jnc     NEAR $L$clear_avx
>>>>>>>> 
>>>>>>>> +        xor     ecx,ecx
>>>>>>>> 
>>>>>>>> +DB      0x0f,0x01,0xd0
>>>>>>>> 
>>>>>>>> +        and     eax,0xe6
>>>>>>>> 
>>>>>>>> +        cmp     eax,0xe6
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$done
>>>>>>>> 
>>>>>>>> +        and     DWORD[8+rdi],0x3fdeffff
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        and     eax,6
>>>>>>>> 
>>>>>>>> +        cmp     eax,6
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$done
>>>>>>>> 
>>>>>>>> +$L$clear_avx:
>>>>>>>> 
>>>>>>>> +        mov     eax,0xefffe7ff
>>>>>>>> 
>>>>>>>> +        and     r9d,eax
>>>>>>>> 
>>>>>>>> +        mov     eax,0x3fdeffdf
>>>>>>>> 
>>>>>>>> +        and     DWORD[8+rdi],eax
>>>>>>>> 
>>>>>>>> +$L$done:
>>>>>>>> 
>>>>>>>> +        shl     r9,32
>>>>>>>> 
>>>>>>>> +        mov     eax,r10d
>>>>>>>> 
>>>>>>>> +        mov     rbx,r8
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        or      rax,r9
>>>>>>>> 
>>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>>> 
>>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$SEH_end_OPENSSL_ia32_cpuid:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  OPENSSL_cleanse
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +OPENSSL_cleanse:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rax,rax
>>>>>>>> 
>>>>>>>> +        cmp     rdx,15
>>>>>>>> 
>>>>>>>> +        jae     NEAR $L$ot
>>>>>>>> 
>>>>>>>> +        cmp     rdx,0
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$ret
>>>>>>>> 
>>>>>>>> +$L$ittle:
>>>>>>>> 
>>>>>>>> +        mov     BYTE[rcx],al
>>>>>>>> 
>>>>>>>> +        sub     rdx,1
>>>>>>>> 
>>>>>>>> +        lea     rcx,[1+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$ittle
>>>>>>>> 
>>>>>>>> +$L$ret:
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$ot:
>>>>>>>> 
>>>>>>>> +        test    rcx,7
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$aligned
>>>>>>>> 
>>>>>>>> +        mov     BYTE[rcx],al
>>>>>>>> 
>>>>>>>> +        lea     rdx,[((-1))+rdx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[1+rcx]
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$ot
>>>>>>>> 
>>>>>>>> +$L$aligned:
>>>>>>>> 
>>>>>>>> +        mov     QWORD[rcx],rax
>>>>>>>> 
>>>>>>>> +        lea     rdx,[((-8))+rdx]
>>>>>>>> 
>>>>>>>> +        test    rdx,-8
>>>>>>>> 
>>>>>>>> +        lea     rcx,[8+rcx]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$aligned
>>>>>>>> 
>>>>>>>> +        cmp     rdx,0
>>>>>>>> 
>>>>>>>> +        jne     NEAR $L$ittle
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  CRYPTO_memcmp
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +CRYPTO_memcmp:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rax,rax
>>>>>>>> 
>>>>>>>> +        xor     r10,r10
>>>>>>>> 
>>>>>>>> +        cmp     r8,0
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$no_data
>>>>>>>> 
>>>>>>>> +        cmp     r8,16
>>>>>>>> 
>>>>>>>> +        jne     NEAR $L$oop_cmp
>>>>>>>> 
>>>>>>>> +        mov     r10,QWORD[rcx]
>>>>>>>> 
>>>>>>>> +        mov     r11,QWORD[8+rcx]
>>>>>>>> 
>>>>>>>> +        mov     r8,1
>>>>>>>> 
>>>>>>>> +        xor     r10,QWORD[rdx]
>>>>>>>> 
>>>>>>>> +        xor     r11,QWORD[8+rdx]
>>>>>>>> 
>>>>>>>> +        or      r10,r11
>>>>>>>> 
>>>>>>>> +        cmovnz  rax,r8
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$oop_cmp:
>>>>>>>> 
>>>>>>>> +        mov     r10b,BYTE[rcx]
>>>>>>>> 
>>>>>>>> +        lea     rcx,[1+rcx]
>>>>>>>> 
>>>>>>>> +        xor     r10b,BYTE[rdx]
>>>>>>>> 
>>>>>>>> +        lea     rdx,[1+rdx]
>>>>>>>> 
>>>>>>>> +        or      al,r10b
>>>>>>>> 
>>>>>>>> +        dec     r8
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_cmp
>>>>>>>> 
>>>>>>>> +        neg     rax
>>>>>>>> 
>>>>>>>> +        shr     rax,63
>>>>>>>> 
>>>>>>>> +$L$no_data:
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  OPENSSL_wipe_cpu
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +OPENSSL_wipe_cpu:
>>>>>>>> 
>>>>>>>> +        pxor    xmm0,xmm0
>>>>>>>> 
>>>>>>>> +        pxor    xmm1,xmm1
>>>>>>>> 
>>>>>>>> +        pxor    xmm2,xmm2
>>>>>>>> 
>>>>>>>> +        pxor    xmm3,xmm3
>>>>>>>> 
>>>>>>>> +        pxor    xmm4,xmm4
>>>>>>>> 
>>>>>>>> +        pxor    xmm5,xmm5
>>>>>>>> 
>>>>>>>> +        xor     rcx,rcx
>>>>>>>> 
>>>>>>>> +        xor     rdx,rdx
>>>>>>>> 
>>>>>>>> +        xor     r8,r8
>>>>>>>> 
>>>>>>>> +        xor     r9,r9
>>>>>>>> 
>>>>>>>> +        xor     r10,r10
>>>>>>>> 
>>>>>>>> +        xor     r11,r11
>>>>>>>> 
>>>>>>>> +        lea     rax,[8+rsp]
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  OPENSSL_instrument_bus
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +OPENSSL_instrument_bus:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10,rcx
>>>>>>>> 
>>>>>>>> +        mov     rcx,rdx
>>>>>>>> 
>>>>>>>> +        mov     r11,rdx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        rdtsc
>>>>>>>> 
>>>>>>>> +        mov     r8d,eax
>>>>>>>> 
>>>>>>>> +        mov     r9d,0
>>>>>>>> 
>>>>>>>> +        clflush [r10]
>>>>>>>> 
>>>>>>>> +DB      0xf0
>>>>>>>> 
>>>>>>>> +        add     DWORD[r10],r9d
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$oop: rdtsc
>>>>>>>> 
>>>>>>>> +        mov     edx,eax
>>>>>>>> 
>>>>>>>> +        sub     eax,r8d
>>>>>>>> 
>>>>>>>> +        mov     r8d,edx
>>>>>>>> 
>>>>>>>> +        mov     r9d,eax
>>>>>>>> 
>>>>>>>> +        clflush [r10]
>>>>>>>> 
>>>>>>>> +DB      0xf0
>>>>>>>> 
>>>>>>>> +        add     DWORD[r10],eax
>>>>>>>> 
>>>>>>>> +        lea     r10,[4+r10]
>>>>>>>> 
>>>>>>>> +        sub     rcx,1
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     rax,r11
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  OPENSSL_instrument_bus2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +OPENSSL_instrument_bus2:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r10,rcx
>>>>>>>> 
>>>>>>>> +        mov     rcx,rdx
>>>>>>>> 
>>>>>>>> +        mov     r11,r8
>>>>>>>> 
>>>>>>>> +        mov     QWORD[8+rsp],rcx
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        rdtsc
>>>>>>>> 
>>>>>>>> +        mov     r8d,eax
>>>>>>>> 
>>>>>>>> +        mov     r9d,0
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        clflush [r10]
>>>>>>>> 
>>>>>>>> +DB      0xf0
>>>>>>>> 
>>>>>>>> +        add     DWORD[r10],r9d
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        rdtsc
>>>>>>>> 
>>>>>>>> +        mov     edx,eax
>>>>>>>> 
>>>>>>>> +        sub     eax,r8d
>>>>>>>> 
>>>>>>>> +        mov     r8d,edx
>>>>>>>> 
>>>>>>>> +        mov     r9d,eax
>>>>>>>> 
>>>>>>>> +$L$oop2:
>>>>>>>> 
>>>>>>>> +        clflush [r10]
>>>>>>>> 
>>>>>>>> +DB      0xf0
>>>>>>>> 
>>>>>>>> +        add     DWORD[r10],eax
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        sub     r11,1
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$done2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        rdtsc
>>>>>>>> 
>>>>>>>> +        mov     edx,eax
>>>>>>>> 
>>>>>>>> +        sub     eax,r8d
>>>>>>>> 
>>>>>>>> +        mov     r8d,edx
>>>>>>>> 
>>>>>>>> +        cmp     eax,r9d
>>>>>>>> 
>>>>>>>> +        mov     r9d,eax
>>>>>>>> 
>>>>>>>> +        mov     edx,0
>>>>>>>> 
>>>>>>>> +        setne   dl
>>>>>>>> 
>>>>>>>> +        sub     rcx,rdx
>>>>>>>> 
>>>>>>>> +        lea     r10,[rdx*4+r10]
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop2
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$done2:
>>>>>>>> 
>>>>>>>> +        mov     rax,QWORD[8+rsp]
>>>>>>>> 
>>>>>>>> +        sub     rax,rcx
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  OPENSSL_ia32_rdrand_bytes
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +OPENSSL_ia32_rdrand_bytes:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rax,rax
>>>>>>>> 
>>>>>>>> +        cmp     rdx,0
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$done_rdrand_bytes
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r11,8
>>>>>>>> 
>>>>>>>> +$L$oop_rdrand_bytes:
>>>>>>>> 
>>>>>>>> +DB      73,15,199,242
>>>>>>>> 
>>>>>>>> +        jc      NEAR $L$break_rdrand_bytes
>>>>>>>> 
>>>>>>>> +        dec     r11
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_rdrand_bytes
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$done_rdrand_bytes
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$break_rdrand_bytes:
>>>>>>>> 
>>>>>>>> +        cmp     rdx,8
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$tail_rdrand_bytes
>>>>>>>> 
>>>>>>>> +        mov     QWORD[rcx],r10
>>>>>>>> 
>>>>>>>> +        lea     rcx,[8+rcx]
>>>>>>>> 
>>>>>>>> +        add     rax,8
>>>>>>>> 
>>>>>>>> +        sub     rdx,8
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$done_rdrand_bytes
>>>>>>>> 
>>>>>>>> +        mov     r11,8
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_rdrand_bytes
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$tail_rdrand_bytes:
>>>>>>>> 
>>>>>>>> +        mov     BYTE[rcx],r10b
>>>>>>>> 
>>>>>>>> +        lea     rcx,[1+rcx]
>>>>>>>> 
>>>>>>>> +        inc     rax
>>>>>>>> 
>>>>>>>> +        shr     r10,8
>>>>>>>> 
>>>>>>>> +        dec     rdx
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$tail_rdrand_bytes
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$done_rdrand_bytes:
>>>>>>>> 
>>>>>>>> +        xor     r10,r10
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +global  OPENSSL_ia32_rdseed_bytes
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +OPENSSL_ia32_rdseed_bytes:
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        xor     rax,rax
>>>>>>>> 
>>>>>>>> +        cmp     rdx,0
>>>>>>>> 
>>>>>>>> +        je      NEAR $L$done_rdseed_bytes
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +        mov     r11,8
>>>>>>>> 
>>>>>>>> +$L$oop_rdseed_bytes:
>>>>>>>> 
>>>>>>>> +DB      73,15,199,250
>>>>>>>> 
>>>>>>>> +        jc      NEAR $L$break_rdseed_bytes
>>>>>>>> 
>>>>>>>> +        dec     r11
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$oop_rdseed_bytes
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$done_rdseed_bytes
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$break_rdseed_bytes:
>>>>>>>> 
>>>>>>>> +        cmp     rdx,8
>>>>>>>> 
>>>>>>>> +        jb      NEAR $L$tail_rdseed_bytes
>>>>>>>> 
>>>>>>>> +        mov     QWORD[rcx],r10
>>>>>>>> 
>>>>>>>> +        lea     rcx,[8+rcx]
>>>>>>>> 
>>>>>>>> +        add     rax,8
>>>>>>>> 
>>>>>>>> +        sub     rdx,8
>>>>>>>> 
>>>>>>>> +        jz      NEAR $L$done_rdseed_bytes
>>>>>>>> 
>>>>>>>> +        mov     r11,8
>>>>>>>> 
>>>>>>>> +        jmp     NEAR $L$oop_rdseed_bytes
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +ALIGN   16
>>>>>>>> 
>>>>>>>> +$L$tail_rdseed_bytes:
>>>>>>>> 
>>>>>>>> +        mov     BYTE[rcx],r10b
>>>>>>>> 
>>>>>>>> +        lea     rcx,[1+rcx]
>>>>>>>> 
>>>>>>>> +        inc     rax
>>>>>>>> 
>>>>>>>> +        shr     r10,8
>>>>>>>> 
>>>>>>>> +        dec     rdx
>>>>>>>> 
>>>>>>>> +        jnz     NEAR $L$tail_rdseed_bytes
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +$L$done_rdseed_bytes:
>>>>>>>> 
>>>>>>>> +        xor     r10,r10
>>>>>>>> 
>>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> +
>>>>>>>> 
>>>>>>>> --
>>>>>>>> 2.28.0.windows.1
> 
> 
> 


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

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

* Re: [edk2-devel] [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
  2020-08-18 21:33               ` [edk2-devel] " Sean
  2020-08-18 23:29                 ` Andrew Fish
@ 2020-08-19 10:43                 ` Laszlo Ersek
  2020-08-19 16:08                   ` Michael D Kinney
  1 sibling, 1 reply; 42+ messages in thread
From: Laszlo Ersek @ 2020-08-19 10:43 UTC (permalink / raw)
  To: devel, spbrogan, michael.d.kinney, Wang, Jian J,
	Zurcher, Christopher J, Yao, Jiewen
  Cc: Lu, XiaoyuX, Ard Biesheuvel

Hi,

On 08/18/20 23:33, Sean wrote:
> Mike,
> 
> I am not technically a basetool maintainer but as an active user/dev in
> basetools, i would be opposed to bringing in perl as an edk2 dependency.
> Also introducing another language is counter to the goal of aligning on
> python and improving the python used within edk2.  From my perspective
> the openssl config case isn't strong enough to counter the above goal.
> In fact as you know we are trying to change the paradigm for
> Crypto/OpenSSL with the Crypto Driver
> (https://github.com/tianocore/edk2/tree/master/CryptoPkg/Driver) and
> BaseCryptLibOnProtocolPpi
> (https://github.com/tianocore/edk2/tree/master/CryptoPkg/Library/BaseCryptLibOnProtocolPpi)
> work so that everyday development doesn't need to compile openssl in
> their edk2 builds.

Here I'd only like to comment on this one aspect (= build OpenSSL as a
statically linked library vs. as a crypto service driver / PEIM).

Recently I tried to evaluate the crypto driver for OVMF. I started with
the PEI phase. The configuration interface (the PCD) is baroque, *BUT*
that is a direct consequence of OpenSSL offering a huge range of
interfaces. So no complaints about the config interface.

I also reviewed the CryptoPkg.dsc "pre-sets" (i.e., CRYPTO_SERVICES
being one of PACKAGE / ALL / NONE / MIN_PEI / MIN_DXE_MIN_SMM). I had
two problems:

- These pre-sets are supremely suitable for a platform that is composed
of multiple build runs; that is, build the crypto PEIM, build the DXE /
SMM protocol drivers, package up the resultant binaries, and *then*
build the actual platforms (which will then include the crypto service
drivers in *binary* form). On the other hand, the pre-sets are not
useful to a platform that is supposed to be built in a single-shot.
Importantly, I'm not saying that the pre-sets are *detrimental* to such
platforms -- they aren't. It's just that the pre-sets target a different
use case.

- The other problem I had was the one that we had discussed when the
crypto service driver was being introduced. Namely, selecting the
OpenSSL interfaces (interface families) that the platform actually consumes.

Now, I carefully tracked down the modules in OVMF that needed crypto
support, by *not* resolving SmmCryptLib, RuntimeCryptLib, TlsLib in
general [LibraryClasses] sections in the OVMF DSC files. Then I re-added
those lib-class resolutions as module-scoped <LibraryClasses> overrides
to the actual modules that needed them.

However, I didn't know how to even *begin* evaluating the specific "API
needs" of the modules identified thusly. On a Windows or Linux OS, when
you have a dynamically linked executable, and it doesn't find a symbol
in a shared library, you get a nice error message, and the application
doesn't start. On the other hand, if a crypto protocol call fails in SMM
because we missed a feature bit in the config PCD, the results are
somewhat less user-friendly.

The expression "minimum required services" in CryptoPkg.dsc seems
relevant, but it didn't convince me that it would cover everything
needed by -- for example -- VariableSmm, VariableRuntimeDxe, and TlsDxe.

So, given that I couldn't construct a "tight profile", I started my
investigation (for OVMF's PEI phase) by including the crypto service
PEIM with *all* interfaces enabled.

This would be restricted to "TPM_ENABLE", because only that is when
OVMF's PEI phase needs crypto -- due to including the various TPM1 and
TPM2 PEIMs.

So basically this check would replace the statically linked -- and
accordingly trimmed! -- "thick" OpenSSL library copies in the TPM1/PTM2
PEIMs, with the thin wrapper lib
(BaseCryptLibOnProtocolPpi/PeiCryptLib.inf) *plus* the full-blown crypto
service PEIM.

The result was a *violent* size explosion in PEIFV; at least in the
NOOPT build. Before:

> PEIFV [64%Full] 917504 total, 592456 used, 325048 free

after:

>   the required fv image size 0x132968 exceeds the set fv image size
> 0xe0000

The PEIFV footprint more than doubled, from 592,456 bytes to 1,255,784
bytes.

I gave up there. Until the "crypto profile" construction is not
automated for platforms, somehow, I don't know how I could maintain OVMF
consuming the crypto service PEIMs/drivers.

(I wonder if we should maintain a "required crypto services" bitmap for
each individual PEIM / DXE / SMM driver inside edk2. And then, when a
platform includes any one such PEIM or driver, they'd know to "OR" the
bitmap for that particular module into their platform PCD setting.)

> So I support leaving it as is which means if you have to change
> something in openssl config you deal with it and a special one off.

(OK, I guess I can comment on this too, after all.)

I agree.

While perl is readily available on Linux build hosts, I remember:
- accommodating the python3 BaseTools requirements on my RHEL7 laptop,
- (almost) bumping the NASM version so we could compile the VMGEXIT
instruction for IA32,
- the python virtual environment discussions for running CI locally.

So I agree that new build dependencies should be avoided as much as
possible.

Thanks
Laszlo


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

* Re: [edk2-devel] [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
  2020-08-18 21:22             ` Zurcher, Christopher J
@ 2020-08-19 15:37               ` Andrew Fish
  2020-08-19 18:06                 ` Laszlo Ersek
  0 siblings, 1 reply; 42+ messages in thread
From: Andrew Fish @ 2020-08-19 15:37 UTC (permalink / raw)
  To: edk2-devel-groups-io, christopher.j.zurcher
  Cc: Mike Kinney, Yao, Jiewen, Wang, Jian J, Lu, XiaoyuX,
	Ard Biesheuvel



> On Aug 18, 2020, at 2:22 PM, Zurcher, Christopher J <christopher.j.zurcher@intel.com> wrote:
> 
> Per the added header comment in process_files.pl:
> 
> # Due to the script wrapping required to process the OpenSSL
> # configuration data, each native architecture must be processed
> # individually by the maintainer (in addition to the standard version):
> #   ./process_files.pl

Side note: process_file.pl is missing a copyright statement. 

Thanks,

Andrew Fish

> #   ./process_files.pl X64
> #   ./process_files.pl [Arch]
> 
> --
> Christopher Zurcher
> 
>> -----Original Message-----
>> From: Kinney, Michael D <michael.d.kinney@intel.com>
>> Sent: Tuesday, August 18, 2020 09:15
>> To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>; Yao, Jiewen
>> <jiewen.yao@intel.com>; devel@edk2.groups.io; Kinney, Michael D
>> <michael.d.kinney@intel.com>
>> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
>> Ard Biesheuvel <ard.biesheuvel@linaro.org>
>> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated
>> assembly files for X64
>> 
>> Christopher,
>> 
>> Can you provide the details on how to generate the IA32 and X64 files?  What
>> is the additional parameter?
>> 
>> Thanks,
>> 
>> Mike
>> 
>>> -----Original Message-----
>>> From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
>>> Sent: Friday, August 14, 2020 12:35 PM
>>> To: Yao, Jiewen <jiewen.yao@intel.com>; Kinney, Michael D
>> <michael.d.kinney@intel.com>; devel@edk2.groups.io
>>> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
>> <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated
>> assembly files for X64
>>> 
>>> The current OpenSSL "UEFI" configuration depends on the OpenSSL build
>> happening in a Unix-like environment. For a Windows-based
>>> build, this must be done in a wrapper such as Cygwin/git bash or WSL.
>> Integrating the OpenSSL config step into the build process is
>>> a non-trivial change.
>>> 
>>>>>> That means, whenever we upgrade the openssl, we need manually
>> generate
>>>>>> them again.
>>>>>> Any step by step, or readme to tell us how to do that?
>>> 
>>> The process for generating these X64 files is virtually identical to the
>> already-existing maintainer process for OpensslLib, with
>>> only one additional argument required to process_files.pl.
>>> 
>>> OpensslLib as it exists today in EDK2 already includes auto-generated files
>> from the Perl configure process. If we want to re-
>>> architect how we include OpenSSL into EDK2, I think that should be done in
>> a different patch set. Additionally, such a large task
>>> might be a waste of time with the release of OpenSSL 3 happening later this
>> year. They are making changes to their build system, and
>>> I think that if we are going to re-architect our side of it, we should wait
>> until we are adopting OpenSSL 3.
>>> 
>>> --
>>> Christopher Zurcher
>>> 
>>>> -----Original Message-----
>>>> From: Yao, Jiewen <jiewen.yao@intel.com>
>>>> Sent: Thursday, August 13, 2020 08:46
>>>> To: Kinney, Michael D <michael.d.kinney@intel.com>; Zurcher, Christopher
>> J
>>>> <christopher.j.zurcher@intel.com>; devel@edk2.groups.io
>>>> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
>> <xiaoyux.lu@intel.com>;
>>>> Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>>> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
>> generated
>>>> assembly files for X64
>>>> 
>>>> Thank you Mike to help on this.
>>>> 
>>>> I also believe that the best option is to integrate the auto-gen process
>> in
>>>> base tool.
>>>> 
>>>> 
>>>> 
>>>>> -----Original Message-----
>>>>> From: Kinney, Michael D <michael.d.kinney@intel.com>
>>>>> Sent: Thursday, August 13, 2020 11:38 PM
>>>>> To: Yao, Jiewen <jiewen.yao@intel.com>; Zurcher, Christopher J
>>>>> <christopher.j.zurcher@intel.com>; devel@edk2.groups.io; Kinney,
>> Michael D
>>>>> <michael.d.kinney@intel.com>
>>>>> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
>>>> <xiaoyux.lu@intel.com>;
>>>>> Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>>>> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
>> generated
>>>>> assembly files for X64
>>>>> 
>>>>> Hi Jiewen,
>>>>> 
>>>>> For this use case, generating the files as part of the build process
>> would
>>>> add
>>>>> a dependency in pearl.
>>>>> 
>>>>> Based on other recent CryptoPkg changes and some being discussed in BZ,
>> I
>>>> am
>>>>> seeing more changes to the OpenSLL .pl configuration files, and I am
>>>> concerned
>>>>> that based on platform requirements, we may need to build OpenSSL with
>>>>> different .pl config file settings which would also add a pearl
>> dependency
>>>>> to the build.
>>>>> 
>>>>> So exploring what it would take to add the pearl dependency to the
>> build
>>>> system
>>>>> is worth exploring and if successful would eliminate the need to
>> checkin
>>>> these
>>>>> types of autogenerated files.  This would also reduce maintenance of
>> the
>>>>> auto-genererated files when EDK II moves to a new version of OpenSSL.
>>>>> 
>>>>> @Cristopher - Can you please share a branch that uses pearl to generate
>> the
>>>>> files
>>>>> instead of checking them in?  I would like the BaseTools maintainers to
>>>> review
>>>>> that and evaluate adding the pearl dependency.  Hopefully, we can make
>> the
>>>>> pearl dependency detectable so it is only required if the build
>> requires
>>>> it.
>>>>> 
>>>>> Thanks,
>>>>> 
>>>>> Mike
>>>>> 
>>>>>> -----Original Message-----
>>>>>> From: Yao, Jiewen <jiewen.yao@intel.com>
>>>>>> Sent: Thursday, August 13, 2020 8:25 AM
>>>>>> To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
>>>>> devel@edk2.groups.io
>>>>>> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
>>>>> <xiaoyux.lu@intel.com>; Kinney, Michael D
>>>>>> <michael.d.kinney@intel.com>; Ard Biesheuvel
>> <ard.biesheuvel@linaro.org>
>>>>>> Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
>>>>> generated assembly files for X64
>>>>>> 
>>>>>> + Mike Kinney
>>>>>> 
>>>>>> I am not sure if it is a right way to check in auto-generated file.
>>>>>> That means, whenever we upgrade the openssl, we need manually
>> generate
>>>>> them again.
>>>>>> Any step by step, or readme to tell us how to do that?
>>>>>> 
>>>>>> Mike, would you please double confirm what is the right way for auto-
>>>>> generated file in EDKII?
>>>>>> 
>>>>>> 
>>>>>>> -----Original Message-----
>>>>>>> From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
>>>>>>> Sent: Tuesday, August 4, 2020 8:24 AM
>>>>>>> To: devel@edk2.groups.io
>>>>>>> Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
>>>>> <jian.j.wang@intel.com>;
>>>>>>> Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
>>>>> <ard.biesheuvel@linaro.org>
>>>>>>> Subject: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
>> generated
>>>>>>> assembly files for X64
>>>>>>> 
>>>>>>> BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
>>>>>>> 
>>>>>>> Adding the auto-generated assembly files for the X64 architecture.
>>>>>>> 
>>>>>>> Cc: Jiewen Yao <jiewen.yao@intel.com>
>>>>>>> Cc: Jian J Wang <jian.j.wang@intel.com>
>>>>>>> Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
>>>>>>> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>>>>>> Signed-off-by: Christopher J Zurcher
>> <christopher.j.zurcher@intel.com>
>>>>>>> ---
>>>>>>> CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm
>> |
>>>>> 732
>>>>>>> +++
>>>>>>> CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm
>> |
>>>>>>> 1916 ++++++++
>>>>>>> CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
>> x86_64.nasm |
>>>>>>> 78 +
>>>>>>> CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
>> |
>>>>> 5103
>>>>>>> ++++++++++++++++++++
>>>>>>> CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
>> |
>>>>> 1173
>>>>>>> +++++
>>>>>>> CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm
>> |
>>>>>>> 1569 ++++++
>>>>>>> CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm
>> |
>>>>> 3137
>>>>>>> ++++++++++++
>>>>>>> CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
>> |
>>>>> 2884
>>>>>>> +++++++++++
>>>>>>> CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm
>> |
>>>>>>> 3461 +++++++++++++
>>>>>>> CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
>> |
>>>>> 3313
>>>>>>> +++++++++++++
>>>>>>> CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
>> |
>>>>> 1938
>>>>>>> ++++++++
>>>>>>> CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
>> |
>>>> 491
>>>>> ++
>>>>>>> 12 files changed, 25795 insertions(+)
>>>>>>> 
>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
>>>>>>> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
>>>>>>> x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..1a3ed1dd35
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
>> x86_64.nasm
>>>>>>> @@ -0,0 +1,732 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>> 
>>>>>>> +; Generated from openssl/crypto/aes/asm/aesni-mb-x86_64.pl
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not
>> use
>>>>>>> 
>>>>>>> +; this file except in compliance with the License.  You can obtain
>> a
>>>> copy
>>>>>>> 
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>> 
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +default rel
>>>>>>> 
>>>>>>> +%define XMMWORD
>>>>>>> 
>>>>>>> +%define YMMWORD
>>>>>>> 
>>>>>>> +%define ZMMWORD
>>>>>>> 
>>>>>>> +section .text code align=64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  aesni_multi_cbc_encrypt
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +aesni_multi_cbc_encrypt:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_aesni_multi_cbc_encrypt:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm10
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm11
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm12
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-104)+rax],xmm13
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-88)+rax],xmm14
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-72)+rax],xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     rsp,48
>>>>>>> 
>>>>>>> +        and     rsp,-64
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$enc4x_body:
>>>>>>> 
>>>>>>> +        movdqu  xmm12,XMMWORD[rsi]
>>>>>>> 
>>>>>>> +        lea     rsi,[120+rsi]
>>>>>>> 
>>>>>>> +        lea     rdi,[80+rdi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$enc4x_loop_grande:
>>>>>>> 
>>>>>>> +        mov     DWORD[24+rsp],edx
>>>>>>> 
>>>>>>> +        xor     edx,edx
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[((-64))+rdi]
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[((-80))+rdi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[((-72))+rdi]
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[((-56))+rdi]
>>>>>>> 
>>>>>>> +        mov     DWORD[32+rsp],ecx
>>>>>>> 
>>>>>>> +        cmovle  r8,rsp
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[((-24))+rdi]
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[((-40))+rdi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[((-32))+rdi]
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        movdqu  xmm3,XMMWORD[((-16))+rdi]
>>>>>>> 
>>>>>>> +        mov     DWORD[36+rsp],ecx
>>>>>>> 
>>>>>>> +        cmovle  r9,rsp
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[16+rdi]
>>>>>>> 
>>>>>>> +        mov     r10,QWORD[rdi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        mov     r14,QWORD[8+rdi]
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        movdqu  xmm4,XMMWORD[24+rdi]
>>>>>>> 
>>>>>>> +        mov     DWORD[40+rsp],ecx
>>>>>>> 
>>>>>>> +        cmovle  r10,rsp
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[56+rdi]
>>>>>>> 
>>>>>>> +        mov     r11,QWORD[40+rdi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        mov     r15,QWORD[48+rdi]
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[64+rdi]
>>>>>>> 
>>>>>>> +        mov     DWORD[44+rsp],ecx
>>>>>>> 
>>>>>>> +        cmovle  r11,rsp
>>>>>>> 
>>>>>>> +        test    edx,edx
>>>>>>> 
>>>>>>> +        jz      NEAR $L$enc4x_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((16-120))+rsi]
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm12
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((32-120))+rsi]
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm12
>>>>>>> 
>>>>>>> +        mov     eax,DWORD[((240-120))+rsi]
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[r8]
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm12
>>>>>>> 
>>>>>>> +        movdqu  xmm7,XMMWORD[r9]
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm6
>>>>>>> 
>>>>>>> +        movdqu  xmm8,XMMWORD[r10]
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm7
>>>>>>> 
>>>>>>> +        movdqu  xmm9,XMMWORD[r11]
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm10,XMMWORD[32+rsp]
>>>>>>> 
>>>>>>> +        xor     rbx,rbx
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_enc4x
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$oop_enc4x:
>>>>>>> 
>>>>>>> +        add     rbx,16
>>>>>>> 
>>>>>>> +        lea     rbp,[16+rsp]
>>>>>>> 
>>>>>>> +        mov     ecx,1
>>>>>>> 
>>>>>>> +        sub     rbp,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        prefetcht0      [31+rbx*1+r8]
>>>>>>> 
>>>>>>> +        prefetcht0      [31+rbx*1+r9]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +        prefetcht0      [31+rbx*1+r10]
>>>>>>> 
>>>>>>> +        prefetcht0      [31+rbx*1+r10]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +DB      102,15,56,220,233
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((48-120))+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      102,15,56,220,216
>>>>>>> 
>>>>>>> +DB      102,15,56,220,224
>>>>>>> 
>>>>>>> +        cmovge  r8,rbp
>>>>>>> 
>>>>>>> +        cmovg   r12,rbp
>>>>>>> 
>>>>>>> +DB      102,15,56,220,232
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-56))+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +        cmovge  r9,rbp
>>>>>>> 
>>>>>>> +        cmovg   r13,rbp
>>>>>>> 
>>>>>>> +DB      102,15,56,220,233
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-40))+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      102,15,56,220,216
>>>>>>> 
>>>>>>> +DB      102,15,56,220,224
>>>>>>> 
>>>>>>> +        cmovge  r10,rbp
>>>>>>> 
>>>>>>> +        cmovg   r14,rbp
>>>>>>> 
>>>>>>> +DB      102,15,56,220,232
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-24))+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +        cmovge  r11,rbp
>>>>>>> 
>>>>>>> +        cmovg   r15,rbp
>>>>>>> 
>>>>>>> +DB      102,15,56,220,233
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-8))+rsi]
>>>>>>> 
>>>>>>> +        movdqa  xmm11,xmm10
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        prefetcht0      [15+rbx*1+r12]
>>>>>>> 
>>>>>>> +        prefetcht0      [15+rbx*1+r13]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,216
>>>>>>> 
>>>>>>> +        prefetcht0      [15+rbx*1+r14]
>>>>>>> 
>>>>>>> +        prefetcht0      [15+rbx*1+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,224
>>>>>>> 
>>>>>>> +DB      102,15,56,220,232
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((128-120))+rsi]
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        pcmpgtd xmm11,xmm12
>>>>>>> 
>>>>>>> +        movdqu  xmm12,XMMWORD[((-120))+rsi]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm11
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm10
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +DB      102,15,56,220,233
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((144-120))+rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        cmp     eax,11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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[((160-120))+rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        jb      NEAR $L$enc4x_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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[((176-120))+rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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[((192-120))+rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        je      NEAR $L$enc4x_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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[((208-120))+rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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[((224-120))+rsi]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$enc4x_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$enc4x_tail:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +DB      102,15,56,220,233
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[rbx*1+r8]
>>>>>>> 
>>>>>>> +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,221,208
>>>>>>> 
>>>>>>> +        movdqu  xmm7,XMMWORD[rbx*1+r9]
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +DB      102,15,56,221,216
>>>>>>> 
>>>>>>> +        movdqu  xmm8,XMMWORD[rbx*1+r10]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm12
>>>>>>> 
>>>>>>> +DB      102,15,56,221,224
>>>>>>> 
>>>>>>> +        movdqu  xmm9,XMMWORD[rbx*1+r11]
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm12
>>>>>>> 
>>>>>>> +DB      102,15,56,221,232
>>>>>>> 
>>>>>>> +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm6
>>>>>>> 
>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm7
>>>>>>> 
>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm8
>>>>>>> 
>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        dec     edx
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_enc4x
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edx,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rdi,[160+rdi]
>>>>>>> 
>>>>>>> +        dec     edx
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$enc4x_loop_grande
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$enc4x_done:
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[((-216))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[((-200))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[((-184))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[((-168))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm10,XMMWORD[((-152))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm11,XMMWORD[((-136))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm12,XMMWORD[((-120))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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$enc4x_epilogue:
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$SEH_end_aesni_multi_cbc_encrypt:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  aesni_multi_cbc_decrypt
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +aesni_multi_cbc_decrypt:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_aesni_multi_cbc_decrypt:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm10
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm11
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm12
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-104)+rax],xmm13
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-88)+rax],xmm14
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-72)+rax],xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     rsp,48
>>>>>>> 
>>>>>>> +        and     rsp,-64
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$dec4x_body:
>>>>>>> 
>>>>>>> +        movdqu  xmm12,XMMWORD[rsi]
>>>>>>> 
>>>>>>> +        lea     rsi,[120+rsi]
>>>>>>> 
>>>>>>> +        lea     rdi,[80+rdi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$dec4x_loop_grande:
>>>>>>> 
>>>>>>> +        mov     DWORD[24+rsp],edx
>>>>>>> 
>>>>>>> +        xor     edx,edx
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[((-64))+rdi]
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[((-80))+rdi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[((-72))+rdi]
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[((-56))+rdi]
>>>>>>> 
>>>>>>> +        mov     DWORD[32+rsp],ecx
>>>>>>> 
>>>>>>> +        cmovle  r8,rsp
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[((-24))+rdi]
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[((-40))+rdi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[((-32))+rdi]
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        movdqu  xmm7,XMMWORD[((-16))+rdi]
>>>>>>> 
>>>>>>> +        mov     DWORD[36+rsp],ecx
>>>>>>> 
>>>>>>> +        cmovle  r9,rsp
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[16+rdi]
>>>>>>> 
>>>>>>> +        mov     r10,QWORD[rdi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        mov     r14,QWORD[8+rdi]
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        movdqu  xmm8,XMMWORD[24+rdi]
>>>>>>> 
>>>>>>> +        mov     DWORD[40+rsp],ecx
>>>>>>> 
>>>>>>> +        cmovle  r10,rsp
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[56+rdi]
>>>>>>> 
>>>>>>> +        mov     r11,QWORD[40+rdi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        mov     r15,QWORD[48+rdi]
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        movdqu  xmm9,XMMWORD[64+rdi]
>>>>>>> 
>>>>>>> +        mov     DWORD[44+rsp],ecx
>>>>>>> 
>>>>>>> +        cmovle  r11,rsp
>>>>>>> 
>>>>>>> +        test    edx,edx
>>>>>>> 
>>>>>>> +        jz      NEAR $L$dec4x_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((16-120))+rsi]
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((32-120))+rsi]
>>>>>>> 
>>>>>>> +        mov     eax,DWORD[((240-120))+rsi]
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[r8]
>>>>>>> 
>>>>>>> +        movdqu  xmm3,XMMWORD[r9]
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm12
>>>>>>> 
>>>>>>> +        movdqu  xmm4,XMMWORD[r10]
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm12
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[r11]
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm10,XMMWORD[32+rsp]
>>>>>>> 
>>>>>>> +        xor     rbx,rbx
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_dec4x
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$oop_dec4x:
>>>>>>> 
>>>>>>> +        add     rbx,16
>>>>>>> 
>>>>>>> +        lea     rbp,[16+rsp]
>>>>>>> 
>>>>>>> +        mov     ecx,1
>>>>>>> 
>>>>>>> +        sub     rbp,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +        prefetcht0      [31+rbx*1+r8]
>>>>>>> 
>>>>>>> +        prefetcht0      [31+rbx*1+r9]
>>>>>>> 
>>>>>>> +DB      102,15,56,222,217
>>>>>>> 
>>>>>>> +        prefetcht0      [31+rbx*1+r10]
>>>>>>> 
>>>>>>> +        prefetcht0      [31+rbx*1+r11]
>>>>>>> 
>>>>>>> +DB      102,15,56,222,225
>>>>>>> 
>>>>>>> +DB      102,15,56,222,233
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((48-120))+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +DB      102,15,56,222,208
>>>>>>> 
>>>>>>> +DB      102,15,56,222,216
>>>>>>> 
>>>>>>> +DB      102,15,56,222,224
>>>>>>> 
>>>>>>> +        cmovge  r8,rbp
>>>>>>> 
>>>>>>> +        cmovg   r12,rbp
>>>>>>> 
>>>>>>> +DB      102,15,56,222,232
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-56))+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +DB      102,15,56,222,217
>>>>>>> 
>>>>>>> +DB      102,15,56,222,225
>>>>>>> 
>>>>>>> +        cmovge  r9,rbp
>>>>>>> 
>>>>>>> +        cmovg   r13,rbp
>>>>>>> 
>>>>>>> +DB      102,15,56,222,233
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-40))+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +DB      102,15,56,222,208
>>>>>>> 
>>>>>>> +DB      102,15,56,222,216
>>>>>>> 
>>>>>>> +DB      102,15,56,222,224
>>>>>>> 
>>>>>>> +        cmovge  r10,rbp
>>>>>>> 
>>>>>>> +        cmovg   r14,rbp
>>>>>>> 
>>>>>>> +DB      102,15,56,222,232
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-24))+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +DB      102,15,56,222,217
>>>>>>> 
>>>>>>> +DB      102,15,56,222,225
>>>>>>> 
>>>>>>> +        cmovge  r11,rbp
>>>>>>> 
>>>>>>> +        cmovg   r15,rbp
>>>>>>> 
>>>>>>> +DB      102,15,56,222,233
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-8))+rsi]
>>>>>>> 
>>>>>>> +        movdqa  xmm11,xmm10
>>>>>>> 
>>>>>>> +DB      102,15,56,222,208
>>>>>>> 
>>>>>>> +        prefetcht0      [15+rbx*1+r12]
>>>>>>> 
>>>>>>> +        prefetcht0      [15+rbx*1+r13]
>>>>>>> 
>>>>>>> +DB      102,15,56,222,216
>>>>>>> 
>>>>>>> +        prefetcht0      [15+rbx*1+r14]
>>>>>>> 
>>>>>>> +        prefetcht0      [15+rbx*1+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,222,224
>>>>>>> 
>>>>>>> +DB      102,15,56,222,232
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((128-120))+rsi]
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +        pcmpgtd xmm11,xmm12
>>>>>>> 
>>>>>>> +        movdqu  xmm12,XMMWORD[((-120))+rsi]
>>>>>>> 
>>>>>>> +DB      102,15,56,222,217
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm11
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm10
>>>>>>> 
>>>>>>> +DB      102,15,56,222,225
>>>>>>> 
>>>>>>> +DB      102,15,56,222,233
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((144-120))+rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        cmp     eax,11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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[((160-120))+rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        jb      NEAR $L$dec4x_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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[((176-120))+rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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[((192-120))+rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        je      NEAR $L$dec4x_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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[((208-120))+rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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[((224-120))+rsi]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$dec4x_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$dec4x_tail:
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +DB      102,15,56,222,217
>>>>>>> 
>>>>>>> +DB      102,15,56,222,225
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm0
>>>>>>> 
>>>>>>> +DB      102,15,56,222,233
>>>>>>> 
>>>>>>> +        movdqu  xmm1,XMMWORD[((16-120))+rsi]
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm0
>>>>>>> 
>>>>>>> +        movdqu  xmm0,XMMWORD[((32-120))+rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,223,214
>>>>>>> 
>>>>>>> +DB      102,15,56,223,223
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[((-16))+rbx*1+r8]
>>>>>>> 
>>>>>>> +        movdqu  xmm7,XMMWORD[((-16))+rbx*1+r9]
>>>>>>> 
>>>>>>> +DB      102,65,15,56,223,224
>>>>>>> 
>>>>>>> +DB      102,65,15,56,223,233
>>>>>>> 
>>>>>>> +        movdqu  xmm8,XMMWORD[((-16))+rbx*1+r10]
>>>>>>> 
>>>>>>> +        movdqu  xmm9,XMMWORD[((-16))+rbx*1+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r12],xmm2
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[rbx*1+r8]
>>>>>>> 
>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r13],xmm3
>>>>>>> 
>>>>>>> +        movdqu  xmm3,XMMWORD[rbx*1+r9]
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm12
>>>>>>> 
>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r14],xmm4
>>>>>>> 
>>>>>>> +        movdqu  xmm4,XMMWORD[rbx*1+r10]
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm12
>>>>>>> 
>>>>>>> +        movups  XMMWORD[(-16)+rbx*1+r15],xmm5
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[rbx*1+r11]
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        dec     edx
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_dec4x
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edx,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rdi,[160+rdi]
>>>>>>> 
>>>>>>> +        dec     edx
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$dec4x_loop_grande
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$dec4x_done:
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[((-216))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[((-200))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[((-184))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[((-168))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm10,XMMWORD[((-152))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm11,XMMWORD[((-136))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm12,XMMWORD[((-120))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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$dec4x_epilogue:
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$SEH_end_aesni_multi_cbc_decrypt:
>>>>>>> 
>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +se_handler:
>>>>>>> 
>>>>>>> +        push    rsi
>>>>>>> 
>>>>>>> +        push    rdi
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +        pushfq
>>>>>>> 
>>>>>>> +        sub     rsp,64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>> 
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[16+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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     rsi,[((-56-160))+rax]
>>>>>>> 
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>> 
>>>>>>> +        mov     ecx,20
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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[40+r9]
>>>>>>> 
>>>>>>> +        mov     rsi,r8
>>>>>>> 
>>>>>>> +        mov     ecx,154
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,r9
>>>>>>> 
>>>>>>> +        xor     rcx,rcx
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +        popfq
>>>>>>> 
>>>>>>> +        pop     r15
>>>>>>> 
>>>>>>> +        pop     r14
>>>>>>> 
>>>>>>> +        pop     r13
>>>>>>> 
>>>>>>> +        pop     r12
>>>>>>> 
>>>>>>> +        pop     rbp
>>>>>>> 
>>>>>>> +        pop     rbx
>>>>>>> 
>>>>>>> +        pop     rdi
>>>>>>> 
>>>>>>> +        pop     rsi
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +section .pdata rdata align=4
>>>>>>> 
>>>>>>> +ALIGN   4
>>>>>>> 
>>>>>>> +        DD      $L$SEH_begin_aesni_multi_cbc_encrypt wrt
>> ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_end_aesni_multi_cbc_encrypt wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_info_aesni_multi_cbc_encrypt wrt
>> ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_begin_aesni_multi_cbc_decrypt wrt
>> ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_end_aesni_multi_cbc_decrypt wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_info_aesni_multi_cbc_decrypt wrt
>> ..imagebase
>>>>>>> 
>>>>>>> +section .xdata rdata align=8
>>>>>>> 
>>>>>>> +ALIGN   8
>>>>>>> 
>>>>>>> +$L$SEH_info_aesni_multi_cbc_encrypt:
>>>>>>> 
>>>>>>> +DB      9,0,0,0
>>>>>>> 
>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$enc4x_body wrt ..imagebase,$L$enc4x_epilogue
>>>>>>> wrt ..imagebase
>>>>>>> 
>>>>>>> +$L$SEH_info_aesni_multi_cbc_decrypt:
>>>>>>> 
>>>>>>> +DB      9,0,0,0
>>>>>>> 
>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$dec4x_body wrt ..imagebase,$L$dec4x_epilogue
>>>>>>> wrt ..imagebase
>>>>>>> 
>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
>> sha1-
>>>>>>> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
>> sha1-
>>>>>>> x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..f4fd9ca50d
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
>>>>> x86_64.nasm
>>>>>>> @@ -0,0 +1,1916 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>> 
>>>>>>> +; Generated from openssl/crypto/aes/asm/aesni-sha1-x86_64.pl
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not
>> use
>>>>>>> 
>>>>>>> +; this file except in compliance with the License.  You can obtain
>> a
>>>> copy
>>>>>>> 
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>> 
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +default rel
>>>>>>> 
>>>>>>> +%define XMMWORD
>>>>>>> 
>>>>>>> +%define YMMWORD
>>>>>>> 
>>>>>>> +%define ZMMWORD
>>>>>>> 
>>>>>>> +section .text code align=64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  aesni_cbc_sha1_enc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +aesni_cbc_sha1_enc:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+0))]
>>>>>>> 
>>>>>>> +        mov     r11,QWORD[((OPENSSL_ia32cap_P+4))]
>>>>>>> 
>>>>>>> +        bt      r11,61
>>>>>>> 
>>>>>>> +        jc      NEAR aesni_cbc_sha1_enc_shaext
>>>>>>> 
>>>>>>> +        jmp     NEAR aesni_cbc_sha1_enc_ssse3
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +aesni_cbc_sha1_enc_ssse3:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_aesni_cbc_sha1_enc_ssse3:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +        mov     rcx,r9
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10,QWORD[56+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[((-264))+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(96+0)+rsp],xmm6
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(96+16)+rsp],xmm7
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(96+32)+rsp],xmm8
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(96+48)+rsp],xmm9
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(96+64)+rsp],xmm10
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(96+80)+rsp],xmm11
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(96+96)+rsp],xmm12
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(96+112)+rsp],xmm13
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(96+128)+rsp],xmm14
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(96+144)+rsp],xmm15
>>>>>>> 
>>>>>>> +$L$prologue_ssse3:
>>>>>>> 
>>>>>>> +        mov     r12,rdi
>>>>>>> 
>>>>>>> +        mov     r13,rsi
>>>>>>> 
>>>>>>> +        mov     r14,rdx
>>>>>>> 
>>>>>>> +        lea     r15,[112+rcx]
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[r8]
>>>>>>> 
>>>>>>> +        mov     QWORD[88+rsp],r8
>>>>>>> 
>>>>>>> +        shl     r14,6
>>>>>>> 
>>>>>>> +        sub     r13,r12
>>>>>>> 
>>>>>>> +        mov     r8d,DWORD[((240-112))+r15]
>>>>>>> 
>>>>>>> +        add     r14,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r11,[K_XX_XX]
>>>>>>> 
>>>>>>> +        mov     eax,DWORD[r9]
>>>>>>> 
>>>>>>> +        mov     ebx,DWORD[4+r9]
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[8+r9]
>>>>>>> 
>>>>>>> +        mov     edx,DWORD[12+r9]
>>>>>>> 
>>>>>>> +        mov     esi,ebx
>>>>>>> 
>>>>>>> +        mov     ebp,DWORD[16+r9]
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        and     esi,edi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[64+r11]
>>>>>>> 
>>>>>>> +        movdqa  xmm13,XMMWORD[r11]
>>>>>>> 
>>>>>>> +        movdqu  xmm4,XMMWORD[r10]
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[16+r10]
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[32+r10]
>>>>>>> 
>>>>>>> +        movdqu  xmm7,XMMWORD[48+r10]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,227
>>>>>>> 
>>>>>>> +DB      102,15,56,0,235
>>>>>>> 
>>>>>>> +DB      102,15,56,0,243
>>>>>>> 
>>>>>>> +        add     r10,64
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm13
>>>>>>> 
>>>>>>> +DB      102,15,56,0,251
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm13
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm13
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[rsp],xmm4
>>>>>>> 
>>>>>>> +        psubd   xmm4,xmm13
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm5
>>>>>>> 
>>>>>>> +        psubd   xmm5,xmm13
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm6
>>>>>>> 
>>>>>>> +        psubd   xmm6,xmm13
>>>>>>> 
>>>>>>> +        movups  xmm15,XMMWORD[((-112))+r15]
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+r15]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_ssse3
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$oop_ssse3:
>>>>>>> 
>>>>>>> +        ror     ebx,2
>>>>>>> 
>>>>>>> +        movups  xmm14,XMMWORD[r12]
>>>>>>> 
>>>>>>> +        xorps   xmm14,xmm15
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm14
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-80))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        pshufd  xmm8,xmm4,238
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm7
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm7
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[rsp]
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm8,xmm5
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,esi
>>>>>>> 
>>>>>>> +        psrldq  xmm12,4
>>>>>>> 
>>>>>>> +        and     edi,ebx
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm4
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm6
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        mov     esi,ebp
>>>>>>> 
>>>>>>> +        add     edx,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm12
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm13
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-64))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        and     esi,eax
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm8
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        pslldq  xmm3,12
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm8
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        psrld   xmm12,31
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,esi
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm3
>>>>>>> 
>>>>>>> +        and     edi,ebp
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        psrld   xmm3,30
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        por     xmm8,xmm12
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        mov     esi,ecx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-48))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        pslld   xmm13,2
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[r11]
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        and     esi,edx
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm13
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        pshufd  xmm9,xmm5,238
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm8
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm8
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm9,xmm6
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,esi
>>>>>>> 
>>>>>>> +        psrldq  xmm13,4
>>>>>>> 
>>>>>>> +        and     edi,ecx
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm5
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-32))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm7
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        mov     esi,eax
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm13
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[rsp],xmm3
>>>>>>> 
>>>>>>> +        add     ebp,edi
>>>>>>> 
>>>>>>> +        and     esi,ebx
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm9
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm9
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        pslldq  xmm12,12
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>> 
>>>>>>> +        mov     edi,ebp
>>>>>>> 
>>>>>>> +        add     edx,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        psrld   xmm13,31
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,esi
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-16))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>> 
>>>>>>> +        and     edi,eax
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        psrld   xmm12,30
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        por     xmm9,xmm13
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        mov     esi,edx
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        pslld   xmm3,2
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm12
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        movdqa  xmm12,XMMWORD[16+r11]
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,edi
>>>>>>> 
>>>>>>> +        and     esi,ebp
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm3
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        pshufd  xmm10,xmm6,238
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm9
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm10,xmm7
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        psrldq  xmm3,4
>>>>>>> 
>>>>>>> +        and     edi,edx
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm6
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm8
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        mov     esi,ebx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm3
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm12
>>>>>>> 
>>>>>>> +        add     eax,edi
>>>>>>> 
>>>>>>> +        and     esi,ecx
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm10
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        pslldq  xmm13,12
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm10
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        psrld   xmm3,31
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,esi
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm13
>>>>>>> 
>>>>>>> +        and     edi,ebx
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        psrld   xmm13,30
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        por     xmm10,xmm3
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        mov     esi,ebp
>>>>>>> 
>>>>>>> +        add     edx,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        pslld   xmm12,2
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm13
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        movdqa  xmm13,XMMWORD[16+r11]
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        and     esi,eax
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm12
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        pshufd  xmm11,xmm7,238
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm10
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm10
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm11,xmm8
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,esi
>>>>>>> 
>>>>>>> +        psrldq  xmm12,4
>>>>>>> 
>>>>>>> +        and     edi,ebp
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm7
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm9
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        mov     esi,ecx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[48+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm12
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm13
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        and     esi,edx
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm11
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        pslldq  xmm3,12
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm11
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        psrld   xmm12,31
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,esi
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm3
>>>>>>> 
>>>>>>> +        and     edi,ecx
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        psrld   xmm3,30
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        cmp     r8d,11
>>>>>>> 
>>>>>>> +        jb      NEAR $L$aesenclast1
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[64+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[80+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        je      NEAR $L$aesenclast1
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[96+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[112+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +$L$aesenclast1:
>>>>>>> 
>>>>>>> +DB      102,15,56,221,209
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+r15]
>>>>>>> 
>>>>>>> +        por     xmm11,xmm12
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        mov     esi,eax
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        pslld   xmm13,2
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm3
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[16+r11]
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,edi
>>>>>>> 
>>>>>>> +        and     esi,ebx
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm13
>>>>>>> 
>>>>>>> +        pshufd  xmm13,xmm10,238
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm8
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        mov     edi,ebp
>>>>>>> 
>>>>>>> +        add     edx,DWORD[rsp]
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm13,xmm11
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>> 
>>>>>>> +        add     edx,esi
>>>>>>> 
>>>>>>> +        movups  xmm14,XMMWORD[16+r12]
>>>>>>> 
>>>>>>> +        xorps   xmm14,xmm15
>>>>>>> 
>>>>>>> +        movups  XMMWORD[r13*1+r12],xmm2
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm14
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-80))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        and     edi,eax
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm3
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm11
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm13
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        mov     esi,edx
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm4
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm3
>>>>>>> 
>>>>>>> +        add     ecx,edi
>>>>>>> 
>>>>>>> +        and     esi,ebp
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        pslld   xmm4,2
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        psrld   xmm13,30
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-64))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        por     xmm4,xmm13
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        pshufd  xmm3,xmm11,238
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        and     edi,edx
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        mov     esi,ebx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,edi
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm9
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-48))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm3,xmm4
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm6
>>>>>>> 
>>>>>>> +        add     ebp,esi
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm12
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm4
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm3
>>>>>>> 
>>>>>>> +        add     edx,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        mov     esi,ebp
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm5
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[rsp],xmm12
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        pslld   xmm5,2
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        psrld   xmm3,30
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,esi
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-32))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        por     xmm5,xmm3
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        pshufd  xmm12,xmm4,238
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        mov     esi,ecx
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +        add     eax,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm12,xmm5
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +        add     eax,esi
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[32+r11]
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm5
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-16))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        mov     esi,eax
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm6
>>>>>>> 
>>>>>>> +        add     ebp,edi
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm13
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        pslld   xmm6,2
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        mov     edi,ebp
>>>>>>> 
>>>>>>> +        psrld   xmm12,30
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        por     xmm6,xmm12
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        pshufd  xmm13,xmm5,238
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        mov     esi,edx
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,edi
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm11
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm13,xmm6
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm8
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm3
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm6
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm13
>>>>>>> 
>>>>>>> +        add     eax,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        mov     esi,ebx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm7
>>>>>>> 
>>>>>>> +        add     eax,edi
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm3
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        pslld   xmm7,2
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +        psrld   xmm13,30
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,esi
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        por     xmm7,xmm13
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        pshufd  xmm3,xmm6,238
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        mov     esi,ebp
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm4
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[rsp]
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm3,xmm7
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm9
>>>>>>> 
>>>>>>> +        add     ecx,esi
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm12
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm7
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        mov     esi,ecx
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm12
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        pslld   xmm8,2
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        psrld   xmm3,30
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,esi
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        por     xmm8,xmm3
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[48+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        pshufd  xmm12,xmm7,238
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        mov     esi,eax
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,edi
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm5
>>>>>>> 
>>>>>>> +        add     edx,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm12,xmm8
>>>>>>> 
>>>>>>> +        mov     edi,ebp
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm10
>>>>>>> 
>>>>>>> +        add     edx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm12
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        mov     esi,edx
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm9
>>>>>>> 
>>>>>>> +        add     ecx,edi
>>>>>>> 
>>>>>>> +        cmp     r8d,11
>>>>>>> 
>>>>>>> +        jb      NEAR $L$aesenclast2
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[64+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[80+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        je      NEAR $L$aesenclast2
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[96+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[112+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +$L$aesenclast2:
>>>>>>> 
>>>>>>> +DB      102,15,56,221,209
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+r15]
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[rsp],xmm13
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        pslld   xmm9,2
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        psrld   xmm12,30
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        por     xmm9,xmm12
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        pshufd  xmm13,xmm8,238
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        mov     esi,ebx
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,edi
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm6
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        movups  xmm14,XMMWORD[32+r12]
>>>>>>> 
>>>>>>> +        xorps   xmm14,xmm15
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+r12*1+r13],xmm2
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm14
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-80))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        and     esi,ecx
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm13,xmm9
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm11
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,esi
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm3
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm9
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm13
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        and     edi,ebx
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm10
>>>>>>> 
>>>>>>> +        mov     esi,ebp
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm3
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-64))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        pslld   xmm10,2
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        psrld   xmm13,30
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        and     esi,eax
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        por     xmm10,xmm13
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        pshufd  xmm3,xmm9,238
>>>>>>> 
>>>>>>> +        add     ecx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        and     edi,ebp
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-48))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        mov     esi,ecx
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm7
>>>>>>> 
>>>>>>> +        add     eax,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        and     esi,edx
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm3,xmm10
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm4
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,esi
>>>>>>> 
>>>>>>> +        movdqa  xmm13,XMMWORD[48+r11]
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm10
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm3
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-32))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        and     edi,ecx
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>> 
>>>>>>> +        mov     esi,eax
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm12
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        pslld   xmm11,2
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        psrld   xmm3,30
>>>>>>> 
>>>>>>> +        add     edx,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        and     esi,ebx
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        por     xmm11,xmm3
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        mov     edi,ebp
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        pshufd  xmm12,xmm10,238
>>>>>>> 
>>>>>>> +        add     edx,esi
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-16))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        and     edi,eax
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        mov     esi,edx
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm8
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[rsp]
>>>>>>> 
>>>>>>> +        and     esi,ebp
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm12,xmm11
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm11
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        and     edi,edx
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm4
>>>>>>> 
>>>>>>> +        mov     esi,ebx
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm13
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,edi
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        pslld   xmm4,2
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        psrld   xmm12,30
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        and     esi,ecx
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        por     xmm4,xmm12
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        pshufd  xmm13,xmm11,238
>>>>>>> 
>>>>>>> +        add     ebp,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        and     edi,ebx
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        mov     esi,ebp
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm9
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        and     esi,eax
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm13,xmm4
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm6
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,esi
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm3
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm4
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        and     edi,ebp
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[48+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm5
>>>>>>> 
>>>>>>> +        mov     esi,ecx
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[rsp],xmm3
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        pslld   xmm5,2
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        psrld   xmm13,30
>>>>>>> 
>>>>>>> +        add     eax,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        and     esi,edx
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        por     xmm5,xmm13
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        pshufd  xmm3,xmm4,238
>>>>>>> 
>>>>>>> +        add     eax,esi
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        cmp     r8d,11
>>>>>>> 
>>>>>>> +        jb      NEAR $L$aesenclast3
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[64+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[80+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        je      NEAR $L$aesenclast3
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[96+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[112+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +$L$aesenclast3:
>>>>>>> 
>>>>>>> +DB      102,15,56,221,209
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+r15]
>>>>>>> 
>>>>>>> +        and     edi,ecx
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        mov     esi,eax
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +        add     edx,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        and     esi,ebx
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm3,xmm5
>>>>>>> 
>>>>>>> +        mov     edi,ebp
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,esi
>>>>>>> 
>>>>>>> +        movups  xmm14,XMMWORD[48+r12]
>>>>>>> 
>>>>>>> +        xorps   xmm14,xmm15
>>>>>>> 
>>>>>>> +        movups  XMMWORD[32+r12*1+r13],xmm2
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm14
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-80))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm12
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm5
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm3
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        and     edi,eax
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm6
>>>>>>> 
>>>>>>> +        mov     esi,edx
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm12
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        pslld   xmm6,2
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        psrld   xmm3,30
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        and     esi,ebp
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        por     xmm6,xmm3
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-64))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        pshufd  xmm12,xmm5,238
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        and     edi,edx
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        mov     esi,ebx
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,edi
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm11
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-48))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm12,xmm6
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm8
>>>>>>> 
>>>>>>> +        add     ebp,esi
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm12
>>>>>>> 
>>>>>>> +        add     edx,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        mov     esi,ebp
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm7
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm13
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        pslld   xmm7,2
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        psrld   xmm12,30
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,esi
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-32))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        por     xmm7,xmm12
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        mov     esi,ecx
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[rsp]
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm7
>>>>>>> 
>>>>>>> +        add     eax,esi
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm3
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-16))+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        mov     esi,eax
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,edi
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        mov     edi,ebp
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        mov     esi,edx
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,edi
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        cmp     r10,r14
>>>>>>> 
>>>>>>> +        je      NEAR $L$done_ssse3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[64+r11]
>>>>>>> 
>>>>>>> +        movdqa  xmm13,XMMWORD[r11]
>>>>>>> 
>>>>>>> +        movdqu  xmm4,XMMWORD[r10]
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[16+r10]
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[32+r10]
>>>>>>> 
>>>>>>> +        movdqu  xmm7,XMMWORD[48+r10]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,227
>>>>>>> 
>>>>>>> +        add     r10,64
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +DB      102,15,56,0,235
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm13
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        mov     esi,ebx
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[rsp],xmm4
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,edi
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        psubd   xmm4,xmm13
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,esi
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        mov     esi,ebp
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +DB      102,15,56,0,243
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,esi
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm13
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        mov     esi,ecx
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm5
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        psubd   xmm5,xmm13
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,esi
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[48+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        mov     esi,eax
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,edi
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        mov     edi,ebp
>>>>>>> 
>>>>>>> +DB      102,15,56,0,251
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm13
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        mov     esi,edx
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm6
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,edi
>>>>>>> 
>>>>>>> +        cmp     r8d,11
>>>>>>> 
>>>>>>> +        jb      NEAR $L$aesenclast4
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[64+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[80+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        je      NEAR $L$aesenclast4
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[96+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[112+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +$L$aesenclast4:
>>>>>>> 
>>>>>>> +DB      102,15,56,221,209
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+r15]
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        psubd   xmm6,xmm13
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        mov     esi,ebx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,edi
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        movups  XMMWORD[48+r12*1+r13],xmm2
>>>>>>> 
>>>>>>> +        lea     r12,[64+r12]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     eax,DWORD[r9]
>>>>>>> 
>>>>>>> +        add     esi,DWORD[4+r9]
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[8+r9]
>>>>>>> 
>>>>>>> +        add     edx,DWORD[12+r9]
>>>>>>> 
>>>>>>> +        mov     DWORD[r9],eax
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[16+r9]
>>>>>>> 
>>>>>>> +        mov     DWORD[4+r9],esi
>>>>>>> 
>>>>>>> +        mov     ebx,esi
>>>>>>> 
>>>>>>> +        mov     DWORD[8+r9],ecx
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        mov     DWORD[12+r9],edx
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        mov     DWORD[16+r9],ebp
>>>>>>> 
>>>>>>> +        and     esi,edi
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_ssse3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$done_ssse3:
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        mov     esi,ebx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,edi
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,esi
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        mov     esi,ebp
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,esi
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        mov     esi,ecx
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,esi
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[48+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        mov     esi,eax
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,edi
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        mov     edi,ebp
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        mov     esi,edx
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,edi
>>>>>>> 
>>>>>>> +        cmp     r8d,11
>>>>>>> 
>>>>>>> +        jb      NEAR $L$aesenclast5
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[64+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[80+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        je      NEAR $L$aesenclast5
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[96+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[112+r15]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +$L$aesenclast5:
>>>>>>> 
>>>>>>> +DB      102,15,56,221,209
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+r15]
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        mov     esi,ebx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,edi
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        movups  XMMWORD[48+r12*1+r13],xmm2
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[88+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     eax,DWORD[r9]
>>>>>>> 
>>>>>>> +        add     esi,DWORD[4+r9]
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[8+r9]
>>>>>>> 
>>>>>>> +        mov     DWORD[r9],eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[12+r9]
>>>>>>> 
>>>>>>> +        mov     DWORD[4+r9],esi
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[16+r9]
>>>>>>> 
>>>>>>> +        mov     DWORD[8+r9],ecx
>>>>>>> 
>>>>>>> +        mov     DWORD[12+r9],edx
>>>>>>> 
>>>>>>> +        mov     DWORD[16+r9],ebp
>>>>>>> 
>>>>>>> +        movups  XMMWORD[r8],xmm2
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[((96+0))+rsp]
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[((96+16))+rsp]
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[((96+32))+rsp]
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[((96+48))+rsp]
>>>>>>> 
>>>>>>> +        movaps  xmm10,XMMWORD[((96+64))+rsp]
>>>>>>> 
>>>>>>> +        movaps  xmm11,XMMWORD[((96+80))+rsp]
>>>>>>> 
>>>>>>> +        movaps  xmm12,XMMWORD[((96+96))+rsp]
>>>>>>> 
>>>>>>> +        movaps  xmm13,XMMWORD[((96+112))+rsp]
>>>>>>> 
>>>>>>> +        movaps  xmm14,XMMWORD[((96+128))+rsp]
>>>>>>> 
>>>>>>> +        movaps  xmm15,XMMWORD[((96+144))+rsp]
>>>>>>> 
>>>>>>> +        lea     rsi,[264+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_aesni_cbc_sha1_enc_ssse3:
>>>>>>> 
>>>>>>> +ALIGN   64
>>>>>>> 
>>>>>>> +K_XX_XX:
>>>>>>> 
>>>>>>> +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
>>>>>>> 
>>>>>>> +        DD      0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
>>>>>>> 
>>>>>>> +        DD      0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
>>>>>>> 
>>>>>>> +        DD      0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
>>>>>>> 
>>>>>>> +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
>>>>>>> 
>>>>>>> +DB
>>>> 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115
>>>>>>> 
>>>>>>> +DB      116,105,116,99,104,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
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +aesni_cbc_sha1_enc_shaext:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_aesni_cbc_sha1_enc_shaext:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +        mov     rcx,r9
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10,QWORD[56+rsp]
>>>>>>> 
>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-8-160)+rax],xmm6
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-8-144)+rax],xmm7
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-8-128)+rax],xmm8
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-8-112)+rax],xmm9
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-8-96)+rax],xmm10
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-8-80)+rax],xmm11
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-8-64)+rax],xmm12
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-8-48)+rax],xmm13
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-8-32)+rax],xmm14
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-8-16)+rax],xmm15
>>>>>>> 
>>>>>>> +$L$prologue_shaext:
>>>>>>> 
>>>>>>> +        movdqu  xmm8,XMMWORD[r9]
>>>>>>> 
>>>>>>> +        movd    xmm9,DWORD[16+r9]
>>>>>>> 
>>>>>>> +        movdqa  xmm7,XMMWORD[((K_XX_XX+80))]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r11d,DWORD[240+rcx]
>>>>>>> 
>>>>>>> +        sub     rsi,rdi
>>>>>>> 
>>>>>>> +        movups  xmm15,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        movups  xmm2,XMMWORD[r8]
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[112+rcx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pshufd  xmm8,xmm8,27
>>>>>>> 
>>>>>>> +        pshufd  xmm9,xmm9,27
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_shaext
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$oop_shaext:
>>>>>>> 
>>>>>>> +        movups  xmm14,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm14,xmm15
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm14
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-80))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        movdqu  xmm3,XMMWORD[r10]
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,0,223
>>>>>>> 
>>>>>>> +        movdqu  xmm4,XMMWORD[16+r10]
>>>>>>> 
>>>>>>> +        movdqa  xmm11,xmm8
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-64))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +DB      102,15,56,0,231
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm3
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[32+r10]
>>>>>>> 
>>>>>>> +        lea     r10,[64+r10]
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm12
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-48))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,239
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,0
>>>>>>> 
>>>>>>> +DB      68,15,56,200,212
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-32))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +DB      15,56,201,220
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[((-16))+r10]
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,247
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-16))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,0
>>>>>>> 
>>>>>>> +DB      68,15,56,200,205
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm5
>>>>>>> 
>>>>>>> +DB      15,56,201,229
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,0
>>>>>>> 
>>>>>>> +DB      68,15,56,200,214
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      15,56,202,222
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +DB      15,56,201,238
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,0
>>>>>>> 
>>>>>>> +DB      68,15,56,200,203
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[48+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      15,56,202,227
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm3
>>>>>>> 
>>>>>>> +DB      15,56,201,243
>>>>>>> 
>>>>>>> +        cmp     r11d,11
>>>>>>> 
>>>>>>> +        jb      NEAR $L$aesenclast6
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[64+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[80+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        je      NEAR $L$aesenclast6
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[96+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[112+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +$L$aesenclast6:
>>>>>>> 
>>>>>>> +DB      102,15,56,221,209
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+rcx]
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,0
>>>>>>> 
>>>>>>> +DB      68,15,56,200,212
>>>>>>> 
>>>>>>> +        movups  xmm14,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm14,xmm15
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rdi*1+rsi],xmm2
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm14
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-80))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      15,56,202,236
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>> 
>>>>>>> +DB      15,56,201,220
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-64))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,1
>>>>>>> 
>>>>>>> +DB      68,15,56,200,205
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-48))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      15,56,202,245
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm5
>>>>>>> 
>>>>>>> +DB      15,56,201,229
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-32))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,1
>>>>>>> 
>>>>>>> +DB      68,15,56,200,214
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-16))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      15,56,202,222
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +DB      15,56,201,238
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,1
>>>>>>> 
>>>>>>> +DB      68,15,56,200,203
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      15,56,202,227
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm3
>>>>>>> 
>>>>>>> +DB      15,56,201,243
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,1
>>>>>>> 
>>>>>>> +DB      68,15,56,200,212
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[48+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      15,56,202,236
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>> 
>>>>>>> +DB      15,56,201,220
>>>>>>> 
>>>>>>> +        cmp     r11d,11
>>>>>>> 
>>>>>>> +        jb      NEAR $L$aesenclast7
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[64+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[80+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        je      NEAR $L$aesenclast7
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[96+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[112+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +$L$aesenclast7:
>>>>>>> 
>>>>>>> +DB      102,15,56,221,209
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+rcx]
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,1
>>>>>>> 
>>>>>>> +DB      68,15,56,200,205
>>>>>>> 
>>>>>>> +        movups  xmm14,XMMWORD[32+rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm14,xmm15
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rdi*1+rsi],xmm2
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm14
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-80))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      15,56,202,245
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm5
>>>>>>> 
>>>>>>> +DB      15,56,201,229
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-64))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,2
>>>>>>> 
>>>>>>> +DB      68,15,56,200,214
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-48))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      15,56,202,222
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +DB      15,56,201,238
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-32))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,2
>>>>>>> 
>>>>>>> +DB      68,15,56,200,203
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-16))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      15,56,202,227
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm3
>>>>>>> 
>>>>>>> +DB      15,56,201,243
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,2
>>>>>>> 
>>>>>>> +DB      68,15,56,200,212
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      15,56,202,236
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>> 
>>>>>>> +DB      15,56,201,220
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,2
>>>>>>> 
>>>>>>> +DB      68,15,56,200,205
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[48+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      15,56,202,245
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm5
>>>>>>> 
>>>>>>> +DB      15,56,201,229
>>>>>>> 
>>>>>>> +        cmp     r11d,11
>>>>>>> 
>>>>>>> +        jb      NEAR $L$aesenclast8
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[64+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[80+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        je      NEAR $L$aesenclast8
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[96+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[112+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +$L$aesenclast8:
>>>>>>> 
>>>>>>> +DB      102,15,56,221,209
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+rcx]
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,2
>>>>>>> 
>>>>>>> +DB      68,15,56,200,214
>>>>>>> 
>>>>>>> +        movups  xmm14,XMMWORD[48+rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm14,xmm15
>>>>>>> 
>>>>>>> +        movups  XMMWORD[32+rdi*1+rsi],xmm2
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm14
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-80))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      15,56,202,222
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +DB      15,56,201,238
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-64))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,3
>>>>>>> 
>>>>>>> +DB      68,15,56,200,203
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-48))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      15,56,202,227
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm3
>>>>>>> 
>>>>>>> +DB      15,56,201,243
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-32))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,3
>>>>>>> 
>>>>>>> +DB      68,15,56,200,212
>>>>>>> 
>>>>>>> +DB      15,56,202,236
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-16))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,3
>>>>>>> 
>>>>>>> +DB      68,15,56,200,205
>>>>>>> 
>>>>>>> +DB      15,56,202,245
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,3
>>>>>>> 
>>>>>>> +DB      68,15,56,200,214
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,3
>>>>>>> 
>>>>>>> +DB      68,15,56,200,205
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[48+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        cmp     r11d,11
>>>>>>> 
>>>>>>> +        jb      NEAR $L$aesenclast9
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[64+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[80+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        je      NEAR $L$aesenclast9
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[96+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[112+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +$L$aesenclast9:
>>>>>>> 
>>>>>>> +DB      102,15,56,221,209
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((16-112))+rcx]
>>>>>>> 
>>>>>>> +        dec     rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm11
>>>>>>> 
>>>>>>> +        movups  XMMWORD[48+rdi*1+rsi],xmm2
>>>>>>> 
>>>>>>> +        lea     rdi,[64+rdi]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_shaext
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pshufd  xmm8,xmm8,27
>>>>>>> 
>>>>>>> +        pshufd  xmm9,xmm9,27
>>>>>>> 
>>>>>>> +        movups  XMMWORD[r8],xmm2
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[r9],xmm8
>>>>>>> 
>>>>>>> +        movd    DWORD[16+r9],xmm9
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[((-8-160))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[((-8-144))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[((-8-128))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[((-8-112))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm10,XMMWORD[((-8-96))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm11,XMMWORD[((-8-80))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm12,XMMWORD[((-8-64))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm13,XMMWORD[((-8-48))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm14,XMMWORD[((-8-32))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm15,XMMWORD[((-8-16))+rax]
>>>>>>> 
>>>>>>> +        mov     rsp,rax
>>>>>>> 
>>>>>>> +$L$epilogue_shaext:
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$SEH_end_aesni_cbc_sha1_enc_shaext:
>>>>>>> 
>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +ssse3_handler:
>>>>>>> 
>>>>>>> +        push    rsi
>>>>>>> 
>>>>>>> +        push    rdi
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +        pushfq
>>>>>>> 
>>>>>>> +        sub     rsp,64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>> 
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +        lea     r10,[aesni_cbc_sha1_enc_shaext]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$seh_no_shaext
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsi,[rax]
>>>>>>> 
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>> 
>>>>>>> +        mov     ecx,20
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +        lea     rax,[168+rax]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +$L$seh_no_shaext:
>>>>>>> 
>>>>>>> +        lea     rsi,[96+rax]
>>>>>>> 
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>> 
>>>>>>> +        mov     ecx,20
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +        lea     rax,[264+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15,QWORD[rax]
>>>>>>> 
>>>>>>> +        mov     r14,QWORD[8+rax]
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[16+rax]
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[24+rax]
>>>>>>> 
>>>>>>> +        mov     rbp,QWORD[32+rax]
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[40+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$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[40+r9]
>>>>>>> 
>>>>>>> +        mov     rsi,r8
>>>>>>> 
>>>>>>> +        mov     ecx,154
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,r9
>>>>>>> 
>>>>>>> +        xor     rcx,rcx
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +        popfq
>>>>>>> 
>>>>>>> +        pop     r15
>>>>>>> 
>>>>>>> +        pop     r14
>>>>>>> 
>>>>>>> +        pop     r13
>>>>>>> 
>>>>>>> +        pop     r12
>>>>>>> 
>>>>>>> +        pop     rbp
>>>>>>> 
>>>>>>> +        pop     rbx
>>>>>>> 
>>>>>>> +        pop     rdi
>>>>>>> 
>>>>>>> +        pop     rsi
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +section .pdata rdata align=4
>>>>>>> 
>>>>>>> +ALIGN   4
>>>>>>> 
>>>>>>> +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_ssse3 wrt
>> ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_end_aesni_cbc_sha1_enc_ssse3 wrt
>> ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_info_aesni_cbc_sha1_enc_ssse3 wrt
>> ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_begin_aesni_cbc_sha1_enc_shaext wrt
>> ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_end_aesni_cbc_sha1_enc_shaext wrt
>> ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_info_aesni_cbc_sha1_enc_shaext wrt
>> ..imagebase
>>>>>>> 
>>>>>>> +section .xdata rdata align=8
>>>>>>> 
>>>>>>> +ALIGN   8
>>>>>>> 
>>>>>>> +$L$SEH_info_aesni_cbc_sha1_enc_ssse3:
>>>>>>> 
>>>>>>> +DB      9,0,0,0
>>>>>>> 
>>>>>>> +        DD      ssse3_handler wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$prologue_ssse3 wrt
>> ..imagebase,$L$epilogue_ssse3
>>>>>>> wrt ..imagebase
>>>>>>> 
>>>>>>> +$L$SEH_info_aesni_cbc_sha1_enc_shaext:
>>>>>>> 
>>>>>>> +DB      9,0,0,0
>>>>>>> 
>>>>>>> +        DD      ssse3_handler wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$prologue_shaext wrt
>> ..imagebase,$L$epilogue_shaext
>>>>>>> wrt ..imagebase
>>>>>>> 
>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
>> sha256-
>>>>>>> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
>>>>> sha256-
>>>>>>> x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..f5c250b904
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
>>>>>>> x86_64.nasm
>>>>>>> @@ -0,0 +1,78 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>> 
>>>>>>> +; Generated from openssl/crypto/aes/asm/aesni-sha256-x86_64.pl
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not
>> use
>>>>>>> 
>>>>>>> +; this file except in compliance with the License.  You can obtain
>> a
>>>> copy
>>>>>>> 
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>> 
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +default rel
>>>>>>> 
>>>>>>> +%define XMMWORD
>>>>>>> 
>>>>>>> +%define YMMWORD
>>>>>>> 
>>>>>>> +%define ZMMWORD
>>>>>>> 
>>>>>>> +section .text code align=64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>> 
>>>>>>> +global  aesni_cbc_sha256_enc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +aesni_cbc_sha256_enc:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     eax,eax
>>>>>>> 
>>>>>>> +        cmp     rcx,0
>>>>>>> 
>>>>>>> +        je      NEAR $L$probe
>>>>>>> 
>>>>>>> +        ud2
>>>>>>> 
>>>>>>> +$L$probe:
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
>>>>>>> 
>>>>>>> +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
>>>>>>> 
>>>>>>> +        DD      0,0,0,0,0,0,0,0,-1,-1,-1,-1
>>>>>>> 
>>>>>>> +        DD      0,0,0,0,0,0,0,0
>>>>>>> 
>>>>>>> +DB      65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54
>>>>>>> 
>>>>>>> +DB      32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95
>>>>>>> 
>>>>>>> +DB      54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98
>>>>>>> 
>>>>>>> +DB
>> 121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108
>>>>>>> 
>>>>>>> +DB      46,111,114,103,62,0
>>>>>>> 
>>>>>>> +ALIGN   64
>>>>>>> 
>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
>>>>> x86_64.nasm
>>>>>>> b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..57ee23ea8c
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
>>>>>>> @@ -0,0 +1,5103 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>> 
>>>>>>> +; Generated from openssl/crypto/aes/asm/aesni-x86_64.pl
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Copyright 2009-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not
>> use
>>>>>>> 
>>>>>>> +; this file except in compliance with the License.  You can obtain
>> a
>>>> copy
>>>>>>> 
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>> 
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +default rel
>>>>>>> 
>>>>>>> +%define XMMWORD
>>>>>>> 
>>>>>>> +%define YMMWORD
>>>>>>> 
>>>>>>> +%define ZMMWORD
>>>>>>> 
>>>>>>> +section .text code align=64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>> 
>>>>>>> +global  aesni_encrypt
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +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:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        dec     eax
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[r8]
>>>>>>> 
>>>>>>> +        lea     r8,[16+r8]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_enc1_1
>>>>>>> 
>>>>>>> +DB      102,15,56,221,209
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rdx],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  aesni_decrypt
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +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:
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +        dec     eax
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[r8]
>>>>>>> 
>>>>>>> +        lea     r8,[16+r8]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_dec1_2
>>>>>>> 
>>>>>>> +DB      102,15,56,223,209
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rdx],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +_aesni_encrypt2:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        shl     eax,4
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>> 
>>>>>>> +        neg     rax
>>>>>>> 
>>>>>>> +        add     rax,16
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$enc_loop2:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[rax*1+rcx]
>>>>>>> 
>>>>>>> +        add     rax,32
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      102,15,56,220,216
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +_aesni_decrypt2:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        shl     eax,4
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>> 
>>>>>>> +        neg     rax
>>>>>>> 
>>>>>>> +        add     rax,16
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$dec_loop2:
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +DB      102,15,56,222,217
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[rax*1+rcx]
>>>>>>> 
>>>>>>> +        add     rax,32
>>>>>>> 
>>>>>>> +DB      102,15,56,222,208
>>>>>>> 
>>>>>>> +DB      102,15,56,222,216
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +_aesni_encrypt3:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        shl     eax,4
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>> 
>>>>>>> +        xorps   xmm4,xmm0
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>> 
>>>>>>> +        neg     rax
>>>>>>> 
>>>>>>> +        add     rax,16
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$enc_loop3:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +        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[((-16))+rax*1+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$enc_loop3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +DB      102,15,56,221,208
>>>>>>> 
>>>>>>> +DB      102,15,56,221,216
>>>>>>> 
>>>>>>> +DB      102,15,56,221,224
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +_aesni_decrypt3:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        shl     eax,4
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>> 
>>>>>>> +        xorps   xmm4,xmm0
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>> 
>>>>>>> +        neg     rax
>>>>>>> 
>>>>>>> +        add     rax,16
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$dec_loop3:
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +DB      102,15,56,222,217
>>>>>>> 
>>>>>>> +DB      102,15,56,222,225
>>>>>>> 
>>>>>>> +        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[((-16))+rax*1+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$dec_loop3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +DB      102,15,56,222,217
>>>>>>> 
>>>>>>> +DB      102,15,56,222,225
>>>>>>> 
>>>>>>> +DB      102,15,56,223,208
>>>>>>> 
>>>>>>> +DB      102,15,56,223,216
>>>>>>> 
>>>>>>> +DB      102,15,56,223,224
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +_aesni_encrypt4:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        shl     eax,4
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>> 
>>>>>>> +        xorps   xmm4,xmm0
>>>>>>> 
>>>>>>> +        xorps   xmm5,xmm0
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>> 
>>>>>>> +        neg     rax
>>>>>>> 
>>>>>>> +DB      0x0f,0x1f,0x00
>>>>>>> 
>>>>>>> +        add     rax,16
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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[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[((-16))+rax*1+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $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
>>>>>>> 
>>>>>>> +DB      102,15,56,221,208
>>>>>>> 
>>>>>>> +DB      102,15,56,221,216
>>>>>>> 
>>>>>>> +DB      102,15,56,221,224
>>>>>>> 
>>>>>>> +DB      102,15,56,221,232
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +_aesni_decrypt4:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        shl     eax,4
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>> 
>>>>>>> +        xorps   xmm4,xmm0
>>>>>>> 
>>>>>>> +        xorps   xmm5,xmm0
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>> 
>>>>>>> +        neg     rax
>>>>>>> 
>>>>>>> +DB      0x0f,0x1f,0x00
>>>>>>> 
>>>>>>> +        add     rax,16
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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[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[((-16))+rax*1+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $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
>>>>>>> 
>>>>>>> +DB      102,15,56,223,208
>>>>>>> 
>>>>>>> +DB      102,15,56,223,216
>>>>>>> 
>>>>>>> +DB      102,15,56,223,224
>>>>>>> 
>>>>>>> +DB      102,15,56,223,232
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +_aesni_encrypt6:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        shl     eax,4
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>> 
>>>>>>> +        neg     rax
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm0
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm0
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rax*1+rcx]
>>>>>>> 
>>>>>>> +        add     rax,16
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$enc_loop6_enter
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$enc_loop6:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +$L$enc_loop6_enter:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,233
>>>>>>> 
>>>>>>> +DB      102,15,56,220,241
>>>>>>> 
>>>>>>> +DB      102,15,56,220,249
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +DB      102,15,56,220,240
>>>>>>> 
>>>>>>> +DB      102,15,56,220,248
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $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
>>>>>>> 
>>>>>>> +DB      102,15,56,221,208
>>>>>>> 
>>>>>>> +DB      102,15,56,221,216
>>>>>>> 
>>>>>>> +DB      102,15,56,221,224
>>>>>>> 
>>>>>>> +DB      102,15,56,221,232
>>>>>>> 
>>>>>>> +DB      102,15,56,221,240
>>>>>>> 
>>>>>>> +DB      102,15,56,221,248
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +_aesni_decrypt6:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        shl     eax,4
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>> 
>>>>>>> +        neg     rax
>>>>>>> 
>>>>>>> +DB      102,15,56,222,217
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm0
>>>>>>> 
>>>>>>> +DB      102,15,56,222,225
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm0
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rax*1+rcx]
>>>>>>> 
>>>>>>> +        add     rax,16
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$dec_loop6_enter
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$dec_loop6:
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +DB      102,15,56,222,217
>>>>>>> 
>>>>>>> +DB      102,15,56,222,225
>>>>>>> 
>>>>>>> +$L$dec_loop6_enter:
>>>>>>> 
>>>>>>> +DB      102,15,56,222,233
>>>>>>> 
>>>>>>> +DB      102,15,56,222,241
>>>>>>> 
>>>>>>> +DB      102,15,56,222,249
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +DB      102,15,56,222,240
>>>>>>> 
>>>>>>> +DB      102,15,56,222,248
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $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
>>>>>>> 
>>>>>>> +DB      102,15,56,223,208
>>>>>>> 
>>>>>>> +DB      102,15,56,223,216
>>>>>>> 
>>>>>>> +DB      102,15,56,223,224
>>>>>>> 
>>>>>>> +DB      102,15,56,223,232
>>>>>>> 
>>>>>>> +DB      102,15,56,223,240
>>>>>>> 
>>>>>>> +DB      102,15,56,223,248
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +_aesni_encrypt8:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        shl     eax,4
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm0
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>> 
>>>>>>> +        neg     rax
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm0
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rax*1+rcx]
>>>>>>> 
>>>>>>> +        add     rax,16
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$enc_loop8_inner
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$enc_loop8:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +$L$enc_loop8_inner:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +DB      102,15,56,220,233
>>>>>>> 
>>>>>>> +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
>>>>>>> 
>>>>>>> +$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
>>>>>>> 
>>>>>>> +DB      102,15,56,220,224
>>>>>>> 
>>>>>>> +DB      102,15,56,220,232
>>>>>>> 
>>>>>>> +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[((-16))+rax*1+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$enc_loop8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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
>>>>>>> 
>>>>>>> +DB      102,68,15,56,220,193
>>>>>>> 
>>>>>>> +DB      102,68,15,56,220,201
>>>>>>> 
>>>>>>> +DB      102,15,56,221,208
>>>>>>> 
>>>>>>> +DB      102,15,56,221,216
>>>>>>> 
>>>>>>> +DB      102,15,56,221,224
>>>>>>> 
>>>>>>> +DB      102,15,56,221,232
>>>>>>> 
>>>>>>> +DB      102,15,56,221,240
>>>>>>> 
>>>>>>> +DB      102,15,56,221,248
>>>>>>> 
>>>>>>> +DB      102,68,15,56,221,192
>>>>>>> 
>>>>>>> +DB      102,68,15,56,221,200
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +_aesni_decrypt8:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        shl     eax,4
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm0
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>> 
>>>>>>> +        neg     rax
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>> 
>>>>>>> +DB      102,15,56,222,217
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm0
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rax*1+rcx]
>>>>>>> 
>>>>>>> +        add     rax,16
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$dec_loop8_inner
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$dec_loop8:
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +DB      102,15,56,222,217
>>>>>>> 
>>>>>>> +$L$dec_loop8_inner:
>>>>>>> 
>>>>>>> +DB      102,15,56,222,225
>>>>>>> 
>>>>>>> +DB      102,15,56,222,233
>>>>>>> 
>>>>>>> +DB      102,15,56,222,241
>>>>>>> 
>>>>>>> +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[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
>>>>>>> 
>>>>>>> +DB      102,15,56,222,240
>>>>>>> 
>>>>>>> +DB      102,15,56,222,248
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,192
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,200
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$dec_loop8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,193
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,201
>>>>>>> 
>>>>>>> +DB      102,15,56,223,208
>>>>>>> 
>>>>>>> +DB      102,15,56,223,216
>>>>>>> 
>>>>>>> +DB      102,15,56,223,224
>>>>>>> 
>>>>>>> +DB      102,15,56,223,232
>>>>>>> 
>>>>>>> +DB      102,15,56,223,240
>>>>>>> 
>>>>>>> +DB      102,15,56,223,248
>>>>>>> 
>>>>>>> +DB      102,68,15,56,223,192
>>>>>>> 
>>>>>>> +DB      102,68,15,56,223,200
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  aesni_ecb_encrypt
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +aesni_ecb_encrypt:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_aesni_ecb_encrypt:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +        mov     rcx,r9
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[((-88))+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>> 
>>>>>>> +$L$ecb_enc_body:
>>>>>>> 
>>>>>>> +        and     rdx,-16
>>>>>>> 
>>>>>>> +        jz      NEAR $L$ecb_ret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     eax,DWORD[240+rcx]
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        mov     r11,rcx
>>>>>>> 
>>>>>>> +        mov     r10d,eax
>>>>>>> 
>>>>>>> +        test    r8d,r8d
>>>>>>> 
>>>>>>> +        jz      NEAR $L$ecb_decrypt
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        cmp     rdx,0x80
>>>>>>> 
>>>>>>> +        jb      NEAR $L$ecb_enc_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[rsi],xmm2
>>>>>>> 
>>>>>>> +        mov     rcx,r11
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        mov     eax,r10d
>>>>>>> 
>>>>>>> +        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,0x80
>>>>>>> 
>>>>>>> +        jnc     NEAR $L$ecb_enc_loop8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        mov     rcx,r11
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        mov     eax,r10d
>>>>>>> 
>>>>>>> +        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[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]
>>>>>>> 
>>>>>>> +        xorps   xmm9,xmm9
>>>>>>> 
>>>>>>> +        call    _aesni_encrypt8
>>>>>>> 
>>>>>>> +        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[rcx]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +$L$oop_enc1_3:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        dec     eax
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_enc1_3
>>>>>>> 
>>>>>>> +DB      102,15,56,221,209
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ecb_enc_two:
>>>>>>> 
>>>>>>> +        call    _aesni_encrypt2
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ecb_enc_three:
>>>>>>> 
>>>>>>> +        call    _aesni_encrypt3
>>>>>>> 
>>>>>>> +        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:
>>>>>>> 
>>>>>>> +        call    _aesni_encrypt4
>>>>>>> 
>>>>>>> +        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:
>>>>>>> 
>>>>>>> +        xorps   xmm7,xmm7
>>>>>>> 
>>>>>>> +        call    _aesni_encrypt6
>>>>>>> 
>>>>>>> +        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:
>>>>>>> 
>>>>>>> +        call    _aesni_encrypt6
>>>>>>> 
>>>>>>> +        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,0x80
>>>>>>> 
>>>>>>> +        jb      NEAR $L$ecb_dec_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[rsi],xmm2
>>>>>>> 
>>>>>>> +        mov     rcx,r11
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        mov     eax,r10d
>>>>>>> 
>>>>>>> +        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[r11]
>>>>>>> 
>>>>>>> +        sub     rdx,0x80
>>>>>>> 
>>>>>>> +        jnc     NEAR $L$ecb_dec_loop8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        mov     rcx,r11
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        mov     eax,r10d
>>>>>>> 
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>> 
>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>> 
>>>>>>> +        movups  XMMWORD[96+rsi],xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm8
>>>>>>> 
>>>>>>> +        movups  XMMWORD[112+rsi],xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm9
>>>>>>> 
>>>>>>> +        lea     rsi,[128+rsi]
>>>>>>> 
>>>>>>> +        add     rdx,0x80
>>>>>>> 
>>>>>>> +        jz      NEAR $L$ecb_ret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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]
>>>>>>> 
>>>>>>> +        xorps   xmm9,xmm9
>>>>>>> 
>>>>>>> +        call    _aesni_decrypt8
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>> 
>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>> 
>>>>>>> +        movups  XMMWORD[96+rsi],xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm9
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ecb_dec_one:
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +$L$oop_dec1_4:
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +        dec     eax
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_dec1_4
>>>>>>> 
>>>>>>> +DB      102,15,56,223,209
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ecb_dec_two:
>>>>>>> 
>>>>>>> +        call    _aesni_decrypt2
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ecb_dec_three:
>>>>>>> 
>>>>>>> +        call    _aesni_decrypt3
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ecb_dec_four:
>>>>>>> 
>>>>>>> +        call    _aesni_decrypt4
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ecb_dec_five:
>>>>>>> 
>>>>>>> +        xorps   xmm7,xmm7
>>>>>>> 
>>>>>>> +        call    _aesni_decrypt6
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ecb_ret
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ecb_dec_six:
>>>>>>> 
>>>>>>> +        call    _aesni_decrypt6
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>> 
>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$ecb_ret:
>>>>>>> 
>>>>>>> +        xorps   xmm0,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[16+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[32+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[48+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>> 
>>>>>>> +        lea     rsp,[88+rsp]
>>>>>>> 
>>>>>>> +$L$ecb_enc_ret:
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$SEH_end_aesni_ecb_encrypt:
>>>>>>> 
>>>>>>> +global  aesni_ccm64_encrypt_blocks
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +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:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +        mov     rcx,r9
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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,[rcx]
>>>>>>> 
>>>>>>> +        movdqu  xmm3,XMMWORD[r9]
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,247
>>>>>>> 
>>>>>>> +        sub     r10,rax
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ccm64_enc_outer
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ccm64_enc_outer:
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[r11]
>>>>>>> 
>>>>>>> +        mov     rax,r10
>>>>>>> 
>>>>>>> +        movups  xmm8,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>> 
>>>>>>> +        xorps   xmm0,xmm8
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$ccm64_enc2_loop:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[rax*1+rcx]
>>>>>>> 
>>>>>>> +        add     rax,32
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      102,15,56,220,216
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +        dec     rdx
>>>>>>> 
>>>>>>> +DB      102,15,56,221,208
>>>>>>> 
>>>>>>> +DB      102,15,56,221,216
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm8,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,215
>>>>>>> 
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$ccm64_enc_outer
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        movups  XMMWORD[r9],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[16+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[32+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[48+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>> 
>>>>>>> +        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:
>>>>>>> 
>>>>>>> +global  aesni_ccm64_decrypt_blocks
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +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:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +        mov     rcx,r9
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[rcx]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +$L$oop_enc1_5:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        dec     eax
>>>>>>> 
>>>>>>> +        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[rdi]
>>>>>>> 
>>>>>>> +        paddq   xmm6,xmm9
>>>>>>> 
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>> 
>>>>>>> +        sub     rax,r10
>>>>>>> 
>>>>>>> +        lea     rcx,[32+r10*1+r11]
>>>>>>> 
>>>>>>> +        mov     r10,rax
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ccm64_dec_outer
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ccm64_dec_outer:
>>>>>>> 
>>>>>>> +        xorps   xmm8,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm8
>>>>>>> 
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,215
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     rdx,1
>>>>>>> 
>>>>>>> +        jz      NEAR $L$ccm64_dec_break
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[r11]
>>>>>>> 
>>>>>>> +        mov     rax,r10
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>> 
>>>>>>> +        xorps   xmm8,xmm0
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm8
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ccm64_dec2_loop
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ccm64_dec2_loop:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[rax*1+rcx]
>>>>>>> 
>>>>>>> +        add     rax,32
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      102,15,56,220,216
>>>>>>> 
>>>>>>> +        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,[16+rdi]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ccm64_dec_outer
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ccm64_dec_break:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     eax,DWORD[240+r11]
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[r11]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>> 
>>>>>>> +        xorps   xmm8,xmm0
>>>>>>> 
>>>>>>> +        lea     r11,[32+r11]
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm8
>>>>>>> 
>>>>>>> +$L$oop_enc1_6:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +        dec     eax
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[r11]
>>>>>>> 
>>>>>>> +        lea     r11,[16+r11]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_enc1_6
>>>>>>> 
>>>>>>> +DB      102,15,56,221,217
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        movups  XMMWORD[r9],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[16+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[32+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[48+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>> 
>>>>>>> +        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:
>>>>>>> 
>>>>>>> +global  aesni_ctr32_encrypt_blocks
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +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:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +        mov     rcx,r9
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        cmp     rdx,1
>>>>>>> 
>>>>>>> +        jne     NEAR $L$ctr32_bulk
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm2,XMMWORD[r8]
>>>>>>> 
>>>>>>> +        movups  xmm3,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        mov     edx,DWORD[240+rcx]
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +$L$oop_enc1_7:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        dec     edx
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_enc1_7
>>>>>>> 
>>>>>>> +DB      102,15,56,221,209
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm2
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ctr32_epilogue
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ctr32_bulk:
>>>>>>> 
>>>>>>> +        lea     r11,[rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     rsp,288
>>>>>>> 
>>>>>>> +        and     rsp,-16
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-168)+r11],xmm6
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-152)+r11],xmm7
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-136)+r11],xmm8
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-120)+r11],xmm9
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-104)+r11],xmm10
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-88)+r11],xmm11
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-72)+r11],xmm12
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-56)+r11],xmm13
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-40)+r11],xmm14
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-24)+r11],xmm15
>>>>>>> 
>>>>>>> +$L$ctr32_body:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[r8]
>>>>>>> 
>>>>>>> +        movdqu  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        mov     r8d,DWORD[12+r8]
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm0
>>>>>>> 
>>>>>>> +        mov     ebp,DWORD[12+rcx]
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[rsp],xmm2
>>>>>>> 
>>>>>>> +        bswap   r8d
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[64+rsp],xmm2
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[80+rsp],xmm2
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[96+rsp],xmm2
>>>>>>> 
>>>>>>> +        mov     r10,rdx
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[112+rsp],xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rax,[1+r8]
>>>>>>> 
>>>>>>> +        lea     rdx,[2+r8]
>>>>>>> 
>>>>>>> +        bswap   eax
>>>>>>> 
>>>>>>> +        bswap   edx
>>>>>>> 
>>>>>>> +        xor     eax,ebp
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +DB      102,15,58,34,216,3
>>>>>>> 
>>>>>>> +        lea     rax,[3+r8]
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm3
>>>>>>> 
>>>>>>> +DB      102,15,58,34,226,3
>>>>>>> 
>>>>>>> +        bswap   eax
>>>>>>> 
>>>>>>> +        mov     rdx,r10
>>>>>>> 
>>>>>>> +        lea     r10,[4+r8]
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm4
>>>>>>> 
>>>>>>> +        xor     eax,ebp
>>>>>>> 
>>>>>>> +        bswap   r10d
>>>>>>> 
>>>>>>> +DB      102,15,58,34,232,3
>>>>>>> 
>>>>>>> +        xor     r10d,ebp
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm5
>>>>>>> 
>>>>>>> +        lea     r9,[5+r8]
>>>>>>> 
>>>>>>> +        mov     DWORD[((64+12))+rsp],r10d
>>>>>>> 
>>>>>>> +        bswap   r9d
>>>>>>> 
>>>>>>> +        lea     r10,[6+r8]
>>>>>>> 
>>>>>>> +        mov     eax,DWORD[240+rcx]
>>>>>>> 
>>>>>>> +        xor     r9d,ebp
>>>>>>> 
>>>>>>> +        bswap   r10d
>>>>>>> 
>>>>>>> +        mov     DWORD[((80+12))+rsp],r9d
>>>>>>> 
>>>>>>> +        xor     r10d,ebp
>>>>>>> 
>>>>>>> +        lea     r9,[7+r8]
>>>>>>> 
>>>>>>> +        mov     DWORD[((96+12))+rsp],r10d
>>>>>>> 
>>>>>>> +        bswap   r9d
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
>>>>>>> 
>>>>>>> +        xor     r9d,ebp
>>>>>>> 
>>>>>>> +        and     r10d,71303168
>>>>>>> 
>>>>>>> +        mov     DWORD[((112+12))+rsp],r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,XMMWORD[64+rsp]
>>>>>>> 
>>>>>>> +        movdqa  xmm7,XMMWORD[80+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        cmp     rdx,8
>>>>>>> 
>>>>>>> +        jb      NEAR $L$ctr32_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     rdx,6
>>>>>>> 
>>>>>>> +        cmp     r10d,4194304
>>>>>>> 
>>>>>>> +        je      NEAR $L$ctr32_6x
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rcx,[128+rcx]
>>>>>>> 
>>>>>>> +        sub     rdx,2
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ctr32_loop8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ctr32_6x:
>>>>>>> 
>>>>>>> +        shl     eax,4
>>>>>>> 
>>>>>>> +        mov     r10d,48
>>>>>>> 
>>>>>>> +        bswap   ebp
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rax*1+rcx]
>>>>>>> 
>>>>>>> +        sub     r10,rax
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ctr32_loop6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ctr32_loop6:
>>>>>>> 
>>>>>>> +        add     r8d,6
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-48))+r10*1+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        mov     eax,r8d
>>>>>>> 
>>>>>>> +        xor     eax,ebp
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +DB      0x0f,0x38,0xf1,0x44,0x24,12
>>>>>>> 
>>>>>>> +        lea     eax,[1+r8]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +        xor     eax,ebp
>>>>>>> 
>>>>>>> +DB      0x0f,0x38,0xf1,0x44,0x24,28
>>>>>>> 
>>>>>>> +DB      102,15,56,220,233
>>>>>>> 
>>>>>>> +        lea     eax,[2+r8]
>>>>>>> 
>>>>>>> +        xor     eax,ebp
>>>>>>> 
>>>>>>> +DB      102,15,56,220,241
>>>>>>> 
>>>>>>> +DB      0x0f,0x38,0xf1,0x44,0x24,44
>>>>>>> 
>>>>>>> +        lea     eax,[3+r8]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,249
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((-32))+r10*1+rcx]
>>>>>>> 
>>>>>>> +        xor     eax,ebp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      0x0f,0x38,0xf1,0x44,0x24,60
>>>>>>> 
>>>>>>> +        lea     eax,[4+r8]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,216
>>>>>>> 
>>>>>>> +        xor     eax,ebp
>>>>>>> 
>>>>>>> +DB      0x0f,0x38,0xf1,0x44,0x24,76
>>>>>>> 
>>>>>>> +DB      102,15,56,220,224
>>>>>>> 
>>>>>>> +        lea     eax,[5+r8]
>>>>>>> 
>>>>>>> +        xor     eax,ebp
>>>>>>> 
>>>>>>> +DB      102,15,56,220,232
>>>>>>> 
>>>>>>> +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[((-16))+r10*1+rcx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    $L$enc_loop6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[rsp]
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm3
>>>>>>> 
>>>>>>> +        movaps  xmm3,XMMWORD[16+rsp]
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm4
>>>>>>> 
>>>>>>> +        movaps  xmm4,XMMWORD[32+rsp]
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm5
>>>>>>> 
>>>>>>> +        movaps  xmm5,XMMWORD[48+rsp]
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm6
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[64+rsp]
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm7
>>>>>>> 
>>>>>>> +        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     NEAR $L$ctr32_loop6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     rdx,6
>>>>>>> 
>>>>>>> +        jz      NEAR $L$ctr32_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     eax,[((-48))+r10]
>>>>>>> 
>>>>>>> +        lea     rcx,[((-80))+r10*1+rcx]
>>>>>>> 
>>>>>>> +        neg     eax
>>>>>>> 
>>>>>>> +        shr     eax,4
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ctr32_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$ctr32_loop8:
>>>>>>> 
>>>>>>> +        add     r8d,8
>>>>>>> 
>>>>>>> +        movdqa  xmm8,XMMWORD[96+rsp]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        mov     r9d,r8d
>>>>>>> 
>>>>>>> +        movdqa  xmm9,XMMWORD[112+rsp]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +        bswap   r9d
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((32-128))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +        xor     r9d,ebp
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +DB      102,15,56,220,233
>>>>>>> 
>>>>>>> +        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[((48-128))+rcx]
>>>>>>> 
>>>>>>> +        bswap   r9d
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      102,15,56,220,216
>>>>>>> 
>>>>>>> +        xor     r9d,ebp
>>>>>>> 
>>>>>>> +DB      0x66,0x90
>>>>>>> 
>>>>>>> +DB      102,15,56,220,224
>>>>>>> 
>>>>>>> +DB      102,15,56,220,232
>>>>>>> 
>>>>>>> +        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[((64-128))+rcx]
>>>>>>> 
>>>>>>> +        bswap   r9d
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +        xor     r9d,ebp
>>>>>>> 
>>>>>>> +DB      0x66,0x90
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +DB      102,15,56,220,233
>>>>>>> 
>>>>>>> +        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[((80-128))+rcx]
>>>>>>> 
>>>>>>> +        bswap   r9d
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      102,15,56,220,216
>>>>>>> 
>>>>>>> +        xor     r9d,ebp
>>>>>>> 
>>>>>>> +DB      0x66,0x90
>>>>>>> 
>>>>>>> +DB      102,15,56,220,224
>>>>>>> 
>>>>>>> +DB      102,15,56,220,232
>>>>>>> 
>>>>>>> +        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[((96-128))+rcx]
>>>>>>> 
>>>>>>> +        bswap   r9d
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +        xor     r9d,ebp
>>>>>>> 
>>>>>>> +DB      0x66,0x90
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +DB      102,15,56,220,233
>>>>>>> 
>>>>>>> +        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[((112-128))+rcx]
>>>>>>> 
>>>>>>> +        bswap   r9d
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      102,15,56,220,216
>>>>>>> 
>>>>>>> +        xor     r9d,ebp
>>>>>>> 
>>>>>>> +DB      0x66,0x90
>>>>>>> 
>>>>>>> +DB      102,15,56,220,224
>>>>>>> 
>>>>>>> +DB      102,15,56,220,232
>>>>>>> 
>>>>>>> +        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[((128-128))+rcx]
>>>>>>> 
>>>>>>> +        bswap   r9d
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +        xor     r9d,ebp
>>>>>>> 
>>>>>>> +DB      0x66,0x90
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +DB      102,15,56,220,233
>>>>>>> 
>>>>>>> +        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[((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,ebp
>>>>>>> 
>>>>>>> +        movdqu  xmm10,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,232
>>>>>>> 
>>>>>>> +        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[((160-128))+rcx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        jb      NEAR $L$ctr32_enc_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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
>>>>>>> 
>>>>>>> +DB      102,68,15,56,220,193
>>>>>>> 
>>>>>>> +DB      102,68,15,56,220,201
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((176-128))+rcx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      102,15,56,220,216
>>>>>>> 
>>>>>>> +DB      102,15,56,220,224
>>>>>>> 
>>>>>>> +DB      102,15,56,220,232
>>>>>>> 
>>>>>>> +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[((192-128))+rcx]
>>>>>>> 
>>>>>>> +        je      NEAR $L$ctr32_enc_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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
>>>>>>> 
>>>>>>> +DB      102,68,15,56,220,193
>>>>>>> 
>>>>>>> +DB      102,68,15,56,220,201
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((208-128))+rcx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      102,15,56,220,216
>>>>>>> 
>>>>>>> +DB      102,15,56,220,224
>>>>>>> 
>>>>>>> +DB      102,15,56,220,232
>>>>>>> 
>>>>>>> +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[((224-128))+rcx]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ctr32_enc_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ctr32_enc_done:
>>>>>>> 
>>>>>>> +        movdqu  xmm11,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm0
>>>>>>> 
>>>>>>> +        movdqu  xmm12,XMMWORD[32+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm0
>>>>>>> 
>>>>>>> +        movdqu  xmm13,XMMWORD[48+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm0
>>>>>>> 
>>>>>>> +        movdqu  xmm14,XMMWORD[64+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm0
>>>>>>> 
>>>>>>> +        movdqu  xmm15,XMMWORD[80+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm0
>>>>>>> 
>>>>>>> +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
>>>>>>> 
>>>>>>> +DB      102,68,15,56,220,193
>>>>>>> 
>>>>>>> +DB      102,68,15,56,220,201
>>>>>>> 
>>>>>>> +        movdqu  xmm1,XMMWORD[96+rdi]
>>>>>>> 
>>>>>>> +        lea     rdi,[128+rdi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,65,15,56,221,210
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm0
>>>>>>> 
>>>>>>> +        movdqu  xmm10,XMMWORD[((112-128))+rdi]
>>>>>>> 
>>>>>>> +DB      102,65,15,56,221,219
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm11,XMMWORD[rsp]
>>>>>>> 
>>>>>>> +DB      102,65,15,56,221,228
>>>>>>> 
>>>>>>> +DB      102,65,15,56,221,237
>>>>>>> 
>>>>>>> +        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[48+rsp]
>>>>>>> 
>>>>>>> +        movdqa  xmm15,XMMWORD[64+rsp]
>>>>>>> 
>>>>>>> +DB      102,68,15,56,221,193
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[80+rsp]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((16-128))+rcx]
>>>>>>> 
>>>>>>> +DB      102,69,15,56,221,202
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>> 
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>> 
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm14
>>>>>>> 
>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm15
>>>>>>> 
>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm0
>>>>>>> 
>>>>>>> +        movups  XMMWORD[96+rsi],xmm8
>>>>>>> 
>>>>>>> +        movups  XMMWORD[112+rsi],xmm9
>>>>>>> 
>>>>>>> +        lea     rsi,[128+rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     rdx,8
>>>>>>> 
>>>>>>> +        jnc     NEAR $L$ctr32_loop8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     rdx,8
>>>>>>> 
>>>>>>> +        jz      NEAR $L$ctr32_done
>>>>>>> 
>>>>>>> +        lea     rcx,[((-128))+rcx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$ctr32_tail:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>> 
>>>>>>> +        cmp     rdx,4
>>>>>>> 
>>>>>>> +        jb      NEAR $L$ctr32_loop3
>>>>>>> 
>>>>>>> +        je      NEAR $L$ctr32_loop4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        shl     eax,4
>>>>>>> 
>>>>>>> +        movdqa  xmm8,XMMWORD[96+rsp]
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +        lea     rcx,[((32-16))+rax*1+rcx]
>>>>>>> 
>>>>>>> +        neg     rax
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +        add     rax,16
>>>>>>> 
>>>>>>> +        movups  xmm10,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,233
>>>>>>> 
>>>>>>> +DB      102,15,56,220,241
>>>>>>> 
>>>>>>> +        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[48+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>> 
>>>>>>> +        movdqu  xmm10,XMMWORD[64+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[64+rsi],xmm6
>>>>>>> 
>>>>>>> +        cmp     rdx,6
>>>>>>> 
>>>>>>> +        jb      NEAR $L$ctr32_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm11,XMMWORD[80+rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm7,xmm11
>>>>>>> 
>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>> 
>>>>>>> +        je      NEAR $L$ctr32_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm12,XMMWORD[96+rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm8,xmm12
>>>>>>> 
>>>>>>> +        movups  XMMWORD[96+rsi],xmm8
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ctr32_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$ctr32_loop4:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        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[rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$ctr32_loop4
>>>>>>> 
>>>>>>> +DB      102,15,56,221,209
>>>>>>> 
>>>>>>> +DB      102,15,56,221,217
>>>>>>> 
>>>>>>> +        movups  xmm10,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        movups  xmm11,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +DB      102,15,56,221,225
>>>>>>> 
>>>>>>> +DB      102,15,56,221,233
>>>>>>> 
>>>>>>> +        movups  xmm12,XMMWORD[32+rdi]
>>>>>>> 
>>>>>>> +        movups  xmm13,XMMWORD[48+rdi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ctr32_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$ctr32_loop3:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>> 
>>>>>>> +        dec     eax
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +        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[rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        cmp     rdx,2
>>>>>>> 
>>>>>>> +        jb      NEAR $L$ctr32_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm11,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        je      NEAR $L$ctr32_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm12,XMMWORD[32+rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>> 
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$ctr32_done:
>>>>>>> 
>>>>>>> +        xorps   xmm0,xmm0
>>>>>>> 
>>>>>>> +        xor     ebp,ebp
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[((-168))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-168)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[((-152))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-152)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[((-136))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-136)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[((-120))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-120)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm10,XMMWORD[((-104))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-104)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm11,XMMWORD[((-88))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-88)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm12,XMMWORD[((-72))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-72)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm13,XMMWORD[((-56))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-56)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm14,XMMWORD[((-40))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-40)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm15,XMMWORD[((-24))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-24)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[112+rsp],xmm0
>>>>>>> 
>>>>>>> +        mov     rbp,QWORD[((-8))+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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:
>>>>>>> 
>>>>>>> +global  aesni_xts_encrypt
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +aesni_xts_encrypt:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_aesni_xts_encrypt:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +        mov     rcx,r9
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r11,[rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     rsp,272
>>>>>>> 
>>>>>>> +        and     rsp,-16
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-168)+r11],xmm6
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-152)+r11],xmm7
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-136)+r11],xmm8
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-120)+r11],xmm9
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-104)+r11],xmm10
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-88)+r11],xmm11
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-72)+r11],xmm12
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-56)+r11],xmm13
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-40)+r11],xmm14
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-24)+r11],xmm15
>>>>>>> 
>>>>>>> +$L$xts_enc_body:
>>>>>>> 
>>>>>>> +        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:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        dec     eax
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[r8]
>>>>>>> 
>>>>>>> +        lea     r8,[16+r8]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_enc1_8
>>>>>>> 
>>>>>>> +DB      102,15,56,221,209
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        mov     rbp,rcx
>>>>>>> 
>>>>>>> +        mov     eax,r10d
>>>>>>> 
>>>>>>> +        shl     r10d,4
>>>>>>> 
>>>>>>> +        mov     r9,rdx
>>>>>>> 
>>>>>>> +        and     rdx,-16
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+r10*1+rcx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,XMMWORD[$L$xts_magic]
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm2
>>>>>>> 
>>>>>>> +        pshufd  xmm9,xmm2,0x5f
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm15
>>>>>>> 
>>>>>>> +        psrad   xmm14,31
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm14,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm11,xmm15
>>>>>>> 
>>>>>>> +        psrad   xmm14,31
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm14,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm15
>>>>>>> 
>>>>>>> +        psrad   xmm14,31
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm14,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm15
>>>>>>> 
>>>>>>> +        psrad   xmm14,31
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm14,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm15
>>>>>>> 
>>>>>>> +        psrad   xmm9,31
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm9,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     rdx,16*6
>>>>>>> 
>>>>>>> +        jc      NEAR $L$xts_enc_short
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     eax,16+96
>>>>>>> 
>>>>>>> +        lea     rcx,[32+r10*1+rbp]
>>>>>>> 
>>>>>>> +        sub     rax,r10
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rbp]
>>>>>>> 
>>>>>>> +        mov     r10,rax
>>>>>>> 
>>>>>>> +        lea     r8,[$L$xts_magic]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$xts_enc_grandloop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$xts_enc_grandloop:
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm0
>>>>>>> 
>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>> 
>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +        movdqu  xmm7,XMMWORD[80+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm15
>>>>>>> 
>>>>>>> +        movdqa  xmm9,XMMWORD[96+rsp]
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +DB      102,15,56,220,233
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+rbp]
>>>>>>> 
>>>>>>> +        lea     rdi,[96+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,220,241
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm9
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[rsp],xmm10
>>>>>>> 
>>>>>>> +DB      102,15,56,220,249
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[48+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm9
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm11
>>>>>>> 
>>>>>>> +DB      102,15,56,220,216
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm9
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm12
>>>>>>> 
>>>>>>> +DB      102,15,56,220,224
>>>>>>> 
>>>>>>> +DB      102,15,56,220,232
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm9
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[64+rsp],xmm14
>>>>>>> 
>>>>>>> +DB      102,15,56,220,240
>>>>>>> 
>>>>>>> +DB      102,15,56,220,248
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[64+rbp]
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[80+rsp],xmm8
>>>>>>> 
>>>>>>> +        pshufd  xmm9,xmm15,0x5f
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$xts_enc_loop6
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$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[((-64))+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
>>>>>>> 
>>>>>>> +DB      102,15,56,220,240
>>>>>>> 
>>>>>>> +DB      102,15,56,220,248
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$xts_enc_loop6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,XMMWORD[r8]
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +        psrad   xmm14,31
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +        pand    xmm14,xmm8
>>>>>>> 
>>>>>>> +        movups  xmm10,XMMWORD[rbp]
>>>>>>> 
>>>>>>> +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[((-64))+rcx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm15
>>>>>>> 
>>>>>>> +DB      102,15,56,220,216
>>>>>>> 
>>>>>>> +        psrad   xmm14,31
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +DB      102,15,56,220,224
>>>>>>> 
>>>>>>> +DB      102,15,56,220,232
>>>>>>> 
>>>>>>> +        pand    xmm14,xmm8
>>>>>>> 
>>>>>>> +        movaps  xmm12,xmm11
>>>>>>> 
>>>>>>> +DB      102,15,56,220,240
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,220,248
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-48))+rcx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm15
>>>>>>> 
>>>>>>> +        psrad   xmm14,31
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm14,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +DB      102,15,56,220,233
>>>>>>> 
>>>>>>> +        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[((-32))+rcx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm15
>>>>>>> 
>>>>>>> +        psrad   xmm14,31
>>>>>>> 
>>>>>>> +DB      102,15,56,220,216
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm14,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,220,224
>>>>>>> 
>>>>>>> +DB      102,15,56,220,232
>>>>>>> 
>>>>>>> +DB      102,15,56,220,240
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>> 
>>>>>>> +        movaps  xmm14,xmm13
>>>>>>> 
>>>>>>> +DB      102,15,56,220,248
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm9
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm15
>>>>>>> 
>>>>>>> +        psrad   xmm0,31
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm0,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +DB      102,15,56,220,233
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm0
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rbp]
>>>>>>> 
>>>>>>> +DB      102,15,56,220,241
>>>>>>> 
>>>>>>> +DB      102,15,56,220,249
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rbp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm15
>>>>>>> 
>>>>>>> +DB      102,15,56,221,84,36,0
>>>>>>> 
>>>>>>> +        psrad   xmm9,31
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +DB      102,15,56,221,92,36,16
>>>>>>> 
>>>>>>> +DB      102,15,56,221,100,36,32
>>>>>>> 
>>>>>>> +        pand    xmm9,xmm8
>>>>>>> 
>>>>>>> +        mov     rax,r10
>>>>>>> 
>>>>>>> +DB      102,15,56,221,108,36,48
>>>>>>> 
>>>>>>> +DB      102,15,56,221,116,36,64
>>>>>>> 
>>>>>>> +DB      102,15,56,221,124,36,80
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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     NEAR $L$xts_enc_grandloop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     eax,16+96
>>>>>>> 
>>>>>>> +        sub     eax,r10d
>>>>>>> 
>>>>>>> +        mov     rcx,rbp
>>>>>>> 
>>>>>>> +        shr     eax,4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$xts_enc_short:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,eax
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm0
>>>>>>> 
>>>>>>> +        add     rdx,16*6
>>>>>>> 
>>>>>>> +        jz      NEAR $L$xts_enc_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm0
>>>>>>> 
>>>>>>> +        cmp     rdx,0x20
>>>>>>> 
>>>>>>> +        jb      NEAR $L$xts_enc_one
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm0
>>>>>>> 
>>>>>>> +        je      NEAR $L$xts_enc_two
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm0
>>>>>>> 
>>>>>>> +        cmp     rdx,0x40
>>>>>>> 
>>>>>>> +        jb      NEAR $L$xts_enc_three
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm0
>>>>>>> 
>>>>>>> +        je      NEAR $L$xts_enc_four
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>> 
>>>>>>> +        lea     rdi,[80+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    _aesni_encrypt6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm15
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>> 
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        xorps   xmm5,xmm13
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        xorps   xmm6,xmm14
>>>>>>> 
>>>>>>> +        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[rdi]
>>>>>>> 
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +$L$oop_enc1_9:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        dec     eax
>>>>>>> 
>>>>>>> +        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[rsi],xmm2
>>>>>>> 
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$xts_enc_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$xts_enc_two:
>>>>>>> 
>>>>>>> +        movups  xmm2,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +        lea     rdi,[32+rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    _aesni_encrypt2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm12
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>> 
>>>>>>> +        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[rdi]
>>>>>>> 
>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +        movups  xmm4,XMMWORD[32+rdi]
>>>>>>> 
>>>>>>> +        lea     rdi,[48+rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>> 
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    _aesni_encrypt3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm13
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>> 
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>> 
>>>>>>> +        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[rdi]
>>>>>>> 
>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +        movups  xmm4,XMMWORD[32+rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>> 
>>>>>>> +        movups  xmm5,XMMWORD[48+rdi]
>>>>>>> 
>>>>>>> +        lea     rdi,[64+rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>> 
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>> 
>>>>>>> +        xorps   xmm5,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    _aesni_encrypt4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>> 
>>>>>>> +        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:
>>>>>>> 
>>>>>>> +        and     r9,15
>>>>>>> 
>>>>>>> +        jz      NEAR $L$xts_enc_ret
>>>>>>> 
>>>>>>> +        mov     rdx,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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     NEAR $L$xts_enc_steal
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     rsi,r9
>>>>>>> 
>>>>>>> +        mov     rcx,rbp
>>>>>>> 
>>>>>>> +        mov     eax,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm2,XMMWORD[((-16))+rsi]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +$L$oop_enc1_10:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        dec     eax
>>>>>>> 
>>>>>>> +        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[(-16)+rsi],xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$xts_enc_ret:
>>>>>>> 
>>>>>>> +        xorps   xmm0,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[((-168))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-168)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[((-152))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-152)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[((-136))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-136)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[((-120))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-120)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm10,XMMWORD[((-104))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-104)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm11,XMMWORD[((-88))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-88)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm12,XMMWORD[((-72))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-72)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm13,XMMWORD[((-56))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-56)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm14,XMMWORD[((-40))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-40)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm15,XMMWORD[((-24))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-24)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm0
>>>>>>> 
>>>>>>> +        mov     rbp,QWORD[((-8))+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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:
>>>>>>> 
>>>>>>> +global  aesni_xts_decrypt
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +aesni_xts_decrypt:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_aesni_xts_decrypt:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +        mov     rcx,r9
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r11,[rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     rsp,272
>>>>>>> 
>>>>>>> +        and     rsp,-16
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-168)+r11],xmm6
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-152)+r11],xmm7
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-136)+r11],xmm8
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-120)+r11],xmm9
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-104)+r11],xmm10
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-88)+r11],xmm11
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-72)+r11],xmm12
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-56)+r11],xmm13
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-40)+r11],xmm14
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-24)+r11],xmm15
>>>>>>> 
>>>>>>> +$L$xts_dec_body:
>>>>>>> 
>>>>>>> +        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:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        dec     eax
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +        setnz   al
>>>>>>> 
>>>>>>> +        shl     rax,4
>>>>>>> 
>>>>>>> +        sub     rdx,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        mov     rbp,rcx
>>>>>>> 
>>>>>>> +        mov     eax,r10d
>>>>>>> 
>>>>>>> +        shl     r10d,4
>>>>>>> 
>>>>>>> +        mov     r9,rdx
>>>>>>> 
>>>>>>> +        and     rdx,-16
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+r10*1+rcx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,XMMWORD[$L$xts_magic]
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm2
>>>>>>> 
>>>>>>> +        pshufd  xmm9,xmm2,0x5f
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm15
>>>>>>> 
>>>>>>> +        psrad   xmm14,31
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm14,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm11,xmm15
>>>>>>> 
>>>>>>> +        psrad   xmm14,31
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm14,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm15
>>>>>>> 
>>>>>>> +        psrad   xmm14,31
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm14,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm15
>>>>>>> 
>>>>>>> +        psrad   xmm14,31
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm14,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm15
>>>>>>> 
>>>>>>> +        psrad   xmm9,31
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm9,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     rdx,16*6
>>>>>>> 
>>>>>>> +        jc      NEAR $L$xts_dec_short
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     eax,16+96
>>>>>>> 
>>>>>>> +        lea     rcx,[32+r10*1+rbp]
>>>>>>> 
>>>>>>> +        sub     rax,r10
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rbp]
>>>>>>> 
>>>>>>> +        mov     r10,rax
>>>>>>> 
>>>>>>> +        lea     r8,[$L$xts_magic]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$xts_dec_grandloop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$xts_dec_grandloop:
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm0
>>>>>>> 
>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>> 
>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +DB      102,15,56,222,217
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>> 
>>>>>>> +DB      102,15,56,222,225
>>>>>>> 
>>>>>>> +        movdqu  xmm7,XMMWORD[80+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm15
>>>>>>> 
>>>>>>> +        movdqa  xmm9,XMMWORD[96+rsp]
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +DB      102,15,56,222,233
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+rbp]
>>>>>>> 
>>>>>>> +        lea     rdi,[96+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,222,241
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm9
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[rsp],xmm10
>>>>>>> 
>>>>>>> +DB      102,15,56,222,249
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[48+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,222,208
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm9
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm11
>>>>>>> 
>>>>>>> +DB      102,15,56,222,216
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm9
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm12
>>>>>>> 
>>>>>>> +DB      102,15,56,222,224
>>>>>>> 
>>>>>>> +DB      102,15,56,222,232
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm9
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[64+rsp],xmm14
>>>>>>> 
>>>>>>> +DB      102,15,56,222,240
>>>>>>> 
>>>>>>> +DB      102,15,56,222,248
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[64+rbp]
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[80+rsp],xmm8
>>>>>>> 
>>>>>>> +        pshufd  xmm9,xmm15,0x5f
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$xts_dec_loop6
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$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[((-64))+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
>>>>>>> 
>>>>>>> +DB      102,15,56,222,240
>>>>>>> 
>>>>>>> +DB      102,15,56,222,248
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$xts_dec_loop6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,XMMWORD[r8]
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +        psrad   xmm14,31
>>>>>>> 
>>>>>>> +DB      102,15,56,222,217
>>>>>>> 
>>>>>>> +        pand    xmm14,xmm8
>>>>>>> 
>>>>>>> +        movups  xmm10,XMMWORD[rbp]
>>>>>>> 
>>>>>>> +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[((-64))+rcx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,222,208
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm15
>>>>>>> 
>>>>>>> +DB      102,15,56,222,216
>>>>>>> 
>>>>>>> +        psrad   xmm14,31
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +DB      102,15,56,222,224
>>>>>>> 
>>>>>>> +DB      102,15,56,222,232
>>>>>>> 
>>>>>>> +        pand    xmm14,xmm8
>>>>>>> 
>>>>>>> +        movaps  xmm12,xmm11
>>>>>>> 
>>>>>>> +DB      102,15,56,222,240
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,222,248
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-48))+rcx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm15
>>>>>>> 
>>>>>>> +        psrad   xmm14,31
>>>>>>> 
>>>>>>> +DB      102,15,56,222,217
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm14,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,222,225
>>>>>>> 
>>>>>>> +DB      102,15,56,222,233
>>>>>>> 
>>>>>>> +        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[((-32))+rcx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,222,208
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm15
>>>>>>> 
>>>>>>> +        psrad   xmm14,31
>>>>>>> 
>>>>>>> +DB      102,15,56,222,216
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm14,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,222,224
>>>>>>> 
>>>>>>> +DB      102,15,56,222,232
>>>>>>> 
>>>>>>> +DB      102,15,56,222,240
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>> 
>>>>>>> +        movaps  xmm14,xmm13
>>>>>>> 
>>>>>>> +DB      102,15,56,222,248
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm9
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm15
>>>>>>> 
>>>>>>> +        psrad   xmm0,31
>>>>>>> 
>>>>>>> +DB      102,15,56,222,217
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm0,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,222,225
>>>>>>> 
>>>>>>> +DB      102,15,56,222,233
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm0
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rbp]
>>>>>>> 
>>>>>>> +DB      102,15,56,222,241
>>>>>>> 
>>>>>>> +DB      102,15,56,222,249
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rbp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm15
>>>>>>> 
>>>>>>> +DB      102,15,56,223,84,36,0
>>>>>>> 
>>>>>>> +        psrad   xmm9,31
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +DB      102,15,56,223,92,36,16
>>>>>>> 
>>>>>>> +DB      102,15,56,223,100,36,32
>>>>>>> 
>>>>>>> +        pand    xmm9,xmm8
>>>>>>> 
>>>>>>> +        mov     rax,r10
>>>>>>> 
>>>>>>> +DB      102,15,56,223,108,36,48
>>>>>>> 
>>>>>>> +DB      102,15,56,223,116,36,64
>>>>>>> 
>>>>>>> +DB      102,15,56,223,124,36,80
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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     NEAR $L$xts_dec_grandloop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     eax,16+96
>>>>>>> 
>>>>>>> +        sub     eax,r10d
>>>>>>> 
>>>>>>> +        mov     rcx,rbp
>>>>>>> 
>>>>>>> +        shr     eax,4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$xts_dec_short:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,eax
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm0
>>>>>>> 
>>>>>>> +        add     rdx,16*6
>>>>>>> 
>>>>>>> +        jz      NEAR $L$xts_dec_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm0
>>>>>>> 
>>>>>>> +        cmp     rdx,0x20
>>>>>>> 
>>>>>>> +        jb      NEAR $L$xts_dec_one
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm0
>>>>>>> 
>>>>>>> +        je      NEAR $L$xts_dec_two
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm0
>>>>>>> 
>>>>>>> +        cmp     rdx,0x40
>>>>>>> 
>>>>>>> +        jb      NEAR $L$xts_dec_three
>>>>>>> 
>>>>>>> +        je      NEAR $L$xts_dec_four
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>> 
>>>>>>> +        lea     rdi,[80+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    _aesni_decrypt6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>> 
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        xorps   xmm5,xmm13
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        xorps   xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm14
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>> 
>>>>>>> +        pcmpgtd xmm14,xmm15
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[64+rsi],xmm6
>>>>>>> 
>>>>>>> +        lea     rsi,[80+rsi]
>>>>>>> 
>>>>>>> +        pshufd  xmm11,xmm14,0x13
>>>>>>> 
>>>>>>> +        and     r9,15
>>>>>>> 
>>>>>>> +        jz      NEAR $L$xts_dec_ret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm15
>>>>>>> 
>>>>>>> +        paddq   xmm15,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm11,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm15
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$xts_dec_done2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$xts_dec_one:
>>>>>>> 
>>>>>>> +        movups  xmm2,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +$L$oop_dec1_12:
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +        dec     eax
>>>>>>> 
>>>>>>> +        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[rsi],xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm11,xmm12
>>>>>>> 
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$xts_dec_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$xts_dec_two:
>>>>>>> 
>>>>>>> +        movups  xmm2,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +        lea     rdi,[32+rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    _aesni_decrypt2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm12
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm11,xmm13
>>>>>>> 
>>>>>>> +        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[rdi]
>>>>>>> 
>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +        movups  xmm4,XMMWORD[32+rdi]
>>>>>>> 
>>>>>>> +        lea     rdi,[48+rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>> 
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    _aesni_decrypt3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm13
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm11,xmm14
>>>>>>> 
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>> 
>>>>>>> +        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[rdi]
>>>>>>> 
>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +        movups  xmm4,XMMWORD[32+rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>> 
>>>>>>> +        movups  xmm5,XMMWORD[48+rdi]
>>>>>>> 
>>>>>>> +        lea     rdi,[64+rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>> 
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>> 
>>>>>>> +        xorps   xmm5,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    _aesni_decrypt4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm11,xmm15
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>> 
>>>>>>> +        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:
>>>>>>> 
>>>>>>> +        and     r9,15
>>>>>>> 
>>>>>>> +        jz      NEAR $L$xts_dec_ret
>>>>>>> 
>>>>>>> +$L$xts_dec_done2:
>>>>>>> 
>>>>>>> +        mov     rdx,r9
>>>>>>> 
>>>>>>> +        mov     rcx,rbp
>>>>>>> 
>>>>>>> +        mov     eax,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm2,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm11
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +$L$oop_dec1_13:
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +        dec     eax
>>>>>>> 
>>>>>>> +        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[rsi],xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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     NEAR $L$xts_dec_steal
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     rsi,r9
>>>>>>> 
>>>>>>> +        mov     rcx,rbp
>>>>>>> 
>>>>>>> +        mov     eax,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm2,XMMWORD[rsi]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +$L$oop_dec1_14:
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +        dec     eax
>>>>>>> 
>>>>>>> +        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[rsi],xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$xts_dec_ret:
>>>>>>> 
>>>>>>> +        xorps   xmm0,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[((-168))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-168)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[((-152))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-152)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[((-136))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-136)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[((-120))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-120)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm10,XMMWORD[((-104))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-104)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm11,XMMWORD[((-88))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-88)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm12,XMMWORD[((-72))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-72)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm13,XMMWORD[((-56))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-56)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm14,XMMWORD[((-40))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-40)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm15,XMMWORD[((-24))+r11]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-24)+r11],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm0
>>>>>>> 
>>>>>>> +        mov     rbp,QWORD[((-8))+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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:
>>>>>>> 
>>>>>>> +global  aesni_ocb_encrypt
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +aesni_ocb_encrypt:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_aesni_ocb_encrypt:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +        mov     rcx,r9
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rax,[rsp]
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[((-160))+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm10
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm11
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm12
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[112+rsp],xmm13
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[128+rsp],xmm14
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[144+rsp],xmm15
>>>>>>> 
>>>>>>> +$L$ocb_enc_body:
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[56+rax]
>>>>>>> 
>>>>>>> +        mov     rbp,QWORD[((56+8))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[240+rcx]
>>>>>>> 
>>>>>>> +        mov     r11,rcx
>>>>>>> 
>>>>>>> +        shl     r10d,4
>>>>>>> 
>>>>>>> +        movups  xmm9,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+r10*1+rcx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  xmm15,XMMWORD[r9]
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     eax,16+32
>>>>>>> 
>>>>>>> +        lea     rcx,[32+r10*1+r11]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>> 
>>>>>>> +        sub     rax,r10
>>>>>>> 
>>>>>>> +        mov     r10,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  xmm10,XMMWORD[rbx]
>>>>>>> 
>>>>>>> +        movdqu  xmm8,XMMWORD[rbp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        test    r8,1
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$ocb_enc_odd
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        bsf     r12,r8
>>>>>>> 
>>>>>>> +        add     r8,1
>>>>>>> 
>>>>>>> +        shl     r12,4
>>>>>>> 
>>>>>>> +        movdqu  xmm7,XMMWORD[r12*1+rbx]
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    __ocb_encrypt1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm7
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>> 
>>>>>>> +        sub     rdx,1
>>>>>>> 
>>>>>>> +        jz      NEAR $L$ocb_enc_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$ocb_enc_odd:
>>>>>>> 
>>>>>>> +        lea     r12,[1+r8]
>>>>>>> 
>>>>>>> +        lea     r13,[3+r8]
>>>>>>> 
>>>>>>> +        lea     r14,[5+r8]
>>>>>>> 
>>>>>>> +        lea     r8,[6+r8]
>>>>>>> 
>>>>>>> +        bsf     r12,r12
>>>>>>> 
>>>>>>> +        bsf     r13,r13
>>>>>>> 
>>>>>>> +        bsf     r14,r14
>>>>>>> 
>>>>>>> +        shl     r12,4
>>>>>>> 
>>>>>>> +        shl     r13,4
>>>>>>> 
>>>>>>> +        shl     r14,4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     rdx,6
>>>>>>> 
>>>>>>> +        jc      NEAR $L$ocb_enc_short
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ocb_enc_grandloop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$ocb_enc_grandloop:
>>>>>>> 
>>>>>>> +        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]
>>>>>>> 
>>>>>>> +        lea     rdi,[96+rdi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    __ocb_encrypt6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +        lea     rsi,[96+rsi]
>>>>>>> 
>>>>>>> +        sub     rdx,6
>>>>>>> 
>>>>>>> +        jnc     NEAR $L$ocb_enc_grandloop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$ocb_enc_short:
>>>>>>> 
>>>>>>> +        add     rdx,6
>>>>>>> 
>>>>>>> +        jz      NEAR $L$ocb_enc_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        cmp     rdx,2
>>>>>>> 
>>>>>>> +        jb      NEAR $L$ocb_enc_one
>>>>>>> 
>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +        je      NEAR $L$ocb_enc_two
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>> 
>>>>>>> +        cmp     rdx,4
>>>>>>> 
>>>>>>> +        jb      NEAR $L$ocb_enc_three
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>> 
>>>>>>> +        je      NEAR $L$ocb_enc_four
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    __ocb_encrypt6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm14
>>>>>>> 
>>>>>>> +        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$ocb_enc_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ocb_enc_one:
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    __ocb_encrypt1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm7
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ocb_enc_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ocb_enc_two:
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    __ocb_encrypt4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm11
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ocb_enc_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ocb_enc_three:
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    __ocb_encrypt4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm12
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ocb_enc_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ocb_enc_four:
>>>>>>> 
>>>>>>> +        call    __ocb_encrypt4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm13
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$ocb_enc_done:
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm0
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rbp],xmm8
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[r9],xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xorps   xmm0,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[16+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[32+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[48+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm10,XMMWORD[64+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm11,XMMWORD[80+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm12,XMMWORD[96+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm13,XMMWORD[112+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[112+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm14,XMMWORD[128+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[128+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm15,XMMWORD[144+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[144+rsp],xmm0
>>>>>>> 
>>>>>>> +        lea     rax,[((160+40))+rsp]
>>>>>>> 
>>>>>>> +$L$ocb_enc_pop:
>>>>>>> 
>>>>>>> +        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$ocb_enc_epilogue:
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$SEH_end_aesni_ocb_encrypt:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +__ocb_encrypt6:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>> 
>>>>>>> +        movdqu  xmm11,XMMWORD[r12*1+rbx]
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm10
>>>>>>> 
>>>>>>> +        movdqu  xmm13,XMMWORD[r13*1+rbx]
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm15
>>>>>>> 
>>>>>>> +        movdqu  xmm15,XMMWORD[r14*1+rbx]
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm15
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r12,[1+r8]
>>>>>>> 
>>>>>>> +        lea     r13,[3+r8]
>>>>>>> 
>>>>>>> +        lea     r14,[5+r8]
>>>>>>> 
>>>>>>> +        add     r8,6
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm9
>>>>>>> 
>>>>>>> +        bsf     r12,r12
>>>>>>> 
>>>>>>> +        bsf     r13,r13
>>>>>>> 
>>>>>>> +        bsf     r14,r14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +DB      102,15,56,220,217
>>>>>>> 
>>>>>>> +DB      102,15,56,220,225
>>>>>>> 
>>>>>>> +DB      102,15,56,220,233
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,220,241
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,220,249
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[48+r11]
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +DB      102,15,56,220,216
>>>>>>> 
>>>>>>> +DB      102,15,56,220,224
>>>>>>> 
>>>>>>> +DB      102,15,56,220,232
>>>>>>> 
>>>>>>> +DB      102,15,56,220,240
>>>>>>> 
>>>>>>> +DB      102,15,56,220,248
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[64+r11]
>>>>>>> 
>>>>>>> +        shl     r12,4
>>>>>>> 
>>>>>>> +        shl     r13,4
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ocb_enc_loop6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$ocb_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[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
>>>>>>> 
>>>>>>> +DB      102,15,56,220,240
>>>>>>> 
>>>>>>> +DB      102,15,56,220,248
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$ocb_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[16+r11]
>>>>>>> 
>>>>>>> +        shl     r14,4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,65,15,56,221,210
>>>>>>> 
>>>>>>> +        movdqu  xmm10,XMMWORD[rbx]
>>>>>>> 
>>>>>>> +        mov     rax,r10
>>>>>>> 
>>>>>>> +DB      102,65,15,56,221,219
>>>>>>> 
>>>>>>> +DB      102,65,15,56,221,228
>>>>>>> 
>>>>>>> +DB      102,65,15,56,221,237
>>>>>>> 
>>>>>>> +DB      102,65,15,56,221,246
>>>>>>> 
>>>>>>> +DB      102,65,15,56,221,255
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +__ocb_encrypt4:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>> 
>>>>>>> +        movdqu  xmm11,XMMWORD[r12*1+rbx]
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm10
>>>>>>> 
>>>>>>> +        movdqu  xmm13,XMMWORD[r13*1+rbx]
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm15
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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[48+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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[64+r11]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ocb_enc_loop4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$ocb_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[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[((-16))+rax*1+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$ocb_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[16+r11]
>>>>>>> 
>>>>>>> +        mov     rax,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,65,15,56,221,210
>>>>>>> 
>>>>>>> +DB      102,65,15,56,221,219
>>>>>>> 
>>>>>>> +DB      102,65,15,56,221,228
>>>>>>> 
>>>>>>> +DB      102,65,15,56,221,237
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +__ocb_encrypt1:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm15
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm7
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[48+r11]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[64+r11]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ocb_enc_loop1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$ocb_enc_loop1:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[rax*1+rcx]
>>>>>>> 
>>>>>>> +        add     rax,32
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,220,208
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$ocb_enc_loop1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>> 
>>>>>>> +        mov     rax,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,221,215
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  aesni_ocb_decrypt
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +aesni_ocb_decrypt:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_aesni_ocb_decrypt:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +        mov     rcx,r9
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rax,[rsp]
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[((-160))+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm10
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm11
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm12
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[112+rsp],xmm13
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[128+rsp],xmm14
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[144+rsp],xmm15
>>>>>>> 
>>>>>>> +$L$ocb_dec_body:
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[56+rax]
>>>>>>> 
>>>>>>> +        mov     rbp,QWORD[((56+8))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[240+rcx]
>>>>>>> 
>>>>>>> +        mov     r11,rcx
>>>>>>> 
>>>>>>> +        shl     r10d,4
>>>>>>> 
>>>>>>> +        movups  xmm9,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+r10*1+rcx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  xmm15,XMMWORD[r9]
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     eax,16+32
>>>>>>> 
>>>>>>> +        lea     rcx,[32+r10*1+r11]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>> 
>>>>>>> +        sub     rax,r10
>>>>>>> 
>>>>>>> +        mov     r10,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  xmm10,XMMWORD[rbx]
>>>>>>> 
>>>>>>> +        movdqu  xmm8,XMMWORD[rbp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        test    r8,1
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$ocb_dec_odd
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        bsf     r12,r8
>>>>>>> 
>>>>>>> +        add     r8,1
>>>>>>> 
>>>>>>> +        shl     r12,4
>>>>>>> 
>>>>>>> +        movdqu  xmm7,XMMWORD[r12*1+rbx]
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    __ocb_decrypt1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm7
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        xorps   xmm8,xmm2
>>>>>>> 
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>> 
>>>>>>> +        sub     rdx,1
>>>>>>> 
>>>>>>> +        jz      NEAR $L$ocb_dec_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$ocb_dec_odd:
>>>>>>> 
>>>>>>> +        lea     r12,[1+r8]
>>>>>>> 
>>>>>>> +        lea     r13,[3+r8]
>>>>>>> 
>>>>>>> +        lea     r14,[5+r8]
>>>>>>> 
>>>>>>> +        lea     r8,[6+r8]
>>>>>>> 
>>>>>>> +        bsf     r12,r12
>>>>>>> 
>>>>>>> +        bsf     r13,r13
>>>>>>> 
>>>>>>> +        bsf     r14,r14
>>>>>>> 
>>>>>>> +        shl     r12,4
>>>>>>> 
>>>>>>> +        shl     r13,4
>>>>>>> 
>>>>>>> +        shl     r14,4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     rdx,6
>>>>>>> 
>>>>>>> +        jc      NEAR $L$ocb_dec_short
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ocb_dec_grandloop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$ocb_dec_grandloop:
>>>>>>> 
>>>>>>> +        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]
>>>>>>> 
>>>>>>> +        lea     rdi,[96+rdi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    __ocb_decrypt6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm2
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>> 
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm4
>>>>>>> 
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm5
>>>>>>> 
>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm6
>>>>>>> 
>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm7
>>>>>>> 
>>>>>>> +        lea     rsi,[96+rsi]
>>>>>>> 
>>>>>>> +        sub     rdx,6
>>>>>>> 
>>>>>>> +        jnc     NEAR $L$ocb_dec_grandloop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$ocb_dec_short:
>>>>>>> 
>>>>>>> +        add     rdx,6
>>>>>>> 
>>>>>>> +        jz      NEAR $L$ocb_dec_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        cmp     rdx,2
>>>>>>> 
>>>>>>> +        jb      NEAR $L$ocb_dec_one
>>>>>>> 
>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +        je      NEAR $L$ocb_dec_two
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>> 
>>>>>>> +        cmp     rdx,4
>>>>>>> 
>>>>>>> +        jb      NEAR $L$ocb_dec_three
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>> 
>>>>>>> +        je      NEAR $L$ocb_dec_four
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    __ocb_decrypt6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm14
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm2
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>> 
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm4
>>>>>>> 
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm5
>>>>>>> 
>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ocb_dec_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ocb_dec_one:
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    __ocb_decrypt1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm7
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        xorps   xmm8,xmm2
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ocb_dec_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ocb_dec_two:
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    __ocb_decrypt4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm11
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        xorps   xmm8,xmm2
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        xorps   xmm8,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ocb_dec_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ocb_dec_three:
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    __ocb_decrypt4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm12
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        xorps   xmm8,xmm2
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        xorps   xmm8,xmm3
>>>>>>> 
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        xorps   xmm8,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ocb_dec_done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ocb_dec_four:
>>>>>>> 
>>>>>>> +        call    __ocb_decrypt4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm13
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm2
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>> 
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm4
>>>>>>> 
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$ocb_dec_done:
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm0
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rbp],xmm8
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[r9],xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xorps   xmm0,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[16+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[32+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[48+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm10,XMMWORD[64+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm11,XMMWORD[80+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm12,XMMWORD[96+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm13,XMMWORD[112+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[112+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm14,XMMWORD[128+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[128+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm15,XMMWORD[144+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[144+rsp],xmm0
>>>>>>> 
>>>>>>> +        lea     rax,[((160+40))+rsp]
>>>>>>> 
>>>>>>> +$L$ocb_dec_pop:
>>>>>>> 
>>>>>>> +        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$ocb_dec_epilogue:
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$SEH_end_aesni_ocb_decrypt:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +__ocb_decrypt6:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>> 
>>>>>>> +        movdqu  xmm11,XMMWORD[r12*1+rbx]
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm10
>>>>>>> 
>>>>>>> +        movdqu  xmm13,XMMWORD[r13*1+rbx]
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm15
>>>>>>> 
>>>>>>> +        movdqu  xmm15,XMMWORD[r14*1+rbx]
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm15
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r12,[1+r8]
>>>>>>> 
>>>>>>> +        lea     r13,[3+r8]
>>>>>>> 
>>>>>>> +        lea     r14,[5+r8]
>>>>>>> 
>>>>>>> +        add     r8,6
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm9
>>>>>>> 
>>>>>>> +        bsf     r12,r12
>>>>>>> 
>>>>>>> +        bsf     r13,r13
>>>>>>> 
>>>>>>> +        bsf     r14,r14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +DB      102,15,56,222,217
>>>>>>> 
>>>>>>> +DB      102,15,56,222,225
>>>>>>> 
>>>>>>> +DB      102,15,56,222,233
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,222,241
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,222,249
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[48+r11]
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,222,208
>>>>>>> 
>>>>>>> +DB      102,15,56,222,216
>>>>>>> 
>>>>>>> +DB      102,15,56,222,224
>>>>>>> 
>>>>>>> +DB      102,15,56,222,232
>>>>>>> 
>>>>>>> +DB      102,15,56,222,240
>>>>>>> 
>>>>>>> +DB      102,15,56,222,248
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[64+r11]
>>>>>>> 
>>>>>>> +        shl     r12,4
>>>>>>> 
>>>>>>> +        shl     r13,4
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ocb_dec_loop6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$ocb_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[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
>>>>>>> 
>>>>>>> +DB      102,15,56,222,240
>>>>>>> 
>>>>>>> +DB      102,15,56,222,248
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$ocb_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[16+r11]
>>>>>>> 
>>>>>>> +        shl     r14,4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,65,15,56,223,210
>>>>>>> 
>>>>>>> +        movdqu  xmm10,XMMWORD[rbx]
>>>>>>> 
>>>>>>> +        mov     rax,r10
>>>>>>> 
>>>>>>> +DB      102,65,15,56,223,219
>>>>>>> 
>>>>>>> +DB      102,65,15,56,223,228
>>>>>>> 
>>>>>>> +DB      102,65,15,56,223,237
>>>>>>> 
>>>>>>> +DB      102,65,15,56,223,246
>>>>>>> 
>>>>>>> +DB      102,65,15,56,223,255
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +__ocb_decrypt4:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm9
>>>>>>> 
>>>>>>> +        movdqu  xmm11,XMMWORD[r12*1+rbx]
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm10
>>>>>>> 
>>>>>>> +        movdqu  xmm13,XMMWORD[r13*1+rbx]
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm15
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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[48+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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[64+r11]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ocb_dec_loop4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$ocb_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[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[((-16))+rax*1+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$ocb_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[16+r11]
>>>>>>> 
>>>>>>> +        mov     rax,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,65,15,56,223,210
>>>>>>> 
>>>>>>> +DB      102,65,15,56,223,219
>>>>>>> 
>>>>>>> +DB      102,65,15,56,223,228
>>>>>>> 
>>>>>>> +DB      102,65,15,56,223,237
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +__ocb_decrypt1:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm15
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm7
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[32+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[48+r11]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,222,208
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[64+r11]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ocb_dec_loop1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$ocb_dec_loop1:
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[rax*1+rcx]
>>>>>>> 
>>>>>>> +        add     rax,32
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,222,208
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$ocb_dec_loop1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+r11]
>>>>>>> 
>>>>>>> +        mov     rax,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,223,215
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  aesni_cbc_encrypt
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +aesni_cbc_encrypt:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_aesni_cbc_encrypt:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +        mov     rcx,r9
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        test    rdx,rdx
>>>>>>> 
>>>>>>> +        jz      NEAR $L$cbc_ret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[240+rcx]
>>>>>>> 
>>>>>>> +        mov     r11,rcx
>>>>>>> 
>>>>>>> +        test    r9d,r9d
>>>>>>> 
>>>>>>> +        jz      NEAR $L$cbc_decrypt
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm2,XMMWORD[r8]
>>>>>>> 
>>>>>>> +        mov     eax,r10d
>>>>>>> 
>>>>>>> +        cmp     rdx,16
>>>>>>> 
>>>>>>> +        jb      NEAR $L$cbc_enc_tail
>>>>>>> 
>>>>>>> +        sub     rdx,16
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$cbc_enc_loop
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$cbc_enc_loop:
>>>>>>> 
>>>>>>> +        movups  xmm3,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm0
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm3
>>>>>>> 
>>>>>>> +$L$oop_enc1_15:
>>>>>>> 
>>>>>>> +DB      102,15,56,220,209
>>>>>>> 
>>>>>>> +        dec     eax
>>>>>>> 
>>>>>>> +        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[rsi],xmm2
>>>>>>> 
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>> 
>>>>>>> +        sub     rdx,16
>>>>>>> 
>>>>>>> +        jnc     NEAR $L$cbc_enc_loop
>>>>>>> 
>>>>>>> +        add     rdx,16
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$cbc_enc_tail
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>> 
>>>>>>> +        movups  XMMWORD[r8],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$cbc_ret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$cbc_enc_tail:
>>>>>>> 
>>>>>>> +        mov     rcx,rdx
>>>>>>> 
>>>>>>> +        xchg    rsi,rdi
>>>>>>> 
>>>>>>> +        DD      0x9066A4F3
>>>>>>> 
>>>>>>> +        mov     ecx,16
>>>>>>> 
>>>>>>> +        sub     rcx,rdx
>>>>>>> 
>>>>>>> +        xor     eax,eax
>>>>>>> 
>>>>>>> +        DD      0x9066AAF3
>>>>>>> 
>>>>>>> +        lea     rdi,[((-16))+rdi]
>>>>>>> 
>>>>>>> +        mov     eax,r10d
>>>>>>> 
>>>>>>> +        mov     rsi,rdi
>>>>>>> 
>>>>>>> +        mov     rcx,r11
>>>>>>> 
>>>>>>> +        xor     rdx,rdx
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$cbc_enc_loop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$cbc_decrypt:
>>>>>>> 
>>>>>>> +        cmp     rdx,16
>>>>>>> 
>>>>>>> +        jne     NEAR $L$cbc_decrypt_bulk
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        movdqu  xmm3,XMMWORD[r8]
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm2
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +$L$oop_dec1_16:
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +        dec     r10d
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_dec1_16
>>>>>>> 
>>>>>>> +DB      102,15,56,223,209
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[r8],xmm4
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$cbc_ret
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$cbc_decrypt_bulk:
>>>>>>> 
>>>>>>> +        lea     r11,[rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     rsp,176
>>>>>>> 
>>>>>>> +        and     rsp,-16
>>>>>>> 
>>>>>>> +        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:
>>>>>>> 
>>>>>>> +        mov     rbp,rcx
>>>>>>> 
>>>>>>> +        movups  xmm10,XMMWORD[r8]
>>>>>>> 
>>>>>>> +        mov     eax,r10d
>>>>>>> 
>>>>>>> +        cmp     rdx,0x50
>>>>>>> 
>>>>>>> +        jbe     NEAR $L$cbc_dec_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        movdqu  xmm3,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +        movdqa  xmm11,xmm2
>>>>>>> 
>>>>>>> +        movdqu  xmm4,XMMWORD[32+rdi]
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm3
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm4
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm5
>>>>>>> 
>>>>>>> +        movdqu  xmm7,XMMWORD[80+rdi]
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm6
>>>>>>> 
>>>>>>> +        mov     r9d,DWORD[((OPENSSL_ia32cap_P+4))]
>>>>>>> 
>>>>>>> +        cmp     rdx,0x70
>>>>>>> 
>>>>>>> +        jbe     NEAR $L$cbc_dec_six_or_seven
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r9d,71303168
>>>>>>> 
>>>>>>> +        sub     rdx,0x50
>>>>>>> 
>>>>>>> +        cmp     r9d,4194304
>>>>>>> 
>>>>>>> +        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[rsi],xmm9
>>>>>>> 
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>> 
>>>>>>> +$L$cbc_dec_loop8_enter:
>>>>>>> 
>>>>>>> +        movdqu  xmm8,XMMWORD[96+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm0
>>>>>>> 
>>>>>>> +        movdqu  xmm9,XMMWORD[112+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((16-112))+rcx]
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>> 
>>>>>>> +        mov     rbp,-1
>>>>>>> 
>>>>>>> +        cmp     rdx,0x70
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm0
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((32-112))+rcx]
>>>>>>> 
>>>>>>> +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
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,193
>>>>>>> 
>>>>>>> +        adc     rbp,0
>>>>>>> 
>>>>>>> +        and     rbp,128
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,201
>>>>>>> 
>>>>>>> +        add     rbp,rdi
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((48-112))+rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,222,208
>>>>>>> 
>>>>>>> +DB      102,15,56,222,216
>>>>>>> 
>>>>>>> +DB      102,15,56,222,224
>>>>>>> 
>>>>>>> +DB      102,15,56,222,232
>>>>>>> 
>>>>>>> +DB      102,15,56,222,240
>>>>>>> 
>>>>>>> +DB      102,15,56,222,248
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,192
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,200
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((64-112))+rcx]
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +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
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,193
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,201
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((80-112))+rcx]
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +DB      102,15,56,222,208
>>>>>>> 
>>>>>>> +DB      102,15,56,222,216
>>>>>>> 
>>>>>>> +DB      102,15,56,222,224
>>>>>>> 
>>>>>>> +DB      102,15,56,222,232
>>>>>>> 
>>>>>>> +DB      102,15,56,222,240
>>>>>>> 
>>>>>>> +DB      102,15,56,222,248
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,192
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,200
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((96-112))+rcx]
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +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
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,193
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,201
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((112-112))+rcx]
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +DB      102,15,56,222,208
>>>>>>> 
>>>>>>> +DB      102,15,56,222,216
>>>>>>> 
>>>>>>> +DB      102,15,56,222,224
>>>>>>> 
>>>>>>> +DB      102,15,56,222,232
>>>>>>> 
>>>>>>> +DB      102,15,56,222,240
>>>>>>> 
>>>>>>> +DB      102,15,56,222,248
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,192
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,200
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((128-112))+rcx]
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +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
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,193
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,201
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((144-112))+rcx]
>>>>>>> 
>>>>>>> +        cmp     eax,11
>>>>>>> 
>>>>>>> +DB      102,15,56,222,208
>>>>>>> 
>>>>>>> +DB      102,15,56,222,216
>>>>>>> 
>>>>>>> +DB      102,15,56,222,224
>>>>>>> 
>>>>>>> +DB      102,15,56,222,232
>>>>>>> 
>>>>>>> +DB      102,15,56,222,240
>>>>>>> 
>>>>>>> +DB      102,15,56,222,248
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,192
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,200
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +DB      102,15,56,222,233
>>>>>>> 
>>>>>>> +DB      102,15,56,222,241
>>>>>>> 
>>>>>>> +DB      102,15,56,222,249
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,193
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,201
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((176-112))+rcx]
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +DB      102,15,56,222,208
>>>>>>> 
>>>>>>> +DB      102,15,56,222,216
>>>>>>> 
>>>>>>> +DB      102,15,56,222,224
>>>>>>> 
>>>>>>> +DB      102,15,56,222,232
>>>>>>> 
>>>>>>> +DB      102,15,56,222,240
>>>>>>> 
>>>>>>> +DB      102,15,56,222,248
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,192
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,200
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +DB      102,15,56,222,233
>>>>>>> 
>>>>>>> +DB      102,15,56,222,241
>>>>>>> 
>>>>>>> +DB      102,15,56,222,249
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,193
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,201
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[((208-112))+rcx]
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +DB      102,15,56,222,208
>>>>>>> 
>>>>>>> +DB      102,15,56,222,216
>>>>>>> 
>>>>>>> +DB      102,15,56,222,224
>>>>>>> 
>>>>>>> +DB      102,15,56,222,232
>>>>>>> 
>>>>>>> +DB      102,15,56,222,240
>>>>>>> 
>>>>>>> +DB      102,15,56,222,248
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,192
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,200
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((224-112))+rcx]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$cbc_dec_done
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$cbc_dec_done:
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +DB      102,15,56,222,217
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm0
>>>>>>> 
>>>>>>> +DB      102,15,56,222,225
>>>>>>> 
>>>>>>> +DB      102,15,56,222,233
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm0
>>>>>>> 
>>>>>>> +DB      102,15,56,222,241
>>>>>>> 
>>>>>>> +DB      102,15,56,222,249
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm0
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,193
>>>>>>> 
>>>>>>> +DB      102,68,15,56,222,201
>>>>>>> 
>>>>>>> +        movdqu  xmm1,XMMWORD[80+rdi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,65,15,56,223,210
>>>>>>> 
>>>>>>> +        movdqu  xmm10,XMMWORD[96+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm0
>>>>>>> 
>>>>>>> +DB      102,65,15,56,223,219
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm0
>>>>>>> 
>>>>>>> +        movdqu  xmm0,XMMWORD[112+rdi]
>>>>>>> 
>>>>>>> +DB      102,65,15,56,223,228
>>>>>>> 
>>>>>>> +        lea     rdi,[128+rdi]
>>>>>>> 
>>>>>>> +        movdqu  xmm11,XMMWORD[rbp]
>>>>>>> 
>>>>>>> +DB      102,65,15,56,223,237
>>>>>>> 
>>>>>>> +DB      102,65,15,56,223,246
>>>>>>> 
>>>>>>> +        movdqu  xmm12,XMMWORD[16+rbp]
>>>>>>> 
>>>>>>> +        movdqu  xmm13,XMMWORD[32+rbp]
>>>>>>> 
>>>>>>> +DB      102,65,15,56,223,255
>>>>>>> 
>>>>>>> +DB      102,68,15,56,223,193
>>>>>>> 
>>>>>>> +        movdqu  xmm14,XMMWORD[48+rbp]
>>>>>>> 
>>>>>>> +        movdqu  xmm15,XMMWORD[64+rbp]
>>>>>>> 
>>>>>>> +DB      102,69,15,56,223,202
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm0
>>>>>>> 
>>>>>>> +        movdqu  xmm1,XMMWORD[80+rbp]
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[((-112))+rcx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>> 
>>>>>>> +        movups  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>> 
>>>>>>> +        movups  XMMWORD[48+rsi],xmm5
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm14
>>>>>>> 
>>>>>>> +        movups  XMMWORD[64+rsi],xmm6
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm15
>>>>>>> 
>>>>>>> +        movups  XMMWORD[80+rsi],xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm1
>>>>>>> 
>>>>>>> +        movups  XMMWORD[96+rsi],xmm8
>>>>>>> 
>>>>>>> +        lea     rsi,[112+rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     rdx,0x80
>>>>>>> 
>>>>>>> +        ja      NEAR $L$cbc_dec_loop8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movaps  xmm2,xmm9
>>>>>>> 
>>>>>>> +        lea     rcx,[((-112))+rcx]
>>>>>>> 
>>>>>>> +        add     rdx,0x70
>>>>>>> 
>>>>>>> +        jle     NEAR $L$cbc_dec_clear_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,0x60
>>>>>>> 
>>>>>>> +        ja      NEAR $L$cbc_dec_seven
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movaps  xmm8,xmm7
>>>>>>> 
>>>>>>> +        call    _aesni_decrypt6
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>> 
>>>>>>> +        movaps  xmm10,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm15
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[64+rsi],xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>> 
>>>>>>> +        lea     rsi,[80+rsi]
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$cbc_dec_seven:
>>>>>>> 
>>>>>>> +        movups  xmm8,XMMWORD[96+rdi]
>>>>>>> 
>>>>>>> +        xorps   xmm9,xmm9
>>>>>>> 
>>>>>>> +        call    _aesni_decrypt8
>>>>>>> 
>>>>>>> +        movups  xmm9,XMMWORD[80+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>> 
>>>>>>> +        movups  xmm10,XMMWORD[96+rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm15
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[64+rsi],xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm9
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[80+rsi],xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>> 
>>>>>>> +        lea     rsi,[96+rsi]
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm9
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$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[32+rdi]
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm3
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[48+rdi]
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm4
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[64+rdi]
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm5
>>>>>>> 
>>>>>>> +        movdqu  xmm7,XMMWORD[80+rdi]
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm6
>>>>>>> 
>>>>>>> +$L$cbc_dec_loop6_enter:
>>>>>>> 
>>>>>>> +        lea     rdi,[96+rdi]
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    _aesni_decrypt6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +        mov     rcx,rbp
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm15
>>>>>>> 
>>>>>>> +        mov     eax,r10d
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[64+rsi],xmm6
>>>>>>> 
>>>>>>> +        lea     rsi,[80+rsi]
>>>>>>> 
>>>>>>> +        sub     rdx,0x60
>>>>>>> 
>>>>>>> +        ja      NEAR $L$cbc_dec_loop6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm7
>>>>>>> 
>>>>>>> +        add     rdx,0x50
>>>>>>> 
>>>>>>> +        jle     NEAR $L$cbc_dec_clear_tail_collected
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm7
>>>>>>> 
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$cbc_dec_tail:
>>>>>>> 
>>>>>>> +        movups  xmm2,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        sub     rdx,0x10
>>>>>>> 
>>>>>>> +        jbe     NEAR $L$cbc_dec_one
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm3,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +        movaps  xmm11,xmm2
>>>>>>> 
>>>>>>> +        sub     rdx,0x10
>>>>>>> 
>>>>>>> +        jbe     NEAR $L$cbc_dec_two
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm4,XMMWORD[32+rdi]
>>>>>>> 
>>>>>>> +        movaps  xmm12,xmm3
>>>>>>> 
>>>>>>> +        sub     rdx,0x10
>>>>>>> 
>>>>>>> +        jbe     NEAR $L$cbc_dec_three
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm5,XMMWORD[48+rdi]
>>>>>>> 
>>>>>>> +        movaps  xmm13,xmm4
>>>>>>> 
>>>>>>> +        sub     rdx,0x10
>>>>>>> 
>>>>>>> +        jbe     NEAR $L$cbc_dec_four
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm6,XMMWORD[64+rdi]
>>>>>>> 
>>>>>>> +        movaps  xmm14,xmm5
>>>>>>> 
>>>>>>> +        movaps  xmm15,xmm6
>>>>>>> 
>>>>>>> +        xorps   xmm7,xmm7
>>>>>>> 
>>>>>>> +        call    _aesni_decrypt6
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>> 
>>>>>>> +        movaps  xmm10,xmm15
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[48+rsi],xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +        lea     rsi,[64+rsi]
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>> 
>>>>>>> +        sub     rdx,0x10
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$cbc_dec_one:
>>>>>>> 
>>>>>>> +        movaps  xmm11,xmm2
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[32+rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm0
>>>>>>> 
>>>>>>> +$L$oop_dec1_17:
>>>>>>> 
>>>>>>> +DB      102,15,56,222,209
>>>>>>> 
>>>>>>> +        dec     eax
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[16+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_dec1_17
>>>>>>> 
>>>>>>> +DB      102,15,56,223,209
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm10
>>>>>>> 
>>>>>>> +        movaps  xmm10,xmm11
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$cbc_dec_two:
>>>>>>> 
>>>>>>> +        movaps  xmm12,xmm3
>>>>>>> 
>>>>>>> +        call    _aesni_decrypt2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>> 
>>>>>>> +        movaps  xmm10,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        lea     rsi,[16+rsi]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$cbc_dec_three:
>>>>>>> 
>>>>>>> +        movaps  xmm13,xmm4
>>>>>>> 
>>>>>>> +        call    _aesni_decrypt3
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>> 
>>>>>>> +        movaps  xmm10,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        lea     rsi,[32+rsi]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$cbc_dec_four:
>>>>>>> 
>>>>>>> +        movaps  xmm14,xmm5
>>>>>>> 
>>>>>>> +        call    _aesni_decrypt4
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>> 
>>>>>>> +        movaps  xmm10,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm11
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[16+rsi],xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm13
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[32+rsi],xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +        lea     rsi,[48+rsi]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$cbc_dec_tail_collected
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$cbc_dec_clear_tail_collected:
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +$L$cbc_dec_tail_collected:
>>>>>>> 
>>>>>>> +        movups  XMMWORD[r8],xmm10
>>>>>>> 
>>>>>>> +        and     rdx,15
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$cbc_dec_tail_partial
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rsi],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$cbc_dec_ret
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$cbc_dec_tail_partial:
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[rsp],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        mov     rcx,16
>>>>>>> 
>>>>>>> +        mov     rdi,rsi
>>>>>>> 
>>>>>>> +        sub     rcx,rdx
>>>>>>> 
>>>>>>> +        lea     rsi,[rsp]
>>>>>>> 
>>>>>>> +        DD      0x9066A4F3
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[rsp],xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$cbc_dec_ret:
>>>>>>> 
>>>>>>> +        xorps   xmm0,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[16+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[32+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[48+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[64+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[64+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm10,XMMWORD[80+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[80+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm11,XMMWORD[96+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[96+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm12,XMMWORD[112+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[112+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm13,XMMWORD[128+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[128+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm14,XMMWORD[144+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[144+rsp],xmm0
>>>>>>> 
>>>>>>> +        movaps  xmm15,XMMWORD[160+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[160+rsp],xmm0
>>>>>>> 
>>>>>>> +        mov     rbp,QWORD[((-8))+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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:
>>>>>>> 
>>>>>>> +global  aesni_set_decrypt_key
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +aesni_set_decrypt_key:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      0x48,0x83,0xEC,0x08
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    __aesni_set_encrypt_key
>>>>>>> 
>>>>>>> +        shl     edx,4
>>>>>>> 
>>>>>>> +        test    eax,eax
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$dec_key_ret
>>>>>>> 
>>>>>>> +        lea     rcx,[16+rdx*1+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[r8]
>>>>>>> 
>>>>>>> +        movups  xmm1,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +DB      102,15,56,219,192
>>>>>>> 
>>>>>>> +DB      102,15,56,219,201
>>>>>>> 
>>>>>>> +        lea     r8,[16+r8]
>>>>>>> 
>>>>>>> +        lea     rcx,[((-16))+rcx]
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rcx],xmm0
>>>>>>> 
>>>>>>> +        movups  XMMWORD[(-16)+r8],xmm1
>>>>>>> 
>>>>>>> +        cmp     rcx,r8
>>>>>>> 
>>>>>>> +        ja      NEAR $L$dec_key_inverse
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[r8]
>>>>>>> 
>>>>>>> +DB      102,15,56,219,192
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rcx],xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>> 
>>>>>>> +$L$dec_key_ret:
>>>>>>> 
>>>>>>> +        add     rsp,8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$SEH_end_set_decrypt_key:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  aesni_set_encrypt_key
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +aesni_set_encrypt_key:
>>>>>>> 
>>>>>>> +__aesni_set_encrypt_key:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      0x48,0x83,0xEC,0x08
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,-1
>>>>>>> 
>>>>>>> +        test    rcx,rcx
>>>>>>> 
>>>>>>> +        jz      NEAR $L$enc_key_ret
>>>>>>> 
>>>>>>> +        test    r8,r8
>>>>>>> 
>>>>>>> +        jz      NEAR $L$enc_key_ret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,268437504
>>>>>>> 
>>>>>>> +        movups  xmm0,XMMWORD[rcx]
>>>>>>> 
>>>>>>> +        xorps   xmm4,xmm4
>>>>>>> 
>>>>>>> +        and     r10d,DWORD[((OPENSSL_ia32cap_P+4))]
>>>>>>> 
>>>>>>> +        lea     rax,[16+r8]
>>>>>>> 
>>>>>>> +        cmp     edx,256
>>>>>>> 
>>>>>>> +        je      NEAR $L$14rounds
>>>>>>> 
>>>>>>> +        cmp     edx,192
>>>>>>> 
>>>>>>> +        je      NEAR $L$12rounds
>>>>>>> 
>>>>>>> +        cmp     edx,128
>>>>>>> 
>>>>>>> +        jne     NEAR $L$bad_keybits
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$10rounds:
>>>>>>> 
>>>>>>> +        mov     edx,9
>>>>>>> 
>>>>>>> +        cmp     r10d,268435456
>>>>>>> 
>>>>>>> +        je      NEAR $L$10rounds_alt
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  XMMWORD[r8],xmm0
>>>>>>> 
>>>>>>> +DB      102,15,58,223,200,1
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_128_cold
>>>>>>> 
>>>>>>> +DB      102,15,58,223,200,2
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_128
>>>>>>> 
>>>>>>> +DB      102,15,58,223,200,4
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_128
>>>>>>> 
>>>>>>> +DB      102,15,58,223,200,8
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_128
>>>>>>> 
>>>>>>> +DB      102,15,58,223,200,16
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_128
>>>>>>> 
>>>>>>> +DB      102,15,58,223,200,32
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_128
>>>>>>> 
>>>>>>> +DB      102,15,58,223,200,64
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_128
>>>>>>> 
>>>>>>> +DB      102,15,58,223,200,128
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_128
>>>>>>> 
>>>>>>> +DB      102,15,58,223,200,27
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_128
>>>>>>> 
>>>>>>> +DB      102,15,58,223,200,54
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_128
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rax],xmm0
>>>>>>> 
>>>>>>> +        mov     DWORD[80+rax],edx
>>>>>>> 
>>>>>>> +        xor     eax,eax
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$enc_key_ret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$10rounds_alt:
>>>>>>> 
>>>>>>> +        movdqa  xmm5,XMMWORD[$L$key_rotate]
>>>>>>> 
>>>>>>> +        mov     r10d,8
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[r8],xmm0
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_key128
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$oop_key128:
>>>>>>> 
>>>>>>> +DB      102,15,56,0,197
>>>>>>> 
>>>>>>> +DB      102,15,56,221,196
>>>>>>> 
>>>>>>> +        pslld   xmm4,1
>>>>>>> 
>>>>>>> +        lea     rax,[16+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm2
>>>>>>> 
>>>>>>> +        pslldq  xmm2,4
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>> 
>>>>>>> +        pslldq  xmm2,4
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>> 
>>>>>>> +        pslldq  xmm2,4
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[(-16)+rax],xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        dec     r10d
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_key128
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[$L$key_rcon1b]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,0,197
>>>>>>> 
>>>>>>> +DB      102,15,56,221,196
>>>>>>> 
>>>>>>> +        pslld   xmm4,1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm2
>>>>>>> 
>>>>>>> +        pslldq  xmm2,4
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>> 
>>>>>>> +        pslldq  xmm2,4
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>> 
>>>>>>> +        pslldq  xmm2,4
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rax],xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +DB      102,15,56,0,197
>>>>>>> 
>>>>>>> +DB      102,15,56,221,196
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm2
>>>>>>> 
>>>>>>> +        pslldq  xmm2,4
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>> 
>>>>>>> +        pslldq  xmm2,4
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>> 
>>>>>>> +        pslldq  xmm2,4
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[16+rax],xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[96+rax],edx
>>>>>>> 
>>>>>>> +        xor     eax,eax
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$enc_key_ret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$12rounds:
>>>>>>> 
>>>>>>> +        movq    xmm2,QWORD[16+rcx]
>>>>>>> 
>>>>>>> +        mov     edx,11
>>>>>>> 
>>>>>>> +        cmp     r10d,268435456
>>>>>>> 
>>>>>>> +        je      NEAR $L$12rounds_alt
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movups  XMMWORD[r8],xmm0
>>>>>>> 
>>>>>>> +DB      102,15,58,223,202,1
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_192a_cold
>>>>>>> 
>>>>>>> +DB      102,15,58,223,202,2
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_192b
>>>>>>> 
>>>>>>> +DB      102,15,58,223,202,4
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_192a
>>>>>>> 
>>>>>>> +DB      102,15,58,223,202,8
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_192b
>>>>>>> 
>>>>>>> +DB      102,15,58,223,202,16
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_192a
>>>>>>> 
>>>>>>> +DB      102,15,58,223,202,32
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_192b
>>>>>>> 
>>>>>>> +DB      102,15,58,223,202,64
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_192a
>>>>>>> 
>>>>>>> +DB      102,15,58,223,202,128
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_192b
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rax],xmm0
>>>>>>> 
>>>>>>> +        mov     DWORD[48+rax],edx
>>>>>>> 
>>>>>>> +        xor     rax,rax
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$enc_key_ret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$12rounds_alt:
>>>>>>> 
>>>>>>> +        movdqa  xmm5,XMMWORD[$L$key_rotate192]
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
>>>>>>> 
>>>>>>> +        mov     r10d,8
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[r8],xmm0
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_key192
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$oop_key192:
>>>>>>> 
>>>>>>> +        movq    QWORD[rax],xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm2
>>>>>>> 
>>>>>>> +DB      102,15,56,0,213
>>>>>>> 
>>>>>>> +DB      102,15,56,221,212
>>>>>>> 
>>>>>>> +        pslld   xmm4,1
>>>>>>> 
>>>>>>> +        lea     rax,[24+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        pslldq  xmm0,4
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        pslldq  xmm0,4
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        pslldq  xmm0,4
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pshufd  xmm3,xmm0,0xff
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>> 
>>>>>>> +        pslldq  xmm1,4
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[(-16)+rax],xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        dec     r10d
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_key192
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[32+rax],edx
>>>>>>> 
>>>>>>> +        xor     eax,eax
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$enc_key_ret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$14rounds:
>>>>>>> 
>>>>>>> +        movups  xmm2,XMMWORD[16+rcx]
>>>>>>> 
>>>>>>> +        mov     edx,13
>>>>>>> 
>>>>>>> +        lea     rax,[16+rax]
>>>>>>> 
>>>>>>> +        cmp     r10d,268435456
>>>>>>> 
>>>>>>> +        je      NEAR $L$14rounds_alt
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_256b
>>>>>>> 
>>>>>>> +DB      102,15,58,223,202,2
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_256a
>>>>>>> 
>>>>>>> +DB      102,15,58,223,200,2
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_256b
>>>>>>> 
>>>>>>> +DB      102,15,58,223,202,4
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_256a
>>>>>>> 
>>>>>>> +DB      102,15,58,223,200,4
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_256b
>>>>>>> 
>>>>>>> +DB      102,15,58,223,202,8
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_256a
>>>>>>> 
>>>>>>> +DB      102,15,58,223,200,8
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_256b
>>>>>>> 
>>>>>>> +DB      102,15,58,223,202,16
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_256a
>>>>>>> 
>>>>>>> +DB      102,15,58,223,200,16
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_256b
>>>>>>> 
>>>>>>> +DB      102,15,58,223,202,32
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_256a
>>>>>>> 
>>>>>>> +DB      102,15,58,223,200,32
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_256b
>>>>>>> 
>>>>>>> +DB      102,15,58,223,202,64
>>>>>>> 
>>>>>>> +        call    $L$key_expansion_256a
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rax],xmm0
>>>>>>> 
>>>>>>> +        mov     DWORD[16+rax],edx
>>>>>>> 
>>>>>>> +        xor     rax,rax
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$enc_key_ret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$14rounds_alt:
>>>>>>> 
>>>>>>> +        movdqa  xmm5,XMMWORD[$L$key_rotate]
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[$L$key_rcon1]
>>>>>>> 
>>>>>>> +        mov     r10d,7
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[r8],xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[16+r8],xmm2
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_key256
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$oop_key256:
>>>>>>> 
>>>>>>> +DB      102,15,56,0,213
>>>>>>> 
>>>>>>> +DB      102,15,56,221,212
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        pslldq  xmm0,4
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        pslldq  xmm0,4
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        pslldq  xmm0,4
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        pslld   xmm4,1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rax],xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        dec     r10d
>>>>>>> 
>>>>>>> +        jz      NEAR $L$done_key256
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pshufd  xmm2,xmm0,0xff
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +DB      102,15,56,221,211
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm1
>>>>>>> 
>>>>>>> +        pslldq  xmm1,4
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>> 
>>>>>>> +        pslldq  xmm1,4
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>> 
>>>>>>> +        pslldq  xmm1,4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm1
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[16+rax],xmm2
>>>>>>> 
>>>>>>> +        lea     rax,[32+rax]
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_key256
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$done_key256:
>>>>>>> 
>>>>>>> +        mov     DWORD[16+rax],edx
>>>>>>> 
>>>>>>> +        xor     eax,eax
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$enc_key_ret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$bad_keybits:
>>>>>>> 
>>>>>>> +        mov     rax,-2
>>>>>>> 
>>>>>>> +$L$enc_key_ret:
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +        add     rsp,8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +$L$SEH_end_set_encrypt_key:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$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
>>>>>>> 
>>>>>>> +        xorps   xmm0,xmm4
>>>>>>> 
>>>>>>> +        shufps  xmm1,xmm1,255
>>>>>>> 
>>>>>>> +        xorps   xmm0,xmm1
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$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:
>>>>>>> 
>>>>>>> +        shufps  xmm4,xmm0,16
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm2
>>>>>>> 
>>>>>>> +        xorps   xmm0,xmm4
>>>>>>> 
>>>>>>> +        shufps  xmm4,xmm0,140
>>>>>>> 
>>>>>>> +        pslldq  xmm3,4
>>>>>>> 
>>>>>>> +        xorps   xmm0,xmm4
>>>>>>> 
>>>>>>> +        pshufd  xmm1,xmm1,85
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        pshufd  xmm3,xmm0,255
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$key_expansion_192b:
>>>>>>> 
>>>>>>> +        movaps  xmm3,xmm0
>>>>>>> 
>>>>>>> +        shufps  xmm5,xmm0,68
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rax],xmm5
>>>>>>> 
>>>>>>> +        shufps  xmm3,xmm2,78
>>>>>>> 
>>>>>>> +        movups  XMMWORD[16+rax],xmm3
>>>>>>> 
>>>>>>> +        lea     rax,[32+rax]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$key_expansion_192b_warm
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$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
>>>>>>> 
>>>>>>> +        xorps   xmm0,xmm4
>>>>>>> 
>>>>>>> +        shufps  xmm1,xmm1,255
>>>>>>> 
>>>>>>> +        xorps   xmm0,xmm1
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$key_expansion_256b:
>>>>>>> 
>>>>>>> +        movups  XMMWORD[rax],xmm0
>>>>>>> 
>>>>>>> +        lea     rax,[16+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        shufps  xmm4,xmm2,16
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm4
>>>>>>> 
>>>>>>> +        shufps  xmm4,xmm2,140
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm4
>>>>>>> 
>>>>>>> +        shufps  xmm1,xmm1,170
>>>>>>> 
>>>>>>> +        xorps   xmm2,xmm1
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   64
>>>>>>> 
>>>>>>> +$L$bswap_mask:
>>>>>>> 
>>>>>>> +DB      15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
>>>>>>> 
>>>>>>> +$L$increment32:
>>>>>>> 
>>>>>>> +        DD      6,6,6,0
>>>>>>> 
>>>>>>> +$L$increment64:
>>>>>>> 
>>>>>>> +        DD      1,0,0,0
>>>>>>> 
>>>>>>> +$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
>>>>>>> 
>>>>>>> +$L$key_rotate:
>>>>>>> 
>>>>>>> +        DD      0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
>>>>>>> 
>>>>>>> +$L$key_rotate192:
>>>>>>> 
>>>>>>> +        DD      0x04070605,0x04070605,0x04070605,0x04070605
>>>>>>> 
>>>>>>> +$L$key_rcon1:
>>>>>>> 
>>>>>>> +        DD      1,1,1,1
>>>>>>> 
>>>>>>> +$L$key_rcon1b:
>>>>>>> 
>>>>>>> +        DD      0x1b,0x1b,0x1b,0x1b
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
>>>>>>> 
>>>>>>> +DB      83,45,78,73,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   64
>>>>>>> 
>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +ecb_ccm64_se_handler:
>>>>>>> 
>>>>>>> +        push    rsi
>>>>>>> 
>>>>>>> +        push    rdi
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +        pushfq
>>>>>>> 
>>>>>>> +        sub     rsp,64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>> 
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsi,[rax]
>>>>>>> 
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>> 
>>>>>>> +        mov     ecx,8
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +        lea     rax,[88+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +ctr_xts_se_handler:
>>>>>>> 
>>>>>>> +        push    rsi
>>>>>>> 
>>>>>>> +        push    rdi
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +        pushfq
>>>>>>> 
>>>>>>> +        sub     rsp,64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>> 
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[208+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsi,[((-168))+rax]
>>>>>>> 
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>> 
>>>>>>> +        mov     ecx,20
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rbp,QWORD[((-8))+rax]
>>>>>>> 
>>>>>>> +        mov     QWORD[160+r8],rbp
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +ocb_se_handler:
>>>>>>> 
>>>>>>> +        push    rsi
>>>>>>> 
>>>>>>> +        push    rdi
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +        pushfq
>>>>>>> 
>>>>>>> +        sub     rsp,64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>> 
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[8+r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jae     NEAR $L$ocb_no_xmm
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsi,[rax]
>>>>>>> 
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>> 
>>>>>>> +        mov     ecx,20
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +        lea     rax,[((160+40))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$ocb_no_xmm:
>>>>>>> 
>>>>>>> +        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     NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +cbc_se_handler:
>>>>>>> 
>>>>>>> +        push    rsi
>>>>>>> 
>>>>>>> +        push    rdi
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +        pushfq
>>>>>>> 
>>>>>>> +        sub     rsp,64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r10,[$L$cbc_decrypt_bulk]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r10,[$L$cbc_decrypt_body]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r10,[$L$cbc_ret]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsi,[16+rax]
>>>>>>> 
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>> 
>>>>>>> +        mov     ecx,20
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[208+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rbp,QWORD[((-8))+rax]
>>>>>>> 
>>>>>>> +        mov     QWORD[160+r8],rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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[40+r9]
>>>>>>> 
>>>>>>> +        mov     rsi,r8
>>>>>>> 
>>>>>>> +        mov     ecx,154
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,r9
>>>>>>> 
>>>>>>> +        xor     rcx,rcx
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +        popfq
>>>>>>> 
>>>>>>> +        pop     r15
>>>>>>> 
>>>>>>> +        pop     r14
>>>>>>> 
>>>>>>> +        pop     r13
>>>>>>> 
>>>>>>> +        pop     r12
>>>>>>> 
>>>>>>> +        pop     rbp
>>>>>>> 
>>>>>>> +        pop     rbx
>>>>>>> 
>>>>>>> +        pop     rdi
>>>>>>> 
>>>>>>> +        pop     rsi
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +section .pdata rdata align=4
>>>>>>> 
>>>>>>> +ALIGN   4
>>>>>>> 
>>>>>>> +        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      $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      $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      $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      $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      $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_ocb_encrypt wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_end_aesni_ocb_encrypt wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_info_ocb_enc wrt ..imagebase
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        DD      $L$SEH_begin_aesni_ocb_decrypt wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_end_aesni_ocb_decrypt wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_info_ocb_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      aesni_set_decrypt_key wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_end_set_decrypt_key wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_info_key wrt ..imagebase
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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:
>>>>>>> 
>>>>>>> +DB      9,0,0,0
>>>>>>> 
>>>>>>> +        DD      ecb_ccm64_se_handler wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret
>>>>> wrt ..imagebase
>>>>>>> 
>>>>>>> +$L$SEH_info_ccm64_enc:
>>>>>>> 
>>>>>>> +DB      9,0,0,0
>>>>>>> 
>>>>>>> +        DD      ecb_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      ecb_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      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      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      ctr_xts_se_handler wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$xts_dec_body wrt
>> ..imagebase,$L$xts_dec_epilogue
>>>>>>> wrt ..imagebase
>>>>>>> 
>>>>>>> +$L$SEH_info_ocb_enc:
>>>>>>> 
>>>>>>> +DB      9,0,0,0
>>>>>>> 
>>>>>>> +        DD      ocb_se_handler wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$ocb_enc_body wrt
>> ..imagebase,$L$ocb_enc_epilogue
>>>>>>> wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$ocb_enc_pop wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      0
>>>>>>> 
>>>>>>> +$L$SEH_info_ocb_dec:
>>>>>>> 
>>>>>>> +DB      9,0,0,0
>>>>>>> 
>>>>>>> +        DD      ocb_se_handler wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$ocb_dec_body wrt
>> ..imagebase,$L$ocb_dec_epilogue
>>>>>>> wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$ocb_dec_pop wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      0
>>>>>>> 
>>>>>>> +$L$SEH_info_cbc:
>>>>>>> 
>>>>>>> +DB      9,0,0,0
>>>>>>> 
>>>>>>> +        DD      cbc_se_handler wrt ..imagebase
>>>>>>> 
>>>>>>> +$L$SEH_info_key:
>>>>>>> 
>>>>>>> +DB      0x01,0x04,0x01,0x00
>>>>>>> 
>>>>>>> +DB      0x04,0x02,0x00,0x00
>>>>>>> 
>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-
>>>>> x86_64.nasm
>>>>>>> b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..1c911fa294
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
>>>>>>> @@ -0,0 +1,1173 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>> 
>>>>>>> +; Generated from openssl/crypto/aes/asm/vpaes-x86_64.pl
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Copyright 2011-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not
>> use
>>>>>>> 
>>>>>>> +; this file except in compliance with the License.  You can obtain
>> a
>>>> copy
>>>>>>> 
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>> 
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +default rel
>>>>>>> 
>>>>>>> +%define XMMWORD
>>>>>>> 
>>>>>>> +%define YMMWORD
>>>>>>> 
>>>>>>> +%define ZMMWORD
>>>>>>> 
>>>>>>> +section .text code align=64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +_vpaes_encrypt_core:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r9,rdx
>>>>>>> 
>>>>>>> +        mov     r11,16
>>>>>>> 
>>>>>>> +        mov     eax,DWORD[240+rdx]
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[$L$k_ipt]
>>>>>>> 
>>>>>>> +        pandn   xmm1,xmm0
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[r9]
>>>>>>> 
>>>>>>> +        psrld   xmm1,4
>>>>>>> 
>>>>>>> +        pand    xmm0,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,0,208
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[(($L$k_ipt+16))]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,193
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm5
>>>>>>> 
>>>>>>> +        add     r9,16
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        lea     r10,[$L$k_mc_backward]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$enc_entry
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$enc_loop:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm12
>>>>>>> 
>>>>>>> +DB      102,15,56,0,226
>>>>>>> 
>>>>>>> +DB      102,15,56,0,195
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm15
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((-64))+r10*1+r11]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,234
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[r10*1+r11]
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>> 
>>>>>>> +DB      102,15,56,0,211
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm5
>>>>>>> 
>>>>>>> +DB      102,15,56,0,193
>>>>>>> 
>>>>>>> +        add     r9,16
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +DB      102,15,56,0,220
>>>>>>> 
>>>>>>> +        add     r11,16
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +DB      102,15,56,0,193
>>>>>>> 
>>>>>>> +        and     r11,0x30
>>>>>>> 
>>>>>>> +        sub     rax,1
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$enc_entry:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm11
>>>>>>> 
>>>>>>> +        pandn   xmm1,xmm0
>>>>>>> 
>>>>>>> +        psrld   xmm1,4
>>>>>>> 
>>>>>>> +        pand    xmm0,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,0,232
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +DB      102,15,56,0,217
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm5
>>>>>>> 
>>>>>>> +DB      102,15,56,0,224
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>> 
>>>>>>> +DB      102,15,56,0,211
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm0
>>>>>>> 
>>>>>>> +DB      102,15,56,0,220
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[r9]
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$enc_loop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[64+r10*1+r11]
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +DB      102,15,56,0,193
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +_vpaes_decrypt_core:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r9,rdx
>>>>>>> 
>>>>>>> +        mov     eax,DWORD[240+rdx]
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[$L$k_dipt]
>>>>>>> 
>>>>>>> +        pandn   xmm1,xmm0
>>>>>>> 
>>>>>>> +        mov     r11,rax
>>>>>>> 
>>>>>>> +        psrld   xmm1,4
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[r9]
>>>>>>> 
>>>>>>> +        shl     r11,4
>>>>>>> 
>>>>>>> +        pand    xmm0,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,0,208
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[(($L$k_dipt+16))]
>>>>>>> 
>>>>>>> +        xor     r11,0x30
>>>>>>> 
>>>>>>> +        lea     r10,[$L$k_dsbd]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,193
>>>>>>> 
>>>>>>> +        and     r11,0x30
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm5
>>>>>>> 
>>>>>>> +        movdqa  xmm5,XMMWORD[(($L$k_mc_forward+48))]
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        add     r9,16
>>>>>>> 
>>>>>>> +        add     r11,r10
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$dec_entry
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$dec_loop:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[r10]
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        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[32+r10]
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        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[64+r10]
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[80+r10]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,0,226
>>>>>>> 
>>>>>>> +DB      102,15,56,0,197
>>>>>>> 
>>>>>>> +DB      102,15,56,0,203
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        add     r9,16
>>>>>>> 
>>>>>>> +DB      102,15,58,15,237,12
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        sub     rax,1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$dec_entry:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>> 
>>>>>>> +        pandn   xmm1,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>> 
>>>>>>> +        psrld   xmm1,4
>>>>>>> 
>>>>>>> +        pand    xmm0,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,0,208
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +DB      102,15,56,0,217
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>> 
>>>>>>> +DB      102,15,56,0,224
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>> 
>>>>>>> +DB      102,15,56,0,211
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm0
>>>>>>> 
>>>>>>> +DB      102,15,56,0,220
>>>>>>> 
>>>>>>> +        movdqu  xmm0,XMMWORD[r9]
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$dec_loop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[96+r10]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,226
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +_vpaes_schedule_core:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    _vpaes_preheat
>>>>>>> 
>>>>>>> +        movdqa  xmm8,XMMWORD[$L$k_rcon]
>>>>>>> 
>>>>>>> +        movdqu  xmm0,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        lea     r11,[$L$k_ipt]
>>>>>>> 
>>>>>>> +        call    _vpaes_schedule_transform
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r10,[$L$k_sr]
>>>>>>> 
>>>>>>> +        test    rcx,rcx
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$schedule_am_decrypting
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rdx],xmm0
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$schedule_go
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$schedule_am_decrypting:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[r10*1+r8]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,217
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rdx],xmm3
>>>>>>> 
>>>>>>> +        xor     r8,0x30
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$schedule_go:
>>>>>>> 
>>>>>>> +        cmp     esi,192
>>>>>>> 
>>>>>>> +        ja      NEAR $L$schedule_256
>>>>>>> 
>>>>>>> +        je      NEAR $L$schedule_192
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$schedule_128:
>>>>>>> 
>>>>>>> +        mov     esi,10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$oop_schedule_128:
>>>>>>> 
>>>>>>> +        call    _vpaes_schedule_round
>>>>>>> 
>>>>>>> +        dec     rsi
>>>>>>> 
>>>>>>> +        jz      NEAR $L$schedule_mangle_last
>>>>>>> 
>>>>>>> +        call    _vpaes_schedule_mangle
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_schedule_128
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$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:
>>>>>>> 
>>>>>>> +        call    _vpaes_schedule_round
>>>>>>> 
>>>>>>> +DB      102,15,58,15,198,8
>>>>>>> 
>>>>>>> +        call    _vpaes_schedule_mangle
>>>>>>> 
>>>>>>> +        call    _vpaes_schedule_192_smear
>>>>>>> 
>>>>>>> +        call    _vpaes_schedule_mangle
>>>>>>> 
>>>>>>> +        call    _vpaes_schedule_round
>>>>>>> 
>>>>>>> +        dec     rsi
>>>>>>> 
>>>>>>> +        jz      NEAR $L$schedule_mangle_last
>>>>>>> 
>>>>>>> +        call    _vpaes_schedule_mangle
>>>>>>> 
>>>>>>> +        call    _vpaes_schedule_192_smear
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_schedule_192
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$schedule_256:
>>>>>>> 
>>>>>>> +        movdqu  xmm0,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +        call    _vpaes_schedule_transform
>>>>>>> 
>>>>>>> +        mov     esi,7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$oop_schedule_256:
>>>>>>> 
>>>>>>> +        call    _vpaes_schedule_mangle
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        call    _vpaes_schedule_round
>>>>>>> 
>>>>>>> +        dec     rsi
>>>>>>> 
>>>>>>> +        jz      NEAR $L$schedule_mangle_last
>>>>>>> 
>>>>>>> +        call    _vpaes_schedule_mangle
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,0xFF
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>> 
>>>>>>> +        call    _vpaes_schedule_low_round
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_schedule_256
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$schedule_mangle_last:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r11,[$L$k_deskew]
>>>>>>> 
>>>>>>> +        test    rcx,rcx
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$schedule_mangle_last_dec
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[r10*1+r8]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,193
>>>>>>> 
>>>>>>> +        lea     r11,[$L$k_opt]
>>>>>>> 
>>>>>>> +        add     rdx,32
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$schedule_mangle_last_dec:
>>>>>>> 
>>>>>>> +        add     rdx,-16
>>>>>>> 
>>>>>>> +        pxor    xmm0,XMMWORD[$L$k_s63]
>>>>>>> 
>>>>>>> +        call    _vpaes_schedule_transform
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rdx],xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm7
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +_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
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +_vpaes_schedule_round:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>> 
>>>>>>> +DB      102,65,15,58,15,200,15
>>>>>>> 
>>>>>>> +DB      102,69,15,58,15,192,15
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,0xFF
>>>>>>> 
>>>>>>> +DB      102,15,58,15,192,1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +_vpaes_schedule_low_round:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm7
>>>>>>> 
>>>>>>> +        pslldq  xmm7,4
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm7
>>>>>>> 
>>>>>>> +        pslldq  xmm7,8
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm7,XMMWORD[$L$k_s63]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>> 
>>>>>>> +        pandn   xmm1,xmm0
>>>>>>> 
>>>>>>> +        psrld   xmm1,4
>>>>>>> 
>>>>>>> +        pand    xmm0,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>> 
>>>>>>> +DB      102,15,56,0,208
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>> 
>>>>>>> +DB      102,15,56,0,217
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>> 
>>>>>>> +DB      102,15,56,0,224
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>> 
>>>>>>> +DB      102,15,56,0,211
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>> 
>>>>>>> +DB      102,15,56,0,220
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>> 
>>>>>>> +DB      102,15,56,0,226
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm12
>>>>>>> 
>>>>>>> +DB      102,15,56,0,195
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm0
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +_vpaes_schedule_transform:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>> 
>>>>>>> +        pandn   xmm1,xmm0
>>>>>>> 
>>>>>>> +        psrld   xmm1,4
>>>>>>> 
>>>>>>> +        pand    xmm0,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[r11]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,208
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[16+r11]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,193
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +_vpaes_schedule_mangle:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm5,XMMWORD[$L$k_mc_forward]
>>>>>>> 
>>>>>>> +        test    rcx,rcx
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$schedule_mangle_dec
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     rdx,16
>>>>>>> 
>>>>>>> +        pxor    xmm4,XMMWORD[$L$k_s63]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,229
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm4
>>>>>>> 
>>>>>>> +DB      102,15,56,0,229
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm4
>>>>>>> 
>>>>>>> +DB      102,15,56,0,229
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$schedule_mangle_both
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$schedule_mangle_dec:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r11,[$L$k_dksd]
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>> 
>>>>>>> +        pandn   xmm1,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm1,4
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[r11]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,212
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[16+r11]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,217
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>> 
>>>>>>> +DB      102,15,56,0,221
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[32+r11]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,212
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[48+r11]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,217
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>> 
>>>>>>> +DB      102,15,56,0,221
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[64+r11]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,212
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[80+r11]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,217
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>> 
>>>>>>> +DB      102,15,56,0,221
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[96+r11]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,212
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[112+r11]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,217
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     rdx,-16
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$schedule_mangle_both:
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[r10*1+r8]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,217
>>>>>>> 
>>>>>>> +        add     r8,-16
>>>>>>> 
>>>>>>> +        and     r8,0x30
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rdx],xmm3
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  vpaes_set_encrypt_key
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +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:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[240+rdx],eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     ecx,0
>>>>>>> 
>>>>>>> +        mov     r8d,0x30
>>>>>>> 
>>>>>>> +        call    _vpaes_schedule_core
>>>>>>> 
>>>>>>> +        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[8+rsp]        ;WIN64 epilogue
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$SEH_end_vpaes_set_encrypt_key:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  vpaes_set_decrypt_key
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +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:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[240+rdx],eax
>>>>>>> 
>>>>>>> +        shl     eax,4
>>>>>>> 
>>>>>>> +        lea     rdx,[16+rax*1+rdx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     ecx,1
>>>>>>> 
>>>>>>> +        mov     r8d,esi
>>>>>>> 
>>>>>>> +        shr     r8d,1
>>>>>>> 
>>>>>>> +        and     r8d,32
>>>>>>> 
>>>>>>> +        xor     r8d,32
>>>>>>> 
>>>>>>> +        call    _vpaes_schedule_core
>>>>>>> 
>>>>>>> +        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[8+rsp]        ;WIN64 epilogue
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$SEH_end_vpaes_set_decrypt_key:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  vpaes_encrypt
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +vpaes_encrypt:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_vpaes_encrypt:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[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:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  vpaes_decrypt
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +vpaes_decrypt:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_vpaes_decrypt:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[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:
>>>>>>> 
>>>>>>> +global  vpaes_cbc_encrypt
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +vpaes_cbc_encrypt:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_vpaes_cbc_encrypt:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +        mov     rcx,r9
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[40+rsp]
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[48+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xchg    rdx,rcx
>>>>>>> 
>>>>>>> +        sub     rcx,16
>>>>>>> 
>>>>>>> +        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      NEAR $L$cbc_dec_loop
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$cbc_enc_loop
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$cbc_enc_loop:
>>>>>>> 
>>>>>>> +        movdqu  xmm0,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm6
>>>>>>> 
>>>>>>> +        call    _vpaes_encrypt_core
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm0
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rdi*1+rsi],xmm0
>>>>>>> 
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>> 
>>>>>>> +        sub     rcx,16
>>>>>>> 
>>>>>>> +        jnc     NEAR $L$cbc_enc_loop
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$cbc_done
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$cbc_dec_loop:
>>>>>>> 
>>>>>>> +        movdqu  xmm0,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm0
>>>>>>> 
>>>>>>> +        call    _vpaes_decrypt_core
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm6
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rdi*1+rsi],xmm0
>>>>>>> 
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>> 
>>>>>>> +        sub     rcx,16
>>>>>>> 
>>>>>>> +        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:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +_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
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   64
>>>>>>> 
>>>>>>> +_vpaes_consts:
>>>>>>> 
>>>>>>> +$L$k_inv:
>>>>>>> 
>>>>>>> +        DQ      0x0E05060F0D080180,0x040703090A0B0C02
>>>>>>> 
>>>>>>> +        DQ      0x01040A060F0B0780,0x030D0E0C02050809
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$k_s0F:
>>>>>>> 
>>>>>>> +        DQ      0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$k_ipt:
>>>>>>> 
>>>>>>> +        DQ      0xC2B2E8985A2A7000,0xCABAE09052227808
>>>>>>> 
>>>>>>> +        DQ      0x4C01307D317C4D00,0xCD80B1FCB0FDCC81
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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      0x0407060500030201,0x0C0F0E0D080B0A09
>>>>>>> 
>>>>>>> +        DQ      0x080B0A0904070605,0x000302010C0F0E0D
>>>>>>> 
>>>>>>> +        DQ      0x0C0F0E0D080B0A09,0x0407060500030201
>>>>>>> 
>>>>>>> +        DQ      0x000302010C0F0E0D,0x080B0A0904070605
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$k_mc_backward:
>>>>>>> 
>>>>>>> +        DQ      0x0605040702010003,0x0E0D0C0F0A09080B
>>>>>>> 
>>>>>>> +        DQ      0x020100030E0D0C0F,0x0A09080B06050407
>>>>>>> 
>>>>>>> +        DQ      0x0E0D0C0F0A09080B,0x0605040702010003
>>>>>>> 
>>>>>>> +        DQ      0x0A09080B06050407,0x020100030E0D0C0F
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$k_sr:
>>>>>>> 
>>>>>>> +        DQ      0x0706050403020100,0x0F0E0D0C0B0A0908
>>>>>>> 
>>>>>>> +        DQ      0x030E09040F0A0500,0x0B06010C07020D08
>>>>>>> 
>>>>>>> +        DQ      0x0F060D040B020900,0x070E050C030A0108
>>>>>>> 
>>>>>>> +        DQ      0x0B0E0104070A0D00,0x0306090C0F020508
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$k_rcon:
>>>>>>> 
>>>>>>> +        DQ      0x1F8391B9AF9DEEB6,0x702A98084D7C7D81
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$k_s63:
>>>>>>> 
>>>>>>> +        DQ      0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$k_opt:
>>>>>>> 
>>>>>>> +        DQ      0xFF9F4929D6B66000,0xF7974121DEBE6808
>>>>>>> 
>>>>>>> +        DQ      0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$k_deskew:
>>>>>>> 
>>>>>>> +        DQ      0x07E4A34047A4E300,0x1DFEB95A5DBEF91A
>>>>>>> 
>>>>>>> +        DQ      0x5F36B5DC83EA6900,0x2841C2ABF49D1E77
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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      0x0F505B040B545F00,0x154A411E114E451A
>>>>>>> 
>>>>>>> +        DQ      0x86E383E660056500,0x12771772F491F194
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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
>>>>>>> 
>>>>>>> +DB      109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32
>>>>>>> 
>>>>>>> +DB      85,110,105,118,101,114,115,105,116,121,41,0
>>>>>>> 
>>>>>>> +ALIGN   64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +se_handler:
>>>>>>> 
>>>>>>> +        push    rsi
>>>>>>> 
>>>>>>> +        push    rdi
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +        pushfq
>>>>>>> 
>>>>>>> +        sub     rsp,64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>> 
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsi,[16+rax]
>>>>>>> 
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>> 
>>>>>>> +        mov     ecx,20
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +        lea     rax,[184+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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[40+r9]
>>>>>>> 
>>>>>>> +        mov     rsi,r8
>>>>>>> 
>>>>>>> +        mov     ecx,154
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,r9
>>>>>>> 
>>>>>>> +        xor     rcx,rcx
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +        popfq
>>>>>>> 
>>>>>>> +        pop     r15
>>>>>>> 
>>>>>>> +        pop     r14
>>>>>>> 
>>>>>>> +        pop     r13
>>>>>>> 
>>>>>>> +        pop     r12
>>>>>>> 
>>>>>>> +        pop     rbp
>>>>>>> 
>>>>>>> +        pop     rbx
>>>>>>> 
>>>>>>> +        pop     rdi
>>>>>>> 
>>>>>>> +        pop     rsi
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +section .pdata rdata align=4
>>>>>>> 
>>>>>>> +ALIGN   4
>>>>>>> 
>>>>>>> +        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      $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      $L$SEH_begin_vpaes_encrypt wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_end_vpaes_encrypt wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_info_vpaes_encrypt wrt ..imagebase
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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      $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
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +section .xdata rdata align=8
>>>>>>> 
>>>>>>> +ALIGN   8
>>>>>>> 
>>>>>>> +$L$SEH_info_vpaes_set_encrypt_key:
>>>>>>> 
>>>>>>> +DB      9,0,0,0
>>>>>>> 
>>>>>>> +        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      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      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      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      se_handler wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt
>>>> ..imagebase
>>>>>>> 
>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
>>>>>>> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
>>>>>>> x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..60f283d5fb
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
>> x86_64.nasm
>>>>>>> @@ -0,0 +1,1569 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>> 
>>>>>>> +; Generated from openssl/crypto/modes/asm/ghash-x86_64.pl
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Copyright 2010-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not
>> use
>>>>>>> 
>>>>>>> +; this file except in compliance with the License.  You can obtain
>> a
>>>> copy
>>>>>>> 
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>> 
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +default rel
>>>>>>> 
>>>>>>> +%define XMMWORD
>>>>>>> 
>>>>>>> +%define YMMWORD
>>>>>>> 
>>>>>>> +%define ZMMWORD
>>>>>>> 
>>>>>>> +section .text code align=64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  gcm_gmult_4bit
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +gcm_gmult_4bit:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_gcm_gmult_4bit:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     rsp,280
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$gmult_prologue:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[8+rax*1+rsi]
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[rax*1+rsi]
>>>>>>> 
>>>>>>> +        and     bl,0xf0
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$oop1:
>>>>>>> 
>>>>>>> +        shr     r8,4
>>>>>>> 
>>>>>>> +        and     rdx,0xf
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        mov     al,BYTE[rcx*1+rdi]
>>>>>>> 
>>>>>>> +        shr     r9,4
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[8+rbx*1+rsi]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rbx*1+rsi]
>>>>>>> 
>>>>>>> +        mov     bl,al
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rdx*8+r11]
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +        shl     al,4
>>>>>>> 
>>>>>>> +        xor     r8,r10
>>>>>>> 
>>>>>>> +        dec     rcx
>>>>>>> 
>>>>>>> +        js      NEAR $L$break1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        shr     r8,4
>>>>>>> 
>>>>>>> +        and     rdx,0xf
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        shr     r9,4
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>> 
>>>>>>> +        and     bl,0xf0
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rdx*8+r11]
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +        xor     r8,r10
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$break1:
>>>>>>> 
>>>>>>> +        shr     r8,4
>>>>>>> 
>>>>>>> +        and     rdx,0xf
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        shr     r9,4
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        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,0xf
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        shr     r9,4
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[8+rbx*1+rsi]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rbx*1+rsi]
>>>>>>> 
>>>>>>> +        xor     r8,r10
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rdx*8+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        bswap   r8
>>>>>>> 
>>>>>>> +        bswap   r9
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rdi],r8
>>>>>>> 
>>>>>>> +        mov     QWORD[rdi],r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsi,[((280+48))+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[((-8))+rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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:
>>>>>>> 
>>>>>>> +global  gcm_ghash_4bit
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +gcm_ghash_4bit:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_gcm_ghash_4bit:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +        mov     rcx,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     rsp,280
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$ghash_prologue:
>>>>>>> 
>>>>>>> +        mov     r14,rdx
>>>>>>> 
>>>>>>> +        mov     r15,rcx
>>>>>>> 
>>>>>>> +        sub     rsi,-128
>>>>>>> 
>>>>>>> +        lea     rbp,[((16+128))+rsp]
>>>>>>> 
>>>>>>> +        xor     edx,edx
>>>>>>> 
>>>>>>> +        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[((16+0-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     dl,4
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[((16+8-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        mov     BYTE[rsp],dl
>>>>>>> 
>>>>>>> +        or      rax,r10
>>>>>>> 
>>>>>>> +        mov     dl,bl
>>>>>>> 
>>>>>>> +        shr     rbx,4
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        shr     r9,4
>>>>>>> 
>>>>>>> +        mov     QWORD[rbp],r8
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[((32+0-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     dl,4
>>>>>>> 
>>>>>>> +        mov     QWORD[((0-128))+rbp],rax
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[((32+8-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        mov     BYTE[1+rsp],dl
>>>>>>> 
>>>>>>> +        or      rbx,r10
>>>>>>> 
>>>>>>> +        mov     dl,al
>>>>>>> 
>>>>>>> +        shr     rax,4
>>>>>>> 
>>>>>>> +        mov     r10,r8
>>>>>>> 
>>>>>>> +        shr     r8,4
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rbp],r9
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[((48+0-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     dl,4
>>>>>>> 
>>>>>>> +        mov     QWORD[((8-128))+rbp],rbx
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[((48+8-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        mov     BYTE[2+rsp],dl
>>>>>>> 
>>>>>>> +        or      rax,r10
>>>>>>> 
>>>>>>> +        mov     dl,bl
>>>>>>> 
>>>>>>> +        shr     rbx,4
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        shr     r9,4
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rbp],r8
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[((64+0-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     dl,4
>>>>>>> 
>>>>>>> +        mov     QWORD[((16-128))+rbp],rax
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[((64+8-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        mov     BYTE[3+rsp],dl
>>>>>>> 
>>>>>>> +        or      rbx,r10
>>>>>>> 
>>>>>>> +        mov     dl,al
>>>>>>> 
>>>>>>> +        shr     rax,4
>>>>>>> 
>>>>>>> +        mov     r10,r8
>>>>>>> 
>>>>>>> +        shr     r8,4
>>>>>>> 
>>>>>>> +        mov     QWORD[24+rbp],r9
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[((80+0-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     dl,4
>>>>>>> 
>>>>>>> +        mov     QWORD[((24-128))+rbp],rbx
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[((80+8-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        mov     BYTE[4+rsp],dl
>>>>>>> 
>>>>>>> +        or      rax,r10
>>>>>>> 
>>>>>>> +        mov     dl,bl
>>>>>>> 
>>>>>>> +        shr     rbx,4
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        shr     r9,4
>>>>>>> 
>>>>>>> +        mov     QWORD[32+rbp],r8
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[((96+0-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     dl,4
>>>>>>> 
>>>>>>> +        mov     QWORD[((32-128))+rbp],rax
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[((96+8-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        mov     BYTE[5+rsp],dl
>>>>>>> 
>>>>>>> +        or      rbx,r10
>>>>>>> 
>>>>>>> +        mov     dl,al
>>>>>>> 
>>>>>>> +        shr     rax,4
>>>>>>> 
>>>>>>> +        mov     r10,r8
>>>>>>> 
>>>>>>> +        shr     r8,4
>>>>>>> 
>>>>>>> +        mov     QWORD[40+rbp],r9
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[((112+0-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     dl,4
>>>>>>> 
>>>>>>> +        mov     QWORD[((40-128))+rbp],rbx
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[((112+8-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        mov     BYTE[6+rsp],dl
>>>>>>> 
>>>>>>> +        or      rax,r10
>>>>>>> 
>>>>>>> +        mov     dl,bl
>>>>>>> 
>>>>>>> +        shr     rbx,4
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        shr     r9,4
>>>>>>> 
>>>>>>> +        mov     QWORD[48+rbp],r8
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[((128+0-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     dl,4
>>>>>>> 
>>>>>>> +        mov     QWORD[((48-128))+rbp],rax
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[((128+8-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        mov     BYTE[7+rsp],dl
>>>>>>> 
>>>>>>> +        or      rbx,r10
>>>>>>> 
>>>>>>> +        mov     dl,al
>>>>>>> 
>>>>>>> +        shr     rax,4
>>>>>>> 
>>>>>>> +        mov     r10,r8
>>>>>>> 
>>>>>>> +        shr     r8,4
>>>>>>> 
>>>>>>> +        mov     QWORD[56+rbp],r9
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[((144+0-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     dl,4
>>>>>>> 
>>>>>>> +        mov     QWORD[((56-128))+rbp],rbx
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[((144+8-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        mov     BYTE[8+rsp],dl
>>>>>>> 
>>>>>>> +        or      rax,r10
>>>>>>> 
>>>>>>> +        mov     dl,bl
>>>>>>> 
>>>>>>> +        shr     rbx,4
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        shr     r9,4
>>>>>>> 
>>>>>>> +        mov     QWORD[64+rbp],r8
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[((160+0-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     dl,4
>>>>>>> 
>>>>>>> +        mov     QWORD[((64-128))+rbp],rax
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[((160+8-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        mov     BYTE[9+rsp],dl
>>>>>>> 
>>>>>>> +        or      rbx,r10
>>>>>>> 
>>>>>>> +        mov     dl,al
>>>>>>> 
>>>>>>> +        shr     rax,4
>>>>>>> 
>>>>>>> +        mov     r10,r8
>>>>>>> 
>>>>>>> +        shr     r8,4
>>>>>>> 
>>>>>>> +        mov     QWORD[72+rbp],r9
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[((176+0-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     dl,4
>>>>>>> 
>>>>>>> +        mov     QWORD[((72-128))+rbp],rbx
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[((176+8-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        mov     BYTE[10+rsp],dl
>>>>>>> 
>>>>>>> +        or      rax,r10
>>>>>>> 
>>>>>>> +        mov     dl,bl
>>>>>>> 
>>>>>>> +        shr     rbx,4
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        shr     r9,4
>>>>>>> 
>>>>>>> +        mov     QWORD[80+rbp],r8
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[((192+0-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     dl,4
>>>>>>> 
>>>>>>> +        mov     QWORD[((80-128))+rbp],rax
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[((192+8-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        mov     BYTE[11+rsp],dl
>>>>>>> 
>>>>>>> +        or      rbx,r10
>>>>>>> 
>>>>>>> +        mov     dl,al
>>>>>>> 
>>>>>>> +        shr     rax,4
>>>>>>> 
>>>>>>> +        mov     r10,r8
>>>>>>> 
>>>>>>> +        shr     r8,4
>>>>>>> 
>>>>>>> +        mov     QWORD[88+rbp],r9
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[((208+0-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     dl,4
>>>>>>> 
>>>>>>> +        mov     QWORD[((88-128))+rbp],rbx
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[((208+8-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        mov     BYTE[12+rsp],dl
>>>>>>> 
>>>>>>> +        or      rax,r10
>>>>>>> 
>>>>>>> +        mov     dl,bl
>>>>>>> 
>>>>>>> +        shr     rbx,4
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        shr     r9,4
>>>>>>> 
>>>>>>> +        mov     QWORD[96+rbp],r8
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[((224+0-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     dl,4
>>>>>>> 
>>>>>>> +        mov     QWORD[((96-128))+rbp],rax
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[((224+8-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        mov     BYTE[13+rsp],dl
>>>>>>> 
>>>>>>> +        or      rbx,r10
>>>>>>> 
>>>>>>> +        mov     dl,al
>>>>>>> 
>>>>>>> +        shr     rax,4
>>>>>>> 
>>>>>>> +        mov     r10,r8
>>>>>>> 
>>>>>>> +        shr     r8,4
>>>>>>> 
>>>>>>> +        mov     QWORD[104+rbp],r9
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[((240+0-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     dl,4
>>>>>>> 
>>>>>>> +        mov     QWORD[((104-128))+rbp],rbx
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[((240+8-128))+rsi]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        mov     BYTE[14+rsp],dl
>>>>>>> 
>>>>>>> +        or      rax,r10
>>>>>>> 
>>>>>>> +        mov     dl,bl
>>>>>>> 
>>>>>>> +        shr     rbx,4
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        shr     r9,4
>>>>>>> 
>>>>>>> +        mov     QWORD[112+rbp],r8
>>>>>>> 
>>>>>>> +        shl     dl,4
>>>>>>> 
>>>>>>> +        mov     QWORD[((112-128))+rbp],rax
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        mov     BYTE[15+rsp],dl
>>>>>>> 
>>>>>>> +        or      rbx,r10
>>>>>>> 
>>>>>>> +        mov     QWORD[120+rbp],r9
>>>>>>> 
>>>>>>> +        mov     QWORD[((120-128))+rbp],rbx
>>>>>>> 
>>>>>>> +        add     rsi,-128
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[8+rdi]
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[rdi]
>>>>>>> 
>>>>>>> +        add     r15,r14
>>>>>>> 
>>>>>>> +        lea     r11,[$L$rem_8bit]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$outer_loop
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$outer_loop:
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[r14]
>>>>>>> 
>>>>>>> +        mov     rdx,QWORD[8+r14]
>>>>>>> 
>>>>>>> +        lea     r14,[16+r14]
>>>>>>> 
>>>>>>> +        xor     rdx,r8
>>>>>>> 
>>>>>>> +        mov     QWORD[rdi],r9
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rdi],rdx
>>>>>>> 
>>>>>>> +        shr     rdx,32
>>>>>>> 
>>>>>>> +        xor     rax,rax
>>>>>>> 
>>>>>>> +        rol     edx,8
>>>>>>> 
>>>>>>> +        mov     al,dl
>>>>>>> 
>>>>>>> +        movzx   ebx,dl
>>>>>>> 
>>>>>>> +        shl     al,4
>>>>>>> 
>>>>>>> +        shr     ebx,4
>>>>>>> 
>>>>>>> +        rol     edx,8
>>>>>>> 
>>>>>>> +        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[rbx*1+rsp]
>>>>>>> 
>>>>>>> +        shr     ecx,4
>>>>>>> 
>>>>>>> +        xor     r12,r8
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        shr     r8,8
>>>>>>> 
>>>>>>> +        movzx   r12,r12b
>>>>>>> 
>>>>>>> +        shr     r9,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>> 
>>>>>>> +        shl     r10,56
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>> 
>>>>>>> +        rol     edx,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>> 
>>>>>>> +        mov     al,dl
>>>>>>> 
>>>>>>> +        xor     r8,r10
>>>>>>> 
>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>> 
>>>>>>> +        movzx   ebx,dl
>>>>>>> 
>>>>>>> +        shl     al,4
>>>>>>> 
>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>> 
>>>>>>> +        shr     ebx,4
>>>>>>> 
>>>>>>> +        shl     r12,48
>>>>>>> 
>>>>>>> +        xor     r13,r8
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        xor     r9,r12
>>>>>>> 
>>>>>>> +        shr     r8,8
>>>>>>> 
>>>>>>> +        movzx   r13,r13b
>>>>>>> 
>>>>>>> +        shr     r9,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>> 
>>>>>>> +        shl     r10,56
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>> 
>>>>>>> +        rol     edx,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>> 
>>>>>>> +        mov     al,dl
>>>>>>> 
>>>>>>> +        xor     r8,r10
>>>>>>> 
>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>> 
>>>>>>> +        movzx   ecx,dl
>>>>>>> 
>>>>>>> +        shl     al,4
>>>>>>> 
>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>> 
>>>>>>> +        shr     ecx,4
>>>>>>> 
>>>>>>> +        shl     r13,48
>>>>>>> 
>>>>>>> +        xor     r12,r8
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        xor     r9,r13
>>>>>>> 
>>>>>>> +        shr     r8,8
>>>>>>> 
>>>>>>> +        movzx   r12,r12b
>>>>>>> 
>>>>>>> +        mov     edx,DWORD[8+rdi]
>>>>>>> 
>>>>>>> +        shr     r9,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>> 
>>>>>>> +        shl     r10,56
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>> 
>>>>>>> +        rol     edx,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>> 
>>>>>>> +        mov     al,dl
>>>>>>> 
>>>>>>> +        xor     r8,r10
>>>>>>> 
>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>> 
>>>>>>> +        movzx   ebx,dl
>>>>>>> 
>>>>>>> +        shl     al,4
>>>>>>> 
>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>> 
>>>>>>> +        shr     ebx,4
>>>>>>> 
>>>>>>> +        shl     r12,48
>>>>>>> 
>>>>>>> +        xor     r13,r8
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        xor     r9,r12
>>>>>>> 
>>>>>>> +        shr     r8,8
>>>>>>> 
>>>>>>> +        movzx   r13,r13b
>>>>>>> 
>>>>>>> +        shr     r9,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>> 
>>>>>>> +        shl     r10,56
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>> 
>>>>>>> +        rol     edx,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>> 
>>>>>>> +        mov     al,dl
>>>>>>> 
>>>>>>> +        xor     r8,r10
>>>>>>> 
>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>> 
>>>>>>> +        movzx   ecx,dl
>>>>>>> 
>>>>>>> +        shl     al,4
>>>>>>> 
>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>> 
>>>>>>> +        shr     ecx,4
>>>>>>> 
>>>>>>> +        shl     r13,48
>>>>>>> 
>>>>>>> +        xor     r12,r8
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        xor     r9,r13
>>>>>>> 
>>>>>>> +        shr     r8,8
>>>>>>> 
>>>>>>> +        movzx   r12,r12b
>>>>>>> 
>>>>>>> +        shr     r9,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>> 
>>>>>>> +        shl     r10,56
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>> 
>>>>>>> +        rol     edx,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>> 
>>>>>>> +        mov     al,dl
>>>>>>> 
>>>>>>> +        xor     r8,r10
>>>>>>> 
>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>> 
>>>>>>> +        movzx   ebx,dl
>>>>>>> 
>>>>>>> +        shl     al,4
>>>>>>> 
>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>> 
>>>>>>> +        shr     ebx,4
>>>>>>> 
>>>>>>> +        shl     r12,48
>>>>>>> 
>>>>>>> +        xor     r13,r8
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        xor     r9,r12
>>>>>>> 
>>>>>>> +        shr     r8,8
>>>>>>> 
>>>>>>> +        movzx   r13,r13b
>>>>>>> 
>>>>>>> +        shr     r9,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>> 
>>>>>>> +        shl     r10,56
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>> 
>>>>>>> +        rol     edx,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>> 
>>>>>>> +        mov     al,dl
>>>>>>> 
>>>>>>> +        xor     r8,r10
>>>>>>> 
>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>> 
>>>>>>> +        movzx   ecx,dl
>>>>>>> 
>>>>>>> +        shl     al,4
>>>>>>> 
>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>> 
>>>>>>> +        shr     ecx,4
>>>>>>> 
>>>>>>> +        shl     r13,48
>>>>>>> 
>>>>>>> +        xor     r12,r8
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        xor     r9,r13
>>>>>>> 
>>>>>>> +        shr     r8,8
>>>>>>> 
>>>>>>> +        movzx   r12,r12b
>>>>>>> 
>>>>>>> +        mov     edx,DWORD[4+rdi]
>>>>>>> 
>>>>>>> +        shr     r9,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>> 
>>>>>>> +        shl     r10,56
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>> 
>>>>>>> +        rol     edx,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>> 
>>>>>>> +        mov     al,dl
>>>>>>> 
>>>>>>> +        xor     r8,r10
>>>>>>> 
>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>> 
>>>>>>> +        movzx   ebx,dl
>>>>>>> 
>>>>>>> +        shl     al,4
>>>>>>> 
>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>> 
>>>>>>> +        shr     ebx,4
>>>>>>> 
>>>>>>> +        shl     r12,48
>>>>>>> 
>>>>>>> +        xor     r13,r8
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        xor     r9,r12
>>>>>>> 
>>>>>>> +        shr     r8,8
>>>>>>> 
>>>>>>> +        movzx   r13,r13b
>>>>>>> 
>>>>>>> +        shr     r9,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>> 
>>>>>>> +        shl     r10,56
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>> 
>>>>>>> +        rol     edx,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>> 
>>>>>>> +        mov     al,dl
>>>>>>> 
>>>>>>> +        xor     r8,r10
>>>>>>> 
>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>> 
>>>>>>> +        movzx   ecx,dl
>>>>>>> 
>>>>>>> +        shl     al,4
>>>>>>> 
>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>> 
>>>>>>> +        shr     ecx,4
>>>>>>> 
>>>>>>> +        shl     r13,48
>>>>>>> 
>>>>>>> +        xor     r12,r8
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        xor     r9,r13
>>>>>>> 
>>>>>>> +        shr     r8,8
>>>>>>> 
>>>>>>> +        movzx   r12,r12b
>>>>>>> 
>>>>>>> +        shr     r9,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>> 
>>>>>>> +        shl     r10,56
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>> 
>>>>>>> +        rol     edx,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>> 
>>>>>>> +        mov     al,dl
>>>>>>> 
>>>>>>> +        xor     r8,r10
>>>>>>> 
>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>> 
>>>>>>> +        movzx   ebx,dl
>>>>>>> 
>>>>>>> +        shl     al,4
>>>>>>> 
>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>> 
>>>>>>> +        shr     ebx,4
>>>>>>> 
>>>>>>> +        shl     r12,48
>>>>>>> 
>>>>>>> +        xor     r13,r8
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        xor     r9,r12
>>>>>>> 
>>>>>>> +        shr     r8,8
>>>>>>> 
>>>>>>> +        movzx   r13,r13b
>>>>>>> 
>>>>>>> +        shr     r9,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>> 
>>>>>>> +        shl     r10,56
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>> 
>>>>>>> +        rol     edx,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>> 
>>>>>>> +        mov     al,dl
>>>>>>> 
>>>>>>> +        xor     r8,r10
>>>>>>> 
>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>> 
>>>>>>> +        movzx   ecx,dl
>>>>>>> 
>>>>>>> +        shl     al,4
>>>>>>> 
>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>> 
>>>>>>> +        shr     ecx,4
>>>>>>> 
>>>>>>> +        shl     r13,48
>>>>>>> 
>>>>>>> +        xor     r12,r8
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        xor     r9,r13
>>>>>>> 
>>>>>>> +        shr     r8,8
>>>>>>> 
>>>>>>> +        movzx   r12,r12b
>>>>>>> 
>>>>>>> +        mov     edx,DWORD[rdi]
>>>>>>> 
>>>>>>> +        shr     r9,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>> 
>>>>>>> +        shl     r10,56
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>> 
>>>>>>> +        rol     edx,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>> 
>>>>>>> +        mov     al,dl
>>>>>>> 
>>>>>>> +        xor     r8,r10
>>>>>>> 
>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>> 
>>>>>>> +        movzx   ebx,dl
>>>>>>> 
>>>>>>> +        shl     al,4
>>>>>>> 
>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>> 
>>>>>>> +        shr     ebx,4
>>>>>>> 
>>>>>>> +        shl     r12,48
>>>>>>> 
>>>>>>> +        xor     r13,r8
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        xor     r9,r12
>>>>>>> 
>>>>>>> +        shr     r8,8
>>>>>>> 
>>>>>>> +        movzx   r13,r13b
>>>>>>> 
>>>>>>> +        shr     r9,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>> 
>>>>>>> +        shl     r10,56
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>> 
>>>>>>> +        rol     edx,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>> 
>>>>>>> +        mov     al,dl
>>>>>>> 
>>>>>>> +        xor     r8,r10
>>>>>>> 
>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>> 
>>>>>>> +        movzx   ecx,dl
>>>>>>> 
>>>>>>> +        shl     al,4
>>>>>>> 
>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>> 
>>>>>>> +        shr     ecx,4
>>>>>>> 
>>>>>>> +        shl     r13,48
>>>>>>> 
>>>>>>> +        xor     r12,r8
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        xor     r9,r13
>>>>>>> 
>>>>>>> +        shr     r8,8
>>>>>>> 
>>>>>>> +        movzx   r12,r12b
>>>>>>> 
>>>>>>> +        shr     r9,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>> 
>>>>>>> +        shl     r10,56
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rbx*8+rbp]
>>>>>>> 
>>>>>>> +        rol     edx,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>> 
>>>>>>> +        mov     al,dl
>>>>>>> 
>>>>>>> +        xor     r8,r10
>>>>>>> 
>>>>>>> +        movzx   r12,WORD[r12*2+r11]
>>>>>>> 
>>>>>>> +        movzx   ebx,dl
>>>>>>> 
>>>>>>> +        shl     al,4
>>>>>>> 
>>>>>>> +        movzx   r13,BYTE[rcx*1+rsp]
>>>>>>> 
>>>>>>> +        shr     ebx,4
>>>>>>> 
>>>>>>> +        shl     r12,48
>>>>>>> 
>>>>>>> +        xor     r13,r8
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        xor     r9,r12
>>>>>>> 
>>>>>>> +        shr     r8,8
>>>>>>> 
>>>>>>> +        movzx   r13,r13b
>>>>>>> 
>>>>>>> +        shr     r9,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[((-128))+rcx*8+rbp]
>>>>>>> 
>>>>>>> +        shl     r10,56
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rcx*8+rbp]
>>>>>>> 
>>>>>>> +        rol     edx,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[8+rax*1+rsi]
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rax*1+rsi]
>>>>>>> 
>>>>>>> +        mov     al,dl
>>>>>>> 
>>>>>>> +        xor     r8,r10
>>>>>>> 
>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>> 
>>>>>>> +        movzx   ecx,dl
>>>>>>> 
>>>>>>> +        shl     al,4
>>>>>>> 
>>>>>>> +        movzx   r12,BYTE[rbx*1+rsp]
>>>>>>> 
>>>>>>> +        and     ecx,240
>>>>>>> 
>>>>>>> +        shl     r13,48
>>>>>>> 
>>>>>>> +        xor     r12,r8
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        xor     r9,r13
>>>>>>> 
>>>>>>> +        shr     r8,8
>>>>>>> 
>>>>>>> +        movzx   r12,r12b
>>>>>>> 
>>>>>>> +        mov     edx,DWORD[((-4))+rdi]
>>>>>>> 
>>>>>>> +        shr     r9,8
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[((-128))+rbx*8+rbp]
>>>>>>> 
>>>>>>> +        shl     r10,56
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +        movzx   r13,r8b
>>>>>>> 
>>>>>>> +        shr     r8,4
>>>>>>> 
>>>>>>> +        mov     r10,r9
>>>>>>> 
>>>>>>> +        shl     r13b,4
>>>>>>> 
>>>>>>> +        shr     r9,4
>>>>>>> 
>>>>>>> +        xor     r8,QWORD[8+rcx*1+rsi]
>>>>>>> 
>>>>>>> +        movzx   r13,WORD[r13*2+r11]
>>>>>>> 
>>>>>>> +        shl     r10,60
>>>>>>> 
>>>>>>> +        xor     r9,QWORD[rcx*1+rsi]
>>>>>>> 
>>>>>>> +        xor     r8,r10
>>>>>>> 
>>>>>>> +        shl     r13,48
>>>>>>> 
>>>>>>> +        bswap   r8
>>>>>>> 
>>>>>>> +        xor     r9,r13
>>>>>>> 
>>>>>>> +        bswap   r9
>>>>>>> 
>>>>>>> +        cmp     r14,r15
>>>>>>> 
>>>>>>> +        jb      NEAR $L$outer_loop
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rdi],r8
>>>>>>> 
>>>>>>> +        mov     QWORD[rdi],r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsi,[((280+48))+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$ghash_epilogue:
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$SEH_end_gcm_ghash_4bit:
>>>>>>> 
>>>>>>> +global  gcm_init_clmul
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +gcm_init_clmul:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$_init_clmul:
>>>>>>> 
>>>>>>> +$L$SEH_begin_gcm_init_clmul:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      0x48,0x83,0xec,0x18
>>>>>>> 
>>>>>>> +DB      0x0f,0x29,0x34,0x24
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[rdx]
>>>>>>> 
>>>>>>> +        pshufd  xmm2,xmm2,78
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pshufd  xmm4,xmm2,255
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm2
>>>>>>> 
>>>>>>> +        psllq   xmm2,1
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +        psrlq   xmm3,63
>>>>>>> 
>>>>>>> +        pcmpgtd xmm5,xmm4
>>>>>>> 
>>>>>>> +        pslldq  xmm3,8
>>>>>>> 
>>>>>>> +        por     xmm2,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pand    xmm5,XMMWORD[$L$0x1c2_polynomial]
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pshufd  xmm6,xmm2,78
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +        pshufd  xmm3,xmm0,78
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +DB      102,15,58,68,194,0
>>>>>>> 
>>>>>>> +DB      102,15,58,68,202,17
>>>>>>> 
>>>>>>> +DB      102,15,58,68,222,0
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm3
>>>>>>> 
>>>>>>> +        psrldq  xmm3,8
>>>>>>> 
>>>>>>> +        pslldq  xmm4,8
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        psllq   xmm0,5
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        psllq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        psllq   xmm0,57
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        pslldq  xmm0,8
>>>>>>> 
>>>>>>> +        psrldq  xmm3,8
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        psrlq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>> 
>>>>>>> +        psrlq   xmm0,5
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        psrlq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        pshufd  xmm3,xmm2,78
>>>>>>> 
>>>>>>> +        pshufd  xmm4,xmm0,78
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm2
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rcx],xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[16+rcx],xmm0
>>>>>>> 
>>>>>>> +DB      102,15,58,15,227,8
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[32+rcx],xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +        pshufd  xmm3,xmm0,78
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +DB      102,15,58,68,194,0
>>>>>>> 
>>>>>>> +DB      102,15,58,68,202,17
>>>>>>> 
>>>>>>> +DB      102,15,58,68,222,0
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm3
>>>>>>> 
>>>>>>> +        psrldq  xmm3,8
>>>>>>> 
>>>>>>> +        pslldq  xmm4,8
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        psllq   xmm0,5
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        psllq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        psllq   xmm0,57
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        pslldq  xmm0,8
>>>>>>> 
>>>>>>> +        psrldq  xmm3,8
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        psrlq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>> 
>>>>>>> +        psrlq   xmm0,5
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        psrlq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +        pshufd  xmm3,xmm0,78
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +DB      102,15,58,68,194,0
>>>>>>> 
>>>>>>> +DB      102,15,58,68,202,17
>>>>>>> 
>>>>>>> +DB      102,15,58,68,222,0
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm3
>>>>>>> 
>>>>>>> +        psrldq  xmm3,8
>>>>>>> 
>>>>>>> +        pslldq  xmm4,8
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        psllq   xmm0,5
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        psllq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        psllq   xmm0,57
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        pslldq  xmm0,8
>>>>>>> 
>>>>>>> +        psrldq  xmm3,8
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        psrlq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>> 
>>>>>>> +        psrlq   xmm0,5
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        psrlq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        pshufd  xmm3,xmm5,78
>>>>>>> 
>>>>>>> +        pshufd  xmm4,xmm0,78
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm5
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[48+rcx],xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[64+rcx],xmm0
>>>>>>> 
>>>>>>> +DB      102,15,58,15,227,8
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[80+rcx],xmm4
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[rsp]
>>>>>>> 
>>>>>>> +        lea     rsp,[24+rsp]
>>>>>>> 
>>>>>>> +$L$SEH_end_gcm_init_clmul:
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  gcm_gmult_clmul
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +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
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +DB      102,15,58,68,194,0
>>>>>>> 
>>>>>>> +DB      102,15,58,68,202,17
>>>>>>> 
>>>>>>> +DB      102,15,58,68,220,0
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm3
>>>>>>> 
>>>>>>> +        psrldq  xmm3,8
>>>>>>> 
>>>>>>> +        pslldq  xmm4,8
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        psllq   xmm0,5
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        psllq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        psllq   xmm0,57
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        pslldq  xmm0,8
>>>>>>> 
>>>>>>> +        psrldq  xmm3,8
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        psrlq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>> 
>>>>>>> +        psrlq   xmm0,5
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        psrlq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +DB      102,15,56,0,197
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rcx],xmm0
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  gcm_ghash_clmul
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +gcm_ghash_clmul:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$_ghash_clmul:
>>>>>>> 
>>>>>>> +        lea     rax,[((-136))+rsp]
>>>>>>> 
>>>>>>> +$L$SEH_begin_gcm_ghash_clmul:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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[rcx]
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[rdx]
>>>>>>> 
>>>>>>> +        movdqu  xmm7,XMMWORD[32+rdx]
>>>>>>> 
>>>>>>> +DB      102,65,15,56,0,194
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     r9,0x10
>>>>>>> 
>>>>>>> +        jz      NEAR $L$odd_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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      NEAR $L$skip4x
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     r9,0x30
>>>>>>> 
>>>>>>> +        mov     rax,0xA040608020C0E000
>>>>>>> 
>>>>>>> +        movdqu  xmm14,XMMWORD[48+rdx]
>>>>>>> 
>>>>>>> +        movdqu  xmm15,XMMWORD[64+rdx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +        pshufd  xmm4,xmm3,78
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm3
>>>>>>> 
>>>>>>> +DB      102,15,58,68,218,0
>>>>>>> 
>>>>>>> +DB      102,15,58,68,234,17
>>>>>>> 
>>>>>>> +DB      102,15,58,68,231,0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm11
>>>>>>> 
>>>>>>> +        pshufd  xmm12,xmm11,78
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm11
>>>>>>> 
>>>>>>> +DB      102,68,15,58,68,222,0
>>>>>>> 
>>>>>>> +DB      102,68,15,58,68,238,17
>>>>>>> 
>>>>>>> +DB      102,68,15,58,68,231,16
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>> 
>>>>>>> +        xorps   xmm5,xmm13
>>>>>>> 
>>>>>>> +        movups  xmm7,XMMWORD[80+rdx]
>>>>>>> 
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +        pshufd  xmm12,xmm11,78
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm11
>>>>>>> 
>>>>>>> +DB      102,69,15,58,68,222,0
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +        pshufd  xmm8,xmm0,78
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>> 
>>>>>>> +DB      102,69,15,58,68,238,17
>>>>>>> 
>>>>>>> +DB      102,68,15,58,68,231,0
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>> 
>>>>>>> +        xorps   xmm5,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r8,[64+r8]
>>>>>>> 
>>>>>>> +        sub     r9,0x40
>>>>>>> 
>>>>>>> +        jc      NEAR $L$tail4x
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$mod4_loop
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$mod4_loop:
>>>>>>> 
>>>>>>> +DB      102,65,15,58,68,199,0
>>>>>>> 
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>> 
>>>>>>> +        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[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[32+rdx]
>>>>>>> 
>>>>>>> +        xorps   xmm8,xmm4
>>>>>>> 
>>>>>>> +DB      102,68,15,58,68,218,0
>>>>>>> 
>>>>>>> +        pshufd  xmm4,xmm3,78
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      102,68,15,58,68,234,17
>>>>>>> 
>>>>>>> +        pslldq  xmm8,8
>>>>>>> 
>>>>>>> +        psrldq  xmm9,8
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm8,XMMWORD[$L$7_mask]
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm9
>>>>>>> 
>>>>>>> +DB      102,76,15,110,200
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pand    xmm8,xmm0
>>>>>>> 
>>>>>>> +DB      102,69,15,56,0,200
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm0
>>>>>>> 
>>>>>>> +DB      102,68,15,58,68,231,0
>>>>>>> 
>>>>>>> +        psllq   xmm9,57
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm9
>>>>>>> 
>>>>>>> +        pslldq  xmm9,8
>>>>>>> 
>>>>>>> +DB      102,15,58,68,222,0
>>>>>>> 
>>>>>>> +        psrldq  xmm8,8
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm8
>>>>>>> 
>>>>>>> +        movdqu  xmm8,XMMWORD[r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm0
>>>>>>> 
>>>>>>> +        psrlq   xmm0,1
>>>>>>> 
>>>>>>> +DB      102,15,58,68,238,17
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>> 
>>>>>>> +        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[80+rdx]
>>>>>>> 
>>>>>>> +DB      102,69,15,56,0,194
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm0
>>>>>>> 
>>>>>>> +        psrlq   xmm0,5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        pshufd  xmm12,xmm11,78
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm11
>>>>>>> 
>>>>>>> +DB      102,69,15,58,68,222,0
>>>>>>> 
>>>>>>> +        psrlq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +DB      102,69,15,58,68,238,17
>>>>>>> 
>>>>>>> +        xorps   xmm3,xmm11
>>>>>>> 
>>>>>>> +        pshufd  xmm8,xmm0,78
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,68,15,58,68,231,0
>>>>>>> 
>>>>>>> +        xorps   xmm5,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r8,[64+r8]
>>>>>>> 
>>>>>>> +        sub     r9,0x40
>>>>>>> 
>>>>>>> +        jnc     NEAR $L$mod4_loop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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
>>>>>>> 
>>>>>>> +        xorps   xmm4,xmm12
>>>>>>> 
>>>>>>> +        xorps   xmm0,xmm3
>>>>>>> 
>>>>>>> +        xorps   xmm1,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +        psrldq  xmm8,8
>>>>>>> 
>>>>>>> +        pslldq  xmm9,8
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        psllq   xmm0,5
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        psllq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        psllq   xmm0,57
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        pslldq  xmm0,8
>>>>>>> 
>>>>>>> +        psrldq  xmm3,8
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        psrlq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>> 
>>>>>>> +        psrlq   xmm0,5
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        psrlq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        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[r8]
>>>>>>> 
>>>>>>> +        movdqu  xmm3,XMMWORD[16+r8]
>>>>>>> 
>>>>>>> +DB      102,69,15,56,0,194
>>>>>>> 
>>>>>>> +DB      102,65,15,56,0,218
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>> 
>>>>>>> +        pshufd  xmm4,xmm3,78
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm3
>>>>>>> 
>>>>>>> +DB      102,15,58,68,218,0
>>>>>>> 
>>>>>>> +DB      102,15,58,68,234,17
>>>>>>> 
>>>>>>> +DB      102,15,58,68,231,0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r8,[32+r8]
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +        sub     r9,0x20
>>>>>>> 
>>>>>>> +        jbe     NEAR $L$even_tail
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$mod_loop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$mod_loop:
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm4
>>>>>>> 
>>>>>>> +        pshufd  xmm4,xmm0,78
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,58,68,198,0
>>>>>>> 
>>>>>>> +DB      102,15,58,68,206,17
>>>>>>> 
>>>>>>> +DB      102,15,58,68,231,16
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm5
>>>>>>> 
>>>>>>> +        movdqu  xmm9,XMMWORD[r8]
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>> 
>>>>>>> +DB      102,69,15,56,0,202
>>>>>>> 
>>>>>>> +        movdqu  xmm3,XMMWORD[16+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm8
>>>>>>> 
>>>>>>> +DB      102,65,15,56,0,218
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm4
>>>>>>> 
>>>>>>> +        psrldq  xmm8,8
>>>>>>> 
>>>>>>> +        pslldq  xmm4,8
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm0
>>>>>>> 
>>>>>>> +        psllq   xmm0,5
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>> 
>>>>>>> +DB      102,15,58,68,218,0
>>>>>>> 
>>>>>>> +        psllq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm8
>>>>>>> 
>>>>>>> +        psllq   xmm0,57
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm0
>>>>>>> 
>>>>>>> +        pslldq  xmm0,8
>>>>>>> 
>>>>>>> +        psrldq  xmm8,8
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm9
>>>>>>> 
>>>>>>> +        pshufd  xmm4,xmm5,78
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm0
>>>>>>> 
>>>>>>> +        psrlq   xmm0,1
>>>>>>> 
>>>>>>> +DB      102,15,58,68,234,17
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm0
>>>>>>> 
>>>>>>> +        psrlq   xmm0,5
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm9
>>>>>>> 
>>>>>>> +        lea     r8,[32+r8]
>>>>>>> 
>>>>>>> +        psrlq   xmm0,1
>>>>>>> 
>>>>>>> +DB      102,15,58,68,231,0
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     r9,0x20
>>>>>>> 
>>>>>>> +        ja      NEAR $L$mod_loop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$even_tail:
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm4
>>>>>>> 
>>>>>>> +        pshufd  xmm4,xmm0,78
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,58,68,198,0
>>>>>>> 
>>>>>>> +DB      102,15,58,68,206,17
>>>>>>> 
>>>>>>> +DB      102,15,58,68,231,16
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm4
>>>>>>> 
>>>>>>> +        psrldq  xmm8,8
>>>>>>> 
>>>>>>> +        pslldq  xmm4,8
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        psllq   xmm0,5
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        psllq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        psllq   xmm0,57
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        pslldq  xmm0,8
>>>>>>> 
>>>>>>> +        psrldq  xmm3,8
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        psrlq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>> 
>>>>>>> +        psrlq   xmm0,5
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        psrlq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        test    r9,r9
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$odd_tail:
>>>>>>> 
>>>>>>> +        movdqu  xmm8,XMMWORD[r8]
>>>>>>> 
>>>>>>> +DB      102,69,15,56,0,194
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +        pshufd  xmm3,xmm0,78
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +DB      102,15,58,68,194,0
>>>>>>> 
>>>>>>> +DB      102,15,58,68,202,17
>>>>>>> 
>>>>>>> +DB      102,15,58,68,223,0
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm3
>>>>>>> 
>>>>>>> +        psrldq  xmm3,8
>>>>>>> 
>>>>>>> +        pslldq  xmm4,8
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        psllq   xmm0,5
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        psllq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        psllq   xmm0,57
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        pslldq  xmm0,8
>>>>>>> 
>>>>>>> +        psrldq  xmm3,8
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        psrlq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>> 
>>>>>>> +        psrlq   xmm0,5
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        psrlq   xmm0,1
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +$L$done:
>>>>>>> 
>>>>>>> +DB      102,65,15,56,0,194
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  gcm_init_avx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +gcm_init_avx:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$_init_clmul
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  gcm_gmult_avx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +gcm_gmult_avx:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$_gmult_clmul
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  gcm_ghash_avx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +gcm_ghash_avx:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$_ghash_clmul
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   64
>>>>>>> 
>>>>>>> +$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,0xc2
>>>>>>> 
>>>>>>> +$L$7_mask:
>>>>>>> 
>>>>>>> +        DD      7,0,7,0
>>>>>>> 
>>>>>>> +$L$7_mask_poly:
>>>>>>> 
>>>>>>> +        DD      7,0,450,0
>>>>>>> 
>>>>>>> +ALIGN   64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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
>>>> 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
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +se_handler:
>>>>>>> 
>>>>>>> +        push    rsi
>>>>>>> 
>>>>>>> +        push    rdi
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +        pushfq
>>>>>>> 
>>>>>>> +        sub     rsp,64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>> 
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rax,[((48+280))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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_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[40+r9]
>>>>>>> 
>>>>>>> +        mov     rsi,r8
>>>>>>> 
>>>>>>> +        mov     ecx,154
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,r9
>>>>>>> 
>>>>>>> +        xor     rcx,rcx
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +        popfq
>>>>>>> 
>>>>>>> +        pop     r15
>>>>>>> 
>>>>>>> +        pop     r14
>>>>>>> 
>>>>>>> +        pop     r13
>>>>>>> 
>>>>>>> +        pop     r12
>>>>>>> 
>>>>>>> +        pop     rbp
>>>>>>> 
>>>>>>> +        pop     rbx
>>>>>>> 
>>>>>>> +        pop     rdi
>>>>>>> 
>>>>>>> +        pop     rsi
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +section .pdata rdata align=4
>>>>>>> 
>>>>>>> +ALIGN   4
>>>>>>> 
>>>>>>> +        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      $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      $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      $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:
>>>>>>> 
>>>>>>> +DB      9,0,0,0
>>>>>>> 
>>>>>>> +        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      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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
>>>>>>> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
>>>>>>> x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..f3b7b0e35e
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
>> x86_64.nasm
>>>>>>> @@ -0,0 +1,3137 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>> 
>>>>>>> +; Generated from openssl/crypto/sha/asm/sha1-mb-x86_64.pl
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not
>> use
>>>>>>> 
>>>>>>> +; this file except in compliance with the License.  You can obtain
>> a
>>>> copy
>>>>>>> 
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>> 
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +default rel
>>>>>>> 
>>>>>>> +%define XMMWORD
>>>>>>> 
>>>>>>> +%define YMMWORD
>>>>>>> 
>>>>>>> +%define ZMMWORD
>>>>>>> 
>>>>>>> +section .text code align=64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  sha1_multi_block
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +sha1_multi_block:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_sha1_multi_block:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
>>>>>>> 
>>>>>>> +        bt      rcx,61
>>>>>>> 
>>>>>>> +        jc      NEAR _shaext_shortcut
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-120)+rax],xmm10
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-104)+rax],xmm11
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-88)+rax],xmm12
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-72)+rax],xmm13
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-56)+rax],xmm14
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-40)+rax],xmm15
>>>>>>> 
>>>>>>> +        sub     rsp,288
>>>>>>> 
>>>>>>> +        and     rsp,-256
>>>>>>> 
>>>>>>> +        mov     QWORD[272+rsp],rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$body:
>>>>>>> 
>>>>>>> +        lea     rbp,[K_XX_XX]
>>>>>>> 
>>>>>>> +        lea     rbx,[256+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$oop_grande:
>>>>>>> 
>>>>>>> +        mov     DWORD[280+rsp],edx
>>>>>>> 
>>>>>>> +        xor     edx,edx
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[rsi]
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[8+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        mov     DWORD[rbx],ecx
>>>>>>> 
>>>>>>> +        cmovle  r8,rbp
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[16+rsi]
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[24+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        mov     DWORD[4+rbx],ecx
>>>>>>> 
>>>>>>> +        cmovle  r9,rbp
>>>>>>> 
>>>>>>> +        mov     r10,QWORD[32+rsi]
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[40+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        mov     DWORD[8+rbx],ecx
>>>>>>> 
>>>>>>> +        cmovle  r10,rbp
>>>>>>> 
>>>>>>> +        mov     r11,QWORD[48+rsi]
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[56+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        mov     DWORD[12+rbx],ecx
>>>>>>> 
>>>>>>> +        cmovle  r11,rbp
>>>>>>> 
>>>>>>> +        test    edx,edx
>>>>>>> 
>>>>>>> +        jz      NEAR $L$done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  xmm10,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        lea     rax,[128+rsp]
>>>>>>> 
>>>>>>> +        movdqu  xmm11,XMMWORD[32+rdi]
>>>>>>> 
>>>>>>> +        movdqu  xmm12,XMMWORD[64+rdi]
>>>>>>> 
>>>>>>> +        movdqu  xmm13,XMMWORD[96+rdi]
>>>>>>> 
>>>>>>> +        movdqu  xmm14,XMMWORD[128+rdi]
>>>>>>> 
>>>>>>> +        movdqa  xmm5,XMMWORD[96+rbp]
>>>>>>> 
>>>>>>> +        movdqa  xmm15,XMMWORD[((-32))+rbp]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$oop:
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[r8]
>>>>>>> 
>>>>>>> +        lea     r8,[64+r8]
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[r9]
>>>>>>> 
>>>>>>> +        lea     r9,[64+r9]
>>>>>>> 
>>>>>>> +        movd    xmm3,DWORD[r10]
>>>>>>> 
>>>>>>> +        lea     r10,[64+r10]
>>>>>>> 
>>>>>>> +        movd    xmm4,DWORD[r11]
>>>>>>> 
>>>>>>> +        lea     r11,[64+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm3
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[((-60))+r8]
>>>>>>> 
>>>>>>> +        punpckldq       xmm2,xmm4
>>>>>>> 
>>>>>>> +        movd    xmm9,DWORD[((-60))+r9]
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>> 
>>>>>>> +        movd    xmm8,DWORD[((-60))+r10]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,197
>>>>>>> 
>>>>>>> +        movd    xmm7,DWORD[((-60))+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm1,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>> 
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm13
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm12
>>>>>>> 
>>>>>>> +        punpckldq       xmm1,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[((-56))+r8]
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        movd    xmm9,DWORD[((-56))+r9]
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm11,2
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,205
>>>>>>> 
>>>>>>> +        movd    xmm8,DWORD[((-56))+r10]
>>>>>>> 
>>>>>>> +        por     xmm11,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm7,DWORD[((-56))+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm2,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>> 
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm12
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm11
>>>>>>> 
>>>>>>> +        punpckldq       xmm2,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>> 
>>>>>>> +        movd    xmm3,DWORD[((-52))+r8]
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        movd    xmm9,DWORD[((-52))+r9]
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm10,2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,213
>>>>>>> 
>>>>>>> +        movd    xmm8,DWORD[((-52))+r10]
>>>>>>> 
>>>>>>> +        por     xmm10,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm7,DWORD[((-52))+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm3,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>> 
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm11
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm10
>>>>>>> 
>>>>>>> +        punpckldq       xmm3,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>> 
>>>>>>> +        movd    xmm4,DWORD[((-48))+r8]
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        movd    xmm9,DWORD[((-48))+r9]
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm14,2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,221
>>>>>>> 
>>>>>>> +        movd    xmm8,DWORD[((-48))+r10]
>>>>>>> 
>>>>>>> +        por     xmm14,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm7,DWORD[((-48))+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm4,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>> 
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm10
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm14
>>>>>>> 
>>>>>>> +        punpckldq       xmm4,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[((-44))+r8]
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        movd    xmm9,DWORD[((-44))+r9]
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm13,2
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,229
>>>>>>> 
>>>>>>> +        movd    xmm8,DWORD[((-44))+r10]
>>>>>>> 
>>>>>>> +        por     xmm13,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm7,DWORD[((-44))+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>> 
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm14
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm13
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[((-40))+r8]
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        movd    xmm9,DWORD[((-40))+r9]
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm12,2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,197
>>>>>>> 
>>>>>>> +        movd    xmm8,DWORD[((-40))+r10]
>>>>>>> 
>>>>>>> +        por     xmm12,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm7,DWORD[((-40))+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm1,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>> 
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm13
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm12
>>>>>>> 
>>>>>>> +        punpckldq       xmm1,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[((-36))+r8]
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        movd    xmm9,DWORD[((-36))+r9]
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm11,2
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,205
>>>>>>> 
>>>>>>> +        movd    xmm8,DWORD[((-36))+r10]
>>>>>>> 
>>>>>>> +        por     xmm11,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm7,DWORD[((-36))+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm2,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>> 
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm12
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm11
>>>>>>> 
>>>>>>> +        punpckldq       xmm2,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>> 
>>>>>>> +        movd    xmm3,DWORD[((-32))+r8]
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        movd    xmm9,DWORD[((-32))+r9]
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm10,2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,213
>>>>>>> 
>>>>>>> +        movd    xmm8,DWORD[((-32))+r10]
>>>>>>> 
>>>>>>> +        por     xmm10,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm7,DWORD[((-32))+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm3,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>> 
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm11
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm10
>>>>>>> 
>>>>>>> +        punpckldq       xmm3,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>> 
>>>>>>> +        movd    xmm4,DWORD[((-28))+r8]
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        movd    xmm9,DWORD[((-28))+r9]
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm14,2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,221
>>>>>>> 
>>>>>>> +        movd    xmm8,DWORD[((-28))+r10]
>>>>>>> 
>>>>>>> +        por     xmm14,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm7,DWORD[((-28))+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm4,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>> 
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm10
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm14
>>>>>>> 
>>>>>>> +        punpckldq       xmm4,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(128-128)+rax],xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[((-24))+r8]
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        movd    xmm9,DWORD[((-24))+r9]
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm13,2
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,229
>>>>>>> 
>>>>>>> +        movd    xmm8,DWORD[((-24))+r10]
>>>>>>> 
>>>>>>> +        por     xmm13,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm7,DWORD[((-24))+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>> 
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm14
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm13
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(144-128)+rax],xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[((-20))+r8]
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        movd    xmm9,DWORD[((-20))+r9]
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm12,2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,197
>>>>>>> 
>>>>>>> +        movd    xmm8,DWORD[((-20))+r10]
>>>>>>> 
>>>>>>> +        por     xmm12,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm7,DWORD[((-20))+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm1,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>> 
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm13
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm12
>>>>>>> 
>>>>>>> +        punpckldq       xmm1,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(160-128)+rax],xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[((-16))+r8]
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        movd    xmm9,DWORD[((-16))+r9]
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm11,2
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,205
>>>>>>> 
>>>>>>> +        movd    xmm8,DWORD[((-16))+r10]
>>>>>>> 
>>>>>>> +        por     xmm11,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm7,DWORD[((-16))+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm2,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>> 
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm12
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm11
>>>>>>> 
>>>>>>> +        punpckldq       xmm2,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(176-128)+rax],xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>> 
>>>>>>> +        movd    xmm3,DWORD[((-12))+r8]
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        movd    xmm9,DWORD[((-12))+r9]
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm10,2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,213
>>>>>>> 
>>>>>>> +        movd    xmm8,DWORD[((-12))+r10]
>>>>>>> 
>>>>>>> +        por     xmm10,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm7,DWORD[((-12))+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm3,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>> 
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm11
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm10
>>>>>>> 
>>>>>>> +        punpckldq       xmm3,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(192-128)+rax],xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>> 
>>>>>>> +        movd    xmm4,DWORD[((-8))+r8]
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        movd    xmm9,DWORD[((-8))+r9]
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm14,2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,221
>>>>>>> 
>>>>>>> +        movd    xmm8,DWORD[((-8))+r10]
>>>>>>> 
>>>>>>> +        por     xmm14,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm7,DWORD[((-8))+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm4,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>> 
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm10
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm14
>>>>>>> 
>>>>>>> +        punpckldq       xmm4,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(208-128)+rax],xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[((-4))+r8]
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        movd    xmm9,DWORD[((-4))+r9]
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm13,2
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,229
>>>>>>> 
>>>>>>> +        movd    xmm8,DWORD[((-4))+r10]
>>>>>>> 
>>>>>>> +        por     xmm13,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((0-128))+rax]
>>>>>>> 
>>>>>>> +        movd    xmm7,DWORD[((-4))+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>> 
>>>>>>> +        punpckldq       xmm9,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        prefetcht0      [63+r8]
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm14
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm13
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(224-128)+rax],xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +        prefetcht0      [63+r9]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +        prefetcht0      [63+r10]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm12,2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,197
>>>>>>> 
>>>>>>> +        prefetcht0      [63+r11]
>>>>>>> 
>>>>>>> +        por     xmm12,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((16-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[((32-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm1,XMMWORD[((128-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(240-128)+rax],xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm11,2
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>> 
>>>>>>> +        por     xmm1,xmm5
>>>>>>> 
>>>>>>> +        por     xmm11,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[((48-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm2,XMMWORD[((144-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm10,2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>> 
>>>>>>> +        por     xmm2,xmm5
>>>>>>> 
>>>>>>> +        por     xmm10,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((64-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm3,XMMWORD[((160-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm14,2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>> 
>>>>>>> +        por     xmm3,xmm5
>>>>>>> 
>>>>>>> +        por     xmm14,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((80-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm4,XMMWORD[((176-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm13,2
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>> 
>>>>>>> +        por     xmm4,xmm5
>>>>>>> 
>>>>>>> +        por     xmm13,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((96-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm0,XMMWORD[((192-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>> 
>>>>>>> +        pandn   xmm7,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm12,2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>> 
>>>>>>> +        por     xmm0,xmm5
>>>>>>> 
>>>>>>> +        por     xmm12,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm15,XMMWORD[rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[((112-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm1,XMMWORD[((208-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm11,2
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>> 
>>>>>>> +        por     xmm1,xmm5
>>>>>>> 
>>>>>>> +        por     xmm11,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[((128-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm2,XMMWORD[((224-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm10,2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>> 
>>>>>>> +        por     xmm2,xmm5
>>>>>>> 
>>>>>>> +        por     xmm10,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((144-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm3,XMMWORD[((240-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm14,2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>> 
>>>>>>> +        por     xmm3,xmm5
>>>>>>> 
>>>>>>> +        por     xmm14,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((160-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm4,XMMWORD[((0-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm13,2
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>> 
>>>>>>> +        por     xmm4,xmm5
>>>>>>> 
>>>>>>> +        por     xmm13,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((176-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm0,XMMWORD[((16-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(128-128)+rax],xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm12,2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>> 
>>>>>>> +        por     xmm0,xmm5
>>>>>>> 
>>>>>>> +        por     xmm12,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[((192-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm1,XMMWORD[((32-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(144-128)+rax],xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm11,2
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>> 
>>>>>>> +        por     xmm1,xmm5
>>>>>>> 
>>>>>>> +        por     xmm11,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[((208-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm2,XMMWORD[((48-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(160-128)+rax],xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm10,2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>> 
>>>>>>> +        por     xmm2,xmm5
>>>>>>> 
>>>>>>> +        por     xmm10,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((224-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm3,XMMWORD[((64-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(176-128)+rax],xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm14,2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>> 
>>>>>>> +        por     xmm3,xmm5
>>>>>>> 
>>>>>>> +        por     xmm14,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((240-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm4,XMMWORD[((80-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(192-128)+rax],xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm13,2
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>> 
>>>>>>> +        por     xmm4,xmm5
>>>>>>> 
>>>>>>> +        por     xmm13,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((0-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm0,XMMWORD[((96-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(208-128)+rax],xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm12,2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>> 
>>>>>>> +        por     xmm0,xmm5
>>>>>>> 
>>>>>>> +        por     xmm12,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[((16-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm1,XMMWORD[((112-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(224-128)+rax],xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm11,2
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>> 
>>>>>>> +        por     xmm1,xmm5
>>>>>>> 
>>>>>>> +        por     xmm11,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[((32-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm2,XMMWORD[((128-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(240-128)+rax],xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm10,2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>> 
>>>>>>> +        por     xmm2,xmm5
>>>>>>> 
>>>>>>> +        por     xmm10,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((48-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm3,XMMWORD[((144-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm14,2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>> 
>>>>>>> +        por     xmm3,xmm5
>>>>>>> 
>>>>>>> +        por     xmm14,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((64-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm4,XMMWORD[((160-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm13,2
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>> 
>>>>>>> +        por     xmm4,xmm5
>>>>>>> 
>>>>>>> +        por     xmm13,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((80-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm0,XMMWORD[((176-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm12,2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>> 
>>>>>>> +        por     xmm0,xmm5
>>>>>>> 
>>>>>>> +        por     xmm12,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[((96-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm1,XMMWORD[((192-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm11,2
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>> 
>>>>>>> +        por     xmm1,xmm5
>>>>>>> 
>>>>>>> +        por     xmm11,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[((112-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm2,XMMWORD[((208-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm10,2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>> 
>>>>>>> +        por     xmm2,xmm5
>>>>>>> 
>>>>>>> +        por     xmm10,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((128-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm3,XMMWORD[((224-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm14,2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>> 
>>>>>>> +        por     xmm3,xmm5
>>>>>>> 
>>>>>>> +        por     xmm14,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((144-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm4,XMMWORD[((240-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm13,2
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>> 
>>>>>>> +        por     xmm4,xmm5
>>>>>>> 
>>>>>>> +        por     xmm13,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((160-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm0,XMMWORD[((0-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm12,2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>> 
>>>>>>> +        por     xmm0,xmm5
>>>>>>> 
>>>>>>> +        por     xmm12,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm15,XMMWORD[32+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[((176-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm1,XMMWORD[((16-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(128-128)+rax],xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm11,2
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>> 
>>>>>>> +        por     xmm1,xmm5
>>>>>>> 
>>>>>>> +        por     xmm11,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[((192-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm2,XMMWORD[((32-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(144-128)+rax],xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm10,2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>> 
>>>>>>> +        por     xmm2,xmm5
>>>>>>> 
>>>>>>> +        por     xmm10,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((208-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm3,XMMWORD[((48-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(160-128)+rax],xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm14,2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>> 
>>>>>>> +        por     xmm3,xmm5
>>>>>>> 
>>>>>>> +        por     xmm14,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((224-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm4,XMMWORD[((64-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(176-128)+rax],xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm13,2
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>> 
>>>>>>> +        por     xmm4,xmm5
>>>>>>> 
>>>>>>> +        por     xmm13,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((240-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm0,XMMWORD[((80-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(192-128)+rax],xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm12,2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>> 
>>>>>>> +        por     xmm0,xmm5
>>>>>>> 
>>>>>>> +        por     xmm12,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[((0-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm1,XMMWORD[((96-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(208-128)+rax],xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm11,2
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>> 
>>>>>>> +        por     xmm1,xmm5
>>>>>>> 
>>>>>>> +        por     xmm11,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[((16-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm2,XMMWORD[((112-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(224-128)+rax],xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm10,2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>> 
>>>>>>> +        por     xmm2,xmm5
>>>>>>> 
>>>>>>> +        por     xmm10,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((32-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm3,XMMWORD[((128-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(240-128)+rax],xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm14,2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>> 
>>>>>>> +        por     xmm3,xmm5
>>>>>>> 
>>>>>>> +        por     xmm14,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((48-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm4,XMMWORD[((144-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm13,2
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>> 
>>>>>>> +        por     xmm4,xmm5
>>>>>>> 
>>>>>>> +        por     xmm13,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((64-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm0,XMMWORD[((160-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm12,2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>> 
>>>>>>> +        por     xmm0,xmm5
>>>>>>> 
>>>>>>> +        por     xmm12,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[((80-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm1,XMMWORD[((176-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm11,2
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>> 
>>>>>>> +        por     xmm1,xmm5
>>>>>>> 
>>>>>>> +        por     xmm11,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[((96-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm2,XMMWORD[((192-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm10,2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>> 
>>>>>>> +        por     xmm2,xmm5
>>>>>>> 
>>>>>>> +        por     xmm10,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((112-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm3,XMMWORD[((208-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm14,2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>> 
>>>>>>> +        por     xmm3,xmm5
>>>>>>> 
>>>>>>> +        por     xmm14,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((128-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm4,XMMWORD[((224-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm13,2
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>> 
>>>>>>> +        por     xmm4,xmm5
>>>>>>> 
>>>>>>> +        por     xmm13,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((144-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm0,XMMWORD[((240-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm12,2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>> 
>>>>>>> +        por     xmm0,xmm5
>>>>>>> 
>>>>>>> +        por     xmm12,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[((160-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm1,XMMWORD[((0-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm11,2
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>> 
>>>>>>> +        por     xmm1,xmm5
>>>>>>> 
>>>>>>> +        por     xmm11,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[((176-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm2,XMMWORD[((16-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(128-128)+rax],xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm10,2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>> 
>>>>>>> +        por     xmm2,xmm5
>>>>>>> 
>>>>>>> +        por     xmm10,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((192-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm3,XMMWORD[((32-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(144-128)+rax],xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm14,2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>> 
>>>>>>> +        por     xmm3,xmm5
>>>>>>> 
>>>>>>> +        por     xmm14,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((208-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm4,XMMWORD[((48-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(160-128)+rax],xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm13,2
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>> 
>>>>>>> +        por     xmm4,xmm5
>>>>>>> 
>>>>>>> +        por     xmm13,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((224-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm0,XMMWORD[((64-128))+rax]
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +        pand    xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(176-128)+rax],xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        pand    xmm6,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm12,2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>> 
>>>>>>> +        por     xmm0,xmm5
>>>>>>> 
>>>>>>> +        por     xmm12,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm15,XMMWORD[64+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[((240-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm1,XMMWORD[((80-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(192-128)+rax],xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm11,2
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>> 
>>>>>>> +        por     xmm1,xmm5
>>>>>>> 
>>>>>>> +        por     xmm11,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[((0-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm2,XMMWORD[((96-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(208-128)+rax],xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm10,2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>> 
>>>>>>> +        por     xmm2,xmm5
>>>>>>> 
>>>>>>> +        por     xmm10,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((16-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm3,XMMWORD[((112-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(224-128)+rax],xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm14,2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>> 
>>>>>>> +        por     xmm3,xmm5
>>>>>>> 
>>>>>>> +        por     xmm14,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((32-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm4,XMMWORD[((128-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(240-128)+rax],xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm13,2
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>> 
>>>>>>> +        por     xmm4,xmm5
>>>>>>> 
>>>>>>> +        por     xmm13,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((48-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm0,XMMWORD[((144-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm12,2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>> 
>>>>>>> +        por     xmm0,xmm5
>>>>>>> 
>>>>>>> +        por     xmm12,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[((64-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm1,XMMWORD[((160-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm11,2
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>> 
>>>>>>> +        por     xmm1,xmm5
>>>>>>> 
>>>>>>> +        por     xmm11,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[((80-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm2,XMMWORD[((176-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm10,2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>> 
>>>>>>> +        por     xmm2,xmm5
>>>>>>> 
>>>>>>> +        por     xmm10,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((96-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm3,XMMWORD[((192-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm14,2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>> 
>>>>>>> +        por     xmm3,xmm5
>>>>>>> 
>>>>>>> +        por     xmm14,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((112-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm4,XMMWORD[((208-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm13,2
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>> 
>>>>>>> +        por     xmm4,xmm5
>>>>>>> 
>>>>>>> +        por     xmm13,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((128-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm0,XMMWORD[((224-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm12,2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>> 
>>>>>>> +        por     xmm0,xmm5
>>>>>>> 
>>>>>>> +        por     xmm12,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[((144-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm1,XMMWORD[((240-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm11,2
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>> 
>>>>>>> +        por     xmm1,xmm5
>>>>>>> 
>>>>>>> +        por     xmm11,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[((160-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm2,XMMWORD[((0-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm10,2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>> 
>>>>>>> +        por     xmm2,xmm5
>>>>>>> 
>>>>>>> +        por     xmm10,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((176-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm3,XMMWORD[((16-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm14,2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>> 
>>>>>>> +        por     xmm3,xmm5
>>>>>>> 
>>>>>>> +        por     xmm14,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((192-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm4,XMMWORD[((32-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm13,2
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>> 
>>>>>>> +        por     xmm4,xmm5
>>>>>>> 
>>>>>>> +        por     xmm13,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((208-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm0,XMMWORD[((48-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm2
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm0
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm12,2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>> 
>>>>>>> +        por     xmm0,xmm5
>>>>>>> 
>>>>>>> +        por     xmm12,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[((224-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm1,XMMWORD[((64-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm1
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm11,2
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm8
>>>>>>> 
>>>>>>> +        por     xmm1,xmm5
>>>>>>> 
>>>>>>> +        por     xmm11,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[((240-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm2,XMMWORD[((80-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm14
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm2
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm10,2
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm8
>>>>>>> 
>>>>>>> +        por     xmm2,xmm5
>>>>>>> 
>>>>>>> +        por     xmm10,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((0-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm3,XMMWORD[((96-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm13
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm0
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm3
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm14,2
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>> 
>>>>>>> +        por     xmm3,xmm5
>>>>>>> 
>>>>>>> +        por     xmm14,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((16-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm4,XMMWORD[((112-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm12
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm5,31
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm13,2
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm8
>>>>>>> 
>>>>>>> +        por     xmm4,xmm5
>>>>>>> 
>>>>>>> +        por     xmm13,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm11
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm15
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm8,5
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm9,27
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pslld   xmm7,30
>>>>>>> 
>>>>>>> +        por     xmm8,xmm9
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm12,2
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm8
>>>>>>> 
>>>>>>> +        por     xmm12,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[rbx]
>>>>>>> 
>>>>>>> +        mov     ecx,1
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[rbx]
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm8
>>>>>>> 
>>>>>>> +        cmovge  r8,rbp
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[4+rbx]
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +        cmovge  r9,rbp
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[8+rbx]
>>>>>>> 
>>>>>>> +        pcmpgtd xmm1,xmm8
>>>>>>> 
>>>>>>> +        cmovge  r10,rbp
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[12+rbx]
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm1
>>>>>>> 
>>>>>>> +        cmovge  r11,rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        pand    xmm10,xmm1
>>>>>>> 
>>>>>>> +        movdqu  xmm7,XMMWORD[32+rdi]
>>>>>>> 
>>>>>>> +        pand    xmm11,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +        movdqu  xmm8,XMMWORD[64+rdi]
>>>>>>> 
>>>>>>> +        pand    xmm12,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>> 
>>>>>>> +        movdqu  xmm9,XMMWORD[96+rdi]
>>>>>>> 
>>>>>>> +        pand    xmm13,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm8
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[128+rdi]
>>>>>>> 
>>>>>>> +        pand    xmm14,xmm1
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rdi],xmm10
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm9
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[32+rdi],xmm11
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm5
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[64+rdi],xmm12
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[96+rdi],xmm13
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[128+rdi],xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[rbx],xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm5,XMMWORD[96+rbp]
>>>>>>> 
>>>>>>> +        movdqa  xmm15,XMMWORD[((-32))+rbp]
>>>>>>> 
>>>>>>> +        dec     edx
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edx,DWORD[280+rsp]
>>>>>>> 
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>> 
>>>>>>> +        lea     rsi,[64+rsi]
>>>>>>> 
>>>>>>> +        dec     edx
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_grande
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$done:
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[272+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[((-184))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[((-168))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[((-152))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[((-136))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm10,XMMWORD[((-120))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm11,XMMWORD[((-104))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm12,XMMWORD[((-88))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm13,XMMWORD[((-72))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm14,XMMWORD[((-56))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm15,XMMWORD[((-40))+rax]
>>>>>>> 
>>>>>>> +        mov     rbp,QWORD[((-16))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[((-8))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$epilogue:
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$SEH_end_sha1_multi_block:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +sha1_multi_block_shaext:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_sha1_multi_block_shaext:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +_shaext_shortcut:
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-120)+rax],xmm10
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-104)+rax],xmm11
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-88)+rax],xmm12
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-72)+rax],xmm13
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-56)+rax],xmm14
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-40)+rax],xmm15
>>>>>>> 
>>>>>>> +        sub     rsp,288
>>>>>>> 
>>>>>>> +        shl     edx,1
>>>>>>> 
>>>>>>> +        and     rsp,-256
>>>>>>> 
>>>>>>> +        lea     rdi,[64+rdi]
>>>>>>> 
>>>>>>> +        mov     QWORD[272+rsp],rax
>>>>>>> 
>>>>>>> +$L$body_shaext:
>>>>>>> 
>>>>>>> +        lea     rbx,[256+rsp]
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[((K_XX_XX+128))]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$oop_grande_shaext:
>>>>>>> 
>>>>>>> +        mov     DWORD[280+rsp],edx
>>>>>>> 
>>>>>>> +        xor     edx,edx
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[rsi]
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[8+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        mov     DWORD[rbx],ecx
>>>>>>> 
>>>>>>> +        cmovle  r8,rsp
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[16+rsi]
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[24+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        mov     DWORD[4+rbx],ecx
>>>>>>> 
>>>>>>> +        cmovle  r9,rsp
>>>>>>> 
>>>>>>> +        test    edx,edx
>>>>>>> 
>>>>>>> +        jz      NEAR $L$done_shaext
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movq    xmm0,QWORD[((0-64))+rdi]
>>>>>>> 
>>>>>>> +        movq    xmm4,QWORD[((32-64))+rdi]
>>>>>>> 
>>>>>>> +        movq    xmm5,QWORD[((64-64))+rdi]
>>>>>>> 
>>>>>>> +        movq    xmm6,QWORD[((96-64))+rdi]
>>>>>>> 
>>>>>>> +        movq    xmm7,QWORD[((128-64))+rdi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm4
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm0
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm0,xmm5
>>>>>>> 
>>>>>>> +        punpckhqdq      xmm8,xmm5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pshufd  xmm1,xmm7,63
>>>>>>> 
>>>>>>> +        pshufd  xmm9,xmm7,127
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,27
>>>>>>> 
>>>>>>> +        pshufd  xmm8,xmm8,27
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_shaext
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$oop_shaext:
>>>>>>> 
>>>>>>> +        movdqu  xmm4,XMMWORD[r8]
>>>>>>> 
>>>>>>> +        movdqu  xmm11,XMMWORD[r9]
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[16+r8]
>>>>>>> 
>>>>>>> +        movdqu  xmm12,XMMWORD[16+r9]
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[32+r8]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,227
>>>>>>> 
>>>>>>> +        movdqu  xmm13,XMMWORD[32+r9]
>>>>>>> 
>>>>>>> +DB      102,68,15,56,0,219
>>>>>>> 
>>>>>>> +        movdqu  xmm7,XMMWORD[48+r8]
>>>>>>> 
>>>>>>> +        lea     r8,[64+r8]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,235
>>>>>>> 
>>>>>>> +        movdqu  xmm14,XMMWORD[48+r9]
>>>>>>> 
>>>>>>> +        lea     r9,[64+r9]
>>>>>>> 
>>>>>>> +DB      102,68,15,56,0,227
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[80+rsp],xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm4
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[112+rsp],xmm9
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm11
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[64+rsp],xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[96+rsp],xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,193,0
>>>>>>> 
>>>>>>> +DB      15,56,200,213
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,0
>>>>>>> 
>>>>>>> +DB      69,15,56,200,212
>>>>>>> 
>>>>>>> +DB      102,15,56,0,243
>>>>>>> 
>>>>>>> +        prefetcht0      [127+r8]
>>>>>>> 
>>>>>>> +DB      15,56,201,229
>>>>>>> 
>>>>>>> +DB      102,68,15,56,0,235
>>>>>>> 
>>>>>>> +        prefetcht0      [127+r9]
>>>>>>> 
>>>>>>> +DB      69,15,56,201,220
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +DB      102,15,56,0,251
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +DB      102,68,15,56,0,243
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,194,0
>>>>>>> 
>>>>>>> +DB      15,56,200,206
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,0
>>>>>>> 
>>>>>>> +DB      69,15,56,200,205
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +DB      15,56,201,238
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm13
>>>>>>> 
>>>>>>> +DB      69,15,56,201,229
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,193,0
>>>>>>> 
>>>>>>> +DB      15,56,200,215
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,0
>>>>>>> 
>>>>>>> +DB      69,15,56,200,214
>>>>>>> 
>>>>>>> +DB      15,56,202,231
>>>>>>> 
>>>>>>> +DB      69,15,56,202,222
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm7
>>>>>>> 
>>>>>>> +DB      15,56,201,247
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm14
>>>>>>> 
>>>>>>> +DB      69,15,56,201,238
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,194,0
>>>>>>> 
>>>>>>> +DB      15,56,200,204
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,0
>>>>>>> 
>>>>>>> +DB      69,15,56,200,203
>>>>>>> 
>>>>>>> +DB      15,56,202,236
>>>>>>> 
>>>>>>> +DB      69,15,56,202,227
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>> 
>>>>>>> +DB      15,56,201,252
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm11
>>>>>>> 
>>>>>>> +DB      69,15,56,201,243
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,193,0
>>>>>>> 
>>>>>>> +DB      15,56,200,213
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,0
>>>>>>> 
>>>>>>> +DB      69,15,56,200,212
>>>>>>> 
>>>>>>> +DB      15,56,202,245
>>>>>>> 
>>>>>>> +DB      69,15,56,202,236
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm5
>>>>>>> 
>>>>>>> +DB      15,56,201,229
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm12
>>>>>>> 
>>>>>>> +DB      69,15,56,201,220
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,194,1
>>>>>>> 
>>>>>>> +DB      15,56,200,206
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,1
>>>>>>> 
>>>>>>> +DB      69,15,56,200,205
>>>>>>> 
>>>>>>> +DB      15,56,202,254
>>>>>>> 
>>>>>>> +DB      69,15,56,202,245
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +DB      15,56,201,238
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm13
>>>>>>> 
>>>>>>> +DB      69,15,56,201,229
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,193,1
>>>>>>> 
>>>>>>> +DB      15,56,200,215
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,1
>>>>>>> 
>>>>>>> +DB      69,15,56,200,214
>>>>>>> 
>>>>>>> +DB      15,56,202,231
>>>>>>> 
>>>>>>> +DB      69,15,56,202,222
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm7
>>>>>>> 
>>>>>>> +DB      15,56,201,247
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm14
>>>>>>> 
>>>>>>> +DB      69,15,56,201,238
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,194,1
>>>>>>> 
>>>>>>> +DB      15,56,200,204
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,1
>>>>>>> 
>>>>>>> +DB      69,15,56,200,203
>>>>>>> 
>>>>>>> +DB      15,56,202,236
>>>>>>> 
>>>>>>> +DB      69,15,56,202,227
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>> 
>>>>>>> +DB      15,56,201,252
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm11
>>>>>>> 
>>>>>>> +DB      69,15,56,201,243
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,193,1
>>>>>>> 
>>>>>>> +DB      15,56,200,213
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,1
>>>>>>> 
>>>>>>> +DB      69,15,56,200,212
>>>>>>> 
>>>>>>> +DB      15,56,202,245
>>>>>>> 
>>>>>>> +DB      69,15,56,202,236
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm5
>>>>>>> 
>>>>>>> +DB      15,56,201,229
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm12
>>>>>>> 
>>>>>>> +DB      69,15,56,201,220
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,194,1
>>>>>>> 
>>>>>>> +DB      15,56,200,206
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,1
>>>>>>> 
>>>>>>> +DB      69,15,56,200,205
>>>>>>> 
>>>>>>> +DB      15,56,202,254
>>>>>>> 
>>>>>>> +DB      69,15,56,202,245
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +DB      15,56,201,238
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm13
>>>>>>> 
>>>>>>> +DB      69,15,56,201,229
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,193,2
>>>>>>> 
>>>>>>> +DB      15,56,200,215
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,2
>>>>>>> 
>>>>>>> +DB      69,15,56,200,214
>>>>>>> 
>>>>>>> +DB      15,56,202,231
>>>>>>> 
>>>>>>> +DB      69,15,56,202,222
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm7
>>>>>>> 
>>>>>>> +DB      15,56,201,247
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm14
>>>>>>> 
>>>>>>> +DB      69,15,56,201,238
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,194,2
>>>>>>> 
>>>>>>> +DB      15,56,200,204
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,2
>>>>>>> 
>>>>>>> +DB      69,15,56,200,203
>>>>>>> 
>>>>>>> +DB      15,56,202,236
>>>>>>> 
>>>>>>> +DB      69,15,56,202,227
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>> 
>>>>>>> +DB      15,56,201,252
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm11
>>>>>>> 
>>>>>>> +DB      69,15,56,201,243
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,193,2
>>>>>>> 
>>>>>>> +DB      15,56,200,213
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,2
>>>>>>> 
>>>>>>> +DB      69,15,56,200,212
>>>>>>> 
>>>>>>> +DB      15,56,202,245
>>>>>>> 
>>>>>>> +DB      69,15,56,202,236
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm5
>>>>>>> 
>>>>>>> +DB      15,56,201,229
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm12
>>>>>>> 
>>>>>>> +DB      69,15,56,201,220
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,194,2
>>>>>>> 
>>>>>>> +DB      15,56,200,206
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,2
>>>>>>> 
>>>>>>> +DB      69,15,56,200,205
>>>>>>> 
>>>>>>> +DB      15,56,202,254
>>>>>>> 
>>>>>>> +DB      69,15,56,202,245
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +DB      15,56,201,238
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm13
>>>>>>> 
>>>>>>> +DB      69,15,56,201,229
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,193,2
>>>>>>> 
>>>>>>> +DB      15,56,200,215
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,2
>>>>>>> 
>>>>>>> +DB      69,15,56,200,214
>>>>>>> 
>>>>>>> +DB      15,56,202,231
>>>>>>> 
>>>>>>> +DB      69,15,56,202,222
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm7
>>>>>>> 
>>>>>>> +DB      15,56,201,247
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm14
>>>>>>> 
>>>>>>> +DB      69,15,56,201,238
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,194,3
>>>>>>> 
>>>>>>> +DB      15,56,200,204
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,3
>>>>>>> 
>>>>>>> +DB      69,15,56,200,203
>>>>>>> 
>>>>>>> +DB      15,56,202,236
>>>>>>> 
>>>>>>> +DB      69,15,56,202,227
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>> 
>>>>>>> +DB      15,56,201,252
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm11
>>>>>>> 
>>>>>>> +DB      69,15,56,201,243
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,193,3
>>>>>>> 
>>>>>>> +DB      15,56,200,213
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,3
>>>>>>> 
>>>>>>> +DB      69,15,56,200,212
>>>>>>> 
>>>>>>> +DB      15,56,202,245
>>>>>>> 
>>>>>>> +DB      69,15,56,202,236
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     ecx,1
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[rbx]
>>>>>>> 
>>>>>>> +        cmovge  r8,rsp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,194,3
>>>>>>> 
>>>>>>> +DB      15,56,200,206
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,3
>>>>>>> 
>>>>>>> +DB      69,15,56,200,205
>>>>>>> 
>>>>>>> +DB      15,56,202,254
>>>>>>> 
>>>>>>> +DB      69,15,56,202,245
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[4+rbx]
>>>>>>> 
>>>>>>> +        cmovge  r9,rsp
>>>>>>> 
>>>>>>> +        movq    xmm6,QWORD[rbx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,193,3
>>>>>>> 
>>>>>>> +DB      15,56,200,215
>>>>>>> 
>>>>>>> +DB      69,15,58,204,193,3
>>>>>>> 
>>>>>>> +DB      69,15,56,200,214
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pshufd  xmm11,xmm6,0x00
>>>>>>> 
>>>>>>> +        pshufd  xmm12,xmm6,0x55
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>> 
>>>>>>> +        pcmpgtd xmm11,xmm4
>>>>>>> 
>>>>>>> +        pcmpgtd xmm12,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +DB      15,58,204,194,3
>>>>>>> 
>>>>>>> +DB      15,56,200,204
>>>>>>> 
>>>>>>> +DB      69,15,58,204,194,3
>>>>>>> 
>>>>>>> +DB      68,15,56,200,204
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pcmpgtd xmm7,xmm4
>>>>>>> 
>>>>>>> +        pand    xmm0,xmm11
>>>>>>> 
>>>>>>> +        pand    xmm1,xmm11
>>>>>>> 
>>>>>>> +        pand    xmm8,xmm12
>>>>>>> 
>>>>>>> +        pand    xmm9,xmm12
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm0,XMMWORD[64+rsp]
>>>>>>> 
>>>>>>> +        paddd   xmm1,XMMWORD[80+rsp]
>>>>>>> 
>>>>>>> +        paddd   xmm8,XMMWORD[96+rsp]
>>>>>>> 
>>>>>>> +        paddd   xmm9,XMMWORD[112+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movq    QWORD[rbx],xmm6
>>>>>>> 
>>>>>>> +        dec     edx
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_shaext
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edx,DWORD[280+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,27
>>>>>>> 
>>>>>>> +        pshufd  xmm8,xmm8,27
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm0
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm8
>>>>>>> 
>>>>>>> +        punpckhdq       xmm6,xmm8
>>>>>>> 
>>>>>>> +        punpckhdq       xmm1,xmm9
>>>>>>> 
>>>>>>> +        movq    QWORD[(0-64)+rdi],xmm0
>>>>>>> 
>>>>>>> +        psrldq  xmm0,8
>>>>>>> 
>>>>>>> +        movq    QWORD[(64-64)+rdi],xmm6
>>>>>>> 
>>>>>>> +        psrldq  xmm6,8
>>>>>>> 
>>>>>>> +        movq    QWORD[(32-64)+rdi],xmm0
>>>>>>> 
>>>>>>> +        psrldq  xmm1,8
>>>>>>> 
>>>>>>> +        movq    QWORD[(96-64)+rdi],xmm6
>>>>>>> 
>>>>>>> +        movq    QWORD[(128-64)+rdi],xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rdi,[8+rdi]
>>>>>>> 
>>>>>>> +        lea     rsi,[32+rsi]
>>>>>>> 
>>>>>>> +        dec     edx
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_grande_shaext
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$done_shaext:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[((-184))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[((-168))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[((-152))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[((-136))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm10,XMMWORD[((-120))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm11,XMMWORD[((-104))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm12,XMMWORD[((-88))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm13,XMMWORD[((-72))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm14,XMMWORD[((-56))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm15,XMMWORD[((-40))+rax]
>>>>>>> 
>>>>>>> +        mov     rbp,QWORD[((-16))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[((-8))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$epilogue_shaext:
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$SEH_end_sha1_multi_block_shaext:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   256
>>>>>>> 
>>>>>>> +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
>>>>>>> 
>>>>>>> +        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
>>>>>>> 
>>>>>>> +K_XX_XX:
>>>>>>> 
>>>>>>> +        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,109,117,108,116,105,45,98,108,111,99,107
>>>>>>> 
>>>>>>> +DB
>> 32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120
>>>>>>> 
>>>>>>> +DB      56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77
>>>>>>> 
>>>>>>> +DB      83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110
>>>>>>> 
>>>>>>> +DB      115,115,108,46,111,114,103,62,0
>>>>>>> 
>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +se_handler:
>>>>>>> 
>>>>>>> +        push    rsi
>>>>>>> 
>>>>>>> +        push    rdi
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +        pushfq
>>>>>>> 
>>>>>>> +        sub     rsp,64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>> 
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[272+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[((-8))+rax]
>>>>>>> 
>>>>>>> +        mov     rbp,QWORD[((-16))+rax]
>>>>>>> 
>>>>>>> +        mov     QWORD[144+r8],rbx
>>>>>>> 
>>>>>>> +        mov     QWORD[160+r8],rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsi,[((-24-160))+rax]
>>>>>>> 
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>> 
>>>>>>> +        mov     ecx,20
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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[40+r9]
>>>>>>> 
>>>>>>> +        mov     rsi,r8
>>>>>>> 
>>>>>>> +        mov     ecx,154
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,r9
>>>>>>> 
>>>>>>> +        xor     rcx,rcx
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +        popfq
>>>>>>> 
>>>>>>> +        pop     r15
>>>>>>> 
>>>>>>> +        pop     r14
>>>>>>> 
>>>>>>> +        pop     r13
>>>>>>> 
>>>>>>> +        pop     r12
>>>>>>> 
>>>>>>> +        pop     rbp
>>>>>>> 
>>>>>>> +        pop     rbx
>>>>>>> 
>>>>>>> +        pop     rdi
>>>>>>> 
>>>>>>> +        pop     rsi
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +section .pdata rdata align=4
>>>>>>> 
>>>>>>> +ALIGN   4
>>>>>>> 
>>>>>>> +        DD      $L$SEH_begin_sha1_multi_block wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_end_sha1_multi_block wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_info_sha1_multi_block wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_begin_sha1_multi_block_shaext wrt
>> ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_end_sha1_multi_block_shaext wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_info_sha1_multi_block_shaext wrt
>> ..imagebase
>>>>>>> 
>>>>>>> +section .xdata rdata align=8
>>>>>>> 
>>>>>>> +ALIGN   8
>>>>>>> 
>>>>>>> +$L$SEH_info_sha1_multi_block:
>>>>>>> 
>>>>>>> +DB      9,0,0,0
>>>>>>> 
>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$body wrt ..imagebase,$L$epilogue wrt
>> ..imagebase
>>>>>>> 
>>>>>>> +$L$SEH_info_sha1_multi_block_shaext:
>>>>>>> 
>>>>>>> +DB      9,0,0,0
>>>>>>> 
>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
>>>>>>> wrt ..imagebase
>>>>>>> 
>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-
>>>> x86_64.nasm
>>>>>>> b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..c6d68d348f
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
>>>>>>> @@ -0,0 +1,2884 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>> 
>>>>>>> +; Generated from openssl/crypto/sha/asm/sha1-x86_64.pl
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Copyright 2006-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not
>> use
>>>>>>> 
>>>>>>> +; this file except in compliance with the License.  You can obtain
>> a
>>>> copy
>>>>>>> 
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>> 
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +default rel
>>>>>>> 
>>>>>>> +%define XMMWORD
>>>>>>> 
>>>>>>> +%define YMMWORD
>>>>>>> 
>>>>>>> +%define ZMMWORD
>>>>>>> 
>>>>>>> +section .text code align=64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  sha1_block_data_order
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +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:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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      NEAR $L$ialu
>>>>>>> 
>>>>>>> +        test    r10d,536870912
>>>>>>> 
>>>>>>> +        jnz     NEAR _shaext_shortcut
>>>>>>> 
>>>>>>> +        jmp     NEAR _ssse3_shortcut
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ialu:
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r8,rdi
>>>>>>> 
>>>>>>> +        sub     rsp,72
>>>>>>> 
>>>>>>> +        mov     r9,rsi
>>>>>>> 
>>>>>>> +        and     rsp,-64
>>>>>>> 
>>>>>>> +        mov     r10,rdx
>>>>>>> 
>>>>>>> +        mov     QWORD[64+rsp],rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$prologue:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[r9]
>>>>>>> 
>>>>>>> +        bswap   edx
>>>>>>> 
>>>>>>> +        mov     ebp,DWORD[4+r9]
>>>>>>> 
>>>>>>> +        mov     eax,r12d
>>>>>>> 
>>>>>>> +        mov     DWORD[rsp],edx
>>>>>>> 
>>>>>>> +        mov     ecx,esi
>>>>>>> 
>>>>>>> +        bswap   ebp
>>>>>>> 
>>>>>>> +        xor     eax,r11d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        and     eax,edi
>>>>>>> 
>>>>>>> +        lea     r13d,[1518500249+r13*1+rdx]
>>>>>>> 
>>>>>>> +        add     r13d,ecx
>>>>>>> 
>>>>>>> +        xor     eax,r12d
>>>>>>> 
>>>>>>> +        rol     edi,30
>>>>>>> 
>>>>>>> +        add     r13d,eax
>>>>>>> 
>>>>>>> +        mov     r14d,DWORD[8+r9]
>>>>>>> 
>>>>>>> +        mov     eax,r11d
>>>>>>> 
>>>>>>> +        mov     DWORD[4+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ecx,r13d
>>>>>>> 
>>>>>>> +        bswap   r14d
>>>>>>> 
>>>>>>> +        xor     eax,edi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        and     eax,esi
>>>>>>> 
>>>>>>> +        lea     r12d,[1518500249+r12*1+rbp]
>>>>>>> 
>>>>>>> +        add     r12d,ecx
>>>>>>> 
>>>>>>> +        xor     eax,r11d
>>>>>>> 
>>>>>>> +        rol     esi,30
>>>>>>> 
>>>>>>> +        add     r12d,eax
>>>>>>> 
>>>>>>> +        mov     edx,DWORD[12+r9]
>>>>>>> 
>>>>>>> +        mov     eax,edi
>>>>>>> 
>>>>>>> +        mov     DWORD[8+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ecx,r12d
>>>>>>> 
>>>>>>> +        bswap   edx
>>>>>>> 
>>>>>>> +        xor     eax,esi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        and     eax,r13d
>>>>>>> 
>>>>>>> +        lea     r11d,[1518500249+r11*1+r14]
>>>>>>> 
>>>>>>> +        add     r11d,ecx
>>>>>>> 
>>>>>>> +        xor     eax,edi
>>>>>>> 
>>>>>>> +        rol     r13d,30
>>>>>>> 
>>>>>>> +        add     r11d,eax
>>>>>>> 
>>>>>>> +        mov     ebp,DWORD[16+r9]
>>>>>>> 
>>>>>>> +        mov     eax,esi
>>>>>>> 
>>>>>>> +        mov     DWORD[12+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ecx,r11d
>>>>>>> 
>>>>>>> +        bswap   ebp
>>>>>>> 
>>>>>>> +        xor     eax,r13d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        and     eax,r12d
>>>>>>> 
>>>>>>> +        lea     edi,[1518500249+rdi*1+rdx]
>>>>>>> 
>>>>>>> +        add     edi,ecx
>>>>>>> 
>>>>>>> +        xor     eax,esi
>>>>>>> 
>>>>>>> +        rol     r12d,30
>>>>>>> 
>>>>>>> +        add     edi,eax
>>>>>>> 
>>>>>>> +        mov     r14d,DWORD[20+r9]
>>>>>>> 
>>>>>>> +        mov     eax,r13d
>>>>>>> 
>>>>>>> +        mov     DWORD[16+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ecx,edi
>>>>>>> 
>>>>>>> +        bswap   r14d
>>>>>>> 
>>>>>>> +        xor     eax,r12d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        and     eax,r11d
>>>>>>> 
>>>>>>> +        lea     esi,[1518500249+rsi*1+rbp]
>>>>>>> 
>>>>>>> +        add     esi,ecx
>>>>>>> 
>>>>>>> +        xor     eax,r13d
>>>>>>> 
>>>>>>> +        rol     r11d,30
>>>>>>> 
>>>>>>> +        add     esi,eax
>>>>>>> 
>>>>>>> +        mov     edx,DWORD[24+r9]
>>>>>>> 
>>>>>>> +        mov     eax,r12d
>>>>>>> 
>>>>>>> +        mov     DWORD[20+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ecx,esi
>>>>>>> 
>>>>>>> +        bswap   edx
>>>>>>> 
>>>>>>> +        xor     eax,r11d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        and     eax,edi
>>>>>>> 
>>>>>>> +        lea     r13d,[1518500249+r13*1+r14]
>>>>>>> 
>>>>>>> +        add     r13d,ecx
>>>>>>> 
>>>>>>> +        xor     eax,r12d
>>>>>>> 
>>>>>>> +        rol     edi,30
>>>>>>> 
>>>>>>> +        add     r13d,eax
>>>>>>> 
>>>>>>> +        mov     ebp,DWORD[28+r9]
>>>>>>> 
>>>>>>> +        mov     eax,r11d
>>>>>>> 
>>>>>>> +        mov     DWORD[24+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ecx,r13d
>>>>>>> 
>>>>>>> +        bswap   ebp
>>>>>>> 
>>>>>>> +        xor     eax,edi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        and     eax,esi
>>>>>>> 
>>>>>>> +        lea     r12d,[1518500249+r12*1+rdx]
>>>>>>> 
>>>>>>> +        add     r12d,ecx
>>>>>>> 
>>>>>>> +        xor     eax,r11d
>>>>>>> 
>>>>>>> +        rol     esi,30
>>>>>>> 
>>>>>>> +        add     r12d,eax
>>>>>>> 
>>>>>>> +        mov     r14d,DWORD[32+r9]
>>>>>>> 
>>>>>>> +        mov     eax,edi
>>>>>>> 
>>>>>>> +        mov     DWORD[28+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ecx,r12d
>>>>>>> 
>>>>>>> +        bswap   r14d
>>>>>>> 
>>>>>>> +        xor     eax,esi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        and     eax,r13d
>>>>>>> 
>>>>>>> +        lea     r11d,[1518500249+r11*1+rbp]
>>>>>>> 
>>>>>>> +        add     r11d,ecx
>>>>>>> 
>>>>>>> +        xor     eax,edi
>>>>>>> 
>>>>>>> +        rol     r13d,30
>>>>>>> 
>>>>>>> +        add     r11d,eax
>>>>>>> 
>>>>>>> +        mov     edx,DWORD[36+r9]
>>>>>>> 
>>>>>>> +        mov     eax,esi
>>>>>>> 
>>>>>>> +        mov     DWORD[32+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ecx,r11d
>>>>>>> 
>>>>>>> +        bswap   edx
>>>>>>> 
>>>>>>> +        xor     eax,r13d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        and     eax,r12d
>>>>>>> 
>>>>>>> +        lea     edi,[1518500249+rdi*1+r14]
>>>>>>> 
>>>>>>> +        add     edi,ecx
>>>>>>> 
>>>>>>> +        xor     eax,esi
>>>>>>> 
>>>>>>> +        rol     r12d,30
>>>>>>> 
>>>>>>> +        add     edi,eax
>>>>>>> 
>>>>>>> +        mov     ebp,DWORD[40+r9]
>>>>>>> 
>>>>>>> +        mov     eax,r13d
>>>>>>> 
>>>>>>> +        mov     DWORD[36+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ecx,edi
>>>>>>> 
>>>>>>> +        bswap   ebp
>>>>>>> 
>>>>>>> +        xor     eax,r12d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        and     eax,r11d
>>>>>>> 
>>>>>>> +        lea     esi,[1518500249+rsi*1+rdx]
>>>>>>> 
>>>>>>> +        add     esi,ecx
>>>>>>> 
>>>>>>> +        xor     eax,r13d
>>>>>>> 
>>>>>>> +        rol     r11d,30
>>>>>>> 
>>>>>>> +        add     esi,eax
>>>>>>> 
>>>>>>> +        mov     r14d,DWORD[44+r9]
>>>>>>> 
>>>>>>> +        mov     eax,r12d
>>>>>>> 
>>>>>>> +        mov     DWORD[40+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ecx,esi
>>>>>>> 
>>>>>>> +        bswap   r14d
>>>>>>> 
>>>>>>> +        xor     eax,r11d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        and     eax,edi
>>>>>>> 
>>>>>>> +        lea     r13d,[1518500249+r13*1+rbp]
>>>>>>> 
>>>>>>> +        add     r13d,ecx
>>>>>>> 
>>>>>>> +        xor     eax,r12d
>>>>>>> 
>>>>>>> +        rol     edi,30
>>>>>>> 
>>>>>>> +        add     r13d,eax
>>>>>>> 
>>>>>>> +        mov     edx,DWORD[48+r9]
>>>>>>> 
>>>>>>> +        mov     eax,r11d
>>>>>>> 
>>>>>>> +        mov     DWORD[44+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ecx,r13d
>>>>>>> 
>>>>>>> +        bswap   edx
>>>>>>> 
>>>>>>> +        xor     eax,edi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        and     eax,esi
>>>>>>> 
>>>>>>> +        lea     r12d,[1518500249+r12*1+r14]
>>>>>>> 
>>>>>>> +        add     r12d,ecx
>>>>>>> 
>>>>>>> +        xor     eax,r11d
>>>>>>> 
>>>>>>> +        rol     esi,30
>>>>>>> 
>>>>>>> +        add     r12d,eax
>>>>>>> 
>>>>>>> +        mov     ebp,DWORD[52+r9]
>>>>>>> 
>>>>>>> +        mov     eax,edi
>>>>>>> 
>>>>>>> +        mov     DWORD[48+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ecx,r12d
>>>>>>> 
>>>>>>> +        bswap   ebp
>>>>>>> 
>>>>>>> +        xor     eax,esi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        and     eax,r13d
>>>>>>> 
>>>>>>> +        lea     r11d,[1518500249+r11*1+rdx]
>>>>>>> 
>>>>>>> +        add     r11d,ecx
>>>>>>> 
>>>>>>> +        xor     eax,edi
>>>>>>> 
>>>>>>> +        rol     r13d,30
>>>>>>> 
>>>>>>> +        add     r11d,eax
>>>>>>> 
>>>>>>> +        mov     r14d,DWORD[56+r9]
>>>>>>> 
>>>>>>> +        mov     eax,esi
>>>>>>> 
>>>>>>> +        mov     DWORD[52+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ecx,r11d
>>>>>>> 
>>>>>>> +        bswap   r14d
>>>>>>> 
>>>>>>> +        xor     eax,r13d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        and     eax,r12d
>>>>>>> 
>>>>>>> +        lea     edi,[1518500249+rdi*1+rbp]
>>>>>>> 
>>>>>>> +        add     edi,ecx
>>>>>>> 
>>>>>>> +        xor     eax,esi
>>>>>>> 
>>>>>>> +        rol     r12d,30
>>>>>>> 
>>>>>>> +        add     edi,eax
>>>>>>> 
>>>>>>> +        mov     edx,DWORD[60+r9]
>>>>>>> 
>>>>>>> +        mov     eax,r13d
>>>>>>> 
>>>>>>> +        mov     DWORD[56+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ecx,edi
>>>>>>> 
>>>>>>> +        bswap   edx
>>>>>>> 
>>>>>>> +        xor     eax,r12d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        and     eax,r11d
>>>>>>> 
>>>>>>> +        lea     esi,[1518500249+rsi*1+r14]
>>>>>>> 
>>>>>>> +        add     esi,ecx
>>>>>>> 
>>>>>>> +        xor     eax,r13d
>>>>>>> 
>>>>>>> +        rol     r11d,30
>>>>>>> 
>>>>>>> +        add     esi,eax
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r12d
>>>>>>> 
>>>>>>> +        mov     DWORD[60+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ecx,esi
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r11d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        and     eax,edi
>>>>>>> 
>>>>>>> +        lea     r13d,[1518500249+r13*1+rdx]
>>>>>>> 
>>>>>>> +        rol     edi,30
>>>>>>> 
>>>>>>> +        xor     eax,r12d
>>>>>>> 
>>>>>>> +        add     r13d,ecx
>>>>>>> 
>>>>>>> +        rol     ebp,1
>>>>>>> 
>>>>>>> +        add     r13d,eax
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r11d
>>>>>>> 
>>>>>>> +        mov     DWORD[rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ecx,r13d
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,edi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        and     eax,esi
>>>>>>> 
>>>>>>> +        lea     r12d,[1518500249+r12*1+rbp]
>>>>>>> 
>>>>>>> +        rol     esi,30
>>>>>>> 
>>>>>>> +        xor     eax,r11d
>>>>>>> 
>>>>>>> +        add     r12d,ecx
>>>>>>> 
>>>>>>> +        rol     r14d,1
>>>>>>> 
>>>>>>> +        add     r12d,eax
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,edi
>>>>>>> 
>>>>>>> +        mov     DWORD[4+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ecx,r12d
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,esi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        and     eax,r13d
>>>>>>> 
>>>>>>> +        lea     r11d,[1518500249+r11*1+r14]
>>>>>>> 
>>>>>>> +        rol     r13d,30
>>>>>>> 
>>>>>>> +        xor     eax,edi
>>>>>>> 
>>>>>>> +        add     r11d,ecx
>>>>>>> 
>>>>>>> +        rol     edx,1
>>>>>>> 
>>>>>>> +        add     r11d,eax
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,esi
>>>>>>> 
>>>>>>> +        mov     DWORD[8+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ecx,r11d
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r13d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        and     eax,r12d
>>>>>>> 
>>>>>>> +        lea     edi,[1518500249+rdi*1+rdx]
>>>>>>> 
>>>>>>> +        rol     r12d,30
>>>>>>> 
>>>>>>> +        xor     eax,esi
>>>>>>> 
>>>>>>> +        add     edi,ecx
>>>>>>> 
>>>>>>> +        rol     ebp,1
>>>>>>> 
>>>>>>> +        add     edi,eax
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r13d
>>>>>>> 
>>>>>>> +        mov     DWORD[12+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ecx,edi
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r12d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        and     eax,r11d
>>>>>>> 
>>>>>>> +        lea     esi,[1518500249+rsi*1+rbp]
>>>>>>> 
>>>>>>> +        rol     r11d,30
>>>>>>> 
>>>>>>> +        xor     eax,r13d
>>>>>>> 
>>>>>>> +        add     esi,ecx
>>>>>>> 
>>>>>>> +        rol     r14d,1
>>>>>>> 
>>>>>>> +        add     esi,eax
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,edi
>>>>>>> 
>>>>>>> +        mov     DWORD[16+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ecx,esi
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r12d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[24+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,esi
>>>>>>> 
>>>>>>> +        mov     DWORD[20+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ecx,r13d
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r11d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[28+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r13d
>>>>>>> 
>>>>>>> +        mov     DWORD[24+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ecx,r12d
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,edi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[32+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r12d
>>>>>>> 
>>>>>>> +        mov     DWORD[28+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ecx,r11d
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,esi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[36+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r11d
>>>>>>> 
>>>>>>> +        mov     DWORD[32+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ecx,edi
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r13d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[40+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,edi
>>>>>>> 
>>>>>>> +        mov     DWORD[36+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ecx,esi
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r12d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[44+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,esi
>>>>>>> 
>>>>>>> +        mov     DWORD[40+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ecx,r13d
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r11d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[48+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r13d
>>>>>>> 
>>>>>>> +        mov     DWORD[44+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ecx,r12d
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,edi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[52+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r12d
>>>>>>> 
>>>>>>> +        mov     DWORD[48+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ecx,r11d
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,esi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[56+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r11d
>>>>>>> 
>>>>>>> +        mov     DWORD[52+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ecx,edi
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r13d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[60+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,edi
>>>>>>> 
>>>>>>> +        mov     DWORD[56+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ecx,esi
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r12d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[rsp]
>>>>>>> 
>>>>>>> +        mov     eax,esi
>>>>>>> 
>>>>>>> +        mov     DWORD[60+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ecx,r13d
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r11d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[4+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r13d
>>>>>>> 
>>>>>>> +        mov     DWORD[rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ecx,r12d
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,edi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[8+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r12d
>>>>>>> 
>>>>>>> +        mov     DWORD[4+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ecx,r11d
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,esi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[12+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r11d
>>>>>>> 
>>>>>>> +        mov     DWORD[8+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ecx,edi
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r13d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[16+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,edi
>>>>>>> 
>>>>>>> +        mov     DWORD[12+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ecx,esi
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r12d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[20+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,esi
>>>>>>> 
>>>>>>> +        mov     DWORD[16+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ecx,r13d
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r11d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[24+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r13d
>>>>>>> 
>>>>>>> +        mov     DWORD[20+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ecx,r12d
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,edi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[28+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r12d
>>>>>>> 
>>>>>>> +        mov     DWORD[24+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ecx,r11d
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,esi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[32+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r11d
>>>>>>> 
>>>>>>> +        mov     DWORD[28+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ecx,edi
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r13d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[36+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r12d
>>>>>>> 
>>>>>>> +        mov     DWORD[32+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ebx,r12d
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        and     eax,r11d
>>>>>>> 
>>>>>>> +        mov     ecx,esi
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        lea     r13d,[((-1894007588))+r13*1+rbp]
>>>>>>> 
>>>>>>> +        xor     ebx,r11d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     r13d,eax
>>>>>>> 
>>>>>>> +        rol     r14d,1
>>>>>>> 
>>>>>>> +        and     ebx,edi
>>>>>>> 
>>>>>>> +        add     r13d,ecx
>>>>>>> 
>>>>>>> +        rol     edi,30
>>>>>>> 
>>>>>>> +        add     r13d,ebx
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r11d
>>>>>>> 
>>>>>>> +        mov     DWORD[36+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ebx,r11d
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        and     eax,edi
>>>>>>> 
>>>>>>> +        mov     ecx,r13d
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        lea     r12d,[((-1894007588))+r12*1+r14]
>>>>>>> 
>>>>>>> +        xor     ebx,edi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     r12d,eax
>>>>>>> 
>>>>>>> +        rol     edx,1
>>>>>>> 
>>>>>>> +        and     ebx,esi
>>>>>>> 
>>>>>>> +        add     r12d,ecx
>>>>>>> 
>>>>>>> +        rol     esi,30
>>>>>>> 
>>>>>>> +        add     r12d,ebx
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,edi
>>>>>>> 
>>>>>>> +        mov     DWORD[40+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ebx,edi
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        and     eax,esi
>>>>>>> 
>>>>>>> +        mov     ecx,r12d
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        lea     r11d,[((-1894007588))+r11*1+rdx]
>>>>>>> 
>>>>>>> +        xor     ebx,esi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     r11d,eax
>>>>>>> 
>>>>>>> +        rol     ebp,1
>>>>>>> 
>>>>>>> +        and     ebx,r13d
>>>>>>> 
>>>>>>> +        add     r11d,ecx
>>>>>>> 
>>>>>>> +        rol     r13d,30
>>>>>>> 
>>>>>>> +        add     r11d,ebx
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,esi
>>>>>>> 
>>>>>>> +        mov     DWORD[44+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ebx,esi
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        and     eax,r13d
>>>>>>> 
>>>>>>> +        mov     ecx,r11d
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        lea     edi,[((-1894007588))+rdi*1+rbp]
>>>>>>> 
>>>>>>> +        xor     ebx,r13d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     edi,eax
>>>>>>> 
>>>>>>> +        rol     r14d,1
>>>>>>> 
>>>>>>> +        and     ebx,r12d
>>>>>>> 
>>>>>>> +        add     edi,ecx
>>>>>>> 
>>>>>>> +        rol     r12d,30
>>>>>>> 
>>>>>>> +        add     edi,ebx
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r13d
>>>>>>> 
>>>>>>> +        mov     DWORD[48+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ebx,r13d
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        and     eax,r12d
>>>>>>> 
>>>>>>> +        mov     ecx,edi
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        lea     esi,[((-1894007588))+rsi*1+r14]
>>>>>>> 
>>>>>>> +        xor     ebx,r12d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     esi,eax
>>>>>>> 
>>>>>>> +        rol     edx,1
>>>>>>> 
>>>>>>> +        and     ebx,r11d
>>>>>>> 
>>>>>>> +        add     esi,ecx
>>>>>>> 
>>>>>>> +        rol     r11d,30
>>>>>>> 
>>>>>>> +        add     esi,ebx
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r12d
>>>>>>> 
>>>>>>> +        mov     DWORD[52+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ebx,r12d
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[rsp]
>>>>>>> 
>>>>>>> +        and     eax,r11d
>>>>>>> 
>>>>>>> +        mov     ecx,esi
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        lea     r13d,[((-1894007588))+r13*1+rdx]
>>>>>>> 
>>>>>>> +        xor     ebx,r11d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     r13d,eax
>>>>>>> 
>>>>>>> +        rol     ebp,1
>>>>>>> 
>>>>>>> +        and     ebx,edi
>>>>>>> 
>>>>>>> +        add     r13d,ecx
>>>>>>> 
>>>>>>> +        rol     edi,30
>>>>>>> 
>>>>>>> +        add     r13d,ebx
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r11d
>>>>>>> 
>>>>>>> +        mov     DWORD[56+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ebx,r11d
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        and     eax,edi
>>>>>>> 
>>>>>>> +        mov     ecx,r13d
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        lea     r12d,[((-1894007588))+r12*1+rbp]
>>>>>>> 
>>>>>>> +        xor     ebx,edi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     r12d,eax
>>>>>>> 
>>>>>>> +        rol     r14d,1
>>>>>>> 
>>>>>>> +        and     ebx,esi
>>>>>>> 
>>>>>>> +        add     r12d,ecx
>>>>>>> 
>>>>>>> +        rol     esi,30
>>>>>>> 
>>>>>>> +        add     r12d,ebx
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[rsp]
>>>>>>> 
>>>>>>> +        mov     eax,edi
>>>>>>> 
>>>>>>> +        mov     DWORD[60+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ebx,edi
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        and     eax,esi
>>>>>>> 
>>>>>>> +        mov     ecx,r12d
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        lea     r11d,[((-1894007588))+r11*1+r14]
>>>>>>> 
>>>>>>> +        xor     ebx,esi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     r11d,eax
>>>>>>> 
>>>>>>> +        rol     edx,1
>>>>>>> 
>>>>>>> +        and     ebx,r13d
>>>>>>> 
>>>>>>> +        add     r11d,ecx
>>>>>>> 
>>>>>>> +        rol     r13d,30
>>>>>>> 
>>>>>>> +        add     r11d,ebx
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,esi
>>>>>>> 
>>>>>>> +        mov     DWORD[rsp],edx
>>>>>>> 
>>>>>>> +        mov     ebx,esi
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        and     eax,r13d
>>>>>>> 
>>>>>>> +        mov     ecx,r11d
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        lea     edi,[((-1894007588))+rdi*1+rdx]
>>>>>>> 
>>>>>>> +        xor     ebx,r13d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     edi,eax
>>>>>>> 
>>>>>>> +        rol     ebp,1
>>>>>>> 
>>>>>>> +        and     ebx,r12d
>>>>>>> 
>>>>>>> +        add     edi,ecx
>>>>>>> 
>>>>>>> +        rol     r12d,30
>>>>>>> 
>>>>>>> +        add     edi,ebx
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r13d
>>>>>>> 
>>>>>>> +        mov     DWORD[4+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ebx,r13d
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        and     eax,r12d
>>>>>>> 
>>>>>>> +        mov     ecx,edi
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        lea     esi,[((-1894007588))+rsi*1+rbp]
>>>>>>> 
>>>>>>> +        xor     ebx,r12d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     esi,eax
>>>>>>> 
>>>>>>> +        rol     r14d,1
>>>>>>> 
>>>>>>> +        and     ebx,r11d
>>>>>>> 
>>>>>>> +        add     esi,ecx
>>>>>>> 
>>>>>>> +        rol     r11d,30
>>>>>>> 
>>>>>>> +        add     esi,ebx
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r12d
>>>>>>> 
>>>>>>> +        mov     DWORD[8+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ebx,r12d
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        and     eax,r11d
>>>>>>> 
>>>>>>> +        mov     ecx,esi
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        lea     r13d,[((-1894007588))+r13*1+r14]
>>>>>>> 
>>>>>>> +        xor     ebx,r11d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     r13d,eax
>>>>>>> 
>>>>>>> +        rol     edx,1
>>>>>>> 
>>>>>>> +        and     ebx,edi
>>>>>>> 
>>>>>>> +        add     r13d,ecx
>>>>>>> 
>>>>>>> +        rol     edi,30
>>>>>>> 
>>>>>>> +        add     r13d,ebx
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r11d
>>>>>>> 
>>>>>>> +        mov     DWORD[12+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ebx,r11d
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        and     eax,edi
>>>>>>> 
>>>>>>> +        mov     ecx,r13d
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        lea     r12d,[((-1894007588))+r12*1+rdx]
>>>>>>> 
>>>>>>> +        xor     ebx,edi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     r12d,eax
>>>>>>> 
>>>>>>> +        rol     ebp,1
>>>>>>> 
>>>>>>> +        and     ebx,esi
>>>>>>> 
>>>>>>> +        add     r12d,ecx
>>>>>>> 
>>>>>>> +        rol     esi,30
>>>>>>> 
>>>>>>> +        add     r12d,ebx
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,edi
>>>>>>> 
>>>>>>> +        mov     DWORD[16+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ebx,edi
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        and     eax,esi
>>>>>>> 
>>>>>>> +        mov     ecx,r12d
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        lea     r11d,[((-1894007588))+r11*1+rbp]
>>>>>>> 
>>>>>>> +        xor     ebx,esi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     r11d,eax
>>>>>>> 
>>>>>>> +        rol     r14d,1
>>>>>>> 
>>>>>>> +        and     ebx,r13d
>>>>>>> 
>>>>>>> +        add     r11d,ecx
>>>>>>> 
>>>>>>> +        rol     r13d,30
>>>>>>> 
>>>>>>> +        add     r11d,ebx
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,esi
>>>>>>> 
>>>>>>> +        mov     DWORD[20+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ebx,esi
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        and     eax,r13d
>>>>>>> 
>>>>>>> +        mov     ecx,r11d
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        lea     edi,[((-1894007588))+rdi*1+r14]
>>>>>>> 
>>>>>>> +        xor     ebx,r13d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     edi,eax
>>>>>>> 
>>>>>>> +        rol     edx,1
>>>>>>> 
>>>>>>> +        and     ebx,r12d
>>>>>>> 
>>>>>>> +        add     edi,ecx
>>>>>>> 
>>>>>>> +        rol     r12d,30
>>>>>>> 
>>>>>>> +        add     edi,ebx
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r13d
>>>>>>> 
>>>>>>> +        mov     DWORD[24+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ebx,r13d
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        and     eax,r12d
>>>>>>> 
>>>>>>> +        mov     ecx,edi
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        lea     esi,[((-1894007588))+rsi*1+rdx]
>>>>>>> 
>>>>>>> +        xor     ebx,r12d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     esi,eax
>>>>>>> 
>>>>>>> +        rol     ebp,1
>>>>>>> 
>>>>>>> +        and     ebx,r11d
>>>>>>> 
>>>>>>> +        add     esi,ecx
>>>>>>> 
>>>>>>> +        rol     r11d,30
>>>>>>> 
>>>>>>> +        add     esi,ebx
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r12d
>>>>>>> 
>>>>>>> +        mov     DWORD[28+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ebx,r12d
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        and     eax,r11d
>>>>>>> 
>>>>>>> +        mov     ecx,esi
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[rsp]
>>>>>>> 
>>>>>>> +        lea     r13d,[((-1894007588))+r13*1+rbp]
>>>>>>> 
>>>>>>> +        xor     ebx,r11d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     r13d,eax
>>>>>>> 
>>>>>>> +        rol     r14d,1
>>>>>>> 
>>>>>>> +        and     ebx,edi
>>>>>>> 
>>>>>>> +        add     r13d,ecx
>>>>>>> 
>>>>>>> +        rol     edi,30
>>>>>>> 
>>>>>>> +        add     r13d,ebx
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r11d
>>>>>>> 
>>>>>>> +        mov     DWORD[32+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ebx,r11d
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        and     eax,edi
>>>>>>> 
>>>>>>> +        mov     ecx,r13d
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        lea     r12d,[((-1894007588))+r12*1+r14]
>>>>>>> 
>>>>>>> +        xor     ebx,edi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     r12d,eax
>>>>>>> 
>>>>>>> +        rol     edx,1
>>>>>>> 
>>>>>>> +        and     ebx,esi
>>>>>>> 
>>>>>>> +        add     r12d,ecx
>>>>>>> 
>>>>>>> +        rol     esi,30
>>>>>>> 
>>>>>>> +        add     r12d,ebx
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,edi
>>>>>>> 
>>>>>>> +        mov     DWORD[36+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ebx,edi
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        and     eax,esi
>>>>>>> 
>>>>>>> +        mov     ecx,r12d
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        lea     r11d,[((-1894007588))+r11*1+rdx]
>>>>>>> 
>>>>>>> +        xor     ebx,esi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     r11d,eax
>>>>>>> 
>>>>>>> +        rol     ebp,1
>>>>>>> 
>>>>>>> +        and     ebx,r13d
>>>>>>> 
>>>>>>> +        add     r11d,ecx
>>>>>>> 
>>>>>>> +        rol     r13d,30
>>>>>>> 
>>>>>>> +        add     r11d,ebx
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,esi
>>>>>>> 
>>>>>>> +        mov     DWORD[40+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ebx,esi
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        and     eax,r13d
>>>>>>> 
>>>>>>> +        mov     ecx,r11d
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        lea     edi,[((-1894007588))+rdi*1+rbp]
>>>>>>> 
>>>>>>> +        xor     ebx,r13d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     edi,eax
>>>>>>> 
>>>>>>> +        rol     r14d,1
>>>>>>> 
>>>>>>> +        and     ebx,r12d
>>>>>>> 
>>>>>>> +        add     edi,ecx
>>>>>>> 
>>>>>>> +        rol     r12d,30
>>>>>>> 
>>>>>>> +        add     edi,ebx
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r13d
>>>>>>> 
>>>>>>> +        mov     DWORD[44+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ebx,r13d
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        and     eax,r12d
>>>>>>> 
>>>>>>> +        mov     ecx,edi
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        lea     esi,[((-1894007588))+rsi*1+r14]
>>>>>>> 
>>>>>>> +        xor     ebx,r12d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     esi,eax
>>>>>>> 
>>>>>>> +        rol     edx,1
>>>>>>> 
>>>>>>> +        and     ebx,r11d
>>>>>>> 
>>>>>>> +        add     esi,ecx
>>>>>>> 
>>>>>>> +        rol     r11d,30
>>>>>>> 
>>>>>>> +        add     esi,ebx
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,edi
>>>>>>> 
>>>>>>> +        mov     DWORD[48+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ecx,esi
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r12d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[56+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,esi
>>>>>>> 
>>>>>>> +        mov     DWORD[52+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ecx,r13d
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r11d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[60+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r13d
>>>>>>> 
>>>>>>> +        mov     DWORD[56+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ecx,r12d
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,edi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r12d
>>>>>>> 
>>>>>>> +        mov     DWORD[60+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ecx,r11d
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,esi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[4+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r11d
>>>>>>> 
>>>>>>> +        mov     DWORD[rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ecx,edi
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r13d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[8+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,edi
>>>>>>> 
>>>>>>> +        mov     DWORD[4+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ecx,esi
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r12d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[12+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,esi
>>>>>>> 
>>>>>>> +        mov     DWORD[8+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ecx,r13d
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r11d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[16+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r13d
>>>>>>> 
>>>>>>> +        mov     DWORD[12+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ecx,r12d
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,edi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[20+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r12d
>>>>>>> 
>>>>>>> +        mov     DWORD[16+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ecx,r11d
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,esi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[24+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r11d
>>>>>>> 
>>>>>>> +        mov     DWORD[20+rsp],edx
>>>>>>> 
>>>>>>> +        mov     ecx,edi
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r13d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[28+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,edi
>>>>>>> 
>>>>>>> +        mov     DWORD[24+rsp],ebp
>>>>>>> 
>>>>>>> +        mov     ecx,esi
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r12d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[32+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,esi
>>>>>>> 
>>>>>>> +        mov     DWORD[28+rsp],r14d
>>>>>>> 
>>>>>>> +        mov     ecx,r13d
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r11d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[36+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     ecx,r12d
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,edi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[40+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     ecx,r11d
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,esi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[44+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     ecx,edi
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r13d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[48+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,edi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     ecx,esi
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r12d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[52+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,esi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     ecx,r13d
>>>>>>> 
>>>>>>> +        xor     r14d,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,r11d
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[56+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     ecx,r12d
>>>>>>> 
>>>>>>> +        xor     edx,DWORD[rsp]
>>>>>>> 
>>>>>>> +        xor     eax,edi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        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[60+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     ecx,r11d
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        xor     eax,esi
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        xor     ebp,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        lea     edi,[((-899497514))+rdi*1+rdx]
>>>>>>> 
>>>>>>> +        xor     eax,r13d
>>>>>>> 
>>>>>>> +        add     edi,ecx
>>>>>>> 
>>>>>>> +        rol     r12d,30
>>>>>>> 
>>>>>>> +        add     edi,eax
>>>>>>> 
>>>>>>> +        rol     ebp,1
>>>>>>> 
>>>>>>> +        mov     eax,r11d
>>>>>>> 
>>>>>>> +        mov     ecx,edi
>>>>>>> 
>>>>>>> +        xor     eax,r13d
>>>>>>> 
>>>>>>> +        lea     esi,[((-899497514))+rsi*1+rbp]
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        xor     eax,r12d
>>>>>>> 
>>>>>>> +        add     esi,ecx
>>>>>>> 
>>>>>>> +        rol     r11d,30
>>>>>>> 
>>>>>>> +        add     esi,eax
>>>>>>> 
>>>>>>> +        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,[64+r9]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$loop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +sha1_block_data_order_shaext:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_sha1_block_data_order_shaext:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +_shaext_shortcut:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[((-72))+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-8-64)+rax],xmm6
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-8-48)+rax],xmm7
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-8-32)+rax],xmm8
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-8-16)+rax],xmm9
>>>>>>> 
>>>>>>> +$L$prologue_shaext:
>>>>>>> 
>>>>>>> +        movdqu  xmm0,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[16+rdi]
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[((K_XX_XX+160))]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  xmm4,XMMWORD[rsi]
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,27
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[16+rsi]
>>>>>>> 
>>>>>>> +        pshufd  xmm1,xmm1,27
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[32+rsi]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,227
>>>>>>> 
>>>>>>> +        movdqu  xmm7,XMMWORD[48+rsi]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,235
>>>>>>> 
>>>>>>> +DB      102,15,56,0,243
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm1
>>>>>>> 
>>>>>>> +DB      102,15,56,0,251
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_shaext
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$oop_shaext:
>>>>>>> 
>>>>>>> +        dec     rdx
>>>>>>> 
>>>>>>> +        lea     r8,[64+rsi]
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm4
>>>>>>> 
>>>>>>> +        cmovne  rsi,r8
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm0
>>>>>>> 
>>>>>>> +DB      15,56,201,229
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,193,0
>>>>>>> 
>>>>>>> +DB      15,56,200,213
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +DB      15,56,201,238
>>>>>>> 
>>>>>>> +DB      15,56,202,231
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,194,0
>>>>>>> 
>>>>>>> +DB      15,56,200,206
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm7
>>>>>>> 
>>>>>>> +DB      15,56,202,236
>>>>>>> 
>>>>>>> +DB      15,56,201,247
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,193,0
>>>>>>> 
>>>>>>> +DB      15,56,200,215
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>> 
>>>>>>> +DB      15,56,201,252
>>>>>>> 
>>>>>>> +DB      15,56,202,245
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,194,0
>>>>>>> 
>>>>>>> +DB      15,56,200,204
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm5
>>>>>>> 
>>>>>>> +DB      15,56,202,254
>>>>>>> 
>>>>>>> +DB      15,56,201,229
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,193,0
>>>>>>> 
>>>>>>> +DB      15,56,200,213
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +DB      15,56,201,238
>>>>>>> 
>>>>>>> +DB      15,56,202,231
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,194,1
>>>>>>> 
>>>>>>> +DB      15,56,200,206
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm7
>>>>>>> 
>>>>>>> +DB      15,56,202,236
>>>>>>> 
>>>>>>> +DB      15,56,201,247
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,193,1
>>>>>>> 
>>>>>>> +DB      15,56,200,215
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>> 
>>>>>>> +DB      15,56,201,252
>>>>>>> 
>>>>>>> +DB      15,56,202,245
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,194,1
>>>>>>> 
>>>>>>> +DB      15,56,200,204
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm5
>>>>>>> 
>>>>>>> +DB      15,56,202,254
>>>>>>> 
>>>>>>> +DB      15,56,201,229
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,193,1
>>>>>>> 
>>>>>>> +DB      15,56,200,213
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +DB      15,56,201,238
>>>>>>> 
>>>>>>> +DB      15,56,202,231
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,194,1
>>>>>>> 
>>>>>>> +DB      15,56,200,206
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm7
>>>>>>> 
>>>>>>> +DB      15,56,202,236
>>>>>>> 
>>>>>>> +DB      15,56,201,247
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,193,2
>>>>>>> 
>>>>>>> +DB      15,56,200,215
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>> 
>>>>>>> +DB      15,56,201,252
>>>>>>> 
>>>>>>> +DB      15,56,202,245
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,194,2
>>>>>>> 
>>>>>>> +DB      15,56,200,204
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm5
>>>>>>> 
>>>>>>> +DB      15,56,202,254
>>>>>>> 
>>>>>>> +DB      15,56,201,229
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,193,2
>>>>>>> 
>>>>>>> +DB      15,56,200,213
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +DB      15,56,201,238
>>>>>>> 
>>>>>>> +DB      15,56,202,231
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,194,2
>>>>>>> 
>>>>>>> +DB      15,56,200,206
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm7
>>>>>>> 
>>>>>>> +DB      15,56,202,236
>>>>>>> 
>>>>>>> +DB      15,56,201,247
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,193,2
>>>>>>> 
>>>>>>> +DB      15,56,200,215
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm4
>>>>>>> 
>>>>>>> +DB      15,56,201,252
>>>>>>> 
>>>>>>> +DB      15,56,202,245
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,194,3
>>>>>>> 
>>>>>>> +DB      15,56,200,204
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm5
>>>>>>> 
>>>>>>> +DB      15,56,202,254
>>>>>>> 
>>>>>>> +        movdqu  xmm4,XMMWORD[rsi]
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,193,3
>>>>>>> 
>>>>>>> +DB      15,56,200,213
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[16+rsi]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,227
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,194,3
>>>>>>> 
>>>>>>> +DB      15,56,200,206
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[32+rsi]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,235
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,193,3
>>>>>>> 
>>>>>>> +DB      15,56,200,215
>>>>>>> 
>>>>>>> +        movdqu  xmm7,XMMWORD[48+rsi]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,243
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +DB      15,58,204,194,3
>>>>>>> 
>>>>>>> +DB      65,15,56,200,201
>>>>>>> 
>>>>>>> +DB      102,15,56,0,251
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_shaext
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,27
>>>>>>> 
>>>>>>> +        pshufd  xmm1,xmm1,27
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rdi],xmm0
>>>>>>> 
>>>>>>> +        movd    DWORD[16+rdi],xmm1
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[((-8-64))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[((-8-48))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[((-8-32))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[((-8-16))+rax]
>>>>>>> 
>>>>>>> +        mov     rsp,rax
>>>>>>> 
>>>>>>> +$L$epilogue_shaext:
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$SEH_end_sha1_block_data_order_shaext:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +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:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +_ssse3_shortcut:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r11,rsp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[((-160))+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-40-96)+r11],xmm6
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-40-80)+r11],xmm7
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-40-64)+r11],xmm8
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-40-48)+r11],xmm9
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-40-32)+r11],xmm10
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-40-16)+r11],xmm11
>>>>>>> 
>>>>>>> +$L$prologue_ssse3:
>>>>>>> 
>>>>>>> +        and     rsp,-64
>>>>>>> 
>>>>>>> +        mov     r8,rdi
>>>>>>> 
>>>>>>> +        mov     r9,rsi
>>>>>>> 
>>>>>>> +        mov     r10,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        shl     r10,6
>>>>>>> 
>>>>>>> +        add     r10,r9
>>>>>>> 
>>>>>>> +        lea     r14,[((K_XX_XX+64))]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[16+r8]
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        and     esi,edi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm6,XMMWORD[64+r14]
>>>>>>> 
>>>>>>> +        movdqa  xmm9,XMMWORD[((-64))+r14]
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +        add     r9,64
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,0,222
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm9
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm9
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[rsp],xmm0
>>>>>>> 
>>>>>>> +        psubd   xmm0,xmm9
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm1
>>>>>>> 
>>>>>>> +        psubd   xmm1,xmm9
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm2
>>>>>>> 
>>>>>>> +        psubd   xmm2,xmm9
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_ssse3
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$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[rsp]
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm4,xmm1
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,esi
>>>>>>> 
>>>>>>> +        psrldq  xmm8,4
>>>>>>> 
>>>>>>> +        and     edi,ebx
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm2
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        mov     esi,ebp
>>>>>>> 
>>>>>>> +        add     edx,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm8
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm9
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        and     esi,eax
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm4
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm4
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        pslldq  xmm10,12
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm4
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        psrld   xmm8,31
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,esi
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>> 
>>>>>>> +        and     edi,ebp
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        psrld   xmm10,30
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        por     xmm4,xmm8
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        mov     esi,ecx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        pslld   xmm9,2
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm10
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        movdqa  xmm10,XMMWORD[((-64))+r14]
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        and     esi,edx
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm9
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        pshufd  xmm5,xmm1,238
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm4
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm5,xmm2
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,esi
>>>>>>> 
>>>>>>> +        psrldq  xmm9,4
>>>>>>> 
>>>>>>> +        and     edi,ecx
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm1
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm3
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        mov     esi,eax
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm9
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[rsp],xmm10
>>>>>>> 
>>>>>>> +        add     ebp,edi
>>>>>>> 
>>>>>>> +        and     esi,ebx
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm5
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm5
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        pslldq  xmm8,12
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm5
>>>>>>> 
>>>>>>> +        mov     edi,ebp
>>>>>>> 
>>>>>>> +        add     edx,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        psrld   xmm9,31
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,esi
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm8
>>>>>>> 
>>>>>>> +        and     edi,eax
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        psrld   xmm8,30
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        por     xmm5,xmm9
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        mov     esi,edx
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        pslld   xmm10,2
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm8
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        movdqa  xmm8,XMMWORD[((-32))+r14]
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,edi
>>>>>>> 
>>>>>>> +        and     esi,ebp
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm10
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        pshufd  xmm6,xmm2,238
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm5
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm6,xmm3
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        psrldq  xmm10,4
>>>>>>> 
>>>>>>> +        and     edi,edx
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm2
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm4
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        mov     esi,ebx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm10
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm8
>>>>>>> 
>>>>>>> +        add     eax,edi
>>>>>>> 
>>>>>>> +        and     esi,ecx
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm6
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm6
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        pslldq  xmm9,12
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm6
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        psrld   xmm10,31
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,esi
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm9
>>>>>>> 
>>>>>>> +        and     edi,ebx
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        psrld   xmm9,30
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        por     xmm6,xmm10
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        mov     esi,ebp
>>>>>>> 
>>>>>>> +        add     edx,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        pslld   xmm8,2
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm9
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        movdqa  xmm9,XMMWORD[((-32))+r14]
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        and     esi,eax
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm8
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        pshufd  xmm7,xmm3,238
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm6
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm7,xmm4
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,esi
>>>>>>> 
>>>>>>> +        psrldq  xmm8,4
>>>>>>> 
>>>>>>> +        and     edi,ebp
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm3
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm5
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        mov     esi,ecx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm8
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm9
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        and     esi,edx
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm7
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm7
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        pslldq  xmm10,12
>>>>>>> 
>>>>>>> +        paddd   xmm7,xmm7
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        psrld   xmm8,31
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,esi
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm10
>>>>>>> 
>>>>>>> +        and     edi,ecx
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        psrld   xmm10,30
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        por     xmm7,xmm8
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        mov     esi,eax
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        pslld   xmm9,2
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm10
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        movdqa  xmm10,XMMWORD[((-32))+r14]
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,edi
>>>>>>> 
>>>>>>> +        and     esi,ebx
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm9
>>>>>>> 
>>>>>>> +        pshufd  xmm9,xmm6,238
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        mov     edi,ebp
>>>>>>> 
>>>>>>> +        add     edx,DWORD[rsp]
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm9,xmm7
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        add     edx,esi
>>>>>>> 
>>>>>>> +        and     edi,eax
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm7
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm9
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        mov     esi,edx
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm0
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm10
>>>>>>> 
>>>>>>> +        add     ecx,edi
>>>>>>> 
>>>>>>> +        and     esi,ebp
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        pslld   xmm0,2
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        psrld   xmm9,30
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        por     xmm0,xmm9
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        pshufd  xmm10,xmm7,238
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        and     edi,edx
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        mov     esi,ebx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,edi
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm5
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm10,xmm0
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        add     ebp,esi
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm0
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm10
>>>>>>> 
>>>>>>> +        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[rsp],xmm8
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        pslld   xmm1,2
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        psrld   xmm10,30
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,esi
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        por     xmm1,xmm10
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        pshufd  xmm8,xmm0,238
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        mov     esi,ecx
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm6
>>>>>>> 
>>>>>>> +        add     eax,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm8,xmm1
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>> 
>>>>>>> +        add     eax,esi
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        movdqa  xmm10,XMMWORD[r14]
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm1
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm8
>>>>>>> 
>>>>>>> +        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[16+rsp],xmm9
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        pslld   xmm2,2
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        mov     edi,ebp
>>>>>>> 
>>>>>>> +        psrld   xmm8,30
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        por     xmm2,xmm8
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        pshufd  xmm9,xmm1,238
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        mov     esi,edx
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,edi
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm7
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm9,xmm2
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm4
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm2
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm9
>>>>>>> 
>>>>>>> +        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[32+rsp],xmm10
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        pslld   xmm3,2
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +        psrld   xmm9,30
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,esi
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        por     xmm3,xmm9
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        pshufd  xmm10,xmm2,238
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        mov     esi,ebp
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm0
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[rsp]
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm10,xmm3
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>> 
>>>>>>> +        add     ecx,esi
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm3
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm10
>>>>>>> 
>>>>>>> +        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[48+rsp],xmm8
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        pslld   xmm4,2
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        psrld   xmm10,30
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,esi
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        por     xmm4,xmm10
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        pshufd  xmm8,xmm3,238
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        mov     esi,eax
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,edi
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm1
>>>>>>> 
>>>>>>> +        add     edx,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm8,xmm4
>>>>>>> 
>>>>>>> +        mov     edi,ebp
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm6
>>>>>>> 
>>>>>>> +        add     edx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm9
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm4
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm8
>>>>>>> 
>>>>>>> +        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[rsp],xmm9
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        pslld   xmm5,2
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        psrld   xmm8,30
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        por     xmm5,xmm8
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        pshufd  xmm9,xmm4,238
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        mov     esi,ebx
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,edi
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm2
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        and     esi,ecx
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm9,xmm5
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm7
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,esi
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm5
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm9
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        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[16+rsp],xmm10
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        pslld   xmm6,2
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        psrld   xmm9,30
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        and     esi,eax
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        por     xmm6,xmm9
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        pshufd  xmm10,xmm5,238
>>>>>>> 
>>>>>>> +        add     ecx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        and     edi,ebp
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        mov     esi,ecx
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm3
>>>>>>> 
>>>>>>> +        add     eax,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        and     esi,edx
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm10,xmm6
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm0
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,esi
>>>>>>> 
>>>>>>> +        movdqa  xmm9,XMMWORD[32+r14]
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm6
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm10
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        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[32+rsp],xmm8
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        pslld   xmm7,2
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        psrld   xmm10,30
>>>>>>> 
>>>>>>> +        add     edx,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        and     esi,ebx
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        por     xmm7,xmm10
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        mov     edi,ebp
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        pshufd  xmm8,xmm6,238
>>>>>>> 
>>>>>>> +        add     edx,esi
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        and     edi,eax
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        mov     esi,edx
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[rsp]
>>>>>>> 
>>>>>>> +        and     esi,ebp
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm8,xmm7
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm9
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm7
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm8
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        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[48+rsp],xmm9
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,edi
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        pslld   xmm0,2
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        psrld   xmm8,30
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        and     esi,ecx
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        por     xmm0,xmm8
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        pshufd  xmm9,xmm7,238
>>>>>>> 
>>>>>>> +        add     ebp,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        and     edi,ebx
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        mov     esi,ebp
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm5
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        and     esi,eax
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm9,xmm0
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,esi
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm0
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm9
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        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[rsp],xmm10
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        pslld   xmm1,2
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        psrld   xmm9,30
>>>>>>> 
>>>>>>> +        add     eax,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        and     esi,edx
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        por     xmm1,xmm9
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        pshufd  xmm10,xmm0,238
>>>>>>> 
>>>>>>> +        add     eax,esi
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        and     edi,ecx
>>>>>>> 
>>>>>>> +        xor     ecx,edx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        mov     esi,eax
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm6
>>>>>>> 
>>>>>>> +        add     edx,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        and     esi,ebx
>>>>>>> 
>>>>>>> +        xor     ebx,ecx
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm10,xmm1
>>>>>>> 
>>>>>>> +        mov     edi,ebp
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm3
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,esi
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm8
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm1
>>>>>>> 
>>>>>>> +        xor     eax,ebx
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm10
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        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[16+rsp],xmm8
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        pslld   xmm2,2
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        psrld   xmm10,30
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        and     esi,ebp
>>>>>>> 
>>>>>>> +        xor     ebp,eax
>>>>>>> 
>>>>>>> +        por     xmm2,xmm10
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        pshufd  xmm8,xmm1,238
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        and     edi,edx
>>>>>>> 
>>>>>>> +        xor     edx,ebp
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        mov     esi,ebx
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,edi
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm7
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm8,xmm2
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm4
>>>>>>> 
>>>>>>> +        add     ebp,esi
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm9
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm2
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm8
>>>>>>> 
>>>>>>> +        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[32+rsp],xmm9
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        pslld   xmm3,2
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        psrld   xmm8,30
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,esi
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        por     xmm3,xmm8
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        mov     esi,ecx
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[rsp]
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm3
>>>>>>> 
>>>>>>> +        add     eax,esi
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm10
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        mov     esi,eax
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,edi
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        mov     edi,ebp
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        mov     esi,edx
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,edi
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        cmp     r9,r10
>>>>>>> 
>>>>>>> +        je      NEAR $L$done_ssse3
>>>>>>> 
>>>>>>> +        movdqa  xmm6,XMMWORD[64+r14]
>>>>>>> 
>>>>>>> +        movdqa  xmm9,XMMWORD[((-64))+r14]
>>>>>>> 
>>>>>>> +        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[16+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +DB      102,15,56,0,206
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm9
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        mov     esi,ebx
>>>>>>> 
>>>>>>> +        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[24+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,esi
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        mov     esi,ebp
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +DB      102,15,56,0,214
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,esi
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm9
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        mov     esi,ecx
>>>>>>> 
>>>>>>> +        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[40+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,esi
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        mov     esi,eax
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,edi
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        mov     edi,ebp
>>>>>>> 
>>>>>>> +DB      102,15,56,0,222
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm9
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        mov     esi,edx
>>>>>>> 
>>>>>>> +        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[56+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        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[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[8+r8],ecx
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        mov     DWORD[12+r8],edx
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        mov     DWORD[16+r8],ebp
>>>>>>> 
>>>>>>> +        and     esi,edi
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_ssse3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$done_ssse3:
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        mov     esi,ebx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,edi
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,esi
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        mov     esi,ebp
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,esi
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        mov     esi,ecx
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        add     eax,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,edx
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        rol     ebx,5
>>>>>>> 
>>>>>>> +        add     eax,esi
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        ror     ecx,7
>>>>>>> 
>>>>>>> +        add     eax,ebx
>>>>>>> 
>>>>>>> +        add     ebp,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        mov     esi,eax
>>>>>>> 
>>>>>>> +        rol     eax,5
>>>>>>> 
>>>>>>> +        add     ebp,edi
>>>>>>> 
>>>>>>> +        xor     esi,ecx
>>>>>>> 
>>>>>>> +        ror     ebx,7
>>>>>>> 
>>>>>>> +        add     ebp,eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ebx
>>>>>>> 
>>>>>>> +        mov     edi,ebp
>>>>>>> 
>>>>>>> +        rol     ebp,5
>>>>>>> 
>>>>>>> +        add     edx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        ror     eax,7
>>>>>>> 
>>>>>>> +        add     edx,ebp
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        mov     esi,edx
>>>>>>> 
>>>>>>> +        rol     edx,5
>>>>>>> 
>>>>>>> +        add     ecx,edi
>>>>>>> 
>>>>>>> +        xor     esi,eax
>>>>>>> 
>>>>>>> +        ror     ebp,7
>>>>>>> 
>>>>>>> +        add     ecx,edx
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        xor     esi,ebp
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +        rol     ecx,5
>>>>>>> 
>>>>>>> +        add     ebx,esi
>>>>>>> 
>>>>>>> +        xor     edi,ebp
>>>>>>> 
>>>>>>> +        ror     edx,7
>>>>>>> 
>>>>>>> +        add     ebx,ecx
>>>>>>> 
>>>>>>> +        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[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))+r11]
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[((-40-80))+r11]
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[((-40-64))+r11]
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[((-40-48))+r11]
>>>>>>> 
>>>>>>> +        movaps  xmm10,XMMWORD[((-40-32))+r11]
>>>>>>> 
>>>>>>> +        movaps  xmm11,XMMWORD[((-40-16))+r11]
>>>>>>> 
>>>>>>> +        mov     r14,QWORD[((-40))+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[((-32))+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[((-24))+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rbp,QWORD[((-16))+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[((-8))+r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[r11]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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:
>>>>>>> 
>>>>>>> +ALIGN   64
>>>>>>> 
>>>>>>> +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
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +se_handler:
>>>>>>> 
>>>>>>> +        push    rsi
>>>>>>> 
>>>>>>> +        push    rdi
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +        pushfq
>>>>>>> 
>>>>>>> +        sub     rsp,64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r10,[$L$prologue]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r10,[$L$epilogue]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[64+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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     NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +shaext_handler:
>>>>>>> 
>>>>>>> +        push    rsi
>>>>>>> 
>>>>>>> +        push    rdi
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +        pushfq
>>>>>>> 
>>>>>>> +        sub     rsp,64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r10,[$L$prologue_shaext]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r10,[$L$epilogue_shaext]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsi,[((-8-64))+rax]
>>>>>>> 
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>> 
>>>>>>> +        mov     ecx,8
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +ssse3_handler:
>>>>>>> 
>>>>>>> +        push    rsi
>>>>>>> 
>>>>>>> +        push    rdi
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +        pushfq
>>>>>>> 
>>>>>>> +        sub     rsp,64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>> 
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[208+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jae     NEAR $L$common_seh_tail
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsi,[((-40-96))+rax]
>>>>>>> 
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>> 
>>>>>>> +        mov     ecx,12
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[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[40+r9]
>>>>>>> 
>>>>>>> +        mov     rsi,r8
>>>>>>> 
>>>>>>> +        mov     ecx,154
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,r9
>>>>>>> 
>>>>>>> +        xor     rcx,rcx
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +        popfq
>>>>>>> 
>>>>>>> +        pop     r15
>>>>>>> 
>>>>>>> +        pop     r14
>>>>>>> 
>>>>>>> +        pop     r13
>>>>>>> 
>>>>>>> +        pop     r12
>>>>>>> 
>>>>>>> +        pop     rbp
>>>>>>> 
>>>>>>> +        pop     rbx
>>>>>>> 
>>>>>>> +        pop     rdi
>>>>>>> 
>>>>>>> +        pop     rsi
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +section .pdata rdata align=4
>>>>>>> 
>>>>>>> +ALIGN   4
>>>>>>> 
>>>>>>> +        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_shaext wrt
>>>> ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_end_sha1_block_data_order_shaext wrt
>>>> ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_info_sha1_block_data_order_shaext 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:
>>>>>>> 
>>>>>>> +DB      9,0,0,0
>>>>>>> 
>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>> 
>>>>>>> +$L$SEH_info_sha1_block_data_order_shaext:
>>>>>>> 
>>>>>>> +DB      9,0,0,0
>>>>>>> 
>>>>>>> +        DD      shaext_handler wrt ..imagebase
>>>>>>> 
>>>>>>> +$L$SEH_info_sha1_block_data_order_ssse3:
>>>>>>> 
>>>>>>> +DB      9,0,0,0
>>>>>>> 
>>>>>>> +        DD      ssse3_handler wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$prologue_ssse3 wrt
>> ..imagebase,$L$epilogue_ssse3
>>>>>>> wrt ..imagebase
>>>>>>> 
>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
>>>>>>> x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
>> mb-
>>>>>>> x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..7cd5eae85c
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
>>>>> x86_64.nasm
>>>>>>> @@ -0,0 +1,3461 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>> 
>>>>>>> +; Generated from openssl/crypto/sha/asm/sha256-mb-x86_64.pl
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not
>> use
>>>>>>> 
>>>>>>> +; this file except in compliance with the License.  You can obtain
>> a
>>>> copy
>>>>>>> 
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>> 
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +default rel
>>>>>>> 
>>>>>>> +%define XMMWORD
>>>>>>> 
>>>>>>> +%define YMMWORD
>>>>>>> 
>>>>>>> +%define ZMMWORD
>>>>>>> 
>>>>>>> +section .text code align=64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  sha256_multi_block
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +sha256_multi_block:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_sha256_multi_block:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]
>>>>>>> 
>>>>>>> +        bt      rcx,61
>>>>>>> 
>>>>>>> +        jc      NEAR _shaext_shortcut
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-120)+rax],xmm10
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-104)+rax],xmm11
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-88)+rax],xmm12
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-72)+rax],xmm13
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-56)+rax],xmm14
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-40)+rax],xmm15
>>>>>>> 
>>>>>>> +        sub     rsp,288
>>>>>>> 
>>>>>>> +        and     rsp,-256
>>>>>>> 
>>>>>>> +        mov     QWORD[272+rsp],rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$body:
>>>>>>> 
>>>>>>> +        lea     rbp,[((K256+128))]
>>>>>>> 
>>>>>>> +        lea     rbx,[256+rsp]
>>>>>>> 
>>>>>>> +        lea     rdi,[128+rdi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$oop_grande:
>>>>>>> 
>>>>>>> +        mov     DWORD[280+rsp],edx
>>>>>>> 
>>>>>>> +        xor     edx,edx
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[rsi]
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[8+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        mov     DWORD[rbx],ecx
>>>>>>> 
>>>>>>> +        cmovle  r8,rbp
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[16+rsi]
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[24+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        mov     DWORD[4+rbx],ecx
>>>>>>> 
>>>>>>> +        cmovle  r9,rbp
>>>>>>> 
>>>>>>> +        mov     r10,QWORD[32+rsi]
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[40+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        mov     DWORD[8+rbx],ecx
>>>>>>> 
>>>>>>> +        cmovle  r10,rbp
>>>>>>> 
>>>>>>> +        mov     r11,QWORD[48+rsi]
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[56+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        mov     DWORD[12+rbx],ecx
>>>>>>> 
>>>>>>> +        cmovle  r11,rbp
>>>>>>> 
>>>>>>> +        test    edx,edx
>>>>>>> 
>>>>>>> +        jz      NEAR $L$done
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  xmm8,XMMWORD[((0-128))+rdi]
>>>>>>> 
>>>>>>> +        lea     rax,[128+rsp]
>>>>>>> 
>>>>>>> +        movdqu  xmm9,XMMWORD[((32-128))+rdi]
>>>>>>> 
>>>>>>> +        movdqu  xmm10,XMMWORD[((64-128))+rdi]
>>>>>>> 
>>>>>>> +        movdqu  xmm11,XMMWORD[((96-128))+rdi]
>>>>>>> 
>>>>>>> +        movdqu  xmm12,XMMWORD[((128-128))+rdi]
>>>>>>> 
>>>>>>> +        movdqu  xmm13,XMMWORD[((160-128))+rdi]
>>>>>>> 
>>>>>>> +        movdqu  xmm14,XMMWORD[((192-128))+rdi]
>>>>>>> 
>>>>>>> +        movdqu  xmm15,XMMWORD[((224-128))+rdi]
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[$L$pbswap]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$oop:
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm9
>>>>>>> 
>>>>>>> +        movd    xmm5,DWORD[r8]
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[r9]
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[r10]
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +DB      102,15,56,0,238
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((-128))+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm14
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm15,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm15,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm5,DWORD[4+r8]
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[4+r9]
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[4+r10]
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[4+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>> 
>>>>>>> +DB      102,15,56,0,238
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((-96))+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm13
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm8
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm5,DWORD[8+r8]
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[8+r9]
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[8+r10]
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[8+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +DB      102,15,56,0,238
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((-64))+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm12
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm15
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm5,DWORD[12+r8]
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[12+r9]
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[12+r10]
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[12+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,0,238
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((-32))+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm11
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm5,DWORD[16+r8]
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[16+r9]
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[16+r10]
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[16+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,238
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm11,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm15,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm5,DWORD[20+r8]
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[20+r9]
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[20+r10]
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[20+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>> 
>>>>>>> +DB      102,15,56,0,238
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[32+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm9
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm5,DWORD[24+r8]
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[24+r9]
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[24+r10]
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[24+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +DB      102,15,56,0,238
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[64+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm8
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm15
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm5,DWORD[28+r8]
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[28+r9]
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[28+r10]
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[28+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>> 
>>>>>>> +DB      102,15,56,0,238
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[96+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm7
>>>>>>> 
>>>>>>> +        lea     rbp,[256+rbp]
>>>>>>> 
>>>>>>> +        movd    xmm5,DWORD[32+r8]
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[32+r9]
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[32+r10]
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[32+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +DB      102,15,56,0,238
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(128-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((-128))+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm14
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm15,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm15,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm5,DWORD[36+r8]
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[36+r9]
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[36+r10]
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[36+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>> 
>>>>>>> +DB      102,15,56,0,238
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(144-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((-96))+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm13
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm8
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm5,DWORD[40+r8]
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[40+r9]
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[40+r10]
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[40+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +DB      102,15,56,0,238
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(160-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((-64))+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm12
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm15
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm5,DWORD[44+r8]
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[44+r9]
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[44+r10]
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[44+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>> 
>>>>>>> +DB      102,15,56,0,238
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(176-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((-32))+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm11
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm5,DWORD[48+r8]
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[48+r9]
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[48+r10]
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[48+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>> 
>>>>>>> +DB      102,15,56,0,238
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(192-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm11,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm15,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm5,DWORD[52+r8]
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[52+r9]
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[52+r10]
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[52+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>> 
>>>>>>> +DB      102,15,56,0,238
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(208-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[32+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm9
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm5,DWORD[56+r8]
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[56+r9]
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[56+r10]
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[56+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +DB      102,15,56,0,238
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(224-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[64+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm8
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm15
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm7
>>>>>>> 
>>>>>>> +        movd    xmm5,DWORD[60+r8]
>>>>>>> 
>>>>>>> +        lea     r8,[64+r8]
>>>>>>> 
>>>>>>> +        movd    xmm0,DWORD[60+r9]
>>>>>>> 
>>>>>>> +        lea     r9,[64+r9]
>>>>>>> 
>>>>>>> +        movd    xmm1,DWORD[60+r10]
>>>>>>> 
>>>>>>> +        lea     r10,[64+r10]
>>>>>>> 
>>>>>>> +        movd    xmm2,DWORD[60+r11]
>>>>>>> 
>>>>>>> +        lea     r11,[64+r11]
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm1
>>>>>>> 
>>>>>>> +        punpckldq       xmm0,xmm2
>>>>>>> 
>>>>>>> +        punpckldq       xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>> 
>>>>>>> +DB      102,15,56,0,238
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(240-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[96+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm13
>>>>>>> 
>>>>>>> +        prefetcht0      [63+r8]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        prefetcht0      [63+r9]
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        prefetcht0      [63+r10]
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        prefetcht0      [63+r11]
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm7
>>>>>>> 
>>>>>>> +        lea     rbp,[256+rbp]
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[((0-128))+rax]
>>>>>>> 
>>>>>>> +        mov     ecx,3
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_16_xx
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$oop_16_xx:
>>>>>>> 
>>>>>>> +        movdqa  xmm6,XMMWORD[((16-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((144-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>> 
>>>>>>> +        psrld   xmm7,3
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,7
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((224-128))+rax]
>>>>>>> 
>>>>>>> +        pslld   xmm2,14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm1,18-7
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,25-14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm0,10
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm3,17
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm1,13
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm3,19-17
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        pslld   xmm1,15-13
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(0-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((-128))+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm14
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm15,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm15,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm5,XMMWORD[((32-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm6,XMMWORD[((160-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>> 
>>>>>>> +        psrld   xmm7,3
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,7
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((240-128))+rax]
>>>>>>> 
>>>>>>> +        pslld   xmm2,14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm1,18-7
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,25-14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm0,10
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm4,17
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm1,13
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm4,19-17
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        pslld   xmm1,15-13
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(16-128)+rax],xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm6,XMMWORD[((-96))+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm13
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm8
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm6,XMMWORD[((48-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((176-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>> 
>>>>>>> +        psrld   xmm7,3
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,7
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((0-128))+rax]
>>>>>>> 
>>>>>>> +        pslld   xmm2,14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm1,18-7
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,25-14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm0,10
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm3,17
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm1,13
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm3,19-17
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        pslld   xmm1,15-13
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(32-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((-64))+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm12
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm15
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm5,XMMWORD[((64-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm6,XMMWORD[((192-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>> 
>>>>>>> +        psrld   xmm7,3
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,7
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((16-128))+rax]
>>>>>>> 
>>>>>>> +        pslld   xmm2,14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm1,18-7
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,25-14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm0,10
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm4,17
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm1,13
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm4,19-17
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        pslld   xmm1,15-13
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(48-128)+rax],xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm6,XMMWORD[((-32))+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm11
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm6,XMMWORD[((80-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((208-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>> 
>>>>>>> +        psrld   xmm7,3
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,7
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((32-128))+rax]
>>>>>>> 
>>>>>>> +        pslld   xmm2,14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm1,18-7
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,25-14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm0,10
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm3,17
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm1,13
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm3,19-17
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        pslld   xmm1,15-13
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(64-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm11,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm15,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm5,XMMWORD[((96-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm6,XMMWORD[((224-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>> 
>>>>>>> +        psrld   xmm7,3
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,7
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((48-128))+rax]
>>>>>>> 
>>>>>>> +        pslld   xmm2,14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm1,18-7
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,25-14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm0,10
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm4,17
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm1,13
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm4,19-17
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        pslld   xmm1,15-13
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(80-128)+rax],xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm6,XMMWORD[32+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm9
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm6,XMMWORD[((112-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((240-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>> 
>>>>>>> +        psrld   xmm7,3
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,7
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((64-128))+rax]
>>>>>>> 
>>>>>>> +        pslld   xmm2,14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm1,18-7
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,25-14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm0,10
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm3,17
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm1,13
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm3,19-17
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        pslld   xmm1,15-13
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(96-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[64+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm8
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm15
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm5,XMMWORD[((128-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm6,XMMWORD[((0-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>> 
>>>>>>> +        psrld   xmm7,3
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,7
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((80-128))+rax]
>>>>>>> 
>>>>>>> +        pslld   xmm2,14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm1,18-7
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,25-14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm0,10
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm4,17
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm1,13
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm4,19-17
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        pslld   xmm1,15-13
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(112-128)+rax],xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm6,XMMWORD[96+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm7
>>>>>>> 
>>>>>>> +        lea     rbp,[256+rbp]
>>>>>>> 
>>>>>>> +        movdqa  xmm6,XMMWORD[((144-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((16-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>> 
>>>>>>> +        psrld   xmm7,3
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,7
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((96-128))+rax]
>>>>>>> 
>>>>>>> +        pslld   xmm2,14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm1,18-7
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,25-14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm0,10
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm3,17
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm1,13
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm3,19-17
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        pslld   xmm1,15-13
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(128-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((-128))+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm14
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm15,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm15,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm15,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm5,XMMWORD[((160-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm6,XMMWORD[((32-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>> 
>>>>>>> +        psrld   xmm7,3
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,7
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((112-128))+rax]
>>>>>>> 
>>>>>>> +        pslld   xmm2,14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm1,18-7
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,25-14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm0,10
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm4,17
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm1,13
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm4,19-17
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        pslld   xmm1,15-13
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(144-128)+rax],xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm6,XMMWORD[((-96))+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm13
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm8
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm8
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm14,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm6,XMMWORD[((176-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((48-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>> 
>>>>>>> +        psrld   xmm7,3
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,7
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((128-128))+rax]
>>>>>>> 
>>>>>>> +        pslld   xmm2,14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm1,18-7
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,25-14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm0,10
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm3,17
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm1,13
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm3,19-17
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        pslld   xmm1,15-13
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(160-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((-64))+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm12
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm15
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm13,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm13,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm5,XMMWORD[((192-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm6,XMMWORD[((64-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>> 
>>>>>>> +        psrld   xmm7,3
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,7
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((144-128))+rax]
>>>>>>> 
>>>>>>> +        pslld   xmm2,14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm1,18-7
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,25-14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm0,10
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm4,17
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm1,13
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm4,19-17
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        pslld   xmm1,15-13
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(176-128)+rax],xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm6,XMMWORD[((-32))+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm11
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm12,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm12,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm6,XMMWORD[((208-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((80-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>> 
>>>>>>> +        psrld   xmm7,3
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,7
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((160-128))+rax]
>>>>>>> 
>>>>>>> +        pslld   xmm2,14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm1,18-7
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,25-14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm0,10
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm3,17
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm1,13
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm3,19-17
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        pslld   xmm1,15-13
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm8
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(192-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm12
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm12
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm13
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm11,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm11,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm15,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm5,XMMWORD[((224-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm6,XMMWORD[((96-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>> 
>>>>>>> +        psrld   xmm7,3
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,7
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((176-128))+rax]
>>>>>>> 
>>>>>>> +        pslld   xmm2,14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm1,18-7
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,25-14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm0,10
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm4,17
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm1,13
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm4,19-17
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        pslld   xmm1,15-13
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(208-128)+rax],xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm6,XMMWORD[32+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm15
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm9
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm8
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm11
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm12
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm10,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm6,XMMWORD[((240-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[((112-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm6
>>>>>>> 
>>>>>>> +        psrld   xmm7,3
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,7
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((192-128))+rax]
>>>>>>> 
>>>>>>> +        pslld   xmm2,14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm1,18-7
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,25-14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm0,10
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm3
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm3,17
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm1,13
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        psrld   xmm3,19-17
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        pslld   xmm1,15-13
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(224-128)+rax],xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm5,XMMWORD[64+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm14
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm8
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm15
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm10
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm10
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm11
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm9,xmm4
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm5
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm5
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm5,XMMWORD[((0-128))+rax]
>>>>>>> 
>>>>>>> +        paddd   xmm6,XMMWORD[((128-128))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm5
>>>>>>> 
>>>>>>> +        psrld   xmm7,3
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,7
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((208-128))+rax]
>>>>>>> 
>>>>>>> +        pslld   xmm2,14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm1,18-7
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,25-14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        psrld   xmm0,10
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm4
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm4,17
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm1,13
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        psrld   xmm4,19-17
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        pslld   xmm1,15-13
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,6
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm2,7
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[(240-128)+rax],xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,11
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        pslld   xmm2,21-7
>>>>>>> 
>>>>>>> +        paddd   xmm6,XMMWORD[96+rbp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm1,25-11
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm13
>>>>>>> 
>>>>>>> +        pslld   xmm2,26-21
>>>>>>> 
>>>>>>> +        pandn   xmm0,xmm15
>>>>>>> 
>>>>>>> +        pand    xmm4,xmm14
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm9
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm2,xmm9
>>>>>>> 
>>>>>>> +        psrld   xmm1,2
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm4
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm10
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm9
>>>>>>> 
>>>>>>> +        pslld   xmm2,10
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>> 
>>>>>>> +        pslld   xmm2,19-10
>>>>>>> 
>>>>>>> +        pand    xmm3,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        psrld   xmm7,22-13
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm10
>>>>>>> 
>>>>>>> +        pslld   xmm2,30-19
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm6
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm7
>>>>>>> 
>>>>>>> +        lea     rbp,[256+rbp]
>>>>>>> 
>>>>>>> +        dec     ecx
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_16_xx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     ecx,1
>>>>>>> 
>>>>>>> +        lea     rbp,[((K256+128))]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm7,XMMWORD[rbx]
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[rbx]
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>> 
>>>>>>> +        cmovge  r8,rbp
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[4+rbx]
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>> 
>>>>>>> +        cmovge  r9,rbp
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[8+rbx]
>>>>>>> 
>>>>>>> +        pcmpgtd xmm6,xmm0
>>>>>>> 
>>>>>>> +        cmovge  r10,rbp
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[12+rbx]
>>>>>>> 
>>>>>>> +        paddd   xmm7,xmm6
>>>>>>> 
>>>>>>> +        cmovge  r11,rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  xmm0,XMMWORD[((0-128))+rdi]
>>>>>>> 
>>>>>>> +        pand    xmm8,xmm6
>>>>>>> 
>>>>>>> +        movdqu  xmm1,XMMWORD[((32-128))+rdi]
>>>>>>> 
>>>>>>> +        pand    xmm9,xmm6
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[((64-128))+rdi]
>>>>>>> 
>>>>>>> +        pand    xmm10,xmm6
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[((96-128))+rdi]
>>>>>>> 
>>>>>>> +        pand    xmm11,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm0
>>>>>>> 
>>>>>>> +        movdqu  xmm0,XMMWORD[((128-128))+rdi]
>>>>>>> 
>>>>>>> +        pand    xmm12,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm1
>>>>>>> 
>>>>>>> +        movdqu  xmm1,XMMWORD[((160-128))+rdi]
>>>>>>> 
>>>>>>> +        pand    xmm13,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm2
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[((192-128))+rdi]
>>>>>>> 
>>>>>>> +        pand    xmm14,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm5
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[((224-128))+rdi]
>>>>>>> 
>>>>>>> +        pand    xmm15,xmm6
>>>>>>> 
>>>>>>> +        paddd   xmm12,xmm0
>>>>>>> 
>>>>>>> +        paddd   xmm13,xmm1
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[(0-128)+rdi],xmm8
>>>>>>> 
>>>>>>> +        paddd   xmm14,xmm2
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[(32-128)+rdi],xmm9
>>>>>>> 
>>>>>>> +        paddd   xmm15,xmm5
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[(64-128)+rdi],xmm10
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[(96-128)+rdi],xmm11
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[(128-128)+rdi],xmm12
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[(160-128)+rdi],xmm13
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[(192-128)+rdi],xmm14
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[(224-128)+rdi],xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[rbx],xmm7
>>>>>>> 
>>>>>>> +        movdqa  xmm6,XMMWORD[$L$pbswap]
>>>>>>> 
>>>>>>> +        dec     edx
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edx,DWORD[280+rsp]
>>>>>>> 
>>>>>>> +        lea     rdi,[16+rdi]
>>>>>>> 
>>>>>>> +        lea     rsi,[64+rsi]
>>>>>>> 
>>>>>>> +        dec     edx
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_grande
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$done:
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[272+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[((-184))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[((-168))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[((-152))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[((-136))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm10,XMMWORD[((-120))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm11,XMMWORD[((-104))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm12,XMMWORD[((-88))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm13,XMMWORD[((-72))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm14,XMMWORD[((-56))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm15,XMMWORD[((-40))+rax]
>>>>>>> 
>>>>>>> +        mov     rbp,QWORD[((-16))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[((-8))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$epilogue:
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$SEH_end_sha256_multi_block:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +sha256_multi_block_shaext:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_sha256_multi_block_shaext:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +_shaext_shortcut:
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[((-168))+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[rsp],xmm6
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[16+rsp],xmm7
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[32+rsp],xmm8
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[48+rsp],xmm9
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-120)+rax],xmm10
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-104)+rax],xmm11
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-88)+rax],xmm12
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-72)+rax],xmm13
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-56)+rax],xmm14
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-40)+rax],xmm15
>>>>>>> 
>>>>>>> +        sub     rsp,288
>>>>>>> 
>>>>>>> +        shl     edx,1
>>>>>>> 
>>>>>>> +        and     rsp,-256
>>>>>>> 
>>>>>>> +        lea     rdi,[128+rdi]
>>>>>>> 
>>>>>>> +        mov     QWORD[272+rsp],rax
>>>>>>> 
>>>>>>> +$L$body_shaext:
>>>>>>> 
>>>>>>> +        lea     rbx,[256+rsp]
>>>>>>> 
>>>>>>> +        lea     rbp,[((K256_shaext+128))]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$oop_grande_shaext:
>>>>>>> 
>>>>>>> +        mov     DWORD[280+rsp],edx
>>>>>>> 
>>>>>>> +        xor     edx,edx
>>>>>>> 
>>>>>>> +        mov     r8,QWORD[rsi]
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[8+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        mov     DWORD[rbx],ecx
>>>>>>> 
>>>>>>> +        cmovle  r8,rsp
>>>>>>> 
>>>>>>> +        mov     r9,QWORD[16+rsi]
>>>>>>> 
>>>>>>> +        mov     ecx,DWORD[24+rsi]
>>>>>>> 
>>>>>>> +        cmp     ecx,edx
>>>>>>> 
>>>>>>> +        cmovg   edx,ecx
>>>>>>> 
>>>>>>> +        test    ecx,ecx
>>>>>>> 
>>>>>>> +        mov     DWORD[4+rbx],ecx
>>>>>>> 
>>>>>>> +        cmovle  r9,rsp
>>>>>>> 
>>>>>>> +        test    edx,edx
>>>>>>> 
>>>>>>> +        jz      NEAR $L$done_shaext
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movq    xmm12,QWORD[((0-128))+rdi]
>>>>>>> 
>>>>>>> +        movq    xmm4,QWORD[((32-128))+rdi]
>>>>>>> 
>>>>>>> +        movq    xmm13,QWORD[((64-128))+rdi]
>>>>>>> 
>>>>>>> +        movq    xmm5,QWORD[((96-128))+rdi]
>>>>>>> 
>>>>>>> +        movq    xmm8,QWORD[((128-128))+rdi]
>>>>>>> 
>>>>>>> +        movq    xmm9,QWORD[((160-128))+rdi]
>>>>>>> 
>>>>>>> +        movq    xmm10,QWORD[((192-128))+rdi]
>>>>>>> 
>>>>>>> +        movq    xmm11,QWORD[((224-128))+rdi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        punpckldq       xmm12,xmm4
>>>>>>> 
>>>>>>> +        punpckldq       xmm13,xmm5
>>>>>>> 
>>>>>>> +        punpckldq       xmm8,xmm9
>>>>>>> 
>>>>>>> +        punpckldq       xmm10,xmm11
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm14,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm15,xmm13
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm12,xmm8
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm13,xmm10
>>>>>>> 
>>>>>>> +        punpckhqdq      xmm14,xmm8
>>>>>>> 
>>>>>>> +        punpckhqdq      xmm15,xmm10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pshufd  xmm12,xmm12,27
>>>>>>> 
>>>>>>> +        pshufd  xmm13,xmm13,27
>>>>>>> 
>>>>>>> +        pshufd  xmm14,xmm14,27
>>>>>>> 
>>>>>>> +        pshufd  xmm15,xmm15,27
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_shaext
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   32
>>>>>>> 
>>>>>>> +$L$oop_shaext:
>>>>>>> 
>>>>>>> +        movdqu  xmm4,XMMWORD[r8]
>>>>>>> 
>>>>>>> +        movdqu  xmm8,XMMWORD[r9]
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[16+r8]
>>>>>>> 
>>>>>>> +        movdqu  xmm9,XMMWORD[16+r9]
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[32+r8]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,227
>>>>>>> 
>>>>>>> +        movdqu  xmm10,XMMWORD[32+r9]
>>>>>>> 
>>>>>>> +DB      102,68,15,56,0,195
>>>>>>> 
>>>>>>> +        movdqu  xmm7,XMMWORD[48+r8]
>>>>>>> 
>>>>>>> +        lea     r8,[64+r8]
>>>>>>> 
>>>>>>> +        movdqu  xmm11,XMMWORD[48+r9]
>>>>>>> 
>>>>>>> +        lea     r9,[64+r9]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((0-128))+rbp]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,235
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm1,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((0-128))+rbp]
>>>>>>> 
>>>>>>> +DB      102,68,15,56,0,203
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm8
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[80+rsp],xmm13
>>>>>>> 
>>>>>>> +DB      69,15,56,203,236
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[112+rsp],xmm15
>>>>>>> 
>>>>>>> +DB      69,15,56,203,254
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm12
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[64+rsp],xmm12
>>>>>>> 
>>>>>>> +DB      69,15,56,203,229
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>> 
>>>>>>> +        pxor    xmm8,xmm14
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[96+rsp],xmm14
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((16-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm5
>>>>>>> 
>>>>>>> +DB      102,15,56,0,243
>>>>>>> 
>>>>>>> +DB      69,15,56,203,247
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((16-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm9
>>>>>>> 
>>>>>>> +DB      69,15,56,203,236
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>> 
>>>>>>> +        prefetcht0      [127+r8]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,251
>>>>>>> 
>>>>>>> +DB      102,68,15,56,0,211
>>>>>>> 
>>>>>>> +        prefetcht0      [127+r9]
>>>>>>> 
>>>>>>> +DB      69,15,56,203,254
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>> 
>>>>>>> +DB      102,68,15,56,0,219
>>>>>>> 
>>>>>>> +DB      15,56,204,229
>>>>>>> 
>>>>>>> +DB      69,15,56,203,229
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((32-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm6
>>>>>>> 
>>>>>>> +DB      69,15,56,203,247
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((32-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm10
>>>>>>> 
>>>>>>> +DB      69,15,56,203,236
>>>>>>> 
>>>>>>> +DB      69,15,56,204,193
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm7
>>>>>>> 
>>>>>>> +DB      69,15,56,203,254
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>> 
>>>>>>> +DB      102,15,58,15,222,4
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>> 
>>>>>>> +DB      102,65,15,58,15,218,4
>>>>>>> 
>>>>>>> +DB      15,56,204,238
>>>>>>> 
>>>>>>> +DB      69,15,56,203,229
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((48-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm7
>>>>>>> 
>>>>>>> +DB      69,15,56,203,247
>>>>>>> 
>>>>>>> +DB      69,15,56,204,202
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((48-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm11
>>>>>>> 
>>>>>>> +DB      15,56,205,231
>>>>>>> 
>>>>>>> +DB      69,15,56,203,236
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm4
>>>>>>> 
>>>>>>> +DB      102,15,58,15,223,4
>>>>>>> 
>>>>>>> +DB      69,15,56,203,254
>>>>>>> 
>>>>>>> +DB      69,15,56,205,195
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>> 
>>>>>>> +DB      102,65,15,58,15,219,4
>>>>>>> 
>>>>>>> +DB      15,56,204,247
>>>>>>> 
>>>>>>> +DB      69,15,56,203,229
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((64-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm4
>>>>>>> 
>>>>>>> +DB      69,15,56,203,247
>>>>>>> 
>>>>>>> +DB      69,15,56,204,211
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((64-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm8
>>>>>>> 
>>>>>>> +DB      15,56,205,236
>>>>>>> 
>>>>>>> +DB      69,15,56,203,236
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm5
>>>>>>> 
>>>>>>> +DB      102,15,58,15,220,4
>>>>>>> 
>>>>>>> +DB      69,15,56,203,254
>>>>>>> 
>>>>>>> +DB      69,15,56,205,200
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>> 
>>>>>>> +DB      102,65,15,58,15,216,4
>>>>>>> 
>>>>>>> +DB      15,56,204,252
>>>>>>> 
>>>>>>> +DB      69,15,56,203,229
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((80-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm5
>>>>>>> 
>>>>>>> +DB      69,15,56,203,247
>>>>>>> 
>>>>>>> +DB      69,15,56,204,216
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((80-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm9
>>>>>>> 
>>>>>>> +DB      15,56,205,245
>>>>>>> 
>>>>>>> +DB      69,15,56,203,236
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm6
>>>>>>> 
>>>>>>> +DB      102,15,58,15,221,4
>>>>>>> 
>>>>>>> +DB      69,15,56,203,254
>>>>>>> 
>>>>>>> +DB      69,15,56,205,209
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>> 
>>>>>>> +        paddd   xmm7,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>> 
>>>>>>> +DB      102,65,15,58,15,217,4
>>>>>>> 
>>>>>>> +DB      15,56,204,229
>>>>>>> 
>>>>>>> +DB      69,15,56,203,229
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((96-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm6
>>>>>>> 
>>>>>>> +DB      69,15,56,203,247
>>>>>>> 
>>>>>>> +DB      69,15,56,204,193
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((96-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm10
>>>>>>> 
>>>>>>> +DB      15,56,205,254
>>>>>>> 
>>>>>>> +DB      69,15,56,203,236
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm7
>>>>>>> 
>>>>>>> +DB      102,15,58,15,222,4
>>>>>>> 
>>>>>>> +DB      69,15,56,203,254
>>>>>>> 
>>>>>>> +DB      69,15,56,205,218
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>> 
>>>>>>> +DB      102,65,15,58,15,218,4
>>>>>>> 
>>>>>>> +DB      15,56,204,238
>>>>>>> 
>>>>>>> +DB      69,15,56,203,229
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((112-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm7
>>>>>>> 
>>>>>>> +DB      69,15,56,203,247
>>>>>>> 
>>>>>>> +DB      69,15,56,204,202
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((112-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm11
>>>>>>> 
>>>>>>> +DB      15,56,205,231
>>>>>>> 
>>>>>>> +DB      69,15,56,203,236
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm4
>>>>>>> 
>>>>>>> +DB      102,15,58,15,223,4
>>>>>>> 
>>>>>>> +DB      69,15,56,203,254
>>>>>>> 
>>>>>>> +DB      69,15,56,205,195
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>> 
>>>>>>> +DB      102,65,15,58,15,219,4
>>>>>>> 
>>>>>>> +DB      15,56,204,247
>>>>>>> 
>>>>>>> +DB      69,15,56,203,229
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((128-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm4
>>>>>>> 
>>>>>>> +DB      69,15,56,203,247
>>>>>>> 
>>>>>>> +DB      69,15,56,204,211
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((128-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm8
>>>>>>> 
>>>>>>> +DB      15,56,205,236
>>>>>>> 
>>>>>>> +DB      69,15,56,203,236
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm5
>>>>>>> 
>>>>>>> +DB      102,15,58,15,220,4
>>>>>>> 
>>>>>>> +DB      69,15,56,203,254
>>>>>>> 
>>>>>>> +DB      69,15,56,205,200
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>> 
>>>>>>> +DB      102,65,15,58,15,216,4
>>>>>>> 
>>>>>>> +DB      15,56,204,252
>>>>>>> 
>>>>>>> +DB      69,15,56,203,229
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((144-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm5
>>>>>>> 
>>>>>>> +DB      69,15,56,203,247
>>>>>>> 
>>>>>>> +DB      69,15,56,204,216
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((144-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm9
>>>>>>> 
>>>>>>> +DB      15,56,205,245
>>>>>>> 
>>>>>>> +DB      69,15,56,203,236
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm6
>>>>>>> 
>>>>>>> +DB      102,15,58,15,221,4
>>>>>>> 
>>>>>>> +DB      69,15,56,203,254
>>>>>>> 
>>>>>>> +DB      69,15,56,205,209
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>> 
>>>>>>> +        paddd   xmm7,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>> 
>>>>>>> +DB      102,65,15,58,15,217,4
>>>>>>> 
>>>>>>> +DB      15,56,204,229
>>>>>>> 
>>>>>>> +DB      69,15,56,203,229
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((160-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm6
>>>>>>> 
>>>>>>> +DB      69,15,56,203,247
>>>>>>> 
>>>>>>> +DB      69,15,56,204,193
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((160-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm10
>>>>>>> 
>>>>>>> +DB      15,56,205,254
>>>>>>> 
>>>>>>> +DB      69,15,56,203,236
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm7
>>>>>>> 
>>>>>>> +DB      102,15,58,15,222,4
>>>>>>> 
>>>>>>> +DB      69,15,56,203,254
>>>>>>> 
>>>>>>> +DB      69,15,56,205,218
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm11
>>>>>>> 
>>>>>>> +DB      102,65,15,58,15,218,4
>>>>>>> 
>>>>>>> +DB      15,56,204,238
>>>>>>> 
>>>>>>> +DB      69,15,56,203,229
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((176-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm7
>>>>>>> 
>>>>>>> +DB      69,15,56,203,247
>>>>>>> 
>>>>>>> +DB      69,15,56,204,202
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((176-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm8,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm11
>>>>>>> 
>>>>>>> +DB      15,56,205,231
>>>>>>> 
>>>>>>> +DB      69,15,56,203,236
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm4
>>>>>>> 
>>>>>>> +DB      102,15,58,15,223,4
>>>>>>> 
>>>>>>> +DB      69,15,56,203,254
>>>>>>> 
>>>>>>> +DB      69,15,56,205,195
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm8
>>>>>>> 
>>>>>>> +DB      102,65,15,58,15,219,4
>>>>>>> 
>>>>>>> +DB      15,56,204,247
>>>>>>> 
>>>>>>> +DB      69,15,56,203,229
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((192-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm4
>>>>>>> 
>>>>>>> +DB      69,15,56,203,247
>>>>>>> 
>>>>>>> +DB      69,15,56,204,211
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((192-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm9,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm8
>>>>>>> 
>>>>>>> +DB      15,56,205,236
>>>>>>> 
>>>>>>> +DB      69,15,56,203,236
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm5
>>>>>>> 
>>>>>>> +DB      102,15,58,15,220,4
>>>>>>> 
>>>>>>> +DB      69,15,56,203,254
>>>>>>> 
>>>>>>> +DB      69,15,56,205,200
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm9
>>>>>>> 
>>>>>>> +DB      102,65,15,58,15,216,4
>>>>>>> 
>>>>>>> +DB      15,56,204,252
>>>>>>> 
>>>>>>> +DB      69,15,56,203,229
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((208-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm5
>>>>>>> 
>>>>>>> +DB      69,15,56,203,247
>>>>>>> 
>>>>>>> +DB      69,15,56,204,216
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((208-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm10,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm9
>>>>>>> 
>>>>>>> +DB      15,56,205,245
>>>>>>> 
>>>>>>> +DB      69,15,56,203,236
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm6
>>>>>>> 
>>>>>>> +DB      102,15,58,15,221,4
>>>>>>> 
>>>>>>> +DB      69,15,56,203,254
>>>>>>> 
>>>>>>> +DB      69,15,56,205,209
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>> 
>>>>>>> +        paddd   xmm7,xmm3
>>>>>>> 
>>>>>>> +        movdqa  xmm3,xmm10
>>>>>>> 
>>>>>>> +DB      102,65,15,58,15,217,4
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +DB      69,15,56,203,229
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((224-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm6
>>>>>>> 
>>>>>>> +DB      69,15,56,203,247
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((224-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm3
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm10
>>>>>>> 
>>>>>>> +DB      15,56,205,254
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +DB      69,15,56,203,236
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>> 
>>>>>>> +        mov     ecx,1
>>>>>>> 
>>>>>>> +        pxor    xmm6,xmm6
>>>>>>> 
>>>>>>> +DB      69,15,56,203,254
>>>>>>> 
>>>>>>> +DB      69,15,56,205,218
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm1,XMMWORD[((240-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm7
>>>>>>> 
>>>>>>> +        movq    xmm7,QWORD[rbx]
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +DB      69,15,56,203,229
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm2,XMMWORD[((240-128))+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm11
>>>>>>> 
>>>>>>> +DB      69,15,56,203,247
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm1
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[rbx]
>>>>>>> 
>>>>>>> +        cmovge  r8,rsp
>>>>>>> 
>>>>>>> +        cmp     ecx,DWORD[4+rbx]
>>>>>>> 
>>>>>>> +        cmovge  r9,rsp
>>>>>>> 
>>>>>>> +        pshufd  xmm9,xmm7,0x00
>>>>>>> 
>>>>>>> +DB      69,15,56,203,236
>>>>>>> 
>>>>>>> +        movdqa  xmm0,xmm2
>>>>>>> 
>>>>>>> +        pshufd  xmm10,xmm7,0x55
>>>>>>> 
>>>>>>> +        movdqa  xmm11,xmm7
>>>>>>> 
>>>>>>> +DB      69,15,56,203,254
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm1,0x0e
>>>>>>> 
>>>>>>> +        pcmpgtd xmm9,xmm6
>>>>>>> 
>>>>>>> +        pcmpgtd xmm10,xmm6
>>>>>>> 
>>>>>>> +DB      69,15,56,203,229
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm2,0x0e
>>>>>>> 
>>>>>>> +        pcmpgtd xmm11,xmm6
>>>>>>> 
>>>>>>> +        movdqa  xmm3,XMMWORD[((K256_shaext-16))]
>>>>>>> 
>>>>>>> +DB      69,15,56,203,247
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pand    xmm13,xmm9
>>>>>>> 
>>>>>>> +        pand    xmm15,xmm10
>>>>>>> 
>>>>>>> +        pand    xmm12,xmm9
>>>>>>> 
>>>>>>> +        pand    xmm14,xmm10
>>>>>>> 
>>>>>>> +        paddd   xmm11,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm13,XMMWORD[80+rsp]
>>>>>>> 
>>>>>>> +        paddd   xmm15,XMMWORD[112+rsp]
>>>>>>> 
>>>>>>> +        paddd   xmm12,XMMWORD[64+rsp]
>>>>>>> 
>>>>>>> +        paddd   xmm14,XMMWORD[96+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movq    QWORD[rbx],xmm11
>>>>>>> 
>>>>>>> +        dec     edx
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_shaext
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edx,DWORD[280+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pshufd  xmm12,xmm12,27
>>>>>>> 
>>>>>>> +        pshufd  xmm13,xmm13,27
>>>>>>> 
>>>>>>> +        pshufd  xmm14,xmm14,27
>>>>>>> 
>>>>>>> +        pshufd  xmm15,xmm15,27
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm12
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm13
>>>>>>> 
>>>>>>> +        punpckldq       xmm12,xmm14
>>>>>>> 
>>>>>>> +        punpckhdq       xmm5,xmm14
>>>>>>> 
>>>>>>> +        punpckldq       xmm13,xmm15
>>>>>>> 
>>>>>>> +        punpckhdq       xmm6,xmm15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movq    QWORD[(0-128)+rdi],xmm12
>>>>>>> 
>>>>>>> +        psrldq  xmm12,8
>>>>>>> 
>>>>>>> +        movq    QWORD[(128-128)+rdi],xmm5
>>>>>>> 
>>>>>>> +        psrldq  xmm5,8
>>>>>>> 
>>>>>>> +        movq    QWORD[(32-128)+rdi],xmm12
>>>>>>> 
>>>>>>> +        movq    QWORD[(160-128)+rdi],xmm5
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movq    QWORD[(64-128)+rdi],xmm13
>>>>>>> 
>>>>>>> +        psrldq  xmm13,8
>>>>>>> 
>>>>>>> +        movq    QWORD[(192-128)+rdi],xmm6
>>>>>>> 
>>>>>>> +        psrldq  xmm6,8
>>>>>>> 
>>>>>>> +        movq    QWORD[(96-128)+rdi],xmm13
>>>>>>> 
>>>>>>> +        movq    QWORD[(224-128)+rdi],xmm6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rdi,[8+rdi]
>>>>>>> 
>>>>>>> +        lea     rsi,[32+rsi]
>>>>>>> 
>>>>>>> +        dec     edx
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_grande_shaext
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$done_shaext:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[((-184))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[((-168))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[((-152))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[((-136))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm10,XMMWORD[((-120))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm11,XMMWORD[((-104))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm12,XMMWORD[((-88))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm13,XMMWORD[((-72))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm14,XMMWORD[((-56))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm15,XMMWORD[((-40))+rax]
>>>>>>> 
>>>>>>> +        mov     rbp,QWORD[((-16))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[((-8))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$epilogue_shaext:
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$SEH_end_sha256_multi_block_shaext:
>>>>>>> 
>>>>>>> +ALIGN   256
>>>>>>> 
>>>>>>> +K256:
>>>>>>> 
>>>>>>> +        DD      1116352408,1116352408,1116352408,1116352408
>>>>>>> 
>>>>>>> +        DD      1116352408,1116352408,1116352408,1116352408
>>>>>>> 
>>>>>>> +        DD      1899447441,1899447441,1899447441,1899447441
>>>>>>> 
>>>>>>> +        DD      1899447441,1899447441,1899447441,1899447441
>>>>>>> 
>>>>>>> +        DD      3049323471,3049323471,3049323471,3049323471
>>>>>>> 
>>>>>>> +        DD      3049323471,3049323471,3049323471,3049323471
>>>>>>> 
>>>>>>> +        DD      3921009573,3921009573,3921009573,3921009573
>>>>>>> 
>>>>>>> +        DD      3921009573,3921009573,3921009573,3921009573
>>>>>>> 
>>>>>>> +        DD      961987163,961987163,961987163,961987163
>>>>>>> 
>>>>>>> +        DD      961987163,961987163,961987163,961987163
>>>>>>> 
>>>>>>> +        DD      1508970993,1508970993,1508970993,1508970993
>>>>>>> 
>>>>>>> +        DD      1508970993,1508970993,1508970993,1508970993
>>>>>>> 
>>>>>>> +        DD      2453635748,2453635748,2453635748,2453635748
>>>>>>> 
>>>>>>> +        DD      2453635748,2453635748,2453635748,2453635748
>>>>>>> 
>>>>>>> +        DD      2870763221,2870763221,2870763221,2870763221
>>>>>>> 
>>>>>>> +        DD      2870763221,2870763221,2870763221,2870763221
>>>>>>> 
>>>>>>> +        DD      3624381080,3624381080,3624381080,3624381080
>>>>>>> 
>>>>>>> +        DD      3624381080,3624381080,3624381080,3624381080
>>>>>>> 
>>>>>>> +        DD      310598401,310598401,310598401,310598401
>>>>>>> 
>>>>>>> +        DD      310598401,310598401,310598401,310598401
>>>>>>> 
>>>>>>> +        DD      607225278,607225278,607225278,607225278
>>>>>>> 
>>>>>>> +        DD      607225278,607225278,607225278,607225278
>>>>>>> 
>>>>>>> +        DD      1426881987,1426881987,1426881987,1426881987
>>>>>>> 
>>>>>>> +        DD      1426881987,1426881987,1426881987,1426881987
>>>>>>> 
>>>>>>> +        DD      1925078388,1925078388,1925078388,1925078388
>>>>>>> 
>>>>>>> +        DD      1925078388,1925078388,1925078388,1925078388
>>>>>>> 
>>>>>>> +        DD      2162078206,2162078206,2162078206,2162078206
>>>>>>> 
>>>>>>> +        DD      2162078206,2162078206,2162078206,2162078206
>>>>>>> 
>>>>>>> +        DD      2614888103,2614888103,2614888103,2614888103
>>>>>>> 
>>>>>>> +        DD      2614888103,2614888103,2614888103,2614888103
>>>>>>> 
>>>>>>> +        DD      3248222580,3248222580,3248222580,3248222580
>>>>>>> 
>>>>>>> +        DD      3248222580,3248222580,3248222580,3248222580
>>>>>>> 
>>>>>>> +        DD      3835390401,3835390401,3835390401,3835390401
>>>>>>> 
>>>>>>> +        DD      3835390401,3835390401,3835390401,3835390401
>>>>>>> 
>>>>>>> +        DD      4022224774,4022224774,4022224774,4022224774
>>>>>>> 
>>>>>>> +        DD      4022224774,4022224774,4022224774,4022224774
>>>>>>> 
>>>>>>> +        DD      264347078,264347078,264347078,264347078
>>>>>>> 
>>>>>>> +        DD      264347078,264347078,264347078,264347078
>>>>>>> 
>>>>>>> +        DD      604807628,604807628,604807628,604807628
>>>>>>> 
>>>>>>> +        DD      604807628,604807628,604807628,604807628
>>>>>>> 
>>>>>>> +        DD      770255983,770255983,770255983,770255983
>>>>>>> 
>>>>>>> +        DD      770255983,770255983,770255983,770255983
>>>>>>> 
>>>>>>> +        DD      1249150122,1249150122,1249150122,1249150122
>>>>>>> 
>>>>>>> +        DD      1249150122,1249150122,1249150122,1249150122
>>>>>>> 
>>>>>>> +        DD      1555081692,1555081692,1555081692,1555081692
>>>>>>> 
>>>>>>> +        DD      1555081692,1555081692,1555081692,1555081692
>>>>>>> 
>>>>>>> +        DD      1996064986,1996064986,1996064986,1996064986
>>>>>>> 
>>>>>>> +        DD      1996064986,1996064986,1996064986,1996064986
>>>>>>> 
>>>>>>> +        DD      2554220882,2554220882,2554220882,2554220882
>>>>>>> 
>>>>>>> +        DD      2554220882,2554220882,2554220882,2554220882
>>>>>>> 
>>>>>>> +        DD      2821834349,2821834349,2821834349,2821834349
>>>>>>> 
>>>>>>> +        DD      2821834349,2821834349,2821834349,2821834349
>>>>>>> 
>>>>>>> +        DD      2952996808,2952996808,2952996808,2952996808
>>>>>>> 
>>>>>>> +        DD      2952996808,2952996808,2952996808,2952996808
>>>>>>> 
>>>>>>> +        DD      3210313671,3210313671,3210313671,3210313671
>>>>>>> 
>>>>>>> +        DD      3210313671,3210313671,3210313671,3210313671
>>>>>>> 
>>>>>>> +        DD      3336571891,3336571891,3336571891,3336571891
>>>>>>> 
>>>>>>> +        DD      3336571891,3336571891,3336571891,3336571891
>>>>>>> 
>>>>>>> +        DD      3584528711,3584528711,3584528711,3584528711
>>>>>>> 
>>>>>>> +        DD      3584528711,3584528711,3584528711,3584528711
>>>>>>> 
>>>>>>> +        DD      113926993,113926993,113926993,113926993
>>>>>>> 
>>>>>>> +        DD      113926993,113926993,113926993,113926993
>>>>>>> 
>>>>>>> +        DD      338241895,338241895,338241895,338241895
>>>>>>> 
>>>>>>> +        DD      338241895,338241895,338241895,338241895
>>>>>>> 
>>>>>>> +        DD      666307205,666307205,666307205,666307205
>>>>>>> 
>>>>>>> +        DD      666307205,666307205,666307205,666307205
>>>>>>> 
>>>>>>> +        DD      773529912,773529912,773529912,773529912
>>>>>>> 
>>>>>>> +        DD      773529912,773529912,773529912,773529912
>>>>>>> 
>>>>>>> +        DD      1294757372,1294757372,1294757372,1294757372
>>>>>>> 
>>>>>>> +        DD      1294757372,1294757372,1294757372,1294757372
>>>>>>> 
>>>>>>> +        DD      1396182291,1396182291,1396182291,1396182291
>>>>>>> 
>>>>>>> +        DD      1396182291,1396182291,1396182291,1396182291
>>>>>>> 
>>>>>>> +        DD      1695183700,1695183700,1695183700,1695183700
>>>>>>> 
>>>>>>> +        DD      1695183700,1695183700,1695183700,1695183700
>>>>>>> 
>>>>>>> +        DD      1986661051,1986661051,1986661051,1986661051
>>>>>>> 
>>>>>>> +        DD      1986661051,1986661051,1986661051,1986661051
>>>>>>> 
>>>>>>> +        DD      2177026350,2177026350,2177026350,2177026350
>>>>>>> 
>>>>>>> +        DD      2177026350,2177026350,2177026350,2177026350
>>>>>>> 
>>>>>>> +        DD      2456956037,2456956037,2456956037,2456956037
>>>>>>> 
>>>>>>> +        DD      2456956037,2456956037,2456956037,2456956037
>>>>>>> 
>>>>>>> +        DD      2730485921,2730485921,2730485921,2730485921
>>>>>>> 
>>>>>>> +        DD      2730485921,2730485921,2730485921,2730485921
>>>>>>> 
>>>>>>> +        DD      2820302411,2820302411,2820302411,2820302411
>>>>>>> 
>>>>>>> +        DD      2820302411,2820302411,2820302411,2820302411
>>>>>>> 
>>>>>>> +        DD      3259730800,3259730800,3259730800,3259730800
>>>>>>> 
>>>>>>> +        DD      3259730800,3259730800,3259730800,3259730800
>>>>>>> 
>>>>>>> +        DD      3345764771,3345764771,3345764771,3345764771
>>>>>>> 
>>>>>>> +        DD      3345764771,3345764771,3345764771,3345764771
>>>>>>> 
>>>>>>> +        DD      3516065817,3516065817,3516065817,3516065817
>>>>>>> 
>>>>>>> +        DD      3516065817,3516065817,3516065817,3516065817
>>>>>>> 
>>>>>>> +        DD      3600352804,3600352804,3600352804,3600352804
>>>>>>> 
>>>>>>> +        DD      3600352804,3600352804,3600352804,3600352804
>>>>>>> 
>>>>>>> +        DD      4094571909,4094571909,4094571909,4094571909
>>>>>>> 
>>>>>>> +        DD      4094571909,4094571909,4094571909,4094571909
>>>>>>> 
>>>>>>> +        DD      275423344,275423344,275423344,275423344
>>>>>>> 
>>>>>>> +        DD      275423344,275423344,275423344,275423344
>>>>>>> 
>>>>>>> +        DD      430227734,430227734,430227734,430227734
>>>>>>> 
>>>>>>> +        DD      430227734,430227734,430227734,430227734
>>>>>>> 
>>>>>>> +        DD      506948616,506948616,506948616,506948616
>>>>>>> 
>>>>>>> +        DD      506948616,506948616,506948616,506948616
>>>>>>> 
>>>>>>> +        DD      659060556,659060556,659060556,659060556
>>>>>>> 
>>>>>>> +        DD      659060556,659060556,659060556,659060556
>>>>>>> 
>>>>>>> +        DD      883997877,883997877,883997877,883997877
>>>>>>> 
>>>>>>> +        DD      883997877,883997877,883997877,883997877
>>>>>>> 
>>>>>>> +        DD      958139571,958139571,958139571,958139571
>>>>>>> 
>>>>>>> +        DD      958139571,958139571,958139571,958139571
>>>>>>> 
>>>>>>> +        DD      1322822218,1322822218,1322822218,1322822218
>>>>>>> 
>>>>>>> +        DD      1322822218,1322822218,1322822218,1322822218
>>>>>>> 
>>>>>>> +        DD      1537002063,1537002063,1537002063,1537002063
>>>>>>> 
>>>>>>> +        DD      1537002063,1537002063,1537002063,1537002063
>>>>>>> 
>>>>>>> +        DD      1747873779,1747873779,1747873779,1747873779
>>>>>>> 
>>>>>>> +        DD      1747873779,1747873779,1747873779,1747873779
>>>>>>> 
>>>>>>> +        DD      1955562222,1955562222,1955562222,1955562222
>>>>>>> 
>>>>>>> +        DD      1955562222,1955562222,1955562222,1955562222
>>>>>>> 
>>>>>>> +        DD      2024104815,2024104815,2024104815,2024104815
>>>>>>> 
>>>>>>> +        DD      2024104815,2024104815,2024104815,2024104815
>>>>>>> 
>>>>>>> +        DD      2227730452,2227730452,2227730452,2227730452
>>>>>>> 
>>>>>>> +        DD      2227730452,2227730452,2227730452,2227730452
>>>>>>> 
>>>>>>> +        DD      2361852424,2361852424,2361852424,2361852424
>>>>>>> 
>>>>>>> +        DD      2361852424,2361852424,2361852424,2361852424
>>>>>>> 
>>>>>>> +        DD      2428436474,2428436474,2428436474,2428436474
>>>>>>> 
>>>>>>> +        DD      2428436474,2428436474,2428436474,2428436474
>>>>>>> 
>>>>>>> +        DD      2756734187,2756734187,2756734187,2756734187
>>>>>>> 
>>>>>>> +        DD      2756734187,2756734187,2756734187,2756734187
>>>>>>> 
>>>>>>> +        DD      3204031479,3204031479,3204031479,3204031479
>>>>>>> 
>>>>>>> +        DD      3204031479,3204031479,3204031479,3204031479
>>>>>>> 
>>>>>>> +        DD      3329325298,3329325298,3329325298,3329325298
>>>>>>> 
>>>>>>> +        DD      3329325298,3329325298,3329325298,3329325298
>>>>>>> 
>>>>>>> +$L$pbswap:
>>>>>>> 
>>>>>>> +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
>>>>>>> 
>>>>>>> +        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
>>>>>>> 
>>>>>>> +K256_shaext:
>>>>>>> 
>>>>>>> +        DD      0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
>>>>>>> 
>>>>>>> +        DD      0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
>>>>>>> 
>>>>>>> +        DD      0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
>>>>>>> 
>>>>>>> +        DD      0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
>>>>>>> 
>>>>>>> +        DD      0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
>>>>>>> 
>>>>>>> +        DD      0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
>>>>>>> 
>>>>>>> +        DD      0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
>>>>>>> 
>>>>>>> +        DD      0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
>>>>>>> 
>>>>>>> +        DD      0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
>>>>>>> 
>>>>>>> +        DD      0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
>>>>>>> 
>>>>>>> +        DD      0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
>>>>>>> 
>>>>>>> +        DD      0xd192e819,0xd6990624,0xf40e3585,0x106aa070
>>>>>>> 
>>>>>>> +        DD      0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
>>>>>>> 
>>>>>>> +        DD      0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
>>>>>>> 
>>>>>>> +        DD      0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
>>>>>>> 
>>>>>>> +        DD      0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
>>>>>>> 
>>>>>>> +DB      83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111
>>>>>>> 
>>>>>>> +DB
>> 99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114
>>>>>>> 
>>>>>>> +DB      32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71
>>>>>>> 
>>>>>>> +DB      65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112
>>>>>>> 
>>>>>>> +DB      101,110,115,115,108,46,111,114,103,62,0
>>>>>>> 
>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +se_handler:
>>>>>>> 
>>>>>>> +        push    rsi
>>>>>>> 
>>>>>>> +        push    rdi
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +        pushfq
>>>>>>> 
>>>>>>> +        sub     rsp,64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>> 
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[272+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[((-8))+rax]
>>>>>>> 
>>>>>>> +        mov     rbp,QWORD[((-16))+rax]
>>>>>>> 
>>>>>>> +        mov     QWORD[144+r8],rbx
>>>>>>> 
>>>>>>> +        mov     QWORD[160+r8],rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsi,[((-24-160))+rax]
>>>>>>> 
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>> 
>>>>>>> +        mov     ecx,20
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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[40+r9]
>>>>>>> 
>>>>>>> +        mov     rsi,r8
>>>>>>> 
>>>>>>> +        mov     ecx,154
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,r9
>>>>>>> 
>>>>>>> +        xor     rcx,rcx
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +        popfq
>>>>>>> 
>>>>>>> +        pop     r15
>>>>>>> 
>>>>>>> +        pop     r14
>>>>>>> 
>>>>>>> +        pop     r13
>>>>>>> 
>>>>>>> +        pop     r12
>>>>>>> 
>>>>>>> +        pop     rbp
>>>>>>> 
>>>>>>> +        pop     rbx
>>>>>>> 
>>>>>>> +        pop     rdi
>>>>>>> 
>>>>>>> +        pop     rsi
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +section .pdata rdata align=4
>>>>>>> 
>>>>>>> +ALIGN   4
>>>>>>> 
>>>>>>> +        DD      $L$SEH_begin_sha256_multi_block wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_end_sha256_multi_block wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_info_sha256_multi_block wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_begin_sha256_multi_block_shaext wrt
>> ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_end_sha256_multi_block_shaext wrt
>> ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_info_sha256_multi_block_shaext wrt
>> ..imagebase
>>>>>>> 
>>>>>>> +section .xdata rdata align=8
>>>>>>> 
>>>>>>> +ALIGN   8
>>>>>>> 
>>>>>>> +$L$SEH_info_sha256_multi_block:
>>>>>>> 
>>>>>>> +DB      9,0,0,0
>>>>>>> 
>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$body wrt ..imagebase,$L$epilogue wrt
>> ..imagebase
>>>>>>> 
>>>>>>> +$L$SEH_info_sha256_multi_block_shaext:
>>>>>>> 
>>>>>>> +DB      9,0,0,0
>>>>>>> 
>>>>>>> +        DD      se_handler wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
>>>>>>> wrt ..imagebase
>>>>>>> 
>>>>>>> diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
>>>>> x86_64.nasm
>>>>>>> b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..70e49862a3
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
>> x86_64.nasm
>>>>>>> @@ -0,0 +1,3313 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>> 
>>>>>>> +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not
>> use
>>>>>>> 
>>>>>>> +; this file except in compliance with the License.  You can obtain
>> a
>>>> copy
>>>>>>> 
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>> 
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +default rel
>>>>>>> 
>>>>>>> +%define XMMWORD
>>>>>>> 
>>>>>>> +%define YMMWORD
>>>>>>> 
>>>>>>> +%define ZMMWORD
>>>>>>> 
>>>>>>> +section .text code align=64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>> 
>>>>>>> +global  sha256_block_data_order
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +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:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r11,[OPENSSL_ia32cap_P]
>>>>>>> 
>>>>>>> +        mov     r9d,DWORD[r11]
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>> 
>>>>>>> +        mov     r11d,DWORD[8+r11]
>>>>>>> 
>>>>>>> +        test    r11d,536870912
>>>>>>> 
>>>>>>> +        jnz     NEAR _shaext_shortcut
>>>>>>> 
>>>>>>> +        test    r10d,512
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$ssse3_shortcut
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        shl     rdx,4
>>>>>>> 
>>>>>>> +        sub     rsp,16*4+4*8
>>>>>>> 
>>>>>>> +        lea     rdx,[rdx*4+rsi]
>>>>>>> 
>>>>>>> +        and     rsp,-64
>>>>>>> 
>>>>>>> +        mov     QWORD[((64+0))+rsp],rdi
>>>>>>> 
>>>>>>> +        mov     QWORD[((64+8))+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     QWORD[((64+16))+rsp],rdx
>>>>>>> 
>>>>>>> +        mov     QWORD[88+rsp],rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$prologue:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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:
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        lea     rbp,[K256]
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        mov     r12d,DWORD[rsi]
>>>>>>> 
>>>>>>> +        mov     r13d,r8d
>>>>>>> 
>>>>>>> +        mov     r14d,eax
>>>>>>> 
>>>>>>> +        bswap   r12d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r15d,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r8d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r15d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,eax
>>>>>>> 
>>>>>>> +        and     r15d,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,r11d
>>>>>>> 
>>>>>>> +        xor     r15d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,r8d
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15d,eax
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15d,ebx
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     r11d,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r11d,edi
>>>>>>> 
>>>>>>> +        add     edx,r12d
>>>>>>> 
>>>>>>> +        add     r11d,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        add     r11d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,DWORD[4+rsi]
>>>>>>> 
>>>>>>> +        mov     r13d,edx
>>>>>>> 
>>>>>>> +        mov     r14d,r11d
>>>>>>> 
>>>>>>> +        bswap   r12d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     edi,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,edx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     edi,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[4+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,r11d
>>>>>>> 
>>>>>>> +        and     edi,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,r10d
>>>>>>> 
>>>>>>> +        xor     edi,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,edx
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edi,r11d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     r10d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r10d,r15d
>>>>>>> 
>>>>>>> +        add     ecx,r12d
>>>>>>> 
>>>>>>> +        add     r10d,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        add     r10d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,DWORD[8+rsi]
>>>>>>> 
>>>>>>> +        mov     r13d,ecx
>>>>>>> 
>>>>>>> +        mov     r14d,r10d
>>>>>>> 
>>>>>>> +        bswap   r12d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r15d,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,ecx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r15d,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[8+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,r10d
>>>>>>> 
>>>>>>> +        and     r15d,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,r9d
>>>>>>> 
>>>>>>> +        xor     r15d,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,ecx
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15d,r10d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15d,r11d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     r9d,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r9d,edi
>>>>>>> 
>>>>>>> +        add     ebx,r12d
>>>>>>> 
>>>>>>> +        add     r9d,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        add     r9d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,DWORD[12+rsi]
>>>>>>> 
>>>>>>> +        mov     r13d,ebx
>>>>>>> 
>>>>>>> +        mov     r14d,r9d
>>>>>>> 
>>>>>>> +        bswap   r12d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,ebx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[12+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,r9d
>>>>>>> 
>>>>>>> +        and     edi,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,r8d
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,ebx
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edi,r9d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edi,r10d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     r8d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r8d,r15d
>>>>>>> 
>>>>>>> +        add     eax,r12d
>>>>>>> 
>>>>>>> +        add     r8d,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>> 
>>>>>>> +        add     r8d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,DWORD[16+rsi]
>>>>>>> 
>>>>>>> +        mov     r13d,eax
>>>>>>> 
>>>>>>> +        mov     r14d,r8d
>>>>>>> 
>>>>>>> +        bswap   r12d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r15d,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,eax
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r15d,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[16+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,r8d
>>>>>>> 
>>>>>>> +        and     r15d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,edx
>>>>>>> 
>>>>>>> +        xor     r15d,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,eax
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15d,r8d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15d,r9d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     edx,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edx,edi
>>>>>>> 
>>>>>>> +        add     r11d,r12d
>>>>>>> 
>>>>>>> +        add     edx,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        add     edx,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,DWORD[20+rsi]
>>>>>>> 
>>>>>>> +        mov     r13d,r11d
>>>>>>> 
>>>>>>> +        mov     r14d,edx
>>>>>>> 
>>>>>>> +        bswap   r12d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r11d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[20+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,edx
>>>>>>> 
>>>>>>> +        and     edi,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,ecx
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,r11d
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edi,r8d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     ecx,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     ecx,r15d
>>>>>>> 
>>>>>>> +        add     r10d,r12d
>>>>>>> 
>>>>>>> +        add     ecx,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        add     ecx,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,DWORD[24+rsi]
>>>>>>> 
>>>>>>> +        mov     r13d,r10d
>>>>>>> 
>>>>>>> +        mov     r14d,ecx
>>>>>>> 
>>>>>>> +        bswap   r12d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r15d,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r10d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r15d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[24+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,ecx
>>>>>>> 
>>>>>>> +        and     r15d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,ebx
>>>>>>> 
>>>>>>> +        xor     r15d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,r10d
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15d,ecx
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15d,edx
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     ebx,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     ebx,edi
>>>>>>> 
>>>>>>> +        add     r9d,r12d
>>>>>>> 
>>>>>>> +        add     ebx,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        add     ebx,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,DWORD[28+rsi]
>>>>>>> 
>>>>>>> +        mov     r13d,r9d
>>>>>>> 
>>>>>>> +        mov     r14d,ebx
>>>>>>> 
>>>>>>> +        bswap   r12d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     edi,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r9d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     edi,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[28+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,ebx
>>>>>>> 
>>>>>>> +        and     edi,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,eax
>>>>>>> 
>>>>>>> +        xor     edi,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,r9d
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     eax,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     eax,r15d
>>>>>>> 
>>>>>>> +        add     r8d,r12d
>>>>>>> 
>>>>>>> +        add     eax,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>> 
>>>>>>> +        add     eax,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,DWORD[32+rsi]
>>>>>>> 
>>>>>>> +        mov     r13d,r8d
>>>>>>> 
>>>>>>> +        mov     r14d,eax
>>>>>>> 
>>>>>>> +        bswap   r12d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r15d,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r8d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r15d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[32+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,eax
>>>>>>> 
>>>>>>> +        and     r15d,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,r11d
>>>>>>> 
>>>>>>> +        xor     r15d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,r8d
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15d,eax
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15d,ebx
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     r11d,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r11d,edi
>>>>>>> 
>>>>>>> +        add     edx,r12d
>>>>>>> 
>>>>>>> +        add     r11d,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        add     r11d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,DWORD[36+rsi]
>>>>>>> 
>>>>>>> +        mov     r13d,edx
>>>>>>> 
>>>>>>> +        mov     r14d,r11d
>>>>>>> 
>>>>>>> +        bswap   r12d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     edi,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,edx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     edi,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[36+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,r11d
>>>>>>> 
>>>>>>> +        and     edi,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,r10d
>>>>>>> 
>>>>>>> +        xor     edi,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,edx
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edi,r11d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     r10d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r10d,r15d
>>>>>>> 
>>>>>>> +        add     ecx,r12d
>>>>>>> 
>>>>>>> +        add     r10d,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        add     r10d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,DWORD[40+rsi]
>>>>>>> 
>>>>>>> +        mov     r13d,ecx
>>>>>>> 
>>>>>>> +        mov     r14d,r10d
>>>>>>> 
>>>>>>> +        bswap   r12d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r15d,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,ecx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r15d,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[40+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,r10d
>>>>>>> 
>>>>>>> +        and     r15d,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,r9d
>>>>>>> 
>>>>>>> +        xor     r15d,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,ecx
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15d,r10d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15d,r11d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     r9d,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r9d,edi
>>>>>>> 
>>>>>>> +        add     ebx,r12d
>>>>>>> 
>>>>>>> +        add     r9d,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        add     r9d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,DWORD[44+rsi]
>>>>>>> 
>>>>>>> +        mov     r13d,ebx
>>>>>>> 
>>>>>>> +        mov     r14d,r9d
>>>>>>> 
>>>>>>> +        bswap   r12d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,ebx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[44+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,r9d
>>>>>>> 
>>>>>>> +        and     edi,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,r8d
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,ebx
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edi,r9d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edi,r10d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     r8d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r8d,r15d
>>>>>>> 
>>>>>>> +        add     eax,r12d
>>>>>>> 
>>>>>>> +        add     r8d,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>> 
>>>>>>> +        add     r8d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,DWORD[48+rsi]
>>>>>>> 
>>>>>>> +        mov     r13d,eax
>>>>>>> 
>>>>>>> +        mov     r14d,r8d
>>>>>>> 
>>>>>>> +        bswap   r12d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r15d,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,eax
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r15d,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[48+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,r8d
>>>>>>> 
>>>>>>> +        and     r15d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,edx
>>>>>>> 
>>>>>>> +        xor     r15d,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,eax
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15d,r8d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15d,r9d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     edx,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edx,edi
>>>>>>> 
>>>>>>> +        add     r11d,r12d
>>>>>>> 
>>>>>>> +        add     edx,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        add     edx,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,DWORD[52+rsi]
>>>>>>> 
>>>>>>> +        mov     r13d,r11d
>>>>>>> 
>>>>>>> +        mov     r14d,edx
>>>>>>> 
>>>>>>> +        bswap   r12d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r11d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[52+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,edx
>>>>>>> 
>>>>>>> +        and     edi,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,ecx
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,r11d
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edi,r8d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     ecx,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     ecx,r15d
>>>>>>> 
>>>>>>> +        add     r10d,r12d
>>>>>>> 
>>>>>>> +        add     ecx,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        add     ecx,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,DWORD[56+rsi]
>>>>>>> 
>>>>>>> +        mov     r13d,r10d
>>>>>>> 
>>>>>>> +        mov     r14d,ecx
>>>>>>> 
>>>>>>> +        bswap   r12d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r15d,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r10d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r15d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[56+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,ecx
>>>>>>> 
>>>>>>> +        and     r15d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,ebx
>>>>>>> 
>>>>>>> +        xor     r15d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,r10d
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15d,ecx
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15d,edx
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     ebx,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     ebx,edi
>>>>>>> 
>>>>>>> +        add     r9d,r12d
>>>>>>> 
>>>>>>> +        add     ebx,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        add     ebx,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,DWORD[60+rsi]
>>>>>>> 
>>>>>>> +        mov     r13d,r9d
>>>>>>> 
>>>>>>> +        mov     r14d,ebx
>>>>>>> 
>>>>>>> +        bswap   r12d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     edi,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r9d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     edi,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[60+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,ebx
>>>>>>> 
>>>>>>> +        and     edi,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,eax
>>>>>>> 
>>>>>>> +        xor     edi,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,r9d
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     eax,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     eax,r15d
>>>>>>> 
>>>>>>> +        add     r8d,r12d
>>>>>>> 
>>>>>>> +        add     eax,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$rounds_16_xx
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$rounds_16_xx:
>>>>>>> 
>>>>>>> +        mov     r13d,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12d,r13d
>>>>>>> 
>>>>>>> +        ror     r13d,11
>>>>>>> 
>>>>>>> +        add     eax,r14d
>>>>>>> 
>>>>>>> +        mov     r14d,r15d
>>>>>>> 
>>>>>>> +        ror     r15d,2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r12d
>>>>>>> 
>>>>>>> +        shr     r12d,3
>>>>>>> 
>>>>>>> +        ror     r13d,7
>>>>>>> 
>>>>>>> +        xor     r15d,r14d
>>>>>>> 
>>>>>>> +        shr     r14d,10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r15d,17
>>>>>>> 
>>>>>>> +        xor     r12d,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,r14d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rsp]
>>>>>>> 
>>>>>>> +        mov     r13d,r8d
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +        mov     r14d,eax
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r15d,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r8d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r15d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,eax
>>>>>>> 
>>>>>>> +        and     r15d,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,r11d
>>>>>>> 
>>>>>>> +        xor     r15d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,r8d
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15d,eax
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15d,ebx
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     r11d,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r11d,edi
>>>>>>> 
>>>>>>> +        add     edx,r12d
>>>>>>> 
>>>>>>> +        add     r11d,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        mov     r13d,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        mov     edi,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12d,r13d
>>>>>>> 
>>>>>>> +        ror     r13d,11
>>>>>>> 
>>>>>>> +        add     r11d,r14d
>>>>>>> 
>>>>>>> +        mov     r14d,edi
>>>>>>> 
>>>>>>> +        ror     edi,2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r12d
>>>>>>> 
>>>>>>> +        shr     r12d,3
>>>>>>> 
>>>>>>> +        ror     r13d,7
>>>>>>> 
>>>>>>> +        xor     edi,r14d
>>>>>>> 
>>>>>>> +        shr     r14d,10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     edi,17
>>>>>>> 
>>>>>>> +        xor     r12d,r13d
>>>>>>> 
>>>>>>> +        xor     edi,r14d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        mov     r13d,edx
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +        mov     r14d,r11d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     edi,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,edx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     edi,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[4+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,r11d
>>>>>>> 
>>>>>>> +        and     edi,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,r10d
>>>>>>> 
>>>>>>> +        xor     edi,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,edx
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edi,r11d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     r10d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r10d,r15d
>>>>>>> 
>>>>>>> +        add     ecx,r12d
>>>>>>> 
>>>>>>> +        add     r10d,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        mov     r13d,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,DWORD[rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12d,r13d
>>>>>>> 
>>>>>>> +        ror     r13d,11
>>>>>>> 
>>>>>>> +        add     r10d,r14d
>>>>>>> 
>>>>>>> +        mov     r14d,r15d
>>>>>>> 
>>>>>>> +        ror     r15d,2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r12d
>>>>>>> 
>>>>>>> +        shr     r12d,3
>>>>>>> 
>>>>>>> +        ror     r13d,7
>>>>>>> 
>>>>>>> +        xor     r15d,r14d
>>>>>>> 
>>>>>>> +        shr     r14d,10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r15d,17
>>>>>>> 
>>>>>>> +        xor     r12d,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,r14d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        mov     r13d,ecx
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +        mov     r14d,r10d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r15d,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,ecx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r15d,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[8+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,r10d
>>>>>>> 
>>>>>>> +        and     r15d,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,r9d
>>>>>>> 
>>>>>>> +        xor     r15d,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,ecx
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15d,r10d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15d,r11d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     r9d,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r9d,edi
>>>>>>> 
>>>>>>> +        add     ebx,r12d
>>>>>>> 
>>>>>>> +        add     r9d,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        mov     r13d,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        mov     edi,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12d,r13d
>>>>>>> 
>>>>>>> +        ror     r13d,11
>>>>>>> 
>>>>>>> +        add     r9d,r14d
>>>>>>> 
>>>>>>> +        mov     r14d,edi
>>>>>>> 
>>>>>>> +        ror     edi,2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r12d
>>>>>>> 
>>>>>>> +        shr     r12d,3
>>>>>>> 
>>>>>>> +        ror     r13d,7
>>>>>>> 
>>>>>>> +        xor     edi,r14d
>>>>>>> 
>>>>>>> +        shr     r14d,10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     edi,17
>>>>>>> 
>>>>>>> +        xor     r12d,r13d
>>>>>>> 
>>>>>>> +        xor     edi,r14d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        mov     r13d,ebx
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +        mov     r14d,r9d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,ebx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[12+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,r9d
>>>>>>> 
>>>>>>> +        and     edi,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,r8d
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,ebx
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edi,r9d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edi,r10d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     r8d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r8d,r15d
>>>>>>> 
>>>>>>> +        add     eax,r12d
>>>>>>> 
>>>>>>> +        add     r8d,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>> 
>>>>>>> +        mov     r13d,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12d,r13d
>>>>>>> 
>>>>>>> +        ror     r13d,11
>>>>>>> 
>>>>>>> +        add     r8d,r14d
>>>>>>> 
>>>>>>> +        mov     r14d,r15d
>>>>>>> 
>>>>>>> +        ror     r15d,2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r12d
>>>>>>> 
>>>>>>> +        shr     r12d,3
>>>>>>> 
>>>>>>> +        ror     r13d,7
>>>>>>> 
>>>>>>> +        xor     r15d,r14d
>>>>>>> 
>>>>>>> +        shr     r14d,10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r15d,17
>>>>>>> 
>>>>>>> +        xor     r12d,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,r14d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        mov     r13d,eax
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +        mov     r14d,r8d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r15d,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,eax
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r15d,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[16+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,r8d
>>>>>>> 
>>>>>>> +        and     r15d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,edx
>>>>>>> 
>>>>>>> +        xor     r15d,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,eax
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15d,r8d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15d,r9d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     edx,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edx,edi
>>>>>>> 
>>>>>>> +        add     r11d,r12d
>>>>>>> 
>>>>>>> +        add     edx,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        mov     r13d,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        mov     edi,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12d,r13d
>>>>>>> 
>>>>>>> +        ror     r13d,11
>>>>>>> 
>>>>>>> +        add     edx,r14d
>>>>>>> 
>>>>>>> +        mov     r14d,edi
>>>>>>> 
>>>>>>> +        ror     edi,2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r12d
>>>>>>> 
>>>>>>> +        shr     r12d,3
>>>>>>> 
>>>>>>> +        ror     r13d,7
>>>>>>> 
>>>>>>> +        xor     edi,r14d
>>>>>>> 
>>>>>>> +        shr     r14d,10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     edi,17
>>>>>>> 
>>>>>>> +        xor     r12d,r13d
>>>>>>> 
>>>>>>> +        xor     edi,r14d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        mov     r13d,r11d
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +        mov     r14d,edx
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r11d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[20+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,edx
>>>>>>> 
>>>>>>> +        and     edi,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,ecx
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,r11d
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edi,r8d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     ecx,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     ecx,r15d
>>>>>>> 
>>>>>>> +        add     r10d,r12d
>>>>>>> 
>>>>>>> +        add     ecx,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        mov     r13d,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12d,r13d
>>>>>>> 
>>>>>>> +        ror     r13d,11
>>>>>>> 
>>>>>>> +        add     ecx,r14d
>>>>>>> 
>>>>>>> +        mov     r14d,r15d
>>>>>>> 
>>>>>>> +        ror     r15d,2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r12d
>>>>>>> 
>>>>>>> +        shr     r12d,3
>>>>>>> 
>>>>>>> +        ror     r13d,7
>>>>>>> 
>>>>>>> +        xor     r15d,r14d
>>>>>>> 
>>>>>>> +        shr     r14d,10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r15d,17
>>>>>>> 
>>>>>>> +        xor     r12d,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,r14d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        mov     r13d,r10d
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +        mov     r14d,ecx
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r15d,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r10d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r15d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[24+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,ecx
>>>>>>> 
>>>>>>> +        and     r15d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,ebx
>>>>>>> 
>>>>>>> +        xor     r15d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,r10d
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15d,ecx
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15d,edx
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     ebx,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     ebx,edi
>>>>>>> 
>>>>>>> +        add     r9d,r12d
>>>>>>> 
>>>>>>> +        add     ebx,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        mov     r13d,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        mov     edi,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12d,r13d
>>>>>>> 
>>>>>>> +        ror     r13d,11
>>>>>>> 
>>>>>>> +        add     ebx,r14d
>>>>>>> 
>>>>>>> +        mov     r14d,edi
>>>>>>> 
>>>>>>> +        ror     edi,2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r12d
>>>>>>> 
>>>>>>> +        shr     r12d,3
>>>>>>> 
>>>>>>> +        ror     r13d,7
>>>>>>> 
>>>>>>> +        xor     edi,r14d
>>>>>>> 
>>>>>>> +        shr     r14d,10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     edi,17
>>>>>>> 
>>>>>>> +        xor     r12d,r13d
>>>>>>> 
>>>>>>> +        xor     edi,r14d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        mov     r13d,r9d
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +        mov     r14d,ebx
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     edi,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r9d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     edi,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[28+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,ebx
>>>>>>> 
>>>>>>> +        and     edi,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,eax
>>>>>>> 
>>>>>>> +        xor     edi,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,r9d
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     eax,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     eax,r15d
>>>>>>> 
>>>>>>> +        add     r8d,r12d
>>>>>>> 
>>>>>>> +        add     eax,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>> 
>>>>>>> +        mov     r13d,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12d,r13d
>>>>>>> 
>>>>>>> +        ror     r13d,11
>>>>>>> 
>>>>>>> +        add     eax,r14d
>>>>>>> 
>>>>>>> +        mov     r14d,r15d
>>>>>>> 
>>>>>>> +        ror     r15d,2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r12d
>>>>>>> 
>>>>>>> +        shr     r12d,3
>>>>>>> 
>>>>>>> +        ror     r13d,7
>>>>>>> 
>>>>>>> +        xor     r15d,r14d
>>>>>>> 
>>>>>>> +        shr     r14d,10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r15d,17
>>>>>>> 
>>>>>>> +        xor     r12d,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,r14d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        mov     r13d,r8d
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +        mov     r14d,eax
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r15d,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r8d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r15d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[32+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,eax
>>>>>>> 
>>>>>>> +        and     r15d,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,r11d
>>>>>>> 
>>>>>>> +        xor     r15d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,r8d
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15d,eax
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15d,ebx
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     r11d,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r11d,edi
>>>>>>> 
>>>>>>> +        add     edx,r12d
>>>>>>> 
>>>>>>> +        add     r11d,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        mov     r13d,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        mov     edi,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12d,r13d
>>>>>>> 
>>>>>>> +        ror     r13d,11
>>>>>>> 
>>>>>>> +        add     r11d,r14d
>>>>>>> 
>>>>>>> +        mov     r14d,edi
>>>>>>> 
>>>>>>> +        ror     edi,2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r12d
>>>>>>> 
>>>>>>> +        shr     r12d,3
>>>>>>> 
>>>>>>> +        ror     r13d,7
>>>>>>> 
>>>>>>> +        xor     edi,r14d
>>>>>>> 
>>>>>>> +        shr     r14d,10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     edi,17
>>>>>>> 
>>>>>>> +        xor     r12d,r13d
>>>>>>> 
>>>>>>> +        xor     edi,r14d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        mov     r13d,edx
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +        mov     r14d,r11d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     edi,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,edx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     edi,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[36+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,r11d
>>>>>>> 
>>>>>>> +        and     edi,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,r10d
>>>>>>> 
>>>>>>> +        xor     edi,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,edx
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edi,r11d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     r10d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r10d,r15d
>>>>>>> 
>>>>>>> +        add     ecx,r12d
>>>>>>> 
>>>>>>> +        add     r10d,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        mov     r13d,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12d,r13d
>>>>>>> 
>>>>>>> +        ror     r13d,11
>>>>>>> 
>>>>>>> +        add     r10d,r14d
>>>>>>> 
>>>>>>> +        mov     r14d,r15d
>>>>>>> 
>>>>>>> +        ror     r15d,2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r12d
>>>>>>> 
>>>>>>> +        shr     r12d,3
>>>>>>> 
>>>>>>> +        ror     r13d,7
>>>>>>> 
>>>>>>> +        xor     r15d,r14d
>>>>>>> 
>>>>>>> +        shr     r14d,10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r15d,17
>>>>>>> 
>>>>>>> +        xor     r12d,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,r14d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        mov     r13d,ecx
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +        mov     r14d,r10d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r15d,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,ecx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r15d,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[40+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,r10d
>>>>>>> 
>>>>>>> +        and     r15d,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,r9d
>>>>>>> 
>>>>>>> +        xor     r15d,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,ecx
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15d,r10d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15d,r11d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     r9d,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r9d,edi
>>>>>>> 
>>>>>>> +        add     ebx,r12d
>>>>>>> 
>>>>>>> +        add     r9d,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        mov     r13d,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        mov     edi,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12d,r13d
>>>>>>> 
>>>>>>> +        ror     r13d,11
>>>>>>> 
>>>>>>> +        add     r9d,r14d
>>>>>>> 
>>>>>>> +        mov     r14d,edi
>>>>>>> 
>>>>>>> +        ror     edi,2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r12d
>>>>>>> 
>>>>>>> +        shr     r12d,3
>>>>>>> 
>>>>>>> +        ror     r13d,7
>>>>>>> 
>>>>>>> +        xor     edi,r14d
>>>>>>> 
>>>>>>> +        shr     r14d,10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     edi,17
>>>>>>> 
>>>>>>> +        xor     r12d,r13d
>>>>>>> 
>>>>>>> +        xor     edi,r14d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        mov     r13d,ebx
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +        mov     r14d,r9d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     edi,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,ebx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[44+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,r9d
>>>>>>> 
>>>>>>> +        and     edi,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,r8d
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,ebx
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edi,r9d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edi,r10d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     r8d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r8d,r15d
>>>>>>> 
>>>>>>> +        add     eax,r12d
>>>>>>> 
>>>>>>> +        add     r8d,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>> 
>>>>>>> +        mov     r13d,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12d,r13d
>>>>>>> 
>>>>>>> +        ror     r13d,11
>>>>>>> 
>>>>>>> +        add     r8d,r14d
>>>>>>> 
>>>>>>> +        mov     r14d,r15d
>>>>>>> 
>>>>>>> +        ror     r15d,2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r12d
>>>>>>> 
>>>>>>> +        shr     r12d,3
>>>>>>> 
>>>>>>> +        ror     r13d,7
>>>>>>> 
>>>>>>> +        xor     r15d,r14d
>>>>>>> 
>>>>>>> +        shr     r14d,10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r15d,17
>>>>>>> 
>>>>>>> +        xor     r12d,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,r14d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        mov     r13d,eax
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +        mov     r14d,r8d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r15d,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,eax
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r15d,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[48+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,r8d
>>>>>>> 
>>>>>>> +        and     r15d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,edx
>>>>>>> 
>>>>>>> +        xor     r15d,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,eax
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15d,r8d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15d,r9d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     edx,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edx,edi
>>>>>>> 
>>>>>>> +        add     r11d,r12d
>>>>>>> 
>>>>>>> +        add     edx,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        mov     r13d,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        mov     edi,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12d,r13d
>>>>>>> 
>>>>>>> +        ror     r13d,11
>>>>>>> 
>>>>>>> +        add     edx,r14d
>>>>>>> 
>>>>>>> +        mov     r14d,edi
>>>>>>> 
>>>>>>> +        ror     edi,2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r12d
>>>>>>> 
>>>>>>> +        shr     r12d,3
>>>>>>> 
>>>>>>> +        ror     r13d,7
>>>>>>> 
>>>>>>> +        xor     edi,r14d
>>>>>>> 
>>>>>>> +        shr     r14d,10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     edi,17
>>>>>>> 
>>>>>>> +        xor     r12d,r13d
>>>>>>> 
>>>>>>> +        xor     edi,r14d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        mov     r13d,r11d
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +        mov     r14d,edx
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     edi,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r11d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[52+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,edx
>>>>>>> 
>>>>>>> +        and     edi,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,ecx
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,r11d
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edi,r8d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     ecx,r8d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     ecx,r15d
>>>>>>> 
>>>>>>> +        add     r10d,r12d
>>>>>>> 
>>>>>>> +        add     ecx,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        mov     r13d,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12d,r13d
>>>>>>> 
>>>>>>> +        ror     r13d,11
>>>>>>> 
>>>>>>> +        add     ecx,r14d
>>>>>>> 
>>>>>>> +        mov     r14d,r15d
>>>>>>> 
>>>>>>> +        ror     r15d,2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r12d
>>>>>>> 
>>>>>>> +        shr     r12d,3
>>>>>>> 
>>>>>>> +        ror     r13d,7
>>>>>>> 
>>>>>>> +        xor     r15d,r14d
>>>>>>> 
>>>>>>> +        shr     r14d,10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r15d,17
>>>>>>> 
>>>>>>> +        xor     r12d,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,r14d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        mov     r13d,r10d
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +        mov     r14d,ecx
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r15d,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r10d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r15d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[56+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,ecx
>>>>>>> 
>>>>>>> +        and     r15d,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,ebx
>>>>>>> 
>>>>>>> +        xor     r15d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,r10d
>>>>>>> 
>>>>>>> +        add     r12d,r15d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15d,ecx
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15d,edx
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     ebx,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     ebx,edi
>>>>>>> 
>>>>>>> +        add     r9d,r12d
>>>>>>> 
>>>>>>> +        add     ebx,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[4+rbp]
>>>>>>> 
>>>>>>> +        mov     r13d,DWORD[rsp]
>>>>>>> 
>>>>>>> +        mov     edi,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12d,r13d
>>>>>>> 
>>>>>>> +        ror     r13d,11
>>>>>>> 
>>>>>>> +        add     ebx,r14d
>>>>>>> 
>>>>>>> +        mov     r14d,edi
>>>>>>> 
>>>>>>> +        ror     edi,2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r12d
>>>>>>> 
>>>>>>> +        shr     r12d,3
>>>>>>> 
>>>>>>> +        ror     r13d,7
>>>>>>> 
>>>>>>> +        xor     edi,r14d
>>>>>>> 
>>>>>>> +        shr     r14d,10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     edi,17
>>>>>>> 
>>>>>>> +        xor     r12d,r13d
>>>>>>> 
>>>>>>> +        xor     edi,r14d
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        mov     r13d,r9d
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +        mov     r14d,ebx
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     edi,r10d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13d,r9d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     edi,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     DWORD[60+rsp],r12d
>>>>>>> 
>>>>>>> +        xor     r14d,ebx
>>>>>>> 
>>>>>>> +        and     edi,r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        add     r12d,eax
>>>>>>> 
>>>>>>> +        xor     edi,r11d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r13d,r9d
>>>>>>> 
>>>>>>> +        add     r12d,edi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        add     r12d,DWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14d,ebx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        mov     eax,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r12d,r13d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     eax,r15d
>>>>>>> 
>>>>>>> +        add     r8d,r12d
>>>>>>> 
>>>>>>> +        add     eax,r12d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[20+rbp]
>>>>>>> 
>>>>>>> +        cmp     BYTE[3+rbp],0
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$rounds_16_xx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[((64+0))+rsp]
>>>>>>> 
>>>>>>> +        add     eax,r14d
>>>>>>> 
>>>>>>> +        lea     rsi,[64+rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[((64+16))+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[88+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$epilogue:
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$SEH_end_sha256_block_data_order:
>>>>>>> 
>>>>>>> +ALIGN   64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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      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
>>>>>>> 
>>>>>>> +DB      32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
>>>>>>> 
>>>>>>> +DB      111,114,103,62,0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   64
>>>>>>> 
>>>>>>> +sha256_block_data_order_shaext:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_sha256_block_data_order_shaext:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +_shaext_shortcut:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsp,[((-88))+rsp]
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-8-80)+rax],xmm6
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-8-64)+rax],xmm7
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-8-48)+rax],xmm8
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-8-32)+rax],xmm9
>>>>>>> 
>>>>>>> +        movaps  XMMWORD[(-8-16)+rax],xmm10
>>>>>>> 
>>>>>>> +$L$prologue_shaext:
>>>>>>> 
>>>>>>> +        lea     rcx,[((K256+128))]
>>>>>>> 
>>>>>>> +        movdqu  xmm1,XMMWORD[rdi]
>>>>>>> 
>>>>>>> +        movdqu  xmm2,XMMWORD[16+rdi]
>>>>>>> 
>>>>>>> +        movdqa  xmm7,XMMWORD[((512-128))+rcx]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm1,0x1b
>>>>>>> 
>>>>>>> +        pshufd  xmm1,xmm1,0xb1
>>>>>>> 
>>>>>>> +        pshufd  xmm2,xmm2,0x1b
>>>>>>> 
>>>>>>> +        movdqa  xmm8,xmm7
>>>>>>> 
>>>>>>> +DB      102,15,58,15,202,8
>>>>>>> 
>>>>>>> +        punpcklqdq      xmm2,xmm0
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_shaext
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$oop_shaext:
>>>>>>> 
>>>>>>> +        movdqu  xmm3,XMMWORD[rsi]
>>>>>>> 
>>>>>>> +        movdqu  xmm4,XMMWORD[16+rsi]
>>>>>>> 
>>>>>>> +        movdqu  xmm5,XMMWORD[32+rsi]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,223
>>>>>>> 
>>>>>>> +        movdqu  xmm6,XMMWORD[48+rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((0-128))+rcx]
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm3
>>>>>>> 
>>>>>>> +DB      102,15,56,0,231
>>>>>>> 
>>>>>>> +        movdqa  xmm10,xmm2
>>>>>>> 
>>>>>>> +DB      15,56,203,209
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +        movdqa  xmm9,xmm1
>>>>>>> 
>>>>>>> +DB      15,56,203,202
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((32-128))+rcx]
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm4
>>>>>>> 
>>>>>>> +DB      102,15,56,0,239
>>>>>>> 
>>>>>>> +DB      15,56,203,209
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>> 
>>>>>>> +        lea     rsi,[64+rsi]
>>>>>>> 
>>>>>>> +DB      15,56,204,220
>>>>>>> 
>>>>>>> +DB      15,56,203,202
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((64-128))+rcx]
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm5
>>>>>>> 
>>>>>>> +DB      102,15,56,0,247
>>>>>>> 
>>>>>>> +DB      15,56,203,209
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>> 
>>>>>>> +DB      102,15,58,15,253,4
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm7
>>>>>>> 
>>>>>>> +DB      15,56,204,229
>>>>>>> 
>>>>>>> +DB      15,56,203,202
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((96-128))+rcx]
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm6
>>>>>>> 
>>>>>>> +DB      15,56,205,222
>>>>>>> 
>>>>>>> +DB      15,56,203,209
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm3
>>>>>>> 
>>>>>>> +DB      102,15,58,15,254,4
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm7
>>>>>>> 
>>>>>>> +DB      15,56,204,238
>>>>>>> 
>>>>>>> +DB      15,56,203,202
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((128-128))+rcx]
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm3
>>>>>>> 
>>>>>>> +DB      15,56,205,227
>>>>>>> 
>>>>>>> +DB      15,56,203,209
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm4
>>>>>>> 
>>>>>>> +DB      102,15,58,15,251,4
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +DB      15,56,204,243
>>>>>>> 
>>>>>>> +DB      15,56,203,202
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((160-128))+rcx]
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm4
>>>>>>> 
>>>>>>> +DB      15,56,205,236
>>>>>>> 
>>>>>>> +DB      15,56,203,209
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>> 
>>>>>>> +DB      102,15,58,15,252,4
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +DB      15,56,204,220
>>>>>>> 
>>>>>>> +DB      15,56,203,202
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((192-128))+rcx]
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm5
>>>>>>> 
>>>>>>> +DB      15,56,205,245
>>>>>>> 
>>>>>>> +DB      15,56,203,209
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>> 
>>>>>>> +DB      102,15,58,15,253,4
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm7
>>>>>>> 
>>>>>>> +DB      15,56,204,229
>>>>>>> 
>>>>>>> +DB      15,56,203,202
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((224-128))+rcx]
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm6
>>>>>>> 
>>>>>>> +DB      15,56,205,222
>>>>>>> 
>>>>>>> +DB      15,56,203,209
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm3
>>>>>>> 
>>>>>>> +DB      102,15,58,15,254,4
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm7
>>>>>>> 
>>>>>>> +DB      15,56,204,238
>>>>>>> 
>>>>>>> +DB      15,56,203,202
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((256-128))+rcx]
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm3
>>>>>>> 
>>>>>>> +DB      15,56,205,227
>>>>>>> 
>>>>>>> +DB      15,56,203,209
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm4
>>>>>>> 
>>>>>>> +DB      102,15,58,15,251,4
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +DB      15,56,204,243
>>>>>>> 
>>>>>>> +DB      15,56,203,202
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((288-128))+rcx]
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm4
>>>>>>> 
>>>>>>> +DB      15,56,205,236
>>>>>>> 
>>>>>>> +DB      15,56,203,209
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>> 
>>>>>>> +DB      102,15,58,15,252,4
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +DB      15,56,204,220
>>>>>>> 
>>>>>>> +DB      15,56,203,202
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((320-128))+rcx]
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm5
>>>>>>> 
>>>>>>> +DB      15,56,205,245
>>>>>>> 
>>>>>>> +DB      15,56,203,209
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm6
>>>>>>> 
>>>>>>> +DB      102,15,58,15,253,4
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm7
>>>>>>> 
>>>>>>> +DB      15,56,204,229
>>>>>>> 
>>>>>>> +DB      15,56,203,202
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((352-128))+rcx]
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm6
>>>>>>> 
>>>>>>> +DB      15,56,205,222
>>>>>>> 
>>>>>>> +DB      15,56,203,209
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm3
>>>>>>> 
>>>>>>> +DB      102,15,58,15,254,4
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm7
>>>>>>> 
>>>>>>> +DB      15,56,204,238
>>>>>>> 
>>>>>>> +DB      15,56,203,202
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((384-128))+rcx]
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm3
>>>>>>> 
>>>>>>> +DB      15,56,205,227
>>>>>>> 
>>>>>>> +DB      15,56,203,209
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm4
>>>>>>> 
>>>>>>> +DB      102,15,58,15,251,4
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm7
>>>>>>> 
>>>>>>> +DB      15,56,204,243
>>>>>>> 
>>>>>>> +DB      15,56,203,202
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((416-128))+rcx]
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm4
>>>>>>> 
>>>>>>> +DB      15,56,205,236
>>>>>>> 
>>>>>>> +DB      15,56,203,209
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm5
>>>>>>> 
>>>>>>> +DB      102,15,58,15,252,4
>>>>>>> 
>>>>>>> +DB      15,56,203,202
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm7
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((448-128))+rcx]
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm5
>>>>>>> 
>>>>>>> +DB      15,56,203,209
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>> 
>>>>>>> +DB      15,56,205,245
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm8
>>>>>>> 
>>>>>>> +DB      15,56,203,202
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqa  xmm0,XMMWORD[((480-128))+rcx]
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm6
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +DB      15,56,203,209
>>>>>>> 
>>>>>>> +        pshufd  xmm0,xmm0,0x0e
>>>>>>> 
>>>>>>> +        dec     rdx
>>>>>>> 
>>>>>>> +        nop
>>>>>>> 
>>>>>>> +DB      15,56,203,202
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm10
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm9
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_shaext
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        pshufd  xmm2,xmm2,0xb1
>>>>>>> 
>>>>>>> +        pshufd  xmm7,xmm1,0x1b
>>>>>>> 
>>>>>>> +        pshufd  xmm1,xmm1,0xb1
>>>>>>> 
>>>>>>> +        punpckhqdq      xmm1,xmm2
>>>>>>> 
>>>>>>> +DB      102,15,58,15,215,8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[rdi],xmm1
>>>>>>> 
>>>>>>> +        movdqu  XMMWORD[16+rdi],xmm2
>>>>>>> 
>>>>>>> +        movaps  xmm6,XMMWORD[((-8-80))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm7,XMMWORD[((-8-64))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm8,XMMWORD[((-8-48))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm9,XMMWORD[((-8-32))+rax]
>>>>>>> 
>>>>>>> +        movaps  xmm10,XMMWORD[((-8-16))+rax]
>>>>>>> 
>>>>>>> +        mov     rsp,rax
>>>>>>> 
>>>>>>> +$L$epilogue_shaext:
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$SEH_end_sha256_block_data_order_shaext:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   64
>>>>>>> 
>>>>>>> +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:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$ssse3_shortcut:
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        shl     rdx,4
>>>>>>> 
>>>>>>> +        sub     rsp,160
>>>>>>> 
>>>>>>> +        lea     rdx,[rdx*4+rsi]
>>>>>>> 
>>>>>>> +        and     rsp,-64
>>>>>>> 
>>>>>>> +        mov     QWORD[((64+0))+rsp],rdi
>>>>>>> 
>>>>>>> +        mov     QWORD[((64+8))+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     QWORD[((64+16))+rsp],rdx
>>>>>>> 
>>>>>>> +        mov     QWORD[88+rsp],rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[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_ssse3
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$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[48+rsi]
>>>>>>> 
>>>>>>> +        lea     rbp,[K256]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,207
>>>>>>> 
>>>>>>> +        movdqa  xmm4,XMMWORD[rbp]
>>>>>>> 
>>>>>>> +        movdqa  xmm5,XMMWORD[32+rbp]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,215
>>>>>>> 
>>>>>>> +        paddd   xmm4,xmm0
>>>>>>> 
>>>>>>> +        movdqa  xmm6,XMMWORD[64+rbp]
>>>>>>> 
>>>>>>> +DB      102,15,56,0,223
>>>>>>> 
>>>>>>> +        movdqa  xmm7,XMMWORD[96+rbp]
>>>>>>> 
>>>>>>> +        paddd   xmm5,xmm1
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm2
>>>>>>> 
>>>>>>> +        paddd   xmm7,xmm3
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[rsp],xmm4
>>>>>>> 
>>>>>>> +        mov     r14d,eax
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm5
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm6
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[48+rsp],xmm7
>>>>>>> 
>>>>>>> +        mov     r13d,r8d
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ssse3_00_47
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ssse3_00_47:
>>>>>>> 
>>>>>>> +        sub     rbp,-128
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm1
>>>>>>> 
>>>>>>> +        mov     eax,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,r9d
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm3
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,r8d
>>>>>>> 
>>>>>>> +        xor     r12d,r10d
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,eax
>>>>>>> 
>>>>>>> +DB      102,15,58,15,224,4
>>>>>>> 
>>>>>>> +        and     r12d,r8d
>>>>>>> 
>>>>>>> +        xor     r13d,r8d
>>>>>>> 
>>>>>>> +DB      102,15,58,15,250,4
>>>>>>> 
>>>>>>> +        add     r11d,DWORD[rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,eax
>>>>>>> 
>>>>>>> +        xor     r12d,r10d
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>> 
>>>>>>> +        xor     r15d,ebx
>>>>>>> 
>>>>>>> +        add     r11d,r12d
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm4
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        psrld   xmm4,3
>>>>>>> 
>>>>>>> +        xor     r14d,eax
>>>>>>> 
>>>>>>> +        add     r11d,r13d
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm7
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     edx,r11d
>>>>>>> 
>>>>>>> +        psrld   xmm6,7
>>>>>>> 
>>>>>>> +        add     r11d,edi
>>>>>>> 
>>>>>>> +        mov     r13d,edx
>>>>>>> 
>>>>>>> +        pshufd  xmm7,xmm3,250
>>>>>>> 
>>>>>>> +        add     r14d,r11d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        pslld   xmm5,14
>>>>>>> 
>>>>>>> +        mov     r11d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,r8d
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,edx
>>>>>>> 
>>>>>>> +        xor     r12d,r9d
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        psrld   xmm6,11
>>>>>>> 
>>>>>>> +        xor     r14d,r11d
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>> 
>>>>>>> +        and     r12d,edx
>>>>>>> 
>>>>>>> +        xor     r13d,edx
>>>>>>> 
>>>>>>> +        pslld   xmm5,11
>>>>>>> 
>>>>>>> +        add     r10d,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        mov     edi,r11d
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +        xor     r12d,r9d
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        add     r10d,r12d
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        xor     r14d,r11d
>>>>>>> 
>>>>>>> +        psrld   xmm7,10
>>>>>>> 
>>>>>>> +        add     r10d,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,eax
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm4
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     ecx,r10d
>>>>>>> 
>>>>>>> +        psrlq   xmm6,17
>>>>>>> 
>>>>>>> +        add     r10d,r15d
>>>>>>> 
>>>>>>> +        mov     r13d,ecx
>>>>>>> 
>>>>>>> +        add     r14d,r10d
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r10d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,edx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        psrlq   xmm6,2
>>>>>>> 
>>>>>>> +        xor     r13d,ecx
>>>>>>> 
>>>>>>> +        xor     r12d,r8d
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,r10d
>>>>>>> 
>>>>>>> +        and     r12d,ecx
>>>>>>> 
>>>>>>> +        pshufd  xmm7,xmm7,128
>>>>>>> 
>>>>>>> +        xor     r13d,ecx
>>>>>>> 
>>>>>>> +        add     r9d,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,r10d
>>>>>>> 
>>>>>>> +        psrldq  xmm7,8
>>>>>>> 
>>>>>>> +        xor     r12d,r8d
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r15d,r11d
>>>>>>> 
>>>>>>> +        add     r9d,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm7
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        xor     r14d,r10d
>>>>>>> 
>>>>>>> +        add     r9d,r13d
>>>>>>> 
>>>>>>> +        pshufd  xmm7,xmm0,80
>>>>>>> 
>>>>>>> +        xor     edi,r11d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     ebx,r9d
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>> 
>>>>>>> +        add     r9d,edi
>>>>>>> 
>>>>>>> +        mov     r13d,ebx
>>>>>>> 
>>>>>>> +        psrld   xmm7,10
>>>>>>> 
>>>>>>> +        add     r14d,r9d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        psrlq   xmm6,17
>>>>>>> 
>>>>>>> +        mov     r9d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,ecx
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,ebx
>>>>>>> 
>>>>>>> +        xor     r12d,edx
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,r9d
>>>>>>> 
>>>>>>> +        psrlq   xmm6,2
>>>>>>> 
>>>>>>> +        and     r12d,ebx
>>>>>>> 
>>>>>>> +        xor     r13d,ebx
>>>>>>> 
>>>>>>> +        add     r8d,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>> 
>>>>>>> +        mov     edi,r9d
>>>>>>> 
>>>>>>> +        xor     r12d,edx
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        pshufd  xmm7,xmm7,8
>>>>>>> 
>>>>>>> +        xor     edi,r10d
>>>>>>> 
>>>>>>> +        add     r8d,r12d
>>>>>>> 
>>>>>>> +        movdqa  xmm6,XMMWORD[rbp]
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        pslldq  xmm7,8
>>>>>>> 
>>>>>>> +        xor     r14d,r9d
>>>>>>> 
>>>>>>> +        add     r8d,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,r10d
>>>>>>> 
>>>>>>> +        paddd   xmm0,xmm7
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     eax,r8d
>>>>>>> 
>>>>>>> +        add     r8d,r15d
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm0
>>>>>>> 
>>>>>>> +        mov     r13d,eax
>>>>>>> 
>>>>>>> +        add     r14d,r8d
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[rsp],xmm6
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm2
>>>>>>> 
>>>>>>> +        mov     r8d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,ebx
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm0
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,eax
>>>>>>> 
>>>>>>> +        xor     r12d,ecx
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,r8d
>>>>>>> 
>>>>>>> +DB      102,15,58,15,225,4
>>>>>>> 
>>>>>>> +        and     r12d,eax
>>>>>>> 
>>>>>>> +        xor     r13d,eax
>>>>>>> 
>>>>>>> +DB      102,15,58,15,251,4
>>>>>>> 
>>>>>>> +        add     edx,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,r8d
>>>>>>> 
>>>>>>> +        xor     r12d,ecx
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>> 
>>>>>>> +        xor     r15d,r9d
>>>>>>> 
>>>>>>> +        add     edx,r12d
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm4
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        psrld   xmm4,3
>>>>>>> 
>>>>>>> +        xor     r14d,r8d
>>>>>>> 
>>>>>>> +        add     edx,r13d
>>>>>>> 
>>>>>>> +        xor     edi,r9d
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm7
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r11d,edx
>>>>>>> 
>>>>>>> +        psrld   xmm6,7
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        mov     r13d,r11d
>>>>>>> 
>>>>>>> +        pshufd  xmm7,xmm0,250
>>>>>>> 
>>>>>>> +        add     r14d,edx
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        pslld   xmm5,14
>>>>>>> 
>>>>>>> +        mov     edx,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,eax
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,r11d
>>>>>>> 
>>>>>>> +        xor     r12d,ebx
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        psrld   xmm6,11
>>>>>>> 
>>>>>>> +        xor     r14d,edx
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>> 
>>>>>>> +        and     r12d,r11d
>>>>>>> 
>>>>>>> +        xor     r13d,r11d
>>>>>>> 
>>>>>>> +        pslld   xmm5,11
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +        xor     r12d,ebx
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>> 
>>>>>>> +        xor     edi,r8d
>>>>>>> 
>>>>>>> +        add     ecx,r12d
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        xor     r14d,edx
>>>>>>> 
>>>>>>> +        psrld   xmm7,10
>>>>>>> 
>>>>>>> +        add     ecx,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,r8d
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm4
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r10d,ecx
>>>>>>> 
>>>>>>> +        psrlq   xmm6,17
>>>>>>> 
>>>>>>> +        add     ecx,r15d
>>>>>>> 
>>>>>>> +        mov     r13d,r10d
>>>>>>> 
>>>>>>> +        add     r14d,ecx
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     ecx,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,r11d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        psrlq   xmm6,2
>>>>>>> 
>>>>>>> +        xor     r13d,r10d
>>>>>>> 
>>>>>>> +        xor     r12d,eax
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,ecx
>>>>>>> 
>>>>>>> +        and     r12d,r10d
>>>>>>> 
>>>>>>> +        pshufd  xmm7,xmm7,128
>>>>>>> 
>>>>>>> +        xor     r13d,r10d
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,ecx
>>>>>>> 
>>>>>>> +        psrldq  xmm7,8
>>>>>>> 
>>>>>>> +        xor     r12d,eax
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r15d,edx
>>>>>>> 
>>>>>>> +        add     ebx,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm7
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        xor     r14d,ecx
>>>>>>> 
>>>>>>> +        add     ebx,r13d
>>>>>>> 
>>>>>>> +        pshufd  xmm7,xmm1,80
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r9d,ebx
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        mov     r13d,r9d
>>>>>>> 
>>>>>>> +        psrld   xmm7,10
>>>>>>> 
>>>>>>> +        add     r14d,ebx
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        psrlq   xmm6,17
>>>>>>> 
>>>>>>> +        mov     ebx,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,r10d
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,r9d
>>>>>>> 
>>>>>>> +        xor     r12d,r11d
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,ebx
>>>>>>> 
>>>>>>> +        psrlq   xmm6,2
>>>>>>> 
>>>>>>> +        and     r12d,r9d
>>>>>>> 
>>>>>>> +        xor     r13d,r9d
>>>>>>> 
>>>>>>> +        add     eax,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        xor     r12d,r11d
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        pshufd  xmm7,xmm7,8
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        add     eax,r12d
>>>>>>> 
>>>>>>> +        movdqa  xmm6,XMMWORD[32+rbp]
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        pslldq  xmm7,8
>>>>>>> 
>>>>>>> +        xor     r14d,ebx
>>>>>>> 
>>>>>>> +        add     eax,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,ecx
>>>>>>> 
>>>>>>> +        paddd   xmm1,xmm7
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r8d,eax
>>>>>>> 
>>>>>>> +        add     eax,r15d
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm1
>>>>>>> 
>>>>>>> +        mov     r13d,r8d
>>>>>>> 
>>>>>>> +        add     r14d,eax
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[16+rsp],xmm6
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm3
>>>>>>> 
>>>>>>> +        mov     eax,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,r9d
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm1
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,r8d
>>>>>>> 
>>>>>>> +        xor     r12d,r10d
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,eax
>>>>>>> 
>>>>>>> +DB      102,15,58,15,226,4
>>>>>>> 
>>>>>>> +        and     r12d,r8d
>>>>>>> 
>>>>>>> +        xor     r13d,r8d
>>>>>>> 
>>>>>>> +DB      102,15,58,15,248,4
>>>>>>> 
>>>>>>> +        add     r11d,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,eax
>>>>>>> 
>>>>>>> +        xor     r12d,r10d
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>> 
>>>>>>> +        xor     r15d,ebx
>>>>>>> 
>>>>>>> +        add     r11d,r12d
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm4
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        psrld   xmm4,3
>>>>>>> 
>>>>>>> +        xor     r14d,eax
>>>>>>> 
>>>>>>> +        add     r11d,r13d
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm7
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     edx,r11d
>>>>>>> 
>>>>>>> +        psrld   xmm6,7
>>>>>>> 
>>>>>>> +        add     r11d,edi
>>>>>>> 
>>>>>>> +        mov     r13d,edx
>>>>>>> 
>>>>>>> +        pshufd  xmm7,xmm1,250
>>>>>>> 
>>>>>>> +        add     r14d,r11d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        pslld   xmm5,14
>>>>>>> 
>>>>>>> +        mov     r11d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,r8d
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,edx
>>>>>>> 
>>>>>>> +        xor     r12d,r9d
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        psrld   xmm6,11
>>>>>>> 
>>>>>>> +        xor     r14d,r11d
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>> 
>>>>>>> +        and     r12d,edx
>>>>>>> 
>>>>>>> +        xor     r13d,edx
>>>>>>> 
>>>>>>> +        pslld   xmm5,11
>>>>>>> 
>>>>>>> +        add     r10d,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        mov     edi,r11d
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +        xor     r12d,r9d
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        add     r10d,r12d
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        xor     r14d,r11d
>>>>>>> 
>>>>>>> +        psrld   xmm7,10
>>>>>>> 
>>>>>>> +        add     r10d,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,eax
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm4
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     ecx,r10d
>>>>>>> 
>>>>>>> +        psrlq   xmm6,17
>>>>>>> 
>>>>>>> +        add     r10d,r15d
>>>>>>> 
>>>>>>> +        mov     r13d,ecx
>>>>>>> 
>>>>>>> +        add     r14d,r10d
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r10d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,edx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        psrlq   xmm6,2
>>>>>>> 
>>>>>>> +        xor     r13d,ecx
>>>>>>> 
>>>>>>> +        xor     r12d,r8d
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,r10d
>>>>>>> 
>>>>>>> +        and     r12d,ecx
>>>>>>> 
>>>>>>> +        pshufd  xmm7,xmm7,128
>>>>>>> 
>>>>>>> +        xor     r13d,ecx
>>>>>>> 
>>>>>>> +        add     r9d,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,r10d
>>>>>>> 
>>>>>>> +        psrldq  xmm7,8
>>>>>>> 
>>>>>>> +        xor     r12d,r8d
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r15d,r11d
>>>>>>> 
>>>>>>> +        add     r9d,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm7
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        xor     r14d,r10d
>>>>>>> 
>>>>>>> +        add     r9d,r13d
>>>>>>> 
>>>>>>> +        pshufd  xmm7,xmm2,80
>>>>>>> 
>>>>>>> +        xor     edi,r11d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     ebx,r9d
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>> 
>>>>>>> +        add     r9d,edi
>>>>>>> 
>>>>>>> +        mov     r13d,ebx
>>>>>>> 
>>>>>>> +        psrld   xmm7,10
>>>>>>> 
>>>>>>> +        add     r14d,r9d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        psrlq   xmm6,17
>>>>>>> 
>>>>>>> +        mov     r9d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,ecx
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,ebx
>>>>>>> 
>>>>>>> +        xor     r12d,edx
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,r9d
>>>>>>> 
>>>>>>> +        psrlq   xmm6,2
>>>>>>> 
>>>>>>> +        and     r12d,ebx
>>>>>>> 
>>>>>>> +        xor     r13d,ebx
>>>>>>> 
>>>>>>> +        add     r8d,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>> 
>>>>>>> +        mov     edi,r9d
>>>>>>> 
>>>>>>> +        xor     r12d,edx
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        pshufd  xmm7,xmm7,8
>>>>>>> 
>>>>>>> +        xor     edi,r10d
>>>>>>> 
>>>>>>> +        add     r8d,r12d
>>>>>>> 
>>>>>>> +        movdqa  xmm6,XMMWORD[64+rbp]
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        pslldq  xmm7,8
>>>>>>> 
>>>>>>> +        xor     r14d,r9d
>>>>>>> 
>>>>>>> +        add     r8d,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,r10d
>>>>>>> 
>>>>>>> +        paddd   xmm2,xmm7
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     eax,r8d
>>>>>>> 
>>>>>>> +        add     r8d,r15d
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm2
>>>>>>> 
>>>>>>> +        mov     r13d,eax
>>>>>>> 
>>>>>>> +        add     r14d,r8d
>>>>>>> 
>>>>>>> +        movdqa  XMMWORD[32+rsp],xmm6
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        movdqa  xmm4,xmm0
>>>>>>> 
>>>>>>> +        mov     r8d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,ebx
>>>>>>> 
>>>>>>> +        movdqa  xmm7,xmm2
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,eax
>>>>>>> 
>>>>>>> +        xor     r12d,ecx
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,r8d
>>>>>>> 
>>>>>>> +DB      102,15,58,15,227,4
>>>>>>> 
>>>>>>> +        and     r12d,eax
>>>>>>> 
>>>>>>> +        xor     r13d,eax
>>>>>>> 
>>>>>>> +DB      102,15,58,15,249,4
>>>>>>> 
>>>>>>> +        add     edx,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,r8d
>>>>>>> 
>>>>>>> +        xor     r12d,ecx
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        movdqa  xmm5,xmm4
>>>>>>> 
>>>>>>> +        xor     r15d,r9d
>>>>>>> 
>>>>>>> +        add     edx,r12d
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm4
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        psrld   xmm4,3
>>>>>>> 
>>>>>>> +        xor     r14d,r8d
>>>>>>> 
>>>>>>> +        add     edx,r13d
>>>>>>> 
>>>>>>> +        xor     edi,r9d
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm7
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r11d,edx
>>>>>>> 
>>>>>>> +        psrld   xmm6,7
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        mov     r13d,r11d
>>>>>>> 
>>>>>>> +        pshufd  xmm7,xmm2,250
>>>>>>> 
>>>>>>> +        add     r14d,edx
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        pslld   xmm5,14
>>>>>>> 
>>>>>>> +        mov     edx,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,eax
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,r11d
>>>>>>> 
>>>>>>> +        xor     r12d,ebx
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        psrld   xmm6,11
>>>>>>> 
>>>>>>> +        xor     r14d,edx
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>> 
>>>>>>> +        and     r12d,r11d
>>>>>>> 
>>>>>>> +        xor     r13d,r11d
>>>>>>> 
>>>>>>> +        pslld   xmm5,11
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm6
>>>>>>> 
>>>>>>> +        xor     r12d,ebx
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>> 
>>>>>>> +        xor     edi,r8d
>>>>>>> 
>>>>>>> +        add     ecx,r12d
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm5
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        xor     r14d,edx
>>>>>>> 
>>>>>>> +        psrld   xmm7,10
>>>>>>> 
>>>>>>> +        add     ecx,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,r8d
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm4
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r10d,ecx
>>>>>>> 
>>>>>>> +        psrlq   xmm6,17
>>>>>>> 
>>>>>>> +        add     ecx,r15d
>>>>>>> 
>>>>>>> +        mov     r13d,r10d
>>>>>>> 
>>>>>>> +        add     r14d,ecx
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     ecx,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,r11d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        psrlq   xmm6,2
>>>>>>> 
>>>>>>> +        xor     r13d,r10d
>>>>>>> 
>>>>>>> +        xor     r12d,eax
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,ecx
>>>>>>> 
>>>>>>> +        and     r12d,r10d
>>>>>>> 
>>>>>>> +        pshufd  xmm7,xmm7,128
>>>>>>> 
>>>>>>> +        xor     r13d,r10d
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,ecx
>>>>>>> 
>>>>>>> +        psrldq  xmm7,8
>>>>>>> 
>>>>>>> +        xor     r12d,eax
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r15d,edx
>>>>>>> 
>>>>>>> +        add     ebx,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm7
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        xor     r14d,ecx
>>>>>>> 
>>>>>>> +        add     ebx,r13d
>>>>>>> 
>>>>>>> +        pshufd  xmm7,xmm3,80
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r9d,ebx
>>>>>>> 
>>>>>>> +        movdqa  xmm6,xmm7
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        mov     r13d,r9d
>>>>>>> 
>>>>>>> +        psrld   xmm7,10
>>>>>>> 
>>>>>>> +        add     r14d,ebx
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        psrlq   xmm6,17
>>>>>>> 
>>>>>>> +        mov     ebx,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,r10d
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,r9d
>>>>>>> 
>>>>>>> +        xor     r12d,r11d
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,ebx
>>>>>>> 
>>>>>>> +        psrlq   xmm6,2
>>>>>>> 
>>>>>>> +        and     r12d,r9d
>>>>>>> 
>>>>>>> +        xor     r13d,r9d
>>>>>>> 
>>>>>>> +        add     eax,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        pxor    xmm7,xmm6
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        xor     r12d,r11d
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        pshufd  xmm7,xmm7,8
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        add     eax,r12d
>>>>>>> 
>>>>>>> +        movdqa  xmm6,XMMWORD[96+rbp]
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        pslldq  xmm7,8
>>>>>>> 
>>>>>>> +        xor     r14d,ebx
>>>>>>> 
>>>>>>> +        add     eax,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,ecx
>>>>>>> 
>>>>>>> +        paddd   xmm3,xmm7
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r8d,eax
>>>>>>> 
>>>>>>> +        add     eax,r15d
>>>>>>> 
>>>>>>> +        paddd   xmm6,xmm3
>>>>>>> 
>>>>>>> +        mov     r13d,r8d
>>>>>>> 
>>>>>>> +        add     r14d,eax
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,r8d
>>>>>>> 
>>>>>>> +        xor     r12d,r10d
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,eax
>>>>>>> 
>>>>>>> +        and     r12d,r8d
>>>>>>> 
>>>>>>> +        xor     r13d,r8d
>>>>>>> 
>>>>>>> +        add     r11d,DWORD[rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,eax
>>>>>>> 
>>>>>>> +        xor     r12d,r10d
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r15d,ebx
>>>>>>> 
>>>>>>> +        add     r11d,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        xor     r14d,eax
>>>>>>> 
>>>>>>> +        add     r11d,r13d
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     edx,r11d
>>>>>>> 
>>>>>>> +        add     r11d,edi
>>>>>>> 
>>>>>>> +        mov     r13d,edx
>>>>>>> 
>>>>>>> +        add     r14d,r11d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r11d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,r8d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,edx
>>>>>>> 
>>>>>>> +        xor     r12d,r9d
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,r11d
>>>>>>> 
>>>>>>> +        and     r12d,edx
>>>>>>> 
>>>>>>> +        xor     r13d,edx
>>>>>>> 
>>>>>>> +        add     r10d,DWORD[4+rsp]
>>>>>>> 
>>>>>>> +        mov     edi,r11d
>>>>>>> 
>>>>>>> +        xor     r12d,r9d
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        add     r10d,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        xor     r14d,r11d
>>>>>>> 
>>>>>>> +        add     r10d,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,eax
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     ecx,r10d
>>>>>>> 
>>>>>>> +        add     r10d,r15d
>>>>>>> 
>>>>>>> +        mov     r13d,ecx
>>>>>>> 
>>>>>>> +        add     r14d,r10d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r10d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,edx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,ecx
>>>>>>> 
>>>>>>> +        xor     r12d,r8d
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,r10d
>>>>>>> 
>>>>>>> +        and     r12d,ecx
>>>>>>> 
>>>>>>> +        xor     r13d,ecx
>>>>>>> 
>>>>>>> +        add     r9d,DWORD[8+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,r10d
>>>>>>> 
>>>>>>> +        xor     r12d,r8d
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r15d,r11d
>>>>>>> 
>>>>>>> +        add     r9d,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        xor     r14d,r10d
>>>>>>> 
>>>>>>> +        add     r9d,r13d
>>>>>>> 
>>>>>>> +        xor     edi,r11d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     ebx,r9d
>>>>>>> 
>>>>>>> +        add     r9d,edi
>>>>>>> 
>>>>>>> +        mov     r13d,ebx
>>>>>>> 
>>>>>>> +        add     r14d,r9d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r9d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,ecx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,ebx
>>>>>>> 
>>>>>>> +        xor     r12d,edx
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,r9d
>>>>>>> 
>>>>>>> +        and     r12d,ebx
>>>>>>> 
>>>>>>> +        xor     r13d,ebx
>>>>>>> 
>>>>>>> +        add     r8d,DWORD[12+rsp]
>>>>>>> 
>>>>>>> +        mov     edi,r9d
>>>>>>> 
>>>>>>> +        xor     r12d,edx
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     edi,r10d
>>>>>>> 
>>>>>>> +        add     r8d,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        xor     r14d,r9d
>>>>>>> 
>>>>>>> +        add     r8d,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,r10d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     eax,r8d
>>>>>>> 
>>>>>>> +        add     r8d,r15d
>>>>>>> 
>>>>>>> +        mov     r13d,eax
>>>>>>> 
>>>>>>> +        add     r14d,r8d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r8d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,ebx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,eax
>>>>>>> 
>>>>>>> +        xor     r12d,ecx
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,r8d
>>>>>>> 
>>>>>>> +        and     r12d,eax
>>>>>>> 
>>>>>>> +        xor     r13d,eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[16+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,r8d
>>>>>>> 
>>>>>>> +        xor     r12d,ecx
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r15d,r9d
>>>>>>> 
>>>>>>> +        add     edx,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        xor     r14d,r8d
>>>>>>> 
>>>>>>> +        add     edx,r13d
>>>>>>> 
>>>>>>> +        xor     edi,r9d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r11d,edx
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        mov     r13d,r11d
>>>>>>> 
>>>>>>> +        add     r14d,edx
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     edx,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,eax
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,r11d
>>>>>>> 
>>>>>>> +        xor     r12d,ebx
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,edx
>>>>>>> 
>>>>>>> +        and     r12d,r11d
>>>>>>> 
>>>>>>> +        xor     r13d,r11d
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[20+rsp]
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        xor     r12d,ebx
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     edi,r8d
>>>>>>> 
>>>>>>> +        add     ecx,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        xor     r14d,edx
>>>>>>> 
>>>>>>> +        add     ecx,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,r8d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r10d,ecx
>>>>>>> 
>>>>>>> +        add     ecx,r15d
>>>>>>> 
>>>>>>> +        mov     r13d,r10d
>>>>>>> 
>>>>>>> +        add     r14d,ecx
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     ecx,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,r11d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,r10d
>>>>>>> 
>>>>>>> +        xor     r12d,eax
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,ecx
>>>>>>> 
>>>>>>> +        and     r12d,r10d
>>>>>>> 
>>>>>>> +        xor     r13d,r10d
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[24+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,ecx
>>>>>>> 
>>>>>>> +        xor     r12d,eax
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r15d,edx
>>>>>>> 
>>>>>>> +        add     ebx,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        xor     r14d,ecx
>>>>>>> 
>>>>>>> +        add     ebx,r13d
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r9d,ebx
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        mov     r13d,r9d
>>>>>>> 
>>>>>>> +        add     r14d,ebx
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     ebx,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,r10d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,r9d
>>>>>>> 
>>>>>>> +        xor     r12d,r11d
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,ebx
>>>>>>> 
>>>>>>> +        and     r12d,r9d
>>>>>>> 
>>>>>>> +        xor     r13d,r9d
>>>>>>> 
>>>>>>> +        add     eax,DWORD[28+rsp]
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        xor     r12d,r11d
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        add     eax,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        xor     r14d,ebx
>>>>>>> 
>>>>>>> +        add     eax,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,ecx
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r8d,eax
>>>>>>> 
>>>>>>> +        add     eax,r15d
>>>>>>> 
>>>>>>> +        mov     r13d,r8d
>>>>>>> 
>>>>>>> +        add     r14d,eax
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     eax,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,r9d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,r8d
>>>>>>> 
>>>>>>> +        xor     r12d,r10d
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,eax
>>>>>>> 
>>>>>>> +        and     r12d,r8d
>>>>>>> 
>>>>>>> +        xor     r13d,r8d
>>>>>>> 
>>>>>>> +        add     r11d,DWORD[32+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,eax
>>>>>>> 
>>>>>>> +        xor     r12d,r10d
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r15d,ebx
>>>>>>> 
>>>>>>> +        add     r11d,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        xor     r14d,eax
>>>>>>> 
>>>>>>> +        add     r11d,r13d
>>>>>>> 
>>>>>>> +        xor     edi,ebx
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     edx,r11d
>>>>>>> 
>>>>>>> +        add     r11d,edi
>>>>>>> 
>>>>>>> +        mov     r13d,edx
>>>>>>> 
>>>>>>> +        add     r14d,r11d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r11d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,r8d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,edx
>>>>>>> 
>>>>>>> +        xor     r12d,r9d
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,r11d
>>>>>>> 
>>>>>>> +        and     r12d,edx
>>>>>>> 
>>>>>>> +        xor     r13d,edx
>>>>>>> 
>>>>>>> +        add     r10d,DWORD[36+rsp]
>>>>>>> 
>>>>>>> +        mov     edi,r11d
>>>>>>> 
>>>>>>> +        xor     r12d,r9d
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     edi,eax
>>>>>>> 
>>>>>>> +        add     r10d,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        xor     r14d,r11d
>>>>>>> 
>>>>>>> +        add     r10d,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,eax
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     ecx,r10d
>>>>>>> 
>>>>>>> +        add     r10d,r15d
>>>>>>> 
>>>>>>> +        mov     r13d,ecx
>>>>>>> 
>>>>>>> +        add     r14d,r10d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r10d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,edx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,ecx
>>>>>>> 
>>>>>>> +        xor     r12d,r8d
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,r10d
>>>>>>> 
>>>>>>> +        and     r12d,ecx
>>>>>>> 
>>>>>>> +        xor     r13d,ecx
>>>>>>> 
>>>>>>> +        add     r9d,DWORD[40+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,r10d
>>>>>>> 
>>>>>>> +        xor     r12d,r8d
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r15d,r11d
>>>>>>> 
>>>>>>> +        add     r9d,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        xor     r14d,r10d
>>>>>>> 
>>>>>>> +        add     r9d,r13d
>>>>>>> 
>>>>>>> +        xor     edi,r11d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     ebx,r9d
>>>>>>> 
>>>>>>> +        add     r9d,edi
>>>>>>> 
>>>>>>> +        mov     r13d,ebx
>>>>>>> 
>>>>>>> +        add     r14d,r9d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r9d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,ecx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,ebx
>>>>>>> 
>>>>>>> +        xor     r12d,edx
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,r9d
>>>>>>> 
>>>>>>> +        and     r12d,ebx
>>>>>>> 
>>>>>>> +        xor     r13d,ebx
>>>>>>> 
>>>>>>> +        add     r8d,DWORD[44+rsp]
>>>>>>> 
>>>>>>> +        mov     edi,r9d
>>>>>>> 
>>>>>>> +        xor     r12d,edx
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     edi,r10d
>>>>>>> 
>>>>>>> +        add     r8d,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        xor     r14d,r9d
>>>>>>> 
>>>>>>> +        add     r8d,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,r10d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     eax,r8d
>>>>>>> 
>>>>>>> +        add     r8d,r15d
>>>>>>> 
>>>>>>> +        mov     r13d,eax
>>>>>>> 
>>>>>>> +        add     r14d,r8d
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     r8d,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,ebx
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,eax
>>>>>>> 
>>>>>>> +        xor     r12d,ecx
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,r8d
>>>>>>> 
>>>>>>> +        and     r12d,eax
>>>>>>> 
>>>>>>> +        xor     r13d,eax
>>>>>>> 
>>>>>>> +        add     edx,DWORD[48+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,r8d
>>>>>>> 
>>>>>>> +        xor     r12d,ecx
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r15d,r9d
>>>>>>> 
>>>>>>> +        add     edx,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        xor     r14d,r8d
>>>>>>> 
>>>>>>> +        add     edx,r13d
>>>>>>> 
>>>>>>> +        xor     edi,r9d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r11d,edx
>>>>>>> 
>>>>>>> +        add     edx,edi
>>>>>>> 
>>>>>>> +        mov     r13d,r11d
>>>>>>> 
>>>>>>> +        add     r14d,edx
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     edx,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,eax
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,r11d
>>>>>>> 
>>>>>>> +        xor     r12d,ebx
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,edx
>>>>>>> 
>>>>>>> +        and     r12d,r11d
>>>>>>> 
>>>>>>> +        xor     r13d,r11d
>>>>>>> 
>>>>>>> +        add     ecx,DWORD[52+rsp]
>>>>>>> 
>>>>>>> +        mov     edi,edx
>>>>>>> 
>>>>>>> +        xor     r12d,ebx
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     edi,r8d
>>>>>>> 
>>>>>>> +        add     ecx,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        xor     r14d,edx
>>>>>>> 
>>>>>>> +        add     ecx,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,r8d
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r10d,ecx
>>>>>>> 
>>>>>>> +        add     ecx,r15d
>>>>>>> 
>>>>>>> +        mov     r13d,r10d
>>>>>>> 
>>>>>>> +        add     r14d,ecx
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     ecx,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,r11d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,r10d
>>>>>>> 
>>>>>>> +        xor     r12d,eax
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,ecx
>>>>>>> 
>>>>>>> +        and     r12d,r10d
>>>>>>> 
>>>>>>> +        xor     r13d,r10d
>>>>>>> 
>>>>>>> +        add     ebx,DWORD[56+rsp]
>>>>>>> 
>>>>>>> +        mov     r15d,ecx
>>>>>>> 
>>>>>>> +        xor     r12d,eax
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     r15d,edx
>>>>>>> 
>>>>>>> +        add     ebx,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     edi,r15d
>>>>>>> 
>>>>>>> +        xor     r14d,ecx
>>>>>>> 
>>>>>>> +        add     ebx,r13d
>>>>>>> 
>>>>>>> +        xor     edi,edx
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r9d,ebx
>>>>>>> 
>>>>>>> +        add     ebx,edi
>>>>>>> 
>>>>>>> +        mov     r13d,r9d
>>>>>>> 
>>>>>>> +        add     r14d,ebx
>>>>>>> 
>>>>>>> +        ror     r13d,14
>>>>>>> 
>>>>>>> +        mov     ebx,r14d
>>>>>>> 
>>>>>>> +        mov     r12d,r10d
>>>>>>> 
>>>>>>> +        ror     r14d,9
>>>>>>> 
>>>>>>> +        xor     r13d,r9d
>>>>>>> 
>>>>>>> +        xor     r12d,r11d
>>>>>>> 
>>>>>>> +        ror     r13d,5
>>>>>>> 
>>>>>>> +        xor     r14d,ebx
>>>>>>> 
>>>>>>> +        and     r12d,r9d
>>>>>>> 
>>>>>>> +        xor     r13d,r9d
>>>>>>> 
>>>>>>> +        add     eax,DWORD[60+rsp]
>>>>>>> 
>>>>>>> +        mov     edi,ebx
>>>>>>> 
>>>>>>> +        xor     r12d,r11d
>>>>>>> 
>>>>>>> +        ror     r14d,11
>>>>>>> 
>>>>>>> +        xor     edi,ecx
>>>>>>> 
>>>>>>> +        add     eax,r12d
>>>>>>> 
>>>>>>> +        ror     r13d,6
>>>>>>> 
>>>>>>> +        and     r15d,edi
>>>>>>> 
>>>>>>> +        xor     r14d,ebx
>>>>>>> 
>>>>>>> +        add     eax,r13d
>>>>>>> 
>>>>>>> +        xor     r15d,ecx
>>>>>>> 
>>>>>>> +        ror     r14d,2
>>>>>>> 
>>>>>>> +        add     r8d,eax
>>>>>>> 
>>>>>>> +        add     eax,r15d
>>>>>>> 
>>>>>>> +        mov     r13d,r8d
>>>>>>> 
>>>>>>> +        add     r14d,eax
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[((64+0))+rsp]
>>>>>>> 
>>>>>>> +        mov     eax,r14d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[((64+16))+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[88+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[((-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$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:
>>>>>>> 
>>>>>>> +EXTERN  __imp_RtlVirtualUnwind
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +se_handler:
>>>>>>> 
>>>>>>> +        push    rsi
>>>>>>> 
>>>>>>> +        push    rdi
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +        pushfq
>>>>>>> 
>>>>>>> +        sub     rsp,64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>> 
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>> 
>>>>>>> +        mov     rsi,rax
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[((64+24))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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,[$L$epilogue]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsi,[((64+32))+rsi]
>>>>>>> 
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>> 
>>>>>>> +        mov     ecx,8
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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[40+r9]
>>>>>>> 
>>>>>>> +        mov     rsi,r8
>>>>>>> 
>>>>>>> +        mov     ecx,154
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,r9
>>>>>>> 
>>>>>>> +        xor     rcx,rcx
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +        popfq
>>>>>>> 
>>>>>>> +        pop     r15
>>>>>>> 
>>>>>>> +        pop     r14
>>>>>>> 
>>>>>>> +        pop     r13
>>>>>>> 
>>>>>>> +        pop     r12
>>>>>>> 
>>>>>>> +        pop     rbp
>>>>>>> 
>>>>>>> +        pop     rbx
>>>>>>> 
>>>>>>> +        pop     rdi
>>>>>>> 
>>>>>>> +        pop     rsi
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +shaext_handler:
>>>>>>> 
>>>>>>> +        push    rsi
>>>>>>> 
>>>>>>> +        push    rdi
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +        pushfq
>>>>>>> 
>>>>>>> +        sub     rsp,64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r10,[$L$prologue_shaext]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     r10,[$L$epilogue_shaext]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsi,[((-8-80))+rax]
>>>>>>> 
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>> 
>>>>>>> +        mov     ecx,10
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$in_prologue
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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_shaext
>>>>> wrt ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_end_sha256_block_data_order_shaext wrt
>>>> ..imagebase
>>>>>>> 
>>>>>>> +        DD      $L$SEH_info_sha256_block_data_order_shaext 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_shaext:
>>>>>>> 
>>>>>>> +DB      9,0,0,0
>>>>>>> 
>>>>>>> +        DD      shaext_handler 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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-
>>>>> x86_64.nasm
>>>>>>> b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..c6397d4393
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-
>> x86_64.nasm
>>>>>>> @@ -0,0 +1,1938 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>> 
>>>>>>> +; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not
>> use
>>>>>>> 
>>>>>>> +; this file except in compliance with the License.  You can obtain
>> a
>>>> copy
>>>>>>> 
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>> 
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +default rel
>>>>>>> 
>>>>>>> +%define XMMWORD
>>>>>>> 
>>>>>>> +%define YMMWORD
>>>>>>> 
>>>>>>> +%define ZMMWORD
>>>>>>> 
>>>>>>> +section .text code align=64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +EXTERN  OPENSSL_ia32cap_P
>>>>>>> 
>>>>>>> +global  sha512_block_data_order
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +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:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     rsi,rdx
>>>>>>> 
>>>>>>> +        mov     rdx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        shl     rdx,4
>>>>>>> 
>>>>>>> +        sub     rsp,16*8+4*8
>>>>>>> 
>>>>>>> +        lea     rdx,[rdx*8+rsi]
>>>>>>> 
>>>>>>> +        and     rsp,-64
>>>>>>> 
>>>>>>> +        mov     QWORD[((128+0))+rsp],rdi
>>>>>>> 
>>>>>>> +        mov     QWORD[((128+8))+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     QWORD[((128+16))+rsp],rdx
>>>>>>> 
>>>>>>> +        mov     QWORD[152+rsp],rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$prologue:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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:
>>>>>>> 
>>>>>>> +        mov     rdi,rbx
>>>>>>> 
>>>>>>> +        lea     rbp,[K512]
>>>>>>> 
>>>>>>> +        xor     rdi,rcx
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[rsi]
>>>>>>> 
>>>>>>> +        mov     r13,r8
>>>>>>> 
>>>>>>> +        mov     r14,rax
>>>>>>> 
>>>>>>> +        bswap   r12
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     r15,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r8
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     r15,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,rax
>>>>>>> 
>>>>>>> +        and     r15,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,r11
>>>>>>> 
>>>>>>> +        xor     r15,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,r8
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15,rax
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15,rbx
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     r11,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     rdi,r15
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r11,rdi
>>>>>>> 
>>>>>>> +        add     rdx,r12
>>>>>>> 
>>>>>>> +        add     r11,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>> 
>>>>>>> +        add     r11,r14
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[8+rsi]
>>>>>>> 
>>>>>>> +        mov     r13,rdx
>>>>>>> 
>>>>>>> +        mov     r14,r11
>>>>>>> 
>>>>>>> +        bswap   r12
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     rdi,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,rdx
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     rdi,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,r11
>>>>>>> 
>>>>>>> +        and     rdi,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,r10
>>>>>>> 
>>>>>>> +        xor     rdi,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,rdx
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rdi,r11
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdi,rax
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     r10,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15,rdi
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r10,r15
>>>>>>> 
>>>>>>> +        add     rcx,r12
>>>>>>> 
>>>>>>> +        add     r10,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>> 
>>>>>>> +        add     r10,r14
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[16+rsi]
>>>>>>> 
>>>>>>> +        mov     r13,rcx
>>>>>>> 
>>>>>>> +        mov     r14,r10
>>>>>>> 
>>>>>>> +        bswap   r12
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     r15,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,rcx
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     r15,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,r10
>>>>>>> 
>>>>>>> +        and     r15,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,r9
>>>>>>> 
>>>>>>> +        xor     r15,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,rcx
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15,r10
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15,r11
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     r9,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     rdi,r15
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r9,rdi
>>>>>>> 
>>>>>>> +        add     rbx,r12
>>>>>>> 
>>>>>>> +        add     r9,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>> 
>>>>>>> +        add     r9,r14
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[24+rsi]
>>>>>>> 
>>>>>>> +        mov     r13,rbx
>>>>>>> 
>>>>>>> +        mov     r14,r9
>>>>>>> 
>>>>>>> +        bswap   r12
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,rbx
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     rdi,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[24+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,r9
>>>>>>> 
>>>>>>> +        and     rdi,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,r8
>>>>>>> 
>>>>>>> +        xor     rdi,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,rbx
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rdi,r9
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdi,r10
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     r8,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15,rdi
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r8,r15
>>>>>>> 
>>>>>>> +        add     rax,r12
>>>>>>> 
>>>>>>> +        add     r8,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>> 
>>>>>>> +        add     r8,r14
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[32+rsi]
>>>>>>> 
>>>>>>> +        mov     r13,rax
>>>>>>> 
>>>>>>> +        mov     r14,r8
>>>>>>> 
>>>>>>> +        bswap   r12
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     r15,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,rax
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     r15,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[32+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,r8
>>>>>>> 
>>>>>>> +        and     r15,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,rdx
>>>>>>> 
>>>>>>> +        xor     r15,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,rax
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15,r8
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15,r9
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     rdx,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     rdi,r15
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdx,rdi
>>>>>>> 
>>>>>>> +        add     r11,r12
>>>>>>> 
>>>>>>> +        add     rdx,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>> 
>>>>>>> +        add     rdx,r14
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[40+rsi]
>>>>>>> 
>>>>>>> +        mov     r13,r11
>>>>>>> 
>>>>>>> +        mov     r14,rdx
>>>>>>> 
>>>>>>> +        bswap   r12
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     rdi,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r11
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     rdi,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[40+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,rdx
>>>>>>> 
>>>>>>> +        and     rdi,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,rcx
>>>>>>> 
>>>>>>> +        xor     rdi,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,r11
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rdi,rdx
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdi,r8
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     rcx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15,rdi
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rcx,r15
>>>>>>> 
>>>>>>> +        add     r10,r12
>>>>>>> 
>>>>>>> +        add     rcx,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>> 
>>>>>>> +        add     rcx,r14
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[48+rsi]
>>>>>>> 
>>>>>>> +        mov     r13,r10
>>>>>>> 
>>>>>>> +        mov     r14,rcx
>>>>>>> 
>>>>>>> +        bswap   r12
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     r15,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r10
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     r15,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[48+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,rcx
>>>>>>> 
>>>>>>> +        and     r15,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,rbx
>>>>>>> 
>>>>>>> +        xor     r15,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,r10
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15,rcx
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15,rdx
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     rbx,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     rdi,r15
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rbx,rdi
>>>>>>> 
>>>>>>> +        add     r9,r12
>>>>>>> 
>>>>>>> +        add     rbx,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>> 
>>>>>>> +        add     rbx,r14
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[56+rsi]
>>>>>>> 
>>>>>>> +        mov     r13,r9
>>>>>>> 
>>>>>>> +        mov     r14,rbx
>>>>>>> 
>>>>>>> +        bswap   r12
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     rdi,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r9
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     rdi,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[56+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,rbx
>>>>>>> 
>>>>>>> +        and     rdi,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,rax
>>>>>>> 
>>>>>>> +        xor     rdi,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,r9
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rdi,rbx
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdi,rcx
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     rax,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15,rdi
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rax,r15
>>>>>>> 
>>>>>>> +        add     r8,r12
>>>>>>> 
>>>>>>> +        add     rax,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>> 
>>>>>>> +        add     rax,r14
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[64+rsi]
>>>>>>> 
>>>>>>> +        mov     r13,r8
>>>>>>> 
>>>>>>> +        mov     r14,rax
>>>>>>> 
>>>>>>> +        bswap   r12
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     r15,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r8
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     r15,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[64+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,rax
>>>>>>> 
>>>>>>> +        and     r15,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,r11
>>>>>>> 
>>>>>>> +        xor     r15,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,r8
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15,rax
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15,rbx
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     r11,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     rdi,r15
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r11,rdi
>>>>>>> 
>>>>>>> +        add     rdx,r12
>>>>>>> 
>>>>>>> +        add     r11,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>> 
>>>>>>> +        add     r11,r14
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[72+rsi]
>>>>>>> 
>>>>>>> +        mov     r13,rdx
>>>>>>> 
>>>>>>> +        mov     r14,r11
>>>>>>> 
>>>>>>> +        bswap   r12
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     rdi,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,rdx
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     rdi,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[72+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,r11
>>>>>>> 
>>>>>>> +        and     rdi,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,r10
>>>>>>> 
>>>>>>> +        xor     rdi,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,rdx
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rdi,r11
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdi,rax
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     r10,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15,rdi
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r10,r15
>>>>>>> 
>>>>>>> +        add     rcx,r12
>>>>>>> 
>>>>>>> +        add     r10,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>> 
>>>>>>> +        add     r10,r14
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[80+rsi]
>>>>>>> 
>>>>>>> +        mov     r13,rcx
>>>>>>> 
>>>>>>> +        mov     r14,r10
>>>>>>> 
>>>>>>> +        bswap   r12
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     r15,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,rcx
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     r15,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[80+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,r10
>>>>>>> 
>>>>>>> +        and     r15,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,r9
>>>>>>> 
>>>>>>> +        xor     r15,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,rcx
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15,r10
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15,r11
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     r9,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     rdi,r15
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r9,rdi
>>>>>>> 
>>>>>>> +        add     rbx,r12
>>>>>>> 
>>>>>>> +        add     r9,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>> 
>>>>>>> +        add     r9,r14
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[88+rsi]
>>>>>>> 
>>>>>>> +        mov     r13,rbx
>>>>>>> 
>>>>>>> +        mov     r14,r9
>>>>>>> 
>>>>>>> +        bswap   r12
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,rbx
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     rdi,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[88+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,r9
>>>>>>> 
>>>>>>> +        and     rdi,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,r8
>>>>>>> 
>>>>>>> +        xor     rdi,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,rbx
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rdi,r9
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdi,r10
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     r8,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15,rdi
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r8,r15
>>>>>>> 
>>>>>>> +        add     rax,r12
>>>>>>> 
>>>>>>> +        add     r8,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>> 
>>>>>>> +        add     r8,r14
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[96+rsi]
>>>>>>> 
>>>>>>> +        mov     r13,rax
>>>>>>> 
>>>>>>> +        mov     r14,r8
>>>>>>> 
>>>>>>> +        bswap   r12
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     r15,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,rax
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     r15,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[96+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,r8
>>>>>>> 
>>>>>>> +        and     r15,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,rdx
>>>>>>> 
>>>>>>> +        xor     r15,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,rax
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15,r8
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15,r9
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     rdx,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     rdi,r15
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdx,rdi
>>>>>>> 
>>>>>>> +        add     r11,r12
>>>>>>> 
>>>>>>> +        add     rdx,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>> 
>>>>>>> +        add     rdx,r14
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[104+rsi]
>>>>>>> 
>>>>>>> +        mov     r13,r11
>>>>>>> 
>>>>>>> +        mov     r14,rdx
>>>>>>> 
>>>>>>> +        bswap   r12
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     rdi,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r11
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     rdi,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[104+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,rdx
>>>>>>> 
>>>>>>> +        and     rdi,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,rcx
>>>>>>> 
>>>>>>> +        xor     rdi,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,r11
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rdi,rdx
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdi,r8
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     rcx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15,rdi
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rcx,r15
>>>>>>> 
>>>>>>> +        add     r10,r12
>>>>>>> 
>>>>>>> +        add     rcx,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>> 
>>>>>>> +        add     rcx,r14
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[112+rsi]
>>>>>>> 
>>>>>>> +        mov     r13,r10
>>>>>>> 
>>>>>>> +        mov     r14,rcx
>>>>>>> 
>>>>>>> +        bswap   r12
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     r15,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r10
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     r15,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[112+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,rcx
>>>>>>> 
>>>>>>> +        and     r15,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,rbx
>>>>>>> 
>>>>>>> +        xor     r15,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,r10
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15,rcx
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15,rdx
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     rbx,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     rdi,r15
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rbx,rdi
>>>>>>> 
>>>>>>> +        add     r9,r12
>>>>>>> 
>>>>>>> +        add     rbx,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>> 
>>>>>>> +        add     rbx,r14
>>>>>>> 
>>>>>>> +        mov     r12,QWORD[120+rsi]
>>>>>>> 
>>>>>>> +        mov     r13,r9
>>>>>>> 
>>>>>>> +        mov     r14,rbx
>>>>>>> 
>>>>>>> +        bswap   r12
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     rdi,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r9
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     rdi,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[120+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,rbx
>>>>>>> 
>>>>>>> +        and     rdi,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,rax
>>>>>>> 
>>>>>>> +        xor     rdi,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,r9
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rdi,rbx
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdi,rcx
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     rax,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15,rdi
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rax,r15
>>>>>>> 
>>>>>>> +        add     r8,r12
>>>>>>> 
>>>>>>> +        add     rax,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$rounds_16_xx
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$rounds_16_xx:
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[8+rsp]
>>>>>>> 
>>>>>>> +        mov     r15,QWORD[112+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12,r13
>>>>>>> 
>>>>>>> +        ror     r13,7
>>>>>>> 
>>>>>>> +        add     rax,r14
>>>>>>> 
>>>>>>> +        mov     r14,r15
>>>>>>> 
>>>>>>> +        ror     r15,42
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r12
>>>>>>> 
>>>>>>> +        shr     r12,7
>>>>>>> 
>>>>>>> +        ror     r13,1
>>>>>>> 
>>>>>>> +        xor     r15,r14
>>>>>>> 
>>>>>>> +        shr     r14,6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r15,19
>>>>>>> 
>>>>>>> +        xor     r12,r13
>>>>>>> 
>>>>>>> +        xor     r15,r14
>>>>>>> 
>>>>>>> +        add     r12,QWORD[72+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rsp]
>>>>>>> 
>>>>>>> +        mov     r13,r8
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +        mov     r14,rax
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     r15,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r8
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     r15,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,rax
>>>>>>> 
>>>>>>> +        and     r15,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,r11
>>>>>>> 
>>>>>>> +        xor     r15,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,r8
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15,rax
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15,rbx
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     r11,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     rdi,r15
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r11,rdi
>>>>>>> 
>>>>>>> +        add     rdx,r12
>>>>>>> 
>>>>>>> +        add     r11,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[120+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12,r13
>>>>>>> 
>>>>>>> +        ror     r13,7
>>>>>>> 
>>>>>>> +        add     r11,r14
>>>>>>> 
>>>>>>> +        mov     r14,rdi
>>>>>>> 
>>>>>>> +        ror     rdi,42
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r12
>>>>>>> 
>>>>>>> +        shr     r12,7
>>>>>>> 
>>>>>>> +        ror     r13,1
>>>>>>> 
>>>>>>> +        xor     rdi,r14
>>>>>>> 
>>>>>>> +        shr     r14,6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     rdi,19
>>>>>>> 
>>>>>>> +        xor     r12,r13
>>>>>>> 
>>>>>>> +        xor     rdi,r14
>>>>>>> 
>>>>>>> +        add     r12,QWORD[80+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12,QWORD[8+rsp]
>>>>>>> 
>>>>>>> +        mov     r13,rdx
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +        mov     r14,r11
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     rdi,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,rdx
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     rdi,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,r11
>>>>>>> 
>>>>>>> +        and     rdi,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,r10
>>>>>>> 
>>>>>>> +        xor     rdi,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,rdx
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rdi,r11
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdi,rax
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     r10,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15,rdi
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r10,r15
>>>>>>> 
>>>>>>> +        add     rcx,r12
>>>>>>> 
>>>>>>> +        add     r10,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[24+rsp]
>>>>>>> 
>>>>>>> +        mov     r15,QWORD[rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12,r13
>>>>>>> 
>>>>>>> +        ror     r13,7
>>>>>>> 
>>>>>>> +        add     r10,r14
>>>>>>> 
>>>>>>> +        mov     r14,r15
>>>>>>> 
>>>>>>> +        ror     r15,42
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r12
>>>>>>> 
>>>>>>> +        shr     r12,7
>>>>>>> 
>>>>>>> +        ror     r13,1
>>>>>>> 
>>>>>>> +        xor     r15,r14
>>>>>>> 
>>>>>>> +        shr     r14,6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r15,19
>>>>>>> 
>>>>>>> +        xor     r12,r13
>>>>>>> 
>>>>>>> +        xor     r15,r14
>>>>>>> 
>>>>>>> +        add     r12,QWORD[88+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        mov     r13,rcx
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +        mov     r14,r10
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     r15,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,rcx
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     r15,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,r10
>>>>>>> 
>>>>>>> +        and     r15,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,r9
>>>>>>> 
>>>>>>> +        xor     r15,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,rcx
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15,r10
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15,r11
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     r9,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     rdi,r15
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r9,rdi
>>>>>>> 
>>>>>>> +        add     rbx,r12
>>>>>>> 
>>>>>>> +        add     r9,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[32+rsp]
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[8+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12,r13
>>>>>>> 
>>>>>>> +        ror     r13,7
>>>>>>> 
>>>>>>> +        add     r9,r14
>>>>>>> 
>>>>>>> +        mov     r14,rdi
>>>>>>> 
>>>>>>> +        ror     rdi,42
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r12
>>>>>>> 
>>>>>>> +        shr     r12,7
>>>>>>> 
>>>>>>> +        ror     r13,1
>>>>>>> 
>>>>>>> +        xor     rdi,r14
>>>>>>> 
>>>>>>> +        shr     r14,6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     rdi,19
>>>>>>> 
>>>>>>> +        xor     r12,r13
>>>>>>> 
>>>>>>> +        xor     rdi,r14
>>>>>>> 
>>>>>>> +        add     r12,QWORD[96+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12,QWORD[24+rsp]
>>>>>>> 
>>>>>>> +        mov     r13,rbx
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +        mov     r14,r9
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,rbx
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     rdi,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[24+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,r9
>>>>>>> 
>>>>>>> +        and     rdi,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,r8
>>>>>>> 
>>>>>>> +        xor     rdi,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,rbx
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rdi,r9
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdi,r10
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     r8,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15,rdi
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r8,r15
>>>>>>> 
>>>>>>> +        add     rax,r12
>>>>>>> 
>>>>>>> +        add     r8,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[40+rsp]
>>>>>>> 
>>>>>>> +        mov     r15,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12,r13
>>>>>>> 
>>>>>>> +        ror     r13,7
>>>>>>> 
>>>>>>> +        add     r8,r14
>>>>>>> 
>>>>>>> +        mov     r14,r15
>>>>>>> 
>>>>>>> +        ror     r15,42
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r12
>>>>>>> 
>>>>>>> +        shr     r12,7
>>>>>>> 
>>>>>>> +        ror     r13,1
>>>>>>> 
>>>>>>> +        xor     r15,r14
>>>>>>> 
>>>>>>> +        shr     r14,6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r15,19
>>>>>>> 
>>>>>>> +        xor     r12,r13
>>>>>>> 
>>>>>>> +        xor     r15,r14
>>>>>>> 
>>>>>>> +        add     r12,QWORD[104+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12,QWORD[32+rsp]
>>>>>>> 
>>>>>>> +        mov     r13,rax
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +        mov     r14,r8
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     r15,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,rax
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     r15,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[32+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,r8
>>>>>>> 
>>>>>>> +        and     r15,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,rdx
>>>>>>> 
>>>>>>> +        xor     r15,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,rax
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15,r8
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15,r9
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     rdx,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     rdi,r15
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdx,rdi
>>>>>>> 
>>>>>>> +        add     r11,r12
>>>>>>> 
>>>>>>> +        add     rdx,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[48+rsp]
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[24+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12,r13
>>>>>>> 
>>>>>>> +        ror     r13,7
>>>>>>> 
>>>>>>> +        add     rdx,r14
>>>>>>> 
>>>>>>> +        mov     r14,rdi
>>>>>>> 
>>>>>>> +        ror     rdi,42
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r12
>>>>>>> 
>>>>>>> +        shr     r12,7
>>>>>>> 
>>>>>>> +        ror     r13,1
>>>>>>> 
>>>>>>> +        xor     rdi,r14
>>>>>>> 
>>>>>>> +        shr     r14,6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     rdi,19
>>>>>>> 
>>>>>>> +        xor     r12,r13
>>>>>>> 
>>>>>>> +        xor     rdi,r14
>>>>>>> 
>>>>>>> +        add     r12,QWORD[112+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12,QWORD[40+rsp]
>>>>>>> 
>>>>>>> +        mov     r13,r11
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +        mov     r14,rdx
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     rdi,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r11
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     rdi,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[40+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,rdx
>>>>>>> 
>>>>>>> +        and     rdi,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,rcx
>>>>>>> 
>>>>>>> +        xor     rdi,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,r11
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rdi,rdx
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdi,r8
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     rcx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15,rdi
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rcx,r15
>>>>>>> 
>>>>>>> +        add     r10,r12
>>>>>>> 
>>>>>>> +        add     rcx,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[56+rsp]
>>>>>>> 
>>>>>>> +        mov     r15,QWORD[32+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12,r13
>>>>>>> 
>>>>>>> +        ror     r13,7
>>>>>>> 
>>>>>>> +        add     rcx,r14
>>>>>>> 
>>>>>>> +        mov     r14,r15
>>>>>>> 
>>>>>>> +        ror     r15,42
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r12
>>>>>>> 
>>>>>>> +        shr     r12,7
>>>>>>> 
>>>>>>> +        ror     r13,1
>>>>>>> 
>>>>>>> +        xor     r15,r14
>>>>>>> 
>>>>>>> +        shr     r14,6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r15,19
>>>>>>> 
>>>>>>> +        xor     r12,r13
>>>>>>> 
>>>>>>> +        xor     r15,r14
>>>>>>> 
>>>>>>> +        add     r12,QWORD[120+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12,QWORD[48+rsp]
>>>>>>> 
>>>>>>> +        mov     r13,r10
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +        mov     r14,rcx
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     r15,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r10
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     r15,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[48+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,rcx
>>>>>>> 
>>>>>>> +        and     r15,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,rbx
>>>>>>> 
>>>>>>> +        xor     r15,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,r10
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15,rcx
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15,rdx
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     rbx,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     rdi,r15
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rbx,rdi
>>>>>>> 
>>>>>>> +        add     r9,r12
>>>>>>> 
>>>>>>> +        add     rbx,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[64+rsp]
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[40+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12,r13
>>>>>>> 
>>>>>>> +        ror     r13,7
>>>>>>> 
>>>>>>> +        add     rbx,r14
>>>>>>> 
>>>>>>> +        mov     r14,rdi
>>>>>>> 
>>>>>>> +        ror     rdi,42
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r12
>>>>>>> 
>>>>>>> +        shr     r12,7
>>>>>>> 
>>>>>>> +        ror     r13,1
>>>>>>> 
>>>>>>> +        xor     rdi,r14
>>>>>>> 
>>>>>>> +        shr     r14,6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     rdi,19
>>>>>>> 
>>>>>>> +        xor     r12,r13
>>>>>>> 
>>>>>>> +        xor     rdi,r14
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12,QWORD[56+rsp]
>>>>>>> 
>>>>>>> +        mov     r13,r9
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +        mov     r14,rbx
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     rdi,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r9
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     rdi,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[56+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,rbx
>>>>>>> 
>>>>>>> +        and     rdi,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,rax
>>>>>>> 
>>>>>>> +        xor     rdi,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,r9
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rdi,rbx
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdi,rcx
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     rax,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15,rdi
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rax,r15
>>>>>>> 
>>>>>>> +        add     r8,r12
>>>>>>> 
>>>>>>> +        add     rax,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[72+rsp]
>>>>>>> 
>>>>>>> +        mov     r15,QWORD[48+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12,r13
>>>>>>> 
>>>>>>> +        ror     r13,7
>>>>>>> 
>>>>>>> +        add     rax,r14
>>>>>>> 
>>>>>>> +        mov     r14,r15
>>>>>>> 
>>>>>>> +        ror     r15,42
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r12
>>>>>>> 
>>>>>>> +        shr     r12,7
>>>>>>> 
>>>>>>> +        ror     r13,1
>>>>>>> 
>>>>>>> +        xor     r15,r14
>>>>>>> 
>>>>>>> +        shr     r14,6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r15,19
>>>>>>> 
>>>>>>> +        xor     r12,r13
>>>>>>> 
>>>>>>> +        xor     r15,r14
>>>>>>> 
>>>>>>> +        add     r12,QWORD[8+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12,QWORD[64+rsp]
>>>>>>> 
>>>>>>> +        mov     r13,r8
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +        mov     r14,rax
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     r15,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r8
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     r15,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[64+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,rax
>>>>>>> 
>>>>>>> +        and     r15,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,r11
>>>>>>> 
>>>>>>> +        xor     r15,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,r8
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15,rax
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15,rbx
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     r11,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     rdi,r15
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r11,rdi
>>>>>>> 
>>>>>>> +        add     rdx,r12
>>>>>>> 
>>>>>>> +        add     r11,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[80+rsp]
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[56+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12,r13
>>>>>>> 
>>>>>>> +        ror     r13,7
>>>>>>> 
>>>>>>> +        add     r11,r14
>>>>>>> 
>>>>>>> +        mov     r14,rdi
>>>>>>> 
>>>>>>> +        ror     rdi,42
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r12
>>>>>>> 
>>>>>>> +        shr     r12,7
>>>>>>> 
>>>>>>> +        ror     r13,1
>>>>>>> 
>>>>>>> +        xor     rdi,r14
>>>>>>> 
>>>>>>> +        shr     r14,6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     rdi,19
>>>>>>> 
>>>>>>> +        xor     r12,r13
>>>>>>> 
>>>>>>> +        xor     rdi,r14
>>>>>>> 
>>>>>>> +        add     r12,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12,QWORD[72+rsp]
>>>>>>> 
>>>>>>> +        mov     r13,rdx
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +        mov     r14,r11
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     rdi,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,rdx
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     rdi,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[72+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,r11
>>>>>>> 
>>>>>>> +        and     rdi,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,r10
>>>>>>> 
>>>>>>> +        xor     rdi,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,rdx
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rdi,r11
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdi,rax
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     r10,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15,rdi
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r10,r15
>>>>>>> 
>>>>>>> +        add     rcx,r12
>>>>>>> 
>>>>>>> +        add     r10,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[88+rsp]
>>>>>>> 
>>>>>>> +        mov     r15,QWORD[64+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12,r13
>>>>>>> 
>>>>>>> +        ror     r13,7
>>>>>>> 
>>>>>>> +        add     r10,r14
>>>>>>> 
>>>>>>> +        mov     r14,r15
>>>>>>> 
>>>>>>> +        ror     r15,42
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r12
>>>>>>> 
>>>>>>> +        shr     r12,7
>>>>>>> 
>>>>>>> +        ror     r13,1
>>>>>>> 
>>>>>>> +        xor     r15,r14
>>>>>>> 
>>>>>>> +        shr     r14,6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r15,19
>>>>>>> 
>>>>>>> +        xor     r12,r13
>>>>>>> 
>>>>>>> +        xor     r15,r14
>>>>>>> 
>>>>>>> +        add     r12,QWORD[24+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12,QWORD[80+rsp]
>>>>>>> 
>>>>>>> +        mov     r13,rcx
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +        mov     r14,r10
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     r15,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,rcx
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     r15,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[80+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,r10
>>>>>>> 
>>>>>>> +        and     r15,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,r9
>>>>>>> 
>>>>>>> +        xor     r15,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,rcx
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15,r10
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15,r11
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     r9,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     rdi,r15
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r9,rdi
>>>>>>> 
>>>>>>> +        add     rbx,r12
>>>>>>> 
>>>>>>> +        add     r9,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[96+rsp]
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[72+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12,r13
>>>>>>> 
>>>>>>> +        ror     r13,7
>>>>>>> 
>>>>>>> +        add     r9,r14
>>>>>>> 
>>>>>>> +        mov     r14,rdi
>>>>>>> 
>>>>>>> +        ror     rdi,42
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r12
>>>>>>> 
>>>>>>> +        shr     r12,7
>>>>>>> 
>>>>>>> +        ror     r13,1
>>>>>>> 
>>>>>>> +        xor     rdi,r14
>>>>>>> 
>>>>>>> +        shr     r14,6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     rdi,19
>>>>>>> 
>>>>>>> +        xor     r12,r13
>>>>>>> 
>>>>>>> +        xor     rdi,r14
>>>>>>> 
>>>>>>> +        add     r12,QWORD[32+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12,QWORD[88+rsp]
>>>>>>> 
>>>>>>> +        mov     r13,rbx
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +        mov     r14,r9
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,rbx
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     rdi,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[88+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,r9
>>>>>>> 
>>>>>>> +        and     rdi,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,r8
>>>>>>> 
>>>>>>> +        xor     rdi,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,rbx
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rdi,r9
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdi,r10
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     r8,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15,rdi
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r8,r15
>>>>>>> 
>>>>>>> +        add     rax,r12
>>>>>>> 
>>>>>>> +        add     r8,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[104+rsp]
>>>>>>> 
>>>>>>> +        mov     r15,QWORD[80+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12,r13
>>>>>>> 
>>>>>>> +        ror     r13,7
>>>>>>> 
>>>>>>> +        add     r8,r14
>>>>>>> 
>>>>>>> +        mov     r14,r15
>>>>>>> 
>>>>>>> +        ror     r15,42
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r12
>>>>>>> 
>>>>>>> +        shr     r12,7
>>>>>>> 
>>>>>>> +        ror     r13,1
>>>>>>> 
>>>>>>> +        xor     r15,r14
>>>>>>> 
>>>>>>> +        shr     r14,6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r15,19
>>>>>>> 
>>>>>>> +        xor     r12,r13
>>>>>>> 
>>>>>>> +        xor     r15,r14
>>>>>>> 
>>>>>>> +        add     r12,QWORD[40+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12,QWORD[96+rsp]
>>>>>>> 
>>>>>>> +        mov     r13,rax
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +        mov     r14,r8
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     r15,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,rax
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     r15,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[96+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,r8
>>>>>>> 
>>>>>>> +        and     r15,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,rdx
>>>>>>> 
>>>>>>> +        xor     r15,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,rax
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15,r8
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15,r9
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     rdx,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     rdi,r15
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdx,rdi
>>>>>>> 
>>>>>>> +        add     r11,r12
>>>>>>> 
>>>>>>> +        add     rdx,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[112+rsp]
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[88+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12,r13
>>>>>>> 
>>>>>>> +        ror     r13,7
>>>>>>> 
>>>>>>> +        add     rdx,r14
>>>>>>> 
>>>>>>> +        mov     r14,rdi
>>>>>>> 
>>>>>>> +        ror     rdi,42
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r12
>>>>>>> 
>>>>>>> +        shr     r12,7
>>>>>>> 
>>>>>>> +        ror     r13,1
>>>>>>> 
>>>>>>> +        xor     rdi,r14
>>>>>>> 
>>>>>>> +        shr     r14,6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     rdi,19
>>>>>>> 
>>>>>>> +        xor     r12,r13
>>>>>>> 
>>>>>>> +        xor     rdi,r14
>>>>>>> 
>>>>>>> +        add     r12,QWORD[48+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12,QWORD[104+rsp]
>>>>>>> 
>>>>>>> +        mov     r13,r11
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +        mov     r14,rdx
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     rdi,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r11
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     rdi,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[104+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,rdx
>>>>>>> 
>>>>>>> +        and     rdi,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,rcx
>>>>>>> 
>>>>>>> +        xor     rdi,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,r11
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rdi,rdx
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdi,r8
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     rcx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15,rdi
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rcx,r15
>>>>>>> 
>>>>>>> +        add     r10,r12
>>>>>>> 
>>>>>>> +        add     rcx,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[120+rsp]
>>>>>>> 
>>>>>>> +        mov     r15,QWORD[96+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12,r13
>>>>>>> 
>>>>>>> +        ror     r13,7
>>>>>>> 
>>>>>>> +        add     rcx,r14
>>>>>>> 
>>>>>>> +        mov     r14,r15
>>>>>>> 
>>>>>>> +        ror     r15,42
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r12
>>>>>>> 
>>>>>>> +        shr     r12,7
>>>>>>> 
>>>>>>> +        ror     r13,1
>>>>>>> 
>>>>>>> +        xor     r15,r14
>>>>>>> 
>>>>>>> +        shr     r14,6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r15,19
>>>>>>> 
>>>>>>> +        xor     r12,r13
>>>>>>> 
>>>>>>> +        xor     r15,r14
>>>>>>> 
>>>>>>> +        add     r12,QWORD[56+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12,QWORD[112+rsp]
>>>>>>> 
>>>>>>> +        mov     r13,r10
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +        mov     r14,rcx
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     r15,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r10
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     r15,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[112+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,rcx
>>>>>>> 
>>>>>>> +        and     r15,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,rbx
>>>>>>> 
>>>>>>> +        xor     r15,rax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,r10
>>>>>>> 
>>>>>>> +        add     r12,r15
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r15,rcx
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r15,rdx
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     rbx,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     rdi,r15
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rbx,rdi
>>>>>>> 
>>>>>>> +        add     r9,r12
>>>>>>> 
>>>>>>> +        add     rbx,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[8+rbp]
>>>>>>> 
>>>>>>> +        mov     r13,QWORD[rsp]
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[104+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r12,r13
>>>>>>> 
>>>>>>> +        ror     r13,7
>>>>>>> 
>>>>>>> +        add     rbx,r14
>>>>>>> 
>>>>>>> +        mov     r14,rdi
>>>>>>> 
>>>>>>> +        ror     rdi,42
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r12
>>>>>>> 
>>>>>>> +        shr     r12,7
>>>>>>> 
>>>>>>> +        ror     r13,1
>>>>>>> 
>>>>>>> +        xor     rdi,r14
>>>>>>> 
>>>>>>> +        shr     r14,6
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     rdi,19
>>>>>>> 
>>>>>>> +        xor     r12,r13
>>>>>>> 
>>>>>>> +        xor     rdi,r14
>>>>>>> 
>>>>>>> +        add     r12,QWORD[64+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        add     r12,QWORD[120+rsp]
>>>>>>> 
>>>>>>> +        mov     r13,r9
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +        mov     r14,rbx
>>>>>>> 
>>>>>>> +        ror     r13,23
>>>>>>> 
>>>>>>> +        mov     rdi,r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     r13,r9
>>>>>>> 
>>>>>>> +        ror     r14,5
>>>>>>> 
>>>>>>> +        xor     rdi,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     QWORD[120+rsp],r12
>>>>>>> 
>>>>>>> +        xor     r14,rbx
>>>>>>> 
>>>>>>> +        and     rdi,r9
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r13,4
>>>>>>> 
>>>>>>> +        add     r12,rax
>>>>>>> 
>>>>>>> +        xor     rdi,r11
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        ror     r14,6
>>>>>>> 
>>>>>>> +        xor     r13,r9
>>>>>>> 
>>>>>>> +        add     r12,rdi
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rdi,rbx
>>>>>>> 
>>>>>>> +        add     r12,QWORD[rbp]
>>>>>>> 
>>>>>>> +        xor     r14,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rdi,rcx
>>>>>>> 
>>>>>>> +        ror     r13,14
>>>>>>> 
>>>>>>> +        mov     rax,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     r15,rdi
>>>>>>> 
>>>>>>> +        ror     r14,28
>>>>>>> 
>>>>>>> +        add     r12,r13
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rax,r15
>>>>>>> 
>>>>>>> +        add     r8,r12
>>>>>>> 
>>>>>>> +        add     rax,r12
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rbp,[24+rbp]
>>>>>>> 
>>>>>>> +        cmp     BYTE[7+rbp],0
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$rounds_16_xx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[((128+0))+rsp]
>>>>>>> 
>>>>>>> +        add     rax,r14
>>>>>>> 
>>>>>>> +        lea     rsi,[128+rsi]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[((128+16))+rsp]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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[152+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$epilogue:
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$SEH_end_sha512_block_data_order:
>>>>>>> 
>>>>>>> +ALIGN   64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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      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
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +se_handler:
>>>>>>> 
>>>>>>> +        push    rsi
>>>>>>> 
>>>>>>> +        push    rdi
>>>>>>> 
>>>>>>> +        push    rbx
>>>>>>> 
>>>>>>> +        push    rbp
>>>>>>> 
>>>>>>> +        push    r12
>>>>>>> 
>>>>>>> +        push    r13
>>>>>>> 
>>>>>>> +        push    r14
>>>>>>> 
>>>>>>> +        push    r15
>>>>>>> 
>>>>>>> +        pushfq
>>>>>>> 
>>>>>>> +        sub     rsp,64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[120+r8]
>>>>>>> 
>>>>>>> +        mov     rbx,QWORD[248+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[8+r9]
>>>>>>> 
>>>>>>> +        mov     r11,QWORD[56+r9]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[152+r8]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,DWORD[4+r11]
>>>>>>> 
>>>>>>> +        lea     r10,[r10*1+rsi]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jae     NEAR $L$in_prologue
>>>>>>> 
>>>>>>> +        mov     rsi,rax
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[((128+24))+rax]
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        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,[$L$epilogue]
>>>>>>> 
>>>>>>> +        cmp     rbx,r10
>>>>>>> 
>>>>>>> +        jb      NEAR $L$in_prologue
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        lea     rsi,[((128+32))+rsi]
>>>>>>> 
>>>>>>> +        lea     rdi,[512+r8]
>>>>>>> 
>>>>>>> +        mov     ecx,12
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$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[40+r9]
>>>>>>> 
>>>>>>> +        mov     rsi,r8
>>>>>>> 
>>>>>>> +        mov     ecx,154
>>>>>>> 
>>>>>>> +        DD      0xa548f3fc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rsi,r9
>>>>>>> 
>>>>>>> +        xor     rcx,rcx
>>>>>>> 
>>>>>>> +        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
>>>>>>> 
>>>>>>> +        popfq
>>>>>>> 
>>>>>>> +        pop     r15
>>>>>>> 
>>>>>>> +        pop     r14
>>>>>>> 
>>>>>>> +        pop     r13
>>>>>>> 
>>>>>>> +        pop     r12
>>>>>>> 
>>>>>>> +        pop     rbp
>>>>>>> 
>>>>>>> +        pop     rbx
>>>>>>> 
>>>>>>> +        pop     rdi
>>>>>>> 
>>>>>>> +        pop     rsi
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +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/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
>>>>>>> b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..2a3d5bcf72
>>>>>>> --- /dev/null
>>>>>>> +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
>>>>>>> @@ -0,0 +1,491 @@
>>>>>>> +; WARNING: do not edit!
>>>>>>> 
>>>>>>> +; Generated from openssl/crypto/x86_64cpuid.pl
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
>>>> Reserved.
>>>>>>> 
>>>>>>> +;
>>>>>>> 
>>>>>>> +; Licensed under the OpenSSL license (the "License").  You may not
>> use
>>>>>>> 
>>>>>>> +; this file except in compliance with the License.  You can obtain
>> a
>>>> copy
>>>>>>> 
>>>>>>> +; in the file LICENSE in the source distribution or at
>>>>>>> 
>>>>>>> +; https://www.openssl.org/source/license.html
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +default rel
>>>>>>> 
>>>>>>> +%define XMMWORD
>>>>>>> 
>>>>>>> +%define YMMWORD
>>>>>>> 
>>>>>>> +%define ZMMWORD
>>>>>>> 
>>>>>>> +EXTERN  OPENSSL_cpuid_setup
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +section .CRT$XCU rdata align=8
>>>>>>> 
>>>>>>> +                DQ      OPENSSL_cpuid_setup
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +common  OPENSSL_ia32cap_P 16
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +section .text code align=64
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  OPENSSL_atomic_add
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +OPENSSL_atomic_add:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     eax,DWORD[rcx]
>>>>>>> 
>>>>>>> +$L$spin:        lea     r8,[rax*1+rdx]
>>>>>>> 
>>>>>>> +DB      0xf0
>>>>>>> 
>>>>>>> +        cmpxchg DWORD[rcx],r8d
>>>>>>> 
>>>>>>> +        jne     NEAR $L$spin
>>>>>>> 
>>>>>>> +        mov     eax,r8d
>>>>>>> 
>>>>>>> +DB      0x48,0x98
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  OPENSSL_rdtsc
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +OPENSSL_rdtsc:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        rdtsc
>>>>>>> 
>>>>>>> +        shl     rdx,32
>>>>>>> 
>>>>>>> +        or      rax,rdx
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  OPENSSL_ia32_cpuid
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +OPENSSL_ia32_cpuid:
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rdi        ;WIN64 prologue
>>>>>>> 
>>>>>>> +        mov     QWORD[16+rsp],rsi
>>>>>>> 
>>>>>>> +        mov     rax,rsp
>>>>>>> 
>>>>>>> +$L$SEH_begin_OPENSSL_ia32_cpuid:
>>>>>>> 
>>>>>>> +        mov     rdi,rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r8,rbx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     eax,eax
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rdi],rax
>>>>>>> 
>>>>>>> +        cpuid
>>>>>>> 
>>>>>>> +        mov     r11d,eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     eax,eax
>>>>>>> 
>>>>>>> +        cmp     ebx,0x756e6547
>>>>>>> 
>>>>>>> +        setne   al
>>>>>>> 
>>>>>>> +        mov     r9d,eax
>>>>>>> 
>>>>>>> +        cmp     edx,0x49656e69
>>>>>>> 
>>>>>>> +        setne   al
>>>>>>> 
>>>>>>> +        or      r9d,eax
>>>>>>> 
>>>>>>> +        cmp     ecx,0x6c65746e
>>>>>>> 
>>>>>>> +        setne   al
>>>>>>> 
>>>>>>> +        or      r9d,eax
>>>>>>> 
>>>>>>> +        jz      NEAR $L$intel
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        cmp     ebx,0x68747541
>>>>>>> 
>>>>>>> +        setne   al
>>>>>>> 
>>>>>>> +        mov     r10d,eax
>>>>>>> 
>>>>>>> +        cmp     edx,0x69746E65
>>>>>>> 
>>>>>>> +        setne   al
>>>>>>> 
>>>>>>> +        or      r10d,eax
>>>>>>> 
>>>>>>> +        cmp     ecx,0x444D4163
>>>>>>> 
>>>>>>> +        setne   al
>>>>>>> 
>>>>>>> +        or      r10d,eax
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$intel
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     eax,0x80000000
>>>>>>> 
>>>>>>> +        cpuid
>>>>>>> 
>>>>>>> +        cmp     eax,0x80000001
>>>>>>> 
>>>>>>> +        jb      NEAR $L$intel
>>>>>>> 
>>>>>>> +        mov     r10d,eax
>>>>>>> 
>>>>>>> +        mov     eax,0x80000001
>>>>>>> 
>>>>>>> +        cpuid
>>>>>>> 
>>>>>>> +        or      r9d,ecx
>>>>>>> 
>>>>>>> +        and     r9d,0x00000801
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        cmp     r10d,0x80000008
>>>>>>> 
>>>>>>> +        jb      NEAR $L$intel
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     eax,0x80000008
>>>>>>> 
>>>>>>> +        cpuid
>>>>>>> 
>>>>>>> +        movzx   r10,cl
>>>>>>> 
>>>>>>> +        inc     r10
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     eax,1
>>>>>>> 
>>>>>>> +        cpuid
>>>>>>> 
>>>>>>> +        bt      edx,28
>>>>>>> 
>>>>>>> +        jnc     NEAR $L$generic
>>>>>>> 
>>>>>>> +        shr     ebx,16
>>>>>>> 
>>>>>>> +        cmp     bl,r10b
>>>>>>> 
>>>>>>> +        ja      NEAR $L$generic
>>>>>>> 
>>>>>>> +        and     edx,0xefffffff
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$generic
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$intel:
>>>>>>> 
>>>>>>> +        cmp     r11d,4
>>>>>>> 
>>>>>>> +        mov     r10d,-1
>>>>>>> 
>>>>>>> +        jb      NEAR $L$nocacheinfo
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     eax,4
>>>>>>> 
>>>>>>> +        mov     ecx,0
>>>>>>> 
>>>>>>> +        cpuid
>>>>>>> 
>>>>>>> +        mov     r10d,eax
>>>>>>> 
>>>>>>> +        shr     r10d,14
>>>>>>> 
>>>>>>> +        and     r10d,0xfff
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$nocacheinfo:
>>>>>>> 
>>>>>>> +        mov     eax,1
>>>>>>> 
>>>>>>> +        cpuid
>>>>>>> 
>>>>>>> +        movd    xmm0,eax
>>>>>>> 
>>>>>>> +        and     edx,0xbfefffff
>>>>>>> 
>>>>>>> +        cmp     r9d,0
>>>>>>> 
>>>>>>> +        jne     NEAR $L$notintel
>>>>>>> 
>>>>>>> +        or      edx,0x40000000
>>>>>>> 
>>>>>>> +        and     ah,15
>>>>>>> 
>>>>>>> +        cmp     ah,15
>>>>>>> 
>>>>>>> +        jne     NEAR $L$notP4
>>>>>>> 
>>>>>>> +        or      edx,0x00100000
>>>>>>> 
>>>>>>> +$L$notP4:
>>>>>>> 
>>>>>>> +        cmp     ah,6
>>>>>>> 
>>>>>>> +        jne     NEAR $L$notintel
>>>>>>> 
>>>>>>> +        and     eax,0x0fff0ff0
>>>>>>> 
>>>>>>> +        cmp     eax,0x00050670
>>>>>>> 
>>>>>>> +        je      NEAR $L$knights
>>>>>>> 
>>>>>>> +        cmp     eax,0x00080650
>>>>>>> 
>>>>>>> +        jne     NEAR $L$notintel
>>>>>>> 
>>>>>>> +$L$knights:
>>>>>>> 
>>>>>>> +        and     ecx,0xfbffffff
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$notintel:
>>>>>>> 
>>>>>>> +        bt      edx,28
>>>>>>> 
>>>>>>> +        jnc     NEAR $L$generic
>>>>>>> 
>>>>>>> +        and     edx,0xefffffff
>>>>>>> 
>>>>>>> +        cmp     r10d,0
>>>>>>> 
>>>>>>> +        je      NEAR $L$generic
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        or      edx,0x10000000
>>>>>>> 
>>>>>>> +        shr     ebx,16
>>>>>>> 
>>>>>>> +        cmp     bl,1
>>>>>>> 
>>>>>>> +        ja      NEAR $L$generic
>>>>>>> 
>>>>>>> +        and     edx,0xefffffff
>>>>>>> 
>>>>>>> +$L$generic:
>>>>>>> 
>>>>>>> +        and     r9d,0x00000800
>>>>>>> 
>>>>>>> +        and     ecx,0xfffff7ff
>>>>>>> 
>>>>>>> +        or      r9d,ecx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10d,edx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        cmp     r11d,7
>>>>>>> 
>>>>>>> +        jb      NEAR $L$no_extended_info
>>>>>>> 
>>>>>>> +        mov     eax,7
>>>>>>> 
>>>>>>> +        xor     ecx,ecx
>>>>>>> 
>>>>>>> +        cpuid
>>>>>>> 
>>>>>>> +        bt      r9d,26
>>>>>>> 
>>>>>>> +        jc      NEAR $L$notknights
>>>>>>> 
>>>>>>> +        and     ebx,0xfff7ffff
>>>>>>> 
>>>>>>> +$L$notknights:
>>>>>>> 
>>>>>>> +        movd    eax,xmm0
>>>>>>> 
>>>>>>> +        and     eax,0x0fff0ff0
>>>>>>> 
>>>>>>> +        cmp     eax,0x00050650
>>>>>>> 
>>>>>>> +        jne     NEAR $L$notskylakex
>>>>>>> 
>>>>>>> +        and     ebx,0xfffeffff
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$notskylakex:
>>>>>>> 
>>>>>>> +        mov     DWORD[8+rdi],ebx
>>>>>>> 
>>>>>>> +        mov     DWORD[12+rdi],ecx
>>>>>>> 
>>>>>>> +$L$no_extended_info:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        bt      r9d,27
>>>>>>> 
>>>>>>> +        jnc     NEAR $L$clear_avx
>>>>>>> 
>>>>>>> +        xor     ecx,ecx
>>>>>>> 
>>>>>>> +DB      0x0f,0x01,0xd0
>>>>>>> 
>>>>>>> +        and     eax,0xe6
>>>>>>> 
>>>>>>> +        cmp     eax,0xe6
>>>>>>> 
>>>>>>> +        je      NEAR $L$done
>>>>>>> 
>>>>>>> +        and     DWORD[8+rdi],0x3fdeffff
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        and     eax,6
>>>>>>> 
>>>>>>> +        cmp     eax,6
>>>>>>> 
>>>>>>> +        je      NEAR $L$done
>>>>>>> 
>>>>>>> +$L$clear_avx:
>>>>>>> 
>>>>>>> +        mov     eax,0xefffe7ff
>>>>>>> 
>>>>>>> +        and     r9d,eax
>>>>>>> 
>>>>>>> +        mov     eax,0x3fdeffdf
>>>>>>> 
>>>>>>> +        and     DWORD[8+rdi],eax
>>>>>>> 
>>>>>>> +$L$done:
>>>>>>> 
>>>>>>> +        shl     r9,32
>>>>>>> 
>>>>>>> +        mov     eax,r10d
>>>>>>> 
>>>>>>> +        mov     rbx,r8
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        or      rax,r9
>>>>>>> 
>>>>>>> +        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
>>>>>>> 
>>>>>>> +        mov     rsi,QWORD[16+rsp]
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$SEH_end_OPENSSL_ia32_cpuid:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  OPENSSL_cleanse
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +OPENSSL_cleanse:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rax,rax
>>>>>>> 
>>>>>>> +        cmp     rdx,15
>>>>>>> 
>>>>>>> +        jae     NEAR $L$ot
>>>>>>> 
>>>>>>> +        cmp     rdx,0
>>>>>>> 
>>>>>>> +        je      NEAR $L$ret
>>>>>>> 
>>>>>>> +$L$ittle:
>>>>>>> 
>>>>>>> +        mov     BYTE[rcx],al
>>>>>>> 
>>>>>>> +        sub     rdx,1
>>>>>>> 
>>>>>>> +        lea     rcx,[1+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$ittle
>>>>>>> 
>>>>>>> +$L$ret:
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$ot:
>>>>>>> 
>>>>>>> +        test    rcx,7
>>>>>>> 
>>>>>>> +        jz      NEAR $L$aligned
>>>>>>> 
>>>>>>> +        mov     BYTE[rcx],al
>>>>>>> 
>>>>>>> +        lea     rdx,[((-1))+rdx]
>>>>>>> 
>>>>>>> +        lea     rcx,[1+rcx]
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$ot
>>>>>>> 
>>>>>>> +$L$aligned:
>>>>>>> 
>>>>>>> +        mov     QWORD[rcx],rax
>>>>>>> 
>>>>>>> +        lea     rdx,[((-8))+rdx]
>>>>>>> 
>>>>>>> +        test    rdx,-8
>>>>>>> 
>>>>>>> +        lea     rcx,[8+rcx]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$aligned
>>>>>>> 
>>>>>>> +        cmp     rdx,0
>>>>>>> 
>>>>>>> +        jne     NEAR $L$ittle
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  CRYPTO_memcmp
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +CRYPTO_memcmp:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rax,rax
>>>>>>> 
>>>>>>> +        xor     r10,r10
>>>>>>> 
>>>>>>> +        cmp     r8,0
>>>>>>> 
>>>>>>> +        je      NEAR $L$no_data
>>>>>>> 
>>>>>>> +        cmp     r8,16
>>>>>>> 
>>>>>>> +        jne     NEAR $L$oop_cmp
>>>>>>> 
>>>>>>> +        mov     r10,QWORD[rcx]
>>>>>>> 
>>>>>>> +        mov     r11,QWORD[8+rcx]
>>>>>>> 
>>>>>>> +        mov     r8,1
>>>>>>> 
>>>>>>> +        xor     r10,QWORD[rdx]
>>>>>>> 
>>>>>>> +        xor     r11,QWORD[8+rdx]
>>>>>>> 
>>>>>>> +        or      r10,r11
>>>>>>> 
>>>>>>> +        cmovnz  rax,r8
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$oop_cmp:
>>>>>>> 
>>>>>>> +        mov     r10b,BYTE[rcx]
>>>>>>> 
>>>>>>> +        lea     rcx,[1+rcx]
>>>>>>> 
>>>>>>> +        xor     r10b,BYTE[rdx]
>>>>>>> 
>>>>>>> +        lea     rdx,[1+rdx]
>>>>>>> 
>>>>>>> +        or      al,r10b
>>>>>>> 
>>>>>>> +        dec     r8
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_cmp
>>>>>>> 
>>>>>>> +        neg     rax
>>>>>>> 
>>>>>>> +        shr     rax,63
>>>>>>> 
>>>>>>> +$L$no_data:
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  OPENSSL_wipe_cpu
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +OPENSSL_wipe_cpu:
>>>>>>> 
>>>>>>> +        pxor    xmm0,xmm0
>>>>>>> 
>>>>>>> +        pxor    xmm1,xmm1
>>>>>>> 
>>>>>>> +        pxor    xmm2,xmm2
>>>>>>> 
>>>>>>> +        pxor    xmm3,xmm3
>>>>>>> 
>>>>>>> +        pxor    xmm4,xmm4
>>>>>>> 
>>>>>>> +        pxor    xmm5,xmm5
>>>>>>> 
>>>>>>> +        xor     rcx,rcx
>>>>>>> 
>>>>>>> +        xor     rdx,rdx
>>>>>>> 
>>>>>>> +        xor     r8,r8
>>>>>>> 
>>>>>>> +        xor     r9,r9
>>>>>>> 
>>>>>>> +        xor     r10,r10
>>>>>>> 
>>>>>>> +        xor     r11,r11
>>>>>>> 
>>>>>>> +        lea     rax,[8+rsp]
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  OPENSSL_instrument_bus
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +OPENSSL_instrument_bus:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10,rcx
>>>>>>> 
>>>>>>> +        mov     rcx,rdx
>>>>>>> 
>>>>>>> +        mov     r11,rdx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        rdtsc
>>>>>>> 
>>>>>>> +        mov     r8d,eax
>>>>>>> 
>>>>>>> +        mov     r9d,0
>>>>>>> 
>>>>>>> +        clflush [r10]
>>>>>>> 
>>>>>>> +DB      0xf0
>>>>>>> 
>>>>>>> +        add     DWORD[r10],r9d
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$oop: rdtsc
>>>>>>> 
>>>>>>> +        mov     edx,eax
>>>>>>> 
>>>>>>> +        sub     eax,r8d
>>>>>>> 
>>>>>>> +        mov     r8d,edx
>>>>>>> 
>>>>>>> +        mov     r9d,eax
>>>>>>> 
>>>>>>> +        clflush [r10]
>>>>>>> 
>>>>>>> +DB      0xf0
>>>>>>> 
>>>>>>> +        add     DWORD[r10],eax
>>>>>>> 
>>>>>>> +        lea     r10,[4+r10]
>>>>>>> 
>>>>>>> +        sub     rcx,1
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     rax,r11
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  OPENSSL_instrument_bus2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +OPENSSL_instrument_bus2:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r10,rcx
>>>>>>> 
>>>>>>> +        mov     rcx,rdx
>>>>>>> 
>>>>>>> +        mov     r11,r8
>>>>>>> 
>>>>>>> +        mov     QWORD[8+rsp],rcx
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        rdtsc
>>>>>>> 
>>>>>>> +        mov     r8d,eax
>>>>>>> 
>>>>>>> +        mov     r9d,0
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        clflush [r10]
>>>>>>> 
>>>>>>> +DB      0xf0
>>>>>>> 
>>>>>>> +        add     DWORD[r10],r9d
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        rdtsc
>>>>>>> 
>>>>>>> +        mov     edx,eax
>>>>>>> 
>>>>>>> +        sub     eax,r8d
>>>>>>> 
>>>>>>> +        mov     r8d,edx
>>>>>>> 
>>>>>>> +        mov     r9d,eax
>>>>>>> 
>>>>>>> +$L$oop2:
>>>>>>> 
>>>>>>> +        clflush [r10]
>>>>>>> 
>>>>>>> +DB      0xf0
>>>>>>> 
>>>>>>> +        add     DWORD[r10],eax
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        sub     r11,1
>>>>>>> 
>>>>>>> +        jz      NEAR $L$done2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        rdtsc
>>>>>>> 
>>>>>>> +        mov     edx,eax
>>>>>>> 
>>>>>>> +        sub     eax,r8d
>>>>>>> 
>>>>>>> +        mov     r8d,edx
>>>>>>> 
>>>>>>> +        cmp     eax,r9d
>>>>>>> 
>>>>>>> +        mov     r9d,eax
>>>>>>> 
>>>>>>> +        mov     edx,0
>>>>>>> 
>>>>>>> +        setne   dl
>>>>>>> 
>>>>>>> +        sub     rcx,rdx
>>>>>>> 
>>>>>>> +        lea     r10,[rdx*4+r10]
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop2
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$done2:
>>>>>>> 
>>>>>>> +        mov     rax,QWORD[8+rsp]
>>>>>>> 
>>>>>>> +        sub     rax,rcx
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  OPENSSL_ia32_rdrand_bytes
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +OPENSSL_ia32_rdrand_bytes:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rax,rax
>>>>>>> 
>>>>>>> +        cmp     rdx,0
>>>>>>> 
>>>>>>> +        je      NEAR $L$done_rdrand_bytes
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r11,8
>>>>>>> 
>>>>>>> +$L$oop_rdrand_bytes:
>>>>>>> 
>>>>>>> +DB      73,15,199,242
>>>>>>> 
>>>>>>> +        jc      NEAR $L$break_rdrand_bytes
>>>>>>> 
>>>>>>> +        dec     r11
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_rdrand_bytes
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$done_rdrand_bytes
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$break_rdrand_bytes:
>>>>>>> 
>>>>>>> +        cmp     rdx,8
>>>>>>> 
>>>>>>> +        jb      NEAR $L$tail_rdrand_bytes
>>>>>>> 
>>>>>>> +        mov     QWORD[rcx],r10
>>>>>>> 
>>>>>>> +        lea     rcx,[8+rcx]
>>>>>>> 
>>>>>>> +        add     rax,8
>>>>>>> 
>>>>>>> +        sub     rdx,8
>>>>>>> 
>>>>>>> +        jz      NEAR $L$done_rdrand_bytes
>>>>>>> 
>>>>>>> +        mov     r11,8
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_rdrand_bytes
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$tail_rdrand_bytes:
>>>>>>> 
>>>>>>> +        mov     BYTE[rcx],r10b
>>>>>>> 
>>>>>>> +        lea     rcx,[1+rcx]
>>>>>>> 
>>>>>>> +        inc     rax
>>>>>>> 
>>>>>>> +        shr     r10,8
>>>>>>> 
>>>>>>> +        dec     rdx
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$tail_rdrand_bytes
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$done_rdrand_bytes:
>>>>>>> 
>>>>>>> +        xor     r10,r10
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +global  OPENSSL_ia32_rdseed_bytes
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +OPENSSL_ia32_rdseed_bytes:
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        xor     rax,rax
>>>>>>> 
>>>>>>> +        cmp     rdx,0
>>>>>>> 
>>>>>>> +        je      NEAR $L$done_rdseed_bytes
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +        mov     r11,8
>>>>>>> 
>>>>>>> +$L$oop_rdseed_bytes:
>>>>>>> 
>>>>>>> +DB      73,15,199,250
>>>>>>> 
>>>>>>> +        jc      NEAR $L$break_rdseed_bytes
>>>>>>> 
>>>>>>> +        dec     r11
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$oop_rdseed_bytes
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$done_rdseed_bytes
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$break_rdseed_bytes:
>>>>>>> 
>>>>>>> +        cmp     rdx,8
>>>>>>> 
>>>>>>> +        jb      NEAR $L$tail_rdseed_bytes
>>>>>>> 
>>>>>>> +        mov     QWORD[rcx],r10
>>>>>>> 
>>>>>>> +        lea     rcx,[8+rcx]
>>>>>>> 
>>>>>>> +        add     rax,8
>>>>>>> 
>>>>>>> +        sub     rdx,8
>>>>>>> 
>>>>>>> +        jz      NEAR $L$done_rdseed_bytes
>>>>>>> 
>>>>>>> +        mov     r11,8
>>>>>>> 
>>>>>>> +        jmp     NEAR $L$oop_rdseed_bytes
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +ALIGN   16
>>>>>>> 
>>>>>>> +$L$tail_rdseed_bytes:
>>>>>>> 
>>>>>>> +        mov     BYTE[rcx],r10b
>>>>>>> 
>>>>>>> +        lea     rcx,[1+rcx]
>>>>>>> 
>>>>>>> +        inc     rax
>>>>>>> 
>>>>>>> +        shr     r10,8
>>>>>>> 
>>>>>>> +        dec     rdx
>>>>>>> 
>>>>>>> +        jnz     NEAR $L$tail_rdseed_bytes
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +$L$done_rdseed_bytes:
>>>>>>> 
>>>>>>> +        xor     r10,r10
>>>>>>> 
>>>>>>> +        DB      0F3h,0C3h               ;repret
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>> --
>>>>>>> 2.28.0.windows.1
> 
> 
> 
> 


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

* Re: [edk2-devel] [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
  2020-08-19 10:43                 ` Laszlo Ersek
@ 2020-08-19 16:08                   ` Michael D Kinney
  2020-08-19 17:21                     ` Laszlo Ersek
  0 siblings, 1 reply; 42+ messages in thread
From: Michael D Kinney @ 2020-08-19 16:08 UTC (permalink / raw)
  To: devel@edk2.groups.io, lersek@redhat.com, spbrogan@outlook.com,
	Wang, Jian J, Zurcher, Christopher J, Yao, Jiewen,
	Kinney, Michael D
  Cc: Lu, XiaoyuX, Ard Biesheuvel

Laszlo,

The current CryptoPkg DCS file with use of the CRYPTO_SERVICES define is cumbersome.

  #
  # Flavor of PEI, DXE, SMM modules to build.
  # Must be one of ALL, NONE, MIN_PEI, MIN_DXE_MIN_SMM.
  # Default is ALL that is used for package build verification.
  #   PACKAGE         - Package verification build of all components.  Null
  #                     versions of libraries are used to minimize build times.
  #   ALL             - Build PEIM, DXE, and SMM drivers.  Protocols and PPIs
  #                     publish all services.
  #   NONE            - Build PEIM, DXE, and SMM drivers.  Protocols and PPIs
  #                     publish no services.  Used to verify compiler/linker
  #                     optimizations are working correctly.
  #   MIN_PEI         - Build PEIM with PPI that publishes minimum required
  #                     services.
  #   MIN_DXE_MIN_SMM - Build DXE and SMM drivers with Protocols that publish
  #                     minimum required services.
  #
  DEFINE CRYPTO_SERVICES = PACKAGE

There is a known limitation for using structured PCDs in a module scope and 
that limitation is what resulted in the use of this define.  Bob Feng
has provided a BaseTools patch that attempts to address this limitation.

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

This patch is functional, but has one open issue around the PCD report.  Once
this issue is resolved we will be able to specify structured PCD field values
in the scope of a single module.  I have a branch that simplifies the DSC and
allows all flavors of the crypto modules to be built in a single invocation
of the build command.  There is more cleanup of the DSC possible, but I
wanted to share a quick test case for Bob's patch.

    https://github.com/mdkinney/edk2/tree/Bug_xxx_CryptoPkg_UseModuleScopedPcds

This feature supports both the generation of standard flavors of the crypto
modules that a platform could consume as a pre-built binary and also allows
a platform to choose their own profile by specifying the specific crypto APIs
needed in PEI, DXE, SMM when building crypto modules from sources.
  
Best regards,

Mike

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Laszlo Ersek
> Sent: Wednesday, August 19, 2020 3:44 AM
> To: devel@edk2.groups.io; spbrogan@outlook.com; Kinney, Michael D <michael.d.kinney@intel.com>; Wang, Jian J
> <jian.j.wang@intel.com>; Zurcher, Christopher J <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>
> Cc: Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: Re: [edk2-devel] [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
> 
> Hi,
> 
> On 08/18/20 23:33, Sean wrote:
> > Mike,
> >
> > I am not technically a basetool maintainer but as an active user/dev in
> > basetools, i would be opposed to bringing in perl as an edk2 dependency.
> > Also introducing another language is counter to the goal of aligning on
> > python and improving the python used within edk2.  From my perspective
> > the openssl config case isn't strong enough to counter the above goal.
> > In fact as you know we are trying to change the paradigm for
> > Crypto/OpenSSL with the Crypto Driver
> > (https://github.com/tianocore/edk2/tree/master/CryptoPkg/Driver) and
> > BaseCryptLibOnProtocolPpi
> > (https://github.com/tianocore/edk2/tree/master/CryptoPkg/Library/BaseCryptLibOnProtocolPpi)
> > work so that everyday development doesn't need to compile openssl in
> > their edk2 builds.
> 
> Here I'd only like to comment on this one aspect (= build OpenSSL as a
> statically linked library vs. as a crypto service driver / PEIM).
> 
> Recently I tried to evaluate the crypto driver for OVMF. I started with
> the PEI phase. The configuration interface (the PCD) is baroque, *BUT*
> that is a direct consequence of OpenSSL offering a huge range of
> interfaces. So no complaints about the config interface.
> 
> I also reviewed the CryptoPkg.dsc "pre-sets" (i.e., CRYPTO_SERVICES
> being one of PACKAGE / ALL / NONE / MIN_PEI / MIN_DXE_MIN_SMM). I had
> two problems:
> 
> - These pre-sets are supremely suitable for a platform that is composed
> of multiple build runs; that is, build the crypto PEIM, build the DXE /
> SMM protocol drivers, package up the resultant binaries, and *then*
> build the actual platforms (which will then include the crypto service
> drivers in *binary* form). On the other hand, the pre-sets are not
> useful to a platform that is supposed to be built in a single-shot.
> Importantly, I'm not saying that the pre-sets are *detrimental* to such
> platforms -- they aren't. It's just that the pre-sets target a different
> use case.
> 
> - The other problem I had was the one that we had discussed when the
> crypto service driver was being introduced. Namely, selecting the
> OpenSSL interfaces (interface families) that the platform actually consumes.
> 
> Now, I carefully tracked down the modules in OVMF that needed crypto
> support, by *not* resolving SmmCryptLib, RuntimeCryptLib, TlsLib in
> general [LibraryClasses] sections in the OVMF DSC files. Then I re-added
> those lib-class resolutions as module-scoped <LibraryClasses> overrides
> to the actual modules that needed them.
> 
> However, I didn't know how to even *begin* evaluating the specific "API
> needs" of the modules identified thusly. On a Windows or Linux OS, when
> you have a dynamically linked executable, and it doesn't find a symbol
> in a shared library, you get a nice error message, and the application
> doesn't start. On the other hand, if a crypto protocol call fails in SMM
> because we missed a feature bit in the config PCD, the results are
> somewhat less user-friendly.
> 
> The expression "minimum required services" in CryptoPkg.dsc seems
> relevant, but it didn't convince me that it would cover everything
> needed by -- for example -- VariableSmm, VariableRuntimeDxe, and TlsDxe.
> 
> So, given that I couldn't construct a "tight profile", I started my
> investigation (for OVMF's PEI phase) by including the crypto service
> PEIM with *all* interfaces enabled.
> 
> This would be restricted to "TPM_ENABLE", because only that is when
> OVMF's PEI phase needs crypto -- due to including the various TPM1 and
> TPM2 PEIMs.
> 
> So basically this check would replace the statically linked -- and
> accordingly trimmed! -- "thick" OpenSSL library copies in the TPM1/PTM2
> PEIMs, with the thin wrapper lib
> (BaseCryptLibOnProtocolPpi/PeiCryptLib.inf) *plus* the full-blown crypto
> service PEIM.
> 
> The result was a *violent* size explosion in PEIFV; at least in the
> NOOPT build. Before:
> 
> > PEIFV [64%Full] 917504 total, 592456 used, 325048 free
> 
> after:
> 
> >   the required fv image size 0x132968 exceeds the set fv image size
> > 0xe0000
> 
> The PEIFV footprint more than doubled, from 592,456 bytes to 1,255,784
> bytes.
> 
> I gave up there. Until the "crypto profile" construction is not
> automated for platforms, somehow, I don't know how I could maintain OVMF
> consuming the crypto service PEIMs/drivers.
> 
> (I wonder if we should maintain a "required crypto services" bitmap for
> each individual PEIM / DXE / SMM driver inside edk2. And then, when a
> platform includes any one such PEIM or driver, they'd know to "OR" the
> bitmap for that particular module into their platform PCD setting.)
> 
> > So I support leaving it as is which means if you have to change
> > something in openssl config you deal with it and a special one off.
> 
> (OK, I guess I can comment on this too, after all.)
> 
> I agree.
> 
> While perl is readily available on Linux build hosts, I remember:
> - accommodating the python3 BaseTools requirements on my RHEL7 laptop,
> - (almost) bumping the NASM version so we could compile the VMGEXIT
> instruction for IA32,
> - the python virtual environment discussions for running CI locally.
> 
> So I agree that new build dependencies should be avoided as much as
> possible.
> 
> Thanks
> Laszlo
> 
> 
> 


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

* Re: [edk2-devel] [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
  2020-08-18 23:29                 ` Andrew Fish
@ 2020-08-19 16:33                   ` Liming Gao
  0 siblings, 0 replies; 42+ messages in thread
From: Liming Gao @ 2020-08-19 16:33 UTC (permalink / raw)
  To: devel@edk2.groups.io, afish@apple.com, spbrogan@outlook.com
  Cc: Kinney, Michael D, Wang, Jian J, Zurcher, Christopher J,
	Yao, Jiewen, Lu, XiaoyuX, Ard Biesheuvel

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

I think this is the separate tool task to support extra build steps in early build process. I suggest to submit another BZ to track it, and let tool experts evaluate the solution. Seemly, this support needs some time. If so, how handle this patch set? I prefer to review this patch set without the external dependency.

Thanks
Liming
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Andrew Fish via groups.io
Sent: 2020年8月19日 7:30
To: devel@edk2.groups.io; spbrogan@outlook.com
Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Zurcher, Christopher J <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: Re: [edk2-devel] [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64

Sean,

I agree it is reasonable to think hard about adding extra dependencies to building.

Seems Perl is very popular in Openssl:
/Volumes/Case/edk2(master)>find . -iname '*.pl' | wc -l
     283

Thanks,

Andrew Fish


On Aug 18, 2020, at 2:33 PM, Sean <spbrogan@outlook.com<mailto:spbrogan@outlook.com>> wrote:

Mike,

I am not technically a basetool maintainer but as an active user/dev in basetools, i would be opposed to bringing in perl as an edk2 dependency. Also introducing another language is counter to the goal of aligning on python and improving the python used within edk2.  From my perspective the openssl config case isn't strong enough to counter the above goal. In fact as you know we are trying to change the paradigm for Crypto/OpenSSL with the Crypto Driver (https://github.com/tianocore/edk2/tree/master/CryptoPkg/Driver) and BaseCryptLibOnProtocolPpi (https://github.com/tianocore/edk2/tree/master/CryptoPkg/Library/BaseCryptLibOnProtocolPpi) work so that everyday development doesn't need to compile openssl in their edk2 builds.

So I support leaving it as is which means if you have to change something in openssl config you deal with it and a special one off.

Just my 2 cents.

Thanks
Sean


On 8/18/2020 9:15 AM, Michael D Kinney wrote:

Jian,
I want the BaseTools maintainers to evaluate these build requirements.
We already have a number of tool dependencies.  Adding one more for perl
may be acceptable.
Mike

-----Original Message-----
From: Wang, Jian J <jian.j.wang@intel.com<mailto:jian.j.wang@intel.com>>
Sent: Monday, August 17, 2020 7:37 PM
To: Zurcher, Christopher J <christopher.j.zurcher@intel.com<mailto:christopher.j.zurcher@intel.com>>; Yao, Jiewen <jiewen.yao@intel.com<mailto:jiewen.yao@intel.com>>; Kinney, Michael D
<michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com>>; devel@edk2.groups.io<mailto:devel@edk2.groups.io>
Cc: Lu, XiaoyuX <xiaoyux.lu@intel.com<mailto:xiaoyux.lu@intel.com>>; Ard Biesheuvel <ard.biesheuvel@linaro.org<mailto:ard.biesheuvel@linaro.org>>
Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64

I agree with Christopher. Currently manual works are inevitable in openssl upgrade,
because perl script is used to automate part of code generation. It's hard to ask
Windows developers to install an extra interpreter like perl, considering it's not
popular in Windows environment.

Regards,
Jian


-----Original Message-----
From: Zurcher, Christopher J <christopher.j.zurcher@intel.com<mailto:christopher.j.zurcher@intel.com>>
Sent: Saturday, August 15, 2020 3:35 AM
To: Yao, Jiewen <jiewen.yao@intel.com<mailto:jiewen.yao@intel.com>>; Kinney, Michael D
<michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com>>; devel@edk2.groups.io<mailto:devel@edk2.groups.io>
Cc: Wang, Jian J <jian.j.wang@intel.com<mailto:jian.j.wang@intel.com>>; Lu, XiaoyuX <xiaoyux.lu@intel.com<mailto:xiaoyux.lu@intel.com>>;
Ard Biesheuvel <ard.biesheuvel@linaro.org<mailto:ard.biesheuvel@linaro.org>>
Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated
assembly files for X64

The current OpenSSL "UEFI" configuration depends on the OpenSSL build
happening in a Unix-like environment. For a Windows-based build, this must be
done in a wrapper such as Cygwin/git bash or WSL. Integrating the OpenSSL
config step into the build process is a non-trivial change.


That means, whenever we upgrade the openssl, we need manually
generate

them again.
Any step by step, or readme to tell us how to do that?

The process for generating these X64 files is virtually identical to the already-
existing maintainer process for OpensslLib, with only one additional argument
required to process_files.pl.

OpensslLib as it exists today in EDK2 already includes auto-generated files from
the Perl configure process. If we want to re-architect how we include OpenSSL
into EDK2, I think that should be done in a different patch set. Additionally, such
a large task might be a waste of time with the release of OpenSSL 3 happening
later this year. They are making changes to their build system, and I think that if
we are going to re-architect our side of it, we should wait until we are adopting
OpenSSL 3.

--
Christopher Zurcher


-----Original Message-----
From: Yao, Jiewen <jiewen.yao@intel.com<mailto:jiewen.yao@intel.com>>
Sent: Thursday, August 13, 2020 08:46
To: Kinney, Michael D <michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com>>; Zurcher, Christopher J
<christopher.j.zurcher@intel.com<mailto:christopher.j.zurcher@intel.com>>; devel@edk2.groups.io<mailto:devel@edk2.groups.io>
Cc: Wang, Jian J <jian.j.wang@intel.com<mailto:jian.j.wang@intel.com>>; Lu, XiaoyuX
<xiaoyux.lu@intel.com<mailto:xiaoyux.lu@intel.com>>;

Ard Biesheuvel <ard.biesheuvel@linaro.org<mailto:ard.biesheuvel@linaro.org>>
Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
generated

assembly files for X64

Thank you Mike to help on this.

I also believe that the best option is to integrate the auto-gen process in
base tool.




-----Original Message-----
From: Kinney, Michael D <michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com>>
Sent: Thursday, August 13, 2020 11:38 PM
To: Yao, Jiewen <jiewen.yao@intel.com<mailto:jiewen.yao@intel.com>>; Zurcher, Christopher J
<christopher.j.zurcher@intel.com<mailto:christopher.j.zurcher@intel.com>>; devel@edk2.groups.io<mailto:devel@edk2.groups.io>; Kinney, Michael
D

<michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com>>
Cc: Wang, Jian J <jian.j.wang@intel.com<mailto:jian.j.wang@intel.com>>; Lu, XiaoyuX
<xiaoyux.lu@intel.com<mailto:xiaoyux.lu@intel.com>>;

Ard Biesheuvel <ard.biesheuvel@linaro.org<mailto:ard.biesheuvel@linaro.org>>
Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
generated

assembly files for X64

Hi Jiewen,

For this use case, generating the files as part of the build process would
add

a dependency in pearl.

Based on other recent CryptoPkg changes and some being discussed in BZ, I
am

seeing more changes to the OpenSLL .pl configuration files, and I am
concerned

that based on platform requirements, we may need to build OpenSSL with
different .pl config file settings which would also add a pearl dependency
to the build.

So exploring what it would take to add the pearl dependency to the build
system

is worth exploring and if successful would eliminate the need to checkin
these

types of autogenerated files.  This would also reduce maintenance of the
auto-genererated files when EDK II moves to a new version of OpenSSL.

@Cristopher - Can you please share a branch that uses pearl to generate the
files
instead of checking them in?  I would like the BaseTools maintainers to
review

that and evaluate adding the pearl dependency.  Hopefully, we can make the
pearl dependency detectable so it is only required if the build requires
it.


Thanks,

Mike


-----Original Message-----
From: Yao, Jiewen <jiewen.yao@intel.com<mailto:jiewen.yao@intel.com>>
Sent: Thursday, August 13, 2020 8:25 AM
To: Zurcher, Christopher J <christopher.j.zurcher@intel.com<mailto:christopher.j.zurcher@intel.com>>;
devel@edk2.groups.io<mailto:devel@edk2.groups.io>

Cc: Wang, Jian J <jian.j.wang@intel.com<mailto:jian.j.wang@intel.com>>; Lu, XiaoyuX
<xiaoyux.lu@intel.com<mailto:xiaoyux.lu@intel.com>>; Kinney, Michael D

<michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com>>; Ard Biesheuvel <ard.biesheuvel@linaro.org<mailto:ard.biesheuvel@linaro.org>>
Subject: RE: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
generated assembly files for X64


+ Mike Kinney

I am not sure if it is a right way to check in auto-generated file.
That means, whenever we upgrade the openssl, we need manually
generate

them again.

Any step by step, or readme to tell us how to do that?

Mike, would you please double confirm what is the right way for auto-
generated file in EDKII?




-----Original Message-----
From: Zurcher, Christopher J <christopher.j.zurcher@intel.com<mailto:christopher.j.zurcher@intel.com>>
Sent: Tuesday, August 4, 2020 8:24 AM
To: devel@edk2.groups.io<mailto:devel@edk2.groups.io>
Cc: Yao, Jiewen <jiewen.yao@intel.com<mailto:jiewen.yao@intel.com>>; Wang, Jian J
<jian.j.wang@intel.com<mailto:jian.j.wang@intel.com>>;

Lu, XiaoyuX <xiaoyux.lu@intel.com<mailto:xiaoyux.lu@intel.com>>; Ard Biesheuvel
<ard.biesheuvel@linaro.org<mailto:ard.biesheuvel@linaro.org>>

Subject: [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-
generated

assembly files for X64

BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507

Adding the auto-generated assembly files for the X64 architecture.

Cc: Jiewen Yao <jiewen.yao@intel.com<mailto:jiewen.yao@intel.com>>
Cc: Jian J Wang <jian.j.wang@intel.com<mailto:jian.j.wang@intel.com>>
Cc: Xiaoyu Lu <xiaoyux.lu@intel.com<mailto:xiaoyux.lu@intel.com>>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org<mailto:ard.biesheuvel@linaro.org>>
Signed-off-by: Christopher J Zurcher <christopher.j.zurcher@intel.com<mailto:christopher.j.zurcher@intel.com>>
---
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-x86_64.nasm
|

732

+++
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-x86_64.nasm
|

1916 ++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
x86_64.nasm |

78 +
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm        |
5103

++++++++++++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm        |
1173

+++++
 CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-x86_64.nasm
|

1569 ++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-x86_64.nasm
|

3137

++++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm         |
2884

+++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm
|

3461 +++++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
|

3313

+++++++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
|

1938

++++++++
 CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm             |
491

++

 12 files changed, 25795 insertions(+)

diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
x86_64.nasm
new file mode 100644
index 0000000000..1a3ed1dd35
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-mb-
x86_64.nasm

@@ -0,0 +1,732 @@
+; WARNING: do not edit!

+; Generated from openssl/crypto/aes/asm/aesni-mb-x86_64.pl

+;

+; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
Reserved.


+;

+; Licensed under the OpenSSL license (the "License").  You may not use

+; this file except in compliance with the License.  You can obtain a
copy


+; in the file LICENSE in the source distribution or at

+; https://www.openssl.org/source/license.html

+

+default rel

+%define XMMWORD

+%define YMMWORD

+%define ZMMWORD

+section .text code align=64

+

+

+EXTERN  OPENSSL_ia32cap_P

+

+global  aesni_multi_cbc_encrypt

+

+ALIGN   32

+aesni_multi_cbc_encrypt:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_aesni_multi_cbc_encrypt:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+

+

+

+        mov     rax,rsp

+

+        push    rbx

+

+        push    rbp

+

+        push    r12

+

+        push    r13

+

+        push    r14

+

+        push    r15

+

+        lea     rsp,[((-168))+rsp]

+        movaps  XMMWORD[rsp],xmm6

+        movaps  XMMWORD[16+rsp],xmm7

+        movaps  XMMWORD[32+rsp],xmm8

+        movaps  XMMWORD[48+rsp],xmm9

+        movaps  XMMWORD[64+rsp],xmm10

+        movaps  XMMWORD[80+rsp],xmm11

+        movaps  XMMWORD[96+rsp],xmm12

+        movaps  XMMWORD[(-104)+rax],xmm13

+        movaps  XMMWORD[(-88)+rax],xmm14

+        movaps  XMMWORD[(-72)+rax],xmm15

+

+

+

+

+

+

+        sub     rsp,48

+        and     rsp,-64

+        mov     QWORD[16+rsp],rax

+

+

+$L$enc4x_body:

+        movdqu  xmm12,XMMWORD[rsi]

+        lea     rsi,[120+rsi]

+        lea     rdi,[80+rdi]

+

+$L$enc4x_loop_grande:

+        mov     DWORD[24+rsp],edx

+        xor     edx,edx

+        mov     ecx,DWORD[((-64))+rdi]

+        mov     r8,QWORD[((-80))+rdi]

+        cmp     ecx,edx

+        mov     r12,QWORD[((-72))+rdi]

+        cmovg   edx,ecx

+        test    ecx,ecx

+        movdqu  xmm2,XMMWORD[((-56))+rdi]

+        mov     DWORD[32+rsp],ecx

+        cmovle  r8,rsp

+        mov     ecx,DWORD[((-24))+rdi]

+        mov     r9,QWORD[((-40))+rdi]

+        cmp     ecx,edx

+        mov     r13,QWORD[((-32))+rdi]

+        cmovg   edx,ecx

+        test    ecx,ecx

+        movdqu  xmm3,XMMWORD[((-16))+rdi]

+        mov     DWORD[36+rsp],ecx

+        cmovle  r9,rsp

+        mov     ecx,DWORD[16+rdi]

+        mov     r10,QWORD[rdi]

+        cmp     ecx,edx

+        mov     r14,QWORD[8+rdi]

+        cmovg   edx,ecx

+        test    ecx,ecx

+        movdqu  xmm4,XMMWORD[24+rdi]

+        mov     DWORD[40+rsp],ecx

+        cmovle  r10,rsp

+        mov     ecx,DWORD[56+rdi]

+        mov     r11,QWORD[40+rdi]

+        cmp     ecx,edx

+        mov     r15,QWORD[48+rdi]

+        cmovg   edx,ecx

+        test    ecx,ecx

+        movdqu  xmm5,XMMWORD[64+rdi]

+        mov     DWORD[44+rsp],ecx

+        cmovle  r11,rsp

+        test    edx,edx

+        jz      NEAR $L$enc4x_done

+

+        movups  xmm1,XMMWORD[((16-120))+rsi]

+        pxor    xmm2,xmm12

+        movups  xmm0,XMMWORD[((32-120))+rsi]

+        pxor    xmm3,xmm12

+        mov     eax,DWORD[((240-120))+rsi]

+        pxor    xmm4,xmm12

+        movdqu  xmm6,XMMWORD[r8]

+        pxor    xmm5,xmm12

+        movdqu  xmm7,XMMWORD[r9]

+        pxor    xmm2,xmm6

+        movdqu  xmm8,XMMWORD[r10]

+        pxor    xmm3,xmm7

+        movdqu  xmm9,XMMWORD[r11]

+        pxor    xmm4,xmm8

+        pxor    xmm5,xmm9

+        movdqa  xmm10,XMMWORD[32+rsp]

+        xor     rbx,rbx

+        jmp     NEAR $L$oop_enc4x

+

+ALIGN   32

+$L$oop_enc4x:

+        add     rbx,16

+        lea     rbp,[16+rsp]

+        mov     ecx,1

+        sub     rbp,rbx

+

+DB      102,15,56,220,209

+        prefetcht0      [31+rbx*1+r8]

+        prefetcht0      [31+rbx*1+r9]

+DB      102,15,56,220,217

+        prefetcht0      [31+rbx*1+r10]

+        prefetcht0      [31+rbx*1+r10]

+DB      102,15,56,220,225

+DB      102,15,56,220,233

+        movups  xmm1,XMMWORD[((48-120))+rsi]

+        cmp     ecx,DWORD[32+rsp]

+DB      102,15,56,220,208

+DB      102,15,56,220,216

+DB      102,15,56,220,224

+        cmovge  r8,rbp

+        cmovg   r12,rbp

+DB      102,15,56,220,232

+        movups  xmm0,XMMWORD[((-56))+rsi]

+        cmp     ecx,DWORD[36+rsp]

+DB      102,15,56,220,209

+DB      102,15,56,220,217

+DB      102,15,56,220,225

+        cmovge  r9,rbp

+        cmovg   r13,rbp

+DB      102,15,56,220,233

+        movups  xmm1,XMMWORD[((-40))+rsi]

+        cmp     ecx,DWORD[40+rsp]

+DB      102,15,56,220,208

+DB      102,15,56,220,216

+DB      102,15,56,220,224

+        cmovge  r10,rbp

+        cmovg   r14,rbp

+DB      102,15,56,220,232

+        movups  xmm0,XMMWORD[((-24))+rsi]

+        cmp     ecx,DWORD[44+rsp]

+DB      102,15,56,220,209

+DB      102,15,56,220,217

+DB      102,15,56,220,225

+        cmovge  r11,rbp

+        cmovg   r15,rbp

+DB      102,15,56,220,233

+        movups  xmm1,XMMWORD[((-8))+rsi]

+        movdqa  xmm11,xmm10

+DB      102,15,56,220,208

+        prefetcht0      [15+rbx*1+r12]

+        prefetcht0      [15+rbx*1+r13]

+DB      102,15,56,220,216

+        prefetcht0      [15+rbx*1+r14]

+        prefetcht0      [15+rbx*1+r15]

+DB      102,15,56,220,224

+DB      102,15,56,220,232

+        movups  xmm0,XMMWORD[((128-120))+rsi]

+        pxor    xmm12,xmm12

+

+DB      102,15,56,220,209

+        pcmpgtd xmm11,xmm12

+        movdqu  xmm12,XMMWORD[((-120))+rsi]

+DB      102,15,56,220,217

+        paddd   xmm10,xmm11

+        movdqa  XMMWORD[32+rsp],xmm10

+DB      102,15,56,220,225

+DB      102,15,56,220,233

+        movups  xmm1,XMMWORD[((144-120))+rsi]

+

+        cmp     eax,11

+

+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[((160-120))+rsi]

+

+        jb      NEAR $L$enc4x_tail

+

+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[((176-120))+rsi]

+

+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[((192-120))+rsi]

+

+        je      NEAR $L$enc4x_tail

+

+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[((208-120))+rsi]

+

+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[((224-120))+rsi]

+        jmp     NEAR $L$enc4x_tail

+

+ALIGN   32

+$L$enc4x_tail:

+DB      102,15,56,220,209

+DB      102,15,56,220,217

+DB      102,15,56,220,225

+DB      102,15,56,220,233

+        movdqu  xmm6,XMMWORD[rbx*1+r8]

+        movdqu  xmm1,XMMWORD[((16-120))+rsi]

+

+DB      102,15,56,221,208

+        movdqu  xmm7,XMMWORD[rbx*1+r9]

+        pxor    xmm6,xmm12

+DB      102,15,56,221,216

+        movdqu  xmm8,XMMWORD[rbx*1+r10]

+        pxor    xmm7,xmm12

+DB      102,15,56,221,224

+        movdqu  xmm9,XMMWORD[rbx*1+r11]

+        pxor    xmm8,xmm12

+DB      102,15,56,221,232

+        movdqu  xmm0,XMMWORD[((32-120))+rsi]

+        pxor    xmm9,xmm12

+

+        movups  XMMWORD[(-16)+rbx*1+r12],xmm2

+        pxor    xmm2,xmm6

+        movups  XMMWORD[(-16)+rbx*1+r13],xmm3

+        pxor    xmm3,xmm7

+        movups  XMMWORD[(-16)+rbx*1+r14],xmm4

+        pxor    xmm4,xmm8

+        movups  XMMWORD[(-16)+rbx*1+r15],xmm5

+        pxor    xmm5,xmm9

+

+        dec     edx

+        jnz     NEAR $L$oop_enc4x

+

+        mov     rax,QWORD[16+rsp]

+

+        mov     edx,DWORD[24+rsp]

+

+

+

+

+

+

+

+

+

+

+        lea     rdi,[160+rdi]

+        dec     edx

+        jnz     NEAR $L$enc4x_loop_grande

+

+$L$enc4x_done:

+        movaps  xmm6,XMMWORD[((-216))+rax]

+        movaps  xmm7,XMMWORD[((-200))+rax]

+        movaps  xmm8,XMMWORD[((-184))+rax]

+        movaps  xmm9,XMMWORD[((-168))+rax]

+        movaps  xmm10,XMMWORD[((-152))+rax]

+        movaps  xmm11,XMMWORD[((-136))+rax]

+        movaps  xmm12,XMMWORD[((-120))+rax]

+

+

+

+        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$enc4x_epilogue:

+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue

+        mov     rsi,QWORD[16+rsp]

+        DB      0F3h,0C3h               ;repret

+

+$L$SEH_end_aesni_multi_cbc_encrypt:

+

+global  aesni_multi_cbc_decrypt

+

+ALIGN   32

+aesni_multi_cbc_decrypt:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_aesni_multi_cbc_decrypt:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+

+

+

+        mov     rax,rsp

+

+        push    rbx

+

+        push    rbp

+

+        push    r12

+

+        push    r13

+

+        push    r14

+

+        push    r15

+

+        lea     rsp,[((-168))+rsp]

+        movaps  XMMWORD[rsp],xmm6

+        movaps  XMMWORD[16+rsp],xmm7

+        movaps  XMMWORD[32+rsp],xmm8

+        movaps  XMMWORD[48+rsp],xmm9

+        movaps  XMMWORD[64+rsp],xmm10

+        movaps  XMMWORD[80+rsp],xmm11

+        movaps  XMMWORD[96+rsp],xmm12

+        movaps  XMMWORD[(-104)+rax],xmm13

+        movaps  XMMWORD[(-88)+rax],xmm14

+        movaps  XMMWORD[(-72)+rax],xmm15

+

+

+

+

+

+

+        sub     rsp,48

+        and     rsp,-64

+        mov     QWORD[16+rsp],rax

+

+

+$L$dec4x_body:

+        movdqu  xmm12,XMMWORD[rsi]

+        lea     rsi,[120+rsi]

+        lea     rdi,[80+rdi]

+

+$L$dec4x_loop_grande:

+        mov     DWORD[24+rsp],edx

+        xor     edx,edx

+        mov     ecx,DWORD[((-64))+rdi]

+        mov     r8,QWORD[((-80))+rdi]

+        cmp     ecx,edx

+        mov     r12,QWORD[((-72))+rdi]

+        cmovg   edx,ecx

+        test    ecx,ecx

+        movdqu  xmm6,XMMWORD[((-56))+rdi]

+        mov     DWORD[32+rsp],ecx

+        cmovle  r8,rsp

+        mov     ecx,DWORD[((-24))+rdi]

+        mov     r9,QWORD[((-40))+rdi]

+        cmp     ecx,edx

+        mov     r13,QWORD[((-32))+rdi]

+        cmovg   edx,ecx

+        test    ecx,ecx

+        movdqu  xmm7,XMMWORD[((-16))+rdi]

+        mov     DWORD[36+rsp],ecx

+        cmovle  r9,rsp

+        mov     ecx,DWORD[16+rdi]

+        mov     r10,QWORD[rdi]

+        cmp     ecx,edx

+        mov     r14,QWORD[8+rdi]

+        cmovg   edx,ecx

+        test    ecx,ecx

+        movdqu  xmm8,XMMWORD[24+rdi]

+        mov     DWORD[40+rsp],ecx

+        cmovle  r10,rsp

+        mov     ecx,DWORD[56+rdi]

+        mov     r11,QWORD[40+rdi]

+        cmp     ecx,edx

+        mov     r15,QWORD[48+rdi]

+        cmovg   edx,ecx

+        test    ecx,ecx

+        movdqu  xmm9,XMMWORD[64+rdi]

+        mov     DWORD[44+rsp],ecx

+        cmovle  r11,rsp

+        test    edx,edx

+        jz      NEAR $L$dec4x_done

+

+        movups  xmm1,XMMWORD[((16-120))+rsi]

+        movups  xmm0,XMMWORD[((32-120))+rsi]

+        mov     eax,DWORD[((240-120))+rsi]

+        movdqu  xmm2,XMMWORD[r8]

+        movdqu  xmm3,XMMWORD[r9]

+        pxor    xmm2,xmm12

+        movdqu  xmm4,XMMWORD[r10]

+        pxor    xmm3,xmm12

+        movdqu  xmm5,XMMWORD[r11]

+        pxor    xmm4,xmm12

+        pxor    xmm5,xmm12

+        movdqa  xmm10,XMMWORD[32+rsp]

+        xor     rbx,rbx

+        jmp     NEAR $L$oop_dec4x

+

+ALIGN   32

+$L$oop_dec4x:

+        add     rbx,16

+        lea     rbp,[16+rsp]

+        mov     ecx,1

+        sub     rbp,rbx

+

+DB      102,15,56,222,209

+        prefetcht0      [31+rbx*1+r8]

+        prefetcht0      [31+rbx*1+r9]

+DB      102,15,56,222,217

+        prefetcht0      [31+rbx*1+r10]

+        prefetcht0      [31+rbx*1+r11]

+DB      102,15,56,222,225

+DB      102,15,56,222,233

+        movups  xmm1,XMMWORD[((48-120))+rsi]

+        cmp     ecx,DWORD[32+rsp]

+DB      102,15,56,222,208

+DB      102,15,56,222,216

+DB      102,15,56,222,224

+        cmovge  r8,rbp

+        cmovg   r12,rbp

+DB      102,15,56,222,232

+        movups  xmm0,XMMWORD[((-56))+rsi]

+        cmp     ecx,DWORD[36+rsp]

+DB      102,15,56,222,209

+DB      102,15,56,222,217

+DB      102,15,56,222,225

+        cmovge  r9,rbp

+        cmovg   r13,rbp

+DB      102,15,56,222,233

+        movups  xmm1,XMMWORD[((-40))+rsi]

+        cmp     ecx,DWORD[40+rsp]

+DB      102,15,56,222,208

+DB      102,15,56,222,216

+DB      102,15,56,222,224

+        cmovge  r10,rbp

+        cmovg   r14,rbp

+DB      102,15,56,222,232

+        movups  xmm0,XMMWORD[((-24))+rsi]

+        cmp     ecx,DWORD[44+rsp]

+DB      102,15,56,222,209

+DB      102,15,56,222,217

+DB      102,15,56,222,225

+        cmovge  r11,rbp

+        cmovg   r15,rbp

+DB      102,15,56,222,233

+        movups  xmm1,XMMWORD[((-8))+rsi]

+        movdqa  xmm11,xmm10

+DB      102,15,56,222,208

+        prefetcht0      [15+rbx*1+r12]

+        prefetcht0      [15+rbx*1+r13]

+DB      102,15,56,222,216

+        prefetcht0      [15+rbx*1+r14]

+        prefetcht0      [15+rbx*1+r15]

+DB      102,15,56,222,224

+DB      102,15,56,222,232

+        movups  xmm0,XMMWORD[((128-120))+rsi]

+        pxor    xmm12,xmm12

+

+DB      102,15,56,222,209

+        pcmpgtd xmm11,xmm12

+        movdqu  xmm12,XMMWORD[((-120))+rsi]

+DB      102,15,56,222,217

+        paddd   xmm10,xmm11

+        movdqa  XMMWORD[32+rsp],xmm10

+DB      102,15,56,222,225

+DB      102,15,56,222,233

+        movups  xmm1,XMMWORD[((144-120))+rsi]

+

+        cmp     eax,11

+

+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[((160-120))+rsi]

+

+        jb      NEAR $L$dec4x_tail

+

+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[((176-120))+rsi]

+

+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[((192-120))+rsi]

+

+        je      NEAR $L$dec4x_tail

+

+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[((208-120))+rsi]

+

+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[((224-120))+rsi]

+        jmp     NEAR $L$dec4x_tail

+

+ALIGN   32

+$L$dec4x_tail:

+DB      102,15,56,222,209

+DB      102,15,56,222,217

+DB      102,15,56,222,225

+        pxor    xmm6,xmm0

+        pxor    xmm7,xmm0

+DB      102,15,56,222,233

+        movdqu  xmm1,XMMWORD[((16-120))+rsi]

+        pxor    xmm8,xmm0

+        pxor    xmm9,xmm0

+        movdqu  xmm0,XMMWORD[((32-120))+rsi]

+

+DB      102,15,56,223,214

+DB      102,15,56,223,223

+        movdqu  xmm6,XMMWORD[((-16))+rbx*1+r8]

+        movdqu  xmm7,XMMWORD[((-16))+rbx*1+r9]

+DB      102,65,15,56,223,224

+DB      102,65,15,56,223,233

+        movdqu  xmm8,XMMWORD[((-16))+rbx*1+r10]

+        movdqu  xmm9,XMMWORD[((-16))+rbx*1+r11]

+

+        movups  XMMWORD[(-16)+rbx*1+r12],xmm2

+        movdqu  xmm2,XMMWORD[rbx*1+r8]

+        movups  XMMWORD[(-16)+rbx*1+r13],xmm3

+        movdqu  xmm3,XMMWORD[rbx*1+r9]

+        pxor    xmm2,xmm12

+        movups  XMMWORD[(-16)+rbx*1+r14],xmm4

+        movdqu  xmm4,XMMWORD[rbx*1+r10]

+        pxor    xmm3,xmm12

+        movups  XMMWORD[(-16)+rbx*1+r15],xmm5

+        movdqu  xmm5,XMMWORD[rbx*1+r11]

+        pxor    xmm4,xmm12

+        pxor    xmm5,xmm12

+

+        dec     edx

+        jnz     NEAR $L$oop_dec4x

+

+        mov     rax,QWORD[16+rsp]

+

+        mov     edx,DWORD[24+rsp]

+

+        lea     rdi,[160+rdi]

+        dec     edx

+        jnz     NEAR $L$dec4x_loop_grande

+

+$L$dec4x_done:

+        movaps  xmm6,XMMWORD[((-216))+rax]

+        movaps  xmm7,XMMWORD[((-200))+rax]

+        movaps  xmm8,XMMWORD[((-184))+rax]

+        movaps  xmm9,XMMWORD[((-168))+rax]

+        movaps  xmm10,XMMWORD[((-152))+rax]

+        movaps  xmm11,XMMWORD[((-136))+rax]

+        movaps  xmm12,XMMWORD[((-120))+rax]

+

+

+

+        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$dec4x_epilogue:

+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue

+        mov     rsi,QWORD[16+rsp]

+        DB      0F3h,0C3h               ;repret

+

+$L$SEH_end_aesni_multi_cbc_decrypt:

+EXTERN  __imp_RtlVirtualUnwind

+

+ALIGN   16

+se_handler:

+        push    rsi

+        push    rdi

+        push    rbx

+        push    rbp

+        push    r12

+        push    r13

+        push    r14

+        push    r15

+        pushfq

+        sub     rsp,64

+

+        mov     rax,QWORD[120+r8]

+        mov     rbx,QWORD[248+r8]

+

+        mov     rsi,QWORD[8+r9]

+        mov     r11,QWORD[56+r9]

+

+        mov     r10d,DWORD[r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jb      NEAR $L$in_prologue

+

+        mov     rax,QWORD[152+r8]

+

+        mov     r10d,DWORD[4+r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jae     NEAR $L$in_prologue

+

+        mov     rax,QWORD[16+rax]

+

+        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     rsi,[((-56-160))+rax]

+        lea     rdi,[512+r8]

+        mov     ecx,20

+        DD      0xa548f3fc

+

+$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[40+r9]

+        mov     rsi,r8

+        mov     ecx,154

+        DD      0xa548f3fc

+

+        mov     rsi,r9

+        xor     rcx,rcx

+        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

+        popfq

+        pop     r15

+        pop     r14

+        pop     r13

+        pop     r12

+        pop     rbp

+        pop     rbx

+        pop     rdi

+        pop     rsi

+        DB      0F3h,0C3h               ;repret

+

+

+section .pdata rdata align=4

+ALIGN   4

+        DD      $L$SEH_begin_aesni_multi_cbc_encrypt wrt ..imagebase

+        DD      $L$SEH_end_aesni_multi_cbc_encrypt wrt ..imagebase

+        DD      $L$SEH_info_aesni_multi_cbc_encrypt wrt ..imagebase

+        DD      $L$SEH_begin_aesni_multi_cbc_decrypt wrt ..imagebase

+        DD      $L$SEH_end_aesni_multi_cbc_decrypt wrt ..imagebase

+        DD      $L$SEH_info_aesni_multi_cbc_decrypt wrt ..imagebase

+section .xdata rdata align=8

+ALIGN   8

+$L$SEH_info_aesni_multi_cbc_encrypt:

+DB      9,0,0,0

+        DD      se_handler wrt ..imagebase

+        DD      $L$enc4x_body wrt ..imagebase,$L$enc4x_epilogue
wrt ..imagebase

+$L$SEH_info_aesni_multi_cbc_decrypt:

+DB      9,0,0,0

+        DD      se_handler wrt ..imagebase

+        DD      $L$dec4x_body wrt ..imagebase,$L$dec4x_epilogue
wrt ..imagebase

diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
sha1-

x86_64.nasm
new file mode 100644
index 0000000000..f4fd9ca50d
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha1-
x86_64.nasm

@@ -0,0 +1,1916 @@
+; WARNING: do not edit!

+; Generated from openssl/crypto/aes/asm/aesni-sha1-x86_64.pl

+;

+; Copyright 2011-2020 The OpenSSL Project Authors. All Rights
Reserved.


+;

+; Licensed under the OpenSSL license (the "License").  You may not use

+; this file except in compliance with the License.  You can obtain a
copy


+; in the file LICENSE in the source distribution or at

+; https://www.openssl.org/source/license.html

+

+default rel

+%define XMMWORD

+%define YMMWORD

+%define ZMMWORD

+section .text code align=64

+

+EXTERN  OPENSSL_ia32cap_P

+

+global  aesni_cbc_sha1_enc

+

+ALIGN   32

+aesni_cbc_sha1_enc:

+

+

+        mov     r10d,DWORD[((OPENSSL_ia32cap_P+0))]

+        mov     r11,QWORD[((OPENSSL_ia32cap_P+4))]

+        bt      r11,61

+        jc      NEAR aesni_cbc_sha1_enc_shaext

+        jmp     NEAR aesni_cbc_sha1_enc_ssse3

+        DB      0F3h,0C3h               ;repret

+

+

+

+ALIGN   32

+aesni_cbc_sha1_enc_ssse3:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_aesni_cbc_sha1_enc_ssse3:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+        mov     rcx,r9

+        mov     r8,QWORD[40+rsp]

+        mov     r9,QWORD[48+rsp]

+

+

+

+        mov     r10,QWORD[56+rsp]

+

+

+        push    rbx

+

+        push    rbp

+

+        push    r12

+

+        push    r13

+

+        push    r14

+

+        push    r15

+

+        lea     rsp,[((-264))+rsp]

+

+

+

+        movaps  XMMWORD[(96+0)+rsp],xmm6

+        movaps  XMMWORD[(96+16)+rsp],xmm7

+        movaps  XMMWORD[(96+32)+rsp],xmm8

+        movaps  XMMWORD[(96+48)+rsp],xmm9

+        movaps  XMMWORD[(96+64)+rsp],xmm10

+        movaps  XMMWORD[(96+80)+rsp],xmm11

+        movaps  XMMWORD[(96+96)+rsp],xmm12

+        movaps  XMMWORD[(96+112)+rsp],xmm13

+        movaps  XMMWORD[(96+128)+rsp],xmm14

+        movaps  XMMWORD[(96+144)+rsp],xmm15

+$L$prologue_ssse3:

+        mov     r12,rdi

+        mov     r13,rsi

+        mov     r14,rdx

+        lea     r15,[112+rcx]

+        movdqu  xmm2,XMMWORD[r8]

+        mov     QWORD[88+rsp],r8

+        shl     r14,6

+        sub     r13,r12

+        mov     r8d,DWORD[((240-112))+r15]

+        add     r14,r10

+

+        lea     r11,[K_XX_XX]

+        mov     eax,DWORD[r9]

+        mov     ebx,DWORD[4+r9]

+        mov     ecx,DWORD[8+r9]

+        mov     edx,DWORD[12+r9]

+        mov     esi,ebx

+        mov     ebp,DWORD[16+r9]

+        mov     edi,ecx

+        xor     edi,edx

+        and     esi,edi

+

+        movdqa  xmm3,XMMWORD[64+r11]

+        movdqa  xmm13,XMMWORD[r11]

+        movdqu  xmm4,XMMWORD[r10]

+        movdqu  xmm5,XMMWORD[16+r10]

+        movdqu  xmm6,XMMWORD[32+r10]

+        movdqu  xmm7,XMMWORD[48+r10]

+DB      102,15,56,0,227

+DB      102,15,56,0,235

+DB      102,15,56,0,243

+        add     r10,64

+        paddd   xmm4,xmm13

+DB      102,15,56,0,251

+        paddd   xmm5,xmm13

+        paddd   xmm6,xmm13

+        movdqa  XMMWORD[rsp],xmm4

+        psubd   xmm4,xmm13

+        movdqa  XMMWORD[16+rsp],xmm5

+        psubd   xmm5,xmm13

+        movdqa  XMMWORD[32+rsp],xmm6

+        psubd   xmm6,xmm13

+        movups  xmm15,XMMWORD[((-112))+r15]

+        movups  xmm0,XMMWORD[((16-112))+r15]

+        jmp     NEAR $L$oop_ssse3

+ALIGN   32

+$L$oop_ssse3:

+        ror     ebx,2

+        movups  xmm14,XMMWORD[r12]

+        xorps   xmm14,xmm15

+        xorps   xmm2,xmm14

+        movups  xmm1,XMMWORD[((-80))+r15]

+DB      102,15,56,220,208

+        pshufd  xmm8,xmm4,238

+        xor     esi,edx

+        movdqa  xmm12,xmm7

+        paddd   xmm13,xmm7

+        mov     edi,eax

+        add     ebp,DWORD[rsp]

+        punpcklqdq      xmm8,xmm5

+        xor     ebx,ecx

+        rol     eax,5

+        add     ebp,esi

+        psrldq  xmm12,4

+        and     edi,ebx

+        xor     ebx,ecx

+        pxor    xmm8,xmm4

+        add     ebp,eax

+        ror     eax,7

+        pxor    xmm12,xmm6

+        xor     edi,ecx

+        mov     esi,ebp

+        add     edx,DWORD[4+rsp]

+        pxor    xmm8,xmm12

+        xor     eax,ebx

+        rol     ebp,5

+        movdqa  XMMWORD[48+rsp],xmm13

+        add     edx,edi

+        movups  xmm0,XMMWORD[((-64))+r15]

+DB      102,15,56,220,209

+        and     esi,eax

+        movdqa  xmm3,xmm8

+        xor     eax,ebx

+        add     edx,ebp

+        ror     ebp,7

+        movdqa  xmm12,xmm8

+        xor     esi,ebx

+        pslldq  xmm3,12

+        paddd   xmm8,xmm8

+        mov     edi,edx

+        add     ecx,DWORD[8+rsp]

+        psrld   xmm12,31

+        xor     ebp,eax

+        rol     edx,5

+        add     ecx,esi

+        movdqa  xmm13,xmm3

+        and     edi,ebp

+        xor     ebp,eax

+        psrld   xmm3,30

+        add     ecx,edx

+        ror     edx,7

+        por     xmm8,xmm12

+        xor     edi,eax

+        mov     esi,ecx

+        add     ebx,DWORD[12+rsp]

+        movups  xmm1,XMMWORD[((-48))+r15]

+DB      102,15,56,220,208

+        pslld   xmm13,2

+        pxor    xmm8,xmm3

+        xor     edx,ebp

+        movdqa  xmm3,XMMWORD[r11]

+        rol     ecx,5

+        add     ebx,edi

+        and     esi,edx

+        pxor    xmm8,xmm13

+        xor     edx,ebp

+        add     ebx,ecx

+        ror     ecx,7

+        pshufd  xmm9,xmm5,238

+        xor     esi,ebp

+        movdqa  xmm13,xmm8

+        paddd   xmm3,xmm8

+        mov     edi,ebx

+        add     eax,DWORD[16+rsp]

+        punpcklqdq      xmm9,xmm6

+        xor     ecx,edx

+        rol     ebx,5

+        add     eax,esi

+        psrldq  xmm13,4

+        and     edi,ecx

+        xor     ecx,edx

+        pxor    xmm9,xmm5

+        add     eax,ebx

+        ror     ebx,7

+        movups  xmm0,XMMWORD[((-32))+r15]

+DB      102,15,56,220,209

+        pxor    xmm13,xmm7

+        xor     edi,edx

+        mov     esi,eax

+        add     ebp,DWORD[20+rsp]

+        pxor    xmm9,xmm13

+        xor     ebx,ecx

+        rol     eax,5

+        movdqa  XMMWORD[rsp],xmm3

+        add     ebp,edi

+        and     esi,ebx

+        movdqa  xmm12,xmm9

+        xor     ebx,ecx

+        add     ebp,eax

+        ror     eax,7

+        movdqa  xmm13,xmm9

+        xor     esi,ecx

+        pslldq  xmm12,12

+        paddd   xmm9,xmm9

+        mov     edi,ebp

+        add     edx,DWORD[24+rsp]

+        psrld   xmm13,31

+        xor     eax,ebx

+        rol     ebp,5

+        add     edx,esi

+        movups  xmm1,XMMWORD[((-16))+r15]

+DB      102,15,56,220,208

+        movdqa  xmm3,xmm12

+        and     edi,eax

+        xor     eax,ebx

+        psrld   xmm12,30

+        add     edx,ebp

+        ror     ebp,7

+        por     xmm9,xmm13

+        xor     edi,ebx

+        mov     esi,edx

+        add     ecx,DWORD[28+rsp]

+        pslld   xmm3,2

+        pxor    xmm9,xmm12

+        xor     ebp,eax

+        movdqa  xmm12,XMMWORD[16+r11]

+        rol     edx,5

+        add     ecx,edi

+        and     esi,ebp

+        pxor    xmm9,xmm3

+        xor     ebp,eax

+        add     ecx,edx

+        ror     edx,7

+        pshufd  xmm10,xmm6,238

+        xor     esi,eax

+        movdqa  xmm3,xmm9

+        paddd   xmm12,xmm9

+        mov     edi,ecx

+        add     ebx,DWORD[32+rsp]

+        movups  xmm0,XMMWORD[r15]

+DB      102,15,56,220,209

+        punpcklqdq      xmm10,xmm7

+        xor     edx,ebp

+        rol     ecx,5

+        add     ebx,esi

+        psrldq  xmm3,4

+        and     edi,edx

+        xor     edx,ebp

+        pxor    xmm10,xmm6

+        add     ebx,ecx

+        ror     ecx,7

+        pxor    xmm3,xmm8

+        xor     edi,ebp

+        mov     esi,ebx

+        add     eax,DWORD[36+rsp]

+        pxor    xmm10,xmm3

+        xor     ecx,edx

+        rol     ebx,5

+        movdqa  XMMWORD[16+rsp],xmm12

+        add     eax,edi

+        and     esi,ecx

+        movdqa  xmm13,xmm10

+        xor     ecx,edx

+        add     eax,ebx

+        ror     ebx,7

+        movups  xmm1,XMMWORD[16+r15]

+DB      102,15,56,220,208

+        movdqa  xmm3,xmm10

+        xor     esi,edx

+        pslldq  xmm13,12

+        paddd   xmm10,xmm10

+        mov     edi,eax

+        add     ebp,DWORD[40+rsp]

+        psrld   xmm3,31

+        xor     ebx,ecx

+        rol     eax,5

+        add     ebp,esi

+        movdqa  xmm12,xmm13

+        and     edi,ebx

+        xor     ebx,ecx

+        psrld   xmm13,30

+        add     ebp,eax

+        ror     eax,7

+        por     xmm10,xmm3

+        xor     edi,ecx

+        mov     esi,ebp

+        add     edx,DWORD[44+rsp]

+        pslld   xmm12,2

+        pxor    xmm10,xmm13

+        xor     eax,ebx

+        movdqa  xmm13,XMMWORD[16+r11]

+        rol     ebp,5

+        add     edx,edi

+        movups  xmm0,XMMWORD[32+r15]

+DB      102,15,56,220,209

+        and     esi,eax

+        pxor    xmm10,xmm12

+        xor     eax,ebx

+        add     edx,ebp

+        ror     ebp,7

+        pshufd  xmm11,xmm7,238

+        xor     esi,ebx

+        movdqa  xmm12,xmm10

+        paddd   xmm13,xmm10

+        mov     edi,edx

+        add     ecx,DWORD[48+rsp]

+        punpcklqdq      xmm11,xmm8

+        xor     ebp,eax

+        rol     edx,5

+        add     ecx,esi

+        psrldq  xmm12,4

+        and     edi,ebp

+        xor     ebp,eax

+        pxor    xmm11,xmm7

+        add     ecx,edx

+        ror     edx,7

+        pxor    xmm12,xmm9

+        xor     edi,eax

+        mov     esi,ecx

+        add     ebx,DWORD[52+rsp]

+        movups  xmm1,XMMWORD[48+r15]

+DB      102,15,56,220,208

+        pxor    xmm11,xmm12

+        xor     edx,ebp

+        rol     ecx,5

+        movdqa  XMMWORD[32+rsp],xmm13

+        add     ebx,edi

+        and     esi,edx

+        movdqa  xmm3,xmm11

+        xor     edx,ebp

+        add     ebx,ecx

+        ror     ecx,7

+        movdqa  xmm12,xmm11

+        xor     esi,ebp

+        pslldq  xmm3,12

+        paddd   xmm11,xmm11

+        mov     edi,ebx

+        add     eax,DWORD[56+rsp]

+        psrld   xmm12,31

+        xor     ecx,edx

+        rol     ebx,5

+        add     eax,esi

+        movdqa  xmm13,xmm3

+        and     edi,ecx

+        xor     ecx,edx

+        psrld   xmm3,30

+        add     eax,ebx

+        ror     ebx,7

+        cmp     r8d,11

+        jb      NEAR $L$aesenclast1

+        movups  xmm0,XMMWORD[64+r15]

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[80+r15]

+DB      102,15,56,220,208

+        je      NEAR $L$aesenclast1

+        movups  xmm0,XMMWORD[96+r15]

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[112+r15]

+DB      102,15,56,220,208

+$L$aesenclast1:

+DB      102,15,56,221,209

+        movups  xmm0,XMMWORD[((16-112))+r15]

+        por     xmm11,xmm12

+        xor     edi,edx

+        mov     esi,eax

+        add     ebp,DWORD[60+rsp]

+        pslld   xmm13,2

+        pxor    xmm11,xmm3

+        xor     ebx,ecx

+        movdqa  xmm3,XMMWORD[16+r11]

+        rol     eax,5

+        add     ebp,edi

+        and     esi,ebx

+        pxor    xmm11,xmm13

+        pshufd  xmm13,xmm10,238

+        xor     ebx,ecx

+        add     ebp,eax

+        ror     eax,7

+        pxor    xmm4,xmm8

+        xor     esi,ecx

+        mov     edi,ebp

+        add     edx,DWORD[rsp]

+        punpcklqdq      xmm13,xmm11

+        xor     eax,ebx

+        rol     ebp,5

+        pxor    xmm4,xmm5

+        add     edx,esi

+        movups  xmm14,XMMWORD[16+r12]

+        xorps   xmm14,xmm15

+        movups  XMMWORD[r13*1+r12],xmm2

+        xorps   xmm2,xmm14

+        movups  xmm1,XMMWORD[((-80))+r15]

+DB      102,15,56,220,208

+        and     edi,eax

+        movdqa  xmm12,xmm3

+        xor     eax,ebx

+        paddd   xmm3,xmm11

+        add     edx,ebp

+        pxor    xmm4,xmm13

+        ror     ebp,7

+        xor     edi,ebx

+        mov     esi,edx

+        add     ecx,DWORD[4+rsp]

+        movdqa  xmm13,xmm4

+        xor     ebp,eax

+        rol     edx,5

+        movdqa  XMMWORD[48+rsp],xmm3

+        add     ecx,edi

+        and     esi,ebp

+        xor     ebp,eax

+        pslld   xmm4,2

+        add     ecx,edx

+        ror     edx,7

+        psrld   xmm13,30

+        xor     esi,eax

+        mov     edi,ecx

+        add     ebx,DWORD[8+rsp]

+        movups  xmm0,XMMWORD[((-64))+r15]

+DB      102,15,56,220,209

+        por     xmm4,xmm13

+        xor     edx,ebp

+        rol     ecx,5

+        pshufd  xmm3,xmm11,238

+        add     ebx,esi

+        and     edi,edx

+        xor     edx,ebp

+        add     ebx,ecx

+        add     eax,DWORD[12+rsp]

+        xor     edi,ebp

+        mov     esi,ebx

+        rol     ebx,5

+        add     eax,edi

+        xor     esi,edx

+        ror     ecx,7

+        add     eax,ebx

+        pxor    xmm5,xmm9

+        add     ebp,DWORD[16+rsp]

+        movups  xmm1,XMMWORD[((-48))+r15]

+DB      102,15,56,220,208

+        xor     esi,ecx

+        punpcklqdq      xmm3,xmm4

+        mov     edi,eax

+        rol     eax,5

+        pxor    xmm5,xmm6

+        add     ebp,esi

+        xor     edi,ecx

+        movdqa  xmm13,xmm12

+        ror     ebx,7

+        paddd   xmm12,xmm4

+        add     ebp,eax

+        pxor    xmm5,xmm3

+        add     edx,DWORD[20+rsp]

+        xor     edi,ebx

+        mov     esi,ebp

+        rol     ebp,5

+        movdqa  xmm3,xmm5

+        add     edx,edi

+        xor     esi,ebx

+        movdqa  XMMWORD[rsp],xmm12

+        ror     eax,7

+        add     edx,ebp

+        add     ecx,DWORD[24+rsp]

+        pslld   xmm5,2

+        xor     esi,eax

+        mov     edi,edx

+        psrld   xmm3,30

+        rol     edx,5

+        add     ecx,esi

+        movups  xmm0,XMMWORD[((-32))+r15]

+DB      102,15,56,220,209

+        xor     edi,eax

+        ror     ebp,7

+        por     xmm5,xmm3

+        add     ecx,edx

+        add     ebx,DWORD[28+rsp]

+        pshufd  xmm12,xmm4,238

+        xor     edi,ebp

+        mov     esi,ecx

+        rol     ecx,5

+        add     ebx,edi

+        xor     esi,ebp

+        ror     edx,7

+        add     ebx,ecx

+        pxor    xmm6,xmm10

+        add     eax,DWORD[32+rsp]

+        xor     esi,edx

+        punpcklqdq      xmm12,xmm5

+        mov     edi,ebx

+        rol     ebx,5

+        pxor    xmm6,xmm7

+        add     eax,esi

+        xor     edi,edx

+        movdqa  xmm3,XMMWORD[32+r11]

+        ror     ecx,7

+        paddd   xmm13,xmm5

+        add     eax,ebx

+        pxor    xmm6,xmm12

+        add     ebp,DWORD[36+rsp]

+        movups  xmm1,XMMWORD[((-16))+r15]

+DB      102,15,56,220,208

+        xor     edi,ecx

+        mov     esi,eax

+        rol     eax,5

+        movdqa  xmm12,xmm6

+        add     ebp,edi

+        xor     esi,ecx

+        movdqa  XMMWORD[16+rsp],xmm13

+        ror     ebx,7

+        add     ebp,eax

+        add     edx,DWORD[40+rsp]

+        pslld   xmm6,2

+        xor     esi,ebx

+        mov     edi,ebp

+        psrld   xmm12,30

+        rol     ebp,5

+        add     edx,esi

+        xor     edi,ebx

+        ror     eax,7

+        por     xmm6,xmm12

+        add     edx,ebp

+        add     ecx,DWORD[44+rsp]

+        pshufd  xmm13,xmm5,238

+        xor     edi,eax

+        mov     esi,edx

+        rol     edx,5

+        add     ecx,edi

+        movups  xmm0,XMMWORD[r15]

+DB      102,15,56,220,209

+        xor     esi,eax

+        ror     ebp,7

+        add     ecx,edx

+        pxor    xmm7,xmm11

+        add     ebx,DWORD[48+rsp]

+        xor     esi,ebp

+        punpcklqdq      xmm13,xmm6

+        mov     edi,ecx

+        rol     ecx,5

+        pxor    xmm7,xmm8

+        add     ebx,esi

+        xor     edi,ebp

+        movdqa  xmm12,xmm3

+        ror     edx,7

+        paddd   xmm3,xmm6

+        add     ebx,ecx

+        pxor    xmm7,xmm13

+        add     eax,DWORD[52+rsp]

+        xor     edi,edx

+        mov     esi,ebx

+        rol     ebx,5

+        movdqa  xmm13,xmm7

+        add     eax,edi

+        xor     esi,edx

+        movdqa  XMMWORD[32+rsp],xmm3

+        ror     ecx,7

+        add     eax,ebx

+        add     ebp,DWORD[56+rsp]

+        movups  xmm1,XMMWORD[16+r15]

+DB      102,15,56,220,208

+        pslld   xmm7,2

+        xor     esi,ecx

+        mov     edi,eax

+        psrld   xmm13,30

+        rol     eax,5

+        add     ebp,esi

+        xor     edi,ecx

+        ror     ebx,7

+        por     xmm7,xmm13

+        add     ebp,eax

+        add     edx,DWORD[60+rsp]

+        pshufd  xmm3,xmm6,238

+        xor     edi,ebx

+        mov     esi,ebp

+        rol     ebp,5

+        add     edx,edi

+        xor     esi,ebx

+        ror     eax,7

+        add     edx,ebp

+        pxor    xmm8,xmm4

+        add     ecx,DWORD[rsp]

+        xor     esi,eax

+        punpcklqdq      xmm3,xmm7

+        mov     edi,edx

+        rol     edx,5

+        pxor    xmm8,xmm9

+        add     ecx,esi

+        movups  xmm0,XMMWORD[32+r15]

+DB      102,15,56,220,209

+        xor     edi,eax

+        movdqa  xmm13,xmm12

+        ror     ebp,7

+        paddd   xmm12,xmm7

+        add     ecx,edx

+        pxor    xmm8,xmm3

+        add     ebx,DWORD[4+rsp]

+        xor     edi,ebp

+        mov     esi,ecx

+        rol     ecx,5

+        movdqa  xmm3,xmm8

+        add     ebx,edi

+        xor     esi,ebp

+        movdqa  XMMWORD[48+rsp],xmm12

+        ror     edx,7

+        add     ebx,ecx

+        add     eax,DWORD[8+rsp]

+        pslld   xmm8,2

+        xor     esi,edx

+        mov     edi,ebx

+        psrld   xmm3,30

+        rol     ebx,5

+        add     eax,esi

+        xor     edi,edx

+        ror     ecx,7

+        por     xmm8,xmm3

+        add     eax,ebx

+        add     ebp,DWORD[12+rsp]

+        movups  xmm1,XMMWORD[48+r15]

+DB      102,15,56,220,208

+        pshufd  xmm12,xmm7,238

+        xor     edi,ecx

+        mov     esi,eax

+        rol     eax,5

+        add     ebp,edi

+        xor     esi,ecx

+        ror     ebx,7

+        add     ebp,eax

+        pxor    xmm9,xmm5

+        add     edx,DWORD[16+rsp]

+        xor     esi,ebx

+        punpcklqdq      xmm12,xmm8

+        mov     edi,ebp

+        rol     ebp,5

+        pxor    xmm9,xmm10

+        add     edx,esi

+        xor     edi,ebx

+        movdqa  xmm3,xmm13

+        ror     eax,7

+        paddd   xmm13,xmm8

+        add     edx,ebp

+        pxor    xmm9,xmm12

+        add     ecx,DWORD[20+rsp]

+        xor     edi,eax

+        mov     esi,edx

+        rol     edx,5

+        movdqa  xmm12,xmm9

+        add     ecx,edi

+        cmp     r8d,11

+        jb      NEAR $L$aesenclast2

+        movups  xmm0,XMMWORD[64+r15]

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[80+r15]

+DB      102,15,56,220,208

+        je      NEAR $L$aesenclast2

+        movups  xmm0,XMMWORD[96+r15]

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[112+r15]

+DB      102,15,56,220,208

+$L$aesenclast2:

+DB      102,15,56,221,209

+        movups  xmm0,XMMWORD[((16-112))+r15]

+        xor     esi,eax

+        movdqa  XMMWORD[rsp],xmm13

+        ror     ebp,7

+        add     ecx,edx

+        add     ebx,DWORD[24+rsp]

+        pslld   xmm9,2

+        xor     esi,ebp

+        mov     edi,ecx

+        psrld   xmm12,30

+        rol     ecx,5

+        add     ebx,esi

+        xor     edi,ebp

+        ror     edx,7

+        por     xmm9,xmm12

+        add     ebx,ecx

+        add     eax,DWORD[28+rsp]

+        pshufd  xmm13,xmm8,238

+        ror     ecx,7

+        mov     esi,ebx

+        xor     edi,edx

+        rol     ebx,5

+        add     eax,edi

+        xor     esi,ecx

+        xor     ecx,edx

+        add     eax,ebx

+        pxor    xmm10,xmm6

+        add     ebp,DWORD[32+rsp]

+        movups  xmm14,XMMWORD[32+r12]

+        xorps   xmm14,xmm15

+        movups  XMMWORD[16+r12*1+r13],xmm2

+        xorps   xmm2,xmm14

+        movups  xmm1,XMMWORD[((-80))+r15]

+DB      102,15,56,220,208

+        and     esi,ecx

+        xor     ecx,edx

+        ror     ebx,7

+        punpcklqdq      xmm13,xmm9

+        mov     edi,eax

+        xor     esi,ecx

+        pxor    xmm10,xmm11

+        rol     eax,5

+        add     ebp,esi

+        movdqa  xmm12,xmm3

+        xor     edi,ebx

+        paddd   xmm3,xmm9

+        xor     ebx,ecx

+        pxor    xmm10,xmm13

+        add     ebp,eax

+        add     edx,DWORD[36+rsp]

+        and     edi,ebx

+        xor     ebx,ecx

+        ror     eax,7

+        movdqa  xmm13,xmm10

+        mov     esi,ebp

+        xor     edi,ebx

+        movdqa  XMMWORD[16+rsp],xmm3

+        rol     ebp,5

+        add     edx,edi

+        movups  xmm0,XMMWORD[((-64))+r15]

+DB      102,15,56,220,209

+        xor     esi,eax

+        pslld   xmm10,2

+        xor     eax,ebx

+        add     edx,ebp

+        psrld   xmm13,30

+        add     ecx,DWORD[40+rsp]

+        and     esi,eax

+        xor     eax,ebx

+        por     xmm10,xmm13

+        ror     ebp,7

+        mov     edi,edx

+        xor     esi,eax

+        rol     edx,5

+        pshufd  xmm3,xmm9,238

+        add     ecx,esi

+        xor     edi,ebp

+        xor     ebp,eax

+        add     ecx,edx

+        add     ebx,DWORD[44+rsp]

+        and     edi,ebp

+        xor     ebp,eax

+        ror     edx,7

+        movups  xmm1,XMMWORD[((-48))+r15]

+DB      102,15,56,220,208

+        mov     esi,ecx

+        xor     edi,ebp

+        rol     ecx,5

+        add     ebx,edi

+        xor     esi,edx

+        xor     edx,ebp

+        add     ebx,ecx

+        pxor    xmm11,xmm7

+        add     eax,DWORD[48+rsp]

+        and     esi,edx

+        xor     edx,ebp

+        ror     ecx,7

+        punpcklqdq      xmm3,xmm10

+        mov     edi,ebx

+        xor     esi,edx

+        pxor    xmm11,xmm4

+        rol     ebx,5

+        add     eax,esi

+        movdqa  xmm13,XMMWORD[48+r11]

+        xor     edi,ecx

+        paddd   xmm12,xmm10

+        xor     ecx,edx

+        pxor    xmm11,xmm3

+        add     eax,ebx

+        add     ebp,DWORD[52+rsp]

+        movups  xmm0,XMMWORD[((-32))+r15]

+DB      102,15,56,220,209

+        and     edi,ecx

+        xor     ecx,edx

+        ror     ebx,7

+        movdqa  xmm3,xmm11

+        mov     esi,eax

+        xor     edi,ecx

+        movdqa  XMMWORD[32+rsp],xmm12

+        rol     eax,5

+        add     ebp,edi

+        xor     esi,ebx

+        pslld   xmm11,2

+        xor     ebx,ecx

+        add     ebp,eax

+        psrld   xmm3,30

+        add     edx,DWORD[56+rsp]

+        and     esi,ebx

+        xor     ebx,ecx

+        por     xmm11,xmm3

+        ror     eax,7

+        mov     edi,ebp

+        xor     esi,ebx

+        rol     ebp,5

+        pshufd  xmm12,xmm10,238

+        add     edx,esi

+        movups  xmm1,XMMWORD[((-16))+r15]

+DB      102,15,56,220,208

+        xor     edi,eax

+        xor     eax,ebx

+        add     edx,ebp

+        add     ecx,DWORD[60+rsp]

+        and     edi,eax

+        xor     eax,ebx

+        ror     ebp,7

+        mov     esi,edx

+        xor     edi,eax

+        rol     edx,5

+        add     ecx,edi

+        xor     esi,ebp

+        xor     ebp,eax

+        add     ecx,edx

+        pxor    xmm4,xmm8

+        add     ebx,DWORD[rsp]

+        and     esi,ebp

+        xor     ebp,eax

+        ror     edx,7

+        movups  xmm0,XMMWORD[r15]

+DB      102,15,56,220,209

+        punpcklqdq      xmm12,xmm11

+        mov     edi,ecx

+        xor     esi,ebp

+        pxor    xmm4,xmm5

+        rol     ecx,5

+        add     ebx,esi

+        movdqa  xmm3,xmm13

+        xor     edi,edx

+        paddd   xmm13,xmm11

+        xor     edx,ebp

+        pxor    xmm4,xmm12

+        add     ebx,ecx

+        add     eax,DWORD[4+rsp]

+        and     edi,edx

+        xor     edx,ebp

+        ror     ecx,7

+        movdqa  xmm12,xmm4

+        mov     esi,ebx

+        xor     edi,edx

+        movdqa  XMMWORD[48+rsp],xmm13

+        rol     ebx,5

+        add     eax,edi

+        xor     esi,ecx

+        pslld   xmm4,2

+        xor     ecx,edx

+        add     eax,ebx

+        psrld   xmm12,30

+        add     ebp,DWORD[8+rsp]

+        movups  xmm1,XMMWORD[16+r15]

+DB      102,15,56,220,208

+        and     esi,ecx

+        xor     ecx,edx

+        por     xmm4,xmm12

+        ror     ebx,7

+        mov     edi,eax

+        xor     esi,ecx

+        rol     eax,5

+        pshufd  xmm13,xmm11,238

+        add     ebp,esi

+        xor     edi,ebx

+        xor     ebx,ecx

+        add     ebp,eax

+        add     edx,DWORD[12+rsp]

+        and     edi,ebx

+        xor     ebx,ecx

+        ror     eax,7

+        mov     esi,ebp

+        xor     edi,ebx

+        rol     ebp,5

+        add     edx,edi

+        movups  xmm0,XMMWORD[32+r15]

+DB      102,15,56,220,209

+        xor     esi,eax

+        xor     eax,ebx

+        add     edx,ebp

+        pxor    xmm5,xmm9

+        add     ecx,DWORD[16+rsp]

+        and     esi,eax

+        xor     eax,ebx

+        ror     ebp,7

+        punpcklqdq      xmm13,xmm4

+        mov     edi,edx

+        xor     esi,eax

+        pxor    xmm5,xmm6

+        rol     edx,5

+        add     ecx,esi

+        movdqa  xmm12,xmm3

+        xor     edi,ebp

+        paddd   xmm3,xmm4

+        xor     ebp,eax

+        pxor    xmm5,xmm13

+        add     ecx,edx

+        add     ebx,DWORD[20+rsp]

+        and     edi,ebp

+        xor     ebp,eax

+        ror     edx,7

+        movups  xmm1,XMMWORD[48+r15]

+DB      102,15,56,220,208

+        movdqa  xmm13,xmm5

+        mov     esi,ecx

+        xor     edi,ebp

+        movdqa  XMMWORD[rsp],xmm3

+        rol     ecx,5

+        add     ebx,edi

+        xor     esi,edx

+        pslld   xmm5,2

+        xor     edx,ebp

+        add     ebx,ecx

+        psrld   xmm13,30

+        add     eax,DWORD[24+rsp]

+        and     esi,edx

+        xor     edx,ebp

+        por     xmm5,xmm13

+        ror     ecx,7

+        mov     edi,ebx

+        xor     esi,edx

+        rol     ebx,5

+        pshufd  xmm3,xmm4,238

+        add     eax,esi

+        xor     edi,ecx

+        xor     ecx,edx

+        add     eax,ebx

+        add     ebp,DWORD[28+rsp]

+        cmp     r8d,11

+        jb      NEAR $L$aesenclast3

+        movups  xmm0,XMMWORD[64+r15]

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[80+r15]

+DB      102,15,56,220,208

+        je      NEAR $L$aesenclast3

+        movups  xmm0,XMMWORD[96+r15]

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[112+r15]

+DB      102,15,56,220,208

+$L$aesenclast3:

+DB      102,15,56,221,209

+        movups  xmm0,XMMWORD[((16-112))+r15]

+        and     edi,ecx

+        xor     ecx,edx

+        ror     ebx,7

+        mov     esi,eax

+        xor     edi,ecx

+        rol     eax,5

+        add     ebp,edi

+        xor     esi,ebx

+        xor     ebx,ecx

+        add     ebp,eax

+        pxor    xmm6,xmm10

+        add     edx,DWORD[32+rsp]

+        and     esi,ebx

+        xor     ebx,ecx

+        ror     eax,7

+        punpcklqdq      xmm3,xmm5

+        mov     edi,ebp

+        xor     esi,ebx

+        pxor    xmm6,xmm7

+        rol     ebp,5

+        add     edx,esi

+        movups  xmm14,XMMWORD[48+r12]

+        xorps   xmm14,xmm15

+        movups  XMMWORD[32+r12*1+r13],xmm2

+        xorps   xmm2,xmm14

+        movups  xmm1,XMMWORD[((-80))+r15]

+DB      102,15,56,220,208

+        movdqa  xmm13,xmm12

+        xor     edi,eax

+        paddd   xmm12,xmm5

+        xor     eax,ebx

+        pxor    xmm6,xmm3

+        add     edx,ebp

+        add     ecx,DWORD[36+rsp]

+        and     edi,eax

+        xor     eax,ebx

+        ror     ebp,7

+        movdqa  xmm3,xmm6

+        mov     esi,edx

+        xor     edi,eax

+        movdqa  XMMWORD[16+rsp],xmm12

+        rol     edx,5

+        add     ecx,edi

+        xor     esi,ebp

+        pslld   xmm6,2

+        xor     ebp,eax

+        add     ecx,edx

+        psrld   xmm3,30

+        add     ebx,DWORD[40+rsp]

+        and     esi,ebp

+        xor     ebp,eax

+        por     xmm6,xmm3

+        ror     edx,7

+        movups  xmm0,XMMWORD[((-64))+r15]

+DB      102,15,56,220,209

+        mov     edi,ecx

+        xor     esi,ebp

+        rol     ecx,5

+        pshufd  xmm12,xmm5,238

+        add     ebx,esi

+        xor     edi,edx

+        xor     edx,ebp

+        add     ebx,ecx

+        add     eax,DWORD[44+rsp]

+        and     edi,edx

+        xor     edx,ebp

+        ror     ecx,7

+        mov     esi,ebx

+        xor     edi,edx

+        rol     ebx,5

+        add     eax,edi

+        xor     esi,edx

+        add     eax,ebx

+        pxor    xmm7,xmm11

+        add     ebp,DWORD[48+rsp]

+        movups  xmm1,XMMWORD[((-48))+r15]

+DB      102,15,56,220,208

+        xor     esi,ecx

+        punpcklqdq      xmm12,xmm6

+        mov     edi,eax

+        rol     eax,5

+        pxor    xmm7,xmm8

+        add     ebp,esi

+        xor     edi,ecx

+        movdqa  xmm3,xmm13

+        ror     ebx,7

+        paddd   xmm13,xmm6

+        add     ebp,eax

+        pxor    xmm7,xmm12

+        add     edx,DWORD[52+rsp]

+        xor     edi,ebx

+        mov     esi,ebp

+        rol     ebp,5

+        movdqa  xmm12,xmm7

+        add     edx,edi

+        xor     esi,ebx

+        movdqa  XMMWORD[32+rsp],xmm13

+        ror     eax,7

+        add     edx,ebp

+        add     ecx,DWORD[56+rsp]

+        pslld   xmm7,2

+        xor     esi,eax

+        mov     edi,edx

+        psrld   xmm12,30

+        rol     edx,5

+        add     ecx,esi

+        movups  xmm0,XMMWORD[((-32))+r15]

+DB      102,15,56,220,209

+        xor     edi,eax

+        ror     ebp,7

+        por     xmm7,xmm12

+        add     ecx,edx

+        add     ebx,DWORD[60+rsp]

+        xor     edi,ebp

+        mov     esi,ecx

+        rol     ecx,5

+        add     ebx,edi

+        xor     esi,ebp

+        ror     edx,7

+        add     ebx,ecx

+        add     eax,DWORD[rsp]

+        xor     esi,edx

+        mov     edi,ebx

+        rol     ebx,5

+        paddd   xmm3,xmm7

+        add     eax,esi

+        xor     edi,edx

+        movdqa  XMMWORD[48+rsp],xmm3

+        ror     ecx,7

+        add     eax,ebx

+        add     ebp,DWORD[4+rsp]

+        movups  xmm1,XMMWORD[((-16))+r15]

+DB      102,15,56,220,208

+        xor     edi,ecx

+        mov     esi,eax

+        rol     eax,5

+        add     ebp,edi

+        xor     esi,ecx

+        ror     ebx,7

+        add     ebp,eax

+        add     edx,DWORD[8+rsp]

+        xor     esi,ebx

+        mov     edi,ebp

+        rol     ebp,5

+        add     edx,esi

+        xor     edi,ebx

+        ror     eax,7

+        add     edx,ebp

+        add     ecx,DWORD[12+rsp]

+        xor     edi,eax

+        mov     esi,edx

+        rol     edx,5

+        add     ecx,edi

+        movups  xmm0,XMMWORD[r15]

+DB      102,15,56,220,209

+        xor     esi,eax

+        ror     ebp,7

+        add     ecx,edx

+        cmp     r10,r14

+        je      NEAR $L$done_ssse3

+        movdqa  xmm3,XMMWORD[64+r11]

+        movdqa  xmm13,XMMWORD[r11]

+        movdqu  xmm4,XMMWORD[r10]

+        movdqu  xmm5,XMMWORD[16+r10]

+        movdqu  xmm6,XMMWORD[32+r10]

+        movdqu  xmm7,XMMWORD[48+r10]

+DB      102,15,56,0,227

+        add     r10,64

+        add     ebx,DWORD[16+rsp]

+        xor     esi,ebp

+        mov     edi,ecx

+DB      102,15,56,0,235

+        rol     ecx,5

+        add     ebx,esi

+        xor     edi,ebp

+        ror     edx,7

+        paddd   xmm4,xmm13

+        add     ebx,ecx

+        add     eax,DWORD[20+rsp]

+        xor     edi,edx

+        mov     esi,ebx

+        movdqa  XMMWORD[rsp],xmm4

+        rol     ebx,5

+        add     eax,edi

+        xor     esi,edx

+        ror     ecx,7

+        psubd   xmm4,xmm13

+        add     eax,ebx

+        add     ebp,DWORD[24+rsp]

+        movups  xmm1,XMMWORD[16+r15]

+DB      102,15,56,220,208

+        xor     esi,ecx

+        mov     edi,eax

+        rol     eax,5

+        add     ebp,esi

+        xor     edi,ecx

+        ror     ebx,7

+        add     ebp,eax

+        add     edx,DWORD[28+rsp]

+        xor     edi,ebx

+        mov     esi,ebp

+        rol     ebp,5

+        add     edx,edi

+        xor     esi,ebx

+        ror     eax,7

+        add     edx,ebp

+        add     ecx,DWORD[32+rsp]

+        xor     esi,eax

+        mov     edi,edx

+DB      102,15,56,0,243

+        rol     edx,5

+        add     ecx,esi

+        movups  xmm0,XMMWORD[32+r15]

+DB      102,15,56,220,209

+        xor     edi,eax

+        ror     ebp,7

+        paddd   xmm5,xmm13

+        add     ecx,edx

+        add     ebx,DWORD[36+rsp]

+        xor     edi,ebp

+        mov     esi,ecx

+        movdqa  XMMWORD[16+rsp],xmm5

+        rol     ecx,5

+        add     ebx,edi

+        xor     esi,ebp

+        ror     edx,7

+        psubd   xmm5,xmm13

+        add     ebx,ecx

+        add     eax,DWORD[40+rsp]

+        xor     esi,edx

+        mov     edi,ebx

+        rol     ebx,5

+        add     eax,esi

+        xor     edi,edx

+        ror     ecx,7

+        add     eax,ebx

+        add     ebp,DWORD[44+rsp]

+        movups  xmm1,XMMWORD[48+r15]

+DB      102,15,56,220,208

+        xor     edi,ecx

+        mov     esi,eax

+        rol     eax,5

+        add     ebp,edi

+        xor     esi,ecx

+        ror     ebx,7

+        add     ebp,eax

+        add     edx,DWORD[48+rsp]

+        xor     esi,ebx

+        mov     edi,ebp

+DB      102,15,56,0,251

+        rol     ebp,5

+        add     edx,esi

+        xor     edi,ebx

+        ror     eax,7

+        paddd   xmm6,xmm13

+        add     edx,ebp

+        add     ecx,DWORD[52+rsp]

+        xor     edi,eax

+        mov     esi,edx

+        movdqa  XMMWORD[32+rsp],xmm6

+        rol     edx,5

+        add     ecx,edi

+        cmp     r8d,11

+        jb      NEAR $L$aesenclast4

+        movups  xmm0,XMMWORD[64+r15]

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[80+r15]

+DB      102,15,56,220,208

+        je      NEAR $L$aesenclast4

+        movups  xmm0,XMMWORD[96+r15]

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[112+r15]

+DB      102,15,56,220,208

+$L$aesenclast4:

+DB      102,15,56,221,209

+        movups  xmm0,XMMWORD[((16-112))+r15]

+        xor     esi,eax

+        ror     ebp,7

+        psubd   xmm6,xmm13

+        add     ecx,edx

+        add     ebx,DWORD[56+rsp]

+        xor     esi,ebp

+        mov     edi,ecx

+        rol     ecx,5

+        add     ebx,esi

+        xor     edi,ebp

+        ror     edx,7

+        add     ebx,ecx

+        add     eax,DWORD[60+rsp]

+        xor     edi,edx

+        mov     esi,ebx

+        rol     ebx,5

+        add     eax,edi

+        ror     ecx,7

+        add     eax,ebx

+        movups  XMMWORD[48+r12*1+r13],xmm2

+        lea     r12,[64+r12]

+

+        add     eax,DWORD[r9]

+        add     esi,DWORD[4+r9]

+        add     ecx,DWORD[8+r9]

+        add     edx,DWORD[12+r9]

+        mov     DWORD[r9],eax

+        add     ebp,DWORD[16+r9]

+        mov     DWORD[4+r9],esi

+        mov     ebx,esi

+        mov     DWORD[8+r9],ecx

+        mov     edi,ecx

+        mov     DWORD[12+r9],edx

+        xor     edi,edx

+        mov     DWORD[16+r9],ebp

+        and     esi,edi

+        jmp     NEAR $L$oop_ssse3

+

+$L$done_ssse3:

+        add     ebx,DWORD[16+rsp]

+        xor     esi,ebp

+        mov     edi,ecx

+        rol     ecx,5

+        add     ebx,esi

+        xor     edi,ebp

+        ror     edx,7

+        add     ebx,ecx

+        add     eax,DWORD[20+rsp]

+        xor     edi,edx

+        mov     esi,ebx

+        rol     ebx,5

+        add     eax,edi

+        xor     esi,edx

+        ror     ecx,7

+        add     eax,ebx

+        add     ebp,DWORD[24+rsp]

+        movups  xmm1,XMMWORD[16+r15]

+DB      102,15,56,220,208

+        xor     esi,ecx

+        mov     edi,eax

+        rol     eax,5

+        add     ebp,esi

+        xor     edi,ecx

+        ror     ebx,7

+        add     ebp,eax

+        add     edx,DWORD[28+rsp]

+        xor     edi,ebx

+        mov     esi,ebp

+        rol     ebp,5

+        add     edx,edi

+        xor     esi,ebx

+        ror     eax,7

+        add     edx,ebp

+        add     ecx,DWORD[32+rsp]

+        xor     esi,eax

+        mov     edi,edx

+        rol     edx,5

+        add     ecx,esi

+        movups  xmm0,XMMWORD[32+r15]

+DB      102,15,56,220,209

+        xor     edi,eax

+        ror     ebp,7

+        add     ecx,edx

+        add     ebx,DWORD[36+rsp]

+        xor     edi,ebp

+        mov     esi,ecx

+        rol     ecx,5

+        add     ebx,edi

+        xor     esi,ebp

+        ror     edx,7

+        add     ebx,ecx

+        add     eax,DWORD[40+rsp]

+        xor     esi,edx

+        mov     edi,ebx

+        rol     ebx,5

+        add     eax,esi

+        xor     edi,edx

+        ror     ecx,7

+        add     eax,ebx

+        add     ebp,DWORD[44+rsp]

+        movups  xmm1,XMMWORD[48+r15]

+DB      102,15,56,220,208

+        xor     edi,ecx

+        mov     esi,eax

+        rol     eax,5

+        add     ebp,edi

+        xor     esi,ecx

+        ror     ebx,7

+        add     ebp,eax

+        add     edx,DWORD[48+rsp]

+        xor     esi,ebx

+        mov     edi,ebp

+        rol     ebp,5

+        add     edx,esi

+        xor     edi,ebx

+        ror     eax,7

+        add     edx,ebp

+        add     ecx,DWORD[52+rsp]

+        xor     edi,eax

+        mov     esi,edx

+        rol     edx,5

+        add     ecx,edi

+        cmp     r8d,11

+        jb      NEAR $L$aesenclast5

+        movups  xmm0,XMMWORD[64+r15]

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[80+r15]

+DB      102,15,56,220,208

+        je      NEAR $L$aesenclast5

+        movups  xmm0,XMMWORD[96+r15]

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[112+r15]

+DB      102,15,56,220,208

+$L$aesenclast5:

+DB      102,15,56,221,209

+        movups  xmm0,XMMWORD[((16-112))+r15]

+        xor     esi,eax

+        ror     ebp,7

+        add     ecx,edx

+        add     ebx,DWORD[56+rsp]

+        xor     esi,ebp

+        mov     edi,ecx

+        rol     ecx,5

+        add     ebx,esi

+        xor     edi,ebp

+        ror     edx,7

+        add     ebx,ecx

+        add     eax,DWORD[60+rsp]

+        xor     edi,edx

+        mov     esi,ebx

+        rol     ebx,5

+        add     eax,edi

+        ror     ecx,7

+        add     eax,ebx

+        movups  XMMWORD[48+r12*1+r13],xmm2

+        mov     r8,QWORD[88+rsp]

+

+        add     eax,DWORD[r9]

+        add     esi,DWORD[4+r9]

+        add     ecx,DWORD[8+r9]

+        mov     DWORD[r9],eax

+        add     edx,DWORD[12+r9]

+        mov     DWORD[4+r9],esi

+        add     ebp,DWORD[16+r9]

+        mov     DWORD[8+r9],ecx

+        mov     DWORD[12+r9],edx

+        mov     DWORD[16+r9],ebp

+        movups  XMMWORD[r8],xmm2

+        movaps  xmm6,XMMWORD[((96+0))+rsp]

+        movaps  xmm7,XMMWORD[((96+16))+rsp]

+        movaps  xmm8,XMMWORD[((96+32))+rsp]

+        movaps  xmm9,XMMWORD[((96+48))+rsp]

+        movaps  xmm10,XMMWORD[((96+64))+rsp]

+        movaps  xmm11,XMMWORD[((96+80))+rsp]

+        movaps  xmm12,XMMWORD[((96+96))+rsp]

+        movaps  xmm13,XMMWORD[((96+112))+rsp]

+        movaps  xmm14,XMMWORD[((96+128))+rsp]

+        movaps  xmm15,XMMWORD[((96+144))+rsp]

+        lea     rsi,[264+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_aesni_cbc_sha1_enc_ssse3:

+ALIGN   64

+K_XX_XX:

+        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999

+        DD      0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1

+        DD      0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc

+        DD      0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6

+        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f

+DB
0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0


+

+DB      65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115

+DB      116,105,116,99,104,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

+

+ALIGN   32

+aesni_cbc_sha1_enc_shaext:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_aesni_cbc_sha1_enc_shaext:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+        mov     rcx,r9

+        mov     r8,QWORD[40+rsp]

+        mov     r9,QWORD[48+rsp]

+

+

+

+        mov     r10,QWORD[56+rsp]

+        lea     rsp,[((-168))+rsp]

+        movaps  XMMWORD[(-8-160)+rax],xmm6

+        movaps  XMMWORD[(-8-144)+rax],xmm7

+        movaps  XMMWORD[(-8-128)+rax],xmm8

+        movaps  XMMWORD[(-8-112)+rax],xmm9

+        movaps  XMMWORD[(-8-96)+rax],xmm10

+        movaps  XMMWORD[(-8-80)+rax],xmm11

+        movaps  XMMWORD[(-8-64)+rax],xmm12

+        movaps  XMMWORD[(-8-48)+rax],xmm13

+        movaps  XMMWORD[(-8-32)+rax],xmm14

+        movaps  XMMWORD[(-8-16)+rax],xmm15

+$L$prologue_shaext:

+        movdqu  xmm8,XMMWORD[r9]

+        movd    xmm9,DWORD[16+r9]

+        movdqa  xmm7,XMMWORD[((K_XX_XX+80))]

+

+        mov     r11d,DWORD[240+rcx]

+        sub     rsi,rdi

+        movups  xmm15,XMMWORD[rcx]

+        movups  xmm2,XMMWORD[r8]

+        movups  xmm0,XMMWORD[16+rcx]

+        lea     rcx,[112+rcx]

+

+        pshufd  xmm8,xmm8,27

+        pshufd  xmm9,xmm9,27

+        jmp     NEAR $L$oop_shaext

+

+ALIGN   16

+$L$oop_shaext:

+        movups  xmm14,XMMWORD[rdi]

+        xorps   xmm14,xmm15

+        xorps   xmm2,xmm14

+        movups  xmm1,XMMWORD[((-80))+rcx]

+DB      102,15,56,220,208

+        movdqu  xmm3,XMMWORD[r10]

+        movdqa  xmm12,xmm9

+DB      102,15,56,0,223

+        movdqu  xmm4,XMMWORD[16+r10]

+        movdqa  xmm11,xmm8

+        movups  xmm0,XMMWORD[((-64))+rcx]

+DB      102,15,56,220,209

+DB      102,15,56,0,231

+

+        paddd   xmm9,xmm3

+        movdqu  xmm5,XMMWORD[32+r10]

+        lea     r10,[64+r10]

+        pxor    xmm3,xmm12

+        movups  xmm1,XMMWORD[((-48))+rcx]

+DB      102,15,56,220,208

+        pxor    xmm3,xmm12

+        movdqa  xmm10,xmm8

+DB      102,15,56,0,239

+DB      69,15,58,204,193,0

+DB      68,15,56,200,212

+        movups  xmm0,XMMWORD[((-32))+rcx]

+DB      102,15,56,220,209

+DB      15,56,201,220

+        movdqu  xmm6,XMMWORD[((-16))+r10]

+        movdqa  xmm9,xmm8

+DB      102,15,56,0,247

+        movups  xmm1,XMMWORD[((-16))+rcx]

+DB      102,15,56,220,208

+DB      69,15,58,204,194,0

+DB      68,15,56,200,205

+        pxor    xmm3,xmm5

+DB      15,56,201,229

+        movups  xmm0,XMMWORD[rcx]

+DB      102,15,56,220,209

+        movdqa  xmm10,xmm8

+DB      69,15,58,204,193,0

+DB      68,15,56,200,214

+        movups  xmm1,XMMWORD[16+rcx]

+DB      102,15,56,220,208

+DB      15,56,202,222

+        pxor    xmm4,xmm6

+DB      15,56,201,238

+        movups  xmm0,XMMWORD[32+rcx]

+DB      102,15,56,220,209

+        movdqa  xmm9,xmm8

+DB      69,15,58,204,194,0

+DB      68,15,56,200,203

+        movups  xmm1,XMMWORD[48+rcx]

+DB      102,15,56,220,208

+DB      15,56,202,227

+        pxor    xmm5,xmm3

+DB      15,56,201,243

+        cmp     r11d,11

+        jb      NEAR $L$aesenclast6

+        movups  xmm0,XMMWORD[64+rcx]

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[80+rcx]

+DB      102,15,56,220,208

+        je      NEAR $L$aesenclast6

+        movups  xmm0,XMMWORD[96+rcx]

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[112+rcx]

+DB      102,15,56,220,208

+$L$aesenclast6:

+DB      102,15,56,221,209

+        movups  xmm0,XMMWORD[((16-112))+rcx]

+        movdqa  xmm10,xmm8

+DB      69,15,58,204,193,0

+DB      68,15,56,200,212

+        movups  xmm14,XMMWORD[16+rdi]

+        xorps   xmm14,xmm15

+        movups  XMMWORD[rdi*1+rsi],xmm2

+        xorps   xmm2,xmm14

+        movups  xmm1,XMMWORD[((-80))+rcx]

+DB      102,15,56,220,208

+DB      15,56,202,236

+        pxor    xmm6,xmm4

+DB      15,56,201,220

+        movups  xmm0,XMMWORD[((-64))+rcx]

+DB      102,15,56,220,209

+        movdqa  xmm9,xmm8

+DB      69,15,58,204,194,1

+DB      68,15,56,200,205

+        movups  xmm1,XMMWORD[((-48))+rcx]

+DB      102,15,56,220,208

+DB      15,56,202,245

+        pxor    xmm3,xmm5

+DB      15,56,201,229

+        movups  xmm0,XMMWORD[((-32))+rcx]

+DB      102,15,56,220,209

+        movdqa  xmm10,xmm8

+DB      69,15,58,204,193,1

+DB      68,15,56,200,214

+        movups  xmm1,XMMWORD[((-16))+rcx]

+DB      102,15,56,220,208

+DB      15,56,202,222

+        pxor    xmm4,xmm6

+DB      15,56,201,238

+        movups  xmm0,XMMWORD[rcx]

+DB      102,15,56,220,209

+        movdqa  xmm9,xmm8

+DB      69,15,58,204,194,1

+DB      68,15,56,200,203

+        movups  xmm1,XMMWORD[16+rcx]

+DB      102,15,56,220,208

+DB      15,56,202,227

+        pxor    xmm5,xmm3

+DB      15,56,201,243

+        movups  xmm0,XMMWORD[32+rcx]

+DB      102,15,56,220,209

+        movdqa  xmm10,xmm8

+DB      69,15,58,204,193,1

+DB      68,15,56,200,212

+        movups  xmm1,XMMWORD[48+rcx]

+DB      102,15,56,220,208

+DB      15,56,202,236

+        pxor    xmm6,xmm4

+DB      15,56,201,220

+        cmp     r11d,11

+        jb      NEAR $L$aesenclast7

+        movups  xmm0,XMMWORD[64+rcx]

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[80+rcx]

+DB      102,15,56,220,208

+        je      NEAR $L$aesenclast7

+        movups  xmm0,XMMWORD[96+rcx]

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[112+rcx]

+DB      102,15,56,220,208

+$L$aesenclast7:

+DB      102,15,56,221,209

+        movups  xmm0,XMMWORD[((16-112))+rcx]

+        movdqa  xmm9,xmm8

+DB      69,15,58,204,194,1

+DB      68,15,56,200,205

+        movups  xmm14,XMMWORD[32+rdi]

+        xorps   xmm14,xmm15

+        movups  XMMWORD[16+rdi*1+rsi],xmm2

+        xorps   xmm2,xmm14

+        movups  xmm1,XMMWORD[((-80))+rcx]

+DB      102,15,56,220,208

+DB      15,56,202,245

+        pxor    xmm3,xmm5

+DB      15,56,201,229

+        movups  xmm0,XMMWORD[((-64))+rcx]

+DB      102,15,56,220,209

+        movdqa  xmm10,xmm8

+DB      69,15,58,204,193,2

+DB      68,15,56,200,214

+        movups  xmm1,XMMWORD[((-48))+rcx]

+DB      102,15,56,220,208

+DB      15,56,202,222

+        pxor    xmm4,xmm6

+DB      15,56,201,238

+        movups  xmm0,XMMWORD[((-32))+rcx]

+DB      102,15,56,220,209

+        movdqa  xmm9,xmm8

+DB      69,15,58,204,194,2

+DB      68,15,56,200,203

+        movups  xmm1,XMMWORD[((-16))+rcx]

+DB      102,15,56,220,208

+DB      15,56,202,227

+        pxor    xmm5,xmm3

+DB      15,56,201,243

+        movups  xmm0,XMMWORD[rcx]

+DB      102,15,56,220,209

+        movdqa  xmm10,xmm8

+DB      69,15,58,204,193,2

+DB      68,15,56,200,212

+        movups  xmm1,XMMWORD[16+rcx]

+DB      102,15,56,220,208

+DB      15,56,202,236

+        pxor    xmm6,xmm4

+DB      15,56,201,220

+        movups  xmm0,XMMWORD[32+rcx]

+DB      102,15,56,220,209

+        movdqa  xmm9,xmm8

+DB      69,15,58,204,194,2

+DB      68,15,56,200,205

+        movups  xmm1,XMMWORD[48+rcx]

+DB      102,15,56,220,208

+DB      15,56,202,245

+        pxor    xmm3,xmm5

+DB      15,56,201,229

+        cmp     r11d,11

+        jb      NEAR $L$aesenclast8

+        movups  xmm0,XMMWORD[64+rcx]

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[80+rcx]

+DB      102,15,56,220,208

+        je      NEAR $L$aesenclast8

+        movups  xmm0,XMMWORD[96+rcx]

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[112+rcx]

+DB      102,15,56,220,208

+$L$aesenclast8:

+DB      102,15,56,221,209

+        movups  xmm0,XMMWORD[((16-112))+rcx]

+        movdqa  xmm10,xmm8

+DB      69,15,58,204,193,2

+DB      68,15,56,200,214

+        movups  xmm14,XMMWORD[48+rdi]

+        xorps   xmm14,xmm15

+        movups  XMMWORD[32+rdi*1+rsi],xmm2

+        xorps   xmm2,xmm14

+        movups  xmm1,XMMWORD[((-80))+rcx]

+DB      102,15,56,220,208

+DB      15,56,202,222

+        pxor    xmm4,xmm6

+DB      15,56,201,238

+        movups  xmm0,XMMWORD[((-64))+rcx]

+DB      102,15,56,220,209

+        movdqa  xmm9,xmm8

+DB      69,15,58,204,194,3

+DB      68,15,56,200,203

+        movups  xmm1,XMMWORD[((-48))+rcx]

+DB      102,15,56,220,208

+DB      15,56,202,227

+        pxor    xmm5,xmm3

+DB      15,56,201,243

+        movups  xmm0,XMMWORD[((-32))+rcx]

+DB      102,15,56,220,209

+        movdqa  xmm10,xmm8

+DB      69,15,58,204,193,3

+DB      68,15,56,200,212

+DB      15,56,202,236

+        pxor    xmm6,xmm4

+        movups  xmm1,XMMWORD[((-16))+rcx]

+DB      102,15,56,220,208

+        movdqa  xmm9,xmm8

+DB      69,15,58,204,194,3

+DB      68,15,56,200,205

+DB      15,56,202,245

+        movups  xmm0,XMMWORD[rcx]

+DB      102,15,56,220,209

+        movdqa  xmm5,xmm12

+        movdqa  xmm10,xmm8

+DB      69,15,58,204,193,3

+DB      68,15,56,200,214

+        movups  xmm1,XMMWORD[16+rcx]

+DB      102,15,56,220,208

+        movdqa  xmm9,xmm8

+DB      69,15,58,204,194,3

+DB      68,15,56,200,205

+        movups  xmm0,XMMWORD[32+rcx]

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[48+rcx]

+DB      102,15,56,220,208

+        cmp     r11d,11

+        jb      NEAR $L$aesenclast9

+        movups  xmm0,XMMWORD[64+rcx]

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[80+rcx]

+DB      102,15,56,220,208

+        je      NEAR $L$aesenclast9

+        movups  xmm0,XMMWORD[96+rcx]

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[112+rcx]

+DB      102,15,56,220,208

+$L$aesenclast9:

+DB      102,15,56,221,209

+        movups  xmm0,XMMWORD[((16-112))+rcx]

+        dec     rdx

+

+        paddd   xmm8,xmm11

+        movups  XMMWORD[48+rdi*1+rsi],xmm2

+        lea     rdi,[64+rdi]

+        jnz     NEAR $L$oop_shaext

+

+        pshufd  xmm8,xmm8,27

+        pshufd  xmm9,xmm9,27

+        movups  XMMWORD[r8],xmm2

+        movdqu  XMMWORD[r9],xmm8

+        movd    DWORD[16+r9],xmm9

+        movaps  xmm6,XMMWORD[((-8-160))+rax]

+        movaps  xmm7,XMMWORD[((-8-144))+rax]

+        movaps  xmm8,XMMWORD[((-8-128))+rax]

+        movaps  xmm9,XMMWORD[((-8-112))+rax]

+        movaps  xmm10,XMMWORD[((-8-96))+rax]

+        movaps  xmm11,XMMWORD[((-8-80))+rax]

+        movaps  xmm12,XMMWORD[((-8-64))+rax]

+        movaps  xmm13,XMMWORD[((-8-48))+rax]

+        movaps  xmm14,XMMWORD[((-8-32))+rax]

+        movaps  xmm15,XMMWORD[((-8-16))+rax]

+        mov     rsp,rax

+$L$epilogue_shaext:

+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue

+        mov     rsi,QWORD[16+rsp]

+        DB      0F3h,0C3h               ;repret

+

+$L$SEH_end_aesni_cbc_sha1_enc_shaext:

+EXTERN  __imp_RtlVirtualUnwind

+

+ALIGN   16

+ssse3_handler:

+        push    rsi

+        push    rdi

+        push    rbx

+        push    rbp

+        push    r12

+        push    r13

+        push    r14

+        push    r15

+        pushfq

+        sub     rsp,64

+

+        mov     rax,QWORD[120+r8]

+        mov     rbx,QWORD[248+r8]

+

+        mov     rsi,QWORD[8+r9]

+        mov     r11,QWORD[56+r9]

+

+        mov     r10d,DWORD[r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jb      NEAR $L$common_seh_tail

+

+        mov     rax,QWORD[152+r8]

+

+        mov     r10d,DWORD[4+r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jae     NEAR $L$common_seh_tail

+        lea     r10,[aesni_cbc_sha1_enc_shaext]

+        cmp     rbx,r10

+        jb      NEAR $L$seh_no_shaext

+

+        lea     rsi,[rax]

+        lea     rdi,[512+r8]

+        mov     ecx,20

+        DD      0xa548f3fc

+        lea     rax,[168+rax]

+        jmp     NEAR $L$common_seh_tail

+$L$seh_no_shaext:

+        lea     rsi,[96+rax]

+        lea     rdi,[512+r8]

+        mov     ecx,20

+        DD      0xa548f3fc

+        lea     rax,[264+rax]

+

+        mov     r15,QWORD[rax]

+        mov     r14,QWORD[8+rax]

+        mov     r13,QWORD[16+rax]

+        mov     r12,QWORD[24+rax]

+        mov     rbp,QWORD[32+rax]

+        mov     rbx,QWORD[40+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$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[40+r9]

+        mov     rsi,r8

+        mov     ecx,154

+        DD      0xa548f3fc

+

+        mov     rsi,r9

+        xor     rcx,rcx

+        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

+        popfq

+        pop     r15

+        pop     r14

+        pop     r13

+        pop     r12

+        pop     rbp

+        pop     rbx

+        pop     rdi

+        pop     rsi

+        DB      0F3h,0C3h               ;repret

+

+

+section .pdata rdata align=4

+ALIGN   4

+        DD      $L$SEH_begin_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase

+        DD      $L$SEH_end_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase

+        DD      $L$SEH_info_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase

+        DD      $L$SEH_begin_aesni_cbc_sha1_enc_shaext wrt ..imagebase

+        DD      $L$SEH_end_aesni_cbc_sha1_enc_shaext wrt ..imagebase

+        DD      $L$SEH_info_aesni_cbc_sha1_enc_shaext wrt ..imagebase

+section .xdata rdata align=8

+ALIGN   8

+$L$SEH_info_aesni_cbc_sha1_enc_ssse3:

+DB      9,0,0,0

+        DD      ssse3_handler wrt ..imagebase

+        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
wrt ..imagebase

+$L$SEH_info_aesni_cbc_sha1_enc_shaext:

+DB      9,0,0,0

+        DD      ssse3_handler wrt ..imagebase

+        DD      $L$prologue_shaext wrt ..imagebase,$L$epilogue_shaext
wrt ..imagebase

diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
sha256-

x86_64.nasm
new file mode 100644
index 0000000000..f5c250b904
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-sha256-
x86_64.nasm
@@ -0,0 +1,78 @@
+; WARNING: do not edit!

+; Generated from openssl/crypto/aes/asm/aesni-sha256-x86_64.pl

+;

+; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
Reserved.


+;

+; Licensed under the OpenSSL license (the "License").  You may not use

+; this file except in compliance with the License.  You can obtain a
copy


+; in the file LICENSE in the source distribution or at

+; https://www.openssl.org/source/license.html

+

+default rel

+%define XMMWORD

+%define YMMWORD

+%define ZMMWORD

+section .text code align=64

+

+

+EXTERN  OPENSSL_ia32cap_P

+global  aesni_cbc_sha256_enc

+

+ALIGN   16

+aesni_cbc_sha256_enc:

+

+        xor     eax,eax

+        cmp     rcx,0

+        je      NEAR $L$probe

+        ud2

+$L$probe:

+        DB      0F3h,0C3h               ;repret

+

+

+

+ALIGN   64

+

+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      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f

+        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f

+        DD      0,0,0,0,0,0,0,0,-1,-1,-1,-1

+        DD      0,0,0,0,0,0,0,0

+DB      65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54

+DB      32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95

+DB      54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98

+DB      121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108

+DB      46,111,114,103,62,0

+ALIGN   64

diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-
x86_64.nasm

b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
new file mode 100644
index 0000000000..57ee23ea8c
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/aesni-x86_64.nasm
@@ -0,0 +1,5103 @@
+; WARNING: do not edit!

+; Generated from openssl/crypto/aes/asm/aesni-x86_64.pl

+;

+; Copyright 2009-2020 The OpenSSL Project Authors. All Rights
Reserved.


+;

+; Licensed under the OpenSSL license (the "License").  You may not use

+; this file except in compliance with the License.  You can obtain a
copy


+; in the file LICENSE in the source distribution or at

+; https://www.openssl.org/source/license.html

+

+default rel

+%define XMMWORD

+%define YMMWORD

+%define ZMMWORD

+section .text code align=64

+

+EXTERN  OPENSSL_ia32cap_P

+global  aesni_encrypt

+

+ALIGN   16

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

+DB      102,15,56,220,209

+        dec     eax

+        movups  xmm1,XMMWORD[r8]

+        lea     r8,[16+r8]

+        jnz     NEAR $L$oop_enc1_1

+DB      102,15,56,221,209

+        pxor    xmm0,xmm0

+        pxor    xmm1,xmm1

+        movups  XMMWORD[rdx],xmm2

+        pxor    xmm2,xmm2

+        DB      0F3h,0C3h               ;repret

+

+

+

+global  aesni_decrypt

+

+ALIGN   16

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

+DB      102,15,56,222,209

+        dec     eax

+        movups  xmm1,XMMWORD[r8]

+        lea     r8,[16+r8]

+        jnz     NEAR $L$oop_dec1_2

+DB      102,15,56,223,209

+        pxor    xmm0,xmm0

+        pxor    xmm1,xmm1

+        movups  XMMWORD[rdx],xmm2

+        pxor    xmm2,xmm2

+        DB      0F3h,0C3h               ;repret

+

+

+

+ALIGN   16

+_aesni_encrypt2:

+

+        movups  xmm0,XMMWORD[rcx]

+        shl     eax,4

+        movups  xmm1,XMMWORD[16+rcx]

+        xorps   xmm2,xmm0

+        xorps   xmm3,xmm0

+        movups  xmm0,XMMWORD[32+rcx]

+        lea     rcx,[32+rax*1+rcx]

+        neg     rax

+        add     rax,16

+

+$L$enc_loop2:

+DB      102,15,56,220,209

+DB      102,15,56,220,217

+        movups  xmm1,XMMWORD[rax*1+rcx]

+        add     rax,32

+DB      102,15,56,220,208

+DB      102,15,56,220,216

+        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

+

+

+

+ALIGN   16

+_aesni_decrypt2:

+

+        movups  xmm0,XMMWORD[rcx]

+        shl     eax,4

+        movups  xmm1,XMMWORD[16+rcx]

+        xorps   xmm2,xmm0

+        xorps   xmm3,xmm0

+        movups  xmm0,XMMWORD[32+rcx]

+        lea     rcx,[32+rax*1+rcx]

+        neg     rax

+        add     rax,16

+

+$L$dec_loop2:

+DB      102,15,56,222,209

+DB      102,15,56,222,217

+        movups  xmm1,XMMWORD[rax*1+rcx]

+        add     rax,32

+DB      102,15,56,222,208

+DB      102,15,56,222,216

+        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

+

+

+

+ALIGN   16

+_aesni_encrypt3:

+

+        movups  xmm0,XMMWORD[rcx]

+        shl     eax,4

+        movups  xmm1,XMMWORD[16+rcx]

+        xorps   xmm2,xmm0

+        xorps   xmm3,xmm0

+        xorps   xmm4,xmm0

+        movups  xmm0,XMMWORD[32+rcx]

+        lea     rcx,[32+rax*1+rcx]

+        neg     rax

+        add     rax,16

+

+$L$enc_loop3:

+DB      102,15,56,220,209

+DB      102,15,56,220,217

+DB      102,15,56,220,225

+        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[((-16))+rax*1+rcx]

+        jnz     NEAR $L$enc_loop3

+

+DB      102,15,56,220,209

+DB      102,15,56,220,217

+DB      102,15,56,220,225

+DB      102,15,56,221,208

+DB      102,15,56,221,216

+DB      102,15,56,221,224

+        DB      0F3h,0C3h               ;repret

+

+

+

+ALIGN   16

+_aesni_decrypt3:

+

+        movups  xmm0,XMMWORD[rcx]

+        shl     eax,4

+        movups  xmm1,XMMWORD[16+rcx]

+        xorps   xmm2,xmm0

+        xorps   xmm3,xmm0

+        xorps   xmm4,xmm0

+        movups  xmm0,XMMWORD[32+rcx]

+        lea     rcx,[32+rax*1+rcx]

+        neg     rax

+        add     rax,16

+

+$L$dec_loop3:

+DB      102,15,56,222,209

+DB      102,15,56,222,217

+DB      102,15,56,222,225

+        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[((-16))+rax*1+rcx]

+        jnz     NEAR $L$dec_loop3

+

+DB      102,15,56,222,209

+DB      102,15,56,222,217

+DB      102,15,56,222,225

+DB      102,15,56,223,208

+DB      102,15,56,223,216

+DB      102,15,56,223,224

+        DB      0F3h,0C3h               ;repret

+

+

+

+ALIGN   16

+_aesni_encrypt4:

+

+        movups  xmm0,XMMWORD[rcx]

+        shl     eax,4

+        movups  xmm1,XMMWORD[16+rcx]

+        xorps   xmm2,xmm0

+        xorps   xmm3,xmm0

+        xorps   xmm4,xmm0

+        xorps   xmm5,xmm0

+        movups  xmm0,XMMWORD[32+rcx]

+        lea     rcx,[32+rax*1+rcx]

+        neg     rax

+DB      0x0f,0x1f,0x00

+        add     rax,16

+

+$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[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[((-16))+rax*1+rcx]

+        jnz     NEAR $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

+DB      102,15,56,221,208

+DB      102,15,56,221,216

+DB      102,15,56,221,224

+DB      102,15,56,221,232

+        DB      0F3h,0C3h               ;repret

+

+

+

+ALIGN   16

+_aesni_decrypt4:

+

+        movups  xmm0,XMMWORD[rcx]

+        shl     eax,4

+        movups  xmm1,XMMWORD[16+rcx]

+        xorps   xmm2,xmm0

+        xorps   xmm3,xmm0

+        xorps   xmm4,xmm0

+        xorps   xmm5,xmm0

+        movups  xmm0,XMMWORD[32+rcx]

+        lea     rcx,[32+rax*1+rcx]

+        neg     rax

+DB      0x0f,0x1f,0x00

+        add     rax,16

+

+$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[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[((-16))+rax*1+rcx]

+        jnz     NEAR $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

+DB      102,15,56,223,208

+DB      102,15,56,223,216

+DB      102,15,56,223,224

+DB      102,15,56,223,232

+        DB      0F3h,0C3h               ;repret

+

+

+

+ALIGN   16

+_aesni_encrypt6:

+

+        movups  xmm0,XMMWORD[rcx]

+        shl     eax,4

+        movups  xmm1,XMMWORD[16+rcx]

+        xorps   xmm2,xmm0

+        pxor    xmm3,xmm0

+        pxor    xmm4,xmm0

+DB      102,15,56,220,209

+        lea     rcx,[32+rax*1+rcx]

+        neg     rax

+DB      102,15,56,220,217

+        pxor    xmm5,xmm0

+        pxor    xmm6,xmm0

+DB      102,15,56,220,225

+        pxor    xmm7,xmm0

+        movups  xmm0,XMMWORD[rax*1+rcx]

+        add     rax,16

+        jmp     NEAR $L$enc_loop6_enter

+ALIGN   16

+$L$enc_loop6:

+DB      102,15,56,220,209

+DB      102,15,56,220,217

+DB      102,15,56,220,225

+$L$enc_loop6_enter:

+DB      102,15,56,220,233

+DB      102,15,56,220,241

+DB      102,15,56,220,249

+        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

+DB      102,15,56,220,240

+DB      102,15,56,220,248

+        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]

+        jnz     NEAR $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

+DB      102,15,56,221,208

+DB      102,15,56,221,216

+DB      102,15,56,221,224

+DB      102,15,56,221,232

+DB      102,15,56,221,240

+DB      102,15,56,221,248

+        DB      0F3h,0C3h               ;repret

+

+

+

+ALIGN   16

+_aesni_decrypt6:

+

+        movups  xmm0,XMMWORD[rcx]

+        shl     eax,4

+        movups  xmm1,XMMWORD[16+rcx]

+        xorps   xmm2,xmm0

+        pxor    xmm3,xmm0

+        pxor    xmm4,xmm0

+DB      102,15,56,222,209

+        lea     rcx,[32+rax*1+rcx]

+        neg     rax

+DB      102,15,56,222,217

+        pxor    xmm5,xmm0

+        pxor    xmm6,xmm0

+DB      102,15,56,222,225

+        pxor    xmm7,xmm0

+        movups  xmm0,XMMWORD[rax*1+rcx]

+        add     rax,16

+        jmp     NEAR $L$dec_loop6_enter

+ALIGN   16

+$L$dec_loop6:

+DB      102,15,56,222,209

+DB      102,15,56,222,217

+DB      102,15,56,222,225

+$L$dec_loop6_enter:

+DB      102,15,56,222,233

+DB      102,15,56,222,241

+DB      102,15,56,222,249

+        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

+DB      102,15,56,222,240

+DB      102,15,56,222,248

+        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]

+        jnz     NEAR $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

+DB      102,15,56,223,208

+DB      102,15,56,223,216

+DB      102,15,56,223,224

+DB      102,15,56,223,232

+DB      102,15,56,223,240

+DB      102,15,56,223,248

+        DB      0F3h,0C3h               ;repret

+

+

+

+ALIGN   16

+_aesni_encrypt8:

+

+        movups  xmm0,XMMWORD[rcx]

+        shl     eax,4

+        movups  xmm1,XMMWORD[16+rcx]

+        xorps   xmm2,xmm0

+        xorps   xmm3,xmm0

+        pxor    xmm4,xmm0

+        pxor    xmm5,xmm0

+        pxor    xmm6,xmm0

+        lea     rcx,[32+rax*1+rcx]

+        neg     rax

+DB      102,15,56,220,209

+        pxor    xmm7,xmm0

+        pxor    xmm8,xmm0

+DB      102,15,56,220,217

+        pxor    xmm9,xmm0

+        movups  xmm0,XMMWORD[rax*1+rcx]

+        add     rax,16

+        jmp     NEAR $L$enc_loop8_inner

+ALIGN   16

+$L$enc_loop8:

+DB      102,15,56,220,209

+DB      102,15,56,220,217

+$L$enc_loop8_inner:

+DB      102,15,56,220,225

+DB      102,15,56,220,233

+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

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

+DB      102,15,56,220,224

+DB      102,15,56,220,232

+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[((-16))+rax*1+rcx]

+        jnz     NEAR $L$enc_loop8

+

+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

+DB      102,68,15,56,220,193

+DB      102,68,15,56,220,201

+DB      102,15,56,221,208

+DB      102,15,56,221,216

+DB      102,15,56,221,224

+DB      102,15,56,221,232

+DB      102,15,56,221,240

+DB      102,15,56,221,248

+DB      102,68,15,56,221,192

+DB      102,68,15,56,221,200

+        DB      0F3h,0C3h               ;repret

+

+

+

+ALIGN   16

+_aesni_decrypt8:

+

+        movups  xmm0,XMMWORD[rcx]

+        shl     eax,4

+        movups  xmm1,XMMWORD[16+rcx]

+        xorps   xmm2,xmm0

+        xorps   xmm3,xmm0

+        pxor    xmm4,xmm0

+        pxor    xmm5,xmm0

+        pxor    xmm6,xmm0

+        lea     rcx,[32+rax*1+rcx]

+        neg     rax

+DB      102,15,56,222,209

+        pxor    xmm7,xmm0

+        pxor    xmm8,xmm0

+DB      102,15,56,222,217

+        pxor    xmm9,xmm0

+        movups  xmm0,XMMWORD[rax*1+rcx]

+        add     rax,16

+        jmp     NEAR $L$dec_loop8_inner

+ALIGN   16

+$L$dec_loop8:

+DB      102,15,56,222,209

+DB      102,15,56,222,217

+$L$dec_loop8_inner:

+DB      102,15,56,222,225

+DB      102,15,56,222,233

+DB      102,15,56,222,241

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

+DB      102,15,56,222,240

+DB      102,15,56,222,248

+DB      102,68,15,56,222,192

+DB      102,68,15,56,222,200

+        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]

+        jnz     NEAR $L$dec_loop8

+

+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

+DB      102,68,15,56,222,193

+DB      102,68,15,56,222,201

+DB      102,15,56,223,208

+DB      102,15,56,223,216

+DB      102,15,56,223,224

+DB      102,15,56,223,232

+DB      102,15,56,223,240

+DB      102,15,56,223,248

+DB      102,68,15,56,223,192

+DB      102,68,15,56,223,200

+        DB      0F3h,0C3h               ;repret

+

+

+global  aesni_ecb_encrypt

+

+ALIGN   16

+aesni_ecb_encrypt:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_aesni_ecb_encrypt:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+        mov     rcx,r9

+        mov     r8,QWORD[40+rsp]

+

+

+

+        lea     rsp,[((-88))+rsp]

+        movaps  XMMWORD[rsp],xmm6

+        movaps  XMMWORD[16+rsp],xmm7

+        movaps  XMMWORD[32+rsp],xmm8

+        movaps  XMMWORD[48+rsp],xmm9

+$L$ecb_enc_body:

+        and     rdx,-16

+        jz      NEAR $L$ecb_ret

+

+        mov     eax,DWORD[240+rcx]

+        movups  xmm0,XMMWORD[rcx]

+        mov     r11,rcx

+        mov     r10d,eax

+        test    r8d,r8d

+        jz      NEAR $L$ecb_decrypt

+

+        cmp     rdx,0x80

+        jb      NEAR $L$ecb_enc_tail

+

+        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[rsi],xmm2

+        mov     rcx,r11

+        movdqu  xmm2,XMMWORD[rdi]

+        mov     eax,r10d

+        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,0x80

+        jnc     NEAR $L$ecb_enc_loop8

+

+        movups  XMMWORD[rsi],xmm2

+        mov     rcx,r11

+        movups  XMMWORD[16+rsi],xmm3

+        mov     eax,r10d

+        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[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]

+        xorps   xmm9,xmm9

+        call    _aesni_encrypt8

+        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[rcx]

+        movups  xmm1,XMMWORD[16+rcx]

+        lea     rcx,[32+rcx]

+        xorps   xmm2,xmm0

+$L$oop_enc1_3:

+DB      102,15,56,220,209

+        dec     eax

+        movups  xmm1,XMMWORD[rcx]

+        lea     rcx,[16+rcx]

+        jnz     NEAR $L$oop_enc1_3

+DB      102,15,56,221,209

+        movups  XMMWORD[rsi],xmm2

+        jmp     NEAR $L$ecb_ret

+ALIGN   16

+$L$ecb_enc_two:

+        call    _aesni_encrypt2

+        movups  XMMWORD[rsi],xmm2

+        movups  XMMWORD[16+rsi],xmm3

+        jmp     NEAR $L$ecb_ret

+ALIGN   16

+$L$ecb_enc_three:

+        call    _aesni_encrypt3

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

+        call    _aesni_encrypt4

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

+        xorps   xmm7,xmm7

+        call    _aesni_encrypt6

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

+        call    _aesni_encrypt6

+        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,0x80

+        jb      NEAR $L$ecb_dec_tail

+

+        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[rsi],xmm2

+        mov     rcx,r11

+        movdqu  xmm2,XMMWORD[rdi]

+        mov     eax,r10d

+        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[r11]

+        sub     rdx,0x80

+        jnc     NEAR $L$ecb_dec_loop8

+

+        movups  XMMWORD[rsi],xmm2

+        pxor    xmm2,xmm2

+        mov     rcx,r11

+        movups  XMMWORD[16+rsi],xmm3

+        pxor    xmm3,xmm3

+        mov     eax,r10d

+        movups  XMMWORD[32+rsi],xmm4

+        pxor    xmm4,xmm4

+        movups  XMMWORD[48+rsi],xmm5

+        pxor    xmm5,xmm5

+        movups  XMMWORD[64+rsi],xmm6

+        pxor    xmm6,xmm6

+        movups  XMMWORD[80+rsi],xmm7

+        pxor    xmm7,xmm7

+        movups  XMMWORD[96+rsi],xmm8

+        pxor    xmm8,xmm8

+        movups  XMMWORD[112+rsi],xmm9

+        pxor    xmm9,xmm9

+        lea     rsi,[128+rsi]

+        add     rdx,0x80

+        jz      NEAR $L$ecb_ret

+

+$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]

+        xorps   xmm9,xmm9

+        call    _aesni_decrypt8

+        movups  XMMWORD[rsi],xmm2

+        pxor    xmm2,xmm2

+        movups  XMMWORD[16+rsi],xmm3

+        pxor    xmm3,xmm3

+        movups  XMMWORD[32+rsi],xmm4

+        pxor    xmm4,xmm4

+        movups  XMMWORD[48+rsi],xmm5

+        pxor    xmm5,xmm5

+        movups  XMMWORD[64+rsi],xmm6

+        pxor    xmm6,xmm6

+        movups  XMMWORD[80+rsi],xmm7

+        pxor    xmm7,xmm7

+        movups  XMMWORD[96+rsi],xmm8

+        pxor    xmm8,xmm8

+        pxor    xmm9,xmm9

+        jmp     NEAR $L$ecb_ret

+ALIGN   16

+$L$ecb_dec_one:

+        movups  xmm0,XMMWORD[rcx]

+        movups  xmm1,XMMWORD[16+rcx]

+        lea     rcx,[32+rcx]

+        xorps   xmm2,xmm0

+$L$oop_dec1_4:

+DB      102,15,56,222,209

+        dec     eax

+        movups  xmm1,XMMWORD[rcx]

+        lea     rcx,[16+rcx]

+        jnz     NEAR $L$oop_dec1_4

+DB      102,15,56,223,209

+        movups  XMMWORD[rsi],xmm2

+        pxor    xmm2,xmm2

+        jmp     NEAR $L$ecb_ret

+ALIGN   16

+$L$ecb_dec_two:

+        call    _aesni_decrypt2

+        movups  XMMWORD[rsi],xmm2

+        pxor    xmm2,xmm2

+        movups  XMMWORD[16+rsi],xmm3

+        pxor    xmm3,xmm3

+        jmp     NEAR $L$ecb_ret

+ALIGN   16

+$L$ecb_dec_three:

+        call    _aesni_decrypt3

+        movups  XMMWORD[rsi],xmm2

+        pxor    xmm2,xmm2

+        movups  XMMWORD[16+rsi],xmm3

+        pxor    xmm3,xmm3

+        movups  XMMWORD[32+rsi],xmm4

+        pxor    xmm4,xmm4

+        jmp     NEAR $L$ecb_ret

+ALIGN   16

+$L$ecb_dec_four:

+        call    _aesni_decrypt4

+        movups  XMMWORD[rsi],xmm2

+        pxor    xmm2,xmm2

+        movups  XMMWORD[16+rsi],xmm3

+        pxor    xmm3,xmm3

+        movups  XMMWORD[32+rsi],xmm4

+        pxor    xmm4,xmm4

+        movups  XMMWORD[48+rsi],xmm5

+        pxor    xmm5,xmm5

+        jmp     NEAR $L$ecb_ret

+ALIGN   16

+$L$ecb_dec_five:

+        xorps   xmm7,xmm7

+        call    _aesni_decrypt6

+        movups  XMMWORD[rsi],xmm2

+        pxor    xmm2,xmm2

+        movups  XMMWORD[16+rsi],xmm3

+        pxor    xmm3,xmm3

+        movups  XMMWORD[32+rsi],xmm4

+        pxor    xmm4,xmm4

+        movups  XMMWORD[48+rsi],xmm5

+        pxor    xmm5,xmm5

+        movups  XMMWORD[64+rsi],xmm6

+        pxor    xmm6,xmm6

+        pxor    xmm7,xmm7

+        jmp     NEAR $L$ecb_ret

+ALIGN   16

+$L$ecb_dec_six:

+        call    _aesni_decrypt6

+        movups  XMMWORD[rsi],xmm2

+        pxor    xmm2,xmm2

+        movups  XMMWORD[16+rsi],xmm3

+        pxor    xmm3,xmm3

+        movups  XMMWORD[32+rsi],xmm4

+        pxor    xmm4,xmm4

+        movups  XMMWORD[48+rsi],xmm5

+        pxor    xmm5,xmm5

+        movups  XMMWORD[64+rsi],xmm6

+        pxor    xmm6,xmm6

+        movups  XMMWORD[80+rsi],xmm7

+        pxor    xmm7,xmm7

+

+$L$ecb_ret:

+        xorps   xmm0,xmm0

+        pxor    xmm1,xmm1

+        movaps  xmm6,XMMWORD[rsp]

+        movaps  XMMWORD[rsp],xmm0

+        movaps  xmm7,XMMWORD[16+rsp]

+        movaps  XMMWORD[16+rsp],xmm0

+        movaps  xmm8,XMMWORD[32+rsp]

+        movaps  XMMWORD[32+rsp],xmm0

+        movaps  xmm9,XMMWORD[48+rsp]

+        movaps  XMMWORD[48+rsp],xmm0

+        lea     rsp,[88+rsp]

+$L$ecb_enc_ret:

+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue

+        mov     rsi,QWORD[16+rsp]

+        DB      0F3h,0C3h               ;repret

+

+$L$SEH_end_aesni_ecb_encrypt:

+global  aesni_ccm64_encrypt_blocks

+

+ALIGN   16

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

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+        mov     rcx,r9

+        mov     r8,QWORD[40+rsp]

+        mov     r9,QWORD[48+rsp]

+

+

+

+        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,[rcx]

+        movdqu  xmm3,XMMWORD[r9]

+        movdqa  xmm2,xmm6

+        lea     rcx,[32+rax*1+rcx]

+DB      102,15,56,0,247

+        sub     r10,rax

+        jmp     NEAR $L$ccm64_enc_outer

+ALIGN   16

+$L$ccm64_enc_outer:

+        movups  xmm0,XMMWORD[r11]

+        mov     rax,r10

+        movups  xmm8,XMMWORD[rdi]

+

+        xorps   xmm2,xmm0

+        movups  xmm1,XMMWORD[16+r11]

+        xorps   xmm0,xmm8

+        xorps   xmm3,xmm0

+        movups  xmm0,XMMWORD[32+r11]

+

+$L$ccm64_enc2_loop:

+DB      102,15,56,220,209

+DB      102,15,56,220,217

+        movups  xmm1,XMMWORD[rax*1+rcx]

+        add     rax,32

+DB      102,15,56,220,208

+DB      102,15,56,220,216

+        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

+        dec     rdx

+DB      102,15,56,221,208

+DB      102,15,56,221,216

+

+        lea     rdi,[16+rdi]

+        xorps   xmm8,xmm2

+        movdqa  xmm2,xmm6

+        movups  XMMWORD[rsi],xmm8

+DB      102,15,56,0,215

+        lea     rsi,[16+rsi]

+        jnz     NEAR $L$ccm64_enc_outer

+

+        pxor    xmm0,xmm0

+        pxor    xmm1,xmm1

+        pxor    xmm2,xmm2

+        movups  XMMWORD[r9],xmm3

+        pxor    xmm3,xmm3

+        pxor    xmm8,xmm8

+        pxor    xmm6,xmm6

+        movaps  xmm6,XMMWORD[rsp]

+        movaps  XMMWORD[rsp],xmm0

+        movaps  xmm7,XMMWORD[16+rsp]

+        movaps  XMMWORD[16+rsp],xmm0

+        movaps  xmm8,XMMWORD[32+rsp]

+        movaps  XMMWORD[32+rsp],xmm0

+        movaps  xmm9,XMMWORD[48+rsp]

+        movaps  XMMWORD[48+rsp],xmm0

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

+global  aesni_ccm64_decrypt_blocks

+

+ALIGN   16

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

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+        mov     rcx,r9

+        mov     r8,QWORD[40+rsp]

+        mov     r9,QWORD[48+rsp]

+

+

+

+        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[rcx]

+        movups  xmm1,XMMWORD[16+rcx]

+        lea     rcx,[32+rcx]

+        xorps   xmm2,xmm0

+$L$oop_enc1_5:

+DB      102,15,56,220,209

+        dec     eax

+        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[rdi]

+        paddq   xmm6,xmm9

+        lea     rdi,[16+rdi]

+        sub     rax,r10

+        lea     rcx,[32+r10*1+r11]

+        mov     r10,rax

+        jmp     NEAR $L$ccm64_dec_outer

+ALIGN   16

+$L$ccm64_dec_outer:

+        xorps   xmm8,xmm2

+        movdqa  xmm2,xmm6

+        movups  XMMWORD[rsi],xmm8

+        lea     rsi,[16+rsi]

+DB      102,15,56,0,215

+

+        sub     rdx,1

+        jz      NEAR $L$ccm64_dec_break

+

+        movups  xmm0,XMMWORD[r11]

+        mov     rax,r10

+        movups  xmm1,XMMWORD[16+r11]

+        xorps   xmm8,xmm0

+        xorps   xmm2,xmm0

+        xorps   xmm3,xmm8

+        movups  xmm0,XMMWORD[32+r11]

+        jmp     NEAR $L$ccm64_dec2_loop

+ALIGN   16

+$L$ccm64_dec2_loop:

+DB      102,15,56,220,209

+DB      102,15,56,220,217

+        movups  xmm1,XMMWORD[rax*1+rcx]

+        add     rax,32

+DB      102,15,56,220,208

+DB      102,15,56,220,216

+        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,[16+rdi]

+        jmp     NEAR $L$ccm64_dec_outer

+

+ALIGN   16

+$L$ccm64_dec_break:

+

+        mov     eax,DWORD[240+r11]

+        movups  xmm0,XMMWORD[r11]

+        movups  xmm1,XMMWORD[16+r11]

+        xorps   xmm8,xmm0

+        lea     r11,[32+r11]

+        xorps   xmm3,xmm8

+$L$oop_enc1_6:

+DB      102,15,56,220,217

+        dec     eax

+        movups  xmm1,XMMWORD[r11]

+        lea     r11,[16+r11]

+        jnz     NEAR $L$oop_enc1_6

+DB      102,15,56,221,217

+        pxor    xmm0,xmm0

+        pxor    xmm1,xmm1

+        pxor    xmm2,xmm2

+        movups  XMMWORD[r9],xmm3

+        pxor    xmm3,xmm3

+        pxor    xmm8,xmm8

+        pxor    xmm6,xmm6

+        movaps  xmm6,XMMWORD[rsp]

+        movaps  XMMWORD[rsp],xmm0

+        movaps  xmm7,XMMWORD[16+rsp]

+        movaps  XMMWORD[16+rsp],xmm0

+        movaps  xmm8,XMMWORD[32+rsp]

+        movaps  XMMWORD[32+rsp],xmm0

+        movaps  xmm9,XMMWORD[48+rsp]

+        movaps  XMMWORD[48+rsp],xmm0

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

+global  aesni_ctr32_encrypt_blocks

+

+ALIGN   16

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

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+        mov     rcx,r9

+        mov     r8,QWORD[40+rsp]

+

+

+

+        cmp     rdx,1

+        jne     NEAR $L$ctr32_bulk

+

+

+

+        movups  xmm2,XMMWORD[r8]

+        movups  xmm3,XMMWORD[rdi]

+        mov     edx,DWORD[240+rcx]

+        movups  xmm0,XMMWORD[rcx]

+        movups  xmm1,XMMWORD[16+rcx]

+        lea     rcx,[32+rcx]

+        xorps   xmm2,xmm0

+$L$oop_enc1_7:

+DB      102,15,56,220,209

+        dec     edx

+        movups  xmm1,XMMWORD[rcx]

+        lea     rcx,[16+rcx]

+        jnz     NEAR $L$oop_enc1_7

+DB      102,15,56,221,209

+        pxor    xmm0,xmm0

+        pxor    xmm1,xmm1

+        xorps   xmm2,xmm3

+        pxor    xmm3,xmm3

+        movups  XMMWORD[rsi],xmm2

+        xorps   xmm2,xmm2

+        jmp     NEAR $L$ctr32_epilogue

+

+ALIGN   16

+$L$ctr32_bulk:

+        lea     r11,[rsp]

+

+        push    rbp

+

+        sub     rsp,288

+        and     rsp,-16

+        movaps  XMMWORD[(-168)+r11],xmm6

+        movaps  XMMWORD[(-152)+r11],xmm7

+        movaps  XMMWORD[(-136)+r11],xmm8

+        movaps  XMMWORD[(-120)+r11],xmm9

+        movaps  XMMWORD[(-104)+r11],xmm10

+        movaps  XMMWORD[(-88)+r11],xmm11

+        movaps  XMMWORD[(-72)+r11],xmm12

+        movaps  XMMWORD[(-56)+r11],xmm13

+        movaps  XMMWORD[(-40)+r11],xmm14

+        movaps  XMMWORD[(-24)+r11],xmm15

+$L$ctr32_body:

+

+

+

+

+        movdqu  xmm2,XMMWORD[r8]

+        movdqu  xmm0,XMMWORD[rcx]

+        mov     r8d,DWORD[12+r8]

+        pxor    xmm2,xmm0

+        mov     ebp,DWORD[12+rcx]

+        movdqa  XMMWORD[rsp],xmm2

+        bswap   r8d

+        movdqa  xmm3,xmm2

+        movdqa  xmm4,xmm2

+        movdqa  xmm5,xmm2

+        movdqa  XMMWORD[64+rsp],xmm2

+        movdqa  XMMWORD[80+rsp],xmm2

+        movdqa  XMMWORD[96+rsp],xmm2

+        mov     r10,rdx

+        movdqa  XMMWORD[112+rsp],xmm2

+

+        lea     rax,[1+r8]

+        lea     rdx,[2+r8]

+        bswap   eax

+        bswap   edx

+        xor     eax,ebp

+        xor     edx,ebp

+DB      102,15,58,34,216,3

+        lea     rax,[3+r8]

+        movdqa  XMMWORD[16+rsp],xmm3

+DB      102,15,58,34,226,3

+        bswap   eax

+        mov     rdx,r10

+        lea     r10,[4+r8]

+        movdqa  XMMWORD[32+rsp],xmm4

+        xor     eax,ebp

+        bswap   r10d

+DB      102,15,58,34,232,3

+        xor     r10d,ebp

+        movdqa  XMMWORD[48+rsp],xmm5

+        lea     r9,[5+r8]

+        mov     DWORD[((64+12))+rsp],r10d

+        bswap   r9d

+        lea     r10,[6+r8]

+        mov     eax,DWORD[240+rcx]

+        xor     r9d,ebp

+        bswap   r10d

+        mov     DWORD[((80+12))+rsp],r9d

+        xor     r10d,ebp

+        lea     r9,[7+r8]

+        mov     DWORD[((96+12))+rsp],r10d

+        bswap   r9d

+        mov     r10d,DWORD[((OPENSSL_ia32cap_P+4))]

+        xor     r9d,ebp

+        and     r10d,71303168

+        mov     DWORD[((112+12))+rsp],r9d

+

+        movups  xmm1,XMMWORD[16+rcx]

+

+        movdqa  xmm6,XMMWORD[64+rsp]

+        movdqa  xmm7,XMMWORD[80+rsp]

+

+        cmp     rdx,8

+        jb      NEAR $L$ctr32_tail

+

+        sub     rdx,6

+        cmp     r10d,4194304

+        je      NEAR $L$ctr32_6x

+

+        lea     rcx,[128+rcx]

+        sub     rdx,2

+        jmp     NEAR $L$ctr32_loop8

+

+ALIGN   16

+$L$ctr32_6x:

+        shl     eax,4

+        mov     r10d,48

+        bswap   ebp

+        lea     rcx,[32+rax*1+rcx]

+        sub     r10,rax

+        jmp     NEAR $L$ctr32_loop6

+

+ALIGN   16

+$L$ctr32_loop6:

+        add     r8d,6

+        movups  xmm0,XMMWORD[((-48))+r10*1+rcx]

+DB      102,15,56,220,209

+        mov     eax,r8d

+        xor     eax,ebp

+DB      102,15,56,220,217

+DB      0x0f,0x38,0xf1,0x44,0x24,12

+        lea     eax,[1+r8]

+DB      102,15,56,220,225

+        xor     eax,ebp

+DB      0x0f,0x38,0xf1,0x44,0x24,28

+DB      102,15,56,220,233

+        lea     eax,[2+r8]

+        xor     eax,ebp

+DB      102,15,56,220,241

+DB      0x0f,0x38,0xf1,0x44,0x24,44

+        lea     eax,[3+r8]

+DB      102,15,56,220,249

+        movups  xmm1,XMMWORD[((-32))+r10*1+rcx]

+        xor     eax,ebp

+

+DB      102,15,56,220,208

+DB      0x0f,0x38,0xf1,0x44,0x24,60

+        lea     eax,[4+r8]

+DB      102,15,56,220,216

+        xor     eax,ebp

+DB      0x0f,0x38,0xf1,0x44,0x24,76

+DB      102,15,56,220,224

+        lea     eax,[5+r8]

+        xor     eax,ebp

+DB      102,15,56,220,232

+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[((-16))+r10*1+rcx]

+

+        call    $L$enc_loop6

+

+        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[rsp]

+        pxor    xmm9,xmm3

+        movaps  xmm3,XMMWORD[16+rsp]

+        pxor    xmm10,xmm4

+        movaps  xmm4,XMMWORD[32+rsp]

+        pxor    xmm11,xmm5

+        movaps  xmm5,XMMWORD[48+rsp]

+        pxor    xmm12,xmm6

+        movaps  xmm6,XMMWORD[64+rsp]

+        pxor    xmm13,xmm7

+        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     NEAR $L$ctr32_loop6

+

+        add     rdx,6

+        jz      NEAR $L$ctr32_done

+

+        lea     eax,[((-48))+r10]

+        lea     rcx,[((-80))+r10*1+rcx]

+        neg     eax

+        shr     eax,4

+        jmp     NEAR $L$ctr32_tail

+

+ALIGN   32

+$L$ctr32_loop8:

+        add     r8d,8

+        movdqa  xmm8,XMMWORD[96+rsp]

+DB      102,15,56,220,209

+        mov     r9d,r8d

+        movdqa  xmm9,XMMWORD[112+rsp]

+DB      102,15,56,220,217

+        bswap   r9d

+        movups  xmm0,XMMWORD[((32-128))+rcx]

+DB      102,15,56,220,225

+        xor     r9d,ebp

+        nop

+DB      102,15,56,220,233

+        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[((48-128))+rcx]

+        bswap   r9d

+DB      102,15,56,220,208

+DB      102,15,56,220,216

+        xor     r9d,ebp

+DB      0x66,0x90

+DB      102,15,56,220,224

+DB      102,15,56,220,232

+        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[((64-128))+rcx]

+        bswap   r9d

+DB      102,15,56,220,209

+DB      102,15,56,220,217

+        xor     r9d,ebp

+DB      0x66,0x90

+DB      102,15,56,220,225

+DB      102,15,56,220,233

+        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[((80-128))+rcx]

+        bswap   r9d

+DB      102,15,56,220,208

+DB      102,15,56,220,216

+        xor     r9d,ebp

+DB      0x66,0x90

+DB      102,15,56,220,224

+DB      102,15,56,220,232

+        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[((96-128))+rcx]

+        bswap   r9d

+DB      102,15,56,220,209

+DB      102,15,56,220,217

+        xor     r9d,ebp

+DB      0x66,0x90

+DB      102,15,56,220,225

+DB      102,15,56,220,233

+        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[((112-128))+rcx]

+        bswap   r9d

+DB      102,15,56,220,208

+DB      102,15,56,220,216

+        xor     r9d,ebp

+DB      0x66,0x90

+DB      102,15,56,220,224

+DB      102,15,56,220,232

+        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[((128-128))+rcx]

+        bswap   r9d

+DB      102,15,56,220,209

+DB      102,15,56,220,217

+        xor     r9d,ebp

+DB      0x66,0x90

+DB      102,15,56,220,225

+DB      102,15,56,220,233

+        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[((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,ebp

+        movdqu  xmm10,XMMWORD[rdi]

+DB      102,15,56,220,232

+        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[((160-128))+rcx]

+

+        jb      NEAR $L$ctr32_enc_done

+

+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

+DB      102,68,15,56,220,193

+DB      102,68,15,56,220,201

+        movups  xmm1,XMMWORD[((176-128))+rcx]

+

+DB      102,15,56,220,208

+DB      102,15,56,220,216

+DB      102,15,56,220,224

+DB      102,15,56,220,232

+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[((192-128))+rcx]

+        je      NEAR $L$ctr32_enc_done

+

+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

+DB      102,68,15,56,220,193

+DB      102,68,15,56,220,201

+        movups  xmm1,XMMWORD[((208-128))+rcx]

+

+DB      102,15,56,220,208

+DB      102,15,56,220,216

+DB      102,15,56,220,224

+DB      102,15,56,220,232

+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[((224-128))+rcx]

+        jmp     NEAR $L$ctr32_enc_done

+

+ALIGN   16

+$L$ctr32_enc_done:

+        movdqu  xmm11,XMMWORD[16+rdi]

+        pxor    xmm10,xmm0

+        movdqu  xmm12,XMMWORD[32+rdi]

+        pxor    xmm11,xmm0

+        movdqu  xmm13,XMMWORD[48+rdi]

+        pxor    xmm12,xmm0

+        movdqu  xmm14,XMMWORD[64+rdi]

+        pxor    xmm13,xmm0

+        movdqu  xmm15,XMMWORD[80+rdi]

+        pxor    xmm14,xmm0

+        pxor    xmm15,xmm0

+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

+DB      102,68,15,56,220,193

+DB      102,68,15,56,220,201

+        movdqu  xmm1,XMMWORD[96+rdi]

+        lea     rdi,[128+rdi]

+

+DB      102,65,15,56,221,210

+        pxor    xmm1,xmm0

+        movdqu  xmm10,XMMWORD[((112-128))+rdi]

+DB      102,65,15,56,221,219

+        pxor    xmm10,xmm0

+        movdqa  xmm11,XMMWORD[rsp]

+DB      102,65,15,56,221,228

+DB      102,65,15,56,221,237

+        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[48+rsp]

+        movdqa  xmm15,XMMWORD[64+rsp]

+DB      102,68,15,56,221,193

+        movdqa  xmm0,XMMWORD[80+rsp]

+        movups  xmm1,XMMWORD[((16-128))+rcx]

+DB      102,69,15,56,221,202

+

+        movups  XMMWORD[rsi],xmm2

+        movdqa  xmm2,xmm11

+        movups  XMMWORD[16+rsi],xmm3

+        movdqa  xmm3,xmm12

+        movups  XMMWORD[32+rsi],xmm4

+        movdqa  xmm4,xmm13

+        movups  XMMWORD[48+rsi],xmm5

+        movdqa  xmm5,xmm14

+        movups  XMMWORD[64+rsi],xmm6

+        movdqa  xmm6,xmm15

+        movups  XMMWORD[80+rsi],xmm7

+        movdqa  xmm7,xmm0

+        movups  XMMWORD[96+rsi],xmm8

+        movups  XMMWORD[112+rsi],xmm9

+        lea     rsi,[128+rsi]

+

+        sub     rdx,8

+        jnc     NEAR $L$ctr32_loop8

+

+        add     rdx,8

+        jz      NEAR $L$ctr32_done

+        lea     rcx,[((-128))+rcx]

+

+$L$ctr32_tail:

+

+

+        lea     rcx,[16+rcx]

+        cmp     rdx,4

+        jb      NEAR $L$ctr32_loop3

+        je      NEAR $L$ctr32_loop4

+

+

+        shl     eax,4

+        movdqa  xmm8,XMMWORD[96+rsp]

+        pxor    xmm9,xmm9

+

+        movups  xmm0,XMMWORD[16+rcx]

+DB      102,15,56,220,209

+DB      102,15,56,220,217

+        lea     rcx,[((32-16))+rax*1+rcx]

+        neg     rax

+DB      102,15,56,220,225

+        add     rax,16

+        movups  xmm10,XMMWORD[rdi]

+DB      102,15,56,220,233

+DB      102,15,56,220,241

+        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[48+rdi]

+        pxor    xmm2,xmm10

+        movdqu  xmm10,XMMWORD[64+rdi]

+        pxor    xmm3,xmm11

+        movdqu  XMMWORD[rsi],xmm2

+        pxor    xmm4,xmm12

+        movdqu  XMMWORD[16+rsi],xmm3

+        pxor    xmm5,xmm13

+        movdqu  XMMWORD[32+rsi],xmm4

+        pxor    xmm6,xmm10

+        movdqu  XMMWORD[48+rsi],xmm5

+        movdqu  XMMWORD[64+rsi],xmm6

+        cmp     rdx,6

+        jb      NEAR $L$ctr32_done

+

+        movups  xmm11,XMMWORD[80+rdi]

+        xorps   xmm7,xmm11

+        movups  XMMWORD[80+rsi],xmm7

+        je      NEAR $L$ctr32_done

+

+        movups  xmm12,XMMWORD[96+rdi]

+        xorps   xmm8,xmm12

+        movups  XMMWORD[96+rsi],xmm8

+        jmp     NEAR $L$ctr32_done

+

+ALIGN   32

+$L$ctr32_loop4:

+DB      102,15,56,220,209

+        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[rcx]

+        jnz     NEAR $L$ctr32_loop4

+DB      102,15,56,221,209

+DB      102,15,56,221,217

+        movups  xmm10,XMMWORD[rdi]

+        movups  xmm11,XMMWORD[16+rdi]

+DB      102,15,56,221,225

+DB      102,15,56,221,233

+        movups  xmm12,XMMWORD[32+rdi]

+        movups  xmm13,XMMWORD[48+rdi]

+

+        xorps   xmm2,xmm10

+        movups  XMMWORD[rsi],xmm2

+        xorps   xmm3,xmm11

+        movups  XMMWORD[16+rsi],xmm3

+        pxor    xmm4,xmm12

+        movdqu  XMMWORD[32+rsi],xmm4

+        pxor    xmm5,xmm13

+        movdqu  XMMWORD[48+rsi],xmm5

+        jmp     NEAR $L$ctr32_done

+

+ALIGN   32

+$L$ctr32_loop3:

+DB      102,15,56,220,209

+        lea     rcx,[16+rcx]

+        dec     eax

+DB      102,15,56,220,217

+DB      102,15,56,220,225

+        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[rdi]

+        xorps   xmm2,xmm10

+        movups  XMMWORD[rsi],xmm2

+        cmp     rdx,2

+        jb      NEAR $L$ctr32_done

+

+        movups  xmm11,XMMWORD[16+rdi]

+        xorps   xmm3,xmm11

+        movups  XMMWORD[16+rsi],xmm3

+        je      NEAR $L$ctr32_done

+

+        movups  xmm12,XMMWORD[32+rdi]

+        xorps   xmm4,xmm12

+        movups  XMMWORD[32+rsi],xmm4

+

+$L$ctr32_done:

+        xorps   xmm0,xmm0

+        xor     ebp,ebp

+        pxor    xmm1,xmm1

+        pxor    xmm2,xmm2

+        pxor    xmm3,xmm3

+        pxor    xmm4,xmm4

+        pxor    xmm5,xmm5

+        movaps  xmm6,XMMWORD[((-168))+r11]

+        movaps  XMMWORD[(-168)+r11],xmm0

+        movaps  xmm7,XMMWORD[((-152))+r11]

+        movaps  XMMWORD[(-152)+r11],xmm0

+        movaps  xmm8,XMMWORD[((-136))+r11]

+        movaps  XMMWORD[(-136)+r11],xmm0

+        movaps  xmm9,XMMWORD[((-120))+r11]

+        movaps  XMMWORD[(-120)+r11],xmm0

+        movaps  xmm10,XMMWORD[((-104))+r11]

+        movaps  XMMWORD[(-104)+r11],xmm0

+        movaps  xmm11,XMMWORD[((-88))+r11]

+        movaps  XMMWORD[(-88)+r11],xmm0

+        movaps  xmm12,XMMWORD[((-72))+r11]

+        movaps  XMMWORD[(-72)+r11],xmm0

+        movaps  xmm13,XMMWORD[((-56))+r11]

+        movaps  XMMWORD[(-56)+r11],xmm0

+        movaps  xmm14,XMMWORD[((-40))+r11]

+        movaps  XMMWORD[(-40)+r11],xmm0

+        movaps  xmm15,XMMWORD[((-24))+r11]

+        movaps  XMMWORD[(-24)+r11],xmm0

+        movaps  XMMWORD[rsp],xmm0

+        movaps  XMMWORD[16+rsp],xmm0

+        movaps  XMMWORD[32+rsp],xmm0

+        movaps  XMMWORD[48+rsp],xmm0

+        movaps  XMMWORD[64+rsp],xmm0

+        movaps  XMMWORD[80+rsp],xmm0

+        movaps  XMMWORD[96+rsp],xmm0

+        movaps  XMMWORD[112+rsp],xmm0

+        mov     rbp,QWORD[((-8))+r11]

+

+        lea     rsp,[r11]

+

+$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:

+global  aesni_xts_encrypt

+

+ALIGN   16

+aesni_xts_encrypt:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_aesni_xts_encrypt:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+        mov     rcx,r9

+        mov     r8,QWORD[40+rsp]

+        mov     r9,QWORD[48+rsp]

+

+

+

+        lea     r11,[rsp]

+

+        push    rbp

+

+        sub     rsp,272

+        and     rsp,-16

+        movaps  XMMWORD[(-168)+r11],xmm6

+        movaps  XMMWORD[(-152)+r11],xmm7

+        movaps  XMMWORD[(-136)+r11],xmm8

+        movaps  XMMWORD[(-120)+r11],xmm9

+        movaps  XMMWORD[(-104)+r11],xmm10

+        movaps  XMMWORD[(-88)+r11],xmm11

+        movaps  XMMWORD[(-72)+r11],xmm12

+        movaps  XMMWORD[(-56)+r11],xmm13

+        movaps  XMMWORD[(-40)+r11],xmm14

+        movaps  XMMWORD[(-24)+r11],xmm15

+$L$xts_enc_body:

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

+DB      102,15,56,220,209

+        dec     eax

+        movups  xmm1,XMMWORD[r8]

+        lea     r8,[16+r8]

+        jnz     NEAR $L$oop_enc1_8

+DB      102,15,56,221,209

+        movups  xmm0,XMMWORD[rcx]

+        mov     rbp,rcx

+        mov     eax,r10d

+        shl     r10d,4

+        mov     r9,rdx

+        and     rdx,-16

+

+        movups  xmm1,XMMWORD[16+r10*1+rcx]

+

+        movdqa  xmm8,XMMWORD[$L$xts_magic]

+        movdqa  xmm15,xmm2

+        pshufd  xmm9,xmm2,0x5f

+        pxor    xmm1,xmm0

+        movdqa  xmm14,xmm9

+        paddd   xmm9,xmm9

+        movdqa  xmm10,xmm15

+        psrad   xmm14,31

+        paddq   xmm15,xmm15

+        pand    xmm14,xmm8

+        pxor    xmm10,xmm0

+        pxor    xmm15,xmm14

+        movdqa  xmm14,xmm9

+        paddd   xmm9,xmm9

+        movdqa  xmm11,xmm15

+        psrad   xmm14,31

+        paddq   xmm15,xmm15

+        pand    xmm14,xmm8

+        pxor    xmm11,xmm0

+        pxor    xmm15,xmm14

+        movdqa  xmm14,xmm9

+        paddd   xmm9,xmm9

+        movdqa  xmm12,xmm15

+        psrad   xmm14,31

+        paddq   xmm15,xmm15

+        pand    xmm14,xmm8

+        pxor    xmm12,xmm0

+        pxor    xmm15,xmm14

+        movdqa  xmm14,xmm9

+        paddd   xmm9,xmm9

+        movdqa  xmm13,xmm15

+        psrad   xmm14,31

+        paddq   xmm15,xmm15

+        pand    xmm14,xmm8

+        pxor    xmm13,xmm0

+        pxor    xmm15,xmm14

+        movdqa  xmm14,xmm15

+        psrad   xmm9,31

+        paddq   xmm15,xmm15

+        pand    xmm9,xmm8

+        pxor    xmm14,xmm0

+        pxor    xmm15,xmm9

+        movaps  XMMWORD[96+rsp],xmm1

+

+        sub     rdx,16*6

+        jc      NEAR $L$xts_enc_short

+

+        mov     eax,16+96

+        lea     rcx,[32+r10*1+rbp]

+        sub     rax,r10

+        movups  xmm1,XMMWORD[16+rbp]

+        mov     r10,rax

+        lea     r8,[$L$xts_magic]

+        jmp     NEAR $L$xts_enc_grandloop

+

+ALIGN   32

+$L$xts_enc_grandloop:

+        movdqu  xmm2,XMMWORD[rdi]

+        movdqa  xmm8,xmm0

+        movdqu  xmm3,XMMWORD[16+rdi]

+        pxor    xmm2,xmm10

+        movdqu  xmm4,XMMWORD[32+rdi]

+        pxor    xmm3,xmm11

+DB      102,15,56,220,209

+        movdqu  xmm5,XMMWORD[48+rdi]

+        pxor    xmm4,xmm12

+DB      102,15,56,220,217

+        movdqu  xmm6,XMMWORD[64+rdi]

+        pxor    xmm5,xmm13

+DB      102,15,56,220,225

+        movdqu  xmm7,XMMWORD[80+rdi]

+        pxor    xmm8,xmm15

+        movdqa  xmm9,XMMWORD[96+rsp]

+        pxor    xmm6,xmm14

+DB      102,15,56,220,233

+        movups  xmm0,XMMWORD[32+rbp]

+        lea     rdi,[96+rdi]

+        pxor    xmm7,xmm8

+

+        pxor    xmm10,xmm9

+DB      102,15,56,220,241

+        pxor    xmm11,xmm9

+        movdqa  XMMWORD[rsp],xmm10

+DB      102,15,56,220,249

+        movups  xmm1,XMMWORD[48+rbp]

+        pxor    xmm12,xmm9

+

+DB      102,15,56,220,208

+        pxor    xmm13,xmm9

+        movdqa  XMMWORD[16+rsp],xmm11

+DB      102,15,56,220,216

+        pxor    xmm14,xmm9

+        movdqa  XMMWORD[32+rsp],xmm12

+DB      102,15,56,220,224

+DB      102,15,56,220,232

+        pxor    xmm8,xmm9

+        movdqa  XMMWORD[64+rsp],xmm14

+DB      102,15,56,220,240

+DB      102,15,56,220,248

+        movups  xmm0,XMMWORD[64+rbp]

+        movdqa  XMMWORD[80+rsp],xmm8

+        pshufd  xmm9,xmm15,0x5f

+        jmp     NEAR $L$xts_enc_loop6

+ALIGN   32

+$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[((-64))+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

+DB      102,15,56,220,240

+DB      102,15,56,220,248

+        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]

+        jnz     NEAR $L$xts_enc_loop6

+

+        movdqa  xmm8,XMMWORD[r8]

+        movdqa  xmm14,xmm9

+        paddd   xmm9,xmm9

+DB      102,15,56,220,209

+        paddq   xmm15,xmm15

+        psrad   xmm14,31

+DB      102,15,56,220,217

+        pand    xmm14,xmm8

+        movups  xmm10,XMMWORD[rbp]

+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[((-64))+rcx]

+

+        movdqa  xmm14,xmm9

+DB      102,15,56,220,208

+        paddd   xmm9,xmm9

+        pxor    xmm10,xmm15

+DB      102,15,56,220,216

+        psrad   xmm14,31

+        paddq   xmm15,xmm15

+DB      102,15,56,220,224

+DB      102,15,56,220,232

+        pand    xmm14,xmm8

+        movaps  xmm12,xmm11

+DB      102,15,56,220,240

+        pxor    xmm15,xmm14

+        movdqa  xmm14,xmm9

+DB      102,15,56,220,248

+        movups  xmm0,XMMWORD[((-48))+rcx]

+

+        paddd   xmm9,xmm9

+DB      102,15,56,220,209

+        pxor    xmm11,xmm15

+        psrad   xmm14,31

+DB      102,15,56,220,217

+        paddq   xmm15,xmm15

+        pand    xmm14,xmm8

+DB      102,15,56,220,225

+DB      102,15,56,220,233

+        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[((-32))+rcx]

+

+        paddd   xmm9,xmm9

+DB      102,15,56,220,208

+        pxor    xmm12,xmm15

+        psrad   xmm14,31

+DB      102,15,56,220,216

+        paddq   xmm15,xmm15

+        pand    xmm14,xmm8

+DB      102,15,56,220,224

+DB      102,15,56,220,232

+DB      102,15,56,220,240

+        pxor    xmm15,xmm14

+        movaps  xmm14,xmm13

+DB      102,15,56,220,248

+

+        movdqa  xmm0,xmm9

+        paddd   xmm9,xmm9

+DB      102,15,56,220,209

+        pxor    xmm13,xmm15

+        psrad   xmm0,31

+DB      102,15,56,220,217

+        paddq   xmm15,xmm15

+        pand    xmm0,xmm8

+DB      102,15,56,220,225

+DB      102,15,56,220,233

+        pxor    xmm15,xmm0

+        movups  xmm0,XMMWORD[rbp]

+DB      102,15,56,220,241

+DB      102,15,56,220,249

+        movups  xmm1,XMMWORD[16+rbp]

+

+        pxor    xmm14,xmm15

+DB      102,15,56,221,84,36,0

+        psrad   xmm9,31

+        paddq   xmm15,xmm15

+DB      102,15,56,221,92,36,16

+DB      102,15,56,221,100,36,32

+        pand    xmm9,xmm8

+        mov     rax,r10

+DB      102,15,56,221,108,36,48

+DB      102,15,56,221,116,36,64

+DB      102,15,56,221,124,36,80

+        pxor    xmm15,xmm9

+

+        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     NEAR $L$xts_enc_grandloop

+

+        mov     eax,16+96

+        sub     eax,r10d

+        mov     rcx,rbp

+        shr     eax,4

+

+$L$xts_enc_short:

+

+        mov     r10d,eax

+        pxor    xmm10,xmm0

+        add     rdx,16*6

+        jz      NEAR $L$xts_enc_done

+

+        pxor    xmm11,xmm0

+        cmp     rdx,0x20

+        jb      NEAR $L$xts_enc_one

+        pxor    xmm12,xmm0

+        je      NEAR $L$xts_enc_two

+

+        pxor    xmm13,xmm0

+        cmp     rdx,0x40

+        jb      NEAR $L$xts_enc_three

+        pxor    xmm14,xmm0

+        je      NEAR $L$xts_enc_four

+

+        movdqu  xmm2,XMMWORD[rdi]

+        movdqu  xmm3,XMMWORD[16+rdi]

+        movdqu  xmm4,XMMWORD[32+rdi]

+        pxor    xmm2,xmm10

+        movdqu  xmm5,XMMWORD[48+rdi]

+        pxor    xmm3,xmm11

+        movdqu  xmm6,XMMWORD[64+rdi]

+        lea     rdi,[80+rdi]

+        pxor    xmm4,xmm12

+        pxor    xmm5,xmm13

+        pxor    xmm6,xmm14

+        pxor    xmm7,xmm7

+

+        call    _aesni_encrypt6

+

+        xorps   xmm2,xmm10

+        movdqa  xmm10,xmm15

+        xorps   xmm3,xmm11

+        xorps   xmm4,xmm12

+        movdqu  XMMWORD[rsi],xmm2

+        xorps   xmm5,xmm13

+        movdqu  XMMWORD[16+rsi],xmm3

+        xorps   xmm6,xmm14

+        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[rdi]

+        lea     rdi,[16+rdi]

+        xorps   xmm2,xmm10

+        movups  xmm0,XMMWORD[rcx]

+        movups  xmm1,XMMWORD[16+rcx]

+        lea     rcx,[32+rcx]

+        xorps   xmm2,xmm0

+$L$oop_enc1_9:

+DB      102,15,56,220,209

+        dec     eax

+        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[rsi],xmm2

+        lea     rsi,[16+rsi]

+        jmp     NEAR $L$xts_enc_done

+

+ALIGN   16

+$L$xts_enc_two:

+        movups  xmm2,XMMWORD[rdi]

+        movups  xmm3,XMMWORD[16+rdi]

+        lea     rdi,[32+rdi]

+        xorps   xmm2,xmm10

+        xorps   xmm3,xmm11

+

+        call    _aesni_encrypt2

+

+        xorps   xmm2,xmm10

+        movdqa  xmm10,xmm12

+        xorps   xmm3,xmm11

+        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[rdi]

+        movups  xmm3,XMMWORD[16+rdi]

+        movups  xmm4,XMMWORD[32+rdi]

+        lea     rdi,[48+rdi]

+        xorps   xmm2,xmm10

+        xorps   xmm3,xmm11

+        xorps   xmm4,xmm12

+

+        call    _aesni_encrypt3

+

+        xorps   xmm2,xmm10

+        movdqa  xmm10,xmm13

+        xorps   xmm3,xmm11

+        xorps   xmm4,xmm12

+        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[rdi]

+        movups  xmm3,XMMWORD[16+rdi]

+        movups  xmm4,XMMWORD[32+rdi]

+        xorps   xmm2,xmm10

+        movups  xmm5,XMMWORD[48+rdi]

+        lea     rdi,[64+rdi]

+        xorps   xmm3,xmm11

+        xorps   xmm4,xmm12

+        xorps   xmm5,xmm13

+

+        call    _aesni_encrypt4

+

+        pxor    xmm2,xmm10

+        movdqa  xmm10,xmm14

+        pxor    xmm3,xmm11

+        pxor    xmm4,xmm12

+        movdqu  XMMWORD[rsi],xmm2

+        pxor    xmm5,xmm13

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

+        and     r9,15

+        jz      NEAR $L$xts_enc_ret

+        mov     rdx,r9

+

+$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     NEAR $L$xts_enc_steal

+

+        sub     rsi,r9

+        mov     rcx,rbp

+        mov     eax,r10d

+

+        movups  xmm2,XMMWORD[((-16))+rsi]

+        xorps   xmm2,xmm10

+        movups  xmm0,XMMWORD[rcx]

+        movups  xmm1,XMMWORD[16+rcx]

+        lea     rcx,[32+rcx]

+        xorps   xmm2,xmm0

+$L$oop_enc1_10:

+DB      102,15,56,220,209

+        dec     eax

+        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[(-16)+rsi],xmm2

+

+$L$xts_enc_ret:

+        xorps   xmm0,xmm0

+        pxor    xmm1,xmm1

+        pxor    xmm2,xmm2

+        pxor    xmm3,xmm3

+        pxor    xmm4,xmm4

+        pxor    xmm5,xmm5

+        movaps  xmm6,XMMWORD[((-168))+r11]

+        movaps  XMMWORD[(-168)+r11],xmm0

+        movaps  xmm7,XMMWORD[((-152))+r11]

+        movaps  XMMWORD[(-152)+r11],xmm0

+        movaps  xmm8,XMMWORD[((-136))+r11]

+        movaps  XMMWORD[(-136)+r11],xmm0

+        movaps  xmm9,XMMWORD[((-120))+r11]

+        movaps  XMMWORD[(-120)+r11],xmm0

+        movaps  xmm10,XMMWORD[((-104))+r11]

+        movaps  XMMWORD[(-104)+r11],xmm0

+        movaps  xmm11,XMMWORD[((-88))+r11]

+        movaps  XMMWORD[(-88)+r11],xmm0

+        movaps  xmm12,XMMWORD[((-72))+r11]

+        movaps  XMMWORD[(-72)+r11],xmm0

+        movaps  xmm13,XMMWORD[((-56))+r11]

+        movaps  XMMWORD[(-56)+r11],xmm0

+        movaps  xmm14,XMMWORD[((-40))+r11]

+        movaps  XMMWORD[(-40)+r11],xmm0

+        movaps  xmm15,XMMWORD[((-24))+r11]

+        movaps  XMMWORD[(-24)+r11],xmm0

+        movaps  XMMWORD[rsp],xmm0

+        movaps  XMMWORD[16+rsp],xmm0

+        movaps  XMMWORD[32+rsp],xmm0

+        movaps  XMMWORD[48+rsp],xmm0

+        movaps  XMMWORD[64+rsp],xmm0

+        movaps  XMMWORD[80+rsp],xmm0

+        movaps  XMMWORD[96+rsp],xmm0

+        mov     rbp,QWORD[((-8))+r11]

+

+        lea     rsp,[r11]

+

+$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:

+global  aesni_xts_decrypt

+

+ALIGN   16

+aesni_xts_decrypt:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_aesni_xts_decrypt:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+        mov     rcx,r9

+        mov     r8,QWORD[40+rsp]

+        mov     r9,QWORD[48+rsp]

+

+

+

+        lea     r11,[rsp]

+

+        push    rbp

+

+        sub     rsp,272

+        and     rsp,-16

+        movaps  XMMWORD[(-168)+r11],xmm6

+        movaps  XMMWORD[(-152)+r11],xmm7

+        movaps  XMMWORD[(-136)+r11],xmm8

+        movaps  XMMWORD[(-120)+r11],xmm9

+        movaps  XMMWORD[(-104)+r11],xmm10

+        movaps  XMMWORD[(-88)+r11],xmm11

+        movaps  XMMWORD[(-72)+r11],xmm12

+        movaps  XMMWORD[(-56)+r11],xmm13

+        movaps  XMMWORD[(-40)+r11],xmm14

+        movaps  XMMWORD[(-24)+r11],xmm15

+$L$xts_dec_body:

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

+DB      102,15,56,220,209

+        dec     eax

+        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

+        setnz   al

+        shl     rax,4

+        sub     rdx,rax

+

+        movups  xmm0,XMMWORD[rcx]

+        mov     rbp,rcx

+        mov     eax,r10d

+        shl     r10d,4

+        mov     r9,rdx

+        and     rdx,-16

+

+        movups  xmm1,XMMWORD[16+r10*1+rcx]

+

+        movdqa  xmm8,XMMWORD[$L$xts_magic]

+        movdqa  xmm15,xmm2

+        pshufd  xmm9,xmm2,0x5f

+        pxor    xmm1,xmm0

+        movdqa  xmm14,xmm9

+        paddd   xmm9,xmm9

+        movdqa  xmm10,xmm15

+        psrad   xmm14,31

+        paddq   xmm15,xmm15

+        pand    xmm14,xmm8

+        pxor    xmm10,xmm0

+        pxor    xmm15,xmm14

+        movdqa  xmm14,xmm9

+        paddd   xmm9,xmm9

+        movdqa  xmm11,xmm15

+        psrad   xmm14,31

+        paddq   xmm15,xmm15

+        pand    xmm14,xmm8

+        pxor    xmm11,xmm0

+        pxor    xmm15,xmm14

+        movdqa  xmm14,xmm9

+        paddd   xmm9,xmm9

+        movdqa  xmm12,xmm15

+        psrad   xmm14,31

+        paddq   xmm15,xmm15

+        pand    xmm14,xmm8

+        pxor    xmm12,xmm0

+        pxor    xmm15,xmm14

+        movdqa  xmm14,xmm9

+        paddd   xmm9,xmm9

+        movdqa  xmm13,xmm15

+        psrad   xmm14,31

+        paddq   xmm15,xmm15

+        pand    xmm14,xmm8

+        pxor    xmm13,xmm0

+        pxor    xmm15,xmm14

+        movdqa  xmm14,xmm15

+        psrad   xmm9,31

+        paddq   xmm15,xmm15

+        pand    xmm9,xmm8

+        pxor    xmm14,xmm0

+        pxor    xmm15,xmm9

+        movaps  XMMWORD[96+rsp],xmm1

+

+        sub     rdx,16*6

+        jc      NEAR $L$xts_dec_short

+

+        mov     eax,16+96

+        lea     rcx,[32+r10*1+rbp]

+        sub     rax,r10

+        movups  xmm1,XMMWORD[16+rbp]

+        mov     r10,rax

+        lea     r8,[$L$xts_magic]

+        jmp     NEAR $L$xts_dec_grandloop

+

+ALIGN   32

+$L$xts_dec_grandloop:

+        movdqu  xmm2,XMMWORD[rdi]

+        movdqa  xmm8,xmm0

+        movdqu  xmm3,XMMWORD[16+rdi]

+        pxor    xmm2,xmm10

+        movdqu  xmm4,XMMWORD[32+rdi]

+        pxor    xmm3,xmm11

+DB      102,15,56,222,209

+        movdqu  xmm5,XMMWORD[48+rdi]

+        pxor    xmm4,xmm12

+DB      102,15,56,222,217

+        movdqu  xmm6,XMMWORD[64+rdi]

+        pxor    xmm5,xmm13

+DB      102,15,56,222,225

+        movdqu  xmm7,XMMWORD[80+rdi]

+        pxor    xmm8,xmm15

+        movdqa  xmm9,XMMWORD[96+rsp]

+        pxor    xmm6,xmm14

+DB      102,15,56,222,233

+        movups  xmm0,XMMWORD[32+rbp]

+        lea     rdi,[96+rdi]

+        pxor    xmm7,xmm8

+

+        pxor    xmm10,xmm9

+DB      102,15,56,222,241

+        pxor    xmm11,xmm9

+        movdqa  XMMWORD[rsp],xmm10

+DB      102,15,56,222,249

+        movups  xmm1,XMMWORD[48+rbp]

+        pxor    xmm12,xmm9

+

+DB      102,15,56,222,208

+        pxor    xmm13,xmm9

+        movdqa  XMMWORD[16+rsp],xmm11

+DB      102,15,56,222,216

+        pxor    xmm14,xmm9

+        movdqa  XMMWORD[32+rsp],xmm12

+DB      102,15,56,222,224

+DB      102,15,56,222,232

+        pxor    xmm8,xmm9

+        movdqa  XMMWORD[64+rsp],xmm14

+DB      102,15,56,222,240

+DB      102,15,56,222,248

+        movups  xmm0,XMMWORD[64+rbp]

+        movdqa  XMMWORD[80+rsp],xmm8

+        pshufd  xmm9,xmm15,0x5f

+        jmp     NEAR $L$xts_dec_loop6

+ALIGN   32

+$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[((-64))+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

+DB      102,15,56,222,240

+DB      102,15,56,222,248

+        movups  xmm0,XMMWORD[((-80))+rax*1+rcx]

+        jnz     NEAR $L$xts_dec_loop6

+

+        movdqa  xmm8,XMMWORD[r8]

+        movdqa  xmm14,xmm9

+        paddd   xmm9,xmm9

+DB      102,15,56,222,209

+        paddq   xmm15,xmm15

+        psrad   xmm14,31

+DB      102,15,56,222,217

+        pand    xmm14,xmm8

+        movups  xmm10,XMMWORD[rbp]

+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[((-64))+rcx]

+

+        movdqa  xmm14,xmm9

+DB      102,15,56,222,208

+        paddd   xmm9,xmm9

+        pxor    xmm10,xmm15

+DB      102,15,56,222,216

+        psrad   xmm14,31

+        paddq   xmm15,xmm15

+DB      102,15,56,222,224

+DB      102,15,56,222,232

+        pand    xmm14,xmm8

+        movaps  xmm12,xmm11

+DB      102,15,56,222,240

+        pxor    xmm15,xmm14

+        movdqa  xmm14,xmm9

+DB      102,15,56,222,248

+        movups  xmm0,XMMWORD[((-48))+rcx]

+

+        paddd   xmm9,xmm9

+DB      102,15,56,222,209

+        pxor    xmm11,xmm15

+        psrad   xmm14,31

+DB      102,15,56,222,217

+        paddq   xmm15,xmm15

+        pand    xmm14,xmm8

+DB      102,15,56,222,225

+DB      102,15,56,222,233

+        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[((-32))+rcx]

+

+        paddd   xmm9,xmm9

+DB      102,15,56,222,208

+        pxor    xmm12,xmm15

+        psrad   xmm14,31

+DB      102,15,56,222,216

+        paddq   xmm15,xmm15

+        pand    xmm14,xmm8

+DB      102,15,56,222,224

+DB      102,15,56,222,232

+DB      102,15,56,222,240

+        pxor    xmm15,xmm14

+        movaps  xmm14,xmm13

+DB      102,15,56,222,248

+

+        movdqa  xmm0,xmm9

+        paddd   xmm9,xmm9

+DB      102,15,56,222,209

+        pxor    xmm13,xmm15

+        psrad   xmm0,31

+DB      102,15,56,222,217

+        paddq   xmm15,xmm15

+        pand    xmm0,xmm8

+DB      102,15,56,222,225

+DB      102,15,56,222,233

+        pxor    xmm15,xmm0

+        movups  xmm0,XMMWORD[rbp]

+DB      102,15,56,222,241

+DB      102,15,56,222,249

+        movups  xmm1,XMMWORD[16+rbp]

+

+        pxor    xmm14,xmm15

+DB      102,15,56,223,84,36,0

+        psrad   xmm9,31

+        paddq   xmm15,xmm15

+DB      102,15,56,223,92,36,16

+DB      102,15,56,223,100,36,32

+        pand    xmm9,xmm8

+        mov     rax,r10

+DB      102,15,56,223,108,36,48

+DB      102,15,56,223,116,36,64

+DB      102,15,56,223,124,36,80

+        pxor    xmm15,xmm9

+

+        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     NEAR $L$xts_dec_grandloop

+

+        mov     eax,16+96

+        sub     eax,r10d

+        mov     rcx,rbp

+        shr     eax,4

+

+$L$xts_dec_short:

+

+        mov     r10d,eax

+        pxor    xmm10,xmm0

+        pxor    xmm11,xmm0

+        add     rdx,16*6

+        jz      NEAR $L$xts_dec_done

+

+        pxor    xmm12,xmm0

+        cmp     rdx,0x20

+        jb      NEAR $L$xts_dec_one

+        pxor    xmm13,xmm0

+        je      NEAR $L$xts_dec_two

+

+        pxor    xmm14,xmm0

+        cmp     rdx,0x40

+        jb      NEAR $L$xts_dec_three

+        je      NEAR $L$xts_dec_four

+

+        movdqu  xmm2,XMMWORD[rdi]

+        movdqu  xmm3,XMMWORD[16+rdi]

+        movdqu  xmm4,XMMWORD[32+rdi]

+        pxor    xmm2,xmm10

+        movdqu  xmm5,XMMWORD[48+rdi]

+        pxor    xmm3,xmm11

+        movdqu  xmm6,XMMWORD[64+rdi]

+        lea     rdi,[80+rdi]

+        pxor    xmm4,xmm12

+        pxor    xmm5,xmm13

+        pxor    xmm6,xmm14

+

+        call    _aesni_decrypt6

+

+        xorps   xmm2,xmm10

+        xorps   xmm3,xmm11

+        xorps   xmm4,xmm12

+        movdqu  XMMWORD[rsi],xmm2

+        xorps   xmm5,xmm13

+        movdqu  XMMWORD[16+rsi],xmm3

+        xorps   xmm6,xmm14

+        movdqu  XMMWORD[32+rsi],xmm4

+        pxor    xmm14,xmm14

+        movdqu  XMMWORD[48+rsi],xmm5

+        pcmpgtd xmm14,xmm15

+        movdqu  XMMWORD[64+rsi],xmm6

+        lea     rsi,[80+rsi]

+        pshufd  xmm11,xmm14,0x13

+        and     r9,15

+        jz      NEAR $L$xts_dec_ret

+

+        movdqa  xmm10,xmm15

+        paddq   xmm15,xmm15

+        pand    xmm11,xmm8

+        pxor    xmm11,xmm15

+        jmp     NEAR $L$xts_dec_done2

+

+ALIGN   16

+$L$xts_dec_one:

+        movups  xmm2,XMMWORD[rdi]

+        lea     rdi,[16+rdi]

+        xorps   xmm2,xmm10

+        movups  xmm0,XMMWORD[rcx]

+        movups  xmm1,XMMWORD[16+rcx]

+        lea     rcx,[32+rcx]

+        xorps   xmm2,xmm0

+$L$oop_dec1_12:

+DB      102,15,56,222,209

+        dec     eax

+        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[rsi],xmm2

+        movdqa  xmm11,xmm12

+        lea     rsi,[16+rsi]

+        jmp     NEAR $L$xts_dec_done

+

+ALIGN   16

+$L$xts_dec_two:

+        movups  xmm2,XMMWORD[rdi]

+        movups  xmm3,XMMWORD[16+rdi]

+        lea     rdi,[32+rdi]

+        xorps   xmm2,xmm10

+        xorps   xmm3,xmm11

+

+        call    _aesni_decrypt2

+

+        xorps   xmm2,xmm10

+        movdqa  xmm10,xmm12

+        xorps   xmm3,xmm11

+        movdqa  xmm11,xmm13

+        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[rdi]

+        movups  xmm3,XMMWORD[16+rdi]

+        movups  xmm4,XMMWORD[32+rdi]

+        lea     rdi,[48+rdi]

+        xorps   xmm2,xmm10

+        xorps   xmm3,xmm11

+        xorps   xmm4,xmm12

+

+        call    _aesni_decrypt3

+

+        xorps   xmm2,xmm10

+        movdqa  xmm10,xmm13

+        xorps   xmm3,xmm11

+        movdqa  xmm11,xmm14

+        xorps   xmm4,xmm12

+        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[rdi]

+        movups  xmm3,XMMWORD[16+rdi]

+        movups  xmm4,XMMWORD[32+rdi]

+        xorps   xmm2,xmm10

+        movups  xmm5,XMMWORD[48+rdi]

+        lea     rdi,[64+rdi]

+        xorps   xmm3,xmm11

+        xorps   xmm4,xmm12

+        xorps   xmm5,xmm13

+

+        call    _aesni_decrypt4

+

+        pxor    xmm2,xmm10

+        movdqa  xmm10,xmm14

+        pxor    xmm3,xmm11

+        movdqa  xmm11,xmm15

+        pxor    xmm4,xmm12

+        movdqu  XMMWORD[rsi],xmm2

+        pxor    xmm5,xmm13

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

+        and     r9,15

+        jz      NEAR $L$xts_dec_ret

+$L$xts_dec_done2:

+        mov     rdx,r9

+        mov     rcx,rbp

+        mov     eax,r10d

+

+        movups  xmm2,XMMWORD[rdi]

+        xorps   xmm2,xmm11

+        movups  xmm0,XMMWORD[rcx]

+        movups  xmm1,XMMWORD[16+rcx]

+        lea     rcx,[32+rcx]

+        xorps   xmm2,xmm0

+$L$oop_dec1_13:

+DB      102,15,56,222,209

+        dec     eax

+        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[rsi],xmm2

+

+$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     NEAR $L$xts_dec_steal

+

+        sub     rsi,r9

+        mov     rcx,rbp

+        mov     eax,r10d

+

+        movups  xmm2,XMMWORD[rsi]

+        xorps   xmm2,xmm10

+        movups  xmm0,XMMWORD[rcx]

+        movups  xmm1,XMMWORD[16+rcx]

+        lea     rcx,[32+rcx]

+        xorps   xmm2,xmm0

+$L$oop_dec1_14:

+DB      102,15,56,222,209

+        dec     eax

+        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[rsi],xmm2

+

+$L$xts_dec_ret:

+        xorps   xmm0,xmm0

+        pxor    xmm1,xmm1

+        pxor    xmm2,xmm2

+        pxor    xmm3,xmm3

+        pxor    xmm4,xmm4

+        pxor    xmm5,xmm5

+        movaps  xmm6,XMMWORD[((-168))+r11]

+        movaps  XMMWORD[(-168)+r11],xmm0

+        movaps  xmm7,XMMWORD[((-152))+r11]

+        movaps  XMMWORD[(-152)+r11],xmm0

+        movaps  xmm8,XMMWORD[((-136))+r11]

+        movaps  XMMWORD[(-136)+r11],xmm0

+        movaps  xmm9,XMMWORD[((-120))+r11]

+        movaps  XMMWORD[(-120)+r11],xmm0

+        movaps  xmm10,XMMWORD[((-104))+r11]

+        movaps  XMMWORD[(-104)+r11],xmm0

+        movaps  xmm11,XMMWORD[((-88))+r11]

+        movaps  XMMWORD[(-88)+r11],xmm0

+        movaps  xmm12,XMMWORD[((-72))+r11]

+        movaps  XMMWORD[(-72)+r11],xmm0

+        movaps  xmm13,XMMWORD[((-56))+r11]

+        movaps  XMMWORD[(-56)+r11],xmm0

+        movaps  xmm14,XMMWORD[((-40))+r11]

+        movaps  XMMWORD[(-40)+r11],xmm0

+        movaps  xmm15,XMMWORD[((-24))+r11]

+        movaps  XMMWORD[(-24)+r11],xmm0

+        movaps  XMMWORD[rsp],xmm0

+        movaps  XMMWORD[16+rsp],xmm0

+        movaps  XMMWORD[32+rsp],xmm0

+        movaps  XMMWORD[48+rsp],xmm0

+        movaps  XMMWORD[64+rsp],xmm0

+        movaps  XMMWORD[80+rsp],xmm0

+        movaps  XMMWORD[96+rsp],xmm0

+        mov     rbp,QWORD[((-8))+r11]

+

+        lea     rsp,[r11]

+

+$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:

+global  aesni_ocb_encrypt

+

+ALIGN   32

+aesni_ocb_encrypt:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_aesni_ocb_encrypt:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+        mov     rcx,r9

+        mov     r8,QWORD[40+rsp]

+        mov     r9,QWORD[48+rsp]

+

+

+

+        lea     rax,[rsp]

+        push    rbx

+

+        push    rbp

+

+        push    r12

+

+        push    r13

+

+        push    r14

+

+        lea     rsp,[((-160))+rsp]

+        movaps  XMMWORD[rsp],xmm6

+        movaps  XMMWORD[16+rsp],xmm7

+        movaps  XMMWORD[32+rsp],xmm8

+        movaps  XMMWORD[48+rsp],xmm9

+        movaps  XMMWORD[64+rsp],xmm10

+        movaps  XMMWORD[80+rsp],xmm11

+        movaps  XMMWORD[96+rsp],xmm12

+        movaps  XMMWORD[112+rsp],xmm13

+        movaps  XMMWORD[128+rsp],xmm14

+        movaps  XMMWORD[144+rsp],xmm15

+$L$ocb_enc_body:

+        mov     rbx,QWORD[56+rax]

+        mov     rbp,QWORD[((56+8))+rax]

+

+        mov     r10d,DWORD[240+rcx]

+        mov     r11,rcx

+        shl     r10d,4

+        movups  xmm9,XMMWORD[rcx]

+        movups  xmm1,XMMWORD[16+r10*1+rcx]

+

+        movdqu  xmm15,XMMWORD[r9]

+        pxor    xmm9,xmm1

+        pxor    xmm15,xmm1

+

+        mov     eax,16+32

+        lea     rcx,[32+r10*1+r11]

+        movups  xmm1,XMMWORD[16+r11]

+        sub     rax,r10

+        mov     r10,rax

+

+        movdqu  xmm10,XMMWORD[rbx]

+        movdqu  xmm8,XMMWORD[rbp]

+

+        test    r8,1

+        jnz     NEAR $L$ocb_enc_odd

+

+        bsf     r12,r8

+        add     r8,1

+        shl     r12,4

+        movdqu  xmm7,XMMWORD[r12*1+rbx]

+        movdqu  xmm2,XMMWORD[rdi]

+        lea     rdi,[16+rdi]

+

+        call    __ocb_encrypt1

+

+        movdqa  xmm15,xmm7

+        movups  XMMWORD[rsi],xmm2

+        lea     rsi,[16+rsi]

+        sub     rdx,1

+        jz      NEAR $L$ocb_enc_done

+

+$L$ocb_enc_odd:

+        lea     r12,[1+r8]

+        lea     r13,[3+r8]

+        lea     r14,[5+r8]

+        lea     r8,[6+r8]

+        bsf     r12,r12

+        bsf     r13,r13

+        bsf     r14,r14

+        shl     r12,4

+        shl     r13,4

+        shl     r14,4

+

+        sub     rdx,6

+        jc      NEAR $L$ocb_enc_short

+        jmp     NEAR $L$ocb_enc_grandloop

+

+ALIGN   32

+$L$ocb_enc_grandloop:

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

+        lea     rdi,[96+rdi]

+

+        call    __ocb_encrypt6

+

+        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

+        lea     rsi,[96+rsi]

+        sub     rdx,6

+        jnc     NEAR $L$ocb_enc_grandloop

+

+$L$ocb_enc_short:

+        add     rdx,6

+        jz      NEAR $L$ocb_enc_done

+

+        movdqu  xmm2,XMMWORD[rdi]

+        cmp     rdx,2

+        jb      NEAR $L$ocb_enc_one

+        movdqu  xmm3,XMMWORD[16+rdi]

+        je      NEAR $L$ocb_enc_two

+

+        movdqu  xmm4,XMMWORD[32+rdi]

+        cmp     rdx,4

+        jb      NEAR $L$ocb_enc_three

+        movdqu  xmm5,XMMWORD[48+rdi]

+        je      NEAR $L$ocb_enc_four

+

+        movdqu  xmm6,XMMWORD[64+rdi]

+        pxor    xmm7,xmm7

+

+        call    __ocb_encrypt6

+

+        movdqa  xmm15,xmm14

+        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$ocb_enc_done

+

+ALIGN   16

+$L$ocb_enc_one:

+        movdqa  xmm7,xmm10

+

+        call    __ocb_encrypt1

+

+        movdqa  xmm15,xmm7

+        movups  XMMWORD[rsi],xmm2

+        jmp     NEAR $L$ocb_enc_done

+

+ALIGN   16

+$L$ocb_enc_two:

+        pxor    xmm4,xmm4

+        pxor    xmm5,xmm5

+

+        call    __ocb_encrypt4

+

+        movdqa  xmm15,xmm11

+        movups  XMMWORD[rsi],xmm2

+        movups  XMMWORD[16+rsi],xmm3

+

+        jmp     NEAR $L$ocb_enc_done

+

+ALIGN   16

+$L$ocb_enc_three:

+        pxor    xmm5,xmm5

+

+        call    __ocb_encrypt4

+

+        movdqa  xmm15,xmm12

+        movups  XMMWORD[rsi],xmm2

+        movups  XMMWORD[16+rsi],xmm3

+        movups  XMMWORD[32+rsi],xmm4

+

+        jmp     NEAR $L$ocb_enc_done

+

+ALIGN   16

+$L$ocb_enc_four:

+        call    __ocb_encrypt4

+

+        movdqa  xmm15,xmm13

+        movups  XMMWORD[rsi],xmm2

+        movups  XMMWORD[16+rsi],xmm3

+        movups  XMMWORD[32+rsi],xmm4

+        movups  XMMWORD[48+rsi],xmm5

+

+$L$ocb_enc_done:

+        pxor    xmm15,xmm0

+        movdqu  XMMWORD[rbp],xmm8

+        movdqu  XMMWORD[r9],xmm15

+

+        xorps   xmm0,xmm0

+        pxor    xmm1,xmm1

+        pxor    xmm2,xmm2

+        pxor    xmm3,xmm3

+        pxor    xmm4,xmm4

+        pxor    xmm5,xmm5

+        movaps  xmm6,XMMWORD[rsp]

+        movaps  XMMWORD[rsp],xmm0

+        movaps  xmm7,XMMWORD[16+rsp]

+        movaps  XMMWORD[16+rsp],xmm0

+        movaps  xmm8,XMMWORD[32+rsp]

+        movaps  XMMWORD[32+rsp],xmm0

+        movaps  xmm9,XMMWORD[48+rsp]

+        movaps  XMMWORD[48+rsp],xmm0

+        movaps  xmm10,XMMWORD[64+rsp]

+        movaps  XMMWORD[64+rsp],xmm0

+        movaps  xmm11,XMMWORD[80+rsp]

+        movaps  XMMWORD[80+rsp],xmm0

+        movaps  xmm12,XMMWORD[96+rsp]

+        movaps  XMMWORD[96+rsp],xmm0

+        movaps  xmm13,XMMWORD[112+rsp]

+        movaps  XMMWORD[112+rsp],xmm0

+        movaps  xmm14,XMMWORD[128+rsp]

+        movaps  XMMWORD[128+rsp],xmm0

+        movaps  xmm15,XMMWORD[144+rsp]

+        movaps  XMMWORD[144+rsp],xmm0

+        lea     rax,[((160+40))+rsp]

+$L$ocb_enc_pop:

+        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$ocb_enc_epilogue:

+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue

+        mov     rsi,QWORD[16+rsp]

+        DB      0F3h,0C3h               ;repret

+

+$L$SEH_end_aesni_ocb_encrypt:

+

+

+ALIGN   32

+__ocb_encrypt6:

+

+        pxor    xmm15,xmm9

+        movdqu  xmm11,XMMWORD[r12*1+rbx]

+        movdqa  xmm12,xmm10

+        movdqu  xmm13,XMMWORD[r13*1+rbx]

+        movdqa  xmm14,xmm10

+        pxor    xmm10,xmm15

+        movdqu  xmm15,XMMWORD[r14*1+rbx]

+        pxor    xmm11,xmm10

+        pxor    xmm8,xmm2

+        pxor    xmm2,xmm10

+        pxor    xmm12,xmm11

+        pxor    xmm8,xmm3

+        pxor    xmm3,xmm11

+        pxor    xmm13,xmm12

+        pxor    xmm8,xmm4

+        pxor    xmm4,xmm12

+        pxor    xmm14,xmm13

+        pxor    xmm8,xmm5

+        pxor    xmm5,xmm13

+        pxor    xmm15,xmm14

+        pxor    xmm8,xmm6

+        pxor    xmm6,xmm14

+        pxor    xmm8,xmm7

+        pxor    xmm7,xmm15

+        movups  xmm0,XMMWORD[32+r11]

+

+        lea     r12,[1+r8]

+        lea     r13,[3+r8]

+        lea     r14,[5+r8]

+        add     r8,6

+        pxor    xmm10,xmm9

+        bsf     r12,r12

+        bsf     r13,r13

+        bsf     r14,r14

+

+DB      102,15,56,220,209

+DB      102,15,56,220,217

+DB      102,15,56,220,225

+DB      102,15,56,220,233

+        pxor    xmm11,xmm9

+        pxor    xmm12,xmm9

+DB      102,15,56,220,241

+        pxor    xmm13,xmm9

+        pxor    xmm14,xmm9

+DB      102,15,56,220,249

+        movups  xmm1,XMMWORD[48+r11]

+        pxor    xmm15,xmm9

+

+DB      102,15,56,220,208

+DB      102,15,56,220,216

+DB      102,15,56,220,224

+DB      102,15,56,220,232

+DB      102,15,56,220,240

+DB      102,15,56,220,248

+        movups  xmm0,XMMWORD[64+r11]

+        shl     r12,4

+        shl     r13,4

+        jmp     NEAR $L$ocb_enc_loop6

+

+ALIGN   32

+$L$ocb_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[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

+DB      102,15,56,220,240

+DB      102,15,56,220,248

+        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]

+        jnz     NEAR $L$ocb_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[16+r11]

+        shl     r14,4

+

+DB      102,65,15,56,221,210

+        movdqu  xmm10,XMMWORD[rbx]

+        mov     rax,r10

+DB      102,65,15,56,221,219

+DB      102,65,15,56,221,228

+DB      102,65,15,56,221,237

+DB      102,65,15,56,221,246

+DB      102,65,15,56,221,255

+        DB      0F3h,0C3h               ;repret

+

+

+

+

+ALIGN   32

+__ocb_encrypt4:

+

+        pxor    xmm15,xmm9

+        movdqu  xmm11,XMMWORD[r12*1+rbx]

+        movdqa  xmm12,xmm10

+        movdqu  xmm13,XMMWORD[r13*1+rbx]

+        pxor    xmm10,xmm15

+        pxor    xmm11,xmm10

+        pxor    xmm8,xmm2

+        pxor    xmm2,xmm10

+        pxor    xmm12,xmm11

+        pxor    xmm8,xmm3

+        pxor    xmm3,xmm11

+        pxor    xmm13,xmm12

+        pxor    xmm8,xmm4

+        pxor    xmm4,xmm12

+        pxor    xmm8,xmm5

+        pxor    xmm5,xmm13

+        movups  xmm0,XMMWORD[32+r11]

+

+        pxor    xmm10,xmm9

+        pxor    xmm11,xmm9

+        pxor    xmm12,xmm9

+        pxor    xmm13,xmm9

+

+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[48+r11]

+

+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[64+r11]

+        jmp     NEAR $L$ocb_enc_loop4

+

+ALIGN   32

+$L$ocb_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[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[((-16))+rax*1+rcx]

+        jnz     NEAR $L$ocb_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[16+r11]

+        mov     rax,r10

+

+DB      102,65,15,56,221,210

+DB      102,65,15,56,221,219

+DB      102,65,15,56,221,228

+DB      102,65,15,56,221,237

+        DB      0F3h,0C3h               ;repret

+

+

+

+

+ALIGN   32

+__ocb_encrypt1:

+

+        pxor    xmm7,xmm15

+        pxor    xmm7,xmm9

+        pxor    xmm8,xmm2

+        pxor    xmm2,xmm7

+        movups  xmm0,XMMWORD[32+r11]

+

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[48+r11]

+        pxor    xmm7,xmm9

+

+DB      102,15,56,220,208

+        movups  xmm0,XMMWORD[64+r11]

+        jmp     NEAR $L$ocb_enc_loop1

+

+ALIGN   32

+$L$ocb_enc_loop1:

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[rax*1+rcx]

+        add     rax,32

+

+DB      102,15,56,220,208

+        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]

+        jnz     NEAR $L$ocb_enc_loop1

+

+DB      102,15,56,220,209

+        movups  xmm1,XMMWORD[16+r11]

+        mov     rax,r10

+

+DB      102,15,56,221,215

+        DB      0F3h,0C3h               ;repret

+

+

+

+global  aesni_ocb_decrypt

+

+ALIGN   32

+aesni_ocb_decrypt:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_aesni_ocb_decrypt:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+        mov     rcx,r9

+        mov     r8,QWORD[40+rsp]

+        mov     r9,QWORD[48+rsp]

+

+

+

+        lea     rax,[rsp]

+        push    rbx

+

+        push    rbp

+

+        push    r12

+

+        push    r13

+

+        push    r14

+

+        lea     rsp,[((-160))+rsp]

+        movaps  XMMWORD[rsp],xmm6

+        movaps  XMMWORD[16+rsp],xmm7

+        movaps  XMMWORD[32+rsp],xmm8

+        movaps  XMMWORD[48+rsp],xmm9

+        movaps  XMMWORD[64+rsp],xmm10

+        movaps  XMMWORD[80+rsp],xmm11

+        movaps  XMMWORD[96+rsp],xmm12

+        movaps  XMMWORD[112+rsp],xmm13

+        movaps  XMMWORD[128+rsp],xmm14

+        movaps  XMMWORD[144+rsp],xmm15

+$L$ocb_dec_body:

+        mov     rbx,QWORD[56+rax]

+        mov     rbp,QWORD[((56+8))+rax]

+

+        mov     r10d,DWORD[240+rcx]

+        mov     r11,rcx

+        shl     r10d,4

+        movups  xmm9,XMMWORD[rcx]

+        movups  xmm1,XMMWORD[16+r10*1+rcx]

+

+        movdqu  xmm15,XMMWORD[r9]

+        pxor    xmm9,xmm1

+        pxor    xmm15,xmm1

+

+        mov     eax,16+32

+        lea     rcx,[32+r10*1+r11]

+        movups  xmm1,XMMWORD[16+r11]

+        sub     rax,r10

+        mov     r10,rax

+

+        movdqu  xmm10,XMMWORD[rbx]

+        movdqu  xmm8,XMMWORD[rbp]

+

+        test    r8,1

+        jnz     NEAR $L$ocb_dec_odd

+

+        bsf     r12,r8

+        add     r8,1

+        shl     r12,4

+        movdqu  xmm7,XMMWORD[r12*1+rbx]

+        movdqu  xmm2,XMMWORD[rdi]

+        lea     rdi,[16+rdi]

+

+        call    __ocb_decrypt1

+

+        movdqa  xmm15,xmm7

+        movups  XMMWORD[rsi],xmm2

+        xorps   xmm8,xmm2

+        lea     rsi,[16+rsi]

+        sub     rdx,1

+        jz      NEAR $L$ocb_dec_done

+

+$L$ocb_dec_odd:

+        lea     r12,[1+r8]

+        lea     r13,[3+r8]

+        lea     r14,[5+r8]

+        lea     r8,[6+r8]

+        bsf     r12,r12

+        bsf     r13,r13

+        bsf     r14,r14

+        shl     r12,4

+        shl     r13,4

+        shl     r14,4

+

+        sub     rdx,6

+        jc      NEAR $L$ocb_dec_short

+        jmp     NEAR $L$ocb_dec_grandloop

+

+ALIGN   32

+$L$ocb_dec_grandloop:

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

+        lea     rdi,[96+rdi]

+

+        call    __ocb_decrypt6

+

+        movups  XMMWORD[rsi],xmm2

+        pxor    xmm8,xmm2

+        movups  XMMWORD[16+rsi],xmm3

+        pxor    xmm8,xmm3

+        movups  XMMWORD[32+rsi],xmm4

+        pxor    xmm8,xmm4

+        movups  XMMWORD[48+rsi],xmm5

+        pxor    xmm8,xmm5

+        movups  XMMWORD[64+rsi],xmm6

+        pxor    xmm8,xmm6

+        movups  XMMWORD[80+rsi],xmm7

+        pxor    xmm8,xmm7

+        lea     rsi,[96+rsi]

+        sub     rdx,6

+        jnc     NEAR $L$ocb_dec_grandloop

+

+$L$ocb_dec_short:

+        add     rdx,6

+        jz      NEAR $L$ocb_dec_done

+

+        movdqu  xmm2,XMMWORD[rdi]

+        cmp     rdx,2

+        jb      NEAR $L$ocb_dec_one

+        movdqu  xmm3,XMMWORD[16+rdi]

+        je      NEAR $L$ocb_dec_two

+

+        movdqu  xmm4,XMMWORD[32+rdi]

+        cmp     rdx,4

+        jb      NEAR $L$ocb_dec_three

+        movdqu  xmm5,XMMWORD[48+rdi]

+        je      NEAR $L$ocb_dec_four

+

+        movdqu  xmm6,XMMWORD[64+rdi]

+        pxor    xmm7,xmm7

+

+        call    __ocb_decrypt6

+

+        movdqa  xmm15,xmm14

+        movups  XMMWORD[rsi],xmm2

+        pxor    xmm8,xmm2

+        movups  XMMWORD[16+rsi],xmm3

+        pxor    xmm8,xmm3

+        movups  XMMWORD[32+rsi],xmm4

+        pxor    xmm8,xmm4

+        movups  XMMWORD[48+rsi],xmm5

+        pxor    xmm8,xmm5

+        movups  XMMWORD[64+rsi],xmm6

+        pxor    xmm8,xmm6

+

+        jmp     NEAR $L$ocb_dec_done

+

+ALIGN   16

+$L$ocb_dec_one:

+        movdqa  xmm7,xmm10

+

+        call    __ocb_decrypt1

+

+        movdqa  xmm15,xmm7

+        movups  XMMWORD[rsi],xmm2

+        xorps   xmm8,xmm2

+        jmp     NEAR $L$ocb_dec_done

+

+ALIGN   16

+$L$ocb_dec_two:

+        pxor    xmm4,xmm4

+        pxor    xmm5,xmm5

+

+        call    __ocb_decrypt4

+

+        movdqa  xmm15,xmm11

+        movups  XMMWORD[rsi],xmm2

+        xorps   xmm8,xmm2

+        movups  XMMWORD[16+rsi],xmm3

+        xorps   xmm8,xmm3

+

+        jmp     NEAR $L$ocb_dec_done

+

+ALIGN   16

+$L$ocb_dec_three:

+        pxor    xmm5,xmm5

+

+        call    __ocb_decrypt4

+

+        movdqa  xmm15,xmm12

+        movups  XMMWORD[rsi],xmm2

+        xorps   xmm8,xmm2

+        movups  XMMWORD[16+rsi],xmm3

+        xorps   xmm8,xmm3

+        movups  XMMWORD[32+rsi],xmm4

+        xorps   xmm8,xmm4

+

+        jmp     NEAR $L$ocb_dec_done

+

+ALIGN   16

+$L$ocb_dec_four:

+        call    __ocb_decrypt4

+

+        movdqa  xmm15,xmm13

+        movups  XMMWORD[rsi],xmm2

+        pxor    xmm8,xmm2

+        movups  XMMWORD[16+rsi],xmm3

+        pxor    xmm8,xmm3

+        movups  XMMWORD[32+rsi],xmm4

+        pxor    xmm8,xmm4

+        movups  XMMWORD[48+rsi],xmm5

+        pxor    xmm8,xmm5

+

+$L$ocb_dec_done:

+        pxor    xmm15,xmm0

+        movdqu  XMMWORD[rbp],xmm8

+        movdqu  XMMWORD[r9],xmm15

+

+        xorps   xmm0,xmm0

+        pxor    xmm1,xmm1

+        pxor    xmm2,xmm2

+        pxor    xmm3,xmm3

+        pxor    xmm4,xmm4

+        pxor    xmm5,xmm5

+        movaps  xmm6,XMMWORD[rsp]

+        movaps  XMMWORD[rsp],xmm0

+        movaps  xmm7,XMMWORD[16+rsp]

+        movaps  XMMWORD[16+rsp],xmm0

+        movaps  xmm8,XMMWORD[32+rsp]

+        movaps  XMMWORD[32+rsp],xmm0

+        movaps  xmm9,XMMWORD[48+rsp]

+        movaps  XMMWORD[48+rsp],xmm0

+        movaps  xmm10,XMMWORD[64+rsp]

+        movaps  XMMWORD[64+rsp],xmm0

+        movaps  xmm11,XMMWORD[80+rsp]

+        movaps  XMMWORD[80+rsp],xmm0

+        movaps  xmm12,XMMWORD[96+rsp]

+        movaps  XMMWORD[96+rsp],xmm0

+        movaps  xmm13,XMMWORD[112+rsp]

+        movaps  XMMWORD[112+rsp],xmm0

+        movaps  xmm14,XMMWORD[128+rsp]

+        movaps  XMMWORD[128+rsp],xmm0

+        movaps  xmm15,XMMWORD[144+rsp]

+        movaps  XMMWORD[144+rsp],xmm0

+        lea     rax,[((160+40))+rsp]

+$L$ocb_dec_pop:

+        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$ocb_dec_epilogue:

+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue

+        mov     rsi,QWORD[16+rsp]

+        DB      0F3h,0C3h               ;repret

+

+$L$SEH_end_aesni_ocb_decrypt:

+

+

+ALIGN   32

+__ocb_decrypt6:

+

+        pxor    xmm15,xmm9

+        movdqu  xmm11,XMMWORD[r12*1+rbx]

+        movdqa  xmm12,xmm10

+        movdqu  xmm13,XMMWORD[r13*1+rbx]

+        movdqa  xmm14,xmm10

+        pxor    xmm10,xmm15

+        movdqu  xmm15,XMMWORD[r14*1+rbx]

+        pxor    xmm11,xmm10

+        pxor    xmm2,xmm10

+        pxor    xmm12,xmm11

+        pxor    xmm3,xmm11

+        pxor    xmm13,xmm12

+        pxor    xmm4,xmm12

+        pxor    xmm14,xmm13

+        pxor    xmm5,xmm13

+        pxor    xmm15,xmm14

+        pxor    xmm6,xmm14

+        pxor    xmm7,xmm15

+        movups  xmm0,XMMWORD[32+r11]

+

+        lea     r12,[1+r8]

+        lea     r13,[3+r8]

+        lea     r14,[5+r8]

+        add     r8,6

+        pxor    xmm10,xmm9

+        bsf     r12,r12

+        bsf     r13,r13

+        bsf     r14,r14

+

+DB      102,15,56,222,209

+DB      102,15,56,222,217

+DB      102,15,56,222,225

+DB      102,15,56,222,233

+        pxor    xmm11,xmm9

+        pxor    xmm12,xmm9

+DB      102,15,56,222,241

+        pxor    xmm13,xmm9

+        pxor    xmm14,xmm9

+DB      102,15,56,222,249

+        movups  xmm1,XMMWORD[48+r11]

+        pxor    xmm15,xmm9

+

+DB      102,15,56,222,208

+DB      102,15,56,222,216

+DB      102,15,56,222,224

+DB      102,15,56,222,232

+DB      102,15,56,222,240

+DB      102,15,56,222,248

+        movups  xmm0,XMMWORD[64+r11]

+        shl     r12,4

+        shl     r13,4

+        jmp     NEAR $L$ocb_dec_loop6

+

+ALIGN   32

+$L$ocb_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[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

+DB      102,15,56,222,240

+DB      102,15,56,222,248

+        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]

+        jnz     NEAR $L$ocb_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[16+r11]

+        shl     r14,4

+

+DB      102,65,15,56,223,210

+        movdqu  xmm10,XMMWORD[rbx]

+        mov     rax,r10

+DB      102,65,15,56,223,219

+DB      102,65,15,56,223,228

+DB      102,65,15,56,223,237

+DB      102,65,15,56,223,246

+DB      102,65,15,56,223,255

+        DB      0F3h,0C3h               ;repret

+

+

+

+

+ALIGN   32

+__ocb_decrypt4:

+

+        pxor    xmm15,xmm9

+        movdqu  xmm11,XMMWORD[r12*1+rbx]

+        movdqa  xmm12,xmm10

+        movdqu  xmm13,XMMWORD[r13*1+rbx]

+        pxor    xmm10,xmm15

+        pxor    xmm11,xmm10

+        pxor    xmm2,xmm10

+        pxor    xmm12,xmm11

+        pxor    xmm3,xmm11

+        pxor    xmm13,xmm12

+        pxor    xmm4,xmm12

+        pxor    xmm5,xmm13

+        movups  xmm0,XMMWORD[32+r11]

+

+        pxor    xmm10,xmm9

+        pxor    xmm11,xmm9

+        pxor    xmm12,xmm9

+        pxor    xmm13,xmm9

+

+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[48+r11]

+

+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[64+r11]

+        jmp     NEAR $L$ocb_dec_loop4

+

+ALIGN   32

+$L$ocb_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[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[((-16))+rax*1+rcx]

+        jnz     NEAR $L$ocb_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[16+r11]

+        mov     rax,r10

+

+DB      102,65,15,56,223,210

+DB      102,65,15,56,223,219

+DB      102,65,15,56,223,228

+DB      102,65,15,56,223,237

+        DB      0F3h,0C3h               ;repret

+

+

+

+

+ALIGN   32

+__ocb_decrypt1:

+

+        pxor    xmm7,xmm15

+        pxor    xmm7,xmm9

+        pxor    xmm2,xmm7

+        movups  xmm0,XMMWORD[32+r11]

+

+DB      102,15,56,222,209

+        movups  xmm1,XMMWORD[48+r11]

+        pxor    xmm7,xmm9

+

+DB      102,15,56,222,208

+        movups  xmm0,XMMWORD[64+r11]

+        jmp     NEAR $L$ocb_dec_loop1

+

+ALIGN   32

+$L$ocb_dec_loop1:

+DB      102,15,56,222,209

+        movups  xmm1,XMMWORD[rax*1+rcx]

+        add     rax,32

+

+DB      102,15,56,222,208

+        movups  xmm0,XMMWORD[((-16))+rax*1+rcx]

+        jnz     NEAR $L$ocb_dec_loop1

+

+DB      102,15,56,222,209

+        movups  xmm1,XMMWORD[16+r11]

+        mov     rax,r10

+

+DB      102,15,56,223,215

+        DB      0F3h,0C3h               ;repret

+

+

+global  aesni_cbc_encrypt

+

+ALIGN   16

+aesni_cbc_encrypt:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_aesni_cbc_encrypt:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+        mov     rcx,r9

+        mov     r8,QWORD[40+rsp]

+        mov     r9,QWORD[48+rsp]

+

+

+

+        test    rdx,rdx

+        jz      NEAR $L$cbc_ret

+

+        mov     r10d,DWORD[240+rcx]

+        mov     r11,rcx

+        test    r9d,r9d

+        jz      NEAR $L$cbc_decrypt

+

+        movups  xmm2,XMMWORD[r8]

+        mov     eax,r10d

+        cmp     rdx,16

+        jb      NEAR $L$cbc_enc_tail

+        sub     rdx,16

+        jmp     NEAR $L$cbc_enc_loop

+ALIGN   16

+$L$cbc_enc_loop:

+        movups  xmm3,XMMWORD[rdi]

+        lea     rdi,[16+rdi]

+

+        movups  xmm0,XMMWORD[rcx]

+        movups  xmm1,XMMWORD[16+rcx]

+        xorps   xmm3,xmm0

+        lea     rcx,[32+rcx]

+        xorps   xmm2,xmm3

+$L$oop_enc1_15:

+DB      102,15,56,220,209

+        dec     eax

+        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[rsi],xmm2

+        lea     rsi,[16+rsi]

+        sub     rdx,16

+        jnc     NEAR $L$cbc_enc_loop

+        add     rdx,16

+        jnz     NEAR $L$cbc_enc_tail

+        pxor    xmm0,xmm0

+        pxor    xmm1,xmm1

+        movups  XMMWORD[r8],xmm2

+        pxor    xmm2,xmm2

+        pxor    xmm3,xmm3

+        jmp     NEAR $L$cbc_ret

+

+$L$cbc_enc_tail:

+        mov     rcx,rdx

+        xchg    rsi,rdi

+        DD      0x9066A4F3

+        mov     ecx,16

+        sub     rcx,rdx

+        xor     eax,eax

+        DD      0x9066AAF3

+        lea     rdi,[((-16))+rdi]

+        mov     eax,r10d

+        mov     rsi,rdi

+        mov     rcx,r11

+        xor     rdx,rdx

+        jmp     NEAR $L$cbc_enc_loop

+

+ALIGN   16

+$L$cbc_decrypt:

+        cmp     rdx,16

+        jne     NEAR $L$cbc_decrypt_bulk

+

+

+

+        movdqu  xmm2,XMMWORD[rdi]

+        movdqu  xmm3,XMMWORD[r8]

+        movdqa  xmm4,xmm2

+        movups  xmm0,XMMWORD[rcx]

+        movups  xmm1,XMMWORD[16+rcx]

+        lea     rcx,[32+rcx]

+        xorps   xmm2,xmm0

+$L$oop_dec1_16:

+DB      102,15,56,222,209

+        dec     r10d

+        movups  xmm1,XMMWORD[rcx]

+        lea     rcx,[16+rcx]

+        jnz     NEAR $L$oop_dec1_16

+DB      102,15,56,223,209

+        pxor    xmm0,xmm0

+        pxor    xmm1,xmm1

+        movdqu  XMMWORD[r8],xmm4

+        xorps   xmm2,xmm3

+        pxor    xmm3,xmm3

+        movups  XMMWORD[rsi],xmm2

+        pxor    xmm2,xmm2

+        jmp     NEAR $L$cbc_ret

+ALIGN   16

+$L$cbc_decrypt_bulk:

+        lea     r11,[rsp]

+

+        push    rbp

+

+        sub     rsp,176

+        and     rsp,-16

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

+        mov     rbp,rcx

+        movups  xmm10,XMMWORD[r8]

+        mov     eax,r10d

+        cmp     rdx,0x50

+        jbe     NEAR $L$cbc_dec_tail

+

+        movups  xmm0,XMMWORD[rcx]

+        movdqu  xmm2,XMMWORD[rdi]

+        movdqu  xmm3,XMMWORD[16+rdi]

+        movdqa  xmm11,xmm2

+        movdqu  xmm4,XMMWORD[32+rdi]

+        movdqa  xmm12,xmm3

+        movdqu  xmm5,XMMWORD[48+rdi]

+        movdqa  xmm13,xmm4

+        movdqu  xmm6,XMMWORD[64+rdi]

+        movdqa  xmm14,xmm5

+        movdqu  xmm7,XMMWORD[80+rdi]

+        movdqa  xmm15,xmm6

+        mov     r9d,DWORD[((OPENSSL_ia32cap_P+4))]

+        cmp     rdx,0x70

+        jbe     NEAR $L$cbc_dec_six_or_seven

+

+        and     r9d,71303168

+        sub     rdx,0x50

+        cmp     r9d,4194304

+        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[rsi],xmm9

+        lea     rsi,[16+rsi]

+$L$cbc_dec_loop8_enter:

+        movdqu  xmm8,XMMWORD[96+rdi]

+        pxor    xmm2,xmm0

+        movdqu  xmm9,XMMWORD[112+rdi]

+        pxor    xmm3,xmm0

+        movups  xmm1,XMMWORD[((16-112))+rcx]

+        pxor    xmm4,xmm0

+        mov     rbp,-1

+        cmp     rdx,0x70

+        pxor    xmm5,xmm0

+        pxor    xmm6,xmm0

+        pxor    xmm7,xmm0

+        pxor    xmm8,xmm0

+

+DB      102,15,56,222,209

+        pxor    xmm9,xmm0

+        movups  xmm0,XMMWORD[((32-112))+rcx]

+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

+DB      102,68,15,56,222,193

+        adc     rbp,0

+        and     rbp,128

+DB      102,68,15,56,222,201

+        add     rbp,rdi

+        movups  xmm1,XMMWORD[((48-112))+rcx]

+DB      102,15,56,222,208

+DB      102,15,56,222,216

+DB      102,15,56,222,224

+DB      102,15,56,222,232

+DB      102,15,56,222,240

+DB      102,15,56,222,248

+DB      102,68,15,56,222,192

+DB      102,68,15,56,222,200

+        movups  xmm0,XMMWORD[((64-112))+rcx]

+        nop

+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

+DB      102,68,15,56,222,193

+DB      102,68,15,56,222,201

+        movups  xmm1,XMMWORD[((80-112))+rcx]

+        nop

+DB      102,15,56,222,208

+DB      102,15,56,222,216

+DB      102,15,56,222,224

+DB      102,15,56,222,232

+DB      102,15,56,222,240

+DB      102,15,56,222,248

+DB      102,68,15,56,222,192

+DB      102,68,15,56,222,200

+        movups  xmm0,XMMWORD[((96-112))+rcx]

+        nop

+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

+DB      102,68,15,56,222,193

+DB      102,68,15,56,222,201

+        movups  xmm1,XMMWORD[((112-112))+rcx]

+        nop

+DB      102,15,56,222,208

+DB      102,15,56,222,216

+DB      102,15,56,222,224

+DB      102,15,56,222,232

+DB      102,15,56,222,240

+DB      102,15,56,222,248

+DB      102,68,15,56,222,192

+DB      102,68,15,56,222,200

+        movups  xmm0,XMMWORD[((128-112))+rcx]

+        nop

+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

+DB      102,68,15,56,222,193

+DB      102,68,15,56,222,201

+        movups  xmm1,XMMWORD[((144-112))+rcx]

+        cmp     eax,11

+DB      102,15,56,222,208

+DB      102,15,56,222,216

+DB      102,15,56,222,224

+DB      102,15,56,222,232

+DB      102,15,56,222,240

+DB      102,15,56,222,248

+DB      102,68,15,56,222,192

+DB      102,68,15,56,222,200

+        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

+DB      102,15,56,222,233

+DB      102,15,56,222,241

+DB      102,15,56,222,249

+DB      102,68,15,56,222,193

+DB      102,68,15,56,222,201

+        movups  xmm1,XMMWORD[((176-112))+rcx]

+        nop

+DB      102,15,56,222,208

+DB      102,15,56,222,216

+DB      102,15,56,222,224

+DB      102,15,56,222,232

+DB      102,15,56,222,240

+DB      102,15,56,222,248

+DB      102,68,15,56,222,192

+DB      102,68,15,56,222,200

+        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

+DB      102,15,56,222,233

+DB      102,15,56,222,241

+DB      102,15,56,222,249

+DB      102,68,15,56,222,193

+DB      102,68,15,56,222,201

+        movups  xmm1,XMMWORD[((208-112))+rcx]

+        nop

+DB      102,15,56,222,208

+DB      102,15,56,222,216

+DB      102,15,56,222,224

+DB      102,15,56,222,232

+DB      102,15,56,222,240

+DB      102,15,56,222,248

+DB      102,68,15,56,222,192

+DB      102,68,15,56,222,200

+        movups  xmm0,XMMWORD[((224-112))+rcx]

+        jmp     NEAR $L$cbc_dec_done

+ALIGN   16

+$L$cbc_dec_done:

+DB      102,15,56,222,209

+DB      102,15,56,222,217

+        pxor    xmm10,xmm0

+        pxor    xmm11,xmm0

+DB      102,15,56,222,225

+DB      102,15,56,222,233

+        pxor    xmm12,xmm0

+        pxor    xmm13,xmm0

+DB      102,15,56,222,241

+DB      102,15,56,222,249

+        pxor    xmm14,xmm0

+        pxor    xmm15,xmm0

+DB      102,68,15,56,222,193

+DB      102,68,15,56,222,201

+        movdqu  xmm1,XMMWORD[80+rdi]

+

+DB      102,65,15,56,223,210

+        movdqu  xmm10,XMMWORD[96+rdi]

+        pxor    xmm1,xmm0

+DB      102,65,15,56,223,219

+        pxor    xmm10,xmm0

+        movdqu  xmm0,XMMWORD[112+rdi]

+DB      102,65,15,56,223,228

+        lea     rdi,[128+rdi]

+        movdqu  xmm11,XMMWORD[rbp]

+DB      102,65,15,56,223,237

+DB      102,65,15,56,223,246

+        movdqu  xmm12,XMMWORD[16+rbp]

+        movdqu  xmm13,XMMWORD[32+rbp]

+DB      102,65,15,56,223,255

+DB      102,68,15,56,223,193

+        movdqu  xmm14,XMMWORD[48+rbp]

+        movdqu  xmm15,XMMWORD[64+rbp]

+DB      102,69,15,56,223,202

+        movdqa  xmm10,xmm0

+        movdqu  xmm1,XMMWORD[80+rbp]

+        movups  xmm0,XMMWORD[((-112))+rcx]

+

+        movups  XMMWORD[rsi],xmm2

+        movdqa  xmm2,xmm11

+        movups  XMMWORD[16+rsi],xmm3

+        movdqa  xmm3,xmm12

+        movups  XMMWORD[32+rsi],xmm4

+        movdqa  xmm4,xmm13

+        movups  XMMWORD[48+rsi],xmm5

+        movdqa  xmm5,xmm14

+        movups  XMMWORD[64+rsi],xmm6

+        movdqa  xmm6,xmm15

+        movups  XMMWORD[80+rsi],xmm7

+        movdqa  xmm7,xmm1

+        movups  XMMWORD[96+rsi],xmm8

+        lea     rsi,[112+rsi]

+

+        sub     rdx,0x80

+        ja      NEAR $L$cbc_dec_loop8

+

+        movaps  xmm2,xmm9

+        lea     rcx,[((-112))+rcx]

+        add     rdx,0x70

+        jle     NEAR $L$cbc_dec_clear_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,0x60

+        ja      NEAR $L$cbc_dec_seven

+

+        movaps  xmm8,xmm7

+        call    _aesni_decrypt6

+        pxor    xmm2,xmm10

+        movaps  xmm10,xmm8

+        pxor    xmm3,xmm11

+        movdqu  XMMWORD[rsi],xmm2

+        pxor    xmm4,xmm12

+        movdqu  XMMWORD[16+rsi],xmm3

+        pxor    xmm3,xmm3

+        pxor    xmm5,xmm13

+        movdqu  XMMWORD[32+rsi],xmm4

+        pxor    xmm4,xmm4

+        pxor    xmm6,xmm14

+        movdqu  XMMWORD[48+rsi],xmm5

+        pxor    xmm5,xmm5

+        pxor    xmm7,xmm15

+        movdqu  XMMWORD[64+rsi],xmm6

+        pxor    xmm6,xmm6

+        lea     rsi,[80+rsi]

+        movdqa  xmm2,xmm7

+        pxor    xmm7,xmm7

+        jmp     NEAR $L$cbc_dec_tail_collected

+

+ALIGN   16

+$L$cbc_dec_seven:

+        movups  xmm8,XMMWORD[96+rdi]

+        xorps   xmm9,xmm9

+        call    _aesni_decrypt8

+        movups  xmm9,XMMWORD[80+rdi]

+        pxor    xmm2,xmm10

+        movups  xmm10,XMMWORD[96+rdi]

+        pxor    xmm3,xmm11

+        movdqu  XMMWORD[rsi],xmm2

+        pxor    xmm4,xmm12

+        movdqu  XMMWORD[16+rsi],xmm3

+        pxor    xmm3,xmm3

+        pxor    xmm5,xmm13

+        movdqu  XMMWORD[32+rsi],xmm4

+        pxor    xmm4,xmm4

+        pxor    xmm6,xmm14

+        movdqu  XMMWORD[48+rsi],xmm5

+        pxor    xmm5,xmm5

+        pxor    xmm7,xmm15

+        movdqu  XMMWORD[64+rsi],xmm6

+        pxor    xmm6,xmm6

+        pxor    xmm8,xmm9

+        movdqu  XMMWORD[80+rsi],xmm7

+        pxor    xmm7,xmm7

+        lea     rsi,[96+rsi]

+        movdqa  xmm2,xmm8

+        pxor    xmm8,xmm8

+        pxor    xmm9,xmm9

+        jmp     NEAR $L$cbc_dec_tail_collected

+

+ALIGN   16

+$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[32+rdi]

+        movdqa  xmm12,xmm3

+        movdqu  xmm5,XMMWORD[48+rdi]

+        movdqa  xmm13,xmm4

+        movdqu  xmm6,XMMWORD[64+rdi]

+        movdqa  xmm14,xmm5

+        movdqu  xmm7,XMMWORD[80+rdi]

+        movdqa  xmm15,xmm6

+$L$cbc_dec_loop6_enter:

+        lea     rdi,[96+rdi]

+        movdqa  xmm8,xmm7

+

+        call    _aesni_decrypt6

+

+        pxor    xmm2,xmm10

+        movdqa  xmm10,xmm8

+        pxor    xmm3,xmm11

+        movdqu  XMMWORD[rsi],xmm2

+        pxor    xmm4,xmm12

+        movdqu  XMMWORD[16+rsi],xmm3

+        pxor    xmm5,xmm13

+        movdqu  XMMWORD[32+rsi],xmm4

+        pxor    xmm6,xmm14

+        mov     rcx,rbp

+        movdqu  XMMWORD[48+rsi],xmm5

+        pxor    xmm7,xmm15

+        mov     eax,r10d

+        movdqu  XMMWORD[64+rsi],xmm6

+        lea     rsi,[80+rsi]

+        sub     rdx,0x60

+        ja      NEAR $L$cbc_dec_loop6

+

+        movdqa  xmm2,xmm7

+        add     rdx,0x50

+        jle     NEAR $L$cbc_dec_clear_tail_collected

+        movups  XMMWORD[rsi],xmm7

+        lea     rsi,[16+rsi]

+

+$L$cbc_dec_tail:

+        movups  xmm2,XMMWORD[rdi]

+        sub     rdx,0x10

+        jbe     NEAR $L$cbc_dec_one

+

+        movups  xmm3,XMMWORD[16+rdi]

+        movaps  xmm11,xmm2

+        sub     rdx,0x10

+        jbe     NEAR $L$cbc_dec_two

+

+        movups  xmm4,XMMWORD[32+rdi]

+        movaps  xmm12,xmm3

+        sub     rdx,0x10

+        jbe     NEAR $L$cbc_dec_three

+

+        movups  xmm5,XMMWORD[48+rdi]

+        movaps  xmm13,xmm4

+        sub     rdx,0x10

+        jbe     NEAR $L$cbc_dec_four

+

+        movups  xmm6,XMMWORD[64+rdi]

+        movaps  xmm14,xmm5

+        movaps  xmm15,xmm6

+        xorps   xmm7,xmm7

+        call    _aesni_decrypt6

+        pxor    xmm2,xmm10

+        movaps  xmm10,xmm15

+        pxor    xmm3,xmm11

+        movdqu  XMMWORD[rsi],xmm2

+        pxor    xmm4,xmm12

+        movdqu  XMMWORD[16+rsi],xmm3

+        pxor    xmm3,xmm3

+        pxor    xmm5,xmm13

+        movdqu  XMMWORD[32+rsi],xmm4

+        pxor    xmm4,xmm4

+        pxor    xmm6,xmm14

+        movdqu  XMMWORD[48+rsi],xmm5

+        pxor    xmm5,xmm5

+        lea     rsi,[64+rsi]

+        movdqa  xmm2,xmm6

+        pxor    xmm6,xmm6

+        pxor    xmm7,xmm7

+        sub     rdx,0x10

+        jmp     NEAR $L$cbc_dec_tail_collected

+

+ALIGN   16

+$L$cbc_dec_one:

+        movaps  xmm11,xmm2

+        movups  xmm0,XMMWORD[rcx]

+        movups  xmm1,XMMWORD[16+rcx]

+        lea     rcx,[32+rcx]

+        xorps   xmm2,xmm0

+$L$oop_dec1_17:

+DB      102,15,56,222,209

+        dec     eax

+        movups  xmm1,XMMWORD[rcx]

+        lea     rcx,[16+rcx]

+        jnz     NEAR $L$oop_dec1_17

+DB      102,15,56,223,209

+        xorps   xmm2,xmm10

+        movaps  xmm10,xmm11

+        jmp     NEAR $L$cbc_dec_tail_collected

+ALIGN   16

+$L$cbc_dec_two:

+        movaps  xmm12,xmm3

+        call    _aesni_decrypt2

+        pxor    xmm2,xmm10

+        movaps  xmm10,xmm12

+        pxor    xmm3,xmm11

+        movdqu  XMMWORD[rsi],xmm2

+        movdqa  xmm2,xmm3

+        pxor    xmm3,xmm3

+        lea     rsi,[16+rsi]

+        jmp     NEAR $L$cbc_dec_tail_collected

+ALIGN   16

+$L$cbc_dec_three:

+        movaps  xmm13,xmm4

+        call    _aesni_decrypt3

+        pxor    xmm2,xmm10

+        movaps  xmm10,xmm13

+        pxor    xmm3,xmm11

+        movdqu  XMMWORD[rsi],xmm2

+        pxor    xmm4,xmm12

+        movdqu  XMMWORD[16+rsi],xmm3

+        pxor    xmm3,xmm3

+        movdqa  xmm2,xmm4

+        pxor    xmm4,xmm4

+        lea     rsi,[32+rsi]

+        jmp     NEAR $L$cbc_dec_tail_collected

+ALIGN   16

+$L$cbc_dec_four:

+        movaps  xmm14,xmm5

+        call    _aesni_decrypt4

+        pxor    xmm2,xmm10

+        movaps  xmm10,xmm14

+        pxor    xmm3,xmm11

+        movdqu  XMMWORD[rsi],xmm2

+        pxor    xmm4,xmm12

+        movdqu  XMMWORD[16+rsi],xmm3

+        pxor    xmm3,xmm3

+        pxor    xmm5,xmm13

+        movdqu  XMMWORD[32+rsi],xmm4

+        pxor    xmm4,xmm4

+        movdqa  xmm2,xmm5

+        pxor    xmm5,xmm5

+        lea     rsi,[48+rsi]

+        jmp     NEAR $L$cbc_dec_tail_collected

+

+ALIGN   16

+$L$cbc_dec_clear_tail_collected:

+        pxor    xmm3,xmm3

+        pxor    xmm4,xmm4

+        pxor    xmm5,xmm5

+$L$cbc_dec_tail_collected:

+        movups  XMMWORD[r8],xmm10

+        and     rdx,15

+        jnz     NEAR $L$cbc_dec_tail_partial

+        movups  XMMWORD[rsi],xmm2

+        pxor    xmm2,xmm2

+        jmp     NEAR $L$cbc_dec_ret

+ALIGN   16

+$L$cbc_dec_tail_partial:

+        movaps  XMMWORD[rsp],xmm2

+        pxor    xmm2,xmm2

+        mov     rcx,16

+        mov     rdi,rsi

+        sub     rcx,rdx

+        lea     rsi,[rsp]

+        DD      0x9066A4F3

+        movdqa  XMMWORD[rsp],xmm2

+

+$L$cbc_dec_ret:

+        xorps   xmm0,xmm0

+        pxor    xmm1,xmm1

+        movaps  xmm6,XMMWORD[16+rsp]

+        movaps  XMMWORD[16+rsp],xmm0

+        movaps  xmm7,XMMWORD[32+rsp]

+        movaps  XMMWORD[32+rsp],xmm0

+        movaps  xmm8,XMMWORD[48+rsp]

+        movaps  XMMWORD[48+rsp],xmm0

+        movaps  xmm9,XMMWORD[64+rsp]

+        movaps  XMMWORD[64+rsp],xmm0

+        movaps  xmm10,XMMWORD[80+rsp]

+        movaps  XMMWORD[80+rsp],xmm0

+        movaps  xmm11,XMMWORD[96+rsp]

+        movaps  XMMWORD[96+rsp],xmm0

+        movaps  xmm12,XMMWORD[112+rsp]

+        movaps  XMMWORD[112+rsp],xmm0

+        movaps  xmm13,XMMWORD[128+rsp]

+        movaps  XMMWORD[128+rsp],xmm0

+        movaps  xmm14,XMMWORD[144+rsp]

+        movaps  XMMWORD[144+rsp],xmm0

+        movaps  xmm15,XMMWORD[160+rsp]

+        movaps  XMMWORD[160+rsp],xmm0

+        mov     rbp,QWORD[((-8))+r11]

+

+        lea     rsp,[r11]

+

+$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:

+global  aesni_set_decrypt_key

+

+ALIGN   16

+aesni_set_decrypt_key:

+

+DB      0x48,0x83,0xEC,0x08

+

+        call    __aesni_set_encrypt_key

+        shl     edx,4

+        test    eax,eax

+        jnz     NEAR $L$dec_key_ret

+        lea     rcx,[16+rdx*1+r8]

+

+        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[r8]

+        movups  xmm1,XMMWORD[rcx]

+DB      102,15,56,219,192

+DB      102,15,56,219,201

+        lea     r8,[16+r8]

+        lea     rcx,[((-16))+rcx]

+        movups  XMMWORD[16+rcx],xmm0

+        movups  XMMWORD[(-16)+r8],xmm1

+        cmp     rcx,r8

+        ja      NEAR $L$dec_key_inverse

+

+        movups  xmm0,XMMWORD[r8]

+DB      102,15,56,219,192

+        pxor    xmm1,xmm1

+        movups  XMMWORD[rcx],xmm0

+        pxor    xmm0,xmm0

+$L$dec_key_ret:

+        add     rsp,8

+

+        DB      0F3h,0C3h               ;repret

+

+$L$SEH_end_set_decrypt_key:

+

+global  aesni_set_encrypt_key

+

+ALIGN   16

+aesni_set_encrypt_key:

+__aesni_set_encrypt_key:

+

+DB      0x48,0x83,0xEC,0x08

+

+        mov     rax,-1

+        test    rcx,rcx

+        jz      NEAR $L$enc_key_ret

+        test    r8,r8

+        jz      NEAR $L$enc_key_ret

+

+        mov     r10d,268437504

+        movups  xmm0,XMMWORD[rcx]

+        xorps   xmm4,xmm4

+        and     r10d,DWORD[((OPENSSL_ia32cap_P+4))]

+        lea     rax,[16+r8]

+        cmp     edx,256

+        je      NEAR $L$14rounds

+        cmp     edx,192

+        je      NEAR $L$12rounds

+        cmp     edx,128

+        jne     NEAR $L$bad_keybits

+

+$L$10rounds:

+        mov     edx,9

+        cmp     r10d,268435456

+        je      NEAR $L$10rounds_alt

+

+        movups  XMMWORD[r8],xmm0

+DB      102,15,58,223,200,1

+        call    $L$key_expansion_128_cold

+DB      102,15,58,223,200,2

+        call    $L$key_expansion_128

+DB      102,15,58,223,200,4

+        call    $L$key_expansion_128

+DB      102,15,58,223,200,8

+        call    $L$key_expansion_128

+DB      102,15,58,223,200,16

+        call    $L$key_expansion_128

+DB      102,15,58,223,200,32

+        call    $L$key_expansion_128

+DB      102,15,58,223,200,64

+        call    $L$key_expansion_128

+DB      102,15,58,223,200,128

+        call    $L$key_expansion_128

+DB      102,15,58,223,200,27

+        call    $L$key_expansion_128

+DB      102,15,58,223,200,54

+        call    $L$key_expansion_128

+        movups  XMMWORD[rax],xmm0

+        mov     DWORD[80+rax],edx

+        xor     eax,eax

+        jmp     NEAR $L$enc_key_ret

+

+ALIGN   16

+$L$10rounds_alt:

+        movdqa  xmm5,XMMWORD[$L$key_rotate]

+        mov     r10d,8

+        movdqa  xmm4,XMMWORD[$L$key_rcon1]

+        movdqa  xmm2,xmm0

+        movdqu  XMMWORD[r8],xmm0

+        jmp     NEAR $L$oop_key128

+

+ALIGN   16

+$L$oop_key128:

+DB      102,15,56,0,197

+DB      102,15,56,221,196

+        pslld   xmm4,1

+        lea     rax,[16+rax]

+

+        movdqa  xmm3,xmm2

+        pslldq  xmm2,4

+        pxor    xmm3,xmm2

+        pslldq  xmm2,4

+        pxor    xmm3,xmm2

+        pslldq  xmm2,4

+        pxor    xmm2,xmm3

+

+        pxor    xmm0,xmm2

+        movdqu  XMMWORD[(-16)+rax],xmm0

+        movdqa  xmm2,xmm0

+

+        dec     r10d

+        jnz     NEAR $L$oop_key128

+

+        movdqa  xmm4,XMMWORD[$L$key_rcon1b]

+

+DB      102,15,56,0,197

+DB      102,15,56,221,196

+        pslld   xmm4,1

+

+        movdqa  xmm3,xmm2

+        pslldq  xmm2,4

+        pxor    xmm3,xmm2

+        pslldq  xmm2,4

+        pxor    xmm3,xmm2

+        pslldq  xmm2,4

+        pxor    xmm2,xmm3

+

+        pxor    xmm0,xmm2

+        movdqu  XMMWORD[rax],xmm0

+

+        movdqa  xmm2,xmm0

+DB      102,15,56,0,197

+DB      102,15,56,221,196

+

+        movdqa  xmm3,xmm2

+        pslldq  xmm2,4

+        pxor    xmm3,xmm2

+        pslldq  xmm2,4

+        pxor    xmm3,xmm2

+        pslldq  xmm2,4

+        pxor    xmm2,xmm3

+

+        pxor    xmm0,xmm2

+        movdqu  XMMWORD[16+rax],xmm0

+

+        mov     DWORD[96+rax],edx

+        xor     eax,eax

+        jmp     NEAR $L$enc_key_ret

+

+ALIGN   16

+$L$12rounds:

+        movq    xmm2,QWORD[16+rcx]

+        mov     edx,11

+        cmp     r10d,268435456

+        je      NEAR $L$12rounds_alt

+

+        movups  XMMWORD[r8],xmm0

+DB      102,15,58,223,202,1

+        call    $L$key_expansion_192a_cold

+DB      102,15,58,223,202,2

+        call    $L$key_expansion_192b

+DB      102,15,58,223,202,4

+        call    $L$key_expansion_192a

+DB      102,15,58,223,202,8

+        call    $L$key_expansion_192b

+DB      102,15,58,223,202,16

+        call    $L$key_expansion_192a

+DB      102,15,58,223,202,32

+        call    $L$key_expansion_192b

+DB      102,15,58,223,202,64

+        call    $L$key_expansion_192a

+DB      102,15,58,223,202,128

+        call    $L$key_expansion_192b

+        movups  XMMWORD[rax],xmm0

+        mov     DWORD[48+rax],edx

+        xor     rax,rax

+        jmp     NEAR $L$enc_key_ret

+

+ALIGN   16

+$L$12rounds_alt:

+        movdqa  xmm5,XMMWORD[$L$key_rotate192]

+        movdqa  xmm4,XMMWORD[$L$key_rcon1]

+        mov     r10d,8

+        movdqu  XMMWORD[r8],xmm0

+        jmp     NEAR $L$oop_key192

+

+ALIGN   16

+$L$oop_key192:

+        movq    QWORD[rax],xmm2

+        movdqa  xmm1,xmm2

+DB      102,15,56,0,213

+DB      102,15,56,221,212

+        pslld   xmm4,1

+        lea     rax,[24+rax]

+

+        movdqa  xmm3,xmm0

+        pslldq  xmm0,4

+        pxor    xmm3,xmm0

+        pslldq  xmm0,4

+        pxor    xmm3,xmm0

+        pslldq  xmm0,4

+        pxor    xmm0,xmm3

+

+        pshufd  xmm3,xmm0,0xff

+        pxor    xmm3,xmm1

+        pslldq  xmm1,4

+        pxor    xmm3,xmm1

+

+        pxor    xmm0,xmm2

+        pxor    xmm2,xmm3

+        movdqu  XMMWORD[(-16)+rax],xmm0

+

+        dec     r10d

+        jnz     NEAR $L$oop_key192

+

+        mov     DWORD[32+rax],edx

+        xor     eax,eax

+        jmp     NEAR $L$enc_key_ret

+

+ALIGN   16

+$L$14rounds:

+        movups  xmm2,XMMWORD[16+rcx]

+        mov     edx,13

+        lea     rax,[16+rax]

+        cmp     r10d,268435456

+        je      NEAR $L$14rounds_alt

+

+        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

+        call    $L$key_expansion_256b

+DB      102,15,58,223,202,2

+        call    $L$key_expansion_256a

+DB      102,15,58,223,200,2

+        call    $L$key_expansion_256b

+DB      102,15,58,223,202,4

+        call    $L$key_expansion_256a

+DB      102,15,58,223,200,4

+        call    $L$key_expansion_256b

+DB      102,15,58,223,202,8

+        call    $L$key_expansion_256a

+DB      102,15,58,223,200,8

+        call    $L$key_expansion_256b

+DB      102,15,58,223,202,16

+        call    $L$key_expansion_256a

+DB      102,15,58,223,200,16

+        call    $L$key_expansion_256b

+DB      102,15,58,223,202,32

+        call    $L$key_expansion_256a

+DB      102,15,58,223,200,32

+        call    $L$key_expansion_256b

+DB      102,15,58,223,202,64

+        call    $L$key_expansion_256a

+        movups  XMMWORD[rax],xmm0

+        mov     DWORD[16+rax],edx

+        xor     rax,rax

+        jmp     NEAR $L$enc_key_ret

+

+ALIGN   16

+$L$14rounds_alt:

+        movdqa  xmm5,XMMWORD[$L$key_rotate]

+        movdqa  xmm4,XMMWORD[$L$key_rcon1]

+        mov     r10d,7

+        movdqu  XMMWORD[r8],xmm0

+        movdqa  xmm1,xmm2

+        movdqu  XMMWORD[16+r8],xmm2

+        jmp     NEAR $L$oop_key256

+

+ALIGN   16

+$L$oop_key256:

+DB      102,15,56,0,213

+DB      102,15,56,221,212

+

+        movdqa  xmm3,xmm0

+        pslldq  xmm0,4

+        pxor    xmm3,xmm0

+        pslldq  xmm0,4

+        pxor    xmm3,xmm0

+        pslldq  xmm0,4

+        pxor    xmm0,xmm3

+        pslld   xmm4,1

+

+        pxor    xmm0,xmm2

+        movdqu  XMMWORD[rax],xmm0

+

+        dec     r10d

+        jz      NEAR $L$done_key256

+

+        pshufd  xmm2,xmm0,0xff

+        pxor    xmm3,xmm3

+DB      102,15,56,221,211

+

+        movdqa  xmm3,xmm1

+        pslldq  xmm1,4

+        pxor    xmm3,xmm1

+        pslldq  xmm1,4

+        pxor    xmm3,xmm1

+        pslldq  xmm1,4

+        pxor    xmm1,xmm3

+

+        pxor    xmm2,xmm1

+        movdqu  XMMWORD[16+rax],xmm2

+        lea     rax,[32+rax]

+        movdqa  xmm1,xmm2

+

+        jmp     NEAR $L$oop_key256

+

+$L$done_key256:

+        mov     DWORD[16+rax],edx

+        xor     eax,eax

+        jmp     NEAR $L$enc_key_ret

+

+ALIGN   16

+$L$bad_keybits:

+        mov     rax,-2

+$L$enc_key_ret:

+        pxor    xmm0,xmm0

+        pxor    xmm1,xmm1

+        pxor    xmm2,xmm2

+        pxor    xmm3,xmm3

+        pxor    xmm4,xmm4

+        pxor    xmm5,xmm5

+        add     rsp,8

+

+        DB      0F3h,0C3h               ;repret

+$L$SEH_end_set_encrypt_key:

+

+ALIGN   16

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

+        xorps   xmm0,xmm4

+        shufps  xmm1,xmm1,255

+        xorps   xmm0,xmm1

+        DB      0F3h,0C3h               ;repret

+

+ALIGN   16

+$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:

+        shufps  xmm4,xmm0,16

+        movdqa  xmm3,xmm2

+        xorps   xmm0,xmm4

+        shufps  xmm4,xmm0,140

+        pslldq  xmm3,4

+        xorps   xmm0,xmm4

+        pshufd  xmm1,xmm1,85

+        pxor    xmm2,xmm3

+        pxor    xmm0,xmm1

+        pshufd  xmm3,xmm0,255

+        pxor    xmm2,xmm3

+        DB      0F3h,0C3h               ;repret

+

+ALIGN   16

+$L$key_expansion_192b:

+        movaps  xmm3,xmm0

+        shufps  xmm5,xmm0,68

+        movups  XMMWORD[rax],xmm5

+        shufps  xmm3,xmm2,78

+        movups  XMMWORD[16+rax],xmm3

+        lea     rax,[32+rax]

+        jmp     NEAR $L$key_expansion_192b_warm

+

+ALIGN   16

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

+        xorps   xmm0,xmm4

+        shufps  xmm1,xmm1,255

+        xorps   xmm0,xmm1

+        DB      0F3h,0C3h               ;repret

+

+ALIGN   16

+$L$key_expansion_256b:

+        movups  XMMWORD[rax],xmm0

+        lea     rax,[16+rax]

+

+        shufps  xmm4,xmm2,16

+        xorps   xmm2,xmm4

+        shufps  xmm4,xmm2,140

+        xorps   xmm2,xmm4

+        shufps  xmm1,xmm1,170

+        xorps   xmm2,xmm1

+        DB      0F3h,0C3h               ;repret

+

+

+

+ALIGN   64

+$L$bswap_mask:

+DB      15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0

+$L$increment32:

+        DD      6,6,6,0

+$L$increment64:

+        DD      1,0,0,0

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

+$L$key_rotate:

+        DD      0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d

+$L$key_rotate192:

+        DD      0x04070605,0x04070605,0x04070605,0x04070605

+$L$key_rcon1:

+        DD      1,1,1,1

+$L$key_rcon1b:

+        DD      0x1b,0x1b,0x1b,0x1b

+

+DB      65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69

+DB      83,45,78,73,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   64

+EXTERN  __imp_RtlVirtualUnwind

+

+ALIGN   16

+ecb_ccm64_se_handler:

+        push    rsi

+        push    rdi

+        push    rbx

+        push    rbp

+        push    r12

+        push    r13

+        push    r14

+        push    r15

+        pushfq

+        sub     rsp,64

+

+        mov     rax,QWORD[120+r8]

+        mov     rbx,QWORD[248+r8]

+

+        mov     rsi,QWORD[8+r9]

+        mov     r11,QWORD[56+r9]

+

+        mov     r10d,DWORD[r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jb      NEAR $L$common_seh_tail

+

+        mov     rax,QWORD[152+r8]

+

+        mov     r10d,DWORD[4+r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jae     NEAR $L$common_seh_tail

+

+        lea     rsi,[rax]

+        lea     rdi,[512+r8]

+        mov     ecx,8

+        DD      0xa548f3fc

+        lea     rax,[88+rax]

+

+        jmp     NEAR $L$common_seh_tail

+

+

+

+ALIGN   16

+ctr_xts_se_handler:

+        push    rsi

+        push    rdi

+        push    rbx

+        push    rbp

+        push    r12

+        push    r13

+        push    r14

+        push    r15

+        pushfq

+        sub     rsp,64

+

+        mov     rax,QWORD[120+r8]

+        mov     rbx,QWORD[248+r8]

+

+        mov     rsi,QWORD[8+r9]

+        mov     r11,QWORD[56+r9]

+

+        mov     r10d,DWORD[r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jb      NEAR $L$common_seh_tail

+

+        mov     rax,QWORD[152+r8]

+

+        mov     r10d,DWORD[4+r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jae     NEAR $L$common_seh_tail

+

+        mov     rax,QWORD[208+r8]

+

+        lea     rsi,[((-168))+rax]

+        lea     rdi,[512+r8]

+        mov     ecx,20

+        DD      0xa548f3fc

+

+        mov     rbp,QWORD[((-8))+rax]

+        mov     QWORD[160+r8],rbp

+        jmp     NEAR $L$common_seh_tail

+

+

+

+ALIGN   16

+ocb_se_handler:

+        push    rsi

+        push    rdi

+        push    rbx

+        push    rbp

+        push    r12

+        push    r13

+        push    r14

+        push    r15

+        pushfq

+        sub     rsp,64

+

+        mov     rax,QWORD[120+r8]

+        mov     rbx,QWORD[248+r8]

+

+        mov     rsi,QWORD[8+r9]

+        mov     r11,QWORD[56+r9]

+

+        mov     r10d,DWORD[r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jb      NEAR $L$common_seh_tail

+

+        mov     r10d,DWORD[4+r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jae     NEAR $L$common_seh_tail

+

+        mov     r10d,DWORD[8+r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jae     NEAR $L$ocb_no_xmm

+

+        mov     rax,QWORD[152+r8]

+

+        lea     rsi,[rax]

+        lea     rdi,[512+r8]

+        mov     ecx,20

+        DD      0xa548f3fc

+        lea     rax,[((160+40))+rax]

+

+$L$ocb_no_xmm:

+        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     NEAR $L$common_seh_tail

+

+

+ALIGN   16

+cbc_se_handler:

+        push    rsi

+        push    rdi

+        push    rbx

+        push    rbp

+        push    r12

+        push    r13

+        push    r14

+        push    r15

+        pushfq

+        sub     rsp,64

+

+        mov     rax,QWORD[152+r8]

+        mov     rbx,QWORD[248+r8]

+

+        lea     r10,[$L$cbc_decrypt_bulk]

+        cmp     rbx,r10

+        jb      NEAR $L$common_seh_tail

+

+        mov     rax,QWORD[120+r8]

+

+        lea     r10,[$L$cbc_decrypt_body]

+        cmp     rbx,r10

+        jb      NEAR $L$common_seh_tail

+

+        mov     rax,QWORD[152+r8]

+

+        lea     r10,[$L$cbc_ret]

+        cmp     rbx,r10

+        jae     NEAR $L$common_seh_tail

+

+        lea     rsi,[16+rax]

+        lea     rdi,[512+r8]

+        mov     ecx,20

+        DD      0xa548f3fc

+

+        mov     rax,QWORD[208+r8]

+

+        mov     rbp,QWORD[((-8))+rax]

+        mov     QWORD[160+r8],rbp

+

+$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[40+r9]

+        mov     rsi,r8

+        mov     ecx,154

+        DD      0xa548f3fc

+

+        mov     rsi,r9

+        xor     rcx,rcx

+        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

+        popfq

+        pop     r15

+        pop     r14

+        pop     r13

+        pop     r12

+        pop     rbp

+        pop     rbx

+        pop     rdi

+        pop     rsi

+        DB      0F3h,0C3h               ;repret

+

+

+section .pdata rdata align=4

+ALIGN   4

+        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      $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      $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      $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      $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      $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_ocb_encrypt wrt ..imagebase

+        DD      $L$SEH_end_aesni_ocb_encrypt wrt ..imagebase

+        DD      $L$SEH_info_ocb_enc wrt ..imagebase

+

+        DD      $L$SEH_begin_aesni_ocb_decrypt wrt ..imagebase

+        DD      $L$SEH_end_aesni_ocb_decrypt wrt ..imagebase

+        DD      $L$SEH_info_ocb_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      aesni_set_decrypt_key wrt ..imagebase

+        DD      $L$SEH_end_set_decrypt_key wrt ..imagebase

+        DD      $L$SEH_info_key wrt ..imagebase

+

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

+DB      9,0,0,0

+        DD      ecb_ccm64_se_handler wrt ..imagebase

+        DD      $L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret
wrt ..imagebase


+$L$SEH_info_ccm64_enc:

+DB      9,0,0,0

+        DD      ecb_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      ecb_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      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      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      ctr_xts_se_handler wrt ..imagebase

+        DD      $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue
wrt ..imagebase

+$L$SEH_info_ocb_enc:

+DB      9,0,0,0

+        DD      ocb_se_handler wrt ..imagebase

+        DD      $L$ocb_enc_body wrt ..imagebase,$L$ocb_enc_epilogue
wrt ..imagebase

+        DD      $L$ocb_enc_pop wrt ..imagebase

+        DD      0

+$L$SEH_info_ocb_dec:

+DB      9,0,0,0

+        DD      ocb_se_handler wrt ..imagebase

+        DD      $L$ocb_dec_body wrt ..imagebase,$L$ocb_dec_epilogue
wrt ..imagebase

+        DD      $L$ocb_dec_pop wrt ..imagebase

+        DD      0

+$L$SEH_info_cbc:

+DB      9,0,0,0

+        DD      cbc_se_handler wrt ..imagebase

+$L$SEH_info_key:

+DB      0x01,0x04,0x01,0x00

+DB      0x04,0x02,0x00,0x00

diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-
x86_64.nasm

b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
new file mode 100644
index 0000000000..1c911fa294
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/aes/vpaes-x86_64.nasm
@@ -0,0 +1,1173 @@
+; WARNING: do not edit!

+; Generated from openssl/crypto/aes/asm/vpaes-x86_64.pl

+;

+; Copyright 2011-2020 The OpenSSL Project Authors. All Rights
Reserved.


+;

+; Licensed under the OpenSSL license (the "License").  You may not use

+; this file except in compliance with the License.  You can obtain a
copy


+; in the file LICENSE in the source distribution or at

+; https://www.openssl.org/source/license.html

+

+default rel

+%define XMMWORD

+%define YMMWORD

+%define ZMMWORD

+section .text code align=64

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+ALIGN   16

+_vpaes_encrypt_core:

+

+        mov     r9,rdx

+        mov     r11,16

+        mov     eax,DWORD[240+rdx]

+        movdqa  xmm1,xmm9

+        movdqa  xmm2,XMMWORD[$L$k_ipt]

+        pandn   xmm1,xmm0

+        movdqu  xmm5,XMMWORD[r9]

+        psrld   xmm1,4

+        pand    xmm0,xmm9

+DB      102,15,56,0,208

+        movdqa  xmm0,XMMWORD[(($L$k_ipt+16))]

+DB      102,15,56,0,193

+        pxor    xmm2,xmm5

+        add     r9,16

+        pxor    xmm0,xmm2

+        lea     r10,[$L$k_mc_backward]

+        jmp     NEAR $L$enc_entry

+

+ALIGN   16

+$L$enc_loop:

+

+        movdqa  xmm4,xmm13

+        movdqa  xmm0,xmm12

+DB      102,15,56,0,226

+DB      102,15,56,0,195

+        pxor    xmm4,xmm5

+        movdqa  xmm5,xmm15

+        pxor    xmm0,xmm4

+        movdqa  xmm1,XMMWORD[((-64))+r10*1+r11]

+DB      102,15,56,0,234

+        movdqa  xmm4,XMMWORD[r10*1+r11]

+        movdqa  xmm2,xmm14

+DB      102,15,56,0,211

+        movdqa  xmm3,xmm0

+        pxor    xmm2,xmm5

+DB      102,15,56,0,193

+        add     r9,16

+        pxor    xmm0,xmm2

+DB      102,15,56,0,220

+        add     r11,16

+        pxor    xmm3,xmm0

+DB      102,15,56,0,193

+        and     r11,0x30

+        sub     rax,1

+        pxor    xmm0,xmm3

+

+$L$enc_entry:

+

+        movdqa  xmm1,xmm9

+        movdqa  xmm5,xmm11

+        pandn   xmm1,xmm0

+        psrld   xmm1,4

+        pand    xmm0,xmm9

+DB      102,15,56,0,232

+        movdqa  xmm3,xmm10

+        pxor    xmm0,xmm1

+DB      102,15,56,0,217

+        movdqa  xmm4,xmm10

+        pxor    xmm3,xmm5

+DB      102,15,56,0,224

+        movdqa  xmm2,xmm10

+        pxor    xmm4,xmm5

+DB      102,15,56,0,211

+        movdqa  xmm3,xmm10

+        pxor    xmm2,xmm0

+DB      102,15,56,0,220

+        movdqu  xmm5,XMMWORD[r9]

+        pxor    xmm3,xmm1

+        jnz     NEAR $L$enc_loop

+

+

+        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[64+r10*1+r11]

+        pxor    xmm0,xmm4

+DB      102,15,56,0,193

+        DB      0F3h,0C3h               ;repret

+

+

+

+

+

+

+

+

+

+ALIGN   16

+_vpaes_decrypt_core:

+

+        mov     r9,rdx

+        mov     eax,DWORD[240+rdx]

+        movdqa  xmm1,xmm9

+        movdqa  xmm2,XMMWORD[$L$k_dipt]

+        pandn   xmm1,xmm0

+        mov     r11,rax

+        psrld   xmm1,4

+        movdqu  xmm5,XMMWORD[r9]

+        shl     r11,4

+        pand    xmm0,xmm9

+DB      102,15,56,0,208

+        movdqa  xmm0,XMMWORD[(($L$k_dipt+16))]

+        xor     r11,0x30

+        lea     r10,[$L$k_dsbd]

+DB      102,15,56,0,193

+        and     r11,0x30

+        pxor    xmm2,xmm5

+        movdqa  xmm5,XMMWORD[(($L$k_mc_forward+48))]

+        pxor    xmm0,xmm2

+        add     r9,16

+        add     r11,r10

+        jmp     NEAR $L$dec_entry

+

+ALIGN   16

+$L$dec_loop:

+

+

+

+        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[r10]

+        pxor    xmm0,xmm1

+        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[32+r10]

+        pxor    xmm0,xmm1

+        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[64+r10]

+        pxor    xmm0,xmm1

+        movdqa  xmm1,XMMWORD[80+r10]

+

+DB      102,15,56,0,226

+DB      102,15,56,0,197

+DB      102,15,56,0,203

+        pxor    xmm0,xmm4

+        add     r9,16

+DB      102,15,58,15,237,12

+        pxor    xmm0,xmm1

+        sub     rax,1

+

+$L$dec_entry:

+

+        movdqa  xmm1,xmm9

+        pandn   xmm1,xmm0

+        movdqa  xmm2,xmm11

+        psrld   xmm1,4

+        pand    xmm0,xmm9

+DB      102,15,56,0,208

+        movdqa  xmm3,xmm10

+        pxor    xmm0,xmm1

+DB      102,15,56,0,217

+        movdqa  xmm4,xmm10

+        pxor    xmm3,xmm2

+DB      102,15,56,0,224

+        pxor    xmm4,xmm2

+        movdqa  xmm2,xmm10

+DB      102,15,56,0,211

+        movdqa  xmm3,xmm10

+        pxor    xmm2,xmm0

+DB      102,15,56,0,220

+        movdqu  xmm0,XMMWORD[r9]

+        pxor    xmm3,xmm1

+        jnz     NEAR $L$dec_loop

+

+

+        movdqa  xmm4,XMMWORD[96+r10]

+DB      102,15,56,0,226

+        pxor    xmm4,xmm0

+        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

+

+

+

+

+

+

+

+

+

+ALIGN   16

+_vpaes_schedule_core:

+

+

+

+

+

+

+        call    _vpaes_preheat

+        movdqa  xmm8,XMMWORD[$L$k_rcon]

+        movdqu  xmm0,XMMWORD[rdi]

+

+

+        movdqa  xmm3,xmm0

+        lea     r11,[$L$k_ipt]

+        call    _vpaes_schedule_transform

+        movdqa  xmm7,xmm0

+

+        lea     r10,[$L$k_sr]

+        test    rcx,rcx

+        jnz     NEAR $L$schedule_am_decrypting

+

+

+        movdqu  XMMWORD[rdx],xmm0

+        jmp     NEAR $L$schedule_go

+

+$L$schedule_am_decrypting:

+

+        movdqa  xmm1,XMMWORD[r10*1+r8]

+DB      102,15,56,0,217

+        movdqu  XMMWORD[rdx],xmm3

+        xor     r8,0x30

+

+$L$schedule_go:

+        cmp     esi,192

+        ja      NEAR $L$schedule_256

+        je      NEAR $L$schedule_192

+

+

+

+

+

+

+

+

+

+

+$L$schedule_128:

+        mov     esi,10

+

+$L$oop_schedule_128:

+        call    _vpaes_schedule_round

+        dec     rsi

+        jz      NEAR $L$schedule_mangle_last

+        call    _vpaes_schedule_mangle

+        jmp     NEAR $L$oop_schedule_128

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+ALIGN   16

+$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:

+        call    _vpaes_schedule_round

+DB      102,15,58,15,198,8

+        call    _vpaes_schedule_mangle

+        call    _vpaes_schedule_192_smear

+        call    _vpaes_schedule_mangle

+        call    _vpaes_schedule_round

+        dec     rsi

+        jz      NEAR $L$schedule_mangle_last

+        call    _vpaes_schedule_mangle

+        call    _vpaes_schedule_192_smear

+        jmp     NEAR $L$oop_schedule_192

+

+

+

+

+

+

+

+

+

+

+

+ALIGN   16

+$L$schedule_256:

+        movdqu  xmm0,XMMWORD[16+rdi]

+        call    _vpaes_schedule_transform

+        mov     esi,7

+

+$L$oop_schedule_256:

+        call    _vpaes_schedule_mangle

+        movdqa  xmm6,xmm0

+

+

+        call    _vpaes_schedule_round

+        dec     rsi

+        jz      NEAR $L$schedule_mangle_last

+        call    _vpaes_schedule_mangle

+

+

+        pshufd  xmm0,xmm0,0xFF

+        movdqa  xmm5,xmm7

+        movdqa  xmm7,xmm6

+        call    _vpaes_schedule_low_round

+        movdqa  xmm7,xmm5

+

+        jmp     NEAR $L$oop_schedule_256

+

+

+

+

+

+

+

+

+

+

+

+

+ALIGN   16

+$L$schedule_mangle_last:

+

+        lea     r11,[$L$k_deskew]

+        test    rcx,rcx

+        jnz     NEAR $L$schedule_mangle_last_dec

+

+

+        movdqa  xmm1,XMMWORD[r10*1+r8]

+DB      102,15,56,0,193

+        lea     r11,[$L$k_opt]

+        add     rdx,32

+

+$L$schedule_mangle_last_dec:

+        add     rdx,-16

+        pxor    xmm0,XMMWORD[$L$k_s63]

+        call    _vpaes_schedule_transform

+        movdqu  XMMWORD[rdx],xmm0

+

+

+        pxor    xmm0,xmm0

+        pxor    xmm1,xmm1

+        pxor    xmm2,xmm2

+        pxor    xmm3,xmm3

+        pxor    xmm4,xmm4

+        pxor    xmm5,xmm5

+        pxor    xmm6,xmm6

+        pxor    xmm7,xmm7

+        DB      0F3h,0C3h               ;repret

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+ALIGN   16

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

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+ALIGN   16

+_vpaes_schedule_round:

+

+

+        pxor    xmm1,xmm1

+DB      102,65,15,58,15,200,15

+DB      102,69,15,58,15,192,15

+        pxor    xmm7,xmm1

+

+

+        pshufd  xmm0,xmm0,0xFF

+DB      102,15,58,15,192,1

+

+

+

+

+_vpaes_schedule_low_round:

+

+        movdqa  xmm1,xmm7

+        pslldq  xmm7,4

+        pxor    xmm7,xmm1

+        movdqa  xmm1,xmm7

+        pslldq  xmm7,8

+        pxor    xmm7,xmm1

+        pxor    xmm7,XMMWORD[$L$k_s63]

+

+

+        movdqa  xmm1,xmm9

+        pandn   xmm1,xmm0

+        psrld   xmm1,4

+        pand    xmm0,xmm9

+        movdqa  xmm2,xmm11

+DB      102,15,56,0,208

+        pxor    xmm0,xmm1

+        movdqa  xmm3,xmm10

+DB      102,15,56,0,217

+        pxor    xmm3,xmm2

+        movdqa  xmm4,xmm10

+DB      102,15,56,0,224

+        pxor    xmm4,xmm2

+        movdqa  xmm2,xmm10

+DB      102,15,56,0,211

+        pxor    xmm2,xmm0

+        movdqa  xmm3,xmm10

+DB      102,15,56,0,220

+        pxor    xmm3,xmm1

+        movdqa  xmm4,xmm13

+DB      102,15,56,0,226

+        movdqa  xmm0,xmm12

+DB      102,15,56,0,195

+        pxor    xmm0,xmm4

+

+

+        pxor    xmm0,xmm7

+        movdqa  xmm7,xmm0

+        DB      0F3h,0C3h               ;repret

+

+

+

+

+

+

+

+

+

+

+

+

+

+ALIGN   16

+_vpaes_schedule_transform:

+

+        movdqa  xmm1,xmm9

+        pandn   xmm1,xmm0

+        psrld   xmm1,4

+        pand    xmm0,xmm9

+        movdqa  xmm2,XMMWORD[r11]

+DB      102,15,56,0,208

+        movdqa  xmm0,XMMWORD[16+r11]

+DB      102,15,56,0,193

+        pxor    xmm0,xmm2

+        DB      0F3h,0C3h               ;repret

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+ALIGN   16

+_vpaes_schedule_mangle:

+

+        movdqa  xmm4,xmm0

+        movdqa  xmm5,XMMWORD[$L$k_mc_forward]

+        test    rcx,rcx

+        jnz     NEAR $L$schedule_mangle_dec

+

+

+        add     rdx,16

+        pxor    xmm4,XMMWORD[$L$k_s63]

+DB      102,15,56,0,229

+        movdqa  xmm3,xmm4

+DB      102,15,56,0,229

+        pxor    xmm3,xmm4

+DB      102,15,56,0,229

+        pxor    xmm3,xmm4

+

+        jmp     NEAR $L$schedule_mangle_both

+ALIGN   16

+$L$schedule_mangle_dec:

+

+        lea     r11,[$L$k_dksd]

+        movdqa  xmm1,xmm9

+        pandn   xmm1,xmm4

+        psrld   xmm1,4

+        pand    xmm4,xmm9

+

+        movdqa  xmm2,XMMWORD[r11]

+DB      102,15,56,0,212

+        movdqa  xmm3,XMMWORD[16+r11]

+DB      102,15,56,0,217

+        pxor    xmm3,xmm2

+DB      102,15,56,0,221

+

+        movdqa  xmm2,XMMWORD[32+r11]

+DB      102,15,56,0,212

+        pxor    xmm2,xmm3

+        movdqa  xmm3,XMMWORD[48+r11]

+DB      102,15,56,0,217

+        pxor    xmm3,xmm2

+DB      102,15,56,0,221

+

+        movdqa  xmm2,XMMWORD[64+r11]

+DB      102,15,56,0,212

+        pxor    xmm2,xmm3

+        movdqa  xmm3,XMMWORD[80+r11]

+DB      102,15,56,0,217

+        pxor    xmm3,xmm2

+DB      102,15,56,0,221

+

+        movdqa  xmm2,XMMWORD[96+r11]

+DB      102,15,56,0,212

+        pxor    xmm2,xmm3

+        movdqa  xmm3,XMMWORD[112+r11]

+DB      102,15,56,0,217

+        pxor    xmm3,xmm2

+

+        add     rdx,-16

+

+$L$schedule_mangle_both:

+        movdqa  xmm1,XMMWORD[r10*1+r8]

+DB      102,15,56,0,217

+        add     r8,-16

+        and     r8,0x30

+        movdqu  XMMWORD[rdx],xmm3

+        DB      0F3h,0C3h               ;repret

+

+

+

+

+

+

+global  vpaes_set_encrypt_key

+

+ALIGN   16

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

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+

+

+

+        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[240+rdx],eax

+

+        mov     ecx,0

+        mov     r8d,0x30

+        call    _vpaes_schedule_core

+        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[8+rsp]        ;WIN64 epilogue

+        mov     rsi,QWORD[16+rsp]

+        DB      0F3h,0C3h               ;repret

+

+$L$SEH_end_vpaes_set_encrypt_key:

+

+global  vpaes_set_decrypt_key

+

+ALIGN   16

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

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+

+

+

+        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[240+rdx],eax

+        shl     eax,4

+        lea     rdx,[16+rax*1+rdx]

+

+        mov     ecx,1

+        mov     r8d,esi

+        shr     r8d,1

+        and     r8d,32

+        xor     r8d,32

+        call    _vpaes_schedule_core

+        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[8+rsp]        ;WIN64 epilogue

+        mov     rsi,QWORD[16+rsp]

+        DB      0F3h,0C3h               ;repret

+

+$L$SEH_end_vpaes_set_decrypt_key:

+

+global  vpaes_encrypt

+

+ALIGN   16

+vpaes_encrypt:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_vpaes_encrypt:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+

+

+

+        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[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:

+

+global  vpaes_decrypt

+

+ALIGN   16

+vpaes_decrypt:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_vpaes_decrypt:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+

+

+

+        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[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:

+global  vpaes_cbc_encrypt

+

+ALIGN   16

+vpaes_cbc_encrypt:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_vpaes_cbc_encrypt:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+        mov     rcx,r9

+        mov     r8,QWORD[40+rsp]

+        mov     r9,QWORD[48+rsp]

+

+

+

+        xchg    rdx,rcx

+        sub     rcx,16

+        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      NEAR $L$cbc_dec_loop

+        jmp     NEAR $L$cbc_enc_loop

+ALIGN   16

+$L$cbc_enc_loop:

+        movdqu  xmm0,XMMWORD[rdi]

+        pxor    xmm0,xmm6

+        call    _vpaes_encrypt_core

+        movdqa  xmm6,xmm0

+        movdqu  XMMWORD[rdi*1+rsi],xmm0

+        lea     rdi,[16+rdi]

+        sub     rcx,16

+        jnc     NEAR $L$cbc_enc_loop

+        jmp     NEAR $L$cbc_done

+ALIGN   16

+$L$cbc_dec_loop:

+        movdqu  xmm0,XMMWORD[rdi]

+        movdqa  xmm7,xmm0

+        call    _vpaes_decrypt_core

+        pxor    xmm0,xmm6

+        movdqa  xmm6,xmm7

+        movdqu  XMMWORD[rdi*1+rsi],xmm0

+        lea     rdi,[16+rdi]

+        sub     rcx,16

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

+

+

+

+

+

+

+

+ALIGN   16

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

+

+

+

+

+

+

+

+

+ALIGN   64

+_vpaes_consts:

+$L$k_inv:

+        DQ      0x0E05060F0D080180,0x040703090A0B0C02

+        DQ      0x01040A060F0B0780,0x030D0E0C02050809

+

+$L$k_s0F:

+        DQ      0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F

+

+$L$k_ipt:

+        DQ      0xC2B2E8985A2A7000,0xCABAE09052227808

+        DQ      0x4C01307D317C4D00,0xCD80B1FCB0FDCC81

+

+$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      0x0407060500030201,0x0C0F0E0D080B0A09

+        DQ      0x080B0A0904070605,0x000302010C0F0E0D

+        DQ      0x0C0F0E0D080B0A09,0x0407060500030201

+        DQ      0x000302010C0F0E0D,0x080B0A0904070605

+

+$L$k_mc_backward:

+        DQ      0x0605040702010003,0x0E0D0C0F0A09080B

+        DQ      0x020100030E0D0C0F,0x0A09080B06050407

+        DQ      0x0E0D0C0F0A09080B,0x0605040702010003

+        DQ      0x0A09080B06050407,0x020100030E0D0C0F

+

+$L$k_sr:

+        DQ      0x0706050403020100,0x0F0E0D0C0B0A0908

+        DQ      0x030E09040F0A0500,0x0B06010C07020D08

+        DQ      0x0F060D040B020900,0x070E050C030A0108

+        DQ      0x0B0E0104070A0D00,0x0306090C0F020508

+

+$L$k_rcon:

+        DQ      0x1F8391B9AF9DEEB6,0x702A98084D7C7D81

+

+$L$k_s63:

+        DQ      0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B

+

+$L$k_opt:

+        DQ      0xFF9F4929D6B66000,0xF7974121DEBE6808

+        DQ      0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0

+

+$L$k_deskew:

+        DQ      0x07E4A34047A4E300,0x1DFEB95A5DBEF91A

+        DQ      0x5F36B5DC83EA6900,0x2841C2ABF49D1E77

+

+

+

+

+

+$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      0x0F505B040B545F00,0x154A411E114E451A

+        DQ      0x86E383E660056500,0x12771772F491F194

+

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

+DB      109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32

+DB      85,110,105,118,101,114,115,105,116,121,41,0

+ALIGN   64

+

+EXTERN  __imp_RtlVirtualUnwind

+

+ALIGN   16

+se_handler:

+        push    rsi

+        push    rdi

+        push    rbx

+        push    rbp

+        push    r12

+        push    r13

+        push    r14

+        push    r15

+        pushfq

+        sub     rsp,64

+

+        mov     rax,QWORD[120+r8]

+        mov     rbx,QWORD[248+r8]

+

+        mov     rsi,QWORD[8+r9]

+        mov     r11,QWORD[56+r9]

+

+        mov     r10d,DWORD[r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jb      NEAR $L$in_prologue

+

+        mov     rax,QWORD[152+r8]

+

+        mov     r10d,DWORD[4+r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jae     NEAR $L$in_prologue

+

+        lea     rsi,[16+rax]

+        lea     rdi,[512+r8]

+        mov     ecx,20

+        DD      0xa548f3fc

+        lea     rax,[184+rax]

+

+$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[40+r9]

+        mov     rsi,r8

+        mov     ecx,154

+        DD      0xa548f3fc

+

+        mov     rsi,r9

+        xor     rcx,rcx

+        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

+        popfq

+        pop     r15

+        pop     r14

+        pop     r13

+        pop     r12

+        pop     rbp

+        pop     rbx

+        pop     rdi

+        pop     rsi

+        DB      0F3h,0C3h               ;repret

+

+

+section .pdata rdata align=4

+ALIGN   4

+        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      $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      $L$SEH_begin_vpaes_encrypt wrt ..imagebase

+        DD      $L$SEH_end_vpaes_encrypt wrt ..imagebase

+        DD      $L$SEH_info_vpaes_encrypt wrt ..imagebase

+

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

+

+section .xdata rdata align=8

+ALIGN   8

+$L$SEH_info_vpaes_set_encrypt_key:

+DB      9,0,0,0

+        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      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      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      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      se_handler wrt ..imagebase

+        DD      $L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt
..imagebase


diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
x86_64.nasm
new file mode 100644
index 0000000000..60f283d5fb
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/ghash-
x86_64.nasm

@@ -0,0 +1,1569 @@
+; WARNING: do not edit!

+; Generated from openssl/crypto/modes/asm/ghash-x86_64.pl

+;

+; Copyright 2010-2020 The OpenSSL Project Authors. All Rights
Reserved.


+;

+; Licensed under the OpenSSL license (the "License").  You may not use

+; this file except in compliance with the License.  You can obtain a
copy


+; in the file LICENSE in the source distribution or at

+; https://www.openssl.org/source/license.html

+

+default rel

+%define XMMWORD

+%define YMMWORD

+%define ZMMWORD

+section .text code align=64

+

+EXTERN  OPENSSL_ia32cap_P

+

+global  gcm_gmult_4bit

+

+ALIGN   16

+gcm_gmult_4bit:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_gcm_gmult_4bit:

+        mov     rdi,rcx

+        mov     rsi,rdx

+

+

+

+        push    rbx

+

+        push    rbp

+

+        push    r12

+

+        push    r13

+

+        push    r14

+

+        push    r15

+

+        sub     rsp,280

+

+$L$gmult_prologue:

+

+        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[8+rax*1+rsi]

+        mov     r9,QWORD[rax*1+rsi]

+        and     bl,0xf0

+        mov     rdx,r8

+        jmp     NEAR $L$oop1

+

+ALIGN   16

+$L$oop1:

+        shr     r8,4

+        and     rdx,0xf

+        mov     r10,r9

+        mov     al,BYTE[rcx*1+rdi]

+        shr     r9,4

+        xor     r8,QWORD[8+rbx*1+rsi]

+        shl     r10,60

+        xor     r9,QWORD[rbx*1+rsi]

+        mov     bl,al

+        xor     r9,QWORD[rdx*8+r11]

+        mov     rdx,r8

+        shl     al,4

+        xor     r8,r10

+        dec     rcx

+        js      NEAR $L$break1

+

+        shr     r8,4

+        and     rdx,0xf

+        mov     r10,r9

+        shr     r9,4

+        xor     r8,QWORD[8+rax*1+rsi]

+        shl     r10,60

+        xor     r9,QWORD[rax*1+rsi]

+        and     bl,0xf0

+        xor     r9,QWORD[rdx*8+r11]

+        mov     rdx,r8

+        xor     r8,r10

+        jmp     NEAR $L$oop1

+

+ALIGN   16

+$L$break1:

+        shr     r8,4

+        and     rdx,0xf

+        mov     r10,r9

+        shr     r9,4

+        xor     r8,QWORD[8+rax*1+rsi]

+        shl     r10,60

+        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,0xf

+        mov     r10,r9

+        shr     r9,4

+        xor     r8,QWORD[8+rbx*1+rsi]

+        shl     r10,60

+        xor     r9,QWORD[rbx*1+rsi]

+        xor     r8,r10

+        xor     r9,QWORD[rdx*8+r11]

+

+        bswap   r8

+        bswap   r9

+        mov     QWORD[8+rdi],r8

+        mov     QWORD[rdi],r9

+

+        lea     rsi,[((280+48))+rsp]

+

+        mov     rbx,QWORD[((-8))+rsi]

+

+        lea     rsp,[rsi]

+

+$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:

+global  gcm_ghash_4bit

+

+ALIGN   16

+gcm_ghash_4bit:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_gcm_ghash_4bit:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+        mov     rcx,r9

+

+

+

+        push    rbx

+

+        push    rbp

+

+        push    r12

+

+        push    r13

+

+        push    r14

+

+        push    r15

+

+        sub     rsp,280

+

+$L$ghash_prologue:

+        mov     r14,rdx

+        mov     r15,rcx

+        sub     rsi,-128

+        lea     rbp,[((16+128))+rsp]

+        xor     edx,edx

+        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[((16+0-128))+rsi]

+        shl     dl,4

+        mov     rbx,QWORD[((16+8-128))+rsi]

+        shl     r10,60

+        mov     BYTE[rsp],dl

+        or      rax,r10

+        mov     dl,bl

+        shr     rbx,4

+        mov     r10,r9

+        shr     r9,4

+        mov     QWORD[rbp],r8

+        mov     r8,QWORD[((32+0-128))+rsi]

+        shl     dl,4

+        mov     QWORD[((0-128))+rbp],rax

+        mov     rax,QWORD[((32+8-128))+rsi]

+        shl     r10,60

+        mov     BYTE[1+rsp],dl

+        or      rbx,r10

+        mov     dl,al

+        shr     rax,4

+        mov     r10,r8

+        shr     r8,4

+        mov     QWORD[8+rbp],r9

+        mov     r9,QWORD[((48+0-128))+rsi]

+        shl     dl,4

+        mov     QWORD[((8-128))+rbp],rbx

+        mov     rbx,QWORD[((48+8-128))+rsi]

+        shl     r10,60

+        mov     BYTE[2+rsp],dl

+        or      rax,r10

+        mov     dl,bl

+        shr     rbx,4

+        mov     r10,r9

+        shr     r9,4

+        mov     QWORD[16+rbp],r8

+        mov     r8,QWORD[((64+0-128))+rsi]

+        shl     dl,4

+        mov     QWORD[((16-128))+rbp],rax

+        mov     rax,QWORD[((64+8-128))+rsi]

+        shl     r10,60

+        mov     BYTE[3+rsp],dl

+        or      rbx,r10

+        mov     dl,al

+        shr     rax,4

+        mov     r10,r8

+        shr     r8,4

+        mov     QWORD[24+rbp],r9

+        mov     r9,QWORD[((80+0-128))+rsi]

+        shl     dl,4

+        mov     QWORD[((24-128))+rbp],rbx

+        mov     rbx,QWORD[((80+8-128))+rsi]

+        shl     r10,60

+        mov     BYTE[4+rsp],dl

+        or      rax,r10

+        mov     dl,bl

+        shr     rbx,4

+        mov     r10,r9

+        shr     r9,4

+        mov     QWORD[32+rbp],r8

+        mov     r8,QWORD[((96+0-128))+rsi]

+        shl     dl,4

+        mov     QWORD[((32-128))+rbp],rax

+        mov     rax,QWORD[((96+8-128))+rsi]

+        shl     r10,60

+        mov     BYTE[5+rsp],dl

+        or      rbx,r10

+        mov     dl,al

+        shr     rax,4

+        mov     r10,r8

+        shr     r8,4

+        mov     QWORD[40+rbp],r9

+        mov     r9,QWORD[((112+0-128))+rsi]

+        shl     dl,4

+        mov     QWORD[((40-128))+rbp],rbx

+        mov     rbx,QWORD[((112+8-128))+rsi]

+        shl     r10,60

+        mov     BYTE[6+rsp],dl

+        or      rax,r10

+        mov     dl,bl

+        shr     rbx,4

+        mov     r10,r9

+        shr     r9,4

+        mov     QWORD[48+rbp],r8

+        mov     r8,QWORD[((128+0-128))+rsi]

+        shl     dl,4

+        mov     QWORD[((48-128))+rbp],rax

+        mov     rax,QWORD[((128+8-128))+rsi]

+        shl     r10,60

+        mov     BYTE[7+rsp],dl

+        or      rbx,r10

+        mov     dl,al

+        shr     rax,4

+        mov     r10,r8

+        shr     r8,4

+        mov     QWORD[56+rbp],r9

+        mov     r9,QWORD[((144+0-128))+rsi]

+        shl     dl,4

+        mov     QWORD[((56-128))+rbp],rbx

+        mov     rbx,QWORD[((144+8-128))+rsi]

+        shl     r10,60

+        mov     BYTE[8+rsp],dl

+        or      rax,r10

+        mov     dl,bl

+        shr     rbx,4

+        mov     r10,r9

+        shr     r9,4

+        mov     QWORD[64+rbp],r8

+        mov     r8,QWORD[((160+0-128))+rsi]

+        shl     dl,4

+        mov     QWORD[((64-128))+rbp],rax

+        mov     rax,QWORD[((160+8-128))+rsi]

+        shl     r10,60

+        mov     BYTE[9+rsp],dl

+        or      rbx,r10

+        mov     dl,al

+        shr     rax,4

+        mov     r10,r8

+        shr     r8,4

+        mov     QWORD[72+rbp],r9

+        mov     r9,QWORD[((176+0-128))+rsi]

+        shl     dl,4

+        mov     QWORD[((72-128))+rbp],rbx

+        mov     rbx,QWORD[((176+8-128))+rsi]

+        shl     r10,60

+        mov     BYTE[10+rsp],dl

+        or      rax,r10

+        mov     dl,bl

+        shr     rbx,4

+        mov     r10,r9

+        shr     r9,4

+        mov     QWORD[80+rbp],r8

+        mov     r8,QWORD[((192+0-128))+rsi]

+        shl     dl,4

+        mov     QWORD[((80-128))+rbp],rax

+        mov     rax,QWORD[((192+8-128))+rsi]

+        shl     r10,60

+        mov     BYTE[11+rsp],dl

+        or      rbx,r10

+        mov     dl,al

+        shr     rax,4

+        mov     r10,r8

+        shr     r8,4

+        mov     QWORD[88+rbp],r9

+        mov     r9,QWORD[((208+0-128))+rsi]

+        shl     dl,4

+        mov     QWORD[((88-128))+rbp],rbx

+        mov     rbx,QWORD[((208+8-128))+rsi]

+        shl     r10,60

+        mov     BYTE[12+rsp],dl

+        or      rax,r10

+        mov     dl,bl

+        shr     rbx,4

+        mov     r10,r9

+        shr     r9,4

+        mov     QWORD[96+rbp],r8

+        mov     r8,QWORD[((224+0-128))+rsi]

+        shl     dl,4

+        mov     QWORD[((96-128))+rbp],rax

+        mov     rax,QWORD[((224+8-128))+rsi]

+        shl     r10,60

+        mov     BYTE[13+rsp],dl

+        or      rbx,r10

+        mov     dl,al

+        shr     rax,4

+        mov     r10,r8

+        shr     r8,4

+        mov     QWORD[104+rbp],r9

+        mov     r9,QWORD[((240+0-128))+rsi]

+        shl     dl,4

+        mov     QWORD[((104-128))+rbp],rbx

+        mov     rbx,QWORD[((240+8-128))+rsi]

+        shl     r10,60

+        mov     BYTE[14+rsp],dl

+        or      rax,r10

+        mov     dl,bl

+        shr     rbx,4

+        mov     r10,r9

+        shr     r9,4

+        mov     QWORD[112+rbp],r8

+        shl     dl,4

+        mov     QWORD[((112-128))+rbp],rax

+        shl     r10,60

+        mov     BYTE[15+rsp],dl

+        or      rbx,r10

+        mov     QWORD[120+rbp],r9

+        mov     QWORD[((120-128))+rbp],rbx

+        add     rsi,-128

+        mov     r8,QWORD[8+rdi]

+        mov     r9,QWORD[rdi]

+        add     r15,r14

+        lea     r11,[$L$rem_8bit]

+        jmp     NEAR $L$outer_loop

+ALIGN   16

+$L$outer_loop:

+        xor     r9,QWORD[r14]

+        mov     rdx,QWORD[8+r14]

+        lea     r14,[16+r14]

+        xor     rdx,r8

+        mov     QWORD[rdi],r9

+        mov     QWORD[8+rdi],rdx

+        shr     rdx,32

+        xor     rax,rax

+        rol     edx,8

+        mov     al,dl

+        movzx   ebx,dl

+        shl     al,4

+        shr     ebx,4

+        rol     edx,8

+        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[rbx*1+rsp]

+        shr     ecx,4

+        xor     r12,r8

+        mov     r10,r9

+        shr     r8,8

+        movzx   r12,r12b

+        shr     r9,8

+        xor     r8,QWORD[((-128))+rbx*8+rbp]

+        shl     r10,56

+        xor     r9,QWORD[rbx*8+rbp]

+        rol     edx,8

+        xor     r8,QWORD[8+rax*1+rsi]

+        xor     r9,QWORD[rax*1+rsi]

+        mov     al,dl

+        xor     r8,r10

+        movzx   r12,WORD[r12*2+r11]

+        movzx   ebx,dl

+        shl     al,4

+        movzx   r13,BYTE[rcx*1+rsp]

+        shr     ebx,4

+        shl     r12,48

+        xor     r13,r8

+        mov     r10,r9

+        xor     r9,r12

+        shr     r8,8

+        movzx   r13,r13b

+        shr     r9,8

+        xor     r8,QWORD[((-128))+rcx*8+rbp]

+        shl     r10,56

+        xor     r9,QWORD[rcx*8+rbp]

+        rol     edx,8

+        xor     r8,QWORD[8+rax*1+rsi]

+        xor     r9,QWORD[rax*1+rsi]

+        mov     al,dl

+        xor     r8,r10

+        movzx   r13,WORD[r13*2+r11]

+        movzx   ecx,dl

+        shl     al,4

+        movzx   r12,BYTE[rbx*1+rsp]

+        shr     ecx,4

+        shl     r13,48

+        xor     r12,r8

+        mov     r10,r9

+        xor     r9,r13

+        shr     r8,8

+        movzx   r12,r12b

+        mov     edx,DWORD[8+rdi]

+        shr     r9,8

+        xor     r8,QWORD[((-128))+rbx*8+rbp]

+        shl     r10,56

+        xor     r9,QWORD[rbx*8+rbp]

+        rol     edx,8

+        xor     r8,QWORD[8+rax*1+rsi]

+        xor     r9,QWORD[rax*1+rsi]

+        mov     al,dl

+        xor     r8,r10

+        movzx   r12,WORD[r12*2+r11]

+        movzx   ebx,dl

+        shl     al,4

+        movzx   r13,BYTE[rcx*1+rsp]

+        shr     ebx,4

+        shl     r12,48

+        xor     r13,r8

+        mov     r10,r9

+        xor     r9,r12

+        shr     r8,8

+        movzx   r13,r13b

+        shr     r9,8

+        xor     r8,QWORD[((-128))+rcx*8+rbp]

+        shl     r10,56

+        xor     r9,QWORD[rcx*8+rbp]

+        rol     edx,8

+        xor     r8,QWORD[8+rax*1+rsi]

+        xor     r9,QWORD[rax*1+rsi]

+        mov     al,dl

+        xor     r8,r10

+        movzx   r13,WORD[r13*2+r11]

+        movzx   ecx,dl

+        shl     al,4

+        movzx   r12,BYTE[rbx*1+rsp]

+        shr     ecx,4

+        shl     r13,48

+        xor     r12,r8

+        mov     r10,r9

+        xor     r9,r13

+        shr     r8,8

+        movzx   r12,r12b

+        shr     r9,8

+        xor     r8,QWORD[((-128))+rbx*8+rbp]

+        shl     r10,56

+        xor     r9,QWORD[rbx*8+rbp]

+        rol     edx,8

+        xor     r8,QWORD[8+rax*1+rsi]

+        xor     r9,QWORD[rax*1+rsi]

+        mov     al,dl

+        xor     r8,r10

+        movzx   r12,WORD[r12*2+r11]

+        movzx   ebx,dl

+        shl     al,4

+        movzx   r13,BYTE[rcx*1+rsp]

+        shr     ebx,4

+        shl     r12,48

+        xor     r13,r8

+        mov     r10,r9

+        xor     r9,r12

+        shr     r8,8

+        movzx   r13,r13b

+        shr     r9,8

+        xor     r8,QWORD[((-128))+rcx*8+rbp]

+        shl     r10,56

+        xor     r9,QWORD[rcx*8+rbp]

+        rol     edx,8

+        xor     r8,QWORD[8+rax*1+rsi]

+        xor     r9,QWORD[rax*1+rsi]

+        mov     al,dl

+        xor     r8,r10

+        movzx   r13,WORD[r13*2+r11]

+        movzx   ecx,dl

+        shl     al,4

+        movzx   r12,BYTE[rbx*1+rsp]

+        shr     ecx,4

+        shl     r13,48

+        xor     r12,r8

+        mov     r10,r9

+        xor     r9,r13

+        shr     r8,8

+        movzx   r12,r12b

+        mov     edx,DWORD[4+rdi]

+        shr     r9,8

+        xor     r8,QWORD[((-128))+rbx*8+rbp]

+        shl     r10,56

+        xor     r9,QWORD[rbx*8+rbp]

+        rol     edx,8

+        xor     r8,QWORD[8+rax*1+rsi]

+        xor     r9,QWORD[rax*1+rsi]

+        mov     al,dl

+        xor     r8,r10

+        movzx   r12,WORD[r12*2+r11]

+        movzx   ebx,dl

+        shl     al,4

+        movzx   r13,BYTE[rcx*1+rsp]

+        shr     ebx,4

+        shl     r12,48

+        xor     r13,r8

+        mov     r10,r9

+        xor     r9,r12

+        shr     r8,8

+        movzx   r13,r13b

+        shr     r9,8

+        xor     r8,QWORD[((-128))+rcx*8+rbp]

+        shl     r10,56

+        xor     r9,QWORD[rcx*8+rbp]

+        rol     edx,8

+        xor     r8,QWORD[8+rax*1+rsi]

+        xor     r9,QWORD[rax*1+rsi]

+        mov     al,dl

+        xor     r8,r10

+        movzx   r13,WORD[r13*2+r11]

+        movzx   ecx,dl

+        shl     al,4

+        movzx   r12,BYTE[rbx*1+rsp]

+        shr     ecx,4

+        shl     r13,48

+        xor     r12,r8

+        mov     r10,r9

+        xor     r9,r13

+        shr     r8,8

+        movzx   r12,r12b

+        shr     r9,8

+        xor     r8,QWORD[((-128))+rbx*8+rbp]

+        shl     r10,56

+        xor     r9,QWORD[rbx*8+rbp]

+        rol     edx,8

+        xor     r8,QWORD[8+rax*1+rsi]

+        xor     r9,QWORD[rax*1+rsi]

+        mov     al,dl

+        xor     r8,r10

+        movzx   r12,WORD[r12*2+r11]

+        movzx   ebx,dl

+        shl     al,4

+        movzx   r13,BYTE[rcx*1+rsp]

+        shr     ebx,4

+        shl     r12,48

+        xor     r13,r8

+        mov     r10,r9

+        xor     r9,r12

+        shr     r8,8

+        movzx   r13,r13b

+        shr     r9,8

+        xor     r8,QWORD[((-128))+rcx*8+rbp]

+        shl     r10,56

+        xor     r9,QWORD[rcx*8+rbp]

+        rol     edx,8

+        xor     r8,QWORD[8+rax*1+rsi]

+        xor     r9,QWORD[rax*1+rsi]

+        mov     al,dl

+        xor     r8,r10

+        movzx   r13,WORD[r13*2+r11]

+        movzx   ecx,dl

+        shl     al,4

+        movzx   r12,BYTE[rbx*1+rsp]

+        shr     ecx,4

+        shl     r13,48

+        xor     r12,r8

+        mov     r10,r9

+        xor     r9,r13

+        shr     r8,8

+        movzx   r12,r12b

+        mov     edx,DWORD[rdi]

+        shr     r9,8

+        xor     r8,QWORD[((-128))+rbx*8+rbp]

+        shl     r10,56

+        xor     r9,QWORD[rbx*8+rbp]

+        rol     edx,8

+        xor     r8,QWORD[8+rax*1+rsi]

+        xor     r9,QWORD[rax*1+rsi]

+        mov     al,dl

+        xor     r8,r10

+        movzx   r12,WORD[r12*2+r11]

+        movzx   ebx,dl

+        shl     al,4

+        movzx   r13,BYTE[rcx*1+rsp]

+        shr     ebx,4

+        shl     r12,48

+        xor     r13,r8

+        mov     r10,r9

+        xor     r9,r12

+        shr     r8,8

+        movzx   r13,r13b

+        shr     r9,8

+        xor     r8,QWORD[((-128))+rcx*8+rbp]

+        shl     r10,56

+        xor     r9,QWORD[rcx*8+rbp]

+        rol     edx,8

+        xor     r8,QWORD[8+rax*1+rsi]

+        xor     r9,QWORD[rax*1+rsi]

+        mov     al,dl

+        xor     r8,r10

+        movzx   r13,WORD[r13*2+r11]

+        movzx   ecx,dl

+        shl     al,4

+        movzx   r12,BYTE[rbx*1+rsp]

+        shr     ecx,4

+        shl     r13,48

+        xor     r12,r8

+        mov     r10,r9

+        xor     r9,r13

+        shr     r8,8

+        movzx   r12,r12b

+        shr     r9,8

+        xor     r8,QWORD[((-128))+rbx*8+rbp]

+        shl     r10,56

+        xor     r9,QWORD[rbx*8+rbp]

+        rol     edx,8

+        xor     r8,QWORD[8+rax*1+rsi]

+        xor     r9,QWORD[rax*1+rsi]

+        mov     al,dl

+        xor     r8,r10

+        movzx   r12,WORD[r12*2+r11]

+        movzx   ebx,dl

+        shl     al,4

+        movzx   r13,BYTE[rcx*1+rsp]

+        shr     ebx,4

+        shl     r12,48

+        xor     r13,r8

+        mov     r10,r9

+        xor     r9,r12

+        shr     r8,8

+        movzx   r13,r13b

+        shr     r9,8

+        xor     r8,QWORD[((-128))+rcx*8+rbp]

+        shl     r10,56

+        xor     r9,QWORD[rcx*8+rbp]

+        rol     edx,8

+        xor     r8,QWORD[8+rax*1+rsi]

+        xor     r9,QWORD[rax*1+rsi]

+        mov     al,dl

+        xor     r8,r10

+        movzx   r13,WORD[r13*2+r11]

+        movzx   ecx,dl

+        shl     al,4

+        movzx   r12,BYTE[rbx*1+rsp]

+        and     ecx,240

+        shl     r13,48

+        xor     r12,r8

+        mov     r10,r9

+        xor     r9,r13

+        shr     r8,8

+        movzx   r12,r12b

+        mov     edx,DWORD[((-4))+rdi]

+        shr     r9,8

+        xor     r8,QWORD[((-128))+rbx*8+rbp]

+        shl     r10,56

+        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

+        movzx   r13,r8b

+        shr     r8,4

+        mov     r10,r9

+        shl     r13b,4

+        shr     r9,4

+        xor     r8,QWORD[8+rcx*1+rsi]

+        movzx   r13,WORD[r13*2+r11]

+        shl     r10,60

+        xor     r9,QWORD[rcx*1+rsi]

+        xor     r8,r10

+        shl     r13,48

+        bswap   r8

+        xor     r9,r13

+        bswap   r9

+        cmp     r14,r15

+        jb      NEAR $L$outer_loop

+        mov     QWORD[8+rdi],r8

+        mov     QWORD[rdi],r9

+

+        lea     rsi,[((280+48))+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$ghash_epilogue:

+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue

+        mov     rsi,QWORD[16+rsp]

+        DB      0F3h,0C3h               ;repret

+

+$L$SEH_end_gcm_ghash_4bit:

+global  gcm_init_clmul

+

+ALIGN   16

+gcm_init_clmul:

+

+$L$_init_clmul:

+$L$SEH_begin_gcm_init_clmul:

+

+DB      0x48,0x83,0xec,0x18

+DB      0x0f,0x29,0x34,0x24

+        movdqu  xmm2,XMMWORD[rdx]

+        pshufd  xmm2,xmm2,78

+

+

+        pshufd  xmm4,xmm2,255

+        movdqa  xmm3,xmm2

+        psllq   xmm2,1

+        pxor    xmm5,xmm5

+        psrlq   xmm3,63

+        pcmpgtd xmm5,xmm4

+        pslldq  xmm3,8

+        por     xmm2,xmm3

+

+

+        pand    xmm5,XMMWORD[$L$0x1c2_polynomial]

+        pxor    xmm2,xmm5

+

+

+        pshufd  xmm6,xmm2,78

+        movdqa  xmm0,xmm2

+        pxor    xmm6,xmm2

+        movdqa  xmm1,xmm0

+        pshufd  xmm3,xmm0,78

+        pxor    xmm3,xmm0

+DB      102,15,58,68,194,0

+DB      102,15,58,68,202,17

+DB      102,15,58,68,222,0

+        pxor    xmm3,xmm0

+        pxor    xmm3,xmm1

+

+        movdqa  xmm4,xmm3

+        psrldq  xmm3,8

+        pslldq  xmm4,8

+        pxor    xmm1,xmm3

+        pxor    xmm0,xmm4

+

+        movdqa  xmm4,xmm0

+        movdqa  xmm3,xmm0

+        psllq   xmm0,5

+        pxor    xmm3,xmm0

+        psllq   xmm0,1

+        pxor    xmm0,xmm3

+        psllq   xmm0,57

+        movdqa  xmm3,xmm0

+        pslldq  xmm0,8

+        psrldq  xmm3,8

+        pxor    xmm0,xmm4

+        pxor    xmm1,xmm3

+

+

+        movdqa  xmm4,xmm0

+        psrlq   xmm0,1

+        pxor    xmm1,xmm4

+        pxor    xmm4,xmm0

+        psrlq   xmm0,5

+        pxor    xmm0,xmm4

+        psrlq   xmm0,1

+        pxor    xmm0,xmm1

+        pshufd  xmm3,xmm2,78

+        pshufd  xmm4,xmm0,78

+        pxor    xmm3,xmm2

+        movdqu  XMMWORD[rcx],xmm2

+        pxor    xmm4,xmm0

+        movdqu  XMMWORD[16+rcx],xmm0

+DB      102,15,58,15,227,8

+        movdqu  XMMWORD[32+rcx],xmm4

+        movdqa  xmm1,xmm0

+        pshufd  xmm3,xmm0,78

+        pxor    xmm3,xmm0

+DB      102,15,58,68,194,0

+DB      102,15,58,68,202,17

+DB      102,15,58,68,222,0

+        pxor    xmm3,xmm0

+        pxor    xmm3,xmm1

+

+        movdqa  xmm4,xmm3

+        psrldq  xmm3,8

+        pslldq  xmm4,8

+        pxor    xmm1,xmm3

+        pxor    xmm0,xmm4

+

+        movdqa  xmm4,xmm0

+        movdqa  xmm3,xmm0

+        psllq   xmm0,5

+        pxor    xmm3,xmm0

+        psllq   xmm0,1

+        pxor    xmm0,xmm3

+        psllq   xmm0,57

+        movdqa  xmm3,xmm0

+        pslldq  xmm0,8

+        psrldq  xmm3,8

+        pxor    xmm0,xmm4

+        pxor    xmm1,xmm3

+

+

+        movdqa  xmm4,xmm0

+        psrlq   xmm0,1

+        pxor    xmm1,xmm4

+        pxor    xmm4,xmm0

+        psrlq   xmm0,5

+        pxor    xmm0,xmm4

+        psrlq   xmm0,1

+        pxor    xmm0,xmm1

+        movdqa  xmm5,xmm0

+        movdqa  xmm1,xmm0

+        pshufd  xmm3,xmm0,78

+        pxor    xmm3,xmm0

+DB      102,15,58,68,194,0

+DB      102,15,58,68,202,17

+DB      102,15,58,68,222,0

+        pxor    xmm3,xmm0

+        pxor    xmm3,xmm1

+

+        movdqa  xmm4,xmm3

+        psrldq  xmm3,8

+        pslldq  xmm4,8

+        pxor    xmm1,xmm3

+        pxor    xmm0,xmm4

+

+        movdqa  xmm4,xmm0

+        movdqa  xmm3,xmm0

+        psllq   xmm0,5

+        pxor    xmm3,xmm0

+        psllq   xmm0,1

+        pxor    xmm0,xmm3

+        psllq   xmm0,57

+        movdqa  xmm3,xmm0

+        pslldq  xmm0,8

+        psrldq  xmm3,8

+        pxor    xmm0,xmm4

+        pxor    xmm1,xmm3

+

+

+        movdqa  xmm4,xmm0

+        psrlq   xmm0,1

+        pxor    xmm1,xmm4

+        pxor    xmm4,xmm0

+        psrlq   xmm0,5

+        pxor    xmm0,xmm4

+        psrlq   xmm0,1

+        pxor    xmm0,xmm1

+        pshufd  xmm3,xmm5,78

+        pshufd  xmm4,xmm0,78

+        pxor    xmm3,xmm5

+        movdqu  XMMWORD[48+rcx],xmm5

+        pxor    xmm4,xmm0

+        movdqu  XMMWORD[64+rcx],xmm0

+DB      102,15,58,15,227,8

+        movdqu  XMMWORD[80+rcx],xmm4

+        movaps  xmm6,XMMWORD[rsp]

+        lea     rsp,[24+rsp]

+$L$SEH_end_gcm_init_clmul:

+        DB      0F3h,0C3h               ;repret

+

+

+global  gcm_gmult_clmul

+

+ALIGN   16

+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

+        pxor    xmm3,xmm0

+DB      102,15,58,68,194,0

+DB      102,15,58,68,202,17

+DB      102,15,58,68,220,0

+        pxor    xmm3,xmm0

+        pxor    xmm3,xmm1

+

+        movdqa  xmm4,xmm3

+        psrldq  xmm3,8

+        pslldq  xmm4,8

+        pxor    xmm1,xmm3

+        pxor    xmm0,xmm4

+

+        movdqa  xmm4,xmm0

+        movdqa  xmm3,xmm0

+        psllq   xmm0,5

+        pxor    xmm3,xmm0

+        psllq   xmm0,1

+        pxor    xmm0,xmm3

+        psllq   xmm0,57

+        movdqa  xmm3,xmm0

+        pslldq  xmm0,8

+        psrldq  xmm3,8

+        pxor    xmm0,xmm4

+        pxor    xmm1,xmm3

+

+

+        movdqa  xmm4,xmm0

+        psrlq   xmm0,1

+        pxor    xmm1,xmm4

+        pxor    xmm4,xmm0

+        psrlq   xmm0,5

+        pxor    xmm0,xmm4

+        psrlq   xmm0,1

+        pxor    xmm0,xmm1

+DB      102,15,56,0,197

+        movdqu  XMMWORD[rcx],xmm0

+        DB      0F3h,0C3h               ;repret

+

+

+global  gcm_ghash_clmul

+

+ALIGN   32

+gcm_ghash_clmul:

+

+$L$_ghash_clmul:

+        lea     rax,[((-136))+rsp]

+$L$SEH_begin_gcm_ghash_clmul:

+

+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[rcx]

+        movdqu  xmm2,XMMWORD[rdx]

+        movdqu  xmm7,XMMWORD[32+rdx]

+DB      102,65,15,56,0,194

+

+        sub     r9,0x10

+        jz      NEAR $L$odd_tail

+

+        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      NEAR $L$skip4x

+

+        sub     r9,0x30

+        mov     rax,0xA040608020C0E000

+        movdqu  xmm14,XMMWORD[48+rdx]

+        movdqu  xmm15,XMMWORD[64+rdx]

+

+

+

+

+        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

+        pshufd  xmm4,xmm3,78

+        pxor    xmm4,xmm3

+DB      102,15,58,68,218,0

+DB      102,15,58,68,234,17

+DB      102,15,58,68,231,0

+

+        movdqa  xmm13,xmm11

+        pshufd  xmm12,xmm11,78

+        pxor    xmm12,xmm11

+DB      102,68,15,58,68,222,0

+DB      102,68,15,58,68,238,17

+DB      102,68,15,58,68,231,16

+        xorps   xmm3,xmm11

+        xorps   xmm5,xmm13

+        movups  xmm7,XMMWORD[80+rdx]

+        xorps   xmm4,xmm12

+

+        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

+        pshufd  xmm12,xmm11,78

+        pxor    xmm0,xmm8

+        pxor    xmm12,xmm11

+DB      102,69,15,58,68,222,0

+        movdqa  xmm1,xmm0

+        pshufd  xmm8,xmm0,78

+        pxor    xmm8,xmm0

+DB      102,69,15,58,68,238,17

+DB      102,68,15,58,68,231,0

+        xorps   xmm3,xmm11

+        xorps   xmm5,xmm13

+

+        lea     r8,[64+r8]

+        sub     r9,0x40

+        jc      NEAR $L$tail4x

+

+        jmp     NEAR $L$mod4_loop

+ALIGN   32

+$L$mod4_loop:

+DB      102,65,15,58,68,199,0

+        xorps   xmm4,xmm12

+        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[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[32+rdx]

+        xorps   xmm8,xmm4

+DB      102,68,15,58,68,218,0

+        pshufd  xmm4,xmm3,78

+

+        pxor    xmm8,xmm0

+        movdqa  xmm5,xmm3

+        pxor    xmm8,xmm1

+        pxor    xmm4,xmm3

+        movdqa  xmm9,xmm8

+DB      102,68,15,58,68,234,17

+        pslldq  xmm8,8

+        psrldq  xmm9,8

+        pxor    xmm0,xmm8

+        movdqa  xmm8,XMMWORD[$L$7_mask]

+        pxor    xmm1,xmm9

+DB      102,76,15,110,200

+

+        pand    xmm8,xmm0

+DB      102,69,15,56,0,200

+        pxor    xmm9,xmm0

+DB      102,68,15,58,68,231,0

+        psllq   xmm9,57

+        movdqa  xmm8,xmm9

+        pslldq  xmm9,8

+DB      102,15,58,68,222,0

+        psrldq  xmm8,8

+        pxor    xmm0,xmm9

+        pxor    xmm1,xmm8

+        movdqu  xmm8,XMMWORD[r8]

+

+        movdqa  xmm9,xmm0

+        psrlq   xmm0,1

+DB      102,15,58,68,238,17

+        xorps   xmm3,xmm11

+        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[80+rdx]

+DB      102,69,15,56,0,194

+        pxor    xmm1,xmm9

+        pxor    xmm9,xmm0

+        psrlq   xmm0,5

+

+        movdqa  xmm13,xmm11

+        pxor    xmm4,xmm12

+        pshufd  xmm12,xmm11,78

+        pxor    xmm0,xmm9

+        pxor    xmm1,xmm8

+        pxor    xmm12,xmm11

+DB      102,69,15,58,68,222,0

+        psrlq   xmm0,1

+        pxor    xmm0,xmm1

+        movdqa  xmm1,xmm0

+DB      102,69,15,58,68,238,17

+        xorps   xmm3,xmm11

+        pshufd  xmm8,xmm0,78

+        pxor    xmm8,xmm0

+

+DB      102,68,15,58,68,231,0

+        xorps   xmm5,xmm13

+

+        lea     r8,[64+r8]

+        sub     r9,0x40

+        jnc     NEAR $L$mod4_loop

+

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

+        xorps   xmm4,xmm12

+        xorps   xmm0,xmm3

+        xorps   xmm1,xmm5

+        pxor    xmm1,xmm0

+        pxor    xmm8,xmm4

+

+        pxor    xmm8,xmm1

+        pxor    xmm1,xmm0

+

+        movdqa  xmm9,xmm8

+        psrldq  xmm8,8

+        pslldq  xmm9,8

+        pxor    xmm1,xmm8

+        pxor    xmm0,xmm9

+

+        movdqa  xmm4,xmm0

+        movdqa  xmm3,xmm0

+        psllq   xmm0,5

+        pxor    xmm3,xmm0

+        psllq   xmm0,1

+        pxor    xmm0,xmm3

+        psllq   xmm0,57

+        movdqa  xmm3,xmm0

+        pslldq  xmm0,8

+        psrldq  xmm3,8

+        pxor    xmm0,xmm4

+        pxor    xmm1,xmm3

+

+

+        movdqa  xmm4,xmm0

+        psrlq   xmm0,1

+        pxor    xmm1,xmm4

+        pxor    xmm4,xmm0

+        psrlq   xmm0,5

+        pxor    xmm0,xmm4

+        psrlq   xmm0,1

+        pxor    xmm0,xmm1

+        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[r8]

+        movdqu  xmm3,XMMWORD[16+r8]

+DB      102,69,15,56,0,194

+DB      102,65,15,56,0,218

+        pxor    xmm0,xmm8

+

+        movdqa  xmm5,xmm3

+        pshufd  xmm4,xmm3,78

+        pxor    xmm4,xmm3

+DB      102,15,58,68,218,0

+DB      102,15,58,68,234,17

+DB      102,15,58,68,231,0

+

+        lea     r8,[32+r8]

+        nop

+        sub     r9,0x20

+        jbe     NEAR $L$even_tail

+        nop

+        jmp     NEAR $L$mod_loop

+

+ALIGN   32

+$L$mod_loop:

+        movdqa  xmm1,xmm0

+        movdqa  xmm8,xmm4

+        pshufd  xmm4,xmm0,78

+        pxor    xmm4,xmm0

+

+DB      102,15,58,68,198,0

+DB      102,15,58,68,206,17

+DB      102,15,58,68,231,16

+

+        pxor    xmm0,xmm3

+        pxor    xmm1,xmm5

+        movdqu  xmm9,XMMWORD[r8]

+        pxor    xmm8,xmm0

+DB      102,69,15,56,0,202

+        movdqu  xmm3,XMMWORD[16+r8]

+

+        pxor    xmm8,xmm1

+        pxor    xmm1,xmm9

+        pxor    xmm4,xmm8

+DB      102,65,15,56,0,218

+        movdqa  xmm8,xmm4

+        psrldq  xmm8,8

+        pslldq  xmm4,8

+        pxor    xmm1,xmm8

+        pxor    xmm0,xmm4

+

+        movdqa  xmm5,xmm3

+

+        movdqa  xmm9,xmm0

+        movdqa  xmm8,xmm0

+        psllq   xmm0,5

+        pxor    xmm8,xmm0

+DB      102,15,58,68,218,0

+        psllq   xmm0,1

+        pxor    xmm0,xmm8

+        psllq   xmm0,57

+        movdqa  xmm8,xmm0

+        pslldq  xmm0,8

+        psrldq  xmm8,8

+        pxor    xmm0,xmm9

+        pshufd  xmm4,xmm5,78

+        pxor    xmm1,xmm8

+        pxor    xmm4,xmm5

+

+        movdqa  xmm9,xmm0

+        psrlq   xmm0,1

+DB      102,15,58,68,234,17

+        pxor    xmm1,xmm9

+        pxor    xmm9,xmm0

+        psrlq   xmm0,5

+        pxor    xmm0,xmm9

+        lea     r8,[32+r8]

+        psrlq   xmm0,1

+DB      102,15,58,68,231,0

+        pxor    xmm0,xmm1

+

+        sub     r9,0x20

+        ja      NEAR $L$mod_loop

+

+$L$even_tail:

+        movdqa  xmm1,xmm0

+        movdqa  xmm8,xmm4

+        pshufd  xmm4,xmm0,78

+        pxor    xmm4,xmm0

+

+DB      102,15,58,68,198,0

+DB      102,15,58,68,206,17

+DB      102,15,58,68,231,16

+

+        pxor    xmm0,xmm3

+        pxor    xmm1,xmm5

+        pxor    xmm8,xmm0

+        pxor    xmm8,xmm1

+        pxor    xmm4,xmm8

+        movdqa  xmm8,xmm4

+        psrldq  xmm8,8

+        pslldq  xmm4,8

+        pxor    xmm1,xmm8

+        pxor    xmm0,xmm4

+

+        movdqa  xmm4,xmm0

+        movdqa  xmm3,xmm0

+        psllq   xmm0,5

+        pxor    xmm3,xmm0

+        psllq   xmm0,1

+        pxor    xmm0,xmm3

+        psllq   xmm0,57

+        movdqa  xmm3,xmm0

+        pslldq  xmm0,8

+        psrldq  xmm3,8

+        pxor    xmm0,xmm4

+        pxor    xmm1,xmm3

+

+

+        movdqa  xmm4,xmm0

+        psrlq   xmm0,1

+        pxor    xmm1,xmm4

+        pxor    xmm4,xmm0

+        psrlq   xmm0,5

+        pxor    xmm0,xmm4

+        psrlq   xmm0,1

+        pxor    xmm0,xmm1

+        test    r9,r9

+        jnz     NEAR $L$done

+

+$L$odd_tail:

+        movdqu  xmm8,XMMWORD[r8]

+DB      102,69,15,56,0,194

+        pxor    xmm0,xmm8

+        movdqa  xmm1,xmm0

+        pshufd  xmm3,xmm0,78

+        pxor    xmm3,xmm0

+DB      102,15,58,68,194,0

+DB      102,15,58,68,202,17

+DB      102,15,58,68,223,0

+        pxor    xmm3,xmm0

+        pxor    xmm3,xmm1

+

+        movdqa  xmm4,xmm3

+        psrldq  xmm3,8

+        pslldq  xmm4,8

+        pxor    xmm1,xmm3

+        pxor    xmm0,xmm4

+

+        movdqa  xmm4,xmm0

+        movdqa  xmm3,xmm0

+        psllq   xmm0,5

+        pxor    xmm3,xmm0

+        psllq   xmm0,1

+        pxor    xmm0,xmm3

+        psllq   xmm0,57

+        movdqa  xmm3,xmm0

+        pslldq  xmm0,8

+        psrldq  xmm3,8

+        pxor    xmm0,xmm4

+        pxor    xmm1,xmm3

+

+

+        movdqa  xmm4,xmm0

+        psrlq   xmm0,1

+        pxor    xmm1,xmm4

+        pxor    xmm4,xmm0

+        psrlq   xmm0,5

+        pxor    xmm0,xmm4

+        psrlq   xmm0,1

+        pxor    xmm0,xmm1

+$L$done:

+DB      102,65,15,56,0,194

+        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

+

+

+global  gcm_init_avx

+

+ALIGN   32

+gcm_init_avx:

+

+        jmp     NEAR $L$_init_clmul

+

+

+global  gcm_gmult_avx

+

+ALIGN   32

+gcm_gmult_avx:

+

+        jmp     NEAR $L$_gmult_clmul

+

+

+global  gcm_ghash_avx

+

+ALIGN   32

+gcm_ghash_avx:

+

+        jmp     NEAR $L$_ghash_clmul

+

+

+ALIGN   64

+$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,0xc2

+$L$7_mask:

+        DD      7,0,7,0

+$L$7_mask_poly:

+        DD      7,0,450,0

+ALIGN   64

+

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

+

+ALIGN   16

+se_handler:

+        push    rsi

+        push    rdi

+        push    rbx

+        push    rbp

+        push    r12

+        push    r13

+        push    r14

+        push    r15

+        pushfq

+        sub     rsp,64

+

+        mov     rax,QWORD[120+r8]

+        mov     rbx,QWORD[248+r8]

+

+        mov     rsi,QWORD[8+r9]

+        mov     r11,QWORD[56+r9]

+

+        mov     r10d,DWORD[r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jb      NEAR $L$in_prologue

+

+        mov     rax,QWORD[152+r8]

+

+        mov     r10d,DWORD[4+r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jae     NEAR $L$in_prologue

+

+        lea     rax,[((48+280))+rax]

+

+        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_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[40+r9]

+        mov     rsi,r8

+        mov     ecx,154

+        DD      0xa548f3fc

+

+        mov     rsi,r9

+        xor     rcx,rcx

+        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

+        popfq

+        pop     r15

+        pop     r14

+        pop     r13

+        pop     r12

+        pop     rbp

+        pop     rbx

+        pop     rdi

+        pop     rsi

+        DB      0F3h,0C3h               ;repret

+

+

+section .pdata rdata align=4

+ALIGN   4

+        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      $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      $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      $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:

+DB      9,0,0,0

+        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      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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
x86_64.nasm
new file mode 100644
index 0000000000..f3b7b0e35e
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-mb-
x86_64.nasm

@@ -0,0 +1,3137 @@
+; WARNING: do not edit!

+; Generated from openssl/crypto/sha/asm/sha1-mb-x86_64.pl

+;

+; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
Reserved.


+;

+; Licensed under the OpenSSL license (the "License").  You may not use

+; this file except in compliance with the License.  You can obtain a
copy


+; in the file LICENSE in the source distribution or at

+; https://www.openssl.org/source/license.html

+

+default rel

+%define XMMWORD

+%define YMMWORD

+%define ZMMWORD

+section .text code align=64

+

+

+EXTERN  OPENSSL_ia32cap_P

+

+global  sha1_multi_block

+

+ALIGN   32

+sha1_multi_block:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_sha1_multi_block:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+

+

+

+        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]

+        bt      rcx,61

+        jc      NEAR _shaext_shortcut

+        mov     rax,rsp

+

+        push    rbx

+

+        push    rbp

+

+        lea     rsp,[((-168))+rsp]

+        movaps  XMMWORD[rsp],xmm6

+        movaps  XMMWORD[16+rsp],xmm7

+        movaps  XMMWORD[32+rsp],xmm8

+        movaps  XMMWORD[48+rsp],xmm9

+        movaps  XMMWORD[(-120)+rax],xmm10

+        movaps  XMMWORD[(-104)+rax],xmm11

+        movaps  XMMWORD[(-88)+rax],xmm12

+        movaps  XMMWORD[(-72)+rax],xmm13

+        movaps  XMMWORD[(-56)+rax],xmm14

+        movaps  XMMWORD[(-40)+rax],xmm15

+        sub     rsp,288

+        and     rsp,-256

+        mov     QWORD[272+rsp],rax

+

+$L$body:

+        lea     rbp,[K_XX_XX]

+        lea     rbx,[256+rsp]

+

+$L$oop_grande:

+        mov     DWORD[280+rsp],edx

+        xor     edx,edx

+        mov     r8,QWORD[rsi]

+        mov     ecx,DWORD[8+rsi]

+        cmp     ecx,edx

+        cmovg   edx,ecx

+        test    ecx,ecx

+        mov     DWORD[rbx],ecx

+        cmovle  r8,rbp

+        mov     r9,QWORD[16+rsi]

+        mov     ecx,DWORD[24+rsi]

+        cmp     ecx,edx

+        cmovg   edx,ecx

+        test    ecx,ecx

+        mov     DWORD[4+rbx],ecx

+        cmovle  r9,rbp

+        mov     r10,QWORD[32+rsi]

+        mov     ecx,DWORD[40+rsi]

+        cmp     ecx,edx

+        cmovg   edx,ecx

+        test    ecx,ecx

+        mov     DWORD[8+rbx],ecx

+        cmovle  r10,rbp

+        mov     r11,QWORD[48+rsi]

+        mov     ecx,DWORD[56+rsi]

+        cmp     ecx,edx

+        cmovg   edx,ecx

+        test    ecx,ecx

+        mov     DWORD[12+rbx],ecx

+        cmovle  r11,rbp

+        test    edx,edx

+        jz      NEAR $L$done

+

+        movdqu  xmm10,XMMWORD[rdi]

+        lea     rax,[128+rsp]

+        movdqu  xmm11,XMMWORD[32+rdi]

+        movdqu  xmm12,XMMWORD[64+rdi]

+        movdqu  xmm13,XMMWORD[96+rdi]

+        movdqu  xmm14,XMMWORD[128+rdi]

+        movdqa  xmm5,XMMWORD[96+rbp]

+        movdqa  xmm15,XMMWORD[((-32))+rbp]

+        jmp     NEAR $L$oop

+

+ALIGN   32

+$L$oop:

+        movd    xmm0,DWORD[r8]

+        lea     r8,[64+r8]

+        movd    xmm2,DWORD[r9]

+        lea     r9,[64+r9]

+        movd    xmm3,DWORD[r10]

+        lea     r10,[64+r10]

+        movd    xmm4,DWORD[r11]

+        lea     r11,[64+r11]

+        punpckldq       xmm0,xmm3

+        movd    xmm1,DWORD[((-60))+r8]

+        punpckldq       xmm2,xmm4

+        movd    xmm9,DWORD[((-60))+r9]

+        punpckldq       xmm0,xmm2

+        movd    xmm8,DWORD[((-60))+r10]

+DB      102,15,56,0,197

+        movd    xmm7,DWORD[((-60))+r11]

+        punpckldq       xmm1,xmm8

+        movdqa  xmm8,xmm10

+        paddd   xmm14,xmm15

+        punpckldq       xmm9,xmm7

+        movdqa  xmm7,xmm11

+        movdqa  xmm6,xmm11

+        pslld   xmm8,5

+        pandn   xmm7,xmm13

+        pand    xmm6,xmm12

+        punpckldq       xmm1,xmm9

+        movdqa  xmm9,xmm10

+

+        movdqa  XMMWORD[(0-128)+rax],xmm0

+        paddd   xmm14,xmm0

+        movd    xmm2,DWORD[((-56))+r8]

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+        movdqa  xmm7,xmm11

+

+        por     xmm8,xmm9

+        movd    xmm9,DWORD[((-56))+r9]

+        pslld   xmm7,30

+        paddd   xmm14,xmm6

+

+        psrld   xmm11,2

+        paddd   xmm14,xmm8

+DB      102,15,56,0,205

+        movd    xmm8,DWORD[((-56))+r10]

+        por     xmm11,xmm7

+        movd    xmm7,DWORD[((-56))+r11]

+        punpckldq       xmm2,xmm8

+        movdqa  xmm8,xmm14

+        paddd   xmm13,xmm15

+        punpckldq       xmm9,xmm7

+        movdqa  xmm7,xmm10

+        movdqa  xmm6,xmm10

+        pslld   xmm8,5

+        pandn   xmm7,xmm12

+        pand    xmm6,xmm11

+        punpckldq       xmm2,xmm9

+        movdqa  xmm9,xmm14

+

+        movdqa  XMMWORD[(16-128)+rax],xmm1

+        paddd   xmm13,xmm1

+        movd    xmm3,DWORD[((-52))+r8]

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+        movdqa  xmm7,xmm10

+

+        por     xmm8,xmm9

+        movd    xmm9,DWORD[((-52))+r9]

+        pslld   xmm7,30

+        paddd   xmm13,xmm6

+

+        psrld   xmm10,2

+        paddd   xmm13,xmm8

+DB      102,15,56,0,213

+        movd    xmm8,DWORD[((-52))+r10]

+        por     xmm10,xmm7

+        movd    xmm7,DWORD[((-52))+r11]

+        punpckldq       xmm3,xmm8

+        movdqa  xmm8,xmm13

+        paddd   xmm12,xmm15

+        punpckldq       xmm9,xmm7

+        movdqa  xmm7,xmm14

+        movdqa  xmm6,xmm14

+        pslld   xmm8,5

+        pandn   xmm7,xmm11

+        pand    xmm6,xmm10

+        punpckldq       xmm3,xmm9

+        movdqa  xmm9,xmm13

+

+        movdqa  XMMWORD[(32-128)+rax],xmm2

+        paddd   xmm12,xmm2

+        movd    xmm4,DWORD[((-48))+r8]

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+        movdqa  xmm7,xmm14

+

+        por     xmm8,xmm9

+        movd    xmm9,DWORD[((-48))+r9]

+        pslld   xmm7,30

+        paddd   xmm12,xmm6

+

+        psrld   xmm14,2

+        paddd   xmm12,xmm8

+DB      102,15,56,0,221

+        movd    xmm8,DWORD[((-48))+r10]

+        por     xmm14,xmm7

+        movd    xmm7,DWORD[((-48))+r11]

+        punpckldq       xmm4,xmm8

+        movdqa  xmm8,xmm12

+        paddd   xmm11,xmm15

+        punpckldq       xmm9,xmm7

+        movdqa  xmm7,xmm13

+        movdqa  xmm6,xmm13

+        pslld   xmm8,5

+        pandn   xmm7,xmm10

+        pand    xmm6,xmm14

+        punpckldq       xmm4,xmm9

+        movdqa  xmm9,xmm12

+

+        movdqa  XMMWORD[(48-128)+rax],xmm3

+        paddd   xmm11,xmm3

+        movd    xmm0,DWORD[((-44))+r8]

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+        movdqa  xmm7,xmm13

+

+        por     xmm8,xmm9

+        movd    xmm9,DWORD[((-44))+r9]

+        pslld   xmm7,30

+        paddd   xmm11,xmm6

+

+        psrld   xmm13,2

+        paddd   xmm11,xmm8

+DB      102,15,56,0,229

+        movd    xmm8,DWORD[((-44))+r10]

+        por     xmm13,xmm7

+        movd    xmm7,DWORD[((-44))+r11]

+        punpckldq       xmm0,xmm8

+        movdqa  xmm8,xmm11

+        paddd   xmm10,xmm15

+        punpckldq       xmm9,xmm7

+        movdqa  xmm7,xmm12

+        movdqa  xmm6,xmm12

+        pslld   xmm8,5

+        pandn   xmm7,xmm14

+        pand    xmm6,xmm13

+        punpckldq       xmm0,xmm9

+        movdqa  xmm9,xmm11

+

+        movdqa  XMMWORD[(64-128)+rax],xmm4

+        paddd   xmm10,xmm4

+        movd    xmm1,DWORD[((-40))+r8]

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+        movdqa  xmm7,xmm12

+

+        por     xmm8,xmm9

+        movd    xmm9,DWORD[((-40))+r9]

+        pslld   xmm7,30

+        paddd   xmm10,xmm6

+

+        psrld   xmm12,2

+        paddd   xmm10,xmm8

+DB      102,15,56,0,197

+        movd    xmm8,DWORD[((-40))+r10]

+        por     xmm12,xmm7

+        movd    xmm7,DWORD[((-40))+r11]

+        punpckldq       xmm1,xmm8

+        movdqa  xmm8,xmm10

+        paddd   xmm14,xmm15

+        punpckldq       xmm9,xmm7

+        movdqa  xmm7,xmm11

+        movdqa  xmm6,xmm11

+        pslld   xmm8,5

+        pandn   xmm7,xmm13

+        pand    xmm6,xmm12

+        punpckldq       xmm1,xmm9

+        movdqa  xmm9,xmm10

+

+        movdqa  XMMWORD[(80-128)+rax],xmm0

+        paddd   xmm14,xmm0

+        movd    xmm2,DWORD[((-36))+r8]

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+        movdqa  xmm7,xmm11

+

+        por     xmm8,xmm9

+        movd    xmm9,DWORD[((-36))+r9]

+        pslld   xmm7,30

+        paddd   xmm14,xmm6

+

+        psrld   xmm11,2

+        paddd   xmm14,xmm8

+DB      102,15,56,0,205

+        movd    xmm8,DWORD[((-36))+r10]

+        por     xmm11,xmm7

+        movd    xmm7,DWORD[((-36))+r11]

+        punpckldq       xmm2,xmm8

+        movdqa  xmm8,xmm14

+        paddd   xmm13,xmm15

+        punpckldq       xmm9,xmm7

+        movdqa  xmm7,xmm10

+        movdqa  xmm6,xmm10

+        pslld   xmm8,5

+        pandn   xmm7,xmm12

+        pand    xmm6,xmm11

+        punpckldq       xmm2,xmm9

+        movdqa  xmm9,xmm14

+

+        movdqa  XMMWORD[(96-128)+rax],xmm1

+        paddd   xmm13,xmm1

+        movd    xmm3,DWORD[((-32))+r8]

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+        movdqa  xmm7,xmm10

+

+        por     xmm8,xmm9

+        movd    xmm9,DWORD[((-32))+r9]

+        pslld   xmm7,30

+        paddd   xmm13,xmm6

+

+        psrld   xmm10,2

+        paddd   xmm13,xmm8

+DB      102,15,56,0,213

+        movd    xmm8,DWORD[((-32))+r10]

+        por     xmm10,xmm7

+        movd    xmm7,DWORD[((-32))+r11]

+        punpckldq       xmm3,xmm8

+        movdqa  xmm8,xmm13

+        paddd   xmm12,xmm15

+        punpckldq       xmm9,xmm7

+        movdqa  xmm7,xmm14

+        movdqa  xmm6,xmm14

+        pslld   xmm8,5

+        pandn   xmm7,xmm11

+        pand    xmm6,xmm10

+        punpckldq       xmm3,xmm9

+        movdqa  xmm9,xmm13

+

+        movdqa  XMMWORD[(112-128)+rax],xmm2

+        paddd   xmm12,xmm2

+        movd    xmm4,DWORD[((-28))+r8]

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+        movdqa  xmm7,xmm14

+

+        por     xmm8,xmm9

+        movd    xmm9,DWORD[((-28))+r9]

+        pslld   xmm7,30

+        paddd   xmm12,xmm6

+

+        psrld   xmm14,2

+        paddd   xmm12,xmm8

+DB      102,15,56,0,221

+        movd    xmm8,DWORD[((-28))+r10]

+        por     xmm14,xmm7

+        movd    xmm7,DWORD[((-28))+r11]

+        punpckldq       xmm4,xmm8

+        movdqa  xmm8,xmm12

+        paddd   xmm11,xmm15

+        punpckldq       xmm9,xmm7

+        movdqa  xmm7,xmm13

+        movdqa  xmm6,xmm13

+        pslld   xmm8,5

+        pandn   xmm7,xmm10

+        pand    xmm6,xmm14

+        punpckldq       xmm4,xmm9

+        movdqa  xmm9,xmm12

+

+        movdqa  XMMWORD[(128-128)+rax],xmm3

+        paddd   xmm11,xmm3

+        movd    xmm0,DWORD[((-24))+r8]

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+        movdqa  xmm7,xmm13

+

+        por     xmm8,xmm9

+        movd    xmm9,DWORD[((-24))+r9]

+        pslld   xmm7,30

+        paddd   xmm11,xmm6

+

+        psrld   xmm13,2

+        paddd   xmm11,xmm8

+DB      102,15,56,0,229

+        movd    xmm8,DWORD[((-24))+r10]

+        por     xmm13,xmm7

+        movd    xmm7,DWORD[((-24))+r11]

+        punpckldq       xmm0,xmm8

+        movdqa  xmm8,xmm11

+        paddd   xmm10,xmm15

+        punpckldq       xmm9,xmm7

+        movdqa  xmm7,xmm12

+        movdqa  xmm6,xmm12

+        pslld   xmm8,5

+        pandn   xmm7,xmm14

+        pand    xmm6,xmm13

+        punpckldq       xmm0,xmm9

+        movdqa  xmm9,xmm11

+

+        movdqa  XMMWORD[(144-128)+rax],xmm4

+        paddd   xmm10,xmm4

+        movd    xmm1,DWORD[((-20))+r8]

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+        movdqa  xmm7,xmm12

+

+        por     xmm8,xmm9

+        movd    xmm9,DWORD[((-20))+r9]

+        pslld   xmm7,30

+        paddd   xmm10,xmm6

+

+        psrld   xmm12,2

+        paddd   xmm10,xmm8

+DB      102,15,56,0,197

+        movd    xmm8,DWORD[((-20))+r10]

+        por     xmm12,xmm7

+        movd    xmm7,DWORD[((-20))+r11]

+        punpckldq       xmm1,xmm8

+        movdqa  xmm8,xmm10

+        paddd   xmm14,xmm15

+        punpckldq       xmm9,xmm7

+        movdqa  xmm7,xmm11

+        movdqa  xmm6,xmm11

+        pslld   xmm8,5

+        pandn   xmm7,xmm13

+        pand    xmm6,xmm12

+        punpckldq       xmm1,xmm9

+        movdqa  xmm9,xmm10

+

+        movdqa  XMMWORD[(160-128)+rax],xmm0

+        paddd   xmm14,xmm0

+        movd    xmm2,DWORD[((-16))+r8]

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+        movdqa  xmm7,xmm11

+

+        por     xmm8,xmm9

+        movd    xmm9,DWORD[((-16))+r9]

+        pslld   xmm7,30

+        paddd   xmm14,xmm6

+

+        psrld   xmm11,2

+        paddd   xmm14,xmm8

+DB      102,15,56,0,205

+        movd    xmm8,DWORD[((-16))+r10]

+        por     xmm11,xmm7

+        movd    xmm7,DWORD[((-16))+r11]

+        punpckldq       xmm2,xmm8

+        movdqa  xmm8,xmm14

+        paddd   xmm13,xmm15

+        punpckldq       xmm9,xmm7

+        movdqa  xmm7,xmm10

+        movdqa  xmm6,xmm10

+        pslld   xmm8,5

+        pandn   xmm7,xmm12

+        pand    xmm6,xmm11

+        punpckldq       xmm2,xmm9

+        movdqa  xmm9,xmm14

+

+        movdqa  XMMWORD[(176-128)+rax],xmm1

+        paddd   xmm13,xmm1

+        movd    xmm3,DWORD[((-12))+r8]

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+        movdqa  xmm7,xmm10

+

+        por     xmm8,xmm9

+        movd    xmm9,DWORD[((-12))+r9]

+        pslld   xmm7,30

+        paddd   xmm13,xmm6

+

+        psrld   xmm10,2

+        paddd   xmm13,xmm8

+DB      102,15,56,0,213

+        movd    xmm8,DWORD[((-12))+r10]

+        por     xmm10,xmm7

+        movd    xmm7,DWORD[((-12))+r11]

+        punpckldq       xmm3,xmm8

+        movdqa  xmm8,xmm13

+        paddd   xmm12,xmm15

+        punpckldq       xmm9,xmm7

+        movdqa  xmm7,xmm14

+        movdqa  xmm6,xmm14

+        pslld   xmm8,5

+        pandn   xmm7,xmm11

+        pand    xmm6,xmm10

+        punpckldq       xmm3,xmm9

+        movdqa  xmm9,xmm13

+

+        movdqa  XMMWORD[(192-128)+rax],xmm2

+        paddd   xmm12,xmm2

+        movd    xmm4,DWORD[((-8))+r8]

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+        movdqa  xmm7,xmm14

+

+        por     xmm8,xmm9

+        movd    xmm9,DWORD[((-8))+r9]

+        pslld   xmm7,30

+        paddd   xmm12,xmm6

+

+        psrld   xmm14,2

+        paddd   xmm12,xmm8

+DB      102,15,56,0,221

+        movd    xmm8,DWORD[((-8))+r10]

+        por     xmm14,xmm7

+        movd    xmm7,DWORD[((-8))+r11]

+        punpckldq       xmm4,xmm8

+        movdqa  xmm8,xmm12

+        paddd   xmm11,xmm15

+        punpckldq       xmm9,xmm7

+        movdqa  xmm7,xmm13

+        movdqa  xmm6,xmm13

+        pslld   xmm8,5

+        pandn   xmm7,xmm10

+        pand    xmm6,xmm14

+        punpckldq       xmm4,xmm9

+        movdqa  xmm9,xmm12

+

+        movdqa  XMMWORD[(208-128)+rax],xmm3

+        paddd   xmm11,xmm3

+        movd    xmm0,DWORD[((-4))+r8]

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+        movdqa  xmm7,xmm13

+

+        por     xmm8,xmm9

+        movd    xmm9,DWORD[((-4))+r9]

+        pslld   xmm7,30

+        paddd   xmm11,xmm6

+

+        psrld   xmm13,2

+        paddd   xmm11,xmm8

+DB      102,15,56,0,229

+        movd    xmm8,DWORD[((-4))+r10]

+        por     xmm13,xmm7

+        movdqa  xmm1,XMMWORD[((0-128))+rax]

+        movd    xmm7,DWORD[((-4))+r11]

+        punpckldq       xmm0,xmm8

+        movdqa  xmm8,xmm11

+        paddd   xmm10,xmm15

+        punpckldq       xmm9,xmm7

+        movdqa  xmm7,xmm12

+        movdqa  xmm6,xmm12

+        pslld   xmm8,5

+        prefetcht0      [63+r8]

+        pandn   xmm7,xmm14

+        pand    xmm6,xmm13

+        punpckldq       xmm0,xmm9

+        movdqa  xmm9,xmm11

+

+        movdqa  XMMWORD[(224-128)+rax],xmm4

+        paddd   xmm10,xmm4

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+        movdqa  xmm7,xmm12

+        prefetcht0      [63+r9]

+

+        por     xmm8,xmm9

+        pslld   xmm7,30

+        paddd   xmm10,xmm6

+        prefetcht0      [63+r10]

+

+        psrld   xmm12,2

+        paddd   xmm10,xmm8

+DB      102,15,56,0,197

+        prefetcht0      [63+r11]

+        por     xmm12,xmm7

+        movdqa  xmm2,XMMWORD[((16-128))+rax]

+        pxor    xmm1,xmm3

+        movdqa  xmm3,XMMWORD[((32-128))+rax]

+

+        movdqa  xmm8,xmm10

+        pxor    xmm1,XMMWORD[((128-128))+rax]

+        paddd   xmm14,xmm15

+        movdqa  xmm7,xmm11

+        pslld   xmm8,5

+        pxor    xmm1,xmm3

+        movdqa  xmm6,xmm11

+        pandn   xmm7,xmm13

+        movdqa  xmm5,xmm1

+        pand    xmm6,xmm12

+        movdqa  xmm9,xmm10

+        psrld   xmm5,31

+        paddd   xmm1,xmm1

+

+        movdqa  XMMWORD[(240-128)+rax],xmm0

+        paddd   xmm14,xmm0

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+

+        movdqa  xmm7,xmm11

+        por     xmm8,xmm9

+        pslld   xmm7,30

+        paddd   xmm14,xmm6

+

+        psrld   xmm11,2

+        paddd   xmm14,xmm8

+        por     xmm1,xmm5

+        por     xmm11,xmm7

+        pxor    xmm2,xmm4

+        movdqa  xmm4,XMMWORD[((48-128))+rax]

+

+        movdqa  xmm8,xmm14

+        pxor    xmm2,XMMWORD[((144-128))+rax]

+        paddd   xmm13,xmm15

+        movdqa  xmm7,xmm10

+        pslld   xmm8,5

+        pxor    xmm2,xmm4

+        movdqa  xmm6,xmm10

+        pandn   xmm7,xmm12

+        movdqa  xmm5,xmm2

+        pand    xmm6,xmm11

+        movdqa  xmm9,xmm14

+        psrld   xmm5,31

+        paddd   xmm2,xmm2

+

+        movdqa  XMMWORD[(0-128)+rax],xmm1

+        paddd   xmm13,xmm1

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+

+        movdqa  xmm7,xmm10

+        por     xmm8,xmm9

+        pslld   xmm7,30

+        paddd   xmm13,xmm6

+

+        psrld   xmm10,2

+        paddd   xmm13,xmm8

+        por     xmm2,xmm5

+        por     xmm10,xmm7

+        pxor    xmm3,xmm0

+        movdqa  xmm0,XMMWORD[((64-128))+rax]

+

+        movdqa  xmm8,xmm13

+        pxor    xmm3,XMMWORD[((160-128))+rax]

+        paddd   xmm12,xmm15

+        movdqa  xmm7,xmm14

+        pslld   xmm8,5

+        pxor    xmm3,xmm0

+        movdqa  xmm6,xmm14

+        pandn   xmm7,xmm11

+        movdqa  xmm5,xmm3

+        pand    xmm6,xmm10

+        movdqa  xmm9,xmm13

+        psrld   xmm5,31

+        paddd   xmm3,xmm3

+

+        movdqa  XMMWORD[(16-128)+rax],xmm2

+        paddd   xmm12,xmm2

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+

+        movdqa  xmm7,xmm14

+        por     xmm8,xmm9

+        pslld   xmm7,30

+        paddd   xmm12,xmm6

+

+        psrld   xmm14,2

+        paddd   xmm12,xmm8

+        por     xmm3,xmm5

+        por     xmm14,xmm7

+        pxor    xmm4,xmm1

+        movdqa  xmm1,XMMWORD[((80-128))+rax]

+

+        movdqa  xmm8,xmm12

+        pxor    xmm4,XMMWORD[((176-128))+rax]

+        paddd   xmm11,xmm15

+        movdqa  xmm7,xmm13

+        pslld   xmm8,5

+        pxor    xmm4,xmm1

+        movdqa  xmm6,xmm13

+        pandn   xmm7,xmm10

+        movdqa  xmm5,xmm4

+        pand    xmm6,xmm14

+        movdqa  xmm9,xmm12

+        psrld   xmm5,31

+        paddd   xmm4,xmm4

+

+        movdqa  XMMWORD[(32-128)+rax],xmm3

+        paddd   xmm11,xmm3

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+

+        movdqa  xmm7,xmm13

+        por     xmm8,xmm9

+        pslld   xmm7,30

+        paddd   xmm11,xmm6

+

+        psrld   xmm13,2

+        paddd   xmm11,xmm8

+        por     xmm4,xmm5

+        por     xmm13,xmm7

+        pxor    xmm0,xmm2

+        movdqa  xmm2,XMMWORD[((96-128))+rax]

+

+        movdqa  xmm8,xmm11

+        pxor    xmm0,XMMWORD[((192-128))+rax]

+        paddd   xmm10,xmm15

+        movdqa  xmm7,xmm12

+        pslld   xmm8,5

+        pxor    xmm0,xmm2

+        movdqa  xmm6,xmm12

+        pandn   xmm7,xmm14

+        movdqa  xmm5,xmm0

+        pand    xmm6,xmm13

+        movdqa  xmm9,xmm11

+        psrld   xmm5,31

+        paddd   xmm0,xmm0

+

+        movdqa  XMMWORD[(48-128)+rax],xmm4

+        paddd   xmm10,xmm4

+        psrld   xmm9,27

+        pxor    xmm6,xmm7

+

+        movdqa  xmm7,xmm12

+        por     xmm8,xmm9

+        pslld   xmm7,30

+        paddd   xmm10,xmm6

+

+        psrld   xmm12,2

+        paddd   xmm10,xmm8

+        por     xmm0,xmm5

+        por     xmm12,xmm7

+        movdqa  xmm15,XMMWORD[rbp]

+        pxor    xmm1,xmm3

+        movdqa  xmm3,XMMWORD[((112-128))+rax]

+

+        movdqa  xmm8,xmm10

+        movdqa  xmm6,xmm13

+        pxor    xmm1,XMMWORD[((208-128))+rax]

+        paddd   xmm14,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm11

+

+        movdqa  xmm9,xmm10

+        movdqa  XMMWORD[(64-128)+rax],xmm0

+        paddd   xmm14,xmm0

+        pxor    xmm1,xmm3

+        psrld   xmm9,27

+        pxor    xmm6,xmm12

+        movdqa  xmm7,xmm11

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm1

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm14,xmm6

+        paddd   xmm1,xmm1

+

+        psrld   xmm11,2

+        paddd   xmm14,xmm8

+        por     xmm1,xmm5

+        por     xmm11,xmm7

+        pxor    xmm2,xmm4

+        movdqa  xmm4,XMMWORD[((128-128))+rax]

+

+        movdqa  xmm8,xmm14

+        movdqa  xmm6,xmm12

+        pxor    xmm2,XMMWORD[((224-128))+rax]

+        paddd   xmm13,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm10

+

+        movdqa  xmm9,xmm14

+        movdqa  XMMWORD[(80-128)+rax],xmm1

+        paddd   xmm13,xmm1

+        pxor    xmm2,xmm4

+        psrld   xmm9,27

+        pxor    xmm6,xmm11

+        movdqa  xmm7,xmm10

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm2

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm13,xmm6

+        paddd   xmm2,xmm2

+

+        psrld   xmm10,2

+        paddd   xmm13,xmm8

+        por     xmm2,xmm5

+        por     xmm10,xmm7

+        pxor    xmm3,xmm0

+        movdqa  xmm0,XMMWORD[((144-128))+rax]

+

+        movdqa  xmm8,xmm13

+        movdqa  xmm6,xmm11

+        pxor    xmm3,XMMWORD[((240-128))+rax]

+        paddd   xmm12,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm14

+

+        movdqa  xmm9,xmm13

+        movdqa  XMMWORD[(96-128)+rax],xmm2

+        paddd   xmm12,xmm2

+        pxor    xmm3,xmm0

+        psrld   xmm9,27

+        pxor    xmm6,xmm10

+        movdqa  xmm7,xmm14

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm3

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm12,xmm6

+        paddd   xmm3,xmm3

+

+        psrld   xmm14,2

+        paddd   xmm12,xmm8

+        por     xmm3,xmm5

+        por     xmm14,xmm7

+        pxor    xmm4,xmm1

+        movdqa  xmm1,XMMWORD[((160-128))+rax]

+

+        movdqa  xmm8,xmm12

+        movdqa  xmm6,xmm10

+        pxor    xmm4,XMMWORD[((0-128))+rax]

+        paddd   xmm11,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm13

+

+        movdqa  xmm9,xmm12

+        movdqa  XMMWORD[(112-128)+rax],xmm3

+        paddd   xmm11,xmm3

+        pxor    xmm4,xmm1

+        psrld   xmm9,27

+        pxor    xmm6,xmm14

+        movdqa  xmm7,xmm13

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm4

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm11,xmm6

+        paddd   xmm4,xmm4

+

+        psrld   xmm13,2

+        paddd   xmm11,xmm8

+        por     xmm4,xmm5

+        por     xmm13,xmm7

+        pxor    xmm0,xmm2

+        movdqa  xmm2,XMMWORD[((176-128))+rax]

+

+        movdqa  xmm8,xmm11

+        movdqa  xmm6,xmm14

+        pxor    xmm0,XMMWORD[((16-128))+rax]

+        paddd   xmm10,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm12

+

+        movdqa  xmm9,xmm11

+        movdqa  XMMWORD[(128-128)+rax],xmm4

+        paddd   xmm10,xmm4

+        pxor    xmm0,xmm2

+        psrld   xmm9,27

+        pxor    xmm6,xmm13

+        movdqa  xmm7,xmm12

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm0

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm10,xmm6

+        paddd   xmm0,xmm0

+

+        psrld   xmm12,2

+        paddd   xmm10,xmm8

+        por     xmm0,xmm5

+        por     xmm12,xmm7

+        pxor    xmm1,xmm3

+        movdqa  xmm3,XMMWORD[((192-128))+rax]

+

+        movdqa  xmm8,xmm10

+        movdqa  xmm6,xmm13

+        pxor    xmm1,XMMWORD[((32-128))+rax]

+        paddd   xmm14,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm11

+

+        movdqa  xmm9,xmm10

+        movdqa  XMMWORD[(144-128)+rax],xmm0

+        paddd   xmm14,xmm0

+        pxor    xmm1,xmm3

+        psrld   xmm9,27

+        pxor    xmm6,xmm12

+        movdqa  xmm7,xmm11

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm1

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm14,xmm6

+        paddd   xmm1,xmm1

+

+        psrld   xmm11,2

+        paddd   xmm14,xmm8

+        por     xmm1,xmm5

+        por     xmm11,xmm7

+        pxor    xmm2,xmm4

+        movdqa  xmm4,XMMWORD[((208-128))+rax]

+

+        movdqa  xmm8,xmm14

+        movdqa  xmm6,xmm12

+        pxor    xmm2,XMMWORD[((48-128))+rax]

+        paddd   xmm13,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm10

+

+        movdqa  xmm9,xmm14

+        movdqa  XMMWORD[(160-128)+rax],xmm1

+        paddd   xmm13,xmm1

+        pxor    xmm2,xmm4

+        psrld   xmm9,27

+        pxor    xmm6,xmm11

+        movdqa  xmm7,xmm10

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm2

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm13,xmm6

+        paddd   xmm2,xmm2

+

+        psrld   xmm10,2

+        paddd   xmm13,xmm8

+        por     xmm2,xmm5

+        por     xmm10,xmm7

+        pxor    xmm3,xmm0

+        movdqa  xmm0,XMMWORD[((224-128))+rax]

+

+        movdqa  xmm8,xmm13

+        movdqa  xmm6,xmm11

+        pxor    xmm3,XMMWORD[((64-128))+rax]

+        paddd   xmm12,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm14

+

+        movdqa  xmm9,xmm13

+        movdqa  XMMWORD[(176-128)+rax],xmm2

+        paddd   xmm12,xmm2

+        pxor    xmm3,xmm0

+        psrld   xmm9,27

+        pxor    xmm6,xmm10

+        movdqa  xmm7,xmm14

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm3

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm12,xmm6

+        paddd   xmm3,xmm3

+

+        psrld   xmm14,2

+        paddd   xmm12,xmm8

+        por     xmm3,xmm5

+        por     xmm14,xmm7

+        pxor    xmm4,xmm1

+        movdqa  xmm1,XMMWORD[((240-128))+rax]

+

+        movdqa  xmm8,xmm12

+        movdqa  xmm6,xmm10

+        pxor    xmm4,XMMWORD[((80-128))+rax]

+        paddd   xmm11,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm13

+

+        movdqa  xmm9,xmm12

+        movdqa  XMMWORD[(192-128)+rax],xmm3

+        paddd   xmm11,xmm3

+        pxor    xmm4,xmm1

+        psrld   xmm9,27

+        pxor    xmm6,xmm14

+        movdqa  xmm7,xmm13

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm4

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm11,xmm6

+        paddd   xmm4,xmm4

+

+        psrld   xmm13,2

+        paddd   xmm11,xmm8

+        por     xmm4,xmm5

+        por     xmm13,xmm7

+        pxor    xmm0,xmm2

+        movdqa  xmm2,XMMWORD[((0-128))+rax]

+

+        movdqa  xmm8,xmm11

+        movdqa  xmm6,xmm14

+        pxor    xmm0,XMMWORD[((96-128))+rax]

+        paddd   xmm10,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm12

+

+        movdqa  xmm9,xmm11

+        movdqa  XMMWORD[(208-128)+rax],xmm4

+        paddd   xmm10,xmm4

+        pxor    xmm0,xmm2

+        psrld   xmm9,27

+        pxor    xmm6,xmm13

+        movdqa  xmm7,xmm12

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm0

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm10,xmm6

+        paddd   xmm0,xmm0

+

+        psrld   xmm12,2

+        paddd   xmm10,xmm8

+        por     xmm0,xmm5

+        por     xmm12,xmm7

+        pxor    xmm1,xmm3

+        movdqa  xmm3,XMMWORD[((16-128))+rax]

+

+        movdqa  xmm8,xmm10

+        movdqa  xmm6,xmm13

+        pxor    xmm1,XMMWORD[((112-128))+rax]

+        paddd   xmm14,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm11

+

+        movdqa  xmm9,xmm10

+        movdqa  XMMWORD[(224-128)+rax],xmm0

+        paddd   xmm14,xmm0

+        pxor    xmm1,xmm3

+        psrld   xmm9,27

+        pxor    xmm6,xmm12

+        movdqa  xmm7,xmm11

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm1

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm14,xmm6

+        paddd   xmm1,xmm1

+

+        psrld   xmm11,2

+        paddd   xmm14,xmm8

+        por     xmm1,xmm5

+        por     xmm11,xmm7

+        pxor    xmm2,xmm4

+        movdqa  xmm4,XMMWORD[((32-128))+rax]

+

+        movdqa  xmm8,xmm14

+        movdqa  xmm6,xmm12

+        pxor    xmm2,XMMWORD[((128-128))+rax]

+        paddd   xmm13,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm10

+

+        movdqa  xmm9,xmm14

+        movdqa  XMMWORD[(240-128)+rax],xmm1

+        paddd   xmm13,xmm1

+        pxor    xmm2,xmm4

+        psrld   xmm9,27

+        pxor    xmm6,xmm11

+        movdqa  xmm7,xmm10

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm2

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm13,xmm6

+        paddd   xmm2,xmm2

+

+        psrld   xmm10,2

+        paddd   xmm13,xmm8

+        por     xmm2,xmm5

+        por     xmm10,xmm7

+        pxor    xmm3,xmm0

+        movdqa  xmm0,XMMWORD[((48-128))+rax]

+

+        movdqa  xmm8,xmm13

+        movdqa  xmm6,xmm11

+        pxor    xmm3,XMMWORD[((144-128))+rax]

+        paddd   xmm12,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm14

+

+        movdqa  xmm9,xmm13

+        movdqa  XMMWORD[(0-128)+rax],xmm2

+        paddd   xmm12,xmm2

+        pxor    xmm3,xmm0

+        psrld   xmm9,27

+        pxor    xmm6,xmm10

+        movdqa  xmm7,xmm14

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm3

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm12,xmm6

+        paddd   xmm3,xmm3

+

+        psrld   xmm14,2

+        paddd   xmm12,xmm8

+        por     xmm3,xmm5

+        por     xmm14,xmm7

+        pxor    xmm4,xmm1

+        movdqa  xmm1,XMMWORD[((64-128))+rax]

+

+        movdqa  xmm8,xmm12

+        movdqa  xmm6,xmm10

+        pxor    xmm4,XMMWORD[((160-128))+rax]

+        paddd   xmm11,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm13

+

+        movdqa  xmm9,xmm12

+        movdqa  XMMWORD[(16-128)+rax],xmm3

+        paddd   xmm11,xmm3

+        pxor    xmm4,xmm1

+        psrld   xmm9,27

+        pxor    xmm6,xmm14

+        movdqa  xmm7,xmm13

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm4

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm11,xmm6

+        paddd   xmm4,xmm4

+

+        psrld   xmm13,2

+        paddd   xmm11,xmm8

+        por     xmm4,xmm5

+        por     xmm13,xmm7

+        pxor    xmm0,xmm2

+        movdqa  xmm2,XMMWORD[((80-128))+rax]

+

+        movdqa  xmm8,xmm11

+        movdqa  xmm6,xmm14

+        pxor    xmm0,XMMWORD[((176-128))+rax]

+        paddd   xmm10,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm12

+

+        movdqa  xmm9,xmm11

+        movdqa  XMMWORD[(32-128)+rax],xmm4

+        paddd   xmm10,xmm4

+        pxor    xmm0,xmm2

+        psrld   xmm9,27

+        pxor    xmm6,xmm13

+        movdqa  xmm7,xmm12

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm0

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm10,xmm6

+        paddd   xmm0,xmm0

+

+        psrld   xmm12,2

+        paddd   xmm10,xmm8

+        por     xmm0,xmm5

+        por     xmm12,xmm7

+        pxor    xmm1,xmm3

+        movdqa  xmm3,XMMWORD[((96-128))+rax]

+

+        movdqa  xmm8,xmm10

+        movdqa  xmm6,xmm13

+        pxor    xmm1,XMMWORD[((192-128))+rax]

+        paddd   xmm14,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm11

+

+        movdqa  xmm9,xmm10

+        movdqa  XMMWORD[(48-128)+rax],xmm0

+        paddd   xmm14,xmm0

+        pxor    xmm1,xmm3

+        psrld   xmm9,27

+        pxor    xmm6,xmm12

+        movdqa  xmm7,xmm11

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm1

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm14,xmm6

+        paddd   xmm1,xmm1

+

+        psrld   xmm11,2

+        paddd   xmm14,xmm8

+        por     xmm1,xmm5

+        por     xmm11,xmm7

+        pxor    xmm2,xmm4

+        movdqa  xmm4,XMMWORD[((112-128))+rax]

+

+        movdqa  xmm8,xmm14

+        movdqa  xmm6,xmm12

+        pxor    xmm2,XMMWORD[((208-128))+rax]

+        paddd   xmm13,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm10

+

+        movdqa  xmm9,xmm14

+        movdqa  XMMWORD[(64-128)+rax],xmm1

+        paddd   xmm13,xmm1

+        pxor    xmm2,xmm4

+        psrld   xmm9,27

+        pxor    xmm6,xmm11

+        movdqa  xmm7,xmm10

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm2

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm13,xmm6

+        paddd   xmm2,xmm2

+

+        psrld   xmm10,2

+        paddd   xmm13,xmm8

+        por     xmm2,xmm5

+        por     xmm10,xmm7

+        pxor    xmm3,xmm0

+        movdqa  xmm0,XMMWORD[((128-128))+rax]

+

+        movdqa  xmm8,xmm13

+        movdqa  xmm6,xmm11

+        pxor    xmm3,XMMWORD[((224-128))+rax]

+        paddd   xmm12,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm14

+

+        movdqa  xmm9,xmm13

+        movdqa  XMMWORD[(80-128)+rax],xmm2

+        paddd   xmm12,xmm2

+        pxor    xmm3,xmm0

+        psrld   xmm9,27

+        pxor    xmm6,xmm10

+        movdqa  xmm7,xmm14

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm3

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm12,xmm6

+        paddd   xmm3,xmm3

+

+        psrld   xmm14,2

+        paddd   xmm12,xmm8

+        por     xmm3,xmm5

+        por     xmm14,xmm7

+        pxor    xmm4,xmm1

+        movdqa  xmm1,XMMWORD[((144-128))+rax]

+

+        movdqa  xmm8,xmm12

+        movdqa  xmm6,xmm10

+        pxor    xmm4,XMMWORD[((240-128))+rax]

+        paddd   xmm11,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm13

+

+        movdqa  xmm9,xmm12

+        movdqa  XMMWORD[(96-128)+rax],xmm3

+        paddd   xmm11,xmm3

+        pxor    xmm4,xmm1

+        psrld   xmm9,27

+        pxor    xmm6,xmm14

+        movdqa  xmm7,xmm13

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm4

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm11,xmm6

+        paddd   xmm4,xmm4

+

+        psrld   xmm13,2

+        paddd   xmm11,xmm8

+        por     xmm4,xmm5

+        por     xmm13,xmm7

+        pxor    xmm0,xmm2

+        movdqa  xmm2,XMMWORD[((160-128))+rax]

+

+        movdqa  xmm8,xmm11

+        movdqa  xmm6,xmm14

+        pxor    xmm0,XMMWORD[((0-128))+rax]

+        paddd   xmm10,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm12

+

+        movdqa  xmm9,xmm11

+        movdqa  XMMWORD[(112-128)+rax],xmm4

+        paddd   xmm10,xmm4

+        pxor    xmm0,xmm2

+        psrld   xmm9,27

+        pxor    xmm6,xmm13

+        movdqa  xmm7,xmm12

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm0

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm10,xmm6

+        paddd   xmm0,xmm0

+

+        psrld   xmm12,2

+        paddd   xmm10,xmm8

+        por     xmm0,xmm5

+        por     xmm12,xmm7

+        movdqa  xmm15,XMMWORD[32+rbp]

+        pxor    xmm1,xmm3

+        movdqa  xmm3,XMMWORD[((176-128))+rax]

+

+        movdqa  xmm8,xmm10

+        movdqa  xmm7,xmm13

+        pxor    xmm1,XMMWORD[((16-128))+rax]

+        pxor    xmm1,xmm3

+        paddd   xmm14,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm10

+        pand    xmm7,xmm12

+

+        movdqa  xmm6,xmm13

+        movdqa  xmm5,xmm1

+        psrld   xmm9,27

+        paddd   xmm14,xmm7

+        pxor    xmm6,xmm12

+

+        movdqa  XMMWORD[(128-128)+rax],xmm0

+        paddd   xmm14,xmm0

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm11

+        movdqa  xmm7,xmm11

+

+        pslld   xmm7,30

+        paddd   xmm1,xmm1

+        paddd   xmm14,xmm6

+

+        psrld   xmm11,2

+        paddd   xmm14,xmm8

+        por     xmm1,xmm5

+        por     xmm11,xmm7

+        pxor    xmm2,xmm4

+        movdqa  xmm4,XMMWORD[((192-128))+rax]

+

+        movdqa  xmm8,xmm14

+        movdqa  xmm7,xmm12

+        pxor    xmm2,XMMWORD[((32-128))+rax]

+        pxor    xmm2,xmm4

+        paddd   xmm13,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm14

+        pand    xmm7,xmm11

+

+        movdqa  xmm6,xmm12

+        movdqa  xmm5,xmm2

+        psrld   xmm9,27

+        paddd   xmm13,xmm7

+        pxor    xmm6,xmm11

+

+        movdqa  XMMWORD[(144-128)+rax],xmm1

+        paddd   xmm13,xmm1

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm10

+        movdqa  xmm7,xmm10

+

+        pslld   xmm7,30

+        paddd   xmm2,xmm2

+        paddd   xmm13,xmm6

+

+        psrld   xmm10,2

+        paddd   xmm13,xmm8

+        por     xmm2,xmm5

+        por     xmm10,xmm7

+        pxor    xmm3,xmm0

+        movdqa  xmm0,XMMWORD[((208-128))+rax]

+

+        movdqa  xmm8,xmm13

+        movdqa  xmm7,xmm11

+        pxor    xmm3,XMMWORD[((48-128))+rax]

+        pxor    xmm3,xmm0

+        paddd   xmm12,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm13

+        pand    xmm7,xmm10

+

+        movdqa  xmm6,xmm11

+        movdqa  xmm5,xmm3

+        psrld   xmm9,27

+        paddd   xmm12,xmm7

+        pxor    xmm6,xmm10

+

+        movdqa  XMMWORD[(160-128)+rax],xmm2

+        paddd   xmm12,xmm2

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm14

+        movdqa  xmm7,xmm14

+

+        pslld   xmm7,30

+        paddd   xmm3,xmm3

+        paddd   xmm12,xmm6

+

+        psrld   xmm14,2

+        paddd   xmm12,xmm8

+        por     xmm3,xmm5

+        por     xmm14,xmm7

+        pxor    xmm4,xmm1

+        movdqa  xmm1,XMMWORD[((224-128))+rax]

+

+        movdqa  xmm8,xmm12

+        movdqa  xmm7,xmm10

+        pxor    xmm4,XMMWORD[((64-128))+rax]

+        pxor    xmm4,xmm1

+        paddd   xmm11,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm12

+        pand    xmm7,xmm14

+

+        movdqa  xmm6,xmm10

+        movdqa  xmm5,xmm4

+        psrld   xmm9,27

+        paddd   xmm11,xmm7

+        pxor    xmm6,xmm14

+

+        movdqa  XMMWORD[(176-128)+rax],xmm3

+        paddd   xmm11,xmm3

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm13

+        movdqa  xmm7,xmm13

+

+        pslld   xmm7,30

+        paddd   xmm4,xmm4

+        paddd   xmm11,xmm6

+

+        psrld   xmm13,2

+        paddd   xmm11,xmm8

+        por     xmm4,xmm5

+        por     xmm13,xmm7

+        pxor    xmm0,xmm2

+        movdqa  xmm2,XMMWORD[((240-128))+rax]

+

+        movdqa  xmm8,xmm11

+        movdqa  xmm7,xmm14

+        pxor    xmm0,XMMWORD[((80-128))+rax]

+        pxor    xmm0,xmm2

+        paddd   xmm10,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm11

+        pand    xmm7,xmm13

+

+        movdqa  xmm6,xmm14

+        movdqa  xmm5,xmm0

+        psrld   xmm9,27

+        paddd   xmm10,xmm7

+        pxor    xmm6,xmm13

+

+        movdqa  XMMWORD[(192-128)+rax],xmm4

+        paddd   xmm10,xmm4

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm12

+        movdqa  xmm7,xmm12

+

+        pslld   xmm7,30

+        paddd   xmm0,xmm0

+        paddd   xmm10,xmm6

+

+        psrld   xmm12,2

+        paddd   xmm10,xmm8

+        por     xmm0,xmm5

+        por     xmm12,xmm7

+        pxor    xmm1,xmm3

+        movdqa  xmm3,XMMWORD[((0-128))+rax]

+

+        movdqa  xmm8,xmm10

+        movdqa  xmm7,xmm13

+        pxor    xmm1,XMMWORD[((96-128))+rax]

+        pxor    xmm1,xmm3

+        paddd   xmm14,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm10

+        pand    xmm7,xmm12

+

+        movdqa  xmm6,xmm13

+        movdqa  xmm5,xmm1

+        psrld   xmm9,27

+        paddd   xmm14,xmm7

+        pxor    xmm6,xmm12

+

+        movdqa  XMMWORD[(208-128)+rax],xmm0

+        paddd   xmm14,xmm0

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm11

+        movdqa  xmm7,xmm11

+

+        pslld   xmm7,30

+        paddd   xmm1,xmm1

+        paddd   xmm14,xmm6

+

+        psrld   xmm11,2

+        paddd   xmm14,xmm8

+        por     xmm1,xmm5

+        por     xmm11,xmm7

+        pxor    xmm2,xmm4

+        movdqa  xmm4,XMMWORD[((16-128))+rax]

+

+        movdqa  xmm8,xmm14

+        movdqa  xmm7,xmm12

+        pxor    xmm2,XMMWORD[((112-128))+rax]

+        pxor    xmm2,xmm4

+        paddd   xmm13,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm14

+        pand    xmm7,xmm11

+

+        movdqa  xmm6,xmm12

+        movdqa  xmm5,xmm2

+        psrld   xmm9,27

+        paddd   xmm13,xmm7

+        pxor    xmm6,xmm11

+

+        movdqa  XMMWORD[(224-128)+rax],xmm1

+        paddd   xmm13,xmm1

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm10

+        movdqa  xmm7,xmm10

+

+        pslld   xmm7,30

+        paddd   xmm2,xmm2

+        paddd   xmm13,xmm6

+

+        psrld   xmm10,2

+        paddd   xmm13,xmm8

+        por     xmm2,xmm5

+        por     xmm10,xmm7

+        pxor    xmm3,xmm0

+        movdqa  xmm0,XMMWORD[((32-128))+rax]

+

+        movdqa  xmm8,xmm13

+        movdqa  xmm7,xmm11

+        pxor    xmm3,XMMWORD[((128-128))+rax]

+        pxor    xmm3,xmm0

+        paddd   xmm12,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm13

+        pand    xmm7,xmm10

+

+        movdqa  xmm6,xmm11

+        movdqa  xmm5,xmm3

+        psrld   xmm9,27

+        paddd   xmm12,xmm7

+        pxor    xmm6,xmm10

+

+        movdqa  XMMWORD[(240-128)+rax],xmm2

+        paddd   xmm12,xmm2

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm14

+        movdqa  xmm7,xmm14

+

+        pslld   xmm7,30

+        paddd   xmm3,xmm3

+        paddd   xmm12,xmm6

+

+        psrld   xmm14,2

+        paddd   xmm12,xmm8

+        por     xmm3,xmm5

+        por     xmm14,xmm7

+        pxor    xmm4,xmm1

+        movdqa  xmm1,XMMWORD[((48-128))+rax]

+

+        movdqa  xmm8,xmm12

+        movdqa  xmm7,xmm10

+        pxor    xmm4,XMMWORD[((144-128))+rax]

+        pxor    xmm4,xmm1

+        paddd   xmm11,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm12

+        pand    xmm7,xmm14

+

+        movdqa  xmm6,xmm10

+        movdqa  xmm5,xmm4

+        psrld   xmm9,27

+        paddd   xmm11,xmm7

+        pxor    xmm6,xmm14

+

+        movdqa  XMMWORD[(0-128)+rax],xmm3

+        paddd   xmm11,xmm3

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm13

+        movdqa  xmm7,xmm13

+

+        pslld   xmm7,30

+        paddd   xmm4,xmm4

+        paddd   xmm11,xmm6

+

+        psrld   xmm13,2

+        paddd   xmm11,xmm8

+        por     xmm4,xmm5

+        por     xmm13,xmm7

+        pxor    xmm0,xmm2

+        movdqa  xmm2,XMMWORD[((64-128))+rax]

+

+        movdqa  xmm8,xmm11

+        movdqa  xmm7,xmm14

+        pxor    xmm0,XMMWORD[((160-128))+rax]

+        pxor    xmm0,xmm2

+        paddd   xmm10,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm11

+        pand    xmm7,xmm13

+

+        movdqa  xmm6,xmm14

+        movdqa  xmm5,xmm0

+        psrld   xmm9,27

+        paddd   xmm10,xmm7

+        pxor    xmm6,xmm13

+

+        movdqa  XMMWORD[(16-128)+rax],xmm4

+        paddd   xmm10,xmm4

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm12

+        movdqa  xmm7,xmm12

+

+        pslld   xmm7,30

+        paddd   xmm0,xmm0

+        paddd   xmm10,xmm6

+

+        psrld   xmm12,2

+        paddd   xmm10,xmm8

+        por     xmm0,xmm5

+        por     xmm12,xmm7

+        pxor    xmm1,xmm3

+        movdqa  xmm3,XMMWORD[((80-128))+rax]

+

+        movdqa  xmm8,xmm10

+        movdqa  xmm7,xmm13

+        pxor    xmm1,XMMWORD[((176-128))+rax]

+        pxor    xmm1,xmm3

+        paddd   xmm14,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm10

+        pand    xmm7,xmm12

+

+        movdqa  xmm6,xmm13

+        movdqa  xmm5,xmm1

+        psrld   xmm9,27

+        paddd   xmm14,xmm7

+        pxor    xmm6,xmm12

+

+        movdqa  XMMWORD[(32-128)+rax],xmm0

+        paddd   xmm14,xmm0

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm11

+        movdqa  xmm7,xmm11

+

+        pslld   xmm7,30

+        paddd   xmm1,xmm1

+        paddd   xmm14,xmm6

+

+        psrld   xmm11,2

+        paddd   xmm14,xmm8

+        por     xmm1,xmm5

+        por     xmm11,xmm7

+        pxor    xmm2,xmm4

+        movdqa  xmm4,XMMWORD[((96-128))+rax]

+

+        movdqa  xmm8,xmm14

+        movdqa  xmm7,xmm12

+        pxor    xmm2,XMMWORD[((192-128))+rax]

+        pxor    xmm2,xmm4

+        paddd   xmm13,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm14

+        pand    xmm7,xmm11

+

+        movdqa  xmm6,xmm12

+        movdqa  xmm5,xmm2

+        psrld   xmm9,27

+        paddd   xmm13,xmm7

+        pxor    xmm6,xmm11

+

+        movdqa  XMMWORD[(48-128)+rax],xmm1

+        paddd   xmm13,xmm1

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm10

+        movdqa  xmm7,xmm10

+

+        pslld   xmm7,30

+        paddd   xmm2,xmm2

+        paddd   xmm13,xmm6

+

+        psrld   xmm10,2

+        paddd   xmm13,xmm8

+        por     xmm2,xmm5

+        por     xmm10,xmm7

+        pxor    xmm3,xmm0

+        movdqa  xmm0,XMMWORD[((112-128))+rax]

+

+        movdqa  xmm8,xmm13

+        movdqa  xmm7,xmm11

+        pxor    xmm3,XMMWORD[((208-128))+rax]

+        pxor    xmm3,xmm0

+        paddd   xmm12,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm13

+        pand    xmm7,xmm10

+

+        movdqa  xmm6,xmm11

+        movdqa  xmm5,xmm3

+        psrld   xmm9,27

+        paddd   xmm12,xmm7

+        pxor    xmm6,xmm10

+

+        movdqa  XMMWORD[(64-128)+rax],xmm2

+        paddd   xmm12,xmm2

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm14

+        movdqa  xmm7,xmm14

+

+        pslld   xmm7,30

+        paddd   xmm3,xmm3

+        paddd   xmm12,xmm6

+

+        psrld   xmm14,2

+        paddd   xmm12,xmm8

+        por     xmm3,xmm5

+        por     xmm14,xmm7

+        pxor    xmm4,xmm1

+        movdqa  xmm1,XMMWORD[((128-128))+rax]

+

+        movdqa  xmm8,xmm12

+        movdqa  xmm7,xmm10

+        pxor    xmm4,XMMWORD[((224-128))+rax]

+        pxor    xmm4,xmm1

+        paddd   xmm11,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm12

+        pand    xmm7,xmm14

+

+        movdqa  xmm6,xmm10

+        movdqa  xmm5,xmm4

+        psrld   xmm9,27

+        paddd   xmm11,xmm7

+        pxor    xmm6,xmm14

+

+        movdqa  XMMWORD[(80-128)+rax],xmm3

+        paddd   xmm11,xmm3

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm13

+        movdqa  xmm7,xmm13

+

+        pslld   xmm7,30

+        paddd   xmm4,xmm4

+        paddd   xmm11,xmm6

+

+        psrld   xmm13,2

+        paddd   xmm11,xmm8

+        por     xmm4,xmm5

+        por     xmm13,xmm7

+        pxor    xmm0,xmm2

+        movdqa  xmm2,XMMWORD[((144-128))+rax]

+

+        movdqa  xmm8,xmm11

+        movdqa  xmm7,xmm14

+        pxor    xmm0,XMMWORD[((240-128))+rax]

+        pxor    xmm0,xmm2

+        paddd   xmm10,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm11

+        pand    xmm7,xmm13

+

+        movdqa  xmm6,xmm14

+        movdqa  xmm5,xmm0

+        psrld   xmm9,27

+        paddd   xmm10,xmm7

+        pxor    xmm6,xmm13

+

+        movdqa  XMMWORD[(96-128)+rax],xmm4

+        paddd   xmm10,xmm4

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm12

+        movdqa  xmm7,xmm12

+

+        pslld   xmm7,30

+        paddd   xmm0,xmm0

+        paddd   xmm10,xmm6

+

+        psrld   xmm12,2

+        paddd   xmm10,xmm8

+        por     xmm0,xmm5

+        por     xmm12,xmm7

+        pxor    xmm1,xmm3

+        movdqa  xmm3,XMMWORD[((160-128))+rax]

+

+        movdqa  xmm8,xmm10

+        movdqa  xmm7,xmm13

+        pxor    xmm1,XMMWORD[((0-128))+rax]

+        pxor    xmm1,xmm3

+        paddd   xmm14,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm10

+        pand    xmm7,xmm12

+

+        movdqa  xmm6,xmm13

+        movdqa  xmm5,xmm1

+        psrld   xmm9,27

+        paddd   xmm14,xmm7

+        pxor    xmm6,xmm12

+

+        movdqa  XMMWORD[(112-128)+rax],xmm0

+        paddd   xmm14,xmm0

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm11

+        movdqa  xmm7,xmm11

+

+        pslld   xmm7,30

+        paddd   xmm1,xmm1

+        paddd   xmm14,xmm6

+

+        psrld   xmm11,2

+        paddd   xmm14,xmm8

+        por     xmm1,xmm5

+        por     xmm11,xmm7

+        pxor    xmm2,xmm4

+        movdqa  xmm4,XMMWORD[((176-128))+rax]

+

+        movdqa  xmm8,xmm14

+        movdqa  xmm7,xmm12

+        pxor    xmm2,XMMWORD[((16-128))+rax]

+        pxor    xmm2,xmm4

+        paddd   xmm13,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm14

+        pand    xmm7,xmm11

+

+        movdqa  xmm6,xmm12

+        movdqa  xmm5,xmm2

+        psrld   xmm9,27

+        paddd   xmm13,xmm7

+        pxor    xmm6,xmm11

+

+        movdqa  XMMWORD[(128-128)+rax],xmm1

+        paddd   xmm13,xmm1

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm10

+        movdqa  xmm7,xmm10

+

+        pslld   xmm7,30

+        paddd   xmm2,xmm2

+        paddd   xmm13,xmm6

+

+        psrld   xmm10,2

+        paddd   xmm13,xmm8

+        por     xmm2,xmm5

+        por     xmm10,xmm7

+        pxor    xmm3,xmm0

+        movdqa  xmm0,XMMWORD[((192-128))+rax]

+

+        movdqa  xmm8,xmm13

+        movdqa  xmm7,xmm11

+        pxor    xmm3,XMMWORD[((32-128))+rax]

+        pxor    xmm3,xmm0

+        paddd   xmm12,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm13

+        pand    xmm7,xmm10

+

+        movdqa  xmm6,xmm11

+        movdqa  xmm5,xmm3

+        psrld   xmm9,27

+        paddd   xmm12,xmm7

+        pxor    xmm6,xmm10

+

+        movdqa  XMMWORD[(144-128)+rax],xmm2

+        paddd   xmm12,xmm2

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm14

+        movdqa  xmm7,xmm14

+

+        pslld   xmm7,30

+        paddd   xmm3,xmm3

+        paddd   xmm12,xmm6

+

+        psrld   xmm14,2

+        paddd   xmm12,xmm8

+        por     xmm3,xmm5

+        por     xmm14,xmm7

+        pxor    xmm4,xmm1

+        movdqa  xmm1,XMMWORD[((208-128))+rax]

+

+        movdqa  xmm8,xmm12

+        movdqa  xmm7,xmm10

+        pxor    xmm4,XMMWORD[((48-128))+rax]

+        pxor    xmm4,xmm1

+        paddd   xmm11,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm12

+        pand    xmm7,xmm14

+

+        movdqa  xmm6,xmm10

+        movdqa  xmm5,xmm4

+        psrld   xmm9,27

+        paddd   xmm11,xmm7

+        pxor    xmm6,xmm14

+

+        movdqa  XMMWORD[(160-128)+rax],xmm3

+        paddd   xmm11,xmm3

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm13

+        movdqa  xmm7,xmm13

+

+        pslld   xmm7,30

+        paddd   xmm4,xmm4

+        paddd   xmm11,xmm6

+

+        psrld   xmm13,2

+        paddd   xmm11,xmm8

+        por     xmm4,xmm5

+        por     xmm13,xmm7

+        pxor    xmm0,xmm2

+        movdqa  xmm2,XMMWORD[((224-128))+rax]

+

+        movdqa  xmm8,xmm11

+        movdqa  xmm7,xmm14

+        pxor    xmm0,XMMWORD[((64-128))+rax]

+        pxor    xmm0,xmm2

+        paddd   xmm10,xmm15

+        pslld   xmm8,5

+        movdqa  xmm9,xmm11

+        pand    xmm7,xmm13

+

+        movdqa  xmm6,xmm14

+        movdqa  xmm5,xmm0

+        psrld   xmm9,27

+        paddd   xmm10,xmm7

+        pxor    xmm6,xmm13

+

+        movdqa  XMMWORD[(176-128)+rax],xmm4

+        paddd   xmm10,xmm4

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        pand    xmm6,xmm12

+        movdqa  xmm7,xmm12

+

+        pslld   xmm7,30

+        paddd   xmm0,xmm0

+        paddd   xmm10,xmm6

+

+        psrld   xmm12,2

+        paddd   xmm10,xmm8

+        por     xmm0,xmm5

+        por     xmm12,xmm7

+        movdqa  xmm15,XMMWORD[64+rbp]

+        pxor    xmm1,xmm3

+        movdqa  xmm3,XMMWORD[((240-128))+rax]

+

+        movdqa  xmm8,xmm10

+        movdqa  xmm6,xmm13

+        pxor    xmm1,XMMWORD[((80-128))+rax]

+        paddd   xmm14,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm11

+

+        movdqa  xmm9,xmm10

+        movdqa  XMMWORD[(192-128)+rax],xmm0

+        paddd   xmm14,xmm0

+        pxor    xmm1,xmm3

+        psrld   xmm9,27

+        pxor    xmm6,xmm12

+        movdqa  xmm7,xmm11

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm1

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm14,xmm6

+        paddd   xmm1,xmm1

+

+        psrld   xmm11,2

+        paddd   xmm14,xmm8

+        por     xmm1,xmm5

+        por     xmm11,xmm7

+        pxor    xmm2,xmm4

+        movdqa  xmm4,XMMWORD[((0-128))+rax]

+

+        movdqa  xmm8,xmm14

+        movdqa  xmm6,xmm12

+        pxor    xmm2,XMMWORD[((96-128))+rax]

+        paddd   xmm13,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm10

+

+        movdqa  xmm9,xmm14

+        movdqa  XMMWORD[(208-128)+rax],xmm1

+        paddd   xmm13,xmm1

+        pxor    xmm2,xmm4

+        psrld   xmm9,27

+        pxor    xmm6,xmm11

+        movdqa  xmm7,xmm10

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm2

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm13,xmm6

+        paddd   xmm2,xmm2

+

+        psrld   xmm10,2

+        paddd   xmm13,xmm8

+        por     xmm2,xmm5

+        por     xmm10,xmm7

+        pxor    xmm3,xmm0

+        movdqa  xmm0,XMMWORD[((16-128))+rax]

+

+        movdqa  xmm8,xmm13

+        movdqa  xmm6,xmm11

+        pxor    xmm3,XMMWORD[((112-128))+rax]

+        paddd   xmm12,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm14

+

+        movdqa  xmm9,xmm13

+        movdqa  XMMWORD[(224-128)+rax],xmm2

+        paddd   xmm12,xmm2

+        pxor    xmm3,xmm0

+        psrld   xmm9,27

+        pxor    xmm6,xmm10

+        movdqa  xmm7,xmm14

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm3

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm12,xmm6

+        paddd   xmm3,xmm3

+

+        psrld   xmm14,2

+        paddd   xmm12,xmm8

+        por     xmm3,xmm5

+        por     xmm14,xmm7

+        pxor    xmm4,xmm1

+        movdqa  xmm1,XMMWORD[((32-128))+rax]

+

+        movdqa  xmm8,xmm12

+        movdqa  xmm6,xmm10

+        pxor    xmm4,XMMWORD[((128-128))+rax]

+        paddd   xmm11,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm13

+

+        movdqa  xmm9,xmm12

+        movdqa  XMMWORD[(240-128)+rax],xmm3

+        paddd   xmm11,xmm3

+        pxor    xmm4,xmm1

+        psrld   xmm9,27

+        pxor    xmm6,xmm14

+        movdqa  xmm7,xmm13

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm4

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm11,xmm6

+        paddd   xmm4,xmm4

+

+        psrld   xmm13,2

+        paddd   xmm11,xmm8

+        por     xmm4,xmm5

+        por     xmm13,xmm7

+        pxor    xmm0,xmm2

+        movdqa  xmm2,XMMWORD[((48-128))+rax]

+

+        movdqa  xmm8,xmm11

+        movdqa  xmm6,xmm14

+        pxor    xmm0,XMMWORD[((144-128))+rax]

+        paddd   xmm10,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm12

+

+        movdqa  xmm9,xmm11

+        movdqa  XMMWORD[(0-128)+rax],xmm4

+        paddd   xmm10,xmm4

+        pxor    xmm0,xmm2

+        psrld   xmm9,27

+        pxor    xmm6,xmm13

+        movdqa  xmm7,xmm12

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm0

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm10,xmm6

+        paddd   xmm0,xmm0

+

+        psrld   xmm12,2

+        paddd   xmm10,xmm8

+        por     xmm0,xmm5

+        por     xmm12,xmm7

+        pxor    xmm1,xmm3

+        movdqa  xmm3,XMMWORD[((64-128))+rax]

+

+        movdqa  xmm8,xmm10

+        movdqa  xmm6,xmm13

+        pxor    xmm1,XMMWORD[((160-128))+rax]

+        paddd   xmm14,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm11

+

+        movdqa  xmm9,xmm10

+        movdqa  XMMWORD[(16-128)+rax],xmm0

+        paddd   xmm14,xmm0

+        pxor    xmm1,xmm3

+        psrld   xmm9,27

+        pxor    xmm6,xmm12

+        movdqa  xmm7,xmm11

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm1

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm14,xmm6

+        paddd   xmm1,xmm1

+

+        psrld   xmm11,2

+        paddd   xmm14,xmm8

+        por     xmm1,xmm5

+        por     xmm11,xmm7

+        pxor    xmm2,xmm4

+        movdqa  xmm4,XMMWORD[((80-128))+rax]

+

+        movdqa  xmm8,xmm14

+        movdqa  xmm6,xmm12

+        pxor    xmm2,XMMWORD[((176-128))+rax]

+        paddd   xmm13,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm10

+

+        movdqa  xmm9,xmm14

+        movdqa  XMMWORD[(32-128)+rax],xmm1

+        paddd   xmm13,xmm1

+        pxor    xmm2,xmm4

+        psrld   xmm9,27

+        pxor    xmm6,xmm11

+        movdqa  xmm7,xmm10

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm2

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm13,xmm6

+        paddd   xmm2,xmm2

+

+        psrld   xmm10,2

+        paddd   xmm13,xmm8

+        por     xmm2,xmm5

+        por     xmm10,xmm7

+        pxor    xmm3,xmm0

+        movdqa  xmm0,XMMWORD[((96-128))+rax]

+

+        movdqa  xmm8,xmm13

+        movdqa  xmm6,xmm11

+        pxor    xmm3,XMMWORD[((192-128))+rax]

+        paddd   xmm12,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm14

+

+        movdqa  xmm9,xmm13

+        movdqa  XMMWORD[(48-128)+rax],xmm2

+        paddd   xmm12,xmm2

+        pxor    xmm3,xmm0

+        psrld   xmm9,27

+        pxor    xmm6,xmm10

+        movdqa  xmm7,xmm14

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm3

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm12,xmm6

+        paddd   xmm3,xmm3

+

+        psrld   xmm14,2

+        paddd   xmm12,xmm8

+        por     xmm3,xmm5

+        por     xmm14,xmm7

+        pxor    xmm4,xmm1

+        movdqa  xmm1,XMMWORD[((112-128))+rax]

+

+        movdqa  xmm8,xmm12

+        movdqa  xmm6,xmm10

+        pxor    xmm4,XMMWORD[((208-128))+rax]

+        paddd   xmm11,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm13

+

+        movdqa  xmm9,xmm12

+        movdqa  XMMWORD[(64-128)+rax],xmm3

+        paddd   xmm11,xmm3

+        pxor    xmm4,xmm1

+        psrld   xmm9,27

+        pxor    xmm6,xmm14

+        movdqa  xmm7,xmm13

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm4

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm11,xmm6

+        paddd   xmm4,xmm4

+

+        psrld   xmm13,2

+        paddd   xmm11,xmm8

+        por     xmm4,xmm5

+        por     xmm13,xmm7

+        pxor    xmm0,xmm2

+        movdqa  xmm2,XMMWORD[((128-128))+rax]

+

+        movdqa  xmm8,xmm11

+        movdqa  xmm6,xmm14

+        pxor    xmm0,XMMWORD[((224-128))+rax]

+        paddd   xmm10,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm12

+

+        movdqa  xmm9,xmm11

+        movdqa  XMMWORD[(80-128)+rax],xmm4

+        paddd   xmm10,xmm4

+        pxor    xmm0,xmm2

+        psrld   xmm9,27

+        pxor    xmm6,xmm13

+        movdqa  xmm7,xmm12

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm0

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm10,xmm6

+        paddd   xmm0,xmm0

+

+        psrld   xmm12,2

+        paddd   xmm10,xmm8

+        por     xmm0,xmm5

+        por     xmm12,xmm7

+        pxor    xmm1,xmm3

+        movdqa  xmm3,XMMWORD[((144-128))+rax]

+

+        movdqa  xmm8,xmm10

+        movdqa  xmm6,xmm13

+        pxor    xmm1,XMMWORD[((240-128))+rax]

+        paddd   xmm14,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm11

+

+        movdqa  xmm9,xmm10

+        movdqa  XMMWORD[(96-128)+rax],xmm0

+        paddd   xmm14,xmm0

+        pxor    xmm1,xmm3

+        psrld   xmm9,27

+        pxor    xmm6,xmm12

+        movdqa  xmm7,xmm11

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm1

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm14,xmm6

+        paddd   xmm1,xmm1

+

+        psrld   xmm11,2

+        paddd   xmm14,xmm8

+        por     xmm1,xmm5

+        por     xmm11,xmm7

+        pxor    xmm2,xmm4

+        movdqa  xmm4,XMMWORD[((160-128))+rax]

+

+        movdqa  xmm8,xmm14

+        movdqa  xmm6,xmm12

+        pxor    xmm2,XMMWORD[((0-128))+rax]

+        paddd   xmm13,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm10

+

+        movdqa  xmm9,xmm14

+        movdqa  XMMWORD[(112-128)+rax],xmm1

+        paddd   xmm13,xmm1

+        pxor    xmm2,xmm4

+        psrld   xmm9,27

+        pxor    xmm6,xmm11

+        movdqa  xmm7,xmm10

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm2

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm13,xmm6

+        paddd   xmm2,xmm2

+

+        psrld   xmm10,2

+        paddd   xmm13,xmm8

+        por     xmm2,xmm5

+        por     xmm10,xmm7

+        pxor    xmm3,xmm0

+        movdqa  xmm0,XMMWORD[((176-128))+rax]

+

+        movdqa  xmm8,xmm13

+        movdqa  xmm6,xmm11

+        pxor    xmm3,XMMWORD[((16-128))+rax]

+        paddd   xmm12,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm14

+

+        movdqa  xmm9,xmm13

+        paddd   xmm12,xmm2

+        pxor    xmm3,xmm0

+        psrld   xmm9,27

+        pxor    xmm6,xmm10

+        movdqa  xmm7,xmm14

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm3

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm12,xmm6

+        paddd   xmm3,xmm3

+

+        psrld   xmm14,2

+        paddd   xmm12,xmm8

+        por     xmm3,xmm5

+        por     xmm14,xmm7

+        pxor    xmm4,xmm1

+        movdqa  xmm1,XMMWORD[((192-128))+rax]

+

+        movdqa  xmm8,xmm12

+        movdqa  xmm6,xmm10

+        pxor    xmm4,XMMWORD[((32-128))+rax]

+        paddd   xmm11,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm13

+

+        movdqa  xmm9,xmm12

+        paddd   xmm11,xmm3

+        pxor    xmm4,xmm1

+        psrld   xmm9,27

+        pxor    xmm6,xmm14

+        movdqa  xmm7,xmm13

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm4

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm11,xmm6

+        paddd   xmm4,xmm4

+

+        psrld   xmm13,2

+        paddd   xmm11,xmm8

+        por     xmm4,xmm5

+        por     xmm13,xmm7

+        pxor    xmm0,xmm2

+        movdqa  xmm2,XMMWORD[((208-128))+rax]

+

+        movdqa  xmm8,xmm11

+        movdqa  xmm6,xmm14

+        pxor    xmm0,XMMWORD[((48-128))+rax]

+        paddd   xmm10,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm12

+

+        movdqa  xmm9,xmm11

+        paddd   xmm10,xmm4

+        pxor    xmm0,xmm2

+        psrld   xmm9,27

+        pxor    xmm6,xmm13

+        movdqa  xmm7,xmm12

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm0

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm10,xmm6

+        paddd   xmm0,xmm0

+

+        psrld   xmm12,2

+        paddd   xmm10,xmm8

+        por     xmm0,xmm5

+        por     xmm12,xmm7

+        pxor    xmm1,xmm3

+        movdqa  xmm3,XMMWORD[((224-128))+rax]

+

+        movdqa  xmm8,xmm10

+        movdqa  xmm6,xmm13

+        pxor    xmm1,XMMWORD[((64-128))+rax]

+        paddd   xmm14,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm11

+

+        movdqa  xmm9,xmm10

+        paddd   xmm14,xmm0

+        pxor    xmm1,xmm3

+        psrld   xmm9,27

+        pxor    xmm6,xmm12

+        movdqa  xmm7,xmm11

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm1

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm14,xmm6

+        paddd   xmm1,xmm1

+

+        psrld   xmm11,2

+        paddd   xmm14,xmm8

+        por     xmm1,xmm5

+        por     xmm11,xmm7

+        pxor    xmm2,xmm4

+        movdqa  xmm4,XMMWORD[((240-128))+rax]

+

+        movdqa  xmm8,xmm14

+        movdqa  xmm6,xmm12

+        pxor    xmm2,XMMWORD[((80-128))+rax]

+        paddd   xmm13,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm10

+

+        movdqa  xmm9,xmm14

+        paddd   xmm13,xmm1

+        pxor    xmm2,xmm4

+        psrld   xmm9,27

+        pxor    xmm6,xmm11

+        movdqa  xmm7,xmm10

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm2

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm13,xmm6

+        paddd   xmm2,xmm2

+

+        psrld   xmm10,2

+        paddd   xmm13,xmm8

+        por     xmm2,xmm5

+        por     xmm10,xmm7

+        pxor    xmm3,xmm0

+        movdqa  xmm0,XMMWORD[((0-128))+rax]

+

+        movdqa  xmm8,xmm13

+        movdqa  xmm6,xmm11

+        pxor    xmm3,XMMWORD[((96-128))+rax]

+        paddd   xmm12,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm14

+

+        movdqa  xmm9,xmm13

+        paddd   xmm12,xmm2

+        pxor    xmm3,xmm0

+        psrld   xmm9,27

+        pxor    xmm6,xmm10

+        movdqa  xmm7,xmm14

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm3

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm12,xmm6

+        paddd   xmm3,xmm3

+

+        psrld   xmm14,2

+        paddd   xmm12,xmm8

+        por     xmm3,xmm5

+        por     xmm14,xmm7

+        pxor    xmm4,xmm1

+        movdqa  xmm1,XMMWORD[((16-128))+rax]

+

+        movdqa  xmm8,xmm12

+        movdqa  xmm6,xmm10

+        pxor    xmm4,XMMWORD[((112-128))+rax]

+        paddd   xmm11,xmm15

+        pslld   xmm8,5

+        pxor    xmm6,xmm13

+

+        movdqa  xmm9,xmm12

+        paddd   xmm11,xmm3

+        pxor    xmm4,xmm1

+        psrld   xmm9,27

+        pxor    xmm6,xmm14

+        movdqa  xmm7,xmm13

+

+        pslld   xmm7,30

+        movdqa  xmm5,xmm4

+        por     xmm8,xmm9

+        psrld   xmm5,31

+        paddd   xmm11,xmm6

+        paddd   xmm4,xmm4

+

+        psrld   xmm13,2

+        paddd   xmm11,xmm8

+        por     xmm4,xmm5

+        por     xmm13,xmm7

+        movdqa  xmm8,xmm11

+        paddd   xmm10,xmm15

+        movdqa  xmm6,xmm14

+        pslld   xmm8,5

+        pxor    xmm6,xmm12

+

+        movdqa  xmm9,xmm11

+        paddd   xmm10,xmm4

+        psrld   xmm9,27

+        movdqa  xmm7,xmm12

+        pxor    xmm6,xmm13

+

+        pslld   xmm7,30

+        por     xmm8,xmm9

+        paddd   xmm10,xmm6

+

+        psrld   xmm12,2

+        paddd   xmm10,xmm8

+        por     xmm12,xmm7

+        movdqa  xmm0,XMMWORD[rbx]

+        mov     ecx,1

+        cmp     ecx,DWORD[rbx]

+        pxor    xmm8,xmm8

+        cmovge  r8,rbp

+        cmp     ecx,DWORD[4+rbx]

+        movdqa  xmm1,xmm0

+        cmovge  r9,rbp

+        cmp     ecx,DWORD[8+rbx]

+        pcmpgtd xmm1,xmm8

+        cmovge  r10,rbp

+        cmp     ecx,DWORD[12+rbx]

+        paddd   xmm0,xmm1

+        cmovge  r11,rbp

+

+        movdqu  xmm6,XMMWORD[rdi]

+        pand    xmm10,xmm1

+        movdqu  xmm7,XMMWORD[32+rdi]

+        pand    xmm11,xmm1

+        paddd   xmm10,xmm6

+        movdqu  xmm8,XMMWORD[64+rdi]

+        pand    xmm12,xmm1

+        paddd   xmm11,xmm7

+        movdqu  xmm9,XMMWORD[96+rdi]

+        pand    xmm13,xmm1

+        paddd   xmm12,xmm8

+        movdqu  xmm5,XMMWORD[128+rdi]

+        pand    xmm14,xmm1

+        movdqu  XMMWORD[rdi],xmm10

+        paddd   xmm13,xmm9

+        movdqu  XMMWORD[32+rdi],xmm11

+        paddd   xmm14,xmm5

+        movdqu  XMMWORD[64+rdi],xmm12

+        movdqu  XMMWORD[96+rdi],xmm13

+        movdqu  XMMWORD[128+rdi],xmm14

+

+        movdqa  XMMWORD[rbx],xmm0

+        movdqa  xmm5,XMMWORD[96+rbp]

+        movdqa  xmm15,XMMWORD[((-32))+rbp]

+        dec     edx

+        jnz     NEAR $L$oop

+

+        mov     edx,DWORD[280+rsp]

+        lea     rdi,[16+rdi]

+        lea     rsi,[64+rsi]

+        dec     edx

+        jnz     NEAR $L$oop_grande

+

+$L$done:

+        mov     rax,QWORD[272+rsp]

+

+        movaps  xmm6,XMMWORD[((-184))+rax]

+        movaps  xmm7,XMMWORD[((-168))+rax]

+        movaps  xmm8,XMMWORD[((-152))+rax]

+        movaps  xmm9,XMMWORD[((-136))+rax]

+        movaps  xmm10,XMMWORD[((-120))+rax]

+        movaps  xmm11,XMMWORD[((-104))+rax]

+        movaps  xmm12,XMMWORD[((-88))+rax]

+        movaps  xmm13,XMMWORD[((-72))+rax]

+        movaps  xmm14,XMMWORD[((-56))+rax]

+        movaps  xmm15,XMMWORD[((-40))+rax]

+        mov     rbp,QWORD[((-16))+rax]

+

+        mov     rbx,QWORD[((-8))+rax]

+

+        lea     rsp,[rax]

+

+$L$epilogue:

+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue

+        mov     rsi,QWORD[16+rsp]

+        DB      0F3h,0C3h               ;repret

+

+$L$SEH_end_sha1_multi_block:

+

+ALIGN   32

+sha1_multi_block_shaext:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_sha1_multi_block_shaext:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+

+

+

+_shaext_shortcut:

+        mov     rax,rsp

+

+        push    rbx

+

+        push    rbp

+

+        lea     rsp,[((-168))+rsp]

+        movaps  XMMWORD[rsp],xmm6

+        movaps  XMMWORD[16+rsp],xmm7

+        movaps  XMMWORD[32+rsp],xmm8

+        movaps  XMMWORD[48+rsp],xmm9

+        movaps  XMMWORD[(-120)+rax],xmm10

+        movaps  XMMWORD[(-104)+rax],xmm11

+        movaps  XMMWORD[(-88)+rax],xmm12

+        movaps  XMMWORD[(-72)+rax],xmm13

+        movaps  XMMWORD[(-56)+rax],xmm14

+        movaps  XMMWORD[(-40)+rax],xmm15

+        sub     rsp,288

+        shl     edx,1

+        and     rsp,-256

+        lea     rdi,[64+rdi]

+        mov     QWORD[272+rsp],rax

+$L$body_shaext:

+        lea     rbx,[256+rsp]

+        movdqa  xmm3,XMMWORD[((K_XX_XX+128))]

+

+$L$oop_grande_shaext:

+        mov     DWORD[280+rsp],edx

+        xor     edx,edx

+        mov     r8,QWORD[rsi]

+        mov     ecx,DWORD[8+rsi]

+        cmp     ecx,edx

+        cmovg   edx,ecx

+        test    ecx,ecx

+        mov     DWORD[rbx],ecx

+        cmovle  r8,rsp

+        mov     r9,QWORD[16+rsi]

+        mov     ecx,DWORD[24+rsi]

+        cmp     ecx,edx

+        cmovg   edx,ecx

+        test    ecx,ecx

+        mov     DWORD[4+rbx],ecx

+        cmovle  r9,rsp

+        test    edx,edx

+        jz      NEAR $L$done_shaext

+

+        movq    xmm0,QWORD[((0-64))+rdi]

+        movq    xmm4,QWORD[((32-64))+rdi]

+        movq    xmm5,QWORD[((64-64))+rdi]

+        movq    xmm6,QWORD[((96-64))+rdi]

+        movq    xmm7,QWORD[((128-64))+rdi]

+

+        punpckldq       xmm0,xmm4

+        punpckldq       xmm5,xmm6

+

+        movdqa  xmm8,xmm0

+        punpcklqdq      xmm0,xmm5

+        punpckhqdq      xmm8,xmm5

+

+        pshufd  xmm1,xmm7,63

+        pshufd  xmm9,xmm7,127

+        pshufd  xmm0,xmm0,27

+        pshufd  xmm8,xmm8,27

+        jmp     NEAR $L$oop_shaext

+

+ALIGN   32

+$L$oop_shaext:

+        movdqu  xmm4,XMMWORD[r8]

+        movdqu  xmm11,XMMWORD[r9]

+        movdqu  xmm5,XMMWORD[16+r8]

+        movdqu  xmm12,XMMWORD[16+r9]

+        movdqu  xmm6,XMMWORD[32+r8]

+DB      102,15,56,0,227

+        movdqu  xmm13,XMMWORD[32+r9]

+DB      102,68,15,56,0,219

+        movdqu  xmm7,XMMWORD[48+r8]

+        lea     r8,[64+r8]

+DB      102,15,56,0,235

+        movdqu  xmm14,XMMWORD[48+r9]

+        lea     r9,[64+r9]

+DB      102,68,15,56,0,227

+

+        movdqa  XMMWORD[80+rsp],xmm1

+        paddd   xmm1,xmm4

+        movdqa  XMMWORD[112+rsp],xmm9

+        paddd   xmm9,xmm11

+        movdqa  XMMWORD[64+rsp],xmm0

+        movdqa  xmm2,xmm0

+        movdqa  XMMWORD[96+rsp],xmm8

+        movdqa  xmm10,xmm8

+DB      15,58,204,193,0

+DB      15,56,200,213

+DB      69,15,58,204,193,0

+DB      69,15,56,200,212

+DB      102,15,56,0,243

+        prefetcht0      [127+r8]

+DB      15,56,201,229

+DB      102,68,15,56,0,235

+        prefetcht0      [127+r9]

+DB      69,15,56,201,220

+

+DB      102,15,56,0,251

+        movdqa  xmm1,xmm0

+DB      102,68,15,56,0,243

+        movdqa  xmm9,xmm8

+DB      15,58,204,194,0

+DB      15,56,200,206

+DB      69,15,58,204,194,0

+DB      69,15,56,200,205

+        pxor    xmm4,xmm6

+DB      15,56,201,238

+        pxor    xmm11,xmm13

+DB      69,15,56,201,229

+        movdqa  xmm2,xmm0

+        movdqa  xmm10,xmm8

+DB      15,58,204,193,0

+DB      15,56,200,215

+DB      69,15,58,204,193,0

+DB      69,15,56,200,214

+DB      15,56,202,231

+DB      69,15,56,202,222

+        pxor    xmm5,xmm7

+DB      15,56,201,247

+        pxor    xmm12,xmm14

+DB      69,15,56,201,238

+        movdqa  xmm1,xmm0

+        movdqa  xmm9,xmm8

+DB      15,58,204,194,0

+DB      15,56,200,204

+DB      69,15,58,204,194,0

+DB      69,15,56,200,203

+DB      15,56,202,236

+DB      69,15,56,202,227

+        pxor    xmm6,xmm4

+DB      15,56,201,252

+        pxor    xmm13,xmm11

+DB      69,15,56,201,243

+        movdqa  xmm2,xmm0

+        movdqa  xmm10,xmm8

+DB      15,58,204,193,0

+DB      15,56,200,213

+DB      69,15,58,204,193,0

+DB      69,15,56,200,212

+DB      15,56,202,245

+DB      69,15,56,202,236

+        pxor    xmm7,xmm5

+DB      15,56,201,229

+        pxor    xmm14,xmm12

+DB      69,15,56,201,220

+        movdqa  xmm1,xmm0

+        movdqa  xmm9,xmm8

+DB      15,58,204,194,1

+DB      15,56,200,206

+DB      69,15,58,204,194,1

+DB      69,15,56,200,205

+DB      15,56,202,254

+DB      69,15,56,202,245

+        pxor    xmm4,xmm6

+DB      15,56,201,238

+        pxor    xmm11,xmm13

+DB      69,15,56,201,229

+        movdqa  xmm2,xmm0

+        movdqa  xmm10,xmm8

+DB      15,58,204,193,1

+DB      15,56,200,215

+DB      69,15,58,204,193,1

+DB      69,15,56,200,214

+DB      15,56,202,231

+DB      69,15,56,202,222

+        pxor    xmm5,xmm7

+DB      15,56,201,247

+        pxor    xmm12,xmm14

+DB      69,15,56,201,238

+        movdqa  xmm1,xmm0

+        movdqa  xmm9,xmm8

+DB      15,58,204,194,1

+DB      15,56,200,204

+DB      69,15,58,204,194,1

+DB      69,15,56,200,203

+DB      15,56,202,236

+DB      69,15,56,202,227

+        pxor    xmm6,xmm4

+DB      15,56,201,252

+        pxor    xmm13,xmm11

+DB      69,15,56,201,243

+        movdqa  xmm2,xmm0

+        movdqa  xmm10,xmm8

+DB      15,58,204,193,1

+DB      15,56,200,213

+DB      69,15,58,204,193,1

+DB      69,15,56,200,212

+DB      15,56,202,245

+DB      69,15,56,202,236

+        pxor    xmm7,xmm5

+DB      15,56,201,229

+        pxor    xmm14,xmm12

+DB      69,15,56,201,220

+        movdqa  xmm1,xmm0

+        movdqa  xmm9,xmm8

+DB      15,58,204,194,1

+DB      15,56,200,206

+DB      69,15,58,204,194,1

+DB      69,15,56,200,205

+DB      15,56,202,254

+DB      69,15,56,202,245

+        pxor    xmm4,xmm6

+DB      15,56,201,238

+        pxor    xmm11,xmm13

+DB      69,15,56,201,229

+        movdqa  xmm2,xmm0

+        movdqa  xmm10,xmm8

+DB      15,58,204,193,2

+DB      15,56,200,215

+DB      69,15,58,204,193,2

+DB      69,15,56,200,214

+DB      15,56,202,231

+DB      69,15,56,202,222

+        pxor    xmm5,xmm7

+DB      15,56,201,247

+        pxor    xmm12,xmm14

+DB      69,15,56,201,238

+        movdqa  xmm1,xmm0

+        movdqa  xmm9,xmm8

+DB      15,58,204,194,2

+DB      15,56,200,204

+DB      69,15,58,204,194,2

+DB      69,15,56,200,203

+DB      15,56,202,236

+DB      69,15,56,202,227

+        pxor    xmm6,xmm4

+DB      15,56,201,252

+        pxor    xmm13,xmm11

+DB      69,15,56,201,243

+        movdqa  xmm2,xmm0

+        movdqa  xmm10,xmm8

+DB      15,58,204,193,2

+DB      15,56,200,213

+DB      69,15,58,204,193,2

+DB      69,15,56,200,212

+DB      15,56,202,245

+DB      69,15,56,202,236

+        pxor    xmm7,xmm5

+DB      15,56,201,229

+        pxor    xmm14,xmm12

+DB      69,15,56,201,220

+        movdqa  xmm1,xmm0

+        movdqa  xmm9,xmm8

+DB      15,58,204,194,2

+DB      15,56,200,206

+DB      69,15,58,204,194,2

+DB      69,15,56,200,205

+DB      15,56,202,254

+DB      69,15,56,202,245

+        pxor    xmm4,xmm6

+DB      15,56,201,238

+        pxor    xmm11,xmm13

+DB      69,15,56,201,229

+        movdqa  xmm2,xmm0

+        movdqa  xmm10,xmm8

+DB      15,58,204,193,2

+DB      15,56,200,215

+DB      69,15,58,204,193,2

+DB      69,15,56,200,214

+DB      15,56,202,231

+DB      69,15,56,202,222

+        pxor    xmm5,xmm7

+DB      15,56,201,247

+        pxor    xmm12,xmm14

+DB      69,15,56,201,238

+        movdqa  xmm1,xmm0

+        movdqa  xmm9,xmm8

+DB      15,58,204,194,3

+DB      15,56,200,204

+DB      69,15,58,204,194,3

+DB      69,15,56,200,203

+DB      15,56,202,236

+DB      69,15,56,202,227

+        pxor    xmm6,xmm4

+DB      15,56,201,252

+        pxor    xmm13,xmm11

+DB      69,15,56,201,243

+        movdqa  xmm2,xmm0

+        movdqa  xmm10,xmm8

+DB      15,58,204,193,3

+DB      15,56,200,213

+DB      69,15,58,204,193,3

+DB      69,15,56,200,212

+DB      15,56,202,245

+DB      69,15,56,202,236

+        pxor    xmm7,xmm5

+        pxor    xmm14,xmm12

+

+        mov     ecx,1

+        pxor    xmm4,xmm4

+        cmp     ecx,DWORD[rbx]

+        cmovge  r8,rsp

+

+        movdqa  xmm1,xmm0

+        movdqa  xmm9,xmm8

+DB      15,58,204,194,3

+DB      15,56,200,206

+DB      69,15,58,204,194,3

+DB      69,15,56,200,205

+DB      15,56,202,254

+DB      69,15,56,202,245

+

+        cmp     ecx,DWORD[4+rbx]

+        cmovge  r9,rsp

+        movq    xmm6,QWORD[rbx]

+

+        movdqa  xmm2,xmm0

+        movdqa  xmm10,xmm8

+DB      15,58,204,193,3

+DB      15,56,200,215

+DB      69,15,58,204,193,3

+DB      69,15,56,200,214

+

+        pshufd  xmm11,xmm6,0x00

+        pshufd  xmm12,xmm6,0x55

+        movdqa  xmm7,xmm6

+        pcmpgtd xmm11,xmm4

+        pcmpgtd xmm12,xmm4

+

+        movdqa  xmm1,xmm0

+        movdqa  xmm9,xmm8

+DB      15,58,204,194,3

+DB      15,56,200,204

+DB      69,15,58,204,194,3

+DB      68,15,56,200,204

+

+        pcmpgtd xmm7,xmm4

+        pand    xmm0,xmm11

+        pand    xmm1,xmm11

+        pand    xmm8,xmm12

+        pand    xmm9,xmm12

+        paddd   xmm6,xmm7

+

+        paddd   xmm0,XMMWORD[64+rsp]

+        paddd   xmm1,XMMWORD[80+rsp]

+        paddd   xmm8,XMMWORD[96+rsp]

+        paddd   xmm9,XMMWORD[112+rsp]

+

+        movq    QWORD[rbx],xmm6

+        dec     edx

+        jnz     NEAR $L$oop_shaext

+

+        mov     edx,DWORD[280+rsp]

+

+        pshufd  xmm0,xmm0,27

+        pshufd  xmm8,xmm8,27

+

+        movdqa  xmm6,xmm0

+        punpckldq       xmm0,xmm8

+        punpckhdq       xmm6,xmm8

+        punpckhdq       xmm1,xmm9

+        movq    QWORD[(0-64)+rdi],xmm0

+        psrldq  xmm0,8

+        movq    QWORD[(64-64)+rdi],xmm6

+        psrldq  xmm6,8

+        movq    QWORD[(32-64)+rdi],xmm0

+        psrldq  xmm1,8

+        movq    QWORD[(96-64)+rdi],xmm6

+        movq    QWORD[(128-64)+rdi],xmm1

+

+        lea     rdi,[8+rdi]

+        lea     rsi,[32+rsi]

+        dec     edx

+        jnz     NEAR $L$oop_grande_shaext

+

+$L$done_shaext:

+

+        movaps  xmm6,XMMWORD[((-184))+rax]

+        movaps  xmm7,XMMWORD[((-168))+rax]

+        movaps  xmm8,XMMWORD[((-152))+rax]

+        movaps  xmm9,XMMWORD[((-136))+rax]

+        movaps  xmm10,XMMWORD[((-120))+rax]

+        movaps  xmm11,XMMWORD[((-104))+rax]

+        movaps  xmm12,XMMWORD[((-88))+rax]

+        movaps  xmm13,XMMWORD[((-72))+rax]

+        movaps  xmm14,XMMWORD[((-56))+rax]

+        movaps  xmm15,XMMWORD[((-40))+rax]

+        mov     rbp,QWORD[((-16))+rax]

+

+        mov     rbx,QWORD[((-8))+rax]

+

+        lea     rsp,[rax]

+

+$L$epilogue_shaext:

+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue

+        mov     rsi,QWORD[16+rsp]

+        DB      0F3h,0C3h               ;repret

+

+$L$SEH_end_sha1_multi_block_shaext:

+

+ALIGN   256

+        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999

+        DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999

+K_XX_XX:

+        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,109,117,108,116,105,45,98,108,111,99,107

+DB      32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120

+DB      56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77

+DB      83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110

+DB      115,115,108,46,111,114,103,62,0

+EXTERN  __imp_RtlVirtualUnwind

+

+ALIGN   16

+se_handler:

+        push    rsi

+        push    rdi

+        push    rbx

+        push    rbp

+        push    r12

+        push    r13

+        push    r14

+        push    r15

+        pushfq

+        sub     rsp,64

+

+        mov     rax,QWORD[120+r8]

+        mov     rbx,QWORD[248+r8]

+

+        mov     rsi,QWORD[8+r9]

+        mov     r11,QWORD[56+r9]

+

+        mov     r10d,DWORD[r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jb      NEAR $L$in_prologue

+

+        mov     rax,QWORD[152+r8]

+

+        mov     r10d,DWORD[4+r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jae     NEAR $L$in_prologue

+

+        mov     rax,QWORD[272+rax]

+

+        mov     rbx,QWORD[((-8))+rax]

+        mov     rbp,QWORD[((-16))+rax]

+        mov     QWORD[144+r8],rbx

+        mov     QWORD[160+r8],rbp

+

+        lea     rsi,[((-24-160))+rax]

+        lea     rdi,[512+r8]

+        mov     ecx,20

+        DD      0xa548f3fc

+

+$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[40+r9]

+        mov     rsi,r8

+        mov     ecx,154

+        DD      0xa548f3fc

+

+        mov     rsi,r9

+        xor     rcx,rcx

+        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

+        popfq

+        pop     r15

+        pop     r14

+        pop     r13

+        pop     r12

+        pop     rbp

+        pop     rbx

+        pop     rdi

+        pop     rsi

+        DB      0F3h,0C3h               ;repret

+

+section .pdata rdata align=4

+ALIGN   4

+        DD      $L$SEH_begin_sha1_multi_block wrt ..imagebase

+        DD      $L$SEH_end_sha1_multi_block wrt ..imagebase

+        DD      $L$SEH_info_sha1_multi_block wrt ..imagebase

+        DD      $L$SEH_begin_sha1_multi_block_shaext wrt ..imagebase

+        DD      $L$SEH_end_sha1_multi_block_shaext wrt ..imagebase

+        DD      $L$SEH_info_sha1_multi_block_shaext wrt ..imagebase

+section .xdata rdata align=8

+ALIGN   8

+$L$SEH_info_sha1_multi_block:

+DB      9,0,0,0

+        DD      se_handler wrt ..imagebase

+        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase

+$L$SEH_info_sha1_multi_block_shaext:

+DB      9,0,0,0

+        DD      se_handler wrt ..imagebase

+        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
wrt ..imagebase

diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-
x86_64.nasm

b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
new file mode 100644
index 0000000000..c6d68d348f
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha1-x86_64.nasm
@@ -0,0 +1,2884 @@
+; WARNING: do not edit!

+; Generated from openssl/crypto/sha/asm/sha1-x86_64.pl

+;

+; Copyright 2006-2020 The OpenSSL Project Authors. All Rights
Reserved.


+;

+; Licensed under the OpenSSL license (the "License").  You may not use

+; this file except in compliance with the License.  You can obtain a
copy


+; in the file LICENSE in the source distribution or at

+; https://www.openssl.org/source/license.html

+

+default rel

+%define XMMWORD

+%define YMMWORD

+%define ZMMWORD

+section .text code align=64

+

+EXTERN  OPENSSL_ia32cap_P

+

+global  sha1_block_data_order

+

+ALIGN   16

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

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+

+

+

+        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      NEAR $L$ialu

+        test    r10d,536870912

+        jnz     NEAR _shaext_shortcut

+        jmp     NEAR _ssse3_shortcut

+

+ALIGN   16

+$L$ialu:

+        mov     rax,rsp

+

+        push    rbx

+

+        push    rbp

+

+        push    r12

+

+        push    r13

+

+        push    r14

+

+        mov     r8,rdi

+        sub     rsp,72

+        mov     r9,rsi

+        and     rsp,-64

+        mov     r10,rdx

+        mov     QWORD[64+rsp],rax

+

+$L$prologue:

+

+        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[r9]

+        bswap   edx

+        mov     ebp,DWORD[4+r9]

+        mov     eax,r12d

+        mov     DWORD[rsp],edx

+        mov     ecx,esi

+        bswap   ebp

+        xor     eax,r11d

+        rol     ecx,5

+        and     eax,edi

+        lea     r13d,[1518500249+r13*1+rdx]

+        add     r13d,ecx

+        xor     eax,r12d

+        rol     edi,30

+        add     r13d,eax

+        mov     r14d,DWORD[8+r9]

+        mov     eax,r11d

+        mov     DWORD[4+rsp],ebp

+        mov     ecx,r13d

+        bswap   r14d

+        xor     eax,edi

+        rol     ecx,5

+        and     eax,esi

+        lea     r12d,[1518500249+r12*1+rbp]

+        add     r12d,ecx

+        xor     eax,r11d

+        rol     esi,30

+        add     r12d,eax

+        mov     edx,DWORD[12+r9]

+        mov     eax,edi

+        mov     DWORD[8+rsp],r14d

+        mov     ecx,r12d

+        bswap   edx

+        xor     eax,esi

+        rol     ecx,5

+        and     eax,r13d

+        lea     r11d,[1518500249+r11*1+r14]

+        add     r11d,ecx

+        xor     eax,edi

+        rol     r13d,30

+        add     r11d,eax

+        mov     ebp,DWORD[16+r9]

+        mov     eax,esi

+        mov     DWORD[12+rsp],edx

+        mov     ecx,r11d

+        bswap   ebp

+        xor     eax,r13d

+        rol     ecx,5

+        and     eax,r12d

+        lea     edi,[1518500249+rdi*1+rdx]

+        add     edi,ecx

+        xor     eax,esi

+        rol     r12d,30

+        add     edi,eax

+        mov     r14d,DWORD[20+r9]

+        mov     eax,r13d

+        mov     DWORD[16+rsp],ebp

+        mov     ecx,edi

+        bswap   r14d

+        xor     eax,r12d

+        rol     ecx,5

+        and     eax,r11d

+        lea     esi,[1518500249+rsi*1+rbp]

+        add     esi,ecx

+        xor     eax,r13d

+        rol     r11d,30

+        add     esi,eax

+        mov     edx,DWORD[24+r9]

+        mov     eax,r12d

+        mov     DWORD[20+rsp],r14d

+        mov     ecx,esi

+        bswap   edx

+        xor     eax,r11d

+        rol     ecx,5

+        and     eax,edi

+        lea     r13d,[1518500249+r13*1+r14]

+        add     r13d,ecx

+        xor     eax,r12d

+        rol     edi,30

+        add     r13d,eax

+        mov     ebp,DWORD[28+r9]

+        mov     eax,r11d

+        mov     DWORD[24+rsp],edx

+        mov     ecx,r13d

+        bswap   ebp

+        xor     eax,edi

+        rol     ecx,5

+        and     eax,esi

+        lea     r12d,[1518500249+r12*1+rdx]

+        add     r12d,ecx

+        xor     eax,r11d

+        rol     esi,30

+        add     r12d,eax

+        mov     r14d,DWORD[32+r9]

+        mov     eax,edi

+        mov     DWORD[28+rsp],ebp

+        mov     ecx,r12d

+        bswap   r14d

+        xor     eax,esi

+        rol     ecx,5

+        and     eax,r13d

+        lea     r11d,[1518500249+r11*1+rbp]

+        add     r11d,ecx

+        xor     eax,edi

+        rol     r13d,30

+        add     r11d,eax

+        mov     edx,DWORD[36+r9]

+        mov     eax,esi

+        mov     DWORD[32+rsp],r14d

+        mov     ecx,r11d

+        bswap   edx

+        xor     eax,r13d

+        rol     ecx,5

+        and     eax,r12d

+        lea     edi,[1518500249+rdi*1+r14]

+        add     edi,ecx

+        xor     eax,esi

+        rol     r12d,30

+        add     edi,eax

+        mov     ebp,DWORD[40+r9]

+        mov     eax,r13d

+        mov     DWORD[36+rsp],edx

+        mov     ecx,edi

+        bswap   ebp

+        xor     eax,r12d

+        rol     ecx,5

+        and     eax,r11d

+        lea     esi,[1518500249+rsi*1+rdx]

+        add     esi,ecx

+        xor     eax,r13d

+        rol     r11d,30

+        add     esi,eax

+        mov     r14d,DWORD[44+r9]

+        mov     eax,r12d

+        mov     DWORD[40+rsp],ebp

+        mov     ecx,esi

+        bswap   r14d

+        xor     eax,r11d

+        rol     ecx,5

+        and     eax,edi

+        lea     r13d,[1518500249+r13*1+rbp]

+        add     r13d,ecx

+        xor     eax,r12d

+        rol     edi,30

+        add     r13d,eax

+        mov     edx,DWORD[48+r9]

+        mov     eax,r11d

+        mov     DWORD[44+rsp],r14d

+        mov     ecx,r13d

+        bswap   edx

+        xor     eax,edi

+        rol     ecx,5

+        and     eax,esi

+        lea     r12d,[1518500249+r12*1+r14]

+        add     r12d,ecx

+        xor     eax,r11d

+        rol     esi,30

+        add     r12d,eax

+        mov     ebp,DWORD[52+r9]

+        mov     eax,edi

+        mov     DWORD[48+rsp],edx

+        mov     ecx,r12d

+        bswap   ebp

+        xor     eax,esi

+        rol     ecx,5

+        and     eax,r13d

+        lea     r11d,[1518500249+r11*1+rdx]

+        add     r11d,ecx

+        xor     eax,edi

+        rol     r13d,30

+        add     r11d,eax

+        mov     r14d,DWORD[56+r9]

+        mov     eax,esi

+        mov     DWORD[52+rsp],ebp

+        mov     ecx,r11d

+        bswap   r14d

+        xor     eax,r13d

+        rol     ecx,5

+        and     eax,r12d

+        lea     edi,[1518500249+rdi*1+rbp]

+        add     edi,ecx

+        xor     eax,esi

+        rol     r12d,30

+        add     edi,eax

+        mov     edx,DWORD[60+r9]

+        mov     eax,r13d

+        mov     DWORD[56+rsp],r14d

+        mov     ecx,edi

+        bswap   edx

+        xor     eax,r12d

+        rol     ecx,5

+        and     eax,r11d

+        lea     esi,[1518500249+rsi*1+r14]

+        add     esi,ecx

+        xor     eax,r13d

+        rol     r11d,30

+        add     esi,eax

+        xor     ebp,DWORD[rsp]

+        mov     eax,r12d

+        mov     DWORD[60+rsp],edx

+        mov     ecx,esi

+        xor     ebp,DWORD[8+rsp]

+        xor     eax,r11d

+        rol     ecx,5

+        xor     ebp,DWORD[32+rsp]

+        and     eax,edi

+        lea     r13d,[1518500249+r13*1+rdx]

+        rol     edi,30

+        xor     eax,r12d

+        add     r13d,ecx

+        rol     ebp,1

+        add     r13d,eax

+        xor     r14d,DWORD[4+rsp]

+        mov     eax,r11d

+        mov     DWORD[rsp],ebp

+        mov     ecx,r13d

+        xor     r14d,DWORD[12+rsp]

+        xor     eax,edi

+        rol     ecx,5

+        xor     r14d,DWORD[36+rsp]

+        and     eax,esi

+        lea     r12d,[1518500249+r12*1+rbp]

+        rol     esi,30

+        xor     eax,r11d

+        add     r12d,ecx

+        rol     r14d,1

+        add     r12d,eax

+        xor     edx,DWORD[8+rsp]

+        mov     eax,edi

+        mov     DWORD[4+rsp],r14d

+        mov     ecx,r12d

+        xor     edx,DWORD[16+rsp]

+        xor     eax,esi

+        rol     ecx,5

+        xor     edx,DWORD[40+rsp]

+        and     eax,r13d

+        lea     r11d,[1518500249+r11*1+r14]

+        rol     r13d,30

+        xor     eax,edi

+        add     r11d,ecx

+        rol     edx,1

+        add     r11d,eax

+        xor     ebp,DWORD[12+rsp]

+        mov     eax,esi

+        mov     DWORD[8+rsp],edx

+        mov     ecx,r11d

+        xor     ebp,DWORD[20+rsp]

+        xor     eax,r13d

+        rol     ecx,5

+        xor     ebp,DWORD[44+rsp]

+        and     eax,r12d

+        lea     edi,[1518500249+rdi*1+rdx]

+        rol     r12d,30

+        xor     eax,esi

+        add     edi,ecx

+        rol     ebp,1

+        add     edi,eax

+        xor     r14d,DWORD[16+rsp]

+        mov     eax,r13d

+        mov     DWORD[12+rsp],ebp

+        mov     ecx,edi

+        xor     r14d,DWORD[24+rsp]

+        xor     eax,r12d

+        rol     ecx,5

+        xor     r14d,DWORD[48+rsp]

+        and     eax,r11d

+        lea     esi,[1518500249+rsi*1+rbp]

+        rol     r11d,30

+        xor     eax,r13d

+        add     esi,ecx

+        rol     r14d,1

+        add     esi,eax

+        xor     edx,DWORD[20+rsp]

+        mov     eax,edi

+        mov     DWORD[16+rsp],r14d

+        mov     ecx,esi

+        xor     edx,DWORD[28+rsp]

+        xor     eax,r12d

+        rol     ecx,5

+        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[24+rsp]

+        mov     eax,esi

+        mov     DWORD[20+rsp],edx

+        mov     ecx,r13d

+        xor     ebp,DWORD[32+rsp]

+        xor     eax,r11d

+        rol     ecx,5

+        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[28+rsp]

+        mov     eax,r13d

+        mov     DWORD[24+rsp],ebp

+        mov     ecx,r12d

+        xor     r14d,DWORD[36+rsp]

+        xor     eax,edi

+        rol     ecx,5

+        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[32+rsp]

+        mov     eax,r12d

+        mov     DWORD[28+rsp],r14d

+        mov     ecx,r11d

+        xor     edx,DWORD[40+rsp]

+        xor     eax,esi

+        rol     ecx,5

+        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[36+rsp]

+        mov     eax,r11d

+        mov     DWORD[32+rsp],edx

+        mov     ecx,edi

+        xor     ebp,DWORD[44+rsp]

+        xor     eax,r13d

+        rol     ecx,5

+        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[40+rsp]

+        mov     eax,edi

+        mov     DWORD[36+rsp],ebp

+        mov     ecx,esi

+        xor     r14d,DWORD[48+rsp]

+        xor     eax,r12d

+        rol     ecx,5

+        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[44+rsp]

+        mov     eax,esi

+        mov     DWORD[40+rsp],r14d

+        mov     ecx,r13d

+        xor     edx,DWORD[52+rsp]

+        xor     eax,r11d

+        rol     ecx,5

+        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[48+rsp]

+        mov     eax,r13d

+        mov     DWORD[44+rsp],edx

+        mov     ecx,r12d

+        xor     ebp,DWORD[56+rsp]

+        xor     eax,edi

+        rol     ecx,5

+        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[52+rsp]

+        mov     eax,r12d

+        mov     DWORD[48+rsp],ebp

+        mov     ecx,r11d

+        xor     r14d,DWORD[60+rsp]

+        xor     eax,esi

+        rol     ecx,5

+        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[56+rsp]

+        mov     eax,r11d

+        mov     DWORD[52+rsp],r14d

+        mov     ecx,edi

+        xor     edx,DWORD[rsp]

+        xor     eax,r13d

+        rol     ecx,5

+        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[60+rsp]

+        mov     eax,edi

+        mov     DWORD[56+rsp],edx

+        mov     ecx,esi

+        xor     ebp,DWORD[4+rsp]

+        xor     eax,r12d

+        rol     ecx,5

+        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[rsp]

+        mov     eax,esi

+        mov     DWORD[60+rsp],ebp

+        mov     ecx,r13d

+        xor     r14d,DWORD[8+rsp]

+        xor     eax,r11d

+        rol     ecx,5

+        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[4+rsp]

+        mov     eax,r13d

+        mov     DWORD[rsp],r14d

+        mov     ecx,r12d

+        xor     edx,DWORD[12+rsp]

+        xor     eax,edi

+        rol     ecx,5

+        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[8+rsp]

+        mov     eax,r12d

+        mov     DWORD[4+rsp],edx

+        mov     ecx,r11d

+        xor     ebp,DWORD[16+rsp]

+        xor     eax,esi

+        rol     ecx,5

+        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[12+rsp]

+        mov     eax,r11d

+        mov     DWORD[8+rsp],ebp

+        mov     ecx,edi

+        xor     r14d,DWORD[20+rsp]

+        xor     eax,r13d

+        rol     ecx,5

+        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[16+rsp]

+        mov     eax,edi

+        mov     DWORD[12+rsp],r14d

+        mov     ecx,esi

+        xor     edx,DWORD[24+rsp]

+        xor     eax,r12d

+        rol     ecx,5

+        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[20+rsp]

+        mov     eax,esi

+        mov     DWORD[16+rsp],edx

+        mov     ecx,r13d

+        xor     ebp,DWORD[28+rsp]

+        xor     eax,r11d

+        rol     ecx,5

+        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[24+rsp]

+        mov     eax,r13d

+        mov     DWORD[20+rsp],ebp

+        mov     ecx,r12d

+        xor     r14d,DWORD[32+rsp]

+        xor     eax,edi

+        rol     ecx,5

+        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[28+rsp]

+        mov     eax,r12d

+        mov     DWORD[24+rsp],r14d

+        mov     ecx,r11d

+        xor     edx,DWORD[36+rsp]

+        xor     eax,esi

+        rol     ecx,5

+        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[32+rsp]

+        mov     eax,r11d

+        mov     DWORD[28+rsp],edx

+        mov     ecx,edi

+        xor     ebp,DWORD[40+rsp]

+        xor     eax,r13d

+        rol     ecx,5

+        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[36+rsp]

+        mov     eax,r12d

+        mov     DWORD[32+rsp],ebp

+        mov     ebx,r12d

+        xor     r14d,DWORD[44+rsp]

+        and     eax,r11d

+        mov     ecx,esi

+        xor     r14d,DWORD[4+rsp]

+        lea     r13d,[((-1894007588))+r13*1+rbp]

+        xor     ebx,r11d

+        rol     ecx,5

+        add     r13d,eax

+        rol     r14d,1

+        and     ebx,edi

+        add     r13d,ecx

+        rol     edi,30

+        add     r13d,ebx

+        xor     edx,DWORD[40+rsp]

+        mov     eax,r11d

+        mov     DWORD[36+rsp],r14d

+        mov     ebx,r11d

+        xor     edx,DWORD[48+rsp]

+        and     eax,edi

+        mov     ecx,r13d

+        xor     edx,DWORD[8+rsp]

+        lea     r12d,[((-1894007588))+r12*1+r14]

+        xor     ebx,edi

+        rol     ecx,5

+        add     r12d,eax

+        rol     edx,1

+        and     ebx,esi

+        add     r12d,ecx

+        rol     esi,30

+        add     r12d,ebx

+        xor     ebp,DWORD[44+rsp]

+        mov     eax,edi

+        mov     DWORD[40+rsp],edx

+        mov     ebx,edi

+        xor     ebp,DWORD[52+rsp]

+        and     eax,esi

+        mov     ecx,r12d

+        xor     ebp,DWORD[12+rsp]

+        lea     r11d,[((-1894007588))+r11*1+rdx]

+        xor     ebx,esi

+        rol     ecx,5

+        add     r11d,eax

+        rol     ebp,1

+        and     ebx,r13d

+        add     r11d,ecx

+        rol     r13d,30

+        add     r11d,ebx

+        xor     r14d,DWORD[48+rsp]

+        mov     eax,esi

+        mov     DWORD[44+rsp],ebp

+        mov     ebx,esi

+        xor     r14d,DWORD[56+rsp]

+        and     eax,r13d

+        mov     ecx,r11d

+        xor     r14d,DWORD[16+rsp]

+        lea     edi,[((-1894007588))+rdi*1+rbp]

+        xor     ebx,r13d

+        rol     ecx,5

+        add     edi,eax

+        rol     r14d,1

+        and     ebx,r12d

+        add     edi,ecx

+        rol     r12d,30

+        add     edi,ebx

+        xor     edx,DWORD[52+rsp]

+        mov     eax,r13d

+        mov     DWORD[48+rsp],r14d

+        mov     ebx,r13d

+        xor     edx,DWORD[60+rsp]

+        and     eax,r12d

+        mov     ecx,edi

+        xor     edx,DWORD[20+rsp]

+        lea     esi,[((-1894007588))+rsi*1+r14]

+        xor     ebx,r12d

+        rol     ecx,5

+        add     esi,eax

+        rol     edx,1

+        and     ebx,r11d

+        add     esi,ecx

+        rol     r11d,30

+        add     esi,ebx

+        xor     ebp,DWORD[56+rsp]

+        mov     eax,r12d

+        mov     DWORD[52+rsp],edx

+        mov     ebx,r12d

+        xor     ebp,DWORD[rsp]

+        and     eax,r11d

+        mov     ecx,esi

+        xor     ebp,DWORD[24+rsp]

+        lea     r13d,[((-1894007588))+r13*1+rdx]

+        xor     ebx,r11d

+        rol     ecx,5

+        add     r13d,eax

+        rol     ebp,1

+        and     ebx,edi

+        add     r13d,ecx

+        rol     edi,30

+        add     r13d,ebx

+        xor     r14d,DWORD[60+rsp]

+        mov     eax,r11d

+        mov     DWORD[56+rsp],ebp

+        mov     ebx,r11d

+        xor     r14d,DWORD[4+rsp]

+        and     eax,edi

+        mov     ecx,r13d

+        xor     r14d,DWORD[28+rsp]

+        lea     r12d,[((-1894007588))+r12*1+rbp]

+        xor     ebx,edi

+        rol     ecx,5

+        add     r12d,eax

+        rol     r14d,1

+        and     ebx,esi

+        add     r12d,ecx

+        rol     esi,30

+        add     r12d,ebx

+        xor     edx,DWORD[rsp]

+        mov     eax,edi

+        mov     DWORD[60+rsp],r14d

+        mov     ebx,edi

+        xor     edx,DWORD[8+rsp]

+        and     eax,esi

+        mov     ecx,r12d

+        xor     edx,DWORD[32+rsp]

+        lea     r11d,[((-1894007588))+r11*1+r14]

+        xor     ebx,esi

+        rol     ecx,5

+        add     r11d,eax

+        rol     edx,1

+        and     ebx,r13d

+        add     r11d,ecx

+        rol     r13d,30

+        add     r11d,ebx

+        xor     ebp,DWORD[4+rsp]

+        mov     eax,esi

+        mov     DWORD[rsp],edx

+        mov     ebx,esi

+        xor     ebp,DWORD[12+rsp]

+        and     eax,r13d

+        mov     ecx,r11d

+        xor     ebp,DWORD[36+rsp]

+        lea     edi,[((-1894007588))+rdi*1+rdx]

+        xor     ebx,r13d

+        rol     ecx,5

+        add     edi,eax

+        rol     ebp,1

+        and     ebx,r12d

+        add     edi,ecx

+        rol     r12d,30

+        add     edi,ebx

+        xor     r14d,DWORD[8+rsp]

+        mov     eax,r13d

+        mov     DWORD[4+rsp],ebp

+        mov     ebx,r13d

+        xor     r14d,DWORD[16+rsp]

+        and     eax,r12d

+        mov     ecx,edi

+        xor     r14d,DWORD[40+rsp]

+        lea     esi,[((-1894007588))+rsi*1+rbp]

+        xor     ebx,r12d

+        rol     ecx,5

+        add     esi,eax

+        rol     r14d,1

+        and     ebx,r11d

+        add     esi,ecx

+        rol     r11d,30

+        add     esi,ebx

+        xor     edx,DWORD[12+rsp]

+        mov     eax,r12d

+        mov     DWORD[8+rsp],r14d

+        mov     ebx,r12d

+        xor     edx,DWORD[20+rsp]

+        and     eax,r11d

+        mov     ecx,esi

+        xor     edx,DWORD[44+rsp]

+        lea     r13d,[((-1894007588))+r13*1+r14]

+        xor     ebx,r11d

+        rol     ecx,5

+        add     r13d,eax

+        rol     edx,1

+        and     ebx,edi

+        add     r13d,ecx

+        rol     edi,30

+        add     r13d,ebx

+        xor     ebp,DWORD[16+rsp]

+        mov     eax,r11d

+        mov     DWORD[12+rsp],edx

+        mov     ebx,r11d

+        xor     ebp,DWORD[24+rsp]

+        and     eax,edi

+        mov     ecx,r13d

+        xor     ebp,DWORD[48+rsp]

+        lea     r12d,[((-1894007588))+r12*1+rdx]

+        xor     ebx,edi

+        rol     ecx,5

+        add     r12d,eax

+        rol     ebp,1

+        and     ebx,esi

+        add     r12d,ecx

+        rol     esi,30

+        add     r12d,ebx

+        xor     r14d,DWORD[20+rsp]

+        mov     eax,edi

+        mov     DWORD[16+rsp],ebp

+        mov     ebx,edi

+        xor     r14d,DWORD[28+rsp]

+        and     eax,esi

+        mov     ecx,r12d

+        xor     r14d,DWORD[52+rsp]

+        lea     r11d,[((-1894007588))+r11*1+rbp]

+        xor     ebx,esi

+        rol     ecx,5

+        add     r11d,eax

+        rol     r14d,1

+        and     ebx,r13d

+        add     r11d,ecx

+        rol     r13d,30

+        add     r11d,ebx

+        xor     edx,DWORD[24+rsp]

+        mov     eax,esi

+        mov     DWORD[20+rsp],r14d

+        mov     ebx,esi

+        xor     edx,DWORD[32+rsp]

+        and     eax,r13d

+        mov     ecx,r11d

+        xor     edx,DWORD[56+rsp]

+        lea     edi,[((-1894007588))+rdi*1+r14]

+        xor     ebx,r13d

+        rol     ecx,5

+        add     edi,eax

+        rol     edx,1

+        and     ebx,r12d

+        add     edi,ecx

+        rol     r12d,30

+        add     edi,ebx

+        xor     ebp,DWORD[28+rsp]

+        mov     eax,r13d

+        mov     DWORD[24+rsp],edx

+        mov     ebx,r13d

+        xor     ebp,DWORD[36+rsp]

+        and     eax,r12d

+        mov     ecx,edi

+        xor     ebp,DWORD[60+rsp]

+        lea     esi,[((-1894007588))+rsi*1+rdx]

+        xor     ebx,r12d

+        rol     ecx,5

+        add     esi,eax

+        rol     ebp,1

+        and     ebx,r11d

+        add     esi,ecx

+        rol     r11d,30

+        add     esi,ebx

+        xor     r14d,DWORD[32+rsp]

+        mov     eax,r12d

+        mov     DWORD[28+rsp],ebp

+        mov     ebx,r12d

+        xor     r14d,DWORD[40+rsp]

+        and     eax,r11d

+        mov     ecx,esi

+        xor     r14d,DWORD[rsp]

+        lea     r13d,[((-1894007588))+r13*1+rbp]

+        xor     ebx,r11d

+        rol     ecx,5

+        add     r13d,eax

+        rol     r14d,1

+        and     ebx,edi

+        add     r13d,ecx

+        rol     edi,30

+        add     r13d,ebx

+        xor     edx,DWORD[36+rsp]

+        mov     eax,r11d

+        mov     DWORD[32+rsp],r14d

+        mov     ebx,r11d

+        xor     edx,DWORD[44+rsp]

+        and     eax,edi

+        mov     ecx,r13d

+        xor     edx,DWORD[4+rsp]

+        lea     r12d,[((-1894007588))+r12*1+r14]

+        xor     ebx,edi

+        rol     ecx,5

+        add     r12d,eax

+        rol     edx,1

+        and     ebx,esi

+        add     r12d,ecx

+        rol     esi,30

+        add     r12d,ebx

+        xor     ebp,DWORD[40+rsp]

+        mov     eax,edi

+        mov     DWORD[36+rsp],edx

+        mov     ebx,edi

+        xor     ebp,DWORD[48+rsp]

+        and     eax,esi

+        mov     ecx,r12d

+        xor     ebp,DWORD[8+rsp]

+        lea     r11d,[((-1894007588))+r11*1+rdx]

+        xor     ebx,esi

+        rol     ecx,5

+        add     r11d,eax

+        rol     ebp,1

+        and     ebx,r13d

+        add     r11d,ecx

+        rol     r13d,30

+        add     r11d,ebx

+        xor     r14d,DWORD[44+rsp]

+        mov     eax,esi

+        mov     DWORD[40+rsp],ebp

+        mov     ebx,esi

+        xor     r14d,DWORD[52+rsp]

+        and     eax,r13d

+        mov     ecx,r11d

+        xor     r14d,DWORD[12+rsp]

+        lea     edi,[((-1894007588))+rdi*1+rbp]

+        xor     ebx,r13d

+        rol     ecx,5

+        add     edi,eax

+        rol     r14d,1

+        and     ebx,r12d

+        add     edi,ecx

+        rol     r12d,30

+        add     edi,ebx

+        xor     edx,DWORD[48+rsp]

+        mov     eax,r13d

+        mov     DWORD[44+rsp],r14d

+        mov     ebx,r13d

+        xor     edx,DWORD[56+rsp]

+        and     eax,r12d

+        mov     ecx,edi

+        xor     edx,DWORD[16+rsp]

+        lea     esi,[((-1894007588))+rsi*1+r14]

+        xor     ebx,r12d

+        rol     ecx,5

+        add     esi,eax

+        rol     edx,1

+        and     ebx,r11d

+        add     esi,ecx

+        rol     r11d,30

+        add     esi,ebx

+        xor     ebp,DWORD[52+rsp]

+        mov     eax,edi

+        mov     DWORD[48+rsp],edx

+        mov     ecx,esi

+        xor     ebp,DWORD[60+rsp]

+        xor     eax,r12d

+        rol     ecx,5

+        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[56+rsp]

+        mov     eax,esi

+        mov     DWORD[52+rsp],ebp

+        mov     ecx,r13d

+        xor     r14d,DWORD[rsp]

+        xor     eax,r11d

+        rol     ecx,5

+        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[60+rsp]

+        mov     eax,r13d

+        mov     DWORD[56+rsp],r14d

+        mov     ecx,r12d

+        xor     edx,DWORD[4+rsp]

+        xor     eax,edi

+        rol     ecx,5

+        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[rsp]

+        mov     eax,r12d

+        mov     DWORD[60+rsp],edx

+        mov     ecx,r11d

+        xor     ebp,DWORD[8+rsp]

+        xor     eax,esi

+        rol     ecx,5

+        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[4+rsp]

+        mov     eax,r11d

+        mov     DWORD[rsp],ebp

+        mov     ecx,edi

+        xor     r14d,DWORD[12+rsp]

+        xor     eax,r13d

+        rol     ecx,5

+        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[8+rsp]

+        mov     eax,edi

+        mov     DWORD[4+rsp],r14d

+        mov     ecx,esi

+        xor     edx,DWORD[16+rsp]

+        xor     eax,r12d

+        rol     ecx,5

+        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[12+rsp]

+        mov     eax,esi

+        mov     DWORD[8+rsp],edx

+        mov     ecx,r13d

+        xor     ebp,DWORD[20+rsp]

+        xor     eax,r11d

+        rol     ecx,5

+        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[16+rsp]

+        mov     eax,r13d

+        mov     DWORD[12+rsp],ebp

+        mov     ecx,r12d

+        xor     r14d,DWORD[24+rsp]

+        xor     eax,edi

+        rol     ecx,5

+        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[20+rsp]

+        mov     eax,r12d

+        mov     DWORD[16+rsp],r14d

+        mov     ecx,r11d

+        xor     edx,DWORD[28+rsp]

+        xor     eax,esi

+        rol     ecx,5

+        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[24+rsp]

+        mov     eax,r11d

+        mov     DWORD[20+rsp],edx

+        mov     ecx,edi

+        xor     ebp,DWORD[32+rsp]

+        xor     eax,r13d

+        rol     ecx,5

+        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[28+rsp]

+        mov     eax,edi

+        mov     DWORD[24+rsp],ebp

+        mov     ecx,esi

+        xor     r14d,DWORD[36+rsp]

+        xor     eax,r12d

+        rol     ecx,5

+        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[32+rsp]

+        mov     eax,esi

+        mov     DWORD[28+rsp],r14d

+        mov     ecx,r13d

+        xor     edx,DWORD[40+rsp]

+        xor     eax,r11d

+        rol     ecx,5

+        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[36+rsp]

+        mov     eax,r13d

+

+        mov     ecx,r12d

+        xor     ebp,DWORD[44+rsp]

+        xor     eax,edi

+        rol     ecx,5

+        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[40+rsp]

+        mov     eax,r12d

+

+        mov     ecx,r11d

+        xor     r14d,DWORD[48+rsp]

+        xor     eax,esi

+        rol     ecx,5

+        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[44+rsp]

+        mov     eax,r11d

+

+        mov     ecx,edi

+        xor     edx,DWORD[52+rsp]

+        xor     eax,r13d

+        rol     ecx,5

+        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[48+rsp]

+        mov     eax,edi

+

+        mov     ecx,esi

+        xor     ebp,DWORD[56+rsp]

+        xor     eax,r12d

+        rol     ecx,5

+        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[52+rsp]

+        mov     eax,esi

+

+        mov     ecx,r13d

+        xor     r14d,DWORD[60+rsp]

+        xor     eax,r11d

+        rol     ecx,5

+        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[56+rsp]

+        mov     eax,r13d

+

+        mov     ecx,r12d

+        xor     edx,DWORD[rsp]

+        xor     eax,edi

+        rol     ecx,5

+        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[60+rsp]

+        mov     eax,r12d

+

+        mov     ecx,r11d

+        xor     ebp,DWORD[4+rsp]

+        xor     eax,esi

+        rol     ecx,5

+        xor     ebp,DWORD[28+rsp]

+        lea     edi,[((-899497514))+rdi*1+rdx]

+        xor     eax,r13d

+        add     edi,ecx

+        rol     r12d,30

+        add     edi,eax

+        rol     ebp,1

+        mov     eax,r11d

+        mov     ecx,edi

+        xor     eax,r13d

+        lea     esi,[((-899497514))+rsi*1+rbp]

+        rol     ecx,5

+        xor     eax,r12d

+        add     esi,ecx

+        rol     r11d,30

+        add     esi,eax

+        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,[64+r9]

+        jnz     NEAR $L$loop

+

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

+

+ALIGN   32

+sha1_block_data_order_shaext:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_sha1_block_data_order_shaext:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+

+

+_shaext_shortcut:

+

+        lea     rsp,[((-72))+rsp]

+        movaps  XMMWORD[(-8-64)+rax],xmm6

+        movaps  XMMWORD[(-8-48)+rax],xmm7

+        movaps  XMMWORD[(-8-32)+rax],xmm8

+        movaps  XMMWORD[(-8-16)+rax],xmm9

+$L$prologue_shaext:

+        movdqu  xmm0,XMMWORD[rdi]

+        movd    xmm1,DWORD[16+rdi]

+        movdqa  xmm3,XMMWORD[((K_XX_XX+160))]

+

+        movdqu  xmm4,XMMWORD[rsi]

+        pshufd  xmm0,xmm0,27

+        movdqu  xmm5,XMMWORD[16+rsi]

+        pshufd  xmm1,xmm1,27

+        movdqu  xmm6,XMMWORD[32+rsi]

+DB      102,15,56,0,227

+        movdqu  xmm7,XMMWORD[48+rsi]

+DB      102,15,56,0,235

+DB      102,15,56,0,243

+        movdqa  xmm9,xmm1

+DB      102,15,56,0,251

+        jmp     NEAR $L$oop_shaext

+

+ALIGN   16

+$L$oop_shaext:

+        dec     rdx

+        lea     r8,[64+rsi]

+        paddd   xmm1,xmm4

+        cmovne  rsi,r8

+        movdqa  xmm8,xmm0

+DB      15,56,201,229

+        movdqa  xmm2,xmm0

+DB      15,58,204,193,0

+DB      15,56,200,213

+        pxor    xmm4,xmm6

+DB      15,56,201,238

+DB      15,56,202,231

+

+        movdqa  xmm1,xmm0

+DB      15,58,204,194,0

+DB      15,56,200,206

+        pxor    xmm5,xmm7

+DB      15,56,202,236

+DB      15,56,201,247

+        movdqa  xmm2,xmm0

+DB      15,58,204,193,0

+DB      15,56,200,215

+        pxor    xmm6,xmm4

+DB      15,56,201,252

+DB      15,56,202,245

+

+        movdqa  xmm1,xmm0

+DB      15,58,204,194,0

+DB      15,56,200,204

+        pxor    xmm7,xmm5

+DB      15,56,202,254

+DB      15,56,201,229

+        movdqa  xmm2,xmm0

+DB      15,58,204,193,0

+DB      15,56,200,213

+        pxor    xmm4,xmm6

+DB      15,56,201,238

+DB      15,56,202,231

+

+        movdqa  xmm1,xmm0

+DB      15,58,204,194,1

+DB      15,56,200,206

+        pxor    xmm5,xmm7

+DB      15,56,202,236

+DB      15,56,201,247

+        movdqa  xmm2,xmm0

+DB      15,58,204,193,1

+DB      15,56,200,215

+        pxor    xmm6,xmm4

+DB      15,56,201,252

+DB      15,56,202,245

+

+        movdqa  xmm1,xmm0

+DB      15,58,204,194,1

+DB      15,56,200,204

+        pxor    xmm7,xmm5

+DB      15,56,202,254

+DB      15,56,201,229

+        movdqa  xmm2,xmm0

+DB      15,58,204,193,1

+DB      15,56,200,213

+        pxor    xmm4,xmm6

+DB      15,56,201,238

+DB      15,56,202,231

+

+        movdqa  xmm1,xmm0

+DB      15,58,204,194,1

+DB      15,56,200,206

+        pxor    xmm5,xmm7

+DB      15,56,202,236

+DB      15,56,201,247

+        movdqa  xmm2,xmm0

+DB      15,58,204,193,2

+DB      15,56,200,215

+        pxor    xmm6,xmm4

+DB      15,56,201,252

+DB      15,56,202,245

+

+        movdqa  xmm1,xmm0

+DB      15,58,204,194,2

+DB      15,56,200,204

+        pxor    xmm7,xmm5

+DB      15,56,202,254

+DB      15,56,201,229

+        movdqa  xmm2,xmm0

+DB      15,58,204,193,2

+DB      15,56,200,213

+        pxor    xmm4,xmm6

+DB      15,56,201,238

+DB      15,56,202,231

+

+        movdqa  xmm1,xmm0

+DB      15,58,204,194,2

+DB      15,56,200,206

+        pxor    xmm5,xmm7

+DB      15,56,202,236

+DB      15,56,201,247

+        movdqa  xmm2,xmm0

+DB      15,58,204,193,2

+DB      15,56,200,215

+        pxor    xmm6,xmm4

+DB      15,56,201,252

+DB      15,56,202,245

+

+        movdqa  xmm1,xmm0

+DB      15,58,204,194,3

+DB      15,56,200,204

+        pxor    xmm7,xmm5

+DB      15,56,202,254

+        movdqu  xmm4,XMMWORD[rsi]

+        movdqa  xmm2,xmm0

+DB      15,58,204,193,3

+DB      15,56,200,213

+        movdqu  xmm5,XMMWORD[16+rsi]

+DB      102,15,56,0,227

+

+        movdqa  xmm1,xmm0

+DB      15,58,204,194,3

+DB      15,56,200,206

+        movdqu  xmm6,XMMWORD[32+rsi]

+DB      102,15,56,0,235

+

+        movdqa  xmm2,xmm0

+DB      15,58,204,193,3

+DB      15,56,200,215

+        movdqu  xmm7,XMMWORD[48+rsi]

+DB      102,15,56,0,243

+

+        movdqa  xmm1,xmm0

+DB      15,58,204,194,3

+DB      65,15,56,200,201

+DB      102,15,56,0,251

+

+        paddd   xmm0,xmm8

+        movdqa  xmm9,xmm1

+

+        jnz     NEAR $L$oop_shaext

+

+        pshufd  xmm0,xmm0,27

+        pshufd  xmm1,xmm1,27

+        movdqu  XMMWORD[rdi],xmm0

+        movd    DWORD[16+rdi],xmm1

+        movaps  xmm6,XMMWORD[((-8-64))+rax]

+        movaps  xmm7,XMMWORD[((-8-48))+rax]

+        movaps  xmm8,XMMWORD[((-8-32))+rax]

+        movaps  xmm9,XMMWORD[((-8-16))+rax]

+        mov     rsp,rax

+$L$epilogue_shaext:

+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue

+        mov     rsi,QWORD[16+rsp]

+        DB      0F3h,0C3h               ;repret

+

+$L$SEH_end_sha1_block_data_order_shaext:

+

+ALIGN   16

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

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+

+

+_ssse3_shortcut:

+

+        mov     r11,rsp

+

+        push    rbx

+

+        push    rbp

+

+        push    r12

+

+        push    r13

+

+        push    r14

+

+        lea     rsp,[((-160))+rsp]

+        movaps  XMMWORD[(-40-96)+r11],xmm6

+        movaps  XMMWORD[(-40-80)+r11],xmm7

+        movaps  XMMWORD[(-40-64)+r11],xmm8

+        movaps  XMMWORD[(-40-48)+r11],xmm9

+        movaps  XMMWORD[(-40-32)+r11],xmm10

+        movaps  XMMWORD[(-40-16)+r11],xmm11

+$L$prologue_ssse3:

+        and     rsp,-64

+        mov     r8,rdi

+        mov     r9,rsi

+        mov     r10,rdx

+

+        shl     r10,6

+        add     r10,r9

+        lea     r14,[((K_XX_XX+64))]

+

+        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[16+r8]

+        mov     edi,ecx

+        xor     edi,edx

+        and     esi,edi

+

+        movdqa  xmm6,XMMWORD[64+r14]

+        movdqa  xmm9,XMMWORD[((-64))+r14]

+        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

+        add     r9,64

+        paddd   xmm0,xmm9

+DB      102,15,56,0,222

+        paddd   xmm1,xmm9

+        paddd   xmm2,xmm9

+        movdqa  XMMWORD[rsp],xmm0

+        psubd   xmm0,xmm9

+        movdqa  XMMWORD[16+rsp],xmm1

+        psubd   xmm1,xmm9

+        movdqa  XMMWORD[32+rsp],xmm2

+        psubd   xmm2,xmm9

+        jmp     NEAR $L$oop_ssse3

+ALIGN   16

+$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[rsp]

+        punpcklqdq      xmm4,xmm1

+        xor     ebx,ecx

+        rol     eax,5

+        add     ebp,esi

+        psrldq  xmm8,4

+        and     edi,ebx

+        xor     ebx,ecx

+        pxor    xmm4,xmm0

+        add     ebp,eax

+        ror     eax,7

+        pxor    xmm8,xmm2

+        xor     edi,ecx

+        mov     esi,ebp

+        add     edx,DWORD[4+rsp]

+        pxor    xmm4,xmm8

+        xor     eax,ebx

+        rol     ebp,5

+        movdqa  XMMWORD[48+rsp],xmm9

+        add     edx,edi

+        and     esi,eax

+        movdqa  xmm10,xmm4

+        xor     eax,ebx

+        add     edx,ebp

+        ror     ebp,7

+        movdqa  xmm8,xmm4

+        xor     esi,ebx

+        pslldq  xmm10,12

+        paddd   xmm4,xmm4

+        mov     edi,edx

+        add     ecx,DWORD[8+rsp]

+        psrld   xmm8,31

+        xor     ebp,eax

+        rol     edx,5

+        add     ecx,esi

+        movdqa  xmm9,xmm10

+        and     edi,ebp

+        xor     ebp,eax

+        psrld   xmm10,30

+        add     ecx,edx

+        ror     edx,7

+        por     xmm4,xmm8

+        xor     edi,eax

+        mov     esi,ecx

+        add     ebx,DWORD[12+rsp]

+        pslld   xmm9,2

+        pxor    xmm4,xmm10

+        xor     edx,ebp

+        movdqa  xmm10,XMMWORD[((-64))+r14]

+        rol     ecx,5

+        add     ebx,edi

+        and     esi,edx

+        pxor    xmm4,xmm9

+        xor     edx,ebp

+        add     ebx,ecx

+        ror     ecx,7

+        pshufd  xmm5,xmm1,238

+        xor     esi,ebp

+        movdqa  xmm9,xmm4

+        paddd   xmm10,xmm4

+        mov     edi,ebx

+        add     eax,DWORD[16+rsp]

+        punpcklqdq      xmm5,xmm2

+        xor     ecx,edx

+        rol     ebx,5

+        add     eax,esi

+        psrldq  xmm9,4

+        and     edi,ecx

+        xor     ecx,edx

+        pxor    xmm5,xmm1

+        add     eax,ebx

+        ror     ebx,7

+        pxor    xmm9,xmm3

+        xor     edi,edx

+        mov     esi,eax

+        add     ebp,DWORD[20+rsp]

+        pxor    xmm5,xmm9

+        xor     ebx,ecx

+        rol     eax,5

+        movdqa  XMMWORD[rsp],xmm10

+        add     ebp,edi

+        and     esi,ebx

+        movdqa  xmm8,xmm5

+        xor     ebx,ecx

+        add     ebp,eax

+        ror     eax,7

+        movdqa  xmm9,xmm5

+        xor     esi,ecx

+        pslldq  xmm8,12

+        paddd   xmm5,xmm5

+        mov     edi,ebp

+        add     edx,DWORD[24+rsp]

+        psrld   xmm9,31

+        xor     eax,ebx

+        rol     ebp,5

+        add     edx,esi

+        movdqa  xmm10,xmm8

+        and     edi,eax

+        xor     eax,ebx

+        psrld   xmm8,30

+        add     edx,ebp

+        ror     ebp,7

+        por     xmm5,xmm9

+        xor     edi,ebx

+        mov     esi,edx

+        add     ecx,DWORD[28+rsp]

+        pslld   xmm10,2

+        pxor    xmm5,xmm8

+        xor     ebp,eax

+        movdqa  xmm8,XMMWORD[((-32))+r14]

+        rol     edx,5

+        add     ecx,edi

+        and     esi,ebp

+        pxor    xmm5,xmm10

+        xor     ebp,eax

+        add     ecx,edx

+        ror     edx,7

+        pshufd  xmm6,xmm2,238

+        xor     esi,eax

+        movdqa  xmm10,xmm5

+        paddd   xmm8,xmm5

+        mov     edi,ecx

+        add     ebx,DWORD[32+rsp]

+        punpcklqdq      xmm6,xmm3

+        xor     edx,ebp

+        rol     ecx,5

+        add     ebx,esi

+        psrldq  xmm10,4

+        and     edi,edx

+        xor     edx,ebp

+        pxor    xmm6,xmm2

+        add     ebx,ecx

+        ror     ecx,7

+        pxor    xmm10,xmm4

+        xor     edi,ebp

+        mov     esi,ebx

+        add     eax,DWORD[36+rsp]

+        pxor    xmm6,xmm10

+        xor     ecx,edx

+        rol     ebx,5

+        movdqa  XMMWORD[16+rsp],xmm8

+        add     eax,edi

+        and     esi,ecx

+        movdqa  xmm9,xmm6

+        xor     ecx,edx

+        add     eax,ebx

+        ror     ebx,7

+        movdqa  xmm10,xmm6

+        xor     esi,edx

+        pslldq  xmm9,12

+        paddd   xmm6,xmm6

+        mov     edi,eax

+        add     ebp,DWORD[40+rsp]

+        psrld   xmm10,31

+        xor     ebx,ecx

+        rol     eax,5

+        add     ebp,esi

+        movdqa  xmm8,xmm9

+        and     edi,ebx

+        xor     ebx,ecx

+        psrld   xmm9,30

+        add     ebp,eax

+        ror     eax,7

+        por     xmm6,xmm10

+        xor     edi,ecx

+        mov     esi,ebp

+        add     edx,DWORD[44+rsp]

+        pslld   xmm8,2

+        pxor    xmm6,xmm9

+        xor     eax,ebx

+        movdqa  xmm9,XMMWORD[((-32))+r14]

+        rol     ebp,5

+        add     edx,edi

+        and     esi,eax

+        pxor    xmm6,xmm8

+        xor     eax,ebx

+        add     edx,ebp

+        ror     ebp,7

+        pshufd  xmm7,xmm3,238

+        xor     esi,ebx

+        movdqa  xmm8,xmm6

+        paddd   xmm9,xmm6

+        mov     edi,edx

+        add     ecx,DWORD[48+rsp]

+        punpcklqdq      xmm7,xmm4

+        xor     ebp,eax

+        rol     edx,5

+        add     ecx,esi

+        psrldq  xmm8,4

+        and     edi,ebp

+        xor     ebp,eax

+        pxor    xmm7,xmm3

+        add     ecx,edx

+        ror     edx,7

+        pxor    xmm8,xmm5

+        xor     edi,eax

+        mov     esi,ecx

+        add     ebx,DWORD[52+rsp]

+        pxor    xmm7,xmm8

+        xor     edx,ebp

+        rol     ecx,5

+        movdqa  XMMWORD[32+rsp],xmm9

+        add     ebx,edi

+        and     esi,edx

+        movdqa  xmm10,xmm7

+        xor     edx,ebp

+        add     ebx,ecx

+        ror     ecx,7

+        movdqa  xmm8,xmm7

+        xor     esi,ebp

+        pslldq  xmm10,12

+        paddd   xmm7,xmm7

+        mov     edi,ebx

+        add     eax,DWORD[56+rsp]

+        psrld   xmm8,31

+        xor     ecx,edx

+        rol     ebx,5

+        add     eax,esi

+        movdqa  xmm9,xmm10

+        and     edi,ecx

+        xor     ecx,edx

+        psrld   xmm10,30

+        add     eax,ebx

+        ror     ebx,7

+        por     xmm7,xmm8

+        xor     edi,edx

+        mov     esi,eax

+        add     ebp,DWORD[60+rsp]

+        pslld   xmm9,2

+        pxor    xmm7,xmm10

+        xor     ebx,ecx

+        movdqa  xmm10,XMMWORD[((-32))+r14]

+        rol     eax,5

+        add     ebp,edi

+        and     esi,ebx

+        pxor    xmm7,xmm9

+        pshufd  xmm9,xmm6,238

+        xor     ebx,ecx

+        add     ebp,eax

+        ror     eax,7

+        pxor    xmm0,xmm4

+        xor     esi,ecx

+        mov     edi,ebp

+        add     edx,DWORD[rsp]

+        punpcklqdq      xmm9,xmm7

+        xor     eax,ebx

+        rol     ebp,5

+        pxor    xmm0,xmm1

+        add     edx,esi

+        and     edi,eax

+        movdqa  xmm8,xmm10

+        xor     eax,ebx

+        paddd   xmm10,xmm7

+        add     edx,ebp

+        pxor    xmm0,xmm9

+        ror     ebp,7

+        xor     edi,ebx

+        mov     esi,edx

+        add     ecx,DWORD[4+rsp]

+        movdqa  xmm9,xmm0

+        xor     ebp,eax

+        rol     edx,5

+        movdqa  XMMWORD[48+rsp],xmm10

+        add     ecx,edi

+        and     esi,ebp

+        xor     ebp,eax

+        pslld   xmm0,2

+        add     ecx,edx

+        ror     edx,7

+        psrld   xmm9,30

+        xor     esi,eax

+        mov     edi,ecx

+        add     ebx,DWORD[8+rsp]

+        por     xmm0,xmm9

+        xor     edx,ebp

+        rol     ecx,5

+        pshufd  xmm10,xmm7,238

+        add     ebx,esi

+        and     edi,edx

+        xor     edx,ebp

+        add     ebx,ecx

+        add     eax,DWORD[12+rsp]

+        xor     edi,ebp

+        mov     esi,ebx

+        rol     ebx,5

+        add     eax,edi

+        xor     esi,edx

+        ror     ecx,7

+        add     eax,ebx

+        pxor    xmm1,xmm5

+        add     ebp,DWORD[16+rsp]

+        xor     esi,ecx

+        punpcklqdq      xmm10,xmm0

+        mov     edi,eax

+        rol     eax,5

+        pxor    xmm1,xmm2

+        add     ebp,esi

+        xor     edi,ecx

+        movdqa  xmm9,xmm8

+        ror     ebx,7

+        paddd   xmm8,xmm0

+        add     ebp,eax

+        pxor    xmm1,xmm10

+        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[rsp],xmm8

+        ror     eax,7

+        add     edx,ebp

+        add     ecx,DWORD[24+rsp]

+        pslld   xmm1,2

+        xor     esi,eax

+        mov     edi,edx

+        psrld   xmm10,30

+        rol     edx,5

+        add     ecx,esi

+        xor     edi,eax

+        ror     ebp,7

+        por     xmm1,xmm10

+        add     ecx,edx

+        add     ebx,DWORD[28+rsp]

+        pshufd  xmm8,xmm0,238

+        xor     edi,ebp

+        mov     esi,ecx

+        rol     ecx,5

+        add     ebx,edi

+        xor     esi,ebp

+        ror     edx,7

+        add     ebx,ecx

+        pxor    xmm2,xmm6

+        add     eax,DWORD[32+rsp]

+        xor     esi,edx

+        punpcklqdq      xmm8,xmm1

+        mov     edi,ebx

+        rol     ebx,5

+        pxor    xmm2,xmm3

+        add     eax,esi

+        xor     edi,edx

+        movdqa  xmm10,XMMWORD[r14]

+        ror     ecx,7

+        paddd   xmm9,xmm1

+        add     eax,ebx

+        pxor    xmm2,xmm8

+        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[16+rsp],xmm9

+        ror     ebx,7

+        add     ebp,eax

+        add     edx,DWORD[40+rsp]

+        pslld   xmm2,2

+        xor     esi,ebx

+        mov     edi,ebp

+        psrld   xmm8,30

+        rol     ebp,5

+        add     edx,esi

+        xor     edi,ebx

+        ror     eax,7

+        por     xmm2,xmm8

+        add     edx,ebp

+        add     ecx,DWORD[44+rsp]

+        pshufd  xmm9,xmm1,238

+        xor     edi,eax

+        mov     esi,edx

+        rol     edx,5

+        add     ecx,edi

+        xor     esi,eax

+        ror     ebp,7

+        add     ecx,edx

+        pxor    xmm3,xmm7

+        add     ebx,DWORD[48+rsp]

+        xor     esi,ebp

+        punpcklqdq      xmm9,xmm2

+        mov     edi,ecx

+        rol     ecx,5

+        pxor    xmm3,xmm4

+        add     ebx,esi

+        xor     edi,ebp

+        movdqa  xmm8,xmm10

+        ror     edx,7

+        paddd   xmm10,xmm2

+        add     ebx,ecx

+        pxor    xmm3,xmm9

+        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[32+rsp],xmm10

+        ror     ecx,7

+        add     eax,ebx

+        add     ebp,DWORD[56+rsp]

+        pslld   xmm3,2

+        xor     esi,ecx

+        mov     edi,eax

+        psrld   xmm9,30

+        rol     eax,5

+        add     ebp,esi

+        xor     edi,ecx

+        ror     ebx,7

+        por     xmm3,xmm9

+        add     ebp,eax

+        add     edx,DWORD[60+rsp]

+        pshufd  xmm10,xmm2,238

+        xor     edi,ebx

+        mov     esi,ebp

+        rol     ebp,5

+        add     edx,edi

+        xor     esi,ebx

+        ror     eax,7

+        add     edx,ebp

+        pxor    xmm4,xmm0

+        add     ecx,DWORD[rsp]

+        xor     esi,eax

+        punpcklqdq      xmm10,xmm3

+        mov     edi,edx

+        rol     edx,5

+        pxor    xmm4,xmm5

+        add     ecx,esi

+        xor     edi,eax

+        movdqa  xmm9,xmm8

+        ror     ebp,7

+        paddd   xmm8,xmm3

+        add     ecx,edx

+        pxor    xmm4,xmm10

+        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[48+rsp],xmm8

+        ror     edx,7

+        add     ebx,ecx

+        add     eax,DWORD[8+rsp]

+        pslld   xmm4,2

+        xor     esi,edx

+        mov     edi,ebx

+        psrld   xmm10,30

+        rol     ebx,5

+        add     eax,esi

+        xor     edi,edx

+        ror     ecx,7

+        por     xmm4,xmm10

+        add     eax,ebx

+        add     ebp,DWORD[12+rsp]

+        pshufd  xmm8,xmm3,238

+        xor     edi,ecx

+        mov     esi,eax

+        rol     eax,5

+        add     ebp,edi

+        xor     esi,ecx

+        ror     ebx,7

+        add     ebp,eax

+        pxor    xmm5,xmm1

+        add     edx,DWORD[16+rsp]

+        xor     esi,ebx

+        punpcklqdq      xmm8,xmm4

+        mov     edi,ebp

+        rol     ebp,5

+        pxor    xmm5,xmm6

+        add     edx,esi

+        xor     edi,ebx

+        movdqa  xmm10,xmm9

+        ror     eax,7

+        paddd   xmm9,xmm4

+        add     edx,ebp

+        pxor    xmm5,xmm8

+        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[rsp],xmm9

+        ror     ebp,7

+        add     ecx,edx

+        add     ebx,DWORD[24+rsp]

+        pslld   xmm5,2

+        xor     esi,ebp

+        mov     edi,ecx

+        psrld   xmm8,30

+        rol     ecx,5

+        add     ebx,esi

+        xor     edi,ebp

+        ror     edx,7

+        por     xmm5,xmm8

+        add     ebx,ecx

+        add     eax,DWORD[28+rsp]

+        pshufd  xmm9,xmm4,238

+        ror     ecx,7

+        mov     esi,ebx

+        xor     edi,edx

+        rol     ebx,5

+        add     eax,edi

+        xor     esi,ecx

+        xor     ecx,edx

+        add     eax,ebx

+        pxor    xmm6,xmm2

+        add     ebp,DWORD[32+rsp]

+        and     esi,ecx

+        xor     ecx,edx

+        ror     ebx,7

+        punpcklqdq      xmm9,xmm5

+        mov     edi,eax

+        xor     esi,ecx

+        pxor    xmm6,xmm7

+        rol     eax,5

+        add     ebp,esi

+        movdqa  xmm8,xmm10

+        xor     edi,ebx

+        paddd   xmm10,xmm5

+        xor     ebx,ecx

+        pxor    xmm6,xmm9

+        add     ebp,eax

+        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[16+rsp],xmm10

+        rol     ebp,5

+        add     edx,edi

+        xor     esi,eax

+        pslld   xmm6,2

+        xor     eax,ebx

+        add     edx,ebp

+        psrld   xmm9,30

+        add     ecx,DWORD[40+rsp]

+        and     esi,eax

+        xor     eax,ebx

+        por     xmm6,xmm9

+        ror     ebp,7

+        mov     edi,edx

+        xor     esi,eax

+        rol     edx,5

+        pshufd  xmm10,xmm5,238

+        add     ecx,esi

+        xor     edi,ebp

+        xor     ebp,eax

+        add     ecx,edx

+        add     ebx,DWORD[44+rsp]

+        and     edi,ebp

+        xor     ebp,eax

+        ror     edx,7

+        mov     esi,ecx

+        xor     edi,ebp

+        rol     ecx,5

+        add     ebx,edi

+        xor     esi,edx

+        xor     edx,ebp

+        add     ebx,ecx

+        pxor    xmm7,xmm3

+        add     eax,DWORD[48+rsp]

+        and     esi,edx

+        xor     edx,ebp

+        ror     ecx,7

+        punpcklqdq      xmm10,xmm6

+        mov     edi,ebx

+        xor     esi,edx

+        pxor    xmm7,xmm0

+        rol     ebx,5

+        add     eax,esi

+        movdqa  xmm9,XMMWORD[32+r14]

+        xor     edi,ecx

+        paddd   xmm8,xmm6

+        xor     ecx,edx

+        pxor    xmm7,xmm10

+        add     eax,ebx

+        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[32+rsp],xmm8

+        rol     eax,5

+        add     ebp,edi

+        xor     esi,ebx

+        pslld   xmm7,2

+        xor     ebx,ecx

+        add     ebp,eax

+        psrld   xmm10,30

+        add     edx,DWORD[56+rsp]

+        and     esi,ebx

+        xor     ebx,ecx

+        por     xmm7,xmm10

+        ror     eax,7

+        mov     edi,ebp

+        xor     esi,ebx

+        rol     ebp,5

+        pshufd  xmm8,xmm6,238

+        add     edx,esi

+        xor     edi,eax

+        xor     eax,ebx

+        add     edx,ebp

+        add     ecx,DWORD[60+rsp]

+        and     edi,eax

+        xor     eax,ebx

+        ror     ebp,7

+        mov     esi,edx

+        xor     edi,eax

+        rol     edx,5

+        add     ecx,edi

+        xor     esi,ebp

+        xor     ebp,eax

+        add     ecx,edx

+        pxor    xmm0,xmm4

+        add     ebx,DWORD[rsp]

+        and     esi,ebp

+        xor     ebp,eax

+        ror     edx,7

+        punpcklqdq      xmm8,xmm7

+        mov     edi,ecx

+        xor     esi,ebp

+        pxor    xmm0,xmm1

+        rol     ecx,5

+        add     ebx,esi

+        movdqa  xmm10,xmm9

+        xor     edi,edx

+        paddd   xmm9,xmm7

+        xor     edx,ebp

+        pxor    xmm0,xmm8

+        add     ebx,ecx

+        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[48+rsp],xmm9

+        rol     ebx,5

+        add     eax,edi

+        xor     esi,ecx

+        pslld   xmm0,2

+        xor     ecx,edx

+        add     eax,ebx

+        psrld   xmm8,30

+        add     ebp,DWORD[8+rsp]

+        and     esi,ecx

+        xor     ecx,edx

+        por     xmm0,xmm8

+        ror     ebx,7

+        mov     edi,eax

+        xor     esi,ecx

+        rol     eax,5

+        pshufd  xmm9,xmm7,238

+        add     ebp,esi

+        xor     edi,ebx

+        xor     ebx,ecx

+        add     ebp,eax

+        add     edx,DWORD[12+rsp]

+        and     edi,ebx

+        xor     ebx,ecx

+        ror     eax,7

+        mov     esi,ebp

+        xor     edi,ebx

+        rol     ebp,5

+        add     edx,edi

+        xor     esi,eax

+        xor     eax,ebx

+        add     edx,ebp

+        pxor    xmm1,xmm5

+        add     ecx,DWORD[16+rsp]

+        and     esi,eax

+        xor     eax,ebx

+        ror     ebp,7

+        punpcklqdq      xmm9,xmm0

+        mov     edi,edx

+        xor     esi,eax

+        pxor    xmm1,xmm2

+        rol     edx,5

+        add     ecx,esi

+        movdqa  xmm8,xmm10

+        xor     edi,ebp

+        paddd   xmm10,xmm0

+        xor     ebp,eax

+        pxor    xmm1,xmm9

+        add     ecx,edx

+        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[rsp],xmm10

+        rol     ecx,5

+        add     ebx,edi

+        xor     esi,edx

+        pslld   xmm1,2

+        xor     edx,ebp

+        add     ebx,ecx

+        psrld   xmm9,30

+        add     eax,DWORD[24+rsp]

+        and     esi,edx

+        xor     edx,ebp

+        por     xmm1,xmm9

+        ror     ecx,7

+        mov     edi,ebx

+        xor     esi,edx

+        rol     ebx,5

+        pshufd  xmm10,xmm0,238

+        add     eax,esi

+        xor     edi,ecx

+        xor     ecx,edx

+        add     eax,ebx

+        add     ebp,DWORD[28+rsp]

+        and     edi,ecx

+        xor     ecx,edx

+        ror     ebx,7

+        mov     esi,eax

+        xor     edi,ecx

+        rol     eax,5

+        add     ebp,edi

+        xor     esi,ebx

+        xor     ebx,ecx

+        add     ebp,eax

+        pxor    xmm2,xmm6

+        add     edx,DWORD[32+rsp]

+        and     esi,ebx

+        xor     ebx,ecx

+        ror     eax,7

+        punpcklqdq      xmm10,xmm1

+        mov     edi,ebp

+        xor     esi,ebx

+        pxor    xmm2,xmm3

+        rol     ebp,5

+        add     edx,esi

+        movdqa  xmm9,xmm8

+        xor     edi,eax

+        paddd   xmm8,xmm1

+        xor     eax,ebx

+        pxor    xmm2,xmm10

+        add     edx,ebp

+        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[16+rsp],xmm8

+        rol     edx,5

+        add     ecx,edi

+        xor     esi,ebp

+        pslld   xmm2,2

+        xor     ebp,eax

+        add     ecx,edx

+        psrld   xmm10,30

+        add     ebx,DWORD[40+rsp]

+        and     esi,ebp

+        xor     ebp,eax

+        por     xmm2,xmm10

+        ror     edx,7

+        mov     edi,ecx

+        xor     esi,ebp

+        rol     ecx,5

+        pshufd  xmm8,xmm1,238

+        add     ebx,esi

+        xor     edi,edx

+        xor     edx,ebp

+        add     ebx,ecx

+        add     eax,DWORD[44+rsp]

+        and     edi,edx

+        xor     edx,ebp

+        ror     ecx,7

+        mov     esi,ebx

+        xor     edi,edx

+        rol     ebx,5

+        add     eax,edi

+        xor     esi,edx

+        add     eax,ebx

+        pxor    xmm3,xmm7

+        add     ebp,DWORD[48+rsp]

+        xor     esi,ecx

+        punpcklqdq      xmm8,xmm2

+        mov     edi,eax

+        rol     eax,5

+        pxor    xmm3,xmm4

+        add     ebp,esi

+        xor     edi,ecx

+        movdqa  xmm10,xmm9

+        ror     ebx,7

+        paddd   xmm9,xmm2

+        add     ebp,eax

+        pxor    xmm3,xmm8

+        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[32+rsp],xmm9

+        ror     eax,7

+        add     edx,ebp

+        add     ecx,DWORD[56+rsp]

+        pslld   xmm3,2

+        xor     esi,eax

+        mov     edi,edx

+        psrld   xmm8,30

+        rol     edx,5

+        add     ecx,esi

+        xor     edi,eax

+        ror     ebp,7

+        por     xmm3,xmm8

+        add     ecx,edx

+        add     ebx,DWORD[60+rsp]

+        xor     edi,ebp

+        mov     esi,ecx

+        rol     ecx,5

+        add     ebx,edi

+        xor     esi,ebp

+        ror     edx,7

+        add     ebx,ecx

+        add     eax,DWORD[rsp]

+        xor     esi,edx

+        mov     edi,ebx

+        rol     ebx,5

+        paddd   xmm10,xmm3

+        add     eax,esi

+        xor     edi,edx

+        movdqa  XMMWORD[48+rsp],xmm10

+        ror     ecx,7

+        add     eax,ebx

+        add     ebp,DWORD[4+rsp]

+        xor     edi,ecx

+        mov     esi,eax

+        rol     eax,5

+        add     ebp,edi

+        xor     esi,ecx

+        ror     ebx,7

+        add     ebp,eax

+        add     edx,DWORD[8+rsp]

+        xor     esi,ebx

+        mov     edi,ebp

+        rol     ebp,5

+        add     edx,esi

+        xor     edi,ebx

+        ror     eax,7

+        add     edx,ebp

+        add     ecx,DWORD[12+rsp]

+        xor     edi,eax

+        mov     esi,edx

+        rol     edx,5

+        add     ecx,edi

+        xor     esi,eax

+        ror     ebp,7

+        add     ecx,edx

+        cmp     r9,r10

+        je      NEAR $L$done_ssse3

+        movdqa  xmm6,XMMWORD[64+r14]

+        movdqa  xmm9,XMMWORD[((-64))+r14]

+        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[16+rsp]

+        xor     esi,ebp

+        mov     edi,ecx

+DB      102,15,56,0,206

+        rol     ecx,5

+        add     ebx,esi

+        xor     edi,ebp

+        ror     edx,7

+        paddd   xmm0,xmm9

+        add     ebx,ecx

+        add     eax,DWORD[20+rsp]

+        xor     edi,edx

+        mov     esi,ebx

+        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[24+rsp]

+        xor     esi,ecx

+        mov     edi,eax

+        rol     eax,5

+        add     ebp,esi

+        xor     edi,ecx

+        ror     ebx,7

+        add     ebp,eax

+        add     edx,DWORD[28+rsp]

+        xor     edi,ebx

+        mov     esi,ebp

+        rol     ebp,5

+        add     edx,edi

+        xor     esi,ebx

+        ror     eax,7

+        add     edx,ebp

+        add     ecx,DWORD[32+rsp]

+        xor     esi,eax

+        mov     edi,edx

+DB      102,15,56,0,214

+        rol     edx,5

+        add     ecx,esi

+        xor     edi,eax

+        ror     ebp,7

+        paddd   xmm1,xmm9

+        add     ecx,edx

+        add     ebx,DWORD[36+rsp]

+        xor     edi,ebp

+        mov     esi,ecx

+        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[40+rsp]

+        xor     esi,edx

+        mov     edi,ebx

+        rol     ebx,5

+        add     eax,esi

+        xor     edi,edx

+        ror     ecx,7

+        add     eax,ebx

+        add     ebp,DWORD[44+rsp]

+        xor     edi,ecx

+        mov     esi,eax

+        rol     eax,5

+        add     ebp,edi

+        xor     esi,ecx

+        ror     ebx,7

+        add     ebp,eax

+        add     edx,DWORD[48+rsp]

+        xor     esi,ebx

+        mov     edi,ebp

+DB      102,15,56,0,222

+        rol     ebp,5

+        add     edx,esi

+        xor     edi,ebx

+        ror     eax,7

+        paddd   xmm2,xmm9

+        add     edx,ebp

+        add     ecx,DWORD[52+rsp]

+        xor     edi,eax

+        mov     esi,edx

+        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[56+rsp]

+        xor     esi,ebp

+        mov     edi,ecx

+        rol     ecx,5

+        add     ebx,esi

+        xor     edi,ebp

+        ror     edx,7

+        add     ebx,ecx

+        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[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[8+r8],ecx

+        mov     edi,ecx

+        mov     DWORD[12+r8],edx

+        xor     edi,edx

+        mov     DWORD[16+r8],ebp

+        and     esi,edi

+        jmp     NEAR $L$oop_ssse3

+

+ALIGN   16

+$L$done_ssse3:

+        add     ebx,DWORD[16+rsp]

+        xor     esi,ebp

+        mov     edi,ecx

+        rol     ecx,5

+        add     ebx,esi

+        xor     edi,ebp

+        ror     edx,7

+        add     ebx,ecx

+        add     eax,DWORD[20+rsp]

+        xor     edi,edx

+        mov     esi,ebx

+        rol     ebx,5

+        add     eax,edi

+        xor     esi,edx

+        ror     ecx,7

+        add     eax,ebx

+        add     ebp,DWORD[24+rsp]

+        xor     esi,ecx

+        mov     edi,eax

+        rol     eax,5

+        add     ebp,esi

+        xor     edi,ecx

+        ror     ebx,7

+        add     ebp,eax

+        add     edx,DWORD[28+rsp]

+        xor     edi,ebx

+        mov     esi,ebp

+        rol     ebp,5

+        add     edx,edi

+        xor     esi,ebx

+        ror     eax,7

+        add     edx,ebp

+        add     ecx,DWORD[32+rsp]

+        xor     esi,eax

+        mov     edi,edx

+        rol     edx,5

+        add     ecx,esi

+        xor     edi,eax

+        ror     ebp,7

+        add     ecx,edx

+        add     ebx,DWORD[36+rsp]

+        xor     edi,ebp

+        mov     esi,ecx

+        rol     ecx,5

+        add     ebx,edi

+        xor     esi,ebp

+        ror     edx,7

+        add     ebx,ecx

+        add     eax,DWORD[40+rsp]

+        xor     esi,edx

+        mov     edi,ebx

+        rol     ebx,5

+        add     eax,esi

+        xor     edi,edx

+        ror     ecx,7

+        add     eax,ebx

+        add     ebp,DWORD[44+rsp]

+        xor     edi,ecx

+        mov     esi,eax

+        rol     eax,5

+        add     ebp,edi

+        xor     esi,ecx

+        ror     ebx,7

+        add     ebp,eax

+        add     edx,DWORD[48+rsp]

+        xor     esi,ebx

+        mov     edi,ebp

+        rol     ebp,5

+        add     edx,esi

+        xor     edi,ebx

+        ror     eax,7

+        add     edx,ebp

+        add     ecx,DWORD[52+rsp]

+        xor     edi,eax

+        mov     esi,edx

+        rol     edx,5

+        add     ecx,edi

+        xor     esi,eax

+        ror     ebp,7

+        add     ecx,edx

+        add     ebx,DWORD[56+rsp]

+        xor     esi,ebp

+        mov     edi,ecx

+        rol     ecx,5

+        add     ebx,esi

+        xor     edi,ebp

+        ror     edx,7

+        add     ebx,ecx

+        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[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))+r11]

+        movaps  xmm7,XMMWORD[((-40-80))+r11]

+        movaps  xmm8,XMMWORD[((-40-64))+r11]

+        movaps  xmm9,XMMWORD[((-40-48))+r11]

+        movaps  xmm10,XMMWORD[((-40-32))+r11]

+        movaps  xmm11,XMMWORD[((-40-16))+r11]

+        mov     r14,QWORD[((-40))+r11]

+

+        mov     r13,QWORD[((-32))+r11]

+

+        mov     r12,QWORD[((-24))+r11]

+

+        mov     rbp,QWORD[((-16))+r11]

+

+        mov     rbx,QWORD[((-8))+r11]

+

+        lea     rsp,[r11]

+

+$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:

+ALIGN   64

+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

+

+ALIGN   16

+se_handler:

+        push    rsi

+        push    rdi

+        push    rbx

+        push    rbp

+        push    r12

+        push    r13

+        push    r14

+        push    r15

+        pushfq

+        sub     rsp,64

+

+        mov     rax,QWORD[120+r8]

+        mov     rbx,QWORD[248+r8]

+

+        lea     r10,[$L$prologue]

+        cmp     rbx,r10

+        jb      NEAR $L$common_seh_tail

+

+        mov     rax,QWORD[152+r8]

+

+        lea     r10,[$L$epilogue]

+        cmp     rbx,r10

+        jae     NEAR $L$common_seh_tail

+

+        mov     rax,QWORD[64+rax]

+

+        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     NEAR $L$common_seh_tail

+

+

+ALIGN   16

+shaext_handler:

+        push    rsi

+        push    rdi

+        push    rbx

+        push    rbp

+        push    r12

+        push    r13

+        push    r14

+        push    r15

+        pushfq

+        sub     rsp,64

+

+        mov     rax,QWORD[120+r8]

+        mov     rbx,QWORD[248+r8]

+

+        lea     r10,[$L$prologue_shaext]

+        cmp     rbx,r10

+        jb      NEAR $L$common_seh_tail

+

+        lea     r10,[$L$epilogue_shaext]

+        cmp     rbx,r10

+        jae     NEAR $L$common_seh_tail

+

+        lea     rsi,[((-8-64))+rax]

+        lea     rdi,[512+r8]

+        mov     ecx,8

+        DD      0xa548f3fc

+

+        jmp     NEAR $L$common_seh_tail

+

+

+ALIGN   16

+ssse3_handler:

+        push    rsi

+        push    rdi

+        push    rbx

+        push    rbp

+        push    r12

+        push    r13

+        push    r14

+        push    r15

+        pushfq

+        sub     rsp,64

+

+        mov     rax,QWORD[120+r8]

+        mov     rbx,QWORD[248+r8]

+

+        mov     rsi,QWORD[8+r9]

+        mov     r11,QWORD[56+r9]

+

+        mov     r10d,DWORD[r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jb      NEAR $L$common_seh_tail

+

+        mov     rax,QWORD[208+r8]

+

+        mov     r10d,DWORD[4+r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jae     NEAR $L$common_seh_tail

+

+        lea     rsi,[((-40-96))+rax]

+        lea     rdi,[512+r8]

+        mov     ecx,12

+        DD      0xa548f3fc

+

+        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[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[40+r9]

+        mov     rsi,r8

+        mov     ecx,154

+        DD      0xa548f3fc

+

+        mov     rsi,r9

+        xor     rcx,rcx

+        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

+        popfq

+        pop     r15

+        pop     r14

+        pop     r13

+        pop     r12

+        pop     rbp

+        pop     rbx

+        pop     rdi

+        pop     rsi

+        DB      0F3h,0C3h               ;repret

+

+

+section .pdata rdata align=4

+ALIGN   4

+        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_shaext wrt
..imagebase


+        DD      $L$SEH_end_sha1_block_data_order_shaext wrt
..imagebase


+        DD      $L$SEH_info_sha1_block_data_order_shaext 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:

+DB      9,0,0,0

+        DD      se_handler wrt ..imagebase

+$L$SEH_info_sha1_block_data_order_shaext:

+DB      9,0,0,0

+        DD      shaext_handler wrt ..imagebase

+$L$SEH_info_sha1_block_data_order_ssse3:

+DB      9,0,0,0

+        DD      ssse3_handler wrt ..imagebase

+        DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3
wrt ..imagebase

diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
x86_64.nasm b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
mb-

x86_64.nasm
new file mode 100644
index 0000000000..7cd5eae85c
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-
x86_64.nasm

@@ -0,0 +1,3461 @@
+; WARNING: do not edit!

+; Generated from openssl/crypto/sha/asm/sha256-mb-x86_64.pl

+;

+; Copyright 2013-2020 The OpenSSL Project Authors. All Rights
Reserved.


+;

+; Licensed under the OpenSSL license (the "License").  You may not use

+; this file except in compliance with the License.  You can obtain a
copy


+; in the file LICENSE in the source distribution or at

+; https://www.openssl.org/source/license.html

+

+default rel

+%define XMMWORD

+%define YMMWORD

+%define ZMMWORD

+section .text code align=64

+

+

+EXTERN  OPENSSL_ia32cap_P

+

+global  sha256_multi_block

+

+ALIGN   32

+sha256_multi_block:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_sha256_multi_block:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+

+

+

+        mov     rcx,QWORD[((OPENSSL_ia32cap_P+4))]

+        bt      rcx,61

+        jc      NEAR _shaext_shortcut

+        mov     rax,rsp

+

+        push    rbx

+

+        push    rbp

+

+        lea     rsp,[((-168))+rsp]

+        movaps  XMMWORD[rsp],xmm6

+        movaps  XMMWORD[16+rsp],xmm7

+        movaps  XMMWORD[32+rsp],xmm8

+        movaps  XMMWORD[48+rsp],xmm9

+        movaps  XMMWORD[(-120)+rax],xmm10

+        movaps  XMMWORD[(-104)+rax],xmm11

+        movaps  XMMWORD[(-88)+rax],xmm12

+        movaps  XMMWORD[(-72)+rax],xmm13

+        movaps  XMMWORD[(-56)+rax],xmm14

+        movaps  XMMWORD[(-40)+rax],xmm15

+        sub     rsp,288

+        and     rsp,-256

+        mov     QWORD[272+rsp],rax

+

+$L$body:

+        lea     rbp,[((K256+128))]

+        lea     rbx,[256+rsp]

+        lea     rdi,[128+rdi]

+

+$L$oop_grande:

+        mov     DWORD[280+rsp],edx

+        xor     edx,edx

+        mov     r8,QWORD[rsi]

+        mov     ecx,DWORD[8+rsi]

+        cmp     ecx,edx

+        cmovg   edx,ecx

+        test    ecx,ecx

+        mov     DWORD[rbx],ecx

+        cmovle  r8,rbp

+        mov     r9,QWORD[16+rsi]

+        mov     ecx,DWORD[24+rsi]

+        cmp     ecx,edx

+        cmovg   edx,ecx

+        test    ecx,ecx

+        mov     DWORD[4+rbx],ecx

+        cmovle  r9,rbp

+        mov     r10,QWORD[32+rsi]

+        mov     ecx,DWORD[40+rsi]

+        cmp     ecx,edx

+        cmovg   edx,ecx

+        test    ecx,ecx

+        mov     DWORD[8+rbx],ecx

+        cmovle  r10,rbp

+        mov     r11,QWORD[48+rsi]

+        mov     ecx,DWORD[56+rsi]

+        cmp     ecx,edx

+        cmovg   edx,ecx

+        test    ecx,ecx

+        mov     DWORD[12+rbx],ecx

+        cmovle  r11,rbp

+        test    edx,edx

+        jz      NEAR $L$done

+

+        movdqu  xmm8,XMMWORD[((0-128))+rdi]

+        lea     rax,[128+rsp]

+        movdqu  xmm9,XMMWORD[((32-128))+rdi]

+        movdqu  xmm10,XMMWORD[((64-128))+rdi]

+        movdqu  xmm11,XMMWORD[((96-128))+rdi]

+        movdqu  xmm12,XMMWORD[((128-128))+rdi]

+        movdqu  xmm13,XMMWORD[((160-128))+rdi]

+        movdqu  xmm14,XMMWORD[((192-128))+rdi]

+        movdqu  xmm15,XMMWORD[((224-128))+rdi]

+        movdqu  xmm6,XMMWORD[$L$pbswap]

+        jmp     NEAR $L$oop

+

+ALIGN   32

+$L$oop:

+        movdqa  xmm4,xmm10

+        pxor    xmm4,xmm9

+        movd    xmm5,DWORD[r8]

+        movd    xmm0,DWORD[r9]

+        movd    xmm1,DWORD[r10]

+        movd    xmm2,DWORD[r11]

+        punpckldq       xmm5,xmm1

+        punpckldq       xmm0,xmm2

+        punpckldq       xmm5,xmm0

+        movdqa  xmm7,xmm12

+DB      102,15,56,0,238

+        movdqa  xmm2,xmm12

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm12

+        pslld   xmm2,7

+        movdqa  XMMWORD[(0-128)+rax],xmm5

+        paddd   xmm5,xmm15

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[((-128))+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm12

+

+        pxor    xmm7,xmm2

+        movdqa  xmm3,xmm12

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm14

+        pand    xmm3,xmm13

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm8

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm8

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        movdqa  xmm3,xmm9

+        movdqa  xmm7,xmm8

+        pslld   xmm2,10

+        pxor    xmm3,xmm8

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm4,xmm3

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm15,xmm9

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm15,xmm4

+        paddd   xmm11,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm15,xmm5

+        paddd   xmm15,xmm7

+        movd    xmm5,DWORD[4+r8]

+        movd    xmm0,DWORD[4+r9]

+        movd    xmm1,DWORD[4+r10]

+        movd    xmm2,DWORD[4+r11]

+        punpckldq       xmm5,xmm1

+        punpckldq       xmm0,xmm2

+        punpckldq       xmm5,xmm0

+        movdqa  xmm7,xmm11

+

+        movdqa  xmm2,xmm11

+DB      102,15,56,0,238

+        psrld   xmm7,6

+        movdqa  xmm1,xmm11

+        pslld   xmm2,7

+        movdqa  XMMWORD[(16-128)+rax],xmm5

+        paddd   xmm5,xmm14

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[((-96))+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm11

+

+        pxor    xmm7,xmm2

+        movdqa  xmm4,xmm11

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm13

+        pand    xmm4,xmm12

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm15

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm15

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm4

+        movdqa  xmm4,xmm8

+        movdqa  xmm7,xmm15

+        pslld   xmm2,10

+        pxor    xmm4,xmm15

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm3,xmm4

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm14,xmm8

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm14,xmm3

+        paddd   xmm10,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm14,xmm5

+        paddd   xmm14,xmm7

+        movd    xmm5,DWORD[8+r8]

+        movd    xmm0,DWORD[8+r9]

+        movd    xmm1,DWORD[8+r10]

+        movd    xmm2,DWORD[8+r11]

+        punpckldq       xmm5,xmm1

+        punpckldq       xmm0,xmm2

+        punpckldq       xmm5,xmm0

+        movdqa  xmm7,xmm10

+DB      102,15,56,0,238

+        movdqa  xmm2,xmm10

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm10

+        pslld   xmm2,7

+        movdqa  XMMWORD[(32-128)+rax],xmm5

+        paddd   xmm5,xmm13

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[((-64))+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm10

+

+        pxor    xmm7,xmm2

+        movdqa  xmm3,xmm10

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm12

+        pand    xmm3,xmm11

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm14

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm14

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        movdqa  xmm3,xmm15

+        movdqa  xmm7,xmm14

+        pslld   xmm2,10

+        pxor    xmm3,xmm14

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm4,xmm3

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm13,xmm15

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm13,xmm4

+        paddd   xmm9,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm13,xmm5

+        paddd   xmm13,xmm7

+        movd    xmm5,DWORD[12+r8]

+        movd    xmm0,DWORD[12+r9]

+        movd    xmm1,DWORD[12+r10]

+        movd    xmm2,DWORD[12+r11]

+        punpckldq       xmm5,xmm1

+        punpckldq       xmm0,xmm2

+        punpckldq       xmm5,xmm0

+        movdqa  xmm7,xmm9

+

+        movdqa  xmm2,xmm9

+DB      102,15,56,0,238

+        psrld   xmm7,6

+        movdqa  xmm1,xmm9

+        pslld   xmm2,7

+        movdqa  XMMWORD[(48-128)+rax],xmm5

+        paddd   xmm5,xmm12

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[((-32))+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm9

+

+        pxor    xmm7,xmm2

+        movdqa  xmm4,xmm9

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm11

+        pand    xmm4,xmm10

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm13

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm13

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm4

+        movdqa  xmm4,xmm14

+        movdqa  xmm7,xmm13

+        pslld   xmm2,10

+        pxor    xmm4,xmm13

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm3,xmm4

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm12,xmm14

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm12,xmm3

+        paddd   xmm8,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm12,xmm5

+        paddd   xmm12,xmm7

+        movd    xmm5,DWORD[16+r8]

+        movd    xmm0,DWORD[16+r9]

+        movd    xmm1,DWORD[16+r10]

+        movd    xmm2,DWORD[16+r11]

+        punpckldq       xmm5,xmm1

+        punpckldq       xmm0,xmm2

+        punpckldq       xmm5,xmm0

+        movdqa  xmm7,xmm8

+DB      102,15,56,0,238

+        movdqa  xmm2,xmm8

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm8

+        pslld   xmm2,7

+        movdqa  XMMWORD[(64-128)+rax],xmm5

+        paddd   xmm5,xmm11

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm8

+

+        pxor    xmm7,xmm2

+        movdqa  xmm3,xmm8

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm10

+        pand    xmm3,xmm9

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm12

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm12

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        movdqa  xmm3,xmm13

+        movdqa  xmm7,xmm12

+        pslld   xmm2,10

+        pxor    xmm3,xmm12

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm4,xmm3

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm11,xmm13

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm11,xmm4

+        paddd   xmm15,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm11,xmm5

+        paddd   xmm11,xmm7

+        movd    xmm5,DWORD[20+r8]

+        movd    xmm0,DWORD[20+r9]

+        movd    xmm1,DWORD[20+r10]

+        movd    xmm2,DWORD[20+r11]

+        punpckldq       xmm5,xmm1

+        punpckldq       xmm0,xmm2

+        punpckldq       xmm5,xmm0

+        movdqa  xmm7,xmm15

+

+        movdqa  xmm2,xmm15

+DB      102,15,56,0,238

+        psrld   xmm7,6

+        movdqa  xmm1,xmm15

+        pslld   xmm2,7

+        movdqa  XMMWORD[(80-128)+rax],xmm5

+        paddd   xmm5,xmm10

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[32+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm15

+

+        pxor    xmm7,xmm2

+        movdqa  xmm4,xmm15

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm9

+        pand    xmm4,xmm8

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm11

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm11

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm4

+        movdqa  xmm4,xmm12

+        movdqa  xmm7,xmm11

+        pslld   xmm2,10

+        pxor    xmm4,xmm11

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm3,xmm4

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm10,xmm12

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm10,xmm3

+        paddd   xmm14,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm10,xmm5

+        paddd   xmm10,xmm7

+        movd    xmm5,DWORD[24+r8]

+        movd    xmm0,DWORD[24+r9]

+        movd    xmm1,DWORD[24+r10]

+        movd    xmm2,DWORD[24+r11]

+        punpckldq       xmm5,xmm1

+        punpckldq       xmm0,xmm2

+        punpckldq       xmm5,xmm0

+        movdqa  xmm7,xmm14

+DB      102,15,56,0,238

+        movdqa  xmm2,xmm14

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm14

+        pslld   xmm2,7

+        movdqa  XMMWORD[(96-128)+rax],xmm5

+        paddd   xmm5,xmm9

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[64+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm14

+

+        pxor    xmm7,xmm2

+        movdqa  xmm3,xmm14

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm8

+        pand    xmm3,xmm15

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm10

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm10

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        movdqa  xmm3,xmm11

+        movdqa  xmm7,xmm10

+        pslld   xmm2,10

+        pxor    xmm3,xmm10

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm4,xmm3

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm9,xmm11

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm9,xmm4

+        paddd   xmm13,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm9,xmm5

+        paddd   xmm9,xmm7

+        movd    xmm5,DWORD[28+r8]

+        movd    xmm0,DWORD[28+r9]

+        movd    xmm1,DWORD[28+r10]

+        movd    xmm2,DWORD[28+r11]

+        punpckldq       xmm5,xmm1

+        punpckldq       xmm0,xmm2

+        punpckldq       xmm5,xmm0

+        movdqa  xmm7,xmm13

+

+        movdqa  xmm2,xmm13

+DB      102,15,56,0,238

+        psrld   xmm7,6

+        movdqa  xmm1,xmm13

+        pslld   xmm2,7

+        movdqa  XMMWORD[(112-128)+rax],xmm5

+        paddd   xmm5,xmm8

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[96+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm13

+

+        pxor    xmm7,xmm2

+        movdqa  xmm4,xmm13

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm15

+        pand    xmm4,xmm14

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm9

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm9

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm4

+        movdqa  xmm4,xmm10

+        movdqa  xmm7,xmm9

+        pslld   xmm2,10

+        pxor    xmm4,xmm9

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm3,xmm4

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm8,xmm10

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm8,xmm3

+        paddd   xmm12,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm8,xmm5

+        paddd   xmm8,xmm7

+        lea     rbp,[256+rbp]

+        movd    xmm5,DWORD[32+r8]

+        movd    xmm0,DWORD[32+r9]

+        movd    xmm1,DWORD[32+r10]

+        movd    xmm2,DWORD[32+r11]

+        punpckldq       xmm5,xmm1

+        punpckldq       xmm0,xmm2

+        punpckldq       xmm5,xmm0

+        movdqa  xmm7,xmm12

+DB      102,15,56,0,238

+        movdqa  xmm2,xmm12

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm12

+        pslld   xmm2,7

+        movdqa  XMMWORD[(128-128)+rax],xmm5

+        paddd   xmm5,xmm15

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[((-128))+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm12

+

+        pxor    xmm7,xmm2

+        movdqa  xmm3,xmm12

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm14

+        pand    xmm3,xmm13

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm8

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm8

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        movdqa  xmm3,xmm9

+        movdqa  xmm7,xmm8

+        pslld   xmm2,10

+        pxor    xmm3,xmm8

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm4,xmm3

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm15,xmm9

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm15,xmm4

+        paddd   xmm11,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm15,xmm5

+        paddd   xmm15,xmm7

+        movd    xmm5,DWORD[36+r8]

+        movd    xmm0,DWORD[36+r9]

+        movd    xmm1,DWORD[36+r10]

+        movd    xmm2,DWORD[36+r11]

+        punpckldq       xmm5,xmm1

+        punpckldq       xmm0,xmm2

+        punpckldq       xmm5,xmm0

+        movdqa  xmm7,xmm11

+

+        movdqa  xmm2,xmm11

+DB      102,15,56,0,238

+        psrld   xmm7,6

+        movdqa  xmm1,xmm11

+        pslld   xmm2,7

+        movdqa  XMMWORD[(144-128)+rax],xmm5

+        paddd   xmm5,xmm14

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[((-96))+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm11

+

+        pxor    xmm7,xmm2

+        movdqa  xmm4,xmm11

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm13

+        pand    xmm4,xmm12

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm15

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm15

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm4

+        movdqa  xmm4,xmm8

+        movdqa  xmm7,xmm15

+        pslld   xmm2,10

+        pxor    xmm4,xmm15

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm3,xmm4

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm14,xmm8

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm14,xmm3

+        paddd   xmm10,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm14,xmm5

+        paddd   xmm14,xmm7

+        movd    xmm5,DWORD[40+r8]

+        movd    xmm0,DWORD[40+r9]

+        movd    xmm1,DWORD[40+r10]

+        movd    xmm2,DWORD[40+r11]

+        punpckldq       xmm5,xmm1

+        punpckldq       xmm0,xmm2

+        punpckldq       xmm5,xmm0

+        movdqa  xmm7,xmm10

+DB      102,15,56,0,238

+        movdqa  xmm2,xmm10

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm10

+        pslld   xmm2,7

+        movdqa  XMMWORD[(160-128)+rax],xmm5

+        paddd   xmm5,xmm13

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[((-64))+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm10

+

+        pxor    xmm7,xmm2

+        movdqa  xmm3,xmm10

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm12

+        pand    xmm3,xmm11

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm14

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm14

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        movdqa  xmm3,xmm15

+        movdqa  xmm7,xmm14

+        pslld   xmm2,10

+        pxor    xmm3,xmm14

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm4,xmm3

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm13,xmm15

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm13,xmm4

+        paddd   xmm9,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm13,xmm5

+        paddd   xmm13,xmm7

+        movd    xmm5,DWORD[44+r8]

+        movd    xmm0,DWORD[44+r9]

+        movd    xmm1,DWORD[44+r10]

+        movd    xmm2,DWORD[44+r11]

+        punpckldq       xmm5,xmm1

+        punpckldq       xmm0,xmm2

+        punpckldq       xmm5,xmm0

+        movdqa  xmm7,xmm9

+

+        movdqa  xmm2,xmm9

+DB      102,15,56,0,238

+        psrld   xmm7,6

+        movdqa  xmm1,xmm9

+        pslld   xmm2,7

+        movdqa  XMMWORD[(176-128)+rax],xmm5

+        paddd   xmm5,xmm12

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[((-32))+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm9

+

+        pxor    xmm7,xmm2

+        movdqa  xmm4,xmm9

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm11

+        pand    xmm4,xmm10

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm13

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm13

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm4

+        movdqa  xmm4,xmm14

+        movdqa  xmm7,xmm13

+        pslld   xmm2,10

+        pxor    xmm4,xmm13

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm3,xmm4

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm12,xmm14

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm12,xmm3

+        paddd   xmm8,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm12,xmm5

+        paddd   xmm12,xmm7

+        movd    xmm5,DWORD[48+r8]

+        movd    xmm0,DWORD[48+r9]

+        movd    xmm1,DWORD[48+r10]

+        movd    xmm2,DWORD[48+r11]

+        punpckldq       xmm5,xmm1

+        punpckldq       xmm0,xmm2

+        punpckldq       xmm5,xmm0

+        movdqa  xmm7,xmm8

+DB      102,15,56,0,238

+        movdqa  xmm2,xmm8

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm8

+        pslld   xmm2,7

+        movdqa  XMMWORD[(192-128)+rax],xmm5

+        paddd   xmm5,xmm11

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm8

+

+        pxor    xmm7,xmm2

+        movdqa  xmm3,xmm8

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm10

+        pand    xmm3,xmm9

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm12

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm12

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        movdqa  xmm3,xmm13

+        movdqa  xmm7,xmm12

+        pslld   xmm2,10

+        pxor    xmm3,xmm12

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm4,xmm3

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm11,xmm13

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm11,xmm4

+        paddd   xmm15,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm11,xmm5

+        paddd   xmm11,xmm7

+        movd    xmm5,DWORD[52+r8]

+        movd    xmm0,DWORD[52+r9]

+        movd    xmm1,DWORD[52+r10]

+        movd    xmm2,DWORD[52+r11]

+        punpckldq       xmm5,xmm1

+        punpckldq       xmm0,xmm2

+        punpckldq       xmm5,xmm0

+        movdqa  xmm7,xmm15

+

+        movdqa  xmm2,xmm15

+DB      102,15,56,0,238

+        psrld   xmm7,6

+        movdqa  xmm1,xmm15

+        pslld   xmm2,7

+        movdqa  XMMWORD[(208-128)+rax],xmm5

+        paddd   xmm5,xmm10

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[32+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm15

+

+        pxor    xmm7,xmm2

+        movdqa  xmm4,xmm15

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm9

+        pand    xmm4,xmm8

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm11

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm11

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm4

+        movdqa  xmm4,xmm12

+        movdqa  xmm7,xmm11

+        pslld   xmm2,10

+        pxor    xmm4,xmm11

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm3,xmm4

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm10,xmm12

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm10,xmm3

+        paddd   xmm14,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm10,xmm5

+        paddd   xmm10,xmm7

+        movd    xmm5,DWORD[56+r8]

+        movd    xmm0,DWORD[56+r9]

+        movd    xmm1,DWORD[56+r10]

+        movd    xmm2,DWORD[56+r11]

+        punpckldq       xmm5,xmm1

+        punpckldq       xmm0,xmm2

+        punpckldq       xmm5,xmm0

+        movdqa  xmm7,xmm14

+DB      102,15,56,0,238

+        movdqa  xmm2,xmm14

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm14

+        pslld   xmm2,7

+        movdqa  XMMWORD[(224-128)+rax],xmm5

+        paddd   xmm5,xmm9

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[64+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm14

+

+        pxor    xmm7,xmm2

+        movdqa  xmm3,xmm14

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm8

+        pand    xmm3,xmm15

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm10

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm10

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        movdqa  xmm3,xmm11

+        movdqa  xmm7,xmm10

+        pslld   xmm2,10

+        pxor    xmm3,xmm10

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm4,xmm3

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm9,xmm11

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm9,xmm4

+        paddd   xmm13,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm9,xmm5

+        paddd   xmm9,xmm7

+        movd    xmm5,DWORD[60+r8]

+        lea     r8,[64+r8]

+        movd    xmm0,DWORD[60+r9]

+        lea     r9,[64+r9]

+        movd    xmm1,DWORD[60+r10]

+        lea     r10,[64+r10]

+        movd    xmm2,DWORD[60+r11]

+        lea     r11,[64+r11]

+        punpckldq       xmm5,xmm1

+        punpckldq       xmm0,xmm2

+        punpckldq       xmm5,xmm0

+        movdqa  xmm7,xmm13

+

+        movdqa  xmm2,xmm13

+DB      102,15,56,0,238

+        psrld   xmm7,6

+        movdqa  xmm1,xmm13

+        pslld   xmm2,7

+        movdqa  XMMWORD[(240-128)+rax],xmm5

+        paddd   xmm5,xmm8

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[96+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm13

+        prefetcht0      [63+r8]

+        pxor    xmm7,xmm2

+        movdqa  xmm4,xmm13

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm15

+        pand    xmm4,xmm14

+        pxor    xmm7,xmm1

+

+        prefetcht0      [63+r9]

+        movdqa  xmm1,xmm9

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm9

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm4

+        movdqa  xmm4,xmm10

+        movdqa  xmm7,xmm9

+        pslld   xmm2,10

+        pxor    xmm4,xmm9

+

+        prefetcht0      [63+r10]

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm3,xmm4

+        pxor    xmm1,xmm7

+

+        prefetcht0      [63+r11]

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm8,xmm10

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm8,xmm3

+        paddd   xmm12,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm8,xmm5

+        paddd   xmm8,xmm7

+        lea     rbp,[256+rbp]

+        movdqu  xmm5,XMMWORD[((0-128))+rax]

+        mov     ecx,3

+        jmp     NEAR $L$oop_16_xx

+ALIGN   32

+$L$oop_16_xx:

+        movdqa  xmm6,XMMWORD[((16-128))+rax]

+        paddd   xmm5,XMMWORD[((144-128))+rax]

+

+        movdqa  xmm7,xmm6

+        movdqa  xmm1,xmm6

+        psrld   xmm7,3

+        movdqa  xmm2,xmm6

+

+        psrld   xmm1,7

+        movdqa  xmm0,XMMWORD[((224-128))+rax]

+        pslld   xmm2,14

+        pxor    xmm7,xmm1

+        psrld   xmm1,18-7

+        movdqa  xmm3,xmm0

+        pxor    xmm7,xmm2

+        pslld   xmm2,25-14

+        pxor    xmm7,xmm1

+        psrld   xmm0,10

+        movdqa  xmm1,xmm3

+

+        psrld   xmm3,17

+        pxor    xmm7,xmm2

+        pslld   xmm1,13

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        psrld   xmm3,19-17

+        pxor    xmm0,xmm1

+        pslld   xmm1,15-13

+        pxor    xmm0,xmm3

+        pxor    xmm0,xmm1

+        paddd   xmm5,xmm0

+        movdqa  xmm7,xmm12

+

+        movdqa  xmm2,xmm12

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm12

+        pslld   xmm2,7

+        movdqa  XMMWORD[(0-128)+rax],xmm5

+        paddd   xmm5,xmm15

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[((-128))+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm12

+

+        pxor    xmm7,xmm2

+        movdqa  xmm3,xmm12

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm14

+        pand    xmm3,xmm13

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm8

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm8

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        movdqa  xmm3,xmm9

+        movdqa  xmm7,xmm8

+        pslld   xmm2,10

+        pxor    xmm3,xmm8

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm4,xmm3

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm15,xmm9

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm15,xmm4

+        paddd   xmm11,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm15,xmm5

+        paddd   xmm15,xmm7

+        movdqa  xmm5,XMMWORD[((32-128))+rax]

+        paddd   xmm6,XMMWORD[((160-128))+rax]

+

+        movdqa  xmm7,xmm5

+        movdqa  xmm1,xmm5

+        psrld   xmm7,3

+        movdqa  xmm2,xmm5

+

+        psrld   xmm1,7

+        movdqa  xmm0,XMMWORD[((240-128))+rax]

+        pslld   xmm2,14

+        pxor    xmm7,xmm1

+        psrld   xmm1,18-7

+        movdqa  xmm4,xmm0

+        pxor    xmm7,xmm2

+        pslld   xmm2,25-14

+        pxor    xmm7,xmm1

+        psrld   xmm0,10

+        movdqa  xmm1,xmm4

+

+        psrld   xmm4,17

+        pxor    xmm7,xmm2

+        pslld   xmm1,13

+        paddd   xmm6,xmm7

+        pxor    xmm0,xmm4

+        psrld   xmm4,19-17

+        pxor    xmm0,xmm1

+        pslld   xmm1,15-13

+        pxor    xmm0,xmm4

+        pxor    xmm0,xmm1

+        paddd   xmm6,xmm0

+        movdqa  xmm7,xmm11

+

+        movdqa  xmm2,xmm11

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm11

+        pslld   xmm2,7

+        movdqa  XMMWORD[(16-128)+rax],xmm6

+        paddd   xmm6,xmm14

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm6,XMMWORD[((-96))+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm11

+

+        pxor    xmm7,xmm2

+        movdqa  xmm4,xmm11

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm13

+        pand    xmm4,xmm12

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm15

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm15

+        psrld   xmm1,2

+        paddd   xmm6,xmm7

+        pxor    xmm0,xmm4

+        movdqa  xmm4,xmm8

+        movdqa  xmm7,xmm15

+        pslld   xmm2,10

+        pxor    xmm4,xmm15

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm6,xmm0

+        pslld   xmm2,19-10

+        pand    xmm3,xmm4

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm14,xmm8

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm14,xmm3

+        paddd   xmm10,xmm6

+        pxor    xmm7,xmm2

+

+        paddd   xmm14,xmm6

+        paddd   xmm14,xmm7

+        movdqa  xmm6,XMMWORD[((48-128))+rax]

+        paddd   xmm5,XMMWORD[((176-128))+rax]

+

+        movdqa  xmm7,xmm6

+        movdqa  xmm1,xmm6

+        psrld   xmm7,3

+        movdqa  xmm2,xmm6

+

+        psrld   xmm1,7

+        movdqa  xmm0,XMMWORD[((0-128))+rax]

+        pslld   xmm2,14

+        pxor    xmm7,xmm1

+        psrld   xmm1,18-7

+        movdqa  xmm3,xmm0

+        pxor    xmm7,xmm2

+        pslld   xmm2,25-14

+        pxor    xmm7,xmm1

+        psrld   xmm0,10

+        movdqa  xmm1,xmm3

+

+        psrld   xmm3,17

+        pxor    xmm7,xmm2

+        pslld   xmm1,13

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        psrld   xmm3,19-17

+        pxor    xmm0,xmm1

+        pslld   xmm1,15-13

+        pxor    xmm0,xmm3

+        pxor    xmm0,xmm1

+        paddd   xmm5,xmm0

+        movdqa  xmm7,xmm10

+

+        movdqa  xmm2,xmm10

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm10

+        pslld   xmm2,7

+        movdqa  XMMWORD[(32-128)+rax],xmm5

+        paddd   xmm5,xmm13

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[((-64))+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm10

+

+        pxor    xmm7,xmm2

+        movdqa  xmm3,xmm10

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm12

+        pand    xmm3,xmm11

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm14

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm14

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        movdqa  xmm3,xmm15

+        movdqa  xmm7,xmm14

+        pslld   xmm2,10

+        pxor    xmm3,xmm14

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm4,xmm3

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm13,xmm15

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm13,xmm4

+        paddd   xmm9,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm13,xmm5

+        paddd   xmm13,xmm7

+        movdqa  xmm5,XMMWORD[((64-128))+rax]

+        paddd   xmm6,XMMWORD[((192-128))+rax]

+

+        movdqa  xmm7,xmm5

+        movdqa  xmm1,xmm5

+        psrld   xmm7,3

+        movdqa  xmm2,xmm5

+

+        psrld   xmm1,7

+        movdqa  xmm0,XMMWORD[((16-128))+rax]

+        pslld   xmm2,14

+        pxor    xmm7,xmm1

+        psrld   xmm1,18-7

+        movdqa  xmm4,xmm0

+        pxor    xmm7,xmm2

+        pslld   xmm2,25-14

+        pxor    xmm7,xmm1

+        psrld   xmm0,10

+        movdqa  xmm1,xmm4

+

+        psrld   xmm4,17

+        pxor    xmm7,xmm2

+        pslld   xmm1,13

+        paddd   xmm6,xmm7

+        pxor    xmm0,xmm4

+        psrld   xmm4,19-17

+        pxor    xmm0,xmm1

+        pslld   xmm1,15-13

+        pxor    xmm0,xmm4

+        pxor    xmm0,xmm1

+        paddd   xmm6,xmm0

+        movdqa  xmm7,xmm9

+

+        movdqa  xmm2,xmm9

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm9

+        pslld   xmm2,7

+        movdqa  XMMWORD[(48-128)+rax],xmm6

+        paddd   xmm6,xmm12

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm6,XMMWORD[((-32))+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm9

+

+        pxor    xmm7,xmm2

+        movdqa  xmm4,xmm9

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm11

+        pand    xmm4,xmm10

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm13

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm13

+        psrld   xmm1,2

+        paddd   xmm6,xmm7

+        pxor    xmm0,xmm4

+        movdqa  xmm4,xmm14

+        movdqa  xmm7,xmm13

+        pslld   xmm2,10

+        pxor    xmm4,xmm13

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm6,xmm0

+        pslld   xmm2,19-10

+        pand    xmm3,xmm4

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm12,xmm14

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm12,xmm3

+        paddd   xmm8,xmm6

+        pxor    xmm7,xmm2

+

+        paddd   xmm12,xmm6

+        paddd   xmm12,xmm7

+        movdqa  xmm6,XMMWORD[((80-128))+rax]

+        paddd   xmm5,XMMWORD[((208-128))+rax]

+

+        movdqa  xmm7,xmm6

+        movdqa  xmm1,xmm6

+        psrld   xmm7,3

+        movdqa  xmm2,xmm6

+

+        psrld   xmm1,7

+        movdqa  xmm0,XMMWORD[((32-128))+rax]

+        pslld   xmm2,14

+        pxor    xmm7,xmm1

+        psrld   xmm1,18-7

+        movdqa  xmm3,xmm0

+        pxor    xmm7,xmm2

+        pslld   xmm2,25-14

+        pxor    xmm7,xmm1

+        psrld   xmm0,10

+        movdqa  xmm1,xmm3

+

+        psrld   xmm3,17

+        pxor    xmm7,xmm2

+        pslld   xmm1,13

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        psrld   xmm3,19-17

+        pxor    xmm0,xmm1

+        pslld   xmm1,15-13

+        pxor    xmm0,xmm3

+        pxor    xmm0,xmm1

+        paddd   xmm5,xmm0

+        movdqa  xmm7,xmm8

+

+        movdqa  xmm2,xmm8

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm8

+        pslld   xmm2,7

+        movdqa  XMMWORD[(64-128)+rax],xmm5

+        paddd   xmm5,xmm11

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm8

+

+        pxor    xmm7,xmm2

+        movdqa  xmm3,xmm8

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm10

+        pand    xmm3,xmm9

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm12

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm12

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        movdqa  xmm3,xmm13

+        movdqa  xmm7,xmm12

+        pslld   xmm2,10

+        pxor    xmm3,xmm12

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm4,xmm3

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm11,xmm13

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm11,xmm4

+        paddd   xmm15,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm11,xmm5

+        paddd   xmm11,xmm7

+        movdqa  xmm5,XMMWORD[((96-128))+rax]

+        paddd   xmm6,XMMWORD[((224-128))+rax]

+

+        movdqa  xmm7,xmm5

+        movdqa  xmm1,xmm5

+        psrld   xmm7,3

+        movdqa  xmm2,xmm5

+

+        psrld   xmm1,7

+        movdqa  xmm0,XMMWORD[((48-128))+rax]

+        pslld   xmm2,14

+        pxor    xmm7,xmm1

+        psrld   xmm1,18-7

+        movdqa  xmm4,xmm0

+        pxor    xmm7,xmm2

+        pslld   xmm2,25-14

+        pxor    xmm7,xmm1

+        psrld   xmm0,10

+        movdqa  xmm1,xmm4

+

+        psrld   xmm4,17

+        pxor    xmm7,xmm2

+        pslld   xmm1,13

+        paddd   xmm6,xmm7

+        pxor    xmm0,xmm4

+        psrld   xmm4,19-17

+        pxor    xmm0,xmm1

+        pslld   xmm1,15-13

+        pxor    xmm0,xmm4

+        pxor    xmm0,xmm1

+        paddd   xmm6,xmm0

+        movdqa  xmm7,xmm15

+

+        movdqa  xmm2,xmm15

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm15

+        pslld   xmm2,7

+        movdqa  XMMWORD[(80-128)+rax],xmm6

+        paddd   xmm6,xmm10

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm6,XMMWORD[32+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm15

+

+        pxor    xmm7,xmm2

+        movdqa  xmm4,xmm15

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm9

+        pand    xmm4,xmm8

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm11

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm11

+        psrld   xmm1,2

+        paddd   xmm6,xmm7

+        pxor    xmm0,xmm4

+        movdqa  xmm4,xmm12

+        movdqa  xmm7,xmm11

+        pslld   xmm2,10

+        pxor    xmm4,xmm11

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm6,xmm0

+        pslld   xmm2,19-10

+        pand    xmm3,xmm4

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm10,xmm12

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm10,xmm3

+        paddd   xmm14,xmm6

+        pxor    xmm7,xmm2

+

+        paddd   xmm10,xmm6

+        paddd   xmm10,xmm7

+        movdqa  xmm6,XMMWORD[((112-128))+rax]

+        paddd   xmm5,XMMWORD[((240-128))+rax]

+

+        movdqa  xmm7,xmm6

+        movdqa  xmm1,xmm6

+        psrld   xmm7,3

+        movdqa  xmm2,xmm6

+

+        psrld   xmm1,7

+        movdqa  xmm0,XMMWORD[((64-128))+rax]

+        pslld   xmm2,14

+        pxor    xmm7,xmm1

+        psrld   xmm1,18-7

+        movdqa  xmm3,xmm0

+        pxor    xmm7,xmm2

+        pslld   xmm2,25-14

+        pxor    xmm7,xmm1

+        psrld   xmm0,10

+        movdqa  xmm1,xmm3

+

+        psrld   xmm3,17

+        pxor    xmm7,xmm2

+        pslld   xmm1,13

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        psrld   xmm3,19-17

+        pxor    xmm0,xmm1

+        pslld   xmm1,15-13

+        pxor    xmm0,xmm3

+        pxor    xmm0,xmm1

+        paddd   xmm5,xmm0

+        movdqa  xmm7,xmm14

+

+        movdqa  xmm2,xmm14

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm14

+        pslld   xmm2,7

+        movdqa  XMMWORD[(96-128)+rax],xmm5

+        paddd   xmm5,xmm9

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[64+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm14

+

+        pxor    xmm7,xmm2

+        movdqa  xmm3,xmm14

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm8

+        pand    xmm3,xmm15

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm10

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm10

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        movdqa  xmm3,xmm11

+        movdqa  xmm7,xmm10

+        pslld   xmm2,10

+        pxor    xmm3,xmm10

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm4,xmm3

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm9,xmm11

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm9,xmm4

+        paddd   xmm13,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm9,xmm5

+        paddd   xmm9,xmm7

+        movdqa  xmm5,XMMWORD[((128-128))+rax]

+        paddd   xmm6,XMMWORD[((0-128))+rax]

+

+        movdqa  xmm7,xmm5

+        movdqa  xmm1,xmm5

+        psrld   xmm7,3

+        movdqa  xmm2,xmm5

+

+        psrld   xmm1,7

+        movdqa  xmm0,XMMWORD[((80-128))+rax]

+        pslld   xmm2,14

+        pxor    xmm7,xmm1

+        psrld   xmm1,18-7

+        movdqa  xmm4,xmm0

+        pxor    xmm7,xmm2

+        pslld   xmm2,25-14

+        pxor    xmm7,xmm1

+        psrld   xmm0,10

+        movdqa  xmm1,xmm4

+

+        psrld   xmm4,17

+        pxor    xmm7,xmm2

+        pslld   xmm1,13

+        paddd   xmm6,xmm7

+        pxor    xmm0,xmm4

+        psrld   xmm4,19-17

+        pxor    xmm0,xmm1

+        pslld   xmm1,15-13

+        pxor    xmm0,xmm4

+        pxor    xmm0,xmm1

+        paddd   xmm6,xmm0

+        movdqa  xmm7,xmm13

+

+        movdqa  xmm2,xmm13

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm13

+        pslld   xmm2,7

+        movdqa  XMMWORD[(112-128)+rax],xmm6

+        paddd   xmm6,xmm8

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm6,XMMWORD[96+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm13

+

+        pxor    xmm7,xmm2

+        movdqa  xmm4,xmm13

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm15

+        pand    xmm4,xmm14

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm9

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm9

+        psrld   xmm1,2

+        paddd   xmm6,xmm7

+        pxor    xmm0,xmm4

+        movdqa  xmm4,xmm10

+        movdqa  xmm7,xmm9

+        pslld   xmm2,10

+        pxor    xmm4,xmm9

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm6,xmm0

+        pslld   xmm2,19-10

+        pand    xmm3,xmm4

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm8,xmm10

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm8,xmm3

+        paddd   xmm12,xmm6

+        pxor    xmm7,xmm2

+

+        paddd   xmm8,xmm6

+        paddd   xmm8,xmm7

+        lea     rbp,[256+rbp]

+        movdqa  xmm6,XMMWORD[((144-128))+rax]

+        paddd   xmm5,XMMWORD[((16-128))+rax]

+

+        movdqa  xmm7,xmm6

+        movdqa  xmm1,xmm6

+        psrld   xmm7,3

+        movdqa  xmm2,xmm6

+

+        psrld   xmm1,7

+        movdqa  xmm0,XMMWORD[((96-128))+rax]

+        pslld   xmm2,14

+        pxor    xmm7,xmm1

+        psrld   xmm1,18-7

+        movdqa  xmm3,xmm0

+        pxor    xmm7,xmm2

+        pslld   xmm2,25-14

+        pxor    xmm7,xmm1

+        psrld   xmm0,10

+        movdqa  xmm1,xmm3

+

+        psrld   xmm3,17

+        pxor    xmm7,xmm2

+        pslld   xmm1,13

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        psrld   xmm3,19-17

+        pxor    xmm0,xmm1

+        pslld   xmm1,15-13

+        pxor    xmm0,xmm3

+        pxor    xmm0,xmm1

+        paddd   xmm5,xmm0

+        movdqa  xmm7,xmm12

+

+        movdqa  xmm2,xmm12

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm12

+        pslld   xmm2,7

+        movdqa  XMMWORD[(128-128)+rax],xmm5

+        paddd   xmm5,xmm15

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[((-128))+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm12

+

+        pxor    xmm7,xmm2

+        movdqa  xmm3,xmm12

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm14

+        pand    xmm3,xmm13

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm8

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm8

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        movdqa  xmm3,xmm9

+        movdqa  xmm7,xmm8

+        pslld   xmm2,10

+        pxor    xmm3,xmm8

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm4,xmm3

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm15,xmm9

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm15,xmm4

+        paddd   xmm11,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm15,xmm5

+        paddd   xmm15,xmm7

+        movdqa  xmm5,XMMWORD[((160-128))+rax]

+        paddd   xmm6,XMMWORD[((32-128))+rax]

+

+        movdqa  xmm7,xmm5

+        movdqa  xmm1,xmm5

+        psrld   xmm7,3

+        movdqa  xmm2,xmm5

+

+        psrld   xmm1,7

+        movdqa  xmm0,XMMWORD[((112-128))+rax]

+        pslld   xmm2,14

+        pxor    xmm7,xmm1

+        psrld   xmm1,18-7

+        movdqa  xmm4,xmm0

+        pxor    xmm7,xmm2

+        pslld   xmm2,25-14

+        pxor    xmm7,xmm1

+        psrld   xmm0,10

+        movdqa  xmm1,xmm4

+

+        psrld   xmm4,17

+        pxor    xmm7,xmm2

+        pslld   xmm1,13

+        paddd   xmm6,xmm7

+        pxor    xmm0,xmm4

+        psrld   xmm4,19-17

+        pxor    xmm0,xmm1

+        pslld   xmm1,15-13

+        pxor    xmm0,xmm4

+        pxor    xmm0,xmm1

+        paddd   xmm6,xmm0

+        movdqa  xmm7,xmm11

+

+        movdqa  xmm2,xmm11

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm11

+        pslld   xmm2,7

+        movdqa  XMMWORD[(144-128)+rax],xmm6

+        paddd   xmm6,xmm14

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm6,XMMWORD[((-96))+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm11

+

+        pxor    xmm7,xmm2

+        movdqa  xmm4,xmm11

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm13

+        pand    xmm4,xmm12

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm15

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm15

+        psrld   xmm1,2

+        paddd   xmm6,xmm7

+        pxor    xmm0,xmm4

+        movdqa  xmm4,xmm8

+        movdqa  xmm7,xmm15

+        pslld   xmm2,10

+        pxor    xmm4,xmm15

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm6,xmm0

+        pslld   xmm2,19-10

+        pand    xmm3,xmm4

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm14,xmm8

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm14,xmm3

+        paddd   xmm10,xmm6

+        pxor    xmm7,xmm2

+

+        paddd   xmm14,xmm6

+        paddd   xmm14,xmm7

+        movdqa  xmm6,XMMWORD[((176-128))+rax]

+        paddd   xmm5,XMMWORD[((48-128))+rax]

+

+        movdqa  xmm7,xmm6

+        movdqa  xmm1,xmm6

+        psrld   xmm7,3

+        movdqa  xmm2,xmm6

+

+        psrld   xmm1,7

+        movdqa  xmm0,XMMWORD[((128-128))+rax]

+        pslld   xmm2,14

+        pxor    xmm7,xmm1

+        psrld   xmm1,18-7

+        movdqa  xmm3,xmm0

+        pxor    xmm7,xmm2

+        pslld   xmm2,25-14

+        pxor    xmm7,xmm1

+        psrld   xmm0,10

+        movdqa  xmm1,xmm3

+

+        psrld   xmm3,17

+        pxor    xmm7,xmm2

+        pslld   xmm1,13

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        psrld   xmm3,19-17

+        pxor    xmm0,xmm1

+        pslld   xmm1,15-13

+        pxor    xmm0,xmm3

+        pxor    xmm0,xmm1

+        paddd   xmm5,xmm0

+        movdqa  xmm7,xmm10

+

+        movdqa  xmm2,xmm10

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm10

+        pslld   xmm2,7

+        movdqa  XMMWORD[(160-128)+rax],xmm5

+        paddd   xmm5,xmm13

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[((-64))+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm10

+

+        pxor    xmm7,xmm2

+        movdqa  xmm3,xmm10

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm12

+        pand    xmm3,xmm11

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm14

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm14

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        movdqa  xmm3,xmm15

+        movdqa  xmm7,xmm14

+        pslld   xmm2,10

+        pxor    xmm3,xmm14

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm4,xmm3

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm13,xmm15

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm13,xmm4

+        paddd   xmm9,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm13,xmm5

+        paddd   xmm13,xmm7

+        movdqa  xmm5,XMMWORD[((192-128))+rax]

+        paddd   xmm6,XMMWORD[((64-128))+rax]

+

+        movdqa  xmm7,xmm5

+        movdqa  xmm1,xmm5

+        psrld   xmm7,3

+        movdqa  xmm2,xmm5

+

+        psrld   xmm1,7

+        movdqa  xmm0,XMMWORD[((144-128))+rax]

+        pslld   xmm2,14

+        pxor    xmm7,xmm1

+        psrld   xmm1,18-7

+        movdqa  xmm4,xmm0

+        pxor    xmm7,xmm2

+        pslld   xmm2,25-14

+        pxor    xmm7,xmm1

+        psrld   xmm0,10

+        movdqa  xmm1,xmm4

+

+        psrld   xmm4,17

+        pxor    xmm7,xmm2

+        pslld   xmm1,13

+        paddd   xmm6,xmm7

+        pxor    xmm0,xmm4

+        psrld   xmm4,19-17

+        pxor    xmm0,xmm1

+        pslld   xmm1,15-13

+        pxor    xmm0,xmm4

+        pxor    xmm0,xmm1

+        paddd   xmm6,xmm0

+        movdqa  xmm7,xmm9

+

+        movdqa  xmm2,xmm9

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm9

+        pslld   xmm2,7

+        movdqa  XMMWORD[(176-128)+rax],xmm6

+        paddd   xmm6,xmm12

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm6,XMMWORD[((-32))+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm9

+

+        pxor    xmm7,xmm2

+        movdqa  xmm4,xmm9

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm11

+        pand    xmm4,xmm10

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm13

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm13

+        psrld   xmm1,2

+        paddd   xmm6,xmm7

+        pxor    xmm0,xmm4

+        movdqa  xmm4,xmm14

+        movdqa  xmm7,xmm13

+        pslld   xmm2,10

+        pxor    xmm4,xmm13

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm6,xmm0

+        pslld   xmm2,19-10

+        pand    xmm3,xmm4

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm12,xmm14

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm12,xmm3

+        paddd   xmm8,xmm6

+        pxor    xmm7,xmm2

+

+        paddd   xmm12,xmm6

+        paddd   xmm12,xmm7

+        movdqa  xmm6,XMMWORD[((208-128))+rax]

+        paddd   xmm5,XMMWORD[((80-128))+rax]

+

+        movdqa  xmm7,xmm6

+        movdqa  xmm1,xmm6

+        psrld   xmm7,3

+        movdqa  xmm2,xmm6

+

+        psrld   xmm1,7

+        movdqa  xmm0,XMMWORD[((160-128))+rax]

+        pslld   xmm2,14

+        pxor    xmm7,xmm1

+        psrld   xmm1,18-7

+        movdqa  xmm3,xmm0

+        pxor    xmm7,xmm2

+        pslld   xmm2,25-14

+        pxor    xmm7,xmm1

+        psrld   xmm0,10

+        movdqa  xmm1,xmm3

+

+        psrld   xmm3,17

+        pxor    xmm7,xmm2

+        pslld   xmm1,13

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        psrld   xmm3,19-17

+        pxor    xmm0,xmm1

+        pslld   xmm1,15-13

+        pxor    xmm0,xmm3

+        pxor    xmm0,xmm1

+        paddd   xmm5,xmm0

+        movdqa  xmm7,xmm8

+

+        movdqa  xmm2,xmm8

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm8

+        pslld   xmm2,7

+        movdqa  XMMWORD[(192-128)+rax],xmm5

+        paddd   xmm5,xmm11

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm8

+

+        pxor    xmm7,xmm2

+        movdqa  xmm3,xmm8

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm10

+        pand    xmm3,xmm9

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm12

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm12

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        movdqa  xmm3,xmm13

+        movdqa  xmm7,xmm12

+        pslld   xmm2,10

+        pxor    xmm3,xmm12

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm4,xmm3

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm11,xmm13

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm11,xmm4

+        paddd   xmm15,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm11,xmm5

+        paddd   xmm11,xmm7

+        movdqa  xmm5,XMMWORD[((224-128))+rax]

+        paddd   xmm6,XMMWORD[((96-128))+rax]

+

+        movdqa  xmm7,xmm5

+        movdqa  xmm1,xmm5

+        psrld   xmm7,3

+        movdqa  xmm2,xmm5

+

+        psrld   xmm1,7

+        movdqa  xmm0,XMMWORD[((176-128))+rax]

+        pslld   xmm2,14

+        pxor    xmm7,xmm1

+        psrld   xmm1,18-7

+        movdqa  xmm4,xmm0

+        pxor    xmm7,xmm2

+        pslld   xmm2,25-14

+        pxor    xmm7,xmm1

+        psrld   xmm0,10

+        movdqa  xmm1,xmm4

+

+        psrld   xmm4,17

+        pxor    xmm7,xmm2

+        pslld   xmm1,13

+        paddd   xmm6,xmm7

+        pxor    xmm0,xmm4

+        psrld   xmm4,19-17

+        pxor    xmm0,xmm1

+        pslld   xmm1,15-13

+        pxor    xmm0,xmm4

+        pxor    xmm0,xmm1

+        paddd   xmm6,xmm0

+        movdqa  xmm7,xmm15

+

+        movdqa  xmm2,xmm15

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm15

+        pslld   xmm2,7

+        movdqa  XMMWORD[(208-128)+rax],xmm6

+        paddd   xmm6,xmm10

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm6,XMMWORD[32+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm15

+

+        pxor    xmm7,xmm2

+        movdqa  xmm4,xmm15

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm9

+        pand    xmm4,xmm8

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm11

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm11

+        psrld   xmm1,2

+        paddd   xmm6,xmm7

+        pxor    xmm0,xmm4

+        movdqa  xmm4,xmm12

+        movdqa  xmm7,xmm11

+        pslld   xmm2,10

+        pxor    xmm4,xmm11

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm6,xmm0

+        pslld   xmm2,19-10

+        pand    xmm3,xmm4

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm10,xmm12

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm10,xmm3

+        paddd   xmm14,xmm6

+        pxor    xmm7,xmm2

+

+        paddd   xmm10,xmm6

+        paddd   xmm10,xmm7

+        movdqa  xmm6,XMMWORD[((240-128))+rax]

+        paddd   xmm5,XMMWORD[((112-128))+rax]

+

+        movdqa  xmm7,xmm6

+        movdqa  xmm1,xmm6

+        psrld   xmm7,3

+        movdqa  xmm2,xmm6

+

+        psrld   xmm1,7

+        movdqa  xmm0,XMMWORD[((192-128))+rax]

+        pslld   xmm2,14

+        pxor    xmm7,xmm1

+        psrld   xmm1,18-7

+        movdqa  xmm3,xmm0

+        pxor    xmm7,xmm2

+        pslld   xmm2,25-14

+        pxor    xmm7,xmm1

+        psrld   xmm0,10

+        movdqa  xmm1,xmm3

+

+        psrld   xmm3,17

+        pxor    xmm7,xmm2

+        pslld   xmm1,13

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        psrld   xmm3,19-17

+        pxor    xmm0,xmm1

+        pslld   xmm1,15-13

+        pxor    xmm0,xmm3

+        pxor    xmm0,xmm1

+        paddd   xmm5,xmm0

+        movdqa  xmm7,xmm14

+

+        movdqa  xmm2,xmm14

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm14

+        pslld   xmm2,7

+        movdqa  XMMWORD[(224-128)+rax],xmm5

+        paddd   xmm5,xmm9

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm5,XMMWORD[64+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm14

+

+        pxor    xmm7,xmm2

+        movdqa  xmm3,xmm14

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm8

+        pand    xmm3,xmm15

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm10

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm10

+        psrld   xmm1,2

+        paddd   xmm5,xmm7

+        pxor    xmm0,xmm3

+        movdqa  xmm3,xmm11

+        movdqa  xmm7,xmm10

+        pslld   xmm2,10

+        pxor    xmm3,xmm10

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm5,xmm0

+        pslld   xmm2,19-10

+        pand    xmm4,xmm3

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm9,xmm11

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm9,xmm4

+        paddd   xmm13,xmm5

+        pxor    xmm7,xmm2

+

+        paddd   xmm9,xmm5

+        paddd   xmm9,xmm7

+        movdqa  xmm5,XMMWORD[((0-128))+rax]

+        paddd   xmm6,XMMWORD[((128-128))+rax]

+

+        movdqa  xmm7,xmm5

+        movdqa  xmm1,xmm5

+        psrld   xmm7,3

+        movdqa  xmm2,xmm5

+

+        psrld   xmm1,7

+        movdqa  xmm0,XMMWORD[((208-128))+rax]

+        pslld   xmm2,14

+        pxor    xmm7,xmm1

+        psrld   xmm1,18-7

+        movdqa  xmm4,xmm0

+        pxor    xmm7,xmm2

+        pslld   xmm2,25-14

+        pxor    xmm7,xmm1

+        psrld   xmm0,10

+        movdqa  xmm1,xmm4

+

+        psrld   xmm4,17

+        pxor    xmm7,xmm2

+        pslld   xmm1,13

+        paddd   xmm6,xmm7

+        pxor    xmm0,xmm4

+        psrld   xmm4,19-17

+        pxor    xmm0,xmm1

+        pslld   xmm1,15-13

+        pxor    xmm0,xmm4

+        pxor    xmm0,xmm1

+        paddd   xmm6,xmm0

+        movdqa  xmm7,xmm13

+

+        movdqa  xmm2,xmm13

+

+        psrld   xmm7,6

+        movdqa  xmm1,xmm13

+        pslld   xmm2,7

+        movdqa  XMMWORD[(240-128)+rax],xmm6

+        paddd   xmm6,xmm8

+

+        psrld   xmm1,11

+        pxor    xmm7,xmm2

+        pslld   xmm2,21-7

+        paddd   xmm6,XMMWORD[96+rbp]

+        pxor    xmm7,xmm1

+

+        psrld   xmm1,25-11

+        movdqa  xmm0,xmm13

+

+        pxor    xmm7,xmm2

+        movdqa  xmm4,xmm13

+        pslld   xmm2,26-21

+        pandn   xmm0,xmm15

+        pand    xmm4,xmm14

+        pxor    xmm7,xmm1

+

+

+        movdqa  xmm1,xmm9

+        pxor    xmm7,xmm2

+        movdqa  xmm2,xmm9

+        psrld   xmm1,2

+        paddd   xmm6,xmm7

+        pxor    xmm0,xmm4

+        movdqa  xmm4,xmm10

+        movdqa  xmm7,xmm9

+        pslld   xmm2,10

+        pxor    xmm4,xmm9

+

+

+        psrld   xmm7,13

+        pxor    xmm1,xmm2

+        paddd   xmm6,xmm0

+        pslld   xmm2,19-10

+        pand    xmm3,xmm4

+        pxor    xmm1,xmm7

+

+

+        psrld   xmm7,22-13

+        pxor    xmm1,xmm2

+        movdqa  xmm8,xmm10

+        pslld   xmm2,30-19

+        pxor    xmm7,xmm1

+        pxor    xmm8,xmm3

+        paddd   xmm12,xmm6

+        pxor    xmm7,xmm2

+

+        paddd   xmm8,xmm6

+        paddd   xmm8,xmm7

+        lea     rbp,[256+rbp]

+        dec     ecx

+        jnz     NEAR $L$oop_16_xx

+

+        mov     ecx,1

+        lea     rbp,[((K256+128))]

+

+        movdqa  xmm7,XMMWORD[rbx]

+        cmp     ecx,DWORD[rbx]

+        pxor    xmm0,xmm0

+        cmovge  r8,rbp

+        cmp     ecx,DWORD[4+rbx]

+        movdqa  xmm6,xmm7

+        cmovge  r9,rbp

+        cmp     ecx,DWORD[8+rbx]

+        pcmpgtd xmm6,xmm0

+        cmovge  r10,rbp

+        cmp     ecx,DWORD[12+rbx]

+        paddd   xmm7,xmm6

+        cmovge  r11,rbp

+

+        movdqu  xmm0,XMMWORD[((0-128))+rdi]

+        pand    xmm8,xmm6

+        movdqu  xmm1,XMMWORD[((32-128))+rdi]

+        pand    xmm9,xmm6

+        movdqu  xmm2,XMMWORD[((64-128))+rdi]

+        pand    xmm10,xmm6

+        movdqu  xmm5,XMMWORD[((96-128))+rdi]

+        pand    xmm11,xmm6

+        paddd   xmm8,xmm0

+        movdqu  xmm0,XMMWORD[((128-128))+rdi]

+        pand    xmm12,xmm6

+        paddd   xmm9,xmm1

+        movdqu  xmm1,XMMWORD[((160-128))+rdi]

+        pand    xmm13,xmm6

+        paddd   xmm10,xmm2

+        movdqu  xmm2,XMMWORD[((192-128))+rdi]

+        pand    xmm14,xmm6

+        paddd   xmm11,xmm5

+        movdqu  xmm5,XMMWORD[((224-128))+rdi]

+        pand    xmm15,xmm6

+        paddd   xmm12,xmm0

+        paddd   xmm13,xmm1

+        movdqu  XMMWORD[(0-128)+rdi],xmm8

+        paddd   xmm14,xmm2

+        movdqu  XMMWORD[(32-128)+rdi],xmm9

+        paddd   xmm15,xmm5

+        movdqu  XMMWORD[(64-128)+rdi],xmm10

+        movdqu  XMMWORD[(96-128)+rdi],xmm11

+        movdqu  XMMWORD[(128-128)+rdi],xmm12

+        movdqu  XMMWORD[(160-128)+rdi],xmm13

+        movdqu  XMMWORD[(192-128)+rdi],xmm14

+        movdqu  XMMWORD[(224-128)+rdi],xmm15

+

+        movdqa  XMMWORD[rbx],xmm7

+        movdqa  xmm6,XMMWORD[$L$pbswap]

+        dec     edx

+        jnz     NEAR $L$oop

+

+        mov     edx,DWORD[280+rsp]

+        lea     rdi,[16+rdi]

+        lea     rsi,[64+rsi]

+        dec     edx

+        jnz     NEAR $L$oop_grande

+

+$L$done:

+        mov     rax,QWORD[272+rsp]

+

+        movaps  xmm6,XMMWORD[((-184))+rax]

+        movaps  xmm7,XMMWORD[((-168))+rax]

+        movaps  xmm8,XMMWORD[((-152))+rax]

+        movaps  xmm9,XMMWORD[((-136))+rax]

+        movaps  xmm10,XMMWORD[((-120))+rax]

+        movaps  xmm11,XMMWORD[((-104))+rax]

+        movaps  xmm12,XMMWORD[((-88))+rax]

+        movaps  xmm13,XMMWORD[((-72))+rax]

+        movaps  xmm14,XMMWORD[((-56))+rax]

+        movaps  xmm15,XMMWORD[((-40))+rax]

+        mov     rbp,QWORD[((-16))+rax]

+

+        mov     rbx,QWORD[((-8))+rax]

+

+        lea     rsp,[rax]

+

+$L$epilogue:

+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue

+        mov     rsi,QWORD[16+rsp]

+        DB      0F3h,0C3h               ;repret

+

+$L$SEH_end_sha256_multi_block:

+

+ALIGN   32

+sha256_multi_block_shaext:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_sha256_multi_block_shaext:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+

+

+

+_shaext_shortcut:

+        mov     rax,rsp

+

+        push    rbx

+

+        push    rbp

+

+        lea     rsp,[((-168))+rsp]

+        movaps  XMMWORD[rsp],xmm6

+        movaps  XMMWORD[16+rsp],xmm7

+        movaps  XMMWORD[32+rsp],xmm8

+        movaps  XMMWORD[48+rsp],xmm9

+        movaps  XMMWORD[(-120)+rax],xmm10

+        movaps  XMMWORD[(-104)+rax],xmm11

+        movaps  XMMWORD[(-88)+rax],xmm12

+        movaps  XMMWORD[(-72)+rax],xmm13

+        movaps  XMMWORD[(-56)+rax],xmm14

+        movaps  XMMWORD[(-40)+rax],xmm15

+        sub     rsp,288

+        shl     edx,1

+        and     rsp,-256

+        lea     rdi,[128+rdi]

+        mov     QWORD[272+rsp],rax

+$L$body_shaext:

+        lea     rbx,[256+rsp]

+        lea     rbp,[((K256_shaext+128))]

+

+$L$oop_grande_shaext:

+        mov     DWORD[280+rsp],edx

+        xor     edx,edx

+        mov     r8,QWORD[rsi]

+        mov     ecx,DWORD[8+rsi]

+        cmp     ecx,edx

+        cmovg   edx,ecx

+        test    ecx,ecx

+        mov     DWORD[rbx],ecx

+        cmovle  r8,rsp

+        mov     r9,QWORD[16+rsi]

+        mov     ecx,DWORD[24+rsi]

+        cmp     ecx,edx

+        cmovg   edx,ecx

+        test    ecx,ecx

+        mov     DWORD[4+rbx],ecx

+        cmovle  r9,rsp

+        test    edx,edx

+        jz      NEAR $L$done_shaext

+

+        movq    xmm12,QWORD[((0-128))+rdi]

+        movq    xmm4,QWORD[((32-128))+rdi]

+        movq    xmm13,QWORD[((64-128))+rdi]

+        movq    xmm5,QWORD[((96-128))+rdi]

+        movq    xmm8,QWORD[((128-128))+rdi]

+        movq    xmm9,QWORD[((160-128))+rdi]

+        movq    xmm10,QWORD[((192-128))+rdi]

+        movq    xmm11,QWORD[((224-128))+rdi]

+

+        punpckldq       xmm12,xmm4

+        punpckldq       xmm13,xmm5

+        punpckldq       xmm8,xmm9

+        punpckldq       xmm10,xmm11

+        movdqa  xmm3,XMMWORD[((K256_shaext-16))]

+

+        movdqa  xmm14,xmm12

+        movdqa  xmm15,xmm13

+        punpcklqdq      xmm12,xmm8

+        punpcklqdq      xmm13,xmm10

+        punpckhqdq      xmm14,xmm8

+        punpckhqdq      xmm15,xmm10

+

+        pshufd  xmm12,xmm12,27

+        pshufd  xmm13,xmm13,27

+        pshufd  xmm14,xmm14,27

+        pshufd  xmm15,xmm15,27

+        jmp     NEAR $L$oop_shaext

+

+ALIGN   32

+$L$oop_shaext:

+        movdqu  xmm4,XMMWORD[r8]

+        movdqu  xmm8,XMMWORD[r9]

+        movdqu  xmm5,XMMWORD[16+r8]

+        movdqu  xmm9,XMMWORD[16+r9]

+        movdqu  xmm6,XMMWORD[32+r8]

+DB      102,15,56,0,227

+        movdqu  xmm10,XMMWORD[32+r9]

+DB      102,68,15,56,0,195

+        movdqu  xmm7,XMMWORD[48+r8]

+        lea     r8,[64+r8]

+        movdqu  xmm11,XMMWORD[48+r9]

+        lea     r9,[64+r9]

+

+        movdqa  xmm0,XMMWORD[((0-128))+rbp]

+DB      102,15,56,0,235

+        paddd   xmm0,xmm4

+        pxor    xmm4,xmm12

+        movdqa  xmm1,xmm0

+        movdqa  xmm2,XMMWORD[((0-128))+rbp]

+DB      102,68,15,56,0,203

+        paddd   xmm2,xmm8

+        movdqa  XMMWORD[80+rsp],xmm13

+DB      69,15,56,203,236

+        pxor    xmm8,xmm14

+        movdqa  xmm0,xmm2

+        movdqa  XMMWORD[112+rsp],xmm15

+DB      69,15,56,203,254

+        pshufd  xmm0,xmm1,0x0e

+        pxor    xmm4,xmm12

+        movdqa  XMMWORD[64+rsp],xmm12

+DB      69,15,56,203,229

+        pshufd  xmm0,xmm2,0x0e

+        pxor    xmm8,xmm14

+        movdqa  XMMWORD[96+rsp],xmm14

+        movdqa  xmm1,XMMWORD[((16-128))+rbp]

+        paddd   xmm1,xmm5

+DB      102,15,56,0,243

+DB      69,15,56,203,247

+

+        movdqa  xmm0,xmm1

+        movdqa  xmm2,XMMWORD[((16-128))+rbp]

+        paddd   xmm2,xmm9

+DB      69,15,56,203,236

+        movdqa  xmm0,xmm2

+        prefetcht0      [127+r8]

+DB      102,15,56,0,251

+DB      102,68,15,56,0,211

+        prefetcht0      [127+r9]

+DB      69,15,56,203,254

+        pshufd  xmm0,xmm1,0x0e

+DB      102,68,15,56,0,219

+DB      15,56,204,229

+DB      69,15,56,203,229

+        pshufd  xmm0,xmm2,0x0e

+        movdqa  xmm1,XMMWORD[((32-128))+rbp]

+        paddd   xmm1,xmm6

+DB      69,15,56,203,247

+

+        movdqa  xmm0,xmm1

+        movdqa  xmm2,XMMWORD[((32-128))+rbp]

+        paddd   xmm2,xmm10

+DB      69,15,56,203,236

+DB      69,15,56,204,193

+        movdqa  xmm0,xmm2

+        movdqa  xmm3,xmm7

+DB      69,15,56,203,254

+        pshufd  xmm0,xmm1,0x0e

+DB      102,15,58,15,222,4

+        paddd   xmm4,xmm3

+        movdqa  xmm3,xmm11

+DB      102,65,15,58,15,218,4

+DB      15,56,204,238

+DB      69,15,56,203,229

+        pshufd  xmm0,xmm2,0x0e

+        movdqa  xmm1,XMMWORD[((48-128))+rbp]

+        paddd   xmm1,xmm7

+DB      69,15,56,203,247

+DB      69,15,56,204,202

+

+        movdqa  xmm0,xmm1

+        movdqa  xmm2,XMMWORD[((48-128))+rbp]

+        paddd   xmm8,xmm3

+        paddd   xmm2,xmm11

+DB      15,56,205,231

+DB      69,15,56,203,236

+        movdqa  xmm0,xmm2

+        movdqa  xmm3,xmm4

+DB      102,15,58,15,223,4

+DB      69,15,56,203,254

+DB      69,15,56,205,195

+        pshufd  xmm0,xmm1,0x0e

+        paddd   xmm5,xmm3

+        movdqa  xmm3,xmm8

+DB      102,65,15,58,15,219,4

+DB      15,56,204,247

+DB      69,15,56,203,229

+        pshufd  xmm0,xmm2,0x0e

+        movdqa  xmm1,XMMWORD[((64-128))+rbp]

+        paddd   xmm1,xmm4

+DB      69,15,56,203,247

+DB      69,15,56,204,211

+        movdqa  xmm0,xmm1

+        movdqa  xmm2,XMMWORD[((64-128))+rbp]

+        paddd   xmm9,xmm3

+        paddd   xmm2,xmm8

+DB      15,56,205,236

+DB      69,15,56,203,236

+        movdqa  xmm0,xmm2

+        movdqa  xmm3,xmm5

+DB      102,15,58,15,220,4

+DB      69,15,56,203,254

+DB      69,15,56,205,200

+        pshufd  xmm0,xmm1,0x0e

+        paddd   xmm6,xmm3

+        movdqa  xmm3,xmm9

+DB      102,65,15,58,15,216,4

+DB      15,56,204,252

+DB      69,15,56,203,229

+        pshufd  xmm0,xmm2,0x0e

+        movdqa  xmm1,XMMWORD[((80-128))+rbp]

+        paddd   xmm1,xmm5

+DB      69,15,56,203,247

+DB      69,15,56,204,216

+        movdqa  xmm0,xmm1

+        movdqa  xmm2,XMMWORD[((80-128))+rbp]

+        paddd   xmm10,xmm3

+        paddd   xmm2,xmm9

+DB      15,56,205,245

+DB      69,15,56,203,236

+        movdqa  xmm0,xmm2

+        movdqa  xmm3,xmm6

+DB      102,15,58,15,221,4

+DB      69,15,56,203,254

+DB      69,15,56,205,209

+        pshufd  xmm0,xmm1,0x0e

+        paddd   xmm7,xmm3

+        movdqa  xmm3,xmm10

+DB      102,65,15,58,15,217,4

+DB      15,56,204,229

+DB      69,15,56,203,229

+        pshufd  xmm0,xmm2,0x0e

+        movdqa  xmm1,XMMWORD[((96-128))+rbp]

+        paddd   xmm1,xmm6

+DB      69,15,56,203,247

+DB      69,15,56,204,193

+        movdqa  xmm0,xmm1

+        movdqa  xmm2,XMMWORD[((96-128))+rbp]

+        paddd   xmm11,xmm3

+        paddd   xmm2,xmm10

+DB      15,56,205,254

+DB      69,15,56,203,236

+        movdqa  xmm0,xmm2

+        movdqa  xmm3,xmm7

+DB      102,15,58,15,222,4

+DB      69,15,56,203,254

+DB      69,15,56,205,218

+        pshufd  xmm0,xmm1,0x0e

+        paddd   xmm4,xmm3

+        movdqa  xmm3,xmm11

+DB      102,65,15,58,15,218,4

+DB      15,56,204,238

+DB      69,15,56,203,229

+        pshufd  xmm0,xmm2,0x0e

+        movdqa  xmm1,XMMWORD[((112-128))+rbp]

+        paddd   xmm1,xmm7

+DB      69,15,56,203,247

+DB      69,15,56,204,202

+        movdqa  xmm0,xmm1

+        movdqa  xmm2,XMMWORD[((112-128))+rbp]

+        paddd   xmm8,xmm3

+        paddd   xmm2,xmm11

+DB      15,56,205,231

+DB      69,15,56,203,236

+        movdqa  xmm0,xmm2

+        movdqa  xmm3,xmm4

+DB      102,15,58,15,223,4

+DB      69,15,56,203,254

+DB      69,15,56,205,195

+        pshufd  xmm0,xmm1,0x0e

+        paddd   xmm5,xmm3

+        movdqa  xmm3,xmm8

+DB      102,65,15,58,15,219,4

+DB      15,56,204,247

+DB      69,15,56,203,229

+        pshufd  xmm0,xmm2,0x0e

+        movdqa  xmm1,XMMWORD[((128-128))+rbp]

+        paddd   xmm1,xmm4

+DB      69,15,56,203,247

+DB      69,15,56,204,211

+        movdqa  xmm0,xmm1

+        movdqa  xmm2,XMMWORD[((128-128))+rbp]

+        paddd   xmm9,xmm3

+        paddd   xmm2,xmm8

+DB      15,56,205,236

+DB      69,15,56,203,236

+        movdqa  xmm0,xmm2

+        movdqa  xmm3,xmm5

+DB      102,15,58,15,220,4

+DB      69,15,56,203,254

+DB      69,15,56,205,200

+        pshufd  xmm0,xmm1,0x0e

+        paddd   xmm6,xmm3

+        movdqa  xmm3,xmm9

+DB      102,65,15,58,15,216,4

+DB      15,56,204,252

+DB      69,15,56,203,229

+        pshufd  xmm0,xmm2,0x0e

+        movdqa  xmm1,XMMWORD[((144-128))+rbp]

+        paddd   xmm1,xmm5

+DB      69,15,56,203,247

+DB      69,15,56,204,216

+        movdqa  xmm0,xmm1

+        movdqa  xmm2,XMMWORD[((144-128))+rbp]

+        paddd   xmm10,xmm3

+        paddd   xmm2,xmm9

+DB      15,56,205,245

+DB      69,15,56,203,236

+        movdqa  xmm0,xmm2

+        movdqa  xmm3,xmm6

+DB      102,15,58,15,221,4

+DB      69,15,56,203,254

+DB      69,15,56,205,209

+        pshufd  xmm0,xmm1,0x0e

+        paddd   xmm7,xmm3

+        movdqa  xmm3,xmm10

+DB      102,65,15,58,15,217,4

+DB      15,56,204,229

+DB      69,15,56,203,229

+        pshufd  xmm0,xmm2,0x0e

+        movdqa  xmm1,XMMWORD[((160-128))+rbp]

+        paddd   xmm1,xmm6

+DB      69,15,56,203,247

+DB      69,15,56,204,193

+        movdqa  xmm0,xmm1

+        movdqa  xmm2,XMMWORD[((160-128))+rbp]

+        paddd   xmm11,xmm3

+        paddd   xmm2,xmm10

+DB      15,56,205,254

+DB      69,15,56,203,236

+        movdqa  xmm0,xmm2

+        movdqa  xmm3,xmm7

+DB      102,15,58,15,222,4

+DB      69,15,56,203,254

+DB      69,15,56,205,218

+        pshufd  xmm0,xmm1,0x0e

+        paddd   xmm4,xmm3

+        movdqa  xmm3,xmm11

+DB      102,65,15,58,15,218,4

+DB      15,56,204,238

+DB      69,15,56,203,229

+        pshufd  xmm0,xmm2,0x0e

+        movdqa  xmm1,XMMWORD[((176-128))+rbp]

+        paddd   xmm1,xmm7

+DB      69,15,56,203,247

+DB      69,15,56,204,202

+        movdqa  xmm0,xmm1

+        movdqa  xmm2,XMMWORD[((176-128))+rbp]

+        paddd   xmm8,xmm3

+        paddd   xmm2,xmm11

+DB      15,56,205,231

+DB      69,15,56,203,236

+        movdqa  xmm0,xmm2

+        movdqa  xmm3,xmm4

+DB      102,15,58,15,223,4

+DB      69,15,56,203,254

+DB      69,15,56,205,195

+        pshufd  xmm0,xmm1,0x0e

+        paddd   xmm5,xmm3

+        movdqa  xmm3,xmm8

+DB      102,65,15,58,15,219,4

+DB      15,56,204,247

+DB      69,15,56,203,229

+        pshufd  xmm0,xmm2,0x0e

+        movdqa  xmm1,XMMWORD[((192-128))+rbp]

+        paddd   xmm1,xmm4

+DB      69,15,56,203,247

+DB      69,15,56,204,211

+        movdqa  xmm0,xmm1

+        movdqa  xmm2,XMMWORD[((192-128))+rbp]

+        paddd   xmm9,xmm3

+        paddd   xmm2,xmm8

+DB      15,56,205,236

+DB      69,15,56,203,236

+        movdqa  xmm0,xmm2

+        movdqa  xmm3,xmm5

+DB      102,15,58,15,220,4

+DB      69,15,56,203,254

+DB      69,15,56,205,200

+        pshufd  xmm0,xmm1,0x0e

+        paddd   xmm6,xmm3

+        movdqa  xmm3,xmm9

+DB      102,65,15,58,15,216,4

+DB      15,56,204,252

+DB      69,15,56,203,229

+        pshufd  xmm0,xmm2,0x0e

+        movdqa  xmm1,XMMWORD[((208-128))+rbp]

+        paddd   xmm1,xmm5

+DB      69,15,56,203,247

+DB      69,15,56,204,216

+        movdqa  xmm0,xmm1

+        movdqa  xmm2,XMMWORD[((208-128))+rbp]

+        paddd   xmm10,xmm3

+        paddd   xmm2,xmm9

+DB      15,56,205,245

+DB      69,15,56,203,236

+        movdqa  xmm0,xmm2

+        movdqa  xmm3,xmm6

+DB      102,15,58,15,221,4

+DB      69,15,56,203,254

+DB      69,15,56,205,209

+        pshufd  xmm0,xmm1,0x0e

+        paddd   xmm7,xmm3

+        movdqa  xmm3,xmm10

+DB      102,65,15,58,15,217,4

+        nop

+DB      69,15,56,203,229

+        pshufd  xmm0,xmm2,0x0e

+        movdqa  xmm1,XMMWORD[((224-128))+rbp]

+        paddd   xmm1,xmm6

+DB      69,15,56,203,247

+

+        movdqa  xmm0,xmm1

+        movdqa  xmm2,XMMWORD[((224-128))+rbp]

+        paddd   xmm11,xmm3

+        paddd   xmm2,xmm10

+DB      15,56,205,254

+        nop

+DB      69,15,56,203,236

+        movdqa  xmm0,xmm2

+        mov     ecx,1

+        pxor    xmm6,xmm6

+DB      69,15,56,203,254

+DB      69,15,56,205,218

+        pshufd  xmm0,xmm1,0x0e

+        movdqa  xmm1,XMMWORD[((240-128))+rbp]

+        paddd   xmm1,xmm7

+        movq    xmm7,QWORD[rbx]

+        nop

+DB      69,15,56,203,229

+        pshufd  xmm0,xmm2,0x0e

+        movdqa  xmm2,XMMWORD[((240-128))+rbp]

+        paddd   xmm2,xmm11

+DB      69,15,56,203,247

+

+        movdqa  xmm0,xmm1

+        cmp     ecx,DWORD[rbx]

+        cmovge  r8,rsp

+        cmp     ecx,DWORD[4+rbx]

+        cmovge  r9,rsp

+        pshufd  xmm9,xmm7,0x00

+DB      69,15,56,203,236

+        movdqa  xmm0,xmm2

+        pshufd  xmm10,xmm7,0x55

+        movdqa  xmm11,xmm7

+DB      69,15,56,203,254

+        pshufd  xmm0,xmm1,0x0e

+        pcmpgtd xmm9,xmm6

+        pcmpgtd xmm10,xmm6

+DB      69,15,56,203,229

+        pshufd  xmm0,xmm2,0x0e

+        pcmpgtd xmm11,xmm6

+        movdqa  xmm3,XMMWORD[((K256_shaext-16))]

+DB      69,15,56,203,247

+

+        pand    xmm13,xmm9

+        pand    xmm15,xmm10

+        pand    xmm12,xmm9

+        pand    xmm14,xmm10

+        paddd   xmm11,xmm7

+

+        paddd   xmm13,XMMWORD[80+rsp]

+        paddd   xmm15,XMMWORD[112+rsp]

+        paddd   xmm12,XMMWORD[64+rsp]

+        paddd   xmm14,XMMWORD[96+rsp]

+

+        movq    QWORD[rbx],xmm11

+        dec     edx

+        jnz     NEAR $L$oop_shaext

+

+        mov     edx,DWORD[280+rsp]

+

+        pshufd  xmm12,xmm12,27

+        pshufd  xmm13,xmm13,27

+        pshufd  xmm14,xmm14,27

+        pshufd  xmm15,xmm15,27

+

+        movdqa  xmm5,xmm12

+        movdqa  xmm6,xmm13

+        punpckldq       xmm12,xmm14

+        punpckhdq       xmm5,xmm14

+        punpckldq       xmm13,xmm15

+        punpckhdq       xmm6,xmm15

+

+        movq    QWORD[(0-128)+rdi],xmm12

+        psrldq  xmm12,8

+        movq    QWORD[(128-128)+rdi],xmm5

+        psrldq  xmm5,8

+        movq    QWORD[(32-128)+rdi],xmm12

+        movq    QWORD[(160-128)+rdi],xmm5

+

+        movq    QWORD[(64-128)+rdi],xmm13

+        psrldq  xmm13,8

+        movq    QWORD[(192-128)+rdi],xmm6

+        psrldq  xmm6,8

+        movq    QWORD[(96-128)+rdi],xmm13

+        movq    QWORD[(224-128)+rdi],xmm6

+

+        lea     rdi,[8+rdi]

+        lea     rsi,[32+rsi]

+        dec     edx

+        jnz     NEAR $L$oop_grande_shaext

+

+$L$done_shaext:

+

+        movaps  xmm6,XMMWORD[((-184))+rax]

+        movaps  xmm7,XMMWORD[((-168))+rax]

+        movaps  xmm8,XMMWORD[((-152))+rax]

+        movaps  xmm9,XMMWORD[((-136))+rax]

+        movaps  xmm10,XMMWORD[((-120))+rax]

+        movaps  xmm11,XMMWORD[((-104))+rax]

+        movaps  xmm12,XMMWORD[((-88))+rax]

+        movaps  xmm13,XMMWORD[((-72))+rax]

+        movaps  xmm14,XMMWORD[((-56))+rax]

+        movaps  xmm15,XMMWORD[((-40))+rax]

+        mov     rbp,QWORD[((-16))+rax]

+

+        mov     rbx,QWORD[((-8))+rax]

+

+        lea     rsp,[rax]

+

+$L$epilogue_shaext:

+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue

+        mov     rsi,QWORD[16+rsp]

+        DB      0F3h,0C3h               ;repret

+

+$L$SEH_end_sha256_multi_block_shaext:

+ALIGN   256

+K256:

+        DD      1116352408,1116352408,1116352408,1116352408

+        DD      1116352408,1116352408,1116352408,1116352408

+        DD      1899447441,1899447441,1899447441,1899447441

+        DD      1899447441,1899447441,1899447441,1899447441

+        DD      3049323471,3049323471,3049323471,3049323471

+        DD      3049323471,3049323471,3049323471,3049323471

+        DD      3921009573,3921009573,3921009573,3921009573

+        DD      3921009573,3921009573,3921009573,3921009573

+        DD      961987163,961987163,961987163,961987163

+        DD      961987163,961987163,961987163,961987163

+        DD      1508970993,1508970993,1508970993,1508970993

+        DD      1508970993,1508970993,1508970993,1508970993

+        DD      2453635748,2453635748,2453635748,2453635748

+        DD      2453635748,2453635748,2453635748,2453635748

+        DD      2870763221,2870763221,2870763221,2870763221

+        DD      2870763221,2870763221,2870763221,2870763221

+        DD      3624381080,3624381080,3624381080,3624381080

+        DD      3624381080,3624381080,3624381080,3624381080

+        DD      310598401,310598401,310598401,310598401

+        DD      310598401,310598401,310598401,310598401

+        DD      607225278,607225278,607225278,607225278

+        DD      607225278,607225278,607225278,607225278

+        DD      1426881987,1426881987,1426881987,1426881987

+        DD      1426881987,1426881987,1426881987,1426881987

+        DD      1925078388,1925078388,1925078388,1925078388

+        DD      1925078388,1925078388,1925078388,1925078388

+        DD      2162078206,2162078206,2162078206,2162078206

+        DD      2162078206,2162078206,2162078206,2162078206

+        DD      2614888103,2614888103,2614888103,2614888103

+        DD      2614888103,2614888103,2614888103,2614888103

+        DD      3248222580,3248222580,3248222580,3248222580

+        DD      3248222580,3248222580,3248222580,3248222580

+        DD      3835390401,3835390401,3835390401,3835390401

+        DD      3835390401,3835390401,3835390401,3835390401

+        DD      4022224774,4022224774,4022224774,4022224774

+        DD      4022224774,4022224774,4022224774,4022224774

+        DD      264347078,264347078,264347078,264347078

+        DD      264347078,264347078,264347078,264347078

+        DD      604807628,604807628,604807628,604807628

+        DD      604807628,604807628,604807628,604807628

+        DD      770255983,770255983,770255983,770255983

+        DD      770255983,770255983,770255983,770255983

+        DD      1249150122,1249150122,1249150122,1249150122

+        DD      1249150122,1249150122,1249150122,1249150122

+        DD      1555081692,1555081692,1555081692,1555081692

+        DD      1555081692,1555081692,1555081692,1555081692

+        DD      1996064986,1996064986,1996064986,1996064986

+        DD      1996064986,1996064986,1996064986,1996064986

+        DD      2554220882,2554220882,2554220882,2554220882

+        DD      2554220882,2554220882,2554220882,2554220882

+        DD      2821834349,2821834349,2821834349,2821834349

+        DD      2821834349,2821834349,2821834349,2821834349

+        DD      2952996808,2952996808,2952996808,2952996808

+        DD      2952996808,2952996808,2952996808,2952996808

+        DD      3210313671,3210313671,3210313671,3210313671

+        DD      3210313671,3210313671,3210313671,3210313671

+        DD      3336571891,3336571891,3336571891,3336571891

+        DD      3336571891,3336571891,3336571891,3336571891

+        DD      3584528711,3584528711,3584528711,3584528711

+        DD      3584528711,3584528711,3584528711,3584528711

+        DD      113926993,113926993,113926993,113926993

+        DD      113926993,113926993,113926993,113926993

+        DD      338241895,338241895,338241895,338241895

+        DD      338241895,338241895,338241895,338241895

+        DD      666307205,666307205,666307205,666307205

+        DD      666307205,666307205,666307205,666307205

+        DD      773529912,773529912,773529912,773529912

+        DD      773529912,773529912,773529912,773529912

+        DD      1294757372,1294757372,1294757372,1294757372

+        DD      1294757372,1294757372,1294757372,1294757372

+        DD      1396182291,1396182291,1396182291,1396182291

+        DD      1396182291,1396182291,1396182291,1396182291

+        DD      1695183700,1695183700,1695183700,1695183700

+        DD      1695183700,1695183700,1695183700,1695183700

+        DD      1986661051,1986661051,1986661051,1986661051

+        DD      1986661051,1986661051,1986661051,1986661051

+        DD      2177026350,2177026350,2177026350,2177026350

+        DD      2177026350,2177026350,2177026350,2177026350

+        DD      2456956037,2456956037,2456956037,2456956037

+        DD      2456956037,2456956037,2456956037,2456956037

+        DD      2730485921,2730485921,2730485921,2730485921

+        DD      2730485921,2730485921,2730485921,2730485921

+        DD      2820302411,2820302411,2820302411,2820302411

+        DD      2820302411,2820302411,2820302411,2820302411

+        DD      3259730800,3259730800,3259730800,3259730800

+        DD      3259730800,3259730800,3259730800,3259730800

+        DD      3345764771,3345764771,3345764771,3345764771

+        DD      3345764771,3345764771,3345764771,3345764771

+        DD      3516065817,3516065817,3516065817,3516065817

+        DD      3516065817,3516065817,3516065817,3516065817

+        DD      3600352804,3600352804,3600352804,3600352804

+        DD      3600352804,3600352804,3600352804,3600352804

+        DD      4094571909,4094571909,4094571909,4094571909

+        DD      4094571909,4094571909,4094571909,4094571909

+        DD      275423344,275423344,275423344,275423344

+        DD      275423344,275423344,275423344,275423344

+        DD      430227734,430227734,430227734,430227734

+        DD      430227734,430227734,430227734,430227734

+        DD      506948616,506948616,506948616,506948616

+        DD      506948616,506948616,506948616,506948616

+        DD      659060556,659060556,659060556,659060556

+        DD      659060556,659060556,659060556,659060556

+        DD      883997877,883997877,883997877,883997877

+        DD      883997877,883997877,883997877,883997877

+        DD      958139571,958139571,958139571,958139571

+        DD      958139571,958139571,958139571,958139571

+        DD      1322822218,1322822218,1322822218,1322822218

+        DD      1322822218,1322822218,1322822218,1322822218

+        DD      1537002063,1537002063,1537002063,1537002063

+        DD      1537002063,1537002063,1537002063,1537002063

+        DD      1747873779,1747873779,1747873779,1747873779

+        DD      1747873779,1747873779,1747873779,1747873779

+        DD      1955562222,1955562222,1955562222,1955562222

+        DD      1955562222,1955562222,1955562222,1955562222

+        DD      2024104815,2024104815,2024104815,2024104815

+        DD      2024104815,2024104815,2024104815,2024104815

+        DD      2227730452,2227730452,2227730452,2227730452

+        DD      2227730452,2227730452,2227730452,2227730452

+        DD      2361852424,2361852424,2361852424,2361852424

+        DD      2361852424,2361852424,2361852424,2361852424

+        DD      2428436474,2428436474,2428436474,2428436474

+        DD      2428436474,2428436474,2428436474,2428436474

+        DD      2756734187,2756734187,2756734187,2756734187

+        DD      2756734187,2756734187,2756734187,2756734187

+        DD      3204031479,3204031479,3204031479,3204031479

+        DD      3204031479,3204031479,3204031479,3204031479

+        DD      3329325298,3329325298,3329325298,3329325298

+        DD      3329325298,3329325298,3329325298,3329325298

+$L$pbswap:

+        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f

+        DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f

+K256_shaext:

+        DD      0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5

+        DD      0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5

+        DD      0xd807aa98,0x12835b01,0x243185be,0x550c7dc3

+        DD      0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174

+        DD      0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc

+        DD      0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da

+        DD      0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7

+        DD      0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967

+        DD      0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13

+        DD      0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85

+        DD      0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3

+        DD      0xd192e819,0xd6990624,0xf40e3585,0x106aa070

+        DD      0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5

+        DD      0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3

+        DD      0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208

+        DD      0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2

+DB      83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111

+DB      99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114

+DB      32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71

+DB      65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112

+DB      101,110,115,115,108,46,111,114,103,62,0

+EXTERN  __imp_RtlVirtualUnwind

+

+ALIGN   16

+se_handler:

+        push    rsi

+        push    rdi

+        push    rbx

+        push    rbp

+        push    r12

+        push    r13

+        push    r14

+        push    r15

+        pushfq

+        sub     rsp,64

+

+        mov     rax,QWORD[120+r8]

+        mov     rbx,QWORD[248+r8]

+

+        mov     rsi,QWORD[8+r9]

+        mov     r11,QWORD[56+r9]

+

+        mov     r10d,DWORD[r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jb      NEAR $L$in_prologue

+

+        mov     rax,QWORD[152+r8]

+

+        mov     r10d,DWORD[4+r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jae     NEAR $L$in_prologue

+

+        mov     rax,QWORD[272+rax]

+

+        mov     rbx,QWORD[((-8))+rax]

+        mov     rbp,QWORD[((-16))+rax]

+        mov     QWORD[144+r8],rbx

+        mov     QWORD[160+r8],rbp

+

+        lea     rsi,[((-24-160))+rax]

+        lea     rdi,[512+r8]

+        mov     ecx,20

+        DD      0xa548f3fc

+

+$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[40+r9]

+        mov     rsi,r8

+        mov     ecx,154

+        DD      0xa548f3fc

+

+        mov     rsi,r9

+        xor     rcx,rcx

+        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

+        popfq

+        pop     r15

+        pop     r14

+        pop     r13

+        pop     r12

+        pop     rbp

+        pop     rbx

+        pop     rdi

+        pop     rsi

+        DB      0F3h,0C3h               ;repret

+

+section .pdata rdata align=4

+ALIGN   4

+        DD      $L$SEH_begin_sha256_multi_block wrt ..imagebase

+        DD      $L$SEH_end_sha256_multi_block wrt ..imagebase

+        DD      $L$SEH_info_sha256_multi_block wrt ..imagebase

+        DD      $L$SEH_begin_sha256_multi_block_shaext wrt ..imagebase

+        DD      $L$SEH_end_sha256_multi_block_shaext wrt ..imagebase

+        DD      $L$SEH_info_sha256_multi_block_shaext wrt ..imagebase

+section .xdata rdata align=8

+ALIGN   8

+$L$SEH_info_sha256_multi_block:

+DB      9,0,0,0

+        DD      se_handler wrt ..imagebase

+        DD      $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase

+$L$SEH_info_sha256_multi_block_shaext:

+DB      9,0,0,0

+        DD      se_handler wrt ..imagebase

+        DD      $L$body_shaext wrt ..imagebase,$L$epilogue_shaext
wrt ..imagebase

diff --git a/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
x86_64.nasm

b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-x86_64.nasm
new file mode 100644
index 0000000000..70e49862a3
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-
x86_64.nasm

@@ -0,0 +1,3313 @@
+; WARNING: do not edit!

+; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl

+;

+; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
Reserved.


+;

+; Licensed under the OpenSSL license (the "License").  You may not use

+; this file except in compliance with the License.  You can obtain a
copy


+; in the file LICENSE in the source distribution or at

+; https://www.openssl.org/source/license.html

+

+default rel

+%define XMMWORD

+%define YMMWORD

+%define ZMMWORD

+section .text code align=64

+

+

+EXTERN  OPENSSL_ia32cap_P

+global  sha256_block_data_order

+

+ALIGN   16

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

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+

+

+

+        lea     r11,[OPENSSL_ia32cap_P]

+        mov     r9d,DWORD[r11]

+        mov     r10d,DWORD[4+r11]

+        mov     r11d,DWORD[8+r11]

+        test    r11d,536870912

+        jnz     NEAR _shaext_shortcut

+        test    r10d,512

+        jnz     NEAR $L$ssse3_shortcut

+        mov     rax,rsp

+

+        push    rbx

+

+        push    rbp

+

+        push    r12

+

+        push    r13

+

+        push    r14

+

+        push    r15

+

+        shl     rdx,4

+        sub     rsp,16*4+4*8

+        lea     rdx,[rdx*4+rsi]

+        and     rsp,-64

+        mov     QWORD[((64+0))+rsp],rdi

+        mov     QWORD[((64+8))+rsp],rsi

+        mov     QWORD[((64+16))+rsp],rdx

+        mov     QWORD[88+rsp],rax

+

+$L$prologue:

+

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

+        mov     edi,ebx

+        lea     rbp,[K256]

+        xor     edi,ecx

+        mov     r12d,DWORD[rsi]

+        mov     r13d,r8d

+        mov     r14d,eax

+        bswap   r12d

+        ror     r13d,14

+        mov     r15d,r9d

+

+        xor     r13d,r8d

+        ror     r14d,9

+        xor     r15d,r10d

+

+        mov     DWORD[rsp],r12d

+        xor     r14d,eax

+        and     r15d,r8d

+

+        ror     r13d,5

+        add     r12d,r11d

+        xor     r15d,r10d

+

+        ror     r14d,11

+        xor     r13d,r8d

+        add     r12d,r15d

+

+        mov     r15d,eax

+        add     r12d,DWORD[rbp]

+        xor     r14d,eax

+

+        xor     r15d,ebx

+        ror     r13d,6

+        mov     r11d,ebx

+

+        and     edi,r15d

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     r11d,edi

+        add     edx,r12d

+        add     r11d,r12d

+

+        lea     rbp,[4+rbp]

+        add     r11d,r14d

+        mov     r12d,DWORD[4+rsi]

+        mov     r13d,edx

+        mov     r14d,r11d

+        bswap   r12d

+        ror     r13d,14

+        mov     edi,r8d

+

+        xor     r13d,edx

+        ror     r14d,9

+        xor     edi,r9d

+

+        mov     DWORD[4+rsp],r12d

+        xor     r14d,r11d

+        and     edi,edx

+

+        ror     r13d,5

+        add     r12d,r10d

+        xor     edi,r9d

+

+        ror     r14d,11

+        xor     r13d,edx

+        add     r12d,edi

+

+        mov     edi,r11d

+        add     r12d,DWORD[rbp]

+        xor     r14d,r11d

+

+        xor     edi,eax

+        ror     r13d,6

+        mov     r10d,eax

+

+        and     r15d,edi

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     r10d,r15d

+        add     ecx,r12d

+        add     r10d,r12d

+

+        lea     rbp,[4+rbp]

+        add     r10d,r14d

+        mov     r12d,DWORD[8+rsi]

+        mov     r13d,ecx

+        mov     r14d,r10d

+        bswap   r12d

+        ror     r13d,14

+        mov     r15d,edx

+

+        xor     r13d,ecx

+        ror     r14d,9

+        xor     r15d,r8d

+

+        mov     DWORD[8+rsp],r12d

+        xor     r14d,r10d

+        and     r15d,ecx

+

+        ror     r13d,5

+        add     r12d,r9d

+        xor     r15d,r8d

+

+        ror     r14d,11

+        xor     r13d,ecx

+        add     r12d,r15d

+

+        mov     r15d,r10d

+        add     r12d,DWORD[rbp]

+        xor     r14d,r10d

+

+        xor     r15d,r11d

+        ror     r13d,6

+        mov     r9d,r11d

+

+        and     edi,r15d

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     r9d,edi

+        add     ebx,r12d

+        add     r9d,r12d

+

+        lea     rbp,[4+rbp]

+        add     r9d,r14d

+        mov     r12d,DWORD[12+rsi]

+        mov     r13d,ebx

+        mov     r14d,r9d

+        bswap   r12d

+        ror     r13d,14

+        mov     edi,ecx

+

+        xor     r13d,ebx

+        ror     r14d,9

+        xor     edi,edx

+

+        mov     DWORD[12+rsp],r12d

+        xor     r14d,r9d

+        and     edi,ebx

+

+        ror     r13d,5

+        add     r12d,r8d

+        xor     edi,edx

+

+        ror     r14d,11

+        xor     r13d,ebx

+        add     r12d,edi

+

+        mov     edi,r9d

+        add     r12d,DWORD[rbp]

+        xor     r14d,r9d

+

+        xor     edi,r10d

+        ror     r13d,6

+        mov     r8d,r10d

+

+        and     r15d,edi

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     r8d,r15d

+        add     eax,r12d

+        add     r8d,r12d

+

+        lea     rbp,[20+rbp]

+        add     r8d,r14d

+        mov     r12d,DWORD[16+rsi]

+        mov     r13d,eax

+        mov     r14d,r8d

+        bswap   r12d

+        ror     r13d,14

+        mov     r15d,ebx

+

+        xor     r13d,eax

+        ror     r14d,9

+        xor     r15d,ecx

+

+        mov     DWORD[16+rsp],r12d

+        xor     r14d,r8d

+        and     r15d,eax

+

+        ror     r13d,5

+        add     r12d,edx

+        xor     r15d,ecx

+

+        ror     r14d,11

+        xor     r13d,eax

+        add     r12d,r15d

+

+        mov     r15d,r8d

+        add     r12d,DWORD[rbp]

+        xor     r14d,r8d

+

+        xor     r15d,r9d

+        ror     r13d,6

+        mov     edx,r9d

+

+        and     edi,r15d

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     edx,edi

+        add     r11d,r12d

+        add     edx,r12d

+

+        lea     rbp,[4+rbp]

+        add     edx,r14d

+        mov     r12d,DWORD[20+rsi]

+        mov     r13d,r11d

+        mov     r14d,edx

+        bswap   r12d

+        ror     r13d,14

+        mov     edi,eax

+

+        xor     r13d,r11d

+        ror     r14d,9

+        xor     edi,ebx

+

+        mov     DWORD[20+rsp],r12d

+        xor     r14d,edx

+        and     edi,r11d

+

+        ror     r13d,5

+        add     r12d,ecx

+        xor     edi,ebx

+

+        ror     r14d,11

+        xor     r13d,r11d

+        add     r12d,edi

+

+        mov     edi,edx

+        add     r12d,DWORD[rbp]

+        xor     r14d,edx

+

+        xor     edi,r8d

+        ror     r13d,6

+        mov     ecx,r8d

+

+        and     r15d,edi

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     ecx,r15d

+        add     r10d,r12d

+        add     ecx,r12d

+

+        lea     rbp,[4+rbp]

+        add     ecx,r14d

+        mov     r12d,DWORD[24+rsi]

+        mov     r13d,r10d

+        mov     r14d,ecx

+        bswap   r12d

+        ror     r13d,14

+        mov     r15d,r11d

+

+        xor     r13d,r10d

+        ror     r14d,9

+        xor     r15d,eax

+

+        mov     DWORD[24+rsp],r12d

+        xor     r14d,ecx

+        and     r15d,r10d

+

+        ror     r13d,5

+        add     r12d,ebx

+        xor     r15d,eax

+

+        ror     r14d,11

+        xor     r13d,r10d

+        add     r12d,r15d

+

+        mov     r15d,ecx

+        add     r12d,DWORD[rbp]

+        xor     r14d,ecx

+

+        xor     r15d,edx

+        ror     r13d,6

+        mov     ebx,edx

+

+        and     edi,r15d

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     ebx,edi

+        add     r9d,r12d

+        add     ebx,r12d

+

+        lea     rbp,[4+rbp]

+        add     ebx,r14d

+        mov     r12d,DWORD[28+rsi]

+        mov     r13d,r9d

+        mov     r14d,ebx

+        bswap   r12d

+        ror     r13d,14

+        mov     edi,r10d

+

+        xor     r13d,r9d

+        ror     r14d,9

+        xor     edi,r11d

+

+        mov     DWORD[28+rsp],r12d

+        xor     r14d,ebx

+        and     edi,r9d

+

+        ror     r13d,5

+        add     r12d,eax

+        xor     edi,r11d

+

+        ror     r14d,11

+        xor     r13d,r9d

+        add     r12d,edi

+

+        mov     edi,ebx

+        add     r12d,DWORD[rbp]

+        xor     r14d,ebx

+

+        xor     edi,ecx

+        ror     r13d,6

+        mov     eax,ecx

+

+        and     r15d,edi

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     eax,r15d

+        add     r8d,r12d

+        add     eax,r12d

+

+        lea     rbp,[20+rbp]

+        add     eax,r14d

+        mov     r12d,DWORD[32+rsi]

+        mov     r13d,r8d

+        mov     r14d,eax

+        bswap   r12d

+        ror     r13d,14

+        mov     r15d,r9d

+

+        xor     r13d,r8d

+        ror     r14d,9

+        xor     r15d,r10d

+

+        mov     DWORD[32+rsp],r12d

+        xor     r14d,eax

+        and     r15d,r8d

+

+        ror     r13d,5

+        add     r12d,r11d

+        xor     r15d,r10d

+

+        ror     r14d,11

+        xor     r13d,r8d

+        add     r12d,r15d

+

+        mov     r15d,eax

+        add     r12d,DWORD[rbp]

+        xor     r14d,eax

+

+        xor     r15d,ebx

+        ror     r13d,6

+        mov     r11d,ebx

+

+        and     edi,r15d

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     r11d,edi

+        add     edx,r12d

+        add     r11d,r12d

+

+        lea     rbp,[4+rbp]

+        add     r11d,r14d

+        mov     r12d,DWORD[36+rsi]

+        mov     r13d,edx

+        mov     r14d,r11d

+        bswap   r12d

+        ror     r13d,14

+        mov     edi,r8d

+

+        xor     r13d,edx

+        ror     r14d,9

+        xor     edi,r9d

+

+        mov     DWORD[36+rsp],r12d

+        xor     r14d,r11d

+        and     edi,edx

+

+        ror     r13d,5

+        add     r12d,r10d

+        xor     edi,r9d

+

+        ror     r14d,11

+        xor     r13d,edx

+        add     r12d,edi

+

+        mov     edi,r11d

+        add     r12d,DWORD[rbp]

+        xor     r14d,r11d

+

+        xor     edi,eax

+        ror     r13d,6

+        mov     r10d,eax

+

+        and     r15d,edi

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     r10d,r15d

+        add     ecx,r12d

+        add     r10d,r12d

+

+        lea     rbp,[4+rbp]

+        add     r10d,r14d

+        mov     r12d,DWORD[40+rsi]

+        mov     r13d,ecx

+        mov     r14d,r10d

+        bswap   r12d

+        ror     r13d,14

+        mov     r15d,edx

+

+        xor     r13d,ecx

+        ror     r14d,9

+        xor     r15d,r8d

+

+        mov     DWORD[40+rsp],r12d

+        xor     r14d,r10d

+        and     r15d,ecx

+

+        ror     r13d,5

+        add     r12d,r9d

+        xor     r15d,r8d

+

+        ror     r14d,11

+        xor     r13d,ecx

+        add     r12d,r15d

+

+        mov     r15d,r10d

+        add     r12d,DWORD[rbp]

+        xor     r14d,r10d

+

+        xor     r15d,r11d

+        ror     r13d,6

+        mov     r9d,r11d

+

+        and     edi,r15d

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     r9d,edi

+        add     ebx,r12d

+        add     r9d,r12d

+

+        lea     rbp,[4+rbp]

+        add     r9d,r14d

+        mov     r12d,DWORD[44+rsi]

+        mov     r13d,ebx

+        mov     r14d,r9d

+        bswap   r12d

+        ror     r13d,14

+        mov     edi,ecx

+

+        xor     r13d,ebx

+        ror     r14d,9

+        xor     edi,edx

+

+        mov     DWORD[44+rsp],r12d

+        xor     r14d,r9d

+        and     edi,ebx

+

+        ror     r13d,5

+        add     r12d,r8d

+        xor     edi,edx

+

+        ror     r14d,11

+        xor     r13d,ebx

+        add     r12d,edi

+

+        mov     edi,r9d

+        add     r12d,DWORD[rbp]

+        xor     r14d,r9d

+

+        xor     edi,r10d

+        ror     r13d,6

+        mov     r8d,r10d

+

+        and     r15d,edi

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     r8d,r15d

+        add     eax,r12d

+        add     r8d,r12d

+

+        lea     rbp,[20+rbp]

+        add     r8d,r14d

+        mov     r12d,DWORD[48+rsi]

+        mov     r13d,eax

+        mov     r14d,r8d

+        bswap   r12d

+        ror     r13d,14

+        mov     r15d,ebx

+

+        xor     r13d,eax

+        ror     r14d,9

+        xor     r15d,ecx

+

+        mov     DWORD[48+rsp],r12d

+        xor     r14d,r8d

+        and     r15d,eax

+

+        ror     r13d,5

+        add     r12d,edx

+        xor     r15d,ecx

+

+        ror     r14d,11

+        xor     r13d,eax

+        add     r12d,r15d

+

+        mov     r15d,r8d

+        add     r12d,DWORD[rbp]

+        xor     r14d,r8d

+

+        xor     r15d,r9d

+        ror     r13d,6

+        mov     edx,r9d

+

+        and     edi,r15d

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     edx,edi

+        add     r11d,r12d

+        add     edx,r12d

+

+        lea     rbp,[4+rbp]

+        add     edx,r14d

+        mov     r12d,DWORD[52+rsi]

+        mov     r13d,r11d

+        mov     r14d,edx

+        bswap   r12d

+        ror     r13d,14

+        mov     edi,eax

+

+        xor     r13d,r11d

+        ror     r14d,9

+        xor     edi,ebx

+

+        mov     DWORD[52+rsp],r12d

+        xor     r14d,edx

+        and     edi,r11d

+

+        ror     r13d,5

+        add     r12d,ecx

+        xor     edi,ebx

+

+        ror     r14d,11

+        xor     r13d,r11d

+        add     r12d,edi

+

+        mov     edi,edx

+        add     r12d,DWORD[rbp]

+        xor     r14d,edx

+

+        xor     edi,r8d

+        ror     r13d,6

+        mov     ecx,r8d

+

+        and     r15d,edi

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     ecx,r15d

+        add     r10d,r12d

+        add     ecx,r12d

+

+        lea     rbp,[4+rbp]

+        add     ecx,r14d

+        mov     r12d,DWORD[56+rsi]

+        mov     r13d,r10d

+        mov     r14d,ecx

+        bswap   r12d

+        ror     r13d,14

+        mov     r15d,r11d

+

+        xor     r13d,r10d

+        ror     r14d,9

+        xor     r15d,eax

+

+        mov     DWORD[56+rsp],r12d

+        xor     r14d,ecx

+        and     r15d,r10d

+

+        ror     r13d,5

+        add     r12d,ebx

+        xor     r15d,eax

+

+        ror     r14d,11

+        xor     r13d,r10d

+        add     r12d,r15d

+

+        mov     r15d,ecx

+        add     r12d,DWORD[rbp]

+        xor     r14d,ecx

+

+        xor     r15d,edx

+        ror     r13d,6

+        mov     ebx,edx

+

+        and     edi,r15d

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     ebx,edi

+        add     r9d,r12d

+        add     ebx,r12d

+

+        lea     rbp,[4+rbp]

+        add     ebx,r14d

+        mov     r12d,DWORD[60+rsi]

+        mov     r13d,r9d

+        mov     r14d,ebx

+        bswap   r12d

+        ror     r13d,14

+        mov     edi,r10d

+

+        xor     r13d,r9d

+        ror     r14d,9

+        xor     edi,r11d

+

+        mov     DWORD[60+rsp],r12d

+        xor     r14d,ebx

+        and     edi,r9d

+

+        ror     r13d,5

+        add     r12d,eax

+        xor     edi,r11d

+

+        ror     r14d,11

+        xor     r13d,r9d

+        add     r12d,edi

+

+        mov     edi,ebx

+        add     r12d,DWORD[rbp]

+        xor     r14d,ebx

+

+        xor     edi,ecx

+        ror     r13d,6

+        mov     eax,ecx

+

+        and     r15d,edi

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     eax,r15d

+        add     r8d,r12d

+        add     eax,r12d

+

+        lea     rbp,[20+rbp]

+        jmp     NEAR $L$rounds_16_xx

+ALIGN   16

+$L$rounds_16_xx:

+        mov     r13d,DWORD[4+rsp]

+        mov     r15d,DWORD[56+rsp]

+

+        mov     r12d,r13d

+        ror     r13d,11

+        add     eax,r14d

+        mov     r14d,r15d

+        ror     r15d,2

+

+        xor     r13d,r12d

+        shr     r12d,3

+        ror     r13d,7

+        xor     r15d,r14d

+        shr     r14d,10

+

+        ror     r15d,17

+        xor     r12d,r13d

+        xor     r15d,r14d

+        add     r12d,DWORD[36+rsp]

+

+        add     r12d,DWORD[rsp]

+        mov     r13d,r8d

+        add     r12d,r15d

+        mov     r14d,eax

+        ror     r13d,14

+        mov     r15d,r9d

+

+        xor     r13d,r8d

+        ror     r14d,9

+        xor     r15d,r10d

+

+        mov     DWORD[rsp],r12d

+        xor     r14d,eax

+        and     r15d,r8d

+

+        ror     r13d,5

+        add     r12d,r11d

+        xor     r15d,r10d

+

+        ror     r14d,11

+        xor     r13d,r8d

+        add     r12d,r15d

+

+        mov     r15d,eax

+        add     r12d,DWORD[rbp]

+        xor     r14d,eax

+

+        xor     r15d,ebx

+        ror     r13d,6

+        mov     r11d,ebx

+

+        and     edi,r15d

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     r11d,edi

+        add     edx,r12d

+        add     r11d,r12d

+

+        lea     rbp,[4+rbp]

+        mov     r13d,DWORD[8+rsp]

+        mov     edi,DWORD[60+rsp]

+

+        mov     r12d,r13d

+        ror     r13d,11

+        add     r11d,r14d

+        mov     r14d,edi

+        ror     edi,2

+

+        xor     r13d,r12d

+        shr     r12d,3

+        ror     r13d,7

+        xor     edi,r14d

+        shr     r14d,10

+

+        ror     edi,17

+        xor     r12d,r13d

+        xor     edi,r14d

+        add     r12d,DWORD[40+rsp]

+

+        add     r12d,DWORD[4+rsp]

+        mov     r13d,edx

+        add     r12d,edi

+        mov     r14d,r11d

+        ror     r13d,14

+        mov     edi,r8d

+

+        xor     r13d,edx

+        ror     r14d,9

+        xor     edi,r9d

+

+        mov     DWORD[4+rsp],r12d

+        xor     r14d,r11d

+        and     edi,edx

+

+        ror     r13d,5

+        add     r12d,r10d

+        xor     edi,r9d

+

+        ror     r14d,11

+        xor     r13d,edx

+        add     r12d,edi

+

+        mov     edi,r11d

+        add     r12d,DWORD[rbp]

+        xor     r14d,r11d

+

+        xor     edi,eax

+        ror     r13d,6

+        mov     r10d,eax

+

+        and     r15d,edi

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     r10d,r15d

+        add     ecx,r12d

+        add     r10d,r12d

+

+        lea     rbp,[4+rbp]

+        mov     r13d,DWORD[12+rsp]

+        mov     r15d,DWORD[rsp]

+

+        mov     r12d,r13d

+        ror     r13d,11

+        add     r10d,r14d

+        mov     r14d,r15d

+        ror     r15d,2

+

+        xor     r13d,r12d

+        shr     r12d,3

+        ror     r13d,7

+        xor     r15d,r14d

+        shr     r14d,10

+

+        ror     r15d,17

+        xor     r12d,r13d

+        xor     r15d,r14d

+        add     r12d,DWORD[44+rsp]

+

+        add     r12d,DWORD[8+rsp]

+        mov     r13d,ecx

+        add     r12d,r15d

+        mov     r14d,r10d

+        ror     r13d,14

+        mov     r15d,edx

+

+        xor     r13d,ecx

+        ror     r14d,9

+        xor     r15d,r8d

+

+        mov     DWORD[8+rsp],r12d

+        xor     r14d,r10d

+        and     r15d,ecx

+

+        ror     r13d,5

+        add     r12d,r9d

+        xor     r15d,r8d

+

+        ror     r14d,11

+        xor     r13d,ecx

+        add     r12d,r15d

+

+        mov     r15d,r10d

+        add     r12d,DWORD[rbp]

+        xor     r14d,r10d

+

+        xor     r15d,r11d

+        ror     r13d,6

+        mov     r9d,r11d

+

+        and     edi,r15d

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     r9d,edi

+        add     ebx,r12d

+        add     r9d,r12d

+

+        lea     rbp,[4+rbp]

+        mov     r13d,DWORD[16+rsp]

+        mov     edi,DWORD[4+rsp]

+

+        mov     r12d,r13d

+        ror     r13d,11

+        add     r9d,r14d

+        mov     r14d,edi

+        ror     edi,2

+

+        xor     r13d,r12d

+        shr     r12d,3

+        ror     r13d,7

+        xor     edi,r14d

+        shr     r14d,10

+

+        ror     edi,17

+        xor     r12d,r13d

+        xor     edi,r14d

+        add     r12d,DWORD[48+rsp]

+

+        add     r12d,DWORD[12+rsp]

+        mov     r13d,ebx

+        add     r12d,edi

+        mov     r14d,r9d

+        ror     r13d,14

+        mov     edi,ecx

+

+        xor     r13d,ebx

+        ror     r14d,9

+        xor     edi,edx

+

+        mov     DWORD[12+rsp],r12d

+        xor     r14d,r9d

+        and     edi,ebx

+

+        ror     r13d,5

+        add     r12d,r8d

+        xor     edi,edx

+

+        ror     r14d,11

+        xor     r13d,ebx

+        add     r12d,edi

+

+        mov     edi,r9d

+        add     r12d,DWORD[rbp]

+        xor     r14d,r9d

+

+        xor     edi,r10d

+        ror     r13d,6

+        mov     r8d,r10d

+

+        and     r15d,edi

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     r8d,r15d

+        add     eax,r12d

+        add     r8d,r12d

+

+        lea     rbp,[20+rbp]

+        mov     r13d,DWORD[20+rsp]

+        mov     r15d,DWORD[8+rsp]

+

+        mov     r12d,r13d

+        ror     r13d,11

+        add     r8d,r14d

+        mov     r14d,r15d

+        ror     r15d,2

+

+        xor     r13d,r12d

+        shr     r12d,3

+        ror     r13d,7

+        xor     r15d,r14d

+        shr     r14d,10

+

+        ror     r15d,17

+        xor     r12d,r13d

+        xor     r15d,r14d

+        add     r12d,DWORD[52+rsp]

+

+        add     r12d,DWORD[16+rsp]

+        mov     r13d,eax

+        add     r12d,r15d

+        mov     r14d,r8d

+        ror     r13d,14

+        mov     r15d,ebx

+

+        xor     r13d,eax

+        ror     r14d,9

+        xor     r15d,ecx

+

+        mov     DWORD[16+rsp],r12d

+        xor     r14d,r8d

+        and     r15d,eax

+

+        ror     r13d,5

+        add     r12d,edx

+        xor     r15d,ecx

+

+        ror     r14d,11

+        xor     r13d,eax

+        add     r12d,r15d

+

+        mov     r15d,r8d

+        add     r12d,DWORD[rbp]

+        xor     r14d,r8d

+

+        xor     r15d,r9d

+        ror     r13d,6

+        mov     edx,r9d

+

+        and     edi,r15d

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     edx,edi

+        add     r11d,r12d

+        add     edx,r12d

+

+        lea     rbp,[4+rbp]

+        mov     r13d,DWORD[24+rsp]

+        mov     edi,DWORD[12+rsp]

+

+        mov     r12d,r13d

+        ror     r13d,11

+        add     edx,r14d

+        mov     r14d,edi

+        ror     edi,2

+

+        xor     r13d,r12d

+        shr     r12d,3

+        ror     r13d,7

+        xor     edi,r14d

+        shr     r14d,10

+

+        ror     edi,17

+        xor     r12d,r13d

+        xor     edi,r14d

+        add     r12d,DWORD[56+rsp]

+

+        add     r12d,DWORD[20+rsp]

+        mov     r13d,r11d

+        add     r12d,edi

+        mov     r14d,edx

+        ror     r13d,14

+        mov     edi,eax

+

+        xor     r13d,r11d

+        ror     r14d,9

+        xor     edi,ebx

+

+        mov     DWORD[20+rsp],r12d

+        xor     r14d,edx

+        and     edi,r11d

+

+        ror     r13d,5

+        add     r12d,ecx

+        xor     edi,ebx

+

+        ror     r14d,11

+        xor     r13d,r11d

+        add     r12d,edi

+

+        mov     edi,edx

+        add     r12d,DWORD[rbp]

+        xor     r14d,edx

+

+        xor     edi,r8d

+        ror     r13d,6

+        mov     ecx,r8d

+

+        and     r15d,edi

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     ecx,r15d

+        add     r10d,r12d

+        add     ecx,r12d

+

+        lea     rbp,[4+rbp]

+        mov     r13d,DWORD[28+rsp]

+        mov     r15d,DWORD[16+rsp]

+

+        mov     r12d,r13d

+        ror     r13d,11

+        add     ecx,r14d

+        mov     r14d,r15d

+        ror     r15d,2

+

+        xor     r13d,r12d

+        shr     r12d,3

+        ror     r13d,7

+        xor     r15d,r14d

+        shr     r14d,10

+

+        ror     r15d,17

+        xor     r12d,r13d

+        xor     r15d,r14d

+        add     r12d,DWORD[60+rsp]

+

+        add     r12d,DWORD[24+rsp]

+        mov     r13d,r10d

+        add     r12d,r15d

+        mov     r14d,ecx

+        ror     r13d,14

+        mov     r15d,r11d

+

+        xor     r13d,r10d

+        ror     r14d,9

+        xor     r15d,eax

+

+        mov     DWORD[24+rsp],r12d

+        xor     r14d,ecx

+        and     r15d,r10d

+

+        ror     r13d,5

+        add     r12d,ebx

+        xor     r15d,eax

+

+        ror     r14d,11

+        xor     r13d,r10d

+        add     r12d,r15d

+

+        mov     r15d,ecx

+        add     r12d,DWORD[rbp]

+        xor     r14d,ecx

+

+        xor     r15d,edx

+        ror     r13d,6

+        mov     ebx,edx

+

+        and     edi,r15d

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     ebx,edi

+        add     r9d,r12d

+        add     ebx,r12d

+

+        lea     rbp,[4+rbp]

+        mov     r13d,DWORD[32+rsp]

+        mov     edi,DWORD[20+rsp]

+

+        mov     r12d,r13d

+        ror     r13d,11

+        add     ebx,r14d

+        mov     r14d,edi

+        ror     edi,2

+

+        xor     r13d,r12d

+        shr     r12d,3

+        ror     r13d,7

+        xor     edi,r14d

+        shr     r14d,10

+

+        ror     edi,17

+        xor     r12d,r13d

+        xor     edi,r14d

+        add     r12d,DWORD[rsp]

+

+        add     r12d,DWORD[28+rsp]

+        mov     r13d,r9d

+        add     r12d,edi

+        mov     r14d,ebx

+        ror     r13d,14

+        mov     edi,r10d

+

+        xor     r13d,r9d

+        ror     r14d,9

+        xor     edi,r11d

+

+        mov     DWORD[28+rsp],r12d

+        xor     r14d,ebx

+        and     edi,r9d

+

+        ror     r13d,5

+        add     r12d,eax

+        xor     edi,r11d

+

+        ror     r14d,11

+        xor     r13d,r9d

+        add     r12d,edi

+

+        mov     edi,ebx

+        add     r12d,DWORD[rbp]

+        xor     r14d,ebx

+

+        xor     edi,ecx

+        ror     r13d,6

+        mov     eax,ecx

+

+        and     r15d,edi

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     eax,r15d

+        add     r8d,r12d

+        add     eax,r12d

+

+        lea     rbp,[20+rbp]

+        mov     r13d,DWORD[36+rsp]

+        mov     r15d,DWORD[24+rsp]

+

+        mov     r12d,r13d

+        ror     r13d,11

+        add     eax,r14d

+        mov     r14d,r15d

+        ror     r15d,2

+

+        xor     r13d,r12d

+        shr     r12d,3

+        ror     r13d,7

+        xor     r15d,r14d

+        shr     r14d,10

+

+        ror     r15d,17

+        xor     r12d,r13d

+        xor     r15d,r14d

+        add     r12d,DWORD[4+rsp]

+

+        add     r12d,DWORD[32+rsp]

+        mov     r13d,r8d

+        add     r12d,r15d

+        mov     r14d,eax

+        ror     r13d,14

+        mov     r15d,r9d

+

+        xor     r13d,r8d

+        ror     r14d,9

+        xor     r15d,r10d

+

+        mov     DWORD[32+rsp],r12d

+        xor     r14d,eax

+        and     r15d,r8d

+

+        ror     r13d,5

+        add     r12d,r11d

+        xor     r15d,r10d

+

+        ror     r14d,11

+        xor     r13d,r8d

+        add     r12d,r15d

+

+        mov     r15d,eax

+        add     r12d,DWORD[rbp]

+        xor     r14d,eax

+

+        xor     r15d,ebx

+        ror     r13d,6

+        mov     r11d,ebx

+

+        and     edi,r15d

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     r11d,edi

+        add     edx,r12d

+        add     r11d,r12d

+

+        lea     rbp,[4+rbp]

+        mov     r13d,DWORD[40+rsp]

+        mov     edi,DWORD[28+rsp]

+

+        mov     r12d,r13d

+        ror     r13d,11

+        add     r11d,r14d

+        mov     r14d,edi

+        ror     edi,2

+

+        xor     r13d,r12d

+        shr     r12d,3

+        ror     r13d,7

+        xor     edi,r14d

+        shr     r14d,10

+

+        ror     edi,17

+        xor     r12d,r13d

+        xor     edi,r14d

+        add     r12d,DWORD[8+rsp]

+

+        add     r12d,DWORD[36+rsp]

+        mov     r13d,edx

+        add     r12d,edi

+        mov     r14d,r11d

+        ror     r13d,14

+        mov     edi,r8d

+

+        xor     r13d,edx

+        ror     r14d,9

+        xor     edi,r9d

+

+        mov     DWORD[36+rsp],r12d

+        xor     r14d,r11d

+        and     edi,edx

+

+        ror     r13d,5

+        add     r12d,r10d

+        xor     edi,r9d

+

+        ror     r14d,11

+        xor     r13d,edx

+        add     r12d,edi

+

+        mov     edi,r11d

+        add     r12d,DWORD[rbp]

+        xor     r14d,r11d

+

+        xor     edi,eax

+        ror     r13d,6

+        mov     r10d,eax

+

+        and     r15d,edi

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     r10d,r15d

+        add     ecx,r12d

+        add     r10d,r12d

+

+        lea     rbp,[4+rbp]

+        mov     r13d,DWORD[44+rsp]

+        mov     r15d,DWORD[32+rsp]

+

+        mov     r12d,r13d

+        ror     r13d,11

+        add     r10d,r14d

+        mov     r14d,r15d

+        ror     r15d,2

+

+        xor     r13d,r12d

+        shr     r12d,3

+        ror     r13d,7

+        xor     r15d,r14d

+        shr     r14d,10

+

+        ror     r15d,17

+        xor     r12d,r13d

+        xor     r15d,r14d

+        add     r12d,DWORD[12+rsp]

+

+        add     r12d,DWORD[40+rsp]

+        mov     r13d,ecx

+        add     r12d,r15d

+        mov     r14d,r10d

+        ror     r13d,14

+        mov     r15d,edx

+

+        xor     r13d,ecx

+        ror     r14d,9

+        xor     r15d,r8d

+

+        mov     DWORD[40+rsp],r12d

+        xor     r14d,r10d

+        and     r15d,ecx

+

+        ror     r13d,5

+        add     r12d,r9d

+        xor     r15d,r8d

+

+        ror     r14d,11

+        xor     r13d,ecx

+        add     r12d,r15d

+

+        mov     r15d,r10d

+        add     r12d,DWORD[rbp]

+        xor     r14d,r10d

+

+        xor     r15d,r11d

+        ror     r13d,6

+        mov     r9d,r11d

+

+        and     edi,r15d

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     r9d,edi

+        add     ebx,r12d

+        add     r9d,r12d

+

+        lea     rbp,[4+rbp]

+        mov     r13d,DWORD[48+rsp]

+        mov     edi,DWORD[36+rsp]

+

+        mov     r12d,r13d

+        ror     r13d,11

+        add     r9d,r14d

+        mov     r14d,edi

+        ror     edi,2

+

+        xor     r13d,r12d

+        shr     r12d,3

+        ror     r13d,7

+        xor     edi,r14d

+        shr     r14d,10

+

+        ror     edi,17

+        xor     r12d,r13d

+        xor     edi,r14d

+        add     r12d,DWORD[16+rsp]

+

+        add     r12d,DWORD[44+rsp]

+        mov     r13d,ebx

+        add     r12d,edi

+        mov     r14d,r9d

+        ror     r13d,14

+        mov     edi,ecx

+

+        xor     r13d,ebx

+        ror     r14d,9

+        xor     edi,edx

+

+        mov     DWORD[44+rsp],r12d

+        xor     r14d,r9d

+        and     edi,ebx

+

+        ror     r13d,5

+        add     r12d,r8d

+        xor     edi,edx

+

+        ror     r14d,11

+        xor     r13d,ebx

+        add     r12d,edi

+

+        mov     edi,r9d

+        add     r12d,DWORD[rbp]

+        xor     r14d,r9d

+

+        xor     edi,r10d

+        ror     r13d,6

+        mov     r8d,r10d

+

+        and     r15d,edi

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     r8d,r15d

+        add     eax,r12d

+        add     r8d,r12d

+

+        lea     rbp,[20+rbp]

+        mov     r13d,DWORD[52+rsp]

+        mov     r15d,DWORD[40+rsp]

+

+        mov     r12d,r13d

+        ror     r13d,11

+        add     r8d,r14d

+        mov     r14d,r15d

+        ror     r15d,2

+

+        xor     r13d,r12d

+        shr     r12d,3

+        ror     r13d,7

+        xor     r15d,r14d

+        shr     r14d,10

+

+        ror     r15d,17

+        xor     r12d,r13d

+        xor     r15d,r14d

+        add     r12d,DWORD[20+rsp]

+

+        add     r12d,DWORD[48+rsp]

+        mov     r13d,eax

+        add     r12d,r15d

+        mov     r14d,r8d

+        ror     r13d,14

+        mov     r15d,ebx

+

+        xor     r13d,eax

+        ror     r14d,9

+        xor     r15d,ecx

+

+        mov     DWORD[48+rsp],r12d

+        xor     r14d,r8d

+        and     r15d,eax

+

+        ror     r13d,5

+        add     r12d,edx

+        xor     r15d,ecx

+

+        ror     r14d,11

+        xor     r13d,eax

+        add     r12d,r15d

+

+        mov     r15d,r8d

+        add     r12d,DWORD[rbp]

+        xor     r14d,r8d

+

+        xor     r15d,r9d

+        ror     r13d,6

+        mov     edx,r9d

+

+        and     edi,r15d

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     edx,edi

+        add     r11d,r12d

+        add     edx,r12d

+

+        lea     rbp,[4+rbp]

+        mov     r13d,DWORD[56+rsp]

+        mov     edi,DWORD[44+rsp]

+

+        mov     r12d,r13d

+        ror     r13d,11

+        add     edx,r14d

+        mov     r14d,edi

+        ror     edi,2

+

+        xor     r13d,r12d

+        shr     r12d,3

+        ror     r13d,7

+        xor     edi,r14d

+        shr     r14d,10

+

+        ror     edi,17

+        xor     r12d,r13d

+        xor     edi,r14d

+        add     r12d,DWORD[24+rsp]

+

+        add     r12d,DWORD[52+rsp]

+        mov     r13d,r11d

+        add     r12d,edi

+        mov     r14d,edx

+        ror     r13d,14

+        mov     edi,eax

+

+        xor     r13d,r11d

+        ror     r14d,9

+        xor     edi,ebx

+

+        mov     DWORD[52+rsp],r12d

+        xor     r14d,edx

+        and     edi,r11d

+

+        ror     r13d,5

+        add     r12d,ecx

+        xor     edi,ebx

+

+        ror     r14d,11

+        xor     r13d,r11d

+        add     r12d,edi

+

+        mov     edi,edx

+        add     r12d,DWORD[rbp]

+        xor     r14d,edx

+

+        xor     edi,r8d

+        ror     r13d,6

+        mov     ecx,r8d

+

+        and     r15d,edi

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     ecx,r15d

+        add     r10d,r12d

+        add     ecx,r12d

+

+        lea     rbp,[4+rbp]

+        mov     r13d,DWORD[60+rsp]

+        mov     r15d,DWORD[48+rsp]

+

+        mov     r12d,r13d

+        ror     r13d,11

+        add     ecx,r14d

+        mov     r14d,r15d

+        ror     r15d,2

+

+        xor     r13d,r12d

+        shr     r12d,3

+        ror     r13d,7

+        xor     r15d,r14d

+        shr     r14d,10

+

+        ror     r15d,17

+        xor     r12d,r13d

+        xor     r15d,r14d

+        add     r12d,DWORD[28+rsp]

+

+        add     r12d,DWORD[56+rsp]

+        mov     r13d,r10d

+        add     r12d,r15d

+        mov     r14d,ecx

+        ror     r13d,14

+        mov     r15d,r11d

+

+        xor     r13d,r10d

+        ror     r14d,9

+        xor     r15d,eax

+

+        mov     DWORD[56+rsp],r12d

+        xor     r14d,ecx

+        and     r15d,r10d

+

+        ror     r13d,5

+        add     r12d,ebx

+        xor     r15d,eax

+

+        ror     r14d,11

+        xor     r13d,r10d

+        add     r12d,r15d

+

+        mov     r15d,ecx

+        add     r12d,DWORD[rbp]

+        xor     r14d,ecx

+

+        xor     r15d,edx

+        ror     r13d,6

+        mov     ebx,edx

+

+        and     edi,r15d

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     ebx,edi

+        add     r9d,r12d

+        add     ebx,r12d

+

+        lea     rbp,[4+rbp]

+        mov     r13d,DWORD[rsp]

+        mov     edi,DWORD[52+rsp]

+

+        mov     r12d,r13d

+        ror     r13d,11

+        add     ebx,r14d

+        mov     r14d,edi

+        ror     edi,2

+

+        xor     r13d,r12d

+        shr     r12d,3

+        ror     r13d,7

+        xor     edi,r14d

+        shr     r14d,10

+

+        ror     edi,17

+        xor     r12d,r13d

+        xor     edi,r14d

+        add     r12d,DWORD[32+rsp]

+

+        add     r12d,DWORD[60+rsp]

+        mov     r13d,r9d

+        add     r12d,edi

+        mov     r14d,ebx

+        ror     r13d,14

+        mov     edi,r10d

+

+        xor     r13d,r9d

+        ror     r14d,9

+        xor     edi,r11d

+

+        mov     DWORD[60+rsp],r12d

+        xor     r14d,ebx

+        and     edi,r9d

+

+        ror     r13d,5

+        add     r12d,eax

+        xor     edi,r11d

+

+        ror     r14d,11

+        xor     r13d,r9d

+        add     r12d,edi

+

+        mov     edi,ebx

+        add     r12d,DWORD[rbp]

+        xor     r14d,ebx

+

+        xor     edi,ecx

+        ror     r13d,6

+        mov     eax,ecx

+

+        and     r15d,edi

+        ror     r14d,2

+        add     r12d,r13d

+

+        xor     eax,r15d

+        add     r8d,r12d

+        add     eax,r12d

+

+        lea     rbp,[20+rbp]

+        cmp     BYTE[3+rbp],0

+        jnz     NEAR $L$rounds_16_xx

+

+        mov     rdi,QWORD[((64+0))+rsp]

+        add     eax,r14d

+        lea     rsi,[64+rsi]

+

+        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[((64+16))+rsp]

+

+        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[88+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$epilogue:

+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue

+        mov     rsi,QWORD[16+rsp]

+        DB      0F3h,0C3h               ;repret

+

+$L$SEH_end_sha256_block_data_order:

+ALIGN   64

+

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

+DB      32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46

+DB      111,114,103,62,0

+

+ALIGN   64

+sha256_block_data_order_shaext:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_sha256_block_data_order_shaext:

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+

+

+_shaext_shortcut:

+

+        lea     rsp,[((-88))+rsp]

+        movaps  XMMWORD[(-8-80)+rax],xmm6

+        movaps  XMMWORD[(-8-64)+rax],xmm7

+        movaps  XMMWORD[(-8-48)+rax],xmm8

+        movaps  XMMWORD[(-8-32)+rax],xmm9

+        movaps  XMMWORD[(-8-16)+rax],xmm10

+$L$prologue_shaext:

+        lea     rcx,[((K256+128))]

+        movdqu  xmm1,XMMWORD[rdi]

+        movdqu  xmm2,XMMWORD[16+rdi]

+        movdqa  xmm7,XMMWORD[((512-128))+rcx]

+

+        pshufd  xmm0,xmm1,0x1b

+        pshufd  xmm1,xmm1,0xb1

+        pshufd  xmm2,xmm2,0x1b

+        movdqa  xmm8,xmm7

+DB      102,15,58,15,202,8

+        punpcklqdq      xmm2,xmm0

+        jmp     NEAR $L$oop_shaext

+

+ALIGN   16

+$L$oop_shaext:

+        movdqu  xmm3,XMMWORD[rsi]

+        movdqu  xmm4,XMMWORD[16+rsi]

+        movdqu  xmm5,XMMWORD[32+rsi]

+DB      102,15,56,0,223

+        movdqu  xmm6,XMMWORD[48+rsi]

+

+        movdqa  xmm0,XMMWORD[((0-128))+rcx]

+        paddd   xmm0,xmm3

+DB      102,15,56,0,231

+        movdqa  xmm10,xmm2

+DB      15,56,203,209

+        pshufd  xmm0,xmm0,0x0e

+        nop

+        movdqa  xmm9,xmm1

+DB      15,56,203,202

+

+        movdqa  xmm0,XMMWORD[((32-128))+rcx]

+        paddd   xmm0,xmm4

+DB      102,15,56,0,239

+DB      15,56,203,209

+        pshufd  xmm0,xmm0,0x0e

+        lea     rsi,[64+rsi]

+DB      15,56,204,220

+DB      15,56,203,202

+

+        movdqa  xmm0,XMMWORD[((64-128))+rcx]

+        paddd   xmm0,xmm5

+DB      102,15,56,0,247

+DB      15,56,203,209

+        pshufd  xmm0,xmm0,0x0e

+        movdqa  xmm7,xmm6

+DB      102,15,58,15,253,4

+        nop

+        paddd   xmm3,xmm7

+DB      15,56,204,229

+DB      15,56,203,202

+

+        movdqa  xmm0,XMMWORD[((96-128))+rcx]

+        paddd   xmm0,xmm6

+DB      15,56,205,222

+DB      15,56,203,209

+        pshufd  xmm0,xmm0,0x0e

+        movdqa  xmm7,xmm3

+DB      102,15,58,15,254,4

+        nop

+        paddd   xmm4,xmm7

+DB      15,56,204,238

+DB      15,56,203,202

+        movdqa  xmm0,XMMWORD[((128-128))+rcx]

+        paddd   xmm0,xmm3

+DB      15,56,205,227

+DB      15,56,203,209

+        pshufd  xmm0,xmm0,0x0e

+        movdqa  xmm7,xmm4

+DB      102,15,58,15,251,4

+        nop

+        paddd   xmm5,xmm7

+DB      15,56,204,243

+DB      15,56,203,202

+        movdqa  xmm0,XMMWORD[((160-128))+rcx]

+        paddd   xmm0,xmm4

+DB      15,56,205,236

+DB      15,56,203,209

+        pshufd  xmm0,xmm0,0x0e

+        movdqa  xmm7,xmm5

+DB      102,15,58,15,252,4

+        nop

+        paddd   xmm6,xmm7

+DB      15,56,204,220

+DB      15,56,203,202

+        movdqa  xmm0,XMMWORD[((192-128))+rcx]

+        paddd   xmm0,xmm5

+DB      15,56,205,245

+DB      15,56,203,209

+        pshufd  xmm0,xmm0,0x0e

+        movdqa  xmm7,xmm6

+DB      102,15,58,15,253,4

+        nop

+        paddd   xmm3,xmm7

+DB      15,56,204,229

+DB      15,56,203,202

+        movdqa  xmm0,XMMWORD[((224-128))+rcx]

+        paddd   xmm0,xmm6

+DB      15,56,205,222

+DB      15,56,203,209

+        pshufd  xmm0,xmm0,0x0e

+        movdqa  xmm7,xmm3

+DB      102,15,58,15,254,4

+        nop

+        paddd   xmm4,xmm7

+DB      15,56,204,238

+DB      15,56,203,202

+        movdqa  xmm0,XMMWORD[((256-128))+rcx]

+        paddd   xmm0,xmm3

+DB      15,56,205,227

+DB      15,56,203,209

+        pshufd  xmm0,xmm0,0x0e

+        movdqa  xmm7,xmm4

+DB      102,15,58,15,251,4

+        nop

+        paddd   xmm5,xmm7

+DB      15,56,204,243

+DB      15,56,203,202

+        movdqa  xmm0,XMMWORD[((288-128))+rcx]

+        paddd   xmm0,xmm4

+DB      15,56,205,236

+DB      15,56,203,209

+        pshufd  xmm0,xmm0,0x0e

+        movdqa  xmm7,xmm5

+DB      102,15,58,15,252,4

+        nop

+        paddd   xmm6,xmm7

+DB      15,56,204,220

+DB      15,56,203,202

+        movdqa  xmm0,XMMWORD[((320-128))+rcx]

+        paddd   xmm0,xmm5

+DB      15,56,205,245

+DB      15,56,203,209

+        pshufd  xmm0,xmm0,0x0e

+        movdqa  xmm7,xmm6

+DB      102,15,58,15,253,4

+        nop

+        paddd   xmm3,xmm7

+DB      15,56,204,229

+DB      15,56,203,202

+        movdqa  xmm0,XMMWORD[((352-128))+rcx]

+        paddd   xmm0,xmm6

+DB      15,56,205,222

+DB      15,56,203,209

+        pshufd  xmm0,xmm0,0x0e

+        movdqa  xmm7,xmm3

+DB      102,15,58,15,254,4

+        nop

+        paddd   xmm4,xmm7

+DB      15,56,204,238

+DB      15,56,203,202

+        movdqa  xmm0,XMMWORD[((384-128))+rcx]

+        paddd   xmm0,xmm3

+DB      15,56,205,227

+DB      15,56,203,209

+        pshufd  xmm0,xmm0,0x0e

+        movdqa  xmm7,xmm4

+DB      102,15,58,15,251,4

+        nop

+        paddd   xmm5,xmm7

+DB      15,56,204,243

+DB      15,56,203,202

+        movdqa  xmm0,XMMWORD[((416-128))+rcx]

+        paddd   xmm0,xmm4

+DB      15,56,205,236

+DB      15,56,203,209

+        pshufd  xmm0,xmm0,0x0e

+        movdqa  xmm7,xmm5

+DB      102,15,58,15,252,4

+DB      15,56,203,202

+        paddd   xmm6,xmm7

+

+        movdqa  xmm0,XMMWORD[((448-128))+rcx]

+        paddd   xmm0,xmm5

+DB      15,56,203,209

+        pshufd  xmm0,xmm0,0x0e

+DB      15,56,205,245

+        movdqa  xmm7,xmm8

+DB      15,56,203,202

+

+        movdqa  xmm0,XMMWORD[((480-128))+rcx]

+        paddd   xmm0,xmm6

+        nop

+DB      15,56,203,209

+        pshufd  xmm0,xmm0,0x0e

+        dec     rdx

+        nop

+DB      15,56,203,202

+

+        paddd   xmm2,xmm10

+        paddd   xmm1,xmm9

+        jnz     NEAR $L$oop_shaext

+

+        pshufd  xmm2,xmm2,0xb1

+        pshufd  xmm7,xmm1,0x1b

+        pshufd  xmm1,xmm1,0xb1

+        punpckhqdq      xmm1,xmm2

+DB      102,15,58,15,215,8

+

+        movdqu  XMMWORD[rdi],xmm1

+        movdqu  XMMWORD[16+rdi],xmm2

+        movaps  xmm6,XMMWORD[((-8-80))+rax]

+        movaps  xmm7,XMMWORD[((-8-64))+rax]

+        movaps  xmm8,XMMWORD[((-8-48))+rax]

+        movaps  xmm9,XMMWORD[((-8-32))+rax]

+        movaps  xmm10,XMMWORD[((-8-16))+rax]

+        mov     rsp,rax

+$L$epilogue_shaext:

+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue

+        mov     rsi,QWORD[16+rsp]

+        DB      0F3h,0C3h               ;repret

+

+$L$SEH_end_sha256_block_data_order_shaext:

+

+ALIGN   64

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

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+

+

+

+$L$ssse3_shortcut:

+        mov     rax,rsp

+

+        push    rbx

+

+        push    rbp

+

+        push    r12

+

+        push    r13

+

+        push    r14

+

+        push    r15

+

+        shl     rdx,4

+        sub     rsp,160

+        lea     rdx,[rdx*4+rsi]

+        and     rsp,-64

+        mov     QWORD[((64+0))+rsp],rdi

+        mov     QWORD[((64+8))+rsp],rsi

+        mov     QWORD[((64+16))+rsp],rdx

+        mov     QWORD[88+rsp],rax

+

+        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[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_ssse3

+ALIGN   16

+$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[48+rsi]

+        lea     rbp,[K256]

+DB      102,15,56,0,207

+        movdqa  xmm4,XMMWORD[rbp]

+        movdqa  xmm5,XMMWORD[32+rbp]

+DB      102,15,56,0,215

+        paddd   xmm4,xmm0

+        movdqa  xmm6,XMMWORD[64+rbp]

+DB      102,15,56,0,223

+        movdqa  xmm7,XMMWORD[96+rbp]

+        paddd   xmm5,xmm1

+        paddd   xmm6,xmm2

+        paddd   xmm7,xmm3

+        movdqa  XMMWORD[rsp],xmm4

+        mov     r14d,eax

+        movdqa  XMMWORD[16+rsp],xmm5

+        mov     edi,ebx

+        movdqa  XMMWORD[32+rsp],xmm6

+        xor     edi,ecx

+        movdqa  XMMWORD[48+rsp],xmm7

+        mov     r13d,r8d

+        jmp     NEAR $L$ssse3_00_47

+

+ALIGN   16

+$L$ssse3_00_47:

+        sub     rbp,-128

+        ror     r13d,14

+        movdqa  xmm4,xmm1

+        mov     eax,r14d

+        mov     r12d,r9d

+        movdqa  xmm7,xmm3

+        ror     r14d,9

+        xor     r13d,r8d

+        xor     r12d,r10d

+        ror     r13d,5

+        xor     r14d,eax

+DB      102,15,58,15,224,4

+        and     r12d,r8d

+        xor     r13d,r8d

+DB      102,15,58,15,250,4

+        add     r11d,DWORD[rsp]

+        mov     r15d,eax

+        xor     r12d,r10d

+        ror     r14d,11

+        movdqa  xmm5,xmm4

+        xor     r15d,ebx

+        add     r11d,r12d

+        movdqa  xmm6,xmm4

+        ror     r13d,6

+        and     edi,r15d

+        psrld   xmm4,3

+        xor     r14d,eax

+        add     r11d,r13d

+        xor     edi,ebx

+        paddd   xmm0,xmm7

+        ror     r14d,2

+        add     edx,r11d

+        psrld   xmm6,7

+        add     r11d,edi

+        mov     r13d,edx

+        pshufd  xmm7,xmm3,250

+        add     r14d,r11d

+        ror     r13d,14

+        pslld   xmm5,14

+        mov     r11d,r14d

+        mov     r12d,r8d

+        pxor    xmm4,xmm6

+        ror     r14d,9

+        xor     r13d,edx

+        xor     r12d,r9d

+        ror     r13d,5

+        psrld   xmm6,11

+        xor     r14d,r11d

+        pxor    xmm4,xmm5

+        and     r12d,edx

+        xor     r13d,edx

+        pslld   xmm5,11

+        add     r10d,DWORD[4+rsp]

+        mov     edi,r11d

+        pxor    xmm4,xmm6

+        xor     r12d,r9d

+        ror     r14d,11

+        movdqa  xmm6,xmm7

+        xor     edi,eax

+        add     r10d,r12d

+        pxor    xmm4,xmm5

+        ror     r13d,6

+        and     r15d,edi

+        xor     r14d,r11d

+        psrld   xmm7,10

+        add     r10d,r13d

+        xor     r15d,eax

+        paddd   xmm0,xmm4

+        ror     r14d,2

+        add     ecx,r10d

+        psrlq   xmm6,17

+        add     r10d,r15d

+        mov     r13d,ecx

+        add     r14d,r10d

+        pxor    xmm7,xmm6

+        ror     r13d,14

+        mov     r10d,r14d

+        mov     r12d,edx

+        ror     r14d,9

+        psrlq   xmm6,2

+        xor     r13d,ecx

+        xor     r12d,r8d

+        pxor    xmm7,xmm6

+        ror     r13d,5

+        xor     r14d,r10d

+        and     r12d,ecx

+        pshufd  xmm7,xmm7,128

+        xor     r13d,ecx

+        add     r9d,DWORD[8+rsp]

+        mov     r15d,r10d

+        psrldq  xmm7,8

+        xor     r12d,r8d

+        ror     r14d,11

+        xor     r15d,r11d

+        add     r9d,r12d

+        ror     r13d,6

+        paddd   xmm0,xmm7

+        and     edi,r15d

+        xor     r14d,r10d

+        add     r9d,r13d

+        pshufd  xmm7,xmm0,80

+        xor     edi,r11d

+        ror     r14d,2

+        add     ebx,r9d

+        movdqa  xmm6,xmm7

+        add     r9d,edi

+        mov     r13d,ebx

+        psrld   xmm7,10

+        add     r14d,r9d

+        ror     r13d,14

+        psrlq   xmm6,17

+        mov     r9d,r14d

+        mov     r12d,ecx

+        pxor    xmm7,xmm6

+        ror     r14d,9

+        xor     r13d,ebx

+        xor     r12d,edx

+        ror     r13d,5

+        xor     r14d,r9d

+        psrlq   xmm6,2

+        and     r12d,ebx

+        xor     r13d,ebx

+        add     r8d,DWORD[12+rsp]

+        pxor    xmm7,xmm6

+        mov     edi,r9d

+        xor     r12d,edx

+        ror     r14d,11

+        pshufd  xmm7,xmm7,8

+        xor     edi,r10d

+        add     r8d,r12d

+        movdqa  xmm6,XMMWORD[rbp]

+        ror     r13d,6

+        and     r15d,edi

+        pslldq  xmm7,8

+        xor     r14d,r9d

+        add     r8d,r13d

+        xor     r15d,r10d

+        paddd   xmm0,xmm7

+        ror     r14d,2

+        add     eax,r8d

+        add     r8d,r15d

+        paddd   xmm6,xmm0

+        mov     r13d,eax

+        add     r14d,r8d

+        movdqa  XMMWORD[rsp],xmm6

+        ror     r13d,14

+        movdqa  xmm4,xmm2

+        mov     r8d,r14d

+        mov     r12d,ebx

+        movdqa  xmm7,xmm0

+        ror     r14d,9

+        xor     r13d,eax

+        xor     r12d,ecx

+        ror     r13d,5

+        xor     r14d,r8d

+DB      102,15,58,15,225,4

+        and     r12d,eax

+        xor     r13d,eax

+DB      102,15,58,15,251,4

+        add     edx,DWORD[16+rsp]

+        mov     r15d,r8d

+        xor     r12d,ecx

+        ror     r14d,11

+        movdqa  xmm5,xmm4

+        xor     r15d,r9d

+        add     edx,r12d

+        movdqa  xmm6,xmm4

+        ror     r13d,6

+        and     edi,r15d

+        psrld   xmm4,3

+        xor     r14d,r8d

+        add     edx,r13d

+        xor     edi,r9d

+        paddd   xmm1,xmm7

+        ror     r14d,2

+        add     r11d,edx

+        psrld   xmm6,7

+        add     edx,edi

+        mov     r13d,r11d

+        pshufd  xmm7,xmm0,250

+        add     r14d,edx

+        ror     r13d,14

+        pslld   xmm5,14

+        mov     edx,r14d

+        mov     r12d,eax

+        pxor    xmm4,xmm6

+        ror     r14d,9

+        xor     r13d,r11d

+        xor     r12d,ebx

+        ror     r13d,5

+        psrld   xmm6,11

+        xor     r14d,edx

+        pxor    xmm4,xmm5

+        and     r12d,r11d

+        xor     r13d,r11d

+        pslld   xmm5,11

+        add     ecx,DWORD[20+rsp]

+        mov     edi,edx

+        pxor    xmm4,xmm6

+        xor     r12d,ebx

+        ror     r14d,11

+        movdqa  xmm6,xmm7

+        xor     edi,r8d

+        add     ecx,r12d

+        pxor    xmm4,xmm5

+        ror     r13d,6

+        and     r15d,edi

+        xor     r14d,edx

+        psrld   xmm7,10

+        add     ecx,r13d

+        xor     r15d,r8d

+        paddd   xmm1,xmm4

+        ror     r14d,2

+        add     r10d,ecx

+        psrlq   xmm6,17

+        add     ecx,r15d

+        mov     r13d,r10d

+        add     r14d,ecx

+        pxor    xmm7,xmm6

+        ror     r13d,14

+        mov     ecx,r14d

+        mov     r12d,r11d

+        ror     r14d,9

+        psrlq   xmm6,2

+        xor     r13d,r10d

+        xor     r12d,eax

+        pxor    xmm7,xmm6

+        ror     r13d,5

+        xor     r14d,ecx

+        and     r12d,r10d

+        pshufd  xmm7,xmm7,128

+        xor     r13d,r10d

+        add     ebx,DWORD[24+rsp]

+        mov     r15d,ecx

+        psrldq  xmm7,8

+        xor     r12d,eax

+        ror     r14d,11

+        xor     r15d,edx

+        add     ebx,r12d

+        ror     r13d,6

+        paddd   xmm1,xmm7

+        and     edi,r15d

+        xor     r14d,ecx

+        add     ebx,r13d

+        pshufd  xmm7,xmm1,80

+        xor     edi,edx

+        ror     r14d,2

+        add     r9d,ebx

+        movdqa  xmm6,xmm7

+        add     ebx,edi

+        mov     r13d,r9d

+        psrld   xmm7,10

+        add     r14d,ebx

+        ror     r13d,14

+        psrlq   xmm6,17

+        mov     ebx,r14d

+        mov     r12d,r10d

+        pxor    xmm7,xmm6

+        ror     r14d,9

+        xor     r13d,r9d

+        xor     r12d,r11d

+        ror     r13d,5

+        xor     r14d,ebx

+        psrlq   xmm6,2

+        and     r12d,r9d

+        xor     r13d,r9d

+        add     eax,DWORD[28+rsp]

+        pxor    xmm7,xmm6

+        mov     edi,ebx

+        xor     r12d,r11d

+        ror     r14d,11

+        pshufd  xmm7,xmm7,8

+        xor     edi,ecx

+        add     eax,r12d

+        movdqa  xmm6,XMMWORD[32+rbp]

+        ror     r13d,6

+        and     r15d,edi

+        pslldq  xmm7,8

+        xor     r14d,ebx

+        add     eax,r13d

+        xor     r15d,ecx

+        paddd   xmm1,xmm7

+        ror     r14d,2

+        add     r8d,eax

+        add     eax,r15d

+        paddd   xmm6,xmm1

+        mov     r13d,r8d

+        add     r14d,eax

+        movdqa  XMMWORD[16+rsp],xmm6

+        ror     r13d,14

+        movdqa  xmm4,xmm3

+        mov     eax,r14d

+        mov     r12d,r9d

+        movdqa  xmm7,xmm1

+        ror     r14d,9

+        xor     r13d,r8d

+        xor     r12d,r10d

+        ror     r13d,5

+        xor     r14d,eax

+DB      102,15,58,15,226,4

+        and     r12d,r8d

+        xor     r13d,r8d

+DB      102,15,58,15,248,4

+        add     r11d,DWORD[32+rsp]

+        mov     r15d,eax

+        xor     r12d,r10d

+        ror     r14d,11

+        movdqa  xmm5,xmm4

+        xor     r15d,ebx

+        add     r11d,r12d

+        movdqa  xmm6,xmm4

+        ror     r13d,6

+        and     edi,r15d

+        psrld   xmm4,3

+        xor     r14d,eax

+        add     r11d,r13d

+        xor     edi,ebx

+        paddd   xmm2,xmm7

+        ror     r14d,2

+        add     edx,r11d

+        psrld   xmm6,7

+        add     r11d,edi

+        mov     r13d,edx

+        pshufd  xmm7,xmm1,250

+        add     r14d,r11d

+        ror     r13d,14

+        pslld   xmm5,14

+        mov     r11d,r14d

+        mov     r12d,r8d

+        pxor    xmm4,xmm6

+        ror     r14d,9

+        xor     r13d,edx

+        xor     r12d,r9d

+        ror     r13d,5

+        psrld   xmm6,11

+        xor     r14d,r11d

+        pxor    xmm4,xmm5

+        and     r12d,edx

+        xor     r13d,edx

+        pslld   xmm5,11

+        add     r10d,DWORD[36+rsp]

+        mov     edi,r11d

+        pxor    xmm4,xmm6

+        xor     r12d,r9d

+        ror     r14d,11

+        movdqa  xmm6,xmm7

+        xor     edi,eax

+        add     r10d,r12d

+        pxor    xmm4,xmm5

+        ror     r13d,6

+        and     r15d,edi

+        xor     r14d,r11d

+        psrld   xmm7,10

+        add     r10d,r13d

+        xor     r15d,eax

+        paddd   xmm2,xmm4

+        ror     r14d,2

+        add     ecx,r10d

+        psrlq   xmm6,17

+        add     r10d,r15d

+        mov     r13d,ecx

+        add     r14d,r10d

+        pxor    xmm7,xmm6

+        ror     r13d,14

+        mov     r10d,r14d

+        mov     r12d,edx

+        ror     r14d,9

+        psrlq   xmm6,2

+        xor     r13d,ecx

+        xor     r12d,r8d

+        pxor    xmm7,xmm6

+        ror     r13d,5

+        xor     r14d,r10d

+        and     r12d,ecx

+        pshufd  xmm7,xmm7,128

+        xor     r13d,ecx

+        add     r9d,DWORD[40+rsp]

+        mov     r15d,r10d

+        psrldq  xmm7,8

+        xor     r12d,r8d

+        ror     r14d,11

+        xor     r15d,r11d

+        add     r9d,r12d

+        ror     r13d,6

+        paddd   xmm2,xmm7

+        and     edi,r15d

+        xor     r14d,r10d

+        add     r9d,r13d

+        pshufd  xmm7,xmm2,80

+        xor     edi,r11d

+        ror     r14d,2

+        add     ebx,r9d

+        movdqa  xmm6,xmm7

+        add     r9d,edi

+        mov     r13d,ebx

+        psrld   xmm7,10

+        add     r14d,r9d

+        ror     r13d,14

+        psrlq   xmm6,17

+        mov     r9d,r14d

+        mov     r12d,ecx

+        pxor    xmm7,xmm6

+        ror     r14d,9

+        xor     r13d,ebx

+        xor     r12d,edx

+        ror     r13d,5

+        xor     r14d,r9d

+        psrlq   xmm6,2

+        and     r12d,ebx

+        xor     r13d,ebx

+        add     r8d,DWORD[44+rsp]

+        pxor    xmm7,xmm6

+        mov     edi,r9d

+        xor     r12d,edx

+        ror     r14d,11

+        pshufd  xmm7,xmm7,8

+        xor     edi,r10d

+        add     r8d,r12d

+        movdqa  xmm6,XMMWORD[64+rbp]

+        ror     r13d,6

+        and     r15d,edi

+        pslldq  xmm7,8

+        xor     r14d,r9d

+        add     r8d,r13d

+        xor     r15d,r10d

+        paddd   xmm2,xmm7

+        ror     r14d,2

+        add     eax,r8d

+        add     r8d,r15d

+        paddd   xmm6,xmm2

+        mov     r13d,eax

+        add     r14d,r8d

+        movdqa  XMMWORD[32+rsp],xmm6

+        ror     r13d,14

+        movdqa  xmm4,xmm0

+        mov     r8d,r14d

+        mov     r12d,ebx

+        movdqa  xmm7,xmm2

+        ror     r14d,9

+        xor     r13d,eax

+        xor     r12d,ecx

+        ror     r13d,5

+        xor     r14d,r8d

+DB      102,15,58,15,227,4

+        and     r12d,eax

+        xor     r13d,eax

+DB      102,15,58,15,249,4

+        add     edx,DWORD[48+rsp]

+        mov     r15d,r8d

+        xor     r12d,ecx

+        ror     r14d,11

+        movdqa  xmm5,xmm4

+        xor     r15d,r9d

+        add     edx,r12d

+        movdqa  xmm6,xmm4

+        ror     r13d,6

+        and     edi,r15d

+        psrld   xmm4,3

+        xor     r14d,r8d

+        add     edx,r13d

+        xor     edi,r9d

+        paddd   xmm3,xmm7

+        ror     r14d,2

+        add     r11d,edx

+        psrld   xmm6,7

+        add     edx,edi

+        mov     r13d,r11d

+        pshufd  xmm7,xmm2,250

+        add     r14d,edx

+        ror     r13d,14

+        pslld   xmm5,14

+        mov     edx,r14d

+        mov     r12d,eax

+        pxor    xmm4,xmm6

+        ror     r14d,9

+        xor     r13d,r11d

+        xor     r12d,ebx

+        ror     r13d,5

+        psrld   xmm6,11

+        xor     r14d,edx

+        pxor    xmm4,xmm5

+        and     r12d,r11d

+        xor     r13d,r11d

+        pslld   xmm5,11

+        add     ecx,DWORD[52+rsp]

+        mov     edi,edx

+        pxor    xmm4,xmm6

+        xor     r12d,ebx

+        ror     r14d,11

+        movdqa  xmm6,xmm7

+        xor     edi,r8d

+        add     ecx,r12d

+        pxor    xmm4,xmm5

+        ror     r13d,6

+        and     r15d,edi

+        xor     r14d,edx

+        psrld   xmm7,10

+        add     ecx,r13d

+        xor     r15d,r8d

+        paddd   xmm3,xmm4

+        ror     r14d,2

+        add     r10d,ecx

+        psrlq   xmm6,17

+        add     ecx,r15d

+        mov     r13d,r10d

+        add     r14d,ecx

+        pxor    xmm7,xmm6

+        ror     r13d,14

+        mov     ecx,r14d

+        mov     r12d,r11d

+        ror     r14d,9

+        psrlq   xmm6,2

+        xor     r13d,r10d

+        xor     r12d,eax

+        pxor    xmm7,xmm6

+        ror     r13d,5

+        xor     r14d,ecx

+        and     r12d,r10d

+        pshufd  xmm7,xmm7,128

+        xor     r13d,r10d

+        add     ebx,DWORD[56+rsp]

+        mov     r15d,ecx

+        psrldq  xmm7,8

+        xor     r12d,eax

+        ror     r14d,11

+        xor     r15d,edx

+        add     ebx,r12d

+        ror     r13d,6

+        paddd   xmm3,xmm7

+        and     edi,r15d

+        xor     r14d,ecx

+        add     ebx,r13d

+        pshufd  xmm7,xmm3,80

+        xor     edi,edx

+        ror     r14d,2

+        add     r9d,ebx

+        movdqa  xmm6,xmm7

+        add     ebx,edi

+        mov     r13d,r9d

+        psrld   xmm7,10

+        add     r14d,ebx

+        ror     r13d,14

+        psrlq   xmm6,17

+        mov     ebx,r14d

+        mov     r12d,r10d

+        pxor    xmm7,xmm6

+        ror     r14d,9

+        xor     r13d,r9d

+        xor     r12d,r11d

+        ror     r13d,5

+        xor     r14d,ebx

+        psrlq   xmm6,2

+        and     r12d,r9d

+        xor     r13d,r9d

+        add     eax,DWORD[60+rsp]

+        pxor    xmm7,xmm6

+        mov     edi,ebx

+        xor     r12d,r11d

+        ror     r14d,11

+        pshufd  xmm7,xmm7,8

+        xor     edi,ecx

+        add     eax,r12d

+        movdqa  xmm6,XMMWORD[96+rbp]

+        ror     r13d,6

+        and     r15d,edi

+        pslldq  xmm7,8

+        xor     r14d,ebx

+        add     eax,r13d

+        xor     r15d,ecx

+        paddd   xmm3,xmm7

+        ror     r14d,2

+        add     r8d,eax

+        add     eax,r15d

+        paddd   xmm6,xmm3

+        mov     r13d,r8d

+        add     r14d,eax

+        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

+        ror     r14d,9

+        xor     r13d,r8d

+        xor     r12d,r10d

+        ror     r13d,5

+        xor     r14d,eax

+        and     r12d,r8d

+        xor     r13d,r8d

+        add     r11d,DWORD[rsp]

+        mov     r15d,eax

+        xor     r12d,r10d

+        ror     r14d,11

+        xor     r15d,ebx

+        add     r11d,r12d

+        ror     r13d,6

+        and     edi,r15d

+        xor     r14d,eax

+        add     r11d,r13d

+        xor     edi,ebx

+        ror     r14d,2

+        add     edx,r11d

+        add     r11d,edi

+        mov     r13d,edx

+        add     r14d,r11d

+        ror     r13d,14

+        mov     r11d,r14d

+        mov     r12d,r8d

+        ror     r14d,9

+        xor     r13d,edx

+        xor     r12d,r9d

+        ror     r13d,5

+        xor     r14d,r11d

+        and     r12d,edx

+        xor     r13d,edx

+        add     r10d,DWORD[4+rsp]

+        mov     edi,r11d

+        xor     r12d,r9d

+        ror     r14d,11

+        xor     edi,eax

+        add     r10d,r12d

+        ror     r13d,6

+        and     r15d,edi

+        xor     r14d,r11d

+        add     r10d,r13d

+        xor     r15d,eax

+        ror     r14d,2

+        add     ecx,r10d

+        add     r10d,r15d

+        mov     r13d,ecx

+        add     r14d,r10d

+        ror     r13d,14

+        mov     r10d,r14d

+        mov     r12d,edx

+        ror     r14d,9

+        xor     r13d,ecx

+        xor     r12d,r8d

+        ror     r13d,5

+        xor     r14d,r10d

+        and     r12d,ecx

+        xor     r13d,ecx

+        add     r9d,DWORD[8+rsp]

+        mov     r15d,r10d

+        xor     r12d,r8d

+        ror     r14d,11

+        xor     r15d,r11d

+        add     r9d,r12d

+        ror     r13d,6

+        and     edi,r15d

+        xor     r14d,r10d

+        add     r9d,r13d

+        xor     edi,r11d

+        ror     r14d,2

+        add     ebx,r9d

+        add     r9d,edi

+        mov     r13d,ebx

+        add     r14d,r9d

+        ror     r13d,14

+        mov     r9d,r14d

+        mov     r12d,ecx

+        ror     r14d,9

+        xor     r13d,ebx

+        xor     r12d,edx

+        ror     r13d,5

+        xor     r14d,r9d

+        and     r12d,ebx

+        xor     r13d,ebx

+        add     r8d,DWORD[12+rsp]

+        mov     edi,r9d

+        xor     r12d,edx

+        ror     r14d,11

+        xor     edi,r10d

+        add     r8d,r12d

+        ror     r13d,6

+        and     r15d,edi

+        xor     r14d,r9d

+        add     r8d,r13d

+        xor     r15d,r10d

+        ror     r14d,2

+        add     eax,r8d

+        add     r8d,r15d

+        mov     r13d,eax

+        add     r14d,r8d

+        ror     r13d,14

+        mov     r8d,r14d

+        mov     r12d,ebx

+        ror     r14d,9

+        xor     r13d,eax

+        xor     r12d,ecx

+        ror     r13d,5

+        xor     r14d,r8d

+        and     r12d,eax

+        xor     r13d,eax

+        add     edx,DWORD[16+rsp]

+        mov     r15d,r8d

+        xor     r12d,ecx

+        ror     r14d,11

+        xor     r15d,r9d

+        add     edx,r12d

+        ror     r13d,6

+        and     edi,r15d

+        xor     r14d,r8d

+        add     edx,r13d

+        xor     edi,r9d

+        ror     r14d,2

+        add     r11d,edx

+        add     edx,edi

+        mov     r13d,r11d

+        add     r14d,edx

+        ror     r13d,14

+        mov     edx,r14d

+        mov     r12d,eax

+        ror     r14d,9

+        xor     r13d,r11d

+        xor     r12d,ebx

+        ror     r13d,5

+        xor     r14d,edx

+        and     r12d,r11d

+        xor     r13d,r11d

+        add     ecx,DWORD[20+rsp]

+        mov     edi,edx

+        xor     r12d,ebx

+        ror     r14d,11

+        xor     edi,r8d

+        add     ecx,r12d

+        ror     r13d,6

+        and     r15d,edi

+        xor     r14d,edx

+        add     ecx,r13d

+        xor     r15d,r8d

+        ror     r14d,2

+        add     r10d,ecx

+        add     ecx,r15d

+        mov     r13d,r10d

+        add     r14d,ecx

+        ror     r13d,14

+        mov     ecx,r14d

+        mov     r12d,r11d

+        ror     r14d,9

+        xor     r13d,r10d

+        xor     r12d,eax

+        ror     r13d,5

+        xor     r14d,ecx

+        and     r12d,r10d

+        xor     r13d,r10d

+        add     ebx,DWORD[24+rsp]

+        mov     r15d,ecx

+        xor     r12d,eax

+        ror     r14d,11

+        xor     r15d,edx

+        add     ebx,r12d

+        ror     r13d,6

+        and     edi,r15d

+        xor     r14d,ecx

+        add     ebx,r13d

+        xor     edi,edx

+        ror     r14d,2

+        add     r9d,ebx

+        add     ebx,edi

+        mov     r13d,r9d

+        add     r14d,ebx

+        ror     r13d,14

+        mov     ebx,r14d

+        mov     r12d,r10d

+        ror     r14d,9

+        xor     r13d,r9d

+        xor     r12d,r11d

+        ror     r13d,5

+        xor     r14d,ebx

+        and     r12d,r9d

+        xor     r13d,r9d

+        add     eax,DWORD[28+rsp]

+        mov     edi,ebx

+        xor     r12d,r11d

+        ror     r14d,11

+        xor     edi,ecx

+        add     eax,r12d

+        ror     r13d,6

+        and     r15d,edi

+        xor     r14d,ebx

+        add     eax,r13d

+        xor     r15d,ecx

+        ror     r14d,2

+        add     r8d,eax

+        add     eax,r15d

+        mov     r13d,r8d

+        add     r14d,eax

+        ror     r13d,14

+        mov     eax,r14d

+        mov     r12d,r9d

+        ror     r14d,9

+        xor     r13d,r8d

+        xor     r12d,r10d

+        ror     r13d,5

+        xor     r14d,eax

+        and     r12d,r8d

+        xor     r13d,r8d

+        add     r11d,DWORD[32+rsp]

+        mov     r15d,eax

+        xor     r12d,r10d

+        ror     r14d,11

+        xor     r15d,ebx

+        add     r11d,r12d

+        ror     r13d,6

+        and     edi,r15d

+        xor     r14d,eax

+        add     r11d,r13d

+        xor     edi,ebx

+        ror     r14d,2

+        add     edx,r11d

+        add     r11d,edi

+        mov     r13d,edx

+        add     r14d,r11d

+        ror     r13d,14

+        mov     r11d,r14d

+        mov     r12d,r8d

+        ror     r14d,9

+        xor     r13d,edx

+        xor     r12d,r9d

+        ror     r13d,5

+        xor     r14d,r11d

+        and     r12d,edx

+        xor     r13d,edx

+        add     r10d,DWORD[36+rsp]

+        mov     edi,r11d

+        xor     r12d,r9d

+        ror     r14d,11

+        xor     edi,eax

+        add     r10d,r12d

+        ror     r13d,6

+        and     r15d,edi

+        xor     r14d,r11d

+        add     r10d,r13d

+        xor     r15d,eax

+        ror     r14d,2

+        add     ecx,r10d

+        add     r10d,r15d

+        mov     r13d,ecx

+        add     r14d,r10d

+        ror     r13d,14

+        mov     r10d,r14d

+        mov     r12d,edx

+        ror     r14d,9

+        xor     r13d,ecx

+        xor     r12d,r8d

+        ror     r13d,5

+        xor     r14d,r10d

+        and     r12d,ecx

+        xor     r13d,ecx

+        add     r9d,DWORD[40+rsp]

+        mov     r15d,r10d

+        xor     r12d,r8d

+        ror     r14d,11

+        xor     r15d,r11d

+        add     r9d,r12d

+        ror     r13d,6

+        and     edi,r15d

+        xor     r14d,r10d

+        add     r9d,r13d

+        xor     edi,r11d

+        ror     r14d,2

+        add     ebx,r9d

+        add     r9d,edi

+        mov     r13d,ebx

+        add     r14d,r9d

+        ror     r13d,14

+        mov     r9d,r14d

+        mov     r12d,ecx

+        ror     r14d,9

+        xor     r13d,ebx

+        xor     r12d,edx

+        ror     r13d,5

+        xor     r14d,r9d

+        and     r12d,ebx

+        xor     r13d,ebx

+        add     r8d,DWORD[44+rsp]

+        mov     edi,r9d

+        xor     r12d,edx

+        ror     r14d,11

+        xor     edi,r10d

+        add     r8d,r12d

+        ror     r13d,6

+        and     r15d,edi

+        xor     r14d,r9d

+        add     r8d,r13d

+        xor     r15d,r10d

+        ror     r14d,2

+        add     eax,r8d

+        add     r8d,r15d

+        mov     r13d,eax

+        add     r14d,r8d

+        ror     r13d,14

+        mov     r8d,r14d

+        mov     r12d,ebx

+        ror     r14d,9

+        xor     r13d,eax

+        xor     r12d,ecx

+        ror     r13d,5

+        xor     r14d,r8d

+        and     r12d,eax

+        xor     r13d,eax

+        add     edx,DWORD[48+rsp]

+        mov     r15d,r8d

+        xor     r12d,ecx

+        ror     r14d,11

+        xor     r15d,r9d

+        add     edx,r12d

+        ror     r13d,6

+        and     edi,r15d

+        xor     r14d,r8d

+        add     edx,r13d

+        xor     edi,r9d

+        ror     r14d,2

+        add     r11d,edx

+        add     edx,edi

+        mov     r13d,r11d

+        add     r14d,edx

+        ror     r13d,14

+        mov     edx,r14d

+        mov     r12d,eax

+        ror     r14d,9

+        xor     r13d,r11d

+        xor     r12d,ebx

+        ror     r13d,5

+        xor     r14d,edx

+        and     r12d,r11d

+        xor     r13d,r11d

+        add     ecx,DWORD[52+rsp]

+        mov     edi,edx

+        xor     r12d,ebx

+        ror     r14d,11

+        xor     edi,r8d

+        add     ecx,r12d

+        ror     r13d,6

+        and     r15d,edi

+        xor     r14d,edx

+        add     ecx,r13d

+        xor     r15d,r8d

+        ror     r14d,2

+        add     r10d,ecx

+        add     ecx,r15d

+        mov     r13d,r10d

+        add     r14d,ecx

+        ror     r13d,14

+        mov     ecx,r14d

+        mov     r12d,r11d

+        ror     r14d,9

+        xor     r13d,r10d

+        xor     r12d,eax

+        ror     r13d,5

+        xor     r14d,ecx

+        and     r12d,r10d

+        xor     r13d,r10d

+        add     ebx,DWORD[56+rsp]

+        mov     r15d,ecx

+        xor     r12d,eax

+        ror     r14d,11

+        xor     r15d,edx

+        add     ebx,r12d

+        ror     r13d,6

+        and     edi,r15d

+        xor     r14d,ecx

+        add     ebx,r13d

+        xor     edi,edx

+        ror     r14d,2

+        add     r9d,ebx

+        add     ebx,edi

+        mov     r13d,r9d

+        add     r14d,ebx

+        ror     r13d,14

+        mov     ebx,r14d

+        mov     r12d,r10d

+        ror     r14d,9

+        xor     r13d,r9d

+        xor     r12d,r11d

+        ror     r13d,5

+        xor     r14d,ebx

+        and     r12d,r9d

+        xor     r13d,r9d

+        add     eax,DWORD[60+rsp]

+        mov     edi,ebx

+        xor     r12d,r11d

+        ror     r14d,11

+        xor     edi,ecx

+        add     eax,r12d

+        ror     r13d,6

+        and     r15d,edi

+        xor     r14d,ebx

+        add     eax,r13d

+        xor     r15d,ecx

+        ror     r14d,2

+        add     r8d,eax

+        add     eax,r15d

+        mov     r13d,r8d

+        add     r14d,eax

+        mov     rdi,QWORD[((64+0))+rsp]

+        mov     eax,r14d

+

+        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[((64+16))+rsp]

+

+        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[88+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[((-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$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:

+EXTERN  __imp_RtlVirtualUnwind

+

+ALIGN   16

+se_handler:

+        push    rsi

+        push    rdi

+        push    rbx

+        push    rbp

+        push    r12

+        push    r13

+        push    r14

+        push    r15

+        pushfq

+        sub     rsp,64

+

+        mov     rax,QWORD[120+r8]

+        mov     rbx,QWORD[248+r8]

+

+        mov     rsi,QWORD[8+r9]

+        mov     r11,QWORD[56+r9]

+

+        mov     r10d,DWORD[r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jb      NEAR $L$in_prologue

+

+        mov     rax,QWORD[152+r8]

+

+        mov     r10d,DWORD[4+r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jae     NEAR $L$in_prologue

+        mov     rsi,rax

+        mov     rax,QWORD[((64+24))+rax]

+

+        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,[$L$epilogue]

+        cmp     rbx,r10

+        jb      NEAR $L$in_prologue

+

+        lea     rsi,[((64+32))+rsi]

+        lea     rdi,[512+r8]

+        mov     ecx,8

+        DD      0xa548f3fc

+

+$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[40+r9]

+        mov     rsi,r8

+        mov     ecx,154

+        DD      0xa548f3fc

+

+        mov     rsi,r9

+        xor     rcx,rcx

+        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

+        popfq

+        pop     r15

+        pop     r14

+        pop     r13

+        pop     r12

+        pop     rbp

+        pop     rbx

+        pop     rdi

+        pop     rsi

+        DB      0F3h,0C3h               ;repret

+

+

+ALIGN   16

+shaext_handler:

+        push    rsi

+        push    rdi

+        push    rbx

+        push    rbp

+        push    r12

+        push    r13

+        push    r14

+        push    r15

+        pushfq

+        sub     rsp,64

+

+        mov     rax,QWORD[120+r8]

+        mov     rbx,QWORD[248+r8]

+

+        lea     r10,[$L$prologue_shaext]

+        cmp     rbx,r10

+        jb      NEAR $L$in_prologue

+

+        lea     r10,[$L$epilogue_shaext]

+        cmp     rbx,r10

+        jae     NEAR $L$in_prologue

+

+        lea     rsi,[((-8-80))+rax]

+        lea     rdi,[512+r8]

+        mov     ecx,10

+        DD      0xa548f3fc

+

+        jmp     NEAR $L$in_prologue

+

+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_shaext
wrt ..imagebase


+        DD      $L$SEH_end_sha256_block_data_order_shaext wrt
..imagebase


+        DD      $L$SEH_info_sha256_block_data_order_shaext 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_shaext:

+DB      9,0,0,0

+        DD      shaext_handler 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/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-
x86_64.nasm

b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-x86_64.nasm
new file mode 100644
index 0000000000..c6397d4393
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha512-
x86_64.nasm

@@ -0,0 +1,1938 @@
+; WARNING: do not edit!

+; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl

+;

+; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
Reserved.


+;

+; Licensed under the OpenSSL license (the "License").  You may not use

+; this file except in compliance with the License.  You can obtain a
copy


+; in the file LICENSE in the source distribution or at

+; https://www.openssl.org/source/license.html

+

+default rel

+%define XMMWORD

+%define YMMWORD

+%define ZMMWORD

+section .text code align=64

+

+

+EXTERN  OPENSSL_ia32cap_P

+global  sha512_block_data_order

+

+ALIGN   16

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

+        mov     rdi,rcx

+        mov     rsi,rdx

+        mov     rdx,r8

+

+

+

+        mov     rax,rsp

+

+        push    rbx

+

+        push    rbp

+

+        push    r12

+

+        push    r13

+

+        push    r14

+

+        push    r15

+

+        shl     rdx,4

+        sub     rsp,16*8+4*8

+        lea     rdx,[rdx*8+rsi]

+        and     rsp,-64

+        mov     QWORD[((128+0))+rsp],rdi

+        mov     QWORD[((128+8))+rsp],rsi

+        mov     QWORD[((128+16))+rsp],rdx

+        mov     QWORD[152+rsp],rax

+

+$L$prologue:

+

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

+        mov     rdi,rbx

+        lea     rbp,[K512]

+        xor     rdi,rcx

+        mov     r12,QWORD[rsi]

+        mov     r13,r8

+        mov     r14,rax

+        bswap   r12

+        ror     r13,23

+        mov     r15,r9

+

+        xor     r13,r8

+        ror     r14,5

+        xor     r15,r10

+

+        mov     QWORD[rsp],r12

+        xor     r14,rax

+        and     r15,r8

+

+        ror     r13,4

+        add     r12,r11

+        xor     r15,r10

+

+        ror     r14,6

+        xor     r13,r8

+        add     r12,r15

+

+        mov     r15,rax

+        add     r12,QWORD[rbp]

+        xor     r14,rax

+

+        xor     r15,rbx

+        ror     r13,14

+        mov     r11,rbx

+

+        and     rdi,r15

+        ror     r14,28

+        add     r12,r13

+

+        xor     r11,rdi

+        add     rdx,r12

+        add     r11,r12

+

+        lea     rbp,[8+rbp]

+        add     r11,r14

+        mov     r12,QWORD[8+rsi]

+        mov     r13,rdx

+        mov     r14,r11

+        bswap   r12

+        ror     r13,23

+        mov     rdi,r8

+

+        xor     r13,rdx

+        ror     r14,5

+        xor     rdi,r9

+

+        mov     QWORD[8+rsp],r12

+        xor     r14,r11

+        and     rdi,rdx

+

+        ror     r13,4

+        add     r12,r10

+        xor     rdi,r9

+

+        ror     r14,6

+        xor     r13,rdx

+        add     r12,rdi

+

+        mov     rdi,r11

+        add     r12,QWORD[rbp]

+        xor     r14,r11

+

+        xor     rdi,rax

+        ror     r13,14

+        mov     r10,rax

+

+        and     r15,rdi

+        ror     r14,28

+        add     r12,r13

+

+        xor     r10,r15

+        add     rcx,r12

+        add     r10,r12

+

+        lea     rbp,[24+rbp]

+        add     r10,r14

+        mov     r12,QWORD[16+rsi]

+        mov     r13,rcx

+        mov     r14,r10

+        bswap   r12

+        ror     r13,23

+        mov     r15,rdx

+

+        xor     r13,rcx

+        ror     r14,5

+        xor     r15,r8

+

+        mov     QWORD[16+rsp],r12

+        xor     r14,r10

+        and     r15,rcx

+

+        ror     r13,4

+        add     r12,r9

+        xor     r15,r8

+

+        ror     r14,6

+        xor     r13,rcx

+        add     r12,r15

+

+        mov     r15,r10

+        add     r12,QWORD[rbp]

+        xor     r14,r10

+

+        xor     r15,r11

+        ror     r13,14

+        mov     r9,r11

+

+        and     rdi,r15

+        ror     r14,28

+        add     r12,r13

+

+        xor     r9,rdi

+        add     rbx,r12

+        add     r9,r12

+

+        lea     rbp,[8+rbp]

+        add     r9,r14

+        mov     r12,QWORD[24+rsi]

+        mov     r13,rbx

+        mov     r14,r9

+        bswap   r12

+        ror     r13,23

+        mov     rdi,rcx

+

+        xor     r13,rbx

+        ror     r14,5

+        xor     rdi,rdx

+

+        mov     QWORD[24+rsp],r12

+        xor     r14,r9

+        and     rdi,rbx

+

+        ror     r13,4

+        add     r12,r8

+        xor     rdi,rdx

+

+        ror     r14,6

+        xor     r13,rbx

+        add     r12,rdi

+

+        mov     rdi,r9

+        add     r12,QWORD[rbp]

+        xor     r14,r9

+

+        xor     rdi,r10

+        ror     r13,14

+        mov     r8,r10

+

+        and     r15,rdi

+        ror     r14,28

+        add     r12,r13

+

+        xor     r8,r15

+        add     rax,r12

+        add     r8,r12

+

+        lea     rbp,[24+rbp]

+        add     r8,r14

+        mov     r12,QWORD[32+rsi]

+        mov     r13,rax

+        mov     r14,r8

+        bswap   r12

+        ror     r13,23

+        mov     r15,rbx

+

+        xor     r13,rax

+        ror     r14,5

+        xor     r15,rcx

+

+        mov     QWORD[32+rsp],r12

+        xor     r14,r8

+        and     r15,rax

+

+        ror     r13,4

+        add     r12,rdx

+        xor     r15,rcx

+

+        ror     r14,6

+        xor     r13,rax

+        add     r12,r15

+

+        mov     r15,r8

+        add     r12,QWORD[rbp]

+        xor     r14,r8

+

+        xor     r15,r9

+        ror     r13,14

+        mov     rdx,r9

+

+        and     rdi,r15

+        ror     r14,28

+        add     r12,r13

+

+        xor     rdx,rdi

+        add     r11,r12

+        add     rdx,r12

+

+        lea     rbp,[8+rbp]

+        add     rdx,r14

+        mov     r12,QWORD[40+rsi]

+        mov     r13,r11

+        mov     r14,rdx

+        bswap   r12

+        ror     r13,23

+        mov     rdi,rax

+

+        xor     r13,r11

+        ror     r14,5

+        xor     rdi,rbx

+

+        mov     QWORD[40+rsp],r12

+        xor     r14,rdx

+        and     rdi,r11

+

+        ror     r13,4

+        add     r12,rcx

+        xor     rdi,rbx

+

+        ror     r14,6

+        xor     r13,r11

+        add     r12,rdi

+

+        mov     rdi,rdx

+        add     r12,QWORD[rbp]

+        xor     r14,rdx

+

+        xor     rdi,r8

+        ror     r13,14

+        mov     rcx,r8

+

+        and     r15,rdi

+        ror     r14,28

+        add     r12,r13

+

+        xor     rcx,r15

+        add     r10,r12

+        add     rcx,r12

+

+        lea     rbp,[24+rbp]

+        add     rcx,r14

+        mov     r12,QWORD[48+rsi]

+        mov     r13,r10

+        mov     r14,rcx

+        bswap   r12

+        ror     r13,23

+        mov     r15,r11

+

+        xor     r13,r10

+        ror     r14,5

+        xor     r15,rax

+

+        mov     QWORD[48+rsp],r12

+        xor     r14,rcx

+        and     r15,r10

+

+        ror     r13,4

+        add     r12,rbx

+        xor     r15,rax

+

+        ror     r14,6

+        xor     r13,r10

+        add     r12,r15

+

+        mov     r15,rcx

+        add     r12,QWORD[rbp]

+        xor     r14,rcx

+

+        xor     r15,rdx

+        ror     r13,14

+        mov     rbx,rdx

+

+        and     rdi,r15

+        ror     r14,28

+        add     r12,r13

+

+        xor     rbx,rdi

+        add     r9,r12

+        add     rbx,r12

+

+        lea     rbp,[8+rbp]

+        add     rbx,r14

+        mov     r12,QWORD[56+rsi]

+        mov     r13,r9

+        mov     r14,rbx

+        bswap   r12

+        ror     r13,23

+        mov     rdi,r10

+

+        xor     r13,r9

+        ror     r14,5

+        xor     rdi,r11

+

+        mov     QWORD[56+rsp],r12

+        xor     r14,rbx

+        and     rdi,r9

+

+        ror     r13,4

+        add     r12,rax

+        xor     rdi,r11

+

+        ror     r14,6

+        xor     r13,r9

+        add     r12,rdi

+

+        mov     rdi,rbx

+        add     r12,QWORD[rbp]

+        xor     r14,rbx

+

+        xor     rdi,rcx

+        ror     r13,14

+        mov     rax,rcx

+

+        and     r15,rdi

+        ror     r14,28

+        add     r12,r13

+

+        xor     rax,r15

+        add     r8,r12

+        add     rax,r12

+

+        lea     rbp,[24+rbp]

+        add     rax,r14

+        mov     r12,QWORD[64+rsi]

+        mov     r13,r8

+        mov     r14,rax

+        bswap   r12

+        ror     r13,23

+        mov     r15,r9

+

+        xor     r13,r8

+        ror     r14,5

+        xor     r15,r10

+

+        mov     QWORD[64+rsp],r12

+        xor     r14,rax

+        and     r15,r8

+

+        ror     r13,4

+        add     r12,r11

+        xor     r15,r10

+

+        ror     r14,6

+        xor     r13,r8

+        add     r12,r15

+

+        mov     r15,rax

+        add     r12,QWORD[rbp]

+        xor     r14,rax

+

+        xor     r15,rbx

+        ror     r13,14

+        mov     r11,rbx

+

+        and     rdi,r15

+        ror     r14,28

+        add     r12,r13

+

+        xor     r11,rdi

+        add     rdx,r12

+        add     r11,r12

+

+        lea     rbp,[8+rbp]

+        add     r11,r14

+        mov     r12,QWORD[72+rsi]

+        mov     r13,rdx

+        mov     r14,r11

+        bswap   r12

+        ror     r13,23

+        mov     rdi,r8

+

+        xor     r13,rdx

+        ror     r14,5

+        xor     rdi,r9

+

+        mov     QWORD[72+rsp],r12

+        xor     r14,r11

+        and     rdi,rdx

+

+        ror     r13,4

+        add     r12,r10

+        xor     rdi,r9

+

+        ror     r14,6

+        xor     r13,rdx

+        add     r12,rdi

+

+        mov     rdi,r11

+        add     r12,QWORD[rbp]

+        xor     r14,r11

+

+        xor     rdi,rax

+        ror     r13,14

+        mov     r10,rax

+

+        and     r15,rdi

+        ror     r14,28

+        add     r12,r13

+

+        xor     r10,r15

+        add     rcx,r12

+        add     r10,r12

+

+        lea     rbp,[24+rbp]

+        add     r10,r14

+        mov     r12,QWORD[80+rsi]

+        mov     r13,rcx

+        mov     r14,r10

+        bswap   r12

+        ror     r13,23

+        mov     r15,rdx

+

+        xor     r13,rcx

+        ror     r14,5

+        xor     r15,r8

+

+        mov     QWORD[80+rsp],r12

+        xor     r14,r10

+        and     r15,rcx

+

+        ror     r13,4

+        add     r12,r9

+        xor     r15,r8

+

+        ror     r14,6

+        xor     r13,rcx

+        add     r12,r15

+

+        mov     r15,r10

+        add     r12,QWORD[rbp]

+        xor     r14,r10

+

+        xor     r15,r11

+        ror     r13,14

+        mov     r9,r11

+

+        and     rdi,r15

+        ror     r14,28

+        add     r12,r13

+

+        xor     r9,rdi

+        add     rbx,r12

+        add     r9,r12

+

+        lea     rbp,[8+rbp]

+        add     r9,r14

+        mov     r12,QWORD[88+rsi]

+        mov     r13,rbx

+        mov     r14,r9

+        bswap   r12

+        ror     r13,23

+        mov     rdi,rcx

+

+        xor     r13,rbx

+        ror     r14,5

+        xor     rdi,rdx

+

+        mov     QWORD[88+rsp],r12

+        xor     r14,r9

+        and     rdi,rbx

+

+        ror     r13,4

+        add     r12,r8

+        xor     rdi,rdx

+

+        ror     r14,6

+        xor     r13,rbx

+        add     r12,rdi

+

+        mov     rdi,r9

+        add     r12,QWORD[rbp]

+        xor     r14,r9

+

+        xor     rdi,r10

+        ror     r13,14

+        mov     r8,r10

+

+        and     r15,rdi

+        ror     r14,28

+        add     r12,r13

+

+        xor     r8,r15

+        add     rax,r12

+        add     r8,r12

+

+        lea     rbp,[24+rbp]

+        add     r8,r14

+        mov     r12,QWORD[96+rsi]

+        mov     r13,rax

+        mov     r14,r8

+        bswap   r12

+        ror     r13,23

+        mov     r15,rbx

+

+        xor     r13,rax

+        ror     r14,5

+        xor     r15,rcx

+

+        mov     QWORD[96+rsp],r12

+        xor     r14,r8

+        and     r15,rax

+

+        ror     r13,4

+        add     r12,rdx

+        xor     r15,rcx

+

+        ror     r14,6

+        xor     r13,rax

+        add     r12,r15

+

+        mov     r15,r8

+        add     r12,QWORD[rbp]

+        xor     r14,r8

+

+        xor     r15,r9

+        ror     r13,14

+        mov     rdx,r9

+

+        and     rdi,r15

+        ror     r14,28

+        add     r12,r13

+

+        xor     rdx,rdi

+        add     r11,r12

+        add     rdx,r12

+

+        lea     rbp,[8+rbp]

+        add     rdx,r14

+        mov     r12,QWORD[104+rsi]

+        mov     r13,r11

+        mov     r14,rdx

+        bswap   r12

+        ror     r13,23

+        mov     rdi,rax

+

+        xor     r13,r11

+        ror     r14,5

+        xor     rdi,rbx

+

+        mov     QWORD[104+rsp],r12

+        xor     r14,rdx

+        and     rdi,r11

+

+        ror     r13,4

+        add     r12,rcx

+        xor     rdi,rbx

+

+        ror     r14,6

+        xor     r13,r11

+        add     r12,rdi

+

+        mov     rdi,rdx

+        add     r12,QWORD[rbp]

+        xor     r14,rdx

+

+        xor     rdi,r8

+        ror     r13,14

+        mov     rcx,r8

+

+        and     r15,rdi

+        ror     r14,28

+        add     r12,r13

+

+        xor     rcx,r15

+        add     r10,r12

+        add     rcx,r12

+

+        lea     rbp,[24+rbp]

+        add     rcx,r14

+        mov     r12,QWORD[112+rsi]

+        mov     r13,r10

+        mov     r14,rcx

+        bswap   r12

+        ror     r13,23

+        mov     r15,r11

+

+        xor     r13,r10

+        ror     r14,5

+        xor     r15,rax

+

+        mov     QWORD[112+rsp],r12

+        xor     r14,rcx

+        and     r15,r10

+

+        ror     r13,4

+        add     r12,rbx

+        xor     r15,rax

+

+        ror     r14,6

+        xor     r13,r10

+        add     r12,r15

+

+        mov     r15,rcx

+        add     r12,QWORD[rbp]

+        xor     r14,rcx

+

+        xor     r15,rdx

+        ror     r13,14

+        mov     rbx,rdx

+

+        and     rdi,r15

+        ror     r14,28

+        add     r12,r13

+

+        xor     rbx,rdi

+        add     r9,r12

+        add     rbx,r12

+

+        lea     rbp,[8+rbp]

+        add     rbx,r14

+        mov     r12,QWORD[120+rsi]

+        mov     r13,r9

+        mov     r14,rbx

+        bswap   r12

+        ror     r13,23

+        mov     rdi,r10

+

+        xor     r13,r9

+        ror     r14,5

+        xor     rdi,r11

+

+        mov     QWORD[120+rsp],r12

+        xor     r14,rbx

+        and     rdi,r9

+

+        ror     r13,4

+        add     r12,rax

+        xor     rdi,r11

+

+        ror     r14,6

+        xor     r13,r9

+        add     r12,rdi

+

+        mov     rdi,rbx

+        add     r12,QWORD[rbp]

+        xor     r14,rbx

+

+        xor     rdi,rcx

+        ror     r13,14

+        mov     rax,rcx

+

+        and     r15,rdi

+        ror     r14,28

+        add     r12,r13

+

+        xor     rax,r15

+        add     r8,r12

+        add     rax,r12

+

+        lea     rbp,[24+rbp]

+        jmp     NEAR $L$rounds_16_xx

+ALIGN   16

+$L$rounds_16_xx:

+        mov     r13,QWORD[8+rsp]

+        mov     r15,QWORD[112+rsp]

+

+        mov     r12,r13

+        ror     r13,7

+        add     rax,r14

+        mov     r14,r15

+        ror     r15,42

+

+        xor     r13,r12

+        shr     r12,7

+        ror     r13,1

+        xor     r15,r14

+        shr     r14,6

+

+        ror     r15,19

+        xor     r12,r13

+        xor     r15,r14

+        add     r12,QWORD[72+rsp]

+

+        add     r12,QWORD[rsp]

+        mov     r13,r8

+        add     r12,r15

+        mov     r14,rax

+        ror     r13,23

+        mov     r15,r9

+

+        xor     r13,r8

+        ror     r14,5

+        xor     r15,r10

+

+        mov     QWORD[rsp],r12

+        xor     r14,rax

+        and     r15,r8

+

+        ror     r13,4

+        add     r12,r11

+        xor     r15,r10

+

+        ror     r14,6

+        xor     r13,r8

+        add     r12,r15

+

+        mov     r15,rax

+        add     r12,QWORD[rbp]

+        xor     r14,rax

+

+        xor     r15,rbx

+        ror     r13,14

+        mov     r11,rbx

+

+        and     rdi,r15

+        ror     r14,28

+        add     r12,r13

+

+        xor     r11,rdi

+        add     rdx,r12

+        add     r11,r12

+

+        lea     rbp,[8+rbp]

+        mov     r13,QWORD[16+rsp]

+        mov     rdi,QWORD[120+rsp]

+

+        mov     r12,r13

+        ror     r13,7

+        add     r11,r14

+        mov     r14,rdi

+        ror     rdi,42

+

+        xor     r13,r12

+        shr     r12,7

+        ror     r13,1

+        xor     rdi,r14

+        shr     r14,6

+

+        ror     rdi,19

+        xor     r12,r13

+        xor     rdi,r14

+        add     r12,QWORD[80+rsp]

+

+        add     r12,QWORD[8+rsp]

+        mov     r13,rdx

+        add     r12,rdi

+        mov     r14,r11

+        ror     r13,23

+        mov     rdi,r8

+

+        xor     r13,rdx

+        ror     r14,5

+        xor     rdi,r9

+

+        mov     QWORD[8+rsp],r12

+        xor     r14,r11

+        and     rdi,rdx

+

+        ror     r13,4

+        add     r12,r10

+        xor     rdi,r9

+

+        ror     r14,6

+        xor     r13,rdx

+        add     r12,rdi

+

+        mov     rdi,r11

+        add     r12,QWORD[rbp]

+        xor     r14,r11

+

+        xor     rdi,rax

+        ror     r13,14

+        mov     r10,rax

+

+        and     r15,rdi

+        ror     r14,28

+        add     r12,r13

+

+        xor     r10,r15

+        add     rcx,r12

+        add     r10,r12

+

+        lea     rbp,[24+rbp]

+        mov     r13,QWORD[24+rsp]

+        mov     r15,QWORD[rsp]

+

+        mov     r12,r13

+        ror     r13,7

+        add     r10,r14

+        mov     r14,r15

+        ror     r15,42

+

+        xor     r13,r12

+        shr     r12,7

+        ror     r13,1

+        xor     r15,r14

+        shr     r14,6

+

+        ror     r15,19

+        xor     r12,r13

+        xor     r15,r14

+        add     r12,QWORD[88+rsp]

+

+        add     r12,QWORD[16+rsp]

+        mov     r13,rcx

+        add     r12,r15

+        mov     r14,r10

+        ror     r13,23

+        mov     r15,rdx

+

+        xor     r13,rcx

+        ror     r14,5

+        xor     r15,r8

+

+        mov     QWORD[16+rsp],r12

+        xor     r14,r10

+        and     r15,rcx

+

+        ror     r13,4

+        add     r12,r9

+        xor     r15,r8

+

+        ror     r14,6

+        xor     r13,rcx

+        add     r12,r15

+

+        mov     r15,r10

+        add     r12,QWORD[rbp]

+        xor     r14,r10

+

+        xor     r15,r11

+        ror     r13,14

+        mov     r9,r11

+

+        and     rdi,r15

+        ror     r14,28

+        add     r12,r13

+

+        xor     r9,rdi

+        add     rbx,r12

+        add     r9,r12

+

+        lea     rbp,[8+rbp]

+        mov     r13,QWORD[32+rsp]

+        mov     rdi,QWORD[8+rsp]

+

+        mov     r12,r13

+        ror     r13,7

+        add     r9,r14

+        mov     r14,rdi

+        ror     rdi,42

+

+        xor     r13,r12

+        shr     r12,7

+        ror     r13,1

+        xor     rdi,r14

+        shr     r14,6

+

+        ror     rdi,19

+        xor     r12,r13

+        xor     rdi,r14

+        add     r12,QWORD[96+rsp]

+

+        add     r12,QWORD[24+rsp]

+        mov     r13,rbx

+        add     r12,rdi

+        mov     r14,r9

+        ror     r13,23

+        mov     rdi,rcx

+

+        xor     r13,rbx

+        ror     r14,5

+        xor     rdi,rdx

+

+        mov     QWORD[24+rsp],r12

+        xor     r14,r9

+        and     rdi,rbx

+

+        ror     r13,4

+        add     r12,r8

+        xor     rdi,rdx

+

+        ror     r14,6

+        xor     r13,rbx

+        add     r12,rdi

+

+        mov     rdi,r9

+        add     r12,QWORD[rbp]

+        xor     r14,r9

+

+        xor     rdi,r10

+        ror     r13,14

+        mov     r8,r10

+

+        and     r15,rdi

+        ror     r14,28

+        add     r12,r13

+

+        xor     r8,r15

+        add     rax,r12

+        add     r8,r12

+

+        lea     rbp,[24+rbp]

+        mov     r13,QWORD[40+rsp]

+        mov     r15,QWORD[16+rsp]

+

+        mov     r12,r13

+        ror     r13,7

+        add     r8,r14

+        mov     r14,r15

+        ror     r15,42

+

+        xor     r13,r12

+        shr     r12,7

+        ror     r13,1

+        xor     r15,r14

+        shr     r14,6

+

+        ror     r15,19

+        xor     r12,r13

+        xor     r15,r14

+        add     r12,QWORD[104+rsp]

+

+        add     r12,QWORD[32+rsp]

+        mov     r13,rax

+        add     r12,r15

+        mov     r14,r8

+        ror     r13,23

+        mov     r15,rbx

+

+        xor     r13,rax

+        ror     r14,5

+        xor     r15,rcx

+

+        mov     QWORD[32+rsp],r12

+        xor     r14,r8

+        and     r15,rax

+

+        ror     r13,4

+        add     r12,rdx

+        xor     r15,rcx

+

+        ror     r14,6

+        xor     r13,rax

+        add     r12,r15

+

+        mov     r15,r8

+        add     r12,QWORD[rbp]

+        xor     r14,r8

+

+        xor     r15,r9

+        ror     r13,14

+        mov     rdx,r9

+

+        and     rdi,r15

+        ror     r14,28

+        add     r12,r13

+

+        xor     rdx,rdi

+        add     r11,r12

+        add     rdx,r12

+

+        lea     rbp,[8+rbp]

+        mov     r13,QWORD[48+rsp]

+        mov     rdi,QWORD[24+rsp]

+

+        mov     r12,r13

+        ror     r13,7

+        add     rdx,r14

+        mov     r14,rdi

+        ror     rdi,42

+

+        xor     r13,r12

+        shr     r12,7

+        ror     r13,1

+        xor     rdi,r14

+        shr     r14,6

+

+        ror     rdi,19

+        xor     r12,r13

+        xor     rdi,r14

+        add     r12,QWORD[112+rsp]

+

+        add     r12,QWORD[40+rsp]

+        mov     r13,r11

+        add     r12,rdi

+        mov     r14,rdx

+        ror     r13,23

+        mov     rdi,rax

+

+        xor     r13,r11

+        ror     r14,5

+        xor     rdi,rbx

+

+        mov     QWORD[40+rsp],r12

+        xor     r14,rdx

+        and     rdi,r11

+

+        ror     r13,4

+        add     r12,rcx

+        xor     rdi,rbx

+

+        ror     r14,6

+        xor     r13,r11

+        add     r12,rdi

+

+        mov     rdi,rdx

+        add     r12,QWORD[rbp]

+        xor     r14,rdx

+

+        xor     rdi,r8

+        ror     r13,14

+        mov     rcx,r8

+

+        and     r15,rdi

+        ror     r14,28

+        add     r12,r13

+

+        xor     rcx,r15

+        add     r10,r12

+        add     rcx,r12

+

+        lea     rbp,[24+rbp]

+        mov     r13,QWORD[56+rsp]

+        mov     r15,QWORD[32+rsp]

+

+        mov     r12,r13

+        ror     r13,7

+        add     rcx,r14

+        mov     r14,r15

+        ror     r15,42

+

+        xor     r13,r12

+        shr     r12,7

+        ror     r13,1

+        xor     r15,r14

+        shr     r14,6

+

+        ror     r15,19

+        xor     r12,r13

+        xor     r15,r14

+        add     r12,QWORD[120+rsp]

+

+        add     r12,QWORD[48+rsp]

+        mov     r13,r10

+        add     r12,r15

+        mov     r14,rcx

+        ror     r13,23

+        mov     r15,r11

+

+        xor     r13,r10

+        ror     r14,5

+        xor     r15,rax

+

+        mov     QWORD[48+rsp],r12

+        xor     r14,rcx

+        and     r15,r10

+

+        ror     r13,4

+        add     r12,rbx

+        xor     r15,rax

+

+        ror     r14,6

+        xor     r13,r10

+        add     r12,r15

+

+        mov     r15,rcx

+        add     r12,QWORD[rbp]

+        xor     r14,rcx

+

+        xor     r15,rdx

+        ror     r13,14

+        mov     rbx,rdx

+

+        and     rdi,r15

+        ror     r14,28

+        add     r12,r13

+

+        xor     rbx,rdi

+        add     r9,r12

+        add     rbx,r12

+

+        lea     rbp,[8+rbp]

+        mov     r13,QWORD[64+rsp]

+        mov     rdi,QWORD[40+rsp]

+

+        mov     r12,r13

+        ror     r13,7

+        add     rbx,r14

+        mov     r14,rdi

+        ror     rdi,42

+

+        xor     r13,r12

+        shr     r12,7

+        ror     r13,1

+        xor     rdi,r14

+        shr     r14,6

+

+        ror     rdi,19

+        xor     r12,r13

+        xor     rdi,r14

+        add     r12,QWORD[rsp]

+

+        add     r12,QWORD[56+rsp]

+        mov     r13,r9

+        add     r12,rdi

+        mov     r14,rbx

+        ror     r13,23

+        mov     rdi,r10

+

+        xor     r13,r9

+        ror     r14,5

+        xor     rdi,r11

+

+        mov     QWORD[56+rsp],r12

+        xor     r14,rbx

+        and     rdi,r9

+

+        ror     r13,4

+        add     r12,rax

+        xor     rdi,r11

+

+        ror     r14,6

+        xor     r13,r9

+        add     r12,rdi

+

+        mov     rdi,rbx

+        add     r12,QWORD[rbp]

+        xor     r14,rbx

+

+        xor     rdi,rcx

+        ror     r13,14

+        mov     rax,rcx

+

+        and     r15,rdi

+        ror     r14,28

+        add     r12,r13

+

+        xor     rax,r15

+        add     r8,r12

+        add     rax,r12

+

+        lea     rbp,[24+rbp]

+        mov     r13,QWORD[72+rsp]

+        mov     r15,QWORD[48+rsp]

+

+        mov     r12,r13

+        ror     r13,7

+        add     rax,r14

+        mov     r14,r15

+        ror     r15,42

+

+        xor     r13,r12

+        shr     r12,7

+        ror     r13,1

+        xor     r15,r14

+        shr     r14,6

+

+        ror     r15,19

+        xor     r12,r13

+        xor     r15,r14

+        add     r12,QWORD[8+rsp]

+

+        add     r12,QWORD[64+rsp]

+        mov     r13,r8

+        add     r12,r15

+        mov     r14,rax

+        ror     r13,23

+        mov     r15,r9

+

+        xor     r13,r8

+        ror     r14,5

+        xor     r15,r10

+

+        mov     QWORD[64+rsp],r12

+        xor     r14,rax

+        and     r15,r8

+

+        ror     r13,4

+        add     r12,r11

+        xor     r15,r10

+

+        ror     r14,6

+        xor     r13,r8

+        add     r12,r15

+

+        mov     r15,rax

+        add     r12,QWORD[rbp]

+        xor     r14,rax

+

+        xor     r15,rbx

+        ror     r13,14

+        mov     r11,rbx

+

+        and     rdi,r15

+        ror     r14,28

+        add     r12,r13

+

+        xor     r11,rdi

+        add     rdx,r12

+        add     r11,r12

+

+        lea     rbp,[8+rbp]

+        mov     r13,QWORD[80+rsp]

+        mov     rdi,QWORD[56+rsp]

+

+        mov     r12,r13

+        ror     r13,7

+        add     r11,r14

+        mov     r14,rdi

+        ror     rdi,42

+

+        xor     r13,r12

+        shr     r12,7

+        ror     r13,1

+        xor     rdi,r14

+        shr     r14,6

+

+        ror     rdi,19

+        xor     r12,r13

+        xor     rdi,r14

+        add     r12,QWORD[16+rsp]

+

+        add     r12,QWORD[72+rsp]

+        mov     r13,rdx

+        add     r12,rdi

+        mov     r14,r11

+        ror     r13,23

+        mov     rdi,r8

+

+        xor     r13,rdx

+        ror     r14,5

+        xor     rdi,r9

+

+        mov     QWORD[72+rsp],r12

+        xor     r14,r11

+        and     rdi,rdx

+

+        ror     r13,4

+        add     r12,r10

+        xor     rdi,r9

+

+        ror     r14,6

+        xor     r13,rdx

+        add     r12,rdi

+

+        mov     rdi,r11

+        add     r12,QWORD[rbp]

+        xor     r14,r11

+

+        xor     rdi,rax

+        ror     r13,14

+        mov     r10,rax

+

+        and     r15,rdi

+        ror     r14,28

+        add     r12,r13

+

+        xor     r10,r15

+        add     rcx,r12

+        add     r10,r12

+

+        lea     rbp,[24+rbp]

+        mov     r13,QWORD[88+rsp]

+        mov     r15,QWORD[64+rsp]

+

+        mov     r12,r13

+        ror     r13,7

+        add     r10,r14

+        mov     r14,r15

+        ror     r15,42

+

+        xor     r13,r12

+        shr     r12,7

+        ror     r13,1

+        xor     r15,r14

+        shr     r14,6

+

+        ror     r15,19

+        xor     r12,r13

+        xor     r15,r14

+        add     r12,QWORD[24+rsp]

+

+        add     r12,QWORD[80+rsp]

+        mov     r13,rcx

+        add     r12,r15

+        mov     r14,r10

+        ror     r13,23

+        mov     r15,rdx

+

+        xor     r13,rcx

+        ror     r14,5

+        xor     r15,r8

+

+        mov     QWORD[80+rsp],r12

+        xor     r14,r10

+        and     r15,rcx

+

+        ror     r13,4

+        add     r12,r9

+        xor     r15,r8

+

+        ror     r14,6

+        xor     r13,rcx

+        add     r12,r15

+

+        mov     r15,r10

+        add     r12,QWORD[rbp]

+        xor     r14,r10

+

+        xor     r15,r11

+        ror     r13,14

+        mov     r9,r11

+

+        and     rdi,r15

+        ror     r14,28

+        add     r12,r13

+

+        xor     r9,rdi

+        add     rbx,r12

+        add     r9,r12

+

+        lea     rbp,[8+rbp]

+        mov     r13,QWORD[96+rsp]

+        mov     rdi,QWORD[72+rsp]

+

+        mov     r12,r13

+        ror     r13,7

+        add     r9,r14

+        mov     r14,rdi

+        ror     rdi,42

+

+        xor     r13,r12

+        shr     r12,7

+        ror     r13,1

+        xor     rdi,r14

+        shr     r14,6

+

+        ror     rdi,19

+        xor     r12,r13

+        xor     rdi,r14

+        add     r12,QWORD[32+rsp]

+

+        add     r12,QWORD[88+rsp]

+        mov     r13,rbx

+        add     r12,rdi

+        mov     r14,r9

+        ror     r13,23

+        mov     rdi,rcx

+

+        xor     r13,rbx

+        ror     r14,5

+        xor     rdi,rdx

+

+        mov     QWORD[88+rsp],r12

+        xor     r14,r9

+        and     rdi,rbx

+

+        ror     r13,4

+        add     r12,r8

+        xor     rdi,rdx

+

+        ror     r14,6

+        xor     r13,rbx

+        add     r12,rdi

+

+        mov     rdi,r9

+        add     r12,QWORD[rbp]

+        xor     r14,r9

+

+        xor     rdi,r10

+        ror     r13,14

+        mov     r8,r10

+

+        and     r15,rdi

+        ror     r14,28

+        add     r12,r13

+

+        xor     r8,r15

+        add     rax,r12

+        add     r8,r12

+

+        lea     rbp,[24+rbp]

+        mov     r13,QWORD[104+rsp]

+        mov     r15,QWORD[80+rsp]

+

+        mov     r12,r13

+        ror     r13,7

+        add     r8,r14

+        mov     r14,r15

+        ror     r15,42

+

+        xor     r13,r12

+        shr     r12,7

+        ror     r13,1

+        xor     r15,r14

+        shr     r14,6

+

+        ror     r15,19

+        xor     r12,r13

+        xor     r15,r14

+        add     r12,QWORD[40+rsp]

+

+        add     r12,QWORD[96+rsp]

+        mov     r13,rax

+        add     r12,r15

+        mov     r14,r8

+        ror     r13,23

+        mov     r15,rbx

+

+        xor     r13,rax

+        ror     r14,5

+        xor     r15,rcx

+

+        mov     QWORD[96+rsp],r12

+        xor     r14,r8

+        and     r15,rax

+

+        ror     r13,4

+        add     r12,rdx

+        xor     r15,rcx

+

+        ror     r14,6

+        xor     r13,rax

+        add     r12,r15

+

+        mov     r15,r8

+        add     r12,QWORD[rbp]

+        xor     r14,r8

+

+        xor     r15,r9

+        ror     r13,14

+        mov     rdx,r9

+

+        and     rdi,r15

+        ror     r14,28

+        add     r12,r13

+

+        xor     rdx,rdi

+        add     r11,r12

+        add     rdx,r12

+

+        lea     rbp,[8+rbp]

+        mov     r13,QWORD[112+rsp]

+        mov     rdi,QWORD[88+rsp]

+

+        mov     r12,r13

+        ror     r13,7

+        add     rdx,r14

+        mov     r14,rdi

+        ror     rdi,42

+

+        xor     r13,r12

+        shr     r12,7

+        ror     r13,1

+        xor     rdi,r14

+        shr     r14,6

+

+        ror     rdi,19

+        xor     r12,r13

+        xor     rdi,r14

+        add     r12,QWORD[48+rsp]

+

+        add     r12,QWORD[104+rsp]

+        mov     r13,r11

+        add     r12,rdi

+        mov     r14,rdx

+        ror     r13,23

+        mov     rdi,rax

+

+        xor     r13,r11

+        ror     r14,5

+        xor     rdi,rbx

+

+        mov     QWORD[104+rsp],r12

+        xor     r14,rdx

+        and     rdi,r11

+

+        ror     r13,4

+        add     r12,rcx

+        xor     rdi,rbx

+

+        ror     r14,6

+        xor     r13,r11

+        add     r12,rdi

+

+        mov     rdi,rdx

+        add     r12,QWORD[rbp]

+        xor     r14,rdx

+

+        xor     rdi,r8

+        ror     r13,14

+        mov     rcx,r8

+

+        and     r15,rdi

+        ror     r14,28

+        add     r12,r13

+

+        xor     rcx,r15

+        add     r10,r12

+        add     rcx,r12

+

+        lea     rbp,[24+rbp]

+        mov     r13,QWORD[120+rsp]

+        mov     r15,QWORD[96+rsp]

+

+        mov     r12,r13

+        ror     r13,7

+        add     rcx,r14

+        mov     r14,r15

+        ror     r15,42

+

+        xor     r13,r12

+        shr     r12,7

+        ror     r13,1

+        xor     r15,r14

+        shr     r14,6

+

+        ror     r15,19

+        xor     r12,r13

+        xor     r15,r14

+        add     r12,QWORD[56+rsp]

+

+        add     r12,QWORD[112+rsp]

+        mov     r13,r10

+        add     r12,r15

+        mov     r14,rcx

+        ror     r13,23

+        mov     r15,r11

+

+        xor     r13,r10

+        ror     r14,5

+        xor     r15,rax

+

+        mov     QWORD[112+rsp],r12

+        xor     r14,rcx

+        and     r15,r10

+

+        ror     r13,4

+        add     r12,rbx

+        xor     r15,rax

+

+        ror     r14,6

+        xor     r13,r10

+        add     r12,r15

+

+        mov     r15,rcx

+        add     r12,QWORD[rbp]

+        xor     r14,rcx

+

+        xor     r15,rdx

+        ror     r13,14

+        mov     rbx,rdx

+

+        and     rdi,r15

+        ror     r14,28

+        add     r12,r13

+

+        xor     rbx,rdi

+        add     r9,r12

+        add     rbx,r12

+

+        lea     rbp,[8+rbp]

+        mov     r13,QWORD[rsp]

+        mov     rdi,QWORD[104+rsp]

+

+        mov     r12,r13

+        ror     r13,7

+        add     rbx,r14

+        mov     r14,rdi

+        ror     rdi,42

+

+        xor     r13,r12

+        shr     r12,7

+        ror     r13,1

+        xor     rdi,r14

+        shr     r14,6

+

+        ror     rdi,19

+        xor     r12,r13

+        xor     rdi,r14

+        add     r12,QWORD[64+rsp]

+

+        add     r12,QWORD[120+rsp]

+        mov     r13,r9

+        add     r12,rdi

+        mov     r14,rbx

+        ror     r13,23

+        mov     rdi,r10

+

+        xor     r13,r9

+        ror     r14,5

+        xor     rdi,r11

+

+        mov     QWORD[120+rsp],r12

+        xor     r14,rbx

+        and     rdi,r9

+

+        ror     r13,4

+        add     r12,rax

+        xor     rdi,r11

+

+        ror     r14,6

+        xor     r13,r9

+        add     r12,rdi

+

+        mov     rdi,rbx

+        add     r12,QWORD[rbp]

+        xor     r14,rbx

+

+        xor     rdi,rcx

+        ror     r13,14

+        mov     rax,rcx

+

+        and     r15,rdi

+        ror     r14,28

+        add     r12,r13

+

+        xor     rax,r15

+        add     r8,r12

+        add     rax,r12

+

+        lea     rbp,[24+rbp]

+        cmp     BYTE[7+rbp],0

+        jnz     NEAR $L$rounds_16_xx

+

+        mov     rdi,QWORD[((128+0))+rsp]

+        add     rax,r14

+        lea     rsi,[128+rsi]

+

+        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[((128+16))+rsp]

+

+        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[152+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$epilogue:

+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue

+        mov     rsi,QWORD[16+rsp]

+        DB      0F3h,0C3h               ;repret

+

+$L$SEH_end_sha512_block_data_order:

+ALIGN   64

+

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

+

+ALIGN   16

+se_handler:

+        push    rsi

+        push    rdi

+        push    rbx

+        push    rbp

+        push    r12

+        push    r13

+        push    r14

+        push    r15

+        pushfq

+        sub     rsp,64

+

+        mov     rax,QWORD[120+r8]

+        mov     rbx,QWORD[248+r8]

+

+        mov     rsi,QWORD[8+r9]

+        mov     r11,QWORD[56+r9]

+

+        mov     r10d,DWORD[r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jb      NEAR $L$in_prologue

+

+        mov     rax,QWORD[152+r8]

+

+        mov     r10d,DWORD[4+r11]

+        lea     r10,[r10*1+rsi]

+        cmp     rbx,r10

+        jae     NEAR $L$in_prologue

+        mov     rsi,rax

+        mov     rax,QWORD[((128+24))+rax]

+

+        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,[$L$epilogue]

+        cmp     rbx,r10

+        jb      NEAR $L$in_prologue

+

+        lea     rsi,[((128+32))+rsi]

+        lea     rdi,[512+r8]

+        mov     ecx,12

+        DD      0xa548f3fc

+

+$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[40+r9]

+        mov     rsi,r8

+        mov     ecx,154

+        DD      0xa548f3fc

+

+        mov     rsi,r9

+        xor     rcx,rcx

+        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

+        popfq

+        pop     r15

+        pop     r14

+        pop     r13

+        pop     r12

+        pop     rbp

+        pop     rbx

+        pop     rdi

+        pop     rsi

+        DB      0F3h,0C3h               ;repret

+

+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/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
new file mode 100644
index 0000000000..2a3d5bcf72
--- /dev/null
+++ b/CryptoPkg/Library/OpensslLib/X64/crypto/x86_64cpuid.nasm
@@ -0,0 +1,491 @@
+; WARNING: do not edit!

+; Generated from openssl/crypto/x86_64cpuid.pl

+;

+; Copyright 2005-2020 The OpenSSL Project Authors. All Rights
Reserved.


+;

+; Licensed under the OpenSSL license (the "License").  You may not use

+; this file except in compliance with the License.  You can obtain a
copy


+; in the file LICENSE in the source distribution or at

+; https://www.openssl.org/source/license.html

+

+default rel

+%define XMMWORD

+%define YMMWORD

+%define ZMMWORD

+EXTERN  OPENSSL_cpuid_setup

+

+section .CRT$XCU rdata align=8

+                DQ      OPENSSL_cpuid_setup

+

+

+common  OPENSSL_ia32cap_P 16

+

+section .text code align=64

+

+

+global  OPENSSL_atomic_add

+

+ALIGN   16

+OPENSSL_atomic_add:

+

+        mov     eax,DWORD[rcx]

+$L$spin:        lea     r8,[rax*1+rdx]

+DB      0xf0

+        cmpxchg DWORD[rcx],r8d

+        jne     NEAR $L$spin

+        mov     eax,r8d

+DB      0x48,0x98

+        DB      0F3h,0C3h               ;repret

+

+

+

+global  OPENSSL_rdtsc

+

+ALIGN   16

+OPENSSL_rdtsc:

+

+        rdtsc

+        shl     rdx,32

+        or      rax,rdx

+        DB      0F3h,0C3h               ;repret

+

+

+

+global  OPENSSL_ia32_cpuid

+

+ALIGN   16

+OPENSSL_ia32_cpuid:

+        mov     QWORD[8+rsp],rdi        ;WIN64 prologue

+        mov     QWORD[16+rsp],rsi

+        mov     rax,rsp

+$L$SEH_begin_OPENSSL_ia32_cpuid:

+        mov     rdi,rcx

+

+

+

+        mov     r8,rbx

+

+

+        xor     eax,eax

+        mov     QWORD[8+rdi],rax

+        cpuid

+        mov     r11d,eax

+

+        xor     eax,eax

+        cmp     ebx,0x756e6547

+        setne   al

+        mov     r9d,eax

+        cmp     edx,0x49656e69

+        setne   al

+        or      r9d,eax

+        cmp     ecx,0x6c65746e

+        setne   al

+        or      r9d,eax

+        jz      NEAR $L$intel

+

+        cmp     ebx,0x68747541

+        setne   al

+        mov     r10d,eax

+        cmp     edx,0x69746E65

+        setne   al

+        or      r10d,eax

+        cmp     ecx,0x444D4163

+        setne   al

+        or      r10d,eax

+        jnz     NEAR $L$intel

+

+

+        mov     eax,0x80000000

+        cpuid

+        cmp     eax,0x80000001

+        jb      NEAR $L$intel

+        mov     r10d,eax

+        mov     eax,0x80000001

+        cpuid

+        or      r9d,ecx

+        and     r9d,0x00000801

+

+        cmp     r10d,0x80000008

+        jb      NEAR $L$intel

+

+        mov     eax,0x80000008

+        cpuid

+        movzx   r10,cl

+        inc     r10

+

+        mov     eax,1

+        cpuid

+        bt      edx,28

+        jnc     NEAR $L$generic

+        shr     ebx,16

+        cmp     bl,r10b

+        ja      NEAR $L$generic

+        and     edx,0xefffffff

+        jmp     NEAR $L$generic

+

+$L$intel:

+        cmp     r11d,4

+        mov     r10d,-1

+        jb      NEAR $L$nocacheinfo

+

+        mov     eax,4

+        mov     ecx,0

+        cpuid

+        mov     r10d,eax

+        shr     r10d,14

+        and     r10d,0xfff

+

+$L$nocacheinfo:

+        mov     eax,1

+        cpuid

+        movd    xmm0,eax

+        and     edx,0xbfefffff

+        cmp     r9d,0

+        jne     NEAR $L$notintel

+        or      edx,0x40000000

+        and     ah,15

+        cmp     ah,15

+        jne     NEAR $L$notP4

+        or      edx,0x00100000

+$L$notP4:

+        cmp     ah,6

+        jne     NEAR $L$notintel

+        and     eax,0x0fff0ff0

+        cmp     eax,0x00050670

+        je      NEAR $L$knights

+        cmp     eax,0x00080650

+        jne     NEAR $L$notintel

+$L$knights:

+        and     ecx,0xfbffffff

+

+$L$notintel:

+        bt      edx,28

+        jnc     NEAR $L$generic

+        and     edx,0xefffffff

+        cmp     r10d,0

+        je      NEAR $L$generic

+

+        or      edx,0x10000000

+        shr     ebx,16

+        cmp     bl,1

+        ja      NEAR $L$generic

+        and     edx,0xefffffff

+$L$generic:

+        and     r9d,0x00000800

+        and     ecx,0xfffff7ff

+        or      r9d,ecx

+

+        mov     r10d,edx

+

+        cmp     r11d,7

+        jb      NEAR $L$no_extended_info

+        mov     eax,7

+        xor     ecx,ecx

+        cpuid

+        bt      r9d,26

+        jc      NEAR $L$notknights

+        and     ebx,0xfff7ffff

+$L$notknights:

+        movd    eax,xmm0

+        and     eax,0x0fff0ff0

+        cmp     eax,0x00050650

+        jne     NEAR $L$notskylakex

+        and     ebx,0xfffeffff

+

+$L$notskylakex:

+        mov     DWORD[8+rdi],ebx

+        mov     DWORD[12+rdi],ecx

+$L$no_extended_info:

+

+        bt      r9d,27

+        jnc     NEAR $L$clear_avx

+        xor     ecx,ecx

+DB      0x0f,0x01,0xd0

+        and     eax,0xe6

+        cmp     eax,0xe6

+        je      NEAR $L$done

+        and     DWORD[8+rdi],0x3fdeffff

+

+

+

+

+        and     eax,6

+        cmp     eax,6

+        je      NEAR $L$done

+$L$clear_avx:

+        mov     eax,0xefffe7ff

+        and     r9d,eax

+        mov     eax,0x3fdeffdf

+        and     DWORD[8+rdi],eax

+$L$done:

+        shl     r9,32

+        mov     eax,r10d

+        mov     rbx,r8

+

+        or      rax,r9

+        mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue

+        mov     rsi,QWORD[16+rsp]

+        DB      0F3h,0C3h               ;repret

+

+$L$SEH_end_OPENSSL_ia32_cpuid:

+

+global  OPENSSL_cleanse

+

+ALIGN   16

+OPENSSL_cleanse:

+

+        xor     rax,rax

+        cmp     rdx,15

+        jae     NEAR $L$ot

+        cmp     rdx,0

+        je      NEAR $L$ret

+$L$ittle:

+        mov     BYTE[rcx],al

+        sub     rdx,1

+        lea     rcx,[1+rcx]

+        jnz     NEAR $L$ittle

+$L$ret:

+        DB      0F3h,0C3h               ;repret

+ALIGN   16

+$L$ot:

+        test    rcx,7

+        jz      NEAR $L$aligned

+        mov     BYTE[rcx],al

+        lea     rdx,[((-1))+rdx]

+        lea     rcx,[1+rcx]

+        jmp     NEAR $L$ot

+$L$aligned:

+        mov     QWORD[rcx],rax

+        lea     rdx,[((-8))+rdx]

+        test    rdx,-8

+        lea     rcx,[8+rcx]

+        jnz     NEAR $L$aligned

+        cmp     rdx,0

+        jne     NEAR $L$ittle

+        DB      0F3h,0C3h               ;repret

+

+

+

+global  CRYPTO_memcmp

+

+ALIGN   16

+CRYPTO_memcmp:

+

+        xor     rax,rax

+        xor     r10,r10

+        cmp     r8,0

+        je      NEAR $L$no_data

+        cmp     r8,16

+        jne     NEAR $L$oop_cmp

+        mov     r10,QWORD[rcx]

+        mov     r11,QWORD[8+rcx]

+        mov     r8,1

+        xor     r10,QWORD[rdx]

+        xor     r11,QWORD[8+rdx]

+        or      r10,r11

+        cmovnz  rax,r8

+        DB      0F3h,0C3h               ;repret

+

+ALIGN   16

+$L$oop_cmp:

+        mov     r10b,BYTE[rcx]

+        lea     rcx,[1+rcx]

+        xor     r10b,BYTE[rdx]

+        lea     rdx,[1+rdx]

+        or      al,r10b

+        dec     r8

+        jnz     NEAR $L$oop_cmp

+        neg     rax

+        shr     rax,63

+$L$no_data:

+        DB      0F3h,0C3h               ;repret

+

+

+global  OPENSSL_wipe_cpu

+

+ALIGN   16

+OPENSSL_wipe_cpu:

+        pxor    xmm0,xmm0

+        pxor    xmm1,xmm1

+        pxor    xmm2,xmm2

+        pxor    xmm3,xmm3

+        pxor    xmm4,xmm4

+        pxor    xmm5,xmm5

+        xor     rcx,rcx

+        xor     rdx,rdx

+        xor     r8,r8

+        xor     r9,r9

+        xor     r10,r10

+        xor     r11,r11

+        lea     rax,[8+rsp]

+        DB      0F3h,0C3h               ;repret

+

+global  OPENSSL_instrument_bus

+

+ALIGN   16

+OPENSSL_instrument_bus:

+

+        mov     r10,rcx

+        mov     rcx,rdx

+        mov     r11,rdx

+

+        rdtsc

+        mov     r8d,eax

+        mov     r9d,0

+        clflush [r10]

+DB      0xf0

+        add     DWORD[r10],r9d

+        jmp     NEAR $L$oop

+ALIGN   16

+$L$oop: rdtsc

+        mov     edx,eax

+        sub     eax,r8d

+        mov     r8d,edx

+        mov     r9d,eax

+        clflush [r10]

+DB      0xf0

+        add     DWORD[r10],eax

+        lea     r10,[4+r10]

+        sub     rcx,1

+        jnz     NEAR $L$oop

+

+        mov     rax,r11

+        DB      0F3h,0C3h               ;repret

+

+

+

+global  OPENSSL_instrument_bus2

+

+ALIGN   16

+OPENSSL_instrument_bus2:

+

+        mov     r10,rcx

+        mov     rcx,rdx

+        mov     r11,r8

+        mov     QWORD[8+rsp],rcx

+

+        rdtsc

+        mov     r8d,eax

+        mov     r9d,0

+

+        clflush [r10]

+DB      0xf0

+        add     DWORD[r10],r9d

+

+        rdtsc

+        mov     edx,eax

+        sub     eax,r8d

+        mov     r8d,edx

+        mov     r9d,eax

+$L$oop2:

+        clflush [r10]

+DB      0xf0

+        add     DWORD[r10],eax

+

+        sub     r11,1

+        jz      NEAR $L$done2

+

+        rdtsc

+        mov     edx,eax

+        sub     eax,r8d

+        mov     r8d,edx

+        cmp     eax,r9d

+        mov     r9d,eax

+        mov     edx,0

+        setne   dl

+        sub     rcx,rdx

+        lea     r10,[rdx*4+r10]

+        jnz     NEAR $L$oop2

+

+$L$done2:

+        mov     rax,QWORD[8+rsp]

+        sub     rax,rcx

+        DB      0F3h,0C3h               ;repret

+

+

+global  OPENSSL_ia32_rdrand_bytes

+

+ALIGN   16

+OPENSSL_ia32_rdrand_bytes:

+

+        xor     rax,rax

+        cmp     rdx,0

+        je      NEAR $L$done_rdrand_bytes

+

+        mov     r11,8

+$L$oop_rdrand_bytes:

+DB      73,15,199,242

+        jc      NEAR $L$break_rdrand_bytes

+        dec     r11

+        jnz     NEAR $L$oop_rdrand_bytes

+        jmp     NEAR $L$done_rdrand_bytes

+

+ALIGN   16

+$L$break_rdrand_bytes:

+        cmp     rdx,8

+        jb      NEAR $L$tail_rdrand_bytes

+        mov     QWORD[rcx],r10

+        lea     rcx,[8+rcx]

+        add     rax,8

+        sub     rdx,8

+        jz      NEAR $L$done_rdrand_bytes

+        mov     r11,8

+        jmp     NEAR $L$oop_rdrand_bytes

+

+ALIGN   16

+$L$tail_rdrand_bytes:

+        mov     BYTE[rcx],r10b

+        lea     rcx,[1+rcx]

+        inc     rax

+        shr     r10,8

+        dec     rdx

+        jnz     NEAR $L$tail_rdrand_bytes

+

+$L$done_rdrand_bytes:

+        xor     r10,r10

+        DB      0F3h,0C3h               ;repret

+

+

+global  OPENSSL_ia32_rdseed_bytes

+

+ALIGN   16

+OPENSSL_ia32_rdseed_bytes:

+

+        xor     rax,rax

+        cmp     rdx,0

+        je      NEAR $L$done_rdseed_bytes

+

+        mov     r11,8

+$L$oop_rdseed_bytes:

+DB      73,15,199,250

+        jc      NEAR $L$break_rdseed_bytes

+        dec     r11

+        jnz     NEAR $L$oop_rdseed_bytes

+        jmp     NEAR $L$done_rdseed_bytes

+

+ALIGN   16

+$L$break_rdseed_bytes:

+        cmp     rdx,8

+        jb      NEAR $L$tail_rdseed_bytes

+        mov     QWORD[rcx],r10

+        lea     rcx,[8+rcx]

+        add     rax,8

+        sub     rdx,8

+        jz      NEAR $L$done_rdseed_bytes

+        mov     r11,8

+        jmp     NEAR $L$oop_rdseed_bytes

+

+ALIGN   16

+$L$tail_rdseed_bytes:

+        mov     BYTE[rcx],r10b

+        lea     rcx,[1+rcx]

+        inc     rax

+        shr     r10,8

+        dec     rdx

+        jnz     NEAR $L$tail_rdseed_bytes

+

+$L$done_rdseed_bytes:

+        xor     r10,r10

+        DB      0F3h,0C3h               ;repret

+

+

--
2.28.0.windows.1





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

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

* Re: [edk2-devel] [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
  2020-08-19 16:08                   ` Michael D Kinney
@ 2020-08-19 17:21                     ` Laszlo Ersek
  0 siblings, 0 replies; 42+ messages in thread
From: Laszlo Ersek @ 2020-08-19 17:21 UTC (permalink / raw)
  To: Kinney, Michael D, devel@edk2.groups.io, spbrogan@outlook.com,
	Wang, Jian J, Zurcher, Christopher J, Yao, Jiewen
  Cc: Lu, XiaoyuX, Ard Biesheuvel

On 08/19/20 18:08, Kinney, Michael D wrote:
> Laszlo,
> 
> The current CryptoPkg DCS file with use of the CRYPTO_SERVICES define is cumbersome.
> 
>   #
>   # Flavor of PEI, DXE, SMM modules to build.
>   # Must be one of ALL, NONE, MIN_PEI, MIN_DXE_MIN_SMM.
>   # Default is ALL that is used for package build verification.
>   #   PACKAGE         - Package verification build of all components.  Null
>   #                     versions of libraries are used to minimize build times.
>   #   ALL             - Build PEIM, DXE, and SMM drivers.  Protocols and PPIs
>   #                     publish all services.
>   #   NONE            - Build PEIM, DXE, and SMM drivers.  Protocols and PPIs
>   #                     publish no services.  Used to verify compiler/linker
>   #                     optimizations are working correctly.
>   #   MIN_PEI         - Build PEIM with PPI that publishes minimum required
>   #                     services.
>   #   MIN_DXE_MIN_SMM - Build DXE and SMM drivers with Protocols that publish
>   #                     minimum required services.
>   #
>   DEFINE CRYPTO_SERVICES = PACKAGE
> 
> There is a known limitation for using structured PCDs in a module scope and 
> that limitation is what resulted in the use of this define.  Bob Feng
> has provided a BaseTools patch that attempts to address this limitation.
> 
>     https://edk2.groups.io/g/devel/message/63906
> 
> This patch is functional, but has one open issue around the PCD report.  Once
> this issue is resolved we will be able to specify structured PCD field values
> in the scope of a single module.  I have a branch that simplifies the DSC and
> allows all flavors of the crypto modules to be built in a single invocation
> of the build command.  There is more cleanup of the DSC possible, but I
> wanted to share a quick test case for Bob's patch.
> 
>     https://github.com/mdkinney/edk2/tree/Bug_xxx_CryptoPkg_UseModuleScopedPcds
> 
> This feature supports both the generation of standard flavors of the crypto
> modules that a platform could consume as a pre-built binary and also allows
> a platform to choose their own profile by specifying the specific crypto APIs
> needed in PEI, DXE, SMM when building crypto modules from sources.

Yes, this resolves my first problem entirely!

Thanks!
Laszlo

>   
> Best regards,
> 
> Mike
> 
>> -----Original Message-----
>> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Laszlo Ersek
>> Sent: Wednesday, August 19, 2020 3:44 AM
>> To: devel@edk2.groups.io; spbrogan@outlook.com; Kinney, Michael D <michael.d.kinney@intel.com>; Wang, Jian J
>> <jian.j.wang@intel.com>; Zurcher, Christopher J <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>
>> Cc: Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
>> Subject: Re: [edk2-devel] [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
>>
>> Hi,
>>
>> On 08/18/20 23:33, Sean wrote:
>>> Mike,
>>>
>>> I am not technically a basetool maintainer but as an active user/dev in
>>> basetools, i would be opposed to bringing in perl as an edk2 dependency.
>>> Also introducing another language is counter to the goal of aligning on
>>> python and improving the python used within edk2.  From my perspective
>>> the openssl config case isn't strong enough to counter the above goal.
>>> In fact as you know we are trying to change the paradigm for
>>> Crypto/OpenSSL with the Crypto Driver
>>> (https://github.com/tianocore/edk2/tree/master/CryptoPkg/Driver) and
>>> BaseCryptLibOnProtocolPpi
>>> (https://github.com/tianocore/edk2/tree/master/CryptoPkg/Library/BaseCryptLibOnProtocolPpi)
>>> work so that everyday development doesn't need to compile openssl in
>>> their edk2 builds.
>>
>> Here I'd only like to comment on this one aspect (= build OpenSSL as a
>> statically linked library vs. as a crypto service driver / PEIM).
>>
>> Recently I tried to evaluate the crypto driver for OVMF. I started with
>> the PEI phase. The configuration interface (the PCD) is baroque, *BUT*
>> that is a direct consequence of OpenSSL offering a huge range of
>> interfaces. So no complaints about the config interface.
>>
>> I also reviewed the CryptoPkg.dsc "pre-sets" (i.e., CRYPTO_SERVICES
>> being one of PACKAGE / ALL / NONE / MIN_PEI / MIN_DXE_MIN_SMM). I had
>> two problems:
>>
>> - These pre-sets are supremely suitable for a platform that is composed
>> of multiple build runs; that is, build the crypto PEIM, build the DXE /
>> SMM protocol drivers, package up the resultant binaries, and *then*
>> build the actual platforms (which will then include the crypto service
>> drivers in *binary* form). On the other hand, the pre-sets are not
>> useful to a platform that is supposed to be built in a single-shot.
>> Importantly, I'm not saying that the pre-sets are *detrimental* to such
>> platforms -- they aren't. It's just that the pre-sets target a different
>> use case.
>>
>> - The other problem I had was the one that we had discussed when the
>> crypto service driver was being introduced. Namely, selecting the
>> OpenSSL interfaces (interface families) that the platform actually consumes.
>>
>> Now, I carefully tracked down the modules in OVMF that needed crypto
>> support, by *not* resolving SmmCryptLib, RuntimeCryptLib, TlsLib in
>> general [LibraryClasses] sections in the OVMF DSC files. Then I re-added
>> those lib-class resolutions as module-scoped <LibraryClasses> overrides
>> to the actual modules that needed them.
>>
>> However, I didn't know how to even *begin* evaluating the specific "API
>> needs" of the modules identified thusly. On a Windows or Linux OS, when
>> you have a dynamically linked executable, and it doesn't find a symbol
>> in a shared library, you get a nice error message, and the application
>> doesn't start. On the other hand, if a crypto protocol call fails in SMM
>> because we missed a feature bit in the config PCD, the results are
>> somewhat less user-friendly.
>>
>> The expression "minimum required services" in CryptoPkg.dsc seems
>> relevant, but it didn't convince me that it would cover everything
>> needed by -- for example -- VariableSmm, VariableRuntimeDxe, and TlsDxe.
>>
>> So, given that I couldn't construct a "tight profile", I started my
>> investigation (for OVMF's PEI phase) by including the crypto service
>> PEIM with *all* interfaces enabled.
>>
>> This would be restricted to "TPM_ENABLE", because only that is when
>> OVMF's PEI phase needs crypto -- due to including the various TPM1 and
>> TPM2 PEIMs.
>>
>> So basically this check would replace the statically linked -- and
>> accordingly trimmed! -- "thick" OpenSSL library copies in the TPM1/PTM2
>> PEIMs, with the thin wrapper lib
>> (BaseCryptLibOnProtocolPpi/PeiCryptLib.inf) *plus* the full-blown crypto
>> service PEIM.
>>
>> The result was a *violent* size explosion in PEIFV; at least in the
>> NOOPT build. Before:
>>
>>> PEIFV [64%Full] 917504 total, 592456 used, 325048 free
>>
>> after:
>>
>>>   the required fv image size 0x132968 exceeds the set fv image size
>>> 0xe0000
>>
>> The PEIFV footprint more than doubled, from 592,456 bytes to 1,255,784
>> bytes.
>>
>> I gave up there. Until the "crypto profile" construction is not
>> automated for platforms, somehow, I don't know how I could maintain OVMF
>> consuming the crypto service PEIMs/drivers.
>>
>> (I wonder if we should maintain a "required crypto services" bitmap for
>> each individual PEIM / DXE / SMM driver inside edk2. And then, when a
>> platform includes any one such PEIM or driver, they'd know to "OR" the
>> bitmap for that particular module into their platform PCD setting.)
>>
>>> So I support leaving it as is which means if you have to change
>>> something in openssl config you deal with it and a special one off.
>>
>> (OK, I guess I can comment on this too, after all.)
>>
>> I agree.
>>
>> While perl is readily available on Linux build hosts, I remember:
>> - accommodating the python3 BaseTools requirements on my RHEL7 laptop,
>> - (almost) bumping the NASM version so we could compile the VMGEXIT
>> instruction for IA32,
>> - the python virtual environment discussions for running CI locally.
>>
>> So I agree that new build dependencies should be avoided as much as
>> possible.
>>
>> Thanks
>> Laszlo
>>
>>
>> 
> 


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

* Re: [edk2-devel] [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
  2020-08-19 15:37               ` [edk2-devel] " Andrew Fish
@ 2020-08-19 18:06                 ` Laszlo Ersek
  2020-08-25  0:55                   ` Andrew Fish
  0 siblings, 1 reply; 42+ messages in thread
From: Laszlo Ersek @ 2020-08-19 18:06 UTC (permalink / raw)
  To: devel, afish, christopher.j.zurcher
  Cc: Mike Kinney, Yao, Jiewen, Wang, Jian J, Lu, XiaoyuX,
	Ard Biesheuvel

On 08/19/20 17:37, Andrew Fish via groups.io wrote:
> 
> 
>> On Aug 18, 2020, at 2:22 PM, Zurcher, Christopher J <christopher.j.zurcher@intel.com> wrote:
>>
>> Per the added header comment in process_files.pl:
>>
>> # Due to the script wrapping required to process the OpenSSL
>> # configuration data, each native architecture must be processed
>> # individually by the maintainer (in addition to the standard version):
>> #   ./process_files.pl
> 
> Side note: process_file.pl is missing a copyright statement. 

True :(

Andrew, could you please report a BZ about it?

Thanks!
Laszlo


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

* Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
       [not found]     ` <162C7E6ED8CEF542.12673@groups.io>
@ 2020-08-24 21:25       ` Zurcher, Christopher J
  2020-08-24 23:35         ` Yao, Jiewen
  0 siblings, 1 reply; 42+ messages in thread
From: Zurcher, Christopher J @ 2020-08-24 21:25 UTC (permalink / raw)
  To: devel@edk2.groups.io, Zurcher, Christopher J, Yao, Jiewen
  Cc: Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel

1) I have confirmed that the ApiHooks.c file is still required even without the AVX instructions included. The x86_64 assembly files in OpenSSL set a flag called $win64 and automatically include calls to the RtlVirtualUnwind function if NASM is selected as the assembler scheme.

https://docs.microsoft.com/en-us/windows/win32/api/winnt/nf-winnt-rtlvirtualunwind

I have submitted an issue against OpenSSL since I don't think using the NASM assembler should force the inclusion of Windows-specific API hooks, but that change cannot be made in OpenSSL 1.1.1 and we will have to wait for OpenSSL 3 or later to remove the stub function.

https://github.com/openssl/openssl/issues/12712

2) So far I have only built with VS.

3) The X64 SHA256 implementation was successfully exercised across a large number of devices in a production environment as a verification step in a multi-GB data transfer scenario.

Thanks,
Christopher Zurcher

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Zurcher,
> Christopher J
> Sent: Tuesday, August 18, 2020 15:50
> To: Yao, Jiewen <jiewen.yao@intel.com>; devel@edk2.groups.io
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> instruction support for X64
> 
> After further review, the ApiHooks.c file may no longer be needed since we
> are no longer including the AVX instructions. I will look over the
> dependencies and send a new patch set if I can eliminate the API hooks file.
> 
> Thanks,
> Christopher Zurcher
> 
> > -----Original Message-----
> > From: Yao, Jiewen <jiewen.yao@intel.com>
> > Sent: Thursday, August 13, 2020 08:04
> > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > devel@edk2.groups.io
> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>;
> > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Subject: RE: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction
> > support for X64
> >
> > Hi Christopher
> > Thanks.
> >
> > 1) Would you please help me understand more on "ApiHooks.c contains a stub
> > function for a Windows API call" ?
> > Why we need this?
> > If it is compiler specific in openssl, should we submit patch to openssl to
> > exclude this with OPENSSL_SYS_UEFI? That should be a cleaner solution for
> > UEFI.
> >
> > 2) Would you please describe what compiler you have tried? VS? GCC? LLVM?
> >
> > 3) Would you please describe what unit test you have done?
> >
> > Thank you
> > Yao Jiewen
> >
> >
> > > -----Original Message-----
> > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > Sent: Tuesday, August 4, 2020 8:24 AM
> > > To: devel@edk2.groups.io
> > > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> > <jian.j.wang@intel.com>;
> > > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > <ard.biesheuvel@linaro.org>
> > > Subject: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction
> > support
> > > for X64
> > >
> > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> > >
> > > Adding OpensslLibX64.inf and modifying process_files.pl to process this
> > > file and generate the necessary assembly files.
> > > ApiHooks.c contains a stub function for a Windows API call.
> > > uefi-asm.conf contains the limited assembly configurations for OpenSSL.
> > >
> > > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > Signed-off-by: Christopher J Zurcher <christopher.j.zurcher@intel.com>
> > > ---
> > >  CryptoPkg/Library/OpensslLib/OpensslLib.inf          |   2 +-
> > >  CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf    |   2 +-
> > >  CryptoPkg/Library/OpensslLib/OpensslLibX64.inf       | 656
> > > ++++++++++++++++++++
> > >  CryptoPkg/Library/Include/openssl/opensslconf.h      |   3 -
> > >  CryptoPkg/Library/OpensslLib/ApiHooks.c              |  18 +
> > >  CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c |  34 +
> > >  CryptoPkg/Library/OpensslLib/process_files.pl        | 223 +++++--
> > >  CryptoPkg/Library/OpensslLib/uefi-asm.conf           |  15 +
> > >  8 files changed, 903 insertions(+), 50 deletions(-)
> > >
> > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > index dbbe5386a1..bd62d86936 100644
> > > --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > @@ -16,7 +16,7 @@
> > >    VERSION_STRING                 = 1.0
> > >
> > >    LIBRARY_CLASS                  = OpensslLib
> > >
> > >    DEFINE OPENSSL_PATH            = openssl
> > >
> > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT
> > > -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
> > >
> > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT
> > > -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -
> > > DOPENSSL_NO_ASM
> > >
> > >
> > >
> > >  #
> > >
> > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
> > >
> > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > index 616ccd9f62..2b7324a990 100644
> > > --- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > @@ -16,7 +16,7 @@
> > >    VERSION_STRING                 = 1.0
> > >
> > >    LIBRARY_CLASS                  = OpensslLib
> > >
> > >    DEFINE OPENSSL_PATH            = openssl
> > >
> > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT
> > > -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
> > >
> > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT
> > > -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -
> > > DOPENSSL_NO_ASM
> > >
> > >
> > >
> > >  #
> > >
> > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
> > >
> > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > new file mode 100644
> > > index 0000000000..825eea0254
> > > --- /dev/null
> > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > @@ -0,0 +1,656 @@
> > > +## @file
> > >
> > > +#  This module provides OpenSSL Library implementation.
> > >
> > > +#
> > >
> > > +#  Copyright (c) 2010 - 2020, Intel Corporation. All rights
> reserved.<BR>
> > >
> > > +#  (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
> > >
> > > +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> > >
> > > +#
> > >
> > > +##
> > >
> > > +
> > >
> > > +[Defines]
> > >
> > > +  INF_VERSION                    = 0x00010005
> > >
> > > +  BASE_NAME                      = OpensslLibX64
> > >
> > > +  MODULE_UNI_FILE                = OpensslLib.uni
> > >
> > > +  FILE_GUID                      = 18125E50-0117-4DD0-BE54-4784AD995FEF
> > >
> > > +  MODULE_TYPE                    = BASE
> > >
> > > +  VERSION_STRING                 = 1.0
> > >
> > > +  LIBRARY_CLASS                  = OpensslLib
> > >
> > > +  DEFINE OPENSSL_PATH            = openssl
> > >
> > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT
> > > -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
> > >
> > > +  DEFINE OPENSSL_FLAGS_CONFIG    = -DOPENSSL_CPUID_OBJ -DSHA1_ASM -
> > > DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM
> > >
> > > +  CONSTRUCTOR                    = OpensslLibConstructor
> > >
> > > +
> > >
> > > +#
> > >
> > > +#  VALID_ARCHITECTURES           = X64
> > >
> > > +#
> > >
> > > +
> > >
> > > +[Sources]
> > >
> > > +  OpensslLibConstructor.c
> > >
> > > +  $(OPENSSL_PATH)/e_os.h
> > >
> > > +  $(OPENSSL_PATH)/ms/uplink.h
> > >
> > > +# Autogenerated files list starts here
> > >
> > > +  X64/crypto/aes/aesni-mb-x86_64.nasm
> > >
> > > +  X64/crypto/aes/aesni-sha1-x86_64.nasm
> > >
> > > +  X64/crypto/aes/aesni-sha256-x86_64.nasm
> > >
> > > +  X64/crypto/aes/aesni-x86_64.nasm
> > >
> > > +  X64/crypto/aes/vpaes-x86_64.nasm
> > >
> > > +  X64/crypto/modes/ghash-x86_64.nasm
> > >
> > > +  X64/crypto/sha/sha1-mb-x86_64.nasm
> > >
> > > +  X64/crypto/sha/sha1-x86_64.nasm
> > >
> > > +  X64/crypto/sha/sha256-mb-x86_64.nasm
> > >
> > > +  X64/crypto/sha/sha256-x86_64.nasm
> > >
> > > +  X64/crypto/sha/sha512-x86_64.nasm
> > >
> > > +  X64/crypto/x86_64cpuid.nasm
> > >
> > > +  $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/aes/aes_core.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/aes/aes_ige.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/aes/aes_misc.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/aria/aria.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/a_digest.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/a_dup.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/a_gentm.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/a_int.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/a_object.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/a_octet.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/a_print.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/a_sign.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/a_strex.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/a_strnid.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/a_time.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/a_type.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/a_utctm.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/a_utf8.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/a_verify.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_par.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mime.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/asn_moid.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/asn_pack.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/f_int.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/f_string.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/n_pkey.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/nsseq.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/t_bitst.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/t_pkey.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/t_spki.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_new.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/x_algor.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/x_bignum.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/x_info.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/x_int64.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/x_long.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/x_pkey.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/x_sig.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/x_spki.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/x_val.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/async/async.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/async/async_err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/async/async_wait.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/b_addr.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/b_dump.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/b_sock.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/b_sock2.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/bf_buff.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/bf_nbio.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/bf_null.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/bio_cb.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/bio_err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/bio_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/bio_meth.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/bss_acpt.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/bss_bio.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/bss_conn.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/bss_dgram.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/bss_fd.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/bss_file.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/bss_log.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/bss_mem.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/bss_null.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/bss_sock.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_add.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_asm.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_blind.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_const.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_ctx.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_depr.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_dh.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_div.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp2.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_gcd.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_intern.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_kron.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_mod.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_mont.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_mpi.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_mul.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_nist.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_print.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_rand.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_recp.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_shift.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqr.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_srp.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_word.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_x931p.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/buffer/buf_err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/buffer/buffer.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/cmac/cmac.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/comp/c_zlib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/comp/comp_err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/comp/comp_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/conf/conf_api.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/conf/conf_err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/conf/conf_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/conf/conf_mall.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/conf/conf_mod.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/conf/conf_sap.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/conf/conf_ssl.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/cpt_err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/cryptlib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/ctype.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/cversion.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dh/dh_check.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dh/dh_depr.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dh/dh_err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dh/dh_gen.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dh/dh_kdf.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dh/dh_key.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dh/dh_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dh/dh_meth.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dh/dh_prn.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dso/dso_dl.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dso/dso_err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dso/dso_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dso/dso_vms.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/dso/dso_win32.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/ebcdic.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/err/err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/err/err_prn.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/bio_enc.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/bio_md.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/bio_ok.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/c_allc.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/c_alld.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/digest.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_aes.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_aria.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_bf.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_camellia.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_cast.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_des.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_des3.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_idea.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_null.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_old.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_rc2.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_rc5.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_seed.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_sm4.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/encode.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/evp_cnf.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/evp_enc.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/evp_err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/evp_key.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/evp_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/evp_pbe.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/evp_pkey.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/m_md2.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/m_md4.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/m_md5.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/m_mdc2.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/m_null.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/m_ripemd.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/m_sha1.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/m_sha3.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/m_sigver.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/m_wp.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/names.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/p_dec.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/p_enc.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/p_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/p_open.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/p_seal.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/p_sign.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/p_verify.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/ex_data.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/getenv.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/hmac/hmac.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/init.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/kdf/hkdf.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/kdf/kdf_err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/kdf/scrypt.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/lhash/lh_stats.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/lhash/lhash.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/md5/md5_one.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/mem.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/mem_dbg.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/mem_sec.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/modes/cbc128.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/modes/ccm128.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/modes/cfb128.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/modes/ctr128.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/modes/cts128.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/modes/gcm128.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/modes/ocb128.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/modes/ofb128.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/modes/wrap128.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/modes/xts128.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/o_dir.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/o_fips.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/o_fopen.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/o_init.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/o_str.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/o_time.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/objects/o_names.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/objects/obj_err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/objects/obj_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pem/pem_all.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pem/pem_err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pem/pem_info.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pem/pem_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pem/pem_oth.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pem/pem_pk8.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pem/pem_pkey.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pem/pem_sign.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pem/pem_x509.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pem/pem_xaux.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pem/pvkfmt.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rand/drbg_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rand/rand_egd.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rand/rand_err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rand/rand_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rand/rand_unix.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rand/rand_vms.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rand/rand_win.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_none.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/sha/keccak1600.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/sha/sha1_one.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/sha/sha256.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/sha/sha512.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/siphash/siphash.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/sm3/sm3.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/sm4/sm4.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/stack/stack.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/threads_none.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/threads_pthread.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/threads_win.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/txt_db/txt_db.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/ui/ui_err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/ui/ui_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/ui/ui_null.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/ui/ui_util.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/uid.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/by_dir.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/by_file.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/t_crl.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/t_req.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/t_x509.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509_att.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509_cmp.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509_d2.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509_def.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509_err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509_ext.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509_lu.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509_meth.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509_obj.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509_r2x.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509_req.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509_set.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509_trs.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509_txt.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509_v3.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509_vfy.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509_vpm.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509cset.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509name.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509rset.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509spki.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509type.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x_all.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x_attrib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x_crl.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x_exten.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x_name.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x_pubkey.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x_req.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x_x509.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x_x509a.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_info.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_int.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3err.c
> > >
> > > +  $(OPENSSL_PATH)/crypto/arm_arch.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/mips_arch.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/ppc_arch.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/s390x_arch.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/sparc_arch.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/vms_rms.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/aes/aes_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/charmap.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/standard_methods.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/async/async_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/bio/bio_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/comp/comp_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/conf/conf_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/dh/dh_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/dso/dso_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/evp/evp_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/md5/md5_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/modes/modes_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/objects/obj_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/rand/rand_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/sha/sha_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/store/store_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/ui/ui_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509/x509_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h
> > >
> > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h
> > >
> > > +  $(OPENSSL_PATH)/ssl/bio_ssl.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/d1_lib.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/d1_msg.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/d1_srtp.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/methods.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/packet.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/pqueue.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/s3_cbc.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/s3_enc.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/s3_lib.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/s3_msg.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/ssl_asn1.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/ssl_cert.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/ssl_ciph.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/ssl_conf.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/ssl_err.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/ssl_init.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/ssl_lib.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/ssl_mcnf.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/ssl_rsa.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/ssl_sess.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/ssl_stat.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/ssl_txt.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/ssl_utst.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/statem/extensions.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/statem/extensions_cust.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/statem/statem.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/statem/statem_clnt.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/statem/statem_dtls.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/statem/statem_lib.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/statem/statem_srvr.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/t1_enc.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/t1_lib.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/t1_trce.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/tls13_enc.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/tls_srp.c
> > >
> > > +  $(OPENSSL_PATH)/ssl/packet_local.h
> > >
> > > +  $(OPENSSL_PATH)/ssl/ssl_cert_table.h
> > >
> > > +  $(OPENSSL_PATH)/ssl/ssl_local.h
> > >
> > > +  $(OPENSSL_PATH)/ssl/record/record.h
> > >
> > > +  $(OPENSSL_PATH)/ssl/record/record_local.h
> > >
> > > +  $(OPENSSL_PATH)/ssl/statem/statem.h
> > >
> > > +  $(OPENSSL_PATH)/ssl/statem/statem_local.h
> > >
> > > +# Autogenerated files list ends here
> > >
> > > +  buildinf.h
> > >
> > > +  rand_pool_noise.h
> > >
> > > +  ossl_store.c
> > >
> > > +  rand_pool.c
> > >
> > > +
> > >
> > > +[Sources.X64]
> > >
> > > +  rand_pool_noise_tsc.c
> > >
> > > +  ApiHooks.c
> > >
> > > +
> > >
> > > +[Packages]
> > >
> > > +  MdePkg/MdePkg.dec
> > >
> > > +  CryptoPkg/CryptoPkg.dec
> > >
> > > +
> > >
> > > +[LibraryClasses]
> > >
> > > +  BaseLib
> > >
> > > +  DebugLib
> > >
> > > +  TimerLib
> > >
> > > +  PrintLib
> > >
> > > +
> > >
> > > +[BuildOptions]
> > >
> > > +  #
> > >
> > > +  # Disables the following Visual Studio compiler warnings brought by
> > openssl
> > > source,
> > >
> > > +  # so we do not break the build with /WX option:
> > >
> > > +  #   C4090: 'function' : different 'const' qualifiers
> > >
> > > +  #   C4132: 'object' : const object should be initialized (tls13_enc.c)
> > >
> > > +  #   C4210: nonstandard extension used: function given file scope
> > >
> > > +  #   C4244: conversion from type1 to type2, possible loss of data
> > >
> > > +  #   C4245: conversion from type1 to type2, signed/unsigned mismatch
> > >
> > > +  #   C4267: conversion from size_t to type, possible loss of data
> > >
> > > +  #   C4306: 'identifier' : conversion from 'type1' to 'type2' of
> greater
> > size
> > >
> > > +  #   C4310: cast truncates constant value
> > >
> > > +  #   C4389: 'operator' : signed/unsigned mismatch (xxxx)
> > >
> > > +  #   C4700: uninitialized local variable 'name' used. (conf_sap.c(71))
> > >
> > > +  #   C4702: unreachable code
> > >
> > > +  #   C4706: assignment within conditional expression
> > >
> > > +  #   C4819: The file contains a character that cannot be represented in
> > the
> > > current code page
> > >
> > > +  #
> > >
> > > +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER
> > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132 /wd4210
> > > /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700 /wd4389 /wd4702
> > > /wd4706 /wd4819
> > >
> > > +
> > >
> > > +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> > >
> > > +
> > >
> > > +  #
> > >
> > > +  # Suppress the following build warnings in openssl so we don't break
> the
> > build
> > > with -Werror
> > >
> > > +  #   -Werror=maybe-uninitialized: there exist some other paths for
> which
> > the
> > > variable is not initialized.
> > >
> > > +  #   -Werror=format: Check calls to printf and scanf, etc., to make
> sure
> > that the
> > > arguments supplied have
> > >
> > > +  #                   types appropriate to the format string specified.
> > >
> > > +  #   -Werror=unused-but-set-variable: Warn whenever a local variable is
> > > assigned to, but otherwise unused (aside from its declaration).
> > >
> > > +  #
> > >
> > > +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> > > $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-
> > > error=format -Wno-format -Wno-error=unused-but-set-variable -
> > > DNO_MSABI_VA_FUNCS
> > >
> > > +
> > >
> > > +  # suppress the following warnings in openssl so we don't break the
> build
> > with
> > > warnings-as-errors:
> > >
> > > +  # 1295: Deprecated declaration <entity> - give arg types
> > >
> > > +  #  550: <entity> was set but never used
> > >
> > > +  # 1293: assignment in condition
> > >
> > > +  #  111: statement is unreachable (invariably "break;" after "return
> X;"
> > in case
> > > statement)
> > >
> > > +  #   68: integer conversion resulted in a change of sign ("if (Status
> ==
> > -1)")
> > >
> > > +  #  177: <entity> was declared but never referenced
> > >
> > > +  #  223: function <entity> declared implicitly
> > >
> > > +  #  144: a value of type <type> cannot be used to initialize an entity
> of
> > type
> > > <type>
> > >
> > > +  #  513: a value of type <type> cannot be assigned to an entity of type
> > <type>
> > >
> > > +  #  188: enumerated type mixed with another type (i.e. passing an
> integer
> > as an
> > > enum without a cast)
> > >
> > > +  # 1296: Extended constant initialiser used
> > >
> > > +  #  128: loop is not reachable - may be emitted inappropriately if code
> > follows
> > > a conditional return
> > >
> > > +  #       from the function that evaluates to true at compile time
> > >
> > > +  #  546: transfer of control bypasses initialization - may be emitted
> > > inappropriately if the uninitialized
> > >
> > > +  #       variable is never referenced after the jump
> > >
> > > +  #    1: ignore "#1-D: last line of file ends without a newline"
> > >
> > > +  # 3017: <entity> may be used before being set (NOTE: This was fixed in
> > > OpenSSL 1.1 HEAD with
> > >
> > > +  #       commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and can be
> > > dropped then.)
> > >
> > > +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -U_WIN64
> > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-
> > > error=uninitialized
> > >
> > > diff --git a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > index 3a2544ea5c..e8f73c4d10 100644
> > > --- a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > +++ b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > @@ -112,9 +112,6 @@ extern "C" {
> > >  #ifndef OPENSSL_NO_ASAN
> > >
> > >  # define OPENSSL_NO_ASAN
> > >
> > >  #endif
> > >
> > > -#ifndef OPENSSL_NO_ASM
> > >
> > > -# define OPENSSL_NO_ASM
> > >
> > > -#endif
> > >
> > >  #ifndef OPENSSL_NO_ASYNC
> > >
> > >  # define OPENSSL_NO_ASYNC
> > >
> > >  #endif
> > >
> > > diff --git a/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > new file mode 100644
> > > index 0000000000..58cff16838
> > > --- /dev/null
> > > +++ b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > @@ -0,0 +1,18 @@
> > > +/** @file
> > >
> > > +  OpenSSL Library API hooks.
> > >
> > > +
> > >
> > > +Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
> > >
> > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > >
> > > +
> > >
> > > +**/
> > >
> > > +
> > >
> > > +#include <Uefi.h>
> > >
> > > +
> > >
> > > +VOID *
> > >
> > > +__imp_RtlVirtualUnwind (
> > >
> > > +  VOID *    Args
> > >
> > > +  )
> > >
> > > +{
> > >
> > > +  return NULL;
> > >
> > > +}
> > >
> > > +
> > >
> > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > new file mode 100644
> > > index 0000000000..ef20d2b84e
> > > --- /dev/null
> > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > @@ -0,0 +1,34 @@
> > > +/** @file
> > >
> > > +  Constructor to initialize CPUID data for OpenSSL assembly operations.
> > >
> > > +
> > >
> > > +Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
> > >
> > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > >
> > > +
> > >
> > > +**/
> > >
> > > +
> > >
> > > +#include <Uefi.h>
> > >
> > > +
> > >
> > > +extern void OPENSSL_cpuid_setup (void);
> > >
> > > +
> > >
> > > +/**
> > >
> > > +  Constructor routine for OpensslLib.
> > >
> > > +
> > >
> > > +  The constructor calls an internal OpenSSL function which fetches a
> local
> > copy
> > >
> > > +  of the hardware capability flags, used to enable native crypto
> > instructions.
> > >
> > > +
> > >
> > > +  @param  None
> > >
> > > +
> > >
> > > +  @retval EFI_SUCCESS         The construction succeeded.
> > >
> > > +
> > >
> > > +**/
> > >
> > > +EFI_STATUS
> > >
> > > +EFIAPI
> > >
> > > +OpensslLibConstructor (
> > >
> > > +  VOID
> > >
> > > +  )
> > >
> > > +{
> > >
> > > +  OPENSSL_cpuid_setup ();
> > >
> > > +
> > >
> > > +  return EFI_SUCCESS;
> > >
> > > +}
> > >
> > > +
> > >
> > > diff --git a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > index 57ce195394..472f59bc8e 100755
> > > --- a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > +++ b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > @@ -9,9 +9,63 @@
> > >  # do not need to do this, since the results are stored in the EDK2
> > >
> > >  # git repository for them.
> > >
> > >  #
> > >
> > > +# Due to the script wrapping required to process the OpenSSL
> > >
> > > +# configuration data, each native architecture must be processed
> > >
> > > +# individually by the maintainer (in addition to the standard version):
> > >
> > > +#   ./process_files.pl
> > >
> > > +#   ./process_files.pl X64
> > >
> > > +#   ./process_files.pl [Arch]
> > >
> > > +
> > >
> > >  use strict;
> > >
> > >  use Cwd;
> > >
> > >  use File::Copy;
> > >
> > > +use File::Basename;
> > >
> > > +use File::Path qw(make_path remove_tree);
> > >
> > > +use Text::Tabs;
> > >
> > > +
> > >
> > > +#
> > >
> > > +# OpenSSL perlasm generator script does not transfer the copyright
> header
> > >
> > > +#
> > >
> > > +sub copy_license_header
> > >
> > > +{
> > >
> > > +    my @args = split / /, shift;    #Separate args by spaces
> > >
> > > +    my $source = $args[1];          #Source file is second (after
> "perl")
> > >
> > > +    my $target = pop @args;         #Target file is always last
> > >
> > > +    chop ($target);                 #Remove newline char
> > >
> > > +
> > >
> > > +    my $temp_file_name = "license.tmp";
> > >
> > > +    open (my $source_file, "<" . $source) || die $source;
> > >
> > > +    open (my $target_file, "<" . $target) || die $target;
> > >
> > > +    open (my $temp_file, ">" . $temp_file_name) || die $temp_file_name;
> > >
> > > +
> > >
> > > +    #Add "generated file" warning
> > >
> > > +    $source =~ s/^..//;             #Remove leading "./"
> > >
> > > +    print ($temp_file "; WARNING: do not edit!\r\n");
> > >
> > > +    print ($temp_file "; Generated from $source\r\n");
> > >
> > > +    print ($temp_file ";\r\n");
> > >
> > > +
> > >
> > > +    #Copy source file header to temp file
> > >
> > > +    while (my $line = <$source_file>) {
> > >
> > > +        next if ($line =~ /#!/);    #Ignore shebang line
> > >
> > > +        $line =~ s/#/;/;            #Fix comment character for assembly
> > >
> > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace, fixup
> line
> > endings
> > >
> > > +        print ($temp_file $line);
> > >
> > > +        last if ($line =~ /http/);  #Last line of copyright header
> > contains a web link
> > >
> > > +    }
> > >
> > > +    print ($temp_file "\r\n");
> > >
> > > +    #Retrieve generated assembly contents
> > >
> > > +    while (my $line = <$target_file>) {
> > >
> > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace, fixup
> line
> > endings
> > >
> > > +        print ($temp_file expand ($line));  #expand() replaces tabs with
> > spaces
> > >
> > > +    }
> > >
> > > +
> > >
> > > +    close ($source_file);
> > >
> > > +    close ($target_file);
> > >
> > > +    close ($temp_file);
> > >
> > > +
> > >
> > > +    move ($temp_file_name, $target) ||
> > >
> > > +        die "Cannot replace \"" . $target . "\"!";
> > >
> > > +}
> > >
> > >
> > >
> > >  #
> > >
> > >  # Find the openssl directory name for use lib. We have to do this
> > >
> > > @@ -21,10 +75,41 @@ use File::Copy;
> > >  #
> > >
> > >  my $inf_file;
> > >
> > >  my $OPENSSL_PATH;
> > >
> > > +my $uefi_config;
> > >
> > > +my $extension;
> > >
> > > +my $arch;
> > >
> > >  my @inf;
> > >
> > >
> > >
> > >  BEGIN {
> > >
> > >      $inf_file = "OpensslLib.inf";
> > >
> > > +    $uefi_config = "UEFI";
> > >
> > > +    $arch = shift;
> > >
> > > +
> > >
> > > +    if (defined $arch) {
> > >
> > > +        if (uc ($arch) eq "X64") {
> > >
> > > +            $arch = "X64";
> > >
> > > +            $inf_file = "OpensslLibX64.inf";
> > >
> > > +            $uefi_config = "UEFI-x86_64";
> > >
> > > +            $extension = "nasm";
> > >
> > > +        } else {
> > >
> > > +            die "Unsupported architecture \"" . $arch . "\"!";
> > >
> > > +        }
> > >
> > > +        if ($extension eq "nasm") {
> > >
> > > +            if (`nasm -v 2>&1`) {
> > >
> > > +                #Presence of nasm executable will trigger inclusion of
> AVX
> > instructions
> > >
> > > +                die "\nCannot run assembly generators with NASM in
> > path!\n\n";
> > >
> > > +            }
> > >
> > > +        }
> > >
> > > +
> > >
> > > +        # Prepare assembly folder
> > >
> > > +        if (-d $arch) {
> > >
> > > +            remove_tree ($arch, {safe => 1}) ||
> > >
> > > +                die "Cannot clean assembly folder \"" . $arch . "\"!";
> > >
> > > +        } else {
> > >
> > > +            mkdir $arch ||
> > >
> > > +                die "Cannot create assembly folder \"" . $arch . "\"!";
> > >
> > > +        }
> > >
> > > +    }
> > >
> > >
> > >
> > >      # Read the contents of the inf file
> > >
> > >      open( FD, "<" . $inf_file ) ||
> > >
> > > @@ -47,9 +132,9 @@ BEGIN {
> > >              # Configure UEFI
> > >
> > >              system(
> > >
> > >                  "./Configure",
> > >
> > > -                "UEFI",
> > >
> > > +                "--config=../uefi-asm.conf",
> > >
> > > +                "$uefi_config",
> > >
> > >                  "no-afalgeng",
> > >
> > > -                "no-asm",
> > >
> > >                  "no-async",
> > >
> > >                  "no-autoerrinit",
> > >
> > >                  "no-autoload-config",
> > >
> > > @@ -129,23 +214,53 @@ BEGIN {
> > >  # Retrieve file lists from OpenSSL configdata
> > >
> > >  #
> > >
> > >  use configdata qw/%unified_info/;
> > >
> > > +use configdata qw/%config/;
> > >
> > > +use configdata qw/%target/;
> > >
> > > +
> > >
> > > +#
> > >
> > > +# Collect build flags from configdata
> > >
> > > +#
> > >
> > > +my $flags = "";
> > >
> > > +foreach my $f (@{$config{lib_defines}}) {
> > >
> > > +    $flags .= " -D$f";
> > >
> > > +}
> > >
> > >
> > >
> > >  my @cryptofilelist = ();
> > >
> > >  my @sslfilelist = ();
> > >
> > > +my @asmfilelist = ();
> > >
> > > +my @asmbuild = ();
> > >
> > >  foreach my $product ((@{$unified_info{libraries}},
> > >
> > >                        @{$unified_info{engines}})) {
> > >
> > >      foreach my $o (@{$unified_info{sources}->{$product}}) {
> > >
> > >          foreach my $s (@{$unified_info{sources}->{$o}}) {
> > >
> > > -            next if ($unified_info{generate}->{$s});
> > >
> > > -            next if $s =~ "crypto/bio/b_print.c";
> > >
> > > -
> > >
> > >              # No need to add unused files in UEFI.
> > >
> > >              # So it can reduce porting time, compile time, library size.
> > >
> > > +            next if $s =~ "crypto/bio/b_print.c";
> > >
> > >              next if $s =~ "crypto/rand/randfile.c";
> > >
> > >              next if $s =~ "crypto/store/";
> > >
> > >              next if $s =~ "crypto/err/err_all.c";
> > >
> > >              next if $s =~ "crypto/aes/aes_ecb.c";
> > >
> > >
> > >
> > > +            if ($unified_info{generate}->{$s}) {
> > >
> > > +                if (defined $arch) {
> > >
> > > +                    my $buildstring = "perl";
> > >
> > > +                    foreach my $arg (@{$unified_info{generate}->{$s}}) {
> > >
> > > +                        if ($arg =~ ".pl") {
> > >
> > > +                            $buildstring .= " ./openssl/$arg";
> > >
> > > +                        } elsif ($arg =~ "PERLASM_SCHEME") {
> > >
> > > +                            $buildstring .= " $target{perlasm_scheme}";
> > >
> > > +                        } elsif ($arg =~ "LIB_CFLAGS") {
> > >
> > > +                            $buildstring .= "$flags";
> > >
> > > +                        }
> > >
> > > +                    }
> > >
> > > +                    ($s, my $path, undef) = fileparse($s, qr/\.[^.]*/);
> > >
> > > +                    $buildstring .= " ./$arch/$path$s.$extension";
> > >
> > > +                    make_path ("./$arch/$path");
> > >
> > > +                    push @asmbuild, "$buildstring\n";
> > >
> > > +                    push @asmfilelist, "  $arch/$path$s.$extension\r\n";
> > >
> > > +                }
> > >
> > > +                next;
> > >
> > > +            }
> > >
> > >              if ($product =~ "libssl") {
> > >
> > >                  push @sslfilelist, '  $(OPENSSL_PATH)/' . $s . "\r\n";
> > >
> > >                  next;
> > >
> > > @@ -183,15 +298,31 @@ foreach (@headers){
> > >  }
> > >
> > >
> > >
> > >
> > >
> > > +#
> > >
> > > +# Generate assembly files
> > >
> > > +#
> > >
> > > +if (@asmbuild) {
> > >
> > > +    print "\n--> Generating assembly files ... ";
> > >
> > > +    foreach my $buildstring (@asmbuild) {
> > >
> > > +        system ("$buildstring");
> > >
> > > +        copy_license_header ($buildstring);
> > >
> > > +    }
> > >
> > > +    print "Done!";
> > >
> > > +}
> > >
> > > +
> > >
> > >  #
> > >
> > >  # Update OpensslLib.inf with autogenerated file list
> > >
> > >  #
> > >
> > >  my @new_inf = ();
> > >
> > >  my $subbing = 0;
> > >
> > > -print "\n--> Updating OpensslLib.inf ... ";
> > >
> > > +print "\n--> Updating $inf_file ... ";
> > >
> > >  foreach (@inf) {
> > >
> > > +    if ($_ =~ "DEFINE OPENSSL_FLAGS_CONFIG") {
> > >
> > > +        push @new_inf, "  DEFINE OPENSSL_FLAGS_CONFIG    =" . $flags .
> > "\r\n";
> > >
> > > +        next;
> > >
> > > +    }
> > >
> > >      if ( $_ =~ "# Autogenerated files list starts here" ) {
> > >
> > > -        push @new_inf, $_, @cryptofilelist, @sslfilelist;
> > >
> > > +        push @new_inf, $_, @asmfilelist, @cryptofilelist, @sslfilelist;
> > >
> > >          $subbing = 1;
> > >
> > >          next;
> > >
> > >      }
> > >
> > > @@ -216,49 +347,51 @@ rename( $new_inf_file, $inf_file ) ||
> > >      die "rename $inf_file";
> > >
> > >  print "Done!";
> > >
> > >
> > >
> > > -#
> > >
> > > -# Update OpensslLibCrypto.inf with auto-generated file list (no libssl)
> > >
> > > -#
> > >
> > > -$inf_file = "OpensslLibCrypto.inf";
> > >
> > > -
> > >
> > > -# Read the contents of the inf file
> > >
> > > -@inf = ();
> > >
> > > -@new_inf = ();
> > >
> > > -open( FD, "<" . $inf_file ) ||
> > >
> > > -    die "Cannot open \"" . $inf_file . "\"!";
> > >
> > > -@inf = (<FD>);
> > >
> > > -close(FD) ||
> > >
> > > -    die "Cannot close \"" . $inf_file . "\"!";
> > >
> > > +if (!defined $arch) {
> > >
> > > +    #
> > >
> > > +    # Update OpensslLibCrypto.inf with auto-generated file list (no
> > libssl)
> > >
> > > +    #
> > >
> > > +    $inf_file = "OpensslLibCrypto.inf";
> > >
> > >
> > >
> > > -$subbing = 0;
> > >
> > > -print "\n--> Updating OpensslLibCrypto.inf ... ";
> > >
> > > -foreach (@inf) {
> > >
> > > -    if ( $_ =~ "# Autogenerated files list starts here" ) {
> > >
> > > -        push @new_inf, $_, @cryptofilelist;
> > >
> > > -        $subbing = 1;
> > >
> > > -        next;
> > >
> > > -    }
> > >
> > > -    if ( $_ =~ "# Autogenerated files list ends here" ) {
> > >
> > > -        push @new_inf, $_;
> > >
> > > -        $subbing = 0;
> > >
> > > -        next;
> > >
> > > +    # Read the contents of the inf file
> > >
> > > +    @inf = ();
> > >
> > > +    @new_inf = ();
> > >
> > > +    open( FD, "<" . $inf_file ) ||
> > >
> > > +        die "Cannot open \"" . $inf_file . "\"!";
> > >
> > > +    @inf = (<FD>);
> > >
> > > +    close(FD) ||
> > >
> > > +        die "Cannot close \"" . $inf_file . "\"!";
> > >
> > > +
> > >
> > > +    $subbing = 0;
> > >
> > > +    print "\n--> Updating OpensslLibCrypto.inf ... ";
> > >
> > > +    foreach (@inf) {
> > >
> > > +        if ( $_ =~ "# Autogenerated files list starts here" ) {
> > >
> > > +            push @new_inf, $_, @cryptofilelist;
> > >
> > > +            $subbing = 1;
> > >
> > > +            next;
> > >
> > > +        }
> > >
> > > +        if ( $_ =~ "# Autogenerated files list ends here" ) {
> > >
> > > +            push @new_inf, $_;
> > >
> > > +            $subbing = 0;
> > >
> > > +            next;
> > >
> > > +        }
> > >
> > > +
> > >
> > > +        push @new_inf, $_
> > >
> > > +            unless ($subbing);
> > >
> > >      }
> > >
> > >
> > >
> > > -    push @new_inf, $_
> > >
> > > -        unless ($subbing);
> > >
> > > +    $new_inf_file = $inf_file . ".new";
> > >
> > > +    open( FD, ">" . $new_inf_file ) ||
> > >
> > > +        die $new_inf_file;
> > >
> > > +    print( FD @new_inf ) ||
> > >
> > > +        die $new_inf_file;
> > >
> > > +    close(FD) ||
> > >
> > > +        die $new_inf_file;
> > >
> > > +    rename( $new_inf_file, $inf_file ) ||
> > >
> > > +        die "rename $inf_file";
> > >
> > > +    print "Done!";
> > >
> > >  }
> > >
> > >
> > >
> > > -$new_inf_file = $inf_file . ".new";
> > >
> > > -open( FD, ">" . $new_inf_file ) ||
> > >
> > > -    die $new_inf_file;
> > >
> > > -print( FD @new_inf ) ||
> > >
> > > -    die $new_inf_file;
> > >
> > > -close(FD) ||
> > >
> > > -    die $new_inf_file;
> > >
> > > -rename( $new_inf_file, $inf_file ) ||
> > >
> > > -    die "rename $inf_file";
> > >
> > > -print "Done!";
> > >
> > > -
> > >
> > >  #
> > >
> > >  # Copy opensslconf.h and dso_conf.h generated from OpenSSL Configuration
> > >
> > >  #
> > >
> > > diff --git a/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > new file mode 100644
> > > index 0000000000..55eedbf3ba
> > > --- /dev/null
> > > +++ b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > @@ -0,0 +1,15 @@
> > > +## -*- mode: perl; -*-
> > >
> > > +## UEFI assembly openssl configuration targets.
> > >
> > > +
> > >
> > > +my %targets = (
> > >
> > > +#### UEFI
> > >
> > > +    "UEFI-x86_64" => {
> > >
> > > +        perlasm_scheme  => "nasm",
> > >
> > > +        # inherit_from    => [ "UEFI",  asm("x86_64_asm") ],
> > >
> > > +        inherit_from    => [ "UEFI" ],
> > >
> > > +        cpuid_asm_src   => "x86_64cpuid.s",
> > >
> > > +        aes_asm_src     => "aes_core.c aes_cbc.c vpaes-x86_64.s aesni-
> > x86_64.s
> > > aesni-sha1-x86_64.s aesni-sha256-x86_64.s aesni-mb-x86_64.s",
> > >
> > > +        sha1_asm_src    => "sha1-x86_64.s sha256-x86_64.s sha512-
> x86_64.s
> > > sha1-mb-x86_64.s sha256-mb-x86_64.s",
> > >
> > > +        modes_asm_src   => "ghash-x86_64.s",
> > >
> > > +    },
> > >
> > > +);
> > >
> > > --
> > > 2.28.0.windows.1
> 
> 
> 


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

* Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
  2020-08-24 21:25       ` [edk2-devel] " Zurcher, Christopher J
@ 2020-08-24 23:35         ` Yao, Jiewen
  2020-09-16  9:17           ` Guomin Jiang
  0 siblings, 1 reply; 42+ messages in thread
From: Yao, Jiewen @ 2020-08-24 23:35 UTC (permalink / raw)
  To: Zurcher, Christopher J, devel@edk2.groups.io
  Cc: Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel

Below:

> -----Original Message-----
> From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> Sent: Tuesday, August 25, 2020 5:26 AM
> To: devel@edk2.groups.io; Zurcher, Christopher J
> <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> instruction support for X64
> 
> 1) I have confirmed that the ApiHooks.c file is still required even without the AVX
> instructions included. The x86_64 assembly files in OpenSSL set a flag called
> $win64 and automatically include calls to the RtlVirtualUnwind function if NASM
> is selected as the assembler scheme.
> 
> https://docs.microsoft.com/en-us/windows/win32/api/winnt/nf-winnt-
> rtlvirtualunwind
> 
> I have submitted an issue against OpenSSL since I don't think using the NASM
> assembler should force the inclusion of Windows-specific API hooks, but that
> change cannot be made in OpenSSL 1.1.1 and we will have to wait for OpenSSL 3
> or later to remove the stub function.
> 
> https://github.com/openssl/openssl/issues/12712
> 

[Jiewen] Thanks.

> 2) So far I have only built with VS.
> 

[Jiewen] I think we need support build with GCC and LLVM, and with X64.


> 3) The X64 SHA256 implementation was successfully exercised across a large
> number of devices in a production environment as a verification step in a multi-
> GB data transfer scenario.
> 

[Jiewen] Since you also add other sha (sha1, sha512) and aesni, I think those need unit test for them too.


> Thanks,
> Christopher Zurcher
> 
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Zurcher,
> > Christopher J
> > Sent: Tuesday, August 18, 2020 15:50
> > To: Yao, Jiewen <jiewen.yao@intel.com>; devel@edk2.groups.io
> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>;
> > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > instruction support for X64
> >
> > After further review, the ApiHooks.c file may no longer be needed since we
> > are no longer including the AVX instructions. I will look over the
> > dependencies and send a new patch set if I can eliminate the API hooks file.
> >
> > Thanks,
> > Christopher Zurcher
> >
> > > -----Original Message-----
> > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > Sent: Thursday, August 13, 2020 08:04
> > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > > devel@edk2.groups.io
> > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > <xiaoyux.lu@intel.com>;
> > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > Subject: RE: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction
> > > support for X64
> > >
> > > Hi Christopher
> > > Thanks.
> > >
> > > 1) Would you please help me understand more on "ApiHooks.c contains a
> stub
> > > function for a Windows API call" ?
> > > Why we need this?
> > > If it is compiler specific in openssl, should we submit patch to openssl to
> > > exclude this with OPENSSL_SYS_UEFI? That should be a cleaner solution for
> > > UEFI.
> > >
> > > 2) Would you please describe what compiler you have tried? VS? GCC? LLVM?
> > >
> > > 3) Would you please describe what unit test you have done?
> > >
> > > Thank you
> > > Yao Jiewen
> > >
> > >
> > > > -----Original Message-----
> > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > Sent: Tuesday, August 4, 2020 8:24 AM
> > > > To: devel@edk2.groups.io
> > > > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> > > <jian.j.wang@intel.com>;
> > > > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > > <ard.biesheuvel@linaro.org>
> > > > Subject: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction
> > > support
> > > > for X64
> > > >
> > > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> > > >
> > > > Adding OpensslLibX64.inf and modifying process_files.pl to process this
> > > > file and generate the necessary assembly files.
> > > > ApiHooks.c contains a stub function for a Windows API call.
> > > > uefi-asm.conf contains the limited assembly configurations for OpenSSL.
> > > >
> > > > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > > > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > Signed-off-by: Christopher J Zurcher <christopher.j.zurcher@intel.com>
> > > > ---
> > > >  CryptoPkg/Library/OpensslLib/OpensslLib.inf          |   2 +-
> > > >  CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf    |   2 +-
> > > >  CryptoPkg/Library/OpensslLib/OpensslLibX64.inf       | 656
> > > > ++++++++++++++++++++
> > > >  CryptoPkg/Library/Include/openssl/opensslconf.h      |   3 -
> > > >  CryptoPkg/Library/OpensslLib/ApiHooks.c              |  18 +
> > > >  CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c |  34 +
> > > >  CryptoPkg/Library/OpensslLib/process_files.pl        | 223 +++++--
> > > >  CryptoPkg/Library/OpensslLib/uefi-asm.conf           |  15 +
> > > >  8 files changed, 903 insertions(+), 50 deletions(-)
> > > >
> > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > index dbbe5386a1..bd62d86936 100644
> > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > @@ -16,7 +16,7 @@
> > > >    VERSION_STRING                 = 1.0
> > > >
> > > >    LIBRARY_CLASS                  = OpensslLib
> > > >
> > > >    DEFINE OPENSSL_PATH            = openssl
> > > >
> > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> DOPENSSL_SMALL_FOOTPRINT
> > > > -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
> > > >
> > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> DOPENSSL_SMALL_FOOTPRINT
> > > > -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -
> > > > DOPENSSL_NO_ASM
> > > >
> > > >
> > > >
> > > >  #
> > > >
> > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
> > > >
> > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > index 616ccd9f62..2b7324a990 100644
> > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > @@ -16,7 +16,7 @@
> > > >    VERSION_STRING                 = 1.0
> > > >
> > > >    LIBRARY_CLASS                  = OpensslLib
> > > >
> > > >    DEFINE OPENSSL_PATH            = openssl
> > > >
> > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> DOPENSSL_SMALL_FOOTPRINT
> > > > -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
> > > >
> > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> DOPENSSL_SMALL_FOOTPRINT
> > > > -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -
> > > > DOPENSSL_NO_ASM
> > > >
> > > >
> > > >
> > > >  #
> > > >
> > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
> > > >
> > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > new file mode 100644
> > > > index 0000000000..825eea0254
> > > > --- /dev/null
> > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > @@ -0,0 +1,656 @@
> > > > +## @file
> > > >
> > > > +#  This module provides OpenSSL Library implementation.
> > > >
> > > > +#
> > > >
> > > > +#  Copyright (c) 2010 - 2020, Intel Corporation. All rights
> > reserved.<BR>
> > > >
> > > > +#  (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
> > > >
> > > > +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> > > >
> > > > +#
> > > >
> > > > +##
> > > >
> > > > +
> > > >
> > > > +[Defines]
> > > >
> > > > +  INF_VERSION                    = 0x00010005
> > > >
> > > > +  BASE_NAME                      = OpensslLibX64
> > > >
> > > > +  MODULE_UNI_FILE                = OpensslLib.uni
> > > >
> > > > +  FILE_GUID                      = 18125E50-0117-4DD0-BE54-4784AD995FEF
> > > >
> > > > +  MODULE_TYPE                    = BASE
> > > >
> > > > +  VERSION_STRING                 = 1.0
> > > >
> > > > +  LIBRARY_CLASS                  = OpensslLib
> > > >
> > > > +  DEFINE OPENSSL_PATH            = openssl
> > > >
> > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> DOPENSSL_SMALL_FOOTPRINT
> > > > -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
> > > >
> > > > +  DEFINE OPENSSL_FLAGS_CONFIG    = -DOPENSSL_CPUID_OBJ -
> DSHA1_ASM -
> > > > DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -
> DGHASH_ASM
> > > >
> > > > +  CONSTRUCTOR                    = OpensslLibConstructor
> > > >
> > > > +
> > > >
> > > > +#
> > > >
> > > > +#  VALID_ARCHITECTURES           = X64
> > > >
> > > > +#
> > > >
> > > > +
> > > >
> > > > +[Sources]
> > > >
> > > > +  OpensslLibConstructor.c
> > > >
> > > > +  $(OPENSSL_PATH)/e_os.h
> > > >
> > > > +  $(OPENSSL_PATH)/ms/uplink.h
> > > >
> > > > +# Autogenerated files list starts here
> > > >
> > > > +  X64/crypto/aes/aesni-mb-x86_64.nasm
> > > >
> > > > +  X64/crypto/aes/aesni-sha1-x86_64.nasm
> > > >
> > > > +  X64/crypto/aes/aesni-sha256-x86_64.nasm
> > > >
> > > > +  X64/crypto/aes/aesni-x86_64.nasm
> > > >
> > > > +  X64/crypto/aes/vpaes-x86_64.nasm
> > > >
> > > > +  X64/crypto/modes/ghash-x86_64.nasm
> > > >
> > > > +  X64/crypto/sha/sha1-mb-x86_64.nasm
> > > >
> > > > +  X64/crypto/sha/sha1-x86_64.nasm
> > > >
> > > > +  X64/crypto/sha/sha256-mb-x86_64.nasm
> > > >
> > > > +  X64/crypto/sha/sha256-x86_64.nasm
> > > >
> > > > +  X64/crypto/sha/sha512-x86_64.nasm
> > > >
> > > > +  X64/crypto/x86_64cpuid.nasm
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/aes/aes_core.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ige.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/aes/aes_misc.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/aria/aria.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/a_digest.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/a_dup.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/a_gentm.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/a_int.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/a_object.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/a_octet.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/a_print.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/a_sign.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strex.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strnid.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/a_time.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/a_type.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utctm.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utf8.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/a_verify.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_par.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mime.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_moid.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_pack.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/f_int.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/f_string.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/n_pkey.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/nsseq.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/t_bitst.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/t_pkey.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/t_spki.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_new.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/x_algor.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/x_bignum.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/x_info.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/x_int64.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/x_long.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/x_pkey.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/x_sig.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/x_spki.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/x_val.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/async/async.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/async/async_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/async/async_wait.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/b_addr.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/b_dump.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock2.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/bf_buff.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/bf_nbio.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/bf_null.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/bio_cb.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/bio_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/bio_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/bio_meth.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/bss_acpt.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/bss_bio.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/bss_conn.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/bss_dgram.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/bss_fd.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/bss_file.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/bss_log.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/bss_mem.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/bss_null.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/bss_sock.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_add.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_asm.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_blind.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_const.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_ctx.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_depr.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_dh.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_div.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp2.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gcd.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_intern.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_kron.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mod.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mont.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mpi.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mul.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_nist.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_print.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_rand.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_recp.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_shift.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqr.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_srp.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_word.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_x931p.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/buffer/buf_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/buffer/buffer.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/cmac/cmac.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/comp/c_zlib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/comp/comp_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/comp/comp_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/conf/conf_api.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/conf/conf_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/conf/conf_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mall.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mod.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/conf/conf_sap.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/conf/conf_ssl.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/cpt_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/cryptlib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ctype.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/cversion.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dh/dh_check.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dh/dh_depr.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dh/dh_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dh/dh_gen.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dh/dh_kdf.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dh/dh_key.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dh/dh_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dh/dh_meth.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dh/dh_prn.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dl.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dso/dso_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dso/dso_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dso/dso_vms.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dso/dso_win32.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ebcdic.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/err/err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/err/err_prn.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/bio_enc.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/bio_md.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/bio_ok.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/c_allc.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/c_alld.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/digest.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_aria.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_bf.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_camellia.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_cast.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_des.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_des3.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_idea.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_null.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_old.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc2.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc5.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_seed.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_sm4.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/encode.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/evp_cnf.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/evp_enc.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/evp_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/evp_key.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/evp_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pbe.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pkey.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/m_md2.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/m_md4.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/m_mdc2.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/m_null.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/m_ripemd.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha1.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha3.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/m_sigver.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/m_wp.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/names.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/p_dec.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/p_enc.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/p_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/p_open.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/p_seal.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/p_sign.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/p_verify.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ex_data.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/getenv.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/init.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/kdf/hkdf.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/kdf/kdf_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/kdf/scrypt.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/lhash/lh_stats.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/md5/md5_one.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/mem.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/mem_dbg.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/mem_sec.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/modes/cbc128.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/modes/ccm128.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/modes/cfb128.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/modes/ctr128.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/modes/cts128.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/modes/gcm128.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/modes/ocb128.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/modes/ofb128.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/modes/wrap128.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/modes/xts128.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/o_dir.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/o_fips.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/o_fopen.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/o_init.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/o_str.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/o_time.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/objects/o_names.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/objects/obj_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/objects/obj_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pem/pem_all.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pem/pem_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pem/pem_info.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pem/pem_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pem/pem_oth.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pk8.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pkey.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pem/pem_sign.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pem/pem_x509.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pem/pem_xaux.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pem/pvkfmt.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rand/rand_egd.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rand/rand_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rand/rand_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rand/rand_unix.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rand/rand_vms.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rand/rand_win.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_none.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/sha/keccak1600.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/sha/sha1_one.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/sha/sha256.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/sha/sha512.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/sm4/sm4.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/stack/stack.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/threads_none.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/threads_pthread.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/threads_win.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/txt_db/txt_db.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ui/ui_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ui/ui_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ui/ui_null.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ui/ui_util.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/uid.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/by_dir.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/by_file.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/t_crl.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/t_req.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/t_x509.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509_att.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509_cmp.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509_d2.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509_def.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509_ext.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509_lu.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509_meth.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509_obj.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509_r2x.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509_req.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509_set.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509_trs.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509_txt.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509_v3.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vfy.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vpm.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509cset.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509name.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509rset.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509spki.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509type.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x_all.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x_attrib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x_crl.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x_exten.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x_name.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x_pubkey.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x_req.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509a.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_info.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_int.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3err.c
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/arm_arch.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/mips_arch.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ppc_arch.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/s390x_arch.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/sparc_arch.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/vms_rms.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/aes/aes_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/charmap.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/standard_methods.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/async/async_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bio/bio_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/comp/comp_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/conf/conf_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dh/dh_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/dso/dso_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/evp/evp_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/md5/md5_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/modes/modes_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/objects/obj_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rand/rand_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/sha/sha_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/store/store_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/ui/ui_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509/x509_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h
> > > >
> > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/bio_ssl.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/d1_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/d1_msg.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/d1_srtp.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/methods.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/packet.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/pqueue.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/s3_cbc.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/s3_enc.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/s3_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/s3_msg.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/ssl_asn1.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/ssl_cert.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/ssl_ciph.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/ssl_conf.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/ssl_err.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/ssl_init.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/ssl_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/ssl_mcnf.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/ssl_rsa.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/ssl_sess.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/ssl_stat.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/ssl_txt.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/ssl_utst.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/statem/extensions.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_cust.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/statem/statem.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/statem/statem_clnt.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/statem/statem_dtls.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/statem/statem_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/statem/statem_srvr.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/t1_enc.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/t1_lib.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/t1_trce.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/tls13_enc.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/tls_srp.c
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/packet_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/ssl_cert_table.h
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/ssl_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/record/record.h
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/record/record_local.h
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/statem/statem.h
> > > >
> > > > +  $(OPENSSL_PATH)/ssl/statem/statem_local.h
> > > >
> > > > +# Autogenerated files list ends here
> > > >
> > > > +  buildinf.h
> > > >
> > > > +  rand_pool_noise.h
> > > >
> > > > +  ossl_store.c
> > > >
> > > > +  rand_pool.c
> > > >
> > > > +
> > > >
> > > > +[Sources.X64]
> > > >
> > > > +  rand_pool_noise_tsc.c
> > > >
> > > > +  ApiHooks.c
> > > >
> > > > +
> > > >
> > > > +[Packages]
> > > >
> > > > +  MdePkg/MdePkg.dec
> > > >
> > > > +  CryptoPkg/CryptoPkg.dec
> > > >
> > > > +
> > > >
> > > > +[LibraryClasses]
> > > >
> > > > +  BaseLib
> > > >
> > > > +  DebugLib
> > > >
> > > > +  TimerLib
> > > >
> > > > +  PrintLib
> > > >
> > > > +
> > > >
> > > > +[BuildOptions]
> > > >
> > > > +  #
> > > >
> > > > +  # Disables the following Visual Studio compiler warnings brought by
> > > openssl
> > > > source,
> > > >
> > > > +  # so we do not break the build with /WX option:
> > > >
> > > > +  #   C4090: 'function' : different 'const' qualifiers
> > > >
> > > > +  #   C4132: 'object' : const object should be initialized (tls13_enc.c)
> > > >
> > > > +  #   C4210: nonstandard extension used: function given file scope
> > > >
> > > > +  #   C4244: conversion from type1 to type2, possible loss of data
> > > >
> > > > +  #   C4245: conversion from type1 to type2, signed/unsigned mismatch
> > > >
> > > > +  #   C4267: conversion from size_t to type, possible loss of data
> > > >
> > > > +  #   C4306: 'identifier' : conversion from 'type1' to 'type2' of
> > greater
> > > size
> > > >
> > > > +  #   C4310: cast truncates constant value
> > > >
> > > > +  #   C4389: 'operator' : signed/unsigned mismatch (xxxx)
> > > >
> > > > +  #   C4700: uninitialized local variable 'name' used. (conf_sap.c(71))
> > > >
> > > > +  #   C4702: unreachable code
> > > >
> > > > +  #   C4706: assignment within conditional expression
> > > >
> > > > +  #   C4819: The file contains a character that cannot be represented in
> > > the
> > > > current code page
> > > >
> > > > +  #
> > > >
> > > > +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER
> > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132
> /wd4210
> > > > /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700 /wd4389 /wd4702
> > > > /wd4706 /wd4819
> > > >
> > > > +
> > > >
> > > > +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -
> U__ICC
> > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> > > >
> > > > +
> > > >
> > > > +  #
> > > >
> > > > +  # Suppress the following build warnings in openssl so we don't break
> > the
> > > build
> > > > with -Werror
> > > >
> > > > +  #   -Werror=maybe-uninitialized: there exist some other paths for
> > which
> > > the
> > > > variable is not initialized.
> > > >
> > > > +  #   -Werror=format: Check calls to printf and scanf, etc., to make
> > sure
> > > that the
> > > > arguments supplied have
> > > >
> > > > +  #                   types appropriate to the format string specified.
> > > >
> > > > +  #   -Werror=unused-but-set-variable: Warn whenever a local variable is
> > > > assigned to, but otherwise unused (aside from its declaration).
> > > >
> > > > +  #
> > > >
> > > > +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> > > > $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-
> > > > error=format -Wno-format -Wno-error=unused-but-set-variable -
> > > > DNO_MSABI_VA_FUNCS
> > > >
> > > > +
> > > >
> > > > +  # suppress the following warnings in openssl so we don't break the
> > build
> > > with
> > > > warnings-as-errors:
> > > >
> > > > +  # 1295: Deprecated declaration <entity> - give arg types
> > > >
> > > > +  #  550: <entity> was set but never used
> > > >
> > > > +  # 1293: assignment in condition
> > > >
> > > > +  #  111: statement is unreachable (invariably "break;" after "return
> > X;"
> > > in case
> > > > statement)
> > > >
> > > > +  #   68: integer conversion resulted in a change of sign ("if (Status
> > ==
> > > -1)")
> > > >
> > > > +  #  177: <entity> was declared but never referenced
> > > >
> > > > +  #  223: function <entity> declared implicitly
> > > >
> > > > +  #  144: a value of type <type> cannot be used to initialize an entity
> > of
> > > type
> > > > <type>
> > > >
> > > > +  #  513: a value of type <type> cannot be assigned to an entity of type
> > > <type>
> > > >
> > > > +  #  188: enumerated type mixed with another type (i.e. passing an
> > integer
> > > as an
> > > > enum without a cast)
> > > >
> > > > +  # 1296: Extended constant initialiser used
> > > >
> > > > +  #  128: loop is not reachable - may be emitted inappropriately if code
> > > follows
> > > > a conditional return
> > > >
> > > > +  #       from the function that evaluates to true at compile time
> > > >
> > > > +  #  546: transfer of control bypasses initialization - may be emitted
> > > > inappropriately if the uninitialized
> > > >
> > > > +  #       variable is never referenced after the jump
> > > >
> > > > +  #    1: ignore "#1-D: last line of file ends without a newline"
> > > >
> > > > +  # 3017: <entity> may be used before being set (NOTE: This was fixed in
> > > > OpenSSL 1.1 HEAD with
> > > >
> > > > +  #       commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and can
> be
> > > > dropped then.)
> > > >
> > > > +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -U_WIN64
> > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-
> > > > error=uninitialized
> > > >
> > > > diff --git a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > index 3a2544ea5c..e8f73c4d10 100644
> > > > --- a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > +++ b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > @@ -112,9 +112,6 @@ extern "C" {
> > > >  #ifndef OPENSSL_NO_ASAN
> > > >
> > > >  # define OPENSSL_NO_ASAN
> > > >
> > > >  #endif
> > > >
> > > > -#ifndef OPENSSL_NO_ASM
> > > >
> > > > -# define OPENSSL_NO_ASM
> > > >
> > > > -#endif
> > > >
> > > >  #ifndef OPENSSL_NO_ASYNC
> > > >
> > > >  # define OPENSSL_NO_ASYNC
> > > >
> > > >  #endif
> > > >
> > > > diff --git a/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > new file mode 100644
> > > > index 0000000000..58cff16838
> > > > --- /dev/null
> > > > +++ b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > @@ -0,0 +1,18 @@
> > > > +/** @file
> > > >
> > > > +  OpenSSL Library API hooks.
> > > >
> > > > +
> > > >
> > > > +Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
> > > >
> > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > >
> > > > +
> > > >
> > > > +**/
> > > >
> > > > +
> > > >
> > > > +#include <Uefi.h>
> > > >
> > > > +
> > > >
> > > > +VOID *
> > > >
> > > > +__imp_RtlVirtualUnwind (
> > > >
> > > > +  VOID *    Args
> > > >
> > > > +  )
> > > >
> > > > +{
> > > >
> > > > +  return NULL;
> > > >
> > > > +}
> > > >
> > > > +
> > > >
> > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > new file mode 100644
> > > > index 0000000000..ef20d2b84e
> > > > --- /dev/null
> > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > @@ -0,0 +1,34 @@
> > > > +/** @file
> > > >
> > > > +  Constructor to initialize CPUID data for OpenSSL assembly operations.
> > > >
> > > > +
> > > >
> > > > +Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
> > > >
> > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > >
> > > > +
> > > >
> > > > +**/
> > > >
> > > > +
> > > >
> > > > +#include <Uefi.h>
> > > >
> > > > +
> > > >
> > > > +extern void OPENSSL_cpuid_setup (void);
> > > >
> > > > +
> > > >
> > > > +/**
> > > >
> > > > +  Constructor routine for OpensslLib.
> > > >
> > > > +
> > > >
> > > > +  The constructor calls an internal OpenSSL function which fetches a
> > local
> > > copy
> > > >
> > > > +  of the hardware capability flags, used to enable native crypto
> > > instructions.
> > > >
> > > > +
> > > >
> > > > +  @param  None
> > > >
> > > > +
> > > >
> > > > +  @retval EFI_SUCCESS         The construction succeeded.
> > > >
> > > > +
> > > >
> > > > +**/
> > > >
> > > > +EFI_STATUS
> > > >
> > > > +EFIAPI
> > > >
> > > > +OpensslLibConstructor (
> > > >
> > > > +  VOID
> > > >
> > > > +  )
> > > >
> > > > +{
> > > >
> > > > +  OPENSSL_cpuid_setup ();
> > > >
> > > > +
> > > >
> > > > +  return EFI_SUCCESS;
> > > >
> > > > +}
> > > >
> > > > +
> > > >
> > > > diff --git a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > index 57ce195394..472f59bc8e 100755
> > > > --- a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > +++ b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > @@ -9,9 +9,63 @@
> > > >  # do not need to do this, since the results are stored in the EDK2
> > > >
> > > >  # git repository for them.
> > > >
> > > >  #
> > > >
> > > > +# Due to the script wrapping required to process the OpenSSL
> > > >
> > > > +# configuration data, each native architecture must be processed
> > > >
> > > > +# individually by the maintainer (in addition to the standard version):
> > > >
> > > > +#   ./process_files.pl
> > > >
> > > > +#   ./process_files.pl X64
> > > >
> > > > +#   ./process_files.pl [Arch]
> > > >
> > > > +
> > > >
> > > >  use strict;
> > > >
> > > >  use Cwd;
> > > >
> > > >  use File::Copy;
> > > >
> > > > +use File::Basename;
> > > >
> > > > +use File::Path qw(make_path remove_tree);
> > > >
> > > > +use Text::Tabs;
> > > >
> > > > +
> > > >
> > > > +#
> > > >
> > > > +# OpenSSL perlasm generator script does not transfer the copyright
> > header
> > > >
> > > > +#
> > > >
> > > > +sub copy_license_header
> > > >
> > > > +{
> > > >
> > > > +    my @args = split / /, shift;    #Separate args by spaces
> > > >
> > > > +    my $source = $args[1];          #Source file is second (after
> > "perl")
> > > >
> > > > +    my $target = pop @args;         #Target file is always last
> > > >
> > > > +    chop ($target);                 #Remove newline char
> > > >
> > > > +
> > > >
> > > > +    my $temp_file_name = "license.tmp";
> > > >
> > > > +    open (my $source_file, "<" . $source) || die $source;
> > > >
> > > > +    open (my $target_file, "<" . $target) || die $target;
> > > >
> > > > +    open (my $temp_file, ">" . $temp_file_name) || die $temp_file_name;
> > > >
> > > > +
> > > >
> > > > +    #Add "generated file" warning
> > > >
> > > > +    $source =~ s/^..//;             #Remove leading "./"
> > > >
> > > > +    print ($temp_file "; WARNING: do not edit!\r\n");
> > > >
> > > > +    print ($temp_file "; Generated from $source\r\n");
> > > >
> > > > +    print ($temp_file ";\r\n");
> > > >
> > > > +
> > > >
> > > > +    #Copy source file header to temp file
> > > >
> > > > +    while (my $line = <$source_file>) {
> > > >
> > > > +        next if ($line =~ /#!/);    #Ignore shebang line
> > > >
> > > > +        $line =~ s/#/;/;            #Fix comment character for assembly
> > > >
> > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace, fixup
> > line
> > > endings
> > > >
> > > > +        print ($temp_file $line);
> > > >
> > > > +        last if ($line =~ /http/);  #Last line of copyright header
> > > contains a web link
> > > >
> > > > +    }
> > > >
> > > > +    print ($temp_file "\r\n");
> > > >
> > > > +    #Retrieve generated assembly contents
> > > >
> > > > +    while (my $line = <$target_file>) {
> > > >
> > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace, fixup
> > line
> > > endings
> > > >
> > > > +        print ($temp_file expand ($line));  #expand() replaces tabs with
> > > spaces
> > > >
> > > > +    }
> > > >
> > > > +
> > > >
> > > > +    close ($source_file);
> > > >
> > > > +    close ($target_file);
> > > >
> > > > +    close ($temp_file);
> > > >
> > > > +
> > > >
> > > > +    move ($temp_file_name, $target) ||
> > > >
> > > > +        die "Cannot replace \"" . $target . "\"!";
> > > >
> > > > +}
> > > >
> > > >
> > > >
> > > >  #
> > > >
> > > >  # Find the openssl directory name for use lib. We have to do this
> > > >
> > > > @@ -21,10 +75,41 @@ use File::Copy;
> > > >  #
> > > >
> > > >  my $inf_file;
> > > >
> > > >  my $OPENSSL_PATH;
> > > >
> > > > +my $uefi_config;
> > > >
> > > > +my $extension;
> > > >
> > > > +my $arch;
> > > >
> > > >  my @inf;
> > > >
> > > >
> > > >
> > > >  BEGIN {
> > > >
> > > >      $inf_file = "OpensslLib.inf";
> > > >
> > > > +    $uefi_config = "UEFI";
> > > >
> > > > +    $arch = shift;
> > > >
> > > > +
> > > >
> > > > +    if (defined $arch) {
> > > >
> > > > +        if (uc ($arch) eq "X64") {
> > > >
> > > > +            $arch = "X64";
> > > >
> > > > +            $inf_file = "OpensslLibX64.inf";
> > > >
> > > > +            $uefi_config = "UEFI-x86_64";
> > > >
> > > > +            $extension = "nasm";
> > > >
> > > > +        } else {
> > > >
> > > > +            die "Unsupported architecture \"" . $arch . "\"!";
> > > >
> > > > +        }
> > > >
> > > > +        if ($extension eq "nasm") {
> > > >
> > > > +            if (`nasm -v 2>&1`) {
> > > >
> > > > +                #Presence of nasm executable will trigger inclusion of
> > AVX
> > > instructions
> > > >
> > > > +                die "\nCannot run assembly generators with NASM in
> > > path!\n\n";
> > > >
> > > > +            }
> > > >
> > > > +        }
> > > >
> > > > +
> > > >
> > > > +        # Prepare assembly folder
> > > >
> > > > +        if (-d $arch) {
> > > >
> > > > +            remove_tree ($arch, {safe => 1}) ||
> > > >
> > > > +                die "Cannot clean assembly folder \"" . $arch . "\"!";
> > > >
> > > > +        } else {
> > > >
> > > > +            mkdir $arch ||
> > > >
> > > > +                die "Cannot create assembly folder \"" . $arch . "\"!";
> > > >
> > > > +        }
> > > >
> > > > +    }
> > > >
> > > >
> > > >
> > > >      # Read the contents of the inf file
> > > >
> > > >      open( FD, "<" . $inf_file ) ||
> > > >
> > > > @@ -47,9 +132,9 @@ BEGIN {
> > > >              # Configure UEFI
> > > >
> > > >              system(
> > > >
> > > >                  "./Configure",
> > > >
> > > > -                "UEFI",
> > > >
> > > > +                "--config=../uefi-asm.conf",
> > > >
> > > > +                "$uefi_config",
> > > >
> > > >                  "no-afalgeng",
> > > >
> > > > -                "no-asm",
> > > >
> > > >                  "no-async",
> > > >
> > > >                  "no-autoerrinit",
> > > >
> > > >                  "no-autoload-config",
> > > >
> > > > @@ -129,23 +214,53 @@ BEGIN {
> > > >  # Retrieve file lists from OpenSSL configdata
> > > >
> > > >  #
> > > >
> > > >  use configdata qw/%unified_info/;
> > > >
> > > > +use configdata qw/%config/;
> > > >
> > > > +use configdata qw/%target/;
> > > >
> > > > +
> > > >
> > > > +#
> > > >
> > > > +# Collect build flags from configdata
> > > >
> > > > +#
> > > >
> > > > +my $flags = "";
> > > >
> > > > +foreach my $f (@{$config{lib_defines}}) {
> > > >
> > > > +    $flags .= " -D$f";
> > > >
> > > > +}
> > > >
> > > >
> > > >
> > > >  my @cryptofilelist = ();
> > > >
> > > >  my @sslfilelist = ();
> > > >
> > > > +my @asmfilelist = ();
> > > >
> > > > +my @asmbuild = ();
> > > >
> > > >  foreach my $product ((@{$unified_info{libraries}},
> > > >
> > > >                        @{$unified_info{engines}})) {
> > > >
> > > >      foreach my $o (@{$unified_info{sources}->{$product}}) {
> > > >
> > > >          foreach my $s (@{$unified_info{sources}->{$o}}) {
> > > >
> > > > -            next if ($unified_info{generate}->{$s});
> > > >
> > > > -            next if $s =~ "crypto/bio/b_print.c";
> > > >
> > > > -
> > > >
> > > >              # No need to add unused files in UEFI.
> > > >
> > > >              # So it can reduce porting time, compile time, library size.
> > > >
> > > > +            next if $s =~ "crypto/bio/b_print.c";
> > > >
> > > >              next if $s =~ "crypto/rand/randfile.c";
> > > >
> > > >              next if $s =~ "crypto/store/";
> > > >
> > > >              next if $s =~ "crypto/err/err_all.c";
> > > >
> > > >              next if $s =~ "crypto/aes/aes_ecb.c";
> > > >
> > > >
> > > >
> > > > +            if ($unified_info{generate}->{$s}) {
> > > >
> > > > +                if (defined $arch) {
> > > >
> > > > +                    my $buildstring = "perl";
> > > >
> > > > +                    foreach my $arg (@{$unified_info{generate}->{$s}}) {
> > > >
> > > > +                        if ($arg =~ ".pl") {
> > > >
> > > > +                            $buildstring .= " ./openssl/$arg";
> > > >
> > > > +                        } elsif ($arg =~ "PERLASM_SCHEME") {
> > > >
> > > > +                            $buildstring .= " $target{perlasm_scheme}";
> > > >
> > > > +                        } elsif ($arg =~ "LIB_CFLAGS") {
> > > >
> > > > +                            $buildstring .= "$flags";
> > > >
> > > > +                        }
> > > >
> > > > +                    }
> > > >
> > > > +                    ($s, my $path, undef) = fileparse($s, qr/\.[^.]*/);
> > > >
> > > > +                    $buildstring .= " ./$arch/$path$s.$extension";
> > > >
> > > > +                    make_path ("./$arch/$path");
> > > >
> > > > +                    push @asmbuild, "$buildstring\n";
> > > >
> > > > +                    push @asmfilelist, "  $arch/$path$s.$extension\r\n";
> > > >
> > > > +                }
> > > >
> > > > +                next;
> > > >
> > > > +            }
> > > >
> > > >              if ($product =~ "libssl") {
> > > >
> > > >                  push @sslfilelist, '  $(OPENSSL_PATH)/' . $s . "\r\n";
> > > >
> > > >                  next;
> > > >
> > > > @@ -183,15 +298,31 @@ foreach (@headers){
> > > >  }
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > +#
> > > >
> > > > +# Generate assembly files
> > > >
> > > > +#
> > > >
> > > > +if (@asmbuild) {
> > > >
> > > > +    print "\n--> Generating assembly files ... ";
> > > >
> > > > +    foreach my $buildstring (@asmbuild) {
> > > >
> > > > +        system ("$buildstring");
> > > >
> > > > +        copy_license_header ($buildstring);
> > > >
> > > > +    }
> > > >
> > > > +    print "Done!";
> > > >
> > > > +}
> > > >
> > > > +
> > > >
> > > >  #
> > > >
> > > >  # Update OpensslLib.inf with autogenerated file list
> > > >
> > > >  #
> > > >
> > > >  my @new_inf = ();
> > > >
> > > >  my $subbing = 0;
> > > >
> > > > -print "\n--> Updating OpensslLib.inf ... ";
> > > >
> > > > +print "\n--> Updating $inf_file ... ";
> > > >
> > > >  foreach (@inf) {
> > > >
> > > > +    if ($_ =~ "DEFINE OPENSSL_FLAGS_CONFIG") {
> > > >
> > > > +        push @new_inf, "  DEFINE OPENSSL_FLAGS_CONFIG    =" . $flags .
> > > "\r\n";
> > > >
> > > > +        next;
> > > >
> > > > +    }
> > > >
> > > >      if ( $_ =~ "# Autogenerated files list starts here" ) {
> > > >
> > > > -        push @new_inf, $_, @cryptofilelist, @sslfilelist;
> > > >
> > > > +        push @new_inf, $_, @asmfilelist, @cryptofilelist, @sslfilelist;
> > > >
> > > >          $subbing = 1;
> > > >
> > > >          next;
> > > >
> > > >      }
> > > >
> > > > @@ -216,49 +347,51 @@ rename( $new_inf_file, $inf_file ) ||
> > > >      die "rename $inf_file";
> > > >
> > > >  print "Done!";
> > > >
> > > >
> > > >
> > > > -#
> > > >
> > > > -# Update OpensslLibCrypto.inf with auto-generated file list (no libssl)
> > > >
> > > > -#
> > > >
> > > > -$inf_file = "OpensslLibCrypto.inf";
> > > >
> > > > -
> > > >
> > > > -# Read the contents of the inf file
> > > >
> > > > -@inf = ();
> > > >
> > > > -@new_inf = ();
> > > >
> > > > -open( FD, "<" . $inf_file ) ||
> > > >
> > > > -    die "Cannot open \"" . $inf_file . "\"!";
> > > >
> > > > -@inf = (<FD>);
> > > >
> > > > -close(FD) ||
> > > >
> > > > -    die "Cannot close \"" . $inf_file . "\"!";
> > > >
> > > > +if (!defined $arch) {
> > > >
> > > > +    #
> > > >
> > > > +    # Update OpensslLibCrypto.inf with auto-generated file list (no
> > > libssl)
> > > >
> > > > +    #
> > > >
> > > > +    $inf_file = "OpensslLibCrypto.inf";
> > > >
> > > >
> > > >
> > > > -$subbing = 0;
> > > >
> > > > -print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > >
> > > > -foreach (@inf) {
> > > >
> > > > -    if ( $_ =~ "# Autogenerated files list starts here" ) {
> > > >
> > > > -        push @new_inf, $_, @cryptofilelist;
> > > >
> > > > -        $subbing = 1;
> > > >
> > > > -        next;
> > > >
> > > > -    }
> > > >
> > > > -    if ( $_ =~ "# Autogenerated files list ends here" ) {
> > > >
> > > > -        push @new_inf, $_;
> > > >
> > > > -        $subbing = 0;
> > > >
> > > > -        next;
> > > >
> > > > +    # Read the contents of the inf file
> > > >
> > > > +    @inf = ();
> > > >
> > > > +    @new_inf = ();
> > > >
> > > > +    open( FD, "<" . $inf_file ) ||
> > > >
> > > > +        die "Cannot open \"" . $inf_file . "\"!";
> > > >
> > > > +    @inf = (<FD>);
> > > >
> > > > +    close(FD) ||
> > > >
> > > > +        die "Cannot close \"" . $inf_file . "\"!";
> > > >
> > > > +
> > > >
> > > > +    $subbing = 0;
> > > >
> > > > +    print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > >
> > > > +    foreach (@inf) {
> > > >
> > > > +        if ( $_ =~ "# Autogenerated files list starts here" ) {
> > > >
> > > > +            push @new_inf, $_, @cryptofilelist;
> > > >
> > > > +            $subbing = 1;
> > > >
> > > > +            next;
> > > >
> > > > +        }
> > > >
> > > > +        if ( $_ =~ "# Autogenerated files list ends here" ) {
> > > >
> > > > +            push @new_inf, $_;
> > > >
> > > > +            $subbing = 0;
> > > >
> > > > +            next;
> > > >
> > > > +        }
> > > >
> > > > +
> > > >
> > > > +        push @new_inf, $_
> > > >
> > > > +            unless ($subbing);
> > > >
> > > >      }
> > > >
> > > >
> > > >
> > > > -    push @new_inf, $_
> > > >
> > > > -        unless ($subbing);
> > > >
> > > > +    $new_inf_file = $inf_file . ".new";
> > > >
> > > > +    open( FD, ">" . $new_inf_file ) ||
> > > >
> > > > +        die $new_inf_file;
> > > >
> > > > +    print( FD @new_inf ) ||
> > > >
> > > > +        die $new_inf_file;
> > > >
> > > > +    close(FD) ||
> > > >
> > > > +        die $new_inf_file;
> > > >
> > > > +    rename( $new_inf_file, $inf_file ) ||
> > > >
> > > > +        die "rename $inf_file";
> > > >
> > > > +    print "Done!";
> > > >
> > > >  }
> > > >
> > > >
> > > >
> > > > -$new_inf_file = $inf_file . ".new";
> > > >
> > > > -open( FD, ">" . $new_inf_file ) ||
> > > >
> > > > -    die $new_inf_file;
> > > >
> > > > -print( FD @new_inf ) ||
> > > >
> > > > -    die $new_inf_file;
> > > >
> > > > -close(FD) ||
> > > >
> > > > -    die $new_inf_file;
> > > >
> > > > -rename( $new_inf_file, $inf_file ) ||
> > > >
> > > > -    die "rename $inf_file";
> > > >
> > > > -print "Done!";
> > > >
> > > > -
> > > >
> > > >  #
> > > >
> > > >  # Copy opensslconf.h and dso_conf.h generated from OpenSSL
> Configuration
> > > >
> > > >  #
> > > >
> > > > diff --git a/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > new file mode 100644
> > > > index 0000000000..55eedbf3ba
> > > > --- /dev/null
> > > > +++ b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > @@ -0,0 +1,15 @@
> > > > +## -*- mode: perl; -*-
> > > >
> > > > +## UEFI assembly openssl configuration targets.
> > > >
> > > > +
> > > >
> > > > +my %targets = (
> > > >
> > > > +#### UEFI
> > > >
> > > > +    "UEFI-x86_64" => {
> > > >
> > > > +        perlasm_scheme  => "nasm",
> > > >
> > > > +        # inherit_from    => [ "UEFI",  asm("x86_64_asm") ],
> > > >
> > > > +        inherit_from    => [ "UEFI" ],
> > > >
> > > > +        cpuid_asm_src   => "x86_64cpuid.s",
> > > >
> > > > +        aes_asm_src     => "aes_core.c aes_cbc.c vpaes-x86_64.s aesni-
> > > x86_64.s
> > > > aesni-sha1-x86_64.s aesni-sha256-x86_64.s aesni-mb-x86_64.s",
> > > >
> > > > +        sha1_asm_src    => "sha1-x86_64.s sha256-x86_64.s sha512-
> > x86_64.s
> > > > sha1-mb-x86_64.s sha256-mb-x86_64.s",
> > > >
> > > > +        modes_asm_src   => "ghash-x86_64.s",
> > > >
> > > > +    },
> > > >
> > > > +);
> > > >
> > > > --
> > > > 2.28.0.windows.1
> >
> >
> > 


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

* Re: [edk2-devel] [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
  2020-08-19 18:06                 ` Laszlo Ersek
@ 2020-08-25  0:55                   ` Andrew Fish
  2020-08-26 10:05                     ` Laszlo Ersek
  0 siblings, 1 reply; 42+ messages in thread
From: Andrew Fish @ 2020-08-25  0:55 UTC (permalink / raw)
  To: edk2-devel-groups-io, Laszlo Ersek
  Cc: Zurcher, Christopher J, Mike Kinney, Yao, Jiewen, Wang, Jian J,
	Lu, XiaoyuX, Ard Biesheuvel



> On Aug 19, 2020, at 11:06 AM, Laszlo Ersek <lersek@redhat.com> wrote:
> 
> On 08/19/20 17:37, Andrew Fish via groups.io wrote:
>> 
>> 
>>> On Aug 18, 2020, at 2:22 PM, Zurcher, Christopher J <christopher.j.zurcher@intel.com> wrote:
>>> 
>>> Per the added header comment in process_files.pl:
>>> 
>>> # Due to the script wrapping required to process the OpenSSL
>>> # configuration data, each native architecture must be processed
>>> # individually by the maintainer (in addition to the standard version):
>>> #   ./process_files.pl
>> 
>> Side note: process_file.pl is missing a copyright statement. 
> 
> True :(
> 
> Andrew, could you please report a BZ about it?
> 

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

> Thanks!
> Laszlo
> 
> 
> 
> 


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

* Re: [edk2-devel] [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
  2020-08-25  0:55                   ` Andrew Fish
@ 2020-08-26 10:05                     ` Laszlo Ersek
  0 siblings, 0 replies; 42+ messages in thread
From: Laszlo Ersek @ 2020-08-26 10:05 UTC (permalink / raw)
  To: Andrew Fish, edk2-devel-groups-io
  Cc: Zurcher, Christopher J, Mike Kinney, Yao, Jiewen, Wang, Jian J,
	Lu, XiaoyuX, Ard Biesheuvel

On 08/25/20 02:55, Andrew Fish wrote:
> 
> 
>> On Aug 19, 2020, at 11:06 AM, Laszlo Ersek <lersek@redhat.com> wrote:
>>
>> On 08/19/20 17:37, Andrew Fish via groups.io wrote:
>>>
>>>
>>>> On Aug 18, 2020, at 2:22 PM, Zurcher, Christopher J <christopher.j.zurcher@intel.com> wrote:
>>>>
>>>> Per the added header comment in process_files.pl:
>>>>
>>>> # Due to the script wrapping required to process the OpenSSL
>>>> # configuration data, each native architecture must be processed
>>>> # individually by the maintainer (in addition to the standard version):
>>>> #   ./process_files.pl
>>>
>>> Side note: process_file.pl is missing a copyright statement. 
>>
>> True :(
>>
>> Andrew, could you please report a BZ about it?
>>
> 
> https://bugzilla.tianocore.org/show_bug.cgi?id=2925

Thanks much!
Laszlo


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

* Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
  2020-08-24 23:35         ` Yao, Jiewen
@ 2020-09-16  9:17           ` Guomin Jiang
  2020-09-22 15:21             ` Zurcher, Christopher J
  0 siblings, 1 reply; 42+ messages in thread
From: Guomin Jiang @ 2020-09-16  9:17 UTC (permalink / raw)
  To: devel@edk2.groups.io, Yao, Jiewen, Zurcher, Christopher J
  Cc: Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel

Hi Zurcher,

> [Jiewen] Since you also add other sha (sha1, sha512) and aesni, I think those
> need unit test for them too.

Can you update the status about it?

> [Jiewen] I think we need support build with GCC and LLVM, and with X64.

It is better to support the GCC and LLVM.

Thanks
Guomin

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Yao,
> Jiewen
> Sent: Tuesday, August 25, 2020 7:36 AM
> To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> devel@edk2.groups.io
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> instruction support for X64
> 
> Below:
> 
> > -----Original Message-----
> > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > Sent: Tuesday, August 25, 2020 5:26 AM
> > To: devel@edk2.groups.io; Zurcher, Christopher J
> > <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>
> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>;
> > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > instruction support for X64
> >
> > 1) I have confirmed that the ApiHooks.c file is still required even without
> the AVX
> > instructions included. The x86_64 assembly files in OpenSSL set a flag called
> > $win64 and automatically include calls to the RtlVirtualUnwind function if
> NASM
> > is selected as the assembler scheme.
> >
> > https://docs.microsoft.com/en-us/windows/win32/api/winnt/nf-winnt-
> > rtlvirtualunwind
> >
> > I have submitted an issue against OpenSSL since I don't think using the
> NASM
> > assembler should force the inclusion of Windows-specific API hooks, but
> that
> > change cannot be made in OpenSSL 1.1.1 and we will have to wait for
> OpenSSL 3
> > or later to remove the stub function.
> >
> > https://github.com/openssl/openssl/issues/12712
> >
> 
> [Jiewen] Thanks.
> 
> > 2) So far I have only built with VS.
> >
> 
> [Jiewen] I think we need support build with GCC and LLVM, and with X64.
> 
> 
> > 3) The X64 SHA256 implementation was successfully exercised across a
> large
> > number of devices in a production environment as a verification step in a
> multi-
> > GB data transfer scenario.
> >
> 
> [Jiewen] Since you also add other sha (sha1, sha512) and aesni, I think those
> need unit test for them too.
> 
> 
> > Thanks,
> > Christopher Zurcher
> >
> > > -----Original Message-----
> > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> Zurcher,
> > > Christopher J
> > > Sent: Tuesday, August 18, 2020 15:50
> > > To: Yao, Jiewen <jiewen.yao@intel.com>; devel@edk2.groups.io
> > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > <xiaoyux.lu@intel.com>;
> > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> native
> > > instruction support for X64
> > >
> > > After further review, the ApiHooks.c file may no longer be needed since
> we
> > > are no longer including the AVX instructions. I will look over the
> > > dependencies and send a new patch set if I can eliminate the API hooks
> file.
> > >
> > > Thanks,
> > > Christopher Zurcher
> > >
> > > > -----Original Message-----
> > > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > > Sent: Thursday, August 13, 2020 08:04
> > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > > > devel@edk2.groups.io
> > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > <xiaoyux.lu@intel.com>;
> > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > Subject: RE: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> instruction
> > > > support for X64
> > > >
> > > > Hi Christopher
> > > > Thanks.
> > > >
> > > > 1) Would you please help me understand more on "ApiHooks.c contains
> a
> > stub
> > > > function for a Windows API call" ?
> > > > Why we need this?
> > > > If it is compiler specific in openssl, should we submit patch to openssl to
> > > > exclude this with OPENSSL_SYS_UEFI? That should be a cleaner solution
> for
> > > > UEFI.
> > > >
> > > > 2) Would you please describe what compiler you have tried? VS? GCC?
> LLVM?
> > > >
> > > > 3) Would you please describe what unit test you have done?
> > > >
> > > > Thank you
> > > > Yao Jiewen
> > > >
> > > >
> > > > > -----Original Message-----
> > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > > Sent: Tuesday, August 4, 2020 8:24 AM
> > > > > To: devel@edk2.groups.io
> > > > > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> > > > <jian.j.wang@intel.com>;
> > > > > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > > > <ard.biesheuvel@linaro.org>
> > > > > Subject: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction
> > > > support
> > > > > for X64
> > > > >
> > > > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> > > > >
> > > > > Adding OpensslLibX64.inf and modifying process_files.pl to process
> this
> > > > > file and generate the necessary assembly files.
> > > > > ApiHooks.c contains a stub function for a Windows API call.
> > > > > uefi-asm.conf contains the limited assembly configurations for
> OpenSSL.
> > > > >
> > > > > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > > > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > > > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > > > > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > Signed-off-by: Christopher J Zurcher
> <christopher.j.zurcher@intel.com>
> > > > > ---
> > > > >  CryptoPkg/Library/OpensslLib/OpensslLib.inf          |   2 +-
> > > > >  CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf    |   2 +-
> > > > >  CryptoPkg/Library/OpensslLib/OpensslLibX64.inf       | 656
> > > > > ++++++++++++++++++++
> > > > >  CryptoPkg/Library/Include/openssl/opensslconf.h      |   3 -
> > > > >  CryptoPkg/Library/OpensslLib/ApiHooks.c              |  18 +
> > > > >  CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c |  34 +
> > > > >  CryptoPkg/Library/OpensslLib/process_files.pl        | 223 +++++--
> > > > >  CryptoPkg/Library/OpensslLib/uefi-asm.conf           |  15 +
> > > > >  8 files changed, 903 insertions(+), 50 deletions(-)
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > index dbbe5386a1..bd62d86936 100644
> > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > @@ -16,7 +16,7 @@
> > > > >    VERSION_STRING                 = 1.0
> > > > >
> > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > >
> > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > >
> > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > DOPENSSL_SMALL_FOOTPRINT
> > > > > -D_CRT_SECURE_NO_DEPRECATE -
> D_CRT_NONSTDC_NO_DEPRECATE
> > > > >
> > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > DOPENSSL_SMALL_FOOTPRINT
> > > > > -D_CRT_SECURE_NO_DEPRECATE -
> D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > DOPENSSL_NO_ASM
> > > > >
> > > > >
> > > > >
> > > > >  #
> > > > >
> > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > index 616ccd9f62..2b7324a990 100644
> > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > @@ -16,7 +16,7 @@
> > > > >    VERSION_STRING                 = 1.0
> > > > >
> > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > >
> > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > >
> > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > DOPENSSL_SMALL_FOOTPRINT
> > > > > -D_CRT_SECURE_NO_DEPRECATE -
> D_CRT_NONSTDC_NO_DEPRECATE
> > > > >
> > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > DOPENSSL_SMALL_FOOTPRINT
> > > > > -D_CRT_SECURE_NO_DEPRECATE -
> D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > DOPENSSL_NO_ASM
> > > > >
> > > > >
> > > > >
> > > > >  #
> > > > >
> > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > new file mode 100644
> > > > > index 0000000000..825eea0254
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > @@ -0,0 +1,656 @@
> > > > > +## @file
> > > > >
> > > > > +#  This module provides OpenSSL Library implementation.
> > > > >
> > > > > +#
> > > > >
> > > > > +#  Copyright (c) 2010 - 2020, Intel Corporation. All rights
> > > reserved.<BR>
> > > > >
> > > > > +#  (C) Copyright 2020 Hewlett Packard Enterprise Development
> LP<BR>
> > > > >
> > > > > +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > >
> > > > > +#
> > > > >
> > > > > +##
> > > > >
> > > > > +
> > > > >
> > > > > +[Defines]
> > > > >
> > > > > +  INF_VERSION                    = 0x00010005
> > > > >
> > > > > +  BASE_NAME                      = OpensslLibX64
> > > > >
> > > > > +  MODULE_UNI_FILE                = OpensslLib.uni
> > > > >
> > > > > +  FILE_GUID                      = 18125E50-0117-4DD0-BE54-4784AD995FEF
> > > > >
> > > > > +  MODULE_TYPE                    = BASE
> > > > >
> > > > > +  VERSION_STRING                 = 1.0
> > > > >
> > > > > +  LIBRARY_CLASS                  = OpensslLib
> > > > >
> > > > > +  DEFINE OPENSSL_PATH            = openssl
> > > > >
> > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > DOPENSSL_SMALL_FOOTPRINT
> > > > > -D_CRT_SECURE_NO_DEPRECATE -
> D_CRT_NONSTDC_NO_DEPRECATE
> > > > >
> > > > > +  DEFINE OPENSSL_FLAGS_CONFIG    = -DOPENSSL_CPUID_OBJ -
> > DSHA1_ASM -
> > > > > DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -
> > DGHASH_ASM
> > > > >
> > > > > +  CONSTRUCTOR                    = OpensslLibConstructor
> > > > >
> > > > > +
> > > > >
> > > > > +#
> > > > >
> > > > > +#  VALID_ARCHITECTURES           = X64
> > > > >
> > > > > +#
> > > > >
> > > > > +
> > > > >
> > > > > +[Sources]
> > > > >
> > > > > +  OpensslLibConstructor.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/e_os.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/ms/uplink.h
> > > > >
> > > > > +# Autogenerated files list starts here
> > > > >
> > > > > +  X64/crypto/aes/aesni-mb-x86_64.nasm
> > > > >
> > > > > +  X64/crypto/aes/aesni-sha1-x86_64.nasm
> > > > >
> > > > > +  X64/crypto/aes/aesni-sha256-x86_64.nasm
> > > > >
> > > > > +  X64/crypto/aes/aesni-x86_64.nasm
> > > > >
> > > > > +  X64/crypto/aes/vpaes-x86_64.nasm
> > > > >
> > > > > +  X64/crypto/modes/ghash-x86_64.nasm
> > > > >
> > > > > +  X64/crypto/sha/sha1-mb-x86_64.nasm
> > > > >
> > > > > +  X64/crypto/sha/sha1-x86_64.nasm
> > > > >
> > > > > +  X64/crypto/sha/sha256-mb-x86_64.nasm
> > > > >
> > > > > +  X64/crypto/sha/sha256-x86_64.nasm
> > > > >
> > > > > +  X64/crypto/sha/sha512-x86_64.nasm
> > > > >
> > > > > +  X64/crypto/x86_64cpuid.nasm
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_core.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ige.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_misc.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/aria/aria.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_digest.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_dup.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_gentm.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_int.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_object.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_octet.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_print.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_sign.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strex.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strnid.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_time.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_type.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utctm.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utf8.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_verify.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_par.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mime.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_moid.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_pack.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_int.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_string.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/n_pkey.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/nsseq.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_bitst.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_pkey.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_spki.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_new.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_algor.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_bignum.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_info.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_int64.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_long.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_pkey.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_sig.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_spki.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_val.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/async/async.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/async/async_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/async/async_wait.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/b_addr.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/b_dump.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock2.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_buff.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_nbio.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_null.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_cb.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_meth.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_acpt.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_bio.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_conn.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_dgram.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_fd.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_file.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_log.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_mem.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_null.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_sock.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_add.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_asm.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_blind.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_const.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_ctx.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_depr.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_dh.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_div.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp2.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gcd.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_intern.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_kron.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mod.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mont.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mpi.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mul.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_nist.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_print.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_rand.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_recp.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_shift.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqr.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_srp.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_word.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_x931p.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/buffer/buf_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/buffer/buffer.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/cmac/cmac.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/comp/c_zlib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_api.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mall.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mod.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_sap.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_ssl.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/cpt_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/cryptlib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ctype.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/cversion.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_check.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_depr.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_gen.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_kdf.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_key.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_meth.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_prn.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dl.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_vms.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_win32.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ebcdic.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/err/err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/err/err_prn.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_enc.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_md.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_ok.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/c_allc.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/c_alld.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/digest.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aria.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_bf.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_camellia.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_cast.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des3.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_idea.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_null.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_old.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc2.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc5.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_seed.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_sm4.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/encode.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_cnf.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_enc.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_key.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pbe.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pkey.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md2.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md4.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/m_mdc2.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/m_null.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/m_ripemd.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha1.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha3.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sigver.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/m_wp.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/names.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/p_dec.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/p_enc.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/p_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/p_open.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/p_seal.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/p_sign.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/p_verify.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ex_data.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/getenv.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/init.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/kdf/hkdf.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/kdf/kdf_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/kdf/scrypt.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/lhash/lh_stats.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_one.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/mem.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/mem_dbg.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/mem_sec.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/modes/cbc128.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/modes/ccm128.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/modes/cfb128.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/modes/ctr128.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/modes/cts128.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/modes/gcm128.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/modes/ocb128.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/modes/ofb128.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/modes/wrap128.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/modes/xts128.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/o_dir.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/o_fips.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/o_fopen.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/o_init.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/o_str.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/o_time.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/objects/o_names.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_all.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_info.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_oth.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pk8.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pkey.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_sign.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_x509.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_xaux.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pem/pvkfmt.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_egd.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_unix.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_vms.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_win.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_none.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/sha/keccak1600.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1_one.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/sha/sha256.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/sha/sha512.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/sm4/sm4.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/stack/stack.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/threads_none.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/threads_pthread.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/threads_win.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/txt_db/txt_db.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_null.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_util.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/uid.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/by_dir.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/by_file.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/t_crl.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/t_req.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/t_x509.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_att.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_cmp.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_d2.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_def.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_ext.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_lu.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_meth.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_obj.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_r2x.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_req.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_set.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_trs.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_txt.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_v3.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vfy.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vpm.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509cset.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509name.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509rset.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509spki.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509type.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x_all.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x_attrib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x_crl.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x_exten.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x_name.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x_pubkey.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x_req.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509a.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_info.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_int.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/arm_arch.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/mips_arch.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ppc_arch.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/s390x_arch.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/sparc_arch.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/vms_rms.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/charmap.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/standard_methods.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/async/async_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/modes/modes_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/sha/sha_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/store/store_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/bio_ssl.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/d1_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/d1_msg.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/d1_srtp.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/methods.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/packet.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/pqueue.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/s3_cbc.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/s3_enc.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/s3_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/s3_msg.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/ssl_asn1.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/ssl_ciph.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/ssl_conf.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/ssl_err.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/ssl_init.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/ssl_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/ssl_mcnf.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/ssl_rsa.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/ssl_sess.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/ssl_stat.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/ssl_txt.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/ssl_utst.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_cust.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_clnt.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_dtls.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_srvr.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/t1_enc.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/t1_lib.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/t1_trce.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/tls13_enc.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/tls_srp.c
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/packet_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert_table.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/ssl_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/record/record.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/record/record_local.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.h
> > > > >
> > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_local.h
> > > > >
> > > > > +# Autogenerated files list ends here
> > > > >
> > > > > +  buildinf.h
> > > > >
> > > > > +  rand_pool_noise.h
> > > > >
> > > > > +  ossl_store.c
> > > > >
> > > > > +  rand_pool.c
> > > > >
> > > > > +
> > > > >
> > > > > +[Sources.X64]
> > > > >
> > > > > +  rand_pool_noise_tsc.c
> > > > >
> > > > > +  ApiHooks.c
> > > > >
> > > > > +
> > > > >
> > > > > +[Packages]
> > > > >
> > > > > +  MdePkg/MdePkg.dec
> > > > >
> > > > > +  CryptoPkg/CryptoPkg.dec
> > > > >
> > > > > +
> > > > >
> > > > > +[LibraryClasses]
> > > > >
> > > > > +  BaseLib
> > > > >
> > > > > +  DebugLib
> > > > >
> > > > > +  TimerLib
> > > > >
> > > > > +  PrintLib
> > > > >
> > > > > +
> > > > >
> > > > > +[BuildOptions]
> > > > >
> > > > > +  #
> > > > >
> > > > > +  # Disables the following Visual Studio compiler warnings brought by
> > > > openssl
> > > > > source,
> > > > >
> > > > > +  # so we do not break the build with /WX option:
> > > > >
> > > > > +  #   C4090: 'function' : different 'const' qualifiers
> > > > >
> > > > > +  #   C4132: 'object' : const object should be initialized (tls13_enc.c)
> > > > >
> > > > > +  #   C4210: nonstandard extension used: function given file scope
> > > > >
> > > > > +  #   C4244: conversion from type1 to type2, possible loss of data
> > > > >
> > > > > +  #   C4245: conversion from type1 to type2, signed/unsigned
> mismatch
> > > > >
> > > > > +  #   C4267: conversion from size_t to type, possible loss of data
> > > > >
> > > > > +  #   C4306: 'identifier' : conversion from 'type1' to 'type2' of
> > > greater
> > > > size
> > > > >
> > > > > +  #   C4310: cast truncates constant value
> > > > >
> > > > > +  #   C4389: 'operator' : signed/unsigned mismatch (xxxx)
> > > > >
> > > > > +  #   C4700: uninitialized local variable 'name' used. (conf_sap.c(71))
> > > > >
> > > > > +  #   C4702: unreachable code
> > > > >
> > > > > +  #   C4706: assignment within conditional expression
> > > > >
> > > > > +  #   C4819: The file contains a character that cannot be represented
> in
> > > > the
> > > > > current code page
> > > > >
> > > > > +  #
> > > > >
> > > > > +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER
> > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132
> > /wd4210
> > > > > /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700 /wd4389
> /wd4702
> > > > > /wd4706 /wd4819
> > > > >
> > > > > +
> > > > >
> > > > > +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -
> > U__ICC
> > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> > > > >
> > > > > +
> > > > >
> > > > > +  #
> > > > >
> > > > > +  # Suppress the following build warnings in openssl so we don't
> break
> > > the
> > > > build
> > > > > with -Werror
> > > > >
> > > > > +  #   -Werror=maybe-uninitialized: there exist some other paths for
> > > which
> > > > the
> > > > > variable is not initialized.
> > > > >
> > > > > +  #   -Werror=format: Check calls to printf and scanf, etc., to make
> > > sure
> > > > that the
> > > > > arguments supplied have
> > > > >
> > > > > +  #                   types appropriate to the format string specified.
> > > > >
> > > > > +  #   -Werror=unused-but-set-variable: Warn whenever a local
> variable is
> > > > > assigned to, but otherwise unused (aside from its declaration).
> > > > >
> > > > > +  #
> > > > >
> > > > > +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64
> $(OPENSSL_FLAGS)
> > > > > $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-
> > > > > error=format -Wno-format -Wno-error=unused-but-set-variable -
> > > > > DNO_MSABI_VA_FUNCS
> > > > >
> > > > > +
> > > > >
> > > > > +  # suppress the following warnings in openssl so we don't break the
> > > build
> > > > with
> > > > > warnings-as-errors:
> > > > >
> > > > > +  # 1295: Deprecated declaration <entity> - give arg types
> > > > >
> > > > > +  #  550: <entity> was set but never used
> > > > >
> > > > > +  # 1293: assignment in condition
> > > > >
> > > > > +  #  111: statement is unreachable (invariably "break;" after "return
> > > X;"
> > > > in case
> > > > > statement)
> > > > >
> > > > > +  #   68: integer conversion resulted in a change of sign ("if (Status
> > > ==
> > > > -1)")
> > > > >
> > > > > +  #  177: <entity> was declared but never referenced
> > > > >
> > > > > +  #  223: function <entity> declared implicitly
> > > > >
> > > > > +  #  144: a value of type <type> cannot be used to initialize an entity
> > > of
> > > > type
> > > > > <type>
> > > > >
> > > > > +  #  513: a value of type <type> cannot be assigned to an entity of
> type
> > > > <type>
> > > > >
> > > > > +  #  188: enumerated type mixed with another type (i.e. passing an
> > > integer
> > > > as an
> > > > > enum without a cast)
> > > > >
> > > > > +  # 1296: Extended constant initialiser used
> > > > >
> > > > > +  #  128: loop is not reachable - may be emitted inappropriately if
> code
> > > > follows
> > > > > a conditional return
> > > > >
> > > > > +  #       from the function that evaluates to true at compile time
> > > > >
> > > > > +  #  546: transfer of control bypasses initialization - may be emitted
> > > > > inappropriately if the uninitialized
> > > > >
> > > > > +  #       variable is never referenced after the jump
> > > > >
> > > > > +  #    1: ignore "#1-D: last line of file ends without a newline"
> > > > >
> > > > > +  # 3017: <entity> may be used before being set (NOTE: This was
> fixed in
> > > > > OpenSSL 1.1 HEAD with
> > > > >
> > > > > +  #       commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and
> can
> > be
> > > > > dropped then.)
> > > > >
> > > > > +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -
> U_WIN64
> > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-
> > > > > error=uninitialized
> > > > >
> > > > > diff --git a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > index 3a2544ea5c..e8f73c4d10 100644
> > > > > --- a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > +++ b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > @@ -112,9 +112,6 @@ extern "C" {
> > > > >  #ifndef OPENSSL_NO_ASAN
> > > > >
> > > > >  # define OPENSSL_NO_ASAN
> > > > >
> > > > >  #endif
> > > > >
> > > > > -#ifndef OPENSSL_NO_ASM
> > > > >
> > > > > -# define OPENSSL_NO_ASM
> > > > >
> > > > > -#endif
> > > > >
> > > > >  #ifndef OPENSSL_NO_ASYNC
> > > > >
> > > > >  # define OPENSSL_NO_ASYNC
> > > > >
> > > > >  #endif
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > new file mode 100644
> > > > > index 0000000000..58cff16838
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > @@ -0,0 +1,18 @@
> > > > > +/** @file
> > > > >
> > > > > +  OpenSSL Library API hooks.
> > > > >
> > > > > +
> > > > >
> > > > > +Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
> > > > >
> > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > >
> > > > > +
> > > > >
> > > > > +**/
> > > > >
> > > > > +
> > > > >
> > > > > +#include <Uefi.h>
> > > > >
> > > > > +
> > > > >
> > > > > +VOID *
> > > > >
> > > > > +__imp_RtlVirtualUnwind (
> > > > >
> > > > > +  VOID *    Args
> > > > >
> > > > > +  )
> > > > >
> > > > > +{
> > > > >
> > > > > +  return NULL;
> > > > >
> > > > > +}
> > > > >
> > > > > +
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > new file mode 100644
> > > > > index 0000000000..ef20d2b84e
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > @@ -0,0 +1,34 @@
> > > > > +/** @file
> > > > >
> > > > > +  Constructor to initialize CPUID data for OpenSSL assembly
> operations.
> > > > >
> > > > > +
> > > > >
> > > > > +Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
> > > > >
> > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > >
> > > > > +
> > > > >
> > > > > +**/
> > > > >
> > > > > +
> > > > >
> > > > > +#include <Uefi.h>
> > > > >
> > > > > +
> > > > >
> > > > > +extern void OPENSSL_cpuid_setup (void);
> > > > >
> > > > > +
> > > > >
> > > > > +/**
> > > > >
> > > > > +  Constructor routine for OpensslLib.
> > > > >
> > > > > +
> > > > >
> > > > > +  The constructor calls an internal OpenSSL function which fetches a
> > > local
> > > > copy
> > > > >
> > > > > +  of the hardware capability flags, used to enable native crypto
> > > > instructions.
> > > > >
> > > > > +
> > > > >
> > > > > +  @param  None
> > > > >
> > > > > +
> > > > >
> > > > > +  @retval EFI_SUCCESS         The construction succeeded.
> > > > >
> > > > > +
> > > > >
> > > > > +**/
> > > > >
> > > > > +EFI_STATUS
> > > > >
> > > > > +EFIAPI
> > > > >
> > > > > +OpensslLibConstructor (
> > > > >
> > > > > +  VOID
> > > > >
> > > > > +  )
> > > > >
> > > > > +{
> > > > >
> > > > > +  OPENSSL_cpuid_setup ();
> > > > >
> > > > > +
> > > > >
> > > > > +  return EFI_SUCCESS;
> > > > >
> > > > > +}
> > > > >
> > > > > +
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > index 57ce195394..472f59bc8e 100755
> > > > > --- a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > +++ b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > @@ -9,9 +9,63 @@
> > > > >  # do not need to do this, since the results are stored in the EDK2
> > > > >
> > > > >  # git repository for them.
> > > > >
> > > > >  #
> > > > >
> > > > > +# Due to the script wrapping required to process the OpenSSL
> > > > >
> > > > > +# configuration data, each native architecture must be processed
> > > > >
> > > > > +# individually by the maintainer (in addition to the standard version):
> > > > >
> > > > > +#   ./process_files.pl
> > > > >
> > > > > +#   ./process_files.pl X64
> > > > >
> > > > > +#   ./process_files.pl [Arch]
> > > > >
> > > > > +
> > > > >
> > > > >  use strict;
> > > > >
> > > > >  use Cwd;
> > > > >
> > > > >  use File::Copy;
> > > > >
> > > > > +use File::Basename;
> > > > >
> > > > > +use File::Path qw(make_path remove_tree);
> > > > >
> > > > > +use Text::Tabs;
> > > > >
> > > > > +
> > > > >
> > > > > +#
> > > > >
> > > > > +# OpenSSL perlasm generator script does not transfer the copyright
> > > header
> > > > >
> > > > > +#
> > > > >
> > > > > +sub copy_license_header
> > > > >
> > > > > +{
> > > > >
> > > > > +    my @args = split / /, shift;    #Separate args by spaces
> > > > >
> > > > > +    my $source = $args[1];          #Source file is second (after
> > > "perl")
> > > > >
> > > > > +    my $target = pop @args;         #Target file is always last
> > > > >
> > > > > +    chop ($target);                 #Remove newline char
> > > > >
> > > > > +
> > > > >
> > > > > +    my $temp_file_name = "license.tmp";
> > > > >
> > > > > +    open (my $source_file, "<" . $source) || die $source;
> > > > >
> > > > > +    open (my $target_file, "<" . $target) || die $target;
> > > > >
> > > > > +    open (my $temp_file, ">" . $temp_file_name) || die
> $temp_file_name;
> > > > >
> > > > > +
> > > > >
> > > > > +    #Add "generated file" warning
> > > > >
> > > > > +    $source =~ s/^..//;             #Remove leading "./"
> > > > >
> > > > > +    print ($temp_file "; WARNING: do not edit!\r\n");
> > > > >
> > > > > +    print ($temp_file "; Generated from $source\r\n");
> > > > >
> > > > > +    print ($temp_file ";\r\n");
> > > > >
> > > > > +
> > > > >
> > > > > +    #Copy source file header to temp file
> > > > >
> > > > > +    while (my $line = <$source_file>) {
> > > > >
> > > > > +        next if ($line =~ /#!/);    #Ignore shebang line
> > > > >
> > > > > +        $line =~ s/#/;/;            #Fix comment character for assembly
> > > > >
> > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace, fixup
> > > line
> > > > endings
> > > > >
> > > > > +        print ($temp_file $line);
> > > > >
> > > > > +        last if ($line =~ /http/);  #Last line of copyright header
> > > > contains a web link
> > > > >
> > > > > +    }
> > > > >
> > > > > +    print ($temp_file "\r\n");
> > > > >
> > > > > +    #Retrieve generated assembly contents
> > > > >
> > > > > +    while (my $line = <$target_file>) {
> > > > >
> > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace, fixup
> > > line
> > > > endings
> > > > >
> > > > > +        print ($temp_file expand ($line));  #expand() replaces tabs with
> > > > spaces
> > > > >
> > > > > +    }
> > > > >
> > > > > +
> > > > >
> > > > > +    close ($source_file);
> > > > >
> > > > > +    close ($target_file);
> > > > >
> > > > > +    close ($temp_file);
> > > > >
> > > > > +
> > > > >
> > > > > +    move ($temp_file_name, $target) ||
> > > > >
> > > > > +        die "Cannot replace \"" . $target . "\"!";
> > > > >
> > > > > +}
> > > > >
> > > > >
> > > > >
> > > > >  #
> > > > >
> > > > >  # Find the openssl directory name for use lib. We have to do this
> > > > >
> > > > > @@ -21,10 +75,41 @@ use File::Copy;
> > > > >  #
> > > > >
> > > > >  my $inf_file;
> > > > >
> > > > >  my $OPENSSL_PATH;
> > > > >
> > > > > +my $uefi_config;
> > > > >
> > > > > +my $extension;
> > > > >
> > > > > +my $arch;
> > > > >
> > > > >  my @inf;
> > > > >
> > > > >
> > > > >
> > > > >  BEGIN {
> > > > >
> > > > >      $inf_file = "OpensslLib.inf";
> > > > >
> > > > > +    $uefi_config = "UEFI";
> > > > >
> > > > > +    $arch = shift;
> > > > >
> > > > > +
> > > > >
> > > > > +    if (defined $arch) {
> > > > >
> > > > > +        if (uc ($arch) eq "X64") {
> > > > >
> > > > > +            $arch = "X64";
> > > > >
> > > > > +            $inf_file = "OpensslLibX64.inf";
> > > > >
> > > > > +            $uefi_config = "UEFI-x86_64";
> > > > >
> > > > > +            $extension = "nasm";
> > > > >
> > > > > +        } else {
> > > > >
> > > > > +            die "Unsupported architecture \"" . $arch . "\"!";
> > > > >
> > > > > +        }
> > > > >
> > > > > +        if ($extension eq "nasm") {
> > > > >
> > > > > +            if (`nasm -v 2>&1`) {
> > > > >
> > > > > +                #Presence of nasm executable will trigger inclusion of
> > > AVX
> > > > instructions
> > > > >
> > > > > +                die "\nCannot run assembly generators with NASM in
> > > > path!\n\n";
> > > > >
> > > > > +            }
> > > > >
> > > > > +        }
> > > > >
> > > > > +
> > > > >
> > > > > +        # Prepare assembly folder
> > > > >
> > > > > +        if (-d $arch) {
> > > > >
> > > > > +            remove_tree ($arch, {safe => 1}) ||
> > > > >
> > > > > +                die "Cannot clean assembly folder \"" . $arch . "\"!";
> > > > >
> > > > > +        } else {
> > > > >
> > > > > +            mkdir $arch ||
> > > > >
> > > > > +                die "Cannot create assembly folder \"" . $arch . "\"!";
> > > > >
> > > > > +        }
> > > > >
> > > > > +    }
> > > > >
> > > > >
> > > > >
> > > > >      # Read the contents of the inf file
> > > > >
> > > > >      open( FD, "<" . $inf_file ) ||
> > > > >
> > > > > @@ -47,9 +132,9 @@ BEGIN {
> > > > >              # Configure UEFI
> > > > >
> > > > >              system(
> > > > >
> > > > >                  "./Configure",
> > > > >
> > > > > -                "UEFI",
> > > > >
> > > > > +                "--config=../uefi-asm.conf",
> > > > >
> > > > > +                "$uefi_config",
> > > > >
> > > > >                  "no-afalgeng",
> > > > >
> > > > > -                "no-asm",
> > > > >
> > > > >                  "no-async",
> > > > >
> > > > >                  "no-autoerrinit",
> > > > >
> > > > >                  "no-autoload-config",
> > > > >
> > > > > @@ -129,23 +214,53 @@ BEGIN {
> > > > >  # Retrieve file lists from OpenSSL configdata
> > > > >
> > > > >  #
> > > > >
> > > > >  use configdata qw/%unified_info/;
> > > > >
> > > > > +use configdata qw/%config/;
> > > > >
> > > > > +use configdata qw/%target/;
> > > > >
> > > > > +
> > > > >
> > > > > +#
> > > > >
> > > > > +# Collect build flags from configdata
> > > > >
> > > > > +#
> > > > >
> > > > > +my $flags = "";
> > > > >
> > > > > +foreach my $f (@{$config{lib_defines}}) {
> > > > >
> > > > > +    $flags .= " -D$f";
> > > > >
> > > > > +}
> > > > >
> > > > >
> > > > >
> > > > >  my @cryptofilelist = ();
> > > > >
> > > > >  my @sslfilelist = ();
> > > > >
> > > > > +my @asmfilelist = ();
> > > > >
> > > > > +my @asmbuild = ();
> > > > >
> > > > >  foreach my $product ((@{$unified_info{libraries}},
> > > > >
> > > > >                        @{$unified_info{engines}})) {
> > > > >
> > > > >      foreach my $o (@{$unified_info{sources}->{$product}}) {
> > > > >
> > > > >          foreach my $s (@{$unified_info{sources}->{$o}}) {
> > > > >
> > > > > -            next if ($unified_info{generate}->{$s});
> > > > >
> > > > > -            next if $s =~ "crypto/bio/b_print.c";
> > > > >
> > > > > -
> > > > >
> > > > >              # No need to add unused files in UEFI.
> > > > >
> > > > >              # So it can reduce porting time, compile time, library size.
> > > > >
> > > > > +            next if $s =~ "crypto/bio/b_print.c";
> > > > >
> > > > >              next if $s =~ "crypto/rand/randfile.c";
> > > > >
> > > > >              next if $s =~ "crypto/store/";
> > > > >
> > > > >              next if $s =~ "crypto/err/err_all.c";
> > > > >
> > > > >              next if $s =~ "crypto/aes/aes_ecb.c";
> > > > >
> > > > >
> > > > >
> > > > > +            if ($unified_info{generate}->{$s}) {
> > > > >
> > > > > +                if (defined $arch) {
> > > > >
> > > > > +                    my $buildstring = "perl";
> > > > >
> > > > > +                    foreach my $arg (@{$unified_info{generate}->{$s}}) {
> > > > >
> > > > > +                        if ($arg =~ ".pl") {
> > > > >
> > > > > +                            $buildstring .= " ./openssl/$arg";
> > > > >
> > > > > +                        } elsif ($arg =~ "PERLASM_SCHEME") {
> > > > >
> > > > > +                            $buildstring .= " $target{perlasm_scheme}";
> > > > >
> > > > > +                        } elsif ($arg =~ "LIB_CFLAGS") {
> > > > >
> > > > > +                            $buildstring .= "$flags";
> > > > >
> > > > > +                        }
> > > > >
> > > > > +                    }
> > > > >
> > > > > +                    ($s, my $path, undef) = fileparse($s, qr/\.[^.]*/);
> > > > >
> > > > > +                    $buildstring .= " ./$arch/$path$s.$extension";
> > > > >
> > > > > +                    make_path ("./$arch/$path");
> > > > >
> > > > > +                    push @asmbuild, "$buildstring\n";
> > > > >
> > > > > +                    push @asmfilelist, "  $arch/$path$s.$extension\r\n";
> > > > >
> > > > > +                }
> > > > >
> > > > > +                next;
> > > > >
> > > > > +            }
> > > > >
> > > > >              if ($product =~ "libssl") {
> > > > >
> > > > >                  push @sslfilelist, '  $(OPENSSL_PATH)/' . $s . "\r\n";
> > > > >
> > > > >                  next;
> > > > >
> > > > > @@ -183,15 +298,31 @@ foreach (@headers){
> > > > >  }
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > +#
> > > > >
> > > > > +# Generate assembly files
> > > > >
> > > > > +#
> > > > >
> > > > > +if (@asmbuild) {
> > > > >
> > > > > +    print "\n--> Generating assembly files ... ";
> > > > >
> > > > > +    foreach my $buildstring (@asmbuild) {
> > > > >
> > > > > +        system ("$buildstring");
> > > > >
> > > > > +        copy_license_header ($buildstring);
> > > > >
> > > > > +    }
> > > > >
> > > > > +    print "Done!";
> > > > >
> > > > > +}
> > > > >
> > > > > +
> > > > >
> > > > >  #
> > > > >
> > > > >  # Update OpensslLib.inf with autogenerated file list
> > > > >
> > > > >  #
> > > > >
> > > > >  my @new_inf = ();
> > > > >
> > > > >  my $subbing = 0;
> > > > >
> > > > > -print "\n--> Updating OpensslLib.inf ... ";
> > > > >
> > > > > +print "\n--> Updating $inf_file ... ";
> > > > >
> > > > >  foreach (@inf) {
> > > > >
> > > > > +    if ($_ =~ "DEFINE OPENSSL_FLAGS_CONFIG") {
> > > > >
> > > > > +        push @new_inf, "  DEFINE OPENSSL_FLAGS_CONFIG    =" . $flags
> .
> > > > "\r\n";
> > > > >
> > > > > +        next;
> > > > >
> > > > > +    }
> > > > >
> > > > >      if ( $_ =~ "# Autogenerated files list starts here" ) {
> > > > >
> > > > > -        push @new_inf, $_, @cryptofilelist, @sslfilelist;
> > > > >
> > > > > +        push @new_inf, $_, @asmfilelist, @cryptofilelist, @sslfilelist;
> > > > >
> > > > >          $subbing = 1;
> > > > >
> > > > >          next;
> > > > >
> > > > >      }
> > > > >
> > > > > @@ -216,49 +347,51 @@ rename( $new_inf_file, $inf_file ) ||
> > > > >      die "rename $inf_file";
> > > > >
> > > > >  print "Done!";
> > > > >
> > > > >
> > > > >
> > > > > -#
> > > > >
> > > > > -# Update OpensslLibCrypto.inf with auto-generated file list (no libssl)
> > > > >
> > > > > -#
> > > > >
> > > > > -$inf_file = "OpensslLibCrypto.inf";
> > > > >
> > > > > -
> > > > >
> > > > > -# Read the contents of the inf file
> > > > >
> > > > > -@inf = ();
> > > > >
> > > > > -@new_inf = ();
> > > > >
> > > > > -open( FD, "<" . $inf_file ) ||
> > > > >
> > > > > -    die "Cannot open \"" . $inf_file . "\"!";
> > > > >
> > > > > -@inf = (<FD>);
> > > > >
> > > > > -close(FD) ||
> > > > >
> > > > > -    die "Cannot close \"" . $inf_file . "\"!";
> > > > >
> > > > > +if (!defined $arch) {
> > > > >
> > > > > +    #
> > > > >
> > > > > +    # Update OpensslLibCrypto.inf with auto-generated file list (no
> > > > libssl)
> > > > >
> > > > > +    #
> > > > >
> > > > > +    $inf_file = "OpensslLibCrypto.inf";
> > > > >
> > > > >
> > > > >
> > > > > -$subbing = 0;
> > > > >
> > > > > -print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > >
> > > > > -foreach (@inf) {
> > > > >
> > > > > -    if ( $_ =~ "# Autogenerated files list starts here" ) {
> > > > >
> > > > > -        push @new_inf, $_, @cryptofilelist;
> > > > >
> > > > > -        $subbing = 1;
> > > > >
> > > > > -        next;
> > > > >
> > > > > -    }
> > > > >
> > > > > -    if ( $_ =~ "# Autogenerated files list ends here" ) {
> > > > >
> > > > > -        push @new_inf, $_;
> > > > >
> > > > > -        $subbing = 0;
> > > > >
> > > > > -        next;
> > > > >
> > > > > +    # Read the contents of the inf file
> > > > >
> > > > > +    @inf = ();
> > > > >
> > > > > +    @new_inf = ();
> > > > >
> > > > > +    open( FD, "<" . $inf_file ) ||
> > > > >
> > > > > +        die "Cannot open \"" . $inf_file . "\"!";
> > > > >
> > > > > +    @inf = (<FD>);
> > > > >
> > > > > +    close(FD) ||
> > > > >
> > > > > +        die "Cannot close \"" . $inf_file . "\"!";
> > > > >
> > > > > +
> > > > >
> > > > > +    $subbing = 0;
> > > > >
> > > > > +    print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > >
> > > > > +    foreach (@inf) {
> > > > >
> > > > > +        if ( $_ =~ "# Autogenerated files list starts here" ) {
> > > > >
> > > > > +            push @new_inf, $_, @cryptofilelist;
> > > > >
> > > > > +            $subbing = 1;
> > > > >
> > > > > +            next;
> > > > >
> > > > > +        }
> > > > >
> > > > > +        if ( $_ =~ "# Autogenerated files list ends here" ) {
> > > > >
> > > > > +            push @new_inf, $_;
> > > > >
> > > > > +            $subbing = 0;
> > > > >
> > > > > +            next;
> > > > >
> > > > > +        }
> > > > >
> > > > > +
> > > > >
> > > > > +        push @new_inf, $_
> > > > >
> > > > > +            unless ($subbing);
> > > > >
> > > > >      }
> > > > >
> > > > >
> > > > >
> > > > > -    push @new_inf, $_
> > > > >
> > > > > -        unless ($subbing);
> > > > >
> > > > > +    $new_inf_file = $inf_file . ".new";
> > > > >
> > > > > +    open( FD, ">" . $new_inf_file ) ||
> > > > >
> > > > > +        die $new_inf_file;
> > > > >
> > > > > +    print( FD @new_inf ) ||
> > > > >
> > > > > +        die $new_inf_file;
> > > > >
> > > > > +    close(FD) ||
> > > > >
> > > > > +        die $new_inf_file;
> > > > >
> > > > > +    rename( $new_inf_file, $inf_file ) ||
> > > > >
> > > > > +        die "rename $inf_file";
> > > > >
> > > > > +    print "Done!";
> > > > >
> > > > >  }
> > > > >
> > > > >
> > > > >
> > > > > -$new_inf_file = $inf_file . ".new";
> > > > >
> > > > > -open( FD, ">" . $new_inf_file ) ||
> > > > >
> > > > > -    die $new_inf_file;
> > > > >
> > > > > -print( FD @new_inf ) ||
> > > > >
> > > > > -    die $new_inf_file;
> > > > >
> > > > > -close(FD) ||
> > > > >
> > > > > -    die $new_inf_file;
> > > > >
> > > > > -rename( $new_inf_file, $inf_file ) ||
> > > > >
> > > > > -    die "rename $inf_file";
> > > > >
> > > > > -print "Done!";
> > > > >
> > > > > -
> > > > >
> > > > >  #
> > > > >
> > > > >  # Copy opensslconf.h and dso_conf.h generated from OpenSSL
> > Configuration
> > > > >
> > > > >  #
> > > > >
> > > > > diff --git a/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > new file mode 100644
> > > > > index 0000000000..55eedbf3ba
> > > > > --- /dev/null
> > > > > +++ b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > @@ -0,0 +1,15 @@
> > > > > +## -*- mode: perl; -*-
> > > > >
> > > > > +## UEFI assembly openssl configuration targets.
> > > > >
> > > > > +
> > > > >
> > > > > +my %targets = (
> > > > >
> > > > > +#### UEFI
> > > > >
> > > > > +    "UEFI-x86_64" => {
> > > > >
> > > > > +        perlasm_scheme  => "nasm",
> > > > >
> > > > > +        # inherit_from    => [ "UEFI",  asm("x86_64_asm") ],
> > > > >
> > > > > +        inherit_from    => [ "UEFI" ],
> > > > >
> > > > > +        cpuid_asm_src   => "x86_64cpuid.s",
> > > > >
> > > > > +        aes_asm_src     => "aes_core.c aes_cbc.c vpaes-x86_64.s aesni-
> > > > x86_64.s
> > > > > aesni-sha1-x86_64.s aesni-sha256-x86_64.s aesni-mb-x86_64.s",
> > > > >
> > > > > +        sha1_asm_src    => "sha1-x86_64.s sha256-x86_64.s sha512-
> > > x86_64.s
> > > > > sha1-mb-x86_64.s sha256-mb-x86_64.s",
> > > > >
> > > > > +        modes_asm_src   => "ghash-x86_64.s",
> > > > >
> > > > > +    },
> > > > >
> > > > > +);
> > > > >
> > > > > --
> > > > > 2.28.0.windows.1
> > >
> > >
> > >
> 
> 
> 


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

* Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
  2020-09-16  9:17           ` Guomin Jiang
@ 2020-09-22 15:21             ` Zurcher, Christopher J
  2020-09-23  2:35               ` Yao, Jiewen
  0 siblings, 1 reply; 42+ messages in thread
From: Zurcher, Christopher J @ 2020-09-22 15:21 UTC (permalink / raw)
  To: Jiang, Guomin, devel@edk2.groups.io, Yao, Jiewen
  Cc: Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel

I have unit tested SHA1, SHA512, and AES as well.
I do not have the build environment available to test GCC and LLVM.

--
Christopher Zurcher

> -----Original Message-----
> From: Jiang, Guomin <guomin.jiang@intel.com>
> Sent: Wednesday, September 16, 2020 02:17
> To: devel@edk2.groups.io; Yao, Jiewen <jiewen.yao@intel.com>; Zurcher,
> Christopher J <christopher.j.zurcher@intel.com>
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> instruction support for X64
> 
> Hi Zurcher,
> 
> > [Jiewen] Since you also add other sha (sha1, sha512) and aesni, I think
> those
> > need unit test for them too.
> 
> Can you update the status about it?
> 
> > [Jiewen] I think we need support build with GCC and LLVM, and with X64.
> 
> It is better to support the GCC and LLVM.
> 
> Thanks
> Guomin
> 
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Yao,
> > Jiewen
> > Sent: Tuesday, August 25, 2020 7:36 AM
> > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > devel@edk2.groups.io
> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > instruction support for X64
> >
> > Below:
> >
> > > -----Original Message-----
> > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > Sent: Tuesday, August 25, 2020 5:26 AM
> > > To: devel@edk2.groups.io; Zurcher, Christopher J
> > > <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>
> > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > <xiaoyux.lu@intel.com>;
> > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > instruction support for X64
> > >
> > > 1) I have confirmed that the ApiHooks.c file is still required even
> without
> > the AVX
> > > instructions included. The x86_64 assembly files in OpenSSL set a flag
> called
> > > $win64 and automatically include calls to the RtlVirtualUnwind function
> if
> > NASM
> > > is selected as the assembler scheme.
> > >
> > > https://docs.microsoft.com/en-us/windows/win32/api/winnt/nf-winnt-
> > > rtlvirtualunwind
> > >
> > > I have submitted an issue against OpenSSL since I don't think using the
> > NASM
> > > assembler should force the inclusion of Windows-specific API hooks, but
> > that
> > > change cannot be made in OpenSSL 1.1.1 and we will have to wait for
> > OpenSSL 3
> > > or later to remove the stub function.
> > >
> > > https://github.com/openssl/openssl/issues/12712
> > >
> >
> > [Jiewen] Thanks.
> >
> > > 2) So far I have only built with VS.
> > >
> >
> > [Jiewen] I think we need support build with GCC and LLVM, and with X64.
> >
> >
> > > 3) The X64 SHA256 implementation was successfully exercised across a
> > large
> > > number of devices in a production environment as a verification step in a
> > multi-
> > > GB data transfer scenario.
> > >
> >
> > [Jiewen] Since you also add other sha (sha1, sha512) and aesni, I think
> those
> > need unit test for them too.
> >
> >
> > > Thanks,
> > > Christopher Zurcher
> > >
> > > > -----Original Message-----
> > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> > Zurcher,
> > > > Christopher J
> > > > Sent: Tuesday, August 18, 2020 15:50
> > > > To: Yao, Jiewen <jiewen.yao@intel.com>; devel@edk2.groups.io
> > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > <xiaoyux.lu@intel.com>;
> > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > native
> > > > instruction support for X64
> > > >
> > > > After further review, the ApiHooks.c file may no longer be needed since
> > we
> > > > are no longer including the AVX instructions. I will look over the
> > > > dependencies and send a new patch set if I can eliminate the API hooks
> > file.
> > > >
> > > > Thanks,
> > > > Christopher Zurcher
> > > >
> > > > > -----Original Message-----
> > > > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > > > Sent: Thursday, August 13, 2020 08:04
> > > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > > > > devel@edk2.groups.io
> > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > <xiaoyux.lu@intel.com>;
> > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > Subject: RE: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > instruction
> > > > > support for X64
> > > > >
> > > > > Hi Christopher
> > > > > Thanks.
> > > > >
> > > > > 1) Would you please help me understand more on "ApiHooks.c contains
> > a
> > > stub
> > > > > function for a Windows API call" ?
> > > > > Why we need this?
> > > > > If it is compiler specific in openssl, should we submit patch to
> openssl to
> > > > > exclude this with OPENSSL_SYS_UEFI? That should be a cleaner solution
> > for
> > > > > UEFI.
> > > > >
> > > > > 2) Would you please describe what compiler you have tried? VS? GCC?
> > LLVM?
> > > > >
> > > > > 3) Would you please describe what unit test you have done?
> > > > >
> > > > > Thank you
> > > > > Yao Jiewen
> > > > >
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > > > Sent: Tuesday, August 4, 2020 8:24 AM
> > > > > > To: devel@edk2.groups.io
> > > > > > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> > > > > <jian.j.wang@intel.com>;
> > > > > > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > > > > <ard.biesheuvel@linaro.org>
> > > > > > Subject: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> instruction
> > > > > support
> > > > > > for X64
> > > > > >
> > > > > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> > > > > >
> > > > > > Adding OpensslLibX64.inf and modifying process_files.pl to process
> > this
> > > > > > file and generate the necessary assembly files.
> > > > > > ApiHooks.c contains a stub function for a Windows API call.
> > > > > > uefi-asm.conf contains the limited assembly configurations for
> > OpenSSL.
> > > > > >
> > > > > > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > > > > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > > > > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > > > > > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > Signed-off-by: Christopher J Zurcher
> > <christopher.j.zurcher@intel.com>
> > > > > > ---
> > > > > >  CryptoPkg/Library/OpensslLib/OpensslLib.inf          |   2 +-
> > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf    |   2 +-
> > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibX64.inf       | 656
> > > > > > ++++++++++++++++++++
> > > > > >  CryptoPkg/Library/Include/openssl/opensslconf.h      |   3 -
> > > > > >  CryptoPkg/Library/OpensslLib/ApiHooks.c              |  18 +
> > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c |  34 +
> > > > > >  CryptoPkg/Library/OpensslLib/process_files.pl        | 223 +++++--
> > > > > >  CryptoPkg/Library/OpensslLib/uefi-asm.conf           |  15 +
> > > > > >  8 files changed, 903 insertions(+), 50 deletions(-)
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > index dbbe5386a1..bd62d86936 100644
> > > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > @@ -16,7 +16,7 @@
> > > > > >    VERSION_STRING                 = 1.0
> > > > > >
> > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > >
> > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > >
> > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > >
> > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > DOPENSSL_NO_ASM
> > > > > >
> > > > > >
> > > > > >
> > > > > >  #
> > > > > >
> > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > index 616ccd9f62..2b7324a990 100644
> > > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > @@ -16,7 +16,7 @@
> > > > > >    VERSION_STRING                 = 1.0
> > > > > >
> > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > >
> > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > >
> > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > >
> > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > DOPENSSL_NO_ASM
> > > > > >
> > > > > >
> > > > > >
> > > > > >  #
> > > > > >
> > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > new file mode 100644
> > > > > > index 0000000000..825eea0254
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > @@ -0,0 +1,656 @@
> > > > > > +## @file
> > > > > >
> > > > > > +#  This module provides OpenSSL Library implementation.
> > > > > >
> > > > > > +#
> > > > > >
> > > > > > +#  Copyright (c) 2010 - 2020, Intel Corporation. All rights
> > > > reserved.<BR>
> > > > > >
> > > > > > +#  (C) Copyright 2020 Hewlett Packard Enterprise Development
> > LP<BR>
> > > > > >
> > > > > > +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > >
> > > > > > +#
> > > > > >
> > > > > > +##
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +[Defines]
> > > > > >
> > > > > > +  INF_VERSION                    = 0x00010005
> > > > > >
> > > > > > +  BASE_NAME                      = OpensslLibX64
> > > > > >
> > > > > > +  MODULE_UNI_FILE                = OpensslLib.uni
> > > > > >
> > > > > > +  FILE_GUID                      = 18125E50-0117-4DD0-BE54-
> 4784AD995FEF
> > > > > >
> > > > > > +  MODULE_TYPE                    = BASE
> > > > > >
> > > > > > +  VERSION_STRING                 = 1.0
> > > > > >
> > > > > > +  LIBRARY_CLASS                  = OpensslLib
> > > > > >
> > > > > > +  DEFINE OPENSSL_PATH            = openssl
> > > > > >
> > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > >
> > > > > > +  DEFINE OPENSSL_FLAGS_CONFIG    = -DOPENSSL_CPUID_OBJ -
> > > DSHA1_ASM -
> > > > > > DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -
> > > DGHASH_ASM
> > > > > >
> > > > > > +  CONSTRUCTOR                    = OpensslLibConstructor
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +#
> > > > > >
> > > > > > +#  VALID_ARCHITECTURES           = X64
> > > > > >
> > > > > > +#
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +[Sources]
> > > > > >
> > > > > > +  OpensslLibConstructor.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/e_os.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ms/uplink.h
> > > > > >
> > > > > > +# Autogenerated files list starts here
> > > > > >
> > > > > > +  X64/crypto/aes/aesni-mb-x86_64.nasm
> > > > > >
> > > > > > +  X64/crypto/aes/aesni-sha1-x86_64.nasm
> > > > > >
> > > > > > +  X64/crypto/aes/aesni-sha256-x86_64.nasm
> > > > > >
> > > > > > +  X64/crypto/aes/aesni-x86_64.nasm
> > > > > >
> > > > > > +  X64/crypto/aes/vpaes-x86_64.nasm
> > > > > >
> > > > > > +  X64/crypto/modes/ghash-x86_64.nasm
> > > > > >
> > > > > > +  X64/crypto/sha/sha1-mb-x86_64.nasm
> > > > > >
> > > > > > +  X64/crypto/sha/sha1-x86_64.nasm
> > > > > >
> > > > > > +  X64/crypto/sha/sha256-mb-x86_64.nasm
> > > > > >
> > > > > > +  X64/crypto/sha/sha256-x86_64.nasm
> > > > > >
> > > > > > +  X64/crypto/sha/sha512-x86_64.nasm
> > > > > >
> > > > > > +  X64/crypto/x86_64cpuid.nasm
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_core.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ige.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_misc.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/aria/aria.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_digest.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_dup.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_gentm.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_int.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_object.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_octet.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_print.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_sign.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strex.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strnid.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_time.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_type.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utctm.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utf8.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_verify.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_par.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mime.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_moid.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_pack.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_int.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_string.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/n_pkey.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/nsseq.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_bitst.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_pkey.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_spki.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_new.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_algor.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_bignum.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_info.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_int64.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_long.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_pkey.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_sig.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_spki.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_val.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/async/async.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/async/async_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/async/async_wait.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_addr.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_dump.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock2.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_buff.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_nbio.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_null.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_cb.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_meth.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_acpt.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_bio.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_conn.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_dgram.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_fd.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_file.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_log.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_mem.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_null.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_sock.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_add.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_asm.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_blind.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_const.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_ctx.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_depr.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_dh.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_div.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp2.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gcd.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_intern.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_kron.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mod.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mont.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mpi.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mul.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_nist.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_print.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_rand.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_recp.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_shift.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqr.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_srp.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_word.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_x931p.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buf_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buffer.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cmac.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/comp/c_zlib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_api.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mall.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mod.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_sap.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_ssl.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/cpt_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/cryptlib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ctype.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/cversion.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_check.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_depr.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_gen.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_kdf.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_key.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_meth.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_prn.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dl.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_vms.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_win32.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ebcdic.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/err/err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/err/err_prn.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_enc.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_md.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_ok.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_allc.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_alld.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/digest.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aria.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_bf.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_camellia.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_cast.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des3.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_idea.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_null.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_old.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc2.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc5.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_seed.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_sm4.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/encode.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_cnf.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_enc.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_key.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pbe.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pkey.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md2.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md4.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_mdc2.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_null.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_ripemd.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha1.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha3.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sigver.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_wp.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/names.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_dec.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_enc.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_open.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_seal.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_sign.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_verify.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ex_data.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/getenv.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/init.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/kdf/hkdf.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/kdf/kdf_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/kdf/scrypt.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lh_stats.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_one.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/mem.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/mem_dbg.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/mem_sec.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/modes/cbc128.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/modes/ccm128.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/modes/cfb128.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/modes/ctr128.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/modes/cts128.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/modes/gcm128.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/modes/ocb128.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/modes/ofb128.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/modes/wrap128.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/modes/xts128.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/o_dir.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/o_fips.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/o_fopen.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/o_init.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/o_str.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/o_time.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/objects/o_names.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_all.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_info.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_oth.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pk8.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pkey.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_sign.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_x509.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_xaux.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pem/pvkfmt.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_egd.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_unix.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_vms.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_win.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_none.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/sha/keccak1600.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1_one.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha256.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha512.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/sm4/sm4.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/stack/stack.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/threads_none.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/threads_pthread.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/threads_win.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/txt_db/txt_db.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_null.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_util.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/uid.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_dir.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_file.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_crl.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_req.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_x509.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_att.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_cmp.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_d2.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_def.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_ext.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_lu.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_meth.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_obj.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_r2x.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_req.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_set.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_trs.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_txt.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_v3.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vfy.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vpm.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509cset.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509name.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509rset.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509spki.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509type.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_all.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_attrib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_crl.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_exten.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_name.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_pubkey.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_req.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509a.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_info.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_int.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/arm_arch.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/mips_arch.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ppc_arch.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/s390x_arch.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/sparc_arch.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/vms_rms.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/charmap.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/standard_methods.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/async/async_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/modes/modes_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/store/store_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/bio_ssl.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/d1_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/d1_msg.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/d1_srtp.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/methods.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/packet.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/pqueue.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/s3_cbc.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/s3_enc.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/s3_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/s3_msg.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/ssl_asn1.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/ssl_ciph.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/ssl_conf.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/ssl_err.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/ssl_init.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/ssl_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/ssl_mcnf.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/ssl_rsa.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/ssl_sess.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/ssl_stat.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/ssl_txt.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/ssl_utst.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_cust.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_clnt.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_dtls.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_srvr.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/t1_enc.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/t1_lib.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/t1_trce.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/tls13_enc.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/tls_srp.c
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/packet_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert_table.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/ssl_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/record/record.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/record/record_local.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.h
> > > > > >
> > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_local.h
> > > > > >
> > > > > > +# Autogenerated files list ends here
> > > > > >
> > > > > > +  buildinf.h
> > > > > >
> > > > > > +  rand_pool_noise.h
> > > > > >
> > > > > > +  ossl_store.c
> > > > > >
> > > > > > +  rand_pool.c
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +[Sources.X64]
> > > > > >
> > > > > > +  rand_pool_noise_tsc.c
> > > > > >
> > > > > > +  ApiHooks.c
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +[Packages]
> > > > > >
> > > > > > +  MdePkg/MdePkg.dec
> > > > > >
> > > > > > +  CryptoPkg/CryptoPkg.dec
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +[LibraryClasses]
> > > > > >
> > > > > > +  BaseLib
> > > > > >
> > > > > > +  DebugLib
> > > > > >
> > > > > > +  TimerLib
> > > > > >
> > > > > > +  PrintLib
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +[BuildOptions]
> > > > > >
> > > > > > +  #
> > > > > >
> > > > > > +  # Disables the following Visual Studio compiler warnings brought
> by
> > > > > openssl
> > > > > > source,
> > > > > >
> > > > > > +  # so we do not break the build with /WX option:
> > > > > >
> > > > > > +  #   C4090: 'function' : different 'const' qualifiers
> > > > > >
> > > > > > +  #   C4132: 'object' : const object should be initialized
> (tls13_enc.c)
> > > > > >
> > > > > > +  #   C4210: nonstandard extension used: function given file scope
> > > > > >
> > > > > > +  #   C4244: conversion from type1 to type2, possible loss of data
> > > > > >
> > > > > > +  #   C4245: conversion from type1 to type2, signed/unsigned
> > mismatch
> > > > > >
> > > > > > +  #   C4267: conversion from size_t to type, possible loss of data
> > > > > >
> > > > > > +  #   C4306: 'identifier' : conversion from 'type1' to 'type2' of
> > > > greater
> > > > > size
> > > > > >
> > > > > > +  #   C4310: cast truncates constant value
> > > > > >
> > > > > > +  #   C4389: 'operator' : signed/unsigned mismatch (xxxx)
> > > > > >
> > > > > > +  #   C4700: uninitialized local variable 'name' used.
> (conf_sap.c(71))
> > > > > >
> > > > > > +  #   C4702: unreachable code
> > > > > >
> > > > > > +  #   C4706: assignment within conditional expression
> > > > > >
> > > > > > +  #   C4819: The file contains a character that cannot be
> represented
> > in
> > > > > the
> > > > > > current code page
> > > > > >
> > > > > > +  #
> > > > > >
> > > > > > +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER
> > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132
> > > /wd4210
> > > > > > /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700 /wd4389
> > /wd4702
> > > > > > /wd4706 /wd4819
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -
> > > U__ICC
> > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +  #
> > > > > >
> > > > > > +  # Suppress the following build warnings in openssl so we don't
> > break
> > > > the
> > > > > build
> > > > > > with -Werror
> > > > > >
> > > > > > +  #   -Werror=maybe-uninitialized: there exist some other paths
> for
> > > > which
> > > > > the
> > > > > > variable is not initialized.
> > > > > >
> > > > > > +  #   -Werror=format: Check calls to printf and scanf, etc., to
> make
> > > > sure
> > > > > that the
> > > > > > arguments supplied have
> > > > > >
> > > > > > +  #                   types appropriate to the format string
> specified.
> > > > > >
> > > > > > +  #   -Werror=unused-but-set-variable: Warn whenever a local
> > variable is
> > > > > > assigned to, but otherwise unused (aside from its declaration).
> > > > > >
> > > > > > +  #
> > > > > >
> > > > > > +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64
> > $(OPENSSL_FLAGS)
> > > > > > $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-
> > > > > > error=format -Wno-format -Wno-error=unused-but-set-variable -
> > > > > > DNO_MSABI_VA_FUNCS
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +  # suppress the following warnings in openssl so we don't break
> the
> > > > build
> > > > > with
> > > > > > warnings-as-errors:
> > > > > >
> > > > > > +  # 1295: Deprecated declaration <entity> - give arg types
> > > > > >
> > > > > > +  #  550: <entity> was set but never used
> > > > > >
> > > > > > +  # 1293: assignment in condition
> > > > > >
> > > > > > +  #  111: statement is unreachable (invariably "break;" after
> "return
> > > > X;"
> > > > > in case
> > > > > > statement)
> > > > > >
> > > > > > +  #   68: integer conversion resulted in a change of sign ("if
> (Status
> > > > ==
> > > > > -1)")
> > > > > >
> > > > > > +  #  177: <entity> was declared but never referenced
> > > > > >
> > > > > > +  #  223: function <entity> declared implicitly
> > > > > >
> > > > > > +  #  144: a value of type <type> cannot be used to initialize an
> entity
> > > > of
> > > > > type
> > > > > > <type>
> > > > > >
> > > > > > +  #  513: a value of type <type> cannot be assigned to an entity
> of
> > type
> > > > > <type>
> > > > > >
> > > > > > +  #  188: enumerated type mixed with another type (i.e. passing an
> > > > integer
> > > > > as an
> > > > > > enum without a cast)
> > > > > >
> > > > > > +  # 1296: Extended constant initialiser used
> > > > > >
> > > > > > +  #  128: loop is not reachable - may be emitted inappropriately
> if
> > code
> > > > > follows
> > > > > > a conditional return
> > > > > >
> > > > > > +  #       from the function that evaluates to true at compile time
> > > > > >
> > > > > > +  #  546: transfer of control bypasses initialization - may be
> emitted
> > > > > > inappropriately if the uninitialized
> > > > > >
> > > > > > +  #       variable is never referenced after the jump
> > > > > >
> > > > > > +  #    1: ignore "#1-D: last line of file ends without a newline"
> > > > > >
> > > > > > +  # 3017: <entity> may be used before being set (NOTE: This was
> > fixed in
> > > > > > OpenSSL 1.1 HEAD with
> > > > > >
> > > > > > +  #       commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and
> > can
> > > be
> > > > > > dropped then.)
> > > > > >
> > > > > > +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -
> > U_WIN64
> > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-
> > > > > > error=uninitialized
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > index 3a2544ea5c..e8f73c4d10 100644
> > > > > > --- a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > +++ b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > @@ -112,9 +112,6 @@ extern "C" {
> > > > > >  #ifndef OPENSSL_NO_ASAN
> > > > > >
> > > > > >  # define OPENSSL_NO_ASAN
> > > > > >
> > > > > >  #endif
> > > > > >
> > > > > > -#ifndef OPENSSL_NO_ASM
> > > > > >
> > > > > > -# define OPENSSL_NO_ASM
> > > > > >
> > > > > > -#endif
> > > > > >
> > > > > >  #ifndef OPENSSL_NO_ASYNC
> > > > > >
> > > > > >  # define OPENSSL_NO_ASYNC
> > > > > >
> > > > > >  #endif
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > new file mode 100644
> > > > > > index 0000000000..58cff16838
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > @@ -0,0 +1,18 @@
> > > > > > +/** @file
> > > > > >
> > > > > > +  OpenSSL Library API hooks.
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
> > > > > >
> > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +**/
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +#include <Uefi.h>
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +VOID *
> > > > > >
> > > > > > +__imp_RtlVirtualUnwind (
> > > > > >
> > > > > > +  VOID *    Args
> > > > > >
> > > > > > +  )
> > > > > >
> > > > > > +{
> > > > > >
> > > > > > +  return NULL;
> > > > > >
> > > > > > +}
> > > > > >
> > > > > > +
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > new file mode 100644
> > > > > > index 0000000000..ef20d2b84e
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > @@ -0,0 +1,34 @@
> > > > > > +/** @file
> > > > > >
> > > > > > +  Constructor to initialize CPUID data for OpenSSL assembly
> > operations.
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
> > > > > >
> > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +**/
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +#include <Uefi.h>
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +extern void OPENSSL_cpuid_setup (void);
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +/**
> > > > > >
> > > > > > +  Constructor routine for OpensslLib.
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +  The constructor calls an internal OpenSSL function which fetches
> a
> > > > local
> > > > > copy
> > > > > >
> > > > > > +  of the hardware capability flags, used to enable native crypto
> > > > > instructions.
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +  @param  None
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +  @retval EFI_SUCCESS         The construction succeeded.
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +**/
> > > > > >
> > > > > > +EFI_STATUS
> > > > > >
> > > > > > +EFIAPI
> > > > > >
> > > > > > +OpensslLibConstructor (
> > > > > >
> > > > > > +  VOID
> > > > > >
> > > > > > +  )
> > > > > >
> > > > > > +{
> > > > > >
> > > > > > +  OPENSSL_cpuid_setup ();
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +  return EFI_SUCCESS;
> > > > > >
> > > > > > +}
> > > > > >
> > > > > > +
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > index 57ce195394..472f59bc8e 100755
> > > > > > --- a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > @@ -9,9 +9,63 @@
> > > > > >  # do not need to do this, since the results are stored in the EDK2
> > > > > >
> > > > > >  # git repository for them.
> > > > > >
> > > > > >  #
> > > > > >
> > > > > > +# Due to the script wrapping required to process the OpenSSL
> > > > > >
> > > > > > +# configuration data, each native architecture must be processed
> > > > > >
> > > > > > +# individually by the maintainer (in addition to the standard
> version):
> > > > > >
> > > > > > +#   ./process_files.pl
> > > > > >
> > > > > > +#   ./process_files.pl X64
> > > > > >
> > > > > > +#   ./process_files.pl [Arch]
> > > > > >
> > > > > > +
> > > > > >
> > > > > >  use strict;
> > > > > >
> > > > > >  use Cwd;
> > > > > >
> > > > > >  use File::Copy;
> > > > > >
> > > > > > +use File::Basename;
> > > > > >
> > > > > > +use File::Path qw(make_path remove_tree);
> > > > > >
> > > > > > +use Text::Tabs;
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +#
> > > > > >
> > > > > > +# OpenSSL perlasm generator script does not transfer the copyright
> > > > header
> > > > > >
> > > > > > +#
> > > > > >
> > > > > > +sub copy_license_header
> > > > > >
> > > > > > +{
> > > > > >
> > > > > > +    my @args = split / /, shift;    #Separate args by spaces
> > > > > >
> > > > > > +    my $source = $args[1];          #Source file is second (after
> > > > "perl")
> > > > > >
> > > > > > +    my $target = pop @args;         #Target file is always last
> > > > > >
> > > > > > +    chop ($target);                 #Remove newline char
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +    my $temp_file_name = "license.tmp";
> > > > > >
> > > > > > +    open (my $source_file, "<" . $source) || die $source;
> > > > > >
> > > > > > +    open (my $target_file, "<" . $target) || die $target;
> > > > > >
> > > > > > +    open (my $temp_file, ">" . $temp_file_name) || die
> > $temp_file_name;
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +    #Add "generated file" warning
> > > > > >
> > > > > > +    $source =~ s/^..//;             #Remove leading "./"
> > > > > >
> > > > > > +    print ($temp_file "; WARNING: do not edit!\r\n");
> > > > > >
> > > > > > +    print ($temp_file "; Generated from $source\r\n");
> > > > > >
> > > > > > +    print ($temp_file ";\r\n");
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +    #Copy source file header to temp file
> > > > > >
> > > > > > +    while (my $line = <$source_file>) {
> > > > > >
> > > > > > +        next if ($line =~ /#!/);    #Ignore shebang line
> > > > > >
> > > > > > +        $line =~ s/#/;/;            #Fix comment character for
> assembly
> > > > > >
> > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace,
> fixup
> > > > line
> > > > > endings
> > > > > >
> > > > > > +        print ($temp_file $line);
> > > > > >
> > > > > > +        last if ($line =~ /http/);  #Last line of copyright header
> > > > > contains a web link
> > > > > >
> > > > > > +    }
> > > > > >
> > > > > > +    print ($temp_file "\r\n");
> > > > > >
> > > > > > +    #Retrieve generated assembly contents
> > > > > >
> > > > > > +    while (my $line = <$target_file>) {
> > > > > >
> > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace,
> fixup
> > > > line
> > > > > endings
> > > > > >
> > > > > > +        print ($temp_file expand ($line));  #expand() replaces
> tabs with
> > > > > spaces
> > > > > >
> > > > > > +    }
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +    close ($source_file);
> > > > > >
> > > > > > +    close ($target_file);
> > > > > >
> > > > > > +    close ($temp_file);
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +    move ($temp_file_name, $target) ||
> > > > > >
> > > > > > +        die "Cannot replace \"" . $target . "\"!";
> > > > > >
> > > > > > +}
> > > > > >
> > > > > >
> > > > > >
> > > > > >  #
> > > > > >
> > > > > >  # Find the openssl directory name for use lib. We have to do this
> > > > > >
> > > > > > @@ -21,10 +75,41 @@ use File::Copy;
> > > > > >  #
> > > > > >
> > > > > >  my $inf_file;
> > > > > >
> > > > > >  my $OPENSSL_PATH;
> > > > > >
> > > > > > +my $uefi_config;
> > > > > >
> > > > > > +my $extension;
> > > > > >
> > > > > > +my $arch;
> > > > > >
> > > > > >  my @inf;
> > > > > >
> > > > > >
> > > > > >
> > > > > >  BEGIN {
> > > > > >
> > > > > >      $inf_file = "OpensslLib.inf";
> > > > > >
> > > > > > +    $uefi_config = "UEFI";
> > > > > >
> > > > > > +    $arch = shift;
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +    if (defined $arch) {
> > > > > >
> > > > > > +        if (uc ($arch) eq "X64") {
> > > > > >
> > > > > > +            $arch = "X64";
> > > > > >
> > > > > > +            $inf_file = "OpensslLibX64.inf";
> > > > > >
> > > > > > +            $uefi_config = "UEFI-x86_64";
> > > > > >
> > > > > > +            $extension = "nasm";
> > > > > >
> > > > > > +        } else {
> > > > > >
> > > > > > +            die "Unsupported architecture \"" . $arch . "\"!";
> > > > > >
> > > > > > +        }
> > > > > >
> > > > > > +        if ($extension eq "nasm") {
> > > > > >
> > > > > > +            if (`nasm -v 2>&1`) {
> > > > > >
> > > > > > +                #Presence of nasm executable will trigger
> inclusion of
> > > > AVX
> > > > > instructions
> > > > > >
> > > > > > +                die "\nCannot run assembly generators with NASM in
> > > > > path!\n\n";
> > > > > >
> > > > > > +            }
> > > > > >
> > > > > > +        }
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        # Prepare assembly folder
> > > > > >
> > > > > > +        if (-d $arch) {
> > > > > >
> > > > > > +            remove_tree ($arch, {safe => 1}) ||
> > > > > >
> > > > > > +                die "Cannot clean assembly folder \"" . $arch .
> "\"!";
> > > > > >
> > > > > > +        } else {
> > > > > >
> > > > > > +            mkdir $arch ||
> > > > > >
> > > > > > +                die "Cannot create assembly folder \"" . $arch .
> "\"!";
> > > > > >
> > > > > > +        }
> > > > > >
> > > > > > +    }
> > > > > >
> > > > > >
> > > > > >
> > > > > >      # Read the contents of the inf file
> > > > > >
> > > > > >      open( FD, "<" . $inf_file ) ||
> > > > > >
> > > > > > @@ -47,9 +132,9 @@ BEGIN {
> > > > > >              # Configure UEFI
> > > > > >
> > > > > >              system(
> > > > > >
> > > > > >                  "./Configure",
> > > > > >
> > > > > > -                "UEFI",
> > > > > >
> > > > > > +                "--config=../uefi-asm.conf",
> > > > > >
> > > > > > +                "$uefi_config",
> > > > > >
> > > > > >                  "no-afalgeng",
> > > > > >
> > > > > > -                "no-asm",
> > > > > >
> > > > > >                  "no-async",
> > > > > >
> > > > > >                  "no-autoerrinit",
> > > > > >
> > > > > >                  "no-autoload-config",
> > > > > >
> > > > > > @@ -129,23 +214,53 @@ BEGIN {
> > > > > >  # Retrieve file lists from OpenSSL configdata
> > > > > >
> > > > > >  #
> > > > > >
> > > > > >  use configdata qw/%unified_info/;
> > > > > >
> > > > > > +use configdata qw/%config/;
> > > > > >
> > > > > > +use configdata qw/%target/;
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +#
> > > > > >
> > > > > > +# Collect build flags from configdata
> > > > > >
> > > > > > +#
> > > > > >
> > > > > > +my $flags = "";
> > > > > >
> > > > > > +foreach my $f (@{$config{lib_defines}}) {
> > > > > >
> > > > > > +    $flags .= " -D$f";
> > > > > >
> > > > > > +}
> > > > > >
> > > > > >
> > > > > >
> > > > > >  my @cryptofilelist = ();
> > > > > >
> > > > > >  my @sslfilelist = ();
> > > > > >
> > > > > > +my @asmfilelist = ();
> > > > > >
> > > > > > +my @asmbuild = ();
> > > > > >
> > > > > >  foreach my $product ((@{$unified_info{libraries}},
> > > > > >
> > > > > >                        @{$unified_info{engines}})) {
> > > > > >
> > > > > >      foreach my $o (@{$unified_info{sources}->{$product}}) {
> > > > > >
> > > > > >          foreach my $s (@{$unified_info{sources}->{$o}}) {
> > > > > >
> > > > > > -            next if ($unified_info{generate}->{$s});
> > > > > >
> > > > > > -            next if $s =~ "crypto/bio/b_print.c";
> > > > > >
> > > > > > -
> > > > > >
> > > > > >              # No need to add unused files in UEFI.
> > > > > >
> > > > > >              # So it can reduce porting time, compile time, library
> size.
> > > > > >
> > > > > > +            next if $s =~ "crypto/bio/b_print.c";
> > > > > >
> > > > > >              next if $s =~ "crypto/rand/randfile.c";
> > > > > >
> > > > > >              next if $s =~ "crypto/store/";
> > > > > >
> > > > > >              next if $s =~ "crypto/err/err_all.c";
> > > > > >
> > > > > >              next if $s =~ "crypto/aes/aes_ecb.c";
> > > > > >
> > > > > >
> > > > > >
> > > > > > +            if ($unified_info{generate}->{$s}) {
> > > > > >
> > > > > > +                if (defined $arch) {
> > > > > >
> > > > > > +                    my $buildstring = "perl";
> > > > > >
> > > > > > +                    foreach my $arg (@{$unified_info{generate}-
> >{$s}}) {
> > > > > >
> > > > > > +                        if ($arg =~ ".pl") {
> > > > > >
> > > > > > +                            $buildstring .= " ./openssl/$arg";
> > > > > >
> > > > > > +                        } elsif ($arg =~ "PERLASM_SCHEME") {
> > > > > >
> > > > > > +                            $buildstring .= "
> $target{perlasm_scheme}";
> > > > > >
> > > > > > +                        } elsif ($arg =~ "LIB_CFLAGS") {
> > > > > >
> > > > > > +                            $buildstring .= "$flags";
> > > > > >
> > > > > > +                        }
> > > > > >
> > > > > > +                    }
> > > > > >
> > > > > > +                    ($s, my $path, undef) = fileparse($s,
> qr/\.[^.]*/);
> > > > > >
> > > > > > +                    $buildstring .= " ./$arch/$path$s.$extension";
> > > > > >
> > > > > > +                    make_path ("./$arch/$path");
> > > > > >
> > > > > > +                    push @asmbuild, "$buildstring\n";
> > > > > >
> > > > > > +                    push @asmfilelist, "
> $arch/$path$s.$extension\r\n";
> > > > > >
> > > > > > +                }
> > > > > >
> > > > > > +                next;
> > > > > >
> > > > > > +            }
> > > > > >
> > > > > >              if ($product =~ "libssl") {
> > > > > >
> > > > > >                  push @sslfilelist, '  $(OPENSSL_PATH)/' . $s .
> "\r\n";
> > > > > >
> > > > > >                  next;
> > > > > >
> > > > > > @@ -183,15 +298,31 @@ foreach (@headers){
> > > > > >  }
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > +#
> > > > > >
> > > > > > +# Generate assembly files
> > > > > >
> > > > > > +#
> > > > > >
> > > > > > +if (@asmbuild) {
> > > > > >
> > > > > > +    print "\n--> Generating assembly files ... ";
> > > > > >
> > > > > > +    foreach my $buildstring (@asmbuild) {
> > > > > >
> > > > > > +        system ("$buildstring");
> > > > > >
> > > > > > +        copy_license_header ($buildstring);
> > > > > >
> > > > > > +    }
> > > > > >
> > > > > > +    print "Done!";
> > > > > >
> > > > > > +}
> > > > > >
> > > > > > +
> > > > > >
> > > > > >  #
> > > > > >
> > > > > >  # Update OpensslLib.inf with autogenerated file list
> > > > > >
> > > > > >  #
> > > > > >
> > > > > >  my @new_inf = ();
> > > > > >
> > > > > >  my $subbing = 0;
> > > > > >
> > > > > > -print "\n--> Updating OpensslLib.inf ... ";
> > > > > >
> > > > > > +print "\n--> Updating $inf_file ... ";
> > > > > >
> > > > > >  foreach (@inf) {
> > > > > >
> > > > > > +    if ($_ =~ "DEFINE OPENSSL_FLAGS_CONFIG") {
> > > > > >
> > > > > > +        push @new_inf, "  DEFINE OPENSSL_FLAGS_CONFIG    =" .
> $flags
> > .
> > > > > "\r\n";
> > > > > >
> > > > > > +        next;
> > > > > >
> > > > > > +    }
> > > > > >
> > > > > >      if ( $_ =~ "# Autogenerated files list starts here" ) {
> > > > > >
> > > > > > -        push @new_inf, $_, @cryptofilelist, @sslfilelist;
> > > > > >
> > > > > > +        push @new_inf, $_, @asmfilelist, @cryptofilelist,
> @sslfilelist;
> > > > > >
> > > > > >          $subbing = 1;
> > > > > >
> > > > > >          next;
> > > > > >
> > > > > >      }
> > > > > >
> > > > > > @@ -216,49 +347,51 @@ rename( $new_inf_file, $inf_file ) ||
> > > > > >      die "rename $inf_file";
> > > > > >
> > > > > >  print "Done!";
> > > > > >
> > > > > >
> > > > > >
> > > > > > -#
> > > > > >
> > > > > > -# Update OpensslLibCrypto.inf with auto-generated file list (no
> libssl)
> > > > > >
> > > > > > -#
> > > > > >
> > > > > > -$inf_file = "OpensslLibCrypto.inf";
> > > > > >
> > > > > > -
> > > > > >
> > > > > > -# Read the contents of the inf file
> > > > > >
> > > > > > -@inf = ();
> > > > > >
> > > > > > -@new_inf = ();
> > > > > >
> > > > > > -open( FD, "<" . $inf_file ) ||
> > > > > >
> > > > > > -    die "Cannot open \"" . $inf_file . "\"!";
> > > > > >
> > > > > > -@inf = (<FD>);
> > > > > >
> > > > > > -close(FD) ||
> > > > > >
> > > > > > -    die "Cannot close \"" . $inf_file . "\"!";
> > > > > >
> > > > > > +if (!defined $arch) {
> > > > > >
> > > > > > +    #
> > > > > >
> > > > > > +    # Update OpensslLibCrypto.inf with auto-generated file list
> (no
> > > > > libssl)
> > > > > >
> > > > > > +    #
> > > > > >
> > > > > > +    $inf_file = "OpensslLibCrypto.inf";
> > > > > >
> > > > > >
> > > > > >
> > > > > > -$subbing = 0;
> > > > > >
> > > > > > -print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > > >
> > > > > > -foreach (@inf) {
> > > > > >
> > > > > > -    if ( $_ =~ "# Autogenerated files list starts here" ) {
> > > > > >
> > > > > > -        push @new_inf, $_, @cryptofilelist;
> > > > > >
> > > > > > -        $subbing = 1;
> > > > > >
> > > > > > -        next;
> > > > > >
> > > > > > -    }
> > > > > >
> > > > > > -    if ( $_ =~ "# Autogenerated files list ends here" ) {
> > > > > >
> > > > > > -        push @new_inf, $_;
> > > > > >
> > > > > > -        $subbing = 0;
> > > > > >
> > > > > > -        next;
> > > > > >
> > > > > > +    # Read the contents of the inf file
> > > > > >
> > > > > > +    @inf = ();
> > > > > >
> > > > > > +    @new_inf = ();
> > > > > >
> > > > > > +    open( FD, "<" . $inf_file ) ||
> > > > > >
> > > > > > +        die "Cannot open \"" . $inf_file . "\"!";
> > > > > >
> > > > > > +    @inf = (<FD>);
> > > > > >
> > > > > > +    close(FD) ||
> > > > > >
> > > > > > +        die "Cannot close \"" . $inf_file . "\"!";
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +    $subbing = 0;
> > > > > >
> > > > > > +    print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > > >
> > > > > > +    foreach (@inf) {
> > > > > >
> > > > > > +        if ( $_ =~ "# Autogenerated files list starts here" ) {
> > > > > >
> > > > > > +            push @new_inf, $_, @cryptofilelist;
> > > > > >
> > > > > > +            $subbing = 1;
> > > > > >
> > > > > > +            next;
> > > > > >
> > > > > > +        }
> > > > > >
> > > > > > +        if ( $_ =~ "# Autogenerated files list ends here" ) {
> > > > > >
> > > > > > +            push @new_inf, $_;
> > > > > >
> > > > > > +            $subbing = 0;
> > > > > >
> > > > > > +            next;
> > > > > >
> > > > > > +        }
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +        push @new_inf, $_
> > > > > >
> > > > > > +            unless ($subbing);
> > > > > >
> > > > > >      }
> > > > > >
> > > > > >
> > > > > >
> > > > > > -    push @new_inf, $_
> > > > > >
> > > > > > -        unless ($subbing);
> > > > > >
> > > > > > +    $new_inf_file = $inf_file . ".new";
> > > > > >
> > > > > > +    open( FD, ">" . $new_inf_file ) ||
> > > > > >
> > > > > > +        die $new_inf_file;
> > > > > >
> > > > > > +    print( FD @new_inf ) ||
> > > > > >
> > > > > > +        die $new_inf_file;
> > > > > >
> > > > > > +    close(FD) ||
> > > > > >
> > > > > > +        die $new_inf_file;
> > > > > >
> > > > > > +    rename( $new_inf_file, $inf_file ) ||
> > > > > >
> > > > > > +        die "rename $inf_file";
> > > > > >
> > > > > > +    print "Done!";
> > > > > >
> > > > > >  }
> > > > > >
> > > > > >
> > > > > >
> > > > > > -$new_inf_file = $inf_file . ".new";
> > > > > >
> > > > > > -open( FD, ">" . $new_inf_file ) ||
> > > > > >
> > > > > > -    die $new_inf_file;
> > > > > >
> > > > > > -print( FD @new_inf ) ||
> > > > > >
> > > > > > -    die $new_inf_file;
> > > > > >
> > > > > > -close(FD) ||
> > > > > >
> > > > > > -    die $new_inf_file;
> > > > > >
> > > > > > -rename( $new_inf_file, $inf_file ) ||
> > > > > >
> > > > > > -    die "rename $inf_file";
> > > > > >
> > > > > > -print "Done!";
> > > > > >
> > > > > > -
> > > > > >
> > > > > >  #
> > > > > >
> > > > > >  # Copy opensslconf.h and dso_conf.h generated from OpenSSL
> > > Configuration
> > > > > >
> > > > > >  #
> > > > > >
> > > > > > diff --git a/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > new file mode 100644
> > > > > > index 0000000000..55eedbf3ba
> > > > > > --- /dev/null
> > > > > > +++ b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > @@ -0,0 +1,15 @@
> > > > > > +## -*- mode: perl; -*-
> > > > > >
> > > > > > +## UEFI assembly openssl configuration targets.
> > > > > >
> > > > > > +
> > > > > >
> > > > > > +my %targets = (
> > > > > >
> > > > > > +#### UEFI
> > > > > >
> > > > > > +    "UEFI-x86_64" => {
> > > > > >
> > > > > > +        perlasm_scheme  => "nasm",
> > > > > >
> > > > > > +        # inherit_from    => [ "UEFI",  asm("x86_64_asm") ],
> > > > > >
> > > > > > +        inherit_from    => [ "UEFI" ],
> > > > > >
> > > > > > +        cpuid_asm_src   => "x86_64cpuid.s",
> > > > > >
> > > > > > +        aes_asm_src     => "aes_core.c aes_cbc.c vpaes-x86_64.s
> aesni-
> > > > > x86_64.s
> > > > > > aesni-sha1-x86_64.s aesni-sha256-x86_64.s aesni-mb-x86_64.s",
> > > > > >
> > > > > > +        sha1_asm_src    => "sha1-x86_64.s sha256-x86_64.s sha512-
> > > > x86_64.s
> > > > > > sha1-mb-x86_64.s sha256-mb-x86_64.s",
> > > > > >
> > > > > > +        modes_asm_src   => "ghash-x86_64.s",
> > > > > >
> > > > > > +    },
> > > > > >
> > > > > > +);
> > > > > >
> > > > > > --
> > > > > > 2.28.0.windows.1
> > > >
> > > >
> > > >
> >
> >
> > 


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

* Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
  2020-09-22 15:21             ` Zurcher, Christopher J
@ 2020-09-23  2:35               ` Yao, Jiewen
  2020-09-25  0:28                 ` Zurcher, Christopher J
  2020-09-29 21:08                 ` Zurcher, Christopher J
  0 siblings, 2 replies; 42+ messages in thread
From: Yao, Jiewen @ 2020-09-23  2:35 UTC (permalink / raw)
  To: Zurcher, Christopher J, Jiang, Guomin, devel@edk2.groups.io
  Cc: Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel

For GCC, please refer to https://github.com/tianocore/tianocore.github.io/wiki/Using-EDK-II-with-Native-GCC

For LLVM, please refer to https://github.com/tianocore/tianocore.github.io/wiki/CLANG9-Tools-Chain

Thank you
Yao Jiewen

> -----Original Message-----
> From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> Sent: Tuesday, September 22, 2020 11:22 PM
> To: Jiang, Guomin <guomin.jiang@intel.com>; devel@edk2.groups.io; Yao,
> Jiewen <jiewen.yao@intel.com>
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> instruction support for X64
> 
> I have unit tested SHA1, SHA512, and AES as well.
> I do not have the build environment available to test GCC and LLVM.
> 
> --
> Christopher Zurcher
> 
> > -----Original Message-----
> > From: Jiang, Guomin <guomin.jiang@intel.com>
> > Sent: Wednesday, September 16, 2020 02:17
> > To: devel@edk2.groups.io; Yao, Jiewen <jiewen.yao@intel.com>; Zurcher,
> > Christopher J <christopher.j.zurcher@intel.com>
> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>;
> > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > instruction support for X64
> >
> > Hi Zurcher,
> >
> > > [Jiewen] Since you also add other sha (sha1, sha512) and aesni, I think
> > those
> > > need unit test for them too.
> >
> > Can you update the status about it?
> >
> > > [Jiewen] I think we need support build with GCC and LLVM, and with X64.
> >
> > It is better to support the GCC and LLVM.
> >
> > Thanks
> > Guomin
> >
> > > -----Original Message-----
> > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Yao,
> > > Jiewen
> > > Sent: Tuesday, August 25, 2020 7:36 AM
> > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > > devel@edk2.groups.io
> > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > instruction support for X64
> > >
> > > Below:
> > >
> > > > -----Original Message-----
> > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > Sent: Tuesday, August 25, 2020 5:26 AM
> > > > To: devel@edk2.groups.io; Zurcher, Christopher J
> > > > <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>
> > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > <xiaoyux.lu@intel.com>;
> > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > > instruction support for X64
> > > >
> > > > 1) I have confirmed that the ApiHooks.c file is still required even
> > without
> > > the AVX
> > > > instructions included. The x86_64 assembly files in OpenSSL set a flag
> > called
> > > > $win64 and automatically include calls to the RtlVirtualUnwind function
> > if
> > > NASM
> > > > is selected as the assembler scheme.
> > > >
> > > > https://docs.microsoft.com/en-us/windows/win32/api/winnt/nf-winnt-
> > > > rtlvirtualunwind
> > > >
> > > > I have submitted an issue against OpenSSL since I don't think using the
> > > NASM
> > > > assembler should force the inclusion of Windows-specific API hooks, but
> > > that
> > > > change cannot be made in OpenSSL 1.1.1 and we will have to wait for
> > > OpenSSL 3
> > > > or later to remove the stub function.
> > > >
> > > > https://github.com/openssl/openssl/issues/12712
> > > >
> > >
> > > [Jiewen] Thanks.
> > >
> > > > 2) So far I have only built with VS.
> > > >
> > >
> > > [Jiewen] I think we need support build with GCC and LLVM, and with X64.
> > >
> > >
> > > > 3) The X64 SHA256 implementation was successfully exercised across a
> > > large
> > > > number of devices in a production environment as a verification step in a
> > > multi-
> > > > GB data transfer scenario.
> > > >
> > >
> > > [Jiewen] Since you also add other sha (sha1, sha512) and aesni, I think
> > those
> > > need unit test for them too.
> > >
> > >
> > > > Thanks,
> > > > Christopher Zurcher
> > > >
> > > > > -----Original Message-----
> > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> > > Zurcher,
> > > > > Christopher J
> > > > > Sent: Tuesday, August 18, 2020 15:50
> > > > > To: Yao, Jiewen <jiewen.yao@intel.com>; devel@edk2.groups.io
> > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > <xiaoyux.lu@intel.com>;
> > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > > native
> > > > > instruction support for X64
> > > > >
> > > > > After further review, the ApiHooks.c file may no longer be needed since
> > > we
> > > > > are no longer including the AVX instructions. I will look over the
> > > > > dependencies and send a new patch set if I can eliminate the API hooks
> > > file.
> > > > >
> > > > > Thanks,
> > > > > Christopher Zurcher
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > > > > Sent: Thursday, August 13, 2020 08:04
> > > > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > > > > > devel@edk2.groups.io
> > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > <xiaoyux.lu@intel.com>;
> > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > Subject: RE: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > instruction
> > > > > > support for X64
> > > > > >
> > > > > > Hi Christopher
> > > > > > Thanks.
> > > > > >
> > > > > > 1) Would you please help me understand more on "ApiHooks.c contains
> > > a
> > > > stub
> > > > > > function for a Windows API call" ?
> > > > > > Why we need this?
> > > > > > If it is compiler specific in openssl, should we submit patch to
> > openssl to
> > > > > > exclude this with OPENSSL_SYS_UEFI? That should be a cleaner solution
> > > for
> > > > > > UEFI.
> > > > > >
> > > > > > 2) Would you please describe what compiler you have tried? VS? GCC?
> > > LLVM?
> > > > > >
> > > > > > 3) Would you please describe what unit test you have done?
> > > > > >
> > > > > > Thank you
> > > > > > Yao Jiewen
> > > > > >
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > > > > Sent: Tuesday, August 4, 2020 8:24 AM
> > > > > > > To: devel@edk2.groups.io
> > > > > > > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> > > > > > <jian.j.wang@intel.com>;
> > > > > > > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > > > > > <ard.biesheuvel@linaro.org>
> > > > > > > Subject: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > instruction
> > > > > > support
> > > > > > > for X64
> > > > > > >
> > > > > > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> > > > > > >
> > > > > > > Adding OpensslLibX64.inf and modifying process_files.pl to process
> > > this
> > > > > > > file and generate the necessary assembly files.
> > > > > > > ApiHooks.c contains a stub function for a Windows API call.
> > > > > > > uefi-asm.conf contains the limited assembly configurations for
> > > OpenSSL.
> > > > > > >
> > > > > > > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > > > > > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > > > > > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > > > > > > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > Signed-off-by: Christopher J Zurcher
> > > <christopher.j.zurcher@intel.com>
> > > > > > > ---
> > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLib.inf          |   2 +-
> > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf    |   2 +-
> > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibX64.inf       | 656
> > > > > > > ++++++++++++++++++++
> > > > > > >  CryptoPkg/Library/Include/openssl/opensslconf.h      |   3 -
> > > > > > >  CryptoPkg/Library/OpensslLib/ApiHooks.c              |  18 +
> > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c |  34 +
> > > > > > >  CryptoPkg/Library/OpensslLib/process_files.pl        | 223 +++++--
> > > > > > >  CryptoPkg/Library/OpensslLib/uefi-asm.conf           |  15 +
> > > > > > >  8 files changed, 903 insertions(+), 50 deletions(-)
> > > > > > >
> > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > index dbbe5386a1..bd62d86936 100644
> > > > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > @@ -16,7 +16,7 @@
> > > > > > >    VERSION_STRING                 = 1.0
> > > > > > >
> > > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > > >
> > > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > > >
> > > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > >
> > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > > DOPENSSL_NO_ASM
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >  #
> > > > > > >
> > > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
> > > > > > >
> > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > index 616ccd9f62..2b7324a990 100644
> > > > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > @@ -16,7 +16,7 @@
> > > > > > >    VERSION_STRING                 = 1.0
> > > > > > >
> > > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > > >
> > > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > > >
> > > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > >
> > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > > DOPENSSL_NO_ASM
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >  #
> > > > > > >
> > > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
> > > > > > >
> > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > new file mode 100644
> > > > > > > index 0000000000..825eea0254
> > > > > > > --- /dev/null
> > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > @@ -0,0 +1,656 @@
> > > > > > > +## @file
> > > > > > >
> > > > > > > +#  This module provides OpenSSL Library implementation.
> > > > > > >
> > > > > > > +#
> > > > > > >
> > > > > > > +#  Copyright (c) 2010 - 2020, Intel Corporation. All rights
> > > > > reserved.<BR>
> > > > > > >
> > > > > > > +#  (C) Copyright 2020 Hewlett Packard Enterprise Development
> > > LP<BR>
> > > > > > >
> > > > > > > +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > >
> > > > > > > +#
> > > > > > >
> > > > > > > +##
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +[Defines]
> > > > > > >
> > > > > > > +  INF_VERSION                    = 0x00010005
> > > > > > >
> > > > > > > +  BASE_NAME                      = OpensslLibX64
> > > > > > >
> > > > > > > +  MODULE_UNI_FILE                = OpensslLib.uni
> > > > > > >
> > > > > > > +  FILE_GUID                      = 18125E50-0117-4DD0-BE54-
> > 4784AD995FEF
> > > > > > >
> > > > > > > +  MODULE_TYPE                    = BASE
> > > > > > >
> > > > > > > +  VERSION_STRING                 = 1.0
> > > > > > >
> > > > > > > +  LIBRARY_CLASS                  = OpensslLib
> > > > > > >
> > > > > > > +  DEFINE OPENSSL_PATH            = openssl
> > > > > > >
> > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > >
> > > > > > > +  DEFINE OPENSSL_FLAGS_CONFIG    = -DOPENSSL_CPUID_OBJ -
> > > > DSHA1_ASM -
> > > > > > > DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -
> > > > DGHASH_ASM
> > > > > > >
> > > > > > > +  CONSTRUCTOR                    = OpensslLibConstructor
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +#
> > > > > > >
> > > > > > > +#  VALID_ARCHITECTURES           = X64
> > > > > > >
> > > > > > > +#
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +[Sources]
> > > > > > >
> > > > > > > +  OpensslLibConstructor.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/e_os.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ms/uplink.h
> > > > > > >
> > > > > > > +# Autogenerated files list starts here
> > > > > > >
> > > > > > > +  X64/crypto/aes/aesni-mb-x86_64.nasm
> > > > > > >
> > > > > > > +  X64/crypto/aes/aesni-sha1-x86_64.nasm
> > > > > > >
> > > > > > > +  X64/crypto/aes/aesni-sha256-x86_64.nasm
> > > > > > >
> > > > > > > +  X64/crypto/aes/aesni-x86_64.nasm
> > > > > > >
> > > > > > > +  X64/crypto/aes/vpaes-x86_64.nasm
> > > > > > >
> > > > > > > +  X64/crypto/modes/ghash-x86_64.nasm
> > > > > > >
> > > > > > > +  X64/crypto/sha/sha1-mb-x86_64.nasm
> > > > > > >
> > > > > > > +  X64/crypto/sha/sha1-x86_64.nasm
> > > > > > >
> > > > > > > +  X64/crypto/sha/sha256-mb-x86_64.nasm
> > > > > > >
> > > > > > > +  X64/crypto/sha/sha256-x86_64.nasm
> > > > > > >
> > > > > > > +  X64/crypto/sha/sha512-x86_64.nasm
> > > > > > >
> > > > > > > +  X64/crypto/x86_64cpuid.nasm
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_core.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ige.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_misc.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/aria/aria.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_digest.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_dup.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_gentm.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_int.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_object.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_octet.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_print.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_sign.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strex.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strnid.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_time.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_type.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utctm.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utf8.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_verify.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_par.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mime.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_moid.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_pack.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_int.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_string.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/n_pkey.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/nsseq.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_bitst.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_pkey.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_spki.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_new.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_algor.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_bignum.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_info.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_int64.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_long.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_pkey.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_sig.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_spki.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_val.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/async/async.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_wait.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_addr.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_dump.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock2.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_buff.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_nbio.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_null.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_cb.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_meth.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_acpt.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_bio.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_conn.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_dgram.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_fd.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_file.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_log.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_mem.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_null.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_sock.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_add.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_asm.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_blind.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_const.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_ctx.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_depr.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_dh.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_div.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp2.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gcd.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_intern.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_kron.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mod.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mont.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mpi.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mul.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_nist.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_print.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_rand.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_recp.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_shift.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqr.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_srp.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_word.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_x931p.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buf_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buffer.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cmac.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/comp/c_zlib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_api.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mall.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mod.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_sap.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_ssl.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/cpt_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/cryptlib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ctype.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/cversion.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_check.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_depr.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_gen.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_kdf.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_key.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_meth.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_prn.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dl.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_vms.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_win32.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ebcdic.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/err/err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/err/err_prn.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_enc.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_md.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_ok.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_allc.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_alld.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/digest.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aria.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_bf.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_camellia.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_cast.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des3.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_idea.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_null.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_old.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc2.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc5.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_seed.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_sm4.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/encode.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_cnf.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_enc.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_key.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pbe.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pkey.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md2.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md4.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_mdc2.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_null.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_ripemd.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha1.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha3.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sigver.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_wp.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/names.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_dec.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_enc.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_open.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_seal.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_sign.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_verify.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ex_data.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/getenv.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/init.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/hkdf.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/kdf_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/scrypt.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lh_stats.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_one.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/mem.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/mem_dbg.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/mem_sec.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cbc128.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ccm128.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cfb128.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ctr128.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cts128.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/modes/gcm128.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ocb128.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ofb128.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/modes/wrap128.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/modes/xts128.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/o_dir.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/o_fips.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/o_fopen.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/o_init.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/o_str.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/o_time.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/objects/o_names.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_all.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_info.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_oth.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pk8.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pkey.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_sign.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_x509.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_xaux.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pvkfmt.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_egd.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_unix.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_vms.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_win.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_none.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/sha/keccak1600.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1_one.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha256.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha512.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/sm4/sm4.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/stack/stack.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/threads_none.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/threads_pthread.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/threads_win.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/txt_db/txt_db.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_null.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_util.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/uid.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_dir.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_file.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_crl.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_req.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_x509.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_att.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_cmp.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_d2.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_def.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_ext.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_lu.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_meth.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_obj.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_r2x.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_req.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_set.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_trs.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_txt.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_v3.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vfy.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vpm.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509cset.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509name.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509rset.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509spki.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509type.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_all.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_attrib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_crl.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_exten.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_name.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_pubkey.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_req.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509a.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_info.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_int.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/arm_arch.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/mips_arch.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ppc_arch.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/s390x_arch.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/sparc_arch.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/vms_rms.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/charmap.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/standard_methods.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/modes/modes_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/store/store_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/bio_ssl.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/d1_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/d1_msg.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/d1_srtp.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/methods.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/packet.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/pqueue.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/s3_cbc.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/s3_enc.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/s3_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/s3_msg.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_asn1.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_ciph.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_conf.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_err.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_init.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_mcnf.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_rsa.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_sess.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_stat.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_txt.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_utst.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_cust.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_clnt.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_dtls.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_srvr.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/t1_enc.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/t1_lib.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/t1_trce.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/tls13_enc.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/tls_srp.c
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/packet_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert_table.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/record/record.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/record/record_local.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.h
> > > > > > >
> > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_local.h
> > > > > > >
> > > > > > > +# Autogenerated files list ends here
> > > > > > >
> > > > > > > +  buildinf.h
> > > > > > >
> > > > > > > +  rand_pool_noise.h
> > > > > > >
> > > > > > > +  ossl_store.c
> > > > > > >
> > > > > > > +  rand_pool.c
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +[Sources.X64]
> > > > > > >
> > > > > > > +  rand_pool_noise_tsc.c
> > > > > > >
> > > > > > > +  ApiHooks.c
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +[Packages]
> > > > > > >
> > > > > > > +  MdePkg/MdePkg.dec
> > > > > > >
> > > > > > > +  CryptoPkg/CryptoPkg.dec
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +[LibraryClasses]
> > > > > > >
> > > > > > > +  BaseLib
> > > > > > >
> > > > > > > +  DebugLib
> > > > > > >
> > > > > > > +  TimerLib
> > > > > > >
> > > > > > > +  PrintLib
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +[BuildOptions]
> > > > > > >
> > > > > > > +  #
> > > > > > >
> > > > > > > +  # Disables the following Visual Studio compiler warnings brought
> > by
> > > > > > openssl
> > > > > > > source,
> > > > > > >
> > > > > > > +  # so we do not break the build with /WX option:
> > > > > > >
> > > > > > > +  #   C4090: 'function' : different 'const' qualifiers
> > > > > > >
> > > > > > > +  #   C4132: 'object' : const object should be initialized
> > (tls13_enc.c)
> > > > > > >
> > > > > > > +  #   C4210: nonstandard extension used: function given file scope
> > > > > > >
> > > > > > > +  #   C4244: conversion from type1 to type2, possible loss of data
> > > > > > >
> > > > > > > +  #   C4245: conversion from type1 to type2, signed/unsigned
> > > mismatch
> > > > > > >
> > > > > > > +  #   C4267: conversion from size_t to type, possible loss of data
> > > > > > >
> > > > > > > +  #   C4306: 'identifier' : conversion from 'type1' to 'type2' of
> > > > > greater
> > > > > > size
> > > > > > >
> > > > > > > +  #   C4310: cast truncates constant value
> > > > > > >
> > > > > > > +  #   C4389: 'operator' : signed/unsigned mismatch (xxxx)
> > > > > > >
> > > > > > > +  #   C4700: uninitialized local variable 'name' used.
> > (conf_sap.c(71))
> > > > > > >
> > > > > > > +  #   C4702: unreachable code
> > > > > > >
> > > > > > > +  #   C4706: assignment within conditional expression
> > > > > > >
> > > > > > > +  #   C4819: The file contains a character that cannot be
> > represented
> > > in
> > > > > > the
> > > > > > > current code page
> > > > > > >
> > > > > > > +  #
> > > > > > >
> > > > > > > +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER
> > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132
> > > > /wd4210
> > > > > > > /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700 /wd4389
> > > /wd4702
> > > > > > > /wd4706 /wd4819
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -
> > > > U__ICC
> > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +  #
> > > > > > >
> > > > > > > +  # Suppress the following build warnings in openssl so we don't
> > > break
> > > > > the
> > > > > > build
> > > > > > > with -Werror
> > > > > > >
> > > > > > > +  #   -Werror=maybe-uninitialized: there exist some other paths
> > for
> > > > > which
> > > > > > the
> > > > > > > variable is not initialized.
> > > > > > >
> > > > > > > +  #   -Werror=format: Check calls to printf and scanf, etc., to
> > make
> > > > > sure
> > > > > > that the
> > > > > > > arguments supplied have
> > > > > > >
> > > > > > > +  #                   types appropriate to the format string
> > specified.
> > > > > > >
> > > > > > > +  #   -Werror=unused-but-set-variable: Warn whenever a local
> > > variable is
> > > > > > > assigned to, but otherwise unused (aside from its declaration).
> > > > > > >
> > > > > > > +  #
> > > > > > >
> > > > > > > +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64
> > > $(OPENSSL_FLAGS)
> > > > > > > $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-
> > > > > > > error=format -Wno-format -Wno-error=unused-but-set-variable -
> > > > > > > DNO_MSABI_VA_FUNCS
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +  # suppress the following warnings in openssl so we don't break
> > the
> > > > > build
> > > > > > with
> > > > > > > warnings-as-errors:
> > > > > > >
> > > > > > > +  # 1295: Deprecated declaration <entity> - give arg types
> > > > > > >
> > > > > > > +  #  550: <entity> was set but never used
> > > > > > >
> > > > > > > +  # 1293: assignment in condition
> > > > > > >
> > > > > > > +  #  111: statement is unreachable (invariably "break;" after
> > "return
> > > > > X;"
> > > > > > in case
> > > > > > > statement)
> > > > > > >
> > > > > > > +  #   68: integer conversion resulted in a change of sign ("if
> > (Status
> > > > > ==
> > > > > > -1)")
> > > > > > >
> > > > > > > +  #  177: <entity> was declared but never referenced
> > > > > > >
> > > > > > > +  #  223: function <entity> declared implicitly
> > > > > > >
> > > > > > > +  #  144: a value of type <type> cannot be used to initialize an
> > entity
> > > > > of
> > > > > > type
> > > > > > > <type>
> > > > > > >
> > > > > > > +  #  513: a value of type <type> cannot be assigned to an entity
> > of
> > > type
> > > > > > <type>
> > > > > > >
> > > > > > > +  #  188: enumerated type mixed with another type (i.e. passing an
> > > > > integer
> > > > > > as an
> > > > > > > enum without a cast)
> > > > > > >
> > > > > > > +  # 1296: Extended constant initialiser used
> > > > > > >
> > > > > > > +  #  128: loop is not reachable - may be emitted inappropriately
> > if
> > > code
> > > > > > follows
> > > > > > > a conditional return
> > > > > > >
> > > > > > > +  #       from the function that evaluates to true at compile time
> > > > > > >
> > > > > > > +  #  546: transfer of control bypasses initialization - may be
> > emitted
> > > > > > > inappropriately if the uninitialized
> > > > > > >
> > > > > > > +  #       variable is never referenced after the jump
> > > > > > >
> > > > > > > +  #    1: ignore "#1-D: last line of file ends without a newline"
> > > > > > >
> > > > > > > +  # 3017: <entity> may be used before being set (NOTE: This was
> > > fixed in
> > > > > > > OpenSSL 1.1 HEAD with
> > > > > > >
> > > > > > > +  #       commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and
> > > can
> > > > be
> > > > > > > dropped then.)
> > > > > > >
> > > > > > > +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -
> > > U_WIN64
> > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-
> > > > > > > error=uninitialized
> > > > > > >
> > > > > > > diff --git a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > index 3a2544ea5c..e8f73c4d10 100644
> > > > > > > --- a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > +++ b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > @@ -112,9 +112,6 @@ extern "C" {
> > > > > > >  #ifndef OPENSSL_NO_ASAN
> > > > > > >
> > > > > > >  # define OPENSSL_NO_ASAN
> > > > > > >
> > > > > > >  #endif
> > > > > > >
> > > > > > > -#ifndef OPENSSL_NO_ASM
> > > > > > >
> > > > > > > -# define OPENSSL_NO_ASM
> > > > > > >
> > > > > > > -#endif
> > > > > > >
> > > > > > >  #ifndef OPENSSL_NO_ASYNC
> > > > > > >
> > > > > > >  # define OPENSSL_NO_ASYNC
> > > > > > >
> > > > > > >  #endif
> > > > > > >
> > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > new file mode 100644
> > > > > > > index 0000000000..58cff16838
> > > > > > > --- /dev/null
> > > > > > > +++ b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > @@ -0,0 +1,18 @@
> > > > > > > +/** @file
> > > > > > >
> > > > > > > +  OpenSSL Library API hooks.
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
> > > > > > >
> > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +**/
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +#include <Uefi.h>
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +VOID *
> > > > > > >
> > > > > > > +__imp_RtlVirtualUnwind (
> > > > > > >
> > > > > > > +  VOID *    Args
> > > > > > >
> > > > > > > +  )
> > > > > > >
> > > > > > > +{
> > > > > > >
> > > > > > > +  return NULL;
> > > > > > >
> > > > > > > +}
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > new file mode 100644
> > > > > > > index 0000000000..ef20d2b84e
> > > > > > > --- /dev/null
> > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > @@ -0,0 +1,34 @@
> > > > > > > +/** @file
> > > > > > >
> > > > > > > +  Constructor to initialize CPUID data for OpenSSL assembly
> > > operations.
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
> > > > > > >
> > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +**/
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +#include <Uefi.h>
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +extern void OPENSSL_cpuid_setup (void);
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +/**
> > > > > > >
> > > > > > > +  Constructor routine for OpensslLib.
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +  The constructor calls an internal OpenSSL function which fetches
> > a
> > > > > local
> > > > > > copy
> > > > > > >
> > > > > > > +  of the hardware capability flags, used to enable native crypto
> > > > > > instructions.
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +  @param  None
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +  @retval EFI_SUCCESS         The construction succeeded.
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +**/
> > > > > > >
> > > > > > > +EFI_STATUS
> > > > > > >
> > > > > > > +EFIAPI
> > > > > > >
> > > > > > > +OpensslLibConstructor (
> > > > > > >
> > > > > > > +  VOID
> > > > > > >
> > > > > > > +  )
> > > > > > >
> > > > > > > +{
> > > > > > >
> > > > > > > +  OPENSSL_cpuid_setup ();
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +  return EFI_SUCCESS;
> > > > > > >
> > > > > > > +}
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > index 57ce195394..472f59bc8e 100755
> > > > > > > --- a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > +++ b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > @@ -9,9 +9,63 @@
> > > > > > >  # do not need to do this, since the results are stored in the EDK2
> > > > > > >
> > > > > > >  # git repository for them.
> > > > > > >
> > > > > > >  #
> > > > > > >
> > > > > > > +# Due to the script wrapping required to process the OpenSSL
> > > > > > >
> > > > > > > +# configuration data, each native architecture must be processed
> > > > > > >
> > > > > > > +# individually by the maintainer (in addition to the standard
> > version):
> > > > > > >
> > > > > > > +#   ./process_files.pl
> > > > > > >
> > > > > > > +#   ./process_files.pl X64
> > > > > > >
> > > > > > > +#   ./process_files.pl [Arch]
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > >  use strict;
> > > > > > >
> > > > > > >  use Cwd;
> > > > > > >
> > > > > > >  use File::Copy;
> > > > > > >
> > > > > > > +use File::Basename;
> > > > > > >
> > > > > > > +use File::Path qw(make_path remove_tree);
> > > > > > >
> > > > > > > +use Text::Tabs;
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +#
> > > > > > >
> > > > > > > +# OpenSSL perlasm generator script does not transfer the copyright
> > > > > header
> > > > > > >
> > > > > > > +#
> > > > > > >
> > > > > > > +sub copy_license_header
> > > > > > >
> > > > > > > +{
> > > > > > >
> > > > > > > +    my @args = split / /, shift;    #Separate args by spaces
> > > > > > >
> > > > > > > +    my $source = $args[1];          #Source file is second (after
> > > > > "perl")
> > > > > > >
> > > > > > > +    my $target = pop @args;         #Target file is always last
> > > > > > >
> > > > > > > +    chop ($target);                 #Remove newline char
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +    my $temp_file_name = "license.tmp";
> > > > > > >
> > > > > > > +    open (my $source_file, "<" . $source) || die $source;
> > > > > > >
> > > > > > > +    open (my $target_file, "<" . $target) || die $target;
> > > > > > >
> > > > > > > +    open (my $temp_file, ">" . $temp_file_name) || die
> > > $temp_file_name;
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +    #Add "generated file" warning
> > > > > > >
> > > > > > > +    $source =~ s/^..//;             #Remove leading "./"
> > > > > > >
> > > > > > > +    print ($temp_file "; WARNING: do not edit!\r\n");
> > > > > > >
> > > > > > > +    print ($temp_file "; Generated from $source\r\n");
> > > > > > >
> > > > > > > +    print ($temp_file ";\r\n");
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +    #Copy source file header to temp file
> > > > > > >
> > > > > > > +    while (my $line = <$source_file>) {
> > > > > > >
> > > > > > > +        next if ($line =~ /#!/);    #Ignore shebang line
> > > > > > >
> > > > > > > +        $line =~ s/#/;/;            #Fix comment character for
> > assembly
> > > > > > >
> > > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace,
> > fixup
> > > > > line
> > > > > > endings
> > > > > > >
> > > > > > > +        print ($temp_file $line);
> > > > > > >
> > > > > > > +        last if ($line =~ /http/);  #Last line of copyright header
> > > > > > contains a web link
> > > > > > >
> > > > > > > +    }
> > > > > > >
> > > > > > > +    print ($temp_file "\r\n");
> > > > > > >
> > > > > > > +    #Retrieve generated assembly contents
> > > > > > >
> > > > > > > +    while (my $line = <$target_file>) {
> > > > > > >
> > > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace,
> > fixup
> > > > > line
> > > > > > endings
> > > > > > >
> > > > > > > +        print ($temp_file expand ($line));  #expand() replaces
> > tabs with
> > > > > > spaces
> > > > > > >
> > > > > > > +    }
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +    close ($source_file);
> > > > > > >
> > > > > > > +    close ($target_file);
> > > > > > >
> > > > > > > +    close ($temp_file);
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +    move ($temp_file_name, $target) ||
> > > > > > >
> > > > > > > +        die "Cannot replace \"" . $target . "\"!";
> > > > > > >
> > > > > > > +}
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >  #
> > > > > > >
> > > > > > >  # Find the openssl directory name for use lib. We have to do this
> > > > > > >
> > > > > > > @@ -21,10 +75,41 @@ use File::Copy;
> > > > > > >  #
> > > > > > >
> > > > > > >  my $inf_file;
> > > > > > >
> > > > > > >  my $OPENSSL_PATH;
> > > > > > >
> > > > > > > +my $uefi_config;
> > > > > > >
> > > > > > > +my $extension;
> > > > > > >
> > > > > > > +my $arch;
> > > > > > >
> > > > > > >  my @inf;
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >  BEGIN {
> > > > > > >
> > > > > > >      $inf_file = "OpensslLib.inf";
> > > > > > >
> > > > > > > +    $uefi_config = "UEFI";
> > > > > > >
> > > > > > > +    $arch = shift;
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +    if (defined $arch) {
> > > > > > >
> > > > > > > +        if (uc ($arch) eq "X64") {
> > > > > > >
> > > > > > > +            $arch = "X64";
> > > > > > >
> > > > > > > +            $inf_file = "OpensslLibX64.inf";
> > > > > > >
> > > > > > > +            $uefi_config = "UEFI-x86_64";
> > > > > > >
> > > > > > > +            $extension = "nasm";
> > > > > > >
> > > > > > > +        } else {
> > > > > > >
> > > > > > > +            die "Unsupported architecture \"" . $arch . "\"!";
> > > > > > >
> > > > > > > +        }
> > > > > > >
> > > > > > > +        if ($extension eq "nasm") {
> > > > > > >
> > > > > > > +            if (`nasm -v 2>&1`) {
> > > > > > >
> > > > > > > +                #Presence of nasm executable will trigger
> > inclusion of
> > > > > AVX
> > > > > > instructions
> > > > > > >
> > > > > > > +                die "\nCannot run assembly generators with NASM in
> > > > > > path!\n\n";
> > > > > > >
> > > > > > > +            }
> > > > > > >
> > > > > > > +        }
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +        # Prepare assembly folder
> > > > > > >
> > > > > > > +        if (-d $arch) {
> > > > > > >
> > > > > > > +            remove_tree ($arch, {safe => 1}) ||
> > > > > > >
> > > > > > > +                die "Cannot clean assembly folder \"" . $arch .
> > "\"!";
> > > > > > >
> > > > > > > +        } else {
> > > > > > >
> > > > > > > +            mkdir $arch ||
> > > > > > >
> > > > > > > +                die "Cannot create assembly folder \"" . $arch .
> > "\"!";
> > > > > > >
> > > > > > > +        }
> > > > > > >
> > > > > > > +    }
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >      # Read the contents of the inf file
> > > > > > >
> > > > > > >      open( FD, "<" . $inf_file ) ||
> > > > > > >
> > > > > > > @@ -47,9 +132,9 @@ BEGIN {
> > > > > > >              # Configure UEFI
> > > > > > >
> > > > > > >              system(
> > > > > > >
> > > > > > >                  "./Configure",
> > > > > > >
> > > > > > > -                "UEFI",
> > > > > > >
> > > > > > > +                "--config=../uefi-asm.conf",
> > > > > > >
> > > > > > > +                "$uefi_config",
> > > > > > >
> > > > > > >                  "no-afalgeng",
> > > > > > >
> > > > > > > -                "no-asm",
> > > > > > >
> > > > > > >                  "no-async",
> > > > > > >
> > > > > > >                  "no-autoerrinit",
> > > > > > >
> > > > > > >                  "no-autoload-config",
> > > > > > >
> > > > > > > @@ -129,23 +214,53 @@ BEGIN {
> > > > > > >  # Retrieve file lists from OpenSSL configdata
> > > > > > >
> > > > > > >  #
> > > > > > >
> > > > > > >  use configdata qw/%unified_info/;
> > > > > > >
> > > > > > > +use configdata qw/%config/;
> > > > > > >
> > > > > > > +use configdata qw/%target/;
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +#
> > > > > > >
> > > > > > > +# Collect build flags from configdata
> > > > > > >
> > > > > > > +#
> > > > > > >
> > > > > > > +my $flags = "";
> > > > > > >
> > > > > > > +foreach my $f (@{$config{lib_defines}}) {
> > > > > > >
> > > > > > > +    $flags .= " -D$f";
> > > > > > >
> > > > > > > +}
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >  my @cryptofilelist = ();
> > > > > > >
> > > > > > >  my @sslfilelist = ();
> > > > > > >
> > > > > > > +my @asmfilelist = ();
> > > > > > >
> > > > > > > +my @asmbuild = ();
> > > > > > >
> > > > > > >  foreach my $product ((@{$unified_info{libraries}},
> > > > > > >
> > > > > > >                        @{$unified_info{engines}})) {
> > > > > > >
> > > > > > >      foreach my $o (@{$unified_info{sources}->{$product}}) {
> > > > > > >
> > > > > > >          foreach my $s (@{$unified_info{sources}->{$o}}) {
> > > > > > >
> > > > > > > -            next if ($unified_info{generate}->{$s});
> > > > > > >
> > > > > > > -            next if $s =~ "crypto/bio/b_print.c";
> > > > > > >
> > > > > > > -
> > > > > > >
> > > > > > >              # No need to add unused files in UEFI.
> > > > > > >
> > > > > > >              # So it can reduce porting time, compile time, library
> > size.
> > > > > > >
> > > > > > > +            next if $s =~ "crypto/bio/b_print.c";
> > > > > > >
> > > > > > >              next if $s =~ "crypto/rand/randfile.c";
> > > > > > >
> > > > > > >              next if $s =~ "crypto/store/";
> > > > > > >
> > > > > > >              next if $s =~ "crypto/err/err_all.c";
> > > > > > >
> > > > > > >              next if $s =~ "crypto/aes/aes_ecb.c";
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > +            if ($unified_info{generate}->{$s}) {
> > > > > > >
> > > > > > > +                if (defined $arch) {
> > > > > > >
> > > > > > > +                    my $buildstring = "perl";
> > > > > > >
> > > > > > > +                    foreach my $arg (@{$unified_info{generate}-
> > >{$s}}) {
> > > > > > >
> > > > > > > +                        if ($arg =~ ".pl") {
> > > > > > >
> > > > > > > +                            $buildstring .= " ./openssl/$arg";
> > > > > > >
> > > > > > > +                        } elsif ($arg =~ "PERLASM_SCHEME") {
> > > > > > >
> > > > > > > +                            $buildstring .= "
> > $target{perlasm_scheme}";
> > > > > > >
> > > > > > > +                        } elsif ($arg =~ "LIB_CFLAGS") {
> > > > > > >
> > > > > > > +                            $buildstring .= "$flags";
> > > > > > >
> > > > > > > +                        }
> > > > > > >
> > > > > > > +                    }
> > > > > > >
> > > > > > > +                    ($s, my $path, undef) = fileparse($s,
> > qr/\.[^.]*/);
> > > > > > >
> > > > > > > +                    $buildstring .= " ./$arch/$path$s.$extension";
> > > > > > >
> > > > > > > +                    make_path ("./$arch/$path");
> > > > > > >
> > > > > > > +                    push @asmbuild, "$buildstring\n";
> > > > > > >
> > > > > > > +                    push @asmfilelist, "
> > $arch/$path$s.$extension\r\n";
> > > > > > >
> > > > > > > +                }
> > > > > > >
> > > > > > > +                next;
> > > > > > >
> > > > > > > +            }
> > > > > > >
> > > > > > >              if ($product =~ "libssl") {
> > > > > > >
> > > > > > >                  push @sslfilelist, '  $(OPENSSL_PATH)/' . $s .
> > "\r\n";
> > > > > > >
> > > > > > >                  next;
> > > > > > >
> > > > > > > @@ -183,15 +298,31 @@ foreach (@headers){
> > > > > > >  }
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > +#
> > > > > > >
> > > > > > > +# Generate assembly files
> > > > > > >
> > > > > > > +#
> > > > > > >
> > > > > > > +if (@asmbuild) {
> > > > > > >
> > > > > > > +    print "\n--> Generating assembly files ... ";
> > > > > > >
> > > > > > > +    foreach my $buildstring (@asmbuild) {
> > > > > > >
> > > > > > > +        system ("$buildstring");
> > > > > > >
> > > > > > > +        copy_license_header ($buildstring);
> > > > > > >
> > > > > > > +    }
> > > > > > >
> > > > > > > +    print "Done!";
> > > > > > >
> > > > > > > +}
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > >  #
> > > > > > >
> > > > > > >  # Update OpensslLib.inf with autogenerated file list
> > > > > > >
> > > > > > >  #
> > > > > > >
> > > > > > >  my @new_inf = ();
> > > > > > >
> > > > > > >  my $subbing = 0;
> > > > > > >
> > > > > > > -print "\n--> Updating OpensslLib.inf ... ";
> > > > > > >
> > > > > > > +print "\n--> Updating $inf_file ... ";
> > > > > > >
> > > > > > >  foreach (@inf) {
> > > > > > >
> > > > > > > +    if ($_ =~ "DEFINE OPENSSL_FLAGS_CONFIG") {
> > > > > > >
> > > > > > > +        push @new_inf, "  DEFINE OPENSSL_FLAGS_CONFIG    =" .
> > $flags
> > > .
> > > > > > "\r\n";
> > > > > > >
> > > > > > > +        next;
> > > > > > >
> > > > > > > +    }
> > > > > > >
> > > > > > >      if ( $_ =~ "# Autogenerated files list starts here" ) {
> > > > > > >
> > > > > > > -        push @new_inf, $_, @cryptofilelist, @sslfilelist;
> > > > > > >
> > > > > > > +        push @new_inf, $_, @asmfilelist, @cryptofilelist,
> > @sslfilelist;
> > > > > > >
> > > > > > >          $subbing = 1;
> > > > > > >
> > > > > > >          next;
> > > > > > >
> > > > > > >      }
> > > > > > >
> > > > > > > @@ -216,49 +347,51 @@ rename( $new_inf_file, $inf_file ) ||
> > > > > > >      die "rename $inf_file";
> > > > > > >
> > > > > > >  print "Done!";
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > -#
> > > > > > >
> > > > > > > -# Update OpensslLibCrypto.inf with auto-generated file list (no
> > libssl)
> > > > > > >
> > > > > > > -#
> > > > > > >
> > > > > > > -$inf_file = "OpensslLibCrypto.inf";
> > > > > > >
> > > > > > > -
> > > > > > >
> > > > > > > -# Read the contents of the inf file
> > > > > > >
> > > > > > > -@inf = ();
> > > > > > >
> > > > > > > -@new_inf = ();
> > > > > > >
> > > > > > > -open( FD, "<" . $inf_file ) ||
> > > > > > >
> > > > > > > -    die "Cannot open \"" . $inf_file . "\"!";
> > > > > > >
> > > > > > > -@inf = (<FD>);
> > > > > > >
> > > > > > > -close(FD) ||
> > > > > > >
> > > > > > > -    die "Cannot close \"" . $inf_file . "\"!";
> > > > > > >
> > > > > > > +if (!defined $arch) {
> > > > > > >
> > > > > > > +    #
> > > > > > >
> > > > > > > +    # Update OpensslLibCrypto.inf with auto-generated file list
> > (no
> > > > > > libssl)
> > > > > > >
> > > > > > > +    #
> > > > > > >
> > > > > > > +    $inf_file = "OpensslLibCrypto.inf";
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > -$subbing = 0;
> > > > > > >
> > > > > > > -print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > > > >
> > > > > > > -foreach (@inf) {
> > > > > > >
> > > > > > > -    if ( $_ =~ "# Autogenerated files list starts here" ) {
> > > > > > >
> > > > > > > -        push @new_inf, $_, @cryptofilelist;
> > > > > > >
> > > > > > > -        $subbing = 1;
> > > > > > >
> > > > > > > -        next;
> > > > > > >
> > > > > > > -    }
> > > > > > >
> > > > > > > -    if ( $_ =~ "# Autogenerated files list ends here" ) {
> > > > > > >
> > > > > > > -        push @new_inf, $_;
> > > > > > >
> > > > > > > -        $subbing = 0;
> > > > > > >
> > > > > > > -        next;
> > > > > > >
> > > > > > > +    # Read the contents of the inf file
> > > > > > >
> > > > > > > +    @inf = ();
> > > > > > >
> > > > > > > +    @new_inf = ();
> > > > > > >
> > > > > > > +    open( FD, "<" . $inf_file ) ||
> > > > > > >
> > > > > > > +        die "Cannot open \"" . $inf_file . "\"!";
> > > > > > >
> > > > > > > +    @inf = (<FD>);
> > > > > > >
> > > > > > > +    close(FD) ||
> > > > > > >
> > > > > > > +        die "Cannot close \"" . $inf_file . "\"!";
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +    $subbing = 0;
> > > > > > >
> > > > > > > +    print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > > > >
> > > > > > > +    foreach (@inf) {
> > > > > > >
> > > > > > > +        if ( $_ =~ "# Autogenerated files list starts here" ) {
> > > > > > >
> > > > > > > +            push @new_inf, $_, @cryptofilelist;
> > > > > > >
> > > > > > > +            $subbing = 1;
> > > > > > >
> > > > > > > +            next;
> > > > > > >
> > > > > > > +        }
> > > > > > >
> > > > > > > +        if ( $_ =~ "# Autogenerated files list ends here" ) {
> > > > > > >
> > > > > > > +            push @new_inf, $_;
> > > > > > >
> > > > > > > +            $subbing = 0;
> > > > > > >
> > > > > > > +            next;
> > > > > > >
> > > > > > > +        }
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +        push @new_inf, $_
> > > > > > >
> > > > > > > +            unless ($subbing);
> > > > > > >
> > > > > > >      }
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > -    push @new_inf, $_
> > > > > > >
> > > > > > > -        unless ($subbing);
> > > > > > >
> > > > > > > +    $new_inf_file = $inf_file . ".new";
> > > > > > >
> > > > > > > +    open( FD, ">" . $new_inf_file ) ||
> > > > > > >
> > > > > > > +        die $new_inf_file;
> > > > > > >
> > > > > > > +    print( FD @new_inf ) ||
> > > > > > >
> > > > > > > +        die $new_inf_file;
> > > > > > >
> > > > > > > +    close(FD) ||
> > > > > > >
> > > > > > > +        die $new_inf_file;
> > > > > > >
> > > > > > > +    rename( $new_inf_file, $inf_file ) ||
> > > > > > >
> > > > > > > +        die "rename $inf_file";
> > > > > > >
> > > > > > > +    print "Done!";
> > > > > > >
> > > > > > >  }
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > -$new_inf_file = $inf_file . ".new";
> > > > > > >
> > > > > > > -open( FD, ">" . $new_inf_file ) ||
> > > > > > >
> > > > > > > -    die $new_inf_file;
> > > > > > >
> > > > > > > -print( FD @new_inf ) ||
> > > > > > >
> > > > > > > -    die $new_inf_file;
> > > > > > >
> > > > > > > -close(FD) ||
> > > > > > >
> > > > > > > -    die $new_inf_file;
> > > > > > >
> > > > > > > -rename( $new_inf_file, $inf_file ) ||
> > > > > > >
> > > > > > > -    die "rename $inf_file";
> > > > > > >
> > > > > > > -print "Done!";
> > > > > > >
> > > > > > > -
> > > > > > >
> > > > > > >  #
> > > > > > >
> > > > > > >  # Copy opensslconf.h and dso_conf.h generated from OpenSSL
> > > > Configuration
> > > > > > >
> > > > > > >  #
> > > > > > >
> > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > new file mode 100644
> > > > > > > index 0000000000..55eedbf3ba
> > > > > > > --- /dev/null
> > > > > > > +++ b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > @@ -0,0 +1,15 @@
> > > > > > > +## -*- mode: perl; -*-
> > > > > > >
> > > > > > > +## UEFI assembly openssl configuration targets.
> > > > > > >
> > > > > > > +
> > > > > > >
> > > > > > > +my %targets = (
> > > > > > >
> > > > > > > +#### UEFI
> > > > > > >
> > > > > > > +    "UEFI-x86_64" => {
> > > > > > >
> > > > > > > +        perlasm_scheme  => "nasm",
> > > > > > >
> > > > > > > +        # inherit_from    => [ "UEFI",  asm("x86_64_asm") ],
> > > > > > >
> > > > > > > +        inherit_from    => [ "UEFI" ],
> > > > > > >
> > > > > > > +        cpuid_asm_src   => "x86_64cpuid.s",
> > > > > > >
> > > > > > > +        aes_asm_src     => "aes_core.c aes_cbc.c vpaes-x86_64.s
> > aesni-
> > > > > > x86_64.s
> > > > > > > aesni-sha1-x86_64.s aesni-sha256-x86_64.s aesni-mb-x86_64.s",
> > > > > > >
> > > > > > > +        sha1_asm_src    => "sha1-x86_64.s sha256-x86_64.s sha512-
> > > > > x86_64.s
> > > > > > > sha1-mb-x86_64.s sha256-mb-x86_64.s",
> > > > > > >
> > > > > > > +        modes_asm_src   => "ghash-x86_64.s",
> > > > > > >
> > > > > > > +    },
> > > > > > >
> > > > > > > +);
> > > > > > >
> > > > > > > --
> > > > > > > 2.28.0.windows.1
> > > > >
> > > > >
> > > > >
> > >
> > >
> > > 


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

* Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
  2020-09-23  2:35               ` Yao, Jiewen
@ 2020-09-25  0:28                 ` Zurcher, Christopher J
  2020-09-25  0:49                   ` 回复: " gaoliming
  2020-09-29 21:08                 ` Zurcher, Christopher J
  1 sibling, 1 reply; 42+ messages in thread
From: Zurcher, Christopher J @ 2020-09-25  0:28 UTC (permalink / raw)
  To: Yao, Jiewen, Jiang, Guomin, devel@edk2.groups.io
  Cc: Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel

I was able to successfully build and run the non-optimized code with LLVM, but the optimized version returns this error during build:

C:\Program Files\LLVM\lib\clang\9.0.0\include\stdatomic.h:91:17: error: unknown type name 'wchar_t'
typedef _Atomic(wchar_t)            atomic_wchar_t;

Is there a known build issue with CLANGPDB and the stdatomic.h file?

Thanks,
Christopher Zurcher

> -----Original Message-----
> From: Yao, Jiewen <jiewen.yao@intel.com>
> Sent: Tuesday, September 22, 2020 19:35
> To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>; Jiang, Guomin
> <guomin.jiang@intel.com>; devel@edk2.groups.io
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> instruction support for X64
> 
> For GCC, please refer to
> https://github.com/tianocore/tianocore.github.io/wiki/Using-EDK-II-with-
> Native-GCC
> 
> For LLVM, please refer to
> https://github.com/tianocore/tianocore.github.io/wiki/CLANG9-Tools-Chain
> 
> Thank you
> Yao Jiewen
> 
> > -----Original Message-----
> > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > Sent: Tuesday, September 22, 2020 11:22 PM
> > To: Jiang, Guomin <guomin.jiang@intel.com>; devel@edk2.groups.io; Yao,
> > Jiewen <jiewen.yao@intel.com>
> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>;
> > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > instruction support for X64
> >
> > I have unit tested SHA1, SHA512, and AES as well.
> > I do not have the build environment available to test GCC and LLVM.
> >
> > --
> > Christopher Zurcher
> >
> > > -----Original Message-----
> > > From: Jiang, Guomin <guomin.jiang@intel.com>
> > > Sent: Wednesday, September 16, 2020 02:17
> > > To: devel@edk2.groups.io; Yao, Jiewen <jiewen.yao@intel.com>; Zurcher,
> > > Christopher J <christopher.j.zurcher@intel.com>
> > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > <xiaoyux.lu@intel.com>;
> > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > instruction support for X64
> > >
> > > Hi Zurcher,
> > >
> > > > [Jiewen] Since you also add other sha (sha1, sha512) and aesni, I think
> > > those
> > > > need unit test for them too.
> > >
> > > Can you update the status about it?
> > >
> > > > [Jiewen] I think we need support build with GCC and LLVM, and with X64.
> > >
> > > It is better to support the GCC and LLVM.
> > >
> > > Thanks
> > > Guomin
> > >
> > > > -----Original Message-----
> > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Yao,
> > > > Jiewen
> > > > Sent: Tuesday, August 25, 2020 7:36 AM
> > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > > > devel@edk2.groups.io
> > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> native
> > > > instruction support for X64
> > > >
> > > > Below:
> > > >
> > > > > -----Original Message-----
> > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > > Sent: Tuesday, August 25, 2020 5:26 AM
> > > > > To: devel@edk2.groups.io; Zurcher, Christopher J
> > > > > <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>
> > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > <xiaoyux.lu@intel.com>;
> > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> native
> > > > > instruction support for X64
> > > > >
> > > > > 1) I have confirmed that the ApiHooks.c file is still required even
> > > without
> > > > the AVX
> > > > > instructions included. The x86_64 assembly files in OpenSSL set a
> flag
> > > called
> > > > > $win64 and automatically include calls to the RtlVirtualUnwind
> function
> > > if
> > > > NASM
> > > > > is selected as the assembler scheme.
> > > > >
> > > > > https://docs.microsoft.com/en-us/windows/win32/api/winnt/nf-winnt-
> > > > > rtlvirtualunwind
> > > > >
> > > > > I have submitted an issue against OpenSSL since I don't think using
> the
> > > > NASM
> > > > > assembler should force the inclusion of Windows-specific API hooks,
> but
> > > > that
> > > > > change cannot be made in OpenSSL 1.1.1 and we will have to wait for
> > > > OpenSSL 3
> > > > > or later to remove the stub function.
> > > > >
> > > > > https://github.com/openssl/openssl/issues/12712
> > > > >
> > > >
> > > > [Jiewen] Thanks.
> > > >
> > > > > 2) So far I have only built with VS.
> > > > >
> > > >
> > > > [Jiewen] I think we need support build with GCC and LLVM, and with X64.
> > > >
> > > >
> > > > > 3) The X64 SHA256 implementation was successfully exercised across a
> > > > large
> > > > > number of devices in a production environment as a verification step
> in a
> > > > multi-
> > > > > GB data transfer scenario.
> > > > >
> > > >
> > > > [Jiewen] Since you also add other sha (sha1, sha512) and aesni, I think
> > > those
> > > > need unit test for them too.
> > > >
> > > >
> > > > > Thanks,
> > > > > Christopher Zurcher
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> > > > Zurcher,
> > > > > > Christopher J
> > > > > > Sent: Tuesday, August 18, 2020 15:50
> > > > > > To: Yao, Jiewen <jiewen.yao@intel.com>; devel@edk2.groups.io
> > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > <xiaoyux.lu@intel.com>;
> > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > > > native
> > > > > > instruction support for X64
> > > > > >
> > > > > > After further review, the ApiHooks.c file may no longer be needed
> since
> > > > we
> > > > > > are no longer including the AVX instructions. I will look over the
> > > > > > dependencies and send a new patch set if I can eliminate the API
> hooks
> > > > file.
> > > > > >
> > > > > > Thanks,
> > > > > > Christopher Zurcher
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > > > > > Sent: Thursday, August 13, 2020 08:04
> > > > > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > > > > > > devel@edk2.groups.io
> > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > Subject: RE: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > > instruction
> > > > > > > support for X64
> > > > > > >
> > > > > > > Hi Christopher
> > > > > > > Thanks.
> > > > > > >
> > > > > > > 1) Would you please help me understand more on "ApiHooks.c
> contains
> > > > a
> > > > > stub
> > > > > > > function for a Windows API call" ?
> > > > > > > Why we need this?
> > > > > > > If it is compiler specific in openssl, should we submit patch to
> > > openssl to
> > > > > > > exclude this with OPENSSL_SYS_UEFI? That should be a cleaner
> solution
> > > > for
> > > > > > > UEFI.
> > > > > > >
> > > > > > > 2) Would you please describe what compiler you have tried? VS?
> GCC?
> > > > LLVM?
> > > > > > >
> > > > > > > 3) Would you please describe what unit test you have done?
> > > > > > >
> > > > > > > Thank you
> > > > > > > Yao Jiewen
> > > > > > >
> > > > > > >
> > > > > > > > -----Original Message-----
> > > > > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > > > > > Sent: Tuesday, August 4, 2020 8:24 AM
> > > > > > > > To: devel@edk2.groups.io
> > > > > > > > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> > > > > > > <jian.j.wang@intel.com>;
> > > > > > > > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > > > > > > <ard.biesheuvel@linaro.org>
> > > > > > > > Subject: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > instruction
> > > > > > > support
> > > > > > > > for X64
> > > > > > > >
> > > > > > > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> > > > > > > >
> > > > > > > > Adding OpensslLibX64.inf and modifying process_files.pl to
> process
> > > > this
> > > > > > > > file and generate the necessary assembly files.
> > > > > > > > ApiHooks.c contains a stub function for a Windows API call.
> > > > > > > > uefi-asm.conf contains the limited assembly configurations for
> > > > OpenSSL.
> > > > > > > >
> > > > > > > > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > > > > > > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > > > > > > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > > > > > > > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > Signed-off-by: Christopher J Zurcher
> > > > <christopher.j.zurcher@intel.com>
> > > > > > > > ---
> > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLib.inf          |   2 +-
> > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf    |   2 +-
> > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibX64.inf       | 656
> > > > > > > > ++++++++++++++++++++
> > > > > > > >  CryptoPkg/Library/Include/openssl/opensslconf.h      |   3 -
> > > > > > > >  CryptoPkg/Library/OpensslLib/ApiHooks.c              |  18 +
> > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c |  34 +
> > > > > > > >  CryptoPkg/Library/OpensslLib/process_files.pl        | 223
> +++++--
> > > > > > > >  CryptoPkg/Library/OpensslLib/uefi-asm.conf           |  15 +
> > > > > > > >  8 files changed, 903 insertions(+), 50 deletions(-)
> > > > > > > >
> > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > index dbbe5386a1..bd62d86936 100644
> > > > > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > @@ -16,7 +16,7 @@
> > > > > > > >    VERSION_STRING                 = 1.0
> > > > > > > >
> > > > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > > > >
> > > > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > > > >
> > > > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > >
> > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > > > DOPENSSL_NO_ASM
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >  #
> > > > > > > >
> > > > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
> > > > > > > >
> > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > index 616ccd9f62..2b7324a990 100644
> > > > > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > @@ -16,7 +16,7 @@
> > > > > > > >    VERSION_STRING                 = 1.0
> > > > > > > >
> > > > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > > > >
> > > > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > > > >
> > > > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > >
> > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > > > DOPENSSL_NO_ASM
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >  #
> > > > > > > >
> > > > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
> > > > > > > >
> > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > new file mode 100644
> > > > > > > > index 0000000000..825eea0254
> > > > > > > > --- /dev/null
> > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > @@ -0,0 +1,656 @@
> > > > > > > > +## @file
> > > > > > > >
> > > > > > > > +#  This module provides OpenSSL Library implementation.
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +#  Copyright (c) 2010 - 2020, Intel Corporation. All rights
> > > > > > reserved.<BR>
> > > > > > > >
> > > > > > > > +#  (C) Copyright 2020 Hewlett Packard Enterprise Development
> > > > LP<BR>
> > > > > > > >
> > > > > > > > +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +##
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +[Defines]
> > > > > > > >
> > > > > > > > +  INF_VERSION                    = 0x00010005
> > > > > > > >
> > > > > > > > +  BASE_NAME                      = OpensslLibX64
> > > > > > > >
> > > > > > > > +  MODULE_UNI_FILE                = OpensslLib.uni
> > > > > > > >
> > > > > > > > +  FILE_GUID                      = 18125E50-0117-4DD0-BE54-
> > > 4784AD995FEF
> > > > > > > >
> > > > > > > > +  MODULE_TYPE                    = BASE
> > > > > > > >
> > > > > > > > +  VERSION_STRING                 = 1.0
> > > > > > > >
> > > > > > > > +  LIBRARY_CLASS                  = OpensslLib
> > > > > > > >
> > > > > > > > +  DEFINE OPENSSL_PATH            = openssl
> > > > > > > >
> > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > >
> > > > > > > > +  DEFINE OPENSSL_FLAGS_CONFIG    = -DOPENSSL_CPUID_OBJ -
> > > > > DSHA1_ASM -
> > > > > > > > DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -
> > > > > DGHASH_ASM
> > > > > > > >
> > > > > > > > +  CONSTRUCTOR                    = OpensslLibConstructor
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +#  VALID_ARCHITECTURES           = X64
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +[Sources]
> > > > > > > >
> > > > > > > > +  OpensslLibConstructor.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/e_os.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ms/uplink.h
> > > > > > > >
> > > > > > > > +# Autogenerated files list starts here
> > > > > > > >
> > > > > > > > +  X64/crypto/aes/aesni-mb-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/aes/aesni-sha1-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/aes/aesni-sha256-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/aes/aesni-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/aes/vpaes-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/modes/ghash-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/sha/sha1-mb-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/sha/sha1-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/sha/sha256-mb-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/sha/sha256-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/sha/sha512-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/x86_64cpuid.nasm
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_core.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ige.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_misc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/aria/aria.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_digest.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_dup.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_gentm.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_int.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_object.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_octet.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_print.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_sign.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strex.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strnid.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_time.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_type.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utctm.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utf8.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_verify.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_par.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mime.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_moid.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_pack.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_int.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_string.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/n_pkey.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/nsseq.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_bitst.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_pkey.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_spki.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_new.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_algor.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_bignum.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_info.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_int64.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_long.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_pkey.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_sig.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_spki.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_val.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_wait.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_addr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_dump.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock2.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_buff.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_nbio.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_null.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_cb.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_meth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_acpt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_bio.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_conn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_dgram.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_fd.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_file.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_log.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_mem.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_null.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_sock.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_add.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_asm.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_blind.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_const.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_ctx.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_depr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_dh.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_div.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp2.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gcd.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_intern.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_kron.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mod.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mont.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mpi.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mul.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_nist.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_print.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_rand.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_recp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_shift.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_srp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_word.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_x931p.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buf_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buffer.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cmac.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/c_zlib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_api.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mall.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mod.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_sap.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_ssl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/cpt_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/cryptlib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ctype.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/cversion.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_check.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_depr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_gen.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_kdf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_key.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_meth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_prn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_vms.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_win32.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ebcdic.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/err/err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/err/err_prn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_enc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_md.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_ok.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_allc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_alld.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/digest.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aria.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_bf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_camellia.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_cast.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des3.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_idea.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_null.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_old.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc2.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc5.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_seed.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_sm4.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/encode.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_cnf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_enc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_key.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pbe.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pkey.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md2.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md4.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_mdc2.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_null.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_ripemd.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha3.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sigver.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_wp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/names.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_dec.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_enc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_open.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_seal.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_sign.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_verify.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ex_data.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/getenv.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/init.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/hkdf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/kdf_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/scrypt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lh_stats.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_one.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/mem.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/mem_dbg.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/mem_sec.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cbc128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ccm128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cfb128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ctr128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cts128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/gcm128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ocb128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ofb128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/wrap128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/xts128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/o_dir.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/o_fips.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/o_fopen.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/o_init.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/o_str.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/o_time.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/o_names.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_all.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_info.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_oth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pk8.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pkey.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_sign.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_x509.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_xaux.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pvkfmt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_egd.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_unix.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_vms.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_win.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_none.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/keccak1600.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1_one.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha256.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha512.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sm4/sm4.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/stack/stack.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_none.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_pthread.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_win.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/txt_db/txt_db.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_null.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_util.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/uid.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_dir.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_file.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_crl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_req.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_x509.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_att.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_cmp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_d2.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_def.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_ext.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_lu.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_meth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_obj.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_r2x.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_req.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_set.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_trs.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_txt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_v3.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vfy.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vpm.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509cset.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509name.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509rset.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509spki.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509type.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_all.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_attrib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_crl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_exten.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_name.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_pubkey.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_req.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509a.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_info.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_int.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/arm_arch.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/mips_arch.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ppc_arch.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/s390x_arch.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sparc_arch.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/vms_rms.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/charmap.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/standard_methods.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/modes_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/store/store_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/bio_ssl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_msg.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_srtp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/methods.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/packet.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/pqueue.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_cbc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_enc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_msg.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_asn1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_ciph.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_conf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_init.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_mcnf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_rsa.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_sess.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_stat.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_txt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_utst.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_cust.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_clnt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_dtls.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_srvr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_enc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_trce.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/tls13_enc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/tls_srp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/packet_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert_table.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/record/record.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/record/record_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_local.h
> > > > > > > >
> > > > > > > > +# Autogenerated files list ends here
> > > > > > > >
> > > > > > > > +  buildinf.h
> > > > > > > >
> > > > > > > > +  rand_pool_noise.h
> > > > > > > >
> > > > > > > > +  ossl_store.c
> > > > > > > >
> > > > > > > > +  rand_pool.c
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +[Sources.X64]
> > > > > > > >
> > > > > > > > +  rand_pool_noise_tsc.c
> > > > > > > >
> > > > > > > > +  ApiHooks.c
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +[Packages]
> > > > > > > >
> > > > > > > > +  MdePkg/MdePkg.dec
> > > > > > > >
> > > > > > > > +  CryptoPkg/CryptoPkg.dec
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +[LibraryClasses]
> > > > > > > >
> > > > > > > > +  BaseLib
> > > > > > > >
> > > > > > > > +  DebugLib
> > > > > > > >
> > > > > > > > +  TimerLib
> > > > > > > >
> > > > > > > > +  PrintLib
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +[BuildOptions]
> > > > > > > >
> > > > > > > > +  #
> > > > > > > >
> > > > > > > > +  # Disables the following Visual Studio compiler warnings
> brought
> > > by
> > > > > > > openssl
> > > > > > > > source,
> > > > > > > >
> > > > > > > > +  # so we do not break the build with /WX option:
> > > > > > > >
> > > > > > > > +  #   C4090: 'function' : different 'const' qualifiers
> > > > > > > >
> > > > > > > > +  #   C4132: 'object' : const object should be initialized
> > > (tls13_enc.c)
> > > > > > > >
> > > > > > > > +  #   C4210: nonstandard extension used: function given file
> scope
> > > > > > > >
> > > > > > > > +  #   C4244: conversion from type1 to type2, possible loss of
> data
> > > > > > > >
> > > > > > > > +  #   C4245: conversion from type1 to type2, signed/unsigned
> > > > mismatch
> > > > > > > >
> > > > > > > > +  #   C4267: conversion from size_t to type, possible loss of
> data
> > > > > > > >
> > > > > > > > +  #   C4306: 'identifier' : conversion from 'type1' to 'type2'
> of
> > > > > > greater
> > > > > > > size
> > > > > > > >
> > > > > > > > +  #   C4310: cast truncates constant value
> > > > > > > >
> > > > > > > > +  #   C4389: 'operator' : signed/unsigned mismatch (xxxx)
> > > > > > > >
> > > > > > > > +  #   C4700: uninitialized local variable 'name' used.
> > > (conf_sap.c(71))
> > > > > > > >
> > > > > > > > +  #   C4702: unreachable code
> > > > > > > >
> > > > > > > > +  #   C4706: assignment within conditional expression
> > > > > > > >
> > > > > > > > +  #   C4819: The file contains a character that cannot be
> > > represented
> > > > in
> > > > > > > the
> > > > > > > > current code page
> > > > > > > >
> > > > > > > > +  #
> > > > > > > >
> > > > > > > > +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER
> > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132
> > > > > /wd4210
> > > > > > > > /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700 /wd4389
> > > > /wd4702
> > > > > > > > /wd4706 /wd4819
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -
> > > > > U__ICC
> > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +  #
> > > > > > > >
> > > > > > > > +  # Suppress the following build warnings in openssl so we
> don't
> > > > break
> > > > > > the
> > > > > > > build
> > > > > > > > with -Werror
> > > > > > > >
> > > > > > > > +  #   -Werror=maybe-uninitialized: there exist some other
> paths
> > > for
> > > > > > which
> > > > > > > the
> > > > > > > > variable is not initialized.
> > > > > > > >
> > > > > > > > +  #   -Werror=format: Check calls to printf and scanf, etc.,
> to
> > > make
> > > > > > sure
> > > > > > > that the
> > > > > > > > arguments supplied have
> > > > > > > >
> > > > > > > > +  #                   types appropriate to the format string
> > > specified.
> > > > > > > >
> > > > > > > > +  #   -Werror=unused-but-set-variable: Warn whenever a local
> > > > variable is
> > > > > > > > assigned to, but otherwise unused (aside from its declaration).
> > > > > > > >
> > > > > > > > +  #
> > > > > > > >
> > > > > > > > +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64
> > > > $(OPENSSL_FLAGS)
> > > > > > > > $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-
> > > > > > > > error=format -Wno-format -Wno-error=unused-but-set-variable -
> > > > > > > > DNO_MSABI_VA_FUNCS
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +  # suppress the following warnings in openssl so we don't
> break
> > > the
> > > > > > build
> > > > > > > with
> > > > > > > > warnings-as-errors:
> > > > > > > >
> > > > > > > > +  # 1295: Deprecated declaration <entity> - give arg types
> > > > > > > >
> > > > > > > > +  #  550: <entity> was set but never used
> > > > > > > >
> > > > > > > > +  # 1293: assignment in condition
> > > > > > > >
> > > > > > > > +  #  111: statement is unreachable (invariably "break;" after
> > > "return
> > > > > > X;"
> > > > > > > in case
> > > > > > > > statement)
> > > > > > > >
> > > > > > > > +  #   68: integer conversion resulted in a change of sign ("if
> > > (Status
> > > > > > ==
> > > > > > > -1)")
> > > > > > > >
> > > > > > > > +  #  177: <entity> was declared but never referenced
> > > > > > > >
> > > > > > > > +  #  223: function <entity> declared implicitly
> > > > > > > >
> > > > > > > > +  #  144: a value of type <type> cannot be used to initialize
> an
> > > entity
> > > > > > of
> > > > > > > type
> > > > > > > > <type>
> > > > > > > >
> > > > > > > > +  #  513: a value of type <type> cannot be assigned to an
> entity
> > > of
> > > > type
> > > > > > > <type>
> > > > > > > >
> > > > > > > > +  #  188: enumerated type mixed with another type (i.e.
> passing an
> > > > > > integer
> > > > > > > as an
> > > > > > > > enum without a cast)
> > > > > > > >
> > > > > > > > +  # 1296: Extended constant initialiser used
> > > > > > > >
> > > > > > > > +  #  128: loop is not reachable - may be emitted
> inappropriately
> > > if
> > > > code
> > > > > > > follows
> > > > > > > > a conditional return
> > > > > > > >
> > > > > > > > +  #       from the function that evaluates to true at compile
> time
> > > > > > > >
> > > > > > > > +  #  546: transfer of control bypasses initialization - may be
> > > emitted
> > > > > > > > inappropriately if the uninitialized
> > > > > > > >
> > > > > > > > +  #       variable is never referenced after the jump
> > > > > > > >
> > > > > > > > +  #    1: ignore "#1-D: last line of file ends without a
> newline"
> > > > > > > >
> > > > > > > > +  # 3017: <entity> may be used before being set (NOTE: This
> was
> > > > fixed in
> > > > > > > > OpenSSL 1.1 HEAD with
> > > > > > > >
> > > > > > > > +  #       commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and
> > > > can
> > > > > be
> > > > > > > > dropped then.)
> > > > > > > >
> > > > > > > > +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -
> > > > U_WIN64
> > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-
> > > > > > > > error=uninitialized
> > > > > > > >
> > > > > > > > diff --git a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > index 3a2544ea5c..e8f73c4d10 100644
> > > > > > > > --- a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > +++ b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > @@ -112,9 +112,6 @@ extern "C" {
> > > > > > > >  #ifndef OPENSSL_NO_ASAN
> > > > > > > >
> > > > > > > >  # define OPENSSL_NO_ASAN
> > > > > > > >
> > > > > > > >  #endif
> > > > > > > >
> > > > > > > > -#ifndef OPENSSL_NO_ASM
> > > > > > > >
> > > > > > > > -# define OPENSSL_NO_ASM
> > > > > > > >
> > > > > > > > -#endif
> > > > > > > >
> > > > > > > >  #ifndef OPENSSL_NO_ASYNC
> > > > > > > >
> > > > > > > >  # define OPENSSL_NO_ASYNC
> > > > > > > >
> > > > > > > >  #endif
> > > > > > > >
> > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > new file mode 100644
> > > > > > > > index 0000000000..58cff16838
> > > > > > > > --- /dev/null
> > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > @@ -0,0 +1,18 @@
> > > > > > > > +/** @file
> > > > > > > >
> > > > > > > > +  OpenSSL Library API hooks.
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +Copyright (c) 2020, Intel Corporation. All rights
> reserved.<BR>
> > > > > > > >
> > > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +**/
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +#include <Uefi.h>
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +VOID *
> > > > > > > >
> > > > > > > > +__imp_RtlVirtualUnwind (
> > > > > > > >
> > > > > > > > +  VOID *    Args
> > > > > > > >
> > > > > > > > +  )
> > > > > > > >
> > > > > > > > +{
> > > > > > > >
> > > > > > > > +  return NULL;
> > > > > > > >
> > > > > > > > +}
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > diff --git
> a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > new file mode 100644
> > > > > > > > index 0000000000..ef20d2b84e
> > > > > > > > --- /dev/null
> > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > @@ -0,0 +1,34 @@
> > > > > > > > +/** @file
> > > > > > > >
> > > > > > > > +  Constructor to initialize CPUID data for OpenSSL assembly
> > > > operations.
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +Copyright (c) 2020, Intel Corporation. All rights
> reserved.<BR>
> > > > > > > >
> > > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +**/
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +#include <Uefi.h>
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +extern void OPENSSL_cpuid_setup (void);
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +/**
> > > > > > > >
> > > > > > > > +  Constructor routine for OpensslLib.
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +  The constructor calls an internal OpenSSL function which
> fetches
> > > a
> > > > > > local
> > > > > > > copy
> > > > > > > >
> > > > > > > > +  of the hardware capability flags, used to enable native
> crypto
> > > > > > > instructions.
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +  @param  None
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +  @retval EFI_SUCCESS         The construction succeeded.
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +**/
> > > > > > > >
> > > > > > > > +EFI_STATUS
> > > > > > > >
> > > > > > > > +EFIAPI
> > > > > > > >
> > > > > > > > +OpensslLibConstructor (
> > > > > > > >
> > > > > > > > +  VOID
> > > > > > > >
> > > > > > > > +  )
> > > > > > > >
> > > > > > > > +{
> > > > > > > >
> > > > > > > > +  OPENSSL_cpuid_setup ();
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +  return EFI_SUCCESS;
> > > > > > > >
> > > > > > > > +}
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > index 57ce195394..472f59bc8e 100755
> > > > > > > > --- a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > @@ -9,9 +9,63 @@
> > > > > > > >  # do not need to do this, since the results are stored in the
> EDK2
> > > > > > > >
> > > > > > > >  # git repository for them.
> > > > > > > >
> > > > > > > >  #
> > > > > > > >
> > > > > > > > +# Due to the script wrapping required to process the OpenSSL
> > > > > > > >
> > > > > > > > +# configuration data, each native architecture must be
> processed
> > > > > > > >
> > > > > > > > +# individually by the maintainer (in addition to the standard
> > > version):
> > > > > > > >
> > > > > > > > +#   ./process_files.pl
> > > > > > > >
> > > > > > > > +#   ./process_files.pl X64
> > > > > > > >
> > > > > > > > +#   ./process_files.pl [Arch]
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > >  use strict;
> > > > > > > >
> > > > > > > >  use Cwd;
> > > > > > > >
> > > > > > > >  use File::Copy;
> > > > > > > >
> > > > > > > > +use File::Basename;
> > > > > > > >
> > > > > > > > +use File::Path qw(make_path remove_tree);
> > > > > > > >
> > > > > > > > +use Text::Tabs;
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +# OpenSSL perlasm generator script does not transfer the
> copyright
> > > > > > header
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +sub copy_license_header
> > > > > > > >
> > > > > > > > +{
> > > > > > > >
> > > > > > > > +    my @args = split / /, shift;    #Separate args by spaces
> > > > > > > >
> > > > > > > > +    my $source = $args[1];          #Source file is second
> (after
> > > > > > "perl")
> > > > > > > >
> > > > > > > > +    my $target = pop @args;         #Target file is always
> last
> > > > > > > >
> > > > > > > > +    chop ($target);                 #Remove newline char
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +    my $temp_file_name = "license.tmp";
> > > > > > > >
> > > > > > > > +    open (my $source_file, "<" . $source) || die $source;
> > > > > > > >
> > > > > > > > +    open (my $target_file, "<" . $target) || die $target;
> > > > > > > >
> > > > > > > > +    open (my $temp_file, ">" . $temp_file_name) || die
> > > > $temp_file_name;
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +    #Add "generated file" warning
> > > > > > > >
> > > > > > > > +    $source =~ s/^..//;             #Remove leading "./"
> > > > > > > >
> > > > > > > > +    print ($temp_file "; WARNING: do not edit!\r\n");
> > > > > > > >
> > > > > > > > +    print ($temp_file "; Generated from $source\r\n");
> > > > > > > >
> > > > > > > > +    print ($temp_file ";\r\n");
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +    #Copy source file header to temp file
> > > > > > > >
> > > > > > > > +    while (my $line = <$source_file>) {
> > > > > > > >
> > > > > > > > +        next if ($line =~ /#!/);    #Ignore shebang line
> > > > > > > >
> > > > > > > > +        $line =~ s/#/;/;            #Fix comment character for
> > > assembly
> > > > > > > >
> > > > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace,
> > > fixup
> > > > > > line
> > > > > > > endings
> > > > > > > >
> > > > > > > > +        print ($temp_file $line);
> > > > > > > >
> > > > > > > > +        last if ($line =~ /http/);  #Last line of copyright
> header
> > > > > > > contains a web link
> > > > > > > >
> > > > > > > > +    }
> > > > > > > >
> > > > > > > > +    print ($temp_file "\r\n");
> > > > > > > >
> > > > > > > > +    #Retrieve generated assembly contents
> > > > > > > >
> > > > > > > > +    while (my $line = <$target_file>) {
> > > > > > > >
> > > > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace,
> > > fixup
> > > > > > line
> > > > > > > endings
> > > > > > > >
> > > > > > > > +        print ($temp_file expand ($line));  #expand() replaces
> > > tabs with
> > > > > > > spaces
> > > > > > > >
> > > > > > > > +    }
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +    close ($source_file);
> > > > > > > >
> > > > > > > > +    close ($target_file);
> > > > > > > >
> > > > > > > > +    close ($temp_file);
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +    move ($temp_file_name, $target) ||
> > > > > > > >
> > > > > > > > +        die "Cannot replace \"" . $target . "\"!";
> > > > > > > >
> > > > > > > > +}
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >  #
> > > > > > > >
> > > > > > > >  # Find the openssl directory name for use lib. We have to do
> this
> > > > > > > >
> > > > > > > > @@ -21,10 +75,41 @@ use File::Copy;
> > > > > > > >  #
> > > > > > > >
> > > > > > > >  my $inf_file;
> > > > > > > >
> > > > > > > >  my $OPENSSL_PATH;
> > > > > > > >
> > > > > > > > +my $uefi_config;
> > > > > > > >
> > > > > > > > +my $extension;
> > > > > > > >
> > > > > > > > +my $arch;
> > > > > > > >
> > > > > > > >  my @inf;
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >  BEGIN {
> > > > > > > >
> > > > > > > >      $inf_file = "OpensslLib.inf";
> > > > > > > >
> > > > > > > > +    $uefi_config = "UEFI";
> > > > > > > >
> > > > > > > > +    $arch = shift;
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +    if (defined $arch) {
> > > > > > > >
> > > > > > > > +        if (uc ($arch) eq "X64") {
> > > > > > > >
> > > > > > > > +            $arch = "X64";
> > > > > > > >
> > > > > > > > +            $inf_file = "OpensslLibX64.inf";
> > > > > > > >
> > > > > > > > +            $uefi_config = "UEFI-x86_64";
> > > > > > > >
> > > > > > > > +            $extension = "nasm";
> > > > > > > >
> > > > > > > > +        } else {
> > > > > > > >
> > > > > > > > +            die "Unsupported architecture \"" . $arch . "\"!";
> > > > > > > >
> > > > > > > > +        }
> > > > > > > >
> > > > > > > > +        if ($extension eq "nasm") {
> > > > > > > >
> > > > > > > > +            if (`nasm -v 2>&1`) {
> > > > > > > >
> > > > > > > > +                #Presence of nasm executable will trigger
> > > inclusion of
> > > > > > AVX
> > > > > > > instructions
> > > > > > > >
> > > > > > > > +                die "\nCannot run assembly generators with
> NASM in
> > > > > > > path!\n\n";
> > > > > > > >
> > > > > > > > +            }
> > > > > > > >
> > > > > > > > +        }
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +        # Prepare assembly folder
> > > > > > > >
> > > > > > > > +        if (-d $arch) {
> > > > > > > >
> > > > > > > > +            remove_tree ($arch, {safe => 1}) ||
> > > > > > > >
> > > > > > > > +                die "Cannot clean assembly folder \"" . $arch
> .
> > > "\"!";
> > > > > > > >
> > > > > > > > +        } else {
> > > > > > > >
> > > > > > > > +            mkdir $arch ||
> > > > > > > >
> > > > > > > > +                die "Cannot create assembly folder \"" . $arch
> .
> > > "\"!";
> > > > > > > >
> > > > > > > > +        }
> > > > > > > >
> > > > > > > > +    }
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >      # Read the contents of the inf file
> > > > > > > >
> > > > > > > >      open( FD, "<" . $inf_file ) ||
> > > > > > > >
> > > > > > > > @@ -47,9 +132,9 @@ BEGIN {
> > > > > > > >              # Configure UEFI
> > > > > > > >
> > > > > > > >              system(
> > > > > > > >
> > > > > > > >                  "./Configure",
> > > > > > > >
> > > > > > > > -                "UEFI",
> > > > > > > >
> > > > > > > > +                "--config=../uefi-asm.conf",
> > > > > > > >
> > > > > > > > +                "$uefi_config",
> > > > > > > >
> > > > > > > >                  "no-afalgeng",
> > > > > > > >
> > > > > > > > -                "no-asm",
> > > > > > > >
> > > > > > > >                  "no-async",
> > > > > > > >
> > > > > > > >                  "no-autoerrinit",
> > > > > > > >
> > > > > > > >                  "no-autoload-config",
> > > > > > > >
> > > > > > > > @@ -129,23 +214,53 @@ BEGIN {
> > > > > > > >  # Retrieve file lists from OpenSSL configdata
> > > > > > > >
> > > > > > > >  #
> > > > > > > >
> > > > > > > >  use configdata qw/%unified_info/;
> > > > > > > >
> > > > > > > > +use configdata qw/%config/;
> > > > > > > >
> > > > > > > > +use configdata qw/%target/;
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +# Collect build flags from configdata
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +my $flags = "";
> > > > > > > >
> > > > > > > > +foreach my $f (@{$config{lib_defines}}) {
> > > > > > > >
> > > > > > > > +    $flags .= " -D$f";
> > > > > > > >
> > > > > > > > +}
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >  my @cryptofilelist = ();
> > > > > > > >
> > > > > > > >  my @sslfilelist = ();
> > > > > > > >
> > > > > > > > +my @asmfilelist = ();
> > > > > > > >
> > > > > > > > +my @asmbuild = ();
> > > > > > > >
> > > > > > > >  foreach my $product ((@{$unified_info{libraries}},
> > > > > > > >
> > > > > > > >                        @{$unified_info{engines}})) {
> > > > > > > >
> > > > > > > >      foreach my $o (@{$unified_info{sources}->{$product}}) {
> > > > > > > >
> > > > > > > >          foreach my $s (@{$unified_info{sources}->{$o}}) {
> > > > > > > >
> > > > > > > > -            next if ($unified_info{generate}->{$s});
> > > > > > > >
> > > > > > > > -            next if $s =~ "crypto/bio/b_print.c";
> > > > > > > >
> > > > > > > > -
> > > > > > > >
> > > > > > > >              # No need to add unused files in UEFI.
> > > > > > > >
> > > > > > > >              # So it can reduce porting time, compile time,
> library
> > > size.
> > > > > > > >
> > > > > > > > +            next if $s =~ "crypto/bio/b_print.c";
> > > > > > > >
> > > > > > > >              next if $s =~ "crypto/rand/randfile.c";
> > > > > > > >
> > > > > > > >              next if $s =~ "crypto/store/";
> > > > > > > >
> > > > > > > >              next if $s =~ "crypto/err/err_all.c";
> > > > > > > >
> > > > > > > >              next if $s =~ "crypto/aes/aes_ecb.c";
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > +            if ($unified_info{generate}->{$s}) {
> > > > > > > >
> > > > > > > > +                if (defined $arch) {
> > > > > > > >
> > > > > > > > +                    my $buildstring = "perl";
> > > > > > > >
> > > > > > > > +                    foreach my $arg
> (@{$unified_info{generate}-
> > > >{$s}}) {
> > > > > > > >
> > > > > > > > +                        if ($arg =~ ".pl") {
> > > > > > > >
> > > > > > > > +                            $buildstring .= " ./openssl/$arg";
> > > > > > > >
> > > > > > > > +                        } elsif ($arg =~ "PERLASM_SCHEME") {
> > > > > > > >
> > > > > > > > +                            $buildstring .= "
> > > $target{perlasm_scheme}";
> > > > > > > >
> > > > > > > > +                        } elsif ($arg =~ "LIB_CFLAGS") {
> > > > > > > >
> > > > > > > > +                            $buildstring .= "$flags";
> > > > > > > >
> > > > > > > > +                        }
> > > > > > > >
> > > > > > > > +                    }
> > > > > > > >
> > > > > > > > +                    ($s, my $path, undef) = fileparse($s,
> > > qr/\.[^.]*/);
> > > > > > > >
> > > > > > > > +                    $buildstring .= "
> ./$arch/$path$s.$extension";
> > > > > > > >
> > > > > > > > +                    make_path ("./$arch/$path");
> > > > > > > >
> > > > > > > > +                    push @asmbuild, "$buildstring\n";
> > > > > > > >
> > > > > > > > +                    push @asmfilelist, "
> > > $arch/$path$s.$extension\r\n";
> > > > > > > >
> > > > > > > > +                }
> > > > > > > >
> > > > > > > > +                next;
> > > > > > > >
> > > > > > > > +            }
> > > > > > > >
> > > > > > > >              if ($product =~ "libssl") {
> > > > > > > >
> > > > > > > >                  push @sslfilelist, '  $(OPENSSL_PATH)/' . $s .
> > > "\r\n";
> > > > > > > >
> > > > > > > >                  next;
> > > > > > > >
> > > > > > > > @@ -183,15 +298,31 @@ foreach (@headers){
> > > > > > > >  }
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +# Generate assembly files
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +if (@asmbuild) {
> > > > > > > >
> > > > > > > > +    print "\n--> Generating assembly files ... ";
> > > > > > > >
> > > > > > > > +    foreach my $buildstring (@asmbuild) {
> > > > > > > >
> > > > > > > > +        system ("$buildstring");
> > > > > > > >
> > > > > > > > +        copy_license_header ($buildstring);
> > > > > > > >
> > > > > > > > +    }
> > > > > > > >
> > > > > > > > +    print "Done!";
> > > > > > > >
> > > > > > > > +}
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > >  #
> > > > > > > >
> > > > > > > >  # Update OpensslLib.inf with autogenerated file list
> > > > > > > >
> > > > > > > >  #
> > > > > > > >
> > > > > > > >  my @new_inf = ();
> > > > > > > >
> > > > > > > >  my $subbing = 0;
> > > > > > > >
> > > > > > > > -print "\n--> Updating OpensslLib.inf ... ";
> > > > > > > >
> > > > > > > > +print "\n--> Updating $inf_file ... ";
> > > > > > > >
> > > > > > > >  foreach (@inf) {
> > > > > > > >
> > > > > > > > +    if ($_ =~ "DEFINE OPENSSL_FLAGS_CONFIG") {
> > > > > > > >
> > > > > > > > +        push @new_inf, "  DEFINE OPENSSL_FLAGS_CONFIG    =" .
> > > $flags
> > > > .
> > > > > > > "\r\n";
> > > > > > > >
> > > > > > > > +        next;
> > > > > > > >
> > > > > > > > +    }
> > > > > > > >
> > > > > > > >      if ( $_ =~ "# Autogenerated files list starts here" ) {
> > > > > > > >
> > > > > > > > -        push @new_inf, $_, @cryptofilelist, @sslfilelist;
> > > > > > > >
> > > > > > > > +        push @new_inf, $_, @asmfilelist, @cryptofilelist,
> > > @sslfilelist;
> > > > > > > >
> > > > > > > >          $subbing = 1;
> > > > > > > >
> > > > > > > >          next;
> > > > > > > >
> > > > > > > >      }
> > > > > > > >
> > > > > > > > @@ -216,49 +347,51 @@ rename( $new_inf_file, $inf_file ) ||
> > > > > > > >      die "rename $inf_file";
> > > > > > > >
> > > > > > > >  print "Done!";
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > -#
> > > > > > > >
> > > > > > > > -# Update OpensslLibCrypto.inf with auto-generated file list
> (no
> > > libssl)
> > > > > > > >
> > > > > > > > -#
> > > > > > > >
> > > > > > > > -$inf_file = "OpensslLibCrypto.inf";
> > > > > > > >
> > > > > > > > -
> > > > > > > >
> > > > > > > > -# Read the contents of the inf file
> > > > > > > >
> > > > > > > > -@inf = ();
> > > > > > > >
> > > > > > > > -@new_inf = ();
> > > > > > > >
> > > > > > > > -open( FD, "<" . $inf_file ) ||
> > > > > > > >
> > > > > > > > -    die "Cannot open \"" . $inf_file . "\"!";
> > > > > > > >
> > > > > > > > -@inf = (<FD>);
> > > > > > > >
> > > > > > > > -close(FD) ||
> > > > > > > >
> > > > > > > > -    die "Cannot close \"" . $inf_file . "\"!";
> > > > > > > >
> > > > > > > > +if (!defined $arch) {
> > > > > > > >
> > > > > > > > +    #
> > > > > > > >
> > > > > > > > +    # Update OpensslLibCrypto.inf with auto-generated file
> list
> > > (no
> > > > > > > libssl)
> > > > > > > >
> > > > > > > > +    #
> > > > > > > >
> > > > > > > > +    $inf_file = "OpensslLibCrypto.inf";
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > -$subbing = 0;
> > > > > > > >
> > > > > > > > -print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > > > > >
> > > > > > > > -foreach (@inf) {
> > > > > > > >
> > > > > > > > -    if ( $_ =~ "# Autogenerated files list starts here" ) {
> > > > > > > >
> > > > > > > > -        push @new_inf, $_, @cryptofilelist;
> > > > > > > >
> > > > > > > > -        $subbing = 1;
> > > > > > > >
> > > > > > > > -        next;
> > > > > > > >
> > > > > > > > -    }
> > > > > > > >
> > > > > > > > -    if ( $_ =~ "# Autogenerated files list ends here" ) {
> > > > > > > >
> > > > > > > > -        push @new_inf, $_;
> > > > > > > >
> > > > > > > > -        $subbing = 0;
> > > > > > > >
> > > > > > > > -        next;
> > > > > > > >
> > > > > > > > +    # Read the contents of the inf file
> > > > > > > >
> > > > > > > > +    @inf = ();
> > > > > > > >
> > > > > > > > +    @new_inf = ();
> > > > > > > >
> > > > > > > > +    open( FD, "<" . $inf_file ) ||
> > > > > > > >
> > > > > > > > +        die "Cannot open \"" . $inf_file . "\"!";
> > > > > > > >
> > > > > > > > +    @inf = (<FD>);
> > > > > > > >
> > > > > > > > +    close(FD) ||
> > > > > > > >
> > > > > > > > +        die "Cannot close \"" . $inf_file . "\"!";
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +    $subbing = 0;
> > > > > > > >
> > > > > > > > +    print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > > > > >
> > > > > > > > +    foreach (@inf) {
> > > > > > > >
> > > > > > > > +        if ( $_ =~ "# Autogenerated files list starts here" )
> {
> > > > > > > >
> > > > > > > > +            push @new_inf, $_, @cryptofilelist;
> > > > > > > >
> > > > > > > > +            $subbing = 1;
> > > > > > > >
> > > > > > > > +            next;
> > > > > > > >
> > > > > > > > +        }
> > > > > > > >
> > > > > > > > +        if ( $_ =~ "# Autogenerated files list ends here" ) {
> > > > > > > >
> > > > > > > > +            push @new_inf, $_;
> > > > > > > >
> > > > > > > > +            $subbing = 0;
> > > > > > > >
> > > > > > > > +            next;
> > > > > > > >
> > > > > > > > +        }
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +        push @new_inf, $_
> > > > > > > >
> > > > > > > > +            unless ($subbing);
> > > > > > > >
> > > > > > > >      }
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > -    push @new_inf, $_
> > > > > > > >
> > > > > > > > -        unless ($subbing);
> > > > > > > >
> > > > > > > > +    $new_inf_file = $inf_file . ".new";
> > > > > > > >
> > > > > > > > +    open( FD, ">" . $new_inf_file ) ||
> > > > > > > >
> > > > > > > > +        die $new_inf_file;
> > > > > > > >
> > > > > > > > +    print( FD @new_inf ) ||
> > > > > > > >
> > > > > > > > +        die $new_inf_file;
> > > > > > > >
> > > > > > > > +    close(FD) ||
> > > > > > > >
> > > > > > > > +        die $new_inf_file;
> > > > > > > >
> > > > > > > > +    rename( $new_inf_file, $inf_file ) ||
> > > > > > > >
> > > > > > > > +        die "rename $inf_file";
> > > > > > > >
> > > > > > > > +    print "Done!";
> > > > > > > >
> > > > > > > >  }
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > -$new_inf_file = $inf_file . ".new";
> > > > > > > >
> > > > > > > > -open( FD, ">" . $new_inf_file ) ||
> > > > > > > >
> > > > > > > > -    die $new_inf_file;
> > > > > > > >
> > > > > > > > -print( FD @new_inf ) ||
> > > > > > > >
> > > > > > > > -    die $new_inf_file;
> > > > > > > >
> > > > > > > > -close(FD) ||
> > > > > > > >
> > > > > > > > -    die $new_inf_file;
> > > > > > > >
> > > > > > > > -rename( $new_inf_file, $inf_file ) ||
> > > > > > > >
> > > > > > > > -    die "rename $inf_file";
> > > > > > > >
> > > > > > > > -print "Done!";
> > > > > > > >
> > > > > > > > -
> > > > > > > >
> > > > > > > >  #
> > > > > > > >
> > > > > > > >  # Copy opensslconf.h and dso_conf.h generated from OpenSSL
> > > > > Configuration
> > > > > > > >
> > > > > > > >  #
> > > > > > > >
> > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > new file mode 100644
> > > > > > > > index 0000000000..55eedbf3ba
> > > > > > > > --- /dev/null
> > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > @@ -0,0 +1,15 @@
> > > > > > > > +## -*- mode: perl; -*-
> > > > > > > >
> > > > > > > > +## UEFI assembly openssl configuration targets.
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +my %targets = (
> > > > > > > >
> > > > > > > > +#### UEFI
> > > > > > > >
> > > > > > > > +    "UEFI-x86_64" => {
> > > > > > > >
> > > > > > > > +        perlasm_scheme  => "nasm",
> > > > > > > >
> > > > > > > > +        # inherit_from    => [ "UEFI",  asm("x86_64_asm") ],
> > > > > > > >
> > > > > > > > +        inherit_from    => [ "UEFI" ],
> > > > > > > >
> > > > > > > > +        cpuid_asm_src   => "x86_64cpuid.s",
> > > > > > > >
> > > > > > > > +        aes_asm_src     => "aes_core.c aes_cbc.c vpaes-
> x86_64.s
> > > aesni-
> > > > > > > x86_64.s
> > > > > > > > aesni-sha1-x86_64.s aesni-sha256-x86_64.s aesni-mb-x86_64.s",
> > > > > > > >
> > > > > > > > +        sha1_asm_src    => "sha1-x86_64.s sha256-x86_64.s
> sha512-
> > > > > > x86_64.s
> > > > > > > > sha1-mb-x86_64.s sha256-mb-x86_64.s",
> > > > > > > >
> > > > > > > > +        modes_asm_src   => "ghash-x86_64.s",
> > > > > > > >
> > > > > > > > +    },
> > > > > > > >
> > > > > > > > +);
> > > > > > > >
> > > > > > > > --
> > > > > > > > 2.28.0.windows.1
> > > > > >
> > > > > >
> > > > > >
> > > >
> > > >
> > > > 


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

* 回复: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
  2020-09-25  0:28                 ` Zurcher, Christopher J
@ 2020-09-25  0:49                   ` gaoliming
  2020-09-25  1:06                     ` Zurcher, Christopher J
  0 siblings, 1 reply; 42+ messages in thread
From: gaoliming @ 2020-09-25  0:49 UTC (permalink / raw)
  To: devel, christopher.j.zurcher, 'Yao, Jiewen',
	'Jiang, Guomin'
  Cc: 'Wang, Jian J', 'Lu, XiaoyuX',
	'Ard Biesheuvel'

Zurcher:
  Can you specify the detail build step to reproduce the build error with
CLANGPDB tool chain?

Thanks
Liming
> -----邮件原件-----
> 发件人: bounce+27952+65588+4905953+8761045@groups.io
> <bounce+27952+65588+4905953+8761045@groups.io> 代表 Zurcher,
> Christopher J
> 发送时间: 2020年9月25日 8:28
> 收件人: Yao, Jiewen <jiewen.yao@intel.com>; Jiang, Guomin
> <guomin.jiang@intel.com>; devel@edk2.groups.io
> 抄送: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> 主题: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> instruction support for X64
> 
> I was able to successfully build and run the non-optimized code with LLVM,
> but the optimized version returns this error during build:
> 
> C:\Program Files\LLVM\lib\clang\9.0.0\include\stdatomic.h:91:17: error:
> unknown type name 'wchar_t'
> typedef _Atomic(wchar_t)            atomic_wchar_t;
> 
> Is there a known build issue with CLANGPDB and the stdatomic.h file?
> 
> Thanks,
> Christopher Zurcher
> 
> > -----Original Message-----
> > From: Yao, Jiewen <jiewen.yao@intel.com>
> > Sent: Tuesday, September 22, 2020 19:35
> > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>; Jiang,
Guomin
> > <guomin.jiang@intel.com>; devel@edk2.groups.io
> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>;
> > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
native
> > instruction support for X64
> >
> > For GCC, please refer to
> > https://github.com/tianocore/tianocore.github.io/wiki/Using-EDK-II-with-
> > Native-GCC
> >
> > For LLVM, please refer to
> > https://github.com/tianocore/tianocore.github.io/wiki/CLANG9-Tools-Chain
> >
> > Thank you
> > Yao Jiewen
> >
> > > -----Original Message-----
> > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > Sent: Tuesday, September 22, 2020 11:22 PM
> > > To: Jiang, Guomin <guomin.jiang@intel.com>; devel@edk2.groups.io; Yao,
> > > Jiewen <jiewen.yao@intel.com>
> > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > <xiaoyux.lu@intel.com>;
> > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> native
> > > instruction support for X64
> > >
> > > I have unit tested SHA1, SHA512, and AES as well.
> > > I do not have the build environment available to test GCC and LLVM.
> > >
> > > --
> > > Christopher Zurcher
> > >
> > > > -----Original Message-----
> > > > From: Jiang, Guomin <guomin.jiang@intel.com>
> > > > Sent: Wednesday, September 16, 2020 02:17
> > > > To: devel@edk2.groups.io; Yao, Jiewen <jiewen.yao@intel.com>;
> Zurcher,
> > > > Christopher J <christopher.j.zurcher@intel.com>
> > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > <xiaoyux.lu@intel.com>;
> > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> native
> > > > instruction support for X64
> > > >
> > > > Hi Zurcher,
> > > >
> > > > > [Jiewen] Since you also add other sha (sha1, sha512) and aesni, I
think
> > > > those
> > > > > need unit test for them too.
> > > >
> > > > Can you update the status about it?
> > > >
> > > > > [Jiewen] I think we need support build with GCC and LLVM, and with
> X64.
> > > >
> > > > It is better to support the GCC and LLVM.
> > > >
> > > > Thanks
> > > > Guomin
> > > >
> > > > > -----Original Message-----
> > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> Yao,
> > > > > Jiewen
> > > > > Sent: Tuesday, August 25, 2020 7:36 AM
> > > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > > > > devel@edk2.groups.io
> > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > native
> > > > > instruction support for X64
> > > > >
> > > > > Below:
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > > > Sent: Tuesday, August 25, 2020 5:26 AM
> > > > > > To: devel@edk2.groups.io; Zurcher, Christopher J
> > > > > > <christopher.j.zurcher@intel.com>; Yao, Jiewen
> <jiewen.yao@intel.com>
> > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > <xiaoyux.lu@intel.com>;
> > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib:
Add
> > native
> > > > > > instruction support for X64
> > > > > >
> > > > > > 1) I have confirmed that the ApiHooks.c file is still required
even
> > > > without
> > > > > the AVX
> > > > > > instructions included. The x86_64 assembly files in OpenSSL set
a
> > flag
> > > > called
> > > > > > $win64 and automatically include calls to the RtlVirtualUnwind
> > function
> > > > if
> > > > > NASM
> > > > > > is selected as the assembler scheme.
> > > > > >
> > > > > >
> https://docs.microsoft.com/en-us/windows/win32/api/winnt/nf-winnt-
> > > > > > rtlvirtualunwind
> > > > > >
> > > > > > I have submitted an issue against OpenSSL since I don't think
using
> > the
> > > > > NASM
> > > > > > assembler should force the inclusion of Windows-specific API
hooks,
> > but
> > > > > that
> > > > > > change cannot be made in OpenSSL 1.1.1 and we will have to wait
> for
> > > > > OpenSSL 3
> > > > > > or later to remove the stub function.
> > > > > >
> > > > > > https://github.com/openssl/openssl/issues/12712
> > > > > >
> > > > >
> > > > > [Jiewen] Thanks.
> > > > >
> > > > > > 2) So far I have only built with VS.
> > > > > >
> > > > >
> > > > > [Jiewen] I think we need support build with GCC and LLVM, and with
> X64.
> > > > >
> > > > >
> > > > > > 3) The X64 SHA256 implementation was successfully exercised
> across a
> > > > > large
> > > > > > number of devices in a production environment as a verification
step
> > in a
> > > > > multi-
> > > > > > GB data transfer scenario.
> > > > > >
> > > > >
> > > > > [Jiewen] Since you also add other sha (sha1, sha512) and aesni, I
think
> > > > those
> > > > > need unit test for them too.
> > > > >
> > > > >
> > > > > > Thanks,
> > > > > > Christopher Zurcher
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf
> Of
> > > > > Zurcher,
> > > > > > > Christopher J
> > > > > > > Sent: Tuesday, August 18, 2020 15:50
> > > > > > > To: Yao, Jiewen <jiewen.yao@intel.com>; devel@edk2.groups.io
> > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib:
> Add
> > > > > native
> > > > > > > instruction support for X64
> > > > > > >
> > > > > > > After further review, the ApiHooks.c file may no longer be
needed
> > since
> > > > > we
> > > > > > > are no longer including the AVX instructions. I will look over
the
> > > > > > > dependencies and send a new patch set if I can eliminate the
API
> > hooks
> > > > > file.
> > > > > > >
> > > > > > > Thanks,
> > > > > > > Christopher Zurcher
> > > > > > >
> > > > > > > > -----Original Message-----
> > > > > > > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > > > > > > Sent: Thursday, August 13, 2020 08:04
> > > > > > > > To: Zurcher, Christopher J
<christopher.j.zurcher@intel.com>;
> > > > > > > > devel@edk2.groups.io
> > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > Subject: RE: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > > > instruction
> > > > > > > > support for X64
> > > > > > > >
> > > > > > > > Hi Christopher
> > > > > > > > Thanks.
> > > > > > > >
> > > > > > > > 1) Would you please help me understand more on "ApiHooks.c
> > contains
> > > > > a
> > > > > > stub
> > > > > > > > function for a Windows API call" ?
> > > > > > > > Why we need this?
> > > > > > > > If it is compiler specific in openssl, should we submit
patch to
> > > > openssl to
> > > > > > > > exclude this with OPENSSL_SYS_UEFI? That should be a cleaner
> > solution
> > > > > for
> > > > > > > > UEFI.
> > > > > > > >
> > > > > > > > 2) Would you please describe what compiler you have tried?
VS?
> > GCC?
> > > > > LLVM?
> > > > > > > >
> > > > > > > > 3) Would you please describe what unit test you have done?
> > > > > > > >
> > > > > > > > Thank you
> > > > > > > > Yao Jiewen
> > > > > > > >
> > > > > > > >
> > > > > > > > > -----Original Message-----
> > > > > > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.
com>
> > > > > > > > > Sent: Tuesday, August 4, 2020 8:24 AM
> > > > > > > > > To: devel@edk2.groups.io
> > > > > > > > > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> > > > > > > > <jian.j.wang@intel.com>;
> > > > > > > > > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > > > > > > > <ard.biesheuvel@linaro.org>
> > > > > > > > > Subject: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > > instruction
> > > > > > > > support
> > > > > > > > > for X64
> > > > > > > > >
> > > > > > > > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> > > > > > > > >
> > > > > > > > > Adding OpensslLibX64.inf and modifying process_files.pl to
> > process
> > > > > this
> > > > > > > > > file and generate the necessary assembly files.
> > > > > > > > > ApiHooks.c contains a stub function for a Windows API
call.
> > > > > > > > > uefi-asm.conf contains the limited assembly configurations
for
> > > > > OpenSSL.
> > > > > > > > >
> > > > > > > > > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > > > > > > > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > > > > > > > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > > > > > > > > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > > Signed-off-by: Christopher J Zurcher
> > > > > <christopher.j.zurcher@intel.com>
> > > > > > > > > ---
> > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLib.inf          |
> 2 +-
> > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf    |
> 2 +-
> > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibX64.inf       |
> 656
> > > > > > > > > ++++++++++++++++++++
> > > > > > > > >  CryptoPkg/Library/Include/openssl/opensslconf.h      |
> 3 -
> > > > > > > > >  CryptoPkg/Library/OpensslLib/ApiHooks.c              |
> 18 +
> > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c |
> 34 +
> > > > > > > > >  CryptoPkg/Library/OpensslLib/process_files.pl        |
> 223
> > +++++--
> > > > > > > > >  CryptoPkg/Library/OpensslLib/uefi-asm.conf           |
> 15 +
> > > > > > > > >  8 files changed, 903 insertions(+), 50 deletions(-)
> > > > > > > > >
> > > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > index dbbe5386a1..bd62d86936 100644
> > > > > > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > @@ -16,7 +16,7 @@
> > > > > > > > >    VERSION_STRING                 = 1.0
> > > > > > > > >
> > > > > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > > > > >
> > > > > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > > > > >
> > > > > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > > >
> > > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > > > > DOPENSSL_NO_ASM
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >  #
> > > > > > > > >
> > > > > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM
> AARCH64
> > > > > > > > >
> > > > > > > > > diff --git
a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > index 616ccd9f62..2b7324a990 100644
> > > > > > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > @@ -16,7 +16,7 @@
> > > > > > > > >    VERSION_STRING                 = 1.0
> > > > > > > > >
> > > > > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > > > > >
> > > > > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > > > > >
> > > > > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > > >
> > > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > > > > DOPENSSL_NO_ASM
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >  #
> > > > > > > > >
> > > > > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM
> AARCH64
> > > > > > > > >
> > > > > > > > > diff --git
a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > > new file mode 100644
> > > > > > > > > index 0000000000..825eea0254
> > > > > > > > > --- /dev/null
> > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > > @@ -0,0 +1,656 @@
> > > > > > > > > +## @file
> > > > > > > > >
> > > > > > > > > +#  This module provides OpenSSL Library implementation.
> > > > > > > > >
> > > > > > > > > +#
> > > > > > > > >
> > > > > > > > > +#  Copyright (c) 2010 - 2020, Intel Corporation. All
rights
> > > > > > > reserved.<BR>
> > > > > > > > >
> > > > > > > > > +#  (C) Copyright 2020 Hewlett Packard Enterprise
> Development
> > > > > LP<BR>
> > > > > > > > >
> > > > > > > > > +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > > >
> > > > > > > > > +#
> > > > > > > > >
> > > > > > > > > +##
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +[Defines]
> > > > > > > > >
> > > > > > > > > +  INF_VERSION                    = 0x00010005
> > > > > > > > >
> > > > > > > > > +  BASE_NAME                      = OpensslLibX64
> > > > > > > > >
> > > > > > > > > +  MODULE_UNI_FILE                = OpensslLib.uni
> > > > > > > > >
> > > > > > > > > +  FILE_GUID                      =
> 18125E50-0117-4DD0-BE54-
> > > > 4784AD995FEF
> > > > > > > > >
> > > > > > > > > +  MODULE_TYPE                    = BASE
> > > > > > > > >
> > > > > > > > > +  VERSION_STRING                 = 1.0
> > > > > > > > >
> > > > > > > > > +  LIBRARY_CLASS                  = OpensslLib
> > > > > > > > >
> > > > > > > > > +  DEFINE OPENSSL_PATH            = openssl
> > > > > > > > >
> > > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > > >
> > > > > > > > > +  DEFINE OPENSSL_FLAGS_CONFIG    =
> -DOPENSSL_CPUID_OBJ -
> > > > > > DSHA1_ASM -
> > > > > > > > > DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -
> > > > > > DGHASH_ASM
> > > > > > > > >
> > > > > > > > > +  CONSTRUCTOR                    =
> OpensslLibConstructor
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +#
> > > > > > > > >
> > > > > > > > > +#  VALID_ARCHITECTURES           = X64
> > > > > > > > >
> > > > > > > > > +#
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +[Sources]
> > > > > > > > >
> > > > > > > > > +  OpensslLibConstructor.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/e_os.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ms/uplink.h
> > > > > > > > >
> > > > > > > > > +# Autogenerated files list starts here
> > > > > > > > >
> > > > > > > > > +  X64/crypto/aes/aesni-mb-x86_64.nasm
> > > > > > > > >
> > > > > > > > > +  X64/crypto/aes/aesni-sha1-x86_64.nasm
> > > > > > > > >
> > > > > > > > > +  X64/crypto/aes/aesni-sha256-x86_64.nasm
> > > > > > > > >
> > > > > > > > > +  X64/crypto/aes/aesni-x86_64.nasm
> > > > > > > > >
> > > > > > > > > +  X64/crypto/aes/vpaes-x86_64.nasm
> > > > > > > > >
> > > > > > > > > +  X64/crypto/modes/ghash-x86_64.nasm
> > > > > > > > >
> > > > > > > > > +  X64/crypto/sha/sha1-mb-x86_64.nasm
> > > > > > > > >
> > > > > > > > > +  X64/crypto/sha/sha1-x86_64.nasm
> > > > > > > > >
> > > > > > > > > +  X64/crypto/sha/sha256-mb-x86_64.nasm
> > > > > > > > >
> > > > > > > > > +  X64/crypto/sha/sha256-x86_64.nasm
> > > > > > > > >
> > > > > > > > > +  X64/crypto/sha/sha512-x86_64.nasm
> > > > > > > > >
> > > > > > > > > +  X64/crypto/x86_64cpuid.nasm
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_core.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ige.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_misc.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/aria/aria.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_digest.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_dup.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_gentm.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_int.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_object.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_octet.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_print.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_sign.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strex.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strnid.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_time.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_type.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utctm.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utf8.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_verify.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_par.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mime.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_moid.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_pack.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_int.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_string.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/n_pkey.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/nsseq.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_bitst.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_pkey.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_spki.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_new.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_algor.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_bignum.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_info.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_int64.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_long.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_pkey.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_sig.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_spki.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_val.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_wait.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_addr.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_dump.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock2.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_buff.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_nbio.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_null.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_cb.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_meth.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_acpt.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_bio.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_conn.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_dgram.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_fd.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_file.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_log.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_mem.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_null.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_sock.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_add.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_asm.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_blind.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_const.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_ctx.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_depr.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_dh.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_div.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp2.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gcd.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_intern.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_kron.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mod.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mont.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mpi.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mul.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_nist.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_print.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_rand.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_recp.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_shift.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqr.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_srp.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_word.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_x931p.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buf_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buffer.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cmac.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/c_zlib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_api.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mall.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mod.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_sap.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_ssl.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/cpt_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/cryptlib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ctype.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/cversion.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_check.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_depr.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_gen.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_kdf.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_key.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_meth.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_prn.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dl.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_vms.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_win32.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ebcdic.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/err/err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/err/err_prn.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_enc.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_md.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_ok.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_allc.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_alld.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/digest.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aria.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_bf.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_camellia.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_cast.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des3.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_idea.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_null.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_old.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc2.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc5.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_seed.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_sm4.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/encode.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_cnf.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_enc.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_key.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pbe.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pkey.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md2.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md4.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_mdc2.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_null.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_ripemd.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha1.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha3.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sigver.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_wp.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/names.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_dec.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_enc.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_open.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_seal.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_sign.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_verify.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ex_data.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/getenv.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/init.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/hkdf.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/kdf_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/scrypt.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lh_stats.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_one.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/mem.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/mem_dbg.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/mem_sec.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cbc128.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ccm128.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cfb128.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ctr128.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cts128.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/gcm128.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ocb128.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ofb128.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/wrap128.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/xts128.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_dir.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_fips.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_fopen.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_init.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_str.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_time.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/o_names.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_all.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_info.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_oth.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pk8.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pkey.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_sign.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_x509.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_xaux.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pvkfmt.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_egd.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_unix.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_vms.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_win.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_none.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/keccak1600.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1_one.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha256.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha512.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm4/sm4.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/stack/stack.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_none.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_pthread.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_win.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/txt_db/txt_db.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_null.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_util.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/uid.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_dir.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_file.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_crl.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_req.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_x509.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_att.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_cmp.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_d2.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_def.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_ext.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_lu.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_meth.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_obj.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_r2x.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_req.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_set.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_trs.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_txt.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_v3.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vfy.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vpm.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509cset.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509name.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509rset.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509spki.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509type.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_all.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_attrib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_crl.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_exten.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_name.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_pubkey.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_req.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509a.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_info.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_int.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/arm_arch.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/mips_arch.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ppc_arch.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/s390x_arch.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/sparc_arch.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/vms_rms.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/charmap.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/standard_methods.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/modes_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/store/store_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/bio_ssl.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_msg.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_srtp.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/methods.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/packet.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/pqueue.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_cbc.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_enc.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_msg.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_asn1.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_ciph.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_conf.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_err.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_init.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_mcnf.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_rsa.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_sess.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_stat.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_txt.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_utst.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_cust.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_clnt.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_dtls.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_srvr.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_enc.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_lib.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_trce.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/tls13_enc.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/tls_srp.c
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/packet_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert_table.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/record.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/record_local.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.h
> > > > > > > > >
> > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_local.h
> > > > > > > > >
> > > > > > > > > +# Autogenerated files list ends here
> > > > > > > > >
> > > > > > > > > +  buildinf.h
> > > > > > > > >
> > > > > > > > > +  rand_pool_noise.h
> > > > > > > > >
> > > > > > > > > +  ossl_store.c
> > > > > > > > >
> > > > > > > > > +  rand_pool.c
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +[Sources.X64]
> > > > > > > > >
> > > > > > > > > +  rand_pool_noise_tsc.c
> > > > > > > > >
> > > > > > > > > +  ApiHooks.c
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +[Packages]
> > > > > > > > >
> > > > > > > > > +  MdePkg/MdePkg.dec
> > > > > > > > >
> > > > > > > > > +  CryptoPkg/CryptoPkg.dec
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +[LibraryClasses]
> > > > > > > > >
> > > > > > > > > +  BaseLib
> > > > > > > > >
> > > > > > > > > +  DebugLib
> > > > > > > > >
> > > > > > > > > +  TimerLib
> > > > > > > > >
> > > > > > > > > +  PrintLib
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +[BuildOptions]
> > > > > > > > >
> > > > > > > > > +  #
> > > > > > > > >
> > > > > > > > > +  # Disables the following Visual Studio compiler
warnings
> > brought
> > > > by
> > > > > > > > openssl
> > > > > > > > > source,
> > > > > > > > >
> > > > > > > > > +  # so we do not break the build with /WX option:
> > > > > > > > >
> > > > > > > > > +  #   C4090: 'function' : different 'const' qualifiers
> > > > > > > > >
> > > > > > > > > +  #   C4132: 'object' : const object should be
initialized
> > > > (tls13_enc.c)
> > > > > > > > >
> > > > > > > > > +  #   C4210: nonstandard extension used: function given
file
> > scope
> > > > > > > > >
> > > > > > > > > +  #   C4244: conversion from type1 to type2, possible
loss of
> > data
> > > > > > > > >
> > > > > > > > > +  #   C4245: conversion from type1 to type2,
> signed/unsigned
> > > > > mismatch
> > > > > > > > >
> > > > > > > > > +  #   C4267: conversion from size_t to type, possible
loss of
> > data
> > > > > > > > >
> > > > > > > > > +  #   C4306: 'identifier' : conversion from 'type1' to
'type2'
> > of
> > > > > > > greater
> > > > > > > > size
> > > > > > > > >
> > > > > > > > > +  #   C4310: cast truncates constant value
> > > > > > > > >
> > > > > > > > > +  #   C4389: 'operator' : signed/unsigned mismatch (xxxx)
> > > > > > > > >
> > > > > > > > > +  #   C4700: uninitialized local variable 'name' used.
> > > > (conf_sap.c(71))
> > > > > > > > >
> > > > > > > > > +  #   C4702: unreachable code
> > > > > > > > >
> > > > > > > > > +  #   C4706: assignment within conditional expression
> > > > > > > > >
> > > > > > > > > +  #   C4819: The file contains a character that cannot be
> > > > represented
> > > > > in
> > > > > > > > the
> > > > > > > > > current code page
> > > > > > > > >
> > > > > > > > > +  #
> > > > > > > > >
> > > > > > > > > +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64
> -U_MSC_VER
> > > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /wd4090
> /wd4132
> > > > > > /wd4210
> > > > > > > > > /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700
> /wd4389
> > > > > /wd4702
> > > > > > > > > /wd4706 /wd4819
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64
> -U_MSC_VER -
> > > > > > U__ICC
> > > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +  #
> > > > > > > > >
> > > > > > > > > +  # Suppress the following build warnings in openssl so
we
> > don't
> > > > > break
> > > > > > > the
> > > > > > > > build
> > > > > > > > > with -Werror
> > > > > > > > >
> > > > > > > > > +  #   -Werror=maybe-uninitialized: there exist some other
> > paths
> > > > for
> > > > > > > which
> > > > > > > > the
> > > > > > > > > variable is not initialized.
> > > > > > > > >
> > > > > > > > > +  #   -Werror=format: Check calls to printf and scanf,
etc.,
> > to
> > > > make
> > > > > > > sure
> > > > > > > > that the
> > > > > > > > > arguments supplied have
> > > > > > > > >
> > > > > > > > > +  #                   types appropriate to the format
> string
> > > > specified.
> > > > > > > > >
> > > > > > > > > +  #   -Werror=unused-but-set-variable: Warn whenever a
> local
> > > > > variable is
> > > > > > > > > assigned to, but otherwise unused (aside from its
declaration).
> > > > > > > > >
> > > > > > > > > +  #
> > > > > > > > >
> > > > > > > > > +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64
> > > > > $(OPENSSL_FLAGS)
> > > > > > > > > $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized
> -Wno-
> > > > > > > > > error=format -Wno-format
> -Wno-error=unused-but-set-variable -
> > > > > > > > > DNO_MSABI_VA_FUNCS
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +  # suppress the following warnings in openssl so we
don't
> > break
> > > > the
> > > > > > > build
> > > > > > > > with
> > > > > > > > > warnings-as-errors:
> > > > > > > > >
> > > > > > > > > +  # 1295: Deprecated declaration <entity> - give arg
types
> > > > > > > > >
> > > > > > > > > +  #  550: <entity> was set but never used
> > > > > > > > >
> > > > > > > > > +  # 1293: assignment in condition
> > > > > > > > >
> > > > > > > > > +  #  111: statement is unreachable (invariably "break;"
after
> > > > "return
> > > > > > > X;"
> > > > > > > > in case
> > > > > > > > > statement)
> > > > > > > > >
> > > > > > > > > +  #   68: integer conversion resulted in a change of sign
("if
> > > > (Status
> > > > > > > ==
> > > > > > > > -1)")
> > > > > > > > >
> > > > > > > > > +  #  177: <entity> was declared but never referenced
> > > > > > > > >
> > > > > > > > > +  #  223: function <entity> declared implicitly
> > > > > > > > >
> > > > > > > > > +  #  144: a value of type <type> cannot be used to
initialize
> > an
> > > > entity
> > > > > > > of
> > > > > > > > type
> > > > > > > > > <type>
> > > > > > > > >
> > > > > > > > > +  #  513: a value of type <type> cannot be assigned to an
> > entity
> > > > of
> > > > > type
> > > > > > > > <type>
> > > > > > > > >
> > > > > > > > > +  #  188: enumerated type mixed with another type (i.e.
> > passing an
> > > > > > > integer
> > > > > > > > as an
> > > > > > > > > enum without a cast)
> > > > > > > > >
> > > > > > > > > +  # 1296: Extended constant initialiser used
> > > > > > > > >
> > > > > > > > > +  #  128: loop is not reachable - may be emitted
> > inappropriately
> > > > if
> > > > > code
> > > > > > > > follows
> > > > > > > > > a conditional return
> > > > > > > > >
> > > > > > > > > +  #       from the function that evaluates to true at
> compile
> > time
> > > > > > > > >
> > > > > > > > > +  #  546: transfer of control bypasses initialization -
may be
> > > > emitted
> > > > > > > > > inappropriately if the uninitialized
> > > > > > > > >
> > > > > > > > > +  #       variable is never referenced after the jump
> > > > > > > > >
> > > > > > > > > +  #    1: ignore "#1-D: last line of file ends without a
> > newline"
> > > > > > > > >
> > > > > > > > > +  # 3017: <entity> may be used before being set (NOTE:
This
> > was
> > > > > fixed in
> > > > > > > > > OpenSSL 1.1 HEAD with
> > > > > > > > >
> > > > > > > > > +  #       commit
> d9b8b89bec4480de3a10bdaf9425db371c19145b, and
> > > > > can
> > > > > > be
> > > > > > > > > dropped then.)
> > > > > > > > >
> > > > > > > > > +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse
> -U_WIN32 -
> > > > > U_WIN64
> > > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -w -std=c99
> -Wno-
> > > > > > > > > error=uninitialized
> > > > > > > > >
> > > > > > > > > diff --git
a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > index 3a2544ea5c..e8f73c4d10 100644
> > > > > > > > > --- a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > +++ b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > @@ -112,9 +112,6 @@ extern "C" {
> > > > > > > > >  #ifndef OPENSSL_NO_ASAN
> > > > > > > > >
> > > > > > > > >  # define OPENSSL_NO_ASAN
> > > > > > > > >
> > > > > > > > >  #endif
> > > > > > > > >
> > > > > > > > > -#ifndef OPENSSL_NO_ASM
> > > > > > > > >
> > > > > > > > > -# define OPENSSL_NO_ASM
> > > > > > > > >
> > > > > > > > > -#endif
> > > > > > > > >
> > > > > > > > >  #ifndef OPENSSL_NO_ASYNC
> > > > > > > > >
> > > > > > > > >  # define OPENSSL_NO_ASYNC
> > > > > > > > >
> > > > > > > > >  #endif
> > > > > > > > >
> > > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > > b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > > new file mode 100644
> > > > > > > > > index 0000000000..58cff16838
> > > > > > > > > --- /dev/null
> > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > > @@ -0,0 +1,18 @@
> > > > > > > > > +/** @file
> > > > > > > > >
> > > > > > > > > +  OpenSSL Library API hooks.
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +Copyright (c) 2020, Intel Corporation. All rights
> > reserved.<BR>
> > > > > > > > >
> > > > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +**/
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +#include <Uefi.h>
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +VOID *
> > > > > > > > >
> > > > > > > > > +__imp_RtlVirtualUnwind (
> > > > > > > > >
> > > > > > > > > +  VOID *    Args
> > > > > > > > >
> > > > > > > > > +  )
> > > > > > > > >
> > > > > > > > > +{
> > > > > > > > >
> > > > > > > > > +  return NULL;
> > > > > > > > >
> > > > > > > > > +}
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > diff --git
> > a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > > new file mode 100644
> > > > > > > > > index 0000000000..ef20d2b84e
> > > > > > > > > --- /dev/null
> > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > > @@ -0,0 +1,34 @@
> > > > > > > > > +/** @file
> > > > > > > > >
> > > > > > > > > +  Constructor to initialize CPUID data for OpenSSL
assembly
> > > > > operations.
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +Copyright (c) 2020, Intel Corporation. All rights
> > reserved.<BR>
> > > > > > > > >
> > > > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +**/
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +#include <Uefi.h>
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +extern void OPENSSL_cpuid_setup (void);
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +/**
> > > > > > > > >
> > > > > > > > > +  Constructor routine for OpensslLib.
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +  The constructor calls an internal OpenSSL function
which
> > fetches
> > > > a
> > > > > > > local
> > > > > > > > copy
> > > > > > > > >
> > > > > > > > > +  of the hardware capability flags, used to enable native
> > crypto
> > > > > > > > instructions.
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +  @param  None
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +  @retval EFI_SUCCESS         The construction
> succeeded.
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +**/
> > > > > > > > >
> > > > > > > > > +EFI_STATUS
> > > > > > > > >
> > > > > > > > > +EFIAPI
> > > > > > > > >
> > > > > > > > > +OpensslLibConstructor (
> > > > > > > > >
> > > > > > > > > +  VOID
> > > > > > > > >
> > > > > > > > > +  )
> > > > > > > > >
> > > > > > > > > +{
> > > > > > > > >
> > > > > > > > > +  OPENSSL_cpuid_setup ();
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +  return EFI_SUCCESS;
> > > > > > > > >
> > > > > > > > > +}
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > index 57ce195394..472f59bc8e 100755
> > > > > > > > > --- a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > @@ -9,9 +9,63 @@
> > > > > > > > >  # do not need to do this, since the results are stored in
the
> > EDK2
> > > > > > > > >
> > > > > > > > >  # git repository for them.
> > > > > > > > >
> > > > > > > > >  #
> > > > > > > > >
> > > > > > > > > +# Due to the script wrapping required to process the
OpenSSL
> > > > > > > > >
> > > > > > > > > +# configuration data, each native architecture must be
> > processed
> > > > > > > > >
> > > > > > > > > +# individually by the maintainer (in addition to the
standard
> > > > version):
> > > > > > > > >
> > > > > > > > > +#   ./process_files.pl
> > > > > > > > >
> > > > > > > > > +#   ./process_files.pl X64
> > > > > > > > >
> > > > > > > > > +#   ./process_files.pl [Arch]
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > >  use strict;
> > > > > > > > >
> > > > > > > > >  use Cwd;
> > > > > > > > >
> > > > > > > > >  use File::Copy;
> > > > > > > > >
> > > > > > > > > +use File::Basename;
> > > > > > > > >
> > > > > > > > > +use File::Path qw(make_path remove_tree);
> > > > > > > > >
> > > > > > > > > +use Text::Tabs;
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +#
> > > > > > > > >
> > > > > > > > > +# OpenSSL perlasm generator script does not transfer the
> > copyright
> > > > > > > header
> > > > > > > > >
> > > > > > > > > +#
> > > > > > > > >
> > > > > > > > > +sub copy_license_header
> > > > > > > > >
> > > > > > > > > +{
> > > > > > > > >
> > > > > > > > > +    my @args = split / /, shift;    #Separate args by
spaces
> > > > > > > > >
> > > > > > > > > +    my $source = $args[1];          #Source file is
second
> > (after
> > > > > > > "perl")
> > > > > > > > >
> > > > > > > > > +    my $target = pop @args;         #Target file is
always
> > last
> > > > > > > > >
> > > > > > > > > +    chop ($target);                 #Remove newline
> char
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +    my $temp_file_name = "license.tmp";
> > > > > > > > >
> > > > > > > > > +    open (my $source_file, "<" . $source) || die $source;
> > > > > > > > >
> > > > > > > > > +    open (my $target_file, "<" . $target) || die $target;
> > > > > > > > >
> > > > > > > > > +    open (my $temp_file, ">" . $temp_file_name) || die
> > > > > $temp_file_name;
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +    #Add "generated file" warning
> > > > > > > > >
> > > > > > > > > +    $source =~ s/^..//;             #Remove leading "./"
> > > > > > > > >
> > > > > > > > > +    print ($temp_file "; WARNING: do not edit!\r\n");
> > > > > > > > >
> > > > > > > > > +    print ($temp_file "; Generated from $source\r\n");
> > > > > > > > >
> > > > > > > > > +    print ($temp_file ";\r\n");
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +    #Copy source file header to temp file
> > > > > > > > >
> > > > > > > > > +    while (my $line = <$source_file>) {
> > > > > > > > >
> > > > > > > > > +        next if ($line =~ /#!/);    #Ignore shebang line
> > > > > > > > >
> > > > > > > > > +        $line =~ s/#/;/;            #Fix comment
> character for
> > > > assembly
> > > > > > > > >
> > > > > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing
> whitepsace,
> > > > fixup
> > > > > > > line
> > > > > > > > endings
> > > > > > > > >
> > > > > > > > > +        print ($temp_file $line);
> > > > > > > > >
> > > > > > > > > +        last if ($line =~ /http/);  #Last line of
copyright
> > header
> > > > > > > > contains a web link
> > > > > > > > >
> > > > > > > > > +    }
> > > > > > > > >
> > > > > > > > > +    print ($temp_file "\r\n");
> > > > > > > > >
> > > > > > > > > +    #Retrieve generated assembly contents
> > > > > > > > >
> > > > > > > > > +    while (my $line = <$target_file>) {
> > > > > > > > >
> > > > > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing
> whitepsace,
> > > > fixup
> > > > > > > line
> > > > > > > > endings
> > > > > > > > >
> > > > > > > > > +        print ($temp_file expand ($line));  #expand()
> replaces
> > > > tabs with
> > > > > > > > spaces
> > > > > > > > >
> > > > > > > > > +    }
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +    close ($source_file);
> > > > > > > > >
> > > > > > > > > +    close ($target_file);
> > > > > > > > >
> > > > > > > > > +    close ($temp_file);
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +    move ($temp_file_name, $target) ||
> > > > > > > > >
> > > > > > > > > +        die "Cannot replace \"" . $target . "\"!";
> > > > > > > > >
> > > > > > > > > +}
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >  #
> > > > > > > > >
> > > > > > > > >  # Find the openssl directory name for use lib. We have to
do
> > this
> > > > > > > > >
> > > > > > > > > @@ -21,10 +75,41 @@ use File::Copy;
> > > > > > > > >  #
> > > > > > > > >
> > > > > > > > >  my $inf_file;
> > > > > > > > >
> > > > > > > > >  my $OPENSSL_PATH;
> > > > > > > > >
> > > > > > > > > +my $uefi_config;
> > > > > > > > >
> > > > > > > > > +my $extension;
> > > > > > > > >
> > > > > > > > > +my $arch;
> > > > > > > > >
> > > > > > > > >  my @inf;
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >  BEGIN {
> > > > > > > > >
> > > > > > > > >      $inf_file = "OpensslLib.inf";
> > > > > > > > >
> > > > > > > > > +    $uefi_config = "UEFI";
> > > > > > > > >
> > > > > > > > > +    $arch = shift;
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +    if (defined $arch) {
> > > > > > > > >
> > > > > > > > > +        if (uc ($arch) eq "X64") {
> > > > > > > > >
> > > > > > > > > +            $arch = "X64";
> > > > > > > > >
> > > > > > > > > +            $inf_file = "OpensslLibX64.inf";
> > > > > > > > >
> > > > > > > > > +            $uefi_config = "UEFI-x86_64";
> > > > > > > > >
> > > > > > > > > +            $extension = "nasm";
> > > > > > > > >
> > > > > > > > > +        } else {
> > > > > > > > >
> > > > > > > > > +            die "Unsupported architecture \"" . $arch .
> "\"!";
> > > > > > > > >
> > > > > > > > > +        }
> > > > > > > > >
> > > > > > > > > +        if ($extension eq "nasm") {
> > > > > > > > >
> > > > > > > > > +            if (`nasm -v 2>&1`) {
> > > > > > > > >
> > > > > > > > > +                #Presence of nasm executable will trigger
> > > > inclusion of
> > > > > > > AVX
> > > > > > > > instructions
> > > > > > > > >
> > > > > > > > > +                die "\nCannot run assembly generators
> with
> > NASM in
> > > > > > > > path!\n\n";
> > > > > > > > >
> > > > > > > > > +            }
> > > > > > > > >
> > > > > > > > > +        }
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +        # Prepare assembly folder
> > > > > > > > >
> > > > > > > > > +        if (-d $arch) {
> > > > > > > > >
> > > > > > > > > +            remove_tree ($arch, {safe => 1}) ||
> > > > > > > > >
> > > > > > > > > +                die "Cannot clean assembly folder \"" .
> $arch
> > .
> > > > "\"!";
> > > > > > > > >
> > > > > > > > > +        } else {
> > > > > > > > >
> > > > > > > > > +            mkdir $arch ||
> > > > > > > > >
> > > > > > > > > +                die "Cannot create assembly folder \"" .
> $arch
> > .
> > > > "\"!";
> > > > > > > > >
> > > > > > > > > +        }
> > > > > > > > >
> > > > > > > > > +    }
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >      # Read the contents of the inf file
> > > > > > > > >
> > > > > > > > >      open( FD, "<" . $inf_file ) ||
> > > > > > > > >
> > > > > > > > > @@ -47,9 +132,9 @@ BEGIN {
> > > > > > > > >              # Configure UEFI
> > > > > > > > >
> > > > > > > > >              system(
> > > > > > > > >
> > > > > > > > >                  "./Configure",
> > > > > > > > >
> > > > > > > > > -                "UEFI",
> > > > > > > > >
> > > > > > > > > +                "--config=../uefi-asm.conf",
> > > > > > > > >
> > > > > > > > > +                "$uefi_config",
> > > > > > > > >
> > > > > > > > >                  "no-afalgeng",
> > > > > > > > >
> > > > > > > > > -                "no-asm",
> > > > > > > > >
> > > > > > > > >                  "no-async",
> > > > > > > > >
> > > > > > > > >                  "no-autoerrinit",
> > > > > > > > >
> > > > > > > > >                  "no-autoload-config",
> > > > > > > > >
> > > > > > > > > @@ -129,23 +214,53 @@ BEGIN {
> > > > > > > > >  # Retrieve file lists from OpenSSL configdata
> > > > > > > > >
> > > > > > > > >  #
> > > > > > > > >
> > > > > > > > >  use configdata qw/%unified_info/;
> > > > > > > > >
> > > > > > > > > +use configdata qw/%config/;
> > > > > > > > >
> > > > > > > > > +use configdata qw/%target/;
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +#
> > > > > > > > >
> > > > > > > > > +# Collect build flags from configdata
> > > > > > > > >
> > > > > > > > > +#
> > > > > > > > >
> > > > > > > > > +my $flags = "";
> > > > > > > > >
> > > > > > > > > +foreach my $f (@{$config{lib_defines}}) {
> > > > > > > > >
> > > > > > > > > +    $flags .= " -D$f";
> > > > > > > > >
> > > > > > > > > +}
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >  my @cryptofilelist = ();
> > > > > > > > >
> > > > > > > > >  my @sslfilelist = ();
> > > > > > > > >
> > > > > > > > > +my @asmfilelist = ();
> > > > > > > > >
> > > > > > > > > +my @asmbuild = ();
> > > > > > > > >
> > > > > > > > >  foreach my $product ((@{$unified_info{libraries}},
> > > > > > > > >
> > > > > > > > >                        @{$unified_info{engines}})) {
> > > > > > > > >
> > > > > > > > >      foreach my $o (@{$unified_info{sources}->{$product}})
> {
> > > > > > > > >
> > > > > > > > >          foreach my $s (@{$unified_info{sources}->{$o}}) {
> > > > > > > > >
> > > > > > > > > -            next if ($unified_info{generate}->{$s});
> > > > > > > > >
> > > > > > > > > -            next if $s =~ "crypto/bio/b_print.c";
> > > > > > > > >
> > > > > > > > > -
> > > > > > > > >
> > > > > > > > >              # No need to add unused files in UEFI.
> > > > > > > > >
> > > > > > > > >              # So it can reduce porting time, compile
time,
> > library
> > > > size.
> > > > > > > > >
> > > > > > > > > +            next if $s =~ "crypto/bio/b_print.c";
> > > > > > > > >
> > > > > > > > >              next if $s =~ "crypto/rand/randfile.c";
> > > > > > > > >
> > > > > > > > >              next if $s =~ "crypto/store/";
> > > > > > > > >
> > > > > > > > >              next if $s =~ "crypto/err/err_all.c";
> > > > > > > > >
> > > > > > > > >              next if $s =~ "crypto/aes/aes_ecb.c";
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > +            if ($unified_info{generate}->{$s}) {
> > > > > > > > >
> > > > > > > > > +                if (defined $arch) {
> > > > > > > > >
> > > > > > > > > +                    my $buildstring = "perl";
> > > > > > > > >
> > > > > > > > > +                    foreach my $arg
> > (@{$unified_info{generate}-
> > > > >{$s}}) {
> > > > > > > > >
> > > > > > > > > +                        if ($arg =~ ".pl") {
> > > > > > > > >
> > > > > > > > > +                            $buildstring .=
> " ./openssl/$arg";
> > > > > > > > >
> > > > > > > > > +                        } elsif ($arg =~
> "PERLASM_SCHEME") {
> > > > > > > > >
> > > > > > > > > +                            $buildstring .= "
> > > > $target{perlasm_scheme}";
> > > > > > > > >
> > > > > > > > > +                        } elsif ($arg =~ "LIB_CFLAGS") {
> > > > > > > > >
> > > > > > > > > +                            $buildstring .= "$flags";
> > > > > > > > >
> > > > > > > > > +                        }
> > > > > > > > >
> > > > > > > > > +                    }
> > > > > > > > >
> > > > > > > > > +                    ($s, my $path, undef) = fileparse($s,
> > > > qr/\.[^.]*/);
> > > > > > > > >
> > > > > > > > > +                    $buildstring .= "
> > ./$arch/$path$s.$extension";
> > > > > > > > >
> > > > > > > > > +                    make_path ("./$arch/$path");
> > > > > > > > >
> > > > > > > > > +                    push @asmbuild, "$buildstring\n";
> > > > > > > > >
> > > > > > > > > +                    push @asmfilelist, "
> > > > $arch/$path$s.$extension\r\n";
> > > > > > > > >
> > > > > > > > > +                }
> > > > > > > > >
> > > > > > > > > +                next;
> > > > > > > > >
> > > > > > > > > +            }
> > > > > > > > >
> > > > > > > > >              if ($product =~ "libssl") {
> > > > > > > > >
> > > > > > > > >                  push @sslfilelist, '  $(OPENSSL_PATH)/' .
> $s .
> > > > "\r\n";
> > > > > > > > >
> > > > > > > > >                  next;
> > > > > > > > >
> > > > > > > > > @@ -183,15 +298,31 @@ foreach (@headers){
> > > > > > > > >  }
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > +#
> > > > > > > > >
> > > > > > > > > +# Generate assembly files
> > > > > > > > >
> > > > > > > > > +#
> > > > > > > > >
> > > > > > > > > +if (@asmbuild) {
> > > > > > > > >
> > > > > > > > > +    print "\n--> Generating assembly files ... ";
> > > > > > > > >
> > > > > > > > > +    foreach my $buildstring (@asmbuild) {
> > > > > > > > >
> > > > > > > > > +        system ("$buildstring");
> > > > > > > > >
> > > > > > > > > +        copy_license_header ($buildstring);
> > > > > > > > >
> > > > > > > > > +    }
> > > > > > > > >
> > > > > > > > > +    print "Done!";
> > > > > > > > >
> > > > > > > > > +}
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > >  #
> > > > > > > > >
> > > > > > > > >  # Update OpensslLib.inf with autogenerated file list
> > > > > > > > >
> > > > > > > > >  #
> > > > > > > > >
> > > > > > > > >  my @new_inf = ();
> > > > > > > > >
> > > > > > > > >  my $subbing = 0;
> > > > > > > > >
> > > > > > > > > -print "\n--> Updating OpensslLib.inf ... ";
> > > > > > > > >
> > > > > > > > > +print "\n--> Updating $inf_file ... ";
> > > > > > > > >
> > > > > > > > >  foreach (@inf) {
> > > > > > > > >
> > > > > > > > > +    if ($_ =~ "DEFINE OPENSSL_FLAGS_CONFIG") {
> > > > > > > > >
> > > > > > > > > +        push @new_inf, "  DEFINE
> OPENSSL_FLAGS_CONFIG    =" .
> > > > $flags
> > > > > .
> > > > > > > > "\r\n";
> > > > > > > > >
> > > > > > > > > +        next;
> > > > > > > > >
> > > > > > > > > +    }
> > > > > > > > >
> > > > > > > > >      if ( $_ =~ "# Autogenerated files list starts here" )
{
> > > > > > > > >
> > > > > > > > > -        push @new_inf, $_, @cryptofilelist, @sslfilelist;
> > > > > > > > >
> > > > > > > > > +        push @new_inf, $_, @asmfilelist, @cryptofilelist,
> > > > @sslfilelist;
> > > > > > > > >
> > > > > > > > >          $subbing = 1;
> > > > > > > > >
> > > > > > > > >          next;
> > > > > > > > >
> > > > > > > > >      }
> > > > > > > > >
> > > > > > > > > @@ -216,49 +347,51 @@ rename( $new_inf_file, $inf_file )
||
> > > > > > > > >      die "rename $inf_file";
> > > > > > > > >
> > > > > > > > >  print "Done!";
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > -#
> > > > > > > > >
> > > > > > > > > -# Update OpensslLibCrypto.inf with auto-generated file
list
> > (no
> > > > libssl)
> > > > > > > > >
> > > > > > > > > -#
> > > > > > > > >
> > > > > > > > > -$inf_file = "OpensslLibCrypto.inf";
> > > > > > > > >
> > > > > > > > > -
> > > > > > > > >
> > > > > > > > > -# Read the contents of the inf file
> > > > > > > > >
> > > > > > > > > -@inf = ();
> > > > > > > > >
> > > > > > > > > -@new_inf = ();
> > > > > > > > >
> > > > > > > > > -open( FD, "<" . $inf_file ) ||
> > > > > > > > >
> > > > > > > > > -    die "Cannot open \"" . $inf_file . "\"!";
> > > > > > > > >
> > > > > > > > > -@inf = (<FD>);
> > > > > > > > >
> > > > > > > > > -close(FD) ||
> > > > > > > > >
> > > > > > > > > -    die "Cannot close \"" . $inf_file . "\"!";
> > > > > > > > >
> > > > > > > > > +if (!defined $arch) {
> > > > > > > > >
> > > > > > > > > +    #
> > > > > > > > >
> > > > > > > > > +    # Update OpensslLibCrypto.inf with auto-generated
file
> > list
> > > > (no
> > > > > > > > libssl)
> > > > > > > > >
> > > > > > > > > +    #
> > > > > > > > >
> > > > > > > > > +    $inf_file = "OpensslLibCrypto.inf";
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > -$subbing = 0;
> > > > > > > > >
> > > > > > > > > -print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > > > > > >
> > > > > > > > > -foreach (@inf) {
> > > > > > > > >
> > > > > > > > > -    if ( $_ =~ "# Autogenerated files list starts here" )
{
> > > > > > > > >
> > > > > > > > > -        push @new_inf, $_, @cryptofilelist;
> > > > > > > > >
> > > > > > > > > -        $subbing = 1;
> > > > > > > > >
> > > > > > > > > -        next;
> > > > > > > > >
> > > > > > > > > -    }
> > > > > > > > >
> > > > > > > > > -    if ( $_ =~ "# Autogenerated files list ends here" ) {
> > > > > > > > >
> > > > > > > > > -        push @new_inf, $_;
> > > > > > > > >
> > > > > > > > > -        $subbing = 0;
> > > > > > > > >
> > > > > > > > > -        next;
> > > > > > > > >
> > > > > > > > > +    # Read the contents of the inf file
> > > > > > > > >
> > > > > > > > > +    @inf = ();
> > > > > > > > >
> > > > > > > > > +    @new_inf = ();
> > > > > > > > >
> > > > > > > > > +    open( FD, "<" . $inf_file ) ||
> > > > > > > > >
> > > > > > > > > +        die "Cannot open \"" . $inf_file . "\"!";
> > > > > > > > >
> > > > > > > > > +    @inf = (<FD>);
> > > > > > > > >
> > > > > > > > > +    close(FD) ||
> > > > > > > > >
> > > > > > > > > +        die "Cannot close \"" . $inf_file . "\"!";
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +    $subbing = 0;
> > > > > > > > >
> > > > > > > > > +    print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > > > > > >
> > > > > > > > > +    foreach (@inf) {
> > > > > > > > >
> > > > > > > > > +        if ( $_ =~ "# Autogenerated files list starts
here" )
> > {
> > > > > > > > >
> > > > > > > > > +            push @new_inf, $_, @cryptofilelist;
> > > > > > > > >
> > > > > > > > > +            $subbing = 1;
> > > > > > > > >
> > > > > > > > > +            next;
> > > > > > > > >
> > > > > > > > > +        }
> > > > > > > > >
> > > > > > > > > +        if ( $_ =~ "# Autogenerated files list ends here"
) {
> > > > > > > > >
> > > > > > > > > +            push @new_inf, $_;
> > > > > > > > >
> > > > > > > > > +            $subbing = 0;
> > > > > > > > >
> > > > > > > > > +            next;
> > > > > > > > >
> > > > > > > > > +        }
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +        push @new_inf, $_
> > > > > > > > >
> > > > > > > > > +            unless ($subbing);
> > > > > > > > >
> > > > > > > > >      }
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > -    push @new_inf, $_
> > > > > > > > >
> > > > > > > > > -        unless ($subbing);
> > > > > > > > >
> > > > > > > > > +    $new_inf_file = $inf_file . ".new";
> > > > > > > > >
> > > > > > > > > +    open( FD, ">" . $new_inf_file ) ||
> > > > > > > > >
> > > > > > > > > +        die $new_inf_file;
> > > > > > > > >
> > > > > > > > > +    print( FD @new_inf ) ||
> > > > > > > > >
> > > > > > > > > +        die $new_inf_file;
> > > > > > > > >
> > > > > > > > > +    close(FD) ||
> > > > > > > > >
> > > > > > > > > +        die $new_inf_file;
> > > > > > > > >
> > > > > > > > > +    rename( $new_inf_file, $inf_file ) ||
> > > > > > > > >
> > > > > > > > > +        die "rename $inf_file";
> > > > > > > > >
> > > > > > > > > +    print "Done!";
> > > > > > > > >
> > > > > > > > >  }
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > -$new_inf_file = $inf_file . ".new";
> > > > > > > > >
> > > > > > > > > -open( FD, ">" . $new_inf_file ) ||
> > > > > > > > >
> > > > > > > > > -    die $new_inf_file;
> > > > > > > > >
> > > > > > > > > -print( FD @new_inf ) ||
> > > > > > > > >
> > > > > > > > > -    die $new_inf_file;
> > > > > > > > >
> > > > > > > > > -close(FD) ||
> > > > > > > > >
> > > > > > > > > -    die $new_inf_file;
> > > > > > > > >
> > > > > > > > > -rename( $new_inf_file, $inf_file ) ||
> > > > > > > > >
> > > > > > > > > -    die "rename $inf_file";
> > > > > > > > >
> > > > > > > > > -print "Done!";
> > > > > > > > >
> > > > > > > > > -
> > > > > > > > >
> > > > > > > > >  #
> > > > > > > > >
> > > > > > > > >  # Copy opensslconf.h and dso_conf.h generated from
> OpenSSL
> > > > > > Configuration
> > > > > > > > >
> > > > > > > > >  #
> > > > > > > > >
> > > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > > b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > > new file mode 100644
> > > > > > > > > index 0000000000..55eedbf3ba
> > > > > > > > > --- /dev/null
> > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > > @@ -0,0 +1,15 @@
> > > > > > > > > +## -*- mode: perl; -*-
> > > > > > > > >
> > > > > > > > > +## UEFI assembly openssl configuration targets.
> > > > > > > > >
> > > > > > > > > +
> > > > > > > > >
> > > > > > > > > +my %targets = (
> > > > > > > > >
> > > > > > > > > +#### UEFI
> > > > > > > > >
> > > > > > > > > +    "UEFI-x86_64" => {
> > > > > > > > >
> > > > > > > > > +        perlasm_scheme  => "nasm",
> > > > > > > > >
> > > > > > > > > +        # inherit_from    => [ "UEFI",
> asm("x86_64_asm") ],
> > > > > > > > >
> > > > > > > > > +        inherit_from    => [ "UEFI" ],
> > > > > > > > >
> > > > > > > > > +        cpuid_asm_src   => "x86_64cpuid.s",
> > > > > > > > >
> > > > > > > > > +        aes_asm_src     => "aes_core.c aes_cbc.c vpaes-
> > x86_64.s
> > > > aesni-
> > > > > > > > x86_64.s
> > > > > > > > > aesni-sha1-x86_64.s aesni-sha256-x86_64.s
> aesni-mb-x86_64.s",
> > > > > > > > >
> > > > > > > > > +        sha1_asm_src    => "sha1-x86_64.s
> sha256-x86_64.s
> > sha512-
> > > > > > > x86_64.s
> > > > > > > > > sha1-mb-x86_64.s sha256-mb-x86_64.s",
> > > > > > > > >
> > > > > > > > > +        modes_asm_src   => "ghash-x86_64.s",
> > > > > > > > >
> > > > > > > > > +    },
> > > > > > > > >
> > > > > > > > > +);
> > > > > > > > >
> > > > > > > > > --
> > > > > > > > > 2.28.0.windows.1
> > > > > > >
> > > > > > >
> > > > > > >
> > > > >
> > > > >
> > > > >
> 
> 
> 
> 
> 




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

* Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
  2020-09-25  0:49                   ` 回复: " gaoliming
@ 2020-09-25  1:06                     ` Zurcher, Christopher J
  2020-09-25  1:11                       ` Yao, Jiewen
  0 siblings, 1 reply; 42+ messages in thread
From: Zurcher, Christopher J @ 2020-09-25  1:06 UTC (permalink / raw)
  To: devel@edk2.groups.io, gaoliming@byosoft.com.cn, Yao, Jiewen,
	Jiang, Guomin
  Cc: Wang, Jian J, Lu, XiaoyuX, 'Ard Biesheuvel'

I've discovered the failure was because CryptoPkg includes its own stddef.h which is a wrapper for CrtLibSupport.h
I have added the required definitions to this file and have resolved the error:
typedef INTN           ptrdiff_t;
typedef UINT32         wchar_t;

Thanks,
Christopher Zurcher

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of gaoliming
> Sent: Thursday, September 24, 2020 17:49
> To: devel@edk2.groups.io; Zurcher, Christopher J
> <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Jiang,
> Guomin <guomin.jiang@intel.com>
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> 'Ard Biesheuvel' <ard.biesheuvel@linaro.org>
> Subject: 回复: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> instruction support for X64
> 
> Zurcher:
>   Can you specify the detail build step to reproduce the build error with
> CLANGPDB tool chain?
> 
> Thanks
> Liming
> > -----邮件原件-----
> > 发件人: bounce+27952+65588+4905953+8761045@groups.io
> > <bounce+27952+65588+4905953+8761045@groups.io> 代表 Zurcher,
> > Christopher J
> > 发送时间: 2020年9月25日 8:28
> > 收件人: Yao, Jiewen <jiewen.yao@intel.com>; Jiang, Guomin
> > <guomin.jiang@intel.com>; devel@edk2.groups.io
> > 抄送: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > 主题: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > instruction support for X64
> >
> > I was able to successfully build and run the non-optimized code with LLVM,
> > but the optimized version returns this error during build:
> >
> > C:\Program Files\LLVM\lib\clang\9.0.0\include\stdatomic.h:91:17: error:
> > unknown type name 'wchar_t'
> > typedef _Atomic(wchar_t)            atomic_wchar_t;
> >
> > Is there a known build issue with CLANGPDB and the stdatomic.h file?
> >
> > Thanks,
> > Christopher Zurcher
> >
> > > -----Original Message-----
> > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > Sent: Tuesday, September 22, 2020 19:35
> > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>; Jiang,
> Guomin
> > > <guomin.jiang@intel.com>; devel@edk2.groups.io
> > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > <xiaoyux.lu@intel.com>;
> > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> native
> > > instruction support for X64
> > >
> > > For GCC, please refer to
> > > https://github.com/tianocore/tianocore.github.io/wiki/Using-EDK-II-with-
> > > Native-GCC
> > >
> > > For LLVM, please refer to
> > > https://github.com/tianocore/tianocore.github.io/wiki/CLANG9-Tools-Chain
> > >
> > > Thank you
> > > Yao Jiewen
> > >
> > > > -----Original Message-----
> > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > Sent: Tuesday, September 22, 2020 11:22 PM
> > > > To: Jiang, Guomin <guomin.jiang@intel.com>; devel@edk2.groups.io; Yao,
> > > > Jiewen <jiewen.yao@intel.com>
> > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > <xiaoyux.lu@intel.com>;
> > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > native
> > > > instruction support for X64
> > > >
> > > > I have unit tested SHA1, SHA512, and AES as well.
> > > > I do not have the build environment available to test GCC and LLVM.
> > > >
> > > > --
> > > > Christopher Zurcher
> > > >
> > > > > -----Original Message-----
> > > > > From: Jiang, Guomin <guomin.jiang@intel.com>
> > > > > Sent: Wednesday, September 16, 2020 02:17
> > > > > To: devel@edk2.groups.io; Yao, Jiewen <jiewen.yao@intel.com>;
> > Zurcher,
> > > > > Christopher J <christopher.j.zurcher@intel.com>
> > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > <xiaoyux.lu@intel.com>;
> > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > native
> > > > > instruction support for X64
> > > > >
> > > > > Hi Zurcher,
> > > > >
> > > > > > [Jiewen] Since you also add other sha (sha1, sha512) and aesni, I
> think
> > > > > those
> > > > > > need unit test for them too.
> > > > >
> > > > > Can you update the status about it?
> > > > >
> > > > > > [Jiewen] I think we need support build with GCC and LLVM, and with
> > X64.
> > > > >
> > > > > It is better to support the GCC and LLVM.
> > > > >
> > > > > Thanks
> > > > > Guomin
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> > Yao,
> > > > > > Jiewen
> > > > > > Sent: Tuesday, August 25, 2020 7:36 AM
> > > > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > > > > > devel@edk2.groups.io
> > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > > native
> > > > > > instruction support for X64
> > > > > >
> > > > > > Below:
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > > > > Sent: Tuesday, August 25, 2020 5:26 AM
> > > > > > > To: devel@edk2.groups.io; Zurcher, Christopher J
> > > > > > > <christopher.j.zurcher@intel.com>; Yao, Jiewen
> > <jiewen.yao@intel.com>
> > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib:
> Add
> > > native
> > > > > > > instruction support for X64
> > > > > > >
> > > > > > > 1) I have confirmed that the ApiHooks.c file is still required
> even
> > > > > without
> > > > > > the AVX
> > > > > > > instructions included. The x86_64 assembly files in OpenSSL set
> a
> > > flag
> > > > > called
> > > > > > > $win64 and automatically include calls to the RtlVirtualUnwind
> > > function
> > > > > if
> > > > > > NASM
> > > > > > > is selected as the assembler scheme.
> > > > > > >
> > > > > > >
> > https://docs.microsoft.com/en-us/windows/win32/api/winnt/nf-winnt-
> > > > > > > rtlvirtualunwind
> > > > > > >
> > > > > > > I have submitted an issue against OpenSSL since I don't think
> using
> > > the
> > > > > > NASM
> > > > > > > assembler should force the inclusion of Windows-specific API
> hooks,
> > > but
> > > > > > that
> > > > > > > change cannot be made in OpenSSL 1.1.1 and we will have to wait
> > for
> > > > > > OpenSSL 3
> > > > > > > or later to remove the stub function.
> > > > > > >
> > > > > > > https://github.com/openssl/openssl/issues/12712
> > > > > > >
> > > > > >
> > > > > > [Jiewen] Thanks.
> > > > > >
> > > > > > > 2) So far I have only built with VS.
> > > > > > >
> > > > > >
> > > > > > [Jiewen] I think we need support build with GCC and LLVM, and with
> > X64.
> > > > > >
> > > > > >
> > > > > > > 3) The X64 SHA256 implementation was successfully exercised
> > across a
> > > > > > large
> > > > > > > number of devices in a production environment as a verification
> step
> > > in a
> > > > > > multi-
> > > > > > > GB data transfer scenario.
> > > > > > >
> > > > > >
> > > > > > [Jiewen] Since you also add other sha (sha1, sha512) and aesni, I
> think
> > > > > those
> > > > > > need unit test for them too.
> > > > > >
> > > > > >
> > > > > > > Thanks,
> > > > > > > Christopher Zurcher
> > > > > > >
> > > > > > > > -----Original Message-----
> > > > > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf
> > Of
> > > > > > Zurcher,
> > > > > > > > Christopher J
> > > > > > > > Sent: Tuesday, August 18, 2020 15:50
> > > > > > > > To: Yao, Jiewen <jiewen.yao@intel.com>; devel@edk2.groups.io
> > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib:
> > Add
> > > > > > native
> > > > > > > > instruction support for X64
> > > > > > > >
> > > > > > > > After further review, the ApiHooks.c file may no longer be
> needed
> > > since
> > > > > > we
> > > > > > > > are no longer including the AVX instructions. I will look over
> the
> > > > > > > > dependencies and send a new patch set if I can eliminate the
> API
> > > hooks
> > > > > > file.
> > > > > > > >
> > > > > > > > Thanks,
> > > > > > > > Christopher Zurcher
> > > > > > > >
> > > > > > > > > -----Original Message-----
> > > > > > > > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > > > > > > > Sent: Thursday, August 13, 2020 08:04
> > > > > > > > > To: Zurcher, Christopher J
> <christopher.j.zurcher@intel.com>;
> > > > > > > > > devel@edk2.groups.io
> > > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > > Subject: RE: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > > > > instruction
> > > > > > > > > support for X64
> > > > > > > > >
> > > > > > > > > Hi Christopher
> > > > > > > > > Thanks.
> > > > > > > > >
> > > > > > > > > 1) Would you please help me understand more on "ApiHooks.c
> > > contains
> > > > > > a
> > > > > > > stub
> > > > > > > > > function for a Windows API call" ?
> > > > > > > > > Why we need this?
> > > > > > > > > If it is compiler specific in openssl, should we submit
> patch to
> > > > > openssl to
> > > > > > > > > exclude this with OPENSSL_SYS_UEFI? That should be a cleaner
> > > solution
> > > > > > for
> > > > > > > > > UEFI.
> > > > > > > > >
> > > > > > > > > 2) Would you please describe what compiler you have tried?
> VS?
> > > GCC?
> > > > > > LLVM?
> > > > > > > > >
> > > > > > > > > 3) Would you please describe what unit test you have done?
> > > > > > > > >
> > > > > > > > > Thank you
> > > > > > > > > Yao Jiewen
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > > -----Original Message-----
> > > > > > > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.
> com>
> > > > > > > > > > Sent: Tuesday, August 4, 2020 8:24 AM
> > > > > > > > > > To: devel@edk2.groups.io
> > > > > > > > > > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> > > > > > > > > <jian.j.wang@intel.com>;
> > > > > > > > > > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > > > > > > > > <ard.biesheuvel@linaro.org>
> > > > > > > > > > Subject: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > > > instruction
> > > > > > > > > support
> > > > > > > > > > for X64
> > > > > > > > > >
> > > > > > > > > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> > > > > > > > > >
> > > > > > > > > > Adding OpensslLibX64.inf and modifying process_files.pl to
> > > process
> > > > > > this
> > > > > > > > > > file and generate the necessary assembly files.
> > > > > > > > > > ApiHooks.c contains a stub function for a Windows API
> call.
> > > > > > > > > > uefi-asm.conf contains the limited assembly configurations
> for
> > > > > > OpenSSL.
> > > > > > > > > >
> > > > > > > > > > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > > > > > > > > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > > > > > > > > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > > > > > > > > > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > > > Signed-off-by: Christopher J Zurcher
> > > > > > <christopher.j.zurcher@intel.com>
> > > > > > > > > > ---
> > > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLib.inf          |
> > 2 +-
> > > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf    |
> > 2 +-
> > > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibX64.inf       |
> > 656
> > > > > > > > > > ++++++++++++++++++++
> > > > > > > > > >  CryptoPkg/Library/Include/openssl/opensslconf.h      |
> > 3 -
> > > > > > > > > >  CryptoPkg/Library/OpensslLib/ApiHooks.c              |
> > 18 +
> > > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c |
> > 34 +
> > > > > > > > > >  CryptoPkg/Library/OpensslLib/process_files.pl        |
> > 223
> > > +++++--
> > > > > > > > > >  CryptoPkg/Library/OpensslLib/uefi-asm.conf           |
> > 15 +
> > > > > > > > > >  8 files changed, 903 insertions(+), 50 deletions(-)
> > > > > > > > > >
> > > > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > index dbbe5386a1..bd62d86936 100644
> > > > > > > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > @@ -16,7 +16,7 @@
> > > > > > > > > >    VERSION_STRING                 = 1.0
> > > > > > > > > >
> > > > > > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > > > > > >
> > > > > > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > > > > > >
> > > > > > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > > > >
> > > > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > > > > > DOPENSSL_NO_ASM
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >  #
> > > > > > > > > >
> > > > > > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM
> > AARCH64
> > > > > > > > > >
> > > > > > > > > > diff --git
> a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > index 616ccd9f62..2b7324a990 100644
> > > > > > > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > @@ -16,7 +16,7 @@
> > > > > > > > > >    VERSION_STRING                 = 1.0
> > > > > > > > > >
> > > > > > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > > > > > >
> > > > > > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > > > > > >
> > > > > > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > > > >
> > > > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > > > > > DOPENSSL_NO_ASM
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >  #
> > > > > > > > > >
> > > > > > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM
> > AARCH64
> > > > > > > > > >
> > > > > > > > > > diff --git
> a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > > > new file mode 100644
> > > > > > > > > > index 0000000000..825eea0254
> > > > > > > > > > --- /dev/null
> > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > > > @@ -0,0 +1,656 @@
> > > > > > > > > > +## @file
> > > > > > > > > >
> > > > > > > > > > +#  This module provides OpenSSL Library implementation.
> > > > > > > > > >
> > > > > > > > > > +#
> > > > > > > > > >
> > > > > > > > > > +#  Copyright (c) 2010 - 2020, Intel Corporation. All
> rights
> > > > > > > > reserved.<BR>
> > > > > > > > > >
> > > > > > > > > > +#  (C) Copyright 2020 Hewlett Packard Enterprise
> > Development
> > > > > > LP<BR>
> > > > > > > > > >
> > > > > > > > > > +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > > > >
> > > > > > > > > > +#
> > > > > > > > > >
> > > > > > > > > > +##
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +[Defines]
> > > > > > > > > >
> > > > > > > > > > +  INF_VERSION                    = 0x00010005
> > > > > > > > > >
> > > > > > > > > > +  BASE_NAME                      = OpensslLibX64
> > > > > > > > > >
> > > > > > > > > > +  MODULE_UNI_FILE                = OpensslLib.uni
> > > > > > > > > >
> > > > > > > > > > +  FILE_GUID                      =
> > 18125E50-0117-4DD0-BE54-
> > > > > 4784AD995FEF
> > > > > > > > > >
> > > > > > > > > > +  MODULE_TYPE                    = BASE
> > > > > > > > > >
> > > > > > > > > > +  VERSION_STRING                 = 1.0
> > > > > > > > > >
> > > > > > > > > > +  LIBRARY_CLASS                  = OpensslLib
> > > > > > > > > >
> > > > > > > > > > +  DEFINE OPENSSL_PATH            = openssl
> > > > > > > > > >
> > > > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > > > >
> > > > > > > > > > +  DEFINE OPENSSL_FLAGS_CONFIG    =
> > -DOPENSSL_CPUID_OBJ -
> > > > > > > DSHA1_ASM -
> > > > > > > > > > DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -
> > > > > > > DGHASH_ASM
> > > > > > > > > >
> > > > > > > > > > +  CONSTRUCTOR                    =
> > OpensslLibConstructor
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +#
> > > > > > > > > >
> > > > > > > > > > +#  VALID_ARCHITECTURES           = X64
> > > > > > > > > >
> > > > > > > > > > +#
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +[Sources]
> > > > > > > > > >
> > > > > > > > > > +  OpensslLibConstructor.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/e_os.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ms/uplink.h
> > > > > > > > > >
> > > > > > > > > > +# Autogenerated files list starts here
> > > > > > > > > >
> > > > > > > > > > +  X64/crypto/aes/aesni-mb-x86_64.nasm
> > > > > > > > > >
> > > > > > > > > > +  X64/crypto/aes/aesni-sha1-x86_64.nasm
> > > > > > > > > >
> > > > > > > > > > +  X64/crypto/aes/aesni-sha256-x86_64.nasm
> > > > > > > > > >
> > > > > > > > > > +  X64/crypto/aes/aesni-x86_64.nasm
> > > > > > > > > >
> > > > > > > > > > +  X64/crypto/aes/vpaes-x86_64.nasm
> > > > > > > > > >
> > > > > > > > > > +  X64/crypto/modes/ghash-x86_64.nasm
> > > > > > > > > >
> > > > > > > > > > +  X64/crypto/sha/sha1-mb-x86_64.nasm
> > > > > > > > > >
> > > > > > > > > > +  X64/crypto/sha/sha1-x86_64.nasm
> > > > > > > > > >
> > > > > > > > > > +  X64/crypto/sha/sha256-mb-x86_64.nasm
> > > > > > > > > >
> > > > > > > > > > +  X64/crypto/sha/sha256-x86_64.nasm
> > > > > > > > > >
> > > > > > > > > > +  X64/crypto/sha/sha512-x86_64.nasm
> > > > > > > > > >
> > > > > > > > > > +  X64/crypto/x86_64cpuid.nasm
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_core.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ige.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_misc.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aria/aria.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_digest.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_dup.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_gentm.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_int.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_object.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_octet.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_print.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_sign.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strex.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strnid.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_time.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_type.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utctm.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utf8.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_verify.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_par.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mime.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_moid.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_pack.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_int.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_string.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/n_pkey.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/nsseq.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_bitst.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_pkey.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_spki.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_new.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_algor.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_bignum.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_info.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_int64.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_long.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_pkey.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_sig.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_spki.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_val.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_wait.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_addr.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_dump.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock2.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_buff.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_nbio.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_null.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_cb.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_meth.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_acpt.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_bio.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_conn.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_dgram.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_fd.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_file.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_log.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_mem.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_null.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_sock.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_add.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_asm.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_blind.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_const.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_ctx.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_depr.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_dh.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_div.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp2.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gcd.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_intern.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_kron.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mod.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mont.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mpi.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mul.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_nist.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_print.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_rand.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_recp.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_shift.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqr.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_srp.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_word.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_x931p.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buf_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buffer.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cmac.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/c_zlib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_api.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mall.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mod.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_sap.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_ssl.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cpt_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cryptlib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ctype.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cversion.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_check.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_depr.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_gen.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_kdf.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_key.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_meth.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_prn.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dl.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_vms.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_win32.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ebcdic.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/err/err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/err/err_prn.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_enc.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_md.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_ok.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_allc.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_alld.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/digest.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aria.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_bf.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_camellia.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_cast.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des3.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_idea.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_null.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_old.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc2.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc5.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_seed.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_sm4.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/encode.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_cnf.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_enc.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_key.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pbe.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pkey.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md2.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md4.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_mdc2.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_null.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_ripemd.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha1.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha3.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sigver.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_wp.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/names.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_dec.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_enc.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_open.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_seal.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_sign.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_verify.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ex_data.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/getenv.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/init.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/hkdf.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/kdf_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/scrypt.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lh_stats.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_one.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mem.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mem_dbg.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mem_sec.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cbc128.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ccm128.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cfb128.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ctr128.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cts128.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/gcm128.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ocb128.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ofb128.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/wrap128.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/xts128.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_dir.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_fips.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_fopen.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_init.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_str.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_time.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/o_names.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_all.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_info.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_oth.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pk8.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pkey.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_sign.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_x509.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_xaux.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pvkfmt.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_egd.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_unix.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_vms.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_win.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_none.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/keccak1600.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1_one.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha256.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha512.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm4/sm4.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/stack/stack.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_none.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_pthread.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_win.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/txt_db/txt_db.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_null.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_util.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/uid.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_dir.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_file.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_crl.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_req.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_x509.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_att.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_cmp.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_d2.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_def.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_ext.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_lu.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_meth.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_obj.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_r2x.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_req.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_set.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_trs.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_txt.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_v3.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vfy.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vpm.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509cset.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509name.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509rset.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509spki.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509type.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_all.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_attrib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_crl.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_exten.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_name.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_pubkey.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_req.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509a.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_info.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_int.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/arm_arch.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mips_arch.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ppc_arch.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/s390x_arch.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sparc_arch.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/vms_rms.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/charmap.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/standard_methods.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/modes_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/store/store_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/bio_ssl.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_msg.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_srtp.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/methods.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/packet.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/pqueue.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_cbc.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_enc.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_msg.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_asn1.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_ciph.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_conf.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_err.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_init.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_mcnf.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_rsa.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_sess.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_stat.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_txt.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_utst.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_cust.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_clnt.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_dtls.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_srvr.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_enc.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_lib.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_trce.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/tls13_enc.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/tls_srp.c
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/packet_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert_table.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/record.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/record_local.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.h
> > > > > > > > > >
> > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_local.h
> > > > > > > > > >
> > > > > > > > > > +# Autogenerated files list ends here
> > > > > > > > > >
> > > > > > > > > > +  buildinf.h
> > > > > > > > > >
> > > > > > > > > > +  rand_pool_noise.h
> > > > > > > > > >
> > > > > > > > > > +  ossl_store.c
> > > > > > > > > >
> > > > > > > > > > +  rand_pool.c
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +[Sources.X64]
> > > > > > > > > >
> > > > > > > > > > +  rand_pool_noise_tsc.c
> > > > > > > > > >
> > > > > > > > > > +  ApiHooks.c
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +[Packages]
> > > > > > > > > >
> > > > > > > > > > +  MdePkg/MdePkg.dec
> > > > > > > > > >
> > > > > > > > > > +  CryptoPkg/CryptoPkg.dec
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +[LibraryClasses]
> > > > > > > > > >
> > > > > > > > > > +  BaseLib
> > > > > > > > > >
> > > > > > > > > > +  DebugLib
> > > > > > > > > >
> > > > > > > > > > +  TimerLib
> > > > > > > > > >
> > > > > > > > > > +  PrintLib
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +[BuildOptions]
> > > > > > > > > >
> > > > > > > > > > +  #
> > > > > > > > > >
> > > > > > > > > > +  # Disables the following Visual Studio compiler
> warnings
> > > brought
> > > > > by
> > > > > > > > > openssl
> > > > > > > > > > source,
> > > > > > > > > >
> > > > > > > > > > +  # so we do not break the build with /WX option:
> > > > > > > > > >
> > > > > > > > > > +  #   C4090: 'function' : different 'const' qualifiers
> > > > > > > > > >
> > > > > > > > > > +  #   C4132: 'object' : const object should be
> initialized
> > > > > (tls13_enc.c)
> > > > > > > > > >
> > > > > > > > > > +  #   C4210: nonstandard extension used: function given
> file
> > > scope
> > > > > > > > > >
> > > > > > > > > > +  #   C4244: conversion from type1 to type2, possible
> loss of
> > > data
> > > > > > > > > >
> > > > > > > > > > +  #   C4245: conversion from type1 to type2,
> > signed/unsigned
> > > > > > mismatch
> > > > > > > > > >
> > > > > > > > > > +  #   C4267: conversion from size_t to type, possible
> loss of
> > > data
> > > > > > > > > >
> > > > > > > > > > +  #   C4306: 'identifier' : conversion from 'type1' to
> 'type2'
> > > of
> > > > > > > > greater
> > > > > > > > > size
> > > > > > > > > >
> > > > > > > > > > +  #   C4310: cast truncates constant value
> > > > > > > > > >
> > > > > > > > > > +  #   C4389: 'operator' : signed/unsigned mismatch (xxxx)
> > > > > > > > > >
> > > > > > > > > > +  #   C4700: uninitialized local variable 'name' used.
> > > > > (conf_sap.c(71))
> > > > > > > > > >
> > > > > > > > > > +  #   C4702: unreachable code
> > > > > > > > > >
> > > > > > > > > > +  #   C4706: assignment within conditional expression
> > > > > > > > > >
> > > > > > > > > > +  #   C4819: The file contains a character that cannot be
> > > > > represented
> > > > > > in
> > > > > > > > > the
> > > > > > > > > > current code page
> > > > > > > > > >
> > > > > > > > > > +  #
> > > > > > > > > >
> > > > > > > > > > +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64
> > -U_MSC_VER
> > > > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /wd4090
> > /wd4132
> > > > > > > /wd4210
> > > > > > > > > > /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700
> > /wd4389
> > > > > > /wd4702
> > > > > > > > > > /wd4706 /wd4819
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64
> > -U_MSC_VER -
> > > > > > > U__ICC
> > > > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +  #
> > > > > > > > > >
> > > > > > > > > > +  # Suppress the following build warnings in openssl so
> we
> > > don't
> > > > > > break
> > > > > > > > the
> > > > > > > > > build
> > > > > > > > > > with -Werror
> > > > > > > > > >
> > > > > > > > > > +  #   -Werror=maybe-uninitialized: there exist some other
> > > paths
> > > > > for
> > > > > > > > which
> > > > > > > > > the
> > > > > > > > > > variable is not initialized.
> > > > > > > > > >
> > > > > > > > > > +  #   -Werror=format: Check calls to printf and scanf,
> etc.,
> > > to
> > > > > make
> > > > > > > > sure
> > > > > > > > > that the
> > > > > > > > > > arguments supplied have
> > > > > > > > > >
> > > > > > > > > > +  #                   types appropriate to the format
> > string
> > > > > specified.
> > > > > > > > > >
> > > > > > > > > > +  #   -Werror=unused-but-set-variable: Warn whenever a
> > local
> > > > > > variable is
> > > > > > > > > > assigned to, but otherwise unused (aside from its
> declaration).
> > > > > > > > > >
> > > > > > > > > > +  #
> > > > > > > > > >
> > > > > > > > > > +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64
> > > > > > $(OPENSSL_FLAGS)
> > > > > > > > > > $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized
> > -Wno-
> > > > > > > > > > error=format -Wno-format
> > -Wno-error=unused-but-set-variable -
> > > > > > > > > > DNO_MSABI_VA_FUNCS
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +  # suppress the following warnings in openssl so we
> don't
> > > break
> > > > > the
> > > > > > > > build
> > > > > > > > > with
> > > > > > > > > > warnings-as-errors:
> > > > > > > > > >
> > > > > > > > > > +  # 1295: Deprecated declaration <entity> - give arg
> types
> > > > > > > > > >
> > > > > > > > > > +  #  550: <entity> was set but never used
> > > > > > > > > >
> > > > > > > > > > +  # 1293: assignment in condition
> > > > > > > > > >
> > > > > > > > > > +  #  111: statement is unreachable (invariably "break;"
> after
> > > > > "return
> > > > > > > > X;"
> > > > > > > > > in case
> > > > > > > > > > statement)
> > > > > > > > > >
> > > > > > > > > > +  #   68: integer conversion resulted in a change of sign
> ("if
> > > > > (Status
> > > > > > > > ==
> > > > > > > > > -1)")
> > > > > > > > > >
> > > > > > > > > > +  #  177: <entity> was declared but never referenced
> > > > > > > > > >
> > > > > > > > > > +  #  223: function <entity> declared implicitly
> > > > > > > > > >
> > > > > > > > > > +  #  144: a value of type <type> cannot be used to
> initialize
> > > an
> > > > > entity
> > > > > > > > of
> > > > > > > > > type
> > > > > > > > > > <type>
> > > > > > > > > >
> > > > > > > > > > +  #  513: a value of type <type> cannot be assigned to an
> > > entity
> > > > > of
> > > > > > type
> > > > > > > > > <type>
> > > > > > > > > >
> > > > > > > > > > +  #  188: enumerated type mixed with another type (i.e.
> > > passing an
> > > > > > > > integer
> > > > > > > > > as an
> > > > > > > > > > enum without a cast)
> > > > > > > > > >
> > > > > > > > > > +  # 1296: Extended constant initialiser used
> > > > > > > > > >
> > > > > > > > > > +  #  128: loop is not reachable - may be emitted
> > > inappropriately
> > > > > if
> > > > > > code
> > > > > > > > > follows
> > > > > > > > > > a conditional return
> > > > > > > > > >
> > > > > > > > > > +  #       from the function that evaluates to true at
> > compile
> > > time
> > > > > > > > > >
> > > > > > > > > > +  #  546: transfer of control bypasses initialization -
> may be
> > > > > emitted
> > > > > > > > > > inappropriately if the uninitialized
> > > > > > > > > >
> > > > > > > > > > +  #       variable is never referenced after the jump
> > > > > > > > > >
> > > > > > > > > > +  #    1: ignore "#1-D: last line of file ends without a
> > > newline"
> > > > > > > > > >
> > > > > > > > > > +  # 3017: <entity> may be used before being set (NOTE:
> This
> > > was
> > > > > > fixed in
> > > > > > > > > > OpenSSL 1.1 HEAD with
> > > > > > > > > >
> > > > > > > > > > +  #       commit
> > d9b8b89bec4480de3a10bdaf9425db371c19145b, and
> > > > > > can
> > > > > > > be
> > > > > > > > > > dropped then.)
> > > > > > > > > >
> > > > > > > > > > +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse
> > -U_WIN32 -
> > > > > > U_WIN64
> > > > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -w -std=c99
> > -Wno-
> > > > > > > > > > error=uninitialized
> > > > > > > > > >
> > > > > > > > > > diff --git
> a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > index 3a2544ea5c..e8f73c4d10 100644
> > > > > > > > > > --- a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > +++ b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > @@ -112,9 +112,6 @@ extern "C" {
> > > > > > > > > >  #ifndef OPENSSL_NO_ASAN
> > > > > > > > > >
> > > > > > > > > >  # define OPENSSL_NO_ASAN
> > > > > > > > > >
> > > > > > > > > >  #endif
> > > > > > > > > >
> > > > > > > > > > -#ifndef OPENSSL_NO_ASM
> > > > > > > > > >
> > > > > > > > > > -# define OPENSSL_NO_ASM
> > > > > > > > > >
> > > > > > > > > > -#endif
> > > > > > > > > >
> > > > > > > > > >  #ifndef OPENSSL_NO_ASYNC
> > > > > > > > > >
> > > > > > > > > >  # define OPENSSL_NO_ASYNC
> > > > > > > > > >
> > > > > > > > > >  #endif
> > > > > > > > > >
> > > > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > > > b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > > > new file mode 100644
> > > > > > > > > > index 0000000000..58cff16838
> > > > > > > > > > --- /dev/null
> > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > > > @@ -0,0 +1,18 @@
> > > > > > > > > > +/** @file
> > > > > > > > > >
> > > > > > > > > > +  OpenSSL Library API hooks.
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +Copyright (c) 2020, Intel Corporation. All rights
> > > reserved.<BR>
> > > > > > > > > >
> > > > > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +**/
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +#include <Uefi.h>
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +VOID *
> > > > > > > > > >
> > > > > > > > > > +__imp_RtlVirtualUnwind (
> > > > > > > > > >
> > > > > > > > > > +  VOID *    Args
> > > > > > > > > >
> > > > > > > > > > +  )
> > > > > > > > > >
> > > > > > > > > > +{
> > > > > > > > > >
> > > > > > > > > > +  return NULL;
> > > > > > > > > >
> > > > > > > > > > +}
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > diff --git
> > > a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > > > new file mode 100644
> > > > > > > > > > index 0000000000..ef20d2b84e
> > > > > > > > > > --- /dev/null
> > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > > > @@ -0,0 +1,34 @@
> > > > > > > > > > +/** @file
> > > > > > > > > >
> > > > > > > > > > +  Constructor to initialize CPUID data for OpenSSL
> assembly
> > > > > > operations.
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +Copyright (c) 2020, Intel Corporation. All rights
> > > reserved.<BR>
> > > > > > > > > >
> > > > > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +**/
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +#include <Uefi.h>
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +extern void OPENSSL_cpuid_setup (void);
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +/**
> > > > > > > > > >
> > > > > > > > > > +  Constructor routine for OpensslLib.
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +  The constructor calls an internal OpenSSL function
> which
> > > fetches
> > > > > a
> > > > > > > > local
> > > > > > > > > copy
> > > > > > > > > >
> > > > > > > > > > +  of the hardware capability flags, used to enable native
> > > crypto
> > > > > > > > > instructions.
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +  @param  None
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +  @retval EFI_SUCCESS         The construction
> > succeeded.
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +**/
> > > > > > > > > >
> > > > > > > > > > +EFI_STATUS
> > > > > > > > > >
> > > > > > > > > > +EFIAPI
> > > > > > > > > >
> > > > > > > > > > +OpensslLibConstructor (
> > > > > > > > > >
> > > > > > > > > > +  VOID
> > > > > > > > > >
> > > > > > > > > > +  )
> > > > > > > > > >
> > > > > > > > > > +{
> > > > > > > > > >
> > > > > > > > > > +  OPENSSL_cpuid_setup ();
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +  return EFI_SUCCESS;
> > > > > > > > > >
> > > > > > > > > > +}
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > index 57ce195394..472f59bc8e 100755
> > > > > > > > > > --- a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > @@ -9,9 +9,63 @@
> > > > > > > > > >  # do not need to do this, since the results are stored in
> the
> > > EDK2
> > > > > > > > > >
> > > > > > > > > >  # git repository for them.
> > > > > > > > > >
> > > > > > > > > >  #
> > > > > > > > > >
> > > > > > > > > > +# Due to the script wrapping required to process the
> OpenSSL
> > > > > > > > > >
> > > > > > > > > > +# configuration data, each native architecture must be
> > > processed
> > > > > > > > > >
> > > > > > > > > > +# individually by the maintainer (in addition to the
> standard
> > > > > version):
> > > > > > > > > >
> > > > > > > > > > +#   ./process_files.pl
> > > > > > > > > >
> > > > > > > > > > +#   ./process_files.pl X64
> > > > > > > > > >
> > > > > > > > > > +#   ./process_files.pl [Arch]
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > >  use strict;
> > > > > > > > > >
> > > > > > > > > >  use Cwd;
> > > > > > > > > >
> > > > > > > > > >  use File::Copy;
> > > > > > > > > >
> > > > > > > > > > +use File::Basename;
> > > > > > > > > >
> > > > > > > > > > +use File::Path qw(make_path remove_tree);
> > > > > > > > > >
> > > > > > > > > > +use Text::Tabs;
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +#
> > > > > > > > > >
> > > > > > > > > > +# OpenSSL perlasm generator script does not transfer the
> > > copyright
> > > > > > > > header
> > > > > > > > > >
> > > > > > > > > > +#
> > > > > > > > > >
> > > > > > > > > > +sub copy_license_header
> > > > > > > > > >
> > > > > > > > > > +{
> > > > > > > > > >
> > > > > > > > > > +    my @args = split / /, shift;    #Separate args by
> spaces
> > > > > > > > > >
> > > > > > > > > > +    my $source = $args[1];          #Source file is
> second
> > > (after
> > > > > > > > "perl")
> > > > > > > > > >
> > > > > > > > > > +    my $target = pop @args;         #Target file is
> always
> > > last
> > > > > > > > > >
> > > > > > > > > > +    chop ($target);                 #Remove newline
> > char
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +    my $temp_file_name = "license.tmp";
> > > > > > > > > >
> > > > > > > > > > +    open (my $source_file, "<" . $source) || die $source;
> > > > > > > > > >
> > > > > > > > > > +    open (my $target_file, "<" . $target) || die $target;
> > > > > > > > > >
> > > > > > > > > > +    open (my $temp_file, ">" . $temp_file_name) || die
> > > > > > $temp_file_name;
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +    #Add "generated file" warning
> > > > > > > > > >
> > > > > > > > > > +    $source =~ s/^..//;             #Remove leading "./"
> > > > > > > > > >
> > > > > > > > > > +    print ($temp_file "; WARNING: do not edit!\r\n");
> > > > > > > > > >
> > > > > > > > > > +    print ($temp_file "; Generated from $source\r\n");
> > > > > > > > > >
> > > > > > > > > > +    print ($temp_file ";\r\n");
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +    #Copy source file header to temp file
> > > > > > > > > >
> > > > > > > > > > +    while (my $line = <$source_file>) {
> > > > > > > > > >
> > > > > > > > > > +        next if ($line =~ /#!/);    #Ignore shebang line
> > > > > > > > > >
> > > > > > > > > > +        $line =~ s/#/;/;            #Fix comment
> > character for
> > > > > assembly
> > > > > > > > > >
> > > > > > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing
> > whitepsace,
> > > > > fixup
> > > > > > > > line
> > > > > > > > > endings
> > > > > > > > > >
> > > > > > > > > > +        print ($temp_file $line);
> > > > > > > > > >
> > > > > > > > > > +        last if ($line =~ /http/);  #Last line of
> copyright
> > > header
> > > > > > > > > contains a web link
> > > > > > > > > >
> > > > > > > > > > +    }
> > > > > > > > > >
> > > > > > > > > > +    print ($temp_file "\r\n");
> > > > > > > > > >
> > > > > > > > > > +    #Retrieve generated assembly contents
> > > > > > > > > >
> > > > > > > > > > +    while (my $line = <$target_file>) {
> > > > > > > > > >
> > > > > > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing
> > whitepsace,
> > > > > fixup
> > > > > > > > line
> > > > > > > > > endings
> > > > > > > > > >
> > > > > > > > > > +        print ($temp_file expand ($line));  #expand()
> > replaces
> > > > > tabs with
> > > > > > > > > spaces
> > > > > > > > > >
> > > > > > > > > > +    }
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +    close ($source_file);
> > > > > > > > > >
> > > > > > > > > > +    close ($target_file);
> > > > > > > > > >
> > > > > > > > > > +    close ($temp_file);
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +    move ($temp_file_name, $target) ||
> > > > > > > > > >
> > > > > > > > > > +        die "Cannot replace \"" . $target . "\"!";
> > > > > > > > > >
> > > > > > > > > > +}
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >  #
> > > > > > > > > >
> > > > > > > > > >  # Find the openssl directory name for use lib. We have to
> do
> > > this
> > > > > > > > > >
> > > > > > > > > > @@ -21,10 +75,41 @@ use File::Copy;
> > > > > > > > > >  #
> > > > > > > > > >
> > > > > > > > > >  my $inf_file;
> > > > > > > > > >
> > > > > > > > > >  my $OPENSSL_PATH;
> > > > > > > > > >
> > > > > > > > > > +my $uefi_config;
> > > > > > > > > >
> > > > > > > > > > +my $extension;
> > > > > > > > > >
> > > > > > > > > > +my $arch;
> > > > > > > > > >
> > > > > > > > > >  my @inf;
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >  BEGIN {
> > > > > > > > > >
> > > > > > > > > >      $inf_file = "OpensslLib.inf";
> > > > > > > > > >
> > > > > > > > > > +    $uefi_config = "UEFI";
> > > > > > > > > >
> > > > > > > > > > +    $arch = shift;
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +    if (defined $arch) {
> > > > > > > > > >
> > > > > > > > > > +        if (uc ($arch) eq "X64") {
> > > > > > > > > >
> > > > > > > > > > +            $arch = "X64";
> > > > > > > > > >
> > > > > > > > > > +            $inf_file = "OpensslLibX64.inf";
> > > > > > > > > >
> > > > > > > > > > +            $uefi_config = "UEFI-x86_64";
> > > > > > > > > >
> > > > > > > > > > +            $extension = "nasm";
> > > > > > > > > >
> > > > > > > > > > +        } else {
> > > > > > > > > >
> > > > > > > > > > +            die "Unsupported architecture \"" . $arch .
> > "\"!";
> > > > > > > > > >
> > > > > > > > > > +        }
> > > > > > > > > >
> > > > > > > > > > +        if ($extension eq "nasm") {
> > > > > > > > > >
> > > > > > > > > > +            if (`nasm -v 2>&1`) {
> > > > > > > > > >
> > > > > > > > > > +                #Presence of nasm executable will trigger
> > > > > inclusion of
> > > > > > > > AVX
> > > > > > > > > instructions
> > > > > > > > > >
> > > > > > > > > > +                die "\nCannot run assembly generators
> > with
> > > NASM in
> > > > > > > > > path!\n\n";
> > > > > > > > > >
> > > > > > > > > > +            }
> > > > > > > > > >
> > > > > > > > > > +        }
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +        # Prepare assembly folder
> > > > > > > > > >
> > > > > > > > > > +        if (-d $arch) {
> > > > > > > > > >
> > > > > > > > > > +            remove_tree ($arch, {safe => 1}) ||
> > > > > > > > > >
> > > > > > > > > > +                die "Cannot clean assembly folder \"" .
> > $arch
> > > .
> > > > > "\"!";
> > > > > > > > > >
> > > > > > > > > > +        } else {
> > > > > > > > > >
> > > > > > > > > > +            mkdir $arch ||
> > > > > > > > > >
> > > > > > > > > > +                die "Cannot create assembly folder \"" .
> > $arch
> > > .
> > > > > "\"!";
> > > > > > > > > >
> > > > > > > > > > +        }
> > > > > > > > > >
> > > > > > > > > > +    }
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >      # Read the contents of the inf file
> > > > > > > > > >
> > > > > > > > > >      open( FD, "<" . $inf_file ) ||
> > > > > > > > > >
> > > > > > > > > > @@ -47,9 +132,9 @@ BEGIN {
> > > > > > > > > >              # Configure UEFI
> > > > > > > > > >
> > > > > > > > > >              system(
> > > > > > > > > >
> > > > > > > > > >                  "./Configure",
> > > > > > > > > >
> > > > > > > > > > -                "UEFI",
> > > > > > > > > >
> > > > > > > > > > +                "--config=../uefi-asm.conf",
> > > > > > > > > >
> > > > > > > > > > +                "$uefi_config",
> > > > > > > > > >
> > > > > > > > > >                  "no-afalgeng",
> > > > > > > > > >
> > > > > > > > > > -                "no-asm",
> > > > > > > > > >
> > > > > > > > > >                  "no-async",
> > > > > > > > > >
> > > > > > > > > >                  "no-autoerrinit",
> > > > > > > > > >
> > > > > > > > > >                  "no-autoload-config",
> > > > > > > > > >
> > > > > > > > > > @@ -129,23 +214,53 @@ BEGIN {
> > > > > > > > > >  # Retrieve file lists from OpenSSL configdata
> > > > > > > > > >
> > > > > > > > > >  #
> > > > > > > > > >
> > > > > > > > > >  use configdata qw/%unified_info/;
> > > > > > > > > >
> > > > > > > > > > +use configdata qw/%config/;
> > > > > > > > > >
> > > > > > > > > > +use configdata qw/%target/;
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +#
> > > > > > > > > >
> > > > > > > > > > +# Collect build flags from configdata
> > > > > > > > > >
> > > > > > > > > > +#
> > > > > > > > > >
> > > > > > > > > > +my $flags = "";
> > > > > > > > > >
> > > > > > > > > > +foreach my $f (@{$config{lib_defines}}) {
> > > > > > > > > >
> > > > > > > > > > +    $flags .= " -D$f";
> > > > > > > > > >
> > > > > > > > > > +}
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >  my @cryptofilelist = ();
> > > > > > > > > >
> > > > > > > > > >  my @sslfilelist = ();
> > > > > > > > > >
> > > > > > > > > > +my @asmfilelist = ();
> > > > > > > > > >
> > > > > > > > > > +my @asmbuild = ();
> > > > > > > > > >
> > > > > > > > > >  foreach my $product ((@{$unified_info{libraries}},
> > > > > > > > > >
> > > > > > > > > >                        @{$unified_info{engines}})) {
> > > > > > > > > >
> > > > > > > > > >      foreach my $o (@{$unified_info{sources}->{$product}})
> > {
> > > > > > > > > >
> > > > > > > > > >          foreach my $s (@{$unified_info{sources}->{$o}}) {
> > > > > > > > > >
> > > > > > > > > > -            next if ($unified_info{generate}->{$s});
> > > > > > > > > >
> > > > > > > > > > -            next if $s =~ "crypto/bio/b_print.c";
> > > > > > > > > >
> > > > > > > > > > -
> > > > > > > > > >
> > > > > > > > > >              # No need to add unused files in UEFI.
> > > > > > > > > >
> > > > > > > > > >              # So it can reduce porting time, compile
> time,
> > > library
> > > > > size.
> > > > > > > > > >
> > > > > > > > > > +            next if $s =~ "crypto/bio/b_print.c";
> > > > > > > > > >
> > > > > > > > > >              next if $s =~ "crypto/rand/randfile.c";
> > > > > > > > > >
> > > > > > > > > >              next if $s =~ "crypto/store/";
> > > > > > > > > >
> > > > > > > > > >              next if $s =~ "crypto/err/err_all.c";
> > > > > > > > > >
> > > > > > > > > >              next if $s =~ "crypto/aes/aes_ecb.c";
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > +            if ($unified_info{generate}->{$s}) {
> > > > > > > > > >
> > > > > > > > > > +                if (defined $arch) {
> > > > > > > > > >
> > > > > > > > > > +                    my $buildstring = "perl";
> > > > > > > > > >
> > > > > > > > > > +                    foreach my $arg
> > > (@{$unified_info{generate}-
> > > > > >{$s}}) {
> > > > > > > > > >
> > > > > > > > > > +                        if ($arg =~ ".pl") {
> > > > > > > > > >
> > > > > > > > > > +                            $buildstring .=
> > " ./openssl/$arg";
> > > > > > > > > >
> > > > > > > > > > +                        } elsif ($arg =~
> > "PERLASM_SCHEME") {
> > > > > > > > > >
> > > > > > > > > > +                            $buildstring .= "
> > > > > $target{perlasm_scheme}";
> > > > > > > > > >
> > > > > > > > > > +                        } elsif ($arg =~ "LIB_CFLAGS") {
> > > > > > > > > >
> > > > > > > > > > +                            $buildstring .= "$flags";
> > > > > > > > > >
> > > > > > > > > > +                        }
> > > > > > > > > >
> > > > > > > > > > +                    }
> > > > > > > > > >
> > > > > > > > > > +                    ($s, my $path, undef) = fileparse($s,
> > > > > qr/\.[^.]*/);
> > > > > > > > > >
> > > > > > > > > > +                    $buildstring .= "
> > > ./$arch/$path$s.$extension";
> > > > > > > > > >
> > > > > > > > > > +                    make_path ("./$arch/$path");
> > > > > > > > > >
> > > > > > > > > > +                    push @asmbuild, "$buildstring\n";
> > > > > > > > > >
> > > > > > > > > > +                    push @asmfilelist, "
> > > > > $arch/$path$s.$extension\r\n";
> > > > > > > > > >
> > > > > > > > > > +                }
> > > > > > > > > >
> > > > > > > > > > +                next;
> > > > > > > > > >
> > > > > > > > > > +            }
> > > > > > > > > >
> > > > > > > > > >              if ($product =~ "libssl") {
> > > > > > > > > >
> > > > > > > > > >                  push @sslfilelist, '  $(OPENSSL_PATH)/' .
> > $s .
> > > > > "\r\n";
> > > > > > > > > >
> > > > > > > > > >                  next;
> > > > > > > > > >
> > > > > > > > > > @@ -183,15 +298,31 @@ foreach (@headers){
> > > > > > > > > >  }
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > +#
> > > > > > > > > >
> > > > > > > > > > +# Generate assembly files
> > > > > > > > > >
> > > > > > > > > > +#
> > > > > > > > > >
> > > > > > > > > > +if (@asmbuild) {
> > > > > > > > > >
> > > > > > > > > > +    print "\n--> Generating assembly files ... ";
> > > > > > > > > >
> > > > > > > > > > +    foreach my $buildstring (@asmbuild) {
> > > > > > > > > >
> > > > > > > > > > +        system ("$buildstring");
> > > > > > > > > >
> > > > > > > > > > +        copy_license_header ($buildstring);
> > > > > > > > > >
> > > > > > > > > > +    }
> > > > > > > > > >
> > > > > > > > > > +    print "Done!";
> > > > > > > > > >
> > > > > > > > > > +}
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > >  #
> > > > > > > > > >
> > > > > > > > > >  # Update OpensslLib.inf with autogenerated file list
> > > > > > > > > >
> > > > > > > > > >  #
> > > > > > > > > >
> > > > > > > > > >  my @new_inf = ();
> > > > > > > > > >
> > > > > > > > > >  my $subbing = 0;
> > > > > > > > > >
> > > > > > > > > > -print "\n--> Updating OpensslLib.inf ... ";
> > > > > > > > > >
> > > > > > > > > > +print "\n--> Updating $inf_file ... ";
> > > > > > > > > >
> > > > > > > > > >  foreach (@inf) {
> > > > > > > > > >
> > > > > > > > > > +    if ($_ =~ "DEFINE OPENSSL_FLAGS_CONFIG") {
> > > > > > > > > >
> > > > > > > > > > +        push @new_inf, "  DEFINE
> > OPENSSL_FLAGS_CONFIG    =" .
> > > > > $flags
> > > > > > .
> > > > > > > > > "\r\n";
> > > > > > > > > >
> > > > > > > > > > +        next;
> > > > > > > > > >
> > > > > > > > > > +    }
> > > > > > > > > >
> > > > > > > > > >      if ( $_ =~ "# Autogenerated files list starts here" )
> {
> > > > > > > > > >
> > > > > > > > > > -        push @new_inf, $_, @cryptofilelist, @sslfilelist;
> > > > > > > > > >
> > > > > > > > > > +        push @new_inf, $_, @asmfilelist, @cryptofilelist,
> > > > > @sslfilelist;
> > > > > > > > > >
> > > > > > > > > >          $subbing = 1;
> > > > > > > > > >
> > > > > > > > > >          next;
> > > > > > > > > >
> > > > > > > > > >      }
> > > > > > > > > >
> > > > > > > > > > @@ -216,49 +347,51 @@ rename( $new_inf_file, $inf_file )
> ||
> > > > > > > > > >      die "rename $inf_file";
> > > > > > > > > >
> > > > > > > > > >  print "Done!";
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > -#
> > > > > > > > > >
> > > > > > > > > > -# Update OpensslLibCrypto.inf with auto-generated file
> list
> > > (no
> > > > > libssl)
> > > > > > > > > >
> > > > > > > > > > -#
> > > > > > > > > >
> > > > > > > > > > -$inf_file = "OpensslLibCrypto.inf";
> > > > > > > > > >
> > > > > > > > > > -
> > > > > > > > > >
> > > > > > > > > > -# Read the contents of the inf file
> > > > > > > > > >
> > > > > > > > > > -@inf = ();
> > > > > > > > > >
> > > > > > > > > > -@new_inf = ();
> > > > > > > > > >
> > > > > > > > > > -open( FD, "<" . $inf_file ) ||
> > > > > > > > > >
> > > > > > > > > > -    die "Cannot open \"" . $inf_file . "\"!";
> > > > > > > > > >
> > > > > > > > > > -@inf = (<FD>);
> > > > > > > > > >
> > > > > > > > > > -close(FD) ||
> > > > > > > > > >
> > > > > > > > > > -    die "Cannot close \"" . $inf_file . "\"!";
> > > > > > > > > >
> > > > > > > > > > +if (!defined $arch) {
> > > > > > > > > >
> > > > > > > > > > +    #
> > > > > > > > > >
> > > > > > > > > > +    # Update OpensslLibCrypto.inf with auto-generated
> file
> > > list
> > > > > (no
> > > > > > > > > libssl)
> > > > > > > > > >
> > > > > > > > > > +    #
> > > > > > > > > >
> > > > > > > > > > +    $inf_file = "OpensslLibCrypto.inf";
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > -$subbing = 0;
> > > > > > > > > >
> > > > > > > > > > -print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > > > > > > >
> > > > > > > > > > -foreach (@inf) {
> > > > > > > > > >
> > > > > > > > > > -    if ( $_ =~ "# Autogenerated files list starts here" )
> {
> > > > > > > > > >
> > > > > > > > > > -        push @new_inf, $_, @cryptofilelist;
> > > > > > > > > >
> > > > > > > > > > -        $subbing = 1;
> > > > > > > > > >
> > > > > > > > > > -        next;
> > > > > > > > > >
> > > > > > > > > > -    }
> > > > > > > > > >
> > > > > > > > > > -    if ( $_ =~ "# Autogenerated files list ends here" ) {
> > > > > > > > > >
> > > > > > > > > > -        push @new_inf, $_;
> > > > > > > > > >
> > > > > > > > > > -        $subbing = 0;
> > > > > > > > > >
> > > > > > > > > > -        next;
> > > > > > > > > >
> > > > > > > > > > +    # Read the contents of the inf file
> > > > > > > > > >
> > > > > > > > > > +    @inf = ();
> > > > > > > > > >
> > > > > > > > > > +    @new_inf = ();
> > > > > > > > > >
> > > > > > > > > > +    open( FD, "<" . $inf_file ) ||
> > > > > > > > > >
> > > > > > > > > > +        die "Cannot open \"" . $inf_file . "\"!";
> > > > > > > > > >
> > > > > > > > > > +    @inf = (<FD>);
> > > > > > > > > >
> > > > > > > > > > +    close(FD) ||
> > > > > > > > > >
> > > > > > > > > > +        die "Cannot close \"" . $inf_file . "\"!";
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +    $subbing = 0;
> > > > > > > > > >
> > > > > > > > > > +    print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > > > > > > >
> > > > > > > > > > +    foreach (@inf) {
> > > > > > > > > >
> > > > > > > > > > +        if ( $_ =~ "# Autogenerated files list starts
> here" )
> > > {
> > > > > > > > > >
> > > > > > > > > > +            push @new_inf, $_, @cryptofilelist;
> > > > > > > > > >
> > > > > > > > > > +            $subbing = 1;
> > > > > > > > > >
> > > > > > > > > > +            next;
> > > > > > > > > >
> > > > > > > > > > +        }
> > > > > > > > > >
> > > > > > > > > > +        if ( $_ =~ "# Autogenerated files list ends here"
> ) {
> > > > > > > > > >
> > > > > > > > > > +            push @new_inf, $_;
> > > > > > > > > >
> > > > > > > > > > +            $subbing = 0;
> > > > > > > > > >
> > > > > > > > > > +            next;
> > > > > > > > > >
> > > > > > > > > > +        }
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +        push @new_inf, $_
> > > > > > > > > >
> > > > > > > > > > +            unless ($subbing);
> > > > > > > > > >
> > > > > > > > > >      }
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > -    push @new_inf, $_
> > > > > > > > > >
> > > > > > > > > > -        unless ($subbing);
> > > > > > > > > >
> > > > > > > > > > +    $new_inf_file = $inf_file . ".new";
> > > > > > > > > >
> > > > > > > > > > +    open( FD, ">" . $new_inf_file ) ||
> > > > > > > > > >
> > > > > > > > > > +        die $new_inf_file;
> > > > > > > > > >
> > > > > > > > > > +    print( FD @new_inf ) ||
> > > > > > > > > >
> > > > > > > > > > +        die $new_inf_file;
> > > > > > > > > >
> > > > > > > > > > +    close(FD) ||
> > > > > > > > > >
> > > > > > > > > > +        die $new_inf_file;
> > > > > > > > > >
> > > > > > > > > > +    rename( $new_inf_file, $inf_file ) ||
> > > > > > > > > >
> > > > > > > > > > +        die "rename $inf_file";
> > > > > > > > > >
> > > > > > > > > > +    print "Done!";
> > > > > > > > > >
> > > > > > > > > >  }
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > -$new_inf_file = $inf_file . ".new";
> > > > > > > > > >
> > > > > > > > > > -open( FD, ">" . $new_inf_file ) ||
> > > > > > > > > >
> > > > > > > > > > -    die $new_inf_file;
> > > > > > > > > >
> > > > > > > > > > -print( FD @new_inf ) ||
> > > > > > > > > >
> > > > > > > > > > -    die $new_inf_file;
> > > > > > > > > >
> > > > > > > > > > -close(FD) ||
> > > > > > > > > >
> > > > > > > > > > -    die $new_inf_file;
> > > > > > > > > >
> > > > > > > > > > -rename( $new_inf_file, $inf_file ) ||
> > > > > > > > > >
> > > > > > > > > > -    die "rename $inf_file";
> > > > > > > > > >
> > > > > > > > > > -print "Done!";
> > > > > > > > > >
> > > > > > > > > > -
> > > > > > > > > >
> > > > > > > > > >  #
> > > > > > > > > >
> > > > > > > > > >  # Copy opensslconf.h and dso_conf.h generated from
> > OpenSSL
> > > > > > > Configuration
> > > > > > > > > >
> > > > > > > > > >  #
> > > > > > > > > >
> > > > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > > > b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > > > new file mode 100644
> > > > > > > > > > index 0000000000..55eedbf3ba
> > > > > > > > > > --- /dev/null
> > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > > > @@ -0,0 +1,15 @@
> > > > > > > > > > +## -*- mode: perl; -*-
> > > > > > > > > >
> > > > > > > > > > +## UEFI assembly openssl configuration targets.
> > > > > > > > > >
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > > > +my %targets = (
> > > > > > > > > >
> > > > > > > > > > +#### UEFI
> > > > > > > > > >
> > > > > > > > > > +    "UEFI-x86_64" => {
> > > > > > > > > >
> > > > > > > > > > +        perlasm_scheme  => "nasm",
> > > > > > > > > >
> > > > > > > > > > +        # inherit_from    => [ "UEFI",
> > asm("x86_64_asm") ],
> > > > > > > > > >
> > > > > > > > > > +        inherit_from    => [ "UEFI" ],
> > > > > > > > > >
> > > > > > > > > > +        cpuid_asm_src   => "x86_64cpuid.s",
> > > > > > > > > >
> > > > > > > > > > +        aes_asm_src     => "aes_core.c aes_cbc.c vpaes-
> > > x86_64.s
> > > > > aesni-
> > > > > > > > > x86_64.s
> > > > > > > > > > aesni-sha1-x86_64.s aesni-sha256-x86_64.s
> > aesni-mb-x86_64.s",
> > > > > > > > > >
> > > > > > > > > > +        sha1_asm_src    => "sha1-x86_64.s
> > sha256-x86_64.s
> > > sha512-
> > > > > > > > x86_64.s
> > > > > > > > > > sha1-mb-x86_64.s sha256-mb-x86_64.s",
> > > > > > > > > >
> > > > > > > > > > +        modes_asm_src   => "ghash-x86_64.s",
> > > > > > > > > >
> > > > > > > > > > +    },
> > > > > > > > > >
> > > > > > > > > > +);
> > > > > > > > > >
> > > > > > > > > > --
> > > > > > > > > > 2.28.0.windows.1
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > >
> > > > > >
> > > > > >
> >
> >
> >
> >
> >
> 
> 
> 
> 
> 
> 
> 


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

* Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
  2020-09-25  1:06                     ` Zurcher, Christopher J
@ 2020-09-25  1:11                       ` Yao, Jiewen
  2020-09-25  1:14                         ` Zurcher, Christopher J
       [not found]                         ` <1637E1D4851CF309.11037@groups.io>
  0 siblings, 2 replies; 42+ messages in thread
From: Yao, Jiewen @ 2020-09-25  1:11 UTC (permalink / raw)
  To: Zurcher, Christopher J, devel@edk2.groups.io,
	gaoliming@byosoft.com.cn, Jiang, Guomin
  Cc: Wang, Jian J, Lu, XiaoyuX, 'Ard Biesheuvel'

I think we configure wchar_t to be 16bits by using -fshort-wchar.

Should we use
typedef CHAR16         wchar_t;
instead of
typedef UINT32         wchar_t;

Thank you
Yao Jiewen

> -----Original Message-----
> From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> Sent: Friday, September 25, 2020 9:07 AM
> To: devel@edk2.groups.io; gaoliming@byosoft.com.cn; Yao, Jiewen
> <jiewen.yao@intel.com>; Jiang, Guomin <guomin.jiang@intel.com>
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> 'Ard Biesheuvel' <ard.biesheuvel@linaro.org>
> Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> instruction support for X64
> 
> I've discovered the failure was because CryptoPkg includes its own stddef.h
> which is a wrapper for CrtLibSupport.h
> I have added the required definitions to this file and have resolved the error:
> typedef INTN           ptrdiff_t;
> typedef UINT32         wchar_t;
> 
> Thanks,
> Christopher Zurcher
> 
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of gaoliming
> > Sent: Thursday, September 24, 2020 17:49
> > To: devel@edk2.groups.io; Zurcher, Christopher J
> > <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>;
> Jiang,
> > Guomin <guomin.jiang@intel.com>
> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>;
> > 'Ard Biesheuvel' <ard.biesheuvel@linaro.org>
> > Subject: 回复: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > instruction support for X64
> >
> > Zurcher:
> >   Can you specify the detail build step to reproduce the build error with
> > CLANGPDB tool chain?
> >
> > Thanks
> > Liming
> > > -----邮件原件-----
> > > 发件人: bounce+27952+65588+4905953+8761045@groups.io
> > > <bounce+27952+65588+4905953+8761045@groups.io> 代表 Zurcher,
> > > Christopher J
> > > 发送时间: 2020年9月25日 8:28
> > > 收件人: Yao, Jiewen <jiewen.yao@intel.com>; Jiang, Guomin
> > > <guomin.jiang@intel.com>; devel@edk2.groups.io
> > > 抄送: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > 主题: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > instruction support for X64
> > >
> > > I was able to successfully build and run the non-optimized code with LLVM,
> > > but the optimized version returns this error during build:
> > >
> > > C:\Program Files\LLVM\lib\clang\9.0.0\include\stdatomic.h:91:17: error:
> > > unknown type name 'wchar_t'
> > > typedef _Atomic(wchar_t)            atomic_wchar_t;
> > >
> > > Is there a known build issue with CLANGPDB and the stdatomic.h file?
> > >
> > > Thanks,
> > > Christopher Zurcher
> > >
> > > > -----Original Message-----
> > > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > > Sent: Tuesday, September 22, 2020 19:35
> > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>; Jiang,
> > Guomin
> > > > <guomin.jiang@intel.com>; devel@edk2.groups.io
> > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > <xiaoyux.lu@intel.com>;
> > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > native
> > > > instruction support for X64
> > > >
> > > > For GCC, please refer to
> > > > https://github.com/tianocore/tianocore.github.io/wiki/Using-EDK-II-with-
> > > > Native-GCC
> > > >
> > > > For LLVM, please refer to
> > > > https://github.com/tianocore/tianocore.github.io/wiki/CLANG9-Tools-
> Chain
> > > >
> > > > Thank you
> > > > Yao Jiewen
> > > >
> > > > > -----Original Message-----
> > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > > Sent: Tuesday, September 22, 2020 11:22 PM
> > > > > To: Jiang, Guomin <guomin.jiang@intel.com>; devel@edk2.groups.io;
> Yao,
> > > > > Jiewen <jiewen.yao@intel.com>
> > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > <xiaoyux.lu@intel.com>;
> > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > > native
> > > > > instruction support for X64
> > > > >
> > > > > I have unit tested SHA1, SHA512, and AES as well.
> > > > > I do not have the build environment available to test GCC and LLVM.
> > > > >
> > > > > --
> > > > > Christopher Zurcher
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Jiang, Guomin <guomin.jiang@intel.com>
> > > > > > Sent: Wednesday, September 16, 2020 02:17
> > > > > > To: devel@edk2.groups.io; Yao, Jiewen <jiewen.yao@intel.com>;
> > > Zurcher,
> > > > > > Christopher J <christopher.j.zurcher@intel.com>
> > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > <xiaoyux.lu@intel.com>;
> > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > > native
> > > > > > instruction support for X64
> > > > > >
> > > > > > Hi Zurcher,
> > > > > >
> > > > > > > [Jiewen] Since you also add other sha (sha1, sha512) and aesni, I
> > think
> > > > > > those
> > > > > > > need unit test for them too.
> > > > > >
> > > > > > Can you update the status about it?
> > > > > >
> > > > > > > [Jiewen] I think we need support build with GCC and LLVM, and with
> > > X64.
> > > > > >
> > > > > > It is better to support the GCC and LLVM.
> > > > > >
> > > > > > Thanks
> > > > > > Guomin
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> > > Yao,
> > > > > > > Jiewen
> > > > > > > Sent: Tuesday, August 25, 2020 7:36 AM
> > > > > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > > > > > > devel@edk2.groups.io
> > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > > > native
> > > > > > > instruction support for X64
> > > > > > >
> > > > > > > Below:
> > > > > > >
> > > > > > > > -----Original Message-----
> > > > > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > > > > > Sent: Tuesday, August 25, 2020 5:26 AM
> > > > > > > > To: devel@edk2.groups.io; Zurcher, Christopher J
> > > > > > > > <christopher.j.zurcher@intel.com>; Yao, Jiewen
> > > <jiewen.yao@intel.com>
> > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib:
> > Add
> > > > native
> > > > > > > > instruction support for X64
> > > > > > > >
> > > > > > > > 1) I have confirmed that the ApiHooks.c file is still required
> > even
> > > > > > without
> > > > > > > the AVX
> > > > > > > > instructions included. The x86_64 assembly files in OpenSSL set
> > a
> > > > flag
> > > > > > called
> > > > > > > > $win64 and automatically include calls to the RtlVirtualUnwind
> > > > function
> > > > > > if
> > > > > > > NASM
> > > > > > > > is selected as the assembler scheme.
> > > > > > > >
> > > > > > > >
> > > https://docs.microsoft.com/en-us/windows/win32/api/winnt/nf-winnt-
> > > > > > > > rtlvirtualunwind
> > > > > > > >
> > > > > > > > I have submitted an issue against OpenSSL since I don't think
> > using
> > > > the
> > > > > > > NASM
> > > > > > > > assembler should force the inclusion of Windows-specific API
> > hooks,
> > > > but
> > > > > > > that
> > > > > > > > change cannot be made in OpenSSL 1.1.1 and we will have to wait
> > > for
> > > > > > > OpenSSL 3
> > > > > > > > or later to remove the stub function.
> > > > > > > >
> > > > > > > > https://github.com/openssl/openssl/issues/12712
> > > > > > > >
> > > > > > >
> > > > > > > [Jiewen] Thanks.
> > > > > > >
> > > > > > > > 2) So far I have only built with VS.
> > > > > > > >
> > > > > > >
> > > > > > > [Jiewen] I think we need support build with GCC and LLVM, and with
> > > X64.
> > > > > > >
> > > > > > >
> > > > > > > > 3) The X64 SHA256 implementation was successfully exercised
> > > across a
> > > > > > > large
> > > > > > > > number of devices in a production environment as a verification
> > step
> > > > in a
> > > > > > > multi-
> > > > > > > > GB data transfer scenario.
> > > > > > > >
> > > > > > >
> > > > > > > [Jiewen] Since you also add other sha (sha1, sha512) and aesni, I
> > think
> > > > > > those
> > > > > > > need unit test for them too.
> > > > > > >
> > > > > > >
> > > > > > > > Thanks,
> > > > > > > > Christopher Zurcher
> > > > > > > >
> > > > > > > > > -----Original Message-----
> > > > > > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf
> > > Of
> > > > > > > Zurcher,
> > > > > > > > > Christopher J
> > > > > > > > > Sent: Tuesday, August 18, 2020 15:50
> > > > > > > > > To: Yao, Jiewen <jiewen.yao@intel.com>; devel@edk2.groups.io
> > > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > > Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib:
> > > Add
> > > > > > > native
> > > > > > > > > instruction support for X64
> > > > > > > > >
> > > > > > > > > After further review, the ApiHooks.c file may no longer be
> > needed
> > > > since
> > > > > > > we
> > > > > > > > > are no longer including the AVX instructions. I will look over
> > the
> > > > > > > > > dependencies and send a new patch set if I can eliminate the
> > API
> > > > hooks
> > > > > > > file.
> > > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > > Christopher Zurcher
> > > > > > > > >
> > > > > > > > > > -----Original Message-----
> > > > > > > > > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > > > > > > > > Sent: Thursday, August 13, 2020 08:04
> > > > > > > > > > To: Zurcher, Christopher J
> > <christopher.j.zurcher@intel.com>;
> > > > > > > > > > devel@edk2.groups.io
> > > > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > > > Subject: RE: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > > > > > instruction
> > > > > > > > > > support for X64
> > > > > > > > > >
> > > > > > > > > > Hi Christopher
> > > > > > > > > > Thanks.
> > > > > > > > > >
> > > > > > > > > > 1) Would you please help me understand more on "ApiHooks.c
> > > > contains
> > > > > > > a
> > > > > > > > stub
> > > > > > > > > > function for a Windows API call" ?
> > > > > > > > > > Why we need this?
> > > > > > > > > > If it is compiler specific in openssl, should we submit
> > patch to
> > > > > > openssl to
> > > > > > > > > > exclude this with OPENSSL_SYS_UEFI? That should be a cleaner
> > > > solution
> > > > > > > for
> > > > > > > > > > UEFI.
> > > > > > > > > >
> > > > > > > > > > 2) Would you please describe what compiler you have tried?
> > VS?
> > > > GCC?
> > > > > > > LLVM?
> > > > > > > > > >
> > > > > > > > > > 3) Would you please describe what unit test you have done?
> > > > > > > > > >
> > > > > > > > > > Thank you
> > > > > > > > > > Yao Jiewen
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > > -----Original Message-----
> > > > > > > > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.
> > com>
> > > > > > > > > > > Sent: Tuesday, August 4, 2020 8:24 AM
> > > > > > > > > > > To: devel@edk2.groups.io
> > > > > > > > > > > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> > > > > > > > > > <jian.j.wang@intel.com>;
> > > > > > > > > > > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > > > > > > > > > <ard.biesheuvel@linaro.org>
> > > > > > > > > > > Subject: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > > > > instruction
> > > > > > > > > > support
> > > > > > > > > > > for X64
> > > > > > > > > > >
> > > > > > > > > > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> > > > > > > > > > >
> > > > > > > > > > > Adding OpensslLibX64.inf and modifying process_files.pl to
> > > > process
> > > > > > > this
> > > > > > > > > > > file and generate the necessary assembly files.
> > > > > > > > > > > ApiHooks.c contains a stub function for a Windows API
> > call.
> > > > > > > > > > > uefi-asm.conf contains the limited assembly configurations
> > for
> > > > > > > OpenSSL.
> > > > > > > > > > >
> > > > > > > > > > > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > > > > > > > > > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > > > > > > > > > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > > > > > > > > > > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > > > > Signed-off-by: Christopher J Zurcher
> > > > > > > <christopher.j.zurcher@intel.com>
> > > > > > > > > > > ---
> > > > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLib.inf          |
> > > 2 +-
> > > > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf    |
> > > 2 +-
> > > > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibX64.inf       |
> > > 656
> > > > > > > > > > > ++++++++++++++++++++
> > > > > > > > > > >  CryptoPkg/Library/Include/openssl/opensslconf.h      |
> > > 3 -
> > > > > > > > > > >  CryptoPkg/Library/OpensslLib/ApiHooks.c              |
> > > 18 +
> > > > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c |
> > > 34 +
> > > > > > > > > > >  CryptoPkg/Library/OpensslLib/process_files.pl        |
> > > 223
> > > > +++++--
> > > > > > > > > > >  CryptoPkg/Library/OpensslLib/uefi-asm.conf           |
> > > 15 +
> > > > > > > > > > >  8 files changed, 903 insertions(+), 50 deletions(-)
> > > > > > > > > > >
> > > > > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > > index dbbe5386a1..bd62d86936 100644
> > > > > > > > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > > @@ -16,7 +16,7 @@
> > > > > > > > > > >    VERSION_STRING                 = 1.0
> > > > > > > > > > >
> > > > > > > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > > > > > > >
> > > > > > > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > > > > > > >
> > > > > > > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > > > > >
> > > > > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > > > > > > DOPENSSL_NO_ASM
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >  #
> > > > > > > > > > >
> > > > > > > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM
> > > AARCH64
> > > > > > > > > > >
> > > > > > > > > > > diff --git
> > a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > > index 616ccd9f62..2b7324a990 100644
> > > > > > > > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > > @@ -16,7 +16,7 @@
> > > > > > > > > > >    VERSION_STRING                 = 1.0
> > > > > > > > > > >
> > > > > > > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > > > > > > >
> > > > > > > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > > > > > > >
> > > > > > > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > > > > >
> > > > > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > > > > > > DOPENSSL_NO_ASM
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >  #
> > > > > > > > > > >
> > > > > > > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM
> > > AARCH64
> > > > > > > > > > >
> > > > > > > > > > > diff --git
> > a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > > > > new file mode 100644
> > > > > > > > > > > index 0000000000..825eea0254
> > > > > > > > > > > --- /dev/null
> > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > > > > @@ -0,0 +1,656 @@
> > > > > > > > > > > +## @file
> > > > > > > > > > >
> > > > > > > > > > > +#  This module provides OpenSSL Library implementation.
> > > > > > > > > > >
> > > > > > > > > > > +#
> > > > > > > > > > >
> > > > > > > > > > > +#  Copyright (c) 2010 - 2020, Intel Corporation. All
> > rights
> > > > > > > > > reserved.<BR>
> > > > > > > > > > >
> > > > > > > > > > > +#  (C) Copyright 2020 Hewlett Packard Enterprise
> > > Development
> > > > > > > LP<BR>
> > > > > > > > > > >
> > > > > > > > > > > +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > > > > >
> > > > > > > > > > > +#
> > > > > > > > > > >
> > > > > > > > > > > +##
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +[Defines]
> > > > > > > > > > >
> > > > > > > > > > > +  INF_VERSION                    = 0x00010005
> > > > > > > > > > >
> > > > > > > > > > > +  BASE_NAME                      = OpensslLibX64
> > > > > > > > > > >
> > > > > > > > > > > +  MODULE_UNI_FILE                = OpensslLib.uni
> > > > > > > > > > >
> > > > > > > > > > > +  FILE_GUID                      =
> > > 18125E50-0117-4DD0-BE54-
> > > > > > 4784AD995FEF
> > > > > > > > > > >
> > > > > > > > > > > +  MODULE_TYPE                    = BASE
> > > > > > > > > > >
> > > > > > > > > > > +  VERSION_STRING                 = 1.0
> > > > > > > > > > >
> > > > > > > > > > > +  LIBRARY_CLASS                  = OpensslLib
> > > > > > > > > > >
> > > > > > > > > > > +  DEFINE OPENSSL_PATH            = openssl
> > > > > > > > > > >
> > > > > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > > > > >
> > > > > > > > > > > +  DEFINE OPENSSL_FLAGS_CONFIG    =
> > > -DOPENSSL_CPUID_OBJ -
> > > > > > > > DSHA1_ASM -
> > > > > > > > > > > DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -
> > > > > > > > DGHASH_ASM
> > > > > > > > > > >
> > > > > > > > > > > +  CONSTRUCTOR                    =
> > > OpensslLibConstructor
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +#
> > > > > > > > > > >
> > > > > > > > > > > +#  VALID_ARCHITECTURES           = X64
> > > > > > > > > > >
> > > > > > > > > > > +#
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +[Sources]
> > > > > > > > > > >
> > > > > > > > > > > +  OpensslLibConstructor.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/e_os.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ms/uplink.h
> > > > > > > > > > >
> > > > > > > > > > > +# Autogenerated files list starts here
> > > > > > > > > > >
> > > > > > > > > > > +  X64/crypto/aes/aesni-mb-x86_64.nasm
> > > > > > > > > > >
> > > > > > > > > > > +  X64/crypto/aes/aesni-sha1-x86_64.nasm
> > > > > > > > > > >
> > > > > > > > > > > +  X64/crypto/aes/aesni-sha256-x86_64.nasm
> > > > > > > > > > >
> > > > > > > > > > > +  X64/crypto/aes/aesni-x86_64.nasm
> > > > > > > > > > >
> > > > > > > > > > > +  X64/crypto/aes/vpaes-x86_64.nasm
> > > > > > > > > > >
> > > > > > > > > > > +  X64/crypto/modes/ghash-x86_64.nasm
> > > > > > > > > > >
> > > > > > > > > > > +  X64/crypto/sha/sha1-mb-x86_64.nasm
> > > > > > > > > > >
> > > > > > > > > > > +  X64/crypto/sha/sha1-x86_64.nasm
> > > > > > > > > > >
> > > > > > > > > > > +  X64/crypto/sha/sha256-mb-x86_64.nasm
> > > > > > > > > > >
> > > > > > > > > > > +  X64/crypto/sha/sha256-x86_64.nasm
> > > > > > > > > > >
> > > > > > > > > > > +  X64/crypto/sha/sha512-x86_64.nasm
> > > > > > > > > > >
> > > > > > > > > > > +  X64/crypto/x86_64cpuid.nasm
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_core.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ige.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_misc.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aria/aria.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_digest.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_dup.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_gentm.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_int.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_object.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_octet.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_print.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_sign.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strex.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strnid.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_time.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_type.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utctm.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utf8.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_verify.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_par.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mime.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_moid.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_pack.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_int.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_string.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/n_pkey.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/nsseq.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_bitst.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_pkey.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_spki.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_new.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_algor.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_bignum.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_info.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_int64.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_long.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_pkey.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_sig.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_spki.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_val.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_wait.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_addr.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_dump.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock2.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_buff.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_nbio.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_null.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_cb.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_meth.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_acpt.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_bio.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_conn.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_dgram.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_fd.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_file.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_log.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_mem.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_null.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_sock.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_add.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_asm.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_blind.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_const.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_ctx.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_depr.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_dh.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_div.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp2.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gcd.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_intern.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_kron.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mod.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mont.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mpi.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mul.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_nist.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_print.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_rand.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_recp.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_shift.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqr.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_srp.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_word.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_x931p.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buf_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buffer.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cmac.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/c_zlib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_api.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mall.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mod.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_sap.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_ssl.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cpt_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cryptlib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ctype.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cversion.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_check.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_depr.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_gen.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_kdf.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_key.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_meth.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_prn.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dl.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_vms.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_win32.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ebcdic.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/err/err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/err/err_prn.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_enc.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_md.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_ok.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_allc.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_alld.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/digest.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aria.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_bf.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_camellia.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_cast.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des3.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_idea.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_null.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_old.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc2.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc5.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_seed.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_sm4.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/encode.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_cnf.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_enc.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_key.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pbe.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pkey.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md2.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md4.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_mdc2.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_null.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_ripemd.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha1.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha3.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sigver.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_wp.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/names.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_dec.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_enc.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_open.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_seal.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_sign.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_verify.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ex_data.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/getenv.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/init.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/hkdf.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/kdf_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/scrypt.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lh_stats.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_one.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mem.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mem_dbg.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mem_sec.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cbc128.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ccm128.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cfb128.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ctr128.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cts128.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/gcm128.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ocb128.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ofb128.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/wrap128.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/xts128.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_dir.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_fips.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_fopen.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_init.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_str.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_time.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/o_names.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_all.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_info.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_oth.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pk8.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pkey.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_sign.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_x509.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_xaux.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pvkfmt.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_egd.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_unix.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_vms.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_win.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_none.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/keccak1600.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1_one.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha256.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha512.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm4/sm4.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/stack/stack.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_none.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_pthread.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_win.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/txt_db/txt_db.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_null.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_util.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/uid.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_dir.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_file.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_crl.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_req.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_x509.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_att.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_cmp.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_d2.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_def.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_ext.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_lu.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_meth.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_obj.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_r2x.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_req.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_set.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_trs.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_txt.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_v3.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vfy.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vpm.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509cset.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509name.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509rset.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509spki.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509type.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_all.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_attrib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_crl.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_exten.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_name.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_pubkey.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_req.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509a.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_info.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_int.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/arm_arch.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mips_arch.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ppc_arch.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/s390x_arch.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sparc_arch.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/vms_rms.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/charmap.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/standard_methods.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/modes_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/store/store_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/bio_ssl.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_msg.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_srtp.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/methods.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/packet.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/pqueue.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_cbc.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_enc.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_msg.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_asn1.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_ciph.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_conf.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_err.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_init.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_mcnf.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_rsa.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_sess.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_stat.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_txt.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_utst.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_cust.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_clnt.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_dtls.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_srvr.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_enc.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_lib.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_trce.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/tls13_enc.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/tls_srp.c
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/packet_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert_table.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/record.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/record_local.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.h
> > > > > > > > > > >
> > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_local.h
> > > > > > > > > > >
> > > > > > > > > > > +# Autogenerated files list ends here
> > > > > > > > > > >
> > > > > > > > > > > +  buildinf.h
> > > > > > > > > > >
> > > > > > > > > > > +  rand_pool_noise.h
> > > > > > > > > > >
> > > > > > > > > > > +  ossl_store.c
> > > > > > > > > > >
> > > > > > > > > > > +  rand_pool.c
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +[Sources.X64]
> > > > > > > > > > >
> > > > > > > > > > > +  rand_pool_noise_tsc.c
> > > > > > > > > > >
> > > > > > > > > > > +  ApiHooks.c
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +[Packages]
> > > > > > > > > > >
> > > > > > > > > > > +  MdePkg/MdePkg.dec
> > > > > > > > > > >
> > > > > > > > > > > +  CryptoPkg/CryptoPkg.dec
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +[LibraryClasses]
> > > > > > > > > > >
> > > > > > > > > > > +  BaseLib
> > > > > > > > > > >
> > > > > > > > > > > +  DebugLib
> > > > > > > > > > >
> > > > > > > > > > > +  TimerLib
> > > > > > > > > > >
> > > > > > > > > > > +  PrintLib
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +[BuildOptions]
> > > > > > > > > > >
> > > > > > > > > > > +  #
> > > > > > > > > > >
> > > > > > > > > > > +  # Disables the following Visual Studio compiler
> > warnings
> > > > brought
> > > > > > by
> > > > > > > > > > openssl
> > > > > > > > > > > source,
> > > > > > > > > > >
> > > > > > > > > > > +  # so we do not break the build with /WX option:
> > > > > > > > > > >
> > > > > > > > > > > +  #   C4090: 'function' : different 'const' qualifiers
> > > > > > > > > > >
> > > > > > > > > > > +  #   C4132: 'object' : const object should be
> > initialized
> > > > > > (tls13_enc.c)
> > > > > > > > > > >
> > > > > > > > > > > +  #   C4210: nonstandard extension used: function given
> > file
> > > > scope
> > > > > > > > > > >
> > > > > > > > > > > +  #   C4244: conversion from type1 to type2, possible
> > loss of
> > > > data
> > > > > > > > > > >
> > > > > > > > > > > +  #   C4245: conversion from type1 to type2,
> > > signed/unsigned
> > > > > > > mismatch
> > > > > > > > > > >
> > > > > > > > > > > +  #   C4267: conversion from size_t to type, possible
> > loss of
> > > > data
> > > > > > > > > > >
> > > > > > > > > > > +  #   C4306: 'identifier' : conversion from 'type1' to
> > 'type2'
> > > > of
> > > > > > > > > greater
> > > > > > > > > > size
> > > > > > > > > > >
> > > > > > > > > > > +  #   C4310: cast truncates constant value
> > > > > > > > > > >
> > > > > > > > > > > +  #   C4389: 'operator' : signed/unsigned mismatch (xxxx)
> > > > > > > > > > >
> > > > > > > > > > > +  #   C4700: uninitialized local variable 'name' used.
> > > > > > (conf_sap.c(71))
> > > > > > > > > > >
> > > > > > > > > > > +  #   C4702: unreachable code
> > > > > > > > > > >
> > > > > > > > > > > +  #   C4706: assignment within conditional expression
> > > > > > > > > > >
> > > > > > > > > > > +  #   C4819: The file contains a character that cannot be
> > > > > > represented
> > > > > > > in
> > > > > > > > > > the
> > > > > > > > > > > current code page
> > > > > > > > > > >
> > > > > > > > > > > +  #
> > > > > > > > > > >
> > > > > > > > > > > +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64
> > > -U_MSC_VER
> > > > > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /wd4090
> > > /wd4132
> > > > > > > > /wd4210
> > > > > > > > > > > /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700
> > > /wd4389
> > > > > > > /wd4702
> > > > > > > > > > > /wd4706 /wd4819
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64
> > > -U_MSC_VER -
> > > > > > > > U__ICC
> > > > > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +  #
> > > > > > > > > > >
> > > > > > > > > > > +  # Suppress the following build warnings in openssl so
> > we
> > > > don't
> > > > > > > break
> > > > > > > > > the
> > > > > > > > > > build
> > > > > > > > > > > with -Werror
> > > > > > > > > > >
> > > > > > > > > > > +  #   -Werror=maybe-uninitialized: there exist some other
> > > > paths
> > > > > > for
> > > > > > > > > which
> > > > > > > > > > the
> > > > > > > > > > > variable is not initialized.
> > > > > > > > > > >
> > > > > > > > > > > +  #   -Werror=format: Check calls to printf and scanf,
> > etc.,
> > > > to
> > > > > > make
> > > > > > > > > sure
> > > > > > > > > > that the
> > > > > > > > > > > arguments supplied have
> > > > > > > > > > >
> > > > > > > > > > > +  #                   types appropriate to the format
> > > string
> > > > > > specified.
> > > > > > > > > > >
> > > > > > > > > > > +  #   -Werror=unused-but-set-variable: Warn whenever a
> > > local
> > > > > > > variable is
> > > > > > > > > > > assigned to, but otherwise unused (aside from its
> > declaration).
> > > > > > > > > > >
> > > > > > > > > > > +  #
> > > > > > > > > > >
> > > > > > > > > > > +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64
> > > > > > > $(OPENSSL_FLAGS)
> > > > > > > > > > > $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized
> > > -Wno-
> > > > > > > > > > > error=format -Wno-format
> > > -Wno-error=unused-but-set-variable -
> > > > > > > > > > > DNO_MSABI_VA_FUNCS
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +  # suppress the following warnings in openssl so we
> > don't
> > > > break
> > > > > > the
> > > > > > > > > build
> > > > > > > > > > with
> > > > > > > > > > > warnings-as-errors:
> > > > > > > > > > >
> > > > > > > > > > > +  # 1295: Deprecated declaration <entity> - give arg
> > types
> > > > > > > > > > >
> > > > > > > > > > > +  #  550: <entity> was set but never used
> > > > > > > > > > >
> > > > > > > > > > > +  # 1293: assignment in condition
> > > > > > > > > > >
> > > > > > > > > > > +  #  111: statement is unreachable (invariably "break;"
> > after
> > > > > > "return
> > > > > > > > > X;"
> > > > > > > > > > in case
> > > > > > > > > > > statement)
> > > > > > > > > > >
> > > > > > > > > > > +  #   68: integer conversion resulted in a change of sign
> > ("if
> > > > > > (Status
> > > > > > > > > ==
> > > > > > > > > > -1)")
> > > > > > > > > > >
> > > > > > > > > > > +  #  177: <entity> was declared but never referenced
> > > > > > > > > > >
> > > > > > > > > > > +  #  223: function <entity> declared implicitly
> > > > > > > > > > >
> > > > > > > > > > > +  #  144: a value of type <type> cannot be used to
> > initialize
> > > > an
> > > > > > entity
> > > > > > > > > of
> > > > > > > > > > type
> > > > > > > > > > > <type>
> > > > > > > > > > >
> > > > > > > > > > > +  #  513: a value of type <type> cannot be assigned to an
> > > > entity
> > > > > > of
> > > > > > > type
> > > > > > > > > > <type>
> > > > > > > > > > >
> > > > > > > > > > > +  #  188: enumerated type mixed with another type (i.e.
> > > > passing an
> > > > > > > > > integer
> > > > > > > > > > as an
> > > > > > > > > > > enum without a cast)
> > > > > > > > > > >
> > > > > > > > > > > +  # 1296: Extended constant initialiser used
> > > > > > > > > > >
> > > > > > > > > > > +  #  128: loop is not reachable - may be emitted
> > > > inappropriately
> > > > > > if
> > > > > > > code
> > > > > > > > > > follows
> > > > > > > > > > > a conditional return
> > > > > > > > > > >
> > > > > > > > > > > +  #       from the function that evaluates to true at
> > > compile
> > > > time
> > > > > > > > > > >
> > > > > > > > > > > +  #  546: transfer of control bypasses initialization -
> > may be
> > > > > > emitted
> > > > > > > > > > > inappropriately if the uninitialized
> > > > > > > > > > >
> > > > > > > > > > > +  #       variable is never referenced after the jump
> > > > > > > > > > >
> > > > > > > > > > > +  #    1: ignore "#1-D: last line of file ends without a
> > > > newline"
> > > > > > > > > > >
> > > > > > > > > > > +  # 3017: <entity> may be used before being set (NOTE:
> > This
> > > > was
> > > > > > > fixed in
> > > > > > > > > > > OpenSSL 1.1 HEAD with
> > > > > > > > > > >
> > > > > > > > > > > +  #       commit
> > > d9b8b89bec4480de3a10bdaf9425db371c19145b, and
> > > > > > > can
> > > > > > > > be
> > > > > > > > > > > dropped then.)
> > > > > > > > > > >
> > > > > > > > > > > +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse
> > > -U_WIN32 -
> > > > > > > U_WIN64
> > > > > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -w -std=c99
> > > -Wno-
> > > > > > > > > > > error=uninitialized
> > > > > > > > > > >
> > > > > > > > > > > diff --git
> > a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > > b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > > index 3a2544ea5c..e8f73c4d10 100644
> > > > > > > > > > > --- a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > > +++ b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > > @@ -112,9 +112,6 @@ extern "C" {
> > > > > > > > > > >  #ifndef OPENSSL_NO_ASAN
> > > > > > > > > > >
> > > > > > > > > > >  # define OPENSSL_NO_ASAN
> > > > > > > > > > >
> > > > > > > > > > >  #endif
> > > > > > > > > > >
> > > > > > > > > > > -#ifndef OPENSSL_NO_ASM
> > > > > > > > > > >
> > > > > > > > > > > -# define OPENSSL_NO_ASM
> > > > > > > > > > >
> > > > > > > > > > > -#endif
> > > > > > > > > > >
> > > > > > > > > > >  #ifndef OPENSSL_NO_ASYNC
> > > > > > > > > > >
> > > > > > > > > > >  # define OPENSSL_NO_ASYNC
> > > > > > > > > > >
> > > > > > > > > > >  #endif
> > > > > > > > > > >
> > > > > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > > > > new file mode 100644
> > > > > > > > > > > index 0000000000..58cff16838
> > > > > > > > > > > --- /dev/null
> > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > > > > @@ -0,0 +1,18 @@
> > > > > > > > > > > +/** @file
> > > > > > > > > > >
> > > > > > > > > > > +  OpenSSL Library API hooks.
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +Copyright (c) 2020, Intel Corporation. All rights
> > > > reserved.<BR>
> > > > > > > > > > >
> > > > > > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +**/
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +#include <Uefi.h>
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +VOID *
> > > > > > > > > > >
> > > > > > > > > > > +__imp_RtlVirtualUnwind (
> > > > > > > > > > >
> > > > > > > > > > > +  VOID *    Args
> > > > > > > > > > >
> > > > > > > > > > > +  )
> > > > > > > > > > >
> > > > > > > > > > > +{
> > > > > > > > > > >
> > > > > > > > > > > +  return NULL;
> > > > > > > > > > >
> > > > > > > > > > > +}
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > diff --git
> > > > a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > > > > new file mode 100644
> > > > > > > > > > > index 0000000000..ef20d2b84e
> > > > > > > > > > > --- /dev/null
> > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > > > > @@ -0,0 +1,34 @@
> > > > > > > > > > > +/** @file
> > > > > > > > > > >
> > > > > > > > > > > +  Constructor to initialize CPUID data for OpenSSL
> > assembly
> > > > > > > operations.
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +Copyright (c) 2020, Intel Corporation. All rights
> > > > reserved.<BR>
> > > > > > > > > > >
> > > > > > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +**/
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +#include <Uefi.h>
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +extern void OPENSSL_cpuid_setup (void);
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +/**
> > > > > > > > > > >
> > > > > > > > > > > +  Constructor routine for OpensslLib.
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +  The constructor calls an internal OpenSSL function
> > which
> > > > fetches
> > > > > > a
> > > > > > > > > local
> > > > > > > > > > copy
> > > > > > > > > > >
> > > > > > > > > > > +  of the hardware capability flags, used to enable native
> > > > crypto
> > > > > > > > > > instructions.
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +  @param  None
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +  @retval EFI_SUCCESS         The construction
> > > succeeded.
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +**/
> > > > > > > > > > >
> > > > > > > > > > > +EFI_STATUS
> > > > > > > > > > >
> > > > > > > > > > > +EFIAPI
> > > > > > > > > > >
> > > > > > > > > > > +OpensslLibConstructor (
> > > > > > > > > > >
> > > > > > > > > > > +  VOID
> > > > > > > > > > >
> > > > > > > > > > > +  )
> > > > > > > > > > >
> > > > > > > > > > > +{
> > > > > > > > > > >
> > > > > > > > > > > +  OPENSSL_cpuid_setup ();
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +  return EFI_SUCCESS;
> > > > > > > > > > >
> > > > > > > > > > > +}
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > > index 57ce195394..472f59bc8e 100755
> > > > > > > > > > > --- a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > > @@ -9,9 +9,63 @@
> > > > > > > > > > >  # do not need to do this, since the results are stored in
> > the
> > > > EDK2
> > > > > > > > > > >
> > > > > > > > > > >  # git repository for them.
> > > > > > > > > > >
> > > > > > > > > > >  #
> > > > > > > > > > >
> > > > > > > > > > > +# Due to the script wrapping required to process the
> > OpenSSL
> > > > > > > > > > >
> > > > > > > > > > > +# configuration data, each native architecture must be
> > > > processed
> > > > > > > > > > >
> > > > > > > > > > > +# individually by the maintainer (in addition to the
> > standard
> > > > > > version):
> > > > > > > > > > >
> > > > > > > > > > > +#   ./process_files.pl
> > > > > > > > > > >
> > > > > > > > > > > +#   ./process_files.pl X64
> > > > > > > > > > >
> > > > > > > > > > > +#   ./process_files.pl [Arch]
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > >  use strict;
> > > > > > > > > > >
> > > > > > > > > > >  use Cwd;
> > > > > > > > > > >
> > > > > > > > > > >  use File::Copy;
> > > > > > > > > > >
> > > > > > > > > > > +use File::Basename;
> > > > > > > > > > >
> > > > > > > > > > > +use File::Path qw(make_path remove_tree);
> > > > > > > > > > >
> > > > > > > > > > > +use Text::Tabs;
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +#
> > > > > > > > > > >
> > > > > > > > > > > +# OpenSSL perlasm generator script does not transfer the
> > > > copyright
> > > > > > > > > header
> > > > > > > > > > >
> > > > > > > > > > > +#
> > > > > > > > > > >
> > > > > > > > > > > +sub copy_license_header
> > > > > > > > > > >
> > > > > > > > > > > +{
> > > > > > > > > > >
> > > > > > > > > > > +    my @args = split / /, shift;    #Separate args by
> > spaces
> > > > > > > > > > >
> > > > > > > > > > > +    my $source = $args[1];          #Source file is
> > second
> > > > (after
> > > > > > > > > "perl")
> > > > > > > > > > >
> > > > > > > > > > > +    my $target = pop @args;         #Target file is
> > always
> > > > last
> > > > > > > > > > >
> > > > > > > > > > > +    chop ($target);                 #Remove newline
> > > char
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +    my $temp_file_name = "license.tmp";
> > > > > > > > > > >
> > > > > > > > > > > +    open (my $source_file, "<" . $source) || die $source;
> > > > > > > > > > >
> > > > > > > > > > > +    open (my $target_file, "<" . $target) || die $target;
> > > > > > > > > > >
> > > > > > > > > > > +    open (my $temp_file, ">" . $temp_file_name) || die
> > > > > > > $temp_file_name;
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +    #Add "generated file" warning
> > > > > > > > > > >
> > > > > > > > > > > +    $source =~ s/^..//;             #Remove leading "./"
> > > > > > > > > > >
> > > > > > > > > > > +    print ($temp_file "; WARNING: do not edit!\r\n");
> > > > > > > > > > >
> > > > > > > > > > > +    print ($temp_file "; Generated from $source\r\n");
> > > > > > > > > > >
> > > > > > > > > > > +    print ($temp_file ";\r\n");
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +    #Copy source file header to temp file
> > > > > > > > > > >
> > > > > > > > > > > +    while (my $line = <$source_file>) {
> > > > > > > > > > >
> > > > > > > > > > > +        next if ($line =~ /#!/);    #Ignore shebang line
> > > > > > > > > > >
> > > > > > > > > > > +        $line =~ s/#/;/;            #Fix comment
> > > character for
> > > > > > assembly
> > > > > > > > > > >
> > > > > > > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing
> > > whitepsace,
> > > > > > fixup
> > > > > > > > > line
> > > > > > > > > > endings
> > > > > > > > > > >
> > > > > > > > > > > +        print ($temp_file $line);
> > > > > > > > > > >
> > > > > > > > > > > +        last if ($line =~ /http/);  #Last line of
> > copyright
> > > > header
> > > > > > > > > > contains a web link
> > > > > > > > > > >
> > > > > > > > > > > +    }
> > > > > > > > > > >
> > > > > > > > > > > +    print ($temp_file "\r\n");
> > > > > > > > > > >
> > > > > > > > > > > +    #Retrieve generated assembly contents
> > > > > > > > > > >
> > > > > > > > > > > +    while (my $line = <$target_file>) {
> > > > > > > > > > >
> > > > > > > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing
> > > whitepsace,
> > > > > > fixup
> > > > > > > > > line
> > > > > > > > > > endings
> > > > > > > > > > >
> > > > > > > > > > > +        print ($temp_file expand ($line));  #expand()
> > > replaces
> > > > > > tabs with
> > > > > > > > > > spaces
> > > > > > > > > > >
> > > > > > > > > > > +    }
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +    close ($source_file);
> > > > > > > > > > >
> > > > > > > > > > > +    close ($target_file);
> > > > > > > > > > >
> > > > > > > > > > > +    close ($temp_file);
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +    move ($temp_file_name, $target) ||
> > > > > > > > > > >
> > > > > > > > > > > +        die "Cannot replace \"" . $target . "\"!";
> > > > > > > > > > >
> > > > > > > > > > > +}
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >  #
> > > > > > > > > > >
> > > > > > > > > > >  # Find the openssl directory name for use lib. We have to
> > do
> > > > this
> > > > > > > > > > >
> > > > > > > > > > > @@ -21,10 +75,41 @@ use File::Copy;
> > > > > > > > > > >  #
> > > > > > > > > > >
> > > > > > > > > > >  my $inf_file;
> > > > > > > > > > >
> > > > > > > > > > >  my $OPENSSL_PATH;
> > > > > > > > > > >
> > > > > > > > > > > +my $uefi_config;
> > > > > > > > > > >
> > > > > > > > > > > +my $extension;
> > > > > > > > > > >
> > > > > > > > > > > +my $arch;
> > > > > > > > > > >
> > > > > > > > > > >  my @inf;
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >  BEGIN {
> > > > > > > > > > >
> > > > > > > > > > >      $inf_file = "OpensslLib.inf";
> > > > > > > > > > >
> > > > > > > > > > > +    $uefi_config = "UEFI";
> > > > > > > > > > >
> > > > > > > > > > > +    $arch = shift;
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +    if (defined $arch) {
> > > > > > > > > > >
> > > > > > > > > > > +        if (uc ($arch) eq "X64") {
> > > > > > > > > > >
> > > > > > > > > > > +            $arch = "X64";
> > > > > > > > > > >
> > > > > > > > > > > +            $inf_file = "OpensslLibX64.inf";
> > > > > > > > > > >
> > > > > > > > > > > +            $uefi_config = "UEFI-x86_64";
> > > > > > > > > > >
> > > > > > > > > > > +            $extension = "nasm";
> > > > > > > > > > >
> > > > > > > > > > > +        } else {
> > > > > > > > > > >
> > > > > > > > > > > +            die "Unsupported architecture \"" . $arch .
> > > "\"!";
> > > > > > > > > > >
> > > > > > > > > > > +        }
> > > > > > > > > > >
> > > > > > > > > > > +        if ($extension eq "nasm") {
> > > > > > > > > > >
> > > > > > > > > > > +            if (`nasm -v 2>&1`) {
> > > > > > > > > > >
> > > > > > > > > > > +                #Presence of nasm executable will trigger
> > > > > > inclusion of
> > > > > > > > > AVX
> > > > > > > > > > instructions
> > > > > > > > > > >
> > > > > > > > > > > +                die "\nCannot run assembly generators
> > > with
> > > > NASM in
> > > > > > > > > > path!\n\n";
> > > > > > > > > > >
> > > > > > > > > > > +            }
> > > > > > > > > > >
> > > > > > > > > > > +        }
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +        # Prepare assembly folder
> > > > > > > > > > >
> > > > > > > > > > > +        if (-d $arch) {
> > > > > > > > > > >
> > > > > > > > > > > +            remove_tree ($arch, {safe => 1}) ||
> > > > > > > > > > >
> > > > > > > > > > > +                die "Cannot clean assembly folder \"" .
> > > $arch
> > > > .
> > > > > > "\"!";
> > > > > > > > > > >
> > > > > > > > > > > +        } else {
> > > > > > > > > > >
> > > > > > > > > > > +            mkdir $arch ||
> > > > > > > > > > >
> > > > > > > > > > > +                die "Cannot create assembly folder \"" .
> > > $arch
> > > > .
> > > > > > "\"!";
> > > > > > > > > > >
> > > > > > > > > > > +        }
> > > > > > > > > > >
> > > > > > > > > > > +    }
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >      # Read the contents of the inf file
> > > > > > > > > > >
> > > > > > > > > > >      open( FD, "<" . $inf_file ) ||
> > > > > > > > > > >
> > > > > > > > > > > @@ -47,9 +132,9 @@ BEGIN {
> > > > > > > > > > >              # Configure UEFI
> > > > > > > > > > >
> > > > > > > > > > >              system(
> > > > > > > > > > >
> > > > > > > > > > >                  "./Configure",
> > > > > > > > > > >
> > > > > > > > > > > -                "UEFI",
> > > > > > > > > > >
> > > > > > > > > > > +                "--config=../uefi-asm.conf",
> > > > > > > > > > >
> > > > > > > > > > > +                "$uefi_config",
> > > > > > > > > > >
> > > > > > > > > > >                  "no-afalgeng",
> > > > > > > > > > >
> > > > > > > > > > > -                "no-asm",
> > > > > > > > > > >
> > > > > > > > > > >                  "no-async",
> > > > > > > > > > >
> > > > > > > > > > >                  "no-autoerrinit",
> > > > > > > > > > >
> > > > > > > > > > >                  "no-autoload-config",
> > > > > > > > > > >
> > > > > > > > > > > @@ -129,23 +214,53 @@ BEGIN {
> > > > > > > > > > >  # Retrieve file lists from OpenSSL configdata
> > > > > > > > > > >
> > > > > > > > > > >  #
> > > > > > > > > > >
> > > > > > > > > > >  use configdata qw/%unified_info/;
> > > > > > > > > > >
> > > > > > > > > > > +use configdata qw/%config/;
> > > > > > > > > > >
> > > > > > > > > > > +use configdata qw/%target/;
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +#
> > > > > > > > > > >
> > > > > > > > > > > +# Collect build flags from configdata
> > > > > > > > > > >
> > > > > > > > > > > +#
> > > > > > > > > > >
> > > > > > > > > > > +my $flags = "";
> > > > > > > > > > >
> > > > > > > > > > > +foreach my $f (@{$config{lib_defines}}) {
> > > > > > > > > > >
> > > > > > > > > > > +    $flags .= " -D$f";
> > > > > > > > > > >
> > > > > > > > > > > +}
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >  my @cryptofilelist = ();
> > > > > > > > > > >
> > > > > > > > > > >  my @sslfilelist = ();
> > > > > > > > > > >
> > > > > > > > > > > +my @asmfilelist = ();
> > > > > > > > > > >
> > > > > > > > > > > +my @asmbuild = ();
> > > > > > > > > > >
> > > > > > > > > > >  foreach my $product ((@{$unified_info{libraries}},
> > > > > > > > > > >
> > > > > > > > > > >                        @{$unified_info{engines}})) {
> > > > > > > > > > >
> > > > > > > > > > >      foreach my $o (@{$unified_info{sources}->{$product}})
> > > {
> > > > > > > > > > >
> > > > > > > > > > >          foreach my $s (@{$unified_info{sources}->{$o}}) {
> > > > > > > > > > >
> > > > > > > > > > > -            next if ($unified_info{generate}->{$s});
> > > > > > > > > > >
> > > > > > > > > > > -            next if $s =~ "crypto/bio/b_print.c";
> > > > > > > > > > >
> > > > > > > > > > > -
> > > > > > > > > > >
> > > > > > > > > > >              # No need to add unused files in UEFI.
> > > > > > > > > > >
> > > > > > > > > > >              # So it can reduce porting time, compile
> > time,
> > > > library
> > > > > > size.
> > > > > > > > > > >
> > > > > > > > > > > +            next if $s =~ "crypto/bio/b_print.c";
> > > > > > > > > > >
> > > > > > > > > > >              next if $s =~ "crypto/rand/randfile.c";
> > > > > > > > > > >
> > > > > > > > > > >              next if $s =~ "crypto/store/";
> > > > > > > > > > >
> > > > > > > > > > >              next if $s =~ "crypto/err/err_all.c";
> > > > > > > > > > >
> > > > > > > > > > >              next if $s =~ "crypto/aes/aes_ecb.c";
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > +            if ($unified_info{generate}->{$s}) {
> > > > > > > > > > >
> > > > > > > > > > > +                if (defined $arch) {
> > > > > > > > > > >
> > > > > > > > > > > +                    my $buildstring = "perl";
> > > > > > > > > > >
> > > > > > > > > > > +                    foreach my $arg
> > > > (@{$unified_info{generate}-
> > > > > > >{$s}}) {
> > > > > > > > > > >
> > > > > > > > > > > +                        if ($arg =~ ".pl") {
> > > > > > > > > > >
> > > > > > > > > > > +                            $buildstring .=
> > > " ./openssl/$arg";
> > > > > > > > > > >
> > > > > > > > > > > +                        } elsif ($arg =~
> > > "PERLASM_SCHEME") {
> > > > > > > > > > >
> > > > > > > > > > > +                            $buildstring .= "
> > > > > > $target{perlasm_scheme}";
> > > > > > > > > > >
> > > > > > > > > > > +                        } elsif ($arg =~ "LIB_CFLAGS") {
> > > > > > > > > > >
> > > > > > > > > > > +                            $buildstring .= "$flags";
> > > > > > > > > > >
> > > > > > > > > > > +                        }
> > > > > > > > > > >
> > > > > > > > > > > +                    }
> > > > > > > > > > >
> > > > > > > > > > > +                    ($s, my $path, undef) = fileparse($s,
> > > > > > qr/\.[^.]*/);
> > > > > > > > > > >
> > > > > > > > > > > +                    $buildstring .= "
> > > > ./$arch/$path$s.$extension";
> > > > > > > > > > >
> > > > > > > > > > > +                    make_path ("./$arch/$path");
> > > > > > > > > > >
> > > > > > > > > > > +                    push @asmbuild, "$buildstring\n";
> > > > > > > > > > >
> > > > > > > > > > > +                    push @asmfilelist, "
> > > > > > $arch/$path$s.$extension\r\n";
> > > > > > > > > > >
> > > > > > > > > > > +                }
> > > > > > > > > > >
> > > > > > > > > > > +                next;
> > > > > > > > > > >
> > > > > > > > > > > +            }
> > > > > > > > > > >
> > > > > > > > > > >              if ($product =~ "libssl") {
> > > > > > > > > > >
> > > > > > > > > > >                  push @sslfilelist, '  $(OPENSSL_PATH)/' .
> > > $s .
> > > > > > "\r\n";
> > > > > > > > > > >
> > > > > > > > > > >                  next;
> > > > > > > > > > >
> > > > > > > > > > > @@ -183,15 +298,31 @@ foreach (@headers){
> > > > > > > > > > >  }
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > +#
> > > > > > > > > > >
> > > > > > > > > > > +# Generate assembly files
> > > > > > > > > > >
> > > > > > > > > > > +#
> > > > > > > > > > >
> > > > > > > > > > > +if (@asmbuild) {
> > > > > > > > > > >
> > > > > > > > > > > +    print "\n--> Generating assembly files ... ";
> > > > > > > > > > >
> > > > > > > > > > > +    foreach my $buildstring (@asmbuild) {
> > > > > > > > > > >
> > > > > > > > > > > +        system ("$buildstring");
> > > > > > > > > > >
> > > > > > > > > > > +        copy_license_header ($buildstring);
> > > > > > > > > > >
> > > > > > > > > > > +    }
> > > > > > > > > > >
> > > > > > > > > > > +    print "Done!";
> > > > > > > > > > >
> > > > > > > > > > > +}
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > >  #
> > > > > > > > > > >
> > > > > > > > > > >  # Update OpensslLib.inf with autogenerated file list
> > > > > > > > > > >
> > > > > > > > > > >  #
> > > > > > > > > > >
> > > > > > > > > > >  my @new_inf = ();
> > > > > > > > > > >
> > > > > > > > > > >  my $subbing = 0;
> > > > > > > > > > >
> > > > > > > > > > > -print "\n--> Updating OpensslLib.inf ... ";
> > > > > > > > > > >
> > > > > > > > > > > +print "\n--> Updating $inf_file ... ";
> > > > > > > > > > >
> > > > > > > > > > >  foreach (@inf) {
> > > > > > > > > > >
> > > > > > > > > > > +    if ($_ =~ "DEFINE OPENSSL_FLAGS_CONFIG") {
> > > > > > > > > > >
> > > > > > > > > > > +        push @new_inf, "  DEFINE
> > > OPENSSL_FLAGS_CONFIG    =" .
> > > > > > $flags
> > > > > > > .
> > > > > > > > > > "\r\n";
> > > > > > > > > > >
> > > > > > > > > > > +        next;
> > > > > > > > > > >
> > > > > > > > > > > +    }
> > > > > > > > > > >
> > > > > > > > > > >      if ( $_ =~ "# Autogenerated files list starts here" )
> > {
> > > > > > > > > > >
> > > > > > > > > > > -        push @new_inf, $_, @cryptofilelist, @sslfilelist;
> > > > > > > > > > >
> > > > > > > > > > > +        push @new_inf, $_, @asmfilelist, @cryptofilelist,
> > > > > > @sslfilelist;
> > > > > > > > > > >
> > > > > > > > > > >          $subbing = 1;
> > > > > > > > > > >
> > > > > > > > > > >          next;
> > > > > > > > > > >
> > > > > > > > > > >      }
> > > > > > > > > > >
> > > > > > > > > > > @@ -216,49 +347,51 @@ rename( $new_inf_file, $inf_file )
> > ||
> > > > > > > > > > >      die "rename $inf_file";
> > > > > > > > > > >
> > > > > > > > > > >  print "Done!";
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > -#
> > > > > > > > > > >
> > > > > > > > > > > -# Update OpensslLibCrypto.inf with auto-generated file
> > list
> > > > (no
> > > > > > libssl)
> > > > > > > > > > >
> > > > > > > > > > > -#
> > > > > > > > > > >
> > > > > > > > > > > -$inf_file = "OpensslLibCrypto.inf";
> > > > > > > > > > >
> > > > > > > > > > > -
> > > > > > > > > > >
> > > > > > > > > > > -# Read the contents of the inf file
> > > > > > > > > > >
> > > > > > > > > > > -@inf = ();
> > > > > > > > > > >
> > > > > > > > > > > -@new_inf = ();
> > > > > > > > > > >
> > > > > > > > > > > -open( FD, "<" . $inf_file ) ||
> > > > > > > > > > >
> > > > > > > > > > > -    die "Cannot open \"" . $inf_file . "\"!";
> > > > > > > > > > >
> > > > > > > > > > > -@inf = (<FD>);
> > > > > > > > > > >
> > > > > > > > > > > -close(FD) ||
> > > > > > > > > > >
> > > > > > > > > > > -    die "Cannot close \"" . $inf_file . "\"!";
> > > > > > > > > > >
> > > > > > > > > > > +if (!defined $arch) {
> > > > > > > > > > >
> > > > > > > > > > > +    #
> > > > > > > > > > >
> > > > > > > > > > > +    # Update OpensslLibCrypto.inf with auto-generated
> > file
> > > > list
> > > > > > (no
> > > > > > > > > > libssl)
> > > > > > > > > > >
> > > > > > > > > > > +    #
> > > > > > > > > > >
> > > > > > > > > > > +    $inf_file = "OpensslLibCrypto.inf";
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > -$subbing = 0;
> > > > > > > > > > >
> > > > > > > > > > > -print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > > > > > > > >
> > > > > > > > > > > -foreach (@inf) {
> > > > > > > > > > >
> > > > > > > > > > > -    if ( $_ =~ "# Autogenerated files list starts here" )
> > {
> > > > > > > > > > >
> > > > > > > > > > > -        push @new_inf, $_, @cryptofilelist;
> > > > > > > > > > >
> > > > > > > > > > > -        $subbing = 1;
> > > > > > > > > > >
> > > > > > > > > > > -        next;
> > > > > > > > > > >
> > > > > > > > > > > -    }
> > > > > > > > > > >
> > > > > > > > > > > -    if ( $_ =~ "# Autogenerated files list ends here" ) {
> > > > > > > > > > >
> > > > > > > > > > > -        push @new_inf, $_;
> > > > > > > > > > >
> > > > > > > > > > > -        $subbing = 0;
> > > > > > > > > > >
> > > > > > > > > > > -        next;
> > > > > > > > > > >
> > > > > > > > > > > +    # Read the contents of the inf file
> > > > > > > > > > >
> > > > > > > > > > > +    @inf = ();
> > > > > > > > > > >
> > > > > > > > > > > +    @new_inf = ();
> > > > > > > > > > >
> > > > > > > > > > > +    open( FD, "<" . $inf_file ) ||
> > > > > > > > > > >
> > > > > > > > > > > +        die "Cannot open \"" . $inf_file . "\"!";
> > > > > > > > > > >
> > > > > > > > > > > +    @inf = (<FD>);
> > > > > > > > > > >
> > > > > > > > > > > +    close(FD) ||
> > > > > > > > > > >
> > > > > > > > > > > +        die "Cannot close \"" . $inf_file . "\"!";
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +    $subbing = 0;
> > > > > > > > > > >
> > > > > > > > > > > +    print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > > > > > > > >
> > > > > > > > > > > +    foreach (@inf) {
> > > > > > > > > > >
> > > > > > > > > > > +        if ( $_ =~ "# Autogenerated files list starts
> > here" )
> > > > {
> > > > > > > > > > >
> > > > > > > > > > > +            push @new_inf, $_, @cryptofilelist;
> > > > > > > > > > >
> > > > > > > > > > > +            $subbing = 1;
> > > > > > > > > > >
> > > > > > > > > > > +            next;
> > > > > > > > > > >
> > > > > > > > > > > +        }
> > > > > > > > > > >
> > > > > > > > > > > +        if ( $_ =~ "# Autogenerated files list ends here"
> > ) {
> > > > > > > > > > >
> > > > > > > > > > > +            push @new_inf, $_;
> > > > > > > > > > >
> > > > > > > > > > > +            $subbing = 0;
> > > > > > > > > > >
> > > > > > > > > > > +            next;
> > > > > > > > > > >
> > > > > > > > > > > +        }
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +        push @new_inf, $_
> > > > > > > > > > >
> > > > > > > > > > > +            unless ($subbing);
> > > > > > > > > > >
> > > > > > > > > > >      }
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > -    push @new_inf, $_
> > > > > > > > > > >
> > > > > > > > > > > -        unless ($subbing);
> > > > > > > > > > >
> > > > > > > > > > > +    $new_inf_file = $inf_file . ".new";
> > > > > > > > > > >
> > > > > > > > > > > +    open( FD, ">" . $new_inf_file ) ||
> > > > > > > > > > >
> > > > > > > > > > > +        die $new_inf_file;
> > > > > > > > > > >
> > > > > > > > > > > +    print( FD @new_inf ) ||
> > > > > > > > > > >
> > > > > > > > > > > +        die $new_inf_file;
> > > > > > > > > > >
> > > > > > > > > > > +    close(FD) ||
> > > > > > > > > > >
> > > > > > > > > > > +        die $new_inf_file;
> > > > > > > > > > >
> > > > > > > > > > > +    rename( $new_inf_file, $inf_file ) ||
> > > > > > > > > > >
> > > > > > > > > > > +        die "rename $inf_file";
> > > > > > > > > > >
> > > > > > > > > > > +    print "Done!";
> > > > > > > > > > >
> > > > > > > > > > >  }
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > -$new_inf_file = $inf_file . ".new";
> > > > > > > > > > >
> > > > > > > > > > > -open( FD, ">" . $new_inf_file ) ||
> > > > > > > > > > >
> > > > > > > > > > > -    die $new_inf_file;
> > > > > > > > > > >
> > > > > > > > > > > -print( FD @new_inf ) ||
> > > > > > > > > > >
> > > > > > > > > > > -    die $new_inf_file;
> > > > > > > > > > >
> > > > > > > > > > > -close(FD) ||
> > > > > > > > > > >
> > > > > > > > > > > -    die $new_inf_file;
> > > > > > > > > > >
> > > > > > > > > > > -rename( $new_inf_file, $inf_file ) ||
> > > > > > > > > > >
> > > > > > > > > > > -    die "rename $inf_file";
> > > > > > > > > > >
> > > > > > > > > > > -print "Done!";
> > > > > > > > > > >
> > > > > > > > > > > -
> > > > > > > > > > >
> > > > > > > > > > >  #
> > > > > > > > > > >
> > > > > > > > > > >  # Copy opensslconf.h and dso_conf.h generated from
> > > OpenSSL
> > > > > > > > Configuration
> > > > > > > > > > >
> > > > > > > > > > >  #
> > > > > > > > > > >
> > > > > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > > > > new file mode 100644
> > > > > > > > > > > index 0000000000..55eedbf3ba
> > > > > > > > > > > --- /dev/null
> > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > > > > @@ -0,0 +1,15 @@
> > > > > > > > > > > +## -*- mode: perl; -*-
> > > > > > > > > > >
> > > > > > > > > > > +## UEFI assembly openssl configuration targets.
> > > > > > > > > > >
> > > > > > > > > > > +
> > > > > > > > > > >
> > > > > > > > > > > +my %targets = (
> > > > > > > > > > >
> > > > > > > > > > > +#### UEFI
> > > > > > > > > > >
> > > > > > > > > > > +    "UEFI-x86_64" => {
> > > > > > > > > > >
> > > > > > > > > > > +        perlasm_scheme  => "nasm",
> > > > > > > > > > >
> > > > > > > > > > > +        # inherit_from    => [ "UEFI",
> > > asm("x86_64_asm") ],
> > > > > > > > > > >
> > > > > > > > > > > +        inherit_from    => [ "UEFI" ],
> > > > > > > > > > >
> > > > > > > > > > > +        cpuid_asm_src   => "x86_64cpuid.s",
> > > > > > > > > > >
> > > > > > > > > > > +        aes_asm_src     => "aes_core.c aes_cbc.c vpaes-
> > > > x86_64.s
> > > > > > aesni-
> > > > > > > > > > x86_64.s
> > > > > > > > > > > aesni-sha1-x86_64.s aesni-sha256-x86_64.s
> > > aesni-mb-x86_64.s",
> > > > > > > > > > >
> > > > > > > > > > > +        sha1_asm_src    => "sha1-x86_64.s
> > > sha256-x86_64.s
> > > > sha512-
> > > > > > > > > x86_64.s
> > > > > > > > > > > sha1-mb-x86_64.s sha256-mb-x86_64.s",
> > > > > > > > > > >
> > > > > > > > > > > +        modes_asm_src   => "ghash-x86_64.s",
> > > > > > > > > > >
> > > > > > > > > > > +    },
> > > > > > > > > > >
> > > > > > > > > > > +);
> > > > > > > > > > >
> > > > > > > > > > > --
> > > > > > > > > > > 2.28.0.windows.1
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > >
> > >
> > >
> > >
> > >
> >
> >
> >
> >
> >
> > 
> >


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

* Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
  2020-09-25  1:11                       ` Yao, Jiewen
@ 2020-09-25  1:14                         ` Zurcher, Christopher J
       [not found]                         ` <1637E1D4851CF309.11037@groups.io>
  1 sibling, 0 replies; 42+ messages in thread
From: Zurcher, Christopher J @ 2020-09-25  1:14 UTC (permalink / raw)
  To: Yao, Jiewen, devel@edk2.groups.io, gaoliming@byosoft.com.cn,
	Jiang, Guomin
  Cc: Wang, Jian J, Lu, XiaoyuX, 'Ard Biesheuvel'

I have no objection to CHAR16; it looks like OpenSSL doesn't actually use wchar_t anywhere.

--
Christopher Zurcher

> -----Original Message-----
> From: Yao, Jiewen <jiewen.yao@intel.com>
> Sent: Thursday, September 24, 2020 18:11
> To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> devel@edk2.groups.io; gaoliming@byosoft.com.cn; Jiang, Guomin
> <guomin.jiang@intel.com>
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> 'Ard Biesheuvel' <ard.biesheuvel@linaro.org>
> Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> instruction support for X64
> 
> I think we configure wchar_t to be 16bits by using -fshort-wchar.
> 
> Should we use
> typedef CHAR16         wchar_t;
> instead of
> typedef UINT32         wchar_t;
> 
> Thank you
> Yao Jiewen
> 
> > -----Original Message-----
> > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > Sent: Friday, September 25, 2020 9:07 AM
> > To: devel@edk2.groups.io; gaoliming@byosoft.com.cn; Yao, Jiewen
> > <jiewen.yao@intel.com>; Jiang, Guomin <guomin.jiang@intel.com>
> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>;
> > 'Ard Biesheuvel' <ard.biesheuvel@linaro.org>
> > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > instruction support for X64
> >
> > I've discovered the failure was because CryptoPkg includes its own stddef.h
> > which is a wrapper for CrtLibSupport.h
> > I have added the required definitions to this file and have resolved the
> error:
> > typedef INTN           ptrdiff_t;
> > typedef UINT32         wchar_t;
> >
> > Thanks,
> > Christopher Zurcher
> >
> > > -----Original Message-----
> > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of gaoliming
> > > Sent: Thursday, September 24, 2020 17:49
> > > To: devel@edk2.groups.io; Zurcher, Christopher J
> > > <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>;
> > Jiang,
> > > Guomin <guomin.jiang@intel.com>
> > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > <xiaoyux.lu@intel.com>;
> > > 'Ard Biesheuvel' <ard.biesheuvel@linaro.org>
> > > Subject: 回复: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> native
> > > instruction support for X64
> > >
> > > Zurcher:
> > >   Can you specify the detail build step to reproduce the build error with
> > > CLANGPDB tool chain?
> > >
> > > Thanks
> > > Liming
> > > > -----邮件原件-----
> > > > 发件人: bounce+27952+65588+4905953+8761045@groups.io
> > > > <bounce+27952+65588+4905953+8761045@groups.io> 代表 Zurcher,
> > > > Christopher J
> > > > 发送时间: 2020年9月25日 8:28
> > > > 收件人: Yao, Jiewen <jiewen.yao@intel.com>; Jiang, Guomin
> > > > <guomin.jiang@intel.com>; devel@edk2.groups.io
> > > > 抄送: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > 主题: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > > instruction support for X64
> > > >
> > > > I was able to successfully build and run the non-optimized code with
> LLVM,
> > > > but the optimized version returns this error during build:
> > > >
> > > > C:\Program Files\LLVM\lib\clang\9.0.0\include\stdatomic.h:91:17: error:
> > > > unknown type name 'wchar_t'
> > > > typedef _Atomic(wchar_t)            atomic_wchar_t;
> > > >
> > > > Is there a known build issue with CLANGPDB and the stdatomic.h file?
> > > >
> > > > Thanks,
> > > > Christopher Zurcher
> > > >
> > > > > -----Original Message-----
> > > > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > > > Sent: Tuesday, September 22, 2020 19:35
> > > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>; Jiang,
> > > Guomin
> > > > > <guomin.jiang@intel.com>; devel@edk2.groups.io
> > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > <xiaoyux.lu@intel.com>;
> > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > > native
> > > > > instruction support for X64
> > > > >
> > > > > For GCC, please refer to
> > > > > https://github.com/tianocore/tianocore.github.io/wiki/Using-EDK-II-
> with-
> > > > > Native-GCC
> > > > >
> > > > > For LLVM, please refer to
> > > > > https://github.com/tianocore/tianocore.github.io/wiki/CLANG9-Tools-
> > Chain
> > > > >
> > > > > Thank you
> > > > > Yao Jiewen
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > > > Sent: Tuesday, September 22, 2020 11:22 PM
> > > > > > To: Jiang, Guomin <guomin.jiang@intel.com>; devel@edk2.groups.io;
> > Yao,
> > > > > > Jiewen <jiewen.yao@intel.com>
> > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > <xiaoyux.lu@intel.com>;
> > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > > > native
> > > > > > instruction support for X64
> > > > > >
> > > > > > I have unit tested SHA1, SHA512, and AES as well.
> > > > > > I do not have the build environment available to test GCC and LLVM.
> > > > > >
> > > > > > --
> > > > > > Christopher Zurcher
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: Jiang, Guomin <guomin.jiang@intel.com>
> > > > > > > Sent: Wednesday, September 16, 2020 02:17
> > > > > > > To: devel@edk2.groups.io; Yao, Jiewen <jiewen.yao@intel.com>;
> > > > Zurcher,
> > > > > > > Christopher J <christopher.j.zurcher@intel.com>
> > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib:
> Add
> > > > native
> > > > > > > instruction support for X64
> > > > > > >
> > > > > > > Hi Zurcher,
> > > > > > >
> > > > > > > > [Jiewen] Since you also add other sha (sha1, sha512) and aesni,
> I
> > > think
> > > > > > > those
> > > > > > > > need unit test for them too.
> > > > > > >
> > > > > > > Can you update the status about it?
> > > > > > >
> > > > > > > > [Jiewen] I think we need support build with GCC and LLVM, and
> with
> > > > X64.
> > > > > > >
> > > > > > > It is better to support the GCC and LLVM.
> > > > > > >
> > > > > > > Thanks
> > > > > > > Guomin
> > > > > > >
> > > > > > > > -----Original Message-----
> > > > > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> > > > Yao,
> > > > > > > > Jiewen
> > > > > > > > Sent: Tuesday, August 25, 2020 7:36 AM
> > > > > > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > > > > > > > devel@edk2.groups.io
> > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > > <xiaoyux.lu@intel.com>; Ard Biesheuvel
> <ard.biesheuvel@linaro.org>
> > > > > > > > Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib:
> Add
> > > > > native
> > > > > > > > instruction support for X64
> > > > > > > >
> > > > > > > > Below:
> > > > > > > >
> > > > > > > > > -----Original Message-----
> > > > > > > > > From: Zurcher, Christopher J
> <christopher.j.zurcher@intel.com>
> > > > > > > > > Sent: Tuesday, August 25, 2020 5:26 AM
> > > > > > > > > To: devel@edk2.groups.io; Zurcher, Christopher J
> > > > > > > > > <christopher.j.zurcher@intel.com>; Yao, Jiewen
> > > > <jiewen.yao@intel.com>
> > > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2]
> CryptoPkg/OpensslLib:
> > > Add
> > > > > native
> > > > > > > > > instruction support for X64
> > > > > > > > >
> > > > > > > > > 1) I have confirmed that the ApiHooks.c file is still
> required
> > > even
> > > > > > > without
> > > > > > > > the AVX
> > > > > > > > > instructions included. The x86_64 assembly files in OpenSSL
> set
> > > a
> > > > > flag
> > > > > > > called
> > > > > > > > > $win64 and automatically include calls to the
> RtlVirtualUnwind
> > > > > function
> > > > > > > if
> > > > > > > > NASM
> > > > > > > > > is selected as the assembler scheme.
> > > > > > > > >
> > > > > > > > >
> > > > https://docs.microsoft.com/en-us/windows/win32/api/winnt/nf-winnt-
> > > > > > > > > rtlvirtualunwind
> > > > > > > > >
> > > > > > > > > I have submitted an issue against OpenSSL since I don't think
> > > using
> > > > > the
> > > > > > > > NASM
> > > > > > > > > assembler should force the inclusion of Windows-specific API
> > > hooks,
> > > > > but
> > > > > > > > that
> > > > > > > > > change cannot be made in OpenSSL 1.1.1 and we will have to
> wait
> > > > for
> > > > > > > > OpenSSL 3
> > > > > > > > > or later to remove the stub function.
> > > > > > > > >
> > > > > > > > > https://github.com/openssl/openssl/issues/12712
> > > > > > > > >
> > > > > > > >
> > > > > > > > [Jiewen] Thanks.
> > > > > > > >
> > > > > > > > > 2) So far I have only built with VS.
> > > > > > > > >
> > > > > > > >
> > > > > > > > [Jiewen] I think we need support build with GCC and LLVM, and
> with
> > > > X64.
> > > > > > > >
> > > > > > > >
> > > > > > > > > 3) The X64 SHA256 implementation was successfully exercised
> > > > across a
> > > > > > > > large
> > > > > > > > > number of devices in a production environment as a
> verification
> > > step
> > > > > in a
> > > > > > > > multi-
> > > > > > > > > GB data transfer scenario.
> > > > > > > > >
> > > > > > > >
> > > > > > > > [Jiewen] Since you also add other sha (sha1, sha512) and aesni,
> I
> > > think
> > > > > > > those
> > > > > > > > need unit test for them too.
> > > > > > > >
> > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > > Christopher Zurcher
> > > > > > > > >
> > > > > > > > > > -----Original Message-----
> > > > > > > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf
> > > > Of
> > > > > > > > Zurcher,
> > > > > > > > > > Christopher J
> > > > > > > > > > Sent: Tuesday, August 18, 2020 15:50
> > > > > > > > > > To: Yao, Jiewen <jiewen.yao@intel.com>;
> devel@edk2.groups.io
> > > > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > > > Subject: Re: [edk2-devel] [PATCH v2 1/2]
> CryptoPkg/OpensslLib:
> > > > Add
> > > > > > > > native
> > > > > > > > > > instruction support for X64
> > > > > > > > > >
> > > > > > > > > > After further review, the ApiHooks.c file may no longer be
> > > needed
> > > > > since
> > > > > > > > we
> > > > > > > > > > are no longer including the AVX instructions. I will look
> over
> > > the
> > > > > > > > > > dependencies and send a new patch set if I can eliminate
> the
> > > API
> > > > > hooks
> > > > > > > > file.
> > > > > > > > > >
> > > > > > > > > > Thanks,
> > > > > > > > > > Christopher Zurcher
> > > > > > > > > >
> > > > > > > > > > > -----Original Message-----
> > > > > > > > > > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > > > > > > > > > Sent: Thursday, August 13, 2020 08:04
> > > > > > > > > > > To: Zurcher, Christopher J
> > > <christopher.j.zurcher@intel.com>;
> > > > > > > > > > > devel@edk2.groups.io
> > > > > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > > > > Subject: RE: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> native
> > > > > > > > instruction
> > > > > > > > > > > support for X64
> > > > > > > > > > >
> > > > > > > > > > > Hi Christopher
> > > > > > > > > > > Thanks.
> > > > > > > > > > >
> > > > > > > > > > > 1) Would you please help me understand more on
> "ApiHooks.c
> > > > > contains
> > > > > > > > a
> > > > > > > > > stub
> > > > > > > > > > > function for a Windows API call" ?
> > > > > > > > > > > Why we need this?
> > > > > > > > > > > If it is compiler specific in openssl, should we submit
> > > patch to
> > > > > > > openssl to
> > > > > > > > > > > exclude this with OPENSSL_SYS_UEFI? That should be a
> cleaner
> > > > > solution
> > > > > > > > for
> > > > > > > > > > > UEFI.
> > > > > > > > > > >
> > > > > > > > > > > 2) Would you please describe what compiler you have
> tried?
> > > VS?
> > > > > GCC?
> > > > > > > > LLVM?
> > > > > > > > > > >
> > > > > > > > > > > 3) Would you please describe what unit test you have
> done?
> > > > > > > > > > >
> > > > > > > > > > > Thank you
> > > > > > > > > > > Yao Jiewen
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > > -----Original Message-----
> > > > > > > > > > > > From: Zurcher, Christopher J
> <christopher.j.zurcher@intel.
> > > com>
> > > > > > > > > > > > Sent: Tuesday, August 4, 2020 8:24 AM
> > > > > > > > > > > > To: devel@edk2.groups.io
> > > > > > > > > > > > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> > > > > > > > > > > <jian.j.wang@intel.com>;
> > > > > > > > > > > > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > > > > > > > > > > <ard.biesheuvel@linaro.org>
> > > > > > > > > > > > Subject: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> native
> > > > > > > instruction
> > > > > > > > > > > support
> > > > > > > > > > > > for X64
> > > > > > > > > > > >
> > > > > > > > > > > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> > > > > > > > > > > >
> > > > > > > > > > > > Adding OpensslLibX64.inf and modifying process_files.pl
> to
> > > > > process
> > > > > > > > this
> > > > > > > > > > > > file and generate the necessary assembly files.
> > > > > > > > > > > > ApiHooks.c contains a stub function for a Windows API
> > > call.
> > > > > > > > > > > > uefi-asm.conf contains the limited assembly
> configurations
> > > for
> > > > > > > > OpenSSL.
> > > > > > > > > > > >
> > > > > > > > > > > > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > > > > > > > > > > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > > > > > > > > > > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > > > > > > > > > > > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > > > > > Signed-off-by: Christopher J Zurcher
> > > > > > > > <christopher.j.zurcher@intel.com>
> > > > > > > > > > > > ---
> > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLib.inf          |
> > > > 2 +-
> > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf    |
> > > > 2 +-
> > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibX64.inf       |
> > > > 656
> > > > > > > > > > > > ++++++++++++++++++++
> > > > > > > > > > > >  CryptoPkg/Library/Include/openssl/opensslconf.h      |
> > > > 3 -
> > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/ApiHooks.c              |
> > > > 18 +
> > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c |
> > > > 34 +
> > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/process_files.pl        |
> > > > 223
> > > > > +++++--
> > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/uefi-asm.conf           |
> > > > 15 +
> > > > > > > > > > > >  8 files changed, 903 insertions(+), 50 deletions(-)
> > > > > > > > > > > >
> > > > > > > > > > > > diff --git
> a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > > > index dbbe5386a1..bd62d86936 100644
> > > > > > > > > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > > > @@ -16,7 +16,7 @@
> > > > > > > > > > > >    VERSION_STRING                 = 1.0
> > > > > > > > > > > >
> > > > > > > > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > > > > > > > >
> > > > > > > > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > > > > > > > >
> > > > > > > > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > > > > > >
> > > > > > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > > > > > > > DOPENSSL_NO_ASM
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >  #
> > > > > > > > > > > >
> > > > > > > > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM
> > > > AARCH64
> > > > > > > > > > > >
> > > > > > > > > > > > diff --git
> > > a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > > > index 616ccd9f62..2b7324a990 100644
> > > > > > > > > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > > > @@ -16,7 +16,7 @@
> > > > > > > > > > > >    VERSION_STRING                 = 1.0
> > > > > > > > > > > >
> > > > > > > > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > > > > > > > >
> > > > > > > > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > > > > > > > >
> > > > > > > > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > > > > > >
> > > > > > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > > > > > > > DOPENSSL_NO_ASM
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >  #
> > > > > > > > > > > >
> > > > > > > > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM
> > > > AARCH64
> > > > > > > > > > > >
> > > > > > > > > > > > diff --git
> > > a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > > > > > new file mode 100644
> > > > > > > > > > > > index 0000000000..825eea0254
> > > > > > > > > > > > --- /dev/null
> > > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > > > > > @@ -0,0 +1,656 @@
> > > > > > > > > > > > +## @file
> > > > > > > > > > > >
> > > > > > > > > > > > +#  This module provides OpenSSL Library
> implementation.
> > > > > > > > > > > >
> > > > > > > > > > > > +#
> > > > > > > > > > > >
> > > > > > > > > > > > +#  Copyright (c) 2010 - 2020, Intel Corporation. All
> > > rights
> > > > > > > > > > reserved.<BR>
> > > > > > > > > > > >
> > > > > > > > > > > > +#  (C) Copyright 2020 Hewlett Packard Enterprise
> > > > Development
> > > > > > > > LP<BR>
> > > > > > > > > > > >
> > > > > > > > > > > > +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > > > > > >
> > > > > > > > > > > > +#
> > > > > > > > > > > >
> > > > > > > > > > > > +##
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +[Defines]
> > > > > > > > > > > >
> > > > > > > > > > > > +  INF_VERSION                    = 0x00010005
> > > > > > > > > > > >
> > > > > > > > > > > > +  BASE_NAME                      = OpensslLibX64
> > > > > > > > > > > >
> > > > > > > > > > > > +  MODULE_UNI_FILE                = OpensslLib.uni
> > > > > > > > > > > >
> > > > > > > > > > > > +  FILE_GUID                      =
> > > > 18125E50-0117-4DD0-BE54-
> > > > > > > 4784AD995FEF
> > > > > > > > > > > >
> > > > > > > > > > > > +  MODULE_TYPE                    = BASE
> > > > > > > > > > > >
> > > > > > > > > > > > +  VERSION_STRING                 = 1.0
> > > > > > > > > > > >
> > > > > > > > > > > > +  LIBRARY_CLASS                  = OpensslLib
> > > > > > > > > > > >
> > > > > > > > > > > > +  DEFINE OPENSSL_PATH            = openssl
> > > > > > > > > > > >
> > > > > > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > > > > > >
> > > > > > > > > > > > +  DEFINE OPENSSL_FLAGS_CONFIG    =
> > > > -DOPENSSL_CPUID_OBJ -
> > > > > > > > > DSHA1_ASM -
> > > > > > > > > > > > DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -
> > > > > > > > > DGHASH_ASM
> > > > > > > > > > > >
> > > > > > > > > > > > +  CONSTRUCTOR                    =
> > > > OpensslLibConstructor
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +#
> > > > > > > > > > > >
> > > > > > > > > > > > +#  VALID_ARCHITECTURES           = X64
> > > > > > > > > > > >
> > > > > > > > > > > > +#
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +[Sources]
> > > > > > > > > > > >
> > > > > > > > > > > > +  OpensslLibConstructor.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/e_os.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ms/uplink.h
> > > > > > > > > > > >
> > > > > > > > > > > > +# Autogenerated files list starts here
> > > > > > > > > > > >
> > > > > > > > > > > > +  X64/crypto/aes/aesni-mb-x86_64.nasm
> > > > > > > > > > > >
> > > > > > > > > > > > +  X64/crypto/aes/aesni-sha1-x86_64.nasm
> > > > > > > > > > > >
> > > > > > > > > > > > +  X64/crypto/aes/aesni-sha256-x86_64.nasm
> > > > > > > > > > > >
> > > > > > > > > > > > +  X64/crypto/aes/aesni-x86_64.nasm
> > > > > > > > > > > >
> > > > > > > > > > > > +  X64/crypto/aes/vpaes-x86_64.nasm
> > > > > > > > > > > >
> > > > > > > > > > > > +  X64/crypto/modes/ghash-x86_64.nasm
> > > > > > > > > > > >
> > > > > > > > > > > > +  X64/crypto/sha/sha1-mb-x86_64.nasm
> > > > > > > > > > > >
> > > > > > > > > > > > +  X64/crypto/sha/sha1-x86_64.nasm
> > > > > > > > > > > >
> > > > > > > > > > > > +  X64/crypto/sha/sha256-mb-x86_64.nasm
> > > > > > > > > > > >
> > > > > > > > > > > > +  X64/crypto/sha/sha256-x86_64.nasm
> > > > > > > > > > > >
> > > > > > > > > > > > +  X64/crypto/sha/sha512-x86_64.nasm
> > > > > > > > > > > >
> > > > > > > > > > > > +  X64/crypto/x86_64cpuid.nasm
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_core.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ige.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_misc.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aria/aria.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_digest.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_dup.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_gentm.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_int.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_object.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_octet.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_print.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_sign.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strex.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strnid.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_time.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_type.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utctm.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utf8.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_verify.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_par.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mime.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_moid.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_pack.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_int.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_string.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/n_pkey.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/nsseq.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_bitst.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_pkey.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_spki.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_new.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_algor.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_bignum.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_info.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_int64.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_long.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_pkey.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_sig.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_spki.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_val.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_wait.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_addr.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_dump.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock2.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_buff.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_nbio.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_null.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_cb.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_meth.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_acpt.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_bio.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_conn.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_dgram.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_fd.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_file.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_log.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_mem.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_null.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_sock.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_add.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_asm.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_blind.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_const.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_ctx.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_depr.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_dh.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_div.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp2.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gcd.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_intern.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_kron.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mod.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mont.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mpi.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mul.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_nist.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_print.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_rand.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_recp.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_shift.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqr.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_srp.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_word.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_x931p.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buf_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buffer.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cmac.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/c_zlib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_api.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mall.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mod.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_sap.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_ssl.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cpt_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cryptlib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ctype.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cversion.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_check.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_depr.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_gen.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_kdf.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_key.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_meth.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_prn.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dl.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_vms.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_win32.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ebcdic.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/err/err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/err/err_prn.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_enc.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_md.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_ok.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_allc.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_alld.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/digest.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aria.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_bf.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_camellia.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_cast.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des3.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_idea.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_null.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_old.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc2.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc5.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_seed.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_sm4.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/encode.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_cnf.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_enc.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_key.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pbe.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pkey.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md2.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md4.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_mdc2.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_null.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_ripemd.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha1.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha3.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sigver.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_wp.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/names.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_dec.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_enc.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_open.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_seal.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_sign.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_verify.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ex_data.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/getenv.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/init.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/hkdf.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/kdf_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/scrypt.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lh_stats.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_one.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mem.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mem_dbg.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mem_sec.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cbc128.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ccm128.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cfb128.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ctr128.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cts128.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/gcm128.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ocb128.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ofb128.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/wrap128.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/xts128.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_dir.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_fips.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_fopen.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_init.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_str.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_time.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/o_names.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_all.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_info.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_oth.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pk8.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pkey.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_sign.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_x509.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_xaux.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pvkfmt.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_egd.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_unix.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_vms.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_win.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_none.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/keccak1600.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1_one.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha256.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha512.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm4/sm4.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/stack/stack.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_none.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_pthread.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_win.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/txt_db/txt_db.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_null.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_util.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/uid.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_dir.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_file.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_crl.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_req.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_x509.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_att.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_cmp.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_d2.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_def.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_ext.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_lu.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_meth.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_obj.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_r2x.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_req.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_set.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_trs.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_txt.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_v3.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vfy.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vpm.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509cset.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509name.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509rset.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509spki.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509type.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_all.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_attrib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_crl.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_exten.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_name.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_pubkey.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_req.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509a.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_info.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_int.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/arm_arch.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mips_arch.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ppc_arch.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/s390x_arch.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sparc_arch.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/vms_rms.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/charmap.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/standard_methods.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/modes_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/store/store_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/bio_ssl.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_msg.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_srtp.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/methods.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/packet.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/pqueue.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_cbc.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_enc.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_msg.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_asn1.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_ciph.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_conf.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_err.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_init.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_mcnf.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_rsa.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_sess.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_stat.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_txt.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_utst.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_cust.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_clnt.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_dtls.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_srvr.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_enc.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_lib.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_trce.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/tls13_enc.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/tls_srp.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/packet_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert_table.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/record.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/record_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_local.h
> > > > > > > > > > > >
> > > > > > > > > > > > +# Autogenerated files list ends here
> > > > > > > > > > > >
> > > > > > > > > > > > +  buildinf.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  rand_pool_noise.h
> > > > > > > > > > > >
> > > > > > > > > > > > +  ossl_store.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  rand_pool.c
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +[Sources.X64]
> > > > > > > > > > > >
> > > > > > > > > > > > +  rand_pool_noise_tsc.c
> > > > > > > > > > > >
> > > > > > > > > > > > +  ApiHooks.c
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +[Packages]
> > > > > > > > > > > >
> > > > > > > > > > > > +  MdePkg/MdePkg.dec
> > > > > > > > > > > >
> > > > > > > > > > > > +  CryptoPkg/CryptoPkg.dec
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +[LibraryClasses]
> > > > > > > > > > > >
> > > > > > > > > > > > +  BaseLib
> > > > > > > > > > > >
> > > > > > > > > > > > +  DebugLib
> > > > > > > > > > > >
> > > > > > > > > > > > +  TimerLib
> > > > > > > > > > > >
> > > > > > > > > > > > +  PrintLib
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +[BuildOptions]
> > > > > > > > > > > >
> > > > > > > > > > > > +  #
> > > > > > > > > > > >
> > > > > > > > > > > > +  # Disables the following Visual Studio compiler
> > > warnings
> > > > > brought
> > > > > > > by
> > > > > > > > > > > openssl
> > > > > > > > > > > > source,
> > > > > > > > > > > >
> > > > > > > > > > > > +  # so we do not break the build with /WX option:
> > > > > > > > > > > >
> > > > > > > > > > > > +  #   C4090: 'function' : different 'const' qualifiers
> > > > > > > > > > > >
> > > > > > > > > > > > +  #   C4132: 'object' : const object should be
> > > initialized
> > > > > > > (tls13_enc.c)
> > > > > > > > > > > >
> > > > > > > > > > > > +  #   C4210: nonstandard extension used: function
> given
> > > file
> > > > > scope
> > > > > > > > > > > >
> > > > > > > > > > > > +  #   C4244: conversion from type1 to type2, possible
> > > loss of
> > > > > data
> > > > > > > > > > > >
> > > > > > > > > > > > +  #   C4245: conversion from type1 to type2,
> > > > signed/unsigned
> > > > > > > > mismatch
> > > > > > > > > > > >
> > > > > > > > > > > > +  #   C4267: conversion from size_t to type, possible
> > > loss of
> > > > > data
> > > > > > > > > > > >
> > > > > > > > > > > > +  #   C4306: 'identifier' : conversion from 'type1' to
> > > 'type2'
> > > > > of
> > > > > > > > > > greater
> > > > > > > > > > > size
> > > > > > > > > > > >
> > > > > > > > > > > > +  #   C4310: cast truncates constant value
> > > > > > > > > > > >
> > > > > > > > > > > > +  #   C4389: 'operator' : signed/unsigned mismatch
> (xxxx)
> > > > > > > > > > > >
> > > > > > > > > > > > +  #   C4700: uninitialized local variable 'name' used.
> > > > > > > (conf_sap.c(71))
> > > > > > > > > > > >
> > > > > > > > > > > > +  #   C4702: unreachable code
> > > > > > > > > > > >
> > > > > > > > > > > > +  #   C4706: assignment within conditional expression
> > > > > > > > > > > >
> > > > > > > > > > > > +  #   C4819: The file contains a character that cannot
> be
> > > > > > > represented
> > > > > > > > in
> > > > > > > > > > > the
> > > > > > > > > > > > current code page
> > > > > > > > > > > >
> > > > > > > > > > > > +  #
> > > > > > > > > > > >
> > > > > > > > > > > > +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64
> > > > -U_MSC_VER
> > > > > > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /wd4090
> > > > /wd4132
> > > > > > > > > /wd4210
> > > > > > > > > > > > /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700
> > > > /wd4389
> > > > > > > > /wd4702
> > > > > > > > > > > > /wd4706 /wd4819
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64
> > > > -U_MSC_VER -
> > > > > > > > > U__ICC
> > > > > > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +  #
> > > > > > > > > > > >
> > > > > > > > > > > > +  # Suppress the following build warnings in openssl
> so
> > > we
> > > > > don't
> > > > > > > > break
> > > > > > > > > > the
> > > > > > > > > > > build
> > > > > > > > > > > > with -Werror
> > > > > > > > > > > >
> > > > > > > > > > > > +  #   -Werror=maybe-uninitialized: there exist some
> other
> > > > > paths
> > > > > > > for
> > > > > > > > > > which
> > > > > > > > > > > the
> > > > > > > > > > > > variable is not initialized.
> > > > > > > > > > > >
> > > > > > > > > > > > +  #   -Werror=format: Check calls to printf and scanf,
> > > etc.,
> > > > > to
> > > > > > > make
> > > > > > > > > > sure
> > > > > > > > > > > that the
> > > > > > > > > > > > arguments supplied have
> > > > > > > > > > > >
> > > > > > > > > > > > +  #                   types appropriate to the format
> > > > string
> > > > > > > specified.
> > > > > > > > > > > >
> > > > > > > > > > > > +  #   -Werror=unused-but-set-variable: Warn whenever a
> > > > local
> > > > > > > > variable is
> > > > > > > > > > > > assigned to, but otherwise unused (aside from its
> > > declaration).
> > > > > > > > > > > >
> > > > > > > > > > > > +  #
> > > > > > > > > > > >
> > > > > > > > > > > > +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64
> > > > > > > > $(OPENSSL_FLAGS)
> > > > > > > > > > > > $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized
> > > > -Wno-
> > > > > > > > > > > > error=format -Wno-format
> > > > -Wno-error=unused-but-set-variable -
> > > > > > > > > > > > DNO_MSABI_VA_FUNCS
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +  # suppress the following warnings in openssl so we
> > > don't
> > > > > break
> > > > > > > the
> > > > > > > > > > build
> > > > > > > > > > > with
> > > > > > > > > > > > warnings-as-errors:
> > > > > > > > > > > >
> > > > > > > > > > > > +  # 1295: Deprecated declaration <entity> - give arg
> > > types
> > > > > > > > > > > >
> > > > > > > > > > > > +  #  550: <entity> was set but never used
> > > > > > > > > > > >
> > > > > > > > > > > > +  # 1293: assignment in condition
> > > > > > > > > > > >
> > > > > > > > > > > > +  #  111: statement is unreachable (invariably
> "break;"
> > > after
> > > > > > > "return
> > > > > > > > > > X;"
> > > > > > > > > > > in case
> > > > > > > > > > > > statement)
> > > > > > > > > > > >
> > > > > > > > > > > > +  #   68: integer conversion resulted in a change of
> sign
> > > ("if
> > > > > > > (Status
> > > > > > > > > > ==
> > > > > > > > > > > -1)")
> > > > > > > > > > > >
> > > > > > > > > > > > +  #  177: <entity> was declared but never referenced
> > > > > > > > > > > >
> > > > > > > > > > > > +  #  223: function <entity> declared implicitly
> > > > > > > > > > > >
> > > > > > > > > > > > +  #  144: a value of type <type> cannot be used to
> > > initialize
> > > > > an
> > > > > > > entity
> > > > > > > > > > of
> > > > > > > > > > > type
> > > > > > > > > > > > <type>
> > > > > > > > > > > >
> > > > > > > > > > > > +  #  513: a value of type <type> cannot be assigned to
> an
> > > > > entity
> > > > > > > of
> > > > > > > > type
> > > > > > > > > > > <type>
> > > > > > > > > > > >
> > > > > > > > > > > > +  #  188: enumerated type mixed with another type
> (i.e.
> > > > > passing an
> > > > > > > > > > integer
> > > > > > > > > > > as an
> > > > > > > > > > > > enum without a cast)
> > > > > > > > > > > >
> > > > > > > > > > > > +  # 1296: Extended constant initialiser used
> > > > > > > > > > > >
> > > > > > > > > > > > +  #  128: loop is not reachable - may be emitted
> > > > > inappropriately
> > > > > > > if
> > > > > > > > code
> > > > > > > > > > > follows
> > > > > > > > > > > > a conditional return
> > > > > > > > > > > >
> > > > > > > > > > > > +  #       from the function that evaluates to true at
> > > > compile
> > > > > time
> > > > > > > > > > > >
> > > > > > > > > > > > +  #  546: transfer of control bypasses initialization
> -
> > > may be
> > > > > > > emitted
> > > > > > > > > > > > inappropriately if the uninitialized
> > > > > > > > > > > >
> > > > > > > > > > > > +  #       variable is never referenced after the jump
> > > > > > > > > > > >
> > > > > > > > > > > > +  #    1: ignore "#1-D: last line of file ends without
> a
> > > > > newline"
> > > > > > > > > > > >
> > > > > > > > > > > > +  # 3017: <entity> may be used before being set (NOTE:
> > > This
> > > > > was
> > > > > > > > fixed in
> > > > > > > > > > > > OpenSSL 1.1 HEAD with
> > > > > > > > > > > >
> > > > > > > > > > > > +  #       commit
> > > > d9b8b89bec4480de3a10bdaf9425db371c19145b, and
> > > > > > > > can
> > > > > > > > > be
> > > > > > > > > > > > dropped then.)
> > > > > > > > > > > >
> > > > > > > > > > > > +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse
> > > > -U_WIN32 -
> > > > > > > > U_WIN64
> > > > > > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -w -std=c99
> > > > -Wno-
> > > > > > > > > > > > error=uninitialized
> > > > > > > > > > > >
> > > > > > > > > > > > diff --git
> > > a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > > > b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > > > index 3a2544ea5c..e8f73c4d10 100644
> > > > > > > > > > > > --- a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > > > +++ b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > > > @@ -112,9 +112,6 @@ extern "C" {
> > > > > > > > > > > >  #ifndef OPENSSL_NO_ASAN
> > > > > > > > > > > >
> > > > > > > > > > > >  # define OPENSSL_NO_ASAN
> > > > > > > > > > > >
> > > > > > > > > > > >  #endif
> > > > > > > > > > > >
> > > > > > > > > > > > -#ifndef OPENSSL_NO_ASM
> > > > > > > > > > > >
> > > > > > > > > > > > -# define OPENSSL_NO_ASM
> > > > > > > > > > > >
> > > > > > > > > > > > -#endif
> > > > > > > > > > > >
> > > > > > > > > > > >  #ifndef OPENSSL_NO_ASYNC
> > > > > > > > > > > >
> > > > > > > > > > > >  # define OPENSSL_NO_ASYNC
> > > > > > > > > > > >
> > > > > > > > > > > >  #endif
> > > > > > > > > > > >
> > > > > > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > > > > > new file mode 100644
> > > > > > > > > > > > index 0000000000..58cff16838
> > > > > > > > > > > > --- /dev/null
> > > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > > > > > @@ -0,0 +1,18 @@
> > > > > > > > > > > > +/** @file
> > > > > > > > > > > >
> > > > > > > > > > > > +  OpenSSL Library API hooks.
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +Copyright (c) 2020, Intel Corporation. All rights
> > > > > reserved.<BR>
> > > > > > > > > > > >
> > > > > > > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +**/
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +#include <Uefi.h>
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +VOID *
> > > > > > > > > > > >
> > > > > > > > > > > > +__imp_RtlVirtualUnwind (
> > > > > > > > > > > >
> > > > > > > > > > > > +  VOID *    Args
> > > > > > > > > > > >
> > > > > > > > > > > > +  )
> > > > > > > > > > > >
> > > > > > > > > > > > +{
> > > > > > > > > > > >
> > > > > > > > > > > > +  return NULL;
> > > > > > > > > > > >
> > > > > > > > > > > > +}
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > diff --git
> > > > > a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > > > > > new file mode 100644
> > > > > > > > > > > > index 0000000000..ef20d2b84e
> > > > > > > > > > > > --- /dev/null
> > > > > > > > > > > > +++
> b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > > > > > @@ -0,0 +1,34 @@
> > > > > > > > > > > > +/** @file
> > > > > > > > > > > >
> > > > > > > > > > > > +  Constructor to initialize CPUID data for OpenSSL
> > > assembly
> > > > > > > > operations.
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +Copyright (c) 2020, Intel Corporation. All rights
> > > > > reserved.<BR>
> > > > > > > > > > > >
> > > > > > > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +**/
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +#include <Uefi.h>
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +extern void OPENSSL_cpuid_setup (void);
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +/**
> > > > > > > > > > > >
> > > > > > > > > > > > +  Constructor routine for OpensslLib.
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +  The constructor calls an internal OpenSSL function
> > > which
> > > > > fetches
> > > > > > > a
> > > > > > > > > > local
> > > > > > > > > > > copy
> > > > > > > > > > > >
> > > > > > > > > > > > +  of the hardware capability flags, used to enable
> native
> > > > > crypto
> > > > > > > > > > > instructions.
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +  @param  None
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +  @retval EFI_SUCCESS         The construction
> > > > succeeded.
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +**/
> > > > > > > > > > > >
> > > > > > > > > > > > +EFI_STATUS
> > > > > > > > > > > >
> > > > > > > > > > > > +EFIAPI
> > > > > > > > > > > >
> > > > > > > > > > > > +OpensslLibConstructor (
> > > > > > > > > > > >
> > > > > > > > > > > > +  VOID
> > > > > > > > > > > >
> > > > > > > > > > > > +  )
> > > > > > > > > > > >
> > > > > > > > > > > > +{
> > > > > > > > > > > >
> > > > > > > > > > > > +  OPENSSL_cpuid_setup ();
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +  return EFI_SUCCESS;
> > > > > > > > > > > >
> > > > > > > > > > > > +}
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > diff --git
> a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > > > index 57ce195394..472f59bc8e 100755
> > > > > > > > > > > > --- a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > > > @@ -9,9 +9,63 @@
> > > > > > > > > > > >  # do not need to do this, since the results are stored
> in
> > > the
> > > > > EDK2
> > > > > > > > > > > >
> > > > > > > > > > > >  # git repository for them.
> > > > > > > > > > > >
> > > > > > > > > > > >  #
> > > > > > > > > > > >
> > > > > > > > > > > > +# Due to the script wrapping required to process the
> > > OpenSSL
> > > > > > > > > > > >
> > > > > > > > > > > > +# configuration data, each native architecture must be
> > > > > processed
> > > > > > > > > > > >
> > > > > > > > > > > > +# individually by the maintainer (in addition to the
> > > standard
> > > > > > > version):
> > > > > > > > > > > >
> > > > > > > > > > > > +#   ./process_files.pl
> > > > > > > > > > > >
> > > > > > > > > > > > +#   ./process_files.pl X64
> > > > > > > > > > > >
> > > > > > > > > > > > +#   ./process_files.pl [Arch]
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > >  use strict;
> > > > > > > > > > > >
> > > > > > > > > > > >  use Cwd;
> > > > > > > > > > > >
> > > > > > > > > > > >  use File::Copy;
> > > > > > > > > > > >
> > > > > > > > > > > > +use File::Basename;
> > > > > > > > > > > >
> > > > > > > > > > > > +use File::Path qw(make_path remove_tree);
> > > > > > > > > > > >
> > > > > > > > > > > > +use Text::Tabs;
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +#
> > > > > > > > > > > >
> > > > > > > > > > > > +# OpenSSL perlasm generator script does not transfer
> the
> > > > > copyright
> > > > > > > > > > header
> > > > > > > > > > > >
> > > > > > > > > > > > +#
> > > > > > > > > > > >
> > > > > > > > > > > > +sub copy_license_header
> > > > > > > > > > > >
> > > > > > > > > > > > +{
> > > > > > > > > > > >
> > > > > > > > > > > > +    my @args = split / /, shift;    #Separate args by
> > > spaces
> > > > > > > > > > > >
> > > > > > > > > > > > +    my $source = $args[1];          #Source file is
> > > second
> > > > > (after
> > > > > > > > > > "perl")
> > > > > > > > > > > >
> > > > > > > > > > > > +    my $target = pop @args;         #Target file is
> > > always
> > > > > last
> > > > > > > > > > > >
> > > > > > > > > > > > +    chop ($target);                 #Remove newline
> > > > char
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +    my $temp_file_name = "license.tmp";
> > > > > > > > > > > >
> > > > > > > > > > > > +    open (my $source_file, "<" . $source) || die
> $source;
> > > > > > > > > > > >
> > > > > > > > > > > > +    open (my $target_file, "<" . $target) || die
> $target;
> > > > > > > > > > > >
> > > > > > > > > > > > +    open (my $temp_file, ">" . $temp_file_name) || die
> > > > > > > > $temp_file_name;
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +    #Add "generated file" warning
> > > > > > > > > > > >
> > > > > > > > > > > > +    $source =~ s/^..//;             #Remove leading
> "./"
> > > > > > > > > > > >
> > > > > > > > > > > > +    print ($temp_file "; WARNING: do not edit!\r\n");
> > > > > > > > > > > >
> > > > > > > > > > > > +    print ($temp_file "; Generated from $source\r\n");
> > > > > > > > > > > >
> > > > > > > > > > > > +    print ($temp_file ";\r\n");
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +    #Copy source file header to temp file
> > > > > > > > > > > >
> > > > > > > > > > > > +    while (my $line = <$source_file>) {
> > > > > > > > > > > >
> > > > > > > > > > > > +        next if ($line =~ /#!/);    #Ignore shebang
> line
> > > > > > > > > > > >
> > > > > > > > > > > > +        $line =~ s/#/;/;            #Fix comment
> > > > character for
> > > > > > > assembly
> > > > > > > > > > > >
> > > > > > > > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing
> > > > whitepsace,
> > > > > > > fixup
> > > > > > > > > > line
> > > > > > > > > > > endings
> > > > > > > > > > > >
> > > > > > > > > > > > +        print ($temp_file $line);
> > > > > > > > > > > >
> > > > > > > > > > > > +        last if ($line =~ /http/);  #Last line of
> > > copyright
> > > > > header
> > > > > > > > > > > contains a web link
> > > > > > > > > > > >
> > > > > > > > > > > > +    }
> > > > > > > > > > > >
> > > > > > > > > > > > +    print ($temp_file "\r\n");
> > > > > > > > > > > >
> > > > > > > > > > > > +    #Retrieve generated assembly contents
> > > > > > > > > > > >
> > > > > > > > > > > > +    while (my $line = <$target_file>) {
> > > > > > > > > > > >
> > > > > > > > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing
> > > > whitepsace,
> > > > > > > fixup
> > > > > > > > > > line
> > > > > > > > > > > endings
> > > > > > > > > > > >
> > > > > > > > > > > > +        print ($temp_file expand ($line));  #expand()
> > > > replaces
> > > > > > > tabs with
> > > > > > > > > > > spaces
> > > > > > > > > > > >
> > > > > > > > > > > > +    }
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +    close ($source_file);
> > > > > > > > > > > >
> > > > > > > > > > > > +    close ($target_file);
> > > > > > > > > > > >
> > > > > > > > > > > > +    close ($temp_file);
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +    move ($temp_file_name, $target) ||
> > > > > > > > > > > >
> > > > > > > > > > > > +        die "Cannot replace \"" . $target . "\"!";
> > > > > > > > > > > >
> > > > > > > > > > > > +}
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >  #
> > > > > > > > > > > >
> > > > > > > > > > > >  # Find the openssl directory name for use lib. We have
> to
> > > do
> > > > > this
> > > > > > > > > > > >
> > > > > > > > > > > > @@ -21,10 +75,41 @@ use File::Copy;
> > > > > > > > > > > >  #
> > > > > > > > > > > >
> > > > > > > > > > > >  my $inf_file;
> > > > > > > > > > > >
> > > > > > > > > > > >  my $OPENSSL_PATH;
> > > > > > > > > > > >
> > > > > > > > > > > > +my $uefi_config;
> > > > > > > > > > > >
> > > > > > > > > > > > +my $extension;
> > > > > > > > > > > >
> > > > > > > > > > > > +my $arch;
> > > > > > > > > > > >
> > > > > > > > > > > >  my @inf;
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >  BEGIN {
> > > > > > > > > > > >
> > > > > > > > > > > >      $inf_file = "OpensslLib.inf";
> > > > > > > > > > > >
> > > > > > > > > > > > +    $uefi_config = "UEFI";
> > > > > > > > > > > >
> > > > > > > > > > > > +    $arch = shift;
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +    if (defined $arch) {
> > > > > > > > > > > >
> > > > > > > > > > > > +        if (uc ($arch) eq "X64") {
> > > > > > > > > > > >
> > > > > > > > > > > > +            $arch = "X64";
> > > > > > > > > > > >
> > > > > > > > > > > > +            $inf_file = "OpensslLibX64.inf";
> > > > > > > > > > > >
> > > > > > > > > > > > +            $uefi_config = "UEFI-x86_64";
> > > > > > > > > > > >
> > > > > > > > > > > > +            $extension = "nasm";
> > > > > > > > > > > >
> > > > > > > > > > > > +        } else {
> > > > > > > > > > > >
> > > > > > > > > > > > +            die "Unsupported architecture \"" . $arch
> .
> > > > "\"!";
> > > > > > > > > > > >
> > > > > > > > > > > > +        }
> > > > > > > > > > > >
> > > > > > > > > > > > +        if ($extension eq "nasm") {
> > > > > > > > > > > >
> > > > > > > > > > > > +            if (`nasm -v 2>&1`) {
> > > > > > > > > > > >
> > > > > > > > > > > > +                #Presence of nasm executable will
> trigger
> > > > > > > inclusion of
> > > > > > > > > > AVX
> > > > > > > > > > > instructions
> > > > > > > > > > > >
> > > > > > > > > > > > +                die "\nCannot run assembly generators
> > > > with
> > > > > NASM in
> > > > > > > > > > > path!\n\n";
> > > > > > > > > > > >
> > > > > > > > > > > > +            }
> > > > > > > > > > > >
> > > > > > > > > > > > +        }
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +        # Prepare assembly folder
> > > > > > > > > > > >
> > > > > > > > > > > > +        if (-d $arch) {
> > > > > > > > > > > >
> > > > > > > > > > > > +            remove_tree ($arch, {safe => 1}) ||
> > > > > > > > > > > >
> > > > > > > > > > > > +                die "Cannot clean assembly folder \""
> .
> > > > $arch
> > > > > .
> > > > > > > "\"!";
> > > > > > > > > > > >
> > > > > > > > > > > > +        } else {
> > > > > > > > > > > >
> > > > > > > > > > > > +            mkdir $arch ||
> > > > > > > > > > > >
> > > > > > > > > > > > +                die "Cannot create assembly folder \""
> .
> > > > $arch
> > > > > .
> > > > > > > "\"!";
> > > > > > > > > > > >
> > > > > > > > > > > > +        }
> > > > > > > > > > > >
> > > > > > > > > > > > +    }
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >      # Read the contents of the inf file
> > > > > > > > > > > >
> > > > > > > > > > > >      open( FD, "<" . $inf_file ) ||
> > > > > > > > > > > >
> > > > > > > > > > > > @@ -47,9 +132,9 @@ BEGIN {
> > > > > > > > > > > >              # Configure UEFI
> > > > > > > > > > > >
> > > > > > > > > > > >              system(
> > > > > > > > > > > >
> > > > > > > > > > > >                  "./Configure",
> > > > > > > > > > > >
> > > > > > > > > > > > -                "UEFI",
> > > > > > > > > > > >
> > > > > > > > > > > > +                "--config=../uefi-asm.conf",
> > > > > > > > > > > >
> > > > > > > > > > > > +                "$uefi_config",
> > > > > > > > > > > >
> > > > > > > > > > > >                  "no-afalgeng",
> > > > > > > > > > > >
> > > > > > > > > > > > -                "no-asm",
> > > > > > > > > > > >
> > > > > > > > > > > >                  "no-async",
> > > > > > > > > > > >
> > > > > > > > > > > >                  "no-autoerrinit",
> > > > > > > > > > > >
> > > > > > > > > > > >                  "no-autoload-config",
> > > > > > > > > > > >
> > > > > > > > > > > > @@ -129,23 +214,53 @@ BEGIN {
> > > > > > > > > > > >  # Retrieve file lists from OpenSSL configdata
> > > > > > > > > > > >
> > > > > > > > > > > >  #
> > > > > > > > > > > >
> > > > > > > > > > > >  use configdata qw/%unified_info/;
> > > > > > > > > > > >
> > > > > > > > > > > > +use configdata qw/%config/;
> > > > > > > > > > > >
> > > > > > > > > > > > +use configdata qw/%target/;
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +#
> > > > > > > > > > > >
> > > > > > > > > > > > +# Collect build flags from configdata
> > > > > > > > > > > >
> > > > > > > > > > > > +#
> > > > > > > > > > > >
> > > > > > > > > > > > +my $flags = "";
> > > > > > > > > > > >
> > > > > > > > > > > > +foreach my $f (@{$config{lib_defines}}) {
> > > > > > > > > > > >
> > > > > > > > > > > > +    $flags .= " -D$f";
> > > > > > > > > > > >
> > > > > > > > > > > > +}
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >  my @cryptofilelist = ();
> > > > > > > > > > > >
> > > > > > > > > > > >  my @sslfilelist = ();
> > > > > > > > > > > >
> > > > > > > > > > > > +my @asmfilelist = ();
> > > > > > > > > > > >
> > > > > > > > > > > > +my @asmbuild = ();
> > > > > > > > > > > >
> > > > > > > > > > > >  foreach my $product ((@{$unified_info{libraries}},
> > > > > > > > > > > >
> > > > > > > > > > > >                        @{$unified_info{engines}})) {
> > > > > > > > > > > >
> > > > > > > > > > > >      foreach my $o (@{$unified_info{sources}-
> >{$product}})
> > > > {
> > > > > > > > > > > >
> > > > > > > > > > > >          foreach my $s (@{$unified_info{sources}-
> >{$o}}) {
> > > > > > > > > > > >
> > > > > > > > > > > > -            next if ($unified_info{generate}->{$s});
> > > > > > > > > > > >
> > > > > > > > > > > > -            next if $s =~ "crypto/bio/b_print.c";
> > > > > > > > > > > >
> > > > > > > > > > > > -
> > > > > > > > > > > >
> > > > > > > > > > > >              # No need to add unused files in UEFI.
> > > > > > > > > > > >
> > > > > > > > > > > >              # So it can reduce porting time, compile
> > > time,
> > > > > library
> > > > > > > size.
> > > > > > > > > > > >
> > > > > > > > > > > > +            next if $s =~ "crypto/bio/b_print.c";
> > > > > > > > > > > >
> > > > > > > > > > > >              next if $s =~ "crypto/rand/randfile.c";
> > > > > > > > > > > >
> > > > > > > > > > > >              next if $s =~ "crypto/store/";
> > > > > > > > > > > >
> > > > > > > > > > > >              next if $s =~ "crypto/err/err_all.c";
> > > > > > > > > > > >
> > > > > > > > > > > >              next if $s =~ "crypto/aes/aes_ecb.c";
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > +            if ($unified_info{generate}->{$s}) {
> > > > > > > > > > > >
> > > > > > > > > > > > +                if (defined $arch) {
> > > > > > > > > > > >
> > > > > > > > > > > > +                    my $buildstring = "perl";
> > > > > > > > > > > >
> > > > > > > > > > > > +                    foreach my $arg
> > > > > (@{$unified_info{generate}-
> > > > > > > >{$s}}) {
> > > > > > > > > > > >
> > > > > > > > > > > > +                        if ($arg =~ ".pl") {
> > > > > > > > > > > >
> > > > > > > > > > > > +                            $buildstring .=
> > > > " ./openssl/$arg";
> > > > > > > > > > > >
> > > > > > > > > > > > +                        } elsif ($arg =~
> > > > "PERLASM_SCHEME") {
> > > > > > > > > > > >
> > > > > > > > > > > > +                            $buildstring .= "
> > > > > > > $target{perlasm_scheme}";
> > > > > > > > > > > >
> > > > > > > > > > > > +                        } elsif ($arg =~ "LIB_CFLAGS")
> {
> > > > > > > > > > > >
> > > > > > > > > > > > +                            $buildstring .= "$flags";
> > > > > > > > > > > >
> > > > > > > > > > > > +                        }
> > > > > > > > > > > >
> > > > > > > > > > > > +                    }
> > > > > > > > > > > >
> > > > > > > > > > > > +                    ($s, my $path, undef) =
> fileparse($s,
> > > > > > > qr/\.[^.]*/);
> > > > > > > > > > > >
> > > > > > > > > > > > +                    $buildstring .= "
> > > > > ./$arch/$path$s.$extension";
> > > > > > > > > > > >
> > > > > > > > > > > > +                    make_path ("./$arch/$path");
> > > > > > > > > > > >
> > > > > > > > > > > > +                    push @asmbuild, "$buildstring\n";
> > > > > > > > > > > >
> > > > > > > > > > > > +                    push @asmfilelist, "
> > > > > > > $arch/$path$s.$extension\r\n";
> > > > > > > > > > > >
> > > > > > > > > > > > +                }
> > > > > > > > > > > >
> > > > > > > > > > > > +                next;
> > > > > > > > > > > >
> > > > > > > > > > > > +            }
> > > > > > > > > > > >
> > > > > > > > > > > >              if ($product =~ "libssl") {
> > > > > > > > > > > >
> > > > > > > > > > > >                  push @sslfilelist, '
> $(OPENSSL_PATH)/' .
> > > > $s .
> > > > > > > "\r\n";
> > > > > > > > > > > >
> > > > > > > > > > > >                  next;
> > > > > > > > > > > >
> > > > > > > > > > > > @@ -183,15 +298,31 @@ foreach (@headers){
> > > > > > > > > > > >  }
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > +#
> > > > > > > > > > > >
> > > > > > > > > > > > +# Generate assembly files
> > > > > > > > > > > >
> > > > > > > > > > > > +#
> > > > > > > > > > > >
> > > > > > > > > > > > +if (@asmbuild) {
> > > > > > > > > > > >
> > > > > > > > > > > > +    print "\n--> Generating assembly files ... ";
> > > > > > > > > > > >
> > > > > > > > > > > > +    foreach my $buildstring (@asmbuild) {
> > > > > > > > > > > >
> > > > > > > > > > > > +        system ("$buildstring");
> > > > > > > > > > > >
> > > > > > > > > > > > +        copy_license_header ($buildstring);
> > > > > > > > > > > >
> > > > > > > > > > > > +    }
> > > > > > > > > > > >
> > > > > > > > > > > > +    print "Done!";
> > > > > > > > > > > >
> > > > > > > > > > > > +}
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > >  #
> > > > > > > > > > > >
> > > > > > > > > > > >  # Update OpensslLib.inf with autogenerated file list
> > > > > > > > > > > >
> > > > > > > > > > > >  #
> > > > > > > > > > > >
> > > > > > > > > > > >  my @new_inf = ();
> > > > > > > > > > > >
> > > > > > > > > > > >  my $subbing = 0;
> > > > > > > > > > > >
> > > > > > > > > > > > -print "\n--> Updating OpensslLib.inf ... ";
> > > > > > > > > > > >
> > > > > > > > > > > > +print "\n--> Updating $inf_file ... ";
> > > > > > > > > > > >
> > > > > > > > > > > >  foreach (@inf) {
> > > > > > > > > > > >
> > > > > > > > > > > > +    if ($_ =~ "DEFINE OPENSSL_FLAGS_CONFIG") {
> > > > > > > > > > > >
> > > > > > > > > > > > +        push @new_inf, "  DEFINE
> > > > OPENSSL_FLAGS_CONFIG    =" .
> > > > > > > $flags
> > > > > > > > .
> > > > > > > > > > > "\r\n";
> > > > > > > > > > > >
> > > > > > > > > > > > +        next;
> > > > > > > > > > > >
> > > > > > > > > > > > +    }
> > > > > > > > > > > >
> > > > > > > > > > > >      if ( $_ =~ "# Autogenerated files list starts
> here" )
> > > {
> > > > > > > > > > > >
> > > > > > > > > > > > -        push @new_inf, $_, @cryptofilelist,
> @sslfilelist;
> > > > > > > > > > > >
> > > > > > > > > > > > +        push @new_inf, $_, @asmfilelist,
> @cryptofilelist,
> > > > > > > @sslfilelist;
> > > > > > > > > > > >
> > > > > > > > > > > >          $subbing = 1;
> > > > > > > > > > > >
> > > > > > > > > > > >          next;
> > > > > > > > > > > >
> > > > > > > > > > > >      }
> > > > > > > > > > > >
> > > > > > > > > > > > @@ -216,49 +347,51 @@ rename( $new_inf_file, $inf_file
> )
> > > ||
> > > > > > > > > > > >      die "rename $inf_file";
> > > > > > > > > > > >
> > > > > > > > > > > >  print "Done!";
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > -#
> > > > > > > > > > > >
> > > > > > > > > > > > -# Update OpensslLibCrypto.inf with auto-generated file
> > > list
> > > > > (no
> > > > > > > libssl)
> > > > > > > > > > > >
> > > > > > > > > > > > -#
> > > > > > > > > > > >
> > > > > > > > > > > > -$inf_file = "OpensslLibCrypto.inf";
> > > > > > > > > > > >
> > > > > > > > > > > > -
> > > > > > > > > > > >
> > > > > > > > > > > > -# Read the contents of the inf file
> > > > > > > > > > > >
> > > > > > > > > > > > -@inf = ();
> > > > > > > > > > > >
> > > > > > > > > > > > -@new_inf = ();
> > > > > > > > > > > >
> > > > > > > > > > > > -open( FD, "<" . $inf_file ) ||
> > > > > > > > > > > >
> > > > > > > > > > > > -    die "Cannot open \"" . $inf_file . "\"!";
> > > > > > > > > > > >
> > > > > > > > > > > > -@inf = (<FD>);
> > > > > > > > > > > >
> > > > > > > > > > > > -close(FD) ||
> > > > > > > > > > > >
> > > > > > > > > > > > -    die "Cannot close \"" . $inf_file . "\"!";
> > > > > > > > > > > >
> > > > > > > > > > > > +if (!defined $arch) {
> > > > > > > > > > > >
> > > > > > > > > > > > +    #
> > > > > > > > > > > >
> > > > > > > > > > > > +    # Update OpensslLibCrypto.inf with auto-generated
> > > file
> > > > > list
> > > > > > > (no
> > > > > > > > > > > libssl)
> > > > > > > > > > > >
> > > > > > > > > > > > +    #
> > > > > > > > > > > >
> > > > > > > > > > > > +    $inf_file = "OpensslLibCrypto.inf";
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > -$subbing = 0;
> > > > > > > > > > > >
> > > > > > > > > > > > -print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > > > > > > > > >
> > > > > > > > > > > > -foreach (@inf) {
> > > > > > > > > > > >
> > > > > > > > > > > > -    if ( $_ =~ "# Autogenerated files list starts
> here" )
> > > {
> > > > > > > > > > > >
> > > > > > > > > > > > -        push @new_inf, $_, @cryptofilelist;
> > > > > > > > > > > >
> > > > > > > > > > > > -        $subbing = 1;
> > > > > > > > > > > >
> > > > > > > > > > > > -        next;
> > > > > > > > > > > >
> > > > > > > > > > > > -    }
> > > > > > > > > > > >
> > > > > > > > > > > > -    if ( $_ =~ "# Autogenerated files list ends here"
> ) {
> > > > > > > > > > > >
> > > > > > > > > > > > -        push @new_inf, $_;
> > > > > > > > > > > >
> > > > > > > > > > > > -        $subbing = 0;
> > > > > > > > > > > >
> > > > > > > > > > > > -        next;
> > > > > > > > > > > >
> > > > > > > > > > > > +    # Read the contents of the inf file
> > > > > > > > > > > >
> > > > > > > > > > > > +    @inf = ();
> > > > > > > > > > > >
> > > > > > > > > > > > +    @new_inf = ();
> > > > > > > > > > > >
> > > > > > > > > > > > +    open( FD, "<" . $inf_file ) ||
> > > > > > > > > > > >
> > > > > > > > > > > > +        die "Cannot open \"" . $inf_file . "\"!";
> > > > > > > > > > > >
> > > > > > > > > > > > +    @inf = (<FD>);
> > > > > > > > > > > >
> > > > > > > > > > > > +    close(FD) ||
> > > > > > > > > > > >
> > > > > > > > > > > > +        die "Cannot close \"" . $inf_file . "\"!";
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +    $subbing = 0;
> > > > > > > > > > > >
> > > > > > > > > > > > +    print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > > > > > > > > >
> > > > > > > > > > > > +    foreach (@inf) {
> > > > > > > > > > > >
> > > > > > > > > > > > +        if ( $_ =~ "# Autogenerated files list starts
> > > here" )
> > > > > {
> > > > > > > > > > > >
> > > > > > > > > > > > +            push @new_inf, $_, @cryptofilelist;
> > > > > > > > > > > >
> > > > > > > > > > > > +            $subbing = 1;
> > > > > > > > > > > >
> > > > > > > > > > > > +            next;
> > > > > > > > > > > >
> > > > > > > > > > > > +        }
> > > > > > > > > > > >
> > > > > > > > > > > > +        if ( $_ =~ "# Autogenerated files list ends
> here"
> > > ) {
> > > > > > > > > > > >
> > > > > > > > > > > > +            push @new_inf, $_;
> > > > > > > > > > > >
> > > > > > > > > > > > +            $subbing = 0;
> > > > > > > > > > > >
> > > > > > > > > > > > +            next;
> > > > > > > > > > > >
> > > > > > > > > > > > +        }
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +        push @new_inf, $_
> > > > > > > > > > > >
> > > > > > > > > > > > +            unless ($subbing);
> > > > > > > > > > > >
> > > > > > > > > > > >      }
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > -    push @new_inf, $_
> > > > > > > > > > > >
> > > > > > > > > > > > -        unless ($subbing);
> > > > > > > > > > > >
> > > > > > > > > > > > +    $new_inf_file = $inf_file . ".new";
> > > > > > > > > > > >
> > > > > > > > > > > > +    open( FD, ">" . $new_inf_file ) ||
> > > > > > > > > > > >
> > > > > > > > > > > > +        die $new_inf_file;
> > > > > > > > > > > >
> > > > > > > > > > > > +    print( FD @new_inf ) ||
> > > > > > > > > > > >
> > > > > > > > > > > > +        die $new_inf_file;
> > > > > > > > > > > >
> > > > > > > > > > > > +    close(FD) ||
> > > > > > > > > > > >
> > > > > > > > > > > > +        die $new_inf_file;
> > > > > > > > > > > >
> > > > > > > > > > > > +    rename( $new_inf_file, $inf_file ) ||
> > > > > > > > > > > >
> > > > > > > > > > > > +        die "rename $inf_file";
> > > > > > > > > > > >
> > > > > > > > > > > > +    print "Done!";
> > > > > > > > > > > >
> > > > > > > > > > > >  }
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > -$new_inf_file = $inf_file . ".new";
> > > > > > > > > > > >
> > > > > > > > > > > > -open( FD, ">" . $new_inf_file ) ||
> > > > > > > > > > > >
> > > > > > > > > > > > -    die $new_inf_file;
> > > > > > > > > > > >
> > > > > > > > > > > > -print( FD @new_inf ) ||
> > > > > > > > > > > >
> > > > > > > > > > > > -    die $new_inf_file;
> > > > > > > > > > > >
> > > > > > > > > > > > -close(FD) ||
> > > > > > > > > > > >
> > > > > > > > > > > > -    die $new_inf_file;
> > > > > > > > > > > >
> > > > > > > > > > > > -rename( $new_inf_file, $inf_file ) ||
> > > > > > > > > > > >
> > > > > > > > > > > > -    die "rename $inf_file";
> > > > > > > > > > > >
> > > > > > > > > > > > -print "Done!";
> > > > > > > > > > > >
> > > > > > > > > > > > -
> > > > > > > > > > > >
> > > > > > > > > > > >  #
> > > > > > > > > > > >
> > > > > > > > > > > >  # Copy opensslconf.h and dso_conf.h generated from
> > > > OpenSSL
> > > > > > > > > Configuration
> > > > > > > > > > > >
> > > > > > > > > > > >  #
> > > > > > > > > > > >
> > > > > > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > > > > > new file mode 100644
> > > > > > > > > > > > index 0000000000..55eedbf3ba
> > > > > > > > > > > > --- /dev/null
> > > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > > > > > @@ -0,0 +1,15 @@
> > > > > > > > > > > > +## -*- mode: perl; -*-
> > > > > > > > > > > >
> > > > > > > > > > > > +## UEFI assembly openssl configuration targets.
> > > > > > > > > > > >
> > > > > > > > > > > > +
> > > > > > > > > > > >
> > > > > > > > > > > > +my %targets = (
> > > > > > > > > > > >
> > > > > > > > > > > > +#### UEFI
> > > > > > > > > > > >
> > > > > > > > > > > > +    "UEFI-x86_64" => {
> > > > > > > > > > > >
> > > > > > > > > > > > +        perlasm_scheme  => "nasm",
> > > > > > > > > > > >
> > > > > > > > > > > > +        # inherit_from    => [ "UEFI",
> > > > asm("x86_64_asm") ],
> > > > > > > > > > > >
> > > > > > > > > > > > +        inherit_from    => [ "UEFI" ],
> > > > > > > > > > > >
> > > > > > > > > > > > +        cpuid_asm_src   => "x86_64cpuid.s",
> > > > > > > > > > > >
> > > > > > > > > > > > +        aes_asm_src     => "aes_core.c aes_cbc.c
> vpaes-
> > > > > x86_64.s
> > > > > > > aesni-
> > > > > > > > > > > x86_64.s
> > > > > > > > > > > > aesni-sha1-x86_64.s aesni-sha256-x86_64.s
> > > > aesni-mb-x86_64.s",
> > > > > > > > > > > >
> > > > > > > > > > > > +        sha1_asm_src    => "sha1-x86_64.s
> > > > sha256-x86_64.s
> > > > > sha512-
> > > > > > > > > > x86_64.s
> > > > > > > > > > > > sha1-mb-x86_64.s sha256-mb-x86_64.s",
> > > > > > > > > > > >
> > > > > > > > > > > > +        modes_asm_src   => "ghash-x86_64.s",
> > > > > > > > > > > >
> > > > > > > > > > > > +    },
> > > > > > > > > > > >
> > > > > > > > > > > > +);
> > > > > > > > > > > >
> > > > > > > > > > > > --
> > > > > > > > > > > > 2.28.0.windows.1
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> > >
> > >
> > >
> > > 
> > >


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

* Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
       [not found]                         ` <1637E1D4851CF309.11037@groups.io>
@ 2020-09-25  2:28                           ` Zurcher, Christopher J
       [not found]                           ` <1637E5DD452A46F1.2312@groups.io>
  1 sibling, 0 replies; 42+ messages in thread
From: Zurcher, Christopher J @ 2020-09-25  2:28 UTC (permalink / raw)
  To: devel@edk2.groups.io, Zurcher, Christopher J, Yao, Jiewen,
	gaoliming@byosoft.com.cn, Jiang, Guomin
  Cc: Wang, Jian J, Lu, XiaoyuX, 'Ard Biesheuvel'

My final hurdle for CLANG is that the compiler is defining the macro "WIN32" which triggers OpenSSL to include some Windows API calls and breaks the build. VS2015 is not defining this by default.
Is there any clang option to prevent this macro definition?

Thanks,
Christopher Zurcher

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Zurcher,
> Christopher J
> Sent: Thursday, September 24, 2020 18:15
> To: Yao, Jiewen <jiewen.yao@intel.com>; devel@edk2.groups.io;
> gaoliming@byosoft.com.cn; Jiang, Guomin <guomin.jiang@intel.com>
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> 'Ard Biesheuvel' <ard.biesheuvel@linaro.org>
> Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> instruction support for X64
> 
> I have no objection to CHAR16; it looks like OpenSSL doesn't actually use
> wchar_t anywhere.
> 
> --
> Christopher Zurcher
> 
> > -----Original Message-----
> > From: Yao, Jiewen <jiewen.yao@intel.com>
> > Sent: Thursday, September 24, 2020 18:11
> > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > devel@edk2.groups.io; gaoliming@byosoft.com.cn; Jiang, Guomin
> > <guomin.jiang@intel.com>
> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>;
> > 'Ard Biesheuvel' <ard.biesheuvel@linaro.org>
> > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > instruction support for X64
> >
> > I think we configure wchar_t to be 16bits by using -fshort-wchar.
> >
> > Should we use
> > typedef CHAR16         wchar_t;
> > instead of
> > typedef UINT32         wchar_t;
> >
> > Thank you
> > Yao Jiewen
> >
> > > -----Original Message-----
> > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > Sent: Friday, September 25, 2020 9:07 AM
> > > To: devel@edk2.groups.io; gaoliming@byosoft.com.cn; Yao, Jiewen
> > > <jiewen.yao@intel.com>; Jiang, Guomin <guomin.jiang@intel.com>
> > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > <xiaoyux.lu@intel.com>;
> > > 'Ard Biesheuvel' <ard.biesheuvel@linaro.org>
> > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > instruction support for X64
> > >
> > > I've discovered the failure was because CryptoPkg includes its own
> stddef.h
> > > which is a wrapper for CrtLibSupport.h
> > > I have added the required definitions to this file and have resolved the
> > error:
> > > typedef INTN           ptrdiff_t;
> > > typedef UINT32         wchar_t;
> > >
> > > Thanks,
> > > Christopher Zurcher
> > >
> > > > -----Original Message-----
> > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> gaoliming
> > > > Sent: Thursday, September 24, 2020 17:49
> > > > To: devel@edk2.groups.io; Zurcher, Christopher J
> > > > <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>;
> > > Jiang,
> > > > Guomin <guomin.jiang@intel.com>
> > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > <xiaoyux.lu@intel.com>;
> > > > 'Ard Biesheuvel' <ard.biesheuvel@linaro.org>
> > > > Subject: 回复: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > native
> > > > instruction support for X64
> > > >
> > > > Zurcher:
> > > >   Can you specify the detail build step to reproduce the build error
> with
> > > > CLANGPDB tool chain?
> > > >
> > > > Thanks
> > > > Liming
> > > > > -----邮件原件-----
> > > > > 发件人: bounce+27952+65588+4905953+8761045@groups.io
> > > > > <bounce+27952+65588+4905953+8761045@groups.io> 代表 Zurcher,
> > > > > Christopher J
> > > > > 发送时间: 2020年9月25日 8:28
> > > > > 收件人: Yao, Jiewen <jiewen.yao@intel.com>; Jiang, Guomin
> > > > > <guomin.jiang@intel.com>; devel@edk2.groups.io
> > > > > 抄送: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > 主题: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> native
> > > > > instruction support for X64
> > > > >
> > > > > I was able to successfully build and run the non-optimized code with
> > LLVM,
> > > > > but the optimized version returns this error during build:
> > > > >
> > > > > C:\Program Files\LLVM\lib\clang\9.0.0\include\stdatomic.h:91:17:
> error:
> > > > > unknown type name 'wchar_t'
> > > > > typedef _Atomic(wchar_t)            atomic_wchar_t;
> > > > >
> > > > > Is there a known build issue with CLANGPDB and the stdatomic.h file?
> > > > >
> > > > > Thanks,
> > > > > Christopher Zurcher
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > > > > Sent: Tuesday, September 22, 2020 19:35
> > > > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> Jiang,
> > > > Guomin
> > > > > > <guomin.jiang@intel.com>; devel@edk2.groups.io
> > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > <xiaoyux.lu@intel.com>;
> > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > > > native
> > > > > > instruction support for X64
> > > > > >
> > > > > > For GCC, please refer to
> > > > > > https://github.com/tianocore/tianocore.github.io/wiki/Using-EDK-II-
> > with-
> > > > > > Native-GCC
> > > > > >
> > > > > > For LLVM, please refer to
> > > > > > https://github.com/tianocore/tianocore.github.io/wiki/CLANG9-Tools-
> > > Chain
> > > > > >
> > > > > > Thank you
> > > > > > Yao Jiewen
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > > > > Sent: Tuesday, September 22, 2020 11:22 PM
> > > > > > > To: Jiang, Guomin <guomin.jiang@intel.com>; devel@edk2.groups.io;
> > > Yao,
> > > > > > > Jiewen <jiewen.yao@intel.com>
> > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib:
> Add
> > > > > native
> > > > > > > instruction support for X64
> > > > > > >
> > > > > > > I have unit tested SHA1, SHA512, and AES as well.
> > > > > > > I do not have the build environment available to test GCC and
> LLVM.
> > > > > > >
> > > > > > > --
> > > > > > > Christopher Zurcher
> > > > > > >
> > > > > > > > -----Original Message-----
> > > > > > > > From: Jiang, Guomin <guomin.jiang@intel.com>
> > > > > > > > Sent: Wednesday, September 16, 2020 02:17
> > > > > > > > To: devel@edk2.groups.io; Yao, Jiewen <jiewen.yao@intel.com>;
> > > > > Zurcher,
> > > > > > > > Christopher J <christopher.j.zurcher@intel.com>
> > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib:
> > Add
> > > > > native
> > > > > > > > instruction support for X64
> > > > > > > >
> > > > > > > > Hi Zurcher,
> > > > > > > >
> > > > > > > > > [Jiewen] Since you also add other sha (sha1, sha512) and
> aesni,
> > I
> > > > think
> > > > > > > > those
> > > > > > > > > need unit test for them too.
> > > > > > > >
> > > > > > > > Can you update the status about it?
> > > > > > > >
> > > > > > > > > [Jiewen] I think we need support build with GCC and LLVM, and
> > with
> > > > > X64.
> > > > > > > >
> > > > > > > > It is better to support the GCC and LLVM.
> > > > > > > >
> > > > > > > > Thanks
> > > > > > > > Guomin
> > > > > > > >
> > > > > > > > > -----Original Message-----
> > > > > > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf
> Of
> > > > > Yao,
> > > > > > > > > Jiewen
> > > > > > > > > Sent: Tuesday, August 25, 2020 7:36 AM
> > > > > > > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > > > > > > > > devel@edk2.groups.io
> > > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > > > <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > <ard.biesheuvel@linaro.org>
> > > > > > > > > Subject: Re: [edk2-devel] [PATCH v2 1/2]
> CryptoPkg/OpensslLib:
> > Add
> > > > > > native
> > > > > > > > > instruction support for X64
> > > > > > > > >
> > > > > > > > > Below:
> > > > > > > > >
> > > > > > > > > > -----Original Message-----
> > > > > > > > > > From: Zurcher, Christopher J
> > <christopher.j.zurcher@intel.com>
> > > > > > > > > > Sent: Tuesday, August 25, 2020 5:26 AM
> > > > > > > > > > To: devel@edk2.groups.io; Zurcher, Christopher J
> > > > > > > > > > <christopher.j.zurcher@intel.com>; Yao, Jiewen
> > > > > <jiewen.yao@intel.com>
> > > > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2]
> > CryptoPkg/OpensslLib:
> > > > Add
> > > > > > native
> > > > > > > > > > instruction support for X64
> > > > > > > > > >
> > > > > > > > > > 1) I have confirmed that the ApiHooks.c file is still
> > required
> > > > even
> > > > > > > > without
> > > > > > > > > the AVX
> > > > > > > > > > instructions included. The x86_64 assembly files in OpenSSL
> > set
> > > > a
> > > > > > flag
> > > > > > > > called
> > > > > > > > > > $win64 and automatically include calls to the
> > RtlVirtualUnwind
> > > > > > function
> > > > > > > > if
> > > > > > > > > NASM
> > > > > > > > > > is selected as the assembler scheme.
> > > > > > > > > >
> > > > > > > > > >
> > > > > https://docs.microsoft.com/en-us/windows/win32/api/winnt/nf-winnt-
> > > > > > > > > > rtlvirtualunwind
> > > > > > > > > >
> > > > > > > > > > I have submitted an issue against OpenSSL since I don't
> think
> > > > using
> > > > > > the
> > > > > > > > > NASM
> > > > > > > > > > assembler should force the inclusion of Windows-specific
> API
> > > > hooks,
> > > > > > but
> > > > > > > > > that
> > > > > > > > > > change cannot be made in OpenSSL 1.1.1 and we will have to
> > wait
> > > > > for
> > > > > > > > > OpenSSL 3
> > > > > > > > > > or later to remove the stub function.
> > > > > > > > > >
> > > > > > > > > > https://github.com/openssl/openssl/issues/12712
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > > [Jiewen] Thanks.
> > > > > > > > >
> > > > > > > > > > 2) So far I have only built with VS.
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > > [Jiewen] I think we need support build with GCC and LLVM, and
> > with
> > > > > X64.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > > 3) The X64 SHA256 implementation was successfully exercised
> > > > > across a
> > > > > > > > > large
> > > > > > > > > > number of devices in a production environment as a
> > verification
> > > > step
> > > > > > in a
> > > > > > > > > multi-
> > > > > > > > > > GB data transfer scenario.
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > > [Jiewen] Since you also add other sha (sha1, sha512) and
> aesni,
> > I
> > > > think
> > > > > > > > those
> > > > > > > > > need unit test for them too.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > > Thanks,
> > > > > > > > > > Christopher Zurcher
> > > > > > > > > >
> > > > > > > > > > > -----Original Message-----
> > > > > > > > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On
> Behalf
> > > > > Of
> > > > > > > > > Zurcher,
> > > > > > > > > > > Christopher J
> > > > > > > > > > > Sent: Tuesday, August 18, 2020 15:50
> > > > > > > > > > > To: Yao, Jiewen <jiewen.yao@intel.com>;
> > devel@edk2.groups.io
> > > > > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > > > > Subject: Re: [edk2-devel] [PATCH v2 1/2]
> > CryptoPkg/OpensslLib:
> > > > > Add
> > > > > > > > > native
> > > > > > > > > > > instruction support for X64
> > > > > > > > > > >
> > > > > > > > > > > After further review, the ApiHooks.c file may no longer
> be
> > > > needed
> > > > > > since
> > > > > > > > > we
> > > > > > > > > > > are no longer including the AVX instructions. I will look
> > over
> > > > the
> > > > > > > > > > > dependencies and send a new patch set if I can eliminate
> > the
> > > > API
> > > > > > hooks
> > > > > > > > > file.
> > > > > > > > > > >
> > > > > > > > > > > Thanks,
> > > > > > > > > > > Christopher Zurcher
> > > > > > > > > > >
> > > > > > > > > > > > -----Original Message-----
> > > > > > > > > > > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > > > > > > > > > > Sent: Thursday, August 13, 2020 08:04
> > > > > > > > > > > > To: Zurcher, Christopher J
> > > > <christopher.j.zurcher@intel.com>;
> > > > > > > > > > > > devel@edk2.groups.io
> > > > > > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > > > > > Subject: RE: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > native
> > > > > > > > > instruction
> > > > > > > > > > > > support for X64
> > > > > > > > > > > >
> > > > > > > > > > > > Hi Christopher
> > > > > > > > > > > > Thanks.
> > > > > > > > > > > >
> > > > > > > > > > > > 1) Would you please help me understand more on
> > "ApiHooks.c
> > > > > > contains
> > > > > > > > > a
> > > > > > > > > > stub
> > > > > > > > > > > > function for a Windows API call" ?
> > > > > > > > > > > > Why we need this?
> > > > > > > > > > > > If it is compiler specific in openssl, should we submit
> > > > patch to
> > > > > > > > openssl to
> > > > > > > > > > > > exclude this with OPENSSL_SYS_UEFI? That should be a
> > cleaner
> > > > > > solution
> > > > > > > > > for
> > > > > > > > > > > > UEFI.
> > > > > > > > > > > >
> > > > > > > > > > > > 2) Would you please describe what compiler you have
> > tried?
> > > > VS?
> > > > > > GCC?
> > > > > > > > > LLVM?
> > > > > > > > > > > >
> > > > > > > > > > > > 3) Would you please describe what unit test you have
> > done?
> > > > > > > > > > > >
> > > > > > > > > > > > Thank you
> > > > > > > > > > > > Yao Jiewen
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > > -----Original Message-----
> > > > > > > > > > > > > From: Zurcher, Christopher J
> > <christopher.j.zurcher@intel.
> > > > com>
> > > > > > > > > > > > > Sent: Tuesday, August 4, 2020 8:24 AM
> > > > > > > > > > > > > To: devel@edk2.groups.io
> > > > > > > > > > > > > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> > > > > > > > > > > > <jian.j.wang@intel.com>;
> > > > > > > > > > > > > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > > > > > > > > > > > <ard.biesheuvel@linaro.org>
> > > > > > > > > > > > > Subject: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > native
> > > > > > > > instruction
> > > > > > > > > > > > support
> > > > > > > > > > > > > for X64
> > > > > > > > > > > > >
> > > > > > > > > > > > > BZ:
> https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> > > > > > > > > > > > >
> > > > > > > > > > > > > Adding OpensslLibX64.inf and modifying
> process_files.pl
> > to
> > > > > > process
> > > > > > > > > this
> > > > > > > > > > > > > file and generate the necessary assembly files.
> > > > > > > > > > > > > ApiHooks.c contains a stub function for a Windows API
> > > > call.
> > > > > > > > > > > > > uefi-asm.conf contains the limited assembly
> > configurations
> > > > for
> > > > > > > > > OpenSSL.
> > > > > > > > > > > > >
> > > > > > > > > > > > > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > > > > > > > > > > > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > > > > > > > > > > > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > > > > > > > > > > > > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > > > > > > Signed-off-by: Christopher J Zurcher
> > > > > > > > > <christopher.j.zurcher@intel.com>
> > > > > > > > > > > > > ---
> > > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLib.inf
> |
> > > > > 2 +-
> > > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> |
> > > > > 2 +-
> > > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> |
> > > > > 656
> > > > > > > > > > > > > ++++++++++++++++++++
> > > > > > > > > > > > >  CryptoPkg/Library/Include/openssl/opensslconf.h
> |
> > > > > 3 -
> > > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/ApiHooks.c
> |
> > > > > 18 +
> > > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> |
> > > > > 34 +
> > > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/process_files.pl
> |
> > > > > 223
> > > > > > +++++--
> > > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/uefi-asm.conf
> |
> > > > > 15 +
> > > > > > > > > > > > >  8 files changed, 903 insertions(+), 50 deletions(-)
> > > > > > > > > > > > >
> > > > > > > > > > > > > diff --git
> > a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > > > > index dbbe5386a1..bd62d86936 100644
> > > > > > > > > > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > > > > @@ -16,7 +16,7 @@
> > > > > > > > > > > > >    VERSION_STRING                 = 1.0
> > > > > > > > > > > > >
> > > > > > > > > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > > > > > > > > >
> > > > > > > > > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > > > > > > > > >
> > > > > > > > > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > > > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > > > > > > > > DOPENSSL_NO_ASM
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >  #
> > > > > > > > > > > > >
> > > > > > > > > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM
> > > > > AARCH64
> > > > > > > > > > > > >
> > > > > > > > > > > > > diff --git
> > > > a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > > > > index 616ccd9f62..2b7324a990 100644
> > > > > > > > > > > > > ---
> a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > > > > +++
> b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > > > > @@ -16,7 +16,7 @@
> > > > > > > > > > > > >    VERSION_STRING                 = 1.0
> > > > > > > > > > > > >
> > > > > > > > > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > > > > > > > > >
> > > > > > > > > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > > > > > > > > >
> > > > > > > > > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > > > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > > > > > > > > DOPENSSL_NO_ASM
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >  #
> > > > > > > > > > > > >
> > > > > > > > > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM
> > > > > AARCH64
> > > > > > > > > > > > >
> > > > > > > > > > > > > diff --git
> > > > a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > > > > > > new file mode 100644
> > > > > > > > > > > > > index 0000000000..825eea0254
> > > > > > > > > > > > > --- /dev/null
> > > > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > > > > > > @@ -0,0 +1,656 @@
> > > > > > > > > > > > > +## @file
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#  This module provides OpenSSL Library
> > implementation.
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#  Copyright (c) 2010 - 2020, Intel Corporation. All
> > > > rights
> > > > > > > > > > > reserved.<BR>
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#  (C) Copyright 2020 Hewlett Packard Enterprise
> > > > > Development
> > > > > > > > > LP<BR>
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#
> > > > > > > > > > > > >
> > > > > > > > > > > > > +##
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +[Defines]
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  INF_VERSION                    = 0x00010005
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  BASE_NAME                      = OpensslLibX64
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  MODULE_UNI_FILE                = OpensslLib.uni
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  FILE_GUID                      =
> > > > > 18125E50-0117-4DD0-BE54-
> > > > > > > > 4784AD995FEF
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  MODULE_TYPE                    = BASE
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  VERSION_STRING                 = 1.0
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  LIBRARY_CLASS                  = OpensslLib
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  DEFINE OPENSSL_PATH            = openssl
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  DEFINE OPENSSL_FLAGS_CONFIG    =
> > > > > -DOPENSSL_CPUID_OBJ -
> > > > > > > > > > DSHA1_ASM -
> > > > > > > > > > > > > DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -
> > > > > > > > > > DGHASH_ASM
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  CONSTRUCTOR                    =
> > > > > OpensslLibConstructor
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#  VALID_ARCHITECTURES           = X64
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +[Sources]
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  OpensslLibConstructor.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/e_os.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ms/uplink.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +# Autogenerated files list starts here
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  X64/crypto/aes/aesni-mb-x86_64.nasm
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  X64/crypto/aes/aesni-sha1-x86_64.nasm
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  X64/crypto/aes/aesni-sha256-x86_64.nasm
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  X64/crypto/aes/aesni-x86_64.nasm
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  X64/crypto/aes/vpaes-x86_64.nasm
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  X64/crypto/modes/ghash-x86_64.nasm
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  X64/crypto/sha/sha1-mb-x86_64.nasm
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  X64/crypto/sha/sha1-x86_64.nasm
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  X64/crypto/sha/sha256-mb-x86_64.nasm
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  X64/crypto/sha/sha256-x86_64.nasm
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  X64/crypto/sha/sha512-x86_64.nasm
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  X64/crypto/x86_64cpuid.nasm
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_core.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ige.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_misc.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aria/aria.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_digest.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_dup.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_gentm.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_int.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_object.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_octet.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_print.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_sign.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strex.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strnid.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_time.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_type.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utctm.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utf8.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_verify.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_par.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mime.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_moid.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_pack.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_int.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_string.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/n_pkey.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/nsseq.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_bitst.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_pkey.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_spki.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_new.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_algor.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_bignum.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_info.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_int64.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_long.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_pkey.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_sig.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_spki.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_val.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_wait.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_addr.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_dump.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock2.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_buff.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_nbio.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_null.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_cb.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_meth.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_acpt.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_bio.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_conn.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_dgram.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_fd.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_file.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_log.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_mem.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_null.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_sock.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_add.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_asm.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_blind.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_const.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_ctx.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_depr.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_dh.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_div.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp2.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gcd.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_intern.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_kron.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mod.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mont.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mpi.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mul.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_nist.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_print.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_rand.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_recp.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_shift.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqr.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_srp.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_word.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_x931p.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buf_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buffer.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cmac.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/c_zlib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_api.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mall.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mod.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_sap.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_ssl.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cpt_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cryptlib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ctype.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cversion.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_check.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_depr.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_gen.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_kdf.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_key.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_meth.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_prn.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dl.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_vms.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_win32.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ebcdic.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/err/err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/err/err_prn.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_enc.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_md.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_ok.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_allc.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_alld.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/digest.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aria.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_bf.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_camellia.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_cast.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des3.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_idea.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_null.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_old.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc2.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc5.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_seed.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_sm4.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/encode.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_cnf.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_enc.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_key.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pbe.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pkey.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md2.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md4.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_mdc2.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_null.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_ripemd.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha1.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha3.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sigver.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_wp.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/names.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_dec.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_enc.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_open.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_seal.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_sign.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_verify.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ex_data.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/getenv.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/init.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/hkdf.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/kdf_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/scrypt.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lh_stats.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_one.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mem.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mem_dbg.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mem_sec.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cbc128.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ccm128.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cfb128.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ctr128.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cts128.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/gcm128.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ocb128.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ofb128.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/wrap128.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/xts128.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_dir.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_fips.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_fopen.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_init.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_str.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_time.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/o_names.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_all.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_info.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_oth.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pk8.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pkey.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_sign.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_x509.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_xaux.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pvkfmt.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_egd.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_unix.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_vms.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_win.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_none.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/keccak1600.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1_one.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha256.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha512.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm4/sm4.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/stack/stack.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_none.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_pthread.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_win.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/txt_db/txt_db.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_null.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_util.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/uid.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_dir.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_file.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_crl.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_req.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_x509.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_att.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_cmp.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_d2.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_def.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_ext.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_lu.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_meth.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_obj.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_r2x.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_req.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_set.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_trs.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_txt.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_v3.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vfy.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vpm.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509cset.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509name.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509rset.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509spki.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509type.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_all.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_attrib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_crl.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_exten.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_name.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_pubkey.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_req.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509a.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_info.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_int.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/arm_arch.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mips_arch.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ppc_arch.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/s390x_arch.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sparc_arch.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/vms_rms.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/charmap.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/standard_methods.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/modes_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/store/store_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/bio_ssl.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_msg.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_srtp.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/methods.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/packet.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/pqueue.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_cbc.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_enc.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_msg.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_asn1.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_ciph.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_conf.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_err.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_init.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_mcnf.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_rsa.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_sess.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_stat.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_txt.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_utst.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_cust.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_clnt.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_dtls.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_srvr.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_enc.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_lib.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_trce.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/tls13_enc.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/tls_srp.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/packet_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert_table.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/record.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/record_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_local.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +# Autogenerated files list ends here
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  buildinf.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  rand_pool_noise.h
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  ossl_store.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  rand_pool.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +[Sources.X64]
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  rand_pool_noise_tsc.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  ApiHooks.c
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +[Packages]
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  MdePkg/MdePkg.dec
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  CryptoPkg/CryptoPkg.dec
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +[LibraryClasses]
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  BaseLib
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  DebugLib
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  TimerLib
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  PrintLib
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +[BuildOptions]
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  # Disables the following Visual Studio compiler
> > > > warnings
> > > > > > brought
> > > > > > > > by
> > > > > > > > > > > > openssl
> > > > > > > > > > > > > source,
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  # so we do not break the build with /WX option:
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #   C4090: 'function' : different 'const'
> qualifiers
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #   C4132: 'object' : const object should be
> > > > initialized
> > > > > > > > (tls13_enc.c)
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #   C4210: nonstandard extension used: function
> > given
> > > > file
> > > > > > scope
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #   C4244: conversion from type1 to type2,
> possible
> > > > loss of
> > > > > > data
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #   C4245: conversion from type1 to type2,
> > > > > signed/unsigned
> > > > > > > > > mismatch
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #   C4267: conversion from size_t to type,
> possible
> > > > loss of
> > > > > > data
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #   C4306: 'identifier' : conversion from 'type1'
> to
> > > > 'type2'
> > > > > > of
> > > > > > > > > > > greater
> > > > > > > > > > > > size
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #   C4310: cast truncates constant value
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #   C4389: 'operator' : signed/unsigned mismatch
> > (xxxx)
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #   C4700: uninitialized local variable 'name'
> used.
> > > > > > > > (conf_sap.c(71))
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #   C4702: unreachable code
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #   C4706: assignment within conditional
> expression
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #   C4819: The file contains a character that
> cannot
> > be
> > > > > > > > represented
> > > > > > > > > in
> > > > > > > > > > > > the
> > > > > > > > > > > > > current code page
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64
> > > > > -U_MSC_VER
> > > > > > > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /wd4090
> > > > > /wd4132
> > > > > > > > > > /wd4210
> > > > > > > > > > > > > /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700
> > > > > /wd4389
> > > > > > > > > /wd4702
> > > > > > > > > > > > > /wd4706 /wd4819
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64
> > > > > -U_MSC_VER -
> > > > > > > > > > U__ICC
> > > > > > > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  # Suppress the following build warnings in openssl
> > so
> > > > we
> > > > > > don't
> > > > > > > > > break
> > > > > > > > > > > the
> > > > > > > > > > > > build
> > > > > > > > > > > > > with -Werror
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #   -Werror=maybe-uninitialized: there exist some
> > other
> > > > > > paths
> > > > > > > > for
> > > > > > > > > > > which
> > > > > > > > > > > > the
> > > > > > > > > > > > > variable is not initialized.
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #   -Werror=format: Check calls to printf and
> scanf,
> > > > etc.,
> > > > > > to
> > > > > > > > make
> > > > > > > > > > > sure
> > > > > > > > > > > > that the
> > > > > > > > > > > > > arguments supplied have
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #                   types appropriate to the
> format
> > > > > string
> > > > > > > > specified.
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #   -Werror=unused-but-set-variable: Warn whenever
> a
> > > > > local
> > > > > > > > > variable is
> > > > > > > > > > > > > assigned to, but otherwise unused (aside from its
> > > > declaration).
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64
> > > > > > > > > $(OPENSSL_FLAGS)
> > > > > > > > > > > > > $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-
> uninitialized
> > > > > -Wno-
> > > > > > > > > > > > > error=format -Wno-format
> > > > > -Wno-error=unused-but-set-variable -
> > > > > > > > > > > > > DNO_MSABI_VA_FUNCS
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  # suppress the following warnings in openssl so we
> > > > don't
> > > > > > break
> > > > > > > > the
> > > > > > > > > > > build
> > > > > > > > > > > > with
> > > > > > > > > > > > > warnings-as-errors:
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  # 1295: Deprecated declaration <entity> - give arg
> > > > types
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #  550: <entity> was set but never used
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  # 1293: assignment in condition
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #  111: statement is unreachable (invariably
> > "break;"
> > > > after
> > > > > > > > "return
> > > > > > > > > > > X;"
> > > > > > > > > > > > in case
> > > > > > > > > > > > > statement)
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #   68: integer conversion resulted in a change of
> > sign
> > > > ("if
> > > > > > > > (Status
> > > > > > > > > > > ==
> > > > > > > > > > > > -1)")
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #  177: <entity> was declared but never referenced
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #  223: function <entity> declared implicitly
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #  144: a value of type <type> cannot be used to
> > > > initialize
> > > > > > an
> > > > > > > > entity
> > > > > > > > > > > of
> > > > > > > > > > > > type
> > > > > > > > > > > > > <type>
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #  513: a value of type <type> cannot be assigned
> to
> > an
> > > > > > entity
> > > > > > > > of
> > > > > > > > > type
> > > > > > > > > > > > <type>
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #  188: enumerated type mixed with another type
> > (i.e.
> > > > > > passing an
> > > > > > > > > > > integer
> > > > > > > > > > > > as an
> > > > > > > > > > > > > enum without a cast)
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  # 1296: Extended constant initialiser used
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #  128: loop is not reachable - may be emitted
> > > > > > inappropriately
> > > > > > > > if
> > > > > > > > > code
> > > > > > > > > > > > follows
> > > > > > > > > > > > > a conditional return
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #       from the function that evaluates to true
> at
> > > > > compile
> > > > > > time
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #  546: transfer of control bypasses
> initialization
> > -
> > > > may be
> > > > > > > > emitted
> > > > > > > > > > > > > inappropriately if the uninitialized
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #       variable is never referenced after the
> jump
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #    1: ignore "#1-D: last line of file ends
> without
> > a
> > > > > > newline"
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  # 3017: <entity> may be used before being set
> (NOTE:
> > > > This
> > > > > > was
> > > > > > > > > fixed in
> > > > > > > > > > > > > OpenSSL 1.1 HEAD with
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  #       commit
> > > > > d9b8b89bec4480de3a10bdaf9425db371c19145b, and
> > > > > > > > > can
> > > > > > > > > > be
> > > > > > > > > > > > > dropped then.)
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse
> > > > > -U_WIN32 -
> > > > > > > > > U_WIN64
> > > > > > > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -w -std=c99
> > > > > -Wno-
> > > > > > > > > > > > > error=uninitialized
> > > > > > > > > > > > >
> > > > > > > > > > > > > diff --git
> > > > a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > > > > b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > > > > index 3a2544ea5c..e8f73c4d10 100644
> > > > > > > > > > > > > --- a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > > > > +++ b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > > > > @@ -112,9 +112,6 @@ extern "C" {
> > > > > > > > > > > > >  #ifndef OPENSSL_NO_ASAN
> > > > > > > > > > > > >
> > > > > > > > > > > > >  # define OPENSSL_NO_ASAN
> > > > > > > > > > > > >
> > > > > > > > > > > > >  #endif
> > > > > > > > > > > > >
> > > > > > > > > > > > > -#ifndef OPENSSL_NO_ASM
> > > > > > > > > > > > >
> > > > > > > > > > > > > -# define OPENSSL_NO_ASM
> > > > > > > > > > > > >
> > > > > > > > > > > > > -#endif
> > > > > > > > > > > > >
> > > > > > > > > > > > >  #ifndef OPENSSL_NO_ASYNC
> > > > > > > > > > > > >
> > > > > > > > > > > > >  # define OPENSSL_NO_ASYNC
> > > > > > > > > > > > >
> > > > > > > > > > > > >  #endif
> > > > > > > > > > > > >
> > > > > > > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > > > > > > new file mode 100644
> > > > > > > > > > > > > index 0000000000..58cff16838
> > > > > > > > > > > > > --- /dev/null
> > > > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > > > > > > @@ -0,0 +1,18 @@
> > > > > > > > > > > > > +/** @file
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  OpenSSL Library API hooks.
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +Copyright (c) 2020, Intel Corporation. All rights
> > > > > > reserved.<BR>
> > > > > > > > > > > > >
> > > > > > > > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +**/
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#include <Uefi.h>
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +VOID *
> > > > > > > > > > > > >
> > > > > > > > > > > > > +__imp_RtlVirtualUnwind (
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  VOID *    Args
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  )
> > > > > > > > > > > > >
> > > > > > > > > > > > > +{
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  return NULL;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +}
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > diff --git
> > > > > > a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > > > > > >
> b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > > > > > > new file mode 100644
> > > > > > > > > > > > > index 0000000000..ef20d2b84e
> > > > > > > > > > > > > --- /dev/null
> > > > > > > > > > > > > +++
> > b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > > > > > > @@ -0,0 +1,34 @@
> > > > > > > > > > > > > +/** @file
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  Constructor to initialize CPUID data for OpenSSL
> > > > assembly
> > > > > > > > > operations.
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +Copyright (c) 2020, Intel Corporation. All rights
> > > > > > reserved.<BR>
> > > > > > > > > > > > >
> > > > > > > > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +**/
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#include <Uefi.h>
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +extern void OPENSSL_cpuid_setup (void);
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +/**
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  Constructor routine for OpensslLib.
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  The constructor calls an internal OpenSSL function
> > > > which
> > > > > > fetches
> > > > > > > > a
> > > > > > > > > > > local
> > > > > > > > > > > > copy
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  of the hardware capability flags, used to enable
> > native
> > > > > > crypto
> > > > > > > > > > > > instructions.
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  @param  None
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  @retval EFI_SUCCESS         The construction
> > > > > succeeded.
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +**/
> > > > > > > > > > > > >
> > > > > > > > > > > > > +EFI_STATUS
> > > > > > > > > > > > >
> > > > > > > > > > > > > +EFIAPI
> > > > > > > > > > > > >
> > > > > > > > > > > > > +OpensslLibConstructor (
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  VOID
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  )
> > > > > > > > > > > > >
> > > > > > > > > > > > > +{
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  OPENSSL_cpuid_setup ();
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +  return EFI_SUCCESS;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +}
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > diff --git
> > a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > > > > index 57ce195394..472f59bc8e 100755
> > > > > > > > > > > > > --- a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > > > > @@ -9,9 +9,63 @@
> > > > > > > > > > > > >  # do not need to do this, since the results are
> stored
> > in
> > > > the
> > > > > > EDK2
> > > > > > > > > > > > >
> > > > > > > > > > > > >  # git repository for them.
> > > > > > > > > > > > >
> > > > > > > > > > > > >  #
> > > > > > > > > > > > >
> > > > > > > > > > > > > +# Due to the script wrapping required to process the
> > > > OpenSSL
> > > > > > > > > > > > >
> > > > > > > > > > > > > +# configuration data, each native architecture must
> be
> > > > > > processed
> > > > > > > > > > > > >
> > > > > > > > > > > > > +# individually by the maintainer (in addition to the
> > > > standard
> > > > > > > > version):
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#   ./process_files.pl
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#   ./process_files.pl X64
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#   ./process_files.pl [Arch]
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > >  use strict;
> > > > > > > > > > > > >
> > > > > > > > > > > > >  use Cwd;
> > > > > > > > > > > > >
> > > > > > > > > > > > >  use File::Copy;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +use File::Basename;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +use File::Path qw(make_path remove_tree);
> > > > > > > > > > > > >
> > > > > > > > > > > > > +use Text::Tabs;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#
> > > > > > > > > > > > >
> > > > > > > > > > > > > +# OpenSSL perlasm generator script does not transfer
> > the
> > > > > > copyright
> > > > > > > > > > > header
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#
> > > > > > > > > > > > >
> > > > > > > > > > > > > +sub copy_license_header
> > > > > > > > > > > > >
> > > > > > > > > > > > > +{
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    my @args = split / /, shift;    #Separate args
> by
> > > > spaces
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    my $source = $args[1];          #Source file is
> > > > second
> > > > > > (after
> > > > > > > > > > > "perl")
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    my $target = pop @args;         #Target file is
> > > > always
> > > > > > last
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    chop ($target);                 #Remove newline
> > > > > char
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    my $temp_file_name = "license.tmp";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    open (my $source_file, "<" . $source) || die
> > $source;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    open (my $target_file, "<" . $target) || die
> > $target;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    open (my $temp_file, ">" . $temp_file_name) ||
> die
> > > > > > > > > $temp_file_name;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    #Add "generated file" warning
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    $source =~ s/^..//;             #Remove leading
> > "./"
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    print ($temp_file "; WARNING: do not
> edit!\r\n");
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    print ($temp_file "; Generated from
> $source\r\n");
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    print ($temp_file ";\r\n");
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    #Copy source file header to temp file
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    while (my $line = <$source_file>) {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        next if ($line =~ /#!/);    #Ignore shebang
> > line
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        $line =~ s/#/;/;            #Fix comment
> > > > > character for
> > > > > > > > assembly
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing
> > > > > whitepsace,
> > > > > > > > fixup
> > > > > > > > > > > line
> > > > > > > > > > > > endings
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        print ($temp_file $line);
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        last if ($line =~ /http/);  #Last line of
> > > > copyright
> > > > > > header
> > > > > > > > > > > > contains a web link
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    }
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    print ($temp_file "\r\n");
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    #Retrieve generated assembly contents
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    while (my $line = <$target_file>) {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing
> > > > > whitepsace,
> > > > > > > > fixup
> > > > > > > > > > > line
> > > > > > > > > > > > endings
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        print ($temp_file expand ($line));
> #expand()
> > > > > replaces
> > > > > > > > tabs with
> > > > > > > > > > > > spaces
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    }
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    close ($source_file);
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    close ($target_file);
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    close ($temp_file);
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    move ($temp_file_name, $target) ||
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        die "Cannot replace \"" . $target . "\"!";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +}
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >  #
> > > > > > > > > > > > >
> > > > > > > > > > > > >  # Find the openssl directory name for use lib. We
> have
> > to
> > > > do
> > > > > > this
> > > > > > > > > > > > >
> > > > > > > > > > > > > @@ -21,10 +75,41 @@ use File::Copy;
> > > > > > > > > > > > >  #
> > > > > > > > > > > > >
> > > > > > > > > > > > >  my $inf_file;
> > > > > > > > > > > > >
> > > > > > > > > > > > >  my $OPENSSL_PATH;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +my $uefi_config;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +my $extension;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +my $arch;
> > > > > > > > > > > > >
> > > > > > > > > > > > >  my @inf;
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >  BEGIN {
> > > > > > > > > > > > >
> > > > > > > > > > > > >      $inf_file = "OpensslLib.inf";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    $uefi_config = "UEFI";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    $arch = shift;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    if (defined $arch) {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        if (uc ($arch) eq "X64") {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +            $arch = "X64";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +            $inf_file = "OpensslLibX64.inf";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +            $uefi_config = "UEFI-x86_64";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +            $extension = "nasm";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        } else {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +            die "Unsupported architecture \"" .
> $arch
> > .
> > > > > "\"!";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        }
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        if ($extension eq "nasm") {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +            if (`nasm -v 2>&1`) {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                #Presence of nasm executable will
> > trigger
> > > > > > > > inclusion of
> > > > > > > > > > > AVX
> > > > > > > > > > > > instructions
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                die "\nCannot run assembly
> generators
> > > > > with
> > > > > > NASM in
> > > > > > > > > > > > path!\n\n";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +            }
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        }
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        # Prepare assembly folder
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        if (-d $arch) {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +            remove_tree ($arch, {safe => 1}) ||
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                die "Cannot clean assembly folder
> \""
> > .
> > > > > $arch
> > > > > > .
> > > > > > > > "\"!";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        } else {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +            mkdir $arch ||
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                die "Cannot create assembly folder
> \""
> > .
> > > > > $arch
> > > > > > .
> > > > > > > > "\"!";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        }
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    }
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >      # Read the contents of the inf file
> > > > > > > > > > > > >
> > > > > > > > > > > > >      open( FD, "<" . $inf_file ) ||
> > > > > > > > > > > > >
> > > > > > > > > > > > > @@ -47,9 +132,9 @@ BEGIN {
> > > > > > > > > > > > >              # Configure UEFI
> > > > > > > > > > > > >
> > > > > > > > > > > > >              system(
> > > > > > > > > > > > >
> > > > > > > > > > > > >                  "./Configure",
> > > > > > > > > > > > >
> > > > > > > > > > > > > -                "UEFI",
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                "--config=../uefi-asm.conf",
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                "$uefi_config",
> > > > > > > > > > > > >
> > > > > > > > > > > > >                  "no-afalgeng",
> > > > > > > > > > > > >
> > > > > > > > > > > > > -                "no-asm",
> > > > > > > > > > > > >
> > > > > > > > > > > > >                  "no-async",
> > > > > > > > > > > > >
> > > > > > > > > > > > >                  "no-autoerrinit",
> > > > > > > > > > > > >
> > > > > > > > > > > > >                  "no-autoload-config",
> > > > > > > > > > > > >
> > > > > > > > > > > > > @@ -129,23 +214,53 @@ BEGIN {
> > > > > > > > > > > > >  # Retrieve file lists from OpenSSL configdata
> > > > > > > > > > > > >
> > > > > > > > > > > > >  #
> > > > > > > > > > > > >
> > > > > > > > > > > > >  use configdata qw/%unified_info/;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +use configdata qw/%config/;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +use configdata qw/%target/;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#
> > > > > > > > > > > > >
> > > > > > > > > > > > > +# Collect build flags from configdata
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#
> > > > > > > > > > > > >
> > > > > > > > > > > > > +my $flags = "";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +foreach my $f (@{$config{lib_defines}}) {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    $flags .= " -D$f";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +}
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >  my @cryptofilelist = ();
> > > > > > > > > > > > >
> > > > > > > > > > > > >  my @sslfilelist = ();
> > > > > > > > > > > > >
> > > > > > > > > > > > > +my @asmfilelist = ();
> > > > > > > > > > > > >
> > > > > > > > > > > > > +my @asmbuild = ();
> > > > > > > > > > > > >
> > > > > > > > > > > > >  foreach my $product ((@{$unified_info{libraries}},
> > > > > > > > > > > > >
> > > > > > > > > > > > >                        @{$unified_info{engines}})) {
> > > > > > > > > > > > >
> > > > > > > > > > > > >      foreach my $o (@{$unified_info{sources}-
> > >{$product}})
> > > > > {
> > > > > > > > > > > > >
> > > > > > > > > > > > >          foreach my $s (@{$unified_info{sources}-
> > >{$o}}) {
> > > > > > > > > > > > >
> > > > > > > > > > > > > -            next if ($unified_info{generate}->{$s});
> > > > > > > > > > > > >
> > > > > > > > > > > > > -            next if $s =~ "crypto/bio/b_print.c";
> > > > > > > > > > > > >
> > > > > > > > > > > > > -
> > > > > > > > > > > > >
> > > > > > > > > > > > >              # No need to add unused files in UEFI.
> > > > > > > > > > > > >
> > > > > > > > > > > > >              # So it can reduce porting time, compile
> > > > time,
> > > > > > library
> > > > > > > > size.
> > > > > > > > > > > > >
> > > > > > > > > > > > > +            next if $s =~ "crypto/bio/b_print.c";
> > > > > > > > > > > > >
> > > > > > > > > > > > >              next if $s =~ "crypto/rand/randfile.c";
> > > > > > > > > > > > >
> > > > > > > > > > > > >              next if $s =~ "crypto/store/";
> > > > > > > > > > > > >
> > > > > > > > > > > > >              next if $s =~ "crypto/err/err_all.c";
> > > > > > > > > > > > >
> > > > > > > > > > > > >              next if $s =~ "crypto/aes/aes_ecb.c";
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > +            if ($unified_info{generate}->{$s}) {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                if (defined $arch) {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                    my $buildstring = "perl";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                    foreach my $arg
> > > > > > (@{$unified_info{generate}-
> > > > > > > > >{$s}}) {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                        if ($arg =~ ".pl") {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                            $buildstring .=
> > > > > " ./openssl/$arg";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                        } elsif ($arg =~
> > > > > "PERLASM_SCHEME") {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                            $buildstring .= "
> > > > > > > > $target{perlasm_scheme}";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                        } elsif ($arg =~
> "LIB_CFLAGS")
> > {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                            $buildstring .=
> "$flags";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                        }
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                    }
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                    ($s, my $path, undef) =
> > fileparse($s,
> > > > > > > > qr/\.[^.]*/);
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                    $buildstring .= "
> > > > > > ./$arch/$path$s.$extension";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                    make_path ("./$arch/$path");
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                    push @asmbuild,
> "$buildstring\n";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                    push @asmfilelist, "
> > > > > > > > $arch/$path$s.$extension\r\n";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                }
> > > > > > > > > > > > >
> > > > > > > > > > > > > +                next;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +            }
> > > > > > > > > > > > >
> > > > > > > > > > > > >              if ($product =~ "libssl") {
> > > > > > > > > > > > >
> > > > > > > > > > > > >                  push @sslfilelist, '
> > $(OPENSSL_PATH)/' .
> > > > > $s .
> > > > > > > > "\r\n";
> > > > > > > > > > > > >
> > > > > > > > > > > > >                  next;
> > > > > > > > > > > > >
> > > > > > > > > > > > > @@ -183,15 +298,31 @@ foreach (@headers){
> > > > > > > > > > > > >  }
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#
> > > > > > > > > > > > >
> > > > > > > > > > > > > +# Generate assembly files
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#
> > > > > > > > > > > > >
> > > > > > > > > > > > > +if (@asmbuild) {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    print "\n--> Generating assembly files ... ";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    foreach my $buildstring (@asmbuild) {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        system ("$buildstring");
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        copy_license_header ($buildstring);
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    }
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    print "Done!";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +}
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > >  #
> > > > > > > > > > > > >
> > > > > > > > > > > > >  # Update OpensslLib.inf with autogenerated file list
> > > > > > > > > > > > >
> > > > > > > > > > > > >  #
> > > > > > > > > > > > >
> > > > > > > > > > > > >  my @new_inf = ();
> > > > > > > > > > > > >
> > > > > > > > > > > > >  my $subbing = 0;
> > > > > > > > > > > > >
> > > > > > > > > > > > > -print "\n--> Updating OpensslLib.inf ... ";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +print "\n--> Updating $inf_file ... ";
> > > > > > > > > > > > >
> > > > > > > > > > > > >  foreach (@inf) {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    if ($_ =~ "DEFINE OPENSSL_FLAGS_CONFIG") {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        push @new_inf, "  DEFINE
> > > > > OPENSSL_FLAGS_CONFIG    =" .
> > > > > > > > $flags
> > > > > > > > > .
> > > > > > > > > > > > "\r\n";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        next;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    }
> > > > > > > > > > > > >
> > > > > > > > > > > > >      if ( $_ =~ "# Autogenerated files list starts
> > here" )
> > > > {
> > > > > > > > > > > > >
> > > > > > > > > > > > > -        push @new_inf, $_, @cryptofilelist,
> > @sslfilelist;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        push @new_inf, $_, @asmfilelist,
> > @cryptofilelist,
> > > > > > > > @sslfilelist;
> > > > > > > > > > > > >
> > > > > > > > > > > > >          $subbing = 1;
> > > > > > > > > > > > >
> > > > > > > > > > > > >          next;
> > > > > > > > > > > > >
> > > > > > > > > > > > >      }
> > > > > > > > > > > > >
> > > > > > > > > > > > > @@ -216,49 +347,51 @@ rename( $new_inf_file,
> $inf_file
> > )
> > > > ||
> > > > > > > > > > > > >      die "rename $inf_file";
> > > > > > > > > > > > >
> > > > > > > > > > > > >  print "Done!";
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > -#
> > > > > > > > > > > > >
> > > > > > > > > > > > > -# Update OpensslLibCrypto.inf with auto-generated
> file
> > > > list
> > > > > > (no
> > > > > > > > libssl)
> > > > > > > > > > > > >
> > > > > > > > > > > > > -#
> > > > > > > > > > > > >
> > > > > > > > > > > > > -$inf_file = "OpensslLibCrypto.inf";
> > > > > > > > > > > > >
> > > > > > > > > > > > > -
> > > > > > > > > > > > >
> > > > > > > > > > > > > -# Read the contents of the inf file
> > > > > > > > > > > > >
> > > > > > > > > > > > > -@inf = ();
> > > > > > > > > > > > >
> > > > > > > > > > > > > -@new_inf = ();
> > > > > > > > > > > > >
> > > > > > > > > > > > > -open( FD, "<" . $inf_file ) ||
> > > > > > > > > > > > >
> > > > > > > > > > > > > -    die "Cannot open \"" . $inf_file . "\"!";
> > > > > > > > > > > > >
> > > > > > > > > > > > > -@inf = (<FD>);
> > > > > > > > > > > > >
> > > > > > > > > > > > > -close(FD) ||
> > > > > > > > > > > > >
> > > > > > > > > > > > > -    die "Cannot close \"" . $inf_file . "\"!";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +if (!defined $arch) {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    #
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    # Update OpensslLibCrypto.inf with auto-
> generated
> > > > file
> > > > > > list
> > > > > > > > (no
> > > > > > > > > > > > libssl)
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    #
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    $inf_file = "OpensslLibCrypto.inf";
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > -$subbing = 0;
> > > > > > > > > > > > >
> > > > > > > > > > > > > -print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > > > > > > > > > >
> > > > > > > > > > > > > -foreach (@inf) {
> > > > > > > > > > > > >
> > > > > > > > > > > > > -    if ( $_ =~ "# Autogenerated files list starts
> > here" )
> > > > {
> > > > > > > > > > > > >
> > > > > > > > > > > > > -        push @new_inf, $_, @cryptofilelist;
> > > > > > > > > > > > >
> > > > > > > > > > > > > -        $subbing = 1;
> > > > > > > > > > > > >
> > > > > > > > > > > > > -        next;
> > > > > > > > > > > > >
> > > > > > > > > > > > > -    }
> > > > > > > > > > > > >
> > > > > > > > > > > > > -    if ( $_ =~ "# Autogenerated files list ends
> here"
> > ) {
> > > > > > > > > > > > >
> > > > > > > > > > > > > -        push @new_inf, $_;
> > > > > > > > > > > > >
> > > > > > > > > > > > > -        $subbing = 0;
> > > > > > > > > > > > >
> > > > > > > > > > > > > -        next;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    # Read the contents of the inf file
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    @inf = ();
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    @new_inf = ();
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    open( FD, "<" . $inf_file ) ||
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        die "Cannot open \"" . $inf_file . "\"!";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    @inf = (<FD>);
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    close(FD) ||
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        die "Cannot close \"" . $inf_file . "\"!";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    $subbing = 0;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    print "\n--> Updating OpensslLibCrypto.inf ...
> ";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    foreach (@inf) {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        if ( $_ =~ "# Autogenerated files list
> starts
> > > > here" )
> > > > > > {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +            push @new_inf, $_, @cryptofilelist;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +            $subbing = 1;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +            next;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        }
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        if ( $_ =~ "# Autogenerated files list ends
> > here"
> > > > ) {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +            push @new_inf, $_;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +            $subbing = 0;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +            next;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        }
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        push @new_inf, $_
> > > > > > > > > > > > >
> > > > > > > > > > > > > +            unless ($subbing);
> > > > > > > > > > > > >
> > > > > > > > > > > > >      }
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > -    push @new_inf, $_
> > > > > > > > > > > > >
> > > > > > > > > > > > > -        unless ($subbing);
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    $new_inf_file = $inf_file . ".new";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    open( FD, ">" . $new_inf_file ) ||
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        die $new_inf_file;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    print( FD @new_inf ) ||
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        die $new_inf_file;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    close(FD) ||
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        die $new_inf_file;
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    rename( $new_inf_file, $inf_file ) ||
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        die "rename $inf_file";
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    print "Done!";
> > > > > > > > > > > > >
> > > > > > > > > > > > >  }
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > -$new_inf_file = $inf_file . ".new";
> > > > > > > > > > > > >
> > > > > > > > > > > > > -open( FD, ">" . $new_inf_file ) ||
> > > > > > > > > > > > >
> > > > > > > > > > > > > -    die $new_inf_file;
> > > > > > > > > > > > >
> > > > > > > > > > > > > -print( FD @new_inf ) ||
> > > > > > > > > > > > >
> > > > > > > > > > > > > -    die $new_inf_file;
> > > > > > > > > > > > >
> > > > > > > > > > > > > -close(FD) ||
> > > > > > > > > > > > >
> > > > > > > > > > > > > -    die $new_inf_file;
> > > > > > > > > > > > >
> > > > > > > > > > > > > -rename( $new_inf_file, $inf_file ) ||
> > > > > > > > > > > > >
> > > > > > > > > > > > > -    die "rename $inf_file";
> > > > > > > > > > > > >
> > > > > > > > > > > > > -print "Done!";
> > > > > > > > > > > > >
> > > > > > > > > > > > > -
> > > > > > > > > > > > >
> > > > > > > > > > > > >  #
> > > > > > > > > > > > >
> > > > > > > > > > > > >  # Copy opensslconf.h and dso_conf.h generated from
> > > > > OpenSSL
> > > > > > > > > > Configuration
> > > > > > > > > > > > >
> > > > > > > > > > > > >  #
> > > > > > > > > > > > >
> > > > > > > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/uefi-
> asm.conf
> > > > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > > > > > > new file mode 100644
> > > > > > > > > > > > > index 0000000000..55eedbf3ba
> > > > > > > > > > > > > --- /dev/null
> > > > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > > > > > > @@ -0,0 +1,15 @@
> > > > > > > > > > > > > +## -*- mode: perl; -*-
> > > > > > > > > > > > >
> > > > > > > > > > > > > +## UEFI assembly openssl configuration targets.
> > > > > > > > > > > > >
> > > > > > > > > > > > > +
> > > > > > > > > > > > >
> > > > > > > > > > > > > +my %targets = (
> > > > > > > > > > > > >
> > > > > > > > > > > > > +#### UEFI
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    "UEFI-x86_64" => {
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        perlasm_scheme  => "nasm",
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        # inherit_from    => [ "UEFI",
> > > > > asm("x86_64_asm") ],
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        inherit_from    => [ "UEFI" ],
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        cpuid_asm_src   => "x86_64cpuid.s",
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        aes_asm_src     => "aes_core.c aes_cbc.c
> > vpaes-
> > > > > > x86_64.s
> > > > > > > > aesni-
> > > > > > > > > > > > x86_64.s
> > > > > > > > > > > > > aesni-sha1-x86_64.s aesni-sha256-x86_64.s
> > > > > aesni-mb-x86_64.s",
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        sha1_asm_src    => "sha1-x86_64.s
> > > > > sha256-x86_64.s
> > > > > > sha512-
> > > > > > > > > > > x86_64.s
> > > > > > > > > > > > > sha1-mb-x86_64.s sha256-mb-x86_64.s",
> > > > > > > > > > > > >
> > > > > > > > > > > > > +        modes_asm_src   => "ghash-x86_64.s",
> > > > > > > > > > > > >
> > > > > > > > > > > > > +    },
> > > > > > > > > > > > >
> > > > > > > > > > > > > +);
> > > > > > > > > > > > >
> > > > > > > > > > > > > --
> > > > > > > > > > > > > 2.28.0.windows.1
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> 
> 
> 
> 
> 


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

* Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
       [not found]                           ` <1637E5DD452A46F1.2312@groups.io>
@ 2020-09-25  8:01                             ` Zurcher, Christopher J
  0 siblings, 0 replies; 42+ messages in thread
From: Zurcher, Christopher J @ 2020-09-25  8:01 UTC (permalink / raw)
  To: devel@edk2.groups.io, Zurcher, Christopher J, Yao, Jiewen,
	gaoliming@byosoft.com.cn, Jiang, Guomin
  Cc: Wang, Jian J, Lu, XiaoyuX, 'Ard Biesheuvel'

I found how to undefine WIN32 and now CLANGPDB is building just fine. But it is very strange that it is only setting WIN32 by default on the assembly build, and I can only guess it's somehow triggered by adding the additional OPENSSL_FLAGS_CONFIG defines.

Thanks,
Christopher Zurcher

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Zurcher,
> Christopher J
> Sent: Thursday, September 24, 2020 19:29
> To: devel@edk2.groups.io; Zurcher, Christopher J
> <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>;
> gaoliming@byosoft.com.cn; Jiang, Guomin <guomin.jiang@intel.com>
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> 'Ard Biesheuvel' <ard.biesheuvel@linaro.org>
> Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> instruction support for X64
> 
> My final hurdle for CLANG is that the compiler is defining the macro "WIN32"
> which triggers OpenSSL to include some Windows API calls and breaks the
> build. VS2015 is not defining this by default.
> Is there any clang option to prevent this macro definition?
> 
> Thanks,
> Christopher Zurcher
> 
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Zurcher,
> > Christopher J
> > Sent: Thursday, September 24, 2020 18:15
> > To: Yao, Jiewen <jiewen.yao@intel.com>; devel@edk2.groups.io;
> > gaoliming@byosoft.com.cn; Jiang, Guomin <guomin.jiang@intel.com>
> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>;
> > 'Ard Biesheuvel' <ard.biesheuvel@linaro.org>
> > Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > instruction support for X64
> >
> > I have no objection to CHAR16; it looks like OpenSSL doesn't actually use
> > wchar_t anywhere.
> >
> > --
> > Christopher Zurcher
> >
> > > -----Original Message-----
> > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > Sent: Thursday, September 24, 2020 18:11
> > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > > devel@edk2.groups.io; gaoliming@byosoft.com.cn; Jiang, Guomin
> > > <guomin.jiang@intel.com>
> > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > <xiaoyux.lu@intel.com>;
> > > 'Ard Biesheuvel' <ard.biesheuvel@linaro.org>
> > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > instruction support for X64
> > >
> > > I think we configure wchar_t to be 16bits by using -fshort-wchar.
> > >
> > > Should we use
> > > typedef CHAR16         wchar_t;
> > > instead of
> > > typedef UINT32         wchar_t;
> > >
> > > Thank you
> > > Yao Jiewen
> > >
> > > > -----Original Message-----
> > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > Sent: Friday, September 25, 2020 9:07 AM
> > > > To: devel@edk2.groups.io; gaoliming@byosoft.com.cn; Yao, Jiewen
> > > > <jiewen.yao@intel.com>; Jiang, Guomin <guomin.jiang@intel.com>
> > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > <xiaoyux.lu@intel.com>;
> > > > 'Ard Biesheuvel' <ard.biesheuvel@linaro.org>
> > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> native
> > > > instruction support for X64
> > > >
> > > > I've discovered the failure was because CryptoPkg includes its own
> > stddef.h
> > > > which is a wrapper for CrtLibSupport.h
> > > > I have added the required definitions to this file and have resolved
> the
> > > error:
> > > > typedef INTN           ptrdiff_t;
> > > > typedef UINT32         wchar_t;
> > > >
> > > > Thanks,
> > > > Christopher Zurcher
> > > >
> > > > > -----Original Message-----
> > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> > gaoliming
> > > > > Sent: Thursday, September 24, 2020 17:49
> > > > > To: devel@edk2.groups.io; Zurcher, Christopher J
> > > > > <christopher.j.zurcher@intel.com>; Yao, Jiewen
> <jiewen.yao@intel.com>;
> > > > Jiang,
> > > > > Guomin <guomin.jiang@intel.com>
> > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > <xiaoyux.lu@intel.com>;
> > > > > 'Ard Biesheuvel' <ard.biesheuvel@linaro.org>
> > > > > Subject: 回复: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > > native
> > > > > instruction support for X64
> > > > >
> > > > > Zurcher:
> > > > >   Can you specify the detail build step to reproduce the build error
> > with
> > > > > CLANGPDB tool chain?
> > > > >
> > > > > Thanks
> > > > > Liming
> > > > > > -----邮件原件-----
> > > > > > 发件人: bounce+27952+65588+4905953+8761045@groups.io
> > > > > > <bounce+27952+65588+4905953+8761045@groups.io> 代表 Zurcher,
> > > > > > Christopher J
> > > > > > 发送时间: 2020年9月25日 8:28
> > > > > > 收件人: Yao, Jiewen <jiewen.yao@intel.com>; Jiang, Guomin
> > > > > > <guomin.jiang@intel.com>; devel@edk2.groups.io
> > > > > > 抄送: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > 主题: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > native
> > > > > > instruction support for X64
> > > > > >
> > > > > > I was able to successfully build and run the non-optimized code
> with
> > > LLVM,
> > > > > > but the optimized version returns this error during build:
> > > > > >
> > > > > > C:\Program Files\LLVM\lib\clang\9.0.0\include\stdatomic.h:91:17:
> > error:
> > > > > > unknown type name 'wchar_t'
> > > > > > typedef _Atomic(wchar_t)            atomic_wchar_t;
> > > > > >
> > > > > > Is there a known build issue with CLANGPDB and the stdatomic.h
> file?
> > > > > >
> > > > > > Thanks,
> > > > > > Christopher Zurcher
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > > > > > Sent: Tuesday, September 22, 2020 19:35
> > > > > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > Jiang,
> > > > > Guomin
> > > > > > > <guomin.jiang@intel.com>; devel@edk2.groups.io
> > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib:
> Add
> > > > > native
> > > > > > > instruction support for X64
> > > > > > >
> > > > > > > For GCC, please refer to
> > > > > > > https://github.com/tianocore/tianocore.github.io/wiki/Using-EDK-
> II-
> > > with-
> > > > > > > Native-GCC
> > > > > > >
> > > > > > > For LLVM, please refer to
> > > > > > > https://github.com/tianocore/tianocore.github.io/wiki/CLANG9-
> Tools-
> > > > Chain
> > > > > > >
> > > > > > > Thank you
> > > > > > > Yao Jiewen
> > > > > > >
> > > > > > > > -----Original Message-----
> > > > > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > > > > > Sent: Tuesday, September 22, 2020 11:22 PM
> > > > > > > > To: Jiang, Guomin <guomin.jiang@intel.com>;
> devel@edk2.groups.io;
> > > > Yao,
> > > > > > > > Jiewen <jiewen.yao@intel.com>
> > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib:
> > Add
> > > > > > native
> > > > > > > > instruction support for X64
> > > > > > > >
> > > > > > > > I have unit tested SHA1, SHA512, and AES as well.
> > > > > > > > I do not have the build environment available to test GCC and
> > LLVM.
> > > > > > > >
> > > > > > > > --
> > > > > > > > Christopher Zurcher
> > > > > > > >
> > > > > > > > > -----Original Message-----
> > > > > > > > > From: Jiang, Guomin <guomin.jiang@intel.com>
> > > > > > > > > Sent: Wednesday, September 16, 2020 02:17
> > > > > > > > > To: devel@edk2.groups.io; Yao, Jiewen <jiewen.yao@intel.com>;
> > > > > > Zurcher,
> > > > > > > > > Christopher J <christopher.j.zurcher@intel.com>
> > > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2]
> CryptoPkg/OpensslLib:
> > > Add
> > > > > > native
> > > > > > > > > instruction support for X64
> > > > > > > > >
> > > > > > > > > Hi Zurcher,
> > > > > > > > >
> > > > > > > > > > [Jiewen] Since you also add other sha (sha1, sha512) and
> > aesni,
> > > I
> > > > > think
> > > > > > > > > those
> > > > > > > > > > need unit test for them too.
> > > > > > > > >
> > > > > > > > > Can you update the status about it?
> > > > > > > > >
> > > > > > > > > > [Jiewen] I think we need support build with GCC and LLVM,
> and
> > > with
> > > > > > X64.
> > > > > > > > >
> > > > > > > > > It is better to support the GCC and LLVM.
> > > > > > > > >
> > > > > > > > > Thanks
> > > > > > > > > Guomin
> > > > > > > > >
> > > > > > > > > > -----Original Message-----
> > > > > > > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf
> > Of
> > > > > > Yao,
> > > > > > > > > > Jiewen
> > > > > > > > > > Sent: Tuesday, August 25, 2020 7:36 AM
> > > > > > > > > > To: Zurcher, Christopher J
> <christopher.j.zurcher@intel.com>;
> > > > > > > > > > devel@edk2.groups.io
> > > > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > > > > <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > > <ard.biesheuvel@linaro.org>
> > > > > > > > > > Subject: Re: [edk2-devel] [PATCH v2 1/2]
> > CryptoPkg/OpensslLib:
> > > Add
> > > > > > > native
> > > > > > > > > > instruction support for X64
> > > > > > > > > >
> > > > > > > > > > Below:
> > > > > > > > > >
> > > > > > > > > > > -----Original Message-----
> > > > > > > > > > > From: Zurcher, Christopher J
> > > <christopher.j.zurcher@intel.com>
> > > > > > > > > > > Sent: Tuesday, August 25, 2020 5:26 AM
> > > > > > > > > > > To: devel@edk2.groups.io; Zurcher, Christopher J
> > > > > > > > > > > <christopher.j.zurcher@intel.com>; Yao, Jiewen
> > > > > > <jiewen.yao@intel.com>
> > > > > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2]
> > > CryptoPkg/OpensslLib:
> > > > > Add
> > > > > > > native
> > > > > > > > > > > instruction support for X64
> > > > > > > > > > >
> > > > > > > > > > > 1) I have confirmed that the ApiHooks.c file is still
> > > required
> > > > > even
> > > > > > > > > without
> > > > > > > > > > the AVX
> > > > > > > > > > > instructions included. The x86_64 assembly files in
> OpenSSL
> > > set
> > > > > a
> > > > > > > flag
> > > > > > > > > called
> > > > > > > > > > > $win64 and automatically include calls to the
> > > RtlVirtualUnwind
> > > > > > > function
> > > > > > > > > if
> > > > > > > > > > NASM
> > > > > > > > > > > is selected as the assembler scheme.
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > https://docs.microsoft.com/en-us/windows/win32/api/winnt/nf-winnt-
> > > > > > > > > > > rtlvirtualunwind
> > > > > > > > > > >
> > > > > > > > > > > I have submitted an issue against OpenSSL since I don't
> > think
> > > > > using
> > > > > > > the
> > > > > > > > > > NASM
> > > > > > > > > > > assembler should force the inclusion of Windows-specific
> > API
> > > > > hooks,
> > > > > > > but
> > > > > > > > > > that
> > > > > > > > > > > change cannot be made in OpenSSL 1.1.1 and we will have
> to
> > > wait
> > > > > > for
> > > > > > > > > > OpenSSL 3
> > > > > > > > > > > or later to remove the stub function.
> > > > > > > > > > >
> > > > > > > > > > > https://github.com/openssl/openssl/issues/12712
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > [Jiewen] Thanks.
> > > > > > > > > >
> > > > > > > > > > > 2) So far I have only built with VS.
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > [Jiewen] I think we need support build with GCC and LLVM,
> and
> > > with
> > > > > > X64.
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > > 3) The X64 SHA256 implementation was successfully
> exercised
> > > > > > across a
> > > > > > > > > > large
> > > > > > > > > > > number of devices in a production environment as a
> > > verification
> > > > > step
> > > > > > > in a
> > > > > > > > > > multi-
> > > > > > > > > > > GB data transfer scenario.
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > [Jiewen] Since you also add other sha (sha1, sha512) and
> > aesni,
> > > I
> > > > > think
> > > > > > > > > those
> > > > > > > > > > need unit test for them too.
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > > Thanks,
> > > > > > > > > > > Christopher Zurcher
> > > > > > > > > > >
> > > > > > > > > > > > -----Original Message-----
> > > > > > > > > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On
> > Behalf
> > > > > > Of
> > > > > > > > > > Zurcher,
> > > > > > > > > > > > Christopher J
> > > > > > > > > > > > Sent: Tuesday, August 18, 2020 15:50
> > > > > > > > > > > > To: Yao, Jiewen <jiewen.yao@intel.com>;
> > > devel@edk2.groups.io
> > > > > > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > > > > > Subject: Re: [edk2-devel] [PATCH v2 1/2]
> > > CryptoPkg/OpensslLib:
> > > > > > Add
> > > > > > > > > > native
> > > > > > > > > > > > instruction support for X64
> > > > > > > > > > > >
> > > > > > > > > > > > After further review, the ApiHooks.c file may no longer
> > be
> > > > > needed
> > > > > > > since
> > > > > > > > > > we
> > > > > > > > > > > > are no longer including the AVX instructions. I will
> look
> > > over
> > > > > the
> > > > > > > > > > > > dependencies and send a new patch set if I can
> eliminate
> > > the
> > > > > API
> > > > > > > hooks
> > > > > > > > > > file.
> > > > > > > > > > > >
> > > > > > > > > > > > Thanks,
> > > > > > > > > > > > Christopher Zurcher
> > > > > > > > > > > >
> > > > > > > > > > > > > -----Original Message-----
> > > > > > > > > > > > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > > > > > > > > > > > Sent: Thursday, August 13, 2020 08:04
> > > > > > > > > > > > > To: Zurcher, Christopher J
> > > > > <christopher.j.zurcher@intel.com>;
> > > > > > > > > > > > > devel@edk2.groups.io
> > > > > > > > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > > > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > > > > > > Subject: RE: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > > native
> > > > > > > > > > instruction
> > > > > > > > > > > > > support for X64
> > > > > > > > > > > > >
> > > > > > > > > > > > > Hi Christopher
> > > > > > > > > > > > > Thanks.
> > > > > > > > > > > > >
> > > > > > > > > > > > > 1) Would you please help me understand more on
> > > "ApiHooks.c
> > > > > > > contains
> > > > > > > > > > a
> > > > > > > > > > > stub
> > > > > > > > > > > > > function for a Windows API call" ?
> > > > > > > > > > > > > Why we need this?
> > > > > > > > > > > > > If it is compiler specific in openssl, should we
> submit
> > > > > patch to
> > > > > > > > > openssl to
> > > > > > > > > > > > > exclude this with OPENSSL_SYS_UEFI? That should be a
> > > cleaner
> > > > > > > solution
> > > > > > > > > > for
> > > > > > > > > > > > > UEFI.
> > > > > > > > > > > > >
> > > > > > > > > > > > > 2) Would you please describe what compiler you have
> > > tried?
> > > > > VS?
> > > > > > > GCC?
> > > > > > > > > > LLVM?
> > > > > > > > > > > > >
> > > > > > > > > > > > > 3) Would you please describe what unit test you have
> > > done?
> > > > > > > > > > > > >
> > > > > > > > > > > > > Thank you
> > > > > > > > > > > > > Yao Jiewen
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > > -----Original Message-----
> > > > > > > > > > > > > > From: Zurcher, Christopher J
> > > <christopher.j.zurcher@intel.
> > > > > com>
> > > > > > > > > > > > > > Sent: Tuesday, August 4, 2020 8:24 AM
> > > > > > > > > > > > > > To: devel@edk2.groups.io
> > > > > > > > > > > > > > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian
> J
> > > > > > > > > > > > > <jian.j.wang@intel.com>;
> > > > > > > > > > > > > > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > > > > > > > > > > > > <ard.biesheuvel@linaro.org>
> > > > > > > > > > > > > > Subject: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > > native
> > > > > > > > > instruction
> > > > > > > > > > > > > support
> > > > > > > > > > > > > > for X64
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > BZ:
> > https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Adding OpensslLibX64.inf and modifying
> > process_files.pl
> > > to
> > > > > > > process
> > > > > > > > > > this
> > > > > > > > > > > > > > file and generate the necessary assembly files.
> > > > > > > > > > > > > > ApiHooks.c contains a stub function for a Windows
> API
> > > > > call.
> > > > > > > > > > > > > > uefi-asm.conf contains the limited assembly
> > > configurations
> > > > > for
> > > > > > > > > > OpenSSL.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > > > > > > > > > > > > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > > > > > > > > > > > > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > > > > > > > > > > > > > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > > > > > > > Signed-off-by: Christopher J Zurcher
> > > > > > > > > > <christopher.j.zurcher@intel.com>
> > > > > > > > > > > > > > ---
> > > > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > |
> > > > > > 2 +-
> > > > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > |
> > > > > > 2 +-
> > > > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > |
> > > > > > 656
> > > > > > > > > > > > > > ++++++++++++++++++++
> > > > > > > > > > > > > >  CryptoPkg/Library/Include/openssl/opensslconf.h
> > |
> > > > > > 3 -
> > > > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/ApiHooks.c
> > |
> > > > > > 18 +
> > > > > > > > > > > > > >
> CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > |
> > > > > > 34 +
> > > > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/process_files.pl
> > |
> > > > > > 223
> > > > > > > +++++--
> > > > > > > > > > > > > >  CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > |
> > > > > > 15 +
> > > > > > > > > > > > > >  8 files changed, 903 insertions(+), 50 deletions(-
> )
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > diff --git
> > > a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > > > > > index dbbe5386a1..bd62d86936 100644
> > > > > > > > > > > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > > > > > > > @@ -16,7 +16,7 @@
> > > > > > > > > > > > > >    VERSION_STRING                 = 1.0
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > > > > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > > > > > > > > > DOPENSSL_NO_ASM
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  #
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM
> > > > > > AARCH64
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > diff --git
> > > > > a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > > > > > index 616ccd9f62..2b7324a990 100644
> > > > > > > > > > > > > > ---
> > a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > > > > > +++
> > b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > > > > > > > @@ -16,7 +16,7 @@
> > > > > > > > > > > > > >    VERSION_STRING                 = 1.0
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > > > > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > > > > > > > > > DOPENSSL_NO_ASM
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  #
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM
> > > > > > AARCH64
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > diff --git
> > > > > a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > > > > > > > new file mode 100644
> > > > > > > > > > > > > > index 0000000000..825eea0254
> > > > > > > > > > > > > > --- /dev/null
> > > > > > > > > > > > > > +++
> b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > > > > > > > @@ -0,0 +1,656 @@
> > > > > > > > > > > > > > +## @file
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#  This module provides OpenSSL Library
> > > implementation.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#  Copyright (c) 2010 - 2020, Intel Corporation.
> All
> > > > > rights
> > > > > > > > > > > > reserved.<BR>
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#  (C) Copyright 2020 Hewlett Packard Enterprise
> > > > > > Development
> > > > > > > > > > LP<BR>
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +##
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +[Defines]
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  INF_VERSION                    = 0x00010005
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  BASE_NAME                      = OpensslLibX64
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  MODULE_UNI_FILE                = OpensslLib.uni
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  FILE_GUID                      =
> > > > > > 18125E50-0117-4DD0-BE54-
> > > > > > > > > 4784AD995FEF
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  MODULE_TYPE                    = BASE
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  VERSION_STRING                 = 1.0
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  LIBRARY_CLASS                  = OpensslLib
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  DEFINE OPENSSL_PATH            = openssl
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > > > > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > > > > > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  DEFINE OPENSSL_FLAGS_CONFIG    =
> > > > > > -DOPENSSL_CPUID_OBJ -
> > > > > > > > > > > DSHA1_ASM -
> > > > > > > > > > > > > > DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -
> > > > > > > > > > > DGHASH_ASM
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  CONSTRUCTOR                    =
> > > > > > OpensslLibConstructor
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#  VALID_ARCHITECTURES           = X64
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +[Sources]
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  OpensslLibConstructor.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/e_os.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ms/uplink.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +# Autogenerated files list starts here
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  X64/crypto/aes/aesni-mb-x86_64.nasm
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  X64/crypto/aes/aesni-sha1-x86_64.nasm
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  X64/crypto/aes/aesni-sha256-x86_64.nasm
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  X64/crypto/aes/aesni-x86_64.nasm
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  X64/crypto/aes/vpaes-x86_64.nasm
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  X64/crypto/modes/ghash-x86_64.nasm
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  X64/crypto/sha/sha1-mb-x86_64.nasm
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  X64/crypto/sha/sha1-x86_64.nasm
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  X64/crypto/sha/sha256-mb-x86_64.nasm
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  X64/crypto/sha/sha256-x86_64.nasm
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  X64/crypto/sha/sha512-x86_64.nasm
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  X64/crypto/x86_64cpuid.nasm
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_core.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ige.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_misc.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aria/aria.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_digest.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_dup.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_gentm.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_int.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_object.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_octet.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_print.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_sign.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strex.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strnid.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_time.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_type.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utctm.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utf8.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_verify.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_par.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mime.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_moid.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_pack.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_int.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_string.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/n_pkey.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/nsseq.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_bitst.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_pkey.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_spki.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_new.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_algor.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_bignum.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_info.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_int64.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_long.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_pkey.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_sig.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_spki.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_val.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_wait.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_addr.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_dump.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock2.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_buff.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_nbio.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_null.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_cb.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_meth.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_acpt.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_bio.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_conn.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_dgram.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_fd.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_file.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_log.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_mem.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_null.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_sock.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_add.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_asm.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_blind.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_const.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_ctx.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_depr.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_dh.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_div.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp2.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gcd.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_intern.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_kron.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mod.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mont.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mpi.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mul.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_nist.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_print.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_rand.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_recp.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_shift.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqr.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_srp.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_word.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_x931p.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buf_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buffer.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cmac.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/c_zlib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_api.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mall.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mod.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_sap.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_ssl.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cpt_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cryptlib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ctype.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/cversion.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_check.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_depr.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_gen.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_kdf.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_key.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_meth.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_prn.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dl.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_vms.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_win32.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ebcdic.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/err/err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/err/err_prn.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_enc.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_md.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_ok.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_allc.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_alld.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/digest.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aria.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_bf.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_camellia.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_cast.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des3.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_idea.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_null.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_old.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc2.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc5.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_seed.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_sm4.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/encode.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_cnf.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_enc.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_key.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pbe.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pkey.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md2.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md4.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_mdc2.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_null.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_ripemd.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha1.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha3.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sigver.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_wp.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/names.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_dec.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_enc.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_open.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_seal.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_sign.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_verify.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ex_data.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/getenv.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/init.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/hkdf.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/kdf_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/scrypt.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lh_stats.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_one.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mem.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mem_dbg.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mem_sec.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cbc128.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ccm128.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cfb128.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ctr128.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cts128.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/gcm128.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ocb128.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ofb128.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/wrap128.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/xts128.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_dir.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_fips.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_fopen.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_init.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_str.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/o_time.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/o_names.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_all.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_info.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_oth.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pk8.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pkey.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_sign.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_x509.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_xaux.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pvkfmt.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_egd.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_unix.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_vms.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_win.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_none.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/keccak1600.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1_one.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha256.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha512.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm4/sm4.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/stack/stack.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_none.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_pthread.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_win.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/txt_db/txt_db.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_null.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_util.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/uid.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_dir.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_file.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_crl.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_req.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_x509.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_att.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_cmp.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_d2.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_def.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_ext.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_lu.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_meth.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_obj.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_r2x.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_req.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_set.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_trs.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_txt.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_v3.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vfy.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vpm.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509cset.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509name.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509rset.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509spki.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509type.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_all.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_attrib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_crl.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_exten.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_name.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_pubkey.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_req.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509a.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_info.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_int.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/arm_arch.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/mips_arch.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ppc_arch.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/s390x_arch.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sparc_arch.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/vms_rms.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/charmap.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/standard_methods.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/modes_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/store/store_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/bio_ssl.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_msg.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_srtp.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/methods.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/packet.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/pqueue.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_cbc.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_enc.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_msg.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_asn1.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_ciph.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_conf.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_err.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_init.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_mcnf.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_rsa.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_sess.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_stat.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_txt.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_utst.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_cust.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_clnt.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_dtls.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_srvr.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_enc.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_lib.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_trce.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/tls13_enc.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/tls_srp.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/packet_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert_table.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/record.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/record/record_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_local.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +# Autogenerated files list ends here
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  buildinf.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  rand_pool_noise.h
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  ossl_store.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  rand_pool.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +[Sources.X64]
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  rand_pool_noise_tsc.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  ApiHooks.c
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +[Packages]
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  MdePkg/MdePkg.dec
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  CryptoPkg/CryptoPkg.dec
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +[LibraryClasses]
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  BaseLib
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  DebugLib
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  TimerLib
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  PrintLib
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +[BuildOptions]
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  # Disables the following Visual Studio compiler
> > > > > warnings
> > > > > > > brought
> > > > > > > > > by
> > > > > > > > > > > > > openssl
> > > > > > > > > > > > > > source,
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  # so we do not break the build with /WX option:
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #   C4090: 'function' : different 'const'
> > qualifiers
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #   C4132: 'object' : const object should be
> > > > > initialized
> > > > > > > > > (tls13_enc.c)
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #   C4210: nonstandard extension used: function
> > > given
> > > > > file
> > > > > > > scope
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #   C4244: conversion from type1 to type2,
> > possible
> > > > > loss of
> > > > > > > data
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #   C4245: conversion from type1 to type2,
> > > > > > signed/unsigned
> > > > > > > > > > mismatch
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #   C4267: conversion from size_t to type,
> > possible
> > > > > loss of
> > > > > > > data
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #   C4306: 'identifier' : conversion from
> 'type1'
> > to
> > > > > 'type2'
> > > > > > > of
> > > > > > > > > > > > greater
> > > > > > > > > > > > > size
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #   C4310: cast truncates constant value
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #   C4389: 'operator' : signed/unsigned mismatch
> > > (xxxx)
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #   C4700: uninitialized local variable 'name'
> > used.
> > > > > > > > > (conf_sap.c(71))
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #   C4702: unreachable code
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #   C4706: assignment within conditional
> > expression
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #   C4819: The file contains a character that
> > cannot
> > > be
> > > > > > > > > represented
> > > > > > > > > > in
> > > > > > > > > > > > > the
> > > > > > > > > > > > > > current code page
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64
> > > > > > -U_MSC_VER
> > > > > > > > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /wd4090
> > > > > > /wd4132
> > > > > > > > > > > /wd4210
> > > > > > > > > > > > > > /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700
> > > > > > /wd4389
> > > > > > > > > > /wd4702
> > > > > > > > > > > > > > /wd4706 /wd4819
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64
> > > > > > -U_MSC_VER -
> > > > > > > > > > > U__ICC
> > > > > > > > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  # Suppress the following build warnings in
> openssl
> > > so
> > > > > we
> > > > > > > don't
> > > > > > > > > > break
> > > > > > > > > > > > the
> > > > > > > > > > > > > build
> > > > > > > > > > > > > > with -Werror
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #   -Werror=maybe-uninitialized: there exist
> some
> > > other
> > > > > > > paths
> > > > > > > > > for
> > > > > > > > > > > > which
> > > > > > > > > > > > > the
> > > > > > > > > > > > > > variable is not initialized.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #   -Werror=format: Check calls to printf and
> > scanf,
> > > > > etc.,
> > > > > > > to
> > > > > > > > > make
> > > > > > > > > > > > sure
> > > > > > > > > > > > > that the
> > > > > > > > > > > > > > arguments supplied have
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #                   types appropriate to the
> > format
> > > > > > string
> > > > > > > > > specified.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #   -Werror=unused-but-set-variable: Warn
> whenever
> > a
> > > > > > local
> > > > > > > > > > variable is
> > > > > > > > > > > > > > assigned to, but otherwise unused (aside from its
> > > > > declaration).
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64
> > > > > > > > > > $(OPENSSL_FLAGS)
> > > > > > > > > > > > > > $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-
> > uninitialized
> > > > > > -Wno-
> > > > > > > > > > > > > > error=format -Wno-format
> > > > > > -Wno-error=unused-but-set-variable -
> > > > > > > > > > > > > > DNO_MSABI_VA_FUNCS
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  # suppress the following warnings in openssl so
> we
> > > > > don't
> > > > > > > break
> > > > > > > > > the
> > > > > > > > > > > > build
> > > > > > > > > > > > > with
> > > > > > > > > > > > > > warnings-as-errors:
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  # 1295: Deprecated declaration <entity> - give
> arg
> > > > > types
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #  550: <entity> was set but never used
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  # 1293: assignment in condition
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #  111: statement is unreachable (invariably
> > > "break;"
> > > > > after
> > > > > > > > > "return
> > > > > > > > > > > > X;"
> > > > > > > > > > > > > in case
> > > > > > > > > > > > > > statement)
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #   68: integer conversion resulted in a change
> of
> > > sign
> > > > > ("if
> > > > > > > > > (Status
> > > > > > > > > > > > ==
> > > > > > > > > > > > > -1)")
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #  177: <entity> was declared but never
> referenced
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #  223: function <entity> declared implicitly
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #  144: a value of type <type> cannot be used to
> > > > > initialize
> > > > > > > an
> > > > > > > > > entity
> > > > > > > > > > > > of
> > > > > > > > > > > > > type
> > > > > > > > > > > > > > <type>
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #  513: a value of type <type> cannot be
> assigned
> > to
> > > an
> > > > > > > entity
> > > > > > > > > of
> > > > > > > > > > type
> > > > > > > > > > > > > <type>
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #  188: enumerated type mixed with another type
> > > (i.e.
> > > > > > > passing an
> > > > > > > > > > > > integer
> > > > > > > > > > > > > as an
> > > > > > > > > > > > > > enum without a cast)
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  # 1296: Extended constant initialiser used
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #  128: loop is not reachable - may be emitted
> > > > > > > inappropriately
> > > > > > > > > if
> > > > > > > > > > code
> > > > > > > > > > > > > follows
> > > > > > > > > > > > > > a conditional return
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #       from the function that evaluates to true
> > at
> > > > > > compile
> > > > > > > time
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #  546: transfer of control bypasses
> > initialization
> > > -
> > > > > may be
> > > > > > > > > emitted
> > > > > > > > > > > > > > inappropriately if the uninitialized
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #       variable is never referenced after the
> > jump
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #    1: ignore "#1-D: last line of file ends
> > without
> > > a
> > > > > > > newline"
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  # 3017: <entity> may be used before being set
> > (NOTE:
> > > > > This
> > > > > > > was
> > > > > > > > > > fixed in
> > > > > > > > > > > > > > OpenSSL 1.1 HEAD with
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  #       commit
> > > > > > d9b8b89bec4480de3a10bdaf9425db371c19145b, and
> > > > > > > > > > can
> > > > > > > > > > > be
> > > > > > > > > > > > > > dropped then.)
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse
> > > > > > -U_WIN32 -
> > > > > > > > > > U_WIN64
> > > > > > > > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -w -
> std=c99
> > > > > > -Wno-
> > > > > > > > > > > > > > error=uninitialized
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > diff --git
> > > > > a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > > > > > b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > > > > > index 3a2544ea5c..e8f73c4d10 100644
> > > > > > > > > > > > > > ---
> a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > > > > > +++
> b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > > > > > > > @@ -112,9 +112,6 @@ extern "C" {
> > > > > > > > > > > > > >  #ifndef OPENSSL_NO_ASAN
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  # define OPENSSL_NO_ASAN
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  #endif
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -#ifndef OPENSSL_NO_ASM
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -# define OPENSSL_NO_ASM
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -#endif
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  #ifndef OPENSSL_NO_ASYNC
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  # define OPENSSL_NO_ASYNC
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  #endif
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > diff --git
> a/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > > > > > > > new file mode 100644
> > > > > > > > > > > > > > index 0000000000..58cff16838
> > > > > > > > > > > > > > --- /dev/null
> > > > > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > > > > > > > @@ -0,0 +1,18 @@
> > > > > > > > > > > > > > +/** @file
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  OpenSSL Library API hooks.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +Copyright (c) 2020, Intel Corporation. All rights
> > > > > > > reserved.<BR>
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +**/
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#include <Uefi.h>
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +VOID *
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +__imp_RtlVirtualUnwind (
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  VOID *    Args
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  )
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +{
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  return NULL;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +}
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > diff --git
> > > > > > > a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > > > > > > >
> > b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > > > > > > > new file mode 100644
> > > > > > > > > > > > > > index 0000000000..ef20d2b84e
> > > > > > > > > > > > > > --- /dev/null
> > > > > > > > > > > > > > +++
> > > b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > > > > > > > @@ -0,0 +1,34 @@
> > > > > > > > > > > > > > +/** @file
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  Constructor to initialize CPUID data for OpenSSL
> > > > > assembly
> > > > > > > > > > operations.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +Copyright (c) 2020, Intel Corporation. All rights
> > > > > > > reserved.<BR>
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +**/
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#include <Uefi.h>
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +extern void OPENSSL_cpuid_setup (void);
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +/**
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  Constructor routine for OpensslLib.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  The constructor calls an internal OpenSSL
> function
> > > > > which
> > > > > > > fetches
> > > > > > > > > a
> > > > > > > > > > > > local
> > > > > > > > > > > > > copy
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  of the hardware capability flags, used to enable
> > > native
> > > > > > > crypto
> > > > > > > > > > > > > instructions.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  @param  None
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  @retval EFI_SUCCESS         The construction
> > > > > > succeeded.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +**/
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +EFI_STATUS
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +EFIAPI
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +OpensslLibConstructor (
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  VOID
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  )
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +{
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  OPENSSL_cpuid_setup ();
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +  return EFI_SUCCESS;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +}
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > diff --git
> > > a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > > > > > index 57ce195394..472f59bc8e 100755
> > > > > > > > > > > > > > --- a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > > > > > > > @@ -9,9 +9,63 @@
> > > > > > > > > > > > > >  # do not need to do this, since the results are
> > stored
> > > in
> > > > > the
> > > > > > > EDK2
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  # git repository for them.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  #
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +# Due to the script wrapping required to process
> the
> > > > > OpenSSL
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +# configuration data, each native architecture
> must
> > be
> > > > > > > processed
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +# individually by the maintainer (in addition to
> the
> > > > > standard
> > > > > > > > > version):
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#   ./process_files.pl
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#   ./process_files.pl X64
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#   ./process_files.pl [Arch]
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  use strict;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  use Cwd;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  use File::Copy;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +use File::Basename;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +use File::Path qw(make_path remove_tree);
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +use Text::Tabs;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +# OpenSSL perlasm generator script does not
> transfer
> > > the
> > > > > > > copyright
> > > > > > > > > > > > header
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +sub copy_license_header
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +{
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    my @args = split / /, shift;    #Separate args
> > by
> > > > > spaces
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    my $source = $args[1];          #Source file
> is
> > > > > second
> > > > > > > (after
> > > > > > > > > > > > "perl")
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    my $target = pop @args;         #Target file
> is
> > > > > always
> > > > > > > last
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    chop ($target);                 #Remove
> newline
> > > > > > char
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    my $temp_file_name = "license.tmp";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    open (my $source_file, "<" . $source) || die
> > > $source;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    open (my $target_file, "<" . $target) || die
> > > $target;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    open (my $temp_file, ">" . $temp_file_name) ||
> > die
> > > > > > > > > > $temp_file_name;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    #Add "generated file" warning
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    $source =~ s/^..//;             #Remove
> leading
> > > "./"
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    print ($temp_file "; WARNING: do not
> > edit!\r\n");
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    print ($temp_file "; Generated from
> > $source\r\n");
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    print ($temp_file ";\r\n");
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    #Copy source file header to temp file
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    while (my $line = <$source_file>) {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        next if ($line =~ /#!/);    #Ignore
> shebang
> > > line
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        $line =~ s/#/;/;            #Fix comment
> > > > > > character for
> > > > > > > > > assembly
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing
> > > > > > whitepsace,
> > > > > > > > > fixup
> > > > > > > > > > > > line
> > > > > > > > > > > > > endings
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        print ($temp_file $line);
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        last if ($line =~ /http/);  #Last line of
> > > > > copyright
> > > > > > > header
> > > > > > > > > > > > > contains a web link
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    print ($temp_file "\r\n");
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    #Retrieve generated assembly contents
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    while (my $line = <$target_file>) {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing
> > > > > > whitepsace,
> > > > > > > > > fixup
> > > > > > > > > > > > line
> > > > > > > > > > > > > endings
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        print ($temp_file expand ($line));
> > #expand()
> > > > > > replaces
> > > > > > > > > tabs with
> > > > > > > > > > > > > spaces
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    close ($source_file);
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    close ($target_file);
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    close ($temp_file);
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    move ($temp_file_name, $target) ||
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        die "Cannot replace \"" . $target . "\"!";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +}
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  #
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  # Find the openssl directory name for use lib. We
> > have
> > > to
> > > > > do
> > > > > > > this
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > @@ -21,10 +75,41 @@ use File::Copy;
> > > > > > > > > > > > > >  #
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  my $inf_file;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  my $OPENSSL_PATH;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +my $uefi_config;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +my $extension;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +my $arch;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  my @inf;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  BEGIN {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >      $inf_file = "OpensslLib.inf";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    $uefi_config = "UEFI";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    $arch = shift;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    if (defined $arch) {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        if (uc ($arch) eq "X64") {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +            $arch = "X64";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +            $inf_file = "OpensslLibX64.inf";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +            $uefi_config = "UEFI-x86_64";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +            $extension = "nasm";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        } else {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +            die "Unsupported architecture \"" .
> > $arch
> > > .
> > > > > > "\"!";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        if ($extension eq "nasm") {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +            if (`nasm -v 2>&1`) {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                #Presence of nasm executable will
> > > trigger
> > > > > > > > > inclusion of
> > > > > > > > > > > > AVX
> > > > > > > > > > > > > instructions
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                die "\nCannot run assembly
> > generators
> > > > > > with
> > > > > > > NASM in
> > > > > > > > > > > > > path!\n\n";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +            }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        # Prepare assembly folder
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        if (-d $arch) {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +            remove_tree ($arch, {safe => 1}) ||
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                die "Cannot clean assembly folder
> > \""
> > > .
> > > > > > $arch
> > > > > > > .
> > > > > > > > > "\"!";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        } else {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +            mkdir $arch ||
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                die "Cannot create assembly folder
> > \""
> > > .
> > > > > > $arch
> > > > > > > .
> > > > > > > > > "\"!";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >      # Read the contents of the inf file
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >      open( FD, "<" . $inf_file ) ||
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > @@ -47,9 +132,9 @@ BEGIN {
> > > > > > > > > > > > > >              # Configure UEFI
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >              system(
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >                  "./Configure",
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -                "UEFI",
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                "--config=../uefi-asm.conf",
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                "$uefi_config",
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >                  "no-afalgeng",
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -                "no-asm",
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >                  "no-async",
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >                  "no-autoerrinit",
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >                  "no-autoload-config",
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > @@ -129,23 +214,53 @@ BEGIN {
> > > > > > > > > > > > > >  # Retrieve file lists from OpenSSL configdata
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  #
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  use configdata qw/%unified_info/;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +use configdata qw/%config/;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +use configdata qw/%target/;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +# Collect build flags from configdata
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +my $flags = "";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +foreach my $f (@{$config{lib_defines}}) {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    $flags .= " -D$f";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +}
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  my @cryptofilelist = ();
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  my @sslfilelist = ();
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +my @asmfilelist = ();
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +my @asmbuild = ();
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  foreach my $product ((@{$unified_info{libraries}},
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >                        @{$unified_info{engines}}))
> {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >      foreach my $o (@{$unified_info{sources}-
> > > >{$product}})
> > > > > > {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >          foreach my $s (@{$unified_info{sources}-
> > > >{$o}}) {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -            next if ($unified_info{generate}-
> >{$s});
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -            next if $s =~ "crypto/bio/b_print.c";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >              # No need to add unused files in UEFI.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >              # So it can reduce porting time,
> compile
> > > > > time,
> > > > > > > library
> > > > > > > > > size.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +            next if $s =~ "crypto/bio/b_print.c";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >              next if $s =~
> "crypto/rand/randfile.c";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >              next if $s =~ "crypto/store/";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >              next if $s =~ "crypto/err/err_all.c";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >              next if $s =~ "crypto/aes/aes_ecb.c";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +            if ($unified_info{generate}->{$s}) {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                if (defined $arch) {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                    my $buildstring = "perl";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                    foreach my $arg
> > > > > > > (@{$unified_info{generate}-
> > > > > > > > > >{$s}}) {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                        if ($arg =~ ".pl") {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                            $buildstring .=
> > > > > > " ./openssl/$arg";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                        } elsif ($arg =~
> > > > > > "PERLASM_SCHEME") {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                            $buildstring .= "
> > > > > > > > > $target{perlasm_scheme}";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                        } elsif ($arg =~
> > "LIB_CFLAGS")
> > > {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                            $buildstring .=
> > "$flags";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                        }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                    }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                    ($s, my $path, undef) =
> > > fileparse($s,
> > > > > > > > > qr/\.[^.]*/);
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                    $buildstring .= "
> > > > > > > ./$arch/$path$s.$extension";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                    make_path ("./$arch/$path");
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                    push @asmbuild,
> > "$buildstring\n";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                    push @asmfilelist, "
> > > > > > > > > $arch/$path$s.$extension\r\n";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +                next;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +            }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >              if ($product =~ "libssl") {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >                  push @sslfilelist, '
> > > $(OPENSSL_PATH)/' .
> > > > > > $s .
> > > > > > > > > "\r\n";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >                  next;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > @@ -183,15 +298,31 @@ foreach (@headers){
> > > > > > > > > > > > > >  }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +# Generate assembly files
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +if (@asmbuild) {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    print "\n--> Generating assembly files ... ";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    foreach my $buildstring (@asmbuild) {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        system ("$buildstring");
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        copy_license_header ($buildstring);
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    print "Done!";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +}
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  #
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  # Update OpensslLib.inf with autogenerated file
> list
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  #
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  my @new_inf = ();
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  my $subbing = 0;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -print "\n--> Updating OpensslLib.inf ... ";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +print "\n--> Updating $inf_file ... ";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  foreach (@inf) {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    if ($_ =~ "DEFINE OPENSSL_FLAGS_CONFIG") {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        push @new_inf, "  DEFINE
> > > > > > OPENSSL_FLAGS_CONFIG    =" .
> > > > > > > > > $flags
> > > > > > > > > > .
> > > > > > > > > > > > > "\r\n";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        next;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >      if ( $_ =~ "# Autogenerated files list starts
> > > here" )
> > > > > {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -        push @new_inf, $_, @cryptofilelist,
> > > @sslfilelist;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        push @new_inf, $_, @asmfilelist,
> > > @cryptofilelist,
> > > > > > > > > @sslfilelist;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >          $subbing = 1;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >          next;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >      }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > @@ -216,49 +347,51 @@ rename( $new_inf_file,
> > $inf_file
> > > )
> > > > > ||
> > > > > > > > > > > > > >      die "rename $inf_file";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  print "Done!";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -#
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -# Update OpensslLibCrypto.inf with auto-generated
> > file
> > > > > list
> > > > > > > (no
> > > > > > > > > libssl)
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -#
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -$inf_file = "OpensslLibCrypto.inf";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -# Read the contents of the inf file
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -@inf = ();
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -@new_inf = ();
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -open( FD, "<" . $inf_file ) ||
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -    die "Cannot open \"" . $inf_file . "\"!";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -@inf = (<FD>);
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -close(FD) ||
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -    die "Cannot close \"" . $inf_file . "\"!";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +if (!defined $arch) {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    #
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    # Update OpensslLibCrypto.inf with auto-
> > generated
> > > > > file
> > > > > > > list
> > > > > > > > > (no
> > > > > > > > > > > > > libssl)
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    #
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    $inf_file = "OpensslLibCrypto.inf";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -$subbing = 0;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -foreach (@inf) {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -    if ( $_ =~ "# Autogenerated files list starts
> > > here" )
> > > > > {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -        push @new_inf, $_, @cryptofilelist;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -        $subbing = 1;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -        next;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -    }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -    if ( $_ =~ "# Autogenerated files list ends
> > here"
> > > ) {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -        push @new_inf, $_;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -        $subbing = 0;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -        next;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    # Read the contents of the inf file
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    @inf = ();
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    @new_inf = ();
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    open( FD, "<" . $inf_file ) ||
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        die "Cannot open \"" . $inf_file . "\"!";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    @inf = (<FD>);
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    close(FD) ||
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        die "Cannot close \"" . $inf_file . "\"!";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    $subbing = 0;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    print "\n--> Updating OpensslLibCrypto.inf ...
> > ";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    foreach (@inf) {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        if ( $_ =~ "# Autogenerated files list
> > starts
> > > > > here" )
> > > > > > > {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +            push @new_inf, $_, @cryptofilelist;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +            $subbing = 1;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +            next;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        if ( $_ =~ "# Autogenerated files list
> ends
> > > here"
> > > > > ) {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +            push @new_inf, $_;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +            $subbing = 0;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +            next;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        push @new_inf, $_
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +            unless ($subbing);
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >      }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -    push @new_inf, $_
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -        unless ($subbing);
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    $new_inf_file = $inf_file . ".new";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    open( FD, ">" . $new_inf_file ) ||
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        die $new_inf_file;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    print( FD @new_inf ) ||
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        die $new_inf_file;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    close(FD) ||
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        die $new_inf_file;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    rename( $new_inf_file, $inf_file ) ||
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        die "rename $inf_file";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    print "Done!";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -$new_inf_file = $inf_file . ".new";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -open( FD, ">" . $new_inf_file ) ||
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -    die $new_inf_file;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -print( FD @new_inf ) ||
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -    die $new_inf_file;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -close(FD) ||
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -    die $new_inf_file;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -rename( $new_inf_file, $inf_file ) ||
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -    die "rename $inf_file";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -print "Done!";
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > -
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  #
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  # Copy opensslconf.h and dso_conf.h generated from
> > > > > > OpenSSL
> > > > > > > > > > > Configuration
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  #
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/uefi-
> > asm.conf
> > > > > > > > > > > > > > b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > > > > > > > new file mode 100644
> > > > > > > > > > > > > > index 0000000000..55eedbf3ba
> > > > > > > > > > > > > > --- /dev/null
> > > > > > > > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > > > > > > > @@ -0,0 +1,15 @@
> > > > > > > > > > > > > > +## -*- mode: perl; -*-
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +## UEFI assembly openssl configuration targets.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +my %targets = (
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +#### UEFI
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    "UEFI-x86_64" => {
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        perlasm_scheme  => "nasm",
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        # inherit_from    => [ "UEFI",
> > > > > > asm("x86_64_asm") ],
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        inherit_from    => [ "UEFI" ],
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        cpuid_asm_src   => "x86_64cpuid.s",
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        aes_asm_src     => "aes_core.c aes_cbc.c
> > > vpaes-
> > > > > > > x86_64.s
> > > > > > > > > aesni-
> > > > > > > > > > > > > x86_64.s
> > > > > > > > > > > > > > aesni-sha1-x86_64.s aesni-sha256-x86_64.s
> > > > > > aesni-mb-x86_64.s",
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        sha1_asm_src    => "sha1-x86_64.s
> > > > > > sha256-x86_64.s
> > > > > > > sha512-
> > > > > > > > > > > > x86_64.s
> > > > > > > > > > > > > > sha1-mb-x86_64.s sha256-mb-x86_64.s",
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +        modes_asm_src   => "ghash-x86_64.s",
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +    },
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > +);
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > --
> > > > > > > > > > > > > > 2.28.0.windows.1
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> >
> >
> >
> >
> >
> 
> 
> 
> 
> 


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

* Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
  2020-09-23  2:35               ` Yao, Jiewen
  2020-09-25  0:28                 ` Zurcher, Christopher J
@ 2020-09-29 21:08                 ` Zurcher, Christopher J
  2020-10-01 12:58                   ` Laszlo Ersek
  1 sibling, 1 reply; 42+ messages in thread
From: Zurcher, Christopher J @ 2020-09-29 21:08 UTC (permalink / raw)
  To: Yao, Jiewen, Jiang, Guomin, devel@edk2.groups.io
  Cc: Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel

The GCC build fails with this error:

`OPENSSL_ia32cap_P' referenced in section `.text.OPENSSL_cpuid_setup' of /tmp/ccIIRAYs.ltrans20.ltrans.o: defined in discarded section `COMMON' of /mnt/c/mssql/tiano/Build/OvmfX64/DEBUG_GCC5/X64/CryptoPkg/Library/OpensslLib/OpensslLibX64/OUTPUT/OpensslLibX64.lib(x86_64cpuid.obj)

The code in question is here:
> section .CRT$XCU rdata align=8
>                 DQ      OPENSSL_cpuid_setup
>
> common  OPENSSL_ia32cap_P 16

I have tried disabling LTO with -fno-lto and setting -O0 but I still get this error. At this point I don't know what else to try.

Thanks,
Christopher Zurcher

> -----Original Message-----
> From: Yao, Jiewen <jiewen.yao@intel.com>
> Sent: Tuesday, September 22, 2020 19:35
> To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>; Jiang, Guomin
> <guomin.jiang@intel.com>; devel@edk2.groups.io
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> instruction support for X64
> 
> For GCC, please refer to
> https://github.com/tianocore/tianocore.github.io/wiki/Using-EDK-II-with-
> Native-GCC
> 
> For LLVM, please refer to
> https://github.com/tianocore/tianocore.github.io/wiki/CLANG9-Tools-Chain
> 
> Thank you
> Yao Jiewen
> 
> > -----Original Message-----
> > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > Sent: Tuesday, September 22, 2020 11:22 PM
> > To: Jiang, Guomin <guomin.jiang@intel.com>; devel@edk2.groups.io; Yao,
> > Jiewen <jiewen.yao@intel.com>
> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>;
> > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > instruction support for X64
> >
> > I have unit tested SHA1, SHA512, and AES as well.
> > I do not have the build environment available to test GCC and LLVM.
> >
> > --
> > Christopher Zurcher
> >
> > > -----Original Message-----
> > > From: Jiang, Guomin <guomin.jiang@intel.com>
> > > Sent: Wednesday, September 16, 2020 02:17
> > > To: devel@edk2.groups.io; Yao, Jiewen <jiewen.yao@intel.com>; Zurcher,
> > > Christopher J <christopher.j.zurcher@intel.com>
> > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > <xiaoyux.lu@intel.com>;
> > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > instruction support for X64
> > >
> > > Hi Zurcher,
> > >
> > > > [Jiewen] Since you also add other sha (sha1, sha512) and aesni, I think
> > > those
> > > > need unit test for them too.
> > >
> > > Can you update the status about it?
> > >
> > > > [Jiewen] I think we need support build with GCC and LLVM, and with X64.
> > >
> > > It is better to support the GCC and LLVM.
> > >
> > > Thanks
> > > Guomin
> > >
> > > > -----Original Message-----
> > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Yao,
> > > > Jiewen
> > > > Sent: Tuesday, August 25, 2020 7:36 AM
> > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > > > devel@edk2.groups.io
> > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > <xiaoyux.lu@intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> native
> > > > instruction support for X64
> > > >
> > > > Below:
> > > >
> > > > > -----Original Message-----
> > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > > Sent: Tuesday, August 25, 2020 5:26 AM
> > > > > To: devel@edk2.groups.io; Zurcher, Christopher J
> > > > > <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>
> > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > <xiaoyux.lu@intel.com>;
> > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > Subject: RE: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> native
> > > > > instruction support for X64
> > > > >
> > > > > 1) I have confirmed that the ApiHooks.c file is still required even
> > > without
> > > > the AVX
> > > > > instructions included. The x86_64 assembly files in OpenSSL set a
> flag
> > > called
> > > > > $win64 and automatically include calls to the RtlVirtualUnwind
> function
> > > if
> > > > NASM
> > > > > is selected as the assembler scheme.
> > > > >
> > > > > https://docs.microsoft.com/en-us/windows/win32/api/winnt/nf-winnt-
> > > > > rtlvirtualunwind
> > > > >
> > > > > I have submitted an issue against OpenSSL since I don't think using
> the
> > > > NASM
> > > > > assembler should force the inclusion of Windows-specific API hooks,
> but
> > > > that
> > > > > change cannot be made in OpenSSL 1.1.1 and we will have to wait for
> > > > OpenSSL 3
> > > > > or later to remove the stub function.
> > > > >
> > > > > https://github.com/openssl/openssl/issues/12712
> > > > >
> > > >
> > > > [Jiewen] Thanks.
> > > >
> > > > > 2) So far I have only built with VS.
> > > > >
> > > >
> > > > [Jiewen] I think we need support build with GCC and LLVM, and with X64.
> > > >
> > > >
> > > > > 3) The X64 SHA256 implementation was successfully exercised across a
> > > > large
> > > > > number of devices in a production environment as a verification step
> in a
> > > > multi-
> > > > > GB data transfer scenario.
> > > > >
> > > >
> > > > [Jiewen] Since you also add other sha (sha1, sha512) and aesni, I think
> > > those
> > > > need unit test for them too.
> > > >
> > > >
> > > > > Thanks,
> > > > > Christopher Zurcher
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> > > > Zurcher,
> > > > > > Christopher J
> > > > > > Sent: Tuesday, August 18, 2020 15:50
> > > > > > To: Yao, Jiewen <jiewen.yao@intel.com>; devel@edk2.groups.io
> > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > <xiaoyux.lu@intel.com>;
> > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add
> > > > native
> > > > > > instruction support for X64
> > > > > >
> > > > > > After further review, the ApiHooks.c file may no longer be needed
> since
> > > > we
> > > > > > are no longer including the AVX instructions. I will look over the
> > > > > > dependencies and send a new patch set if I can eliminate the API
> hooks
> > > > file.
> > > > > >
> > > > > > Thanks,
> > > > > > Christopher Zurcher
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: Yao, Jiewen <jiewen.yao@intel.com>
> > > > > > > Sent: Thursday, August 13, 2020 08:04
> > > > > > > To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> > > > > > > devel@edk2.groups.io
> > > > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> > > > > > <xiaoyux.lu@intel.com>;
> > > > > > > Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > Subject: RE: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > > instruction
> > > > > > > support for X64
> > > > > > >
> > > > > > > Hi Christopher
> > > > > > > Thanks.
> > > > > > >
> > > > > > > 1) Would you please help me understand more on "ApiHooks.c
> contains
> > > > a
> > > > > stub
> > > > > > > function for a Windows API call" ?
> > > > > > > Why we need this?
> > > > > > > If it is compiler specific in openssl, should we submit patch to
> > > openssl to
> > > > > > > exclude this with OPENSSL_SYS_UEFI? That should be a cleaner
> solution
> > > > for
> > > > > > > UEFI.
> > > > > > >
> > > > > > > 2) Would you please describe what compiler you have tried? VS?
> GCC?
> > > > LLVM?
> > > > > > >
> > > > > > > 3) Would you please describe what unit test you have done?
> > > > > > >
> > > > > > > Thank you
> > > > > > > Yao Jiewen
> > > > > > >
> > > > > > >
> > > > > > > > -----Original Message-----
> > > > > > > > From: Zurcher, Christopher J <christopher.j.zurcher@intel.com>
> > > > > > > > Sent: Tuesday, August 4, 2020 8:24 AM
> > > > > > > > To: devel@edk2.groups.io
> > > > > > > > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Wang, Jian J
> > > > > > > <jian.j.wang@intel.com>;
> > > > > > > > Lu, XiaoyuX <xiaoyux.lu@intel.com>; Ard Biesheuvel
> > > > > > > <ard.biesheuvel@linaro.org>
> > > > > > > > Subject: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> > > instruction
> > > > > > > support
> > > > > > > > for X64
> > > > > > > >
> > > > > > > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> > > > > > > >
> > > > > > > > Adding OpensslLibX64.inf and modifying process_files.pl to
> process
> > > > this
> > > > > > > > file and generate the necessary assembly files.
> > > > > > > > ApiHooks.c contains a stub function for a Windows API call.
> > > > > > > > uefi-asm.conf contains the limited assembly configurations for
> > > > OpenSSL.
> > > > > > > >
> > > > > > > > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > > > > > > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > > > > > > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > > > > > > > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > > > > > > Signed-off-by: Christopher J Zurcher
> > > > <christopher.j.zurcher@intel.com>
> > > > > > > > ---
> > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLib.inf          |   2 +-
> > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf    |   2 +-
> > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibX64.inf       | 656
> > > > > > > > ++++++++++++++++++++
> > > > > > > >  CryptoPkg/Library/Include/openssl/opensslconf.h      |   3 -
> > > > > > > >  CryptoPkg/Library/OpensslLib/ApiHooks.c              |  18 +
> > > > > > > >  CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c |  34 +
> > > > > > > >  CryptoPkg/Library/OpensslLib/process_files.pl        | 223
> +++++--
> > > > > > > >  CryptoPkg/Library/OpensslLib/uefi-asm.conf           |  15 +
> > > > > > > >  8 files changed, 903 insertions(+), 50 deletions(-)
> > > > > > > >
> > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > index dbbe5386a1..bd62d86936 100644
> > > > > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> > > > > > > > @@ -16,7 +16,7 @@
> > > > > > > >    VERSION_STRING                 = 1.0
> > > > > > > >
> > > > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > > > >
> > > > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > > > >
> > > > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > >
> > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > > > DOPENSSL_NO_ASM
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >  #
> > > > > > > >
> > > > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
> > > > > > > >
> > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > index 616ccd9f62..2b7324a990 100644
> > > > > > > > --- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> > > > > > > > @@ -16,7 +16,7 @@
> > > > > > > >    VERSION_STRING                 = 1.0
> > > > > > > >
> > > > > > > >    LIBRARY_CLASS                  = OpensslLib
> > > > > > > >
> > > > > > > >    DEFINE OPENSSL_PATH            = openssl
> > > > > > > >
> > > > > > > > -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > >
> > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > D_CRT_NONSTDC_NO_DEPRECATE -
> > > > > > > > DOPENSSL_NO_ASM
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >  #
> > > > > > > >
> > > > > > > >  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
> > > > > > > >
> > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > new file mode 100644
> > > > > > > > index 0000000000..825eea0254
> > > > > > > > --- /dev/null
> > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> > > > > > > > @@ -0,0 +1,656 @@
> > > > > > > > +## @file
> > > > > > > >
> > > > > > > > +#  This module provides OpenSSL Library implementation.
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +#  Copyright (c) 2010 - 2020, Intel Corporation. All rights
> > > > > > reserved.<BR>
> > > > > > > >
> > > > > > > > +#  (C) Copyright 2020 Hewlett Packard Enterprise Development
> > > > LP<BR>
> > > > > > > >
> > > > > > > > +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +##
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +[Defines]
> > > > > > > >
> > > > > > > > +  INF_VERSION                    = 0x00010005
> > > > > > > >
> > > > > > > > +  BASE_NAME                      = OpensslLibX64
> > > > > > > >
> > > > > > > > +  MODULE_UNI_FILE                = OpensslLib.uni
> > > > > > > >
> > > > > > > > +  FILE_GUID                      = 18125E50-0117-4DD0-BE54-
> > > 4784AD995FEF
> > > > > > > >
> > > > > > > > +  MODULE_TYPE                    = BASE
> > > > > > > >
> > > > > > > > +  VERSION_STRING                 = 1.0
> > > > > > > >
> > > > > > > > +  LIBRARY_CLASS                  = OpensslLib
> > > > > > > >
> > > > > > > > +  DEFINE OPENSSL_PATH            = openssl
> > > > > > > >
> > > > > > > > +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -
> > > > > DOPENSSL_SMALL_FOOTPRINT
> > > > > > > > -D_CRT_SECURE_NO_DEPRECATE -
> > > > D_CRT_NONSTDC_NO_DEPRECATE
> > > > > > > >
> > > > > > > > +  DEFINE OPENSSL_FLAGS_CONFIG    = -DOPENSSL_CPUID_OBJ -
> > > > > DSHA1_ASM -
> > > > > > > > DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -
> > > > > DGHASH_ASM
> > > > > > > >
> > > > > > > > +  CONSTRUCTOR                    = OpensslLibConstructor
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +#  VALID_ARCHITECTURES           = X64
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +[Sources]
> > > > > > > >
> > > > > > > > +  OpensslLibConstructor.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/e_os.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ms/uplink.h
> > > > > > > >
> > > > > > > > +# Autogenerated files list starts here
> > > > > > > >
> > > > > > > > +  X64/crypto/aes/aesni-mb-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/aes/aesni-sha1-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/aes/aesni-sha256-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/aes/aesni-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/aes/vpaes-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/modes/ghash-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/sha/sha1-mb-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/sha/sha1-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/sha/sha256-mb-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/sha/sha256-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/sha/sha512-x86_64.nasm
> > > > > > > >
> > > > > > > > +  X64/crypto/x86_64cpuid.nasm
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_core.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ige.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_misc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/aria/aria.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_digest.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_dup.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_gentm.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_int.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_object.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_octet.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_print.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_sign.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strex.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_strnid.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_time.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_type.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utctm.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_utf8.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/a_verify.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_par.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mime.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_moid.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn_pack.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_int.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/f_string.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/n_pkey.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/nsseq.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_bitst.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_pkey.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/t_spki.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_new.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_algor.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_bignum.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_info.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_int64.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_long.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_pkey.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_sig.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_spki.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/x_val.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_wait.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_addr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_dump.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/b_sock2.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_buff.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_nbio.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bf_null.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_cb.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_meth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_acpt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_bio.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_conn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_dgram.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_fd.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_file.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_log.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_mem.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_null.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bss_sock.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_add.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_asm.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_blind.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_const.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_ctx.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_depr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_dh.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_div.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_exp2.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gcd.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_intern.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_kron.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mod.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mont.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mpi.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_mul.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_nist.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_print.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_rand.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_recp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_shift.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_srp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_word.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_x931p.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buf_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/buffer/buffer.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/cmac/cmac.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/c_zlib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_api.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mall.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_mod.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_sap.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_ssl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/cpt_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/cryptlib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ctype.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/cversion.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_check.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_depr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_gen.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_kdf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_key.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_meth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_prn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_vms.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_win32.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ebcdic.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/err/err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/err/err_prn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_enc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_md.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/bio_ok.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_allc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/c_alld.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/digest.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_aria.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_bf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_camellia.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_cast.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_des3.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_idea.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_null.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_old.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc2.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_rc5.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_seed.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_sm4.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/encode.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_cnf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_enc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_key.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pbe.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_pkey.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md2.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md4.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_mdc2.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_null.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_ripemd.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sha3.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_sigver.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/m_wp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/names.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_dec.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_enc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_open.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_seal.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_sign.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/p_verify.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ex_data.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/getenv.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/init.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/hkdf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/kdf_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/scrypt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lh_stats.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_one.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/mem.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/mem_dbg.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/mem_sec.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cbc128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ccm128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cfb128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ctr128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/cts128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/gcm128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ocb128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/ofb128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/wrap128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/xts128.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/o_dir.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/o_fips.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/o_fopen.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/o_init.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/o_str.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/o_time.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/o_names.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_all.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_info.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_oth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pk8.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_pkey.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_sign.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_x509.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pem_xaux.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pem/pvkfmt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/drbg_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_egd.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_unix.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_vms.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_win.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_none.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/keccak1600.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1_one.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha256.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha512.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sm4/sm4.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/stack/stack.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_none.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_pthread.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/threads_win.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/txt_db/txt_db.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_null.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_util.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/uid.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_dir.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/by_file.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_crl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_req.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/t_x509.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_att.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_cmp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_d2.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_def.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_ext.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_lu.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_meth.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_obj.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_r2x.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_req.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_set.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_trs.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_txt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_v3.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vfy.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_vpm.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509cset.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509name.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509rset.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509spki.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509type.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_all.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_attrib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_crl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_exten.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_name.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_pubkey.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_req.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x_x509a.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_info.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_int.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/arm_arch.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/mips_arch.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ppc_arch.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/s390x_arch.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sparc_arch.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/vms_rms.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/aes/aes_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/charmap.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/standard_methods.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/async_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_null.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_posix.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/async/arch/async_win.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bio/bio_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/bn_prime.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/comp/comp_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_def.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/conf/conf_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dh/dh_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/dso/dso_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/evp/evp_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/md5/md5_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/modes/modes_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_dat.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/objects/obj_xref.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rand/rand_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sha/sha_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/store/store_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/ui/ui_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509/x509_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/bio_ssl.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_msg.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/d1_srtp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/methods.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/packet.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/pqueue.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_cbc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_enc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/s3_msg.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_asn1.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_ciph.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_conf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_err.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_init.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_mcnf.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_rsa.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_sess.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_stat.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_txt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_utst.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_cust.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_clnt.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_dtls.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_srvr.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_enc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_lib.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/t1_trce.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/tls13_enc.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/tls_srp.c
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/packet_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_cert_table.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/ssl_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/record/record.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/record/record_local.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem.h
> > > > > > > >
> > > > > > > > +  $(OPENSSL_PATH)/ssl/statem/statem_local.h
> > > > > > > >
> > > > > > > > +# Autogenerated files list ends here
> > > > > > > >
> > > > > > > > +  buildinf.h
> > > > > > > >
> > > > > > > > +  rand_pool_noise.h
> > > > > > > >
> > > > > > > > +  ossl_store.c
> > > > > > > >
> > > > > > > > +  rand_pool.c
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +[Sources.X64]
> > > > > > > >
> > > > > > > > +  rand_pool_noise_tsc.c
> > > > > > > >
> > > > > > > > +  ApiHooks.c
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +[Packages]
> > > > > > > >
> > > > > > > > +  MdePkg/MdePkg.dec
> > > > > > > >
> > > > > > > > +  CryptoPkg/CryptoPkg.dec
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +[LibraryClasses]
> > > > > > > >
> > > > > > > > +  BaseLib
> > > > > > > >
> > > > > > > > +  DebugLib
> > > > > > > >
> > > > > > > > +  TimerLib
> > > > > > > >
> > > > > > > > +  PrintLib
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +[BuildOptions]
> > > > > > > >
> > > > > > > > +  #
> > > > > > > >
> > > > > > > > +  # Disables the following Visual Studio compiler warnings
> brought
> > > by
> > > > > > > openssl
> > > > > > > > source,
> > > > > > > >
> > > > > > > > +  # so we do not break the build with /WX option:
> > > > > > > >
> > > > > > > > +  #   C4090: 'function' : different 'const' qualifiers
> > > > > > > >
> > > > > > > > +  #   C4132: 'object' : const object should be initialized
> > > (tls13_enc.c)
> > > > > > > >
> > > > > > > > +  #   C4210: nonstandard extension used: function given file
> scope
> > > > > > > >
> > > > > > > > +  #   C4244: conversion from type1 to type2, possible loss of
> data
> > > > > > > >
> > > > > > > > +  #   C4245: conversion from type1 to type2, signed/unsigned
> > > > mismatch
> > > > > > > >
> > > > > > > > +  #   C4267: conversion from size_t to type, possible loss of
> data
> > > > > > > >
> > > > > > > > +  #   C4306: 'identifier' : conversion from 'type1' to 'type2'
> of
> > > > > > greater
> > > > > > > size
> > > > > > > >
> > > > > > > > +  #   C4310: cast truncates constant value
> > > > > > > >
> > > > > > > > +  #   C4389: 'operator' : signed/unsigned mismatch (xxxx)
> > > > > > > >
> > > > > > > > +  #   C4700: uninitialized local variable 'name' used.
> > > (conf_sap.c(71))
> > > > > > > >
> > > > > > > > +  #   C4702: unreachable code
> > > > > > > >
> > > > > > > > +  #   C4706: assignment within conditional expression
> > > > > > > >
> > > > > > > > +  #   C4819: The file contains a character that cannot be
> > > represented
> > > > in
> > > > > > > the
> > > > > > > > current code page
> > > > > > > >
> > > > > > > > +  #
> > > > > > > >
> > > > > > > > +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER
> > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132
> > > > > /wd4210
> > > > > > > > /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700 /wd4389
> > > > /wd4702
> > > > > > > > /wd4706 /wd4819
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -
> > > > > U__ICC
> > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +  #
> > > > > > > >
> > > > > > > > +  # Suppress the following build warnings in openssl so we
> don't
> > > > break
> > > > > > the
> > > > > > > build
> > > > > > > > with -Werror
> > > > > > > >
> > > > > > > > +  #   -Werror=maybe-uninitialized: there exist some other
> paths
> > > for
> > > > > > which
> > > > > > > the
> > > > > > > > variable is not initialized.
> > > > > > > >
> > > > > > > > +  #   -Werror=format: Check calls to printf and scanf, etc.,
> to
> > > make
> > > > > > sure
> > > > > > > that the
> > > > > > > > arguments supplied have
> > > > > > > >
> > > > > > > > +  #                   types appropriate to the format string
> > > specified.
> > > > > > > >
> > > > > > > > +  #   -Werror=unused-but-set-variable: Warn whenever a local
> > > > variable is
> > > > > > > > assigned to, but otherwise unused (aside from its declaration).
> > > > > > > >
> > > > > > > > +  #
> > > > > > > >
> > > > > > > > +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64
> > > > $(OPENSSL_FLAGS)
> > > > > > > > $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-
> > > > > > > > error=format -Wno-format -Wno-error=unused-but-set-variable -
> > > > > > > > DNO_MSABI_VA_FUNCS
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +  # suppress the following warnings in openssl so we don't
> break
> > > the
> > > > > > build
> > > > > > > with
> > > > > > > > warnings-as-errors:
> > > > > > > >
> > > > > > > > +  # 1295: Deprecated declaration <entity> - give arg types
> > > > > > > >
> > > > > > > > +  #  550: <entity> was set but never used
> > > > > > > >
> > > > > > > > +  # 1293: assignment in condition
> > > > > > > >
> > > > > > > > +  #  111: statement is unreachable (invariably "break;" after
> > > "return
> > > > > > X;"
> > > > > > > in case
> > > > > > > > statement)
> > > > > > > >
> > > > > > > > +  #   68: integer conversion resulted in a change of sign ("if
> > > (Status
> > > > > > ==
> > > > > > > -1)")
> > > > > > > >
> > > > > > > > +  #  177: <entity> was declared but never referenced
> > > > > > > >
> > > > > > > > +  #  223: function <entity> declared implicitly
> > > > > > > >
> > > > > > > > +  #  144: a value of type <type> cannot be used to initialize
> an
> > > entity
> > > > > > of
> > > > > > > type
> > > > > > > > <type>
> > > > > > > >
> > > > > > > > +  #  513: a value of type <type> cannot be assigned to an
> entity
> > > of
> > > > type
> > > > > > > <type>
> > > > > > > >
> > > > > > > > +  #  188: enumerated type mixed with another type (i.e.
> passing an
> > > > > > integer
> > > > > > > as an
> > > > > > > > enum without a cast)
> > > > > > > >
> > > > > > > > +  # 1296: Extended constant initialiser used
> > > > > > > >
> > > > > > > > +  #  128: loop is not reachable - may be emitted
> inappropriately
> > > if
> > > > code
> > > > > > > follows
> > > > > > > > a conditional return
> > > > > > > >
> > > > > > > > +  #       from the function that evaluates to true at compile
> time
> > > > > > > >
> > > > > > > > +  #  546: transfer of control bypasses initialization - may be
> > > emitted
> > > > > > > > inappropriately if the uninitialized
> > > > > > > >
> > > > > > > > +  #       variable is never referenced after the jump
> > > > > > > >
> > > > > > > > +  #    1: ignore "#1-D: last line of file ends without a
> newline"
> > > > > > > >
> > > > > > > > +  # 3017: <entity> may be used before being set (NOTE: This
> was
> > > > fixed in
> > > > > > > > OpenSSL 1.1 HEAD with
> > > > > > > >
> > > > > > > > +  #       commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and
> > > > can
> > > > > be
> > > > > > > > dropped then.)
> > > > > > > >
> > > > > > > > +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -
> > > > U_WIN64
> > > > > > > > $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-
> > > > > > > > error=uninitialized
> > > > > > > >
> > > > > > > > diff --git a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > index 3a2544ea5c..e8f73c4d10 100644
> > > > > > > > --- a/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > +++ b/CryptoPkg/Library/Include/openssl/opensslconf.h
> > > > > > > > @@ -112,9 +112,6 @@ extern "C" {
> > > > > > > >  #ifndef OPENSSL_NO_ASAN
> > > > > > > >
> > > > > > > >  # define OPENSSL_NO_ASAN
> > > > > > > >
> > > > > > > >  #endif
> > > > > > > >
> > > > > > > > -#ifndef OPENSSL_NO_ASM
> > > > > > > >
> > > > > > > > -# define OPENSSL_NO_ASM
> > > > > > > >
> > > > > > > > -#endif
> > > > > > > >
> > > > > > > >  #ifndef OPENSSL_NO_ASYNC
> > > > > > > >
> > > > > > > >  # define OPENSSL_NO_ASYNC
> > > > > > > >
> > > > > > > >  #endif
> > > > > > > >
> > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > new file mode 100644
> > > > > > > > index 0000000000..58cff16838
> > > > > > > > --- /dev/null
> > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/ApiHooks.c
> > > > > > > > @@ -0,0 +1,18 @@
> > > > > > > > +/** @file
> > > > > > > >
> > > > > > > > +  OpenSSL Library API hooks.
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +Copyright (c) 2020, Intel Corporation. All rights
> reserved.<BR>
> > > > > > > >
> > > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +**/
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +#include <Uefi.h>
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +VOID *
> > > > > > > >
> > > > > > > > +__imp_RtlVirtualUnwind (
> > > > > > > >
> > > > > > > > +  VOID *    Args
> > > > > > > >
> > > > > > > > +  )
> > > > > > > >
> > > > > > > > +{
> > > > > > > >
> > > > > > > > +  return NULL;
> > > > > > > >
> > > > > > > > +}
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > diff --git
> a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > new file mode 100644
> > > > > > > > index 0000000000..ef20d2b84e
> > > > > > > > --- /dev/null
> > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> > > > > > > > @@ -0,0 +1,34 @@
> > > > > > > > +/** @file
> > > > > > > >
> > > > > > > > +  Constructor to initialize CPUID data for OpenSSL assembly
> > > > operations.
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +Copyright (c) 2020, Intel Corporation. All rights
> reserved.<BR>
> > > > > > > >
> > > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +**/
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +#include <Uefi.h>
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +extern void OPENSSL_cpuid_setup (void);
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +/**
> > > > > > > >
> > > > > > > > +  Constructor routine for OpensslLib.
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +  The constructor calls an internal OpenSSL function which
> fetches
> > > a
> > > > > > local
> > > > > > > copy
> > > > > > > >
> > > > > > > > +  of the hardware capability flags, used to enable native
> crypto
> > > > > > > instructions.
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +  @param  None
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +  @retval EFI_SUCCESS         The construction succeeded.
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +**/
> > > > > > > >
> > > > > > > > +EFI_STATUS
> > > > > > > >
> > > > > > > > +EFIAPI
> > > > > > > >
> > > > > > > > +OpensslLibConstructor (
> > > > > > > >
> > > > > > > > +  VOID
> > > > > > > >
> > > > > > > > +  )
> > > > > > > >
> > > > > > > > +{
> > > > > > > >
> > > > > > > > +  OPENSSL_cpuid_setup ();
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +  return EFI_SUCCESS;
> > > > > > > >
> > > > > > > > +}
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > index 57ce195394..472f59bc8e 100755
> > > > > > > > --- a/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/process_files.pl
> > > > > > > > @@ -9,9 +9,63 @@
> > > > > > > >  # do not need to do this, since the results are stored in the
> EDK2
> > > > > > > >
> > > > > > > >  # git repository for them.
> > > > > > > >
> > > > > > > >  #
> > > > > > > >
> > > > > > > > +# Due to the script wrapping required to process the OpenSSL
> > > > > > > >
> > > > > > > > +# configuration data, each native architecture must be
> processed
> > > > > > > >
> > > > > > > > +# individually by the maintainer (in addition to the standard
> > > version):
> > > > > > > >
> > > > > > > > +#   ./process_files.pl
> > > > > > > >
> > > > > > > > +#   ./process_files.pl X64
> > > > > > > >
> > > > > > > > +#   ./process_files.pl [Arch]
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > >  use strict;
> > > > > > > >
> > > > > > > >  use Cwd;
> > > > > > > >
> > > > > > > >  use File::Copy;
> > > > > > > >
> > > > > > > > +use File::Basename;
> > > > > > > >
> > > > > > > > +use File::Path qw(make_path remove_tree);
> > > > > > > >
> > > > > > > > +use Text::Tabs;
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +# OpenSSL perlasm generator script does not transfer the
> copyright
> > > > > > header
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +sub copy_license_header
> > > > > > > >
> > > > > > > > +{
> > > > > > > >
> > > > > > > > +    my @args = split / /, shift;    #Separate args by spaces
> > > > > > > >
> > > > > > > > +    my $source = $args[1];          #Source file is second
> (after
> > > > > > "perl")
> > > > > > > >
> > > > > > > > +    my $target = pop @args;         #Target file is always
> last
> > > > > > > >
> > > > > > > > +    chop ($target);                 #Remove newline char
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +    my $temp_file_name = "license.tmp";
> > > > > > > >
> > > > > > > > +    open (my $source_file, "<" . $source) || die $source;
> > > > > > > >
> > > > > > > > +    open (my $target_file, "<" . $target) || die $target;
> > > > > > > >
> > > > > > > > +    open (my $temp_file, ">" . $temp_file_name) || die
> > > > $temp_file_name;
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +    #Add "generated file" warning
> > > > > > > >
> > > > > > > > +    $source =~ s/^..//;             #Remove leading "./"
> > > > > > > >
> > > > > > > > +    print ($temp_file "; WARNING: do not edit!\r\n");
> > > > > > > >
> > > > > > > > +    print ($temp_file "; Generated from $source\r\n");
> > > > > > > >
> > > > > > > > +    print ($temp_file ";\r\n");
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +    #Copy source file header to temp file
> > > > > > > >
> > > > > > > > +    while (my $line = <$source_file>) {
> > > > > > > >
> > > > > > > > +        next if ($line =~ /#!/);    #Ignore shebang line
> > > > > > > >
> > > > > > > > +        $line =~ s/#/;/;            #Fix comment character for
> > > assembly
> > > > > > > >
> > > > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace,
> > > fixup
> > > > > > line
> > > > > > > endings
> > > > > > > >
> > > > > > > > +        print ($temp_file $line);
> > > > > > > >
> > > > > > > > +        last if ($line =~ /http/);  #Last line of copyright
> header
> > > > > > > contains a web link
> > > > > > > >
> > > > > > > > +    }
> > > > > > > >
> > > > > > > > +    print ($temp_file "\r\n");
> > > > > > > >
> > > > > > > > +    #Retrieve generated assembly contents
> > > > > > > >
> > > > > > > > +    while (my $line = <$target_file>) {
> > > > > > > >
> > > > > > > > +        $line =~ s/\s+$/\r\n/;      #Trim trailing whitepsace,
> > > fixup
> > > > > > line
> > > > > > > endings
> > > > > > > >
> > > > > > > > +        print ($temp_file expand ($line));  #expand() replaces
> > > tabs with
> > > > > > > spaces
> > > > > > > >
> > > > > > > > +    }
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +    close ($source_file);
> > > > > > > >
> > > > > > > > +    close ($target_file);
> > > > > > > >
> > > > > > > > +    close ($temp_file);
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +    move ($temp_file_name, $target) ||
> > > > > > > >
> > > > > > > > +        die "Cannot replace \"" . $target . "\"!";
> > > > > > > >
> > > > > > > > +}
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >  #
> > > > > > > >
> > > > > > > >  # Find the openssl directory name for use lib. We have to do
> this
> > > > > > > >
> > > > > > > > @@ -21,10 +75,41 @@ use File::Copy;
> > > > > > > >  #
> > > > > > > >
> > > > > > > >  my $inf_file;
> > > > > > > >
> > > > > > > >  my $OPENSSL_PATH;
> > > > > > > >
> > > > > > > > +my $uefi_config;
> > > > > > > >
> > > > > > > > +my $extension;
> > > > > > > >
> > > > > > > > +my $arch;
> > > > > > > >
> > > > > > > >  my @inf;
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >  BEGIN {
> > > > > > > >
> > > > > > > >      $inf_file = "OpensslLib.inf";
> > > > > > > >
> > > > > > > > +    $uefi_config = "UEFI";
> > > > > > > >
> > > > > > > > +    $arch = shift;
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +    if (defined $arch) {
> > > > > > > >
> > > > > > > > +        if (uc ($arch) eq "X64") {
> > > > > > > >
> > > > > > > > +            $arch = "X64";
> > > > > > > >
> > > > > > > > +            $inf_file = "OpensslLibX64.inf";
> > > > > > > >
> > > > > > > > +            $uefi_config = "UEFI-x86_64";
> > > > > > > >
> > > > > > > > +            $extension = "nasm";
> > > > > > > >
> > > > > > > > +        } else {
> > > > > > > >
> > > > > > > > +            die "Unsupported architecture \"" . $arch . "\"!";
> > > > > > > >
> > > > > > > > +        }
> > > > > > > >
> > > > > > > > +        if ($extension eq "nasm") {
> > > > > > > >
> > > > > > > > +            if (`nasm -v 2>&1`) {
> > > > > > > >
> > > > > > > > +                #Presence of nasm executable will trigger
> > > inclusion of
> > > > > > AVX
> > > > > > > instructions
> > > > > > > >
> > > > > > > > +                die "\nCannot run assembly generators with
> NASM in
> > > > > > > path!\n\n";
> > > > > > > >
> > > > > > > > +            }
> > > > > > > >
> > > > > > > > +        }
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +        # Prepare assembly folder
> > > > > > > >
> > > > > > > > +        if (-d $arch) {
> > > > > > > >
> > > > > > > > +            remove_tree ($arch, {safe => 1}) ||
> > > > > > > >
> > > > > > > > +                die "Cannot clean assembly folder \"" . $arch
> .
> > > "\"!";
> > > > > > > >
> > > > > > > > +        } else {
> > > > > > > >
> > > > > > > > +            mkdir $arch ||
> > > > > > > >
> > > > > > > > +                die "Cannot create assembly folder \"" . $arch
> .
> > > "\"!";
> > > > > > > >
> > > > > > > > +        }
> > > > > > > >
> > > > > > > > +    }
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >      # Read the contents of the inf file
> > > > > > > >
> > > > > > > >      open( FD, "<" . $inf_file ) ||
> > > > > > > >
> > > > > > > > @@ -47,9 +132,9 @@ BEGIN {
> > > > > > > >              # Configure UEFI
> > > > > > > >
> > > > > > > >              system(
> > > > > > > >
> > > > > > > >                  "./Configure",
> > > > > > > >
> > > > > > > > -                "UEFI",
> > > > > > > >
> > > > > > > > +                "--config=../uefi-asm.conf",
> > > > > > > >
> > > > > > > > +                "$uefi_config",
> > > > > > > >
> > > > > > > >                  "no-afalgeng",
> > > > > > > >
> > > > > > > > -                "no-asm",
> > > > > > > >
> > > > > > > >                  "no-async",
> > > > > > > >
> > > > > > > >                  "no-autoerrinit",
> > > > > > > >
> > > > > > > >                  "no-autoload-config",
> > > > > > > >
> > > > > > > > @@ -129,23 +214,53 @@ BEGIN {
> > > > > > > >  # Retrieve file lists from OpenSSL configdata
> > > > > > > >
> > > > > > > >  #
> > > > > > > >
> > > > > > > >  use configdata qw/%unified_info/;
> > > > > > > >
> > > > > > > > +use configdata qw/%config/;
> > > > > > > >
> > > > > > > > +use configdata qw/%target/;
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +# Collect build flags from configdata
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +my $flags = "";
> > > > > > > >
> > > > > > > > +foreach my $f (@{$config{lib_defines}}) {
> > > > > > > >
> > > > > > > > +    $flags .= " -D$f";
> > > > > > > >
> > > > > > > > +}
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >  my @cryptofilelist = ();
> > > > > > > >
> > > > > > > >  my @sslfilelist = ();
> > > > > > > >
> > > > > > > > +my @asmfilelist = ();
> > > > > > > >
> > > > > > > > +my @asmbuild = ();
> > > > > > > >
> > > > > > > >  foreach my $product ((@{$unified_info{libraries}},
> > > > > > > >
> > > > > > > >                        @{$unified_info{engines}})) {
> > > > > > > >
> > > > > > > >      foreach my $o (@{$unified_info{sources}->{$product}}) {
> > > > > > > >
> > > > > > > >          foreach my $s (@{$unified_info{sources}->{$o}}) {
> > > > > > > >
> > > > > > > > -            next if ($unified_info{generate}->{$s});
> > > > > > > >
> > > > > > > > -            next if $s =~ "crypto/bio/b_print.c";
> > > > > > > >
> > > > > > > > -
> > > > > > > >
> > > > > > > >              # No need to add unused files in UEFI.
> > > > > > > >
> > > > > > > >              # So it can reduce porting time, compile time,
> library
> > > size.
> > > > > > > >
> > > > > > > > +            next if $s =~ "crypto/bio/b_print.c";
> > > > > > > >
> > > > > > > >              next if $s =~ "crypto/rand/randfile.c";
> > > > > > > >
> > > > > > > >              next if $s =~ "crypto/store/";
> > > > > > > >
> > > > > > > >              next if $s =~ "crypto/err/err_all.c";
> > > > > > > >
> > > > > > > >              next if $s =~ "crypto/aes/aes_ecb.c";
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > +            if ($unified_info{generate}->{$s}) {
> > > > > > > >
> > > > > > > > +                if (defined $arch) {
> > > > > > > >
> > > > > > > > +                    my $buildstring = "perl";
> > > > > > > >
> > > > > > > > +                    foreach my $arg
> (@{$unified_info{generate}-
> > > >{$s}}) {
> > > > > > > >
> > > > > > > > +                        if ($arg =~ ".pl") {
> > > > > > > >
> > > > > > > > +                            $buildstring .= " ./openssl/$arg";
> > > > > > > >
> > > > > > > > +                        } elsif ($arg =~ "PERLASM_SCHEME") {
> > > > > > > >
> > > > > > > > +                            $buildstring .= "
> > > $target{perlasm_scheme}";
> > > > > > > >
> > > > > > > > +                        } elsif ($arg =~ "LIB_CFLAGS") {
> > > > > > > >
> > > > > > > > +                            $buildstring .= "$flags";
> > > > > > > >
> > > > > > > > +                        }
> > > > > > > >
> > > > > > > > +                    }
> > > > > > > >
> > > > > > > > +                    ($s, my $path, undef) = fileparse($s,
> > > qr/\.[^.]*/);
> > > > > > > >
> > > > > > > > +                    $buildstring .= "
> ./$arch/$path$s.$extension";
> > > > > > > >
> > > > > > > > +                    make_path ("./$arch/$path");
> > > > > > > >
> > > > > > > > +                    push @asmbuild, "$buildstring\n";
> > > > > > > >
> > > > > > > > +                    push @asmfilelist, "
> > > $arch/$path$s.$extension\r\n";
> > > > > > > >
> > > > > > > > +                }
> > > > > > > >
> > > > > > > > +                next;
> > > > > > > >
> > > > > > > > +            }
> > > > > > > >
> > > > > > > >              if ($product =~ "libssl") {
> > > > > > > >
> > > > > > > >                  push @sslfilelist, '  $(OPENSSL_PATH)/' . $s .
> > > "\r\n";
> > > > > > > >
> > > > > > > >                  next;
> > > > > > > >
> > > > > > > > @@ -183,15 +298,31 @@ foreach (@headers){
> > > > > > > >  }
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +# Generate assembly files
> > > > > > > >
> > > > > > > > +#
> > > > > > > >
> > > > > > > > +if (@asmbuild) {
> > > > > > > >
> > > > > > > > +    print "\n--> Generating assembly files ... ";
> > > > > > > >
> > > > > > > > +    foreach my $buildstring (@asmbuild) {
> > > > > > > >
> > > > > > > > +        system ("$buildstring");
> > > > > > > >
> > > > > > > > +        copy_license_header ($buildstring);
> > > > > > > >
> > > > > > > > +    }
> > > > > > > >
> > > > > > > > +    print "Done!";
> > > > > > > >
> > > > > > > > +}
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > >  #
> > > > > > > >
> > > > > > > >  # Update OpensslLib.inf with autogenerated file list
> > > > > > > >
> > > > > > > >  #
> > > > > > > >
> > > > > > > >  my @new_inf = ();
> > > > > > > >
> > > > > > > >  my $subbing = 0;
> > > > > > > >
> > > > > > > > -print "\n--> Updating OpensslLib.inf ... ";
> > > > > > > >
> > > > > > > > +print "\n--> Updating $inf_file ... ";
> > > > > > > >
> > > > > > > >  foreach (@inf) {
> > > > > > > >
> > > > > > > > +    if ($_ =~ "DEFINE OPENSSL_FLAGS_CONFIG") {
> > > > > > > >
> > > > > > > > +        push @new_inf, "  DEFINE OPENSSL_FLAGS_CONFIG    =" .
> > > $flags
> > > > .
> > > > > > > "\r\n";
> > > > > > > >
> > > > > > > > +        next;
> > > > > > > >
> > > > > > > > +    }
> > > > > > > >
> > > > > > > >      if ( $_ =~ "# Autogenerated files list starts here" ) {
> > > > > > > >
> > > > > > > > -        push @new_inf, $_, @cryptofilelist, @sslfilelist;
> > > > > > > >
> > > > > > > > +        push @new_inf, $_, @asmfilelist, @cryptofilelist,
> > > @sslfilelist;
> > > > > > > >
> > > > > > > >          $subbing = 1;
> > > > > > > >
> > > > > > > >          next;
> > > > > > > >
> > > > > > > >      }
> > > > > > > >
> > > > > > > > @@ -216,49 +347,51 @@ rename( $new_inf_file, $inf_file ) ||
> > > > > > > >      die "rename $inf_file";
> > > > > > > >
> > > > > > > >  print "Done!";
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > -#
> > > > > > > >
> > > > > > > > -# Update OpensslLibCrypto.inf with auto-generated file list
> (no
> > > libssl)
> > > > > > > >
> > > > > > > > -#
> > > > > > > >
> > > > > > > > -$inf_file = "OpensslLibCrypto.inf";
> > > > > > > >
> > > > > > > > -
> > > > > > > >
> > > > > > > > -# Read the contents of the inf file
> > > > > > > >
> > > > > > > > -@inf = ();
> > > > > > > >
> > > > > > > > -@new_inf = ();
> > > > > > > >
> > > > > > > > -open( FD, "<" . $inf_file ) ||
> > > > > > > >
> > > > > > > > -    die "Cannot open \"" . $inf_file . "\"!";
> > > > > > > >
> > > > > > > > -@inf = (<FD>);
> > > > > > > >
> > > > > > > > -close(FD) ||
> > > > > > > >
> > > > > > > > -    die "Cannot close \"" . $inf_file . "\"!";
> > > > > > > >
> > > > > > > > +if (!defined $arch) {
> > > > > > > >
> > > > > > > > +    #
> > > > > > > >
> > > > > > > > +    # Update OpensslLibCrypto.inf with auto-generated file
> list
> > > (no
> > > > > > > libssl)
> > > > > > > >
> > > > > > > > +    #
> > > > > > > >
> > > > > > > > +    $inf_file = "OpensslLibCrypto.inf";
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > -$subbing = 0;
> > > > > > > >
> > > > > > > > -print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > > > > >
> > > > > > > > -foreach (@inf) {
> > > > > > > >
> > > > > > > > -    if ( $_ =~ "# Autogenerated files list starts here" ) {
> > > > > > > >
> > > > > > > > -        push @new_inf, $_, @cryptofilelist;
> > > > > > > >
> > > > > > > > -        $subbing = 1;
> > > > > > > >
> > > > > > > > -        next;
> > > > > > > >
> > > > > > > > -    }
> > > > > > > >
> > > > > > > > -    if ( $_ =~ "# Autogenerated files list ends here" ) {
> > > > > > > >
> > > > > > > > -        push @new_inf, $_;
> > > > > > > >
> > > > > > > > -        $subbing = 0;
> > > > > > > >
> > > > > > > > -        next;
> > > > > > > >
> > > > > > > > +    # Read the contents of the inf file
> > > > > > > >
> > > > > > > > +    @inf = ();
> > > > > > > >
> > > > > > > > +    @new_inf = ();
> > > > > > > >
> > > > > > > > +    open( FD, "<" . $inf_file ) ||
> > > > > > > >
> > > > > > > > +        die "Cannot open \"" . $inf_file . "\"!";
> > > > > > > >
> > > > > > > > +    @inf = (<FD>);
> > > > > > > >
> > > > > > > > +    close(FD) ||
> > > > > > > >
> > > > > > > > +        die "Cannot close \"" . $inf_file . "\"!";
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +    $subbing = 0;
> > > > > > > >
> > > > > > > > +    print "\n--> Updating OpensslLibCrypto.inf ... ";
> > > > > > > >
> > > > > > > > +    foreach (@inf) {
> > > > > > > >
> > > > > > > > +        if ( $_ =~ "# Autogenerated files list starts here" )
> {
> > > > > > > >
> > > > > > > > +            push @new_inf, $_, @cryptofilelist;
> > > > > > > >
> > > > > > > > +            $subbing = 1;
> > > > > > > >
> > > > > > > > +            next;
> > > > > > > >
> > > > > > > > +        }
> > > > > > > >
> > > > > > > > +        if ( $_ =~ "# Autogenerated files list ends here" ) {
> > > > > > > >
> > > > > > > > +            push @new_inf, $_;
> > > > > > > >
> > > > > > > > +            $subbing = 0;
> > > > > > > >
> > > > > > > > +            next;
> > > > > > > >
> > > > > > > > +        }
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +        push @new_inf, $_
> > > > > > > >
> > > > > > > > +            unless ($subbing);
> > > > > > > >
> > > > > > > >      }
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > -    push @new_inf, $_
> > > > > > > >
> > > > > > > > -        unless ($subbing);
> > > > > > > >
> > > > > > > > +    $new_inf_file = $inf_file . ".new";
> > > > > > > >
> > > > > > > > +    open( FD, ">" . $new_inf_file ) ||
> > > > > > > >
> > > > > > > > +        die $new_inf_file;
> > > > > > > >
> > > > > > > > +    print( FD @new_inf ) ||
> > > > > > > >
> > > > > > > > +        die $new_inf_file;
> > > > > > > >
> > > > > > > > +    close(FD) ||
> > > > > > > >
> > > > > > > > +        die $new_inf_file;
> > > > > > > >
> > > > > > > > +    rename( $new_inf_file, $inf_file ) ||
> > > > > > > >
> > > > > > > > +        die "rename $inf_file";
> > > > > > > >
> > > > > > > > +    print "Done!";
> > > > > > > >
> > > > > > > >  }
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > -$new_inf_file = $inf_file . ".new";
> > > > > > > >
> > > > > > > > -open( FD, ">" . $new_inf_file ) ||
> > > > > > > >
> > > > > > > > -    die $new_inf_file;
> > > > > > > >
> > > > > > > > -print( FD @new_inf ) ||
> > > > > > > >
> > > > > > > > -    die $new_inf_file;
> > > > > > > >
> > > > > > > > -close(FD) ||
> > > > > > > >
> > > > > > > > -    die $new_inf_file;
> > > > > > > >
> > > > > > > > -rename( $new_inf_file, $inf_file ) ||
> > > > > > > >
> > > > > > > > -    die "rename $inf_file";
> > > > > > > >
> > > > > > > > -print "Done!";
> > > > > > > >
> > > > > > > > -
> > > > > > > >
> > > > > > > >  #
> > > > > > > >
> > > > > > > >  # Copy opensslconf.h and dso_conf.h generated from OpenSSL
> > > > > Configuration
> > > > > > > >
> > > > > > > >  #
> > > > > > > >
> > > > > > > > diff --git a/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > new file mode 100644
> > > > > > > > index 0000000000..55eedbf3ba
> > > > > > > > --- /dev/null
> > > > > > > > +++ b/CryptoPkg/Library/OpensslLib/uefi-asm.conf
> > > > > > > > @@ -0,0 +1,15 @@
> > > > > > > > +## -*- mode: perl; -*-
> > > > > > > >
> > > > > > > > +## UEFI assembly openssl configuration targets.
> > > > > > > >
> > > > > > > > +
> > > > > > > >
> > > > > > > > +my %targets = (
> > > > > > > >
> > > > > > > > +#### UEFI
> > > > > > > >
> > > > > > > > +    "UEFI-x86_64" => {
> > > > > > > >
> > > > > > > > +        perlasm_scheme  => "nasm",
> > > > > > > >
> > > > > > > > +        # inherit_from    => [ "UEFI",  asm("x86_64_asm") ],
> > > > > > > >
> > > > > > > > +        inherit_from    => [ "UEFI" ],
> > > > > > > >
> > > > > > > > +        cpuid_asm_src   => "x86_64cpuid.s",
> > > > > > > >
> > > > > > > > +        aes_asm_src     => "aes_core.c aes_cbc.c vpaes-
> x86_64.s
> > > aesni-
> > > > > > > x86_64.s
> > > > > > > > aesni-sha1-x86_64.s aesni-sha256-x86_64.s aesni-mb-x86_64.s",
> > > > > > > >
> > > > > > > > +        sha1_asm_src    => "sha1-x86_64.s sha256-x86_64.s
> sha512-
> > > > > > x86_64.s
> > > > > > > > sha1-mb-x86_64.s sha256-mb-x86_64.s",
> > > > > > > >
> > > > > > > > +        modes_asm_src   => "ghash-x86_64.s",
> > > > > > > >
> > > > > > > > +    },
> > > > > > > >
> > > > > > > > +);
> > > > > > > >
> > > > > > > > --
> > > > > > > > 2.28.0.windows.1
> > > > > >
> > > > > >
> > > > > >
> > > >
> > > >
> > > > 


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

* Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
  2020-09-29 21:08                 ` Zurcher, Christopher J
@ 2020-10-01 12:58                   ` Laszlo Ersek
  2020-10-08 19:56                     ` Zurcher, Christopher J
  0 siblings, 1 reply; 42+ messages in thread
From: Laszlo Ersek @ 2020-10-01 12:58 UTC (permalink / raw)
  To: devel, christopher.j.zurcher, Yao, Jiewen, Jiang, Guomin
  Cc: Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel (ARM address)

(refreshing Ard's address, comments below)

On 09/29/20 23:08, Zurcher, Christopher J wrote:
> The GCC build fails with this error:
>
> `OPENSSL_ia32cap_P' referenced in section `.text.OPENSSL_cpuid_setup'
> of /tmp/ccIIRAYs.ltrans20.ltrans.o: defined in discarded section
> `COMMON' of
> /mnt/c/mssql/tiano/Build/OvmfX64/DEBUG_GCC5/X64/CryptoPkg/Library/OpensslLib/OpensslLibX64/OUTPUT/OpensslLibX64.lib(x86_64cpuid.obj)
>
> The code in question is here:
>> section .CRT$XCU rdata align=8
>>                 DQ      OPENSSL_cpuid_setup
>>
>> common  OPENSSL_ia32cap_P 16

For the X64 arch, OPENSSL_cpuid_setup() is implemented in

  CryptoPkg/Library/OpensslLib/openssl/crypto/cryptlib.c

It makes references to:

  extern unsigned int OPENSSL_ia32cap_P[4];

The variable is defined in generated assembly source code.

There seem to be multiple generators (for various assemblers):

(1) crypto/perlasm/x86gas.pl -- likely for the GNU assembler:

>        my $tmp=".comm\t${nmdecor}OPENSSL_ia32cap_P,16";

(2) crypto/perlasm/x86nasm.pl -- likely for NASM:

> ${drdecor}common      ${nmdecor}OPENSSL_ia32cap_P 16

(3) crypto/x86_64cpuid.pl -- likely for... ???

> .comm     OPENSSL_ia32cap_P,16,4

They all put the variable in the "common" section.

Tracking the NASM generator through a number of "git blame" commands,
I've ended up at historical commit 10e7d6d52650 ("Support for IA-32 SSE2
instruction set.", 2004-05-06). This commit introduced "OPENSSL_ia32cap"
at once in the common section -- see "crypto/perlasm/x86unix.pl".

Now, the NASM manual says the following about the common section:

> 6.7. 'COMMON': Defining Common Data Areas
> =========================================
>
> The 'COMMON' directive is used to declare _common variables_.  A common
> variable is much like a global variable declared in the uninitialized
> data section, so that
>
>      common  intvar  4
>
>    is similar in function to
>
>      global  intvar
>      section .bss
>
>      intvar  resd    1
>
>    The difference is that if more than one module defines the same
> common variable, then at link time those variables will be _merged_, and
> references to 'intvar' in all modules will point at the same piece of
> memory.

The common section is a *really* bad idea for C language projects,
because if there are multiple external definitions of an object in a
program, then that should (per C language standard) prevent the
successful linking of the program, rather than undergo silent definition
merging.

This has caused actual, inexplicable bugs in edk2 -- identically named,
but differently sized, and entirely independently inteded, variables
with external linkage and static storage duration got silently merged,
rather than breaking the build. In the end, we tracked those down and
marked them all STATIC. But in order to prevent such nonsense in the
future, we also forbade the common section altogether. Let me find that
commit...

Yes, please see 214a3b79417f ("BaseTools GCC: avoid the use of COMMON
symbols", 2015-12-08).

So, my guess is that this interferes with OpenSSL's placing of
"OPENSSL_ia32cap_P" in the common section.

Without knowing more, I'd hazard that this is a bug in OpenSSL. Unless
they have a strong reason for it, I think we should try to contribute a
patch that removes "common".

The code should provide exactly one definition (in the generated
assembly source), provide one central (extern) declaration too, in a
header file, then let all users include the declaration via the header
file. The object file built from the generated assembly source should be
linked into each final executable.

For example, "CryptoPkg/Library/OpensslLib/openssl/crypto/cryptlib.c"
already correctly declares the variable as "extern".

Otherwise, as last resort, I guess we could attempt working it around by
adding back "-fcommon" to the OpensslLib build flags. :/

Thanks,
Laszlo


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

* Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
  2020-10-01 12:58                   ` Laszlo Ersek
@ 2020-10-08 19:56                     ` Zurcher, Christopher J
  2020-10-09 11:37                       ` Laszlo Ersek
  0 siblings, 1 reply; 42+ messages in thread
From: Zurcher, Christopher J @ 2020-10-08 19:56 UTC (permalink / raw)
  To: Laszlo Ersek, devel@edk2.groups.io, Yao, Jiewen, Jiang, Guomin
  Cc: Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel (ARM address)

Laszlo, thanks for sharing this explanation and history. I have found that in addition to the "common" declaration, OpenSSL's Structured Exception Handling functionality also breaks the GCC build by including "wrt ..imagebase" statements. Since we cannot implement functional changes in the current 1.1.1x versions of OpenSSL, my proposal is to go ahead with this patch only supporting VS and LLVM toolchains for now.

Thanks,
Christopher Zurcher

> -----Original Message-----
> From: Laszlo Ersek <lersek@redhat.com>
> Sent: Thursday, October 1, 2020 05:58
> To: devel@edk2.groups.io; Zurcher, Christopher J
> <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Jiang,
> Guomin <guomin.jiang@intel.com>
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> Ard Biesheuvel (ARM address) <ard.biesheuvel@arm.com>
> Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> instruction support for X64
> 
> (refreshing Ard's address, comments below)
> 
> On 09/29/20 23:08, Zurcher, Christopher J wrote:
> > The GCC build fails with this error:
> >
> > `OPENSSL_ia32cap_P' referenced in section `.text.OPENSSL_cpuid_setup'
> > of /tmp/ccIIRAYs.ltrans20.ltrans.o: defined in discarded section
> > `COMMON' of
> >
> /mnt/c/mssql/tiano/Build/OvmfX64/DEBUG_GCC5/X64/CryptoPkg/Library/OpensslLib/
> OpensslLibX64/OUTPUT/OpensslLibX64.lib(x86_64cpuid.obj)
> >
> > The code in question is here:
> >> section .CRT$XCU rdata align=8
> >>                 DQ      OPENSSL_cpuid_setup
> >>
> >> common  OPENSSL_ia32cap_P 16
> 
> For the X64 arch, OPENSSL_cpuid_setup() is implemented in
> 
>   CryptoPkg/Library/OpensslLib/openssl/crypto/cryptlib.c
> 
> It makes references to:
> 
>   extern unsigned int OPENSSL_ia32cap_P[4];
> 
> The variable is defined in generated assembly source code.
> 
> There seem to be multiple generators (for various assemblers):
> 
> (1) crypto/perlasm/x86gas.pl -- likely for the GNU assembler:
> 
> >        my $tmp=".comm\t${nmdecor}OPENSSL_ia32cap_P,16";
> 
> (2) crypto/perlasm/x86nasm.pl -- likely for NASM:
> 
> > ${drdecor}common      ${nmdecor}OPENSSL_ia32cap_P 16
> 
> (3) crypto/x86_64cpuid.pl -- likely for... ???
> 
> > .comm     OPENSSL_ia32cap_P,16,4
> 
> They all put the variable in the "common" section.
> 
> Tracking the NASM generator through a number of "git blame" commands,
> I've ended up at historical commit 10e7d6d52650 ("Support for IA-32 SSE2
> instruction set.", 2004-05-06). This commit introduced "OPENSSL_ia32cap"
> at once in the common section -- see "crypto/perlasm/x86unix.pl".
> 
> Now, the NASM manual says the following about the common section:
> 
> > 6.7. 'COMMON': Defining Common Data Areas
> > =========================================
> >
> > The 'COMMON' directive is used to declare _common variables_.  A common
> > variable is much like a global variable declared in the uninitialized
> > data section, so that
> >
> >      common  intvar  4
> >
> >    is similar in function to
> >
> >      global  intvar
> >      section .bss
> >
> >      intvar  resd    1
> >
> >    The difference is that if more than one module defines the same
> > common variable, then at link time those variables will be _merged_, and
> > references to 'intvar' in all modules will point at the same piece of
> > memory.
> 
> The common section is a *really* bad idea for C language projects,
> because if there are multiple external definitions of an object in a
> program, then that should (per C language standard) prevent the
> successful linking of the program, rather than undergo silent definition
> merging.
> 
> This has caused actual, inexplicable bugs in edk2 -- identically named,
> but differently sized, and entirely independently inteded, variables
> with external linkage and static storage duration got silently merged,
> rather than breaking the build. In the end, we tracked those down and
> marked them all STATIC. But in order to prevent such nonsense in the
> future, we also forbade the common section altogether. Let me find that
> commit...
> 
> Yes, please see 214a3b79417f ("BaseTools GCC: avoid the use of COMMON
> symbols", 2015-12-08).
> 
> So, my guess is that this interferes with OpenSSL's placing of
> "OPENSSL_ia32cap_P" in the common section.
> 
> Without knowing more, I'd hazard that this is a bug in OpenSSL. Unless
> they have a strong reason for it, I think we should try to contribute a
> patch that removes "common".
> 
> The code should provide exactly one definition (in the generated
> assembly source), provide one central (extern) declaration too, in a
> header file, then let all users include the declaration via the header
> file. The object file built from the generated assembly source should be
> linked into each final executable.
> 
> For example, "CryptoPkg/Library/OpensslLib/openssl/crypto/cryptlib.c"
> already correctly declares the variable as "extern".
> 
> Otherwise, as last resort, I guess we could attempt working it around by
> adding back "-fcommon" to the OpensslLib build flags. :/
> 
> Thanks,
> Laszlo


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

* Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
  2020-10-08 19:56                     ` Zurcher, Christopher J
@ 2020-10-09 11:37                       ` Laszlo Ersek
  2020-10-09 19:27                         ` Zurcher, Christopher J
  0 siblings, 1 reply; 42+ messages in thread
From: Laszlo Ersek @ 2020-10-09 11:37 UTC (permalink / raw)
  To: Zurcher, Christopher J, devel@edk2.groups.io, Yao, Jiewen,
	Jiang, Guomin
  Cc: Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel (ARM address)

On 10/08/20 21:56, Zurcher, Christopher J wrote:
> Laszlo, thanks for sharing this explanation and history. I have found that in addition to the "common" declaration, OpenSSL's Structured Exception Handling functionality also breaks the GCC build by including "wrt ..imagebase" statements. Since we cannot implement functional changes in the current 1.1.1x versions of OpenSSL, my proposal is to go ahead with this patch only supporting VS and LLVM toolchains for now.

Could you include the error message with the "wrt ..imagebase" string?

I found the string in "crypto/perlasm/x86_64-xlate.pl" but don't really
understand what it's about.

I'd just like us to make one attempt to resolve that problem; otherwise
personally I'm OK if this new feature is not enabled for GCC at first.

Thanks
Laszlo

> 
> Thanks,
> Christopher Zurcher
> 
>> -----Original Message-----
>> From: Laszlo Ersek <lersek@redhat.com>
>> Sent: Thursday, October 1, 2020 05:58
>> To: devel@edk2.groups.io; Zurcher, Christopher J
>> <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Jiang,
>> Guomin <guomin.jiang@intel.com>
>> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
>> Ard Biesheuvel (ARM address) <ard.biesheuvel@arm.com>
>> Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
>> instruction support for X64
>>
>> (refreshing Ard's address, comments below)
>>
>> On 09/29/20 23:08, Zurcher, Christopher J wrote:
>>> The GCC build fails with this error:
>>>
>>> `OPENSSL_ia32cap_P' referenced in section `.text.OPENSSL_cpuid_setup'
>>> of /tmp/ccIIRAYs.ltrans20.ltrans.o: defined in discarded section
>>> `COMMON' of
>>>
>> /mnt/c/mssql/tiano/Build/OvmfX64/DEBUG_GCC5/X64/CryptoPkg/Library/OpensslLib/
>> OpensslLibX64/OUTPUT/OpensslLibX64.lib(x86_64cpuid.obj)
>>>
>>> The code in question is here:
>>>> section .CRT$XCU rdata align=8
>>>>                 DQ      OPENSSL_cpuid_setup
>>>>
>>>> common  OPENSSL_ia32cap_P 16
>>
>> For the X64 arch, OPENSSL_cpuid_setup() is implemented in
>>
>>   CryptoPkg/Library/OpensslLib/openssl/crypto/cryptlib.c
>>
>> It makes references to:
>>
>>   extern unsigned int OPENSSL_ia32cap_P[4];
>>
>> The variable is defined in generated assembly source code.
>>
>> There seem to be multiple generators (for various assemblers):
>>
>> (1) crypto/perlasm/x86gas.pl -- likely for the GNU assembler:
>>
>>>        my $tmp=".comm\t${nmdecor}OPENSSL_ia32cap_P,16";
>>
>> (2) crypto/perlasm/x86nasm.pl -- likely for NASM:
>>
>>> ${drdecor}common      ${nmdecor}OPENSSL_ia32cap_P 16
>>
>> (3) crypto/x86_64cpuid.pl -- likely for... ???
>>
>>> .comm     OPENSSL_ia32cap_P,16,4
>>
>> They all put the variable in the "common" section.
>>
>> Tracking the NASM generator through a number of "git blame" commands,
>> I've ended up at historical commit 10e7d6d52650 ("Support for IA-32 SSE2
>> instruction set.", 2004-05-06). This commit introduced "OPENSSL_ia32cap"
>> at once in the common section -- see "crypto/perlasm/x86unix.pl".
>>
>> Now, the NASM manual says the following about the common section:
>>
>>> 6.7. 'COMMON': Defining Common Data Areas
>>> =========================================
>>>
>>> The 'COMMON' directive is used to declare _common variables_.  A common
>>> variable is much like a global variable declared in the uninitialized
>>> data section, so that
>>>
>>>      common  intvar  4
>>>
>>>    is similar in function to
>>>
>>>      global  intvar
>>>      section .bss
>>>
>>>      intvar  resd    1
>>>
>>>    The difference is that if more than one module defines the same
>>> common variable, then at link time those variables will be _merged_, and
>>> references to 'intvar' in all modules will point at the same piece of
>>> memory.
>>
>> The common section is a *really* bad idea for C language projects,
>> because if there are multiple external definitions of an object in a
>> program, then that should (per C language standard) prevent the
>> successful linking of the program, rather than undergo silent definition
>> merging.
>>
>> This has caused actual, inexplicable bugs in edk2 -- identically named,
>> but differently sized, and entirely independently inteded, variables
>> with external linkage and static storage duration got silently merged,
>> rather than breaking the build. In the end, we tracked those down and
>> marked them all STATIC. But in order to prevent such nonsense in the
>> future, we also forbade the common section altogether. Let me find that
>> commit...
>>
>> Yes, please see 214a3b79417f ("BaseTools GCC: avoid the use of COMMON
>> symbols", 2015-12-08).
>>
>> So, my guess is that this interferes with OpenSSL's placing of
>> "OPENSSL_ia32cap_P" in the common section.
>>
>> Without knowing more, I'd hazard that this is a bug in OpenSSL. Unless
>> they have a strong reason for it, I think we should try to contribute a
>> patch that removes "common".
>>
>> The code should provide exactly one definition (in the generated
>> assembly source), provide one central (extern) declaration too, in a
>> header file, then let all users include the declaration via the header
>> file. The object file built from the generated assembly source should be
>> linked into each final executable.
>>
>> For example, "CryptoPkg/Library/OpensslLib/openssl/crypto/cryptlib.c"
>> already correctly declares the variable as "extern".
>>
>> Otherwise, as last resort, I guess we could attempt working it around by
>> adding back "-fcommon" to the OpensslLib build flags. :/
>>
>> Thanks,
>> Laszlo
> 


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

* Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
  2020-10-09 11:37                       ` Laszlo Ersek
@ 2020-10-09 19:27                         ` Zurcher, Christopher J
  2020-10-15  7:14                           ` Laszlo Ersek
  0 siblings, 1 reply; 42+ messages in thread
From: Zurcher, Christopher J @ 2020-10-09 19:27 UTC (permalink / raw)
  To: devel@edk2.groups.io, lersek@redhat.com, Yao, Jiewen,
	Jiang, Guomin
  Cc: Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel (ARM address)

Here is the error message:
[...]/OpensslLibX64/OUTPUT/X64/crypto/aes/aesni-mb-x86_64.iii:1746: error: symbol `..imagebase' undefined
[cut 18 lines]
[...]/OpensslLibX64/OUTPUT/X64/crypto/aes/aesni-mb-x86_64.iii:1775: error: symbol `..imagebase' undefined
GNUmakefile:3390: recipe for target '[...]OpensslLibX64/OUTPUT/X64/crypto/aes/aesni-mb-x86_64.obj' failed
make: *** [[...]/OpensslLibX64/OUTPUT/X64/crypto/aes/aesni-mb-x86_64.obj] Error 1

The functionality is described here in "7.6.1 win64: Writing Position-Independent Code" and "7.6.2 win64: Structured Exception Handling"
https://www.nasm.us/xdoc/2.13.02rc3/html/nasmdoc7.html

The x86_64 implementation in OpenSSL seems to assume that building with NASM guarantees a Windows toolchain and Windows execution environment.

Thanks,
Christopher Zurcher

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Laszlo Ersek
> Sent: Friday, October 9, 2020 04:37
> To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
> devel@edk2.groups.io; Yao, Jiewen <jiewen.yao@intel.com>; Jiang, Guomin
> <guomin.jiang@intel.com>
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> Ard Biesheuvel (ARM address) <ard.biesheuvel@arm.com>
> Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> instruction support for X64
> 
> On 10/08/20 21:56, Zurcher, Christopher J wrote:
> > Laszlo, thanks for sharing this explanation and history. I have found that
> in addition to the "common" declaration, OpenSSL's Structured Exception
> Handling functionality also breaks the GCC build by including "wrt
> ..imagebase" statements. Since we cannot implement functional changes in the
> current 1.1.1x versions of OpenSSL, my proposal is to go ahead with this
> patch only supporting VS and LLVM toolchains for now.
> 
> Could you include the error message with the "wrt ..imagebase" string?
> 
> I found the string in "crypto/perlasm/x86_64-xlate.pl" but don't really
> understand what it's about.
> 
> I'd just like us to make one attempt to resolve that problem; otherwise
> personally I'm OK if this new feature is not enabled for GCC at first.
> 
> Thanks
> Laszlo
> 
> >
> > Thanks,
> > Christopher Zurcher
> >
> >> -----Original Message-----
> >> From: Laszlo Ersek <lersek@redhat.com>
> >> Sent: Thursday, October 1, 2020 05:58
> >> To: devel@edk2.groups.io; Zurcher, Christopher J
> >> <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>;
> Jiang,
> >> Guomin <guomin.jiang@intel.com>
> >> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>;
> >> Ard Biesheuvel (ARM address) <ard.biesheuvel@arm.com>
> >> Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
> >> instruction support for X64
> >>
> >> (refreshing Ard's address, comments below)
> >>
> >> On 09/29/20 23:08, Zurcher, Christopher J wrote:
> >>> The GCC build fails with this error:
> >>>
> >>> `OPENSSL_ia32cap_P' referenced in section `.text.OPENSSL_cpuid_setup'
> >>> of /tmp/ccIIRAYs.ltrans20.ltrans.o: defined in discarded section
> >>> `COMMON' of
> >>>
> >>
> /mnt/c/mssql/tiano/Build/OvmfX64/DEBUG_GCC5/X64/CryptoPkg/Library/OpensslLib/
> >> OpensslLibX64/OUTPUT/OpensslLibX64.lib(x86_64cpuid.obj)
> >>>
> >>> The code in question is here:
> >>>> section .CRT$XCU rdata align=8
> >>>>                 DQ      OPENSSL_cpuid_setup
> >>>>
> >>>> common  OPENSSL_ia32cap_P 16
> >>
> >> For the X64 arch, OPENSSL_cpuid_setup() is implemented in
> >>
> >>   CryptoPkg/Library/OpensslLib/openssl/crypto/cryptlib.c
> >>
> >> It makes references to:
> >>
> >>   extern unsigned int OPENSSL_ia32cap_P[4];
> >>
> >> The variable is defined in generated assembly source code.
> >>
> >> There seem to be multiple generators (for various assemblers):
> >>
> >> (1) crypto/perlasm/x86gas.pl -- likely for the GNU assembler:
> >>
> >>>        my $tmp=".comm\t${nmdecor}OPENSSL_ia32cap_P,16";
> >>
> >> (2) crypto/perlasm/x86nasm.pl -- likely for NASM:
> >>
> >>> ${drdecor}common      ${nmdecor}OPENSSL_ia32cap_P 16
> >>
> >> (3) crypto/x86_64cpuid.pl -- likely for... ???
> >>
> >>> .comm     OPENSSL_ia32cap_P,16,4
> >>
> >> They all put the variable in the "common" section.
> >>
> >> Tracking the NASM generator through a number of "git blame" commands,
> >> I've ended up at historical commit 10e7d6d52650 ("Support for IA-32 SSE2
> >> instruction set.", 2004-05-06). This commit introduced "OPENSSL_ia32cap"
> >> at once in the common section -- see "crypto/perlasm/x86unix.pl".
> >>
> >> Now, the NASM manual says the following about the common section:
> >>
> >>> 6.7. 'COMMON': Defining Common Data Areas
> >>> =========================================
> >>>
> >>> The 'COMMON' directive is used to declare _common variables_.  A common
> >>> variable is much like a global variable declared in the uninitialized
> >>> data section, so that
> >>>
> >>>      common  intvar  4
> >>>
> >>>    is similar in function to
> >>>
> >>>      global  intvar
> >>>      section .bss
> >>>
> >>>      intvar  resd    1
> >>>
> >>>    The difference is that if more than one module defines the same
> >>> common variable, then at link time those variables will be _merged_, and
> >>> references to 'intvar' in all modules will point at the same piece of
> >>> memory.
> >>
> >> The common section is a *really* bad idea for C language projects,
> >> because if there are multiple external definitions of an object in a
> >> program, then that should (per C language standard) prevent the
> >> successful linking of the program, rather than undergo silent definition
> >> merging.
> >>
> >> This has caused actual, inexplicable bugs in edk2 -- identically named,
> >> but differently sized, and entirely independently inteded, variables
> >> with external linkage and static storage duration got silently merged,
> >> rather than breaking the build. In the end, we tracked those down and
> >> marked them all STATIC. But in order to prevent such nonsense in the
> >> future, we also forbade the common section altogether. Let me find that
> >> commit...
> >>
> >> Yes, please see 214a3b79417f ("BaseTools GCC: avoid the use of COMMON
> >> symbols", 2015-12-08).
> >>
> >> So, my guess is that this interferes with OpenSSL's placing of
> >> "OPENSSL_ia32cap_P" in the common section.
> >>
> >> Without knowing more, I'd hazard that this is a bug in OpenSSL. Unless
> >> they have a strong reason for it, I think we should try to contribute a
> >> patch that removes "common".
> >>
> >> The code should provide exactly one definition (in the generated
> >> assembly source), provide one central (extern) declaration too, in a
> >> header file, then let all users include the declaration via the header
> >> file. The object file built from the generated assembly source should be
> >> linked into each final executable.
> >>
> >> For example, "CryptoPkg/Library/OpensslLib/openssl/crypto/cryptlib.c"
> >> already correctly declares the variable as "extern".
> >>
> >> Otherwise, as last resort, I guess we could attempt working it around by
> >> adding back "-fcommon" to the OpensslLib build flags. :/
> >>
> >> Thanks,
> >> Laszlo
> >
> 
> 
> 
> 
> 


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

* Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64
  2020-10-09 19:27                         ` Zurcher, Christopher J
@ 2020-10-15  7:14                           ` Laszlo Ersek
  0 siblings, 0 replies; 42+ messages in thread
From: Laszlo Ersek @ 2020-10-15  7:14 UTC (permalink / raw)
  To: Zurcher, Christopher J, devel@edk2.groups.io, Yao, Jiewen,
	Jiang, Guomin
  Cc: Wang, Jian J, Lu, XiaoyuX, Ard Biesheuvel (ARM address)

On 10/09/20 21:27, Zurcher, Christopher J wrote:
> Here is the error message:
> [...]/OpensslLibX64/OUTPUT/X64/crypto/aes/aesni-mb-x86_64.iii:1746: error: symbol `..imagebase' undefined
> [cut 18 lines]
> [...]/OpensslLibX64/OUTPUT/X64/crypto/aes/aesni-mb-x86_64.iii:1775: error: symbol `..imagebase' undefined
> GNUmakefile:3390: recipe for target '[...]OpensslLibX64/OUTPUT/X64/crypto/aes/aesni-mb-x86_64.obj' failed
> make: *** [[...]/OpensslLibX64/OUTPUT/X64/crypto/aes/aesni-mb-x86_64.obj] Error 1
> 
> The functionality is described here in "7.6.1 win64: Writing Position-Independent Code" and "7.6.2 win64: Structured Exception Handling"
> https://www.nasm.us/xdoc/2.13.02rc3/html/nasmdoc7.html
> 
> The x86_64 implementation in OpenSSL seems to assume that building with NASM guarantees a Windows toolchain and Windows execution environment.

Thank you. I have no more ideas or questions. Please proceed as you
suggested.

Laszlo

>> -----Original Message-----
>> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Laszlo Ersek
>> Sent: Friday, October 9, 2020 04:37
>> To: Zurcher, Christopher J <christopher.j.zurcher@intel.com>;
>> devel@edk2.groups.io; Yao, Jiewen <jiewen.yao@intel.com>; Jiang, Guomin
>> <guomin.jiang@intel.com>
>> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
>> Ard Biesheuvel (ARM address) <ard.biesheuvel@arm.com>
>> Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
>> instruction support for X64
>>
>> On 10/08/20 21:56, Zurcher, Christopher J wrote:
>>> Laszlo, thanks for sharing this explanation and history. I have found that
>> in addition to the "common" declaration, OpenSSL's Structured Exception
>> Handling functionality also breaks the GCC build by including "wrt
>> ..imagebase" statements. Since we cannot implement functional changes in the
>> current 1.1.1x versions of OpenSSL, my proposal is to go ahead with this
>> patch only supporting VS and LLVM toolchains for now.
>>
>> Could you include the error message with the "wrt ..imagebase" string?
>>
>> I found the string in "crypto/perlasm/x86_64-xlate.pl" but don't really
>> understand what it's about.
>>
>> I'd just like us to make one attempt to resolve that problem; otherwise
>> personally I'm OK if this new feature is not enabled for GCC at first.
>>
>> Thanks
>> Laszlo
>>
>>>
>>> Thanks,
>>> Christopher Zurcher
>>>
>>>> -----Original Message-----
>>>> From: Laszlo Ersek <lersek@redhat.com>
>>>> Sent: Thursday, October 1, 2020 05:58
>>>> To: devel@edk2.groups.io; Zurcher, Christopher J
>>>> <christopher.j.zurcher@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>;
>> Jiang,
>>>> Guomin <guomin.jiang@intel.com>
>>>> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
>> <xiaoyux.lu@intel.com>;
>>>> Ard Biesheuvel (ARM address) <ard.biesheuvel@arm.com>
>>>> Subject: Re: [edk2-devel] [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native
>>>> instruction support for X64
>>>>
>>>> (refreshing Ard's address, comments below)
>>>>
>>>> On 09/29/20 23:08, Zurcher, Christopher J wrote:
>>>>> The GCC build fails with this error:
>>>>>
>>>>> `OPENSSL_ia32cap_P' referenced in section `.text.OPENSSL_cpuid_setup'
>>>>> of /tmp/ccIIRAYs.ltrans20.ltrans.o: defined in discarded section
>>>>> `COMMON' of
>>>>>
>>>>
>> /mnt/c/mssql/tiano/Build/OvmfX64/DEBUG_GCC5/X64/CryptoPkg/Library/OpensslLib/
>>>> OpensslLibX64/OUTPUT/OpensslLibX64.lib(x86_64cpuid.obj)
>>>>>
>>>>> The code in question is here:
>>>>>> section .CRT$XCU rdata align=8
>>>>>>                 DQ      OPENSSL_cpuid_setup
>>>>>>
>>>>>> common  OPENSSL_ia32cap_P 16
>>>>
>>>> For the X64 arch, OPENSSL_cpuid_setup() is implemented in
>>>>
>>>>   CryptoPkg/Library/OpensslLib/openssl/crypto/cryptlib.c
>>>>
>>>> It makes references to:
>>>>
>>>>   extern unsigned int OPENSSL_ia32cap_P[4];
>>>>
>>>> The variable is defined in generated assembly source code.
>>>>
>>>> There seem to be multiple generators (for various assemblers):
>>>>
>>>> (1) crypto/perlasm/x86gas.pl -- likely for the GNU assembler:
>>>>
>>>>>        my $tmp=".comm\t${nmdecor}OPENSSL_ia32cap_P,16";
>>>>
>>>> (2) crypto/perlasm/x86nasm.pl -- likely for NASM:
>>>>
>>>>> ${drdecor}common      ${nmdecor}OPENSSL_ia32cap_P 16
>>>>
>>>> (3) crypto/x86_64cpuid.pl -- likely for... ???
>>>>
>>>>> .comm     OPENSSL_ia32cap_P,16,4
>>>>
>>>> They all put the variable in the "common" section.
>>>>
>>>> Tracking the NASM generator through a number of "git blame" commands,
>>>> I've ended up at historical commit 10e7d6d52650 ("Support for IA-32 SSE2
>>>> instruction set.", 2004-05-06). This commit introduced "OPENSSL_ia32cap"
>>>> at once in the common section -- see "crypto/perlasm/x86unix.pl".
>>>>
>>>> Now, the NASM manual says the following about the common section:
>>>>
>>>>> 6.7. 'COMMON': Defining Common Data Areas
>>>>> =========================================
>>>>>
>>>>> The 'COMMON' directive is used to declare _common variables_.  A common
>>>>> variable is much like a global variable declared in the uninitialized
>>>>> data section, so that
>>>>>
>>>>>      common  intvar  4
>>>>>
>>>>>    is similar in function to
>>>>>
>>>>>      global  intvar
>>>>>      section .bss
>>>>>
>>>>>      intvar  resd    1
>>>>>
>>>>>    The difference is that if more than one module defines the same
>>>>> common variable, then at link time those variables will be _merged_, and
>>>>> references to 'intvar' in all modules will point at the same piece of
>>>>> memory.
>>>>
>>>> The common section is a *really* bad idea for C language projects,
>>>> because if there are multiple external definitions of an object in a
>>>> program, then that should (per C language standard) prevent the
>>>> successful linking of the program, rather than undergo silent definition
>>>> merging.
>>>>
>>>> This has caused actual, inexplicable bugs in edk2 -- identically named,
>>>> but differently sized, and entirely independently inteded, variables
>>>> with external linkage and static storage duration got silently merged,
>>>> rather than breaking the build. In the end, we tracked those down and
>>>> marked them all STATIC. But in order to prevent such nonsense in the
>>>> future, we also forbade the common section altogether. Let me find that
>>>> commit...
>>>>
>>>> Yes, please see 214a3b79417f ("BaseTools GCC: avoid the use of COMMON
>>>> symbols", 2015-12-08).
>>>>
>>>> So, my guess is that this interferes with OpenSSL's placing of
>>>> "OPENSSL_ia32cap_P" in the common section.
>>>>
>>>> Without knowing more, I'd hazard that this is a bug in OpenSSL. Unless
>>>> they have a strong reason for it, I think we should try to contribute a
>>>> patch that removes "common".
>>>>
>>>> The code should provide exactly one definition (in the generated
>>>> assembly source), provide one central (extern) declaration too, in a
>>>> header file, then let all users include the declaration via the header
>>>> file. The object file built from the generated assembly source should be
>>>> linked into each final executable.
>>>>
>>>> For example, "CryptoPkg/Library/OpensslLib/openssl/crypto/cryptlib.c"
>>>> already correctly declares the variable as "extern".
>>>>
>>>> Otherwise, as last resort, I guess we could attempt working it around by
>>>> adding back "-fcommon" to the OpensslLib build flags. :/
>>>>
>>>> Thanks,
>>>> Laszlo
>>>
>>
>>
>>
>> 
>>
> 


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

end of thread, other threads:[~2020-10-15  7:14 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-08-04  0:24 [PATCH v2 0/2] CryptoPkg/OpensslLib: Add native instruction support for X64 Zurcher, Christopher J
2020-08-04  0:24 ` [PATCH v2 1/2] " Zurcher, Christopher J
2020-08-11 11:46   ` [edk2-devel] " Guomin Jiang
2020-08-13 15:03   ` Yao, Jiewen
2020-08-18 22:49     ` Zurcher, Christopher J
     [not found]     ` <162C7E6ED8CEF542.12673@groups.io>
2020-08-24 21:25       ` [edk2-devel] " Zurcher, Christopher J
2020-08-24 23:35         ` Yao, Jiewen
2020-09-16  9:17           ` Guomin Jiang
2020-09-22 15:21             ` Zurcher, Christopher J
2020-09-23  2:35               ` Yao, Jiewen
2020-09-25  0:28                 ` Zurcher, Christopher J
2020-09-25  0:49                   ` 回复: " gaoliming
2020-09-25  1:06                     ` Zurcher, Christopher J
2020-09-25  1:11                       ` Yao, Jiewen
2020-09-25  1:14                         ` Zurcher, Christopher J
     [not found]                         ` <1637E1D4851CF309.11037@groups.io>
2020-09-25  2:28                           ` Zurcher, Christopher J
     [not found]                           ` <1637E5DD452A46F1.2312@groups.io>
2020-09-25  8:01                             ` Zurcher, Christopher J
2020-09-29 21:08                 ` Zurcher, Christopher J
2020-10-01 12:58                   ` Laszlo Ersek
2020-10-08 19:56                     ` Zurcher, Christopher J
2020-10-09 11:37                       ` Laszlo Ersek
2020-10-09 19:27                         ` Zurcher, Christopher J
2020-10-15  7:14                           ` Laszlo Ersek
2020-08-04  0:24 ` [PATCH v2 2/2] CryptoPkg/OpensslLib: Commit the auto-generated assembly files " Zurcher, Christopher J
2020-08-13 15:24   ` Yao, Jiewen
2020-08-13 15:37     ` Michael D Kinney
2020-08-13 15:45       ` Yao, Jiewen
2020-08-14 19:34         ` Zurcher, Christopher J
2020-08-18  2:36           ` Wang, Jian J
2020-08-18 16:15             ` Michael D Kinney
2020-08-18 21:33               ` [edk2-devel] " Sean
2020-08-18 23:29                 ` Andrew Fish
2020-08-19 16:33                   ` Liming Gao
2020-08-19 10:43                 ` Laszlo Ersek
2020-08-19 16:08                   ` Michael D Kinney
2020-08-19 17:21                     ` Laszlo Ersek
2020-08-18 16:15           ` Michael D Kinney
2020-08-18 21:22             ` Zurcher, Christopher J
2020-08-19 15:37               ` [edk2-devel] " Andrew Fish
2020-08-19 18:06                 ` Laszlo Ersek
2020-08-25  0:55                   ` Andrew Fish
2020-08-26 10:05                     ` Laszlo Ersek

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